v20191205
authorkilian (dks-laptop) <ksaffran@dks.lu>
Thu, 5 Dec 2019 15:07:48 +0000 (16:07 +0100)
committerkilian (dks-laptop) <ksaffran@dks.lu>
Thu, 5 Dec 2019 15:07:48 +0000 (16:07 +0100)
193 files changed:
OLD/projects/cdm.js [new file with mode: 0644]
OLD/projects/cdm.tt [new file with mode: 0644]
OLD/projects/index.js [new file with mode: 0644]
OLD/projects/index.tt [new file with mode: 0644]
OLD/submissions/index.js [new file with mode: 0644]
OLD/submissions/index.tt [new file with mode: 0644]
OLD/upload/index.js [new file with mode: 0644]
OLD/upload/index.tt [new file with mode: 0644]
backoffice/api/db.cgi
backoffice/api/lib/dksdb.pm
backoffice/api/lib/session.pm
backoffice/api/tmp/sql.log [new file with mode: 0644]
backoffice/index.cgi
backoffice/js/admin.js
backoffice/tmp/sql.log [new file with mode: 0644]
backoffice/tmpl/block/head.tt
backoffice/tmpl/macro/fields.tt
backoffice/tmpl/module/companies/index.tt
backoffice/tmpl/module/planning/index.js
backoffice/tmpl/module/plantemplates/index.js [new file with mode: 0644]
backoffice/tmpl/module/plantemplates/index.tt [new file with mode: 0644]
backoffice/tmpl/module/sites/index.js
backoffice/tmpl/module/staff/index.js
backoffice/tmpl/module/staff/index.tt
backoffice/tmpl/module/timetrackers/index.js [new file with mode: 0644]
backoffice/tmpl/module/timetrackers/index.tt [new file with mode: 0644]
backoffice/tmpl/module/users/index.js
backoffice/tmpl/module/users/javascript.tt [deleted file]
backoffice/tmpl/skeleton/index.tt
backoffice/tmpl/skeleton/login.tt
backoffice/tmpl/skeleton/module.tt
backoffice/vendors/choices/choices.css
backoffice/vendors/ctxmenu/ctxmenu.css [new file with mode: 0644]
backoffice/vendors/ctxmenu/ctxmenu.js [new file with mode: 0644]
backoffice/vendors/tabulator/css.old/tabulator.css [new file with mode: 0644]
backoffice/vendors/tabulator/css.old/tabulator.min.css [new file with mode: 0644]
backoffice/vendors/tabulator/css.old/tabulator.min.css.map [new file with mode: 0644]
backoffice/vendors/tabulator/css.old/tabulator_midnight.css [new file with mode: 0644]
backoffice/vendors/tabulator/css.old/tabulator_midnight.min.css [new file with mode: 0644]
backoffice/vendors/tabulator/css.old/tabulator_midnight.min.css.map [new file with mode: 0644]
backoffice/vendors/tabulator/css.old/tabulator_modern.css [new file with mode: 0644]
backoffice/vendors/tabulator/css.old/tabulator_modern.min.css [new file with mode: 0644]
backoffice/vendors/tabulator/css.old/tabulator_modern.min.css.map [new file with mode: 0644]
backoffice/vendors/tabulator/css.old/tabulator_simple.css [new file with mode: 0644]
backoffice/vendors/tabulator/css.old/tabulator_simple.min.css [new file with mode: 0644]
backoffice/vendors/tabulator/css.old/tabulator_simple.min.css.map [new file with mode: 0644]
backoffice/vendors/tabulator/css.old/tabulator_site.css [new file with mode: 0644]
backoffice/vendors/tabulator/css.old/tabulator_site.min.css [new file with mode: 0644]
backoffice/vendors/tabulator/css.old/tabulator_site.min.css.map [new file with mode: 0644]
backoffice/vendors/tabulator/css/tabulator.css
backoffice/vendors/tabulator/css/tabulator.min.css
backoffice/vendors/tabulator/css/tabulator.min.css.map
backoffice/vendors/tabulator/css/tabulator_midnight.css
backoffice/vendors/tabulator/css/tabulator_midnight.min.css
backoffice/vendors/tabulator/css/tabulator_midnight.min.css.map
backoffice/vendors/tabulator/css/tabulator_modern.css
backoffice/vendors/tabulator/css/tabulator_modern.min.css
backoffice/vendors/tabulator/css/tabulator_modern.min.css.map
backoffice/vendors/tabulator/css/tabulator_simple.css
backoffice/vendors/tabulator/css/tabulator_simple.min.css
backoffice/vendors/tabulator/css/tabulator_simple.min.css.map
backoffice/vendors/tabulator/css/tabulator_site.css
backoffice/vendors/tabulator/css/tabulator_site.min.css
backoffice/vendors/tabulator/css/tabulator_site.min.css.map
backoffice/vendors/tabulator/js.old/modules/accessor.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/accessor.min.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/ajax.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/ajax.min.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/calculation_colums.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/calculation_colums.min.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/clipboard.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/clipboard.min.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/data_tree.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/data_tree.min.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/download.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/download.min.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/edit.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/edit.min.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/filter.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/filter.min.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/format.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/format.min.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/frozen_columns.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/frozen_columns.min.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/frozen_rows.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/frozen_rows.min.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/group_rows.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/group_rows.min.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/history.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/history.min.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/html_table_export.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/html_table_export.min.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/html_table_import.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/html_table_import.min.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/keybindings.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/keybindings.min.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/moveable_columns.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/moveable_columns.min.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/moveable_rows.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/moveable_rows.min.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/mutator.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/mutator.min.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/page.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/page.min.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/persistence.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/persistence.min.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/print.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/print.min.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/reactive_data.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/reactive_data.min.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/resize_columns.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/resize_columns.min.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/resize_rows.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/resize_rows.min.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/resize_table.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/resize_table.min.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/responsive_layout.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/responsive_layout.min.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/select_row.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/select_row.min.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/sort.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/sort.min.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/validate.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/modules/validate.min.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/tabulator.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/tabulator.min.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/tabulator_core.js [new file with mode: 0644]
backoffice/vendors/tabulator/js.old/tabulator_core.min.js [new file with mode: 0644]
backoffice/vendors/tabulator/js/modules/accessor.js
backoffice/vendors/tabulator/js/modules/accessor.min.js
backoffice/vendors/tabulator/js/modules/ajax.js
backoffice/vendors/tabulator/js/modules/ajax.min.js
backoffice/vendors/tabulator/js/modules/calculation_colums.js
backoffice/vendors/tabulator/js/modules/calculation_colums.min.js
backoffice/vendors/tabulator/js/modules/clipboard.js
backoffice/vendors/tabulator/js/modules/clipboard.min.js
backoffice/vendors/tabulator/js/modules/data_tree.js
backoffice/vendors/tabulator/js/modules/data_tree.min.js
backoffice/vendors/tabulator/js/modules/download.js
backoffice/vendors/tabulator/js/modules/download.min.js
backoffice/vendors/tabulator/js/modules/edit.js
backoffice/vendors/tabulator/js/modules/edit.min.js
backoffice/vendors/tabulator/js/modules/filter.js
backoffice/vendors/tabulator/js/modules/filter.min.js
backoffice/vendors/tabulator/js/modules/format.js
backoffice/vendors/tabulator/js/modules/format.min.js
backoffice/vendors/tabulator/js/modules/frozen_columns.js
backoffice/vendors/tabulator/js/modules/frozen_columns.min.js
backoffice/vendors/tabulator/js/modules/frozen_rows.js
backoffice/vendors/tabulator/js/modules/frozen_rows.min.js
backoffice/vendors/tabulator/js/modules/group_rows.js
backoffice/vendors/tabulator/js/modules/group_rows.min.js
backoffice/vendors/tabulator/js/modules/history.js
backoffice/vendors/tabulator/js/modules/history.min.js
backoffice/vendors/tabulator/js/modules/html_table_export.js
backoffice/vendors/tabulator/js/modules/html_table_export.min.js
backoffice/vendors/tabulator/js/modules/html_table_import.js
backoffice/vendors/tabulator/js/modules/html_table_import.min.js
backoffice/vendors/tabulator/js/modules/keybindings.js
backoffice/vendors/tabulator/js/modules/keybindings.min.js
backoffice/vendors/tabulator/js/modules/moveable_columns.js
backoffice/vendors/tabulator/js/modules/moveable_columns.min.js
backoffice/vendors/tabulator/js/modules/moveable_rows.js
backoffice/vendors/tabulator/js/modules/moveable_rows.min.js
backoffice/vendors/tabulator/js/modules/mutator.js
backoffice/vendors/tabulator/js/modules/mutator.min.js
backoffice/vendors/tabulator/js/modules/page.js
backoffice/vendors/tabulator/js/modules/page.min.js
backoffice/vendors/tabulator/js/modules/persistence.js
backoffice/vendors/tabulator/js/modules/persistence.min.js
backoffice/vendors/tabulator/js/modules/print.js
backoffice/vendors/tabulator/js/modules/print.min.js
backoffice/vendors/tabulator/js/modules/reactive_data.js
backoffice/vendors/tabulator/js/modules/reactive_data.min.js
backoffice/vendors/tabulator/js/modules/resize_columns.js
backoffice/vendors/tabulator/js/modules/resize_columns.min.js
backoffice/vendors/tabulator/js/modules/resize_rows.js
backoffice/vendors/tabulator/js/modules/resize_rows.min.js
backoffice/vendors/tabulator/js/modules/resize_table.js
backoffice/vendors/tabulator/js/modules/resize_table.min.js
backoffice/vendors/tabulator/js/modules/responsive_layout.js
backoffice/vendors/tabulator/js/modules/responsive_layout.min.js
backoffice/vendors/tabulator/js/modules/select_row.js
backoffice/vendors/tabulator/js/modules/select_row.min.js
backoffice/vendors/tabulator/js/modules/sort.js
backoffice/vendors/tabulator/js/modules/sort.min.js
backoffice/vendors/tabulator/js/modules/validate.js
backoffice/vendors/tabulator/js/modules/validate.min.js
backoffice/vendors/tabulator/js/tabulator.js
backoffice/vendors/tabulator/js/tabulator.min.js
backoffice/vendors/tabulator/js/tabulator_core.js
backoffice/vendors/tabulator/js/tabulator_core.min.js
dev/db/schema.views.sql [new file with mode: 0644]

diff --git a/OLD/projects/cdm.js b/OLD/projects/cdm.js
new file mode 100644 (file)
index 0000000..ad9a2a6
--- /dev/null
@@ -0,0 +1,93 @@
+var tbl= null;
+//var sel_project = null;
+var choice = {"cdm":{"project_ids":null}};
+function initpage(){
+  choice["cdm"]["project_ids"] = new Choices('#project_ids',{
+    searchEnabled: false,
+    itemSelectText: 'sélectionner...',
+    removeItemButton: true,
+    choices : []
+  });
+  tbl = new Tabulator("#tbl_cdm", {
+    headerFilterPlaceholder:"filter...",
+    height: "95vh",
+    layout:"fitDataFill",
+    selectable:1,
+    responsiveLayout:"collapse",
+    columns:[
+    {title:"corps de métier", field:"cdm",headerFilter:"input"},
+    {title:"projets", field:"projectlist",headerFilter:"input"},  
+    
+    ],
+  });
+
+gettbldata();
+getprojects();
+}
+
+function gettbldata(){
+    req.reqdata("POST","db.cgi",{"get":"cdmlist"},loadtbldata);
+}
+
+function loadtbldata(data){
+  if (data && data.sqldata){
+    tbl.setData(data.sqldata);
+  }
+}
+
+function aftersavecdm(){
+  gettbldata();
+  document.getElementById('dlgcdm').style.display='none';
+}
+
+function add(){
+  fillcdmform(null);
+}
+
+function edit(){
+  var udata = tbl.getSelectedData();
+  if (udata[0]){
+    var uid = udata[0].id;
+    req.reqdata("POST","db.cgi",{"get":"cdmlist","filter":"id=" + udata[0].id},fillcdmform);
+  }
+}
+
+function fillcdmform(data){
+  cleanform("cdm");
+  if (data && data.sqldata){
+    fillformbydataclass("cdm",data.sqldata[0],false);
+  }
+  
+  document.getElementById('dlgcdm').style.display='block'; 
+}
+
+function remove(){
+  var udata = tbl.getSelectedData();
+  if (udata[0]){
+    if (confirm("êtes-vous sûre de supprimer le corps de métier sélectionné?")){
+      req.reqdata("POST","db.cgi",{"del":"1","ident_cdm_id":udata[0].id},gettbldata);
+    }
+  }
+  
+}
+
+function view_projects(){
+  parent.admin.loadpage('module/[% module %]/index.html','Projets');
+}
+
+function view_cdm(){
+  parent.admin.loadpage('module/[% module %]/cdm.html','Corps de métiers');
+}
+
+
+
+function getprojects(){
+  req.reqdata("POST","db.cgi",{"get":"projectlist"},fillprojectlist);
+}
+
+function fillprojectlist(data){
+  fillselectlist(choice["cdm"]["project_ids"],data.sqldata,'id','project');
+  
+  return false;
+}
+
diff --git a/OLD/projects/cdm.tt b/OLD/projects/cdm.tt
new file mode 100644 (file)
index 0000000..3f44a13
--- /dev/null
@@ -0,0 +1,36 @@
+[% PROCESS macro/fields.tt %]
+<div class="w3-top w3-border-bottom w3-white">
+<div class="w3-bar">
+    <button class="w3-bar-item w3-button w3-border w3-blue-grey" onclick="view_projects(); return false;"><img src="[% abspath%]img/icons/projects_white.svg" style="height: 24px;"/>&nbsp;Projets</button>
+    <button class="w3-bar-item w3-button w3-border w3-blue-grey" onclick="view_cdm(); return false;"><img src="[% abspath%]img/icons/list_white.svg" style="height: 24px;"/>&nbsp;Corps de Métiers</button>
+    <button class="w3-bar-item w3-button w3-border w3-right w3-red" onclick="remove();"><img src="[% abspath%]img/icons/remove_white.svg" style="height: 24px;"/></button>
+    <button class="w3-bar-item w3-button w3-border w3-right w3-blue-grey" onclick="edit();"><img src="[% abspath%]img/icons/edit_white.svg" style="height: 24px;"/></button>
+     <button class="w3-bar-item w3-button w3-border w3-right w3-blue-grey" onclick="add();"><img src="[% abspath%]img/icons/plus_white.svg" style="height: 24px;"/></button>
+</div>
+</div>
+<div id="tbl_cdm" style="margin-top: 50px;"></div>
+
+
+<div id="dlgcdm" class="w3-modal">
+  <div class="w3-modal-content w3-animate-top w3-card-4">
+    <header class="w3-container"> 
+      <span onclick="document.getElementById('dlgcdm').style.display='none'; return false;" 
+       class="w3-button w3-display-topright">&times;</span>
+      <h2>Projet</h2>
+    </header>
+    <div class="w3-container">
+    
+      <form id="frm_cdm">
+        [% fieldhidden("id","cdm","ident",'') %]
+        [% fieldeditbox("cdm","cdm","Corps de métier",'','','','') %]
+        [% fieldmultiselectbox('project_ids','cdm','Projets','','','') %]  
+      </form>
+    </div>
+    <footer class="w3-container w3-right-align w3-padding-16">
+        <button class="w3-button w3-theme-light w3-border" onclick="document.getElementById('dlgcdm').style.display='none'; return false;">Annuler</button>
+        [% formdlgsavebutton('cdm','sauvegarder','aftersavecdm')  %]
+    </footer>
+  </div>
+</div>
+
+</div>
\ No newline at end of file
diff --git a/OLD/projects/index.js b/OLD/projects/index.js
new file mode 100644 (file)
index 0000000..9384551
--- /dev/null
@@ -0,0 +1,105 @@
+var tbl= null;
+function initpage(){
+  tinymce.init({
+    selector: '.richeditarea',
+    plugins: 'paste importcss searchreplace autolink autoresize directionality code visualblocks visualchars link charmap  advlist lists  textpattern noneditable charmap emoticons',
+    
+    menubar: false,
+    statusbar: false,
+    toolbar: 'undo redo | bold italic underline strikethrough | fontsizeselect | alignleft aligncenter alignright alignjustify | numlist bullist | forecolor removeformat | charmap',
+    toolbar_sticky: true,
+    min_height: 350,
+    language: 'de',
+    content_css: [
+      '[% abspath %]css/w3pro.css'
+    ],
+    branding: false,
+    importcss_append: true,
+    contextmenu: "link",
+   });
+  tbl = new Tabulator("#tbl_projects", {
+    headerFilterPlaceholder:"filter...",
+    height: "95vh",
+    layout:"fitDataFill",
+    selectable:1,
+    responsiveLayout:"collapse",
+    columns:[
+    {title:"projet", field:"project",headerFilter:"input"},  
+    {title:"description", field:"description",headerFilter:"input", formatter:"html"},
+    {title:"corps de métiers", field:"cdmlist",headerFilter:"input"},
+    ],
+  });
+
+gettbldata();
+}
+
+function gettbldata(){
+    req.reqdata("POST","db.cgi",{"get":"projectlist"},loadtbldata);
+}
+
+function loadtbldata(data){
+  if (data && data.sqldata){
+    tbl.setData(data.sqldata);
+  }
+}
+
+function aftersaveproject(){
+  formsaved();
+  gettbldata();
+  document.getElementById('dlgprojects').style.display='none';
+}
+
+function add(){
+  fillprojectform(null);
+}
+
+function edit(){
+  var udata = tbl.getSelectedData();
+  if (udata[0]){
+    var uid = udata[0].id;
+    req.reqdata("POST","db.cgi",{"get":"projectlist","filter":"id=" + udata[0].id},fillprojectform);
+  }
+}
+
+function fillprojectform(data){
+  var frm = document.querySelectorAll('.data_projects');
+  for (var f in frm){
+    if ((frm[f].tagName == 'INPUT') || (frm[f].tagName == 'SELECT') || (frm[f].tagName == 'TEXTAREA')){
+      if (frm[f].classList.contains("richeditarea")){
+        tinymce.get(frm[f].id).setContent("");
+      }else {
+        frm[f].value="";
+      }
+    }
+  }
+  if (data && data.sqldata){
+    for (var f in frm){
+      if ((frm[f].tagName == 'INPUT') || (frm[f].tagName == 'SELECT') || (frm[f].tagName == 'TEXTAREA')){
+        if (frm[f].classList.contains("richeditarea")){
+          tinymce.get(frm[f].id).setContent(data.sqldata[0][frm[f].id]);
+        }else {
+          frm[f].value=data.sqldata[0][frm[f].id];
+        }
+      }
+    }
+  }
+  document.getElementById('dlgprojects').style.display='block'; 
+}
+
+function remove(){
+  var udata = tbl.getSelectedData();
+  if (udata[0]){
+    if (confirm("êtes-vous sûre de supprimer le projet sélectionné?")){
+      req.reqdata("POST","db.cgi",{"del":"1","ident_projects_id":udata[0].id},gettbldata);
+    }
+  }
+  
+}
+
+function view_projects(){
+  parent.admin.loadpage('module/[% module %]/index.html','Projets');
+}
+
+function view_cdm(){
+  parent.admin.loadpage('module/[% module %]/cdm.html','Corps de métiers');
+}
\ No newline at end of file
diff --git a/OLD/projects/index.tt b/OLD/projects/index.tt
new file mode 100644 (file)
index 0000000..10130f6
--- /dev/null
@@ -0,0 +1,39 @@
+[% PROCESS macro/fields.tt %]
+[% IF (session.usergroups.search('admin') == 1) %]
+<div class="w3-top w3-border-bottom w3-white">
+<div class="w3-bar">
+
+    <button class="w3-bar-item w3-button w3-border w3-blue-grey" onclick="view_projects(); return false;"><img src="[% abspath%]img/icons/projects_white.svg" style="height: 24px;"/>&nbsp;Projets</button>
+    
+    <button class="w3-bar-item w3-button w3-border w3-blue-grey" onclick="view_cdm(); return false;"><img src="[% abspath%]img/icons/list_white.svg" style="height: 24px;"/>&nbsp;Corps de Métiers</button>
+    <button class="w3-bar-item w3-button w3-border w3-right w3-red" onclick="remove();"><img src="[% abspath%]img/icons/remove_white.svg" style="height: 24px;"/></button>
+    <button class="w3-bar-item w3-button w3-border w3-right w3-blue-grey" onclick="edit();"><img src="[% abspath%]img/icons/edit_white.svg" style="height: 24px;"/></button>
+     <button class="w3-bar-item w3-button w3-border w3-right w3-blue-grey" onclick="add();"><img src="[% abspath%]img/icons/plus_white.svg" style="height: 24px;"/></button>
+     
+</div>
+</div>
+<div id="tbl_projects" style="margin-top: 50px;"></div>
+[% END %]
+<div id="tbl_projects" ></div>
+[% IF (session.usergroups.search('admin') == 1) %]
+<div id="dlgprojects" class="w3-modal">
+  <div class="w3-modal-content w3-animate-top w3-card-4">
+    <header class="w3-container"> 
+      <span onclick="document.getElementById('dlgprojects').style.display='none'; return false;" 
+       class="w3-button w3-display-topright">&times;</span>
+      <h2>Projet</h2>
+    </header>
+    <div class="w3-container">
+      <form id="frm_projects">
+        [% fieldhidden("id","projects","ident",'') %]
+        [% fieldeditbox("project","projects","Projet",'','','','') %]
+        [% fieldrichtextarea("description","projects","Description",'','','300px','') %]       
+      </form>
+    </div>
+    <footer class="w3-container w3-right-align w3-padding-16">
+        <button class="w3-button w3-theme-light w3-border" onclick="document.getElementById('dlgprojects').style.display='none'; return false;">Annuler</button>
+        [% formdlgsavebutton('projects','sauvegarder','aftersaveproject')  %]
+    </footer>
+  </div>
+</div>
+[% END %]
diff --git a/OLD/submissions/index.js b/OLD/submissions/index.js
new file mode 100644 (file)
index 0000000..72d7522
--- /dev/null
@@ -0,0 +1,105 @@
+var tbl= null;
+function initpage(){
+  tbl = new Tabulator("#tbl_submissions", {
+    headerFilterPlaceholder:"filter...",
+    height: "95vh",
+    layout:"fitDataFill",
+    selectable:1,
+    responsiveLayout:"collapse",
+    columns:[
+    {title:"projet", field:"project",headerFilter:"input",download:true},  
+    {title:"corps de métier", field:"cdm",headerFilter:"input",download:true},
+    {title:"fichier", field:"file",headerFilter:"input",download:true},
+    ],
+  });
+
+//gettbldata();
+}
+
+function gettbldata(){
+  [% IF (session.usergroups.search('admin') == 1) %]
+    req.reqdata("POST","db.cgi",{"get":"documentlist"},loadtbldata);
+  [% ELSE %]
+    req.reqdata("POST","db.cgi",{"get":"documentlist","filter":"userlist like '%\""+ session.id +"\"%"},loadtbldata);
+  [% END %]
+  
+}
+
+function loadtbldata(data){
+  if (data && data.sqldata){
+    tbl.setData(data.sqldata);
+  }
+}
+
+function add(){
+  fillsubmissionform(null);
+}
+
+function edit(){
+  var udata = tbl.getSelectedData();
+  if (udata[0]){
+    var uid = udata[0].id;
+    req.reqdata("POST","db.cgi",{"get":"submissionlist","filter":"id=" + udata[0].id},fillsubmissionform);
+  }
+}
+
+function fillsubmissionform(data){
+  console.log(data);
+  var frm = document.querySelectorAll('.data_submissions');
+  for (var f in frm){
+    if ((frm[f].tagName == 'INPUT') || (frm[f].tagName == 'SELECT') || (frm[f].tagName == 'TEXTAREA')){
+      frm[f].value="";
+    }
+  }
+  if (data && data.sqldata){
+    for (var f in frm){
+      if ((frm[f].tagName == 'INPUT') || (frm[f].tagName == 'SELECT') || (frm[f].tagName == 'TEXTAREA')){
+          frm[f].value=data.sqldata[0][frm[f].id];
+      }
+    }
+  }
+  
+  document.getElementById('dlgsubmissions').style.display='block'; 
+}
+
+function remove(){
+  var udata = tbl.getSelectedData();
+  if (udata[0]){
+    if (confirm("êtes-vous sûre de supprimer bordereau sélectionné?")){
+      req.reqdata("POST","db.cgi",{"del":"1","ident_submissions_id":udata[0].id},gettbldata);
+    }
+  }
+  
+}
+
+
+// function xlsxexport(){
+//   tbl.download("xlsx", "soumissions.xlsx", {sheetName:"soumissions"});
+// }
+
+// function pdfexport(){
+//   tbl.download("pdf", "soumissions.pdf", {
+//     orientation:"landscape", 
+    
+//     jsPDF:{
+//         unit:"mm", 
+//     },
+//     autoTable(doc){ 
+//         doc.text("Liste des soumissions sur solana-architecture.lu", 10, 10);
+//         // styles: {
+//         //     fillColor: [100, 255, 255]
+//         // },
+//         // columnStyles: {
+//         //     id: {fillColor: 255}
+//         // },
+//         return {
+//           margin: {top: 20},
+//         }
+        
+//     },
+//     documentProcessing:function(doc){
+//         //carry out an action on the doc object
+//     }
+// });
+// }
+
diff --git a/OLD/submissions/index.tt b/OLD/submissions/index.tt
new file mode 100644 (file)
index 0000000..a234d40
--- /dev/null
@@ -0,0 +1,51 @@
+[% PROCESS macro/fields.tt %]
+[% sid = session.id %]
+[% company %]
+[% IF (session.usergroups.search('admin') != 1) %]
+[% qcompany = dksdb.query("select ul.id_company,cp.validated from vw_userlist ul join vw_companydata cp on (ul.id_company=cp.id) where ul.id=$sid;") %]
+[% company = qcompany.get_all() %]
+[% END %]
+[% IF (session.usergroups.search('admin') == 1) ||  company.0.validated == "1" %]
+<div class="w3-top w3-border-bottom w3-white">
+<div class="w3-bar">
+    <button class="w3-bar-item w3-button w3-border w3-right w3-red" onclick="remove();"><img src="[% abspath%]img/icons/remove_white.svg" style="height: 24px;"/></button>
+     <button class="w3-bar-item w3-button w3-border w3-right w3-blue-grey" onclick="add();"><img src="[% abspath%]img/icons/plus_white.svg" style="height: 24px;"/></button>
+   
+</div>
+</div>
+
+<div id="tbl_submissions" style="margin-top: 50px;"></div>
+
+<div id="dlgsubmissions" class="w3-modal">
+  <div class="w3-modal-content w3-animate-top w3-card-4">
+    <header class="w3-container"> 
+      <span onclick="document.getElementById('dlgsubmissions').style.display='none'; return false;" 
+       class="w3-button w3-display-topright">&times;</span>
+      <h2>Ajouter Soumission</h2>
+    </header>
+    <div class="w3-container">
+    [% fieldeditbox("project","display","Projet",'','','','') %]
+        [% fieldeditbox("cdm","display","Corps de Métier",'','','','') %]  
+      <form id="frm_submissions">
+        [% fieldhidden("id","submissions","ident",'') %]
+        [% fieldfile("filepdf","submissions","Fichier Bordereau (PDF)",'','','') %] 
+        [% fieldfile("filexls","submissions","Fichier Bordereau (XLSX)",'','','') %]
+        [% fieldfile("fileother","submissions","Fichier",'','','') %]    
+      </form>
+    </div>
+    <footer class="w3-container w3-right-align w3-padding-16">
+        <button class="w3-button w3-theme-light w3-border" onclick="document.getElementById('dlgsubmissions').style.display='none'; return false;">Annuler</button>
+        <button class="w3-button w3-blue-grey w3-margin" onclick="savesubmission();return false;">Ajouter</button>
+    </footer>
+  </div>
+</div>
+<script>
+  [% IF company.0.validated == "1"  %]
+  var idcompany="[% company.0.id_company %]";
+  [% ELSE %]
+  var idcompany="";
+[% END %]  
+</script>
+[% ELSE %]
+<div class="w3-display-container w3-container w3-panel">Votre Entreprise n'est pas validé, il se peux que vous données d'entreprise sont incomplètes!</div>
+[% END %]
diff --git a/OLD/upload/index.js b/OLD/upload/index.js
new file mode 100644 (file)
index 0000000..f3db79c
--- /dev/null
@@ -0,0 +1,45 @@
+var tbl= null;
+function initpage(){
+  tbl = new Tabulator("#tbl_upload", {
+    headerFilterPlaceholder:"filter...",
+    height: "95vh",
+    layout:"fitDataFill",
+    selectable:1,
+    responsiveLayout:"collapse",
+    columns:[
+    {title:"entreprise", field:"company",headerFilter:"input",download:true},  
+    {title:"projet", field:"project",headerFilter:"input",download:true},  
+    {title:"corps de métier", field:"cdm",headerFilter:"input",download:true},
+    {title:"fichier", field:"file",headerFilter:"input",download:true},
+    ],
+  });
+
+gettbldata();
+}
+
+function gettbldata(){
+  [% IF (session.usergroups.search('admin') == 1) %]
+    req.reqdata("POST","db.cgi",{"get":"documentlist"},loadtbldata);
+  [% ELSE %]
+    req.reqdata("POST","db.cgi",{"get":"documentlist","filter":"userlist like '%\""+ session.id +"\"%"},loadtbldata);
+  [% END %]
+  
+}
+
+function loadtbldata(data){
+  if (data && data.sqldata){
+    tbl.setData(data.sqldata);
+  }
+}
+
+function xlsxexport(){
+  tbl.download("xlsx", "uploads.xlsx", {sheetName:"uploads"});
+}
+
+function add(){
+  
+}
+
+function remove(){
+  
+}
\ No newline at end of file
diff --git a/OLD/upload/index.tt b/OLD/upload/index.tt
new file mode 100644 (file)
index 0000000..861c4e0
--- /dev/null
@@ -0,0 +1,24 @@
+[% sid = session.id %]
+[% company %]
+[% IF (session.usergroups.search('admin') != 1) %]
+[% qcompany = dksdb.query("select ul.id_company,cp.validated from vw_userlist ul join vw_companydata cp on (ul.id_company=cp.id) where ul.id=$sid;") %]
+[% company = qcompany.get_all() %]
+[% END %]
+[% IF (session.usergroups.search('admin') == 1) ||  company.0.validated == "1" %]
+<div class="w3-top w3-border-bottom w3-white">
+<div class="w3-bar">
+    <button class="w3-bar-item w3-button w3-border w3-right w3-red" onclick="remove();"><img src="[% abspath%]img/icons/remove_white.svg" style="height: 24px;"/></button>
+    <button class="w3-bar-item w3-button w3-border w3-right w3-blue-grey" onclick="add();"><img src="[% abspath%]img/icons/plus_white.svg" style="height: 24px;"/></button>
+</div>
+</div>
+<div id="tbl_upload" style="margin-top: 50px;"></div>
+<script>
+  [% IF company.0.validated == "1"  %]
+  var idcompany="[% company.0.id_company %]";
+  [% ELSE %]
+  var idcompany="";
+[% END %]  
+</script>
+[% ELSE %]
+<div class="w3-display-container w3-container w3-panel">Votre Entreprise n'est pas validé, il se peux que vous données d'entreprise sont incomplètes!</div>
+[% END %]
\ No newline at end of file
index c913387..103600d 100755 (executable)
@@ -41,9 +41,13 @@ if (($cgi->request_method() eq "GET") || ($cgi->request_method() eq "POST")){
   }
   my $db = dksdb->new();
   if (exists($p->{get})){
-    my $sql = "select * from vw_".$p->{get};
+    my $schema = "public";
+    if (exists($p->{schemata})){
+      $schema = $p->{schemata};
+    }
+    my $sql = "select * from ".$schema.".vw_".$p->{get};
     if (exists($p->{fields}) ){
-      $sql = "select ".$p->{fields}." from vw_".$p->{get};
+      $sql = "select ".$p->{fields}." from ".$schema.".vw_".$p->{get};
     }
     if (exists($p->{filter})){
       $sql .= " WHERE ".$p->{filter}.";";
index 2234a01..83c6600 100644 (file)
@@ -96,9 +96,9 @@ sub dbquerysorted(){
     my $retdata;
     my $dbh = DBI->connect($sitecfg->{dsn},$sitecfg->{dbuser},$sitecfg->{dbpassword},{PrintError=>0,RaiseError=>0,AutoCommit=>1})  or return $retdata->{error} = "dbquery Connection Error!".$!;
     #  $stat = encode("utf8", $stat);
-    # open FILE,">>tmp/sql.log";
-    # print FILE "\n==\n$stat\n==\n";
-    # close FILE;
+   open FILE,">>tmp/sql.log";
+   print FILE "\n==\n$stat\n==\n";
+   close FILE;
     my $sth = $dbh->prepare($stat) or return $retdata->{error} = "dbquerysorted ".$dbh->errstr. "- SQL: ".$stat;;
 
                
index 3b64d8d..b44184f 100644 (file)
@@ -6,6 +6,7 @@ use lib ('./lib');
 use lib ('./');
 use File::Basename;
 use Digest::SHA qw(sha256_hex);
+use Data::Dumper;
 
 use dksdb;
 use sendemail;
@@ -35,14 +36,13 @@ sub checklogin(){
   $ret->{message} = "Mot de passe ou Login pas inconnue!";
   $ret->{messagetype} = "w3-red";
   $ret->{sid} = undef;
-  my $user = $self->{db}->dbquerysorted("select id from users where lower(username)=lower('".$self->{db}->securetext($login)."') and userpassword = '".$pwd."' and \"blocked\" is null;");
-  # open FILE,">>tmp/sql.log";
-  # print FILE "select id from users where username= '".$self->{db}->securetext($login)."' and userpassword = '".$pwd."' and \"blocked\" is null;\n";
-  # close FILE;
-  if (keys(%{$user}) > 0){
-    $ret->{sid} = $self->randomstring(40);
-    $self->{db}->dbexec("DELETE FROM sessions where id_user=".$user->{0}->{id}." and remote_addr='".$ENV{REMOTE_ADDR}."' and user_agent='".$ENV{HTTP_USER_AGENT}."';");
-    my $r = $self->{db}->dbexec("INSERT INTO sessions (id_user,idsession,remote_addr,user_agent) VALUES (".$user->{0}->{id}.", '".$ret->{sid}."', '".$ENV{REMOTE_ADDR}."', '".$ENV{HTTP_USER_AGENT}."');");
+  my $siddata = $self->{db}->dbquerysorted("select * from checklogin('".$self->{db}->securetext($login)."','".$pwd."','".$ENV{REMOTE_ADDR}."','".$ENV{HTTP_USER_AGENT}."');");
+  if (keys(%{$siddata}) > 0){
+  #    open FILE,">>tmp/sql.log";
+  #  print FILE Dumper($siddata);
+  #  close(FILE);
+    $ret->{sid} = $siddata->{0}->{checklogin};
   }
   return $ret;
 }
@@ -124,7 +124,7 @@ sub registeruser(){
   my $eml = sendemail->new();
   my $mret = $eml->sendemail('user_verification',$newuserid->{0}->{id},$data->{users_email},$maildata,undef);
   if ($mret == 0){
-    $ret->{message} = "Merci,<br/>nous vous avons envoyé un email,avec un code de vérification!<br/>Entrez ce code ci dessous, pour valider votre compte!<br/>en cas de problèmes envoyer un email Ã  <a href=\"mailto:info\@solana-architecture.lu\">info\@solana-architecture.lu</a>";
+    $ret->{message} = "Merci,<br/>nous vous avons envoyé un email,avec un code de vérification!<br/>Entrez ce code ci dessous, pour valider votre compte!<br/>en cas de problèmes envoyer un email Ã  <a href=\"mailto:suppoort\@dks.lu\">info\@solana-architecture.lu</a>";
     $ret->{messagetype} = "w3-green";
     $ret->{page} = "validationcode.tt";
   } else {
@@ -172,16 +172,15 @@ sub validateaccount(){
 sub getsession($){
   my $self = shift;
   my $sid = shift;
-  my $sql ="select se.idsession,us.id,us.username,string_agg(distinct(aug.usergroup),',') as usergroups from sessions se 
-join users us on (us.id=se.id_user) 
-left join useringroups uig on (us.id=uig.id_user)
-left join usergroups aug on (aug.id=uig.id_group)
-where se.idsession= '".$self->{db}->securetext($sid)."'
-and se.remote_addr= '".$ENV{REMOTE_ADDR}."'
-and se.user_agent='".$ENV{HTTP_USER_AGENT}."' and us.blocked is null group by se.id,us.id;";
+  my $sql ="select * from public.getsession('".$self->{db}->securetext($sid)."','".$ENV{REMOTE_ADDR}."','".$ENV{HTTP_USER_AGENT}."');";
   my $res= $self->{db}->dbquerysorted($sql);
   my $ret = undef;
+  # open FILE,">>tmp/sql.log";
+  # print FILE "GET DB Session\n";
+  # print FILE Dumper($res->{0});
+  # close(FILE);
   if (keys(%{$res}) > 0){
     return $res->{0};
   }
   return $ret;
diff --git a/backoffice/api/tmp/sql.log b/backoffice/api/tmp/sql.log
new file mode 100644 (file)
index 0000000..f36a198
--- /dev/null
@@ -0,0 +1,328 @@
+GET DB Session
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'CEbahhtZCDFSB95CG5tXTlAFnXYTf8eICfIKn1AQ'
+        };
+GET DB Session
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'idsession' => 'CEbahhtZCDFSB95CG5tXTlAFnXYTf8eICfIKn1AQ',
+          'userschemata' => 'portanova'
+        };
+GET DB Session
+$VAR1 = {
+          'idsession' => 'CEbahhtZCDFSB95CG5tXTlAFnXYTf8eICfIKn1AQ',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin'
+        };
+GET DB Session
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'idsession' => 'CEbahhtZCDFSB95CG5tXTlAFnXYTf8eICfIKn1AQ',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova'
+        };
+GET DB Session
+$VAR1 = {
+          'idsession' => 'CEbahhtZCDFSB95CG5tXTlAFnXYTf8eICfIKn1AQ',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1'
+        };
+GET DB Session
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'idsession' => 'ek9f3NLeraHQkViHmRwhCFpntQ0nylPCwOIprjtJ',
+          'username' => 'ksaffran@dks.lu'
+        };
+GET DB Session
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'ek9f3NLeraHQkViHmRwhCFpntQ0nylPCwOIprjtJ',
+          'id' => '1'
+        };
+GET DB Session
+$VAR1 = {
+          'idsession' => 'ek9f3NLeraHQkViHmRwhCFpntQ0nylPCwOIprjtJ',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova'
+        };
+GET DB Session
+$VAR1 = {
+          'idsession' => 'ek9f3NLeraHQkViHmRwhCFpntQ0nylPCwOIprjtJ',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'usergroups' => 'superadmin'
+        };
+GET DB Session
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'idsession' => 'ek9f3NLeraHQkViHmRwhCFpntQ0nylPCwOIprjtJ',
+          'id' => '1'
+        };
+GET DB Session
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'idsession' => 'ek9f3NLeraHQkViHmRwhCFpntQ0nylPCwOIprjtJ',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin'
+        };
+GET DB Session
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'idsession' => 'ek9f3NLeraHQkViHmRwhCFpntQ0nylPCwOIprjtJ',
+          'username' => 'ksaffran@dks.lu'
+        };
+GET DB Session
+$VAR1 = {
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'idsession' => 'ek9f3NLeraHQkViHmRwhCFpntQ0nylPCwOIprjtJ',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin'
+        };
+GET DB Session
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'ek9f3NLeraHQkViHmRwhCFpntQ0nylPCwOIprjtJ',
+          'usergroups' => 'superadmin'
+        };
+GET DB Session
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'iENBmVUOi2xiZ8ui1hypRweNrUJBaX7jrKKEwujE',
+          'usergroups' => 'superadmin',
+          'id' => '1'
+        };
+GET DB Session
+$VAR1 = {
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'idsession' => 'iENBmVUOi2xiZ8ui1hypRweNrUJBaX7jrKKEwujE',
+          'usergroups' => 'superadmin'
+        };
+GET DB Session
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'iENBmVUOi2xiZ8ui1hypRweNrUJBaX7jrKKEwujE',
+          'usergroups' => 'superadmin',
+          'id' => '1'
+        };
+GET DB Session
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'iENBmVUOi2xiZ8ui1hypRweNrUJBaX7jrKKEwujE',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'usergroups' => 'superadmin'
+        };
+GET DB Session
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'idsession' => 'iENBmVUOi2xiZ8ui1hypRweNrUJBaX7jrKKEwujE',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova'
+        };
+GET DB Session
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'idsession' => 'iENBmVUOi2xiZ8ui1hypRweNrUJBaX7jrKKEwujE'
+        };
+GET DB Session
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'idsession' => 'iENBmVUOi2xiZ8ui1hypRweNrUJBaX7jrKKEwujE',
+          'username' => 'ksaffran@dks.lu'
+        };
+GET DB Session
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'idsession' => 'iENBmVUOi2xiZ8ui1hypRweNrUJBaX7jrKKEwujE'
+        };
+GET DB Session
+$VAR1 = {
+          'idsession' => 'iENBmVUOi2xiZ8ui1hypRweNrUJBaX7jrKKEwujE',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova'
+        };
+GET DB Session
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'iENBmVUOi2xiZ8ui1hypRweNrUJBaX7jrKKEwujE',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'usergroups' => 'superadmin'
+        };
+GET DB Session
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'idsession' => '6QUamgO8mQNuYQB1xHmd17nMIvl05mp13a2ggGet',
+          'username' => 'ksaffran@dks.lu'
+        };
+GET DB Session
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'idsession' => 'iZVY8BU0mqehEOTnldIJCHhLhVT3dxYmnKalcVco'
+        };
+GET DB Session
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'idsession' => 'jLZFAQp7gvZLBYzHggxIfBfRigGbbPwkqmQQ36O9',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin'
+        };
+GET DB Session
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'atr9NtwZMePvh9PU7Py2U6jgsHBmhqLiK3hnnEc0'
+        };
+GET DB Session
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'idsession' => 'MXTANQRKHGph60hJsl0YgcMzEmEkCKgfxZFbGmLd',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu'
+        };
+GET DB Session
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'idsession' => '9469DWMx7nD216dRSTYCMDAK3KuPhhohclgG7T35',
+          'username' => 'ksaffran@dks.lu'
+        };
+GET DB Session
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'idsession' => 'Lon0d3JtH6USF649PwjB30CSWR5xdnsOBGFFAeZ7',
+          'id' => '1'
+        };
+GET DB Session
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'idsession' => 'hZxXW9ma202rQBsBOUTgeAxsxl81PPlXEJLqJXrB',
+          'username' => 'ksaffran@dks.lu'
+        };
+GET DB Session
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'idsession' => 'z8wtBNLMKs8Y2iD83ddpA7Bgy70sm0cMZz5qcG2M'
+        };
+GET DB Session
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'idsession' => 'zIVpIB9uIZmeYmPfdsTiYeBBZwiDQP0fnMuWdugM',
+          'userschemata' => 'portanova',
+          'id' => '1'
+        };
+GET DB Session
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'zIVpIB9uIZmeYmPfdsTiYeBBZwiDQP0fnMuWdugM'
+        };
+GET DB Session
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'zIVpIB9uIZmeYmPfdsTiYeBBZwiDQP0fnMuWdugM',
+          'userschemata' => 'portanova',
+          'id' => '1'
+        };
+GET DB Session
+$VAR1 = {
+          'idsession' => 'zIVpIB9uIZmeYmPfdsTiYeBBZwiDQP0fnMuWdugM',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu'
+        };
+GET DB Session
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'idsession' => 'zIVpIB9uIZmeYmPfdsTiYeBBZwiDQP0fnMuWdugM',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova'
+        };
+GET DB Session
+$VAR1 = {
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'idsession' => 'zIVpIB9uIZmeYmPfdsTiYeBBZwiDQP0fnMuWdugM',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin'
+        };
+GET DB Session
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'zIVpIB9uIZmeYmPfdsTiYeBBZwiDQP0fnMuWdugM',
+          'id' => '1',
+          'usergroups' => 'superadmin'
+        };
+GET DB Session
+$VAR1 = {
+          'idsession' => 'zIVpIB9uIZmeYmPfdsTiYeBBZwiDQP0fnMuWdugM',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova'
+        };
index 69ca671..d43a981 100755 (executable)
@@ -60,9 +60,12 @@ if ($cgi->request_method() eq "POST"){
   $vars->{hasposts} = $p;
   if (exists($p->{'btnlogin'})){
     my $ret = $se->checklogin($p->{login},$p->{password});
+    
     if ($ret->{sid} ne ""){
       $p->{sid} = $ret->{sid};
+      
       $cookie = CGI::Cookie->new(-name=>$vars->{cookiename},-value=>$p->{sid},-httponly => 1);
+      
     }else {
       $vars->{message} = $ret->{message};
       $vars->{messagetype} = $ret->{messagetype};
@@ -112,10 +115,16 @@ if ($cgi->request_method() eq "POST"){
   #   $cookie = CGI::Cookie->new(-name=>$vars->{cookiename},-value=>"",-httponly => 1);
   # }
 }
-
+open FILE,">>tmp/sql.log";
+      print FILE "parameter session = ".$p->{sid}."\n";
+      close(FILE);
 if ($p->{sid} ne ""){
   $sess = $se->getsession($p->{sid});
 }
+open FILE,">>tmp/sql.log";
+      print FILE "Seesion GOT!\n";
+      print FILE Dumper($sess);
+      close(FILE);
 
 
 #$vars->{beforex} = $vars->{page};
index f6b9e32..f6f9160 100644 (file)
@@ -10,6 +10,10 @@ var admin = {
     sidebarclick: function(modulepage, modulename) {\r
         admin.ladpage(modulepage, modulename);\r
     },\r
+    getcurrentSchemata: function(){\r
+      //console.log("selected schemata: " + document.getElementById("schemata").value);\r
+      return document.getElementById("schemata").value;\r
+    },\r
     logout: function() {\r
         req.reqdata("POST", location.href, { "logout": "1" }, admin.reloadpage);\r
 \r
@@ -56,4 +60,38 @@ function w3_open() {
 function w3_close() {\r
     mySidebar.style.display = "none";\r
     overlayBg.style.display = "none";\r
+}\r
+var choice = {"company":{"schemata":null}};\r
+document.addEventListener("DOMContentLoaded", function() {\r
+  \r
+  choice["company"]["schemata"] = new Choices('#schemata',{\r
+    searchEnabled: false,\r
+    itemSelectText: 'x',\r
+    removeItemButton: false,\r
+    choices : []\r
+  });\r
+  getschemata();\r
+});\r
+\r
+function getschemata(){\r
+  req.reqdata("POST","db.cgi",{"get":"companylist"},fillschematalist);\r
+}\r
+\r
+function fillschematalist(data){\r
+  console.log(data);\r
+  fillselectlist(choice["company"]["schemata"],data.sqldata,'schemata','company');\r
+  \r
+  return false;\r
+}\r
+\r
+function fillselectlist(obj,data,vidcol,vvalcol){\r
+  var sellist = [];\r
+  obj.clearStore();\r
+  if (data){\r
+    for (var i in data){\r
+      sellist.push({value:data[i][vidcol],label:data[i][vvalcol]});\r
+    }\r
+  }\r
+  obj.setChoices(sellist, 'value', 'label', true);\r
+  return false;\r
 }
\ No newline at end of file
diff --git a/backoffice/tmp/sql.log b/backoffice/tmp/sql.log
new file mode 100644 (file)
index 0000000..c9589aa
--- /dev/null
@@ -0,0 +1,4485 @@
+parameter session = df17T38mUG9XtnL0OAHVz0fuL5WgV0LY5DVOxU0i
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'idsession' => 'df17T38mUG9XtnL0OAHVz0fuL5WgV0LY5DVOxU0i',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = ehQ83IIqIbtlt40Mokq4vjVzwiySV7EZekX7Swor
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'ehQ83IIqIbtlt40Mokq4vjVzwiySV7EZekX7Swor',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'userschemata' => 'portanova'
+        };
+parameter session = 7yXJPuzZkg3c7oxHkNNDtolV62NmCRNzgB9VWzL6
+Seesion GOT!
+$VAR1 = {
+          'idsession' => '7yXJPuzZkg3c7oxHkNNDtolV62NmCRNzgB9VWzL6',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova'
+        };
+parameter session = wCspv06lHZkwqFkD2TXN2ReBiIPpnX7JpqYLgUXN
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'wCspv06lHZkwqFkD2TXN2ReBiIPpnX7JpqYLgUXN',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1'
+        };
+parameter session = wCspv06lHZkwqFkD2TXN2ReBiIPpnX7JpqYLgUXN
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'wCspv06lHZkwqFkD2TXN2ReBiIPpnX7JpqYLgUXN'
+        };
+parameter session = wCspv06lHZkwqFkD2TXN2ReBiIPpnX7JpqYLgUXN
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'wCspv06lHZkwqFkD2TXN2ReBiIPpnX7JpqYLgUXN',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1'
+        };
+parameter session = wCspv06lHZkwqFkD2TXN2ReBiIPpnX7JpqYLgUXN
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'wCspv06lHZkwqFkD2TXN2ReBiIPpnX7JpqYLgUXN',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1'
+        };
+parameter session = 5CJUmkqNen4vLAOvUcZqF93RmN3g3IrZa1Knb00f
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'idsession' => '5CJUmkqNen4vLAOvUcZqF93RmN3g3IrZa1Knb00f'
+        };
+parameter session = zTI0vMLuLEOSHpxjhSli7H1e1QXKhxeHhNxDp9X1
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'zTI0vMLuLEOSHpxjhSli7H1e1QXKhxeHhNxDp9X1',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova'
+        };
+parameter session = wLctHHM5N02TlT8zR3eKd23wkJ3uPfXcQ0wnx9ib
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'wLctHHM5N02TlT8zR3eKd23wkJ3uPfXcQ0wnx9ib',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1'
+        };
+parameter session = cJJKgtHTh5ktfu5UsbXH0h8lRdUEPixRR7rYqYIy
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'cJJKgtHTh5ktfu5UsbXH0h8lRdUEPixRR7rYqYIy',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'usergroups' => 'superadmin'
+        };
+parameter session = hCJfI4RqG7BfZtJjLO7zamZ0e8XhbR2ijCoSx684
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'idsession' => 'hCJfI4RqG7BfZtJjLO7zamZ0e8XhbR2ijCoSx684'
+        };
+parameter session = 4gSwp3faltNjR4lvlwLWfN7YyhZ0lEUgLCD1wJ1H
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'idsession' => '4gSwp3faltNjR4lvlwLWfN7YyhZ0lEUgLCD1wJ1H',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova'
+        };
+parameter session = NNibgB8eLdtdwQu5B14yrOAhwEZCoz42cc3jE2nf
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'NNibgB8eLdtdwQu5B14yrOAhwEZCoz42cc3jE2nf',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = tddU1NwieBJmEajvetdJuVoFthMdvnEPqIAilWqq
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'idsession' => 'tddU1NwieBJmEajvetdJuVoFthMdvnEPqIAilWqq',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = SoZ3kCyEBoExZYJEX5DhzSMw2S0N1FpKTfE4H3z8
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'idsession' => 'SoZ3kCyEBoExZYJEX5DhzSMw2S0N1FpKTfE4H3z8',
+          'id' => '1',
+          'usergroups' => 'superadmin'
+        };
+parameter session = OJnG0OPOrZMJ716SGUKHzN7GjPgzTitxSH4JlKnD
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'idsession' => 'OJnG0OPOrZMJ716SGUKHzN7GjPgzTitxSH4JlKnD',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = BCqQcrt50h7xnFMOgs5E3syrVQgSmEZO6fv8xO4o
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'idsession' => 'BCqQcrt50h7xnFMOgs5E3syrVQgSmEZO6fv8xO4o'
+        };
+parameter session = BCqQcrt50h7xnFMOgs5E3syrVQgSmEZO6fv8xO4o
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'idsession' => 'BCqQcrt50h7xnFMOgs5E3syrVQgSmEZO6fv8xO4o',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = veh0OJkyqTlrbE879E5a7DWiHzskzsnVxuMc4WAk
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'idsession' => 'veh0OJkyqTlrbE879E5a7DWiHzskzsnVxuMc4WAk',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova'
+        };
+parameter session = veh0OJkyqTlrbE879E5a7DWiHzskzsnVxuMc4WAk
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'idsession' => 'veh0OJkyqTlrbE879E5a7DWiHzskzsnVxuMc4WAk',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin'
+        };
+parameter session = HfKlirwoBkfV9Y6zuXtZuGa1A86KeaKMglXoDkD4
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'HfKlirwoBkfV9Y6zuXtZuGa1A86KeaKMglXoDkD4',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = jVXgYRYQcnXdydMQ6S0hx1yAJrKYNAyWmm3a3RQ6
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'idsession' => 'jVXgYRYQcnXdydMQ6S0hx1yAJrKYNAyWmm3a3RQ6',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1'
+        };
+parameter session = lM3KLgbqWm70K0DBHQJp8PlJy7kjLlyXYsxzzzPl
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'idsession' => 'lM3KLgbqWm70K0DBHQJp8PlJy7kjLlyXYsxzzzPl',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = QlrW8Uq5DIQ5eQ1srETY5K9OJ34aY55Ehnrf8IaB
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'QlrW8Uq5DIQ5eQ1srETY5K9OJ34aY55Ehnrf8IaB',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova'
+        };
+parameter session = 8q38iX2jCsqbjz0I31hSNpVMeYRzXm0VDUUMIMVa
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'idsession' => '8q38iX2jCsqbjz0I31hSNpVMeYRzXm0VDUUMIMVa',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin'
+        };
+parameter session = fcJPDGromnNhTZvQGv7ml2pXCHdOGM7MPGsjdJxp
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'fcJPDGromnNhTZvQGv7ml2pXCHdOGM7MPGsjdJxp'
+        };
+parameter session = fcJPDGromnNhTZvQGv7ml2pXCHdOGM7MPGsjdJxp
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'idsession' => 'fcJPDGromnNhTZvQGv7ml2pXCHdOGM7MPGsjdJxp',
+          'usergroups' => 'superadmin'
+        };
+parameter session = fcJPDGromnNhTZvQGv7ml2pXCHdOGM7MPGsjdJxp
+parameter session = fcJPDGromnNhTZvQGv7ml2pXCHdOGM7MPGsjdJxp
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'fcJPDGromnNhTZvQGv7ml2pXCHdOGM7MPGsjdJxp',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu'
+        };
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'idsession' => 'fcJPDGromnNhTZvQGv7ml2pXCHdOGM7MPGsjdJxp',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = i3CrlRDek36TFkIwmwTI8RwonvPURw8ZqAhBiKFs
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'idsession' => 'i3CrlRDek36TFkIwmwTI8RwonvPURw8ZqAhBiKFs',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = vFFRsODPvUqIMV9PfjqF0d52Oyav79asEF9WjCCF
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'idsession' => 'vFFRsODPvUqIMV9PfjqF0d52Oyav79asEF9WjCCF'
+        };
+parameter session = 08qCCRlAE6Qsb1G42s65WuY2mPFsnowenMGPtSfY
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'idsession' => '08qCCRlAE6Qsb1G42s65WuY2mPFsnowenMGPtSfY',
+          'userschemata' => 'portanova'
+        };
+parameter session = cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova'
+        };
+parameter session = cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1'
+        };
+parameter session = cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN
+parameter session = cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN'
+        };
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova'
+        };
+parameter session = cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN',
+          'usergroups' => 'superadmin'
+        };
+parameter session = cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN
+parameter session = cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'idsession' => 'cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN'
+        };
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin'
+        };
+parameter session = cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'idsession' => 'cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN
+parameter session = cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'idsession' => 'cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1'
+        };
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova'
+        };
+parameter session = cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'idsession' => 'cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin'
+        };
+parameter session = cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN
+parameter session = cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'idsession' => 'cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN'
+        };
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'id' => '1'
+        };
+parameter session = cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'idsession' => 'cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova'
+        };
+parameter session = cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN
+parameter session = cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN',
+          'userschemata' => 'portanova'
+        };
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'idsession' => 'cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN'
+        };
+parameter session = cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN
+parameter session = cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN',
+          'userschemata' => 'portanova'
+        };
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'idsession' => 'cH50rowVfqZ3L37EgYb8BzonmTKt1cy4JtU0HhLN'
+        };
+parameter session = lqFfJPzvvgTmsaWQgNevuN4bznEHaOum40rDFRZ1
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'lqFfJPzvvgTmsaWQgNevuN4bznEHaOum40rDFRZ1',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'idsession' => 'ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'userschemata' => 'portanova'
+        };
+parameter session = ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'idsession' => 'ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'id' => '1'
+        };
+parameter session = ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova'
+        };
+parameter session = ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'idsession' => 'ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova'
+        };
+parameter session = ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova'
+        };
+parameter session = ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ'
+        };
+parameter session = ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'id' => '1'
+        };
+parameter session = ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ
+parameter session = ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'usergroups' => 'superadmin'
+        };
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova'
+        };
+parameter session = ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'idsession' => 'ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ',
+          'usergroups' => 'superadmin'
+        };
+parameter session = ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'idsession' => 'ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ',
+          'usergroups' => 'superadmin'
+        };
+parameter session = ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin'
+        };
+parameter session = ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'userschemata' => 'portanova'
+        };
+parameter session = ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'idsession' => 'ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova'
+        };
+parameter session = ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'idsession' => 'ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin'
+        };
+parameter session = ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'idsession' => 'ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'idsession' => 'ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'ows7OVz0dCSlC6PAbLcOVO7rdn99FUBUgURUFhLJ',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'id' => '1'
+        };
+parameter session = 96t7CvlKmcHchagD0imvvbFORRI8GbsG7MDz7P9j
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'idsession' => '96t7CvlKmcHchagD0imvvbFORRI8GbsG7MDz7P9j',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'id' => '1'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'id' => '1',
+          'userschemata' => 'portanova'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'username' => 'ksaffran@dks.lu'
+        };
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'id' => '1',
+          'userschemata' => 'portanova'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'usergroups' => 'superadmin'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'id' => '1'
+        };
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova'
+        };
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'usergroups' => 'superadmin'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'id' => '1'
+        };
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'userschemata' => 'portanova'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'usergroups' => 'superadmin'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP'
+        };
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'userschemata' => 'portanova'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin'
+        };
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'usergroups' => 'superadmin'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin'
+        };
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'userschemata' => 'portanova'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'userschemata' => 'portanova'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'id' => '1',
+          'usergroups' => 'superadmin'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'usergroups' => 'superadmin'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP'
+        };
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'userschemata' => 'portanova'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'usergroups' => 'superadmin'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'username' => 'ksaffran@dks.lu'
+        };
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP'
+        };
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'usergroups' => 'superadmin'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP'
+        };
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'usergroups' => 'superadmin'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'userschemata' => 'portanova'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin'
+        };
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'userschemata' => 'portanova'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'id' => '1'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'usergroups' => 'superadmin'
+        };
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'userschemata' => 'portanova'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'userschemata' => 'portanova'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin'
+        };
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'userschemata' => 'portanova',
+          'id' => '1'
+        };
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova'
+        };
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'usergroups' => 'superadmin'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'usergroups' => 'superadmin'
+        };
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'userschemata' => 'portanova'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'userschemata' => 'portanova'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'usergroups' => 'superadmin'
+        };
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'id' => '1'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'username' => 'ksaffran@dks.lu'
+        };
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'userschemata' => 'portanova'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'userschemata' => 'portanova'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova'
+        };
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'userschemata' => 'portanova'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'id' => '1'
+        };
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'id' => '1'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'id' => '1'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova'
+        };
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP'
+        };
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'id' => '1',
+          'userschemata' => 'portanova'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'usergroups' => 'superadmin'
+        };
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu'
+        };
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'id' => '1',
+          'usergroups' => 'superadmin'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova'
+        };
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'id' => '1'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'usergroups' => 'superadmin'
+        };
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP'
+        };
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'usergroups' => 'superadmin'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'id' => '1'
+        };
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu'
+        };
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin'
+        };
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+parameter session = D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'id' => '1'
+        };
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'D5h6Nq3y2lGfENy8Ue8sFBORMkt0itzLpGI2WCqP'
+        };
+parameter session = QgGxkPOMLvkyUV2y6cum7iR05Nu3icqYiXltD05e
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'QgGxkPOMLvkyUV2y6cum7iR05Nu3icqYiXltD05e',
+          'id' => '1'
+        };
+parameter session = BTuMeeOYyoxGy2JWCaWELWekm32KSx5jhqVlvAaU
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'idsession' => 'BTuMeeOYyoxGy2JWCaWELWekm32KSx5jhqVlvAaU',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin'
+        };
+parameter session = 1km9iz0o42jnSUqlc7521QqmjkTNabY1ma1uzSJt
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'idsession' => '1km9iz0o42jnSUqlc7521QqmjkTNabY1ma1uzSJt',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova'
+        };
+parameter session = 1km9iz0o42jnSUqlc7521QqmjkTNabY1ma1uzSJt
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => '1km9iz0o42jnSUqlc7521QqmjkTNabY1ma1uzSJt'
+        };
+parameter session = 1km9iz0o42jnSUqlc7521QqmjkTNabY1ma1uzSJt
+parameter session = 1km9iz0o42jnSUqlc7521QqmjkTNabY1ma1uzSJt
+Seesion GOT!
+$VAR1 = {
+          'idsession' => '1km9iz0o42jnSUqlc7521QqmjkTNabY1ma1uzSJt',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1'
+        };
+Seesion GOT!
+$VAR1 = {
+          'idsession' => '1km9iz0o42jnSUqlc7521QqmjkTNabY1ma1uzSJt',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'id' => '1'
+        };
+parameter session = UDPDvwlZJAnnhgGVpeZAfyV2hH2mS9eDDU7YhjOR
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'idsession' => 'UDPDvwlZJAnnhgGVpeZAfyV2hH2mS9eDDU7YhjOR',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1'
+        };
+parameter session = UDPDvwlZJAnnhgGVpeZAfyV2hH2mS9eDDU7YhjOR
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'UDPDvwlZJAnnhgGVpeZAfyV2hH2mS9eDDU7YhjOR',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova'
+        };
+parameter session = UDPDvwlZJAnnhgGVpeZAfyV2hH2mS9eDDU7YhjOR
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'UDPDvwlZJAnnhgGVpeZAfyV2hH2mS9eDDU7YhjOR',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova'
+        };
+parameter session = UDPDvwlZJAnnhgGVpeZAfyV2hH2mS9eDDU7YhjOR
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'UDPDvwlZJAnnhgGVpeZAfyV2hH2mS9eDDU7YhjOR',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = B2RkT5QuSRgi9P94tZ4JUs3yi8oVrAQStx3dtJxb
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'B2RkT5QuSRgi9P94tZ4JUs3yi8oVrAQStx3dtJxb',
+          'userschemata' => 'portanova',
+          'id' => '1'
+        };
+parameter session = B2RkT5QuSRgi9P94tZ4JUs3yi8oVrAQStx3dtJxb
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'idsession' => 'B2RkT5QuSRgi9P94tZ4JUs3yi8oVrAQStx3dtJxb'
+        };
+parameter session = B2RkT5QuSRgi9P94tZ4JUs3yi8oVrAQStx3dtJxb
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'idsession' => 'B2RkT5QuSRgi9P94tZ4JUs3yi8oVrAQStx3dtJxb'
+        };
+parameter session = B2RkT5QuSRgi9P94tZ4JUs3yi8oVrAQStx3dtJxb
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'idsession' => 'B2RkT5QuSRgi9P94tZ4JUs3yi8oVrAQStx3dtJxb'
+        };
+parameter session = fs6hdfV9qkW4nvTW4ckSGBJUl7RyFcgLvcSyiDxy
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'fs6hdfV9qkW4nvTW4ckSGBJUl7RyFcgLvcSyiDxy',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = fs6hdfV9qkW4nvTW4ckSGBJUl7RyFcgLvcSyiDxy
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'idsession' => 'fs6hdfV9qkW4nvTW4ckSGBJUl7RyFcgLvcSyiDxy',
+          'id' => '1'
+        };
+parameter session = fs6hdfV9qkW4nvTW4ckSGBJUl7RyFcgLvcSyiDxy
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'fs6hdfV9qkW4nvTW4ckSGBJUl7RyFcgLvcSyiDxy',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'usergroups' => 'superadmin'
+        };
+parameter session = fs6hdfV9qkW4nvTW4ckSGBJUl7RyFcgLvcSyiDxy
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'idsession' => 'fs6hdfV9qkW4nvTW4ckSGBJUl7RyFcgLvcSyiDxy',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = fs6hdfV9qkW4nvTW4ckSGBJUl7RyFcgLvcSyiDxy
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'idsession' => 'fs6hdfV9qkW4nvTW4ckSGBJUl7RyFcgLvcSyiDxy',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = fs6hdfV9qkW4nvTW4ckSGBJUl7RyFcgLvcSyiDxy
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'idsession' => 'fs6hdfV9qkW4nvTW4ckSGBJUl7RyFcgLvcSyiDxy'
+        };
+parameter session = fs6hdfV9qkW4nvTW4ckSGBJUl7RyFcgLvcSyiDxy
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'fs6hdfV9qkW4nvTW4ckSGBJUl7RyFcgLvcSyiDxy',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'userschemata' => 'portanova'
+        };
+parameter session = fs6hdfV9qkW4nvTW4ckSGBJUl7RyFcgLvcSyiDxy
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'idsession' => 'fs6hdfV9qkW4nvTW4ckSGBJUl7RyFcgLvcSyiDxy',
+          'usergroups' => 'superadmin'
+        };
+parameter session = fs6hdfV9qkW4nvTW4ckSGBJUl7RyFcgLvcSyiDxy
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'idsession' => 'fs6hdfV9qkW4nvTW4ckSGBJUl7RyFcgLvcSyiDxy',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin'
+        };
+parameter session = fs6hdfV9qkW4nvTW4ckSGBJUl7RyFcgLvcSyiDxy
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'fs6hdfV9qkW4nvTW4ckSGBJUl7RyFcgLvcSyiDxy'
+        };
+parameter session = fs6hdfV9qkW4nvTW4ckSGBJUl7RyFcgLvcSyiDxy
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'fs6hdfV9qkW4nvTW4ckSGBJUl7RyFcgLvcSyiDxy'
+        };
+parameter session = fs6hdfV9qkW4nvTW4ckSGBJUl7RyFcgLvcSyiDxy
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'idsession' => 'fs6hdfV9qkW4nvTW4ckSGBJUl7RyFcgLvcSyiDxy'
+        };
+parameter session = fs6hdfV9qkW4nvTW4ckSGBJUl7RyFcgLvcSyiDxy
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'fs6hdfV9qkW4nvTW4ckSGBJUl7RyFcgLvcSyiDxy',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'usergroups' => 'superadmin'
+        };
+parameter session = b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'idsession' => 'b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9'
+        };
+parameter session = b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'id' => '1'
+        };
+parameter session = b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'idsession' => 'b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9'
+        };
+parameter session = b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'idsession' => 'b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9',
+          'id' => '1',
+          'usergroups' => 'superadmin'
+        };
+parameter session = b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'idsession' => 'b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova'
+        };
+parameter session = b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'idsession' => 'b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9',
+          'userschemata' => 'portanova'
+        };
+parameter session = b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'idsession' => 'b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin'
+        };
+parameter session = b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1'
+        };
+parameter session = b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'idsession' => 'b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9',
+          'usergroups' => 'superadmin'
+        };
+parameter session = b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9'
+        };
+parameter session = b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'idsession' => 'b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'userschemata' => 'portanova'
+        };
+parameter session = b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'idsession' => 'b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'idsession' => 'b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin'
+        };
+parameter session = b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9',
+          'id' => '1'
+        };
+parameter session = b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9',
+          'userschemata' => 'portanova'
+        };
+parameter session = b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'idsession' => 'b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin'
+        };
+parameter session = b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin'
+        };
+parameter session = b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9',
+          'usergroups' => 'superadmin'
+        };
+parameter session = b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'id' => '1'
+        };
+parameter session = b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'idsession' => 'b2Ue9DYZPhsfKFM7OFUJXpjRTw8048f500aZuYP9',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova'
+        };
+parameter session = gAJ8YBZzXj4JrK1WSr5g24FT6Q4gDilKJUIymyX9
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'idsession' => 'gAJ8YBZzXj4JrK1WSr5g24FT6Q4gDilKJUIymyX9',
+          'usergroups' => 'superadmin'
+        };
+parameter session = gAJ8YBZzXj4JrK1WSr5g24FT6Q4gDilKJUIymyX9
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'gAJ8YBZzXj4JrK1WSr5g24FT6Q4gDilKJUIymyX9',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin'
+        };
+parameter session = gAJ8YBZzXj4JrK1WSr5g24FT6Q4gDilKJUIymyX9
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'gAJ8YBZzXj4JrK1WSr5g24FT6Q4gDilKJUIymyX9',
+          'userschemata' => 'portanova'
+        };
+parameter session = gAJ8YBZzXj4JrK1WSr5g24FT6Q4gDilKJUIymyX9
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'gAJ8YBZzXj4JrK1WSr5g24FT6Q4gDilKJUIymyX9',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'usergroups' => 'superadmin'
+        };
+parameter session = WFBIi8XQt4Qwkbo3VNbbyDog7ugZdm80Szy0xmGR
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'idsession' => 'WFBIi8XQt4Qwkbo3VNbbyDog7ugZdm80Szy0xmGR',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin'
+        };
+parameter session = WFBIi8XQt4Qwkbo3VNbbyDog7ugZdm80Szy0xmGR
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'idsession' => 'WFBIi8XQt4Qwkbo3VNbbyDog7ugZdm80Szy0xmGR',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = WFBIi8XQt4Qwkbo3VNbbyDog7ugZdm80Szy0xmGR
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'idsession' => 'WFBIi8XQt4Qwkbo3VNbbyDog7ugZdm80Szy0xmGR',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = WFBIi8XQt4Qwkbo3VNbbyDog7ugZdm80Szy0xmGR
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'idsession' => 'WFBIi8XQt4Qwkbo3VNbbyDog7ugZdm80Szy0xmGR',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin'
+        };
+parameter session = WFBIi8XQt4Qwkbo3VNbbyDog7ugZdm80Szy0xmGR
+Seesion GOT!
+$VAR1 = undef;
+parameter session = WFBIi8XQt4Qwkbo3VNbbyDog7ugZdm80Szy0xmGR
+Seesion GOT!
+$VAR1 = undef;
+parameter session = 5P7159lXg8xY83Iu7eZC3hj3Oi6x29jXOhPKg0yn
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => '5P7159lXg8xY83Iu7eZC3hj3Oi6x29jXOhPKg0yn',
+          'userschemata' => 'portanova',
+          'id' => '1'
+        };
+parameter session = 5P7159lXg8xY83Iu7eZC3hj3Oi6x29jXOhPKg0yn
+Seesion GOT!
+$VAR1 = {
+          'idsession' => '5P7159lXg8xY83Iu7eZC3hj3Oi6x29jXOhPKg0yn',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'usergroups' => 'superadmin'
+        };
+parameter session = 5P7159lXg8xY83Iu7eZC3hj3Oi6x29jXOhPKg0yn
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'idsession' => '5P7159lXg8xY83Iu7eZC3hj3Oi6x29jXOhPKg0yn'
+        };
+parameter session = 5P7159lXg8xY83Iu7eZC3hj3Oi6x29jXOhPKg0yn
+Seesion GOT!
+$VAR1 = undef;
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu'
+        };
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova'
+        };
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'userschemata' => 'portanova'
+        };
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'usergroups' => 'superadmin'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'id' => '1'
+        };
+Seesion GOT!
+$VAR1 = {
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'userschemata' => 'portanova'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'id' => '1'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'userschemata' => 'portanova'
+        };
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'id' => '1'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'userschemata' => 'portanova'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK'
+        };
+Seesion GOT!
+$VAR1 = {
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'usergroups' => 'superadmin'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'id' => '1'
+        };
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'usergroups' => 'superadmin'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'userschemata' => 'portanova'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin'
+        };
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'usergroups' => 'superadmin'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'userschemata' => 'portanova'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'id' => '1'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'id' => '1'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK'
+        };
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1'
+        };
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'userschemata' => 'portanova'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin'
+        };
+Seesion GOT!
+$VAR1 = {
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'id' => '1'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'usergroups' => 'superadmin'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = 5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'idsession' => '5C1FRBxyXloSuFFuqYoVldZdt4qum7FhAwNiXaGK',
+          'id' => '1'
+        };
+parameter session = R6ALJLjbX4jCSGPqG9t3C7XHSr9THp3pmu1V5aXS
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'idsession' => 'R6ALJLjbX4jCSGPqG9t3C7XHSr9THp3pmu1V5aXS',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1'
+        };
+parameter session = R6ALJLjbX4jCSGPqG9t3C7XHSr9THp3pmu1V5aXS
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'idsession' => 'R6ALJLjbX4jCSGPqG9t3C7XHSr9THp3pmu1V5aXS',
+          'id' => '1',
+          'usergroups' => 'superadmin'
+        };
+parameter session = R6ALJLjbX4jCSGPqG9t3C7XHSr9THp3pmu1V5aXS
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'idsession' => 'R6ALJLjbX4jCSGPqG9t3C7XHSr9THp3pmu1V5aXS',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'id' => '1'
+        };
+parameter session = R6ALJLjbX4jCSGPqG9t3C7XHSr9THp3pmu1V5aXS
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'R6ALJLjbX4jCSGPqG9t3C7XHSr9THp3pmu1V5aXS',
+          'userschemata' => 'portanova'
+        };
+parameter session = wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'idsession' => 'wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin'
+        };
+parameter session = wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'idsession' => 'wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'idsession' => 'wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'idsession' => 'wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1',
+          'usergroups' => 'superadmin',
+          'id' => '1'
+        };
+parameter session = wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'idsession' => 'wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'idsession' => 'wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova'
+        };
+parameter session = wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1'
+        };
+parameter session = wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'idsession' => 'wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1'
+        };
+parameter session = wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'idsession' => 'wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1',
+          'id' => '1',
+          'userschemata' => 'portanova'
+        };
+parameter session = wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova'
+        };
+parameter session = wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'idsession' => 'wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1'
+        };
+parameter session = wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1'
+        };
+parameter session = wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova'
+        };
+parameter session = wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'id' => '1'
+        };
+parameter session = wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'idsession' => 'wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'idsession' => 'wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'idsession' => 'wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'idsession' => 'wIWNG0o9XB5tew6CUu1r8ecIoZl7ApBWYnzueOt1'
+        };
+parameter session = 
+Seesion GOT!
+$VAR1 = undef;
+parameter session = v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'idsession' => 'v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1'
+        };
+parameter session = v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'idsession' => 'v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1'
+        };
+parameter session = v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'idsession' => 'v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ'
+        };
+parameter session = v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'idsession' => 'v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1'
+        };
+parameter session = v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'userschemata' => 'portanova'
+        };
+parameter session = v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'idsession' => 'v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ',
+          'id' => '1'
+        };
+parameter session = v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1'
+        };
+parameter session = v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'userschemata' => 'portanova'
+        };
+parameter session = v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1'
+        };
+parameter session = v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'idsession' => 'v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova'
+        };
+parameter session = v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'idsession' => 'v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ'
+        };
+parameter session = v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'idsession' => 'v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ'
+        };
+parameter session = v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'idsession' => 'v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ',
+          'id' => '1'
+        };
+parameter session = v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'idsession' => 'v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ'
+        };
+parameter session = v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'idsession' => 'v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ'
+        };
+parameter session = v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'idsession' => 'v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ',
+          'userschemata' => 'portanova'
+        };
+parameter session = v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ'
+        };
+parameter session = v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'v6wZ65qozoWn5P32q4wg16224TcOAM1VJnLFj1UJ',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'usergroups' => 'superadmin'
+        };
+parameter session = acewmeAytkPJEgiElv087bX845l9kfplhtIuy8TR
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'idsession' => 'acewmeAytkPJEgiElv087bX845l9kfplhtIuy8TR'
+        };
+parameter session = acewmeAytkPJEgiElv087bX845l9kfplhtIuy8TR
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'idsession' => 'acewmeAytkPJEgiElv087bX845l9kfplhtIuy8TR',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin'
+        };
+parameter session = acewmeAytkPJEgiElv087bX845l9kfplhtIuy8TR
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'acewmeAytkPJEgiElv087bX845l9kfplhtIuy8TR',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = acewmeAytkPJEgiElv087bX845l9kfplhtIuy8TR
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'acewmeAytkPJEgiElv087bX845l9kfplhtIuy8TR',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = jcVOok5XZ0kmvzHDBrw7HW2YI1dfcoblrW0G7VtW
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'jcVOok5XZ0kmvzHDBrw7HW2YI1dfcoblrW0G7VtW',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin'
+        };
+parameter session = jcVOok5XZ0kmvzHDBrw7HW2YI1dfcoblrW0G7VtW
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'jcVOok5XZ0kmvzHDBrw7HW2YI1dfcoblrW0G7VtW',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova'
+        };
+parameter session = jcVOok5XZ0kmvzHDBrw7HW2YI1dfcoblrW0G7VtW
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'jcVOok5XZ0kmvzHDBrw7HW2YI1dfcoblrW0G7VtW',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin'
+        };
+parameter session = jcVOok5XZ0kmvzHDBrw7HW2YI1dfcoblrW0G7VtW
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'idsession' => 'jcVOok5XZ0kmvzHDBrw7HW2YI1dfcoblrW0G7VtW',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = Z2CatTpY7860AKqcDfnAxiYTO2sN04kQWMQgw64t
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'Z2CatTpY7860AKqcDfnAxiYTO2sN04kQWMQgw64t',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'userschemata' => 'portanova'
+        };
+parameter session = Z2CatTpY7860AKqcDfnAxiYTO2sN04kQWMQgw64t
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'idsession' => 'Z2CatTpY7860AKqcDfnAxiYTO2sN04kQWMQgw64t',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1'
+        };
+parameter session = Z2CatTpY7860AKqcDfnAxiYTO2sN04kQWMQgw64t
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'idsession' => 'Z2CatTpY7860AKqcDfnAxiYTO2sN04kQWMQgw64t',
+          'id' => '1'
+        };
+parameter session = Z2CatTpY7860AKqcDfnAxiYTO2sN04kQWMQgw64t
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'idsession' => 'Z2CatTpY7860AKqcDfnAxiYTO2sN04kQWMQgw64t',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = TYEiVsqu9SHuVN2WFHsz295j5MaY3vEMk8V6qbqq
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'TYEiVsqu9SHuVN2WFHsz295j5MaY3vEMk8V6qbqq',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'userschemata' => 'portanova'
+        };
+parameter session = TYEiVsqu9SHuVN2WFHsz295j5MaY3vEMk8V6qbqq
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'TYEiVsqu9SHuVN2WFHsz295j5MaY3vEMk8V6qbqq',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'id' => '1'
+        };
+parameter session = TYEiVsqu9SHuVN2WFHsz295j5MaY3vEMk8V6qbqq
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'idsession' => 'TYEiVsqu9SHuVN2WFHsz295j5MaY3vEMk8V6qbqq'
+        };
+parameter session = TYEiVsqu9SHuVN2WFHsz295j5MaY3vEMk8V6qbqq
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'TYEiVsqu9SHuVN2WFHsz295j5MaY3vEMk8V6qbqq',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'userschemata' => 'portanova'
+        };
+parameter session = W1vb0kcq5ssk9izqmGtQYH5Z94QDuagh1BjRMl7H
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'W1vb0kcq5ssk9izqmGtQYH5Z94QDuagh1BjRMl7H',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin'
+        };
+parameter session = W1vb0kcq5ssk9izqmGtQYH5Z94QDuagh1BjRMl7H
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'idsession' => 'W1vb0kcq5ssk9izqmGtQYH5Z94QDuagh1BjRMl7H',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = W1vb0kcq5ssk9izqmGtQYH5Z94QDuagh1BjRMl7H
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'idsession' => 'W1vb0kcq5ssk9izqmGtQYH5Z94QDuagh1BjRMl7H',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = W1vb0kcq5ssk9izqmGtQYH5Z94QDuagh1BjRMl7H
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'idsession' => 'W1vb0kcq5ssk9izqmGtQYH5Z94QDuagh1BjRMl7H',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'id' => '1'
+        };
+parameter session = 5fsYewzI5p3G2H0pZjFi9LrsCg1ObrU7xdVBAlav
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'idsession' => '5fsYewzI5p3G2H0pZjFi9LrsCg1ObrU7xdVBAlav',
+          'id' => '1'
+        };
+parameter session = 5fsYewzI5p3G2H0pZjFi9LrsCg1ObrU7xdVBAlav
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'idsession' => '5fsYewzI5p3G2H0pZjFi9LrsCg1ObrU7xdVBAlav',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = 5fsYewzI5p3G2H0pZjFi9LrsCg1ObrU7xdVBAlav
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => '5fsYewzI5p3G2H0pZjFi9LrsCg1ObrU7xdVBAlav',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'id' => '1'
+        };
+parameter session = 5fsYewzI5p3G2H0pZjFi9LrsCg1ObrU7xdVBAlav
+Seesion GOT!
+$VAR1 = {
+          'idsession' => '5fsYewzI5p3G2H0pZjFi9LrsCg1ObrU7xdVBAlav',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'id' => '1'
+        };
+parameter session = 5fsYewzI5p3G2H0pZjFi9LrsCg1ObrU7xdVBAlav
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'idsession' => '5fsYewzI5p3G2H0pZjFi9LrsCg1ObrU7xdVBAlav',
+          'usergroups' => 'superadmin'
+        };
+parameter session = 5fsYewzI5p3G2H0pZjFi9LrsCg1ObrU7xdVBAlav
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'idsession' => '5fsYewzI5p3G2H0pZjFi9LrsCg1ObrU7xdVBAlav'
+        };
+parameter session = 5fsYewzI5p3G2H0pZjFi9LrsCg1ObrU7xdVBAlav
+Seesion GOT!
+$VAR1 = {
+          'idsession' => '5fsYewzI5p3G2H0pZjFi9LrsCg1ObrU7xdVBAlav',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'id' => '1'
+        };
+parameter session = 11m5aPaE1aSbPaKY7JOw063e2ZZy1sUTk6PlMQPD
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'idsession' => '11m5aPaE1aSbPaKY7JOw063e2ZZy1sUTk6PlMQPD',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = 11m5aPaE1aSbPaKY7JOw063e2ZZy1sUTk6PlMQPD
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'idsession' => '11m5aPaE1aSbPaKY7JOw063e2ZZy1sUTk6PlMQPD'
+        };
+parameter session = 11m5aPaE1aSbPaKY7JOw063e2ZZy1sUTk6PlMQPD
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'idsession' => '11m5aPaE1aSbPaKY7JOw063e2ZZy1sUTk6PlMQPD'
+        };
+parameter session = 11m5aPaE1aSbPaKY7JOw063e2ZZy1sUTk6PlMQPD
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'idsession' => '11m5aPaE1aSbPaKY7JOw063e2ZZy1sUTk6PlMQPD',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = 11m5aPaE1aSbPaKY7JOw063e2ZZy1sUTk6PlMQPD
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'idsession' => '11m5aPaE1aSbPaKY7JOw063e2ZZy1sUTk6PlMQPD'
+        };
+parameter session = 11m5aPaE1aSbPaKY7JOw063e2ZZy1sUTk6PlMQPD
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'idsession' => '11m5aPaE1aSbPaKY7JOw063e2ZZy1sUTk6PlMQPD',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin'
+        };
+parameter session = 11m5aPaE1aSbPaKY7JOw063e2ZZy1sUTk6PlMQPD
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'idsession' => '11m5aPaE1aSbPaKY7JOw063e2ZZy1sUTk6PlMQPD',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova'
+        };
+parameter session = 11m5aPaE1aSbPaKY7JOw063e2ZZy1sUTk6PlMQPD
+Seesion GOT!
+$VAR1 = {
+          'idsession' => '11m5aPaE1aSbPaKY7JOw063e2ZZy1sUTk6PlMQPD',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = 11m5aPaE1aSbPaKY7JOw063e2ZZy1sUTk6PlMQPD
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'idsession' => '11m5aPaE1aSbPaKY7JOw063e2ZZy1sUTk6PlMQPD',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = 11m5aPaE1aSbPaKY7JOw063e2ZZy1sUTk6PlMQPD
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'idsession' => '11m5aPaE1aSbPaKY7JOw063e2ZZy1sUTk6PlMQPD'
+        };
+parameter session = jn2IKcxDXX5HBPYCCOSMsKxj333PLy2ULVslXQOK
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'idsession' => 'jn2IKcxDXX5HBPYCCOSMsKxj333PLy2ULVslXQOK',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1'
+        };
+parameter session = jn2IKcxDXX5HBPYCCOSMsKxj333PLy2ULVslXQOK
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'idsession' => 'jn2IKcxDXX5HBPYCCOSMsKxj333PLy2ULVslXQOK',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = jn2IKcxDXX5HBPYCCOSMsKxj333PLy2ULVslXQOK
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'jn2IKcxDXX5HBPYCCOSMsKxj333PLy2ULVslXQOK'
+        };
+parameter session = jn2IKcxDXX5HBPYCCOSMsKxj333PLy2ULVslXQOK
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'jn2IKcxDXX5HBPYCCOSMsKxj333PLy2ULVslXQOK',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'usergroups' => 'superadmin'
+        };
+parameter session = jn2IKcxDXX5HBPYCCOSMsKxj333PLy2ULVslXQOK
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'jn2IKcxDXX5HBPYCCOSMsKxj333PLy2ULVslXQOK',
+          'userschemata' => 'portanova'
+        };
+parameter session = ejMojiSc4CbdIEAoJfunEFBq6dV2AITERwS1EB3z
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'ejMojiSc4CbdIEAoJfunEFBq6dV2AITERwS1EB3z'
+        };
+parameter session = ejMojiSc4CbdIEAoJfunEFBq6dV2AITERwS1EB3z
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'ejMojiSc4CbdIEAoJfunEFBq6dV2AITERwS1EB3z',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1'
+        };
+parameter session = ejMojiSc4CbdIEAoJfunEFBq6dV2AITERwS1EB3z
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'ejMojiSc4CbdIEAoJfunEFBq6dV2AITERwS1EB3z',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova'
+        };
+parameter session = ejMojiSc4CbdIEAoJfunEFBq6dV2AITERwS1EB3z
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'idsession' => 'ejMojiSc4CbdIEAoJfunEFBq6dV2AITERwS1EB3z',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = ejMojiSc4CbdIEAoJfunEFBq6dV2AITERwS1EB3z
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'ejMojiSc4CbdIEAoJfunEFBq6dV2AITERwS1EB3z',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'id' => '1'
+        };
+parameter session = JMFOpHJf6LsTHLfa1EwJFMJZ8Q1VFFOehjSwQrCM
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'JMFOpHJf6LsTHLfa1EwJFMJZ8Q1VFFOehjSwQrCM',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin'
+        };
+parameter session = JMFOpHJf6LsTHLfa1EwJFMJZ8Q1VFFOehjSwQrCM
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'idsession' => 'JMFOpHJf6LsTHLfa1EwJFMJZ8Q1VFFOehjSwQrCM',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin'
+        };
+parameter session = JMFOpHJf6LsTHLfa1EwJFMJZ8Q1VFFOehjSwQrCM
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'idsession' => 'JMFOpHJf6LsTHLfa1EwJFMJZ8Q1VFFOehjSwQrCM'
+        };
+parameter session = JMFOpHJf6LsTHLfa1EwJFMJZ8Q1VFFOehjSwQrCM
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'JMFOpHJf6LsTHLfa1EwJFMJZ8Q1VFFOehjSwQrCM',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = JMFOpHJf6LsTHLfa1EwJFMJZ8Q1VFFOehjSwQrCM
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'idsession' => 'JMFOpHJf6LsTHLfa1EwJFMJZ8Q1VFFOehjSwQrCM',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'usergroups' => 'superadmin'
+        };
+parameter session = JMFOpHJf6LsTHLfa1EwJFMJZ8Q1VFFOehjSwQrCM
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'JMFOpHJf6LsTHLfa1EwJFMJZ8Q1VFFOehjSwQrCM',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova'
+        };
+parameter session = JMFOpHJf6LsTHLfa1EwJFMJZ8Q1VFFOehjSwQrCM
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'JMFOpHJf6LsTHLfa1EwJFMJZ8Q1VFFOehjSwQrCM',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = JMFOpHJf6LsTHLfa1EwJFMJZ8Q1VFFOehjSwQrCM
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'idsession' => 'JMFOpHJf6LsTHLfa1EwJFMJZ8Q1VFFOehjSwQrCM',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'usergroups' => 'superadmin'
+        };
+parameter session = JMFOpHJf6LsTHLfa1EwJFMJZ8Q1VFFOehjSwQrCM
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'JMFOpHJf6LsTHLfa1EwJFMJZ8Q1VFFOehjSwQrCM'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'usergroups' => 'superadmin'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'userschemata' => 'portanova'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'userschemata' => 'portanova',
+          'id' => '1'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'usergroups' => 'superadmin'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'id' => '1'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'userschemata' => 'portanova'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'usergroups' => 'superadmin'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'userschemata' => 'portanova'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'id' => '1'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'userschemata' => 'portanova'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'usergroups' => 'superadmin'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'id' => '1'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'userschemata' => 'portanova'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'userschemata' => 'portanova'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'userschemata' => 'portanova'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'usergroups' => 'superadmin'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'usergroups' => 'superadmin',
+          'id' => '1'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'id' => '1'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'userschemata' => 'portanova'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'userschemata' => 'portanova'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin'
+        };
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'userschemata' => 'portanova'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin'
+        };
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'userschemata' => 'portanova'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'userschemata' => 'portanova'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu'
+        };
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'usergroups' => 'superadmin'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'userschemata' => 'portanova'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'id' => '1'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'userschemata' => 'portanova'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'id' => '1',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b'
+        };
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'id' => '1',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'userschemata' => 'portanova',
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'id' => '1',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'usergroups' => 'superadmin'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'userschemata' => 'portanova',
+          'username' => 'ksaffran@dks.lu',
+          'usergroups' => 'superadmin',
+          'id' => '1'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b',
+          'id' => '1',
+          'userschemata' => 'portanova'
+        };
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+parameter session = WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b
+Seesion GOT!
+$VAR1 = {
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'id' => '1',
+          'username' => 'ksaffran@dks.lu',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b'
+        };
+Seesion GOT!
+$VAR1 = {
+          'username' => 'ksaffran@dks.lu',
+          'id' => '1',
+          'usergroups' => 'superadmin',
+          'userschemata' => 'portanova',
+          'idsession' => 'WnrLWKX6zKwkv8fAp1RpnKPeXePpV6TIjbk6M72b'
+        };
index 7382d2b..bdf7408 100644 (file)
@@ -1,4 +1,4 @@
-<head>
+
   <!-- Required meta tags -->
   <meta charset="utf-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
@@ -27,4 +27,3 @@
 <link rel="icon" type="image/png" sizes="16x16" href="img/favicon/favicon-16x16.png">
 <link rel="stylesheet" href="[% abspath %]css/w3pro.css">
   
-</head>
\ No newline at end of file
index cb3d262..b75d76d 100644 (file)
   </div>\r
   [% END %]\r
 [% END -%]\r
+[% MACRO fielddatetimebox(column,table,title,size,state,value) BLOCK -%]\r
+  <div class="w3-container [% IF size %][% size %][% END  %]">\r
+        <label for="[% table %]_[% column %]" class="w3-label">[% title %]</label>\r
+        <input type="date" class="w3-input w3-border data_[% table %] datetimefield [% IF state.length > 0 %]w3-[% state %][% END %]" id="[% column %]" name="[% table %]_[% column %]" value="[% value %]" [% IF state.length > 0 %][% state %][% END %]]/>\r
+        \r
+      </div>\r
+[% END -%]\r
 [% MACRO fielddatebox(column,table,title,size,state,value) BLOCK -%]\r
   <div class="w3-container [% IF size %][% size %][% END  %]">\r
         <label for="[% table %]_[% column %]" class="w3-label">[% title %]</label>\r
         \r
       </div>\r
 [% END -%]\r
+[% MACRO fieldtimebox(column,table,title,size,state,value) BLOCK -%]\r
+  <div class="w3-container [% IF size %][% size %][% END  %]">\r
+        <label for="[% table %]_[% column %]" class="w3-label">[% title %]</label>\r
+        <input type="time" class="w3-input w3-border data_[% table %] timefield [% IF state.length > 0 %]w3-[% state %][% END %]" id="[% column %]" name="[% table %]_[% column %]" value="[% value %]" [% IF state.length > 0 %][% state %][% END %]]/>\r
+        \r
+      </div>\r
+[% END -%]\r
 [% MACRO fieldtextarea(column,table,title,size,state,height,value) BLOCK -%]\r
   <div class="w3-container [% IF size %][% size %][% END  %]" >\r
         <label for="[% table %]_[% column %]" class="w3-label">[% title %]</label>\r
index 6358aef..e990d4a 100644 (file)
@@ -28,9 +28,7 @@
           [% fieldhidden('id','companies','ident') %]
           <div class="w3-container">
                 [% fieldeditbox('company','companies','Entreprise','w3-half','','','') %]
-                [% IF (session.usergroups.search('admin') == 1) %]
-                [% fieldcheckbox('validated','companies','validé','w3-half','','','') %]
-                [% END %]
+                
                 [% fieldeditbox('address','companies','Adresse','','','','') %]
                 [% fieldeditbox('zip','companies','CP','w3-quarter','','','') %]
                 [% fieldeditbox('city','companies','Ville','w3-half','','','') %]
index 5929632..231a5a8 100644 (file)
@@ -1,4 +1,25 @@
+var tbl_periodes = null;
 var tbl_planning = null;
+var schemata = null;
 function initpage() {
+  console.log("Current Schema:" + schemata);
+  inittable_periodes();
+  inittable_planning();
+}
+
+function inittable_periodes(){
+  tbl_periodes = null;
+  gettbldata_periodes();
+}
+
+function inittable_planning(){
+  tb_planning = null;
+}
+
+function gettbldata_periodes(){
+
+}
+
+function gettbldata_planning(){
   
 }
\ No newline at end of file
diff --git a/backoffice/tmpl/module/plantemplates/index.js b/backoffice/tmpl/module/plantemplates/index.js
new file mode 100644 (file)
index 0000000..12e871f
--- /dev/null
@@ -0,0 +1,3 @@
+function initpage(){
+  
+}
\ No newline at end of file
diff --git a/backoffice/tmpl/module/plantemplates/index.tt b/backoffice/tmpl/module/plantemplates/index.tt
new file mode 100644 (file)
index 0000000..e69de29
index e69de29..12e871f 100644 (file)
@@ -0,0 +1,3 @@
+function initpage(){
+  
+}
\ No newline at end of file
index e69de29..ded1a21 100644 (file)
@@ -0,0 +1,164 @@
+var schemata = null;
+var tbl_staff = null;
+var tbl_staffperiodbase = null;
+function initpage(){
+  schemata = parent.admin.getcurrentSchemata();
+  console.log("Current Schema:" + schemata);
+  inittable_staff();
+  inittable_staffperiodbase();
+  // flatpickr(".timefield",{altInput: true,
+  //   altFormat: "H:M",
+  //   dateFormat: "H:M",
+  //   allowInput: true,
+  //   "locale": "fr",
+  // });
+  flatpickr(".datefield",{altInput: true,
+    altFormat: "d.m.Y",
+    dateFormat: "Y-m-d",
+    allowInput: true,
+    "locale": "fr",
+  });
+}
+
+function inittable_staff(){
+  tbl_staff = new Tabulator("#tbl_staff", {
+    headerFilterPlaceholder: "filter...",
+    height: "94vh",
+    layout: "fitDataFill",
+    selectable: 1,
+    rowContext:function(e, row){
+      //e - the click event object
+      //row - row component
+      //var contextMenu = CtxMenu();
+      //contextMenu.addItem("Editer", edit());
+    // Add our custom function to the menu
+       //contextMenu.addItem("Hello World", ContextMenuExampleFunction);
+
+       // Add a seperator
+       //contextMenu.addSeperator();
+      e.preventDefault(); // prevent the browsers default context menu form appearing.
+      },
+    columns: [{
+        title: "No.",
+        field: "staffnumber",
+        headerFilter: "input"
+    }, {
+        title: "Prénom",
+        field: "prename",
+        headerFilter: "input"
+    },{
+      title: "Nom",
+      field: "surname",
+      headerFilter: "input"
+  }, {
+        title: "Job",
+        field: "job",
+        headerFilter: "input"
+    }, {
+        title: "Date d'entrée",
+        field: "entrydate",
+        headerFilter: "input",align: "right",formatter:"datetime", formatterParams:{
+          inputFormat:"yyyy-mm-dd",
+          outputFormat:"DD.MM.YYYY",
+          invalidPlaceholder:""}
+    }, {
+        title: "Date de sorite",
+        field: "leavedate",align: "right",formatter:"datetime", formatterParams:{
+          inputFormat:"yyyy-mm-dd",
+          outputFormat:"DD.MM.YYYY",
+          invalidPlaceholder:""},
+        headerFilter: "input"
+    }]
+});
+gettbldata_staff();
+}
+
+function inittable_staffperiodbase(){
+  tbl_staffperiodbase = new Tabulator("#tbl_staffperiodbase", {
+    headerFilterPlaceholder: "filter...",
+    //height: "94vh",
+    layout: "fitDataFill",
+    selectable: 1,
+    rowContext:function(e, row){
+      //e - the click event object
+      //row - row component
+      //var contextMenu = CtxMenu();
+      //contextMenu.addItem("Editer", edit());
+    // Add our custom function to the menu
+       //contextMenu.addItem("Hello World", ContextMenuExampleFunction);
+
+       // Add a seperator
+       //contextMenu.addSeperator();
+      e.preventDefault(); // prevent the browsers default context menu form appearing.
+      },
+    columns: [
+      {
+        title: "Date début",
+        field: "startdate",
+        align: "right",
+        formatter:"datetime",formatterParams:{inputFormat:"yyyy-mm-dd",outputFormat:"DD.MM.YYYY",invalidPlaceholder:""}
+      },{
+        title: "heures par semaine",
+        field: "weekhours",
+        align: "right",
+        sorter:"number",
+        formatter:"money",formatterParams:{decimal:",",thousand:".",symbol:" ",symbolAfter:"",precision:2},
+      },{
+        title: "heures par mois",
+        field: "monthhours",
+        align: "right",
+        sorter:"number",
+        formatter:"money",formatterParams:{decimal:",",thousand:".",symbol:" ",symbolAfter:"",precision:2},
+      }]
+});
+}
+
+function gettbldata_staff() {
+  req.reqdata("POST", "db.cgi", {
+      "get":  "stafflist","schemata":schemata
+  }, loadtbldata_staff);
+
+}
+
+function loadtbldata_staff(data) {
+
+  if (data && data.sqldata) {
+      tbl_staff.setData(data.sqldata);
+  }
+}
+
+function edit() {
+  var udata = tbl_staff.getSelectedData();
+  if (udata[0]) {
+      var uid = udata[0].id;
+      //getstaffdata(uid);
+      document.getElementById("pnl_table").style.display = 'none';
+      document.getElementById("pnl_data").style.display = 'block';
+  }
+
+}
+
+function add() {
+  cleanform('staff');
+  viewtable();
+}
+
+function remove() {
+  var udata = tbl_staff.getSelectedData();
+  if (udata[0]) {
+      if (confirm("Êtes vous sûre de supprimer l'employé(e) selectionné?")) {
+          req.reqdata("POST", "db.cgi", {
+              "del": "1",
+              "schemata": schemata,
+              "ident_staff_id": udata[0].id
+          }, gettbldata_staff);
+      }
+  }
+
+}
+
+function viewtable() {
+  gettbldata_staff();
+  document.getElementById("pnl_table").style.display = 'block';
+  document.getElementById("pnl_data").style.display = 'none';
+}
\ No newline at end of file
index e69de29..fe55e57 100644 (file)
@@ -0,0 +1,47 @@
+[% PROCESS macro/fields.tt %]
+<div class="w3-display-container">
+  <div class="w3-top w3-theme-light w3-border-bottom">
+    <div class="w3-bar">
+      <button class="w3-bar-item w3-button w3-border w3-blue-grey w3-hover-text-white" onclick="viewtable();">Employé(e)s</button>
+    <!--<button class="w3-bar-item w3-button w3-border w3-right w3-orange" onclick="xlsxexport(); return false;"><img src="[% abspath%]img/icons/excel_white.svg" style="height: 24px;"/></button>
+    <button class="w3-bar-item w3-button w3-border w3-right w3-orange" onclick="pdfexport(); return false;"><img src="[% abspath%]img/icons/pdf_white.svg" style="height: 24px;"/></button>-->
+    
+    <button class="w3-bar-item w3-button w3-border w3-right w3-red" onclick="remove();"><img src="[% abspath%]img/icons/remove_white.svg" style="height: 24px;"/></button>
+    <button class="w3-bar-item w3-button w3-border w3-right w3-blue-grey" onclick="edit();"><img src="[% abspath%]img/icons/edit_white.svg" style="height: 24px;"/></button>
+    <button class="w3-bar-item w3-button w3-border w3-right w3-blue-grey" onclick="add();"><img src="[% abspath%]img/icons/plus_white.svg" style="height: 24px;"/></button> 
+    </div>
+  </div>
+  <div class="w3-display-container" id="pnl_table" style="margin-top: 45px;">
+    <div id="tbl_staff"></div>
+  </div>
+  <div class="w3-display-container w3-padding-24" id="pnl_data" style="display: none; margin-top: 20px;" >
+    <div class="w3-container  w3-padding-24 w3-card  w3-margin w3-margin-bottom">
+      <form id="frm_staff">
+        <h3>employé(e)</h3>
+        <div class="w3-row-padding"> 
+          <div class="w3-container">
+            
+            [% fieldhidden('id','staff','ident') %]
+            <div class="w3-container">
+              [% fieldeditbox('staffnumber','staff','No.','w3-half','','','') %]
+              [% fieldeditbox('prename','staff','Prénom','','','','') %]
+              [% fieldeditbox('surname','staff','Nom','','','','') %]
+              [% fieldeditbox('job','staff','Job / Position','','','','') %]
+              [% fielddatebox('entrydate','staff',"date d'entrée",'w3-third','','') %]
+              [% fielddatebox('leavedate','staff',"date de sortie",'w3-third','','') %]
+            </div>
+  
+        </div>
+        
+            [% formsavebutton('staff','sauvegarder') %]
+            </div>
+        </form>
+    </div>
+    <div class="w3-container  w3-padding-24 w3-card  w3-margin w3-margin-bottom">
+        <div id="tbl_staffperiodbase">
+          
+        </div>
+    </div>
+  </div>
+  
+</div>
diff --git a/backoffice/tmpl/module/timetrackers/index.js b/backoffice/tmpl/module/timetrackers/index.js
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/backoffice/tmpl/module/timetrackers/index.tt b/backoffice/tmpl/module/timetrackers/index.tt
new file mode 100644 (file)
index 0000000..e69de29
index a9eaffe..81ab56a 100644 (file)
@@ -48,12 +48,12 @@ getusergroups();
     responsiveLayout:"collapse",
     columns:[
     {title:"Entreprise", field:"company",},  
-    {title:"Numm", field:"surname",headerFilter:"input"},
-    {title:"Virnumm", field:"prename",headerFilter:"input"},
-    {title:"Accès",field:"group_ids",download:true},
-    {title:"Position",field:"job",download:true},
-    {title:"Téléphone",field:"phone",download:true},
-    {title:"E-mail",field:"username",download:true},
+    {title:"Nom", field:"surname",headerFilter:"input"},
+    {title:"Prénom", field:"prename",headerFilter:"input"},
+    {title:"Accès",field:"group_ids"},
+    {title:"Position",field:"job"},
+    {title:"Téléphone",field:"phone"},
+    {title:"E-mail",field:"username"},
     ],
 });
   [% END %]
@@ -75,35 +75,7 @@ function loadtbldata(data){
   }
 }
 
-// function xlsxexport(){
-//   tbl.download("xlsx", "users.xlsx", {sheetName:"utilisateurs"});
-// }
 
-// function pdfexport(){
-//   tbl.download("pdf", "users.pdf", {
-//     orientation:"landscape", 
-    
-//     jsPDF:{
-//         unit:"mm", 
-//     },
-//     autoTable(doc){ 
-//         doc.text("Utilisateurs du site", 10, 10);
-//         // styles: {
-//         //     fillColor: [100, 255, 255]
-//         // },
-//         // columnStyles: {
-//         //     id: {fillColor: 255}
-//         // },
-//         return {
-//           margin: {top: 20},
-//         }
-        
-//     },
-//     documentProcessing:function(doc){
-//         //carry out an action on the doc object
-//     }
-// });
-// }
 function edit(){
   var udata = tbl.getSelectedData();
   if (udata[0]){
diff --git a/backoffice/tmpl/module/users/javascript.tt b/backoffice/tmpl/module/users/javascript.tt
deleted file mode 100644 (file)
index ea759be..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<script type="text/javascript" src="[% abspath %]vendors/jspdf/jspdf.min.js"></script>
-<script type="text/javascript" src="[% abspath %]vendors/jspdf/jspdf.plugin.autotable.js"></script>
-<script type="text/javascript" src="[% abspath %]vendors/jsxlsx/xlsx.full.min.js"></script>
\ No newline at end of file
index 282dc68..f92c1f8 100644 (file)
@@ -1,22 +1,50 @@
-[% USE dksdb = DBI(dsn, dbuser, dbpassword) %] [% appgaccess = dksdb.prepare("select ap.icon,ap.app,ap.name,ug.usergroup from useringroups uig join apps ap on (uig.id_group=ap.id_usergroup) join usergroups ug on (uig.id_group=ug.id) where uig.id_user=?
-group by ap.id,ug.id order by ap.sort;")%]
+[% PROCESS macro/fields.tt %]
+[% USE dksdb = DBI(dsn, dbuser, dbpassword) %] 
+[% appgaccess = dksdb.prepare("select ap.icon,ap.app,ap.name,ug.usergroup from useringroups uig join apps ap on (uig.id_group=ap.id_usergroup) join usergroups ug on (uig.id_group=ug.id) where uig.id_user=? and menutype = 'global'
+group by ap.id,ug.id order by ap.sort;") %]
+[% appsaccess = dksdb.prepare("select ap.icon,ap.app,ap.name,ug.usergroup from useringroups uig join apps ap on (uig.id_group=ap.id_usergroup) join usergroups ug on (uig.id_group=ug.id) where uig.id_user=? and menutype = 'schema'
+group by ap.id,ug.id order by ap.sort;") %]
 <!DOCTYPE html>
 <html lang="en">
+<head>
 [% INCLUDE block/head.tt %]
-
+ <link rel="stylesheet" href="[% abspath %]vendors/choices/choices.css">
+</head>
 <body>
 
     <!-- NEW -->
-    <div class="w3-bar w3-top w3-theme-light w3-large" style="z-index:4">
+    <div class="w3-top">
+    <div class="w3-bar w3-theme-light w3-large" style="z-index:4;">
         <button class="w3-bar-item w3-button w3-hide-large w3-hover-none w3-hover-text-light-grey" onclick="w3_open();" id="btnsidemenu"><img src="[% abspath %][% staticpath %]img/icons/menu.svg" style="height: 33px;"/></button>
-        <span class="w3-bar-item">POT / Hourtrax</span>
+        <span class="w3-bar-item w3-hide-large">POT</span>
+        <div class="w3-dropdown-hover w3-right">
+    <button class="w3-button w3-border w3-light-grey"><img src="[% abspath %]img/icons/user.svg" style="width: 24px;"> Profile</button>
+    <div class="w3-dropdown-content w3-bar-block" style="right: 0px;">
+    [% FOREACH ap = appgaccess.execute(session.id) %]
+            <a href="javascript:admin.loadpage('module/[% ap.app %]/index.html','[% ap.name %]');" class="w3-bar-item w3-button w3-border">
+                <img src="[% abspath %]img/icons/[% ap.icon %]" style="width: 24px;">&nbsp;[% ap.name %]
+            </a>
+            [% END %]
+      
+      <a href="javascript:admin.logout();" class="w3-bar-item w3-button w3-dark-grey w3-hover-black">Logout</a>
+    </div>
+  </div>
         <span class="w3-bar-item w3-right" id="modulename"></span>
     </div>
-    <nav class="w3-sidebar w3-collapse w3-theme-light w3-animate-left" id="mySidebar" style="z-index:3;width:200px; padding-top: 35px;">
+    </div>
+    <nav class="w3-sidebar w3-collapse w3-theme-light w3-animate-left" id="mySidebar" style="z-index:3;width:200px;margin-top: -10px;">
         <div class="w3-bar-block">
+            <div class="w3-bar-item w3-large">POT</div>
             <a class="w3-bar-item w3-button w3-padding-16 w3-hide-large w3-dark-grey w3-hover-black" href="javascript:w3_close();" title="close menu">Close Menu</a>
-            <a class="w3-bar-item w3-button w3-padding-16 w3-dark-grey w3-hover-black" href="javascript:admin.logout();" title="Logout">Logout</a> [% FOREACH ap = appgaccess.execute(session.id) %]
-            <a href="javascript:admin.loadpage('module/[% ap.app %]/index.html','[% ap.name %]');" class="w3-bar-item w3-button w3-padding">
+            
+            <!--TODO admin selector -->
+            
+            <a href="javascript:admin.loadpage('module/dashboard/index.html','Dashboard');" class="w3-bar-item w3-button w3-padding w3-border">
+                <img src="[% abspath %]img/icons/[% ap.icon %]" style="width: 24px;">&nbsp;Dashboard
+            </a>
+            [% fieldselectbox('schemata','company','','','','') %]
+            [% FOREACH ap = appsaccess.execute(session.id) %]
+            <a href="javascript:admin.loadpage('module/[% ap.app %]/index.html','[% ap.name %]');" class="w3-bar-item w3-button w3-padding w3-border">
                 <img src="[% abspath %]img/icons/[% ap.icon %]" style="width: 24px;">&nbsp;[% ap.name %]
             </a>
             [% END %]
@@ -34,8 +62,9 @@ group by ap.id,ug.id order by ap.sort;")%]
     <!-- END NEW -->
 
 
-    <script src="js/request.js"></script>
-    <script src="js/admin.js"></script>
+    <script type="text/javascript" src="js/request.js"></script>
+    <script type="text/javascript" src="js/admin.js"></script>
+    <script type="text/javascript" src="vendors/choices/choices.js"></script>
 </body>
 
 </html>
\ No newline at end of file
index 16747bb..717e85a 100644 (file)
@@ -1,8 +1,8 @@
 <!DOCTYPE html>
 <html lang="en">
-
+<head>
 [% INCLUDE block/head.tt %]
-
+</head>
 <body>
   
   <div class="w3-display-container">
index 1b69399..12f343b 100644 (file)
   <meta http-equiv="Expires" content="0" />\r
   <link rel="stylesheet" href="[% abspath %]css/w3pro.css">\r
   <link rel="stylesheet" href="[% abspath %]vendors/glyphicons/css/glyphicons.css">\r
-  <link rel="stylesheet" href="[% abspath %]vendors/tabulator/css/tabulator_simple.min.css">\r
+  <link rel="stylesheet" href="[% abspath %]vendors/tabulator/css/tabulator.min.css">\r
   <link rel="stylesheet" href="[% abspath %]vendors/choices/choices.css">\r
   <link rel="stylesheet" href="[% abspath %]vendors/flatpickr/flatpickr.min.css">\r
   <link rel="stylesheet" href="[% abspath %]vendors/flatpickr/themes/airbnb.css">\r
+  <link rel="stylesheet" href="[% abspath %]vendors/ctxmenu/ctxmenu.css">\r
   <link rel="stylesheet" href="[% abspath %]css/module.css">\r
   \r
   <script>\r
   [% INCLUDE $page %]\r
   </div>\r
   \r
-  <script type="text/javascript" src="[% abspath%]js/request.js"></script>\r
-  <script type="text/javascript" src="[% abspath%]js/module_global.js"></script>\r
-  <script type="text/javascript" src="[% abspath%]js/formsave.js"></script>\r
-  <script type="text/javascript" src="[% abspath%]vendors/tabulator/js/tabulator.min.js"></script>\r
+  <script type="text/javascript" src="[% abspath %]js/request.js"></script>\r
+  <script type="text/javascript" src="[% abspath %]js/module_global.js"></script>\r
+  <script type="text/javascript" src="[% abspath %]js/formsave.js"></script>\r
+  <script type="text/javascript" src="[% abspath %]vendors/tabulator/js/tabulator.min.js"></script>\r
+  <script type="text/javascript" src="[% abspath %]vendors/moment/moment-with-locales.min.js"></script>\r
   <script type="text/javascript" src="[% abspath %]vendors/tinymce/js/tinymce/tinymce.min.js"></script>\r
   <script type="text/javascript" src="[% abspath %]vendors/choices/choices.js"></script>\r
   <script type="text/javascript" src="[% abspath %]vendors/flatpickr/flatpickr.min.js"></script>\r
   <script type="text/javascript" src="[% abspath %]vendors/flatpickr/l10n/fr.js"></script>\r
-\r
+  <script type="text/javascript" src="[% abspath %]vendors/ctxmenu/ctxmenu.js"></script>\r
+  \r
    <script type="text/javascript" src="[% pagename %].js"></script>\r
   [% ELSE %]\r
   <div class="alert alert-danger">\r
index e3bc037..07521f4 100644 (file)
 
 @media (min-width: 640px) {
   .choices__list--dropdown .choices__item--selectable {
-    padding-right: 100px;
+    padding-right: 0px;
   }
-  .choices__list--dropdown .choices__item--selectable:after {
+  /* .choices__list--dropdown .choices__item--selectable:after {
     content: attr(data-select-text);
     font-size: 12px;
     opacity: 0;
     right: 10px;
     top: 50%;
     transform: translateY(-50%);
-  }
+  } */
   [dir="rtl"] .choices__list--dropdown .choices__item--selectable {
     text-align: right;
     padding-left: 100px;
diff --git a/backoffice/vendors/ctxmenu/ctxmenu.css b/backoffice/vendors/ctxmenu/ctxmenu.css
new file mode 100644 (file)
index 0000000..1e3dd69
--- /dev/null
@@ -0,0 +1,88 @@
+@font-face {
+  font-family: 'CtxMenuFont';
+  font-style: normal;
+  font-weight: 300;
+  src: local('Segoe UI');
+}
+
+/* Background that covers entire page when right clicking, invisible by default */
+#ctx-menu-background {
+  /* background-color: rgba(0, 0, 0, 0.1);  Tint entire page darker when context menu appears */
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  z-index: 998;
+}
+
+/* The Context Menu itself */
+.ctx-menu-wrapper {
+
+  background-color: rgb(250, 250, 250);
+  box-shadow: 4px 4px 3px -2px rgba(0, 0, 0, .1);
+
+  padding: 3px 0 3px 0;
+  border: 1px solid #b1b1b1;
+  border-radius: 1px;
+
+
+  font-family: "CtxMenuFont";
+  font-size: 12px;
+
+  /* Make all the elements un-selectable */
+  -moz-user-select: -moz-none;
+  -khtml-user-select: none;
+  -webkit-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+
+  /* Do not edit these properties */
+  position: absolute;
+  z-index: 999;
+  white-space:nowrap;
+
+}
+
+/* Context Menu Items */
+.ctx-menu-item {
+  padding: 2px 10px 2px 10px;
+  border-radius: 1px;
+  cursor: pointer;
+  transition: background-color 0.1s;
+}
+
+.ctx-menu-item:hover {
+  background-color: rgba(0,0,0,0.13);
+}
+
+.ctx-menu-item:active {
+  transition: background-color 0s;
+  background-color: rgba(0,0,0,0.2);
+}
+
+/* Icons */
+
+.ctx-menu-hasIcon img {
+  min-width: 16px;
+  max-width: 16px;
+  max-height: 16px;
+  position: relative;
+  margin-right: 8px;
+  pointer-events: none;
+  user-select: none;
+}
+.ctx-menu-item img[src] {
+  float: left;
+}
+
+.ctx-menu-hasIcon .ctx-menu-item {
+  vertical-align:middle;
+  max-height: 20px;
+}
+
+.ctx-menu-seperator {
+  height: 1px;
+  margin: 3px 0 3px 0;
+  background-color: rgba(0, 0, 0, 0.2);
+}
diff --git a/backoffice/vendors/ctxmenu/ctxmenu.js b/backoffice/vendors/ctxmenu/ctxmenu.js
new file mode 100644 (file)
index 0000000..df943b4
--- /dev/null
@@ -0,0 +1,296 @@
+/*
+* CtxMenu
+* Author: Nils Soderman <contact@nilssoderman.com>
+* Repo: https://github.com/nils-soderman/Javascript-contextMenu
+*/
+
+const ECtxMenuNames = {
+       menu:                   "ctx-menu-wrapper",
+       item:                   "ctx-menu-item",
+       seperator:              "ctx-menu-seperator",
+       hasIcon:                "ctx-menu-hasIcon"
+};
+
+
+class CtxMenuManagerClass {
+       constructor(){
+               this._currentMenuVisible = null;
+               this._ctxMenus = new Map();
+
+               document.addEventListener('contextmenu', this._eventOpenMenu.bind(this));
+
+               const scripts = document.getElementsByTagName('script');
+               const path = scripts[scripts.length - 1].src.split('?')[0];
+               const CtxMenuDirectory = path.split('/').slice(0, -1).join('/') + '/';
+
+               // Load the stylesheet
+               var link = document.createElement( "link" );
+               link.href = CtxMenuDirectory + "ctxmenu.css";
+               link.type = "text/css";
+               link.rel = "stylesheet";
+               document.getElementsByTagName("head")[0].appendChild(link);
+
+       };
+
+       _eventOpenMenu(e){
+               if (e.path != undefined) {
+                       var menuAndElement = this._traceCtxMenu(e.path);
+               } else {
+                       // Microsoft Edge
+                       var menuAndElement = this._msEdgeTraceCtxMenu(e.target);
+               }
+               
+               // Close any menu open right now
+               this.closeCurrentlyOpenedMenu();
+
+               if (menuAndElement == null) {
+                       // Open default context menu if no custom menus where found.
+                       return;
+               }
+
+               const menu = menuAndElement[0];
+               const elementClicked = menuAndElement[1];
+
+               if (menu == false){
+                       // All context menus from appearing if the user has blocked the menu using CtxMenuBlock()
+                       e.preventDefault();
+                       return;
+               }
+               else if (menu == true){
+                       // Open the defaulty menu if user has set it to default using CtxMenuDefault()
+                       return;
+               }
+               
+               // Open the menu
+               menu._elementClicked = elementClicked;
+               menu.openMenu(e.pageX, e.pageY);
+               this._currentMenuVisible = menu;
+
+               // Add event listeners to close the window
+               document.addEventListener("click", CtxCloseCurrentlyOpenedMenus);
+               window.addEventListener("resize", CtxCloseCurrentlyOpenedMenus);
+               e.preventDefault();
+               if(menu._openEventListener != undefined) {
+                       menu._openEventListener();
+               }
+               
+
+       };
+
+       closeMenu(menu){
+               //this.ctxMenuBackground.style.display = "none";
+               menu.closeMenu();
+               this._currentMenuVisible = null;
+               document.removeEventListener("click", CtxCloseCurrentlyOpenedMenus);
+               window.removeEventListener("resize", CtxCloseCurrentlyOpenedMenus);
+       };
+
+       closeCurrentlyOpenedMenu(){
+               if (this._currentMenuVisible != null){
+                       this.closeMenu(this._currentMenuVisible);
+               }
+       };
+
+       _traceCtxMenu(path){
+               for (var i = 0; i < path.length; ++i) {
+                       const menu = this._ctxMenusHas(path[i]);
+                       if (menu != null){
+                               return [menu, path[i]];
+                       }
+               }
+               return null;
+       };
+
+       _msEdgeTraceCtxMenu(element){
+               while (element != null) {
+                       const menu = this._ctxMenusHas(element);
+                       if (menu != null){
+                               return [menu, element];
+                       }
+                       element = element.parentNode;
+               }
+               return null;
+       };
+
+       _ctxMenusHas(element){
+               if (this._ctxMenus.has(element)) {
+                       return this._ctxMenus.get(element);
+               }
+               if(this._ctxMenus.has("#"+element.id)){
+                       return   this._ctxMenus.get("#"+element.id);
+               }
+               if (element.className != undefined){
+                       const classNames = element.className.split(" ");
+                       for(var i = 0; i < classNames.length; i++) {
+                               if(this._ctxMenus.has("."+classNames[i])){
+                                       return this._ctxMenus.get("."+classNames[i]);
+                               }
+                       }
+               }
+               if (this._ctxMenus.has(element.nodeName)) {
+                       return this._ctxMenus.get(element.nodeName);
+               }
+               return null;
+       };
+
+       getMenuFromElement(element){
+               return this._ctxMenus.get(element);
+       };
+
+       createNewMenu(element){
+               var menu = new CtxMenuClass();
+               this._ctxMenus.set(element, menu);
+               return menu;
+       };
+
+       setCustomContexMenuValue(element, value){
+               this._ctxMenus.set(element,  value);
+       };
+
+};
+
+class CtxMenuClass {
+       constructor(){
+
+               // Add the html to the body and hide it
+               this.menuContainer = document.createElement("div");
+               this.menuContainer.className = ECtxMenuNames.menu;
+               document.body.appendChild(this.menuContainer);
+               this.closeMenu();
+
+               this._items = [];
+               this._elementClicked = undefined;
+
+               // Event listeners
+               this._openEventListener = undefined;
+               this._closeEventListener = undefined;
+               this._clickEventListener = undefined;
+       }
+
+       addItem(text, customFunction, icon = undefined, index = undefined) {
+               var item = {};
+               // Create the element
+               var element = document.createElement("div");
+               element.className = ECtxMenuNames.item;
+
+               // Icon
+               var iconElement = document.createElement("img");
+               if (icon != undefined && icon != null) {
+                       iconElement.src = icon;
+                       var bHasIcon = true;
+               } else {
+                       var bHasIcon = false;
+               }
+               element.appendChild(iconElement);
+
+               element.innerHTML += text;
+
+               element.addEventListener("click", function(){
+                       this._callItem(customFunction);
+               }.bind(this));
+
+               if (bHasIcon){
+                       this.menuContainer.classList.add(ECtxMenuNames.hasIcon);
+               }
+
+               this.menuContainer.insertBefore(element, this.menuContainer.childNodes[index]);
+               return element;
+       }
+
+       addSeperator(index = undefined){
+               // Add a seperator
+               var seperator = document.createElement("div");
+               seperator.className = ECtxMenuNames.seperator;
+               this.menuContainer.insertBefore(seperator, this.menuContainer.childNodes[index]);
+       }
+
+       removeItem(item) {
+               // Remove an item from the menu
+               this.menuContainer.removeChild(item.element);
+       }
+
+       addEventListener(type, listener){
+               if (type == "open"){
+                       this._openEventListener = listener;
+               }
+               else if (type == "close") {
+                       this._closeEventListener = listener;
+               }
+               else if (type == "click") {
+                       this._clickEventListener = listener;
+               }
+       }
+
+       openMenu(x, y){
+               this.menuContainer.style.display = "block";
+               // Set the screen position of the menu
+
+               // Ensure the menu doesn't go outside of the widnow
+               const PageWidth = (document.documentElement.clientWidth + document.documentElement.scrollLeft);
+               const PageHeight = (document.documentElement.clientHeight + document.documentElement.scrollTop);
+               if (x + this.menuContainer.offsetWidth > PageWidth) {
+                       x = PageWidth - this.menuContainer.offsetWidth - 1;
+               }
+
+               if (y + this.menuContainer.offsetHeight > PageHeight) {
+                       y = PageHeight - this.menuContainer.offsetHeight - 1;
+               }
+
+               this.menuContainer.style.left = x + "px";
+               this.menuContainer.style.top = y + "px";
+       }
+
+       closeMenu(){
+               // Hide the menu
+               this.menuContainer.style.left = "0px";
+               this.menuContainer.style.top = "0px";
+               this.menuContainer.style.display = "none";
+               if (this._closeEventListener != undefined){
+                       this._closeEventListener();
+               }
+       }
+
+       _callItem(customFunction){
+               // Called when an item has been clicked
+               this.closeMenu();
+               // Delay function one tick so the page has time to redraw the page and hide the context menu
+               setTimeout(function(){
+                       customFunction(this._elementClicked);
+                       if (this._clickEventListener != undefined) {
+                               this._clickEventListener(item);
+                       }
+               }.bind(this), 1);
+
+
+       }
+
+}
+
+function CtxMenu(element){
+       // Initialize a context meun
+       if (element == undefined){
+               element = document;
+       }
+       if (ctxMenuManager.getMenuFromElement(element) != undefined) {
+               return ctxMenuManager.getMenuFromElement(element);
+       }
+       return ctxMenuManager.createNewMenu(element);
+
+}
+
+function CtxMenuBlock(element){
+       // Block the context menu from appearing on an element
+       ctxMenuManager.setCustomContexMenuValue(element, false);
+}
+
+function CtxMenuDefault(element){
+       // Set an element to use the browsers default context menu
+       ctxMenuManager.setCustomContexMenuValue(element, true);
+}
+
+function CtxCloseCurrentlyOpenedMenus(){
+       ctxMenuManager.closeCurrentlyOpenedMenu();
+}
+
+// Initialize the ctxMenuManager
+var ctxMenuManager = new CtxMenuManagerClass();
diff --git a/backoffice/vendors/tabulator/css.old/tabulator.css b/backoffice/vendors/tabulator/css.old/tabulator.css
new file mode 100644 (file)
index 0000000..90b542f
--- /dev/null
@@ -0,0 +1,807 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+.tabulator {
+  position: relative;
+  border: 1px solid #999;
+  background-color: #888;
+  font-size: 14px;
+  text-align: left;
+  overflow: hidden;
+  -ms-transform: translatez(0);
+  transform: translatez(0);
+}
+
+.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableHolder .tabulator-table {
+  min-width: 100%;
+}
+
+.tabulator.tabulator-block-select {
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+
+.tabulator .tabulator-header {
+  position: relative;
+  box-sizing: border-box;
+  width: 100%;
+  border-bottom: 1px solid #999;
+  background-color: #e6e6e6;
+  color: #555;
+  font-weight: bold;
+  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: #e6e6e6;
+  text-align: left;
+  vertical-align: bottom;
+  overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-moving {
+  position: absolute;
+  border: 1px solid #999;
+  background: #cdcdcd;
+  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-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-arrow {
+  display: inline-block;
+  position: absolute;
+  top: 9px;
+  right: 8px;
+  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: -ms-flexbox;
+  display: flex;
+  border-top: 1px solid #aaa;
+  overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child {
+  margin-right: -1px;
+}
+
+.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev {
+  display: none;
+}
+
+.tabulator .tabulator-header .tabulator-col.ui-sortable-helper {
+  position: absolute;
+  background-color: #e6e6e6 !important;
+  border: 1px solid #aaa;
+}
+
+.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: #cdcdcd;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-arrow {
+  border-top: none;
+  border-bottom: 6px solid #bbb;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .tabulator-col-content .tabulator-arrow {
+  border-top: none;
+  border-bottom: 6px solid #666;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="desc"] .tabulator-col-content .tabulator-arrow {
+  border-top: 6px solid #666;
+  border-bottom: none;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {
+  -ms-writing-mode: tb-rl;
+      writing-mode: vertical-rl;
+  text-orientation: mixed;
+  display: -ms-flexbox;
+  display: flex;
+  -ms-flex-align: center;
+      align-items: center;
+  -ms-flex-pack: center;
+      justify-content: center;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {
+  -ms-transform: rotate(180deg);
+      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-arrow {
+  right: calc(50% - 6px);
+}
+
+.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: #f3f3f3 !important;
+  border-top: 1px solid #aaa;
+  border-bottom: 1px solid #aaa;
+  overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {
+  background: #f3f3f3 !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: -ms-flexbox;
+  display: flex;
+  -ms-flex-align: center;
+      align-items: center;
+  width: 100%;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode="virtual"] {
+  position: absolute;
+  top: 0;
+  left: 0;
+  height: 100%;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-placeholder span {
+  display: inline-block;
+  margin: 0 auto;
+  padding: 10px;
+  color: #ccc;
+  font-weight: bold;
+  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: bold;
+  background: #e2e2e2 !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: #e6e6e6;
+  text-align: right;
+  color: #555;
+  font-weight: bold;
+  white-space: nowrap;
+  -ms-user-select: none;
+      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 -10px;
+  text-align: left;
+  background: #f3f3f3 !important;
+  border-bottom: 1px solid #aaa;
+  border-top: 1px solid #aaa;
+  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 #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: rgba(255, 255, 255, 0.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, 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: -ms-flexbox;
+  display: flex;
+  -ms-flex-align: center;
+      align-items: center;
+  top: 0;
+  left: 0;
+  z-index: 100;
+  height: 100%;
+  width: 100%;
+  background: rgba(0, 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: bold;
+  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 #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: 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 #aaa;
+  vertical-align: middle;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+
+.tabulator-row .tabulator-cell.tabulator-editing {
+  border: 1px solid #1D68CD;
+  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 #dd0000;
+}
+
+.tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {
+  border: 1px;
+  background: transparent;
+  color: #dd0000;
+}
+
+.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev {
+  display: none;
+}
+
+.tabulator-row .tabulator-cell.tabulator-row-handle {
+  display: -ms-inline-flexbox;
+  display: inline-flex;
+  -ms-flex-align: center;
+      align-items: center;
+  -ms-flex-pack: 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: -ms-inline-flexbox;
+  display: inline-flex;
+  -ms-flex-pack: center;
+      justify-content: center;
+  -ms-flex-align: 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, 0.1);
+  overflow: hidden;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {
+  cursor: pointer;
+  background: rgba(0, 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: -ms-inline-flexbox;
+  display: inline-flex;
+  -ms-flex-align: center;
+      align-items: center;
+  -ms-flex-pack: 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: bold;
+  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 {
+  display: none;
+}
+
+.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 #aaa;
+  border-top: 1px solid #999;
+  padding: 5px;
+  padding-left: 10px;
+  background: #ccc;
+  font-weight: bold;
+  min-width: 100%;
+}
+
+.tabulator-row.tabulator-group:hover {
+  cursor: pointer;
+  background-color: rgba(0, 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-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-edit-select-list {
+  position: absolute;
+  display: inline-block;
+  box-sizing: border-box;
+  max-height: 200px;
+  background: #fff;
+  border: 1px solid #aaa;
+  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:hover {
+  cursor: pointer;
+  color: #fff;
+  background: #1D68CD;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-group {
+  border-bottom: 1px solid #aaa;
+  padding: 4px;
+  padding-top: 6px;
+  color: #333;
+  font-weight: bold;
+}
+
+.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;
+}
diff --git a/backoffice/vendors/tabulator/css.old/tabulator.min.css b/backoffice/vendors/tabulator/css.old/tabulator.min.css
new file mode 100644 (file)
index 0000000..f5fab3c
--- /dev/null
@@ -0,0 +1,3 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+.tabulator{position:relative;border:1px solid #999;background-color:#888;font-size:14px;text-align:left;overflow:hidden;transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator.tabulator-block-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:#e6e6e6;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:#e6e6e6;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #999;background:#cdcdcd;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-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-arrow{display:inline-block;position:absolute;top:9px;right:8px;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:-ms-flexbox;display:flex;border-top:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child{margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col.ui-sortable-helper{position:absolute;background-color:#e6e6e6!important;border:1px solid #aaa}.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:#cdcdcd}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-arrow{border-top:6px solid #666;border-bottom:none}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack: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-arrow{right:calc(50% - 6px)}.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:#f3f3f3!important;border-top:1px solid #aaa;border-bottom:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#f3f3f3!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:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{position:absolute;top:0;left:0;height: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-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:#e6e6e6;text-align:right;color:#555;font-weight:700;white-space:nowrap;-ms-user-select:none;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;border-bottom:1px solid #aaa;border-top:1px solid #aaa;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 #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:-ms-flexbox;display:flex;-ms-flex-align:center;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 #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: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 #aaa;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;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:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack: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:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align: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:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack: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 #aaa;border-top:1px solid #999;padding:5px;padding-left: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-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-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#fff;border:1px solid #aaa;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:hover{cursor:pointer;color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #aaa;padding:4px;padding-top:6px;color:#333;font-weight:700}.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}
+/*# sourceMappingURL=tabulator.min.css.map */
diff --git a/backoffice/vendors/tabulator/css.old/tabulator.min.css.map b/backoffice/vendors/tabulator/css.old/tabulator.min.css.map
new file mode 100644 (file)
index 0000000..406ab5c
--- /dev/null
@@ -0,0 +1 @@
+{"version":3,"sources":["tabulator.scss"],"names":[],"mappings":"AA0CA,WACC,kBAAkB,AAElB,sBAxCgB,AA0ChB,sBA3CqB,AA6CrB,eA3Ca,AA4Cb,gBAAgB,AAChB,gBAAe,AAMf,uBAAwB,CAqfxB,AApgBD,iFAoBI,cAAc,CACd,AArBJ,kCA0BE,yBAAiB,AAAjB,sBAAiB,AAAjB,qBAAiB,AAAjB,gBAAiB,CACjB,AA3BF,6BA+BE,kBAAiB,AACjB,sBAAsB,AAEtB,WAAU,AAEV,6BAlEwB,AAmExB,yBAtE4B,AAuE5B,WAtEmB,AAuEnB,gBAAgB,AAEhB,mBAAmB,AACnB,gBAAe,AAEf,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAkPpB,AAjSF,qDAkDG,YAAY,CACZ,AAnDH,4CAuDG,qBAAoB,AACpB,kBAAiB,AACjB,sBAAqB,AACrB,4BAzFoB,AA0FpB,mBA5F2B,AA6F3B,gBAAe,AACf,sBAAsB,AACtB,eAAgB,CAoLhB,AAlPH,6DAiEI,kBAAkB,AAClB,sBAhGsB,AAiGtB,mBAA8C,AAC9C,mBAAoB,CACpB,AArEJ,mEAyEI,sBAAqB,AACrB,kBAAkB,AAClB,WAAW,CAsCX,AAjHJ,wFA+EK,sBAAqB,AACrB,WAAW,AAEX,mBAAmB,AACnB,gBAAgB,AAChB,uBAAuB,AACvB,qBAAqB,CAarB,AAlGL,gHAyFM,sBAAsB,AACtB,WAAW,AAEX,sBAAqB,AAErB,YAAW,AAEX,eAAgB,CAChB,AAjGN,oFAsGK,qBAAqB,AACrB,kBAAkB,AAClB,QAAO,AACP,UAAS,AACT,QAAQ,AACR,SAAS,AACT,kCAAkC,AAClC,mCAAmC,AACnC,4BAvImB,CAwInB,AA/GL,0FAwHK,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AAEb,0BA1JkB,AA2JlB,eAAgB,CAKhB,AAjIL,oHA+HM,iBAAiB,CACjB,AAhIN,0FAuIK,YAAa,CACb,AAxIL,+DA6II,kBAAkB,AAClB,mCAAmD,AACnD,qBA9KmB,CA+KnB,AAhJJ,qEAoJI,kBAAkB,AAClB,sBAAsB,AACtB,eAAc,AACd,WAAU,AACV,iBAAkB,CAiBlB,AAzKJ,8EA4JK,qBAAsB,CACtB,AA7JL,yEAgKK,cAAe,CACf,AAjKL,sFAqKM,QAAS,AACT,QAAS,CACT,AAvKN,oFA8KK,kBAAkB,CAClB,AA/KL,qEAkLK,eAAc,AACd,wBAAoD,CACpD,AApLL,uHAwLM,gBAAgB,AAChB,4BAlNkB,CAmNlB,AA1LN,sHA+LM,gBAAgB,AAChB,4BA1NgB,CA2NhB,AAjMN,uHAsMM,0BAhOgB,AAiOhB,kBAAmB,CACnB,AAxMN,+GAgNM,uBAAyB,AAAzB,yBAAyB,AACzB,uBAAuB,AAEvB,oBAAY,AAAZ,aAAY,AACZ,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,sBAAsB,CACtB,AAtNN,oHA2NM,wBAAyB,CACzB,AA5NN,2GAiOM,gBAAe,AACf,gBAAgB,CAChB,AAnON,uIAuOO,gBAAe,AACf,mBAAmB,CACnB,AAzOP,uGA8OM,qBAAqB,CACrB,AA/ON,+CAqPG,qBAAqB,AACrB,kBAAkB,AAIlB,UAAW,CASX,AAnQH,qEA6PI,2BAjRgB,CAkRhB,AA9PJ,sEAiQI,0BArRgB,CAsRhB,AAlQJ,qDAuQG,sBAAqB,AACrB,eAAc,AAEd,6BAAyD,AAUzD,0BAxSiB,AAySjB,6BApToB,AAsTpB,eAAgB,CAChB,AAxRH,oEA6QI,4BAAyD,CAKzD,AAlRJ,iGAgRK,YAAa,CACb,AAjRL,2DA2RG,cAAc,CAKd,AAhSH,iEA8RI,YAAa,CACb,AA/RJ,kCAqSE,kBAAiB,AACjB,WAAU,AACV,mBAAmB,AACnB,cAAa,AACb,gCAAiC,CA2DjC,AApWF,wCA4SG,YAAa,CACb,AA7SH,yDAiTG,sBAAqB,AACrB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AASlB,UAAU,CAYV,AAxUH,wFAsTI,kBAAkB,AAClB,MAAK,AACL,OAAM,AACN,WAAW,CACX,AA1TJ,8DA+TI,qBAAqB,AAErB,cAAa,AACb,aAAY,AAEZ,WAAU,AACV,gBAAiB,AACjB,cAAe,CACf,AAvUJ,mDA4UG,kBAAiB,AACjB,qBAAoB,AACpB,sBApWqB,AAqWrB,mBAAmB,AACnB,iBAAgB,AAChB,UApWe,CAsXf,AAnWH,kFAsVK,gBAAiB,AACjB,4BAAwD,CASxD,AAhWL,sGA0VM,4BA9Wc,CA+Wd,AA3VN,yGA8VM,yBAlXc,CAmXd,AA/VN,6BA0WE,iBAAgB,AAChB,0BAjXwB,AAkXxB,yBArX4B,AAsX5B,iBAAiB,AACjB,WAtXmB,AAuXnB,gBAAgB,AAChB,mBAAkB,AAClB,qBAAgB,AAAhB,iBAAgB,AAEhB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAgFpB,AAtcF,qDAyXG,sBAAqB,AACrB,wBAAuB,AACvB,sBAA2B,AAE3B,gBAAgB,AAEhB,6BAAyD,AAUzD,6BA7ZiB,AA8ZjB,0BA9ZiB,AAgajB,eAAgB,CAMhB,AAlZH,oEAkYI,4BAAyD,CAKzD,AAvYJ,iGAqYK,YAAa,CACb,AAtYL,gEA+YI,mBAAkB,AAClB,kBAAkB,CAClB,AAjZJ,kDAqZG,WA7ZkB,AA8ZlB,oBAAmB,AACnB,oBAAmB,AACnB,iBAAiB,CACjB,AAzZH,kDA6ZG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBAzaoB,AA0apB,iBAAiB,CACjB,AApaH,8CAuaG,YAAY,CACZ,AAxaH,6CA4aG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBAxboB,AAybpB,kBAAiB,AAEjB,6BAA+B,CAiB/B,AArcH,oDAubI,UA5bmB,CA6bnB,AAxbJ,sDA2bI,UAAU,CACV,AA5bJ,kEAgcK,eAAc,AACd,0BAAyB,AACzB,UAAU,CACV,AAncL,wCA0cE,kBAAiB,AACjB,QAAO,AACP,MAAK,AACL,SAAQ,AACR,SAAS,CAUT,AAxdF,6CAidG,OAAM,AACN,UAAU,CACV,AAndH,8CAsdG,gBAAgB,CAChB,AAvdH,6BA6dE,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AAElB,MAAK,AACL,OAAM,AACN,YAAW,AAEX,YAAW,AACX,WAAU,AACV,0BAAyB,AACzB,iBAAiB,CA2BjB,AAngBF,mDA4eG,qBAAoB,AAEpB,cAAa,AACb,kBAAiB,AAEjB,mBAAkB,AAElB,gBAAe,AACf,gBAAgB,AAChB,cAAc,CAad,AAlgBH,qEAyfI,sBAAqB,AACrB,UAAU,CACV,AA3fJ,mEA+fI,sBAAqB,AACrB,aAAa,CACb,AAMJ,eACC,kBAAkB,AAClB,sBAAsB,AACtB,gBAA0C,AAC1C,qBAjiBuB,CA84BvB,AAjXD,kCAQE,wBApiB4B,CAqiB5B,AATF,0CAYE,sBAriBsB,AAsiBtB,cAAe,CACf,AAdF,kCAiBE,wBAxiB6B,CAyiB7B,AAlBF,wCAqBE,yBA3iBkC,AA4iBlC,cAAe,CACf,AAvBF,oCA0BE,sBAAqB,AACrB,eAAe,CACf,AA5BF,gCA+BE,kBAAkB,AAElB,0BA5jBkB,AA6jBlB,6BA7jBkB,AA+jBlB,oBAAoB,AACpB,UAAU,CACV,AAtCF,4CA0CE,kBAAiB,AACjB,QAAO,AACP,SAAQ,AACR,OAAM,AACN,UAAU,CAUV,AAxDF,iDAiDG,MAAK,AACL,WAAW,CACX,AAnDH,kDAsDG,gBAAgB,CAChB,AAvDH,iCA2DE,qBAAqB,AACrB,kBAAkB,AAElB,yBAAyB,AAEzB,UAAW,CASX,AAzEF,uDAmEG,2BA9lBiB,CA+lBjB,AApEH,wDAuEG,0BAlmBiB,CAmmBjB,AAxEH,8CA4EE,sBAAqB,AAErB,YAAW,AAEX,0BA3mBkB,AA4mBlB,4BA5mBkB,CA+nBlB,AApGF,oDAoFG,YAAY,CACZ,AArFH,oDAwFG,cAnoBW,CA8oBX,AAnGH,0DA4FK,iBAAkB,CAKlB,AAjGL,wEA+FM,kBAAkB,CAClB,AAhGN,+BAwGE,qBAAoB,AACpB,kBAAkB,AAClB,sBAAqB,AACrB,YAAW,AACX,4BAvoBkB,AAwoBlB,sBAAqB,AACrB,mBAAkB,AAClB,gBAAe,AACf,sBAAsB,CA0LtB,AA1SF,iDAoHG,yBAxoBkB,AAyoBlB,SAAU,CAMV,AA3HH,+GAwHI,WAAU,AACV,sBAAsB,CACtB,AA1HJ,yDA8HG,qBAjpBgB,CAwpBhB,AArIH,+HAgII,WAAU,AACV,uBAAsB,AAEtB,UAtpBe,CAupBf,AApIJ,6EA0II,YAAa,CACb,AA3IJ,oDAgJG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,uBAAsB,AAEtB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAcpB,AArKH,8EA2JI,SAAS,CAST,AApKJ,wGA+JK,WAAU,AACV,WAAU,AACV,eAAc,AACd,eAAe,CACf,AAnKL,2DAwKG,qBAAoB,AACpB,sBAAqB,AAErB,WAAU,AACV,UAAS,AAET,gBAAe,AACf,iBAAgB,AAEhB,8BAA6B,AAE7B,2BA9sBiB,AA+sBjB,4BA/sBiB,CAgtBjB,AArLH,4DAyLG,2BAAmB,AAAnB,oBAAmB,AACnB,qBAAsB,AAAtB,uBAAsB,AACtB,sBAAkB,AAAlB,mBAAkB,AAClB,sBAAqB,AAErB,YAAW,AACX,WAAU,AAEV,iBAAgB,AAEhB,sBA7tBe,AA8tBf,kBAAiB,AACjB,0BAA4B,AAE5B,eAAe,CAmDf,AA1PH,kEA0MI,eAAc,AACd,yBAA4B,CAC5B,AA5MJ,kGA+MI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,sBAAuB,CAavB,AAlOJ,wGAwNK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eA1vBa,CA2vBb,AAjOL,gGAqOI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,eArwBc,CAkxBd,AAxPJ,sGA8OK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAhxBa,CAixBb,AAvPL,qEA6PG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,uBAAsB,AAEtB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,oBAAoB,AAEpB,YAAW,AACX,WAAU,AAEV,mBAAkB,AAClB,gBAAe,AAEf,WAzyBqB,AA0yBrB,gBAAgB,AAChB,eAAe,CAmBf,AAjSH,2EAiRI,UAAU,CACV,AAlRJ,sHAsRK,eAAe,CACf,AAvRL,sOA+RI,YAAY,CACZ,AAhSJ,wDAoSG,qBAAqB,AACrB,YAAW,AACX,WAAU,AAEV,kBAAkB,CAClB,AAzSH,+BA8SE,sBAAqB,AACrB,6BAA4B,AAC5B,4BA30BkB,AA40BlB,0BAAyB,AACzB,YAAW,AACX,kBAAiB,AACjB,gBAAe,AACf,gBAAgB,AAEhB,cAAe,CAwDf,AA/WF,qCA0TG,eAAc,AACd,+BAA+B,CAC/B,AA5TH,wEAiUI,kBAAiB,AACjB,kCAAkC,AAClC,mCAAmC,AACnC,0BAr2BkB,AAs2BlB,eAAgB,CAChB,AAtUJ,uDA2UG,iBAAiB,CACjB,AA5UH,uDA+UG,iBAAiB,CACjB,AAhVH,uDAmVG,iBAAiB,CACjB,AApVH,uDAuVG,iBAAiB,CACjB,AAxVH,uDA2VG,kBAAkB,CAClB,AA5VH,gDAgWG,qBAAqB,AACrB,QAAQ,AACR,SAAS,AACT,kBAAiB,AACjB,iCAAiC,AACjC,oCAAoC,AACpC,eAAe,AACf,2BAx4BmB,AAy4BnB,qBAAqB,CACrB,AAzWH,oCA4WG,iBAAgB,AAChB,UAAU,CACV,AAKH,4BACC,kBAAkB,AAClB,qBAAoB,AACpB,sBAAqB,AAErB,iBAAgB,AAEhB,gBAv5BuB,AAw5BvB,sBAt5BmB,AAw5BnB,eAx6Ba,AA06Bb,gBAAe,AACf,iCAAiC,AAEjC,aAAc,CA6Bd,AA5CD,6DAkBE,YAAW,AAEX,UAj6BgB,CA86BhB,AAjCF,oEAuBG,WAv6BqB,AAw6BrB,kBA/5BkB,CAg6BlB,AAzBH,mEA4BG,eAAc,AAEd,WA96BqB,AA+6BrB,kBAt6BkB,CAu6BlB,AAhCH,8DAoCE,6BAl7BkB,AAo7BlB,YAAW,AACX,gBAAe,AAEf,WAt7BgB,AAu7BhB,eAAgB,CAChB,AAKF,4BACC,kBAAkB,AAClB,MAAK,AACL,SAAQ,AACR,OAAM,AACN,QAAO,AAEP,aAAc,CACd,AAED,uEACC,sBAAuB,CACvB,AAED,uBACC,wBAAyB,CACzB","file":"tabulator.min.css","sourcesContent":["/* Tabulator v4.4.3 (c) Oliver Folkerd */\n\n\r\n//Main Theme Variables\r\n$backgroundColor: #888 !default; //background color of tabulator\r\n$borderColor:#999 !default; //border to tabulator\r\n$textSize:14px !default; //table text size\r\n\r\n//header themeing\r\n$headerBackgroundColor:#e6e6e6 !default; //border to tabulator\r\n$headerTextColor:#555 !default; //header text colour\r\n$headerBorderColor:#aaa !default;  //header border color\r\n$headerSeperatorColor:#999 !default; //header bottom seperator color\r\n$headerMargin:4px !default; //padding round header\r\n\r\n//column header arrows\r\n$sortArrowActive: #666 !default;\r\n$sortArrowInactive: #bbb !default;\r\n\r\n//row themeing\r\n$rowBackgroundColor:#fff !default; //table row background color\r\n$rowAltBackgroundColor:#EFEFEF !default; //table row background color\r\n$rowBorderColor:#aaa !default; //table border color\r\n$rowTextColor:#333 !default; //table text color\r\n$rowHoverBackground:#bbb !default; //row background color on hover\r\n\r\n$rowSelectedBackground: #9ABCEA !default; //row background color when selected\r\n$rowSelectedBackgroundHover: #769BCC !default;//row background color when selected and hovered\r\n\r\n$editBoxColor:#1D68CD !default; //border color for edit boxes\r\n$errorColor:#dd0000 !default; //error indication\r\n\r\n//footer themeing\r\n$footerBackgroundColor:#e6e6e6 !default; //border to tabulator\r\n$footerTextColor:#555 !default; //footer text colour\r\n$footerBorderColor:#aaa !default; //footer border color\r\n$footerSeperatorColor:#999 !default; //footer bottom seperator color\r\n$footerActiveColor:#d00 !default; //footer bottom active text color\r\n\r\n\r\n\r\n//Tabulator Containing Element\r\n.tabulator{\r\n\tposition: relative;\r\n\r\n\tborder: 1px solid $borderColor;\r\n\r\n\tbackground-color: $backgroundColor;\r\n\r\n\tfont-size:$textSize;\r\n\ttext-align: left;\r\n\toverflow:hidden;\r\n\r\n\t-webkit-transform: translatez(0);\r\n\t-moz-transform: translatez(0);\r\n\t-ms-transform: translatez(0);\r\n\t-o-transform: translatez(0);\r\n\ttransform: translatez(0);\r\n\r\n\t&[tabulator-layout=\"fitDataFill\"]{\r\n\t\t.tabulator-tableHolder{\r\n\t\t\t.tabulator-table{\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t&.tabulator-block-select{\r\n\t\tuser-select: none;\r\n\t}\r\n\r\n\t//column header containing element\r\n\t.tabulator-header{\r\n\t\tposition:relative;\r\n\t\tbox-sizing: border-box;\r\n\r\n\t\twidth:100%;\r\n\r\n\t\tborder-bottom:1px solid $headerSeperatorColor;\r\n\t\tbackground-color: $headerBackgroundColor;\r\n\t\tcolor: $headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:hidden;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t&.tabulator-header-hidden{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\t//individual column header element\r\n\t\t.tabulator-col{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition:relative;\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tborder-right:1px solid $headerBorderColor;\r\n\t\t\tbackground:$headerBackgroundColor;\r\n\t\t\ttext-align:left;\r\n\t\t\tvertical-align: bottom;\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&.tabulator-moving{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tborder:1px solid  $headerSeperatorColor;\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 10%);\r\n\t\t\t\tpointer-events: none;\r\n\t\t\t}\r\n\r\n\t\t\t//hold content of column header\r\n\t\t\t.tabulator-col-content{\r\n\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tpadding:4px;\r\n\r\n\t\t\t\t//hold title of column header\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\twhite-space: nowrap;\r\n\t\t\t\t\toverflow: hidden;\r\n\t\t\t\t\ttext-overflow: ellipsis;\r\n\t\t\t\t\tvertical-align:bottom;\r\n\r\n\t\t\t\t\t//element to hold title editor\r\n\t\t\t\t\t.tabulator-title-editor{\r\n\t\t\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\t\tborder:1px solid #999;\r\n\r\n\t\t\t\t\t\tpadding:1px;\r\n\r\n\t\t\t\t\t\tbackground: #fff;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//column sorter arrow\r\n\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\tdisplay: inline-block;\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\ttop:9px;\r\n\t\t\t\t\tright:8px;\r\n\t\t\t\t\twidth: 0;\r\n\t\t\t\t\theight: 0;\r\n\t\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t//complex header column group\r\n\t\t\t&.tabulator-col-group{\r\n\r\n\t\t\t\t//gelement to hold sub columns in column group\r\n\t\t\t\t.tabulator-col-group-cols{\r\n\t\t\t\t\tposition:relative;\r\n\t\t\t\t\tdisplay: flex;\r\n\r\n\t\t\t\t\tborder-top:1px solid $headerBorderColor;\r\n\t\t\t\t\toverflow: hidden;\r\n\r\n\t\t\t\t\t.tabulator-col:last-child{\r\n\t\t\t\t\t\tmargin-right:-1px;\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//hide left resize handle on first column\r\n\t\t\t&:first-child{\r\n\t\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//placeholder element for sortable columns\r\n\t\t\t&.ui-sortable-helper{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tbackground-color: $headerBackgroundColor !important;\r\n\t\t\t\tborder:1px solid $headerBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t//header filter containing element\r\n\t\t\t.tabulator-header-filter{\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\tmargin-top:2px;\r\n\t\t\t\twidth:100%;\r\n\t\t\t\ttext-align: center;\r\n\r\n\t\t\t\t//styling adjustment for inbuilt editors\r\n\t\t\t\ttextarea{\r\n\t\t\t\t\theight:auto !important;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsvg{\r\n\t\t\t\t\tmargin-top: 3px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinput{\r\n\t\t\t\t\t&::-ms-clear {\r\n\t\t\t\t\t\twidth : 0;\r\n\t\t\t\t\t\theight: 0;\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//styling child elements for sortable columns\r\n\t\t\t&.tabulator-sortable{\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tpadding-right:25px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"none\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"asc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowActive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"desc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\t\t\tborder-bottom: none;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\t&.tabulator-col-vertical{\r\n\t\t\t\t.tabulator-col-content{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\twriting-mode: vertical-rl;\r\n\t\t\t\t\t\ttext-orientation: mixed;\r\n\r\n\t\t\t\t\t\tdisplay:flex;\r\n\t\t\t\t\t\talign-items:center;\r\n\t\t\t\t\t\tjustify-content:center;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\ttransform: rotate(180deg);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-sortable{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\tpadding-top:20px;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\t\tpadding-bottom:20px;\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.tabulator-arrow{\r\n\t\t\t\t\t\tright:calc(50% - 6px);\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.tabulator-frozen{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\tposition: absolute;\r\n\r\n\t\t\t// background-color: inherit;\r\n\r\n\t\t\tz-index: 10;\r\n\r\n\t\t\t&.tabulator-frozen-left{\r\n\t\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-frozen-right{\r\n\t\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\tbackground:lighten($headerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:lighten($headerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\t\t\tborder-bottom:1px solid $headerBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen-rows-holder{\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\t&:empty{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//scrolling element to hold table\r\n\t.tabulator-tableHolder{\r\n\t\tposition:relative;\r\n\t\twidth:100%;\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:auto;\r\n\t\t-webkit-overflow-scrolling: touch;\r\n\r\n\t\t&:focus{\r\n\t\t\toutline: none;\r\n\t\t}\r\n\r\n\t\t//default placeholder element\r\n\t\t.tabulator-placeholder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t&[tabulator-render-mode=\"virtual\"]{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\ttop:0;\r\n\t\t\t\tleft:0;\r\n\t\t\t\theight:100%;\r\n\t\t\t}\r\n\r\n\t\t\twidth:100%;\r\n\r\n\t\t\tspan{\r\n\t\t\t\tdisplay: inline-block;\r\n\r\n\t\t\t\tmargin:0 auto;\r\n\t\t\t\tpadding:10px;\r\n\r\n\t\t\t\tcolor:#ccc;\r\n\t\t\t\tfont-weight: bold;\r\n\t\t\t\tfont-size: 20px;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//element to hold table rows\r\n\t\t.tabulator-table{\r\n\t\t\tposition:relative;\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tbackground-color:$rowBackgroundColor;\r\n\t\t\twhite-space: nowrap;\r\n\t\t\toverflow:visible;\r\n\t\t\tcolor:$rowTextColor;\r\n\r\n\t\t\t//row element\r\n\t\t\t.tabulator-row{\r\n\t\t\t\t&.tabulator-calcs{\r\n\t\t\t\t\tfont-weight: bold;\r\n\t\t\t\t\tbackground:darken($rowAltBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t\t&.tabulator-calcs-top{\r\n\t\t\t\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-calcs-bottom{\r\n\t\t\t\t\t\tborder-top:2px solid $rowBorderColor;\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\t}\r\n\r\n\r\n\r\n\t//footer element\r\n\t.tabulator-footer{\r\n\t\tpadding:5px 10px;\r\n\t\tborder-top:1px solid $footerSeperatorColor;\r\n\t\tbackground-color: $footerBackgroundColor;\r\n\t\ttext-align: right;\r\n\t\tcolor: $footerTextColor;\r\n\t\tfont-weight:bold;\r\n\t\twhite-space:nowrap;\r\n\t\tuser-select:none;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\twidth:calc(100% + 20px);\r\n\t\t\tmargin:-5px -10px 5px -10px;\r\n\r\n\t\t\ttext-align: left;\r\n\r\n\t\t\tbackground:lighten($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:lighten($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-bottom:1px solid $rowBorderColor;\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&:only-child{\r\n\t\t\t\tmargin-bottom:-5px;\r\n\t\t\t\tborder-bottom:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-paginator{\r\n\t\t\tcolor: $footerTextColor;\r\n\t\t\tfont-family:inherit;\r\n\t\t\tfont-weight:inherit;\r\n\t\t\tfont-size:inherit;\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-page-size{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 5px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\t\t}\r\n\r\n\t\t.tabulator-pages{\r\n\t\t\tmargin:0 7px;\r\n\t\t}\r\n\r\n\t\t//pagination button\r\n\t\t.tabulator-page{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 2px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\r\n\t\t\tbackground:rgba(255,255,255,.2);\r\n\r\n\t\t\t&.active{\r\n\t\t\t\tcolor:$footerActiveColor;\r\n\t\t\t}\r\n\r\n\t\t\t&:disabled{\r\n\t\t\t\topacity:.5;\r\n\t\t\t}\r\n\r\n\t\t\t&:not(.disabled){\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground:rgba(0,0,0,.2);\r\n\t\t\t\t\tcolor:#fff;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//column resize handles\r\n\t.tabulator-col-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\ttop:0;\r\n\t\tbottom:0;\r\n\t\twidth:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\tleft:0;\r\n\t\t\tright:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ew-resize;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//holding div that contains loader and covers tabulator element to prevent interaction\r\n\t.tabulator-loader{\r\n\t\tposition:absolute;\r\n\t\tdisplay: flex;\r\n\t\talign-items:center;\r\n\r\n\t\ttop:0;\r\n\t\tleft:0;\r\n\t\tz-index:100;\r\n\r\n\t\theight:100%;\r\n\t\twidth:100%;\r\n\t\tbackground:rgba(0,0,0,.4);\r\n\t\ttext-align:center;\r\n\r\n\t\t//loading message element\r\n\t\t.tabulator-loader-msg{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 auto;\r\n\t\t\tpadding:10px 20px;\r\n\r\n\t\t\tborder-radius:10px;\r\n\r\n\t\t\tbackground:#fff;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:16px;\r\n\r\n\t\t\t//loading message\r\n\t\t\t&.tabulator-loading{\r\n\t\t\t\tborder:4px solid #333;\r\n\t\t\t\tcolor:#000;\r\n\t\t\t}\r\n\r\n\t\t\t//error message\r\n\t\t\t&.tabulator-error{\r\n\t\t\t\tborder:4px solid #D00;\r\n\t\t\t\tcolor:#590000;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n//row element\r\n.tabulator-row{\r\n\tposition: relative;\r\n\tbox-sizing: border-box;\r\n\tmin-height:$textSize + ($headerMargin * 2);\r\n\tbackground-color: $rowBackgroundColor;\r\n\r\n\r\n\t&.tabulator-row-even{\r\n\t\tbackground-color: $rowAltBackgroundColor;\r\n\t}\r\n\r\n\t&.tabulator-selectable:hover{\r\n\t\tbackground-color:$rowHoverBackground;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-selected{\r\n\t\tbackground-color:$rowSelectedBackground;\r\n\t}\r\n\r\n\t&.tabulator-selected:hover{\r\n\t\tbackground-color:$rowSelectedBackgroundHover;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-row-moving{\r\n\t\tborder:1px solid #000;\r\n\t\tbackground:#fff;\r\n\t}\r\n\r\n\t&.tabulator-moving{\r\n\t\tposition: absolute;\r\n\r\n\t\tborder-top:1px solid  $rowBorderColor;\r\n\t\tborder-bottom:1px solid  $rowBorderColor;\r\n\r\n\t\tpointer-events: none;\r\n\t\tz-index:15;\r\n\t}\r\n\r\n\t//row resize handles\r\n\t.tabulator-row-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\tbottom:0;\r\n\t\tleft:0;\r\n\t\theight:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\ttop:0;\r\n\t\t\tbottom:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ns-resize;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-frozen{\r\n\t\tdisplay: inline-block;\r\n\t\tposition: absolute;\r\n\r\n\t\tbackground-color: inherit;\r\n\r\n\t\tz-index: 10;\r\n\r\n\t\t&.tabulator-frozen-left{\r\n\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t&.tabulator-frozen-right{\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-responsive-collapse{\r\n\t\tbox-sizing:border-box;\r\n\r\n\t\tpadding:5px;\r\n\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\t&:empty{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\ttable{\r\n\t\t\tfont-size:$textSize;\r\n\r\n\t\t\ttr{\r\n\t\t\t\ttd{\r\n\t\t\t\t\tposition: relative;\r\n\r\n\t\t\t\t\t&:first-of-type{\r\n\t\t\t\t\t\tpadding-right:10px;\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//cell element\r\n\t.tabulator-cell{\r\n\t\tdisplay:inline-block;\r\n\t\tposition: relative;\r\n\t\tbox-sizing:border-box;\r\n\t\tpadding:4px;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tvertical-align:middle;\r\n\t\twhite-space:nowrap;\r\n\t\toverflow:hidden;\r\n\t\ttext-overflow:ellipsis;\r\n\r\n\r\n\t\t&.tabulator-editing{\r\n\t\t\tborder:1px solid  $editBoxColor;\r\n\t\t\tpadding: 0;\r\n\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-validation-fail{\r\n\t\t\tborder:1px solid $errorColor;\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\r\n\t\t\t\tcolor: $errorColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//hide left resize handle on first column\r\n\t\t&:first-child{\r\n\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//movable row handle\r\n\t\t&.tabulator-row-handle{\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\t\t\tjustify-content:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\t//handle holder\r\n\t\t\t.tabulator-row-handle-box{\r\n\t\t\t\twidth:80%;\r\n\r\n\t\t\t\t//Hamburger element\r\n\t\t\t\t.tabulator-row-handle-bar{\r\n\t\t\t\t\twidth:100%;\r\n\t\t\t\t\theight:3px;\r\n\t\t\t\t\tmargin-top:2px;\r\n\t\t\t\t\tbackground:#666;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-branch{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:9px;\r\n\t\t\twidth:7px;\r\n\r\n\t\t\tmargin-top:-9px;\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control{\r\n\r\n\t\t\tdisplay:inline-flex;\r\n\t\t\tjustify-content:center;\r\n\t\t\talign-items:center;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:11px;\r\n\t\t\twidth:11px;\r\n\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder:1px solid $rowTextColor;\r\n\t\t\tborder-radius:2px;\r\n\t\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\t\toverflow:hidden;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\tcursor:pointer;\r\n\t\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: transparent;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-expand{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-responsive-collapse-toggle{\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\t\t\tjustify-content:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\theight:15px;\r\n\t\t\twidth:15px;\r\n\r\n\t\t\tborder-radius:20px;\r\n\t\t\tbackground:#666;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:1.1em;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\topacity:.7;\r\n\t\t\t}\r\n\r\n\t\t\t&.open{\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\t\tdisplay:initial;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-open{\r\n\t\t\t\t\tdisplay:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\tdisplay:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-traffic-light{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\theight:14px;\r\n\t\t\twidth:14px;\r\n\r\n\t\t\tborder-radius:14px;\r\n\t\t}\r\n\t}\r\n\r\n\t//row grouping element\r\n\t&.tabulator-group{\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-bottom:1px solid #999;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tborder-top:1px solid #999;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:#ccc;\r\n\t\tfont-weight:bold;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:rgba(0,0,0,.1);\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-visible{\r\n\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\tpadding-left:30px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\tpadding-left:50px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\tpadding-left:70px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\tpadding-left:90px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\tpadding-left:110px;\r\n\t\t}\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:#d00;\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n.tabulator-edit-select-list{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tmax-height:200px;\r\n\r\n\tbackground:$rowBackgroundColor;\r\n\tborder:1px solid $rowBorderColor;\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-edit-select-list-item{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\r\n\t\t&.active{\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-group{\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\tpadding:4px;\r\n\t\tpadding-top:6px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\tfont-weight:bold;\r\n\t}\r\n}\r\n\r\n// Table print styling\r\n\r\n.tabulator-print-fullscreen{\r\n\tposition: absolute;\r\n\ttop:0;\r\n\tbottom:0;\r\n\tleft:0;\r\n\tright:0;\r\n\r\n\tz-index: 10000;\r\n}\r\n\r\nbody.tabulator-print-fullscreen-hide>*:not(.tabulator-print-fullscreen){\r\n\tdisplay:none !important;\r\n}\r\n\r\n.tabulator-print-table{\r\n\tborder-collapse: collapse;\r\n}\r\n\r\n"]}
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/css.old/tabulator_midnight.css b/backoffice/vendors/tabulator/css.old/tabulator_midnight.css
new file mode 100644 (file)
index 0000000..10fb2f0
--- /dev/null
@@ -0,0 +1,810 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+.tabulator {
+  position: relative;
+  border: 1px solid #333;
+  background-color: #222;
+  overflow: hidden;
+  font-size: 14px;
+  text-align: left;
+  -ms-transform: translatez(0);
+  transform: translatez(0);
+}
+
+.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableHolder .tabulator-table {
+  min-width: 100%;
+}
+
+.tabulator.tabulator-block-select {
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+
+.tabulator .tabulator-header {
+  position: relative;
+  box-sizing: border-box;
+  width: 100%;
+  border-bottom: 1px solid #999;
+  background-color: #333;
+  color: #fff;
+  font-weight: bold;
+  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-color: #333;
+  text-align: left;
+  vertical-align: bottom;
+  overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-moving {
+  position: absolute;
+  border: 1px solid #999;
+  background: #1a1a1a;
+  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-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: #444;
+  color: #fff;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {
+  display: inline-block;
+  position: absolute;
+  top: 9px;
+  right: 8px;
+  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: -ms-flexbox;
+  display: flex;
+  border-top: 1px solid #aaa;
+  overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child {
+  margin-right: -1px;
+}
+
+.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev {
+  display: none;
+}
+
+.tabulator .tabulator-header .tabulator-col.ui-sortable-helper {
+  position: absolute;
+  background-color: #1a1a1a !important;
+  border: 1px solid #aaa;
+}
+
+.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, .tabulator .tabulator-header .tabulator-col .tabulator-header-filter select {
+  border: 1px solid #999;
+  background: #444;
+  color: #fff;
+}
+
+.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: #1a1a1a;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-arrow {
+  border-top: none;
+  border-bottom: 6px solid #bbb;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .tabulator-col-content .tabulator-arrow {
+  border-top: none;
+  border-bottom: 6px solid #666;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="desc"] .tabulator-col-content .tabulator-arrow {
+  border-top: 6px solid #666;
+  border-bottom: none;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {
+  -ms-writing-mode: tb-rl;
+      writing-mode: vertical-rl;
+  text-orientation: mixed;
+  display: -ms-flexbox;
+  display: flex;
+  -ms-flex-align: center;
+      align-items: center;
+  -ms-flex-pack: center;
+      justify-content: center;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {
+  -ms-transform: rotate(180deg);
+      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-arrow {
+  right: calc(50% - 6px);
+}
+
+.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 #888;
+}
+
+.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {
+  border-left: 2px solid #888;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder {
+  box-sizing: border-box;
+  min-width: 600%;
+  background: #1a1a1a !important;
+  border-top: 1px solid #888;
+  border-bottom: 1px solid #aaa;
+  overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {
+  background: #1a1a1a !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: -ms-flexbox;
+  display: flex;
+  -ms-flex-align: center;
+      align-items: center;
+  width: 100%;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode="virtual"] {
+  position: absolute;
+  top: 0;
+  left: 0;
+  height: 100%;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-placeholder span {
+  display: inline-block;
+  margin: 0 auto;
+  padding: 10px;
+  color: #eee;
+  font-weight: bold;
+  font-size: 20px;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table {
+  position: relative;
+  display: inline-block;
+  background-color: #666;
+  white-space: nowrap;
+  overflow: visible;
+  color: #fff;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs {
+  font-weight: bold;
+  background: #373737 !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {
+  border-bottom: 2px solid #888;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {
+  border-top: 2px solid #888;
+}
+
+.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-footer {
+  padding: 5px 10px;
+  border-top: 1px solid #999;
+  background-color: #333;
+  text-align: right;
+  color: #333;
+  font-weight: bold;
+  white-space: nowrap;
+  -ms-user-select: none;
+      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 -10px;
+  text-align: left;
+  background: #262626 !important;
+  border-bottom: 1px solid #888;
+  border-top: 1px solid #888;
+  overflow: hidden;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {
+  background: #262626 !important;
+  color: #fff;
+}
+
+.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 label {
+  color: #fff;
+}
+
+.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: rgba(255, 255, 255, 0.2);
+  color: #333;
+  font-family: inherit;
+  font-weight: inherit;
+  font-size: inherit;
+}
+
+.tabulator .tabulator-footer .tabulator-page.active {
+  color: #fff;
+}
+
+.tabulator .tabulator-footer .tabulator-page:disabled {
+  opacity: .5;
+}
+
+.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {
+  cursor: pointer;
+  background: rgba(0, 0, 0, 0.2);
+  color: #fff;
+}
+
+.tabulator .tabulator-loader {
+  position: absolute;
+  display: -ms-flexbox;
+  display: flex;
+  -ms-flex-align: center;
+      align-items: center;
+  top: 0;
+  left: 0;
+  z-index: 100;
+  height: 100%;
+  width: 100%;
+  background: rgba(0, 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: bold;
+  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: #666;
+}
+
+.tabulator-row:nth-child(even) {
+  background-color: #444;
+}
+
+.tabulator-row.tabulator-selectable:hover {
+  background-color: #999;
+  cursor: pointer;
+}
+
+.tabulator-row.tabulator-selected {
+  background-color: #000;
+}
+
+.tabulator-row.tabulator-selected:hover {
+  background-color: #888;
+  cursor: pointer;
+}
+
+.tabulator-row.tabulator-moving {
+  position: absolute;
+  border-top: 1px solid #888;
+  border-bottom: 1px solid #888;
+  pointer-events: none !important;
+  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 #888;
+}
+
+.tabulator-row .tabulator-frozen.tabulator-frozen-right {
+  border-left: 2px solid #888;
+}
+
+.tabulator-row .tabulator-responsive-collapse {
+  box-sizing: border-box;
+  padding: 5px;
+  border-top: 1px solid #888;
+  border-bottom: 1px solid #888;
+}
+
+.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 #888;
+  vertical-align: middle;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+
+.tabulator-row .tabulator-cell.tabulator-editing {
+  border: 1px solid #999;
+  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 #dd0000;
+}
+
+.tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {
+  border: 1px;
+  background: transparent;
+  color: #dd0000;
+}
+
+.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev {
+  display: none;
+}
+
+.tabulator-row .tabulator-cell.tabulator-row-handle {
+  display: -ms-inline-flexbox;
+  display: inline-flex;
+  -ms-flex-align: center;
+      align-items: 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 #888;
+  border-bottom: 2px solid #888;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control {
+  display: -ms-inline-flexbox;
+  display: inline-flex;
+  -ms-flex-pack: center;
+      justify-content: center;
+  -ms-flex-align: center;
+      align-items: center;
+  vertical-align: middle;
+  height: 11px;
+  width: 11px;
+  margin-right: 5px;
+  border: 1px solid #fff;
+  border-radius: 2px;
+  background: rgba(0, 0, 0, 0.1);
+  overflow: hidden;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {
+  cursor: pointer;
+  background: rgba(0, 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: #fff;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {
+  display: inline-block;
+  position: relative;
+  height: 7px;
+  width: 1px;
+  background: #fff;
+}
+
+.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: #fff;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {
+  display: -ms-inline-flexbox;
+  display: inline-flex;
+  -ms-flex-align: center;
+      align-items: center;
+  -ms-flex-pack: 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: #fff;
+  color: #666;
+  font-weight: bold;
+  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 {
+  display: none;
+}
+
+.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 #888;
+  border-top: 1px solid #999;
+  padding: 5px;
+  padding-left: 10px;
+  background: #ccc;
+  font-weight: bold;
+  color: #333;
+  min-width: 100%;
+}
+
+.tabulator-row.tabulator-group:hover {
+  cursor: pointer;
+  background-color: rgba(0, 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-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: #666;
+}
+
+.tabulator-edit-select-list {
+  position: absolute;
+  display: inline-block;
+  box-sizing: border-box;
+  max-height: 200px;
+  background: #fff;
+  border: 1px solid #888;
+  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: #666;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-item.active {
+  color: #999;
+  background: #444;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-item:hover {
+  cursor: pointer;
+  color: #999;
+  background: #666;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-group {
+  border-bottom: 1px solid #888;
+  padding: 4px;
+  padding-top: 6px;
+  color: #fff;
+  font-weight: bold;
+}
+
+.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;
+}
diff --git a/backoffice/vendors/tabulator/css.old/tabulator_midnight.min.css b/backoffice/vendors/tabulator/css.old/tabulator_midnight.min.css
new file mode 100644 (file)
index 0000000..cd1bf7b
--- /dev/null
@@ -0,0 +1,3 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+.tabulator{position:relative;border:1px solid #333;background-color:#222;overflow:hidden;font-size:14px;text-align:left;transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator.tabulator-block-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:#333;color:#fff;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-color:#333;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #999;background:#1a1a1a;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-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:#444;color:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{display:inline-block;position:absolute;top:9px;right:8px;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:-ms-flexbox;display:flex;border-top:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child{margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col.ui-sortable-helper{position:absolute;background-color:#1a1a1a!important;border:1px solid #aaa}.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,.tabulator .tabulator-header .tabulator-col .tabulator-header-filter select{border:1px solid #999;background:#444;color:#fff}.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:#1a1a1a}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-arrow{border-top:6px solid #666;border-bottom:none}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack: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-arrow{right:calc(50% - 6px)}.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 #888}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #888}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;min-width:600%;background:#1a1a1a!important;border-top:1px solid #888;border-bottom:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#1a1a1a!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:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{position:absolute;top:0;left:0;height:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#eee;font-weight:700;font-size:20px}.tabulator .tabulator-tableHolder .tabulator-table{position:relative;display:inline-block;background-color:#666;white-space:nowrap;overflow:visible;color:#fff}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#373737!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #888}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #888}.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-footer{padding:5px 10px;border-top:1px solid #999;background-color:#333;text-align:right;color:#333;font-weight:700;white-space:nowrap;-ms-user-select:none;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:#262626!important;border-bottom:1px solid #888;border-top:1px solid #888;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#262626!important;color:#fff}.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 label{color:#fff}.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);color:#333;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page.active{color:#fff}.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-loader{position:absolute;display:-ms-flexbox;display:flex;-ms-flex-align:center;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:#666}.tabulator-row:nth-child(2n){background-color:#444}.tabulator-row.tabulator-selectable:hover{background-color:#999;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#000}.tabulator-row.tabulator-selected:hover{background-color:#888;cursor:pointer}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #888;border-bottom:1px solid #888;pointer-events:none!important;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 #888}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #888}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #888;border-bottom:1px solid #888}.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 #888;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #999;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:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items: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 #888;border-bottom:2px solid #888}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #fff;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:#fff}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#fff}.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:#fff}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack: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:#fff;color:#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 #888;border-top:1px solid #999;padding:5px;padding-left:10px;background:#ccc;font-weight:700;color:#333;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-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:#666}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#fff;border:1px solid #888;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:#666}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#999;background:#444}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:#999;background:#666}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #888;padding:4px;padding-top:6px;color:#fff;font-weight:700}.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}
+/*# sourceMappingURL=tabulator_midnight.min.css.map */
diff --git a/backoffice/vendors/tabulator/css.old/tabulator_midnight.min.css.map b/backoffice/vendors/tabulator/css.old/tabulator_midnight.min.css.map
new file mode 100644 (file)
index 0000000..5210ecf
--- /dev/null
@@ -0,0 +1 @@
+{"version":3,"sources":["tabulator_midnight.scss"],"names":[],"mappings":"AAyCA,WACC,kBAAkB,AAClB,sBAtCgB,AAuChB,sBAxCqB,AAyCrB,gBAAe,AACf,eAxCa,AAyCb,gBAAgB,AAMhB,uBAAwB,CAkgBxB,AA9gBD,iFAiBI,cAAc,CACd,AAlBJ,kCAuBE,yBAAiB,AAAjB,sBAAiB,AAAjB,qBAAiB,AAAjB,gBAAiB,CACjB,AAxBF,6BA4BE,kBAAiB,AACjB,sBAAsB,AAEtB,WAAU,AAEV,6BA9DwB,AA+DxB,sBAlEyB,AAmEzB,WAlEmB,AAmEnB,gBAAgB,AAEhB,mBAAmB,AACnB,gBAAe,AAEf,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CA4PpB,AAxSF,qDA+CG,YAAY,CACZ,AAhDH,4CAoDG,qBAAoB,AACpB,kBAAiB,AACjB,sBAAqB,AACrB,4BArFoB,AAsFpB,sBAxFwB,AAyFxB,gBAAe,AACf,sBAAsB,AACtB,eAAgB,CA6LhB,AAxPH,6DA8DI,kBAAkB,AAClB,sBA5FsB,AA6FtB,mBAA8C,AAC9C,mBAAoB,CACpB,AAlEJ,mEAsEI,sBAAqB,AACrB,kBAAkB,AAClB,WAAW,CAwCX,AAhHJ,wFA4EK,sBAAqB,AACrB,WAAW,AAEX,mBAAmB,AACnB,gBAAgB,AAChB,uBAAuB,AACvB,qBAAqB,CAerB,AAjGL,gHAsFM,sBAAsB,AACtB,WAAW,AAEX,sBAAqB,AAErB,YAAW,AAEX,gBAAgB,AAChB,UAAW,CACX,AA/FN,oFAqGK,qBAAqB,AACrB,kBAAkB,AAClB,QAAO,AACP,UAAS,AACT,QAAQ,AACR,SAAS,AACT,kCAAkC,AAClC,mCAAmC,AACnC,4BArImB,CAsInB,AA9GL,0FAuHK,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AAEb,0BAxJkB,AAyJlB,eAAgB,CAKhB,AAhIL,oHA8HM,iBAAiB,CACjB,AA/HN,0FAsIK,YAAa,CACb,AAvIL,+DA4II,kBAAkB,AAClB,mCAAgE,AAChE,qBA5KmB,CA6KnB,AA/IJ,qEAmJI,kBAAkB,AAClB,sBAAsB,AACtB,eAAc,AACd,WAAU,AACV,iBAAkB,CAuBlB,AA9KJ,8EA2JK,qBAAsB,CACtB,AA5JL,yEA+JK,cAAe,CACf,AAhKL,uJAmKK,sBAAqB,AACrB,gBAAgB,AAChB,UAAW,CACX,AAtKL,sFA0KM,QAAS,AACT,QAAS,CACT,AA5KN,oFAmLK,kBAAkB,CAClB,AApLL,qEAuLK,eAAc,AACd,wBAAoD,CACpD,AAzLL,uHA8LM,gBAAgB,AAChB,4BAvNkB,CAwNlB,AAhMN,sHAqMM,gBAAgB,AAChB,4BA/NgB,CAgOhB,AAvMN,uHA4MM,0BArOgB,AAsOhB,kBAAmB,CACnB,AA9MN,+GAqNM,uBAAyB,AAAzB,yBAAyB,AACzB,uBAAuB,AAEvB,oBAAY,AAAZ,aAAY,AACZ,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,sBAAsB,CACtB,AA3NN,oHAgOM,wBAAyB,CACzB,AAjON,2GAsOM,gBAAe,AACf,gBAAgB,CAChB,AAxON,uIA4OO,gBAAe,AACf,mBAAmB,CACnB,AA9OP,uGAmPM,qBAAqB,CACrB,AApPN,+CA2PG,qBAAqB,AACrB,kBAAkB,AAIlB,UAAW,CASX,AAzQH,qEAmQI,2BAtRgB,CAuRhB,AApQJ,sEAuQI,0BA1RgB,CA2RhB,AAxQJ,qDA6QG,sBAAqB,AACrB,eAAc,AAEd,6BAAyD,AAUzD,0BA7SiB,AA8SjB,6BAzToB,AA2TpB,eAAgB,CAChB,AA9RH,oEAmRI,4BAAyD,CAKzD,AAxRJ,iGAsRK,YAAa,CACb,AAvRL,2DAiSG,cAAc,CAKd,AAtSH,iEAoSI,YAAa,CACb,AArSJ,kCA4SE,kBAAiB,AACjB,WAAU,AACV,mBAAmB,AACnB,cAAa,AACb,gCAAiC,CAyDjC,AAzWF,wCAmTG,YAAa,CACb,AApTH,yDAwTG,sBAAqB,AACrB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AASlB,UAAU,CAYV,AA/UH,wFA6TI,kBAAkB,AAClB,MAAK,AACL,OAAM,AACN,WAAW,CACX,AAjUJ,8DAsUI,qBAAqB,AAErB,cAAa,AACb,aAAY,AAEZ,WAAU,AACV,gBAAiB,AACjB,cAAe,CACf,AA9UJ,mDAmVG,kBAAiB,AACjB,qBAAoB,AACpB,sBA1WqB,AA2WrB,mBAAmB,AACnB,iBAAgB,AAChB,UA1We,CA0Xf,AAxWH,kFA4VK,gBAAiB,AACjB,4BAAwD,CASxD,AAtWL,sGAgWM,4BAnXc,CAoXd,AAjWN,yGAoWM,yBAvXc,CAwXd,AArWN,wCA6WE,kBAAiB,AACjB,QAAO,AACP,MAAK,AACL,SAAQ,AACR,SAAS,CAUT,AA3XF,6CAoXG,OAAM,AACN,UAAU,CACV,AAtXH,8CAyXG,gBAAgB,CAChB,AA1XH,6BAgYE,iBAAgB,AAChB,0BAtYwB,AAuYxB,sBA1YyB,AA2YzB,iBAAgB,AAChB,WA3YmB,AA4YnB,gBAAgB,AAChB,mBAAkB,AAClB,qBAAgB,AAAhB,iBAAgB,AAEhB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAuFpB,AAneF,qDA+YG,sBAAqB,AACrB,wBAAuB,AACvB,sBAA2B,AAE3B,gBAAgB,AAEhB,6BAAwD,AAWxD,6BAnbiB,AAobjB,0BApbiB,AAsbjB,eAAgB,CAMhB,AAzaH,oEAwZI,6BAAwD,AACxD,UAxbiB,CA6bjB,AA9ZJ,iGA4ZK,YAAa,CACb,AA7ZL,gEAsaI,mBAAkB,AAClB,kBAAkB,CAClB,AAxaJ,wDA8aI,UAAU,CACV,AA/aJ,kDAobG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBA/boB,AAgcpB,iBAAiB,CACjB,AA3bH,8CA+bG,YAAY,CACZ,AAhcH,6CAocG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBA/coB,AAgdpB,kBAAiB,AAEjB,8BAA+B,AAE/B,WArdkB,AAsdlB,oBAAmB,AACnB,oBAAmB,AACnB,iBAAiB,CAiBjB,AAleH,oDAodI,UAxdmB,CAydnB,AArdJ,sDAwdI,UAAU,CACV,AAzdJ,kEA6dK,eAAc,AACd,0BAAyB,AACzB,UAAU,CACV,AAheL,6BAueE,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AAElB,MAAK,AACL,OAAM,AACN,YAAW,AAEX,YAAW,AACX,WAAU,AACV,0BAAyB,AACzB,iBAAiB,CA2BjB,AA7gBF,mDAsfG,qBAAoB,AAEpB,cAAa,AACb,kBAAiB,AAEjB,mBAAkB,AAElB,gBAAe,AACf,gBAAgB,AAChB,cAAc,CAad,AA5gBH,qEAmgBI,sBAAqB,AACrB,UAAU,CACV,AArgBJ,mEAygBI,sBAAqB,AACrB,aAAa,CACb,AAMJ,eACC,kBAAkB,AAClB,sBAAsB,AAEtB,gBAA0C,AAC1C,qBA3iBuB,CAo5BvB,AA9WD,6BAQE,qBA7iByB,CA8iBzB,AATF,0CAYE,sBA9iBsB,AA+iBtB,cAAe,CACf,AAdF,kCAiBE,qBAjjB0B,CAkjB1B,AAlBF,wCAqBE,sBApjB+B,AAqjB/B,cAAe,CACf,AAvBF,gCA0BE,kBAAkB,AAElB,0BAhkBkB,AAikBlB,6BAjkBkB,AAmkBlB,8BAA+B,AAC/B,UAAU,CACV,AAjCF,4CAqCE,kBAAiB,AACjB,QAAO,AACP,SAAQ,AACR,OAAM,AACN,UAAU,CAUV,AAnDF,iDA4CG,MAAK,AACL,WAAW,CACX,AA9CH,kDAiDG,gBAAgB,CAChB,AAlDH,iCAsDE,qBAAqB,AACrB,kBAAkB,AAElB,yBAAyB,AAEzB,UAAW,CASX,AApEF,uDA8DG,2BAlmBiB,CAmmBjB,AA/DH,wDAkEG,0BAtmBiB,CAumBjB,AAnEH,8CAuEE,sBAAqB,AAErB,YAAW,AAEX,0BA/mBkB,AAgnBlB,4BAhnBkB,CAmoBlB,AA/FF,oDA+EG,YAAY,CACZ,AAhFH,oDAmFG,cAvoBW,CAkpBX,AA9FH,0DAuFK,iBAAkB,CAKlB,AA5FL,wEA0FM,kBAAkB,CAClB,AA3FN,+BAoGE,qBAAoB,AACpB,kBAAkB,AAClB,sBAAqB,AACrB,YAAW,AACX,4BA5oBkB,AA6oBlB,sBAAqB,AACrB,mBAAkB,AAClB,gBAAe,AACf,sBAAsB,CA0LtB,AAtSF,iDAgHG,sBA7oBe,AA8oBf,SAAU,CAMV,AAvHH,+GAoHI,WAAU,AACV,sBAAsB,CACtB,AAtHJ,yDA0HG,qBAtpBgB,CA6pBhB,AAjIH,+HA4HI,WAAU,AACV,uBAAsB,AAEtB,UA3pBe,CA4pBf,AAhIJ,6EAsII,YAAa,CACb,AAvIJ,oDA6IG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAElB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAcpB,AAjKH,8EAuJI,SAAS,CAST,AAhKJ,wGA2JK,WAAU,AACV,WAAU,AACV,eAAc,AACd,eAAe,CACf,AA/JL,2DAoKG,qBAAoB,AACpB,sBAAqB,AAErB,WAAU,AACV,UAAS,AAET,gBAAe,AACf,iBAAgB,AAEhB,8BAA6B,AAE7B,2BAntBiB,AAotBjB,4BAptBiB,CAqtBjB,AAjLH,4DAqLG,2BAAmB,AAAnB,oBAAmB,AACnB,qBAAsB,AAAtB,uBAAsB,AACtB,sBAAkB,AAAlB,mBAAkB,AAClB,sBAAqB,AAErB,YAAW,AACX,WAAU,AAEV,iBAAgB,AAEhB,sBAluBe,AAmuBf,kBAAiB,AACjB,0BAA4B,AAE5B,eAAe,CAmDf,AAtPH,kEAsMI,eAAc,AACd,yBAA4B,CAC5B,AAxMJ,kGA2MI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,sBAAuB,CAavB,AA9NJ,wGAoNK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eA/vBa,CAgwBb,AA7NL,gGAiOI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,eA1wBc,CAuxBd,AApPJ,sGA0OK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eArxBa,CAsxBb,AAnPL,qEAyPG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,uBAAsB,AAEtB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,oBAAoB,AAEpB,YAAW,AACX,WAAU,AAEV,mBAAkB,AAClB,gBAAe,AAEf,WA9yBqB,AA+yBrB,gBAAgB,AAChB,eAAe,CAmBf,AA7RH,2EA6QI,UAAU,CACV,AA9QJ,sHAkRK,eAAe,CACf,AAnRL,sOA2RI,YAAY,CACZ,AA5RJ,wDAgSG,qBAAqB,AACrB,YAAW,AACX,WAAU,AAEV,kBAAkB,CAClB,AArSH,+BA4SE,sBAAqB,AACrB,6BAA4B,AAC5B,4BAl1BkB,AAm1BlB,0BAAyB,AACzB,YAAW,AACX,kBAAiB,AACjB,gBAAe,AACf,gBAAgB,AAChB,WAAU,AAEV,cAAe,CAuDf,AA7WF,qCAyTG,eAAc,AACd,+BAA+B,CAC/B,AA3TH,wEA+TI,kBAAiB,AACjB,kCAAkC,AAClC,mCAAmC,AACnC,0BA52BkB,AA62BlB,eAAgB,CAChB,AApUJ,uDAwUG,iBAAiB,CACjB,AAzUH,uDA4UG,iBAAiB,CACjB,AA7UH,uDAgVG,iBAAiB,CACjB,AAjVH,uDAoVG,iBAAiB,CACjB,AArVH,uDAwVG,kBAAkB,CAClB,AAzVH,gDA8VG,qBAAqB,AACrB,QAAQ,AACR,SAAS,AACT,kBAAiB,AACjB,iCAAiC,AACjC,oCAAoC,AACpC,eAAe,AACf,2BA/4BmB,AAg5BnB,qBAAqB,CACrB,AAvWH,oCA0WG,iBAAgB,AAChB,UAAU,CACV,AAIH,4BACC,kBAAkB,AAClB,qBAAoB,AACpB,sBAAqB,AAErB,iBAAgB,AAEhB,gBA15BiB,AA25BjB,sBA55BmB,AA85BnB,eA96Ba,AAg7Bb,gBAAe,AACf,iCAAiC,AAEjC,aAAc,CA6Bd,AA5CD,6DAkBE,YAAW,AAEX,UA16BsB,CAu7BtB,AAjCF,oEAuBG,WAp6Be,AAq6Bf,eA76BwB,CA86BxB,AAzBH,mEA4BG,eAAc,AAEd,WA36Be,AA46Bf,eAr7BqB,CAs7BrB,AAhCH,8DAoCE,6BAx7BkB,AA07BlB,YAAW,AACX,gBAAe,AAEf,WA57BgB,AA67BhB,eAAgB,CAChB,AAKF,4BACC,kBAAkB,AAClB,MAAK,AACL,SAAQ,AACR,OAAM,AACN,QAAO,AAEP,aAAc,CACd,AAED,uEACC,sBAAuB,CACvB,AAED,uBACC,wBAAyB,CACzB","file":"tabulator_midnight.min.css","sourcesContent":["/* Tabulator v4.4.3 (c) Oliver Folkerd */\n\n\r\n//Main Theme Variables\r\n$backgroundColor: #222 !default; //background color of tabulator\r\n$borderColor:#333 !default; //border to tabulator\r\n$textSize:14px !default; //table text size\r\n\r\n//header themeing\r\n$headerBackgroundColor:#333 !default; //border to tabulator\r\n$headerTextColor:#fff !default; //header text colour\r\n$headerBorderColor:#aaa !default;  //header border color\r\n$headerSeperatorColor:#999 !default; //header bottom seperator color\r\n$headerMargin:4px !default; //padding round header\r\n\r\n//column header arrows\r\n$sortArrowActive: #666 !default;\r\n$sortArrowInactive: #bbb !default;\r\n\r\n//row themeing\r\n$rowBackgroundColor:#666 !default; //table row background color\r\n$rowAltBackgroundColor:#444 !default; //table row background color\r\n$rowBorderColor:#888 !default; //table border color\r\n$rowTextColor:#fff !default; //table text color\r\n$rowHoverBackground:#999 !default; //row background color on hover\r\n\r\n$rowSelectedBackground: #000 !default; //row background color when selected\r\n$rowSelectedBackgroundHover: #888 !default;//row background color when selected and hovered\r\n\r\n$editBoxColor:#999 !default; //border color for edit boxes\r\n$errorColor:#dd0000 !default; //error indication\r\n\r\n//footer themeing\r\n$footerBackgroundColor:#333 !default; //border to tabulator\r\n$footerTextColor:#333 !default; //footer text colour\r\n$footerBorderColor:#aaa !default; //footer border color\r\n$footerSeperatorColor:#999 !default; //footer bottom seperator color\r\n$footerActiveColor:#fff !default; //footer bottom active text color\r\n\r\n\r\n//Tabulator Containing Element\r\n.tabulator{\r\n\tposition: relative;\r\n\tborder: 1px solid $borderColor;\r\n\tbackground-color: $backgroundColor;\r\n\toverflow:hidden;\r\n\tfont-size:$textSize;\r\n\ttext-align: left;\r\n\r\n\t-webkit-transform: translatez(0);\r\n\t-moz-transform: translatez(0);\r\n\t-ms-transform: translatez(0);\r\n\t-o-transform: translatez(0);\r\n\ttransform: translatez(0);\r\n\r\n\t&[tabulator-layout=\"fitDataFill\"]{\r\n\t\t.tabulator-tableHolder{\r\n\t\t\t.tabulator-table{\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t&.tabulator-block-select{\r\n\t\tuser-select: none;\r\n\t}\r\n\r\n\t//column header containing element\r\n\t.tabulator-header{\r\n\t\tposition:relative;\r\n\t\tbox-sizing: border-box;\r\n\r\n\t\twidth:100%;\r\n\r\n\t\tborder-bottom:1px solid $headerSeperatorColor;\r\n\t\tbackground-color: $headerBackgroundColor;\r\n\t\tcolor: $headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:hidden;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t&.tabulator-header-hidden{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\t//individual column header element\r\n\t\t.tabulator-col{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition:relative;\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tborder-right:1px solid $headerBorderColor;\r\n\t\t\tbackground-color: $headerBackgroundColor;\r\n\t\t\ttext-align:left;\r\n\t\t\tvertical-align: bottom;\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&.tabulator-moving{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tborder:1px solid  $headerSeperatorColor;\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 10%);\r\n\t\t\t\tpointer-events: none;\r\n\t\t\t}\r\n\r\n\t\t\t//hold content of column header\r\n\t\t\t.tabulator-col-content{\r\n\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tpadding:4px;\r\n\r\n\t\t\t\t//hold title of column header\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\twhite-space: nowrap;\r\n\t\t\t\t\toverflow: hidden;\r\n\t\t\t\t\ttext-overflow: ellipsis;\r\n\t\t\t\t\tvertical-align:bottom;\r\n\r\n\t\t\t\t\t//element to hold title editor\r\n\t\t\t\t\t.tabulator-title-editor{\r\n\t\t\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\t\tborder:1px solid #999;\r\n\r\n\t\t\t\t\t\tpadding:1px;\r\n\r\n\t\t\t\t\t\tbackground: #444;\r\n\t\t\t\t\t\tcolor: #fff;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//column sorter arrow\r\n\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\tdisplay: inline-block;\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\ttop:9px;\r\n\t\t\t\t\tright:8px;\r\n\t\t\t\t\twidth: 0;\r\n\t\t\t\t\theight: 0;\r\n\t\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t//complex header column group\r\n\t\t\t&.tabulator-col-group{\r\n\r\n\t\t\t\t//gelement to hold sub columns in column group\r\n\t\t\t\t.tabulator-col-group-cols{\r\n\t\t\t\t\tposition:relative;\r\n\t\t\t\t\tdisplay: flex;\r\n\r\n\t\t\t\t\tborder-top:1px solid $headerBorderColor;\r\n\t\t\t\t\toverflow: hidden;\r\n\r\n\t\t\t\t\t.tabulator-col:last-child{\r\n\t\t\t\t\t\tmargin-right:-1px;\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//hide left resize handle on first column\r\n\t\t\t&:first-child{\r\n\t\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//placeholder element for sortable columns\r\n\t\t\t&.ui-sortable-helper{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tbackground-color: darken($headerBackgroundColor, 10%) !important;\r\n\t\t\t\tborder:1px solid $headerBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t//header filter containing element\r\n\t\t\t.tabulator-header-filter{\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\tmargin-top:2px;\r\n\t\t\t\twidth:100%;\r\n\t\t\t\ttext-align: center;\r\n\r\n\t\t\t\t//styling adjustment for inbuilt editors\r\n\t\t\t\ttextarea{\r\n\t\t\t\t\theight:auto !important;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsvg{\r\n\t\t\t\t\tmargin-top: 3px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinput, select{\r\n\t\t\t\t\tborder:1px solid #999;\r\n\t\t\t\t\tbackground: #444;\r\n\t\t\t\t\tcolor: #fff;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinput{\r\n\t\t\t\t\t&::-ms-clear {\r\n\t\t\t\t\t\twidth : 0;\r\n\t\t\t\t\t\theight: 0;\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//styling child elements for sortable columns\r\n\t\t\t&.tabulator-sortable{\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tpadding-right:25px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\t&[aria-sort=\"none\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"asc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowActive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"desc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\t\t\tborder-bottom: none;\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&.tabulator-col-vertical{\r\n\t\t\t\t.tabulator-col-content{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\twriting-mode: vertical-rl;\r\n\t\t\t\t\t\ttext-orientation: mixed;\r\n\r\n\t\t\t\t\t\tdisplay:flex;\r\n\t\t\t\t\t\talign-items:center;\r\n\t\t\t\t\t\tjustify-content:center;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\ttransform: rotate(180deg);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-sortable{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\tpadding-top:20px;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\t\tpadding-bottom:20px;\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.tabulator-arrow{\r\n\t\t\t\t\t\tright:calc(50% - 6px);\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\t.tabulator-frozen{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\tposition: absolute;\r\n\r\n\t\t\t// background-color: inherit;\r\n\r\n\t\t\tz-index: 10;\r\n\r\n\t\t\t&.tabulator-frozen-left{\r\n\t\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-frozen-right{\r\n\t\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\tbackground:darken($headerBackgroundColor, 10%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 10%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\t\t\tborder-bottom:1px solid $headerBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen-rows-holder{\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\t&:empty{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//scrolling element to hold table\r\n\t.tabulator-tableHolder{\r\n\t\tposition:relative;\r\n\t\twidth:100%;\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:auto;\r\n\t\t-webkit-overflow-scrolling: touch;\r\n\r\n\t\t&:focus{\r\n\t\t\toutline: none;\r\n\t\t}\r\n\r\n\t\t//default placeholder element\r\n\t\t.tabulator-placeholder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t&[tabulator-render-mode=\"virtual\"]{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\ttop:0;\r\n\t\t\t\tleft:0;\r\n\t\t\t\theight:100%;\r\n\t\t\t}\r\n\r\n\t\t\twidth:100%;\r\n\r\n\t\t\tspan{\r\n\t\t\t\tdisplay: inline-block;\r\n\r\n\t\t\t\tmargin:0 auto;\r\n\t\t\t\tpadding:10px;\r\n\r\n\t\t\t\tcolor:#eee;\r\n\t\t\t\tfont-weight: bold;\r\n\t\t\t\tfont-size: 20px;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//element to hold table rows\r\n\t\t.tabulator-table{\r\n\t\t\tposition:relative;\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tbackground-color:$rowBackgroundColor;\r\n\t\t\twhite-space: nowrap;\r\n\t\t\toverflow:visible;\r\n\t\t\tcolor:$rowTextColor;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\t&.tabulator-calcs{\r\n\t\t\t\t\tfont-weight: bold;\r\n\t\t\t\t\tbackground:darken($rowAltBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t\t&.tabulator-calcs-top{\r\n\t\t\t\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-calcs-bottom{\r\n\t\t\t\t\t\tborder-top:2px solid $rowBorderColor;\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//column resize handles\r\n\t.tabulator-col-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\ttop:0;\r\n\t\tbottom:0;\r\n\t\twidth:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\tleft:0;\r\n\t\t\tright:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ew-resize;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//footer element\r\n\t.tabulator-footer{\r\n\t\tpadding:5px 10px;\r\n\t\tborder-top:1px solid $footerSeperatorColor;\r\n\t\tbackground-color: $footerBackgroundColor;\r\n\t\ttext-align:right;\r\n\t\tcolor: $footerTextColor;\r\n\t\tfont-weight:bold;\r\n\t\twhite-space:nowrap;\r\n\t\tuser-select:none;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\twidth:calc(100% + 20px);\r\n\t\t\tmargin:-5px -10px 5px -10px;\r\n\r\n\t\t\ttext-align: left;\r\n\r\n\t\t\tbackground:darken($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:darken($footerBackgroundColor, 5%) !important;\r\n\t\t\t\tcolor:$headerTextColor;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-bottom:1px solid $rowBorderColor;\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&:only-child{\r\n\t\t\t\tmargin-bottom:-5px;\r\n\t\t\t\tborder-bottom:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-paginator{\r\n\t\t\tlabel{\r\n\t\t\t\tcolor:#fff;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//page size select element\r\n\t\t.tabulator-page-size{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 5px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-pages{\r\n\t\t\tmargin:0 7px;\r\n\t\t}\r\n\r\n\t\t//pagination button\r\n\t\t.tabulator-page{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 2px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\r\n\t\t\tbackground:rgba(255,255,255,.2);\r\n\r\n\t\t\tcolor: $footerTextColor;\r\n\t\t\tfont-family:inherit;\r\n\t\t\tfont-weight:inherit;\r\n\t\t\tfont-size:inherit;\r\n\r\n\t\t\t&.active{\r\n\t\t\t\tcolor:$footerActiveColor;\r\n\t\t\t}\r\n\r\n\t\t\t&:disabled{\r\n\t\t\t\topacity:.5;\r\n\t\t\t}\r\n\r\n\t\t\t&:not(.disabled){\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground:rgba(0,0,0,.2);\r\n\t\t\t\t\tcolor:#fff;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//holding div that contains loader and covers tabulator element to prevent interaction\r\n\t.tabulator-loader{\r\n\t\tposition:absolute;\r\n\t\tdisplay: flex;\r\n\t\talign-items:center;\r\n\r\n\t\ttop:0;\r\n\t\tleft:0;\r\n\t\tz-index:100;\r\n\r\n\t\theight:100%;\r\n\t\twidth:100%;\r\n\t\tbackground:rgba(0,0,0,.4);\r\n\t\ttext-align:center;\r\n\r\n\t\t//loading message element\r\n\t\t.tabulator-loader-msg{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 auto;\r\n\t\t\tpadding:10px 20px;\r\n\r\n\t\t\tborder-radius:10px;\r\n\r\n\t\t\tbackground:#fff;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:16px;\r\n\r\n\t\t\t//loading message\r\n\t\t\t&.tabulator-loading{\r\n\t\t\t\tborder:4px solid #333;\r\n\t\t\t\tcolor:#000;\r\n\t\t\t}\r\n\r\n\t\t\t//error message\r\n\t\t\t&.tabulator-error{\r\n\t\t\t\tborder:4px solid #D00;\r\n\t\t\t\tcolor:#590000;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n//row element\r\n.tabulator-row{\r\n\tposition: relative;\r\n\tbox-sizing: border-box;\r\n\r\n\tmin-height:$textSize + ($headerMargin * 2);\r\n\tbackground-color: $rowBackgroundColor;\r\n\r\n\t&:nth-child(even){\r\n\t\tbackground-color: $rowAltBackgroundColor;\r\n\t}\r\n\r\n\t&.tabulator-selectable:hover{\r\n\t\tbackground-color:$rowHoverBackground;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-selected{\r\n\t\tbackground-color:$rowSelectedBackground;\r\n\t}\r\n\r\n\t&.tabulator-selected:hover{\r\n\t\tbackground-color:$rowSelectedBackgroundHover;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-moving{\r\n\t\tposition: absolute;\r\n\r\n\t\tborder-top:1px solid  $rowBorderColor;\r\n\t\tborder-bottom:1px solid  $rowBorderColor;\r\n\r\n\t\tpointer-events: none !important;\r\n\t\tz-index:15;\r\n\t}\r\n\r\n\t//row resize handles\r\n\t.tabulator-row-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\tbottom:0;\r\n\t\tleft:0;\r\n\t\theight:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\ttop:0;\r\n\t\t\tbottom:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ns-resize;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-frozen{\r\n\t\tdisplay: inline-block;\r\n\t\tposition: absolute;\r\n\r\n\t\tbackground-color: inherit;\r\n\r\n\t\tz-index: 10;\r\n\r\n\t\t&.tabulator-frozen-left{\r\n\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t&.tabulator-frozen-right{\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-responsive-collapse{\r\n\t\tbox-sizing:border-box;\r\n\r\n\t\tpadding:5px;\r\n\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\t&:empty{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\ttable{\r\n\t\t\tfont-size:$textSize;\r\n\r\n\t\t\ttr{\r\n\t\t\t\ttd{\r\n\t\t\t\t\tposition: relative;\r\n\r\n\t\t\t\t\t&:first-of-type{\r\n\t\t\t\t\t\tpadding-right:10px;\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\r\n\t//cell element\r\n\t.tabulator-cell{\r\n\t\tdisplay:inline-block;\r\n\t\tposition: relative;\r\n\t\tbox-sizing:border-box;\r\n\t\tpadding:4px;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tvertical-align:middle;\r\n\t\twhite-space:nowrap;\r\n\t\toverflow:hidden;\r\n\t\ttext-overflow:ellipsis;\r\n\r\n\r\n\t\t&.tabulator-editing{\r\n\t\t\tborder:1px solid  $editBoxColor;\r\n\t\t\tpadding: 0;\r\n\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-validation-fail{\r\n\t\t\tborder:1px solid $errorColor;\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\r\n\t\t\t\tcolor: $errorColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//hide left resize handle on first column\r\n\t\t&:first-child{\r\n\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//movable row handle\r\n\t\t&.tabulator-row-handle{\r\n\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\t//handle holder\r\n\t\t\t.tabulator-row-handle-box{\r\n\t\t\t\twidth:80%;\r\n\r\n\t\t\t\t//Hamburger element\r\n\t\t\t\t.tabulator-row-handle-bar{\r\n\t\t\t\t\twidth:100%;\r\n\t\t\t\t\theight:3px;\r\n\t\t\t\t\tmargin-top:2px;\r\n\t\t\t\t\tbackground:#666;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-branch{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:9px;\r\n\t\t\twidth:7px;\r\n\r\n\t\t\tmargin-top:-9px;\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control{\r\n\r\n\t\t\tdisplay:inline-flex;\r\n\t\t\tjustify-content:center;\r\n\t\t\talign-items:center;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:11px;\r\n\t\t\twidth:11px;\r\n\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder:1px solid $rowTextColor;\r\n\t\t\tborder-radius:2px;\r\n\t\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\t\toverflow:hidden;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\tcursor:pointer;\r\n\t\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: transparent;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-expand{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-responsive-collapse-toggle{\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\t\t\tjustify-content:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\theight:15px;\r\n\t\t\twidth:15px;\r\n\r\n\t\t\tborder-radius:20px;\r\n\t\t\tbackground:#fff;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:1.1em;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\topacity:.7;\r\n\t\t\t}\r\n\r\n\t\t\t&.open{\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\t\tdisplay:initial;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-open{\r\n\t\t\t\t\tdisplay:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\tdisplay:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-traffic-light{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\theight:14px;\r\n\t\t\twidth:14px;\r\n\r\n\t\t\tborder-radius:14px;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//row grouping element\r\n\t&.tabulator-group{\r\n\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-bottom:1px solid #999;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tborder-top:1px solid #999;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:#ccc;\r\n\t\tfont-weight:bold;\r\n\t\tcolor:#333;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:rgba(0,0,0,.1);\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-visible{\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\tpadding-left:30px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\tpadding-left:50px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\tpadding-left:70px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\tpadding-left:90px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\tpadding-left:110px;\r\n\t\t}\r\n\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:#666;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n.tabulator-edit-select-list{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tmax-height:200px;\r\n\r\n\tbackground:$rowTextColor;\r\n\tborder:1px solid $rowBorderColor;\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-edit-select-list-item{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowBackgroundColor;\r\n\r\n\t\t&.active{\r\n\t\t\tcolor:$editBoxColor;\r\n\t\t\tbackground:$rowAltBackgroundColor;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\r\n\t\t\tcolor:$editBoxColor;\r\n\t\t\tbackground:$rowBackgroundColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-group{\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\tpadding:4px;\r\n\t\tpadding-top:6px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\tfont-weight:bold;\r\n\t}\r\n}\r\n\r\n// Table print styling\r\n\r\n.tabulator-print-fullscreen{\r\n\tposition: absolute;\r\n\ttop:0;\r\n\tbottom:0;\r\n\tleft:0;\r\n\tright:0;\r\n\r\n\tz-index: 10000;\r\n}\r\n\r\nbody.tabulator-print-fullscreen-hide>*:not(.tabulator-print-fullscreen){\r\n\tdisplay:none !important;\r\n}\r\n\r\n.tabulator-print-table{\r\n\tborder-collapse: collapse;\r\n}\r\n\r\n"]}
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/css.old/tabulator_modern.css b/backoffice/vendors/tabulator/css.old/tabulator_modern.css
new file mode 100644 (file)
index 0000000..d4b4968
--- /dev/null
@@ -0,0 +1,832 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+.tabulator {
+  position: relative;
+  border: 1px solid #fff;
+  background-color: #fff;
+  overflow: hidden;
+  font-size: 16px;
+  text-align: left;
+  -ms-transform: translatez(0);
+  transform: translatez(0);
+}
+
+.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableHolder .tabulator-table {
+  min-width: 100%;
+}
+
+.tabulator.tabulator-block-select {
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+
+.tabulator .tabulator-header {
+  position: relative;
+  box-sizing: border-box;
+  width: 100%;
+  border-bottom: 3px solid #3759D7;
+  margin-bottom: 4px;
+  background-color: #fff;
+  color: #3759D7;
+  font-weight: bold;
+  white-space: nowrap;
+  overflow: hidden;
+  -moz-user-select: none;
+  -khtml-user-select: none;
+  -webkit-user-select: none;
+  -o-user-select: none;
+  padding-left: 10px;
+  font-size: 1.1em;
+}
+
+.tabulator .tabulator-header.tabulator-header-hidden {
+  display: none;
+}
+
+.tabulator .tabulator-header .tabulator-col {
+  display: inline-block;
+  position: relative;
+  box-sizing: border-box;
+  border-right: 2px solid #fff;
+  background-color: #fff;
+  text-align: left;
+  vertical-align: bottom;
+  overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-moving {
+  position: absolute;
+  border: 1px solid #3759D7;
+  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-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 #3759D7;
+  padding: 1px;
+  background: #fff;
+  font-size: 1em;
+  color: #3759D7;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {
+  display: inline-block;
+  position: absolute;
+  top: 9px;
+  right: 8px;
+  width: 0;
+  height: 0;
+  border-left: 6px solid transparent;
+  border-right: 6px solid transparent;
+  border-bottom: 6px solid #b7c3f1;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {
+  position: relative;
+  display: -ms-flexbox;
+  display: flex;
+  border-top: 2px solid #3759D7;
+  overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child {
+  margin-right: -1px;
+}
+
+.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev {
+  display: none;
+}
+
+.tabulator .tabulator-header .tabulator-col.ui-sortable-helper {
+  position: absolute;
+  background-color: #e6e6e6 !important;
+  border: 1px solid #fff;
+}
+
+.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-arrow {
+  border-top: none;
+  border-bottom: 6px solid #b7c3f1;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .tabulator-col-content .tabulator-arrow {
+  border-top: none;
+  border-bottom: 6px solid #3759D7;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="desc"] .tabulator-col-content .tabulator-arrow {
+  border-top: 6px solid #3759D7;
+  border-bottom: none;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {
+  -ms-writing-mode: tb-rl;
+      writing-mode: vertical-rl;
+  text-orientation: mixed;
+  display: -ms-flexbox;
+  display: flex;
+  -ms-flex-align: center;
+      align-items: center;
+  -ms-flex-pack: center;
+      justify-content: center;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {
+  -ms-transform: rotate(180deg);
+      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-arrow {
+  right: calc(50% - 6px);
+}
+
+.tabulator .tabulator-header .tabulator-frozen {
+  display: inline-block;
+  position: absolute;
+  z-index: 10;
+}
+
+.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {
+  padding-left: 10px;
+  border-right: 2px solid #fff;
+}
+
+.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {
+  border-left: 2px solid #fff;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder {
+  box-sizing: border-box;
+  min-width: 600%;
+  border-top: 2px solid #3759D7 !important;
+  background: white !important;
+  border-top: 1px solid #fff;
+  border-bottom: 1px solid #fff;
+  overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {
+  padding-left: 0 !important;
+  background: white !important;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
+  display: none;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-cell {
+  background: 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: -ms-flexbox;
+  display: flex;
+  -ms-flex-align: center;
+      align-items: center;
+  width: 100%;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode="virtual"] {
+  position: absolute;
+  top: 0;
+  left: 0;
+  height: 100%;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-placeholder span {
+  display: inline-block;
+  margin: 0 auto;
+  padding: 10px;
+  color: #3759D7;
+  font-weight: bold;
+  font-size: 20px;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table {
+  position: relative;
+  display: inline-block;
+  background-color: #f3f3f3;
+  white-space: nowrap;
+  overflow: visible;
+  color: #333;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs {
+  font-weight: bold;
+  background: #f2f2f2 !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {
+  border-bottom: 2px solid #3759D7;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {
+  border-top: 2px solid #3759D7;
+}
+
+.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-footer {
+  padding: 5px 10px;
+  border-top: 1px solid #999;
+  background-color: #fff;
+  text-align: right;
+  color: #3759D7;
+  font-weight: bold;
+  white-space: nowrap;
+  -ms-user-select: none;
+      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 -10px;
+  text-align: left;
+  background: white !important;
+  border-top: 3px solid #3759D7 !important;
+  border-bottom: 2px solid #3759D7 !important;
+  border-bottom: 1px solid #fff;
+  border-top: 1px solid #fff;
+  overflow: hidden;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {
+  background: white !important;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
+  display: none;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell {
+  background: none;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder:only-child {
+  margin-bottom: -5px;
+  border-bottom: none;
+  border-bottom: none !important;
+}
+
+.tabulator .tabulator-footer .tabulator-paginator {
+  color: #3759D7;
+  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: rgba(255, 255, 255, 0.2);
+}
+
+.tabulator .tabulator-footer .tabulator-page.active {
+  color: #3759D7;
+}
+
+.tabulator .tabulator-footer .tabulator-page:disabled {
+  opacity: .5;
+}
+
+.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {
+  cursor: pointer;
+  background: rgba(0, 0, 0, 0.2);
+  color: #fff;
+}
+
+.tabulator .tabulator-loader {
+  position: absolute;
+  display: -ms-flexbox;
+  display: flex;
+  -ms-flex-align: center;
+      align-items: center;
+  top: 0;
+  left: 0;
+  z-index: 100;
+  height: 100%;
+  width: 100%;
+  background: rgba(0, 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: bold;
+  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;
+  box-sizing: border-box;
+  min-height: 24px;
+  background-color: #3759D7;
+  padding-left: 10px !important;
+  margin-bottom: 2px;
+}
+
+.tabulator-row:nth-child(even) {
+  background-color: #627ce0;
+}
+
+.tabulator-row:nth-child(even) .tabulator-cell {
+  background-color: #fff;
+}
+
+.tabulator-row.tabulator-selectable:hover {
+  cursor: pointer;
+}
+
+.tabulator-row.tabulator-selectable:hover .tabulator-cell {
+  background-color: #bbb;
+}
+
+.tabulator-row.tabulator-selected .tabulator-cell {
+  background-color: #9ABCEA;
+}
+
+.tabulator-row.tabulator-selected:hover .tabulator-cell {
+  background-color: #769BCC;
+  cursor: pointer;
+}
+
+.tabulator-row.tabulator-moving {
+  position: absolute;
+  border-top: 1px solid #fff;
+  border-bottom: 1px solid #fff;
+  pointer-events: none !important;
+  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 {
+  padding-left: 10px;
+  border-right: 2px solid #fff;
+}
+
+.tabulator-row .tabulator-frozen.tabulator-frozen-right {
+  border-left: 2px solid #fff;
+}
+
+.tabulator-row .tabulator-responsive-collapse {
+  box-sizing: border-box;
+  padding: 5px;
+  border-top: 1px solid #fff;
+  border-bottom: 1px solid #fff;
+}
+
+.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: 6px 4px;
+  border-right: 2px solid #fff;
+  vertical-align: middle;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  background-color: #f3f3f3;
+}
+
+.tabulator-row .tabulator-cell.tabulator-editing {
+  border: 1px solid #1D68CD;
+  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 #dd0000;
+}
+
+.tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {
+  border: 1px;
+  background: transparent;
+  color: #dd0000;
+}
+
+.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev {
+  display: none;
+}
+
+.tabulator-row .tabulator-cell.tabulator-row-handle {
+  display: -ms-inline-flexbox;
+  display: inline-flex;
+  -ms-flex-align: center;
+      align-items: 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 #fff;
+  border-bottom: 2px solid #fff;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control {
+  display: -ms-inline-flexbox;
+  display: inline-flex;
+  -ms-flex-pack: center;
+      justify-content: center;
+  -ms-flex-align: 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, 0.1);
+  overflow: hidden;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {
+  cursor: pointer;
+  background: rgba(0, 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: -ms-inline-flexbox;
+  display: inline-flex;
+  -ms-flex-align: center;
+      align-items: center;
+  -ms-flex-pack: 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: #f3f3f3;
+  font-weight: bold;
+  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 {
+  display: none;
+}
+
+.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: 2px solid #3759D7;
+  border-top: 2px solid #3759D7;
+  padding: 5px;
+  padding-left: 10px;
+  background: #8ca0e8;
+  font-weight: bold;
+  color: fff;
+  margin-bottom: 2px;
+  min-width: 100%;
+}
+
+.tabulator-row.tabulator-group:hover {
+  cursor: pointer;
+  background-color: rgba(0, 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 #3759D7;
+  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-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 #3759D7;
+  vertical-align: middle;
+}
+
+.tabulator-row.tabulator-group span {
+  margin-left: 10px;
+  color: #3759D7;
+}
+
+.tabulator-edit-select-list {
+  position: absolute;
+  display: inline-block;
+  box-sizing: border-box;
+  max-height: 200px;
+  background: #f3f3f3;
+  border: 1px solid #1D68CD;
+  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: #333;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-item.active {
+  color: #f3f3f3;
+  background: #1D68CD;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-item:hover {
+  cursor: pointer;
+  color: #f3f3f3;
+  background: #1D68CD;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-group {
+  border-bottom: 1px solid #fff;
+  padding: 4px;
+  padding-top: 6px;
+  color: #333;
+  font-weight: bold;
+}
+
+.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;
+}
diff --git a/backoffice/vendors/tabulator/css.old/tabulator_modern.min.css b/backoffice/vendors/tabulator/css.old/tabulator_modern.min.css
new file mode 100644 (file)
index 0000000..ff419a0
--- /dev/null
@@ -0,0 +1,3 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+.tabulator{position:relative;border:1px solid #fff;background-color:#fff;overflow:hidden;font-size:16px;text-align:left;transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator.tabulator-block-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:3px solid #3759d7;margin-bottom:4px;background-color:#fff;color:#3759d7;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;padding-left:10px;font-size:1.1em}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;border-right:2px solid #fff;background-color:#fff;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #3759d7;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-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 #3759d7;padding:1px;background:#fff;font-size:1em;color:#3759d7}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{display:inline-block;position:absolute;top:9px;right:8px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #b7c3f1}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:-ms-flexbox;display:flex;border-top:2px solid #3759d7;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child{margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col.ui-sortable-helper{position:absolute;background-color:#e6e6e6!important;border:1px solid #fff}.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-arrow{border-top:none;border-bottom:6px solid #b7c3f1}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #3759d7}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-arrow{border-top:6px solid #3759d7;border-bottom:none}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack: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-arrow{right:calc(50% - 6px)}.tabulator .tabulator-header .tabulator-frozen{display:inline-block;position:absolute;z-index:10}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{padding-left:10px;border-right:2px solid #fff}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #fff}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;min-width:600%;border-top:2px solid #3759d7!important;background:#fff!important;border-top:1px solid #fff;border-bottom:1px solid #fff;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{padding-left:0!important;background:#fff!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-cell{background: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:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{position:absolute;top:0;left:0;height:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#3759d7;font-weight:700;font-size:20px}.tabulator .tabulator-tableHolder .tabulator-table{position:relative;display:inline-block;background-color:#f3f3f3;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#f2f2f2!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #3759d7}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #3759d7}.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-footer{padding:5px 10px;border-top:1px solid #999;background-color:#fff;text-align:right;color:#3759d7;font-weight:700;white-space:nowrap;-ms-user-select:none;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:#fff!important;border-top:3px solid #3759d7!important;border-bottom:2px solid #3759d7!important;border-bottom:1px solid #fff;border-top:1px solid #fff;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell{background:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none;border-bottom:none!important}.tabulator .tabulator-footer .tabulator-paginator{color:#3759d7;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:#3759d7}.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-loader{position:absolute;display:-ms-flexbox;display:flex;-ms-flex-align:center;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:#3759d7;padding-left:10px!important;margin-bottom:2px}.tabulator-row:nth-child(2n){background-color:#627ce0}.tabulator-row:nth-child(2n) .tabulator-cell{background-color:#fff}.tabulator-row.tabulator-selectable:hover{cursor:pointer}.tabulator-row.tabulator-selectable:hover .tabulator-cell{background-color:#bbb}.tabulator-row.tabulator-selected .tabulator-cell{background-color:#9abcea}.tabulator-row.tabulator-selected:hover .tabulator-cell{background-color:#769bcc;cursor:pointer}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #fff;border-bottom:1px solid #fff;pointer-events:none!important;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{padding-left:10px;border-right:2px solid #fff}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #fff}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #fff;border-bottom:1px solid #fff}.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:6px 4px;border-right:2px solid #fff;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background-color:#f3f3f3}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;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:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items: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 #fff;border-bottom:2px solid #fff}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align: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:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack: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:#f3f3f3;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:2px solid #3759d7;border-top:2px solid #3759d7;padding:5px;padding-left:10px;background:#8ca0e8;font-weight:700;color:fff;margin-bottom:2px;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 #3759d7;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-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 #3759d7;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#3759d7}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#f3f3f3;border:1px solid #1d68cd;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:#333}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#f3f3f3;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:#f3f3f3;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #fff;padding:4px;padding-top:6px;color:#333;font-weight:700}.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}
+/*# sourceMappingURL=tabulator_modern.min.css.map */
diff --git a/backoffice/vendors/tabulator/css.old/tabulator_modern.min.css.map b/backoffice/vendors/tabulator/css.old/tabulator_modern.min.css.map
new file mode 100644 (file)
index 0000000..943ce96
--- /dev/null
@@ -0,0 +1 @@
+{"version":3,"sources":["tabulator_modern.scss"],"names":[],"mappings":"AA+CA,WACC,kBAAkB,AAClB,sBA1CgB,AA2ChB,sBA5CqB,AA6CrB,gBAAe,AACf,eA5Ca,AA6Cb,gBAAgB,AAMhB,uBAAwB,CA+gBxB,AA3hBD,iFAiBI,cAAc,CACd,AAlBJ,kCAuBE,yBAAiB,AAAjB,sBAAiB,AAAjB,qBAAiB,AAAjB,gBAAiB,CACjB,AAxBF,6BA4BE,kBAAiB,AACjB,sBAAsB,AAEtB,WAAU,AAEV,gCA7Ee,AA8Ef,kBAAiB,AACjB,sBAvEyB,AAwEzB,cAhFe,AAiFf,gBAAgB,AAEhB,mBAAmB,AACnB,gBAAe,AAEf,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,oBAAoB,AAEpB,kBArDe,AAuDf,eAAgB,CAgQhB,AAjTF,qDAoDG,YAAY,CACZ,AArDH,4CAyDG,qBAAoB,AACpB,kBAAiB,AACjB,sBAAqB,AACrB,4BA9FoB,AA+FpB,sBAjGwB,AAkGxB,gBAAe,AACf,sBAAsB,AACtB,eAAgB,CAyLhB,AAzPH,6DAmEI,kBAAkB,AAClB,yBAhHa,AAiHb,mBAA8C,AAC9C,mBAAoB,CACpB,AAvEJ,mEA2EI,sBAAqB,AACrB,kBAAkB,AAClB,WAAW,CAyCX,AAtHJ,wFAiFK,sBAAqB,AACrB,WAAW,AAEX,mBAAmB,AACnB,gBAAgB,AAChB,uBAAuB,AACvB,qBAAqB,CAgBrB,AAvGL,gHA2FM,sBAAsB,AACtB,WAAW,AAEX,yBA1IW,AA4IX,YAAW,AAEX,gBAAgB,AAEhB,cAAc,AACd,aAjJW,CAkJX,AAtGN,oFA2GK,qBAAqB,AACrB,kBAAkB,AAClB,QAAO,AACP,UAAS,AACT,QAAQ,AACR,SAAS,AACT,kCAAkC,AAClC,mCAAmC,AACnC,+BA/IqC,CAgJrC,AApHL,0FA6HK,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AAEb,6BA5KY,AA6KZ,eAAgB,CAKhB,AAtIL,oHAoIM,iBAAiB,CACjB,AArIN,0FA6IK,YAAa,CACb,AA9IL,+DAmJI,kBAAkB,AAClB,mCAAgE,AAChE,qBAvLmB,CAwLnB,AAtJJ,qEA0JI,kBAAkB,AAClB,sBAAsB,AACtB,eAAc,AACd,WAAU,AACV,iBAAkB,CAiBlB,AA/KJ,8EAkKK,qBAAsB,CACtB,AAnKL,yEAsKK,cAAe,CACf,AAvKL,sFA2KM,QAAS,AACT,QAAS,CACT,AA7KN,oFAoLK,kBAAkB,CAClB,AArLL,qEAwLK,eAAc,AACd,wBAAoD,CACpD,AA1LL,uHA+LM,gBAAgB,AAChB,+BA5NoC,CA6NpC,AAjMN,sHAsMM,gBAAgB,AAChB,+BAnPW,CAoPX,AAxMN,uHA6MM,6BAzPW,AA0PX,kBAAmB,CACnB,AA/MN,+GAsNM,uBAAyB,AAAzB,yBAAyB,AACzB,uBAAuB,AAEvB,oBAAY,AAAZ,aAAY,AACZ,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,sBAAsB,CACtB,AA5NN,oHAiOM,wBAAyB,CACzB,AAlON,2GAuOM,gBAAe,AACf,gBAAgB,CAChB,AAzON,uIA6OO,gBAAe,AACf,mBAAmB,CACnB,AA/OP,uGAoPM,qBAAqB,CACrB,AArPN,+CA4PG,qBAAqB,AACrB,kBAAkB,AAIlB,UAAW,CAWX,AA5QH,qEAoQI,kBA1Qa,AA4Qb,2BA7RgB,CA8RhB,AAvQJ,sEA0QI,0BAjSgB,CAkShB,AA3QJ,qDA+QG,sBAAqB,AACrB,eAAc,AAEd,uCAAqD,AAErD,0BAAyD,AAgBzD,0BA3TiB,AA4TjB,6BAvUoB,AAyUpB,eAAgB,CAChB,AAxSH,oEAuRI,yBAA0B,AAE1B,yBAAyD,CASzD,AAlSJ,iGA4RK,YAAa,CACb,AA7RL,oFAgSK,eAAe,CACf,AAjSL,2DA2SG,cAAc,CAKd,AAhTH,iEA8SI,YAAa,CACb,AA/SJ,kCAqTE,kBAAiB,AACjB,WAAU,AACV,mBAAmB,AACnB,cAAa,AACb,gCAAiC,CAyDjC,AAlXF,wCA4TG,YAAa,CACb,AA7TH,yDAiUG,sBAAqB,AACrB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AASlB,UAAU,CAYV,AAxVH,wFAsUI,kBAAkB,AAClB,MAAK,AACL,OAAM,AACN,WAAW,CACX,AA1UJ,8DA+UI,qBAAqB,AAErB,cAAa,AACb,aAAY,AAEZ,cAhYa,AAiYb,gBAAiB,AACjB,cAAe,CACf,AAvVJ,mDA4VG,kBAAiB,AACjB,qBAAoB,AACpB,yBAvXwB,AAwXxB,mBAAmB,AACnB,iBAAgB,AAChB,UAvXe,CAuYf,AAjXH,kFAqWK,gBAAiB,AACjB,4BAAwD,CASxD,AA/WL,sGAyWM,+BArZW,CAsZX,AA1WN,yGA6WM,4BAzZW,CA0ZX,AA9WN,wCAuXE,kBAAiB,AACjB,QAAO,AACP,MAAK,AACL,SAAQ,AACR,SAAS,CAUT,AArYF,6CA8XG,OAAM,AACN,UAAU,CACV,AAhYH,8CAmYG,gBAAgB,CAChB,AApYH,6BA0YE,iBAAgB,AAChB,0BApZwB,AAqZxB,sBAxZyB,AAyZzB,iBAAgB,AAChB,cA1be,AA2bf,gBAAgB,AAChB,mBAAkB,AAClB,qBAAgB,AAAhB,iBAAgB,AAEhB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CA0FpB,AAhfF,qDAyZG,sBAAqB,AACrB,wBAAuB,AACvB,sBAA2B,AAE3B,gBAAgB,AAEhB,0BAAyD,AAEzD,uCAAqD,AACrD,0CAAwD,AAcxD,6BAvciB,AAwcjB,0BAxciB,AA0cjB,eAAgB,CAOhB,AA1bH,oEAqaI,yBAAyD,CASzD,AA9aJ,iGAwaK,YAAa,CACb,AAzaL,oFA4aK,eAAe,CACf,AA7aL,gEAsbI,mBAAkB,AAClB,mBAAkB,AAClB,4BAA6B,CAC7B,AAzbJ,kDA8bG,cA1ec,AA2ed,oBAAmB,AACnB,oBAAmB,AACnB,iBAAiB,CACjB,AAlcH,kDAscG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBArdoB,AAsdpB,iBAAiB,CACjB,AA7cH,8CAidG,YAAY,CACZ,AAldH,6CAsdG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBAreoB,AAsepB,kBAAiB,AAEjB,6BAA+B,CAiB/B,AA/eH,oDAieI,aA7gBa,CA8gBb,AAleJ,sDAqeI,UAAU,CACV,AAteJ,kEA0eK,eAAc,AACd,0BAAyB,AACzB,UAAU,CACV,AA7eL,6BAofE,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AAElB,MAAK,AACL,OAAM,AACN,YAAW,AAEX,YAAW,AACX,WAAU,AACV,0BAAyB,AACzB,iBAAiB,CA2BjB,AA1hBF,mDAmgBG,qBAAoB,AAEpB,cAAa,AACb,kBAAiB,AAEjB,mBAAkB,AAElB,gBAAe,AACf,gBAAgB,AAChB,cAAc,CAad,AAzhBH,qEAghBI,sBAAqB,AACrB,UAAU,CACV,AAlhBJ,mEAshBI,sBAAqB,AACrB,aAAa,CACb,AAMJ,eACC,kBAAkB,AAGlB,sBAAsB,AACtB,gBAA0C,AAE1C,yBAjlBgB,AAmlBhB,4BAAqC,AAErC,iBAAkB,CAqXlB,AAhYD,6BAcE,wBAhjBqC,CAqjBrC,AAnBF,6CAiBG,qBAvkBwB,CAwkBxB,AAlBH,0CAsBE,cAAe,CAKf,AA3BF,0DAyBG,qBA5kBqB,CA6kBrB,AA1BH,kDA+BG,wBAhlB4B,CAilB5B,AAhCH,wDAqCG,yBArlBiC,AAslBjC,cAAe,CACf,AAvCH,gCA2CE,kBAAkB,AAElB,0BAlmBkB,AAmmBlB,6BAnmBkB,AAqmBlB,8BAA+B,AAC/B,UAAU,CACV,AAlDF,4CAsDE,kBAAiB,AACjB,QAAO,AACP,SAAQ,AACR,OAAM,AACN,UAAU,CAUV,AApEF,iDA6DG,MAAK,AACL,WAAW,CACX,AA/DH,kDAkEG,gBAAgB,CAChB,AAnEH,iCAuEE,qBAAqB,AACrB,kBAAkB,AAElB,yBAAyB,AAEzB,UAAW,CAUX,AAtFF,uDA+EG,kBAnnBc,AAonBd,2BAroBiB,CAsoBjB,AAjFH,wDAoFG,0BAzoBiB,CA0oBjB,AArFH,8CAyFE,sBAAqB,AAErB,YAAW,AAEX,0BAlpBkB,AAmpBlB,4BAnpBkB,CAsqBlB,AAjHF,oDAiGG,YAAY,CACZ,AAlGH,oDAqGG,cA1qBW,CAqrBX,AAhHH,0DAyGK,iBAAkB,CAKlB,AA9GL,wEA4GM,kBAAkB,CAClB,AA7GN,+BAqHE,qBAAoB,AACpB,kBAAkB,AAClB,sBAAqB,AACrB,gBAAe,AACf,4BA9qBkB,AA+qBlB,sBAAqB,AACrB,mBAAkB,AAClB,gBAAe,AACf,uBAAsB,AAEtB,wBAtrByB,CA+2BzB,AAxTF,iDAkIG,yBAhrBkB,AAirBlB,SAAU,CAMV,AAzIH,+GAsII,WAAU,AACV,sBAAsB,CACtB,AAxIJ,yDA4IG,qBAzrBgB,CAgsBhB,AAnJH,+HA8II,WAAU,AACV,uBAAsB,AAEtB,UA9rBe,CA+rBf,AAlJJ,6EAwJI,YAAa,CACb,AAzJJ,oDA+JG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAElB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAcpB,AAnLH,8EAyKI,SAAS,CAST,AAlLJ,wGA6KK,WAAU,AACV,WAAU,AACV,eAAc,AACd,eAAe,CACf,AAjLL,2DAsLG,qBAAoB,AACpB,sBAAqB,AAErB,WAAU,AACV,UAAS,AAET,gBAAe,AACf,iBAAgB,AAEhB,8BAA6B,AAE7B,2BAtvBiB,AAuvBjB,4BAvvBiB,CAwvBjB,AAnMH,4DAuMG,2BAAmB,AAAnB,oBAAmB,AACnB,qBAAsB,AAAtB,uBAAsB,AACtB,sBAAkB,AAAlB,mBAAkB,AAClB,sBAAqB,AAErB,YAAW,AACX,WAAU,AAEV,iBAAgB,AAEhB,sBArwBe,AAswBf,kBAAiB,AACjB,0BAA4B,AAE5B,eAAe,CAmDf,AAxQH,kEAwNI,eAAc,AACd,yBAA4B,CAC5B,AA1NJ,kGA6NI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,sBAAuB,CAavB,AAhPJ,wGAsOK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAlyBa,CAmyBb,AA/OL,gGAmPI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,eA7yBc,CA0zBd,AAtQJ,sGA4PK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAxzBa,CAyzBb,AArQL,qEA2QG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,uBAAsB,AAEtB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,oBAAoB,AAEpB,YAAW,AACX,WAAU,AAEV,mBAAkB,AAClB,gBAAe,AAEf,cAj1BwB,AAk1BxB,gBAAgB,AAChB,eAAe,CAmBf,AA/SH,2EA+RI,UAAU,CACV,AAhSJ,sHAoSK,eAAe,CACf,AArSL,sOA6SI,YAAY,CACZ,AA9SJ,wDAkTG,qBAAqB,AACrB,YAAW,AACX,WAAU,AAEV,kBAAkB,CAClB,AAvTH,+BA6TE,sBAAqB,AACrB,gCAx4Be,AAy4Bf,6BAz4Be,AA04Bf,YAAW,AACX,kBAAiB,AACjB,mBAAiC,AACjC,gBAAgB,AAChB,UAAS,AACT,kBAAkB,AAElB,cAAe,CAwDf,AA/XF,qCA0UG,eAAc,AACd,+BAA+B,CAC/B,AA5UH,wEAiVI,kBAAiB,AACjB,kCAAkC,AAClC,mCAAmC,AACnC,6BA95Ba,AA+5Bb,eAAgB,CAChB,AAtVJ,uDA0VG,iBAAiB,CACjB,AA3VH,uDA8VG,iBAAiB,CACjB,AA/VH,uDAkWG,iBAAiB,CACjB,AAnWH,uDAsWG,iBAAiB,CACjB,AAvWH,uDA0WG,kBAAkB,CAClB,AA3WH,gDAgXG,qBAAqB,AACrB,QAAQ,AACR,SAAS,AACT,kBAAiB,AACjB,iCAAiC,AACjC,oCAAoC,AACpC,eAAe,AACf,8BAj8Bc,AAk8Bd,qBAAqB,CACrB,AAzXH,oCA4XG,iBAAgB,AAChB,aAv8Bc,CAw8Bd,AAIH,4BACC,kBAAkB,AAClB,qBAAoB,AACpB,sBAAqB,AAErB,iBAAgB,AAEhB,mBAh8B0B,AAi8B1B,yBAx7BoB,AA07BpB,eAj9Ba,AAm9Bb,gBAAe,AACf,iCAAiC,AAEjC,aAAc,CA6Bd,AA5CD,6DAkBE,YAAW,AAEX,UA18BgB,CAu9BhB,AAjCF,oEAuBG,cAh9BwB,AAi9BxB,kBAx8BkB,CAy8BlB,AAzBH,mEA4BG,eAAc,AAEd,cAv9BwB,AAw9BxB,kBA/8BkB,CAg9BlB,AAhCH,8DAoCE,6BA39BkB,AA69BlB,YAAW,AACX,gBAAe,AAEf,WA/9BgB,AAg+BhB,eAAgB,CAChB,AAKF,4BACC,kBAAkB,AAClB,MAAK,AACL,SAAQ,AACR,OAAM,AACN,QAAO,AAEP,aAAc,CACd,AAED,uEACC,sBAAuB,CACvB,AAED,uBACC,wBAAyB,CACzB","file":"tabulator_modern.min.css","sourcesContent":["/* Tabulator v4.4.3 (c) Oliver Folkerd */\n\n\r\n$primary: #3759D7 !default; //the base text color from which the rest of the theme derives\r\n\r\n//Main Theme Variables\r\n$backgroundColor: #fff !default; //background color of tabulator\r\n$borderColor:#fff !default; //border to tabulator\r\n$textSize:16px !default; //table text size\r\n\r\n//header themeing\r\n$headerBackgroundColor:#fff !default; //border to tabulator\r\n$headerTextColor:$primary !default; //header text colour\r\n$headerBorderColor:#fff !default;  //header border color\r\n$headerSeperatorColor:$primary !default; //header bottom seperator color\r\n$headerMargin:4px !default; //padding round header\r\n\r\n//column header arrows\r\n$sortArrowActive: $primary !default;\r\n$sortArrowInactive: lighten($primary, 30%) !default;\r\n\r\n//row themeing\r\n$rowBackgroundColor:#f3f3f3 !default; //table row background color\r\n$rowAltBackgroundColor:#fff !default; //table row background color\r\n$rowBorderColor:#fff !default; //table border color\r\n$rowTextColor:#333 !default; //table text color\r\n$rowHoverBackground:#bbb !default; //row background color on hover\r\n\r\n$rowSelectedBackground: #9ABCEA !default; //row background color when selected\r\n$rowSelectedBackgroundHover: #769BCC !default;//row background color when selected and hovered\r\n\r\n$editBoxColor:#1D68CD !default; //border color for edit boxes\r\n$errorColor:#dd0000 !default; //error indication\r\n\r\n//footer themeing\r\n$footerBackgroundColor:#fff !default; //border to tabulator\r\n$footerTextColor:$primary !default; //footer text colour\r\n$footerBorderColor:#aaa !default; //footer border color\r\n$footerSeperatorColor:#999 !default; //footer bottom seperator color\r\n$footerActiveColor:$primary !default; //footer bottom active text color\r\n\r\n$handleWidth:10px !default; //width of the row handle\r\n$handleColor: $primary !default; //color for odd numbered rows\r\n$handleColorAlt: lighten($primary, 10%) !default; //color for even numbered rows\r\n\r\n\r\n//Tabulator Containing Element\r\n.tabulator{\r\n\tposition: relative;\r\n\tborder: 1px solid $borderColor;\r\n\tbackground-color: $backgroundColor;\r\n\toverflow:hidden;\r\n\tfont-size:$textSize;\r\n\ttext-align: left;\r\n\r\n\t-webkit-transform: translatez(0);\r\n\t-moz-transform: translatez(0);\r\n\t-ms-transform: translatez(0);\r\n\t-o-transform: translatez(0);\r\n\ttransform: translatez(0);\r\n\r\n\t&[tabulator-layout=\"fitDataFill\"]{\r\n\t\t.tabulator-tableHolder{\r\n\t\t\t.tabulator-table{\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t&.tabulator-block-select{\r\n\t\tuser-select: none;\r\n\t}\r\n\r\n\t//column header containing element\r\n\t.tabulator-header{\r\n\t\tposition:relative;\r\n\t\tbox-sizing: border-box;\r\n\r\n\t\twidth:100%;\r\n\r\n\t\tborder-bottom:3px solid $headerSeperatorColor;\r\n\t\tmargin-bottom:4px;\r\n\t\tbackground-color: $headerBackgroundColor;\r\n\t\tcolor: $headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:hidden;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\tpadding-left:$handleWidth;\r\n\r\n\t\tfont-size: 1.1em;\r\n\r\n\t\t&.tabulator-header-hidden{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\t//individual column header element\r\n\t\t.tabulator-col{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition:relative;\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tborder-right:2px solid $headerBorderColor;\r\n\t\t\tbackground-color: $headerBackgroundColor;\r\n\t\t\ttext-align:left;\r\n\t\t\tvertical-align: bottom;\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&.tabulator-moving{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tborder:1px solid  $headerSeperatorColor;\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 10%);\r\n\t\t\t\tpointer-events: none;\r\n\t\t\t}\r\n\r\n\t\t\t//hold content of column header\r\n\t\t\t.tabulator-col-content{\r\n\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tpadding:4px;\r\n\r\n\t\t\t\t//hold title of column header\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\twhite-space: nowrap;\r\n\t\t\t\t\toverflow: hidden;\r\n\t\t\t\t\ttext-overflow: ellipsis;\r\n\t\t\t\t\tvertical-align:bottom;\r\n\r\n\t\t\t\t\t//element to hold title editor\r\n\t\t\t\t\t.tabulator-title-editor{\r\n\t\t\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\t\tborder:1px solid $primary;\r\n\r\n\t\t\t\t\t\tpadding:1px;\r\n\r\n\t\t\t\t\t\tbackground: #fff;\r\n\r\n\t\t\t\t\t\tfont-size: 1em;\r\n\t\t\t\t\t\tcolor: $primary;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//column sorter arrow\r\n\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\tdisplay: inline-block;\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\ttop:9px;\r\n\t\t\t\t\tright:8px;\r\n\t\t\t\t\twidth: 0;\r\n\t\t\t\t\theight: 0;\r\n\t\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t//complex header column group\r\n\t\t\t&.tabulator-col-group{\r\n\r\n\t\t\t\t//gelement to hold sub columns in column group\r\n\t\t\t\t.tabulator-col-group-cols{\r\n\t\t\t\t\tposition:relative;\r\n\t\t\t\t\tdisplay: flex;\r\n\r\n\t\t\t\t\tborder-top:2px solid $headerSeperatorColor;\r\n\t\t\t\t\toverflow: hidden;\r\n\r\n\t\t\t\t\t.tabulator-col:last-child{\r\n\t\t\t\t\t\tmargin-right:-1px;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\t//hide left resize handle on first column\r\n\t\t\t&:first-child{\r\n\t\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//placeholder element for sortable columns\r\n\t\t\t&.ui-sortable-helper{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tbackground-color: darken($headerBackgroundColor, 10%) !important;\r\n\t\t\t\tborder:1px solid $headerBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t//header filter containing element\r\n\t\t\t.tabulator-header-filter{\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\tmargin-top:2px;\r\n\t\t\t\twidth:100%;\r\n\t\t\t\ttext-align: center;\r\n\r\n\t\t\t\t//styling adjustment for inbuilt editors\r\n\t\t\t\ttextarea{\r\n\t\t\t\t\theight:auto !important;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsvg{\r\n\t\t\t\t\tmargin-top: 3px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinput{\r\n\t\t\t\t\t&::-ms-clear {\r\n\t\t\t\t\t\twidth : 0;\r\n\t\t\t\t\t\theight: 0;\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//styling child elements for sortable columns\r\n\t\t\t&.tabulator-sortable{\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tpadding-right:25px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\t&[aria-sort=\"none\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"asc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowActive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"desc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\t\t\tborder-bottom: none;\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&.tabulator-col-vertical{\r\n\t\t\t\t.tabulator-col-content{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\twriting-mode: vertical-rl;\r\n\t\t\t\t\t\ttext-orientation: mixed;\r\n\r\n\t\t\t\t\t\tdisplay:flex;\r\n\t\t\t\t\t\talign-items:center;\r\n\t\t\t\t\t\tjustify-content:center;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\ttransform: rotate(180deg);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-sortable{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\tpadding-top:20px;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\t\tpadding-bottom:20px;\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.tabulator-arrow{\r\n\t\t\t\t\t\tright:calc(50% - 6px);\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\t.tabulator-frozen{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\tposition: absolute;\r\n\r\n\t\t\t// background-color: inherit;\r\n\r\n\t\t\tz-index: 10;\r\n\r\n\t\t\t&.tabulator-frozen-left{\r\n\t\t\t\tpadding-left: $handleWidth;\r\n\r\n\t\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-frozen-right{\r\n\t\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\tborder-top:2px solid $headerSeperatorColor !important;\r\n\r\n\t\t\tbackground:lighten($headerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tpadding-left: 0 !important;\r\n\r\n\t\t\t\tbackground:lighten($headerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-cell{\r\n\t\t\t\t\tbackground:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\t\t\tborder-bottom:1px solid $headerBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen-rows-holder{\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\t&:empty{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//scrolling element to hold table\r\n\t.tabulator-tableHolder{\r\n\t\tposition:relative;\r\n\t\twidth:100%;\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:auto;\r\n\t\t-webkit-overflow-scrolling: touch;\r\n\r\n\t\t&:focus{\r\n\t\t\toutline: none;\r\n\t\t}\r\n\r\n\t\t//default placeholder element\r\n\t\t.tabulator-placeholder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t&[tabulator-render-mode=\"virtual\"]{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\ttop:0;\r\n\t\t\t\tleft:0;\r\n\t\t\t\theight:100%;\r\n\t\t\t}\r\n\r\n\t\t\twidth:100%;\r\n\r\n\t\t\tspan{\r\n\t\t\t\tdisplay: inline-block;\r\n\r\n\t\t\t\tmargin:0 auto;\r\n\t\t\t\tpadding:10px;\r\n\r\n\t\t\t\tcolor:$primary;\r\n\t\t\t\tfont-weight: bold;\r\n\t\t\t\tfont-size: 20px;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//element to hold table rows\r\n\t\t.tabulator-table{\r\n\t\t\tposition:relative;\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tbackground-color:$rowBackgroundColor;\r\n\t\t\twhite-space: nowrap;\r\n\t\t\toverflow:visible;\r\n\t\t\tcolor:$rowTextColor;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\t&.tabulator-calcs{\r\n\t\t\t\t\tfont-weight: bold;\r\n\t\t\t\t\tbackground:darken($rowAltBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t\t&.tabulator-calcs-top{\r\n\t\t\t\t\t\tborder-bottom:2px solid $headerSeperatorColor;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-calcs-bottom{\r\n\t\t\t\t\t\tborder-top:2px solid $headerSeperatorColor;\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\r\n\t//column resize handles\r\n\t.tabulator-col-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\ttop:0;\r\n\t\tbottom:0;\r\n\t\twidth:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\tleft:0;\r\n\t\t\tright:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ew-resize;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//footer element\r\n\t.tabulator-footer{\r\n\t\tpadding:5px 10px;\r\n\t\tborder-top:1px solid $footerSeperatorColor;\r\n\t\tbackground-color: $footerBackgroundColor;\r\n\t\ttext-align:right;\r\n\t\tcolor: $footerTextColor;\r\n\t\tfont-weight:bold;\r\n\t\twhite-space:nowrap;\r\n\t\tuser-select:none;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\twidth:calc(100% + 20px);\r\n\t\t\tmargin:-5px -10px 5px -10px;\r\n\r\n\t\t\ttext-align: left;\r\n\r\n\t\t\tbackground:lighten($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\tborder-top:3px solid $headerSeperatorColor !important;\r\n\t\t\tborder-bottom:2px solid $headerSeperatorColor !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:lighten($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-cell{\r\n\t\t\t\t\tbackground:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-bottom:1px solid $rowBorderColor;\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&:only-child{\r\n\t\t\t\tmargin-bottom:-5px;\r\n\t\t\t\tborder-bottom:none;\r\n\t\t\t\tborder-bottom:none !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-paginator{\r\n\t\t\tcolor: $footerTextColor;\r\n\t\t\tfont-family:inherit;\r\n\t\t\tfont-weight:inherit;\r\n\t\t\tfont-size:inherit;\r\n\t\t}\r\n\r\n\t\t//page size select element\r\n\t\t.tabulator-page-size{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 5px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-pages{\r\n\t\t\tmargin:0 7px;\r\n\t\t}\r\n\r\n\t\t//pagination button\r\n\t\t.tabulator-page{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 2px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\r\n\t\t\tbackground:rgba(255,255,255,.2);\r\n\r\n\t\t\t&.active{\r\n\t\t\t\tcolor:$footerActiveColor;\r\n\t\t\t}\r\n\r\n\t\t\t&:disabled{\r\n\t\t\t\topacity:.5;\r\n\t\t\t}\r\n\r\n\t\t\t&:not(.disabled){\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground:rgba(0,0,0,.2);\r\n\t\t\t\t\tcolor:#fff;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//holding div that contains loader and covers tabulator element to prevent interaction\r\n\t.tabulator-loader{\r\n\t\tposition:absolute;\r\n\t\tdisplay: flex;\r\n\t\talign-items:center;\r\n\r\n\t\ttop:0;\r\n\t\tleft:0;\r\n\t\tz-index:100;\r\n\r\n\t\theight:100%;\r\n\t\twidth:100%;\r\n\t\tbackground:rgba(0,0,0,.4);\r\n\t\ttext-align:center;\r\n\r\n\t\t//loading message element\r\n\t\t.tabulator-loader-msg{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 auto;\r\n\t\t\tpadding:10px 20px;\r\n\r\n\t\t\tborder-radius:10px;\r\n\r\n\t\t\tbackground:#fff;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:16px;\r\n\r\n\t\t\t//loading message\r\n\t\t\t&.tabulator-loading{\r\n\t\t\t\tborder:4px solid #333;\r\n\t\t\t\tcolor:#000;\r\n\t\t\t}\r\n\r\n\t\t\t//error message\r\n\t\t\t&.tabulator-error{\r\n\t\t\t\tborder:4px solid #D00;\r\n\t\t\t\tcolor:#590000;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n//row element\r\n.tabulator-row{\r\n\tposition: relative;\r\n\tbox-sizing: border-box;\r\n\r\n\tbox-sizing: border-box;\r\n\tmin-height:$textSize + ($headerMargin * 2);\r\n\r\n\tbackground-color: $handleColor;\r\n\r\n\tpadding-left: $handleWidth !important;\r\n\r\n\tmargin-bottom: 2px;\r\n\r\n\t&:nth-child(even){\r\n\t\tbackground-color: $handleColorAlt;\r\n\r\n\t\t.tabulator-cell{\r\n\t\t\tbackground-color: $rowAltBackgroundColor;\r\n\t\t}\r\n\t}\r\n\r\n\t&.tabulator-selectable:hover{\r\n\t\tcursor: pointer;\r\n\r\n\t\t.tabulator-cell{\r\n\t\t\tbackground-color:$rowHoverBackground;\r\n\t\t}\r\n\t}\r\n\r\n\t&.tabulator-selected{\r\n\t\t.tabulator-cell{\r\n\t\t\tbackground-color:$rowSelectedBackground;\r\n\t\t}\r\n\t}\r\n\r\n\t&.tabulator-selected:hover{\r\n\t\t.tabulator-cell{\r\n\t\t\tbackground-color:$rowSelectedBackgroundHover;\r\n\t\t\tcursor: pointer;\r\n\t\t}\r\n\t}\r\n\r\n\t&.tabulator-moving{\r\n\t\tposition: absolute;\r\n\r\n\t\tborder-top:1px solid  $rowBorderColor;\r\n\t\tborder-bottom:1px solid  $rowBorderColor;\r\n\r\n\t\tpointer-events: none !important;\r\n\t\tz-index:15;\r\n\t}\r\n\r\n\t//row resize handles\r\n\t.tabulator-row-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\tbottom:0;\r\n\t\tleft:0;\r\n\t\theight:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\ttop:0;\r\n\t\t\tbottom:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ns-resize;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-frozen{\r\n\t\tdisplay: inline-block;\r\n\t\tposition: absolute;\r\n\r\n\t\tbackground-color: inherit;\r\n\r\n\t\tz-index: 10;\r\n\r\n\t\t&.tabulator-frozen-left{\r\n\t\t\tpadding-left: $handleWidth;\r\n\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t&.tabulator-frozen-right{\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-responsive-collapse{\r\n\t\tbox-sizing:border-box;\r\n\r\n\t\tpadding:5px;\r\n\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\t&:empty{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\ttable{\r\n\t\t\tfont-size:$textSize;\r\n\r\n\t\t\ttr{\r\n\t\t\t\ttd{\r\n\t\t\t\t\tposition: relative;\r\n\r\n\t\t\t\t\t&:first-of-type{\r\n\t\t\t\t\t\tpadding-right:10px;\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//cell element\r\n\t.tabulator-cell{\r\n\t\tdisplay:inline-block;\r\n\t\tposition: relative;\r\n\t\tbox-sizing:border-box;\r\n\t\tpadding:6px 4px;\r\n\t\tborder-right:2px solid $rowBorderColor;\r\n\t\tvertical-align:middle;\r\n\t\twhite-space:nowrap;\r\n\t\toverflow:hidden;\r\n\t\ttext-overflow:ellipsis;\r\n\r\n\t\tbackground-color: $rowBackgroundColor;\r\n\r\n\t\t&.tabulator-editing{\r\n\t\t\tborder:1px solid  $editBoxColor;\r\n\t\t\tpadding: 0;\r\n\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-validation-fail{\r\n\t\t\tborder:1px solid $errorColor;\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\r\n\t\t\t\tcolor: $errorColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//hide left resize handle on first column\r\n\t\t&:first-child{\r\n\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//movable row handle\r\n\t\t&.tabulator-row-handle{\r\n\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\t//handle holder\r\n\t\t\t.tabulator-row-handle-box{\r\n\t\t\t\twidth:80%;\r\n\r\n\t\t\t\t//Hamburger element\r\n\t\t\t\t.tabulator-row-handle-bar{\r\n\t\t\t\t\twidth:100%;\r\n\t\t\t\t\theight:3px;\r\n\t\t\t\t\tmargin-top:2px;\r\n\t\t\t\t\tbackground:#666;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-branch{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:9px;\r\n\t\t\twidth:7px;\r\n\r\n\t\t\tmargin-top:-9px;\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control{\r\n\r\n\t\t\tdisplay:inline-flex;\r\n\t\t\tjustify-content:center;\r\n\t\t\talign-items:center;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:11px;\r\n\t\t\twidth:11px;\r\n\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder:1px solid $rowTextColor;\r\n\t\t\tborder-radius:2px;\r\n\t\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\t\toverflow:hidden;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\tcursor:pointer;\r\n\t\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: transparent;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-expand{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-responsive-collapse-toggle{\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\t\t\tjustify-content:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\theight:15px;\r\n\t\t\twidth:15px;\r\n\r\n\t\t\tborder-radius:20px;\r\n\t\t\tbackground:#666;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:1.1em;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\topacity:.7;\r\n\t\t\t}\r\n\r\n\t\t\t&.open{\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\t\tdisplay:initial;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-open{\r\n\t\t\t\t\tdisplay:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\tdisplay:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-traffic-light{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\theight:14px;\r\n\t\t\twidth:14px;\r\n\r\n\t\t\tborder-radius:14px;\r\n\t\t}\r\n\t}\r\n\r\n\t//row grouping element\r\n\t&.tabulator-group{\r\n\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-bottom:2px solid $primary;\r\n\t\tborder-top:2px solid $primary;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:lighten($primary, 20%);\r\n\t\tfont-weight:bold;\r\n\t\tcolor:fff;\r\n\t\tmargin-bottom: 2px;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:rgba(0,0,0,.1);\r\n\t\t}\r\n\r\n\r\n\t\t&.tabulator-group-visible{\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\tpadding-left:30px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\tpadding-left:50px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\tpadding-left:70px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\tpadding-left:90px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\tpadding-left:110px;\r\n\t\t}\r\n\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:$primary;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n.tabulator-edit-select-list{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tmax-height:200px;\r\n\r\n\tbackground:$rowBackgroundColor;\r\n\tborder:1px solid $editBoxColor;\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-edit-select-list-item{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\r\n\t\t&.active{\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-group{\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\tpadding:4px;\r\n\t\tpadding-top:6px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\tfont-weight:bold;\r\n\t}\r\n}\r\n\r\n// Table print styling\r\n\r\n.tabulator-print-fullscreen{\r\n\tposition: absolute;\r\n\ttop:0;\r\n\tbottom:0;\r\n\tleft:0;\r\n\tright:0;\r\n\r\n\tz-index: 10000;\r\n}\r\n\r\nbody.tabulator-print-fullscreen-hide>*:not(.tabulator-print-fullscreen){\r\n\tdisplay:none !important;\r\n}\r\n\r\n.tabulator-print-table{\r\n\tborder-collapse: collapse;\r\n}\r\n\r\n"]}
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/css.old/tabulator_simple.css b/backoffice/vendors/tabulator/css.old/tabulator_simple.css
new file mode 100644 (file)
index 0000000..d558324
--- /dev/null
@@ -0,0 +1,804 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+.tabulator {
+  position: relative;
+  background-color: #fff;
+  overflow: hidden;
+  font-size: 14px;
+  text-align: left;
+  -ms-transform: translatez(0);
+  transform: translatez(0);
+}
+
+.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableHolder .tabulator-table {
+  min-width: 100%;
+}
+
+.tabulator.tabulator-block-select {
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+
+.tabulator .tabulator-header {
+  position: relative;
+  box-sizing: border-box;
+  width: 100%;
+  border-bottom: 1px solid #999;
+  background-color: #fff;
+  color: #555;
+  font-weight: bold;
+  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-color: #fff;
+  text-align: left;
+  vertical-align: bottom;
+  overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-moving {
+  position: absolute;
+  border: 1px solid #999;
+  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-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-arrow {
+  display: inline-block;
+  position: absolute;
+  top: 9px;
+  right: 8px;
+  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: -ms-flexbox;
+  display: flex;
+  border-top: 1px solid #ddd;
+  overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child {
+  margin-right: -1px;
+}
+
+.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev {
+  display: none;
+}
+
+.tabulator .tabulator-header .tabulator-col.ui-sortable-helper {
+  position: absolute;
+  background-color: #e6e6e6 !important;
+  border: 1px solid #ddd;
+}
+
+.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-arrow {
+  border-top: none;
+  border-bottom: 6px solid #bbb;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .tabulator-col-content .tabulator-arrow {
+  border-top: none;
+  border-bottom: 6px solid #666;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="desc"] .tabulator-col-content .tabulator-arrow {
+  border-top: 6px solid #666;
+  border-bottom: none;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {
+  -ms-writing-mode: tb-rl;
+      writing-mode: vertical-rl;
+  text-orientation: mixed;
+  display: -ms-flexbox;
+  display: flex;
+  -ms-flex-align: center;
+      align-items: center;
+  -ms-flex-pack: center;
+      justify-content: center;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {
+  -ms-transform: rotate(180deg);
+      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-arrow {
+  right: calc(50% - 6px);
+}
+
+.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: #f2f2f2 !important;
+  border-top: 1px solid #ddd;
+  border-bottom: 1px solid #999;
+  overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {
+  background: #f2f2f2 !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: -ms-flexbox;
+  display: flex;
+  -ms-flex-align: center;
+      align-items: center;
+  width: 100%;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode="virtual"] {
+  position: absolute;
+  top: 0;
+  left: 0;
+  height: 100%;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-placeholder span {
+  display: inline-block;
+  margin: 0 auto;
+  padding: 10px;
+  color: #000;
+  font-weight: bold;
+  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: bold;
+  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-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-footer {
+  padding: 5px 10px;
+  border-top: 1px solid #999;
+  background-color: #fff;
+  text-align: right;
+  color: #555;
+  font-weight: bold;
+  white-space: nowrap;
+  -ms-user-select: none;
+      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 -10px;
+  text-align: left;
+  background: #f2f2f2 !important;
+  border-bottom: 1px solid #fff;
+  border-top: 1px solid #ddd;
+  overflow: hidden;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {
+  background: #f2f2f2 !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 #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: rgba(255, 255, 255, 0.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, 0.2);
+  color: #fff;
+}
+
+.tabulator .tabulator-loader {
+  position: absolute;
+  display: -ms-flexbox;
+  display: flex;
+  -ms-flex-align: center;
+      align-items: center;
+  top: 0;
+  left: 0;
+  z-index: 100;
+  height: 100%;
+  width: 100%;
+  background: rgba(0, 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: bold;
+  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;
+  border-bottom: 1px solid #ddd;
+}
+
+.tabulator-row:nth-child(even) {
+  background-color: #fff;
+}
+
+.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-moving {
+  position: absolute;
+  border-top: 1px solid #ddd;
+  border-bottom: 1px solid #ddd;
+  pointer-events: none !important;
+  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:last-of-type {
+  border-right: none;
+}
+
+.tabulator-row .tabulator-cell.tabulator-editing {
+  border: 1px solid #1D68CD;
+  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 #dd0000;
+}
+
+.tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {
+  border: 1px;
+  background: transparent;
+  color: #dd0000;
+}
+
+.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev {
+  display: none;
+}
+
+.tabulator-row .tabulator-cell.tabulator-row-handle {
+  display: -ms-inline-flexbox;
+  display: inline-flex;
+  -ms-flex-align: center;
+      align-items: 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: -ms-inline-flexbox;
+  display: inline-flex;
+  -ms-flex-pack: center;
+      justify-content: center;
+  -ms-flex-align: 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, 0.1);
+  overflow: hidden;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {
+  cursor: pointer;
+  background: rgba(0, 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: -ms-inline-flexbox;
+  display: inline-flex;
+  -ms-flex-align: center;
+      align-items: center;
+  -ms-flex-pack: 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: bold;
+  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 {
+  display: none;
+}
+
+.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;
+  padding-left: 10px;
+  background: #fafafa;
+  font-weight: bold;
+  min-width: 100%;
+}
+
+.tabulator-row.tabulator-group:hover {
+  cursor: pointer;
+  background-color: rgba(0, 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-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: #666;
+}
+
+.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:hover {
+  cursor: pointer;
+  color: #fff;
+  background: #1D68CD;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-group {
+  border-bottom: 1px solid #ddd;
+  padding: 4px;
+  padding-top: 6px;
+  color: #333;
+  font-weight: bold;
+}
+
+.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;
+}
diff --git a/backoffice/vendors/tabulator/css.old/tabulator_simple.min.css b/backoffice/vendors/tabulator/css.old/tabulator_simple.min.css
new file mode 100644 (file)
index 0000000..fd9ae4d
--- /dev/null
@@ -0,0 +1,3 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+.tabulator{position:relative;background-color:#fff;overflow:hidden;font-size:14px;text-align:left;transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator.tabulator-block-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:#fff;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 #ddd;background-color:#fff;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #999;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-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-arrow{display:inline-block;position:absolute;top:9px;right:8px;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:-ms-flexbox;display:flex;border-top:1px solid #ddd;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child{margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col.ui-sortable-helper{position:absolute;background-color:#e6e6e6!important;border:1px solid #ddd}.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-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-arrow{border-top:6px solid #666;border-bottom:none}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack: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-arrow{right:calc(50% - 6px)}.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:#f2f2f2!important;border-top:1px solid #ddd;border-bottom:1px solid #999;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#f2f2f2!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:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{position:absolute;top:0;left:0;height:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#000;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:#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-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-footer{padding:5px 10px;border-top:1px solid #999;background-color:#fff;text-align:right;color:#555;font-weight:700;white-space:nowrap;-ms-user-select:none;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:#f2f2f2!important;border-bottom:1px solid #fff;border-top:1px solid #ddd;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#f2f2f2!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 #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-loader{position:absolute;display:-ms-flexbox;display:flex;-ms-flex-align:center;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;border-bottom:1px solid #ddd}.tabulator-row,.tabulator-row:nth-child(2n){background-color:#fff}.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-moving{position:absolute;border-top:1px solid #ddd;border-bottom:1px solid #ddd;pointer-events:none!important;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:last-of-type{border-right:none}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;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:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items: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:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align: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:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack: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;padding-left:10px;background:#fafafa;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-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:#666}.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:hover{cursor:pointer;color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #ddd;padding:4px;padding-top:6px;color:#333;font-weight:700}.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}
+/*# sourceMappingURL=tabulator_simple.min.css.map */
diff --git a/backoffice/vendors/tabulator/css.old/tabulator_simple.min.css.map b/backoffice/vendors/tabulator/css.old/tabulator_simple.min.css.map
new file mode 100644 (file)
index 0000000..b4702ad
--- /dev/null
@@ -0,0 +1 @@
+{"version":3,"sources":["tabulator_simple.scss"],"names":[],"mappings":"AA0CA,WACC,kBAAkB,AAClB,sBAxCqB,AAyCrB,gBAAe,AACf,eAxCa,AAyCb,gBAAgB,AAMhB,uBAAwB,CAwfxB,AAngBD,iFAgBI,cAAc,CACd,AAjBJ,kCAsBE,yBAAiB,AAAjB,sBAAiB,AAAjB,qBAAiB,AAAjB,gBAAiB,CACjB,AAvBF,6BA2BE,kBAAiB,AACjB,sBAAsB,AAEtB,WAAU,AAEV,6BA9DwB,AA+DxB,sBAlEyB,AAmEzB,WAlEmB,AAmEnB,gBAAgB,AAEhB,mBAAmB,AACnB,gBAAe,AAEf,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAoPpB,AA/RF,qDA8CG,YAAY,CACZ,AA/CH,4CAmDG,qBAAoB,AACpB,kBAAiB,AACjB,sBAAqB,AACrB,4BArFoB,AAsFpB,sBAxFwB,AAyFxB,gBAAe,AACf,sBAAsB,AACtB,eAAgB,CAuLhB,AAjPH,6DA6DI,kBAAkB,AAClB,sBA5FsB,AA6FtB,mBAA8C,AAC9C,mBAAoB,CACpB,AAjEJ,mEAqEI,sBAAqB,AACrB,kBAAkB,AAClB,WAAW,CAsCX,AA7GJ,wFA2EK,sBAAqB,AACrB,WAAW,AAEX,mBAAmB,AACnB,gBAAgB,AAChB,uBAAuB,AACvB,qBAAqB,CAarB,AA9FL,gHAqFM,sBAAsB,AACtB,WAAW,AAEX,sBAAqB,AAErB,YAAW,AAEX,eAAgB,CAChB,AA7FN,oFAkGK,qBAAqB,AACrB,kBAAkB,AAClB,QAAO,AACP,UAAS,AACT,QAAQ,AACR,SAAS,AACT,kCAAkC,AAClC,mCAAmC,AACnC,4BAnImB,CAoInB,AA3GL,0FAoHK,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AAEb,0BAtJkB,AAuJlB,eAAgB,CAKhB,AA7HL,oHA2HM,iBAAiB,CACjB,AA5HN,0FAoIK,YAAa,CACb,AArIL,+DA0II,kBAAkB,AAClB,mCAA+D,AAC/D,qBA3KmB,CA4KnB,AA7IJ,qEAiJI,kBAAkB,AAClB,sBAAsB,AACtB,eAAc,AACd,WAAU,AACV,iBAAkB,CAiBlB,AAtKJ,8EAyJK,qBAAsB,CACtB,AA1JL,yEA6JK,cAAe,CACf,AA9JL,sFAkKO,QAAS,AACT,QAAS,CACV,AApKN,oFA4KK,kBAAkB,CAClB,AA7KL,qEAgLK,eAAc,AACd,wBAAoD,CACpD,AAlLL,uHAuLM,gBAAgB,AAChB,4BAjNkB,CAkNlB,AAzLN,sHA8LM,gBAAgB,AAChB,4BAzNgB,CA0NhB,AAhMN,uHAqMM,0BA/NgB,AAgOhB,kBAAmB,CACnB,AAvMN,+GA8MM,uBAAyB,AAAzB,yBAAyB,AACzB,uBAAuB,AAEvB,oBAAY,AAAZ,aAAY,AACZ,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,sBAAsB,CACtB,AApNN,oHAyNM,wBAAyB,CACzB,AA1NN,2GA+NM,gBAAe,AACf,gBAAgB,CAChB,AAjON,uIAqOO,gBAAe,AACf,mBAAmB,CACnB,AAvOP,uGA4OM,qBAAqB,CACrB,AA7ON,+CAoPG,qBAAqB,AACrB,kBAAkB,AAIlB,UAAW,CASX,AAlQH,qEA4PI,2BAhRgB,CAiRhB,AA7PJ,sEAgQI,0BApRgB,CAqRhB,AAjQJ,qDAqQG,sBAAqB,AACrB,eAAc,AAEd,6BAAwD,AAUxD,0BAtSiB,AAuSjB,6BAjTuB,AAmTvB,eAAgB,CAChB,AAtRH,oEA2QI,4BAAwD,CAKxD,AAhRJ,iGA8QK,YAAa,CACb,AA/QL,2DAyRG,cAAc,CAKd,AA9RH,iEA4RI,YAAa,CACb,AA7RJ,kCAqSE,kBAAiB,AACjB,WAAU,AACV,mBAAmB,AACnB,cAAa,AACb,gCAAiC,CA0DjC,AAnWF,wCA4SG,YAAa,CACb,AA7SH,yDAiTG,sBAAqB,AACrB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AASlB,UAAU,CAYV,AAxUH,wFAsTI,kBAAkB,AAClB,MAAK,AACL,OAAM,AACN,WAAW,CACX,AA1TJ,8DA+TI,qBAAqB,AAErB,cAAa,AACb,aAAY,AAEZ,WAAU,AACV,gBAAiB,AACjB,cAAe,CACf,AAvUJ,mDA4UG,kBAAiB,AACjB,qBAAoB,AACpB,sBApWqB,AAqWrB,mBAAmB,AACnB,iBAAgB,AAChB,UApWe,CAqXf,AAlWH,kFAqVK,gBAAiB,AACjB,4BAAwD,CASxD,AA/VL,sGAyVM,4BA7Wc,CA8Wd,AA1VN,yGA6VM,yBAjXc,CAkXd,AA9VN,wCAuWE,kBAAiB,AACjB,QAAO,AACP,MAAK,AACL,SAAQ,AACR,SAAS,CAUT,AArXF,6CA8WG,OAAM,AACN,UAAU,CACV,AAhXH,8CAmXG,gBAAgB,CAChB,AApXH,6BA0XE,iBAAgB,AAChB,0BAhYwB,AAiYxB,sBApYyB,AAqYzB,iBAAgB,AAChB,WArYmB,AAsYnB,gBAAgB,AAChB,mBAAkB,AAClB,qBAAgB,AAAhB,iBAAgB,AAEhB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAkFpB,AAxdF,qDAyYG,sBAAqB,AACrB,wBAAuB,AACvB,sBAA2B,AAE3B,gBAAgB,AAEhB,6BAAwD,AAUxD,6BAjawB,AAkaxB,0BA9aiB,AAgbjB,eAAgB,CAMhB,AAlaH,oEAkZI,4BAAwD,CAKxD,AAvZJ,iGAqZK,YAAa,CACb,AAtZL,gEA+ZI,mBAAkB,AAClB,kBAAkB,CAClB,AAjaJ,kDAsaG,WA7akB,AA8alB,oBAAmB,AACnB,oBAAmB,AACnB,iBAAiB,CACjB,AA1aH,kDA8aG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBAzboB,AA0bpB,iBAAiB,CACjB,AArbH,8CAybG,YAAY,CACZ,AA1bH,6CA8bG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBAzcoB,AA0cpB,kBAAiB,AAEjB,6BAA+B,CAiB/B,AAvdH,oDAycI,UA7cmB,CA8cnB,AA1cJ,sDA6cI,UAAU,CACV,AA9cJ,kEAkdK,eAAc,AACd,0BAAyB,AACzB,UAAU,CACV,AArdL,6BA4dE,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AAElB,MAAK,AACL,OAAM,AACN,YAAW,AAEX,YAAW,AACX,WAAU,AACV,0BAAyB,AACzB,iBAAiB,CA2BjB,AAlgBF,mDA2eG,qBAAoB,AAEpB,cAAa,AACb,kBAAiB,AAEjB,mBAAkB,AAElB,gBAAe,AACf,gBAAgB,AAChB,cAAc,CAad,AAjgBH,qEAwfI,sBAAqB,AACrB,UAAU,CACV,AA1fJ,mEA8fI,sBAAqB,AACrB,aAAa,CACb,AAMJ,eACC,kBAAkB,AAClB,sBAAsB,AAEtB,gBAA0C,AAE1C,4BAhiBmB,CAy4BnB,AA/WD,4CAKC,qBAjiBuB,CAsiBtB,AAVF,0CAaE,sBAriBsB,AAsiBtB,cAAe,CACf,AAfF,kCAkBE,wBAxiB6B,CAyiB7B,AAnBF,wCAsBE,yBA3iBkC,AA4iBlC,cAAe,CACf,AAxBF,gCA2BE,kBAAkB,AAElB,0BAvjBkB,AAwjBlB,6BAxjBkB,AA0jBlB,8BAA+B,AAC/B,UAAU,CACV,AAlCF,4CAsCE,kBAAiB,AACjB,QAAO,AACP,SAAQ,AACR,OAAM,AACN,UAAU,CAUV,AApDF,iDA6CG,MAAK,AACL,WAAW,CACX,AA/CH,kDAkDG,gBAAgB,CAChB,AAnDH,iCAuDE,qBAAqB,AACrB,kBAAkB,AAElB,yBAAyB,AAEzB,UAAW,CASX,AArEF,uDA+DG,2BAzlBiB,CA0lBjB,AAhEH,wDAmEG,0BA7lBiB,CA8lBjB,AApEH,8CAwEE,sBAAqB,AAErB,YAAW,AAEX,0BAtmBkB,AAumBlB,4BAvmBkB,CA0nBlB,AAhGF,oDAgFG,YAAY,CACZ,AAjFH,oDAoFG,cA9nBW,CAyoBX,AA/FH,0DAwFK,iBAAkB,CAKlB,AA7FL,wEA2FM,kBAAkB,CAClB,AA5FN,+BAoGE,qBAAoB,AACpB,kBAAkB,AAClB,sBAAqB,AACrB,YAAW,AACX,4BAloBkB,AAmoBlB,sBAAqB,AACrB,mBAAkB,AAClB,gBAAe,AACf,sBAAsB,CA6LtB,AAzSF,4CA+GG,iBAAkB,CAClB,AAhHH,iDAmHG,yBAroBkB,AAsoBlB,SAAU,CAMV,AA1HH,+GAuHI,WAAU,AACV,sBAAsB,CACtB,AAzHJ,yDA6HG,qBA9oBgB,CAqpBhB,AApIH,+HA+HI,WAAU,AACV,uBAAsB,AAEtB,UAnpBe,CAopBf,AAnIJ,6EAyII,YAAa,CACb,AA1IJ,oDAgJG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAElB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAcpB,AApKH,8EA0JI,SAAS,CAST,AAnKJ,wGA8JK,WAAU,AACV,WAAU,AACV,eAAc,AACd,eAAe,CACf,AAlKL,2DAuKG,qBAAoB,AACpB,sBAAqB,AAErB,WAAU,AACV,UAAS,AAET,gBAAe,AACf,iBAAgB,AAEhB,8BAA6B,AAE7B,2BA5sBiB,AA6sBjB,4BA7sBiB,CA8sBjB,AApLH,4DAwLG,2BAAmB,AAAnB,oBAAmB,AACnB,qBAAsB,AAAtB,uBAAsB,AACtB,sBAAkB,AAAlB,mBAAkB,AAClB,sBAAqB,AAErB,YAAW,AACX,WAAU,AAEV,iBAAgB,AAEhB,sBA3tBe,AA4tBf,kBAAiB,AACjB,0BAA4B,AAE5B,eAAe,CAmDf,AAzPH,kEAyMI,eAAc,AACd,yBAA4B,CAC5B,AA3MJ,kGA8MI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,sBAAuB,CAavB,AAjOJ,wGAuNK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAxvBa,CAyvBb,AAhOL,gGAoOI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,eAnwBc,CAgxBd,AAvPJ,sGA6OK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eA9wBa,CA+wBb,AAtPL,qEA4PG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,uBAAsB,AAEtB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,oBAAoB,AAEpB,YAAW,AACX,WAAU,AAEV,mBAAkB,AAClB,gBAAe,AAEf,WAvyBqB,AAwyBrB,gBAAgB,AAChB,eAAe,CAmBf,AAhSH,2EAgRI,UAAU,CACV,AAjRJ,sHAqRK,eAAe,CACf,AAtRL,sOA8RI,YAAY,CACZ,AA/RJ,wDAmSG,qBAAqB,AACrB,YAAW,AACX,WAAU,AAEV,kBAAkB,CAClB,AAxSH,+BA8SE,sBAAqB,AACrB,6BAA4B,AAC5B,4BA10BkB,AA20BlB,0BAAyB,AACzB,YAAW,AACX,kBAAiB,AACjB,mBAAkB,AAClB,gBAAgB,AAEhB,cAAe,CAuDf,AA9WF,qCA0TG,eAAc,AACd,+BAA+B,CAC/B,AA5TH,wEAgUI,kBAAiB,AACjB,kCAAkC,AAClC,mCAAmC,AACnC,0BAn2BkB,AAo2BlB,eAAgB,CAChB,AArUJ,uDAyUG,iBAAiB,CACjB,AA1UH,uDA6UG,iBAAiB,CACjB,AA9UH,uDAiVG,iBAAiB,CACjB,AAlVH,uDAqVG,iBAAiB,CACjB,AAtVH,uDAyVG,kBAAkB,CAClB,AA1VH,gDA+VG,qBAAqB,AACrB,QAAQ,AACR,SAAS,AACT,kBAAiB,AACjB,iCAAiC,AACjC,oCAAoC,AACpC,eAAe,AACf,2BAt4BmB,AAu4BnB,qBAAqB,CACrB,AAxWH,oCA2WG,iBAAgB,AAChB,UAAU,CACV,AAIH,4BACC,kBAAkB,AAClB,qBAAoB,AACpB,sBAAqB,AAErB,iBAAgB,AAEhB,gBAp5BuB,AAq5BvB,sBAn5BmB,AAq5BnB,eAr6Ba,AAu6Bb,gBAAe,AACf,iCAAiC,AAEjC,aAAc,CA6Bd,AA5CD,6DAkBE,YAAW,AAEX,UA95BgB,CA26BhB,AAjCF,oEAuBG,WAp6BqB,AAq6BrB,kBA35BkB,CA45BlB,AAzBH,mEA4BG,eAAc,AAEd,WA36BqB,AA46BrB,kBAl6BkB,CAm6BlB,AAhCH,8DAoCE,6BA/6BkB,AAi7BlB,YAAW,AACX,gBAAe,AAEf,WAn7BgB,AAo7BhB,eAAgB,CAChB,AAKF,4BACC,kBAAkB,AAClB,MAAK,AACL,SAAQ,AACR,OAAM,AACN,QAAO,AAEP,aAAc,CACd,AAED,uEACC,sBAAuB,CACvB,AAED,uBACC,wBAAyB,CACzB","file":"tabulator_simple.min.css","sourcesContent":["/* Tabulator v4.4.3 (c) Oliver Folkerd */\n\n\r\n//Main Theme Variables\r\n$backgroundColor: #fff !default; //background color of tabulator\r\n$borderColor:#999 !default; //border to tabulator\r\n$textSize:14px !default; //table text size\r\n\r\n//header themeing\r\n$headerBackgroundColor:#fff !default; //border to tabulator\r\n$headerTextColor:#555 !default; //header text colour\r\n$headerBorderColor:#ddd !default;  //header border color\r\n$headerSeperatorColor:#999 !default; //header bottom seperator color\r\n$headerMargin:4px !default; //padding round header\r\n\r\n//column header arrows\r\n$sortArrowActive: #666 !default;\r\n$sortArrowInactive: #bbb !default;\r\n\r\n//row themeing\r\n$rowBackgroundColor:#fff !default; //table row background color\r\n$rowAltBackgroundColor:#fff !default; //table row background color\r\n$rowBorderColor:#ddd !default; //table border color\r\n$rowTextColor:#333 !default; //table text color\r\n$rowHoverBackground:#bbb !default; //row background color on hover\r\n\r\n$rowSelectedBackground: #9ABCEA !default; //row background color when selected\r\n$rowSelectedBackgroundHover: #769BCC !default;//row background color when selected and hovered\r\n\r\n\r\n$editBoxColor:#1D68CD !default; //border color for edit boxes\r\n$errorColor:#dd0000 !default; //error indication\r\n\r\n//footer themeing\r\n$footerBackgroundColor:#fff !default; //border to tabulator\r\n$footerTextColor:#555 !default; //footer text colour\r\n$footerBorderColor:#aaa !default; //footer border color\r\n$footerSeperatorColor:#999 !default; //footer bottom seperator color\r\n$footerActiveColor:#d00 !default; //footer bottom active text color\r\n\r\n\r\n//Tabulator Containing Element\r\n.tabulator{\r\n\tposition: relative;\r\n\tbackground-color: $backgroundColor;\r\n\toverflow:hidden;\r\n\tfont-size:$textSize;\r\n\ttext-align: left;\r\n\r\n\t-webkit-transform: translatez(0);\r\n\t-moz-transform: translatez(0);\r\n\t-ms-transform: translatez(0);\r\n\t-o-transform: translatez(0);\r\n\ttransform: translatez(0);\r\n\r\n\t&[tabulator-layout=\"fitDataFill\"]{\r\n\t\t.tabulator-tableHolder{\r\n\t\t\t.tabulator-table{\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t&.tabulator-block-select{\r\n\t\tuser-select: none;\r\n\t}\r\n\r\n\t//column header containing element\r\n\t.tabulator-header{\r\n\t\tposition:relative;\r\n\t\tbox-sizing: border-box;\r\n\r\n\t\twidth:100%;\r\n\r\n\t\tborder-bottom:1px solid $headerSeperatorColor;\r\n\t\tbackground-color: $headerBackgroundColor;\r\n\t\tcolor: $headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:hidden;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t&.tabulator-header-hidden{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\t//individual column header element\r\n\t\t.tabulator-col{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition:relative;\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tborder-right:1px solid $headerBorderColor;\r\n\t\t\tbackground-color: $headerBackgroundColor;\r\n\t\t\ttext-align:left;\r\n\t\t\tvertical-align: bottom;\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&.tabulator-moving{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tborder:1px solid  $headerSeperatorColor;\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 10%);\r\n\t\t\t\tpointer-events: none;\r\n\t\t\t}\r\n\r\n\t\t\t//hold content of column header\r\n\t\t\t.tabulator-col-content{\r\n\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tpadding:4px;\r\n\r\n\t\t\t\t//hold title of column header\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\twhite-space: nowrap;\r\n\t\t\t\t\toverflow: hidden;\r\n\t\t\t\t\ttext-overflow: ellipsis;\r\n\t\t\t\t\tvertical-align:bottom;\r\n\r\n\t\t\t\t\t//element to hold title editor\r\n\t\t\t\t\t.tabulator-title-editor{\r\n\t\t\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\t\tborder:1px solid #999;\r\n\r\n\t\t\t\t\t\tpadding:1px;\r\n\r\n\t\t\t\t\t\tbackground: #fff;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//column sorter arrow\r\n\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\tdisplay: inline-block;\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\ttop:9px;\r\n\t\t\t\t\tright:8px;\r\n\t\t\t\t\twidth: 0;\r\n\t\t\t\t\theight: 0;\r\n\t\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t//complex header column group\r\n\t\t\t&.tabulator-col-group{\r\n\r\n\t\t\t\t//gelement to hold sub columns in column group\r\n\t\t\t\t.tabulator-col-group-cols{\r\n\t\t\t\t\tposition:relative;\r\n\t\t\t\t\tdisplay: flex;\r\n\r\n\t\t\t\t\tborder-top:1px solid $headerBorderColor;\r\n\t\t\t\t\toverflow: hidden;\r\n\r\n\t\t\t\t\t.tabulator-col:last-child{\r\n\t\t\t\t\t\tmargin-right:-1px;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\t//hide left resize handle on first column\r\n\t\t\t&:first-child{\r\n\t\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//placeholder element for sortable columns\r\n\t\t\t&.ui-sortable-helper{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tbackground-color:darken($headerBackgroundColor, 10%) !important;\r\n\t\t\t\tborder:1px solid $headerBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t//header filter containing element\r\n\t\t\t.tabulator-header-filter{\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\tmargin-top:2px;\r\n\t\t\t\twidth:100%;\r\n\t\t\t\ttext-align: center;\r\n\r\n\t\t\t\t//styling adjustment for inbuilt editors\r\n\t\t\t\ttextarea{\r\n\t\t\t\t\theight:auto !important;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsvg{\r\n\t\t\t\t\tmargin-top: 3px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinput{\r\n\t\t\t\t\t&::-ms-clear {\r\n\t\t\t\t\t  width : 0;\r\n\t\t\t\t\t  height: 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\t//styling child elements for sortable columns\r\n\t\t\t&.tabulator-sortable{\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tpadding-right:25px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\t&[aria-sort=\"none\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"asc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowActive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"desc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\t\t\tborder-bottom: none;\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&.tabulator-col-vertical{\r\n\t\t\t\t.tabulator-col-content{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\twriting-mode: vertical-rl;\r\n\t\t\t\t\t\ttext-orientation: mixed;\r\n\r\n\t\t\t\t\t\tdisplay:flex;\r\n\t\t\t\t\t\talign-items:center;\r\n\t\t\t\t\t\tjustify-content:center;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\ttransform: rotate(180deg);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-sortable{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\tpadding-top:20px;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\t\tpadding-bottom:20px;\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.tabulator-arrow{\r\n\t\t\t\t\t\tright:calc(50% - 6px);\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\t.tabulator-frozen{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\tposition: absolute;\r\n\r\n\t\t\t// background-color: inherit;\r\n\r\n\t\t\tz-index: 10;\r\n\r\n\t\t\t&.tabulator-frozen-left{\r\n\t\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-frozen-right{\r\n\t\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\tbackground:darken($headerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\t\t\tborder-bottom:1px solid $headerSeperatorColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen-rows-holder{\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\t&:empty{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\r\n\t//scrolling element to hold table\r\n\t.tabulator-tableHolder{\r\n\t\tposition:relative;\r\n\t\twidth:100%;\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:auto;\r\n\t\t-webkit-overflow-scrolling: touch;\r\n\r\n\t\t&:focus{\r\n\t\t\toutline: none;\r\n\t\t}\r\n\r\n\t\t//default placeholder element\r\n\t\t.tabulator-placeholder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t&[tabulator-render-mode=\"virtual\"]{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\ttop:0;\r\n\t\t\t\tleft:0;\r\n\t\t\t\theight:100%;\r\n\t\t\t}\r\n\r\n\t\t\twidth:100%;\r\n\r\n\t\t\tspan{\r\n\t\t\t\tdisplay: inline-block;\r\n\r\n\t\t\t\tmargin:0 auto;\r\n\t\t\t\tpadding:10px;\r\n\r\n\t\t\t\tcolor:#000;\r\n\t\t\t\tfont-weight: bold;\r\n\t\t\t\tfont-size: 20px;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//element to hold table rows\r\n\t\t.tabulator-table{\r\n\t\t\tposition:relative;\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tbackground-color:$rowBackgroundColor;\r\n\t\t\twhite-space: nowrap;\r\n\t\t\toverflow:visible;\r\n\t\t\tcolor:$rowTextColor;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\t&.tabulator-calcs{\r\n\t\t\t\t\tfont-weight: bold;\r\n\t\t\t\t\tbackground:darken($rowAltBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t\t&.tabulator-calcs-top{\r\n\t\t\t\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-calcs-bottom{\r\n\t\t\t\t\t\tborder-top:2px solid $rowBorderColor;\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\t}\r\n\r\n\t//column resize handles\r\n\t.tabulator-col-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\ttop:0;\r\n\t\tbottom:0;\r\n\t\twidth:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\tleft:0;\r\n\t\t\tright:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ew-resize;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//footer element\r\n\t.tabulator-footer{\r\n\t\tpadding:5px 10px;\r\n\t\tborder-top:1px solid $footerSeperatorColor;\r\n\t\tbackground-color: $footerBackgroundColor;\r\n\t\ttext-align:right;\r\n\t\tcolor: $footerTextColor;\r\n\t\tfont-weight:bold;\r\n\t\twhite-space:nowrap;\r\n\t\tuser-select:none;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\twidth:calc(100% + 20px);\r\n\t\t\tmargin:-5px -10px 5px -10px;\r\n\r\n\t\t\ttext-align: left;\r\n\r\n\t\t\tbackground:darken($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:darken($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-bottom:1px solid $footerBackgroundColor;\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&:only-child{\r\n\t\t\t\tmargin-bottom:-5px;\r\n\t\t\t\tborder-bottom:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-paginator{\r\n\t\t\tcolor: $footerTextColor;\r\n\t\t\tfont-family:inherit;\r\n\t\t\tfont-weight:inherit;\r\n\t\t\tfont-size:inherit;\r\n\t\t}\r\n\r\n\t\t//page size select element\r\n\t\t.tabulator-page-size{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 5px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-pages{\r\n\t\t\tmargin:0 7px;\r\n\t\t}\r\n\r\n\t\t//pagination button\r\n\t\t.tabulator-page{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 2px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\r\n\t\t\tbackground:rgba(255,255,255,.2);\r\n\r\n\t\t\t&.active{\r\n\t\t\t\tcolor:$footerActiveColor;\r\n\t\t\t}\r\n\r\n\t\t\t&:disabled{\r\n\t\t\t\topacity:.5;\r\n\t\t\t}\r\n\r\n\t\t\t&:not(.disabled){\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground:rgba(0,0,0,.2);\r\n\t\t\t\t\tcolor:#fff;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//holding div that contains loader and covers tabulator element to prevent interaction\r\n\t.tabulator-loader{\r\n\t\tposition:absolute;\r\n\t\tdisplay: flex;\r\n\t\talign-items:center;\r\n\r\n\t\ttop:0;\r\n\t\tleft:0;\r\n\t\tz-index:100;\r\n\r\n\t\theight:100%;\r\n\t\twidth:100%;\r\n\t\tbackground:rgba(0,0,0,.4);\r\n\t\ttext-align:center;\r\n\r\n\t\t//loading message element\r\n\t\t.tabulator-loader-msg{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 auto;\r\n\t\t\tpadding:10px 20px;\r\n\r\n\t\t\tborder-radius:10px;\r\n\r\n\t\t\tbackground:#fff;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:16px;\r\n\r\n\t\t\t//loading message\r\n\t\t\t&.tabulator-loading{\r\n\t\t\t\tborder:4px solid #333;\r\n\t\t\t\tcolor:#000;\r\n\t\t\t}\r\n\r\n\t\t\t//error message\r\n\t\t\t&.tabulator-error{\r\n\t\t\t\tborder:4px solid #D00;\r\n\t\t\t\tcolor:#590000;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n//row element\r\n.tabulator-row{\r\n\tposition: relative;\r\n\tbox-sizing: border-box;\r\n\r\n\tmin-height:$textSize + ($headerMargin * 2);\r\n\tbackground-color: $rowBackgroundColor;\r\n\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t&:nth-child(even){\r\n\t\tbackground-color: $rowAltBackgroundColor;\r\n\t}\r\n\r\n\t&.tabulator-selectable:hover{\r\n\t\tbackground-color:$rowHoverBackground;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-selected{\r\n\t\tbackground-color:$rowSelectedBackground;\r\n\t}\r\n\r\n\t&.tabulator-selected:hover{\r\n\t\tbackground-color:$rowSelectedBackgroundHover;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-moving{\r\n\t\tposition: absolute;\r\n\r\n\t\tborder-top:1px solid  $rowBorderColor;\r\n\t\tborder-bottom:1px solid  $rowBorderColor;\r\n\r\n\t\tpointer-events: none !important;\r\n\t\tz-index:15;\r\n\t}\r\n\r\n\t//row resize handles\r\n\t.tabulator-row-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\tbottom:0;\r\n\t\tleft:0;\r\n\t\theight:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\ttop:0;\r\n\t\t\tbottom:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ns-resize;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-frozen{\r\n\t\tdisplay: inline-block;\r\n\t\tposition: absolute;\r\n\r\n\t\tbackground-color: inherit;\r\n\r\n\t\tz-index: 10;\r\n\r\n\t\t&.tabulator-frozen-left{\r\n\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t&.tabulator-frozen-right{\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-responsive-collapse{\r\n\t\tbox-sizing:border-box;\r\n\r\n\t\tpadding:5px;\r\n\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\t&:empty{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\ttable{\r\n\t\t\tfont-size:$textSize;\r\n\r\n\t\t\ttr{\r\n\t\t\t\ttd{\r\n\t\t\t\t\tposition: relative;\r\n\r\n\t\t\t\t\t&:first-of-type{\r\n\t\t\t\t\t\tpadding-right:10px;\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//cell element\r\n\t.tabulator-cell{\r\n\t\tdisplay:inline-block;\r\n\t\tposition: relative;\r\n\t\tbox-sizing:border-box;\r\n\t\tpadding:4px;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tvertical-align:middle;\r\n\t\twhite-space:nowrap;\r\n\t\toverflow:hidden;\r\n\t\ttext-overflow:ellipsis;\r\n\r\n\t\t&:last-of-type{\r\n\t\t\tborder-right: none;\r\n\t\t}\r\n\r\n\t\t&.tabulator-editing{\r\n\t\t\tborder:1px solid  $editBoxColor;\r\n\t\t\tpadding: 0;\r\n\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-validation-fail{\r\n\t\t\tborder:1px solid $errorColor;\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\r\n\t\t\t\tcolor: $errorColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//hide left resize handle on first column\r\n\t\t&:first-child{\r\n\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//movable row handle\r\n\t\t&.tabulator-row-handle{\r\n\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\t//handle holder\r\n\t\t\t.tabulator-row-handle-box{\r\n\t\t\t\twidth:80%;\r\n\r\n\t\t\t\t//Hamburger element\r\n\t\t\t\t.tabulator-row-handle-bar{\r\n\t\t\t\t\twidth:100%;\r\n\t\t\t\t\theight:3px;\r\n\t\t\t\t\tmargin-top:2px;\r\n\t\t\t\t\tbackground:#666;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-branch{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:9px;\r\n\t\t\twidth:7px;\r\n\r\n\t\t\tmargin-top:-9px;\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control{\r\n\r\n\t\t\tdisplay:inline-flex;\r\n\t\t\tjustify-content:center;\r\n\t\t\talign-items:center;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:11px;\r\n\t\t\twidth:11px;\r\n\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder:1px solid $rowTextColor;\r\n\t\t\tborder-radius:2px;\r\n\t\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\t\toverflow:hidden;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\tcursor:pointer;\r\n\t\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: transparent;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-expand{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-responsive-collapse-toggle{\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\t\t\tjustify-content:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\theight:15px;\r\n\t\t\twidth:15px;\r\n\r\n\t\t\tborder-radius:20px;\r\n\t\t\tbackground:#666;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:1.1em;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\topacity:.7;\r\n\t\t\t}\r\n\r\n\t\t\t&.open{\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\t\tdisplay:initial;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-open{\r\n\t\t\t\t\tdisplay:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\tdisplay:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-traffic-light{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\theight:14px;\r\n\t\t\twidth:14px;\r\n\r\n\t\t\tborder-radius:14px;\r\n\t\t}\r\n\t}\r\n\r\n\t//row grouping element\r\n\t&.tabulator-group{\r\n\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-bottom:1px solid #999;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tborder-top:1px solid #999;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:#fafafa;\r\n\t\tfont-weight:bold;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:rgba(0,0,0,.1);\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-visible{\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\tpadding-left:30px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\tpadding-left:50px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\tpadding-left:70px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\tpadding-left:90px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\tpadding-left:110px;\r\n\t\t}\r\n\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:#666;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n.tabulator-edit-select-list{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tmax-height:200px;\r\n\r\n\tbackground:$rowBackgroundColor;\r\n\tborder:1px solid $rowBorderColor;\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-edit-select-list-item{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\r\n\t\t&.active{\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-group{\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\tpadding:4px;\r\n\t\tpadding-top:6px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\tfont-weight:bold;\r\n\t}\r\n}\r\n\r\n// Table print styling\r\n\r\n.tabulator-print-fullscreen{\r\n\tposition: absolute;\r\n\ttop:0;\r\n\tbottom:0;\r\n\tleft:0;\r\n\tright:0;\r\n\r\n\tz-index: 10000;\r\n}\r\n\r\nbody.tabulator-print-fullscreen-hide>*:not(.tabulator-print-fullscreen){\r\n\tdisplay:none !important;\r\n}\r\n\r\n.tabulator-print-table{\r\n\tborder-collapse: collapse;\r\n}\r\n\r\n"]}
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/css.old/tabulator_site.css b/backoffice/vendors/tabulator/css.old/tabulator_site.css
new file mode 100644 (file)
index 0000000..fdfbea5
--- /dev/null
@@ -0,0 +1,804 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+.tabulator {
+  position: relative;
+  border-bottom: 5px solid #222;
+  background-color: #fff;
+  font-size: 14px;
+  text-align: left;
+  overflow: hidden;
+  -ms-transform: translatez(0);
+  transform: translatez(0);
+}
+
+.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableHolder .tabulator-table {
+  min-width: 100%;
+}
+
+.tabulator[tabulator-layout="fitColumns"] .tabulator-row .tabulator-cell:last-of-type {
+  border-right: none;
+}
+
+.tabulator.tabulator-block-select {
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+
+.tabulator .tabulator-header {
+  position: relative;
+  box-sizing: border-box;
+  width: 100%;
+  border-bottom: 3px solid #3FB449;
+  background-color: #222;
+  color: #fff;
+  font-weight: bold;
+  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-color: #222;
+  text-align: left;
+  vertical-align: bottom;
+  overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-moving {
+  position: absolute;
+  border: 1px solid #3FB449;
+  background: #090909;
+  pointer-events: none;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content {
+  box-sizing: border-box;
+  position: relative;
+  padding: 8px;
+}
+
+.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-arrow {
+  display: inline-block;
+  position: absolute;
+  top: 14px;
+  right: 8px;
+  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: -ms-flexbox;
+  display: flex;
+  border-top: 1px solid #aaa;
+  overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child {
+  margin-right: -1px;
+}
+
+.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev {
+  display: none;
+}
+
+.tabulator .tabulator-header .tabulator-col.ui-sortable-helper {
+  position: absolute;
+  background-color: #222 !important;
+  border: 1px solid #aaa;
+}
+
+.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: #090909;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-arrow {
+  border-top: none;
+  border-bottom: 6px solid #bbb;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .tabulator-col-content .tabulator-arrow {
+  border-top: none;
+  border-bottom: 6px solid #3FB449;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="desc"] .tabulator-col-content .tabulator-arrow {
+  border-top: 6px solid #3FB449;
+  border-bottom: none;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {
+  -ms-writing-mode: tb-rl;
+      writing-mode: vertical-rl;
+  text-orientation: mixed;
+  display: -ms-flexbox;
+  display: flex;
+  -ms-flex-align: center;
+      align-items: center;
+  -ms-flex-pack: center;
+      justify-content: center;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {
+  -ms-transform: rotate(180deg);
+      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-arrow {
+  right: calc(50% - 6px);
+}
+
+.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: #3c3c3c !important;
+  border-top: 1px solid #aaa;
+  overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {
+  background: #3c3c3c !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: -ms-flexbox;
+  display: flex;
+  -ms-flex-align: center;
+      align-items: center;
+  width: 100%;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode="virtual"] {
+  position: absolute;
+  top: 0;
+  left: 0;
+  height: 100%;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-placeholder span {
+  display: inline-block;
+  margin: 0 auto;
+  padding: 10px;
+  color: #3FB449;
+  font-weight: bold;
+  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: bold;
+  background: #484848 !important;
+  color: #fff;
+}
+
+.tabulator .tabulator-footer {
+  padding: 5px 10px;
+  padding-top: 8px;
+  border-top: 3px solid #3FB449;
+  background-color: #222;
+  text-align: right;
+  color: #222;
+  font-weight: bold;
+  white-space: nowrap;
+  -ms-user-select: none;
+      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: -8px -10px 8px -10px;
+  text-align: left;
+  background: #3c3c3c !important;
+  border-bottom: 1px solid #aaa;
+  overflow: hidden;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {
+  background: #3c3c3c !important;
+  color: #fff !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 label {
+  color: #fff;
+}
+
+.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: #fff;
+  color: #222;
+  font-family: inherit;
+  font-weight: inherit;
+  font-size: inherit;
+}
+
+.tabulator .tabulator-footer .tabulator-page.active {
+  color: #3FB449;
+}
+
+.tabulator .tabulator-footer .tabulator-page:disabled {
+  opacity: .5;
+}
+
+.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {
+  cursor: pointer;
+  background: rgba(0, 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: -ms-flexbox;
+  display: flex;
+  -ms-flex-align: center;
+      align-items: center;
+  top: 0;
+  left: 0;
+  z-index: 100;
+  height: 100%;
+  width: 100%;
+  background: rgba(0, 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: bold;
+  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 #aaa;
+  border-bottom: 1px solid #aaa;
+  pointer-events: none !important;
+  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: 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: 6px;
+  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;
+  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 #dd0000;
+}
+
+.tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {
+  border: 1px;
+  background: transparent;
+  color: #dd0000;
+}
+
+.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev {
+  display: none;
+}
+
+.tabulator-row .tabulator-cell.tabulator-row-handle {
+  display: -ms-inline-flexbox;
+  display: inline-flex;
+  -ms-flex-align: center;
+      align-items: 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: #3FB449;
+}
+
+.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: -ms-inline-flexbox;
+  display: inline-flex;
+  -ms-flex-pack: center;
+      justify-content: center;
+  -ms-flex-align: 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, 0.1);
+  overflow: hidden;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {
+  cursor: pointer;
+  background: rgba(0, 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: -ms-inline-flexbox;
+  display: inline-flex;
+  -ms-flex-align: center;
+      align-items: center;
+  -ms-flex-pack: 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: bold;
+  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 {
+  display: none;
+}
+
+.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;
+  border-top: 1px solid #000;
+  border-bottom: 2px solid #3FB449;
+  padding: 5px;
+  padding-left: 10px;
+  background: #222;
+  color: #fff;
+  font-weight: bold;
+  min-width: 100%;
+}
+
+.tabulator-row.tabulator-group:hover {
+  cursor: pointer;
+  background-color: #090909;
+}
+
+.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 #3FB449;
+  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-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 #3FB449;
+  vertical-align: middle;
+}
+
+.tabulator-row.tabulator-group span {
+  margin-left: 10px;
+  color: #3FB449;
+}
+
+.tabulator-edit-select-list {
+  position: absolute;
+  display: inline-block;
+  box-sizing: border-box;
+  max-height: 200px;
+  background: #fff;
+  border: 1px solid #aaa;
+  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:hover {
+  cursor: pointer;
+  color: #fff;
+  background: #1D68CD;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-group {
+  border-bottom: 1px solid #aaa;
+  padding: 4px;
+  padding-top: 6px;
+  color: #333;
+  font-weight: bold;
+}
+
+.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;
+}
diff --git a/backoffice/vendors/tabulator/css.old/tabulator_site.min.css b/backoffice/vendors/tabulator/css.old/tabulator_site.min.css
new file mode 100644 (file)
index 0000000..57e4f7b
--- /dev/null
@@ -0,0 +1,3 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+.tabulator{position:relative;border-bottom:5px solid #222;background-color:#fff;font-size:14px;text-align:left;overflow:hidden;transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitColumns] .tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator.tabulator-block-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:3px solid #3fb449;background-color:#222;color:#fff;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-color:#222;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #3fb449;background:#090909;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:8px}.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-arrow{display:inline-block;position:absolute;top:14px;right:8px;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:-ms-flexbox;display:flex;border-top:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child{margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col.ui-sortable-helper{position:absolute;background-color:#222!important;border:1px solid #aaa}.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:#090909}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #3fb449}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-arrow{border-top:6px solid #3fb449;border-bottom:none}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack: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-arrow{right:calc(50% - 6px)}.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:#3c3c3c!important;border-top:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#3c3c3c!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:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{position:absolute;top:0;left:0;height:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#3fb449;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:#484848!important;color:#fff}.tabulator .tabulator-footer{padding:5px 10px;padding-top:8px;border-top:3px solid #3fb449;background-color:#222;text-align:right;color:#222;font-weight:700;white-space:nowrap;-ms-user-select:none;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:-8px -10px 8px;text-align:left;background:#3c3c3c!important;border-bottom:1px solid #aaa;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#3c3c3c!important;color:#fff!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 label{color:#fff}.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:#fff;color:#222;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page.active{color:#3fb449}.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:-ms-flexbox;display:flex;-ms-flex-align:center;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 #aaa;border-bottom:1px solid #aaa;pointer-events:none!important;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: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:6px;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;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:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items: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:#3fb449}.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:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align: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:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack: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-right:1px solid #aaa;border-top:1px solid #000;border-bottom:2px solid #3fb449;padding:5px;padding-left:10px;background:#222;color:#fff;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:#090909}.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 #3fb449;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-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 #3fb449;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#3fb449}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#fff;border:1px solid #aaa;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:hover{cursor:pointer;color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #aaa;padding:4px;padding-top:6px;color:#333;font-weight:700}.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}
+/*# sourceMappingURL=tabulator_site.min.css.map */
diff --git a/backoffice/vendors/tabulator/css.old/tabulator_site.min.css.map b/backoffice/vendors/tabulator/css.old/tabulator_site.min.css.map
new file mode 100644 (file)
index 0000000..b023e6c
--- /dev/null
@@ -0,0 +1 @@
+{"version":3,"sources":["tabulator_site.scss"],"names":[],"mappings":"AAyCA,WACC,kBAAkB,AAElB,6BAvCgB,AAyChB,sBA1CqB,AA4CrB,eA1Ca,AA2Cb,gBAAgB,AAChB,gBAAe,AAMf,uBAAwB,CA8fxB,AA7gBD,iFAoBI,cAAc,CACd,AArBJ,oFA6BK,iBAAkB,CAClB,AA9BL,kCAqCE,yBAAiB,AAAjB,sBAAiB,AAAjB,qBAAiB,AAAjB,gBAAiB,CACjB,AAtCF,6BA0CE,kBAAiB,AACjB,sBAAsB,AAEtB,WAAU,AAEV,gCA5E2B,AA6E3B,sBAhFyB,AAiFzB,WAhFmB,AAiFnB,gBAAgB,AAEhB,mBAAmB,AACnB,gBAAe,AAEf,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAkPpB,AA5SF,qDA6DG,YAAY,CACZ,AA9DH,4CAkEG,qBAAoB,AAEpB,kBAAiB,AACjB,sBAAqB,AACrB,4BApGoB,AAqGpB,sBAvGwB,AAwGxB,gBAAe,AACf,sBAAsB,AACtB,eAAgB,CAoLhB,AA9PH,6DA6EI,kBAAkB,AAClB,yBA3GyB,AA4GzB,mBAA8C,AAC9C,mBAAoB,CACpB,AAjFJ,mEAqFI,sBAAqB,AACrB,kBAAkB,AAClB,WAAW,CAsCX,AA7HJ,wFA2FK,sBAAqB,AACrB,WAAW,AAEX,mBAAmB,AACnB,gBAAgB,AAChB,uBAAuB,AACvB,qBAAqB,CAarB,AA9GL,gHAqGM,sBAAsB,AACtB,WAAW,AAEX,sBAAqB,AAErB,YAAW,AAEX,eAAgB,CAChB,AA7GN,oFAkHK,qBAAqB,AACrB,kBAAkB,AAClB,SAAQ,AACR,UAAS,AACT,QAAQ,AACR,SAAS,AACT,kCAAkC,AAClC,mCAAmC,AACnC,4BAlJmB,CAmJnB,AA3HL,0FAoIK,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AAEb,0BArKkB,AAsKlB,eAAgB,CAKhB,AA7IL,oHA2IM,iBAAiB,CACjB,AA5IN,0FAmJK,YAAa,CACb,AApJL,+DAyJI,kBAAkB,AAClB,gCAAmD,AACnD,qBAzLmB,CA0LnB,AA5JJ,qEAgKI,kBAAkB,AAClB,sBAAsB,AACtB,eAAc,AACd,WAAU,AACV,iBAAkB,CAiBlB,AArLJ,8EAwKK,qBAAsB,CACtB,AAzKL,yEA4KK,cAAe,CACf,AA7KL,sFAiLO,QAAS,AACT,QAAS,CACV,AAnLN,oFA0LK,kBAAkB,CAClB,AA3LL,qEA8LK,eAAc,AACd,wBAAoD,CACpD,AAhML,uHAoMM,gBAAgB,AAChB,4BA7NkB,CA8NlB,AAtMN,sHA2MM,gBAAgB,AAChB,+BArOmB,CAsOnB,AA7MN,uHAkNM,6BA3OmB,AA4OnB,kBAAmB,CACnB,AApNN,+GA2NM,uBAAyB,AAAzB,yBAAyB,AACzB,uBAAuB,AAEvB,oBAAY,AAAZ,aAAY,AACZ,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,sBAAsB,CACtB,AAjON,oHAsOM,wBAAyB,CACzB,AAvON,2GA4OM,gBAAe,AACf,gBAAgB,CAChB,AA9ON,uIAkPO,gBAAe,AACf,mBAAmB,CACnB,AApPP,uGAyPM,qBAAqB,CACrB,AA1PN,+CAiQG,qBAAqB,AACrB,kBAAkB,AAIlB,UAAW,CASX,AA/QH,qEAyQI,2BA5RgB,CA6RhB,AA1QJ,sEA6QI,0BAhSgB,CAiShB,AA9QJ,qDAkRG,sBAAqB,AACrB,eAAc,AAEd,6BAA0D,AAU1D,0BAlTiB,AAqTjB,eAAgB,CAChB,AAnSH,oEAwRI,4BAA0D,CAK1D,AA7RJ,iGA2RK,YAAa,CACb,AA5RL,2DAsSG,cAAc,CAKd,AA3SH,iEAySI,YAAa,CACb,AA1SJ,kCAgTE,kBAAiB,AACjB,WAAU,AACV,mBAAmB,AACnB,cAAa,AACb,gCAAiC,CAkDjC,AAtWF,wCAuTG,YAAa,CACb,AAxTH,yDA4TG,sBAAqB,AACrB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AASlB,UAAU,CAYV,AAnVH,wFAiUI,kBAAkB,AAClB,MAAK,AACL,OAAM,AACN,WAAW,CACX,AArUJ,8DA0UI,qBAAqB,AAErB,cAAa,AACb,aAAY,AAEZ,cA5WyB,AA6WzB,gBAAiB,AACjB,cAAe,CACf,AAlVJ,mDAuVG,kBAAiB,AACjB,qBAAoB,AACpB,sBA9WqB,AA+WrB,mBAAmB,AACnB,iBAAgB,AAChB,UA9We,CAuXf,AArWH,kFAgWK,gBAAiB,AACjB,6BAA0D,AAC1D,UAjYgB,CAkYhB,AAnWL,6BA2WE,iBAAgB,AAChB,gBAAe,AACf,6BAlX2B,AAmX3B,sBAtXyB,AAuXzB,iBAAgB,AAChB,WAvXmB,AAwXnB,gBAAgB,AAChB,mBAAkB,AAClB,qBAAgB,AAAhB,iBAAgB,AAEhB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAuFpB,AA/cF,qDA2XG,sBAAqB,AACrB,wBAAuB,AACvB,sBAA2B,AAE3B,gBAAgB,AAEhB,6BAA0D,AAY1D,6BAhaiB,AAkajB,eAAgB,CAMhB,AArZH,oEAoYI,6BAA0D,AAC1D,oBAAiC,CAKjC,AA1YJ,iGAwYK,YAAa,CACb,AAzYL,gEAkZI,mBAAkB,AAClB,kBAAkB,CAClB,AApZJ,wDA0ZI,UAAU,CACV,AA3ZJ,kDAgaG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBA3aoB,AA4apB,iBAAiB,CACjB,AAvaH,8CA2aG,YAAY,CACZ,AA5aH,6CAgbG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBA3boB,AA4bpB,kBAAiB,AAEjB,gBAAe,AAEf,WAjckB,AAkclB,oBAAmB,AACnB,oBAAmB,AACnB,iBAAiB,CAiBjB,AA9cH,oDAgcI,aArcyB,CAsczB,AAjcJ,sDAocI,UAAU,CACV,AArcJ,kEAycK,eAAc,AACd,0BAAyB,AACzB,UAAU,CACV,AA5cL,wCAmdE,kBAAiB,AACjB,QAAO,AACP,MAAK,AACL,SAAQ,AACR,SAAS,CAUT,AAjeF,6CA0dG,OAAM,AACN,UAAU,CACV,AA5dH,8CA+dG,gBAAgB,CAChB,AAheH,6BAseE,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AAElB,MAAK,AACL,OAAM,AACN,YAAW,AAEX,YAAW,AACX,WAAU,AACV,0BAAyB,AACzB,iBAAiB,CA2BjB,AA5gBF,mDAqfG,qBAAoB,AAEpB,cAAa,AACb,kBAAiB,AAEjB,mBAAkB,AAElB,gBAAe,AACf,gBAAgB,AAChB,cAAc,CAad,AA3gBH,qEAkgBI,sBAAqB,AACrB,UAAU,CACV,AApgBJ,mEAwgBI,sBAAqB,AACrB,aAAa,CACb,AAMJ,eACC,kBAAkB,AAClB,sBAAsB,AACtB,gBAA0C,AAC1C,qBAziBuB,CAs5BvB,AAjXD,kCAQE,wBA5iB4B,CA6iB5B,AATF,0CAYE,sBA7iBsB,AA8iBtB,cAAe,CACf,AAdF,kCAiBE,wBAhjB6B,CAijB7B,AAlBF,wCAqBE,yBAnjBkC,AAojBlC,cAAe,CACf,AAvBF,oCA0BE,sBAAqB,AACrB,eAAe,CACf,AA5BF,gCA+BE,kBAAkB,AAElB,0BApkBkB,AAqkBlB,6BArkBkB,AAukBlB,8BAA+B,AAC/B,UAAU,CACV,AAtCF,4CA0CE,kBAAiB,AACjB,QAAO,AACP,SAAQ,AACR,OAAM,AACN,UAAU,CAUV,AAxDF,iDAiDG,MAAK,AACL,WAAW,CACX,AAnDH,kDAsDG,gBAAgB,CAChB,AAvDH,iCA2DE,qBAAqB,AACrB,kBAAkB,AAElB,yBAAyB,AAEzB,UAAW,CASX,AAzEF,uDAmEG,2BAtmBiB,CAumBjB,AApEH,wDAuEG,0BA1mBiB,CA2mBjB,AAxEH,8CA4EE,sBAAqB,AAErB,YAAW,AAEX,0BAnnBkB,AAonBlB,4BApnBkB,CAuoBlB,AApGF,oDAoFG,YAAY,CACZ,AArFH,oDAwFG,cA3oBW,CAspBX,AAnGH,0DA4FK,iBAAkB,CAKlB,AAjGL,wEA+FM,kBAAkB,CAClB,AAhGN,+BAwGE,qBAAoB,AACpB,kBAAkB,AAClB,sBAAqB,AACrB,YAAW,AACX,4BA/oBkB,AAgpBlB,sBAAqB,AACrB,mBAAkB,AAClB,gBAAe,AACf,sBAAsB,CA0LtB,AA1SF,iDAoHG,yBAhpBkB,AAipBlB,SAAU,CAMV,AA3HH,+GAwHI,WAAU,AACV,sBAAsB,CACtB,AA1HJ,yDA8HG,qBAzpBgB,CAgqBhB,AArIH,+HAgII,WAAU,AACV,uBAAsB,AAEtB,UA9pBe,CA+pBf,AApIJ,6EA0II,YAAa,CACb,AA3IJ,oDAiJG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAElB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAcpB,AArKH,8EA2JI,SAAS,CAST,AApKJ,wGA+JK,WAAU,AACV,WAAU,AACV,eAAc,AACd,kBA3sBoB,CA4sBpB,AAnKL,2DAwKG,qBAAoB,AACpB,sBAAqB,AAErB,WAAU,AACV,UAAS,AAET,gBAAe,AACf,iBAAgB,AAEhB,8BAA6B,AAE7B,2BAttBiB,AAutBjB,4BAvtBiB,CAwtBjB,AArLH,4DAyLG,2BAAmB,AAAnB,oBAAmB,AACnB,qBAAsB,AAAtB,uBAAsB,AACtB,sBAAkB,AAAlB,mBAAkB,AAClB,sBAAqB,AAErB,YAAW,AACX,WAAU,AAEV,iBAAgB,AAEhB,sBAruBe,AAsuBf,kBAAiB,AACjB,0BAA4B,AAE5B,eAAe,CAmDf,AA1PH,kEA0MI,eAAc,AACd,yBAA4B,CAC5B,AA5MJ,kGA+MI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,sBAAuB,CAavB,AAlOJ,wGAwNK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAlwBa,CAmwBb,AAjOL,gGAqOI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,eA7wBc,CA0xBd,AAxPJ,sGA8OK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAxxBa,CAyxBb,AAvPL,qEA6PG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,uBAAsB,AAEtB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,oBAAoB,AAEpB,YAAW,AACX,WAAU,AAEV,mBAAkB,AAClB,gBAAe,AAEf,WAjzBqB,AAkzBrB,gBAAgB,AAChB,eAAe,CAmBf,AAjSH,2EAiRI,UAAU,CACV,AAlRJ,sHAsRK,eAAe,CACf,AAvRL,sOA+RI,YAAY,CACZ,AAhSJ,wDAoSG,qBAAqB,AACrB,YAAW,AACX,WAAU,AAEV,kBAAkB,CAClB,AAzSH,+BA8SE,sBAAqB,AACrB,4BAl1BkB,AAm1BlB,0BAAyB,AACzB,gCA91B2B,AA+1B3B,YAAW,AACX,kBAAiB,AACjB,gBAp2ByB,AAq2BzB,WAp2BmB,AAq2BnB,gBAAgB,AAEhB,cAAe,CAuDf,AA/WF,qCA2TG,eAAc,AACd,wBAAoD,CACpD,AA7TH,wEAiUI,kBAAiB,AACjB,kCAAkC,AAClC,mCAAmC,AACnC,6BA72BqB,AA82BrB,eAAgB,CAChB,AAtUJ,uDA0UG,iBAAiB,CACjB,AA3UH,uDA8UG,iBAAiB,CACjB,AA/UH,uDAkVG,iBAAiB,CACjB,AAnVH,uDAsVG,iBAAiB,CACjB,AAvVH,uDA0VG,kBAAkB,CAClB,AA3VH,gDAgWG,qBAAqB,AACrB,QAAQ,AACR,SAAS,AACT,kBAAiB,AACjB,iCAAiC,AACjC,oCAAoC,AACpC,eAAe,AACf,8BAh5BsB,AAi5BtB,qBAAqB,CACrB,AAzWH,oCA4WG,iBAAgB,AAChB,aA15B0B,CA25B1B,AAKH,4BACC,kBAAkB,AAClB,qBAAoB,AACpB,sBAAqB,AAErB,iBAAgB,AAEhB,gBA/5BuB,AAg6BvB,sBA95BmB,AAg6BnB,eAh7Ba,AAk7Bb,gBAAe,AACf,iCAAiC,AAEjC,aAAc,CA6Bd,AA5CD,6DAkBE,YAAW,AAEX,UAz6BgB,CAs7BhB,AAjCF,oEAuBG,WA/6BqB,AAg7BrB,kBAv6BkB,CAw6BlB,AAzBH,mEA4BG,eAAc,AAEd,WAt7BqB,AAu7BrB,kBA96BkB,CA+6BlB,AAhCH,8DAoCE,6BA17BkB,AA47BlB,YAAW,AACX,gBAAe,AAEf,WA97BgB,AA+7BhB,eAAgB,CAChB,AAKF,4BACC,kBAAkB,AAClB,MAAK,AACL,SAAQ,AACR,OAAM,AACN,QAAO,AAEP,aAAc,CACd,AAED,uEACC,sBAAuB,CACvB,AAED,uBACC,wBAAyB,CACzB","file":"tabulator_site.min.css","sourcesContent":["/* Tabulator v4.4.3 (c) Oliver Folkerd */\n\n\r\n//Main Theme Variables\r\n$backgroundColor: #fff !default; //background color of tabulator\r\n$borderColor:#222 !default; //border to tabulator\r\n$textSize:14px !default; //table text size\r\n\r\n//header themeing\r\n$headerBackgroundColor:#222 !default; //border to tabulator\r\n$headerTextColor:#fff !default; //header text colour\r\n$headerBorderColor:#aaa !default;  //header border color\r\n$headerSeperatorColor:#3FB449 !default; //header bottom seperator color\r\n$headerMargin:4px !default; //padding round header\r\n\r\n//column header arrows\r\n$sortArrowActive: #3FB449 !default;\r\n$sortArrowInactive: #bbb !default;\r\n\r\n//row themeing\r\n$rowBackgroundColor:#fff !default; //table row background color\r\n$rowAltBackgroundColor:#EFEFEF !default; //table row background color\r\n$rowBorderColor:#aaa !default; //table border color\r\n$rowTextColor:#333 !default; //table text color\r\n$rowHoverBackground:#bbb !default; //row background color on hover\r\n\r\n$rowSelectedBackground: #9ABCEA !default; //row background color when selected\r\n$rowSelectedBackgroundHover: #769BCC !default;//row background color when selected and hovered\r\n\r\n$editBoxColor:#1D68CD !default; //border color for edit boxes\r\n$errorColor:#dd0000 !default; //error indication\r\n\r\n//footer themeing\r\n$footerBackgroundColor:#222 !default; //border to tabulator\r\n$footerTextColor:#222 !default; //footer text colour\r\n$footerBorderColor:#aaa !default; //footer border color\r\n$footerSeperatorColor:#3FB449 !default; //footer bottom seperator color\r\n$footerActiveColor:$footerSeperatorColor !default; //footer bottom active text color\r\n\r\n\r\n//Tabulator Containing Element\r\n.tabulator{\r\n\tposition: relative;\r\n\r\n\tborder-bottom: 5px solid $borderColor;\r\n\r\n\tbackground-color: $backgroundColor;\r\n\r\n\tfont-size:$textSize;\r\n\ttext-align: left;\r\n\toverflow:hidden;\r\n\r\n\t-webkit-transform: translatez(0);\r\n\t-moz-transform: translatez(0);\r\n\t-ms-transform: translatez(0);\r\n\t-o-transform: translatez(0);\r\n\ttransform: translatez(0);\r\n\r\n\t&[tabulator-layout=\"fitDataFill\"]{\r\n\t\t.tabulator-tableHolder{\r\n\t\t\t.tabulator-table{\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t&[tabulator-layout=\"fitColumns\"]{\r\n\t\t.tabulator-row{\r\n\t\t\t.tabulator-cell{\r\n\t\t\t\t&:last-of-type{\r\n\t\t\t\t\tborder-right: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t&.tabulator-block-select{\r\n\t\tuser-select: none;\r\n\t}\r\n\r\n\t//column header containing element\r\n\t.tabulator-header{\r\n\t\tposition:relative;\r\n\t\tbox-sizing: border-box;\r\n\r\n\t\twidth:100%;\r\n\r\n\t\tborder-bottom:3px solid $headerSeperatorColor;\r\n\t\tbackground-color: $headerBackgroundColor;\r\n\t\tcolor: $headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:hidden;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t&.tabulator-header-hidden{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\t//individual column header element\r\n\t\t.tabulator-col{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tposition:relative;\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tborder-right:1px solid $headerBorderColor;\r\n\t\t\tbackground-color: $headerBackgroundColor;\r\n\t\t\ttext-align:left;\r\n\t\t\tvertical-align: bottom;\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&.tabulator-moving{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tborder:1px solid  $headerSeperatorColor;\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 10%);\r\n\t\t\t\tpointer-events: none;\r\n\t\t\t}\r\n\r\n\t\t\t//hold content of column header\r\n\t\t\t.tabulator-col-content{\r\n\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tpadding:8px;\r\n\r\n\t\t\t\t//hold title of column header\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\twhite-space: nowrap;\r\n\t\t\t\t\toverflow: hidden;\r\n\t\t\t\t\ttext-overflow: ellipsis;\r\n\t\t\t\t\tvertical-align:bottom;\r\n\r\n\t\t\t\t\t//element to hold title editor\r\n\t\t\t\t\t.tabulator-title-editor{\r\n\t\t\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\t\tborder:1px solid #999;\r\n\r\n\t\t\t\t\t\tpadding:1px;\r\n\r\n\t\t\t\t\t\tbackground: #fff;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//column sorter arrow\r\n\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\tdisplay: inline-block;\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\ttop:14px;\r\n\t\t\t\t\tright:8px;\r\n\t\t\t\t\twidth: 0;\r\n\t\t\t\t\theight: 0;\r\n\t\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t//complex header column group\r\n\t\t\t&.tabulator-col-group{\r\n\r\n\t\t\t\t//gelement to hold sub columns in column group\r\n\t\t\t\t.tabulator-col-group-cols{\r\n\t\t\t\t\tposition:relative;\r\n\t\t\t\t\tdisplay: flex;\r\n\r\n\t\t\t\t\tborder-top:1px solid $headerBorderColor;\r\n\t\t\t\t\toverflow: hidden;\r\n\r\n\t\t\t\t\t.tabulator-col:last-child{\r\n\t\t\t\t\t\tmargin-right:-1px;\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//hide left resize handle on first column\r\n\t\t\t&:first-child{\r\n\t\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//placeholder element for sortable columns\r\n\t\t\t&.ui-sortable-helper{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tbackground-color: $headerBackgroundColor !important;\r\n\t\t\t\tborder:1px solid $headerBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t//header filter containing element\r\n\t\t\t.tabulator-header-filter{\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\tmargin-top:2px;\r\n\t\t\t\twidth:100%;\r\n\t\t\t\ttext-align: center;\r\n\r\n\t\t\t\t//styling adjustment for inbuilt editors\r\n\t\t\t\ttextarea{\r\n\t\t\t\t\theight:auto !important;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsvg{\r\n\t\t\t\t\tmargin-top: 3px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinput{\r\n\t\t\t\t\t&::-ms-clear {\r\n\t\t\t\t\t  width : 0;\r\n\t\t\t\t\t  height: 0;\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//styling child elements for sortable columns\r\n\t\t\t&.tabulator-sortable{\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tpadding-right:25px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"none\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"asc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowActive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"desc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\t\t\tborder-bottom: none;\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&.tabulator-col-vertical{\r\n\t\t\t\t.tabulator-col-content{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\twriting-mode: vertical-rl;\r\n\t\t\t\t\t\ttext-orientation: mixed;\r\n\r\n\t\t\t\t\t\tdisplay:flex;\r\n\t\t\t\t\t\talign-items:center;\r\n\t\t\t\t\t\tjustify-content:center;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\ttransform: rotate(180deg);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-sortable{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\tpadding-top:20px;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\t\tpadding-bottom:20px;\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.tabulator-arrow{\r\n\t\t\t\t\t\tright:calc(50% - 6px);\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\t.tabulator-frozen{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\tposition: absolute;\r\n\r\n\t\t\t// background-color: inherit;\r\n\r\n\t\t\tz-index: 10;\r\n\r\n\t\t\t&.tabulator-frozen-left{\r\n\t\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-frozen-right{\r\n\t\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\tbackground:lighten($headerBackgroundColor, 10%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:lighten($headerBackgroundColor, 10%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\t\t\t// border-bottom:1px solid $headerBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen-rows-holder{\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\t&:empty{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//scrolling element to hold table\r\n\t.tabulator-tableHolder{\r\n\t\tposition:relative;\r\n\t\twidth:100%;\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:auto;\r\n\t\t-webkit-overflow-scrolling: touch;\r\n\r\n\t\t&:focus{\r\n\t\t\toutline: none;\r\n\t\t}\r\n\r\n\t\t//default placeholder element\r\n\t\t.tabulator-placeholder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t&[tabulator-render-mode=\"virtual\"]{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\ttop:0;\r\n\t\t\t\tleft:0;\r\n\t\t\t\theight:100%;\r\n\t\t\t}\r\n\r\n\t\t\twidth:100%;\r\n\r\n\t\t\tspan{\r\n\t\t\t\tdisplay: inline-block;\r\n\r\n\t\t\t\tmargin:0 auto;\r\n\t\t\t\tpadding:10px;\r\n\r\n\t\t\t\tcolor:$headerSeperatorColor;\r\n\t\t\t\tfont-weight: bold;\r\n\t\t\t\tfont-size: 20px;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//element to hold table rows\r\n\t\t.tabulator-table{\r\n\t\t\tposition:relative;\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tbackground-color:$rowBackgroundColor;\r\n\t\t\twhite-space: nowrap;\r\n\t\t\toverflow:visible;\r\n\t\t\tcolor:$rowTextColor;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\t&.tabulator-calcs{\r\n\t\t\t\t\tfont-weight: bold;\r\n\t\t\t\t\tbackground:lighten($headerBackgroundColor, 15%) !important;\r\n\t\t\t\t\tcolor:$headerTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//footer element\r\n\t.tabulator-footer{\r\n\t\tpadding:5px 10px;\r\n\t\tpadding-top:8px;\r\n\t\tborder-top:3px solid $footerSeperatorColor;\r\n\t\tbackground-color: $footerBackgroundColor;\r\n\t\ttext-align:right;\r\n\t\tcolor: $footerTextColor;\r\n\t\tfont-weight:bold;\r\n\t\twhite-space:nowrap;\r\n\t\tuser-select:none;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\twidth:calc(100% + 20px);\r\n\t\t\tmargin:-8px -10px 8px -10px;\r\n\r\n\t\t\ttext-align: left;\r\n\r\n\t\t\tbackground:lighten($footerBackgroundColor, 10%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:lighten($footerBackgroundColor, 10%) !important;\r\n\t\t\t\tcolor:$headerTextColor !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// border-top:1px solid $rowBorderColor;\r\n\t\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&:only-child{\r\n\t\t\t\tmargin-bottom:-5px;\r\n\t\t\t\tborder-bottom:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-paginator{\r\n\t\t\tlabel{\r\n\t\t\t\tcolor:#fff;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//page size select element\r\n\t\t.tabulator-page-size{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 5px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-pages{\r\n\t\t\tmargin:0 7px;\r\n\t\t}\r\n\r\n\t\t//pagination button\r\n\t\t.tabulator-page{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 2px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\r\n\t\t\tbackground:#fff;\r\n\r\n\t\t\tcolor: $footerTextColor;\r\n\t\t\tfont-family:inherit;\r\n\t\t\tfont-weight:inherit;\r\n\t\t\tfont-size:inherit;\r\n\r\n\t\t\t&.active{\r\n\t\t\t\tcolor:$footerActiveColor;\r\n\t\t\t}\r\n\r\n\t\t\t&:disabled{\r\n\t\t\t\topacity:.5;\r\n\t\t\t}\r\n\r\n\t\t\t&:not(.disabled){\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground:rgba(0,0,0,.2);\r\n\t\t\t\t\tcolor:#fff;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//column resize handles\r\n\t.tabulator-col-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\ttop:0;\r\n\t\tbottom:0;\r\n\t\twidth:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\tleft:0;\r\n\t\t\tright:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ew-resize;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//holding div that contains loader and covers tabulator element to prevent interaction\r\n\t.tabulator-loader{\r\n\t\tposition:absolute;\r\n\t\tdisplay: flex;\r\n\t\talign-items:center;\r\n\r\n\t\ttop:0;\r\n\t\tleft:0;\r\n\t\tz-index:100;\r\n\r\n\t\theight:100%;\r\n\t\twidth:100%;\r\n\t\tbackground:rgba(0,0,0,.4);\r\n\t\ttext-align:center;\r\n\r\n\t\t//loading message element\r\n\t\t.tabulator-loader-msg{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 auto;\r\n\t\t\tpadding:10px 20px;\r\n\r\n\t\t\tborder-radius:10px;\r\n\r\n\t\t\tbackground:#fff;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:16px;\r\n\r\n\t\t\t//loading message\r\n\t\t\t&.tabulator-loading{\r\n\t\t\t\tborder:4px solid #333;\r\n\t\t\t\tcolor:#000;\r\n\t\t\t}\r\n\r\n\t\t\t//error message\r\n\t\t\t&.tabulator-error{\r\n\t\t\t\tborder:4px solid #D00;\r\n\t\t\t\tcolor:#590000;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n//row element\r\n.tabulator-row{\r\n\tposition: relative;\r\n\tbox-sizing: border-box;\r\n\tmin-height:$textSize + ($headerMargin * 2);\r\n\tbackground-color: $rowBackgroundColor;\r\n\r\n\r\n\t&.tabulator-row-even{\r\n\t\tbackground-color: $rowAltBackgroundColor;\r\n\t}\r\n\r\n\t&.tabulator-selectable:hover{\r\n\t\tbackground-color:$rowHoverBackground;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-selected{\r\n\t\tbackground-color:$rowSelectedBackground;\r\n\t}\r\n\r\n\t&.tabulator-selected:hover{\r\n\t\tbackground-color:$rowSelectedBackgroundHover;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-row-moving{\r\n\t\tborder:1px solid #000;\r\n\t\tbackground:#fff;\r\n\t}\r\n\r\n\t&.tabulator-moving{\r\n\t\tposition: absolute;\r\n\r\n\t\tborder-top:1px solid  $rowBorderColor;\r\n\t\tborder-bottom:1px solid  $rowBorderColor;\r\n\r\n\t\tpointer-events: none !important;\r\n\t\tz-index:15;\r\n\t}\r\n\r\n\t//row resize handles\r\n\t.tabulator-row-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\tbottom:0;\r\n\t\tleft:0;\r\n\t\theight:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\ttop:0;\r\n\t\t\tbottom:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ns-resize;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-frozen{\r\n\t\tdisplay: inline-block;\r\n\t\tposition: absolute;\r\n\r\n\t\tbackground-color: inherit;\r\n\r\n\t\tz-index: 10;\r\n\r\n\t\t&.tabulator-frozen-left{\r\n\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t&.tabulator-frozen-right{\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-responsive-collapse{\r\n\t\tbox-sizing:border-box;\r\n\r\n\t\tpadding:5px;\r\n\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\t&:empty{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\ttable{\r\n\t\t\tfont-size:$textSize;\r\n\r\n\t\t\ttr{\r\n\t\t\t\ttd{\r\n\t\t\t\t\tposition: relative;\r\n\r\n\t\t\t\t\t&:first-of-type{\r\n\t\t\t\t\t\tpadding-right:10px;\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//cell element\r\n\t.tabulator-cell{\r\n\t\tdisplay:inline-block;\r\n\t\tposition: relative;\r\n\t\tbox-sizing:border-box;\r\n\t\tpadding:6px;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tvertical-align:middle;\r\n\t\twhite-space:nowrap;\r\n\t\toverflow:hidden;\r\n\t\ttext-overflow:ellipsis;\r\n\r\n\r\n\t\t&.tabulator-editing{\r\n\t\t\tborder:1px solid  $editBoxColor;\r\n\t\t\tpadding: 0;\r\n\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-validation-fail{\r\n\t\t\tborder:1px solid $errorColor;\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\r\n\t\t\t\tcolor: $errorColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//hide left resize handle on first column\r\n\t\t&:first-child{\r\n\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//movable row handle\r\n\t\t&.tabulator-row-handle{\r\n\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\t//handle holder\r\n\t\t\t.tabulator-row-handle-box{\r\n\t\t\t\twidth:80%;\r\n\r\n\t\t\t\t//Hamburger element\r\n\t\t\t\t.tabulator-row-handle-bar{\r\n\t\t\t\t\twidth:100%;\r\n\t\t\t\t\theight:3px;\r\n\t\t\t\t\tmargin-top:2px;\r\n\t\t\t\t\tbackground:$sortArrowActive;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-branch{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:9px;\r\n\t\t\twidth:7px;\r\n\r\n\t\t\tmargin-top:-9px;\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control{\r\n\r\n\t\t\tdisplay:inline-flex;\r\n\t\t\tjustify-content:center;\r\n\t\t\talign-items:center;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:11px;\r\n\t\t\twidth:11px;\r\n\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder:1px solid $rowTextColor;\r\n\t\t\tborder-radius:2px;\r\n\t\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\t\toverflow:hidden;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\tcursor:pointer;\r\n\t\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: transparent;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-expand{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-responsive-collapse-toggle{\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\t\t\tjustify-content:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\theight:15px;\r\n\t\t\twidth:15px;\r\n\r\n\t\t\tborder-radius:20px;\r\n\t\t\tbackground:#666;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:1.1em;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\topacity:.7;\r\n\t\t\t}\r\n\r\n\t\t\t&.open{\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\t\tdisplay:initial;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-open{\r\n\t\t\t\t\tdisplay:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\tdisplay:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-traffic-light{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\theight:14px;\r\n\t\t\twidth:14px;\r\n\r\n\t\t\tborder-radius:14px;\r\n\t\t}\r\n\t}\r\n\r\n\t//row grouping element\r\n\t&.tabulator-group{\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tborder-top:1px solid #000;\r\n\t\tborder-bottom:2px solid $headerSeperatorColor;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:$headerBackgroundColor;\r\n\t\tcolor:$headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-visible{\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\tpadding-left:30px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\tpadding-left:50px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\tpadding-left:70px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\tpadding-left:90px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\tpadding-left:110px;\r\n\t\t}\r\n\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:$headerSeperatorColor;\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n.tabulator-edit-select-list{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tmax-height:200px;\r\n\r\n\tbackground:$rowBackgroundColor;\r\n\tborder:1px solid $rowBorderColor;\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-edit-select-list-item{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\r\n\t\t&.active{\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-group{\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\tpadding:4px;\r\n\t\tpadding-top:6px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\tfont-weight:bold;\r\n\t}\r\n}\r\n\r\n// Table print styling\r\n\r\n.tabulator-print-fullscreen{\r\n\tposition: absolute;\r\n\ttop:0;\r\n\tbottom:0;\r\n\tleft:0;\r\n\tright:0;\r\n\r\n\tz-index: 10000;\r\n}\r\n\r\nbody.tabulator-print-fullscreen-hide>*:not(.tabulator-print-fullscreen){\r\n\tdisplay:none !important;\r\n}\r\n\r\n.tabulator-print-table{\r\n\tborder-collapse: collapse;\r\n}\r\n\r\n"]}
\ No newline at end of file
index 90b542f..ed78a0f 100644 (file)
@@ -1,4 +1,4 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 .tabulator {
   position: relative;
   border: 1px solid #999;
   padding-left: 110px;
 }
 
+.tabulator-row.tabulator-group .tabulator-group-toggle {
+  display: inline-block;
+}
+
 .tabulator-row.tabulator-group .tabulator-arrow {
   display: inline-block;
   width: 0;
index f5fab3c..bf0beb8 100644 (file)
@@ -1,3 +1,3 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
-.tabulator{position:relative;border:1px solid #999;background-color:#888;font-size:14px;text-align:left;overflow:hidden;transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator.tabulator-block-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:#e6e6e6;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:#e6e6e6;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #999;background:#cdcdcd;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-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-arrow{display:inline-block;position:absolute;top:9px;right:8px;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:-ms-flexbox;display:flex;border-top:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child{margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col.ui-sortable-helper{position:absolute;background-color:#e6e6e6!important;border:1px solid #aaa}.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:#cdcdcd}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-arrow{border-top:6px solid #666;border-bottom:none}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack: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-arrow{right:calc(50% - 6px)}.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:#f3f3f3!important;border-top:1px solid #aaa;border-bottom:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#f3f3f3!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:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{position:absolute;top:0;left:0;height: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-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:#e6e6e6;text-align:right;color:#555;font-weight:700;white-space:nowrap;-ms-user-select:none;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;border-bottom:1px solid #aaa;border-top:1px solid #aaa;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 #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:-ms-flexbox;display:flex;-ms-flex-align:center;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 #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: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 #aaa;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;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:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack: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:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align: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:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack: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 #aaa;border-top:1px solid #999;padding:5px;padding-left: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-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-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#fff;border:1px solid #aaa;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:hover{cursor:pointer;color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #aaa;padding:4px;padding-top:6px;color:#333;font-weight:700}.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 v4.5.1 (c) Oliver Folkerd */
+.tabulator{position:relative;border:1px solid #999;background-color:#888;font-size:14px;text-align:left;overflow:hidden;transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator.tabulator-block-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:#e6e6e6;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:#e6e6e6;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #999;background:#cdcdcd;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-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-arrow{display:inline-block;position:absolute;top:9px;right:8px;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:-ms-flexbox;display:flex;border-top:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child{margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col.ui-sortable-helper{position:absolute;background-color:#e6e6e6!important;border:1px solid #aaa}.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:#cdcdcd}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-arrow{border-top:6px solid #666;border-bottom:none}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack: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-arrow{right:calc(50% - 6px)}.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:#f3f3f3!important;border-top:1px solid #aaa;border-bottom:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#f3f3f3!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:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{position:absolute;top:0;left:0;height: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-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:#e6e6e6;text-align:right;color:#555;font-weight:700;white-space:nowrap;-ms-user-select:none;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;border-bottom:1px solid #aaa;border-top:1px solid #aaa;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 #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:-ms-flexbox;display:flex;-ms-flex-align:center;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 #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: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 #aaa;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;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:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack: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:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align: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:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack: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 #aaa;border-top:1px solid #999;padding:5px;padding-left: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-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#fff;border:1px solid #aaa;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:hover{cursor:pointer;color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #aaa;padding:4px;padding-top:6px;color:#333;font-weight:700}.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}
 /*# sourceMappingURL=tabulator.min.css.map */
index 406ab5c..92257e1 100644 (file)
@@ -1 +1 @@
-{"version":3,"sources":["tabulator.scss"],"names":[],"mappings":"AA0CA,WACC,kBAAkB,AAElB,sBAxCgB,AA0ChB,sBA3CqB,AA6CrB,eA3Ca,AA4Cb,gBAAgB,AAChB,gBAAe,AAMf,uBAAwB,CAqfxB,AApgBD,iFAoBI,cAAc,CACd,AArBJ,kCA0BE,yBAAiB,AAAjB,sBAAiB,AAAjB,qBAAiB,AAAjB,gBAAiB,CACjB,AA3BF,6BA+BE,kBAAiB,AACjB,sBAAsB,AAEtB,WAAU,AAEV,6BAlEwB,AAmExB,yBAtE4B,AAuE5B,WAtEmB,AAuEnB,gBAAgB,AAEhB,mBAAmB,AACnB,gBAAe,AAEf,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAkPpB,AAjSF,qDAkDG,YAAY,CACZ,AAnDH,4CAuDG,qBAAoB,AACpB,kBAAiB,AACjB,sBAAqB,AACrB,4BAzFoB,AA0FpB,mBA5F2B,AA6F3B,gBAAe,AACf,sBAAsB,AACtB,eAAgB,CAoLhB,AAlPH,6DAiEI,kBAAkB,AAClB,sBAhGsB,AAiGtB,mBAA8C,AAC9C,mBAAoB,CACpB,AArEJ,mEAyEI,sBAAqB,AACrB,kBAAkB,AAClB,WAAW,CAsCX,AAjHJ,wFA+EK,sBAAqB,AACrB,WAAW,AAEX,mBAAmB,AACnB,gBAAgB,AAChB,uBAAuB,AACvB,qBAAqB,CAarB,AAlGL,gHAyFM,sBAAsB,AACtB,WAAW,AAEX,sBAAqB,AAErB,YAAW,AAEX,eAAgB,CAChB,AAjGN,oFAsGK,qBAAqB,AACrB,kBAAkB,AAClB,QAAO,AACP,UAAS,AACT,QAAQ,AACR,SAAS,AACT,kCAAkC,AAClC,mCAAmC,AACnC,4BAvImB,CAwInB,AA/GL,0FAwHK,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AAEb,0BA1JkB,AA2JlB,eAAgB,CAKhB,AAjIL,oHA+HM,iBAAiB,CACjB,AAhIN,0FAuIK,YAAa,CACb,AAxIL,+DA6II,kBAAkB,AAClB,mCAAmD,AACnD,qBA9KmB,CA+KnB,AAhJJ,qEAoJI,kBAAkB,AAClB,sBAAsB,AACtB,eAAc,AACd,WAAU,AACV,iBAAkB,CAiBlB,AAzKJ,8EA4JK,qBAAsB,CACtB,AA7JL,yEAgKK,cAAe,CACf,AAjKL,sFAqKM,QAAS,AACT,QAAS,CACT,AAvKN,oFA8KK,kBAAkB,CAClB,AA/KL,qEAkLK,eAAc,AACd,wBAAoD,CACpD,AApLL,uHAwLM,gBAAgB,AAChB,4BAlNkB,CAmNlB,AA1LN,sHA+LM,gBAAgB,AAChB,4BA1NgB,CA2NhB,AAjMN,uHAsMM,0BAhOgB,AAiOhB,kBAAmB,CACnB,AAxMN,+GAgNM,uBAAyB,AAAzB,yBAAyB,AACzB,uBAAuB,AAEvB,oBAAY,AAAZ,aAAY,AACZ,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,sBAAsB,CACtB,AAtNN,oHA2NM,wBAAyB,CACzB,AA5NN,2GAiOM,gBAAe,AACf,gBAAgB,CAChB,AAnON,uIAuOO,gBAAe,AACf,mBAAmB,CACnB,AAzOP,uGA8OM,qBAAqB,CACrB,AA/ON,+CAqPG,qBAAqB,AACrB,kBAAkB,AAIlB,UAAW,CASX,AAnQH,qEA6PI,2BAjRgB,CAkRhB,AA9PJ,sEAiQI,0BArRgB,CAsRhB,AAlQJ,qDAuQG,sBAAqB,AACrB,eAAc,AAEd,6BAAyD,AAUzD,0BAxSiB,AAySjB,6BApToB,AAsTpB,eAAgB,CAChB,AAxRH,oEA6QI,4BAAyD,CAKzD,AAlRJ,iGAgRK,YAAa,CACb,AAjRL,2DA2RG,cAAc,CAKd,AAhSH,iEA8RI,YAAa,CACb,AA/RJ,kCAqSE,kBAAiB,AACjB,WAAU,AACV,mBAAmB,AACnB,cAAa,AACb,gCAAiC,CA2DjC,AApWF,wCA4SG,YAAa,CACb,AA7SH,yDAiTG,sBAAqB,AACrB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AASlB,UAAU,CAYV,AAxUH,wFAsTI,kBAAkB,AAClB,MAAK,AACL,OAAM,AACN,WAAW,CACX,AA1TJ,8DA+TI,qBAAqB,AAErB,cAAa,AACb,aAAY,AAEZ,WAAU,AACV,gBAAiB,AACjB,cAAe,CACf,AAvUJ,mDA4UG,kBAAiB,AACjB,qBAAoB,AACpB,sBApWqB,AAqWrB,mBAAmB,AACnB,iBAAgB,AAChB,UApWe,CAsXf,AAnWH,kFAsVK,gBAAiB,AACjB,4BAAwD,CASxD,AAhWL,sGA0VM,4BA9Wc,CA+Wd,AA3VN,yGA8VM,yBAlXc,CAmXd,AA/VN,6BA0WE,iBAAgB,AAChB,0BAjXwB,AAkXxB,yBArX4B,AAsX5B,iBAAiB,AACjB,WAtXmB,AAuXnB,gBAAgB,AAChB,mBAAkB,AAClB,qBAAgB,AAAhB,iBAAgB,AAEhB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAgFpB,AAtcF,qDAyXG,sBAAqB,AACrB,wBAAuB,AACvB,sBAA2B,AAE3B,gBAAgB,AAEhB,6BAAyD,AAUzD,6BA7ZiB,AA8ZjB,0BA9ZiB,AAgajB,eAAgB,CAMhB,AAlZH,oEAkYI,4BAAyD,CAKzD,AAvYJ,iGAqYK,YAAa,CACb,AAtYL,gEA+YI,mBAAkB,AAClB,kBAAkB,CAClB,AAjZJ,kDAqZG,WA7ZkB,AA8ZlB,oBAAmB,AACnB,oBAAmB,AACnB,iBAAiB,CACjB,AAzZH,kDA6ZG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBAzaoB,AA0apB,iBAAiB,CACjB,AApaH,8CAuaG,YAAY,CACZ,AAxaH,6CA4aG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBAxboB,AAybpB,kBAAiB,AAEjB,6BAA+B,CAiB/B,AArcH,oDAubI,UA5bmB,CA6bnB,AAxbJ,sDA2bI,UAAU,CACV,AA5bJ,kEAgcK,eAAc,AACd,0BAAyB,AACzB,UAAU,CACV,AAncL,wCA0cE,kBAAiB,AACjB,QAAO,AACP,MAAK,AACL,SAAQ,AACR,SAAS,CAUT,AAxdF,6CAidG,OAAM,AACN,UAAU,CACV,AAndH,8CAsdG,gBAAgB,CAChB,AAvdH,6BA6dE,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AAElB,MAAK,AACL,OAAM,AACN,YAAW,AAEX,YAAW,AACX,WAAU,AACV,0BAAyB,AACzB,iBAAiB,CA2BjB,AAngBF,mDA4eG,qBAAoB,AAEpB,cAAa,AACb,kBAAiB,AAEjB,mBAAkB,AAElB,gBAAe,AACf,gBAAgB,AAChB,cAAc,CAad,AAlgBH,qEAyfI,sBAAqB,AACrB,UAAU,CACV,AA3fJ,mEA+fI,sBAAqB,AACrB,aAAa,CACb,AAMJ,eACC,kBAAkB,AAClB,sBAAsB,AACtB,gBAA0C,AAC1C,qBAjiBuB,CA84BvB,AAjXD,kCAQE,wBApiB4B,CAqiB5B,AATF,0CAYE,sBAriBsB,AAsiBtB,cAAe,CACf,AAdF,kCAiBE,wBAxiB6B,CAyiB7B,AAlBF,wCAqBE,yBA3iBkC,AA4iBlC,cAAe,CACf,AAvBF,oCA0BE,sBAAqB,AACrB,eAAe,CACf,AA5BF,gCA+BE,kBAAkB,AAElB,0BA5jBkB,AA6jBlB,6BA7jBkB,AA+jBlB,oBAAoB,AACpB,UAAU,CACV,AAtCF,4CA0CE,kBAAiB,AACjB,QAAO,AACP,SAAQ,AACR,OAAM,AACN,UAAU,CAUV,AAxDF,iDAiDG,MAAK,AACL,WAAW,CACX,AAnDH,kDAsDG,gBAAgB,CAChB,AAvDH,iCA2DE,qBAAqB,AACrB,kBAAkB,AAElB,yBAAyB,AAEzB,UAAW,CASX,AAzEF,uDAmEG,2BA9lBiB,CA+lBjB,AApEH,wDAuEG,0BAlmBiB,CAmmBjB,AAxEH,8CA4EE,sBAAqB,AAErB,YAAW,AAEX,0BA3mBkB,AA4mBlB,4BA5mBkB,CA+nBlB,AApGF,oDAoFG,YAAY,CACZ,AArFH,oDAwFG,cAnoBW,CA8oBX,AAnGH,0DA4FK,iBAAkB,CAKlB,AAjGL,wEA+FM,kBAAkB,CAClB,AAhGN,+BAwGE,qBAAoB,AACpB,kBAAkB,AAClB,sBAAqB,AACrB,YAAW,AACX,4BAvoBkB,AAwoBlB,sBAAqB,AACrB,mBAAkB,AAClB,gBAAe,AACf,sBAAsB,CA0LtB,AA1SF,iDAoHG,yBAxoBkB,AAyoBlB,SAAU,CAMV,AA3HH,+GAwHI,WAAU,AACV,sBAAsB,CACtB,AA1HJ,yDA8HG,qBAjpBgB,CAwpBhB,AArIH,+HAgII,WAAU,AACV,uBAAsB,AAEtB,UAtpBe,CAupBf,AApIJ,6EA0II,YAAa,CACb,AA3IJ,oDAgJG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,uBAAsB,AAEtB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAcpB,AArKH,8EA2JI,SAAS,CAST,AApKJ,wGA+JK,WAAU,AACV,WAAU,AACV,eAAc,AACd,eAAe,CACf,AAnKL,2DAwKG,qBAAoB,AACpB,sBAAqB,AAErB,WAAU,AACV,UAAS,AAET,gBAAe,AACf,iBAAgB,AAEhB,8BAA6B,AAE7B,2BA9sBiB,AA+sBjB,4BA/sBiB,CAgtBjB,AArLH,4DAyLG,2BAAmB,AAAnB,oBAAmB,AACnB,qBAAsB,AAAtB,uBAAsB,AACtB,sBAAkB,AAAlB,mBAAkB,AAClB,sBAAqB,AAErB,YAAW,AACX,WAAU,AAEV,iBAAgB,AAEhB,sBA7tBe,AA8tBf,kBAAiB,AACjB,0BAA4B,AAE5B,eAAe,CAmDf,AA1PH,kEA0MI,eAAc,AACd,yBAA4B,CAC5B,AA5MJ,kGA+MI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,sBAAuB,CAavB,AAlOJ,wGAwNK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eA1vBa,CA2vBb,AAjOL,gGAqOI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,eArwBc,CAkxBd,AAxPJ,sGA8OK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAhxBa,CAixBb,AAvPL,qEA6PG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,uBAAsB,AAEtB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,oBAAoB,AAEpB,YAAW,AACX,WAAU,AAEV,mBAAkB,AAClB,gBAAe,AAEf,WAzyBqB,AA0yBrB,gBAAgB,AAChB,eAAe,CAmBf,AAjSH,2EAiRI,UAAU,CACV,AAlRJ,sHAsRK,eAAe,CACf,AAvRL,sOA+RI,YAAY,CACZ,AAhSJ,wDAoSG,qBAAqB,AACrB,YAAW,AACX,WAAU,AAEV,kBAAkB,CAClB,AAzSH,+BA8SE,sBAAqB,AACrB,6BAA4B,AAC5B,4BA30BkB,AA40BlB,0BAAyB,AACzB,YAAW,AACX,kBAAiB,AACjB,gBAAe,AACf,gBAAgB,AAEhB,cAAe,CAwDf,AA/WF,qCA0TG,eAAc,AACd,+BAA+B,CAC/B,AA5TH,wEAiUI,kBAAiB,AACjB,kCAAkC,AAClC,mCAAmC,AACnC,0BAr2BkB,AAs2BlB,eAAgB,CAChB,AAtUJ,uDA2UG,iBAAiB,CACjB,AA5UH,uDA+UG,iBAAiB,CACjB,AAhVH,uDAmVG,iBAAiB,CACjB,AApVH,uDAuVG,iBAAiB,CACjB,AAxVH,uDA2VG,kBAAkB,CAClB,AA5VH,gDAgWG,qBAAqB,AACrB,QAAQ,AACR,SAAS,AACT,kBAAiB,AACjB,iCAAiC,AACjC,oCAAoC,AACpC,eAAe,AACf,2BAx4BmB,AAy4BnB,qBAAqB,CACrB,AAzWH,oCA4WG,iBAAgB,AAChB,UAAU,CACV,AAKH,4BACC,kBAAkB,AAClB,qBAAoB,AACpB,sBAAqB,AAErB,iBAAgB,AAEhB,gBAv5BuB,AAw5BvB,sBAt5BmB,AAw5BnB,eAx6Ba,AA06Bb,gBAAe,AACf,iCAAiC,AAEjC,aAAc,CA6Bd,AA5CD,6DAkBE,YAAW,AAEX,UAj6BgB,CA86BhB,AAjCF,oEAuBG,WAv6BqB,AAw6BrB,kBA/5BkB,CAg6BlB,AAzBH,mEA4BG,eAAc,AAEd,WA96BqB,AA+6BrB,kBAt6BkB,CAu6BlB,AAhCH,8DAoCE,6BAl7BkB,AAo7BlB,YAAW,AACX,gBAAe,AAEf,WAt7BgB,AAu7BhB,eAAgB,CAChB,AAKF,4BACC,kBAAkB,AAClB,MAAK,AACL,SAAQ,AACR,OAAM,AACN,QAAO,AAEP,aAAc,CACd,AAED,uEACC,sBAAuB,CACvB,AAED,uBACC,wBAAyB,CACzB","file":"tabulator.min.css","sourcesContent":["/* Tabulator v4.4.3 (c) Oliver Folkerd */\n\n\r\n//Main Theme Variables\r\n$backgroundColor: #888 !default; //background color of tabulator\r\n$borderColor:#999 !default; //border to tabulator\r\n$textSize:14px !default; //table text size\r\n\r\n//header themeing\r\n$headerBackgroundColor:#e6e6e6 !default; //border to tabulator\r\n$headerTextColor:#555 !default; //header text colour\r\n$headerBorderColor:#aaa !default;  //header border color\r\n$headerSeperatorColor:#999 !default; //header bottom seperator color\r\n$headerMargin:4px !default; //padding round header\r\n\r\n//column header arrows\r\n$sortArrowActive: #666 !default;\r\n$sortArrowInactive: #bbb !default;\r\n\r\n//row themeing\r\n$rowBackgroundColor:#fff !default; //table row background color\r\n$rowAltBackgroundColor:#EFEFEF !default; //table row background color\r\n$rowBorderColor:#aaa !default; //table border color\r\n$rowTextColor:#333 !default; //table text color\r\n$rowHoverBackground:#bbb !default; //row background color on hover\r\n\r\n$rowSelectedBackground: #9ABCEA !default; //row background color when selected\r\n$rowSelectedBackgroundHover: #769BCC !default;//row background color when selected and hovered\r\n\r\n$editBoxColor:#1D68CD !default; //border color for edit boxes\r\n$errorColor:#dd0000 !default; //error indication\r\n\r\n//footer themeing\r\n$footerBackgroundColor:#e6e6e6 !default; //border to tabulator\r\n$footerTextColor:#555 !default; //footer text colour\r\n$footerBorderColor:#aaa !default; //footer border color\r\n$footerSeperatorColor:#999 !default; //footer bottom seperator color\r\n$footerActiveColor:#d00 !default; //footer bottom active text color\r\n\r\n\r\n\r\n//Tabulator Containing Element\r\n.tabulator{\r\n\tposition: relative;\r\n\r\n\tborder: 1px solid $borderColor;\r\n\r\n\tbackground-color: $backgroundColor;\r\n\r\n\tfont-size:$textSize;\r\n\ttext-align: left;\r\n\toverflow:hidden;\r\n\r\n\t-webkit-transform: translatez(0);\r\n\t-moz-transform: translatez(0);\r\n\t-ms-transform: translatez(0);\r\n\t-o-transform: translatez(0);\r\n\ttransform: translatez(0);\r\n\r\n\t&[tabulator-layout=\"fitDataFill\"]{\r\n\t\t.tabulator-tableHolder{\r\n\t\t\t.tabulator-table{\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t&.tabulator-block-select{\r\n\t\tuser-select: none;\r\n\t}\r\n\r\n\t//column header containing element\r\n\t.tabulator-header{\r\n\t\tposition:relative;\r\n\t\tbox-sizing: border-box;\r\n\r\n\t\twidth:100%;\r\n\r\n\t\tborder-bottom:1px solid $headerSeperatorColor;\r\n\t\tbackground-color: $headerBackgroundColor;\r\n\t\tcolor: $headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:hidden;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t&.tabulator-header-hidden{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\t//individual column header element\r\n\t\t.tabulator-col{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition:relative;\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tborder-right:1px solid $headerBorderColor;\r\n\t\t\tbackground:$headerBackgroundColor;\r\n\t\t\ttext-align:left;\r\n\t\t\tvertical-align: bottom;\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&.tabulator-moving{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tborder:1px solid  $headerSeperatorColor;\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 10%);\r\n\t\t\t\tpointer-events: none;\r\n\t\t\t}\r\n\r\n\t\t\t//hold content of column header\r\n\t\t\t.tabulator-col-content{\r\n\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tpadding:4px;\r\n\r\n\t\t\t\t//hold title of column header\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\twhite-space: nowrap;\r\n\t\t\t\t\toverflow: hidden;\r\n\t\t\t\t\ttext-overflow: ellipsis;\r\n\t\t\t\t\tvertical-align:bottom;\r\n\r\n\t\t\t\t\t//element to hold title editor\r\n\t\t\t\t\t.tabulator-title-editor{\r\n\t\t\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\t\tborder:1px solid #999;\r\n\r\n\t\t\t\t\t\tpadding:1px;\r\n\r\n\t\t\t\t\t\tbackground: #fff;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//column sorter arrow\r\n\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\tdisplay: inline-block;\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\ttop:9px;\r\n\t\t\t\t\tright:8px;\r\n\t\t\t\t\twidth: 0;\r\n\t\t\t\t\theight: 0;\r\n\t\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t//complex header column group\r\n\t\t\t&.tabulator-col-group{\r\n\r\n\t\t\t\t//gelement to hold sub columns in column group\r\n\t\t\t\t.tabulator-col-group-cols{\r\n\t\t\t\t\tposition:relative;\r\n\t\t\t\t\tdisplay: flex;\r\n\r\n\t\t\t\t\tborder-top:1px solid $headerBorderColor;\r\n\t\t\t\t\toverflow: hidden;\r\n\r\n\t\t\t\t\t.tabulator-col:last-child{\r\n\t\t\t\t\t\tmargin-right:-1px;\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//hide left resize handle on first column\r\n\t\t\t&:first-child{\r\n\t\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//placeholder element for sortable columns\r\n\t\t\t&.ui-sortable-helper{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tbackground-color: $headerBackgroundColor !important;\r\n\t\t\t\tborder:1px solid $headerBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t//header filter containing element\r\n\t\t\t.tabulator-header-filter{\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\tmargin-top:2px;\r\n\t\t\t\twidth:100%;\r\n\t\t\t\ttext-align: center;\r\n\r\n\t\t\t\t//styling adjustment for inbuilt editors\r\n\t\t\t\ttextarea{\r\n\t\t\t\t\theight:auto !important;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsvg{\r\n\t\t\t\t\tmargin-top: 3px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinput{\r\n\t\t\t\t\t&::-ms-clear {\r\n\t\t\t\t\t\twidth : 0;\r\n\t\t\t\t\t\theight: 0;\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//styling child elements for sortable columns\r\n\t\t\t&.tabulator-sortable{\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tpadding-right:25px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"none\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"asc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowActive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"desc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\t\t\tborder-bottom: none;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\t&.tabulator-col-vertical{\r\n\t\t\t\t.tabulator-col-content{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\twriting-mode: vertical-rl;\r\n\t\t\t\t\t\ttext-orientation: mixed;\r\n\r\n\t\t\t\t\t\tdisplay:flex;\r\n\t\t\t\t\t\talign-items:center;\r\n\t\t\t\t\t\tjustify-content:center;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\ttransform: rotate(180deg);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-sortable{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\tpadding-top:20px;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\t\tpadding-bottom:20px;\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.tabulator-arrow{\r\n\t\t\t\t\t\tright:calc(50% - 6px);\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.tabulator-frozen{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\tposition: absolute;\r\n\r\n\t\t\t// background-color: inherit;\r\n\r\n\t\t\tz-index: 10;\r\n\r\n\t\t\t&.tabulator-frozen-left{\r\n\t\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-frozen-right{\r\n\t\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\tbackground:lighten($headerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:lighten($headerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\t\t\tborder-bottom:1px solid $headerBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen-rows-holder{\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\t&:empty{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//scrolling element to hold table\r\n\t.tabulator-tableHolder{\r\n\t\tposition:relative;\r\n\t\twidth:100%;\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:auto;\r\n\t\t-webkit-overflow-scrolling: touch;\r\n\r\n\t\t&:focus{\r\n\t\t\toutline: none;\r\n\t\t}\r\n\r\n\t\t//default placeholder element\r\n\t\t.tabulator-placeholder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t&[tabulator-render-mode=\"virtual\"]{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\ttop:0;\r\n\t\t\t\tleft:0;\r\n\t\t\t\theight:100%;\r\n\t\t\t}\r\n\r\n\t\t\twidth:100%;\r\n\r\n\t\t\tspan{\r\n\t\t\t\tdisplay: inline-block;\r\n\r\n\t\t\t\tmargin:0 auto;\r\n\t\t\t\tpadding:10px;\r\n\r\n\t\t\t\tcolor:#ccc;\r\n\t\t\t\tfont-weight: bold;\r\n\t\t\t\tfont-size: 20px;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//element to hold table rows\r\n\t\t.tabulator-table{\r\n\t\t\tposition:relative;\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tbackground-color:$rowBackgroundColor;\r\n\t\t\twhite-space: nowrap;\r\n\t\t\toverflow:visible;\r\n\t\t\tcolor:$rowTextColor;\r\n\r\n\t\t\t//row element\r\n\t\t\t.tabulator-row{\r\n\t\t\t\t&.tabulator-calcs{\r\n\t\t\t\t\tfont-weight: bold;\r\n\t\t\t\t\tbackground:darken($rowAltBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t\t&.tabulator-calcs-top{\r\n\t\t\t\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-calcs-bottom{\r\n\t\t\t\t\t\tborder-top:2px solid $rowBorderColor;\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\t}\r\n\r\n\r\n\r\n\t//footer element\r\n\t.tabulator-footer{\r\n\t\tpadding:5px 10px;\r\n\t\tborder-top:1px solid $footerSeperatorColor;\r\n\t\tbackground-color: $footerBackgroundColor;\r\n\t\ttext-align: right;\r\n\t\tcolor: $footerTextColor;\r\n\t\tfont-weight:bold;\r\n\t\twhite-space:nowrap;\r\n\t\tuser-select:none;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\twidth:calc(100% + 20px);\r\n\t\t\tmargin:-5px -10px 5px -10px;\r\n\r\n\t\t\ttext-align: left;\r\n\r\n\t\t\tbackground:lighten($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:lighten($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-bottom:1px solid $rowBorderColor;\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&:only-child{\r\n\t\t\t\tmargin-bottom:-5px;\r\n\t\t\t\tborder-bottom:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-paginator{\r\n\t\t\tcolor: $footerTextColor;\r\n\t\t\tfont-family:inherit;\r\n\t\t\tfont-weight:inherit;\r\n\t\t\tfont-size:inherit;\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-page-size{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 5px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\t\t}\r\n\r\n\t\t.tabulator-pages{\r\n\t\t\tmargin:0 7px;\r\n\t\t}\r\n\r\n\t\t//pagination button\r\n\t\t.tabulator-page{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 2px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\r\n\t\t\tbackground:rgba(255,255,255,.2);\r\n\r\n\t\t\t&.active{\r\n\t\t\t\tcolor:$footerActiveColor;\r\n\t\t\t}\r\n\r\n\t\t\t&:disabled{\r\n\t\t\t\topacity:.5;\r\n\t\t\t}\r\n\r\n\t\t\t&:not(.disabled){\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground:rgba(0,0,0,.2);\r\n\t\t\t\t\tcolor:#fff;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//column resize handles\r\n\t.tabulator-col-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\ttop:0;\r\n\t\tbottom:0;\r\n\t\twidth:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\tleft:0;\r\n\t\t\tright:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ew-resize;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//holding div that contains loader and covers tabulator element to prevent interaction\r\n\t.tabulator-loader{\r\n\t\tposition:absolute;\r\n\t\tdisplay: flex;\r\n\t\talign-items:center;\r\n\r\n\t\ttop:0;\r\n\t\tleft:0;\r\n\t\tz-index:100;\r\n\r\n\t\theight:100%;\r\n\t\twidth:100%;\r\n\t\tbackground:rgba(0,0,0,.4);\r\n\t\ttext-align:center;\r\n\r\n\t\t//loading message element\r\n\t\t.tabulator-loader-msg{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 auto;\r\n\t\t\tpadding:10px 20px;\r\n\r\n\t\t\tborder-radius:10px;\r\n\r\n\t\t\tbackground:#fff;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:16px;\r\n\r\n\t\t\t//loading message\r\n\t\t\t&.tabulator-loading{\r\n\t\t\t\tborder:4px solid #333;\r\n\t\t\t\tcolor:#000;\r\n\t\t\t}\r\n\r\n\t\t\t//error message\r\n\t\t\t&.tabulator-error{\r\n\t\t\t\tborder:4px solid #D00;\r\n\t\t\t\tcolor:#590000;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n//row element\r\n.tabulator-row{\r\n\tposition: relative;\r\n\tbox-sizing: border-box;\r\n\tmin-height:$textSize + ($headerMargin * 2);\r\n\tbackground-color: $rowBackgroundColor;\r\n\r\n\r\n\t&.tabulator-row-even{\r\n\t\tbackground-color: $rowAltBackgroundColor;\r\n\t}\r\n\r\n\t&.tabulator-selectable:hover{\r\n\t\tbackground-color:$rowHoverBackground;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-selected{\r\n\t\tbackground-color:$rowSelectedBackground;\r\n\t}\r\n\r\n\t&.tabulator-selected:hover{\r\n\t\tbackground-color:$rowSelectedBackgroundHover;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-row-moving{\r\n\t\tborder:1px solid #000;\r\n\t\tbackground:#fff;\r\n\t}\r\n\r\n\t&.tabulator-moving{\r\n\t\tposition: absolute;\r\n\r\n\t\tborder-top:1px solid  $rowBorderColor;\r\n\t\tborder-bottom:1px solid  $rowBorderColor;\r\n\r\n\t\tpointer-events: none;\r\n\t\tz-index:15;\r\n\t}\r\n\r\n\t//row resize handles\r\n\t.tabulator-row-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\tbottom:0;\r\n\t\tleft:0;\r\n\t\theight:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\ttop:0;\r\n\t\t\tbottom:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ns-resize;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-frozen{\r\n\t\tdisplay: inline-block;\r\n\t\tposition: absolute;\r\n\r\n\t\tbackground-color: inherit;\r\n\r\n\t\tz-index: 10;\r\n\r\n\t\t&.tabulator-frozen-left{\r\n\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t&.tabulator-frozen-right{\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-responsive-collapse{\r\n\t\tbox-sizing:border-box;\r\n\r\n\t\tpadding:5px;\r\n\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\t&:empty{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\ttable{\r\n\t\t\tfont-size:$textSize;\r\n\r\n\t\t\ttr{\r\n\t\t\t\ttd{\r\n\t\t\t\t\tposition: relative;\r\n\r\n\t\t\t\t\t&:first-of-type{\r\n\t\t\t\t\t\tpadding-right:10px;\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//cell element\r\n\t.tabulator-cell{\r\n\t\tdisplay:inline-block;\r\n\t\tposition: relative;\r\n\t\tbox-sizing:border-box;\r\n\t\tpadding:4px;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tvertical-align:middle;\r\n\t\twhite-space:nowrap;\r\n\t\toverflow:hidden;\r\n\t\ttext-overflow:ellipsis;\r\n\r\n\r\n\t\t&.tabulator-editing{\r\n\t\t\tborder:1px solid  $editBoxColor;\r\n\t\t\tpadding: 0;\r\n\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-validation-fail{\r\n\t\t\tborder:1px solid $errorColor;\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\r\n\t\t\t\tcolor: $errorColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//hide left resize handle on first column\r\n\t\t&:first-child{\r\n\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//movable row handle\r\n\t\t&.tabulator-row-handle{\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\t\t\tjustify-content:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\t//handle holder\r\n\t\t\t.tabulator-row-handle-box{\r\n\t\t\t\twidth:80%;\r\n\r\n\t\t\t\t//Hamburger element\r\n\t\t\t\t.tabulator-row-handle-bar{\r\n\t\t\t\t\twidth:100%;\r\n\t\t\t\t\theight:3px;\r\n\t\t\t\t\tmargin-top:2px;\r\n\t\t\t\t\tbackground:#666;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-branch{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:9px;\r\n\t\t\twidth:7px;\r\n\r\n\t\t\tmargin-top:-9px;\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control{\r\n\r\n\t\t\tdisplay:inline-flex;\r\n\t\t\tjustify-content:center;\r\n\t\t\talign-items:center;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:11px;\r\n\t\t\twidth:11px;\r\n\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder:1px solid $rowTextColor;\r\n\t\t\tborder-radius:2px;\r\n\t\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\t\toverflow:hidden;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\tcursor:pointer;\r\n\t\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: transparent;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-expand{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-responsive-collapse-toggle{\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\t\t\tjustify-content:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\theight:15px;\r\n\t\t\twidth:15px;\r\n\r\n\t\t\tborder-radius:20px;\r\n\t\t\tbackground:#666;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:1.1em;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\topacity:.7;\r\n\t\t\t}\r\n\r\n\t\t\t&.open{\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\t\tdisplay:initial;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-open{\r\n\t\t\t\t\tdisplay:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\tdisplay:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-traffic-light{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\theight:14px;\r\n\t\t\twidth:14px;\r\n\r\n\t\t\tborder-radius:14px;\r\n\t\t}\r\n\t}\r\n\r\n\t//row grouping element\r\n\t&.tabulator-group{\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-bottom:1px solid #999;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tborder-top:1px solid #999;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:#ccc;\r\n\t\tfont-weight:bold;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:rgba(0,0,0,.1);\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-visible{\r\n\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\tpadding-left:30px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\tpadding-left:50px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\tpadding-left:70px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\tpadding-left:90px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\tpadding-left:110px;\r\n\t\t}\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:#d00;\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n.tabulator-edit-select-list{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tmax-height:200px;\r\n\r\n\tbackground:$rowBackgroundColor;\r\n\tborder:1px solid $rowBorderColor;\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-edit-select-list-item{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\r\n\t\t&.active{\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-group{\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\tpadding:4px;\r\n\t\tpadding-top:6px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\tfont-weight:bold;\r\n\t}\r\n}\r\n\r\n// Table print styling\r\n\r\n.tabulator-print-fullscreen{\r\n\tposition: absolute;\r\n\ttop:0;\r\n\tbottom:0;\r\n\tleft:0;\r\n\tright:0;\r\n\r\n\tz-index: 10000;\r\n}\r\n\r\nbody.tabulator-print-fullscreen-hide>*:not(.tabulator-print-fullscreen){\r\n\tdisplay:none !important;\r\n}\r\n\r\n.tabulator-print-table{\r\n\tborder-collapse: collapse;\r\n}\r\n\r\n"]}
\ No newline at end of file
+{"version":3,"sources":["tabulator.scss"],"names":[],"mappings":"AA0CA,WACC,kBAAkB,AAElB,sBAxCgB,AA0ChB,sBA3CqB,AA6CrB,eA3Ca,AA4Cb,gBAAgB,AAChB,gBAAe,AAMf,uBAAwB,CAqfxB,AApgBD,iFAoBI,cAAc,CACd,AArBJ,kCA0BE,yBAAiB,AAAjB,sBAAiB,AAAjB,qBAAiB,AAAjB,gBAAiB,CACjB,AA3BF,6BA+BE,kBAAiB,AACjB,sBAAsB,AAEtB,WAAU,AAEV,6BAlEwB,AAmExB,yBAtE4B,AAuE5B,WAtEmB,AAuEnB,gBAAgB,AAEhB,mBAAmB,AACnB,gBAAe,AAEf,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAkPpB,AAjSF,qDAkDG,YAAY,CACZ,AAnDH,4CAuDG,qBAAoB,AACpB,kBAAiB,AACjB,sBAAqB,AACrB,4BAzFoB,AA0FpB,mBA5F2B,AA6F3B,gBAAe,AACf,sBAAsB,AACtB,eAAgB,CAoLhB,AAlPH,6DAiEI,kBAAkB,AAClB,sBAhGsB,AAiGtB,mBAA8C,AAC9C,mBAAoB,CACpB,AArEJ,mEAyEI,sBAAqB,AACrB,kBAAkB,AAClB,WAAW,CAsCX,AAjHJ,wFA+EK,sBAAqB,AACrB,WAAW,AAEX,mBAAmB,AACnB,gBAAgB,AAChB,uBAAuB,AACvB,qBAAqB,CAarB,AAlGL,gHAyFM,sBAAsB,AACtB,WAAW,AAEX,sBAAqB,AAErB,YAAW,AAEX,eAAgB,CAChB,AAjGN,oFAsGK,qBAAqB,AACrB,kBAAkB,AAClB,QAAO,AACP,UAAS,AACT,QAAQ,AACR,SAAS,AACT,kCAAkC,AAClC,mCAAmC,AACnC,4BAvImB,CAwInB,AA/GL,0FAwHK,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AAEb,0BA1JkB,AA2JlB,eAAgB,CAKhB,AAjIL,oHA+HM,iBAAiB,CACjB,AAhIN,0FAuIK,YAAa,CACb,AAxIL,+DA6II,kBAAkB,AAClB,mCAAmD,AACnD,qBA9KmB,CA+KnB,AAhJJ,qEAoJI,kBAAkB,AAClB,sBAAsB,AACtB,eAAc,AACd,WAAU,AACV,iBAAkB,CAiBlB,AAzKJ,8EA4JK,qBAAsB,CACtB,AA7JL,yEAgKK,cAAe,CACf,AAjKL,sFAqKM,QAAS,AACT,QAAS,CACT,AAvKN,oFA8KK,kBAAkB,CAClB,AA/KL,qEAkLK,eAAc,AACd,wBAAoD,CACpD,AApLL,uHAwLM,gBAAgB,AAChB,4BAlNkB,CAmNlB,AA1LN,sHA+LM,gBAAgB,AAChB,4BA1NgB,CA2NhB,AAjMN,uHAsMM,0BAhOgB,AAiOhB,kBAAmB,CACnB,AAxMN,+GAgNM,uBAAyB,AAAzB,yBAAyB,AACzB,uBAAuB,AAEvB,oBAAY,AAAZ,aAAY,AACZ,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,sBAAsB,CACtB,AAtNN,oHA2NM,wBAAyB,CACzB,AA5NN,2GAiOM,gBAAe,AACf,gBAAgB,CAChB,AAnON,uIAuOO,gBAAe,AACf,mBAAmB,CACnB,AAzOP,uGA8OM,qBAAqB,CACrB,AA/ON,+CAqPG,qBAAqB,AACrB,kBAAkB,AAIlB,UAAW,CASX,AAnQH,qEA6PI,2BAjRgB,CAkRhB,AA9PJ,sEAiQI,0BArRgB,CAsRhB,AAlQJ,qDAuQG,sBAAqB,AACrB,eAAc,AAEd,6BAAyD,AAUzD,0BAxSiB,AAySjB,6BApToB,AAsTpB,eAAgB,CAChB,AAxRH,oEA6QI,4BAAyD,CAKzD,AAlRJ,iGAgRK,YAAa,CACb,AAjRL,2DA2RG,cAAc,CAKd,AAhSH,iEA8RI,YAAa,CACb,AA/RJ,kCAqSE,kBAAiB,AACjB,WAAU,AACV,mBAAmB,AACnB,cAAa,AACb,gCAAiC,CA2DjC,AApWF,wCA4SG,YAAa,CACb,AA7SH,yDAiTG,sBAAqB,AACrB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AASlB,UAAU,CAYV,AAxUH,wFAsTI,kBAAkB,AAClB,MAAK,AACL,OAAM,AACN,WAAW,CACX,AA1TJ,8DA+TI,qBAAqB,AAErB,cAAa,AACb,aAAY,AAEZ,WAAU,AACV,gBAAiB,AACjB,cAAe,CACf,AAvUJ,mDA4UG,kBAAiB,AACjB,qBAAoB,AACpB,sBApWqB,AAqWrB,mBAAmB,AACnB,iBAAgB,AAChB,UApWe,CAsXf,AAnWH,kFAsVK,gBAAiB,AACjB,4BAAwD,CASxD,AAhWL,sGA0VM,4BA9Wc,CA+Wd,AA3VN,yGA8VM,yBAlXc,CAmXd,AA/VN,6BA0WE,iBAAgB,AAChB,0BAjXwB,AAkXxB,yBArX4B,AAsX5B,iBAAiB,AACjB,WAtXmB,AAuXnB,gBAAgB,AAChB,mBAAkB,AAClB,qBAAgB,AAAhB,iBAAgB,AAEhB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAgFpB,AAtcF,qDAyXG,sBAAqB,AACrB,wBAAuB,AACvB,sBAA2B,AAE3B,gBAAgB,AAEhB,6BAAyD,AAUzD,6BA7ZiB,AA8ZjB,0BA9ZiB,AAgajB,eAAgB,CAMhB,AAlZH,oEAkYI,4BAAyD,CAKzD,AAvYJ,iGAqYK,YAAa,CACb,AAtYL,gEA+YI,mBAAkB,AAClB,kBAAkB,CAClB,AAjZJ,kDAqZG,WA7ZkB,AA8ZlB,oBAAmB,AACnB,oBAAmB,AACnB,iBAAiB,CACjB,AAzZH,kDA6ZG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBAzaoB,AA0apB,iBAAiB,CACjB,AApaH,8CAuaG,YAAY,CACZ,AAxaH,6CA4aG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBAxboB,AAybpB,kBAAiB,AAEjB,6BAA+B,CAiB/B,AArcH,oDAubI,UA5bmB,CA6bnB,AAxbJ,sDA2bI,UAAU,CACV,AA5bJ,kEAgcK,eAAc,AACd,0BAAyB,AACzB,UAAU,CACV,AAncL,wCA0cE,kBAAiB,AACjB,QAAO,AACP,MAAK,AACL,SAAQ,AACR,SAAS,CAUT,AAxdF,6CAidG,OAAM,AACN,UAAU,CACV,AAndH,8CAsdG,gBAAgB,CAChB,AAvdH,6BA6dE,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AAElB,MAAK,AACL,OAAM,AACN,YAAW,AAEX,YAAW,AACX,WAAU,AACV,0BAAyB,AACzB,iBAAiB,CA2BjB,AAngBF,mDA4eG,qBAAoB,AAEpB,cAAa,AACb,kBAAiB,AAEjB,mBAAkB,AAElB,gBAAe,AACf,gBAAgB,AAChB,cAAc,CAad,AAlgBH,qEAyfI,sBAAqB,AACrB,UAAU,CACV,AA3fJ,mEA+fI,sBAAqB,AACrB,aAAa,CACb,AAMJ,eACC,kBAAkB,AAClB,sBAAsB,AACtB,gBAA0C,AAC1C,qBAjiBuB,CAk5BvB,AArXD,kCAQE,wBApiB4B,CAqiB5B,AATF,0CAYE,sBAriBsB,AAsiBtB,cAAe,CACf,AAdF,kCAiBE,wBAxiB6B,CAyiB7B,AAlBF,wCAqBE,yBA3iBkC,AA4iBlC,cAAe,CACf,AAvBF,oCA0BE,sBAAqB,AACrB,eAAe,CACf,AA5BF,gCA+BE,kBAAkB,AAElB,0BA5jBkB,AA6jBlB,6BA7jBkB,AA+jBlB,oBAAoB,AACpB,UAAU,CACV,AAtCF,4CA0CE,kBAAiB,AACjB,QAAO,AACP,SAAQ,AACR,OAAM,AACN,UAAU,CAUV,AAxDF,iDAiDG,MAAK,AACL,WAAW,CACX,AAnDH,kDAsDG,gBAAgB,CAChB,AAvDH,iCA2DE,qBAAqB,AACrB,kBAAkB,AAElB,yBAAyB,AAEzB,UAAW,CASX,AAzEF,uDAmEG,2BA9lBiB,CA+lBjB,AApEH,wDAuEG,0BAlmBiB,CAmmBjB,AAxEH,8CA4EE,sBAAqB,AAErB,YAAW,AAEX,0BA3mBkB,AA4mBlB,4BA5mBkB,CA+nBlB,AApGF,oDAoFG,YAAY,CACZ,AArFH,oDAwFG,cAnoBW,CA8oBX,AAnGH,0DA4FK,iBAAkB,CAKlB,AAjGL,wEA+FM,kBAAkB,CAClB,AAhGN,+BAwGE,qBAAoB,AACpB,kBAAkB,AAClB,sBAAqB,AACrB,YAAW,AACX,4BAvoBkB,AAwoBlB,sBAAqB,AACrB,mBAAkB,AAClB,gBAAe,AACf,sBAAsB,CA0LtB,AA1SF,iDAoHG,yBAxoBkB,AAyoBlB,SAAU,CAMV,AA3HH,+GAwHI,WAAU,AACV,sBAAsB,CACtB,AA1HJ,yDA8HG,qBAjpBgB,CAwpBhB,AArIH,+HAgII,WAAU,AACV,uBAAsB,AAEtB,UAtpBe,CAupBf,AApIJ,6EA0II,YAAa,CACb,AA3IJ,oDAgJG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,uBAAsB,AAEtB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAcpB,AArKH,8EA2JI,SAAS,CAST,AApKJ,wGA+JK,WAAU,AACV,WAAU,AACV,eAAc,AACd,eAAe,CACf,AAnKL,2DAwKG,qBAAoB,AACpB,sBAAqB,AAErB,WAAU,AACV,UAAS,AAET,gBAAe,AACf,iBAAgB,AAEhB,8BAA6B,AAE7B,2BA9sBiB,AA+sBjB,4BA/sBiB,CAgtBjB,AArLH,4DAyLG,2BAAmB,AAAnB,oBAAmB,AACnB,qBAAsB,AAAtB,uBAAsB,AACtB,sBAAkB,AAAlB,mBAAkB,AAClB,sBAAqB,AAErB,YAAW,AACX,WAAU,AAEV,iBAAgB,AAEhB,sBA7tBe,AA8tBf,kBAAiB,AACjB,0BAA4B,AAE5B,eAAe,CAmDf,AA1PH,kEA0MI,eAAc,AACd,yBAA4B,CAC5B,AA5MJ,kGA+MI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,sBAAuB,CAavB,AAlOJ,wGAwNK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eA1vBa,CA2vBb,AAjOL,gGAqOI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,eArwBc,CAkxBd,AAxPJ,sGA8OK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAhxBa,CAixBb,AAvPL,qEA6PG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,uBAAsB,AAEtB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,oBAAoB,AAEpB,YAAW,AACX,WAAU,AAEV,mBAAkB,AAClB,gBAAe,AAEf,WAzyBqB,AA0yBrB,gBAAgB,AAChB,eAAe,CAmBf,AAjSH,2EAiRI,UAAU,CACV,AAlRJ,sHAsRK,eAAe,CACf,AAvRL,sOA+RI,YAAY,CACZ,AAhSJ,wDAoSG,qBAAqB,AACrB,YAAW,AACX,WAAU,AAEV,kBAAkB,CAClB,AAzSH,+BA8SE,sBAAqB,AACrB,6BAA4B,AAC5B,4BA30BkB,AA40BlB,0BAAyB,AACzB,YAAW,AACX,kBAAiB,AACjB,gBAAe,AACf,gBAAgB,AAEhB,cAAe,CA4Df,AAnXF,qCA0TG,eAAc,AACd,+BAA+B,CAC/B,AA5TH,wEAiUI,kBAAiB,AACjB,kCAAkC,AAClC,mCAAmC,AACnC,0BAr2BkB,AAs2BlB,eAAgB,CAChB,AAtUJ,uDA2UG,iBAAiB,CACjB,AA5UH,uDA+UG,iBAAiB,CACjB,AAhVH,uDAmVG,iBAAiB,CACjB,AApVH,uDAuVG,iBAAiB,CACjB,AAxVH,uDA2VG,kBAAkB,CAClB,AA5VH,uDA+VG,oBAAqB,CACrB,AAhWH,gDAoWG,qBAAqB,AACrB,QAAQ,AACR,SAAS,AACT,kBAAiB,AACjB,iCAAiC,AACjC,oCAAoC,AACpC,eAAe,AACf,2BA54BmB,AA64BnB,qBAAqB,CACrB,AA7WH,oCAgXG,iBAAgB,AAChB,UAAU,CACV,AAKH,4BACC,kBAAkB,AAClB,qBAAoB,AACpB,sBAAqB,AAErB,iBAAgB,AAEhB,gBA35BuB,AA45BvB,sBA15BmB,AA45BnB,eA56Ba,AA86Bb,gBAAe,AACf,iCAAiC,AAEjC,aAAc,CA6Bd,AA5CD,6DAkBE,YAAW,AAEX,UAr6BgB,CAk7BhB,AAjCF,oEAuBG,WA36BqB,AA46BrB,kBAn6BkB,CAo6BlB,AAzBH,mEA4BG,eAAc,AAEd,WAl7BqB,AAm7BrB,kBA16BkB,CA26BlB,AAhCH,8DAoCE,6BAt7BkB,AAw7BlB,YAAW,AACX,gBAAe,AAEf,WA17BgB,AA27BhB,eAAgB,CAChB,AAKF,4BACC,kBAAkB,AAClB,MAAK,AACL,SAAQ,AACR,OAAM,AACN,QAAO,AAEP,aAAc,CACd,AAED,uEACC,sBAAuB,CACvB,AAED,uBACC,wBAAyB,CACzB","file":"tabulator.min.css","sourcesContent":["/* Tabulator v4.5.1 (c) Oliver Folkerd */\n\n\r\n//Main Theme Variables\r\n$backgroundColor: #888 !default; //background color of tabulator\r\n$borderColor:#999 !default; //border to tabulator\r\n$textSize:14px !default; //table text size\r\n\r\n//header themeing\r\n$headerBackgroundColor:#e6e6e6 !default; //border to tabulator\r\n$headerTextColor:#555 !default; //header text colour\r\n$headerBorderColor:#aaa !default;  //header border color\r\n$headerSeperatorColor:#999 !default; //header bottom seperator color\r\n$headerMargin:4px !default; //padding round header\r\n\r\n//column header arrows\r\n$sortArrowActive: #666 !default;\r\n$sortArrowInactive: #bbb !default;\r\n\r\n//row themeing\r\n$rowBackgroundColor:#fff !default; //table row background color\r\n$rowAltBackgroundColor:#EFEFEF !default; //table row background color\r\n$rowBorderColor:#aaa !default; //table border color\r\n$rowTextColor:#333 !default; //table text color\r\n$rowHoverBackground:#bbb !default; //row background color on hover\r\n\r\n$rowSelectedBackground: #9ABCEA !default; //row background color when selected\r\n$rowSelectedBackgroundHover: #769BCC !default;//row background color when selected and hovered\r\n\r\n$editBoxColor:#1D68CD !default; //border color for edit boxes\r\n$errorColor:#dd0000 !default; //error indication\r\n\r\n//footer themeing\r\n$footerBackgroundColor:#e6e6e6 !default; //border to tabulator\r\n$footerTextColor:#555 !default; //footer text colour\r\n$footerBorderColor:#aaa !default; //footer border color\r\n$footerSeperatorColor:#999 !default; //footer bottom seperator color\r\n$footerActiveColor:#d00 !default; //footer bottom active text color\r\n\r\n\r\n\r\n//Tabulator Containing Element\r\n.tabulator{\r\n\tposition: relative;\r\n\r\n\tborder: 1px solid $borderColor;\r\n\r\n\tbackground-color: $backgroundColor;\r\n\r\n\tfont-size:$textSize;\r\n\ttext-align: left;\r\n\toverflow:hidden;\r\n\r\n\t-webkit-transform: translatez(0);\r\n\t-moz-transform: translatez(0);\r\n\t-ms-transform: translatez(0);\r\n\t-o-transform: translatez(0);\r\n\ttransform: translatez(0);\r\n\r\n\t&[tabulator-layout=\"fitDataFill\"]{\r\n\t\t.tabulator-tableHolder{\r\n\t\t\t.tabulator-table{\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t&.tabulator-block-select{\r\n\t\tuser-select: none;\r\n\t}\r\n\r\n\t//column header containing element\r\n\t.tabulator-header{\r\n\t\tposition:relative;\r\n\t\tbox-sizing: border-box;\r\n\r\n\t\twidth:100%;\r\n\r\n\t\tborder-bottom:1px solid $headerSeperatorColor;\r\n\t\tbackground-color: $headerBackgroundColor;\r\n\t\tcolor: $headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:hidden;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t&.tabulator-header-hidden{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\t//individual column header element\r\n\t\t.tabulator-col{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition:relative;\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tborder-right:1px solid $headerBorderColor;\r\n\t\t\tbackground:$headerBackgroundColor;\r\n\t\t\ttext-align:left;\r\n\t\t\tvertical-align: bottom;\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&.tabulator-moving{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tborder:1px solid  $headerSeperatorColor;\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 10%);\r\n\t\t\t\tpointer-events: none;\r\n\t\t\t}\r\n\r\n\t\t\t//hold content of column header\r\n\t\t\t.tabulator-col-content{\r\n\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tpadding:4px;\r\n\r\n\t\t\t\t//hold title of column header\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\twhite-space: nowrap;\r\n\t\t\t\t\toverflow: hidden;\r\n\t\t\t\t\ttext-overflow: ellipsis;\r\n\t\t\t\t\tvertical-align:bottom;\r\n\r\n\t\t\t\t\t//element to hold title editor\r\n\t\t\t\t\t.tabulator-title-editor{\r\n\t\t\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\t\tborder:1px solid #999;\r\n\r\n\t\t\t\t\t\tpadding:1px;\r\n\r\n\t\t\t\t\t\tbackground: #fff;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//column sorter arrow\r\n\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\tdisplay: inline-block;\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\ttop:9px;\r\n\t\t\t\t\tright:8px;\r\n\t\t\t\t\twidth: 0;\r\n\t\t\t\t\theight: 0;\r\n\t\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t//complex header column group\r\n\t\t\t&.tabulator-col-group{\r\n\r\n\t\t\t\t//gelement to hold sub columns in column group\r\n\t\t\t\t.tabulator-col-group-cols{\r\n\t\t\t\t\tposition:relative;\r\n\t\t\t\t\tdisplay: flex;\r\n\r\n\t\t\t\t\tborder-top:1px solid $headerBorderColor;\r\n\t\t\t\t\toverflow: hidden;\r\n\r\n\t\t\t\t\t.tabulator-col:last-child{\r\n\t\t\t\t\t\tmargin-right:-1px;\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//hide left resize handle on first column\r\n\t\t\t&:first-child{\r\n\t\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//placeholder element for sortable columns\r\n\t\t\t&.ui-sortable-helper{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tbackground-color: $headerBackgroundColor !important;\r\n\t\t\t\tborder:1px solid $headerBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t//header filter containing element\r\n\t\t\t.tabulator-header-filter{\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\tmargin-top:2px;\r\n\t\t\t\twidth:100%;\r\n\t\t\t\ttext-align: center;\r\n\r\n\t\t\t\t//styling adjustment for inbuilt editors\r\n\t\t\t\ttextarea{\r\n\t\t\t\t\theight:auto !important;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsvg{\r\n\t\t\t\t\tmargin-top: 3px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinput{\r\n\t\t\t\t\t&::-ms-clear {\r\n\t\t\t\t\t\twidth : 0;\r\n\t\t\t\t\t\theight: 0;\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//styling child elements for sortable columns\r\n\t\t\t&.tabulator-sortable{\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tpadding-right:25px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"none\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"asc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowActive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"desc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\t\t\tborder-bottom: none;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\t&.tabulator-col-vertical{\r\n\t\t\t\t.tabulator-col-content{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\twriting-mode: vertical-rl;\r\n\t\t\t\t\t\ttext-orientation: mixed;\r\n\r\n\t\t\t\t\t\tdisplay:flex;\r\n\t\t\t\t\t\talign-items:center;\r\n\t\t\t\t\t\tjustify-content:center;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\ttransform: rotate(180deg);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-sortable{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\tpadding-top:20px;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\t\tpadding-bottom:20px;\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.tabulator-arrow{\r\n\t\t\t\t\t\tright:calc(50% - 6px);\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.tabulator-frozen{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\tposition: absolute;\r\n\r\n\t\t\t// background-color: inherit;\r\n\r\n\t\t\tz-index: 10;\r\n\r\n\t\t\t&.tabulator-frozen-left{\r\n\t\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-frozen-right{\r\n\t\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\tbackground:lighten($headerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:lighten($headerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\t\t\tborder-bottom:1px solid $headerBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen-rows-holder{\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\t&:empty{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//scrolling element to hold table\r\n\t.tabulator-tableHolder{\r\n\t\tposition:relative;\r\n\t\twidth:100%;\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:auto;\r\n\t\t-webkit-overflow-scrolling: touch;\r\n\r\n\t\t&:focus{\r\n\t\t\toutline: none;\r\n\t\t}\r\n\r\n\t\t//default placeholder element\r\n\t\t.tabulator-placeholder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t&[tabulator-render-mode=\"virtual\"]{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\ttop:0;\r\n\t\t\t\tleft:0;\r\n\t\t\t\theight:100%;\r\n\t\t\t}\r\n\r\n\t\t\twidth:100%;\r\n\r\n\t\t\tspan{\r\n\t\t\t\tdisplay: inline-block;\r\n\r\n\t\t\t\tmargin:0 auto;\r\n\t\t\t\tpadding:10px;\r\n\r\n\t\t\t\tcolor:#ccc;\r\n\t\t\t\tfont-weight: bold;\r\n\t\t\t\tfont-size: 20px;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//element to hold table rows\r\n\t\t.tabulator-table{\r\n\t\t\tposition:relative;\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tbackground-color:$rowBackgroundColor;\r\n\t\t\twhite-space: nowrap;\r\n\t\t\toverflow:visible;\r\n\t\t\tcolor:$rowTextColor;\r\n\r\n\t\t\t//row element\r\n\t\t\t.tabulator-row{\r\n\t\t\t\t&.tabulator-calcs{\r\n\t\t\t\t\tfont-weight: bold;\r\n\t\t\t\t\tbackground:darken($rowAltBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t\t&.tabulator-calcs-top{\r\n\t\t\t\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-calcs-bottom{\r\n\t\t\t\t\t\tborder-top:2px solid $rowBorderColor;\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\t}\r\n\r\n\r\n\r\n\t//footer element\r\n\t.tabulator-footer{\r\n\t\tpadding:5px 10px;\r\n\t\tborder-top:1px solid $footerSeperatorColor;\r\n\t\tbackground-color: $footerBackgroundColor;\r\n\t\ttext-align: right;\r\n\t\tcolor: $footerTextColor;\r\n\t\tfont-weight:bold;\r\n\t\twhite-space:nowrap;\r\n\t\tuser-select:none;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\twidth:calc(100% + 20px);\r\n\t\t\tmargin:-5px -10px 5px -10px;\r\n\r\n\t\t\ttext-align: left;\r\n\r\n\t\t\tbackground:lighten($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:lighten($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-bottom:1px solid $rowBorderColor;\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&:only-child{\r\n\t\t\t\tmargin-bottom:-5px;\r\n\t\t\t\tborder-bottom:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-paginator{\r\n\t\t\tcolor: $footerTextColor;\r\n\t\t\tfont-family:inherit;\r\n\t\t\tfont-weight:inherit;\r\n\t\t\tfont-size:inherit;\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-page-size{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 5px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\t\t}\r\n\r\n\t\t.tabulator-pages{\r\n\t\t\tmargin:0 7px;\r\n\t\t}\r\n\r\n\t\t//pagination button\r\n\t\t.tabulator-page{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 2px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\r\n\t\t\tbackground:rgba(255,255,255,.2);\r\n\r\n\t\t\t&.active{\r\n\t\t\t\tcolor:$footerActiveColor;\r\n\t\t\t}\r\n\r\n\t\t\t&:disabled{\r\n\t\t\t\topacity:.5;\r\n\t\t\t}\r\n\r\n\t\t\t&:not(.disabled){\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground:rgba(0,0,0,.2);\r\n\t\t\t\t\tcolor:#fff;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//column resize handles\r\n\t.tabulator-col-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\ttop:0;\r\n\t\tbottom:0;\r\n\t\twidth:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\tleft:0;\r\n\t\t\tright:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ew-resize;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//holding div that contains loader and covers tabulator element to prevent interaction\r\n\t.tabulator-loader{\r\n\t\tposition:absolute;\r\n\t\tdisplay: flex;\r\n\t\talign-items:center;\r\n\r\n\t\ttop:0;\r\n\t\tleft:0;\r\n\t\tz-index:100;\r\n\r\n\t\theight:100%;\r\n\t\twidth:100%;\r\n\t\tbackground:rgba(0,0,0,.4);\r\n\t\ttext-align:center;\r\n\r\n\t\t//loading message element\r\n\t\t.tabulator-loader-msg{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 auto;\r\n\t\t\tpadding:10px 20px;\r\n\r\n\t\t\tborder-radius:10px;\r\n\r\n\t\t\tbackground:#fff;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:16px;\r\n\r\n\t\t\t//loading message\r\n\t\t\t&.tabulator-loading{\r\n\t\t\t\tborder:4px solid #333;\r\n\t\t\t\tcolor:#000;\r\n\t\t\t}\r\n\r\n\t\t\t//error message\r\n\t\t\t&.tabulator-error{\r\n\t\t\t\tborder:4px solid #D00;\r\n\t\t\t\tcolor:#590000;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n//row element\r\n.tabulator-row{\r\n\tposition: relative;\r\n\tbox-sizing: border-box;\r\n\tmin-height:$textSize + ($headerMargin * 2);\r\n\tbackground-color: $rowBackgroundColor;\r\n\r\n\r\n\t&.tabulator-row-even{\r\n\t\tbackground-color: $rowAltBackgroundColor;\r\n\t}\r\n\r\n\t&.tabulator-selectable:hover{\r\n\t\tbackground-color:$rowHoverBackground;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-selected{\r\n\t\tbackground-color:$rowSelectedBackground;\r\n\t}\r\n\r\n\t&.tabulator-selected:hover{\r\n\t\tbackground-color:$rowSelectedBackgroundHover;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-row-moving{\r\n\t\tborder:1px solid #000;\r\n\t\tbackground:#fff;\r\n\t}\r\n\r\n\t&.tabulator-moving{\r\n\t\tposition: absolute;\r\n\r\n\t\tborder-top:1px solid  $rowBorderColor;\r\n\t\tborder-bottom:1px solid  $rowBorderColor;\r\n\r\n\t\tpointer-events: none;\r\n\t\tz-index:15;\r\n\t}\r\n\r\n\t//row resize handles\r\n\t.tabulator-row-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\tbottom:0;\r\n\t\tleft:0;\r\n\t\theight:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\ttop:0;\r\n\t\t\tbottom:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ns-resize;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-frozen{\r\n\t\tdisplay: inline-block;\r\n\t\tposition: absolute;\r\n\r\n\t\tbackground-color: inherit;\r\n\r\n\t\tz-index: 10;\r\n\r\n\t\t&.tabulator-frozen-left{\r\n\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t&.tabulator-frozen-right{\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-responsive-collapse{\r\n\t\tbox-sizing:border-box;\r\n\r\n\t\tpadding:5px;\r\n\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\t&:empty{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\ttable{\r\n\t\t\tfont-size:$textSize;\r\n\r\n\t\t\ttr{\r\n\t\t\t\ttd{\r\n\t\t\t\t\tposition: relative;\r\n\r\n\t\t\t\t\t&:first-of-type{\r\n\t\t\t\t\t\tpadding-right:10px;\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//cell element\r\n\t.tabulator-cell{\r\n\t\tdisplay:inline-block;\r\n\t\tposition: relative;\r\n\t\tbox-sizing:border-box;\r\n\t\tpadding:4px;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tvertical-align:middle;\r\n\t\twhite-space:nowrap;\r\n\t\toverflow:hidden;\r\n\t\ttext-overflow:ellipsis;\r\n\r\n\r\n\t\t&.tabulator-editing{\r\n\t\t\tborder:1px solid  $editBoxColor;\r\n\t\t\tpadding: 0;\r\n\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-validation-fail{\r\n\t\t\tborder:1px solid $errorColor;\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\r\n\t\t\t\tcolor: $errorColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//hide left resize handle on first column\r\n\t\t&:first-child{\r\n\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//movable row handle\r\n\t\t&.tabulator-row-handle{\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\t\t\tjustify-content:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\t//handle holder\r\n\t\t\t.tabulator-row-handle-box{\r\n\t\t\t\twidth:80%;\r\n\r\n\t\t\t\t//Hamburger element\r\n\t\t\t\t.tabulator-row-handle-bar{\r\n\t\t\t\t\twidth:100%;\r\n\t\t\t\t\theight:3px;\r\n\t\t\t\t\tmargin-top:2px;\r\n\t\t\t\t\tbackground:#666;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-branch{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:9px;\r\n\t\t\twidth:7px;\r\n\r\n\t\t\tmargin-top:-9px;\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control{\r\n\r\n\t\t\tdisplay:inline-flex;\r\n\t\t\tjustify-content:center;\r\n\t\t\talign-items:center;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:11px;\r\n\t\t\twidth:11px;\r\n\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder:1px solid $rowTextColor;\r\n\t\t\tborder-radius:2px;\r\n\t\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\t\toverflow:hidden;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\tcursor:pointer;\r\n\t\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: transparent;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-expand{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-responsive-collapse-toggle{\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\t\t\tjustify-content:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\theight:15px;\r\n\t\t\twidth:15px;\r\n\r\n\t\t\tborder-radius:20px;\r\n\t\t\tbackground:#666;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:1.1em;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\topacity:.7;\r\n\t\t\t}\r\n\r\n\t\t\t&.open{\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\t\tdisplay:initial;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-open{\r\n\t\t\t\t\tdisplay:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\tdisplay:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-traffic-light{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\theight:14px;\r\n\t\t\twidth:14px;\r\n\r\n\t\t\tborder-radius:14px;\r\n\t\t}\r\n\t}\r\n\r\n\t//row grouping element\r\n\t&.tabulator-group{\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-bottom:1px solid #999;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tborder-top:1px solid #999;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:#ccc;\r\n\t\tfont-weight:bold;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:rgba(0,0,0,.1);\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-visible{\r\n\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\tpadding-left:30px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\tpadding-left:50px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\tpadding-left:70px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\tpadding-left:90px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\tpadding-left:110px;\r\n\t\t}\r\n\r\n\t\t.tabulator-group-toggle{\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:#d00;\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n.tabulator-edit-select-list{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tmax-height:200px;\r\n\r\n\tbackground:$rowBackgroundColor;\r\n\tborder:1px solid $rowBorderColor;\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-edit-select-list-item{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\r\n\t\t&.active{\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-group{\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\tpadding:4px;\r\n\t\tpadding-top:6px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\tfont-weight:bold;\r\n\t}\r\n}\r\n\r\n// Table print styling\r\n\r\n.tabulator-print-fullscreen{\r\n\tposition: absolute;\r\n\ttop:0;\r\n\tbottom:0;\r\n\tleft:0;\r\n\tright:0;\r\n\r\n\tz-index: 10000;\r\n}\r\n\r\nbody.tabulator-print-fullscreen-hide>*:not(.tabulator-print-fullscreen){\r\n\tdisplay:none !important;\r\n}\r\n\r\n.tabulator-print-table{\r\n\tborder-collapse: collapse;\r\n}\r\n\r\n"]}
\ No newline at end of file
index 10fb2f0..dba4a3d 100644 (file)
@@ -1,4 +1,4 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 .tabulator {
   position: relative;
   border: 1px solid #333;
   padding-left: 110px;
 }
 
+.tabulator-row.tabulator-group .tabulator-group-toggle {
+  display: inline-block;
+}
+
 .tabulator-row.tabulator-group .tabulator-arrow {
   display: inline-block;
   width: 0;
index cd1bf7b..7fdd9fd 100644 (file)
@@ -1,3 +1,3 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
-.tabulator{position:relative;border:1px solid #333;background-color:#222;overflow:hidden;font-size:14px;text-align:left;transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator.tabulator-block-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:#333;color:#fff;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-color:#333;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #999;background:#1a1a1a;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-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:#444;color:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{display:inline-block;position:absolute;top:9px;right:8px;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:-ms-flexbox;display:flex;border-top:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child{margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col.ui-sortable-helper{position:absolute;background-color:#1a1a1a!important;border:1px solid #aaa}.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,.tabulator .tabulator-header .tabulator-col .tabulator-header-filter select{border:1px solid #999;background:#444;color:#fff}.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:#1a1a1a}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-arrow{border-top:6px solid #666;border-bottom:none}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack: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-arrow{right:calc(50% - 6px)}.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 #888}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #888}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;min-width:600%;background:#1a1a1a!important;border-top:1px solid #888;border-bottom:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#1a1a1a!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:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{position:absolute;top:0;left:0;height:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#eee;font-weight:700;font-size:20px}.tabulator .tabulator-tableHolder .tabulator-table{position:relative;display:inline-block;background-color:#666;white-space:nowrap;overflow:visible;color:#fff}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#373737!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #888}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #888}.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-footer{padding:5px 10px;border-top:1px solid #999;background-color:#333;text-align:right;color:#333;font-weight:700;white-space:nowrap;-ms-user-select:none;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:#262626!important;border-bottom:1px solid #888;border-top:1px solid #888;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#262626!important;color:#fff}.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 label{color:#fff}.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);color:#333;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page.active{color:#fff}.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-loader{position:absolute;display:-ms-flexbox;display:flex;-ms-flex-align:center;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:#666}.tabulator-row:nth-child(2n){background-color:#444}.tabulator-row.tabulator-selectable:hover{background-color:#999;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#000}.tabulator-row.tabulator-selected:hover{background-color:#888;cursor:pointer}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #888;border-bottom:1px solid #888;pointer-events:none!important;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 #888}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #888}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #888;border-bottom:1px solid #888}.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 #888;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #999;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:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items: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 #888;border-bottom:2px solid #888}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #fff;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:#fff}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#fff}.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:#fff}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack: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:#fff;color:#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 #888;border-top:1px solid #999;padding:5px;padding-left:10px;background:#ccc;font-weight:700;color:#333;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-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:#666}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#fff;border:1px solid #888;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:#666}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#999;background:#444}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:#999;background:#666}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #888;padding:4px;padding-top:6px;color:#fff;font-weight:700}.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 v4.5.1 (c) Oliver Folkerd */
+.tabulator{position:relative;border:1px solid #333;background-color:#222;overflow:hidden;font-size:14px;text-align:left;transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator.tabulator-block-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:#333;color:#fff;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-color:#333;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #999;background:#1a1a1a;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-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:#444;color:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{display:inline-block;position:absolute;top:9px;right:8px;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:-ms-flexbox;display:flex;border-top:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child{margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col.ui-sortable-helper{position:absolute;background-color:#1a1a1a!important;border:1px solid #aaa}.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,.tabulator .tabulator-header .tabulator-col .tabulator-header-filter select{border:1px solid #999;background:#444;color:#fff}.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:#1a1a1a}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-arrow{border-top:6px solid #666;border-bottom:none}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack: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-arrow{right:calc(50% - 6px)}.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 #888}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #888}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;min-width:600%;background:#1a1a1a!important;border-top:1px solid #888;border-bottom:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#1a1a1a!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:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{position:absolute;top:0;left:0;height:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#eee;font-weight:700;font-size:20px}.tabulator .tabulator-tableHolder .tabulator-table{position:relative;display:inline-block;background-color:#666;white-space:nowrap;overflow:visible;color:#fff}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#373737!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #888}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #888}.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-footer{padding:5px 10px;border-top:1px solid #999;background-color:#333;text-align:right;color:#333;font-weight:700;white-space:nowrap;-ms-user-select:none;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:#262626!important;border-bottom:1px solid #888;border-top:1px solid #888;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#262626!important;color:#fff}.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 label{color:#fff}.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);color:#333;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page.active{color:#fff}.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-loader{position:absolute;display:-ms-flexbox;display:flex;-ms-flex-align:center;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:#666}.tabulator-row:nth-child(2n){background-color:#444}.tabulator-row.tabulator-selectable:hover{background-color:#999;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#000}.tabulator-row.tabulator-selected:hover{background-color:#888;cursor:pointer}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #888;border-bottom:1px solid #888;pointer-events:none!important;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 #888}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #888}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #888;border-bottom:1px solid #888}.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 #888;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #999;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:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items: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 #888;border-bottom:2px solid #888}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #fff;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:#fff}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#fff}.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:#fff}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack: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:#fff;color:#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 #888;border-top:1px solid #999;padding:5px;padding-left:10px;background:#ccc;font-weight:700;color:#333;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:#666}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#fff;border:1px solid #888;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:#666}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#999;background:#444}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:#999;background:#666}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #888;padding:4px;padding-top:6px;color:#fff;font-weight:700}.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}
 /*# sourceMappingURL=tabulator_midnight.min.css.map */
index 5210ecf..ccb3288 100644 (file)
@@ -1 +1 @@
-{"version":3,"sources":["tabulator_midnight.scss"],"names":[],"mappings":"AAyCA,WACC,kBAAkB,AAClB,sBAtCgB,AAuChB,sBAxCqB,AAyCrB,gBAAe,AACf,eAxCa,AAyCb,gBAAgB,AAMhB,uBAAwB,CAkgBxB,AA9gBD,iFAiBI,cAAc,CACd,AAlBJ,kCAuBE,yBAAiB,AAAjB,sBAAiB,AAAjB,qBAAiB,AAAjB,gBAAiB,CACjB,AAxBF,6BA4BE,kBAAiB,AACjB,sBAAsB,AAEtB,WAAU,AAEV,6BA9DwB,AA+DxB,sBAlEyB,AAmEzB,WAlEmB,AAmEnB,gBAAgB,AAEhB,mBAAmB,AACnB,gBAAe,AAEf,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CA4PpB,AAxSF,qDA+CG,YAAY,CACZ,AAhDH,4CAoDG,qBAAoB,AACpB,kBAAiB,AACjB,sBAAqB,AACrB,4BArFoB,AAsFpB,sBAxFwB,AAyFxB,gBAAe,AACf,sBAAsB,AACtB,eAAgB,CA6LhB,AAxPH,6DA8DI,kBAAkB,AAClB,sBA5FsB,AA6FtB,mBAA8C,AAC9C,mBAAoB,CACpB,AAlEJ,mEAsEI,sBAAqB,AACrB,kBAAkB,AAClB,WAAW,CAwCX,AAhHJ,wFA4EK,sBAAqB,AACrB,WAAW,AAEX,mBAAmB,AACnB,gBAAgB,AAChB,uBAAuB,AACvB,qBAAqB,CAerB,AAjGL,gHAsFM,sBAAsB,AACtB,WAAW,AAEX,sBAAqB,AAErB,YAAW,AAEX,gBAAgB,AAChB,UAAW,CACX,AA/FN,oFAqGK,qBAAqB,AACrB,kBAAkB,AAClB,QAAO,AACP,UAAS,AACT,QAAQ,AACR,SAAS,AACT,kCAAkC,AAClC,mCAAmC,AACnC,4BArImB,CAsInB,AA9GL,0FAuHK,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AAEb,0BAxJkB,AAyJlB,eAAgB,CAKhB,AAhIL,oHA8HM,iBAAiB,CACjB,AA/HN,0FAsIK,YAAa,CACb,AAvIL,+DA4II,kBAAkB,AAClB,mCAAgE,AAChE,qBA5KmB,CA6KnB,AA/IJ,qEAmJI,kBAAkB,AAClB,sBAAsB,AACtB,eAAc,AACd,WAAU,AACV,iBAAkB,CAuBlB,AA9KJ,8EA2JK,qBAAsB,CACtB,AA5JL,yEA+JK,cAAe,CACf,AAhKL,uJAmKK,sBAAqB,AACrB,gBAAgB,AAChB,UAAW,CACX,AAtKL,sFA0KM,QAAS,AACT,QAAS,CACT,AA5KN,oFAmLK,kBAAkB,CAClB,AApLL,qEAuLK,eAAc,AACd,wBAAoD,CACpD,AAzLL,uHA8LM,gBAAgB,AAChB,4BAvNkB,CAwNlB,AAhMN,sHAqMM,gBAAgB,AAChB,4BA/NgB,CAgOhB,AAvMN,uHA4MM,0BArOgB,AAsOhB,kBAAmB,CACnB,AA9MN,+GAqNM,uBAAyB,AAAzB,yBAAyB,AACzB,uBAAuB,AAEvB,oBAAY,AAAZ,aAAY,AACZ,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,sBAAsB,CACtB,AA3NN,oHAgOM,wBAAyB,CACzB,AAjON,2GAsOM,gBAAe,AACf,gBAAgB,CAChB,AAxON,uIA4OO,gBAAe,AACf,mBAAmB,CACnB,AA9OP,uGAmPM,qBAAqB,CACrB,AApPN,+CA2PG,qBAAqB,AACrB,kBAAkB,AAIlB,UAAW,CASX,AAzQH,qEAmQI,2BAtRgB,CAuRhB,AApQJ,sEAuQI,0BA1RgB,CA2RhB,AAxQJ,qDA6QG,sBAAqB,AACrB,eAAc,AAEd,6BAAyD,AAUzD,0BA7SiB,AA8SjB,6BAzToB,AA2TpB,eAAgB,CAChB,AA9RH,oEAmRI,4BAAyD,CAKzD,AAxRJ,iGAsRK,YAAa,CACb,AAvRL,2DAiSG,cAAc,CAKd,AAtSH,iEAoSI,YAAa,CACb,AArSJ,kCA4SE,kBAAiB,AACjB,WAAU,AACV,mBAAmB,AACnB,cAAa,AACb,gCAAiC,CAyDjC,AAzWF,wCAmTG,YAAa,CACb,AApTH,yDAwTG,sBAAqB,AACrB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AASlB,UAAU,CAYV,AA/UH,wFA6TI,kBAAkB,AAClB,MAAK,AACL,OAAM,AACN,WAAW,CACX,AAjUJ,8DAsUI,qBAAqB,AAErB,cAAa,AACb,aAAY,AAEZ,WAAU,AACV,gBAAiB,AACjB,cAAe,CACf,AA9UJ,mDAmVG,kBAAiB,AACjB,qBAAoB,AACpB,sBA1WqB,AA2WrB,mBAAmB,AACnB,iBAAgB,AAChB,UA1We,CA0Xf,AAxWH,kFA4VK,gBAAiB,AACjB,4BAAwD,CASxD,AAtWL,sGAgWM,4BAnXc,CAoXd,AAjWN,yGAoWM,yBAvXc,CAwXd,AArWN,wCA6WE,kBAAiB,AACjB,QAAO,AACP,MAAK,AACL,SAAQ,AACR,SAAS,CAUT,AA3XF,6CAoXG,OAAM,AACN,UAAU,CACV,AAtXH,8CAyXG,gBAAgB,CAChB,AA1XH,6BAgYE,iBAAgB,AAChB,0BAtYwB,AAuYxB,sBA1YyB,AA2YzB,iBAAgB,AAChB,WA3YmB,AA4YnB,gBAAgB,AAChB,mBAAkB,AAClB,qBAAgB,AAAhB,iBAAgB,AAEhB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAuFpB,AAneF,qDA+YG,sBAAqB,AACrB,wBAAuB,AACvB,sBAA2B,AAE3B,gBAAgB,AAEhB,6BAAwD,AAWxD,6BAnbiB,AAobjB,0BApbiB,AAsbjB,eAAgB,CAMhB,AAzaH,oEAwZI,6BAAwD,AACxD,UAxbiB,CA6bjB,AA9ZJ,iGA4ZK,YAAa,CACb,AA7ZL,gEAsaI,mBAAkB,AAClB,kBAAkB,CAClB,AAxaJ,wDA8aI,UAAU,CACV,AA/aJ,kDAobG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBA/boB,AAgcpB,iBAAiB,CACjB,AA3bH,8CA+bG,YAAY,CACZ,AAhcH,6CAocG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBA/coB,AAgdpB,kBAAiB,AAEjB,8BAA+B,AAE/B,WArdkB,AAsdlB,oBAAmB,AACnB,oBAAmB,AACnB,iBAAiB,CAiBjB,AAleH,oDAodI,UAxdmB,CAydnB,AArdJ,sDAwdI,UAAU,CACV,AAzdJ,kEA6dK,eAAc,AACd,0BAAyB,AACzB,UAAU,CACV,AAheL,6BAueE,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AAElB,MAAK,AACL,OAAM,AACN,YAAW,AAEX,YAAW,AACX,WAAU,AACV,0BAAyB,AACzB,iBAAiB,CA2BjB,AA7gBF,mDAsfG,qBAAoB,AAEpB,cAAa,AACb,kBAAiB,AAEjB,mBAAkB,AAElB,gBAAe,AACf,gBAAgB,AAChB,cAAc,CAad,AA5gBH,qEAmgBI,sBAAqB,AACrB,UAAU,CACV,AArgBJ,mEAygBI,sBAAqB,AACrB,aAAa,CACb,AAMJ,eACC,kBAAkB,AAClB,sBAAsB,AAEtB,gBAA0C,AAC1C,qBA3iBuB,CAo5BvB,AA9WD,6BAQE,qBA7iByB,CA8iBzB,AATF,0CAYE,sBA9iBsB,AA+iBtB,cAAe,CACf,AAdF,kCAiBE,qBAjjB0B,CAkjB1B,AAlBF,wCAqBE,sBApjB+B,AAqjB/B,cAAe,CACf,AAvBF,gCA0BE,kBAAkB,AAElB,0BAhkBkB,AAikBlB,6BAjkBkB,AAmkBlB,8BAA+B,AAC/B,UAAU,CACV,AAjCF,4CAqCE,kBAAiB,AACjB,QAAO,AACP,SAAQ,AACR,OAAM,AACN,UAAU,CAUV,AAnDF,iDA4CG,MAAK,AACL,WAAW,CACX,AA9CH,kDAiDG,gBAAgB,CAChB,AAlDH,iCAsDE,qBAAqB,AACrB,kBAAkB,AAElB,yBAAyB,AAEzB,UAAW,CASX,AApEF,uDA8DG,2BAlmBiB,CAmmBjB,AA/DH,wDAkEG,0BAtmBiB,CAumBjB,AAnEH,8CAuEE,sBAAqB,AAErB,YAAW,AAEX,0BA/mBkB,AAgnBlB,4BAhnBkB,CAmoBlB,AA/FF,oDA+EG,YAAY,CACZ,AAhFH,oDAmFG,cAvoBW,CAkpBX,AA9FH,0DAuFK,iBAAkB,CAKlB,AA5FL,wEA0FM,kBAAkB,CAClB,AA3FN,+BAoGE,qBAAoB,AACpB,kBAAkB,AAClB,sBAAqB,AACrB,YAAW,AACX,4BA5oBkB,AA6oBlB,sBAAqB,AACrB,mBAAkB,AAClB,gBAAe,AACf,sBAAsB,CA0LtB,AAtSF,iDAgHG,sBA7oBe,AA8oBf,SAAU,CAMV,AAvHH,+GAoHI,WAAU,AACV,sBAAsB,CACtB,AAtHJ,yDA0HG,qBAtpBgB,CA6pBhB,AAjIH,+HA4HI,WAAU,AACV,uBAAsB,AAEtB,UA3pBe,CA4pBf,AAhIJ,6EAsII,YAAa,CACb,AAvIJ,oDA6IG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAElB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAcpB,AAjKH,8EAuJI,SAAS,CAST,AAhKJ,wGA2JK,WAAU,AACV,WAAU,AACV,eAAc,AACd,eAAe,CACf,AA/JL,2DAoKG,qBAAoB,AACpB,sBAAqB,AAErB,WAAU,AACV,UAAS,AAET,gBAAe,AACf,iBAAgB,AAEhB,8BAA6B,AAE7B,2BAntBiB,AAotBjB,4BAptBiB,CAqtBjB,AAjLH,4DAqLG,2BAAmB,AAAnB,oBAAmB,AACnB,qBAAsB,AAAtB,uBAAsB,AACtB,sBAAkB,AAAlB,mBAAkB,AAClB,sBAAqB,AAErB,YAAW,AACX,WAAU,AAEV,iBAAgB,AAEhB,sBAluBe,AAmuBf,kBAAiB,AACjB,0BAA4B,AAE5B,eAAe,CAmDf,AAtPH,kEAsMI,eAAc,AACd,yBAA4B,CAC5B,AAxMJ,kGA2MI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,sBAAuB,CAavB,AA9NJ,wGAoNK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eA/vBa,CAgwBb,AA7NL,gGAiOI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,eA1wBc,CAuxBd,AApPJ,sGA0OK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eArxBa,CAsxBb,AAnPL,qEAyPG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,uBAAsB,AAEtB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,oBAAoB,AAEpB,YAAW,AACX,WAAU,AAEV,mBAAkB,AAClB,gBAAe,AAEf,WA9yBqB,AA+yBrB,gBAAgB,AAChB,eAAe,CAmBf,AA7RH,2EA6QI,UAAU,CACV,AA9QJ,sHAkRK,eAAe,CACf,AAnRL,sOA2RI,YAAY,CACZ,AA5RJ,wDAgSG,qBAAqB,AACrB,YAAW,AACX,WAAU,AAEV,kBAAkB,CAClB,AArSH,+BA4SE,sBAAqB,AACrB,6BAA4B,AAC5B,4BAl1BkB,AAm1BlB,0BAAyB,AACzB,YAAW,AACX,kBAAiB,AACjB,gBAAe,AACf,gBAAgB,AAChB,WAAU,AAEV,cAAe,CAuDf,AA7WF,qCAyTG,eAAc,AACd,+BAA+B,CAC/B,AA3TH,wEA+TI,kBAAiB,AACjB,kCAAkC,AAClC,mCAAmC,AACnC,0BA52BkB,AA62BlB,eAAgB,CAChB,AApUJ,uDAwUG,iBAAiB,CACjB,AAzUH,uDA4UG,iBAAiB,CACjB,AA7UH,uDAgVG,iBAAiB,CACjB,AAjVH,uDAoVG,iBAAiB,CACjB,AArVH,uDAwVG,kBAAkB,CAClB,AAzVH,gDA8VG,qBAAqB,AACrB,QAAQ,AACR,SAAS,AACT,kBAAiB,AACjB,iCAAiC,AACjC,oCAAoC,AACpC,eAAe,AACf,2BA/4BmB,AAg5BnB,qBAAqB,CACrB,AAvWH,oCA0WG,iBAAgB,AAChB,UAAU,CACV,AAIH,4BACC,kBAAkB,AAClB,qBAAoB,AACpB,sBAAqB,AAErB,iBAAgB,AAEhB,gBA15BiB,AA25BjB,sBA55BmB,AA85BnB,eA96Ba,AAg7Bb,gBAAe,AACf,iCAAiC,AAEjC,aAAc,CA6Bd,AA5CD,6DAkBE,YAAW,AAEX,UA16BsB,CAu7BtB,AAjCF,oEAuBG,WAp6Be,AAq6Bf,eA76BwB,CA86BxB,AAzBH,mEA4BG,eAAc,AAEd,WA36Be,AA46Bf,eAr7BqB,CAs7BrB,AAhCH,8DAoCE,6BAx7BkB,AA07BlB,YAAW,AACX,gBAAe,AAEf,WA57BgB,AA67BhB,eAAgB,CAChB,AAKF,4BACC,kBAAkB,AAClB,MAAK,AACL,SAAQ,AACR,OAAM,AACN,QAAO,AAEP,aAAc,CACd,AAED,uEACC,sBAAuB,CACvB,AAED,uBACC,wBAAyB,CACzB","file":"tabulator_midnight.min.css","sourcesContent":["/* Tabulator v4.4.3 (c) Oliver Folkerd */\n\n\r\n//Main Theme Variables\r\n$backgroundColor: #222 !default; //background color of tabulator\r\n$borderColor:#333 !default; //border to tabulator\r\n$textSize:14px !default; //table text size\r\n\r\n//header themeing\r\n$headerBackgroundColor:#333 !default; //border to tabulator\r\n$headerTextColor:#fff !default; //header text colour\r\n$headerBorderColor:#aaa !default;  //header border color\r\n$headerSeperatorColor:#999 !default; //header bottom seperator color\r\n$headerMargin:4px !default; //padding round header\r\n\r\n//column header arrows\r\n$sortArrowActive: #666 !default;\r\n$sortArrowInactive: #bbb !default;\r\n\r\n//row themeing\r\n$rowBackgroundColor:#666 !default; //table row background color\r\n$rowAltBackgroundColor:#444 !default; //table row background color\r\n$rowBorderColor:#888 !default; //table border color\r\n$rowTextColor:#fff !default; //table text color\r\n$rowHoverBackground:#999 !default; //row background color on hover\r\n\r\n$rowSelectedBackground: #000 !default; //row background color when selected\r\n$rowSelectedBackgroundHover: #888 !default;//row background color when selected and hovered\r\n\r\n$editBoxColor:#999 !default; //border color for edit boxes\r\n$errorColor:#dd0000 !default; //error indication\r\n\r\n//footer themeing\r\n$footerBackgroundColor:#333 !default; //border to tabulator\r\n$footerTextColor:#333 !default; //footer text colour\r\n$footerBorderColor:#aaa !default; //footer border color\r\n$footerSeperatorColor:#999 !default; //footer bottom seperator color\r\n$footerActiveColor:#fff !default; //footer bottom active text color\r\n\r\n\r\n//Tabulator Containing Element\r\n.tabulator{\r\n\tposition: relative;\r\n\tborder: 1px solid $borderColor;\r\n\tbackground-color: $backgroundColor;\r\n\toverflow:hidden;\r\n\tfont-size:$textSize;\r\n\ttext-align: left;\r\n\r\n\t-webkit-transform: translatez(0);\r\n\t-moz-transform: translatez(0);\r\n\t-ms-transform: translatez(0);\r\n\t-o-transform: translatez(0);\r\n\ttransform: translatez(0);\r\n\r\n\t&[tabulator-layout=\"fitDataFill\"]{\r\n\t\t.tabulator-tableHolder{\r\n\t\t\t.tabulator-table{\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t&.tabulator-block-select{\r\n\t\tuser-select: none;\r\n\t}\r\n\r\n\t//column header containing element\r\n\t.tabulator-header{\r\n\t\tposition:relative;\r\n\t\tbox-sizing: border-box;\r\n\r\n\t\twidth:100%;\r\n\r\n\t\tborder-bottom:1px solid $headerSeperatorColor;\r\n\t\tbackground-color: $headerBackgroundColor;\r\n\t\tcolor: $headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:hidden;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t&.tabulator-header-hidden{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\t//individual column header element\r\n\t\t.tabulator-col{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition:relative;\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tborder-right:1px solid $headerBorderColor;\r\n\t\t\tbackground-color: $headerBackgroundColor;\r\n\t\t\ttext-align:left;\r\n\t\t\tvertical-align: bottom;\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&.tabulator-moving{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tborder:1px solid  $headerSeperatorColor;\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 10%);\r\n\t\t\t\tpointer-events: none;\r\n\t\t\t}\r\n\r\n\t\t\t//hold content of column header\r\n\t\t\t.tabulator-col-content{\r\n\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tpadding:4px;\r\n\r\n\t\t\t\t//hold title of column header\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\twhite-space: nowrap;\r\n\t\t\t\t\toverflow: hidden;\r\n\t\t\t\t\ttext-overflow: ellipsis;\r\n\t\t\t\t\tvertical-align:bottom;\r\n\r\n\t\t\t\t\t//element to hold title editor\r\n\t\t\t\t\t.tabulator-title-editor{\r\n\t\t\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\t\tborder:1px solid #999;\r\n\r\n\t\t\t\t\t\tpadding:1px;\r\n\r\n\t\t\t\t\t\tbackground: #444;\r\n\t\t\t\t\t\tcolor: #fff;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//column sorter arrow\r\n\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\tdisplay: inline-block;\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\ttop:9px;\r\n\t\t\t\t\tright:8px;\r\n\t\t\t\t\twidth: 0;\r\n\t\t\t\t\theight: 0;\r\n\t\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t//complex header column group\r\n\t\t\t&.tabulator-col-group{\r\n\r\n\t\t\t\t//gelement to hold sub columns in column group\r\n\t\t\t\t.tabulator-col-group-cols{\r\n\t\t\t\t\tposition:relative;\r\n\t\t\t\t\tdisplay: flex;\r\n\r\n\t\t\t\t\tborder-top:1px solid $headerBorderColor;\r\n\t\t\t\t\toverflow: hidden;\r\n\r\n\t\t\t\t\t.tabulator-col:last-child{\r\n\t\t\t\t\t\tmargin-right:-1px;\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//hide left resize handle on first column\r\n\t\t\t&:first-child{\r\n\t\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//placeholder element for sortable columns\r\n\t\t\t&.ui-sortable-helper{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tbackground-color: darken($headerBackgroundColor, 10%) !important;\r\n\t\t\t\tborder:1px solid $headerBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t//header filter containing element\r\n\t\t\t.tabulator-header-filter{\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\tmargin-top:2px;\r\n\t\t\t\twidth:100%;\r\n\t\t\t\ttext-align: center;\r\n\r\n\t\t\t\t//styling adjustment for inbuilt editors\r\n\t\t\t\ttextarea{\r\n\t\t\t\t\theight:auto !important;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsvg{\r\n\t\t\t\t\tmargin-top: 3px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinput, select{\r\n\t\t\t\t\tborder:1px solid #999;\r\n\t\t\t\t\tbackground: #444;\r\n\t\t\t\t\tcolor: #fff;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinput{\r\n\t\t\t\t\t&::-ms-clear {\r\n\t\t\t\t\t\twidth : 0;\r\n\t\t\t\t\t\theight: 0;\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//styling child elements for sortable columns\r\n\t\t\t&.tabulator-sortable{\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tpadding-right:25px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\t&[aria-sort=\"none\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"asc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowActive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"desc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\t\t\tborder-bottom: none;\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&.tabulator-col-vertical{\r\n\t\t\t\t.tabulator-col-content{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\twriting-mode: vertical-rl;\r\n\t\t\t\t\t\ttext-orientation: mixed;\r\n\r\n\t\t\t\t\t\tdisplay:flex;\r\n\t\t\t\t\t\talign-items:center;\r\n\t\t\t\t\t\tjustify-content:center;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\ttransform: rotate(180deg);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-sortable{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\tpadding-top:20px;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\t\tpadding-bottom:20px;\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.tabulator-arrow{\r\n\t\t\t\t\t\tright:calc(50% - 6px);\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\t.tabulator-frozen{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\tposition: absolute;\r\n\r\n\t\t\t// background-color: inherit;\r\n\r\n\t\t\tz-index: 10;\r\n\r\n\t\t\t&.tabulator-frozen-left{\r\n\t\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-frozen-right{\r\n\t\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\tbackground:darken($headerBackgroundColor, 10%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 10%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\t\t\tborder-bottom:1px solid $headerBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen-rows-holder{\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\t&:empty{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//scrolling element to hold table\r\n\t.tabulator-tableHolder{\r\n\t\tposition:relative;\r\n\t\twidth:100%;\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:auto;\r\n\t\t-webkit-overflow-scrolling: touch;\r\n\r\n\t\t&:focus{\r\n\t\t\toutline: none;\r\n\t\t}\r\n\r\n\t\t//default placeholder element\r\n\t\t.tabulator-placeholder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t&[tabulator-render-mode=\"virtual\"]{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\ttop:0;\r\n\t\t\t\tleft:0;\r\n\t\t\t\theight:100%;\r\n\t\t\t}\r\n\r\n\t\t\twidth:100%;\r\n\r\n\t\t\tspan{\r\n\t\t\t\tdisplay: inline-block;\r\n\r\n\t\t\t\tmargin:0 auto;\r\n\t\t\t\tpadding:10px;\r\n\r\n\t\t\t\tcolor:#eee;\r\n\t\t\t\tfont-weight: bold;\r\n\t\t\t\tfont-size: 20px;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//element to hold table rows\r\n\t\t.tabulator-table{\r\n\t\t\tposition:relative;\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tbackground-color:$rowBackgroundColor;\r\n\t\t\twhite-space: nowrap;\r\n\t\t\toverflow:visible;\r\n\t\t\tcolor:$rowTextColor;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\t&.tabulator-calcs{\r\n\t\t\t\t\tfont-weight: bold;\r\n\t\t\t\t\tbackground:darken($rowAltBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t\t&.tabulator-calcs-top{\r\n\t\t\t\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-calcs-bottom{\r\n\t\t\t\t\t\tborder-top:2px solid $rowBorderColor;\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//column resize handles\r\n\t.tabulator-col-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\ttop:0;\r\n\t\tbottom:0;\r\n\t\twidth:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\tleft:0;\r\n\t\t\tright:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ew-resize;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//footer element\r\n\t.tabulator-footer{\r\n\t\tpadding:5px 10px;\r\n\t\tborder-top:1px solid $footerSeperatorColor;\r\n\t\tbackground-color: $footerBackgroundColor;\r\n\t\ttext-align:right;\r\n\t\tcolor: $footerTextColor;\r\n\t\tfont-weight:bold;\r\n\t\twhite-space:nowrap;\r\n\t\tuser-select:none;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\twidth:calc(100% + 20px);\r\n\t\t\tmargin:-5px -10px 5px -10px;\r\n\r\n\t\t\ttext-align: left;\r\n\r\n\t\t\tbackground:darken($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:darken($footerBackgroundColor, 5%) !important;\r\n\t\t\t\tcolor:$headerTextColor;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-bottom:1px solid $rowBorderColor;\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&:only-child{\r\n\t\t\t\tmargin-bottom:-5px;\r\n\t\t\t\tborder-bottom:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-paginator{\r\n\t\t\tlabel{\r\n\t\t\t\tcolor:#fff;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//page size select element\r\n\t\t.tabulator-page-size{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 5px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-pages{\r\n\t\t\tmargin:0 7px;\r\n\t\t}\r\n\r\n\t\t//pagination button\r\n\t\t.tabulator-page{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 2px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\r\n\t\t\tbackground:rgba(255,255,255,.2);\r\n\r\n\t\t\tcolor: $footerTextColor;\r\n\t\t\tfont-family:inherit;\r\n\t\t\tfont-weight:inherit;\r\n\t\t\tfont-size:inherit;\r\n\r\n\t\t\t&.active{\r\n\t\t\t\tcolor:$footerActiveColor;\r\n\t\t\t}\r\n\r\n\t\t\t&:disabled{\r\n\t\t\t\topacity:.5;\r\n\t\t\t}\r\n\r\n\t\t\t&:not(.disabled){\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground:rgba(0,0,0,.2);\r\n\t\t\t\t\tcolor:#fff;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//holding div that contains loader and covers tabulator element to prevent interaction\r\n\t.tabulator-loader{\r\n\t\tposition:absolute;\r\n\t\tdisplay: flex;\r\n\t\talign-items:center;\r\n\r\n\t\ttop:0;\r\n\t\tleft:0;\r\n\t\tz-index:100;\r\n\r\n\t\theight:100%;\r\n\t\twidth:100%;\r\n\t\tbackground:rgba(0,0,0,.4);\r\n\t\ttext-align:center;\r\n\r\n\t\t//loading message element\r\n\t\t.tabulator-loader-msg{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 auto;\r\n\t\t\tpadding:10px 20px;\r\n\r\n\t\t\tborder-radius:10px;\r\n\r\n\t\t\tbackground:#fff;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:16px;\r\n\r\n\t\t\t//loading message\r\n\t\t\t&.tabulator-loading{\r\n\t\t\t\tborder:4px solid #333;\r\n\t\t\t\tcolor:#000;\r\n\t\t\t}\r\n\r\n\t\t\t//error message\r\n\t\t\t&.tabulator-error{\r\n\t\t\t\tborder:4px solid #D00;\r\n\t\t\t\tcolor:#590000;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n//row element\r\n.tabulator-row{\r\n\tposition: relative;\r\n\tbox-sizing: border-box;\r\n\r\n\tmin-height:$textSize + ($headerMargin * 2);\r\n\tbackground-color: $rowBackgroundColor;\r\n\r\n\t&:nth-child(even){\r\n\t\tbackground-color: $rowAltBackgroundColor;\r\n\t}\r\n\r\n\t&.tabulator-selectable:hover{\r\n\t\tbackground-color:$rowHoverBackground;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-selected{\r\n\t\tbackground-color:$rowSelectedBackground;\r\n\t}\r\n\r\n\t&.tabulator-selected:hover{\r\n\t\tbackground-color:$rowSelectedBackgroundHover;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-moving{\r\n\t\tposition: absolute;\r\n\r\n\t\tborder-top:1px solid  $rowBorderColor;\r\n\t\tborder-bottom:1px solid  $rowBorderColor;\r\n\r\n\t\tpointer-events: none !important;\r\n\t\tz-index:15;\r\n\t}\r\n\r\n\t//row resize handles\r\n\t.tabulator-row-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\tbottom:0;\r\n\t\tleft:0;\r\n\t\theight:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\ttop:0;\r\n\t\t\tbottom:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ns-resize;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-frozen{\r\n\t\tdisplay: inline-block;\r\n\t\tposition: absolute;\r\n\r\n\t\tbackground-color: inherit;\r\n\r\n\t\tz-index: 10;\r\n\r\n\t\t&.tabulator-frozen-left{\r\n\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t&.tabulator-frozen-right{\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-responsive-collapse{\r\n\t\tbox-sizing:border-box;\r\n\r\n\t\tpadding:5px;\r\n\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\t&:empty{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\ttable{\r\n\t\t\tfont-size:$textSize;\r\n\r\n\t\t\ttr{\r\n\t\t\t\ttd{\r\n\t\t\t\t\tposition: relative;\r\n\r\n\t\t\t\t\t&:first-of-type{\r\n\t\t\t\t\t\tpadding-right:10px;\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\r\n\t//cell element\r\n\t.tabulator-cell{\r\n\t\tdisplay:inline-block;\r\n\t\tposition: relative;\r\n\t\tbox-sizing:border-box;\r\n\t\tpadding:4px;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tvertical-align:middle;\r\n\t\twhite-space:nowrap;\r\n\t\toverflow:hidden;\r\n\t\ttext-overflow:ellipsis;\r\n\r\n\r\n\t\t&.tabulator-editing{\r\n\t\t\tborder:1px solid  $editBoxColor;\r\n\t\t\tpadding: 0;\r\n\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-validation-fail{\r\n\t\t\tborder:1px solid $errorColor;\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\r\n\t\t\t\tcolor: $errorColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//hide left resize handle on first column\r\n\t\t&:first-child{\r\n\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//movable row handle\r\n\t\t&.tabulator-row-handle{\r\n\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\t//handle holder\r\n\t\t\t.tabulator-row-handle-box{\r\n\t\t\t\twidth:80%;\r\n\r\n\t\t\t\t//Hamburger element\r\n\t\t\t\t.tabulator-row-handle-bar{\r\n\t\t\t\t\twidth:100%;\r\n\t\t\t\t\theight:3px;\r\n\t\t\t\t\tmargin-top:2px;\r\n\t\t\t\t\tbackground:#666;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-branch{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:9px;\r\n\t\t\twidth:7px;\r\n\r\n\t\t\tmargin-top:-9px;\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control{\r\n\r\n\t\t\tdisplay:inline-flex;\r\n\t\t\tjustify-content:center;\r\n\t\t\talign-items:center;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:11px;\r\n\t\t\twidth:11px;\r\n\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder:1px solid $rowTextColor;\r\n\t\t\tborder-radius:2px;\r\n\t\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\t\toverflow:hidden;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\tcursor:pointer;\r\n\t\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: transparent;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-expand{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-responsive-collapse-toggle{\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\t\t\tjustify-content:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\theight:15px;\r\n\t\t\twidth:15px;\r\n\r\n\t\t\tborder-radius:20px;\r\n\t\t\tbackground:#fff;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:1.1em;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\topacity:.7;\r\n\t\t\t}\r\n\r\n\t\t\t&.open{\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\t\tdisplay:initial;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-open{\r\n\t\t\t\t\tdisplay:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\tdisplay:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-traffic-light{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\theight:14px;\r\n\t\t\twidth:14px;\r\n\r\n\t\t\tborder-radius:14px;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//row grouping element\r\n\t&.tabulator-group{\r\n\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-bottom:1px solid #999;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tborder-top:1px solid #999;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:#ccc;\r\n\t\tfont-weight:bold;\r\n\t\tcolor:#333;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:rgba(0,0,0,.1);\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-visible{\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\tpadding-left:30px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\tpadding-left:50px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\tpadding-left:70px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\tpadding-left:90px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\tpadding-left:110px;\r\n\t\t}\r\n\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:#666;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n.tabulator-edit-select-list{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tmax-height:200px;\r\n\r\n\tbackground:$rowTextColor;\r\n\tborder:1px solid $rowBorderColor;\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-edit-select-list-item{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowBackgroundColor;\r\n\r\n\t\t&.active{\r\n\t\t\tcolor:$editBoxColor;\r\n\t\t\tbackground:$rowAltBackgroundColor;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\r\n\t\t\tcolor:$editBoxColor;\r\n\t\t\tbackground:$rowBackgroundColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-group{\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\tpadding:4px;\r\n\t\tpadding-top:6px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\tfont-weight:bold;\r\n\t}\r\n}\r\n\r\n// Table print styling\r\n\r\n.tabulator-print-fullscreen{\r\n\tposition: absolute;\r\n\ttop:0;\r\n\tbottom:0;\r\n\tleft:0;\r\n\tright:0;\r\n\r\n\tz-index: 10000;\r\n}\r\n\r\nbody.tabulator-print-fullscreen-hide>*:not(.tabulator-print-fullscreen){\r\n\tdisplay:none !important;\r\n}\r\n\r\n.tabulator-print-table{\r\n\tborder-collapse: collapse;\r\n}\r\n\r\n"]}
\ No newline at end of file
+{"version":3,"sources":["tabulator_midnight.scss"],"names":[],"mappings":"AAyCA,WACC,kBAAkB,AAClB,sBAtCgB,AAuChB,sBAxCqB,AAyCrB,gBAAe,AACf,eAxCa,AAyCb,gBAAgB,AAMhB,uBAAwB,CAkgBxB,AA9gBD,iFAiBI,cAAc,CACd,AAlBJ,kCAuBE,yBAAiB,AAAjB,sBAAiB,AAAjB,qBAAiB,AAAjB,gBAAiB,CACjB,AAxBF,6BA4BE,kBAAiB,AACjB,sBAAsB,AAEtB,WAAU,AAEV,6BA9DwB,AA+DxB,sBAlEyB,AAmEzB,WAlEmB,AAmEnB,gBAAgB,AAEhB,mBAAmB,AACnB,gBAAe,AAEf,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CA4PpB,AAxSF,qDA+CG,YAAY,CACZ,AAhDH,4CAoDG,qBAAoB,AACpB,kBAAiB,AACjB,sBAAqB,AACrB,4BArFoB,AAsFpB,sBAxFwB,AAyFxB,gBAAe,AACf,sBAAsB,AACtB,eAAgB,CA6LhB,AAxPH,6DA8DI,kBAAkB,AAClB,sBA5FsB,AA6FtB,mBAA8C,AAC9C,mBAAoB,CACpB,AAlEJ,mEAsEI,sBAAqB,AACrB,kBAAkB,AAClB,WAAW,CAwCX,AAhHJ,wFA4EK,sBAAqB,AACrB,WAAW,AAEX,mBAAmB,AACnB,gBAAgB,AAChB,uBAAuB,AACvB,qBAAqB,CAerB,AAjGL,gHAsFM,sBAAsB,AACtB,WAAW,AAEX,sBAAqB,AAErB,YAAW,AAEX,gBAAgB,AAChB,UAAW,CACX,AA/FN,oFAqGK,qBAAqB,AACrB,kBAAkB,AAClB,QAAO,AACP,UAAS,AACT,QAAQ,AACR,SAAS,AACT,kCAAkC,AAClC,mCAAmC,AACnC,4BArImB,CAsInB,AA9GL,0FAuHK,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AAEb,0BAxJkB,AAyJlB,eAAgB,CAKhB,AAhIL,oHA8HM,iBAAiB,CACjB,AA/HN,0FAsIK,YAAa,CACb,AAvIL,+DA4II,kBAAkB,AAClB,mCAAgE,AAChE,qBA5KmB,CA6KnB,AA/IJ,qEAmJI,kBAAkB,AAClB,sBAAsB,AACtB,eAAc,AACd,WAAU,AACV,iBAAkB,CAuBlB,AA9KJ,8EA2JK,qBAAsB,CACtB,AA5JL,yEA+JK,cAAe,CACf,AAhKL,uJAmKK,sBAAqB,AACrB,gBAAgB,AAChB,UAAW,CACX,AAtKL,sFA0KM,QAAS,AACT,QAAS,CACT,AA5KN,oFAmLK,kBAAkB,CAClB,AApLL,qEAuLK,eAAc,AACd,wBAAoD,CACpD,AAzLL,uHA8LM,gBAAgB,AAChB,4BAvNkB,CAwNlB,AAhMN,sHAqMM,gBAAgB,AAChB,4BA/NgB,CAgOhB,AAvMN,uHA4MM,0BArOgB,AAsOhB,kBAAmB,CACnB,AA9MN,+GAqNM,uBAAyB,AAAzB,yBAAyB,AACzB,uBAAuB,AAEvB,oBAAY,AAAZ,aAAY,AACZ,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,sBAAsB,CACtB,AA3NN,oHAgOM,wBAAyB,CACzB,AAjON,2GAsOM,gBAAe,AACf,gBAAgB,CAChB,AAxON,uIA4OO,gBAAe,AACf,mBAAmB,CACnB,AA9OP,uGAmPM,qBAAqB,CACrB,AApPN,+CA2PG,qBAAqB,AACrB,kBAAkB,AAIlB,UAAW,CASX,AAzQH,qEAmQI,2BAtRgB,CAuRhB,AApQJ,sEAuQI,0BA1RgB,CA2RhB,AAxQJ,qDA6QG,sBAAqB,AACrB,eAAc,AAEd,6BAAyD,AAUzD,0BA7SiB,AA8SjB,6BAzToB,AA2TpB,eAAgB,CAChB,AA9RH,oEAmRI,4BAAyD,CAKzD,AAxRJ,iGAsRK,YAAa,CACb,AAvRL,2DAiSG,cAAc,CAKd,AAtSH,iEAoSI,YAAa,CACb,AArSJ,kCA4SE,kBAAiB,AACjB,WAAU,AACV,mBAAmB,AACnB,cAAa,AACb,gCAAiC,CAyDjC,AAzWF,wCAmTG,YAAa,CACb,AApTH,yDAwTG,sBAAqB,AACrB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AASlB,UAAU,CAYV,AA/UH,wFA6TI,kBAAkB,AAClB,MAAK,AACL,OAAM,AACN,WAAW,CACX,AAjUJ,8DAsUI,qBAAqB,AAErB,cAAa,AACb,aAAY,AAEZ,WAAU,AACV,gBAAiB,AACjB,cAAe,CACf,AA9UJ,mDAmVG,kBAAiB,AACjB,qBAAoB,AACpB,sBA1WqB,AA2WrB,mBAAmB,AACnB,iBAAgB,AAChB,UA1We,CA0Xf,AAxWH,kFA4VK,gBAAiB,AACjB,4BAAwD,CASxD,AAtWL,sGAgWM,4BAnXc,CAoXd,AAjWN,yGAoWM,yBAvXc,CAwXd,AArWN,wCA6WE,kBAAiB,AACjB,QAAO,AACP,MAAK,AACL,SAAQ,AACR,SAAS,CAUT,AA3XF,6CAoXG,OAAM,AACN,UAAU,CACV,AAtXH,8CAyXG,gBAAgB,CAChB,AA1XH,6BAgYE,iBAAgB,AAChB,0BAtYwB,AAuYxB,sBA1YyB,AA2YzB,iBAAgB,AAChB,WA3YmB,AA4YnB,gBAAgB,AAChB,mBAAkB,AAClB,qBAAgB,AAAhB,iBAAgB,AAEhB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAuFpB,AAneF,qDA+YG,sBAAqB,AACrB,wBAAuB,AACvB,sBAA2B,AAE3B,gBAAgB,AAEhB,6BAAwD,AAWxD,6BAnbiB,AAobjB,0BApbiB,AAsbjB,eAAgB,CAMhB,AAzaH,oEAwZI,6BAAwD,AACxD,UAxbiB,CA6bjB,AA9ZJ,iGA4ZK,YAAa,CACb,AA7ZL,gEAsaI,mBAAkB,AAClB,kBAAkB,CAClB,AAxaJ,wDA8aI,UAAU,CACV,AA/aJ,kDAobG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBA/boB,AAgcpB,iBAAiB,CACjB,AA3bH,8CA+bG,YAAY,CACZ,AAhcH,6CAocG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBA/coB,AAgdpB,kBAAiB,AAEjB,8BAA+B,AAE/B,WArdkB,AAsdlB,oBAAmB,AACnB,oBAAmB,AACnB,iBAAiB,CAiBjB,AAleH,oDAodI,UAxdmB,CAydnB,AArdJ,sDAwdI,UAAU,CACV,AAzdJ,kEA6dK,eAAc,AACd,0BAAyB,AACzB,UAAU,CACV,AAheL,6BAueE,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AAElB,MAAK,AACL,OAAM,AACN,YAAW,AAEX,YAAW,AACX,WAAU,AACV,0BAAyB,AACzB,iBAAiB,CA2BjB,AA7gBF,mDAsfG,qBAAoB,AAEpB,cAAa,AACb,kBAAiB,AAEjB,mBAAkB,AAElB,gBAAe,AACf,gBAAgB,AAChB,cAAc,CAad,AA5gBH,qEAmgBI,sBAAqB,AACrB,UAAU,CACV,AArgBJ,mEAygBI,sBAAqB,AACrB,aAAa,CACb,AAMJ,eACC,kBAAkB,AAClB,sBAAsB,AAEtB,gBAA0C,AAC1C,qBA3iBuB,CAu5BvB,AAjXD,6BAQE,qBA7iByB,CA8iBzB,AATF,0CAYE,sBA9iBsB,AA+iBtB,cAAe,CACf,AAdF,kCAiBE,qBAjjB0B,CAkjB1B,AAlBF,wCAqBE,sBApjB+B,AAqjB/B,cAAe,CACf,AAvBF,gCA0BE,kBAAkB,AAElB,0BAhkBkB,AAikBlB,6BAjkBkB,AAmkBlB,8BAA+B,AAC/B,UAAU,CACV,AAjCF,4CAqCE,kBAAiB,AACjB,QAAO,AACP,SAAQ,AACR,OAAM,AACN,UAAU,CAUV,AAnDF,iDA4CG,MAAK,AACL,WAAW,CACX,AA9CH,kDAiDG,gBAAgB,CAChB,AAlDH,iCAsDE,qBAAqB,AACrB,kBAAkB,AAElB,yBAAyB,AAEzB,UAAW,CASX,AApEF,uDA8DG,2BAlmBiB,CAmmBjB,AA/DH,wDAkEG,0BAtmBiB,CAumBjB,AAnEH,8CAuEE,sBAAqB,AAErB,YAAW,AAEX,0BA/mBkB,AAgnBlB,4BAhnBkB,CAmoBlB,AA/FF,oDA+EG,YAAY,CACZ,AAhFH,oDAmFG,cAvoBW,CAkpBX,AA9FH,0DAuFK,iBAAkB,CAKlB,AA5FL,wEA0FM,kBAAkB,CAClB,AA3FN,+BAoGE,qBAAoB,AACpB,kBAAkB,AAClB,sBAAqB,AACrB,YAAW,AACX,4BA5oBkB,AA6oBlB,sBAAqB,AACrB,mBAAkB,AAClB,gBAAe,AACf,sBAAsB,CA0LtB,AAtSF,iDAgHG,sBA7oBe,AA8oBf,SAAU,CAMV,AAvHH,+GAoHI,WAAU,AACV,sBAAsB,CACtB,AAtHJ,yDA0HG,qBAtpBgB,CA6pBhB,AAjIH,+HA4HI,WAAU,AACV,uBAAsB,AAEtB,UA3pBe,CA4pBf,AAhIJ,6EAsII,YAAa,CACb,AAvIJ,oDA6IG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAElB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAcpB,AAjKH,8EAuJI,SAAS,CAST,AAhKJ,wGA2JK,WAAU,AACV,WAAU,AACV,eAAc,AACd,eAAe,CACf,AA/JL,2DAoKG,qBAAoB,AACpB,sBAAqB,AAErB,WAAU,AACV,UAAS,AAET,gBAAe,AACf,iBAAgB,AAEhB,8BAA6B,AAE7B,2BAntBiB,AAotBjB,4BAptBiB,CAqtBjB,AAjLH,4DAqLG,2BAAmB,AAAnB,oBAAmB,AACnB,qBAAsB,AAAtB,uBAAsB,AACtB,sBAAkB,AAAlB,mBAAkB,AAClB,sBAAqB,AAErB,YAAW,AACX,WAAU,AAEV,iBAAgB,AAEhB,sBAluBe,AAmuBf,kBAAiB,AACjB,0BAA4B,AAE5B,eAAe,CAmDf,AAtPH,kEAsMI,eAAc,AACd,yBAA4B,CAC5B,AAxMJ,kGA2MI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,sBAAuB,CAavB,AA9NJ,wGAoNK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eA/vBa,CAgwBb,AA7NL,gGAiOI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,eA1wBc,CAuxBd,AApPJ,sGA0OK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eArxBa,CAsxBb,AAnPL,qEAyPG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,uBAAsB,AAEtB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,oBAAoB,AAEpB,YAAW,AACX,WAAU,AAEV,mBAAkB,AAClB,gBAAe,AAEf,WA9yBqB,AA+yBrB,gBAAgB,AAChB,eAAe,CAmBf,AA7RH,2EA6QI,UAAU,CACV,AA9QJ,sHAkRK,eAAe,CACf,AAnRL,sOA2RI,YAAY,CACZ,AA5RJ,wDAgSG,qBAAqB,AACrB,YAAW,AACX,WAAU,AAEV,kBAAkB,CAClB,AArSH,+BA4SE,sBAAqB,AACrB,6BAA4B,AAC5B,4BAl1BkB,AAm1BlB,0BAAyB,AACzB,YAAW,AACX,kBAAiB,AACjB,gBAAe,AACf,gBAAgB,AAChB,WAAU,AAEV,cAAe,CA0Df,AAhXF,qCAyTG,eAAc,AACd,+BAA+B,CAC/B,AA3TH,wEA+TI,kBAAiB,AACjB,kCAAkC,AAClC,mCAAmC,AACnC,0BA52BkB,AA62BlB,eAAgB,CAChB,AApUJ,uDAwUG,iBAAiB,CACjB,AAzUH,uDA4UG,iBAAiB,CACjB,AA7UH,uDAgVG,iBAAiB,CACjB,AAjVH,uDAoVG,iBAAiB,CACjB,AArVH,uDAwVG,kBAAkB,CAClB,AAzVH,uDA4VG,oBAAqB,CACrB,AA7VH,gDAiWG,qBAAqB,AACrB,QAAQ,AACR,SAAS,AACT,kBAAiB,AACjB,iCAAiC,AACjC,oCAAoC,AACpC,eAAe,AACf,2BAl5BmB,AAm5BnB,qBAAqB,CACrB,AA1WH,oCA6WG,iBAAgB,AAChB,UAAU,CACV,AAIH,4BACC,kBAAkB,AAClB,qBAAoB,AACpB,sBAAqB,AAErB,iBAAgB,AAEhB,gBA75BiB,AA85BjB,sBA/5BmB,AAi6BnB,eAj7Ba,AAm7Bb,gBAAe,AACf,iCAAiC,AAEjC,aAAc,CA6Bd,AA5CD,6DAkBE,YAAW,AAEX,UA76BsB,CA07BtB,AAjCF,oEAuBG,WAv6Be,AAw6Bf,eAh7BwB,CAi7BxB,AAzBH,mEA4BG,eAAc,AAEd,WA96Be,AA+6Bf,eAx7BqB,CAy7BrB,AAhCH,8DAoCE,6BA37BkB,AA67BlB,YAAW,AACX,gBAAe,AAEf,WA/7BgB,AAg8BhB,eAAgB,CAChB,AAKF,4BACC,kBAAkB,AAClB,MAAK,AACL,SAAQ,AACR,OAAM,AACN,QAAO,AAEP,aAAc,CACd,AAED,uEACC,sBAAuB,CACvB,AAED,uBACC,wBAAyB,CACzB","file":"tabulator_midnight.min.css","sourcesContent":["/* Tabulator v4.5.1 (c) Oliver Folkerd */\n\n\r\n//Main Theme Variables\r\n$backgroundColor: #222 !default; //background color of tabulator\r\n$borderColor:#333 !default; //border to tabulator\r\n$textSize:14px !default; //table text size\r\n\r\n//header themeing\r\n$headerBackgroundColor:#333 !default; //border to tabulator\r\n$headerTextColor:#fff !default; //header text colour\r\n$headerBorderColor:#aaa !default;  //header border color\r\n$headerSeperatorColor:#999 !default; //header bottom seperator color\r\n$headerMargin:4px !default; //padding round header\r\n\r\n//column header arrows\r\n$sortArrowActive: #666 !default;\r\n$sortArrowInactive: #bbb !default;\r\n\r\n//row themeing\r\n$rowBackgroundColor:#666 !default; //table row background color\r\n$rowAltBackgroundColor:#444 !default; //table row background color\r\n$rowBorderColor:#888 !default; //table border color\r\n$rowTextColor:#fff !default; //table text color\r\n$rowHoverBackground:#999 !default; //row background color on hover\r\n\r\n$rowSelectedBackground: #000 !default; //row background color when selected\r\n$rowSelectedBackgroundHover: #888 !default;//row background color when selected and hovered\r\n\r\n$editBoxColor:#999 !default; //border color for edit boxes\r\n$errorColor:#dd0000 !default; //error indication\r\n\r\n//footer themeing\r\n$footerBackgroundColor:#333 !default; //border to tabulator\r\n$footerTextColor:#333 !default; //footer text colour\r\n$footerBorderColor:#aaa !default; //footer border color\r\n$footerSeperatorColor:#999 !default; //footer bottom seperator color\r\n$footerActiveColor:#fff !default; //footer bottom active text color\r\n\r\n\r\n//Tabulator Containing Element\r\n.tabulator{\r\n\tposition: relative;\r\n\tborder: 1px solid $borderColor;\r\n\tbackground-color: $backgroundColor;\r\n\toverflow:hidden;\r\n\tfont-size:$textSize;\r\n\ttext-align: left;\r\n\r\n\t-webkit-transform: translatez(0);\r\n\t-moz-transform: translatez(0);\r\n\t-ms-transform: translatez(0);\r\n\t-o-transform: translatez(0);\r\n\ttransform: translatez(0);\r\n\r\n\t&[tabulator-layout=\"fitDataFill\"]{\r\n\t\t.tabulator-tableHolder{\r\n\t\t\t.tabulator-table{\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t&.tabulator-block-select{\r\n\t\tuser-select: none;\r\n\t}\r\n\r\n\t//column header containing element\r\n\t.tabulator-header{\r\n\t\tposition:relative;\r\n\t\tbox-sizing: border-box;\r\n\r\n\t\twidth:100%;\r\n\r\n\t\tborder-bottom:1px solid $headerSeperatorColor;\r\n\t\tbackground-color: $headerBackgroundColor;\r\n\t\tcolor: $headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:hidden;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t&.tabulator-header-hidden{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\t//individual column header element\r\n\t\t.tabulator-col{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition:relative;\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tborder-right:1px solid $headerBorderColor;\r\n\t\t\tbackground-color: $headerBackgroundColor;\r\n\t\t\ttext-align:left;\r\n\t\t\tvertical-align: bottom;\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&.tabulator-moving{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tborder:1px solid  $headerSeperatorColor;\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 10%);\r\n\t\t\t\tpointer-events: none;\r\n\t\t\t}\r\n\r\n\t\t\t//hold content of column header\r\n\t\t\t.tabulator-col-content{\r\n\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tpadding:4px;\r\n\r\n\t\t\t\t//hold title of column header\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\twhite-space: nowrap;\r\n\t\t\t\t\toverflow: hidden;\r\n\t\t\t\t\ttext-overflow: ellipsis;\r\n\t\t\t\t\tvertical-align:bottom;\r\n\r\n\t\t\t\t\t//element to hold title editor\r\n\t\t\t\t\t.tabulator-title-editor{\r\n\t\t\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\t\tborder:1px solid #999;\r\n\r\n\t\t\t\t\t\tpadding:1px;\r\n\r\n\t\t\t\t\t\tbackground: #444;\r\n\t\t\t\t\t\tcolor: #fff;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//column sorter arrow\r\n\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\tdisplay: inline-block;\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\ttop:9px;\r\n\t\t\t\t\tright:8px;\r\n\t\t\t\t\twidth: 0;\r\n\t\t\t\t\theight: 0;\r\n\t\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t//complex header column group\r\n\t\t\t&.tabulator-col-group{\r\n\r\n\t\t\t\t//gelement to hold sub columns in column group\r\n\t\t\t\t.tabulator-col-group-cols{\r\n\t\t\t\t\tposition:relative;\r\n\t\t\t\t\tdisplay: flex;\r\n\r\n\t\t\t\t\tborder-top:1px solid $headerBorderColor;\r\n\t\t\t\t\toverflow: hidden;\r\n\r\n\t\t\t\t\t.tabulator-col:last-child{\r\n\t\t\t\t\t\tmargin-right:-1px;\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//hide left resize handle on first column\r\n\t\t\t&:first-child{\r\n\t\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//placeholder element for sortable columns\r\n\t\t\t&.ui-sortable-helper{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tbackground-color: darken($headerBackgroundColor, 10%) !important;\r\n\t\t\t\tborder:1px solid $headerBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t//header filter containing element\r\n\t\t\t.tabulator-header-filter{\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\tmargin-top:2px;\r\n\t\t\t\twidth:100%;\r\n\t\t\t\ttext-align: center;\r\n\r\n\t\t\t\t//styling adjustment for inbuilt editors\r\n\t\t\t\ttextarea{\r\n\t\t\t\t\theight:auto !important;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsvg{\r\n\t\t\t\t\tmargin-top: 3px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinput, select{\r\n\t\t\t\t\tborder:1px solid #999;\r\n\t\t\t\t\tbackground: #444;\r\n\t\t\t\t\tcolor: #fff;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinput{\r\n\t\t\t\t\t&::-ms-clear {\r\n\t\t\t\t\t\twidth : 0;\r\n\t\t\t\t\t\theight: 0;\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//styling child elements for sortable columns\r\n\t\t\t&.tabulator-sortable{\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tpadding-right:25px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\t&[aria-sort=\"none\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"asc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowActive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"desc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\t\t\tborder-bottom: none;\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&.tabulator-col-vertical{\r\n\t\t\t\t.tabulator-col-content{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\twriting-mode: vertical-rl;\r\n\t\t\t\t\t\ttext-orientation: mixed;\r\n\r\n\t\t\t\t\t\tdisplay:flex;\r\n\t\t\t\t\t\talign-items:center;\r\n\t\t\t\t\t\tjustify-content:center;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\ttransform: rotate(180deg);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-sortable{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\tpadding-top:20px;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\t\tpadding-bottom:20px;\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.tabulator-arrow{\r\n\t\t\t\t\t\tright:calc(50% - 6px);\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\t.tabulator-frozen{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\tposition: absolute;\r\n\r\n\t\t\t// background-color: inherit;\r\n\r\n\t\t\tz-index: 10;\r\n\r\n\t\t\t&.tabulator-frozen-left{\r\n\t\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-frozen-right{\r\n\t\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\tbackground:darken($headerBackgroundColor, 10%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 10%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\t\t\tborder-bottom:1px solid $headerBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen-rows-holder{\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\t&:empty{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//scrolling element to hold table\r\n\t.tabulator-tableHolder{\r\n\t\tposition:relative;\r\n\t\twidth:100%;\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:auto;\r\n\t\t-webkit-overflow-scrolling: touch;\r\n\r\n\t\t&:focus{\r\n\t\t\toutline: none;\r\n\t\t}\r\n\r\n\t\t//default placeholder element\r\n\t\t.tabulator-placeholder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t&[tabulator-render-mode=\"virtual\"]{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\ttop:0;\r\n\t\t\t\tleft:0;\r\n\t\t\t\theight:100%;\r\n\t\t\t}\r\n\r\n\t\t\twidth:100%;\r\n\r\n\t\t\tspan{\r\n\t\t\t\tdisplay: inline-block;\r\n\r\n\t\t\t\tmargin:0 auto;\r\n\t\t\t\tpadding:10px;\r\n\r\n\t\t\t\tcolor:#eee;\r\n\t\t\t\tfont-weight: bold;\r\n\t\t\t\tfont-size: 20px;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//element to hold table rows\r\n\t\t.tabulator-table{\r\n\t\t\tposition:relative;\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tbackground-color:$rowBackgroundColor;\r\n\t\t\twhite-space: nowrap;\r\n\t\t\toverflow:visible;\r\n\t\t\tcolor:$rowTextColor;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\t&.tabulator-calcs{\r\n\t\t\t\t\tfont-weight: bold;\r\n\t\t\t\t\tbackground:darken($rowAltBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t\t&.tabulator-calcs-top{\r\n\t\t\t\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-calcs-bottom{\r\n\t\t\t\t\t\tborder-top:2px solid $rowBorderColor;\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//column resize handles\r\n\t.tabulator-col-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\ttop:0;\r\n\t\tbottom:0;\r\n\t\twidth:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\tleft:0;\r\n\t\t\tright:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ew-resize;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//footer element\r\n\t.tabulator-footer{\r\n\t\tpadding:5px 10px;\r\n\t\tborder-top:1px solid $footerSeperatorColor;\r\n\t\tbackground-color: $footerBackgroundColor;\r\n\t\ttext-align:right;\r\n\t\tcolor: $footerTextColor;\r\n\t\tfont-weight:bold;\r\n\t\twhite-space:nowrap;\r\n\t\tuser-select:none;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\twidth:calc(100% + 20px);\r\n\t\t\tmargin:-5px -10px 5px -10px;\r\n\r\n\t\t\ttext-align: left;\r\n\r\n\t\t\tbackground:darken($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:darken($footerBackgroundColor, 5%) !important;\r\n\t\t\t\tcolor:$headerTextColor;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-bottom:1px solid $rowBorderColor;\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&:only-child{\r\n\t\t\t\tmargin-bottom:-5px;\r\n\t\t\t\tborder-bottom:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-paginator{\r\n\t\t\tlabel{\r\n\t\t\t\tcolor:#fff;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//page size select element\r\n\t\t.tabulator-page-size{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 5px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-pages{\r\n\t\t\tmargin:0 7px;\r\n\t\t}\r\n\r\n\t\t//pagination button\r\n\t\t.tabulator-page{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 2px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\r\n\t\t\tbackground:rgba(255,255,255,.2);\r\n\r\n\t\t\tcolor: $footerTextColor;\r\n\t\t\tfont-family:inherit;\r\n\t\t\tfont-weight:inherit;\r\n\t\t\tfont-size:inherit;\r\n\r\n\t\t\t&.active{\r\n\t\t\t\tcolor:$footerActiveColor;\r\n\t\t\t}\r\n\r\n\t\t\t&:disabled{\r\n\t\t\t\topacity:.5;\r\n\t\t\t}\r\n\r\n\t\t\t&:not(.disabled){\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground:rgba(0,0,0,.2);\r\n\t\t\t\t\tcolor:#fff;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//holding div that contains loader and covers tabulator element to prevent interaction\r\n\t.tabulator-loader{\r\n\t\tposition:absolute;\r\n\t\tdisplay: flex;\r\n\t\talign-items:center;\r\n\r\n\t\ttop:0;\r\n\t\tleft:0;\r\n\t\tz-index:100;\r\n\r\n\t\theight:100%;\r\n\t\twidth:100%;\r\n\t\tbackground:rgba(0,0,0,.4);\r\n\t\ttext-align:center;\r\n\r\n\t\t//loading message element\r\n\t\t.tabulator-loader-msg{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 auto;\r\n\t\t\tpadding:10px 20px;\r\n\r\n\t\t\tborder-radius:10px;\r\n\r\n\t\t\tbackground:#fff;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:16px;\r\n\r\n\t\t\t//loading message\r\n\t\t\t&.tabulator-loading{\r\n\t\t\t\tborder:4px solid #333;\r\n\t\t\t\tcolor:#000;\r\n\t\t\t}\r\n\r\n\t\t\t//error message\r\n\t\t\t&.tabulator-error{\r\n\t\t\t\tborder:4px solid #D00;\r\n\t\t\t\tcolor:#590000;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n//row element\r\n.tabulator-row{\r\n\tposition: relative;\r\n\tbox-sizing: border-box;\r\n\r\n\tmin-height:$textSize + ($headerMargin * 2);\r\n\tbackground-color: $rowBackgroundColor;\r\n\r\n\t&:nth-child(even){\r\n\t\tbackground-color: $rowAltBackgroundColor;\r\n\t}\r\n\r\n\t&.tabulator-selectable:hover{\r\n\t\tbackground-color:$rowHoverBackground;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-selected{\r\n\t\tbackground-color:$rowSelectedBackground;\r\n\t}\r\n\r\n\t&.tabulator-selected:hover{\r\n\t\tbackground-color:$rowSelectedBackgroundHover;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-moving{\r\n\t\tposition: absolute;\r\n\r\n\t\tborder-top:1px solid  $rowBorderColor;\r\n\t\tborder-bottom:1px solid  $rowBorderColor;\r\n\r\n\t\tpointer-events: none !important;\r\n\t\tz-index:15;\r\n\t}\r\n\r\n\t//row resize handles\r\n\t.tabulator-row-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\tbottom:0;\r\n\t\tleft:0;\r\n\t\theight:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\ttop:0;\r\n\t\t\tbottom:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ns-resize;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-frozen{\r\n\t\tdisplay: inline-block;\r\n\t\tposition: absolute;\r\n\r\n\t\tbackground-color: inherit;\r\n\r\n\t\tz-index: 10;\r\n\r\n\t\t&.tabulator-frozen-left{\r\n\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t&.tabulator-frozen-right{\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-responsive-collapse{\r\n\t\tbox-sizing:border-box;\r\n\r\n\t\tpadding:5px;\r\n\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\t&:empty{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\ttable{\r\n\t\t\tfont-size:$textSize;\r\n\r\n\t\t\ttr{\r\n\t\t\t\ttd{\r\n\t\t\t\t\tposition: relative;\r\n\r\n\t\t\t\t\t&:first-of-type{\r\n\t\t\t\t\t\tpadding-right:10px;\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\r\n\t//cell element\r\n\t.tabulator-cell{\r\n\t\tdisplay:inline-block;\r\n\t\tposition: relative;\r\n\t\tbox-sizing:border-box;\r\n\t\tpadding:4px;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tvertical-align:middle;\r\n\t\twhite-space:nowrap;\r\n\t\toverflow:hidden;\r\n\t\ttext-overflow:ellipsis;\r\n\r\n\r\n\t\t&.tabulator-editing{\r\n\t\t\tborder:1px solid  $editBoxColor;\r\n\t\t\tpadding: 0;\r\n\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-validation-fail{\r\n\t\t\tborder:1px solid $errorColor;\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\r\n\t\t\t\tcolor: $errorColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//hide left resize handle on first column\r\n\t\t&:first-child{\r\n\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//movable row handle\r\n\t\t&.tabulator-row-handle{\r\n\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\t//handle holder\r\n\t\t\t.tabulator-row-handle-box{\r\n\t\t\t\twidth:80%;\r\n\r\n\t\t\t\t//Hamburger element\r\n\t\t\t\t.tabulator-row-handle-bar{\r\n\t\t\t\t\twidth:100%;\r\n\t\t\t\t\theight:3px;\r\n\t\t\t\t\tmargin-top:2px;\r\n\t\t\t\t\tbackground:#666;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-branch{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:9px;\r\n\t\t\twidth:7px;\r\n\r\n\t\t\tmargin-top:-9px;\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control{\r\n\r\n\t\t\tdisplay:inline-flex;\r\n\t\t\tjustify-content:center;\r\n\t\t\talign-items:center;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:11px;\r\n\t\t\twidth:11px;\r\n\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder:1px solid $rowTextColor;\r\n\t\t\tborder-radius:2px;\r\n\t\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\t\toverflow:hidden;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\tcursor:pointer;\r\n\t\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: transparent;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-expand{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-responsive-collapse-toggle{\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\t\t\tjustify-content:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\theight:15px;\r\n\t\t\twidth:15px;\r\n\r\n\t\t\tborder-radius:20px;\r\n\t\t\tbackground:#fff;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:1.1em;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\topacity:.7;\r\n\t\t\t}\r\n\r\n\t\t\t&.open{\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\t\tdisplay:initial;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-open{\r\n\t\t\t\t\tdisplay:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\tdisplay:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-traffic-light{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\theight:14px;\r\n\t\t\twidth:14px;\r\n\r\n\t\t\tborder-radius:14px;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//row grouping element\r\n\t&.tabulator-group{\r\n\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-bottom:1px solid #999;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tborder-top:1px solid #999;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:#ccc;\r\n\t\tfont-weight:bold;\r\n\t\tcolor:#333;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:rgba(0,0,0,.1);\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-visible{\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\tpadding-left:30px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\tpadding-left:50px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\tpadding-left:70px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\tpadding-left:90px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\tpadding-left:110px;\r\n\t\t}\r\n\r\n\t\t.tabulator-group-toggle{\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:#666;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n.tabulator-edit-select-list{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tmax-height:200px;\r\n\r\n\tbackground:$rowTextColor;\r\n\tborder:1px solid $rowBorderColor;\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-edit-select-list-item{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowBackgroundColor;\r\n\r\n\t\t&.active{\r\n\t\t\tcolor:$editBoxColor;\r\n\t\t\tbackground:$rowAltBackgroundColor;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\r\n\t\t\tcolor:$editBoxColor;\r\n\t\t\tbackground:$rowBackgroundColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-group{\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\tpadding:4px;\r\n\t\tpadding-top:6px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\tfont-weight:bold;\r\n\t}\r\n}\r\n\r\n// Table print styling\r\n\r\n.tabulator-print-fullscreen{\r\n\tposition: absolute;\r\n\ttop:0;\r\n\tbottom:0;\r\n\tleft:0;\r\n\tright:0;\r\n\r\n\tz-index: 10000;\r\n}\r\n\r\nbody.tabulator-print-fullscreen-hide>*:not(.tabulator-print-fullscreen){\r\n\tdisplay:none !important;\r\n}\r\n\r\n.tabulator-print-table{\r\n\tborder-collapse: collapse;\r\n}\r\n\r\n"]}
\ No newline at end of file
index d4b4968..68e264d 100644 (file)
@@ -1,4 +1,4 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 .tabulator {
   position: relative;
   border: 1px solid #fff;
   padding-left: 110px;
 }
 
+.tabulator-row.tabulator-group .tabulator-group-toggle {
+  display: inline-block;
+}
+
 .tabulator-row.tabulator-group .tabulator-arrow {
   display: inline-block;
   width: 0;
index ff419a0..8ed6104 100644 (file)
@@ -1,3 +1,3 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
-.tabulator{position:relative;border:1px solid #fff;background-color:#fff;overflow:hidden;font-size:16px;text-align:left;transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator.tabulator-block-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:3px solid #3759d7;margin-bottom:4px;background-color:#fff;color:#3759d7;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;padding-left:10px;font-size:1.1em}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;border-right:2px solid #fff;background-color:#fff;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #3759d7;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-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 #3759d7;padding:1px;background:#fff;font-size:1em;color:#3759d7}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{display:inline-block;position:absolute;top:9px;right:8px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #b7c3f1}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:-ms-flexbox;display:flex;border-top:2px solid #3759d7;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child{margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col.ui-sortable-helper{position:absolute;background-color:#e6e6e6!important;border:1px solid #fff}.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-arrow{border-top:none;border-bottom:6px solid #b7c3f1}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #3759d7}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-arrow{border-top:6px solid #3759d7;border-bottom:none}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack: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-arrow{right:calc(50% - 6px)}.tabulator .tabulator-header .tabulator-frozen{display:inline-block;position:absolute;z-index:10}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{padding-left:10px;border-right:2px solid #fff}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #fff}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;min-width:600%;border-top:2px solid #3759d7!important;background:#fff!important;border-top:1px solid #fff;border-bottom:1px solid #fff;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{padding-left:0!important;background:#fff!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-cell{background: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:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{position:absolute;top:0;left:0;height:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#3759d7;font-weight:700;font-size:20px}.tabulator .tabulator-tableHolder .tabulator-table{position:relative;display:inline-block;background-color:#f3f3f3;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#f2f2f2!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #3759d7}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #3759d7}.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-footer{padding:5px 10px;border-top:1px solid #999;background-color:#fff;text-align:right;color:#3759d7;font-weight:700;white-space:nowrap;-ms-user-select:none;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:#fff!important;border-top:3px solid #3759d7!important;border-bottom:2px solid #3759d7!important;border-bottom:1px solid #fff;border-top:1px solid #fff;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell{background:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none;border-bottom:none!important}.tabulator .tabulator-footer .tabulator-paginator{color:#3759d7;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:#3759d7}.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-loader{position:absolute;display:-ms-flexbox;display:flex;-ms-flex-align:center;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:#3759d7;padding-left:10px!important;margin-bottom:2px}.tabulator-row:nth-child(2n){background-color:#627ce0}.tabulator-row:nth-child(2n) .tabulator-cell{background-color:#fff}.tabulator-row.tabulator-selectable:hover{cursor:pointer}.tabulator-row.tabulator-selectable:hover .tabulator-cell{background-color:#bbb}.tabulator-row.tabulator-selected .tabulator-cell{background-color:#9abcea}.tabulator-row.tabulator-selected:hover .tabulator-cell{background-color:#769bcc;cursor:pointer}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #fff;border-bottom:1px solid #fff;pointer-events:none!important;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{padding-left:10px;border-right:2px solid #fff}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #fff}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #fff;border-bottom:1px solid #fff}.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:6px 4px;border-right:2px solid #fff;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background-color:#f3f3f3}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;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:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items: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 #fff;border-bottom:2px solid #fff}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align: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:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack: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:#f3f3f3;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:2px solid #3759d7;border-top:2px solid #3759d7;padding:5px;padding-left:10px;background:#8ca0e8;font-weight:700;color:fff;margin-bottom:2px;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 #3759d7;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-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 #3759d7;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#3759d7}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#f3f3f3;border:1px solid #1d68cd;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:#333}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#f3f3f3;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:#f3f3f3;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #fff;padding:4px;padding-top:6px;color:#333;font-weight:700}.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 v4.5.1 (c) Oliver Folkerd */
+.tabulator{position:relative;border:1px solid #fff;background-color:#fff;overflow:hidden;font-size:16px;text-align:left;transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator.tabulator-block-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:3px solid #3759d7;margin-bottom:4px;background-color:#fff;color:#3759d7;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;padding-left:10px;font-size:1.1em}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;border-right:2px solid #fff;background-color:#fff;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #3759d7;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-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 #3759d7;padding:1px;background:#fff;font-size:1em;color:#3759d7}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{display:inline-block;position:absolute;top:9px;right:8px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #b7c3f1}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:-ms-flexbox;display:flex;border-top:2px solid #3759d7;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child{margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col.ui-sortable-helper{position:absolute;background-color:#e6e6e6!important;border:1px solid #fff}.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-arrow{border-top:none;border-bottom:6px solid #b7c3f1}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #3759d7}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-arrow{border-top:6px solid #3759d7;border-bottom:none}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack: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-arrow{right:calc(50% - 6px)}.tabulator .tabulator-header .tabulator-frozen{display:inline-block;position:absolute;z-index:10}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{padding-left:10px;border-right:2px solid #fff}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #fff}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;min-width:600%;border-top:2px solid #3759d7!important;background:#fff!important;border-top:1px solid #fff;border-bottom:1px solid #fff;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{padding-left:0!important;background:#fff!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-cell{background: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:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{position:absolute;top:0;left:0;height:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#3759d7;font-weight:700;font-size:20px}.tabulator .tabulator-tableHolder .tabulator-table{position:relative;display:inline-block;background-color:#f3f3f3;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#f2f2f2!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #3759d7}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #3759d7}.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-footer{padding:5px 10px;border-top:1px solid #999;background-color:#fff;text-align:right;color:#3759d7;font-weight:700;white-space:nowrap;-ms-user-select:none;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:#fff!important;border-top:3px solid #3759d7!important;border-bottom:2px solid #3759d7!important;border-bottom:1px solid #fff;border-top:1px solid #fff;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell{background:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none;border-bottom:none!important}.tabulator .tabulator-footer .tabulator-paginator{color:#3759d7;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:#3759d7}.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-loader{position:absolute;display:-ms-flexbox;display:flex;-ms-flex-align:center;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:#3759d7;padding-left:10px!important;margin-bottom:2px}.tabulator-row:nth-child(2n){background-color:#627ce0}.tabulator-row:nth-child(2n) .tabulator-cell{background-color:#fff}.tabulator-row.tabulator-selectable:hover{cursor:pointer}.tabulator-row.tabulator-selectable:hover .tabulator-cell{background-color:#bbb}.tabulator-row.tabulator-selected .tabulator-cell{background-color:#9abcea}.tabulator-row.tabulator-selected:hover .tabulator-cell{background-color:#769bcc;cursor:pointer}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #fff;border-bottom:1px solid #fff;pointer-events:none!important;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{padding-left:10px;border-right:2px solid #fff}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #fff}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #fff;border-bottom:1px solid #fff}.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:6px 4px;border-right:2px solid #fff;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background-color:#f3f3f3}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;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:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items: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 #fff;border-bottom:2px solid #fff}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align: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:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack: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:#f3f3f3;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:2px solid #3759d7;border-top:2px solid #3759d7;padding:5px;padding-left:10px;background:#8ca0e8;font-weight:700;color:fff;margin-bottom:2px;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 #3759d7;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 #3759d7;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#3759d7}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#f3f3f3;border:1px solid #1d68cd;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:#333}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#f3f3f3;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:#f3f3f3;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #fff;padding:4px;padding-top:6px;color:#333;font-weight:700}.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}
 /*# sourceMappingURL=tabulator_modern.min.css.map */
index 943ce96..da5f313 100644 (file)
@@ -1 +1 @@
-{"version":3,"sources":["tabulator_modern.scss"],"names":[],"mappings":"AA+CA,WACC,kBAAkB,AAClB,sBA1CgB,AA2ChB,sBA5CqB,AA6CrB,gBAAe,AACf,eA5Ca,AA6Cb,gBAAgB,AAMhB,uBAAwB,CA+gBxB,AA3hBD,iFAiBI,cAAc,CACd,AAlBJ,kCAuBE,yBAAiB,AAAjB,sBAAiB,AAAjB,qBAAiB,AAAjB,gBAAiB,CACjB,AAxBF,6BA4BE,kBAAiB,AACjB,sBAAsB,AAEtB,WAAU,AAEV,gCA7Ee,AA8Ef,kBAAiB,AACjB,sBAvEyB,AAwEzB,cAhFe,AAiFf,gBAAgB,AAEhB,mBAAmB,AACnB,gBAAe,AAEf,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,oBAAoB,AAEpB,kBArDe,AAuDf,eAAgB,CAgQhB,AAjTF,qDAoDG,YAAY,CACZ,AArDH,4CAyDG,qBAAoB,AACpB,kBAAiB,AACjB,sBAAqB,AACrB,4BA9FoB,AA+FpB,sBAjGwB,AAkGxB,gBAAe,AACf,sBAAsB,AACtB,eAAgB,CAyLhB,AAzPH,6DAmEI,kBAAkB,AAClB,yBAhHa,AAiHb,mBAA8C,AAC9C,mBAAoB,CACpB,AAvEJ,mEA2EI,sBAAqB,AACrB,kBAAkB,AAClB,WAAW,CAyCX,AAtHJ,wFAiFK,sBAAqB,AACrB,WAAW,AAEX,mBAAmB,AACnB,gBAAgB,AAChB,uBAAuB,AACvB,qBAAqB,CAgBrB,AAvGL,gHA2FM,sBAAsB,AACtB,WAAW,AAEX,yBA1IW,AA4IX,YAAW,AAEX,gBAAgB,AAEhB,cAAc,AACd,aAjJW,CAkJX,AAtGN,oFA2GK,qBAAqB,AACrB,kBAAkB,AAClB,QAAO,AACP,UAAS,AACT,QAAQ,AACR,SAAS,AACT,kCAAkC,AAClC,mCAAmC,AACnC,+BA/IqC,CAgJrC,AApHL,0FA6HK,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AAEb,6BA5KY,AA6KZ,eAAgB,CAKhB,AAtIL,oHAoIM,iBAAiB,CACjB,AArIN,0FA6IK,YAAa,CACb,AA9IL,+DAmJI,kBAAkB,AAClB,mCAAgE,AAChE,qBAvLmB,CAwLnB,AAtJJ,qEA0JI,kBAAkB,AAClB,sBAAsB,AACtB,eAAc,AACd,WAAU,AACV,iBAAkB,CAiBlB,AA/KJ,8EAkKK,qBAAsB,CACtB,AAnKL,yEAsKK,cAAe,CACf,AAvKL,sFA2KM,QAAS,AACT,QAAS,CACT,AA7KN,oFAoLK,kBAAkB,CAClB,AArLL,qEAwLK,eAAc,AACd,wBAAoD,CACpD,AA1LL,uHA+LM,gBAAgB,AAChB,+BA5NoC,CA6NpC,AAjMN,sHAsMM,gBAAgB,AAChB,+BAnPW,CAoPX,AAxMN,uHA6MM,6BAzPW,AA0PX,kBAAmB,CACnB,AA/MN,+GAsNM,uBAAyB,AAAzB,yBAAyB,AACzB,uBAAuB,AAEvB,oBAAY,AAAZ,aAAY,AACZ,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,sBAAsB,CACtB,AA5NN,oHAiOM,wBAAyB,CACzB,AAlON,2GAuOM,gBAAe,AACf,gBAAgB,CAChB,AAzON,uIA6OO,gBAAe,AACf,mBAAmB,CACnB,AA/OP,uGAoPM,qBAAqB,CACrB,AArPN,+CA4PG,qBAAqB,AACrB,kBAAkB,AAIlB,UAAW,CAWX,AA5QH,qEAoQI,kBA1Qa,AA4Qb,2BA7RgB,CA8RhB,AAvQJ,sEA0QI,0BAjSgB,CAkShB,AA3QJ,qDA+QG,sBAAqB,AACrB,eAAc,AAEd,uCAAqD,AAErD,0BAAyD,AAgBzD,0BA3TiB,AA4TjB,6BAvUoB,AAyUpB,eAAgB,CAChB,AAxSH,oEAuRI,yBAA0B,AAE1B,yBAAyD,CASzD,AAlSJ,iGA4RK,YAAa,CACb,AA7RL,oFAgSK,eAAe,CACf,AAjSL,2DA2SG,cAAc,CAKd,AAhTH,iEA8SI,YAAa,CACb,AA/SJ,kCAqTE,kBAAiB,AACjB,WAAU,AACV,mBAAmB,AACnB,cAAa,AACb,gCAAiC,CAyDjC,AAlXF,wCA4TG,YAAa,CACb,AA7TH,yDAiUG,sBAAqB,AACrB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AASlB,UAAU,CAYV,AAxVH,wFAsUI,kBAAkB,AAClB,MAAK,AACL,OAAM,AACN,WAAW,CACX,AA1UJ,8DA+UI,qBAAqB,AAErB,cAAa,AACb,aAAY,AAEZ,cAhYa,AAiYb,gBAAiB,AACjB,cAAe,CACf,AAvVJ,mDA4VG,kBAAiB,AACjB,qBAAoB,AACpB,yBAvXwB,AAwXxB,mBAAmB,AACnB,iBAAgB,AAChB,UAvXe,CAuYf,AAjXH,kFAqWK,gBAAiB,AACjB,4BAAwD,CASxD,AA/WL,sGAyWM,+BArZW,CAsZX,AA1WN,yGA6WM,4BAzZW,CA0ZX,AA9WN,wCAuXE,kBAAiB,AACjB,QAAO,AACP,MAAK,AACL,SAAQ,AACR,SAAS,CAUT,AArYF,6CA8XG,OAAM,AACN,UAAU,CACV,AAhYH,8CAmYG,gBAAgB,CAChB,AApYH,6BA0YE,iBAAgB,AAChB,0BApZwB,AAqZxB,sBAxZyB,AAyZzB,iBAAgB,AAChB,cA1be,AA2bf,gBAAgB,AAChB,mBAAkB,AAClB,qBAAgB,AAAhB,iBAAgB,AAEhB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CA0FpB,AAhfF,qDAyZG,sBAAqB,AACrB,wBAAuB,AACvB,sBAA2B,AAE3B,gBAAgB,AAEhB,0BAAyD,AAEzD,uCAAqD,AACrD,0CAAwD,AAcxD,6BAvciB,AAwcjB,0BAxciB,AA0cjB,eAAgB,CAOhB,AA1bH,oEAqaI,yBAAyD,CASzD,AA9aJ,iGAwaK,YAAa,CACb,AAzaL,oFA4aK,eAAe,CACf,AA7aL,gEAsbI,mBAAkB,AAClB,mBAAkB,AAClB,4BAA6B,CAC7B,AAzbJ,kDA8bG,cA1ec,AA2ed,oBAAmB,AACnB,oBAAmB,AACnB,iBAAiB,CACjB,AAlcH,kDAscG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBArdoB,AAsdpB,iBAAiB,CACjB,AA7cH,8CAidG,YAAY,CACZ,AAldH,6CAsdG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBAreoB,AAsepB,kBAAiB,AAEjB,6BAA+B,CAiB/B,AA/eH,oDAieI,aA7gBa,CA8gBb,AAleJ,sDAqeI,UAAU,CACV,AAteJ,kEA0eK,eAAc,AACd,0BAAyB,AACzB,UAAU,CACV,AA7eL,6BAofE,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AAElB,MAAK,AACL,OAAM,AACN,YAAW,AAEX,YAAW,AACX,WAAU,AACV,0BAAyB,AACzB,iBAAiB,CA2BjB,AA1hBF,mDAmgBG,qBAAoB,AAEpB,cAAa,AACb,kBAAiB,AAEjB,mBAAkB,AAElB,gBAAe,AACf,gBAAgB,AAChB,cAAc,CAad,AAzhBH,qEAghBI,sBAAqB,AACrB,UAAU,CACV,AAlhBJ,mEAshBI,sBAAqB,AACrB,aAAa,CACb,AAMJ,eACC,kBAAkB,AAGlB,sBAAsB,AACtB,gBAA0C,AAE1C,yBAjlBgB,AAmlBhB,4BAAqC,AAErC,iBAAkB,CAqXlB,AAhYD,6BAcE,wBAhjBqC,CAqjBrC,AAnBF,6CAiBG,qBAvkBwB,CAwkBxB,AAlBH,0CAsBE,cAAe,CAKf,AA3BF,0DAyBG,qBA5kBqB,CA6kBrB,AA1BH,kDA+BG,wBAhlB4B,CAilB5B,AAhCH,wDAqCG,yBArlBiC,AAslBjC,cAAe,CACf,AAvCH,gCA2CE,kBAAkB,AAElB,0BAlmBkB,AAmmBlB,6BAnmBkB,AAqmBlB,8BAA+B,AAC/B,UAAU,CACV,AAlDF,4CAsDE,kBAAiB,AACjB,QAAO,AACP,SAAQ,AACR,OAAM,AACN,UAAU,CAUV,AApEF,iDA6DG,MAAK,AACL,WAAW,CACX,AA/DH,kDAkEG,gBAAgB,CAChB,AAnEH,iCAuEE,qBAAqB,AACrB,kBAAkB,AAElB,yBAAyB,AAEzB,UAAW,CAUX,AAtFF,uDA+EG,kBAnnBc,AAonBd,2BAroBiB,CAsoBjB,AAjFH,wDAoFG,0BAzoBiB,CA0oBjB,AArFH,8CAyFE,sBAAqB,AAErB,YAAW,AAEX,0BAlpBkB,AAmpBlB,4BAnpBkB,CAsqBlB,AAjHF,oDAiGG,YAAY,CACZ,AAlGH,oDAqGG,cA1qBW,CAqrBX,AAhHH,0DAyGK,iBAAkB,CAKlB,AA9GL,wEA4GM,kBAAkB,CAClB,AA7GN,+BAqHE,qBAAoB,AACpB,kBAAkB,AAClB,sBAAqB,AACrB,gBAAe,AACf,4BA9qBkB,AA+qBlB,sBAAqB,AACrB,mBAAkB,AAClB,gBAAe,AACf,uBAAsB,AAEtB,wBAtrByB,CA+2BzB,AAxTF,iDAkIG,yBAhrBkB,AAirBlB,SAAU,CAMV,AAzIH,+GAsII,WAAU,AACV,sBAAsB,CACtB,AAxIJ,yDA4IG,qBAzrBgB,CAgsBhB,AAnJH,+HA8II,WAAU,AACV,uBAAsB,AAEtB,UA9rBe,CA+rBf,AAlJJ,6EAwJI,YAAa,CACb,AAzJJ,oDA+JG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAElB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAcpB,AAnLH,8EAyKI,SAAS,CAST,AAlLJ,wGA6KK,WAAU,AACV,WAAU,AACV,eAAc,AACd,eAAe,CACf,AAjLL,2DAsLG,qBAAoB,AACpB,sBAAqB,AAErB,WAAU,AACV,UAAS,AAET,gBAAe,AACf,iBAAgB,AAEhB,8BAA6B,AAE7B,2BAtvBiB,AAuvBjB,4BAvvBiB,CAwvBjB,AAnMH,4DAuMG,2BAAmB,AAAnB,oBAAmB,AACnB,qBAAsB,AAAtB,uBAAsB,AACtB,sBAAkB,AAAlB,mBAAkB,AAClB,sBAAqB,AAErB,YAAW,AACX,WAAU,AAEV,iBAAgB,AAEhB,sBArwBe,AAswBf,kBAAiB,AACjB,0BAA4B,AAE5B,eAAe,CAmDf,AAxQH,kEAwNI,eAAc,AACd,yBAA4B,CAC5B,AA1NJ,kGA6NI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,sBAAuB,CAavB,AAhPJ,wGAsOK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAlyBa,CAmyBb,AA/OL,gGAmPI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,eA7yBc,CA0zBd,AAtQJ,sGA4PK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAxzBa,CAyzBb,AArQL,qEA2QG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,uBAAsB,AAEtB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,oBAAoB,AAEpB,YAAW,AACX,WAAU,AAEV,mBAAkB,AAClB,gBAAe,AAEf,cAj1BwB,AAk1BxB,gBAAgB,AAChB,eAAe,CAmBf,AA/SH,2EA+RI,UAAU,CACV,AAhSJ,sHAoSK,eAAe,CACf,AArSL,sOA6SI,YAAY,CACZ,AA9SJ,wDAkTG,qBAAqB,AACrB,YAAW,AACX,WAAU,AAEV,kBAAkB,CAClB,AAvTH,+BA6TE,sBAAqB,AACrB,gCAx4Be,AAy4Bf,6BAz4Be,AA04Bf,YAAW,AACX,kBAAiB,AACjB,mBAAiC,AACjC,gBAAgB,AAChB,UAAS,AACT,kBAAkB,AAElB,cAAe,CAwDf,AA/XF,qCA0UG,eAAc,AACd,+BAA+B,CAC/B,AA5UH,wEAiVI,kBAAiB,AACjB,kCAAkC,AAClC,mCAAmC,AACnC,6BA95Ba,AA+5Bb,eAAgB,CAChB,AAtVJ,uDA0VG,iBAAiB,CACjB,AA3VH,uDA8VG,iBAAiB,CACjB,AA/VH,uDAkWG,iBAAiB,CACjB,AAnWH,uDAsWG,iBAAiB,CACjB,AAvWH,uDA0WG,kBAAkB,CAClB,AA3WH,gDAgXG,qBAAqB,AACrB,QAAQ,AACR,SAAS,AACT,kBAAiB,AACjB,iCAAiC,AACjC,oCAAoC,AACpC,eAAe,AACf,8BAj8Bc,AAk8Bd,qBAAqB,CACrB,AAzXH,oCA4XG,iBAAgB,AAChB,aAv8Bc,CAw8Bd,AAIH,4BACC,kBAAkB,AAClB,qBAAoB,AACpB,sBAAqB,AAErB,iBAAgB,AAEhB,mBAh8B0B,AAi8B1B,yBAx7BoB,AA07BpB,eAj9Ba,AAm9Bb,gBAAe,AACf,iCAAiC,AAEjC,aAAc,CA6Bd,AA5CD,6DAkBE,YAAW,AAEX,UA18BgB,CAu9BhB,AAjCF,oEAuBG,cAh9BwB,AAi9BxB,kBAx8BkB,CAy8BlB,AAzBH,mEA4BG,eAAc,AAEd,cAv9BwB,AAw9BxB,kBA/8BkB,CAg9BlB,AAhCH,8DAoCE,6BA39BkB,AA69BlB,YAAW,AACX,gBAAe,AAEf,WA/9BgB,AAg+BhB,eAAgB,CAChB,AAKF,4BACC,kBAAkB,AAClB,MAAK,AACL,SAAQ,AACR,OAAM,AACN,QAAO,AAEP,aAAc,CACd,AAED,uEACC,sBAAuB,CACvB,AAED,uBACC,wBAAyB,CACzB","file":"tabulator_modern.min.css","sourcesContent":["/* Tabulator v4.4.3 (c) Oliver Folkerd */\n\n\r\n$primary: #3759D7 !default; //the base text color from which the rest of the theme derives\r\n\r\n//Main Theme Variables\r\n$backgroundColor: #fff !default; //background color of tabulator\r\n$borderColor:#fff !default; //border to tabulator\r\n$textSize:16px !default; //table text size\r\n\r\n//header themeing\r\n$headerBackgroundColor:#fff !default; //border to tabulator\r\n$headerTextColor:$primary !default; //header text colour\r\n$headerBorderColor:#fff !default;  //header border color\r\n$headerSeperatorColor:$primary !default; //header bottom seperator color\r\n$headerMargin:4px !default; //padding round header\r\n\r\n//column header arrows\r\n$sortArrowActive: $primary !default;\r\n$sortArrowInactive: lighten($primary, 30%) !default;\r\n\r\n//row themeing\r\n$rowBackgroundColor:#f3f3f3 !default; //table row background color\r\n$rowAltBackgroundColor:#fff !default; //table row background color\r\n$rowBorderColor:#fff !default; //table border color\r\n$rowTextColor:#333 !default; //table text color\r\n$rowHoverBackground:#bbb !default; //row background color on hover\r\n\r\n$rowSelectedBackground: #9ABCEA !default; //row background color when selected\r\n$rowSelectedBackgroundHover: #769BCC !default;//row background color when selected and hovered\r\n\r\n$editBoxColor:#1D68CD !default; //border color for edit boxes\r\n$errorColor:#dd0000 !default; //error indication\r\n\r\n//footer themeing\r\n$footerBackgroundColor:#fff !default; //border to tabulator\r\n$footerTextColor:$primary !default; //footer text colour\r\n$footerBorderColor:#aaa !default; //footer border color\r\n$footerSeperatorColor:#999 !default; //footer bottom seperator color\r\n$footerActiveColor:$primary !default; //footer bottom active text color\r\n\r\n$handleWidth:10px !default; //width of the row handle\r\n$handleColor: $primary !default; //color for odd numbered rows\r\n$handleColorAlt: lighten($primary, 10%) !default; //color for even numbered rows\r\n\r\n\r\n//Tabulator Containing Element\r\n.tabulator{\r\n\tposition: relative;\r\n\tborder: 1px solid $borderColor;\r\n\tbackground-color: $backgroundColor;\r\n\toverflow:hidden;\r\n\tfont-size:$textSize;\r\n\ttext-align: left;\r\n\r\n\t-webkit-transform: translatez(0);\r\n\t-moz-transform: translatez(0);\r\n\t-ms-transform: translatez(0);\r\n\t-o-transform: translatez(0);\r\n\ttransform: translatez(0);\r\n\r\n\t&[tabulator-layout=\"fitDataFill\"]{\r\n\t\t.tabulator-tableHolder{\r\n\t\t\t.tabulator-table{\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t&.tabulator-block-select{\r\n\t\tuser-select: none;\r\n\t}\r\n\r\n\t//column header containing element\r\n\t.tabulator-header{\r\n\t\tposition:relative;\r\n\t\tbox-sizing: border-box;\r\n\r\n\t\twidth:100%;\r\n\r\n\t\tborder-bottom:3px solid $headerSeperatorColor;\r\n\t\tmargin-bottom:4px;\r\n\t\tbackground-color: $headerBackgroundColor;\r\n\t\tcolor: $headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:hidden;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\tpadding-left:$handleWidth;\r\n\r\n\t\tfont-size: 1.1em;\r\n\r\n\t\t&.tabulator-header-hidden{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\t//individual column header element\r\n\t\t.tabulator-col{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition:relative;\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tborder-right:2px solid $headerBorderColor;\r\n\t\t\tbackground-color: $headerBackgroundColor;\r\n\t\t\ttext-align:left;\r\n\t\t\tvertical-align: bottom;\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&.tabulator-moving{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tborder:1px solid  $headerSeperatorColor;\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 10%);\r\n\t\t\t\tpointer-events: none;\r\n\t\t\t}\r\n\r\n\t\t\t//hold content of column header\r\n\t\t\t.tabulator-col-content{\r\n\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tpadding:4px;\r\n\r\n\t\t\t\t//hold title of column header\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\twhite-space: nowrap;\r\n\t\t\t\t\toverflow: hidden;\r\n\t\t\t\t\ttext-overflow: ellipsis;\r\n\t\t\t\t\tvertical-align:bottom;\r\n\r\n\t\t\t\t\t//element to hold title editor\r\n\t\t\t\t\t.tabulator-title-editor{\r\n\t\t\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\t\tborder:1px solid $primary;\r\n\r\n\t\t\t\t\t\tpadding:1px;\r\n\r\n\t\t\t\t\t\tbackground: #fff;\r\n\r\n\t\t\t\t\t\tfont-size: 1em;\r\n\t\t\t\t\t\tcolor: $primary;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//column sorter arrow\r\n\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\tdisplay: inline-block;\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\ttop:9px;\r\n\t\t\t\t\tright:8px;\r\n\t\t\t\t\twidth: 0;\r\n\t\t\t\t\theight: 0;\r\n\t\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t//complex header column group\r\n\t\t\t&.tabulator-col-group{\r\n\r\n\t\t\t\t//gelement to hold sub columns in column group\r\n\t\t\t\t.tabulator-col-group-cols{\r\n\t\t\t\t\tposition:relative;\r\n\t\t\t\t\tdisplay: flex;\r\n\r\n\t\t\t\t\tborder-top:2px solid $headerSeperatorColor;\r\n\t\t\t\t\toverflow: hidden;\r\n\r\n\t\t\t\t\t.tabulator-col:last-child{\r\n\t\t\t\t\t\tmargin-right:-1px;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\t//hide left resize handle on first column\r\n\t\t\t&:first-child{\r\n\t\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//placeholder element for sortable columns\r\n\t\t\t&.ui-sortable-helper{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tbackground-color: darken($headerBackgroundColor, 10%) !important;\r\n\t\t\t\tborder:1px solid $headerBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t//header filter containing element\r\n\t\t\t.tabulator-header-filter{\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\tmargin-top:2px;\r\n\t\t\t\twidth:100%;\r\n\t\t\t\ttext-align: center;\r\n\r\n\t\t\t\t//styling adjustment for inbuilt editors\r\n\t\t\t\ttextarea{\r\n\t\t\t\t\theight:auto !important;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsvg{\r\n\t\t\t\t\tmargin-top: 3px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinput{\r\n\t\t\t\t\t&::-ms-clear {\r\n\t\t\t\t\t\twidth : 0;\r\n\t\t\t\t\t\theight: 0;\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//styling child elements for sortable columns\r\n\t\t\t&.tabulator-sortable{\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tpadding-right:25px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\t&[aria-sort=\"none\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"asc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowActive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"desc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\t\t\tborder-bottom: none;\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&.tabulator-col-vertical{\r\n\t\t\t\t.tabulator-col-content{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\twriting-mode: vertical-rl;\r\n\t\t\t\t\t\ttext-orientation: mixed;\r\n\r\n\t\t\t\t\t\tdisplay:flex;\r\n\t\t\t\t\t\talign-items:center;\r\n\t\t\t\t\t\tjustify-content:center;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\ttransform: rotate(180deg);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-sortable{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\tpadding-top:20px;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\t\tpadding-bottom:20px;\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.tabulator-arrow{\r\n\t\t\t\t\t\tright:calc(50% - 6px);\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\t.tabulator-frozen{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\tposition: absolute;\r\n\r\n\t\t\t// background-color: inherit;\r\n\r\n\t\t\tz-index: 10;\r\n\r\n\t\t\t&.tabulator-frozen-left{\r\n\t\t\t\tpadding-left: $handleWidth;\r\n\r\n\t\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-frozen-right{\r\n\t\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\tborder-top:2px solid $headerSeperatorColor !important;\r\n\r\n\t\t\tbackground:lighten($headerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tpadding-left: 0 !important;\r\n\r\n\t\t\t\tbackground:lighten($headerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-cell{\r\n\t\t\t\t\tbackground:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\t\t\tborder-bottom:1px solid $headerBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen-rows-holder{\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\t&:empty{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//scrolling element to hold table\r\n\t.tabulator-tableHolder{\r\n\t\tposition:relative;\r\n\t\twidth:100%;\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:auto;\r\n\t\t-webkit-overflow-scrolling: touch;\r\n\r\n\t\t&:focus{\r\n\t\t\toutline: none;\r\n\t\t}\r\n\r\n\t\t//default placeholder element\r\n\t\t.tabulator-placeholder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t&[tabulator-render-mode=\"virtual\"]{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\ttop:0;\r\n\t\t\t\tleft:0;\r\n\t\t\t\theight:100%;\r\n\t\t\t}\r\n\r\n\t\t\twidth:100%;\r\n\r\n\t\t\tspan{\r\n\t\t\t\tdisplay: inline-block;\r\n\r\n\t\t\t\tmargin:0 auto;\r\n\t\t\t\tpadding:10px;\r\n\r\n\t\t\t\tcolor:$primary;\r\n\t\t\t\tfont-weight: bold;\r\n\t\t\t\tfont-size: 20px;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//element to hold table rows\r\n\t\t.tabulator-table{\r\n\t\t\tposition:relative;\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tbackground-color:$rowBackgroundColor;\r\n\t\t\twhite-space: nowrap;\r\n\t\t\toverflow:visible;\r\n\t\t\tcolor:$rowTextColor;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\t&.tabulator-calcs{\r\n\t\t\t\t\tfont-weight: bold;\r\n\t\t\t\t\tbackground:darken($rowAltBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t\t&.tabulator-calcs-top{\r\n\t\t\t\t\t\tborder-bottom:2px solid $headerSeperatorColor;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-calcs-bottom{\r\n\t\t\t\t\t\tborder-top:2px solid $headerSeperatorColor;\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\r\n\t//column resize handles\r\n\t.tabulator-col-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\ttop:0;\r\n\t\tbottom:0;\r\n\t\twidth:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\tleft:0;\r\n\t\t\tright:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ew-resize;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//footer element\r\n\t.tabulator-footer{\r\n\t\tpadding:5px 10px;\r\n\t\tborder-top:1px solid $footerSeperatorColor;\r\n\t\tbackground-color: $footerBackgroundColor;\r\n\t\ttext-align:right;\r\n\t\tcolor: $footerTextColor;\r\n\t\tfont-weight:bold;\r\n\t\twhite-space:nowrap;\r\n\t\tuser-select:none;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\twidth:calc(100% + 20px);\r\n\t\t\tmargin:-5px -10px 5px -10px;\r\n\r\n\t\t\ttext-align: left;\r\n\r\n\t\t\tbackground:lighten($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\tborder-top:3px solid $headerSeperatorColor !important;\r\n\t\t\tborder-bottom:2px solid $headerSeperatorColor !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:lighten($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-cell{\r\n\t\t\t\t\tbackground:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-bottom:1px solid $rowBorderColor;\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&:only-child{\r\n\t\t\t\tmargin-bottom:-5px;\r\n\t\t\t\tborder-bottom:none;\r\n\t\t\t\tborder-bottom:none !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-paginator{\r\n\t\t\tcolor: $footerTextColor;\r\n\t\t\tfont-family:inherit;\r\n\t\t\tfont-weight:inherit;\r\n\t\t\tfont-size:inherit;\r\n\t\t}\r\n\r\n\t\t//page size select element\r\n\t\t.tabulator-page-size{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 5px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-pages{\r\n\t\t\tmargin:0 7px;\r\n\t\t}\r\n\r\n\t\t//pagination button\r\n\t\t.tabulator-page{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 2px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\r\n\t\t\tbackground:rgba(255,255,255,.2);\r\n\r\n\t\t\t&.active{\r\n\t\t\t\tcolor:$footerActiveColor;\r\n\t\t\t}\r\n\r\n\t\t\t&:disabled{\r\n\t\t\t\topacity:.5;\r\n\t\t\t}\r\n\r\n\t\t\t&:not(.disabled){\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground:rgba(0,0,0,.2);\r\n\t\t\t\t\tcolor:#fff;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//holding div that contains loader and covers tabulator element to prevent interaction\r\n\t.tabulator-loader{\r\n\t\tposition:absolute;\r\n\t\tdisplay: flex;\r\n\t\talign-items:center;\r\n\r\n\t\ttop:0;\r\n\t\tleft:0;\r\n\t\tz-index:100;\r\n\r\n\t\theight:100%;\r\n\t\twidth:100%;\r\n\t\tbackground:rgba(0,0,0,.4);\r\n\t\ttext-align:center;\r\n\r\n\t\t//loading message element\r\n\t\t.tabulator-loader-msg{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 auto;\r\n\t\t\tpadding:10px 20px;\r\n\r\n\t\t\tborder-radius:10px;\r\n\r\n\t\t\tbackground:#fff;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:16px;\r\n\r\n\t\t\t//loading message\r\n\t\t\t&.tabulator-loading{\r\n\t\t\t\tborder:4px solid #333;\r\n\t\t\t\tcolor:#000;\r\n\t\t\t}\r\n\r\n\t\t\t//error message\r\n\t\t\t&.tabulator-error{\r\n\t\t\t\tborder:4px solid #D00;\r\n\t\t\t\tcolor:#590000;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n//row element\r\n.tabulator-row{\r\n\tposition: relative;\r\n\tbox-sizing: border-box;\r\n\r\n\tbox-sizing: border-box;\r\n\tmin-height:$textSize + ($headerMargin * 2);\r\n\r\n\tbackground-color: $handleColor;\r\n\r\n\tpadding-left: $handleWidth !important;\r\n\r\n\tmargin-bottom: 2px;\r\n\r\n\t&:nth-child(even){\r\n\t\tbackground-color: $handleColorAlt;\r\n\r\n\t\t.tabulator-cell{\r\n\t\t\tbackground-color: $rowAltBackgroundColor;\r\n\t\t}\r\n\t}\r\n\r\n\t&.tabulator-selectable:hover{\r\n\t\tcursor: pointer;\r\n\r\n\t\t.tabulator-cell{\r\n\t\t\tbackground-color:$rowHoverBackground;\r\n\t\t}\r\n\t}\r\n\r\n\t&.tabulator-selected{\r\n\t\t.tabulator-cell{\r\n\t\t\tbackground-color:$rowSelectedBackground;\r\n\t\t}\r\n\t}\r\n\r\n\t&.tabulator-selected:hover{\r\n\t\t.tabulator-cell{\r\n\t\t\tbackground-color:$rowSelectedBackgroundHover;\r\n\t\t\tcursor: pointer;\r\n\t\t}\r\n\t}\r\n\r\n\t&.tabulator-moving{\r\n\t\tposition: absolute;\r\n\r\n\t\tborder-top:1px solid  $rowBorderColor;\r\n\t\tborder-bottom:1px solid  $rowBorderColor;\r\n\r\n\t\tpointer-events: none !important;\r\n\t\tz-index:15;\r\n\t}\r\n\r\n\t//row resize handles\r\n\t.tabulator-row-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\tbottom:0;\r\n\t\tleft:0;\r\n\t\theight:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\ttop:0;\r\n\t\t\tbottom:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ns-resize;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-frozen{\r\n\t\tdisplay: inline-block;\r\n\t\tposition: absolute;\r\n\r\n\t\tbackground-color: inherit;\r\n\r\n\t\tz-index: 10;\r\n\r\n\t\t&.tabulator-frozen-left{\r\n\t\t\tpadding-left: $handleWidth;\r\n\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t&.tabulator-frozen-right{\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-responsive-collapse{\r\n\t\tbox-sizing:border-box;\r\n\r\n\t\tpadding:5px;\r\n\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\t&:empty{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\ttable{\r\n\t\t\tfont-size:$textSize;\r\n\r\n\t\t\ttr{\r\n\t\t\t\ttd{\r\n\t\t\t\t\tposition: relative;\r\n\r\n\t\t\t\t\t&:first-of-type{\r\n\t\t\t\t\t\tpadding-right:10px;\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//cell element\r\n\t.tabulator-cell{\r\n\t\tdisplay:inline-block;\r\n\t\tposition: relative;\r\n\t\tbox-sizing:border-box;\r\n\t\tpadding:6px 4px;\r\n\t\tborder-right:2px solid $rowBorderColor;\r\n\t\tvertical-align:middle;\r\n\t\twhite-space:nowrap;\r\n\t\toverflow:hidden;\r\n\t\ttext-overflow:ellipsis;\r\n\r\n\t\tbackground-color: $rowBackgroundColor;\r\n\r\n\t\t&.tabulator-editing{\r\n\t\t\tborder:1px solid  $editBoxColor;\r\n\t\t\tpadding: 0;\r\n\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-validation-fail{\r\n\t\t\tborder:1px solid $errorColor;\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\r\n\t\t\t\tcolor: $errorColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//hide left resize handle on first column\r\n\t\t&:first-child{\r\n\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//movable row handle\r\n\t\t&.tabulator-row-handle{\r\n\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\t//handle holder\r\n\t\t\t.tabulator-row-handle-box{\r\n\t\t\t\twidth:80%;\r\n\r\n\t\t\t\t//Hamburger element\r\n\t\t\t\t.tabulator-row-handle-bar{\r\n\t\t\t\t\twidth:100%;\r\n\t\t\t\t\theight:3px;\r\n\t\t\t\t\tmargin-top:2px;\r\n\t\t\t\t\tbackground:#666;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-branch{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:9px;\r\n\t\t\twidth:7px;\r\n\r\n\t\t\tmargin-top:-9px;\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control{\r\n\r\n\t\t\tdisplay:inline-flex;\r\n\t\t\tjustify-content:center;\r\n\t\t\talign-items:center;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:11px;\r\n\t\t\twidth:11px;\r\n\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder:1px solid $rowTextColor;\r\n\t\t\tborder-radius:2px;\r\n\t\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\t\toverflow:hidden;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\tcursor:pointer;\r\n\t\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: transparent;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-expand{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-responsive-collapse-toggle{\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\t\t\tjustify-content:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\theight:15px;\r\n\t\t\twidth:15px;\r\n\r\n\t\t\tborder-radius:20px;\r\n\t\t\tbackground:#666;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:1.1em;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\topacity:.7;\r\n\t\t\t}\r\n\r\n\t\t\t&.open{\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\t\tdisplay:initial;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-open{\r\n\t\t\t\t\tdisplay:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\tdisplay:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-traffic-light{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\theight:14px;\r\n\t\t\twidth:14px;\r\n\r\n\t\t\tborder-radius:14px;\r\n\t\t}\r\n\t}\r\n\r\n\t//row grouping element\r\n\t&.tabulator-group{\r\n\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-bottom:2px solid $primary;\r\n\t\tborder-top:2px solid $primary;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:lighten($primary, 20%);\r\n\t\tfont-weight:bold;\r\n\t\tcolor:fff;\r\n\t\tmargin-bottom: 2px;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:rgba(0,0,0,.1);\r\n\t\t}\r\n\r\n\r\n\t\t&.tabulator-group-visible{\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\tpadding-left:30px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\tpadding-left:50px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\tpadding-left:70px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\tpadding-left:90px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\tpadding-left:110px;\r\n\t\t}\r\n\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:$primary;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n.tabulator-edit-select-list{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tmax-height:200px;\r\n\r\n\tbackground:$rowBackgroundColor;\r\n\tborder:1px solid $editBoxColor;\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-edit-select-list-item{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\r\n\t\t&.active{\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-group{\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\tpadding:4px;\r\n\t\tpadding-top:6px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\tfont-weight:bold;\r\n\t}\r\n}\r\n\r\n// Table print styling\r\n\r\n.tabulator-print-fullscreen{\r\n\tposition: absolute;\r\n\ttop:0;\r\n\tbottom:0;\r\n\tleft:0;\r\n\tright:0;\r\n\r\n\tz-index: 10000;\r\n}\r\n\r\nbody.tabulator-print-fullscreen-hide>*:not(.tabulator-print-fullscreen){\r\n\tdisplay:none !important;\r\n}\r\n\r\n.tabulator-print-table{\r\n\tborder-collapse: collapse;\r\n}\r\n\r\n"]}
\ No newline at end of file
+{"version":3,"sources":["tabulator_modern.scss"],"names":[],"mappings":"AA+CA,WACC,kBAAkB,AAClB,sBA1CgB,AA2ChB,sBA5CqB,AA6CrB,gBAAe,AACf,eA5Ca,AA6Cb,gBAAgB,AAMhB,uBAAwB,CA+gBxB,AA3hBD,iFAiBI,cAAc,CACd,AAlBJ,kCAuBE,yBAAiB,AAAjB,sBAAiB,AAAjB,qBAAiB,AAAjB,gBAAiB,CACjB,AAxBF,6BA4BE,kBAAiB,AACjB,sBAAsB,AAEtB,WAAU,AAEV,gCA7Ee,AA8Ef,kBAAiB,AACjB,sBAvEyB,AAwEzB,cAhFe,AAiFf,gBAAgB,AAEhB,mBAAmB,AACnB,gBAAe,AAEf,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,oBAAoB,AAEpB,kBArDe,AAuDf,eAAgB,CAgQhB,AAjTF,qDAoDG,YAAY,CACZ,AArDH,4CAyDG,qBAAoB,AACpB,kBAAiB,AACjB,sBAAqB,AACrB,4BA9FoB,AA+FpB,sBAjGwB,AAkGxB,gBAAe,AACf,sBAAsB,AACtB,eAAgB,CAyLhB,AAzPH,6DAmEI,kBAAkB,AAClB,yBAhHa,AAiHb,mBAA8C,AAC9C,mBAAoB,CACpB,AAvEJ,mEA2EI,sBAAqB,AACrB,kBAAkB,AAClB,WAAW,CAyCX,AAtHJ,wFAiFK,sBAAqB,AACrB,WAAW,AAEX,mBAAmB,AACnB,gBAAgB,AAChB,uBAAuB,AACvB,qBAAqB,CAgBrB,AAvGL,gHA2FM,sBAAsB,AACtB,WAAW,AAEX,yBA1IW,AA4IX,YAAW,AAEX,gBAAgB,AAEhB,cAAc,AACd,aAjJW,CAkJX,AAtGN,oFA2GK,qBAAqB,AACrB,kBAAkB,AAClB,QAAO,AACP,UAAS,AACT,QAAQ,AACR,SAAS,AACT,kCAAkC,AAClC,mCAAmC,AACnC,+BA/IqC,CAgJrC,AApHL,0FA6HK,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AAEb,6BA5KY,AA6KZ,eAAgB,CAKhB,AAtIL,oHAoIM,iBAAiB,CACjB,AArIN,0FA6IK,YAAa,CACb,AA9IL,+DAmJI,kBAAkB,AAClB,mCAAgE,AAChE,qBAvLmB,CAwLnB,AAtJJ,qEA0JI,kBAAkB,AAClB,sBAAsB,AACtB,eAAc,AACd,WAAU,AACV,iBAAkB,CAiBlB,AA/KJ,8EAkKK,qBAAsB,CACtB,AAnKL,yEAsKK,cAAe,CACf,AAvKL,sFA2KM,QAAS,AACT,QAAS,CACT,AA7KN,oFAoLK,kBAAkB,CAClB,AArLL,qEAwLK,eAAc,AACd,wBAAoD,CACpD,AA1LL,uHA+LM,gBAAgB,AAChB,+BA5NoC,CA6NpC,AAjMN,sHAsMM,gBAAgB,AAChB,+BAnPW,CAoPX,AAxMN,uHA6MM,6BAzPW,AA0PX,kBAAmB,CACnB,AA/MN,+GAsNM,uBAAyB,AAAzB,yBAAyB,AACzB,uBAAuB,AAEvB,oBAAY,AAAZ,aAAY,AACZ,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,sBAAsB,CACtB,AA5NN,oHAiOM,wBAAyB,CACzB,AAlON,2GAuOM,gBAAe,AACf,gBAAgB,CAChB,AAzON,uIA6OO,gBAAe,AACf,mBAAmB,CACnB,AA/OP,uGAoPM,qBAAqB,CACrB,AArPN,+CA4PG,qBAAqB,AACrB,kBAAkB,AAIlB,UAAW,CAWX,AA5QH,qEAoQI,kBA1Qa,AA4Qb,2BA7RgB,CA8RhB,AAvQJ,sEA0QI,0BAjSgB,CAkShB,AA3QJ,qDA+QG,sBAAqB,AACrB,eAAc,AAEd,uCAAqD,AAErD,0BAAyD,AAgBzD,0BA3TiB,AA4TjB,6BAvUoB,AAyUpB,eAAgB,CAChB,AAxSH,oEAuRI,yBAA0B,AAE1B,yBAAyD,CASzD,AAlSJ,iGA4RK,YAAa,CACb,AA7RL,oFAgSK,eAAe,CACf,AAjSL,2DA2SG,cAAc,CAKd,AAhTH,iEA8SI,YAAa,CACb,AA/SJ,kCAqTE,kBAAiB,AACjB,WAAU,AACV,mBAAmB,AACnB,cAAa,AACb,gCAAiC,CAyDjC,AAlXF,wCA4TG,YAAa,CACb,AA7TH,yDAiUG,sBAAqB,AACrB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AASlB,UAAU,CAYV,AAxVH,wFAsUI,kBAAkB,AAClB,MAAK,AACL,OAAM,AACN,WAAW,CACX,AA1UJ,8DA+UI,qBAAqB,AAErB,cAAa,AACb,aAAY,AAEZ,cAhYa,AAiYb,gBAAiB,AACjB,cAAe,CACf,AAvVJ,mDA4VG,kBAAiB,AACjB,qBAAoB,AACpB,yBAvXwB,AAwXxB,mBAAmB,AACnB,iBAAgB,AAChB,UAvXe,CAuYf,AAjXH,kFAqWK,gBAAiB,AACjB,4BAAwD,CASxD,AA/WL,sGAyWM,+BArZW,CAsZX,AA1WN,yGA6WM,4BAzZW,CA0ZX,AA9WN,wCAuXE,kBAAiB,AACjB,QAAO,AACP,MAAK,AACL,SAAQ,AACR,SAAS,CAUT,AArYF,6CA8XG,OAAM,AACN,UAAU,CACV,AAhYH,8CAmYG,gBAAgB,CAChB,AApYH,6BA0YE,iBAAgB,AAChB,0BApZwB,AAqZxB,sBAxZyB,AAyZzB,iBAAgB,AAChB,cA1be,AA2bf,gBAAgB,AAChB,mBAAkB,AAClB,qBAAgB,AAAhB,iBAAgB,AAEhB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CA0FpB,AAhfF,qDAyZG,sBAAqB,AACrB,wBAAuB,AACvB,sBAA2B,AAE3B,gBAAgB,AAEhB,0BAAyD,AAEzD,uCAAqD,AACrD,0CAAwD,AAcxD,6BAvciB,AAwcjB,0BAxciB,AA0cjB,eAAgB,CAOhB,AA1bH,oEAqaI,yBAAyD,CASzD,AA9aJ,iGAwaK,YAAa,CACb,AAzaL,oFA4aK,eAAe,CACf,AA7aL,gEAsbI,mBAAkB,AAClB,mBAAkB,AAClB,4BAA6B,CAC7B,AAzbJ,kDA8bG,cA1ec,AA2ed,oBAAmB,AACnB,oBAAmB,AACnB,iBAAiB,CACjB,AAlcH,kDAscG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBArdoB,AAsdpB,iBAAiB,CACjB,AA7cH,8CAidG,YAAY,CACZ,AAldH,6CAsdG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBAreoB,AAsepB,kBAAiB,AAEjB,6BAA+B,CAiB/B,AA/eH,oDAieI,aA7gBa,CA8gBb,AAleJ,sDAqeI,UAAU,CACV,AAteJ,kEA0eK,eAAc,AACd,0BAAyB,AACzB,UAAU,CACV,AA7eL,6BAofE,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AAElB,MAAK,AACL,OAAM,AACN,YAAW,AAEX,YAAW,AACX,WAAU,AACV,0BAAyB,AACzB,iBAAiB,CA2BjB,AA1hBF,mDAmgBG,qBAAoB,AAEpB,cAAa,AACb,kBAAiB,AAEjB,mBAAkB,AAElB,gBAAe,AACf,gBAAgB,AAChB,cAAc,CAad,AAzhBH,qEAghBI,sBAAqB,AACrB,UAAU,CACV,AAlhBJ,mEAshBI,sBAAqB,AACrB,aAAa,CACb,AAMJ,eACC,kBAAkB,AAGlB,sBAAsB,AACtB,gBAA0C,AAE1C,yBAjlBgB,AAmlBhB,4BAAqC,AAErC,iBAAkB,CAyXlB,AApYD,6BAcE,wBAhjBqC,CAqjBrC,AAnBF,6CAiBG,qBAvkBwB,CAwkBxB,AAlBH,0CAsBE,cAAe,CAKf,AA3BF,0DAyBG,qBA5kBqB,CA6kBrB,AA1BH,kDA+BG,wBAhlB4B,CAilB5B,AAhCH,wDAqCG,yBArlBiC,AAslBjC,cAAe,CACf,AAvCH,gCA2CE,kBAAkB,AAElB,0BAlmBkB,AAmmBlB,6BAnmBkB,AAqmBlB,8BAA+B,AAC/B,UAAU,CACV,AAlDF,4CAsDE,kBAAiB,AACjB,QAAO,AACP,SAAQ,AACR,OAAM,AACN,UAAU,CAUV,AApEF,iDA6DG,MAAK,AACL,WAAW,CACX,AA/DH,kDAkEG,gBAAgB,CAChB,AAnEH,iCAuEE,qBAAqB,AACrB,kBAAkB,AAElB,yBAAyB,AAEzB,UAAW,CAUX,AAtFF,uDA+EG,kBAnnBc,AAonBd,2BAroBiB,CAsoBjB,AAjFH,wDAoFG,0BAzoBiB,CA0oBjB,AArFH,8CAyFE,sBAAqB,AAErB,YAAW,AAEX,0BAlpBkB,AAmpBlB,4BAnpBkB,CAsqBlB,AAjHF,oDAiGG,YAAY,CACZ,AAlGH,oDAqGG,cA1qBW,CAqrBX,AAhHH,0DAyGK,iBAAkB,CAKlB,AA9GL,wEA4GM,kBAAkB,CAClB,AA7GN,+BAqHE,qBAAoB,AACpB,kBAAkB,AAClB,sBAAqB,AACrB,gBAAe,AACf,4BA9qBkB,AA+qBlB,sBAAqB,AACrB,mBAAkB,AAClB,gBAAe,AACf,uBAAsB,AAEtB,wBAtrByB,CA+2BzB,AAxTF,iDAkIG,yBAhrBkB,AAirBlB,SAAU,CAMV,AAzIH,+GAsII,WAAU,AACV,sBAAsB,CACtB,AAxIJ,yDA4IG,qBAzrBgB,CAgsBhB,AAnJH,+HA8II,WAAU,AACV,uBAAsB,AAEtB,UA9rBe,CA+rBf,AAlJJ,6EAwJI,YAAa,CACb,AAzJJ,oDA+JG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAElB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAcpB,AAnLH,8EAyKI,SAAS,CAST,AAlLJ,wGA6KK,WAAU,AACV,WAAU,AACV,eAAc,AACd,eAAe,CACf,AAjLL,2DAsLG,qBAAoB,AACpB,sBAAqB,AAErB,WAAU,AACV,UAAS,AAET,gBAAe,AACf,iBAAgB,AAEhB,8BAA6B,AAE7B,2BAtvBiB,AAuvBjB,4BAvvBiB,CAwvBjB,AAnMH,4DAuMG,2BAAmB,AAAnB,oBAAmB,AACnB,qBAAsB,AAAtB,uBAAsB,AACtB,sBAAkB,AAAlB,mBAAkB,AAClB,sBAAqB,AAErB,YAAW,AACX,WAAU,AAEV,iBAAgB,AAEhB,sBArwBe,AAswBf,kBAAiB,AACjB,0BAA4B,AAE5B,eAAe,CAmDf,AAxQH,kEAwNI,eAAc,AACd,yBAA4B,CAC5B,AA1NJ,kGA6NI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,sBAAuB,CAavB,AAhPJ,wGAsOK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAlyBa,CAmyBb,AA/OL,gGAmPI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,eA7yBc,CA0zBd,AAtQJ,sGA4PK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAxzBa,CAyzBb,AArQL,qEA2QG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,uBAAsB,AAEtB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,oBAAoB,AAEpB,YAAW,AACX,WAAU,AAEV,mBAAkB,AAClB,gBAAe,AAEf,cAj1BwB,AAk1BxB,gBAAgB,AAChB,eAAe,CAmBf,AA/SH,2EA+RI,UAAU,CACV,AAhSJ,sHAoSK,eAAe,CACf,AArSL,sOA6SI,YAAY,CACZ,AA9SJ,wDAkTG,qBAAqB,AACrB,YAAW,AACX,WAAU,AAEV,kBAAkB,CAClB,AAvTH,+BA6TE,sBAAqB,AACrB,gCAx4Be,AAy4Bf,6BAz4Be,AA04Bf,YAAW,AACX,kBAAiB,AACjB,mBAAiC,AACjC,gBAAgB,AAChB,UAAS,AACT,kBAAkB,AAElB,cAAe,CA4Df,AAnYF,qCA0UG,eAAc,AACd,+BAA+B,CAC/B,AA5UH,wEAiVI,kBAAiB,AACjB,kCAAkC,AAClC,mCAAmC,AACnC,6BA95Ba,AA+5Bb,eAAgB,CAChB,AAtVJ,uDA0VG,iBAAiB,CACjB,AA3VH,uDA8VG,iBAAiB,CACjB,AA/VH,uDAkWG,iBAAiB,CACjB,AAnWH,uDAsWG,iBAAiB,CACjB,AAvWH,uDA0WG,kBAAkB,CAClB,AA3WH,uDA8WG,oBAAqB,CACrB,AA/WH,gDAoXG,qBAAqB,AACrB,QAAQ,AACR,SAAS,AACT,kBAAiB,AACjB,iCAAiC,AACjC,oCAAoC,AACpC,eAAe,AACf,8BAr8Bc,AAs8Bd,qBAAqB,CACrB,AA7XH,oCAgYG,iBAAgB,AAChB,aA38Bc,CA48Bd,AAIH,4BACC,kBAAkB,AAClB,qBAAoB,AACpB,sBAAqB,AAErB,iBAAgB,AAEhB,mBAp8B0B,AAq8B1B,yBA57BoB,AA87BpB,eAr9Ba,AAu9Bb,gBAAe,AACf,iCAAiC,AAEjC,aAAc,CA6Bd,AA5CD,6DAkBE,YAAW,AAEX,UA98BgB,CA29BhB,AAjCF,oEAuBG,cAp9BwB,AAq9BxB,kBA58BkB,CA68BlB,AAzBH,mEA4BG,eAAc,AAEd,cA39BwB,AA49BxB,kBAn9BkB,CAo9BlB,AAhCH,8DAoCE,6BA/9BkB,AAi+BlB,YAAW,AACX,gBAAe,AAEf,WAn+BgB,AAo+BhB,eAAgB,CAChB,AAKF,4BACC,kBAAkB,AAClB,MAAK,AACL,SAAQ,AACR,OAAM,AACN,QAAO,AAEP,aAAc,CACd,AAED,uEACC,sBAAuB,CACvB,AAED,uBACC,wBAAyB,CACzB","file":"tabulator_modern.min.css","sourcesContent":["/* Tabulator v4.5.1 (c) Oliver Folkerd */\n\n\r\n$primary: #3759D7 !default; //the base text color from which the rest of the theme derives\r\n\r\n//Main Theme Variables\r\n$backgroundColor: #fff !default; //background color of tabulator\r\n$borderColor:#fff !default; //border to tabulator\r\n$textSize:16px !default; //table text size\r\n\r\n//header themeing\r\n$headerBackgroundColor:#fff !default; //border to tabulator\r\n$headerTextColor:$primary !default; //header text colour\r\n$headerBorderColor:#fff !default;  //header border color\r\n$headerSeperatorColor:$primary !default; //header bottom seperator color\r\n$headerMargin:4px !default; //padding round header\r\n\r\n//column header arrows\r\n$sortArrowActive: $primary !default;\r\n$sortArrowInactive: lighten($primary, 30%) !default;\r\n\r\n//row themeing\r\n$rowBackgroundColor:#f3f3f3 !default; //table row background color\r\n$rowAltBackgroundColor:#fff !default; //table row background color\r\n$rowBorderColor:#fff !default; //table border color\r\n$rowTextColor:#333 !default; //table text color\r\n$rowHoverBackground:#bbb !default; //row background color on hover\r\n\r\n$rowSelectedBackground: #9ABCEA !default; //row background color when selected\r\n$rowSelectedBackgroundHover: #769BCC !default;//row background color when selected and hovered\r\n\r\n$editBoxColor:#1D68CD !default; //border color for edit boxes\r\n$errorColor:#dd0000 !default; //error indication\r\n\r\n//footer themeing\r\n$footerBackgroundColor:#fff !default; //border to tabulator\r\n$footerTextColor:$primary !default; //footer text colour\r\n$footerBorderColor:#aaa !default; //footer border color\r\n$footerSeperatorColor:#999 !default; //footer bottom seperator color\r\n$footerActiveColor:$primary !default; //footer bottom active text color\r\n\r\n$handleWidth:10px !default; //width of the row handle\r\n$handleColor: $primary !default; //color for odd numbered rows\r\n$handleColorAlt: lighten($primary, 10%) !default; //color for even numbered rows\r\n\r\n\r\n//Tabulator Containing Element\r\n.tabulator{\r\n\tposition: relative;\r\n\tborder: 1px solid $borderColor;\r\n\tbackground-color: $backgroundColor;\r\n\toverflow:hidden;\r\n\tfont-size:$textSize;\r\n\ttext-align: left;\r\n\r\n\t-webkit-transform: translatez(0);\r\n\t-moz-transform: translatez(0);\r\n\t-ms-transform: translatez(0);\r\n\t-o-transform: translatez(0);\r\n\ttransform: translatez(0);\r\n\r\n\t&[tabulator-layout=\"fitDataFill\"]{\r\n\t\t.tabulator-tableHolder{\r\n\t\t\t.tabulator-table{\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t&.tabulator-block-select{\r\n\t\tuser-select: none;\r\n\t}\r\n\r\n\t//column header containing element\r\n\t.tabulator-header{\r\n\t\tposition:relative;\r\n\t\tbox-sizing: border-box;\r\n\r\n\t\twidth:100%;\r\n\r\n\t\tborder-bottom:3px solid $headerSeperatorColor;\r\n\t\tmargin-bottom:4px;\r\n\t\tbackground-color: $headerBackgroundColor;\r\n\t\tcolor: $headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:hidden;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\tpadding-left:$handleWidth;\r\n\r\n\t\tfont-size: 1.1em;\r\n\r\n\t\t&.tabulator-header-hidden{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\t//individual column header element\r\n\t\t.tabulator-col{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition:relative;\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tborder-right:2px solid $headerBorderColor;\r\n\t\t\tbackground-color: $headerBackgroundColor;\r\n\t\t\ttext-align:left;\r\n\t\t\tvertical-align: bottom;\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&.tabulator-moving{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tborder:1px solid  $headerSeperatorColor;\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 10%);\r\n\t\t\t\tpointer-events: none;\r\n\t\t\t}\r\n\r\n\t\t\t//hold content of column header\r\n\t\t\t.tabulator-col-content{\r\n\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tpadding:4px;\r\n\r\n\t\t\t\t//hold title of column header\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\twhite-space: nowrap;\r\n\t\t\t\t\toverflow: hidden;\r\n\t\t\t\t\ttext-overflow: ellipsis;\r\n\t\t\t\t\tvertical-align:bottom;\r\n\r\n\t\t\t\t\t//element to hold title editor\r\n\t\t\t\t\t.tabulator-title-editor{\r\n\t\t\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\t\tborder:1px solid $primary;\r\n\r\n\t\t\t\t\t\tpadding:1px;\r\n\r\n\t\t\t\t\t\tbackground: #fff;\r\n\r\n\t\t\t\t\t\tfont-size: 1em;\r\n\t\t\t\t\t\tcolor: $primary;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//column sorter arrow\r\n\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\tdisplay: inline-block;\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\ttop:9px;\r\n\t\t\t\t\tright:8px;\r\n\t\t\t\t\twidth: 0;\r\n\t\t\t\t\theight: 0;\r\n\t\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t//complex header column group\r\n\t\t\t&.tabulator-col-group{\r\n\r\n\t\t\t\t//gelement to hold sub columns in column group\r\n\t\t\t\t.tabulator-col-group-cols{\r\n\t\t\t\t\tposition:relative;\r\n\t\t\t\t\tdisplay: flex;\r\n\r\n\t\t\t\t\tborder-top:2px solid $headerSeperatorColor;\r\n\t\t\t\t\toverflow: hidden;\r\n\r\n\t\t\t\t\t.tabulator-col:last-child{\r\n\t\t\t\t\t\tmargin-right:-1px;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\t//hide left resize handle on first column\r\n\t\t\t&:first-child{\r\n\t\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//placeholder element for sortable columns\r\n\t\t\t&.ui-sortable-helper{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tbackground-color: darken($headerBackgroundColor, 10%) !important;\r\n\t\t\t\tborder:1px solid $headerBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t//header filter containing element\r\n\t\t\t.tabulator-header-filter{\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\tmargin-top:2px;\r\n\t\t\t\twidth:100%;\r\n\t\t\t\ttext-align: center;\r\n\r\n\t\t\t\t//styling adjustment for inbuilt editors\r\n\t\t\t\ttextarea{\r\n\t\t\t\t\theight:auto !important;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsvg{\r\n\t\t\t\t\tmargin-top: 3px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinput{\r\n\t\t\t\t\t&::-ms-clear {\r\n\t\t\t\t\t\twidth : 0;\r\n\t\t\t\t\t\theight: 0;\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//styling child elements for sortable columns\r\n\t\t\t&.tabulator-sortable{\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tpadding-right:25px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\t&[aria-sort=\"none\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"asc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowActive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"desc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\t\t\tborder-bottom: none;\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&.tabulator-col-vertical{\r\n\t\t\t\t.tabulator-col-content{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\twriting-mode: vertical-rl;\r\n\t\t\t\t\t\ttext-orientation: mixed;\r\n\r\n\t\t\t\t\t\tdisplay:flex;\r\n\t\t\t\t\t\talign-items:center;\r\n\t\t\t\t\t\tjustify-content:center;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\ttransform: rotate(180deg);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-sortable{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\tpadding-top:20px;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\t\tpadding-bottom:20px;\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.tabulator-arrow{\r\n\t\t\t\t\t\tright:calc(50% - 6px);\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\t.tabulator-frozen{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\tposition: absolute;\r\n\r\n\t\t\t// background-color: inherit;\r\n\r\n\t\t\tz-index: 10;\r\n\r\n\t\t\t&.tabulator-frozen-left{\r\n\t\t\t\tpadding-left: $handleWidth;\r\n\r\n\t\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-frozen-right{\r\n\t\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\tborder-top:2px solid $headerSeperatorColor !important;\r\n\r\n\t\t\tbackground:lighten($headerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tpadding-left: 0 !important;\r\n\r\n\t\t\t\tbackground:lighten($headerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-cell{\r\n\t\t\t\t\tbackground:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\t\t\tborder-bottom:1px solid $headerBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen-rows-holder{\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\t&:empty{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//scrolling element to hold table\r\n\t.tabulator-tableHolder{\r\n\t\tposition:relative;\r\n\t\twidth:100%;\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:auto;\r\n\t\t-webkit-overflow-scrolling: touch;\r\n\r\n\t\t&:focus{\r\n\t\t\toutline: none;\r\n\t\t}\r\n\r\n\t\t//default placeholder element\r\n\t\t.tabulator-placeholder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t&[tabulator-render-mode=\"virtual\"]{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\ttop:0;\r\n\t\t\t\tleft:0;\r\n\t\t\t\theight:100%;\r\n\t\t\t}\r\n\r\n\t\t\twidth:100%;\r\n\r\n\t\t\tspan{\r\n\t\t\t\tdisplay: inline-block;\r\n\r\n\t\t\t\tmargin:0 auto;\r\n\t\t\t\tpadding:10px;\r\n\r\n\t\t\t\tcolor:$primary;\r\n\t\t\t\tfont-weight: bold;\r\n\t\t\t\tfont-size: 20px;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//element to hold table rows\r\n\t\t.tabulator-table{\r\n\t\t\tposition:relative;\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tbackground-color:$rowBackgroundColor;\r\n\t\t\twhite-space: nowrap;\r\n\t\t\toverflow:visible;\r\n\t\t\tcolor:$rowTextColor;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\t&.tabulator-calcs{\r\n\t\t\t\t\tfont-weight: bold;\r\n\t\t\t\t\tbackground:darken($rowAltBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t\t&.tabulator-calcs-top{\r\n\t\t\t\t\t\tborder-bottom:2px solid $headerSeperatorColor;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-calcs-bottom{\r\n\t\t\t\t\t\tborder-top:2px solid $headerSeperatorColor;\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\r\n\t//column resize handles\r\n\t.tabulator-col-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\ttop:0;\r\n\t\tbottom:0;\r\n\t\twidth:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\tleft:0;\r\n\t\t\tright:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ew-resize;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//footer element\r\n\t.tabulator-footer{\r\n\t\tpadding:5px 10px;\r\n\t\tborder-top:1px solid $footerSeperatorColor;\r\n\t\tbackground-color: $footerBackgroundColor;\r\n\t\ttext-align:right;\r\n\t\tcolor: $footerTextColor;\r\n\t\tfont-weight:bold;\r\n\t\twhite-space:nowrap;\r\n\t\tuser-select:none;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\twidth:calc(100% + 20px);\r\n\t\t\tmargin:-5px -10px 5px -10px;\r\n\r\n\t\t\ttext-align: left;\r\n\r\n\t\t\tbackground:lighten($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\tborder-top:3px solid $headerSeperatorColor !important;\r\n\t\t\tborder-bottom:2px solid $headerSeperatorColor !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:lighten($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-cell{\r\n\t\t\t\t\tbackground:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-bottom:1px solid $rowBorderColor;\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&:only-child{\r\n\t\t\t\tmargin-bottom:-5px;\r\n\t\t\t\tborder-bottom:none;\r\n\t\t\t\tborder-bottom:none !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-paginator{\r\n\t\t\tcolor: $footerTextColor;\r\n\t\t\tfont-family:inherit;\r\n\t\t\tfont-weight:inherit;\r\n\t\t\tfont-size:inherit;\r\n\t\t}\r\n\r\n\t\t//page size select element\r\n\t\t.tabulator-page-size{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 5px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-pages{\r\n\t\t\tmargin:0 7px;\r\n\t\t}\r\n\r\n\t\t//pagination button\r\n\t\t.tabulator-page{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 2px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\r\n\t\t\tbackground:rgba(255,255,255,.2);\r\n\r\n\t\t\t&.active{\r\n\t\t\t\tcolor:$footerActiveColor;\r\n\t\t\t}\r\n\r\n\t\t\t&:disabled{\r\n\t\t\t\topacity:.5;\r\n\t\t\t}\r\n\r\n\t\t\t&:not(.disabled){\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground:rgba(0,0,0,.2);\r\n\t\t\t\t\tcolor:#fff;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//holding div that contains loader and covers tabulator element to prevent interaction\r\n\t.tabulator-loader{\r\n\t\tposition:absolute;\r\n\t\tdisplay: flex;\r\n\t\talign-items:center;\r\n\r\n\t\ttop:0;\r\n\t\tleft:0;\r\n\t\tz-index:100;\r\n\r\n\t\theight:100%;\r\n\t\twidth:100%;\r\n\t\tbackground:rgba(0,0,0,.4);\r\n\t\ttext-align:center;\r\n\r\n\t\t//loading message element\r\n\t\t.tabulator-loader-msg{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 auto;\r\n\t\t\tpadding:10px 20px;\r\n\r\n\t\t\tborder-radius:10px;\r\n\r\n\t\t\tbackground:#fff;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:16px;\r\n\r\n\t\t\t//loading message\r\n\t\t\t&.tabulator-loading{\r\n\t\t\t\tborder:4px solid #333;\r\n\t\t\t\tcolor:#000;\r\n\t\t\t}\r\n\r\n\t\t\t//error message\r\n\t\t\t&.tabulator-error{\r\n\t\t\t\tborder:4px solid #D00;\r\n\t\t\t\tcolor:#590000;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n//row element\r\n.tabulator-row{\r\n\tposition: relative;\r\n\tbox-sizing: border-box;\r\n\r\n\tbox-sizing: border-box;\r\n\tmin-height:$textSize + ($headerMargin * 2);\r\n\r\n\tbackground-color: $handleColor;\r\n\r\n\tpadding-left: $handleWidth !important;\r\n\r\n\tmargin-bottom: 2px;\r\n\r\n\t&:nth-child(even){\r\n\t\tbackground-color: $handleColorAlt;\r\n\r\n\t\t.tabulator-cell{\r\n\t\t\tbackground-color: $rowAltBackgroundColor;\r\n\t\t}\r\n\t}\r\n\r\n\t&.tabulator-selectable:hover{\r\n\t\tcursor: pointer;\r\n\r\n\t\t.tabulator-cell{\r\n\t\t\tbackground-color:$rowHoverBackground;\r\n\t\t}\r\n\t}\r\n\r\n\t&.tabulator-selected{\r\n\t\t.tabulator-cell{\r\n\t\t\tbackground-color:$rowSelectedBackground;\r\n\t\t}\r\n\t}\r\n\r\n\t&.tabulator-selected:hover{\r\n\t\t.tabulator-cell{\r\n\t\t\tbackground-color:$rowSelectedBackgroundHover;\r\n\t\t\tcursor: pointer;\r\n\t\t}\r\n\t}\r\n\r\n\t&.tabulator-moving{\r\n\t\tposition: absolute;\r\n\r\n\t\tborder-top:1px solid  $rowBorderColor;\r\n\t\tborder-bottom:1px solid  $rowBorderColor;\r\n\r\n\t\tpointer-events: none !important;\r\n\t\tz-index:15;\r\n\t}\r\n\r\n\t//row resize handles\r\n\t.tabulator-row-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\tbottom:0;\r\n\t\tleft:0;\r\n\t\theight:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\ttop:0;\r\n\t\t\tbottom:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ns-resize;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-frozen{\r\n\t\tdisplay: inline-block;\r\n\t\tposition: absolute;\r\n\r\n\t\tbackground-color: inherit;\r\n\r\n\t\tz-index: 10;\r\n\r\n\t\t&.tabulator-frozen-left{\r\n\t\t\tpadding-left: $handleWidth;\r\n\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t&.tabulator-frozen-right{\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-responsive-collapse{\r\n\t\tbox-sizing:border-box;\r\n\r\n\t\tpadding:5px;\r\n\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\t&:empty{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\ttable{\r\n\t\t\tfont-size:$textSize;\r\n\r\n\t\t\ttr{\r\n\t\t\t\ttd{\r\n\t\t\t\t\tposition: relative;\r\n\r\n\t\t\t\t\t&:first-of-type{\r\n\t\t\t\t\t\tpadding-right:10px;\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//cell element\r\n\t.tabulator-cell{\r\n\t\tdisplay:inline-block;\r\n\t\tposition: relative;\r\n\t\tbox-sizing:border-box;\r\n\t\tpadding:6px 4px;\r\n\t\tborder-right:2px solid $rowBorderColor;\r\n\t\tvertical-align:middle;\r\n\t\twhite-space:nowrap;\r\n\t\toverflow:hidden;\r\n\t\ttext-overflow:ellipsis;\r\n\r\n\t\tbackground-color: $rowBackgroundColor;\r\n\r\n\t\t&.tabulator-editing{\r\n\t\t\tborder:1px solid  $editBoxColor;\r\n\t\t\tpadding: 0;\r\n\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-validation-fail{\r\n\t\t\tborder:1px solid $errorColor;\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\r\n\t\t\t\tcolor: $errorColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//hide left resize handle on first column\r\n\t\t&:first-child{\r\n\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//movable row handle\r\n\t\t&.tabulator-row-handle{\r\n\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\t//handle holder\r\n\t\t\t.tabulator-row-handle-box{\r\n\t\t\t\twidth:80%;\r\n\r\n\t\t\t\t//Hamburger element\r\n\t\t\t\t.tabulator-row-handle-bar{\r\n\t\t\t\t\twidth:100%;\r\n\t\t\t\t\theight:3px;\r\n\t\t\t\t\tmargin-top:2px;\r\n\t\t\t\t\tbackground:#666;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-branch{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:9px;\r\n\t\t\twidth:7px;\r\n\r\n\t\t\tmargin-top:-9px;\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control{\r\n\r\n\t\t\tdisplay:inline-flex;\r\n\t\t\tjustify-content:center;\r\n\t\t\talign-items:center;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:11px;\r\n\t\t\twidth:11px;\r\n\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder:1px solid $rowTextColor;\r\n\t\t\tborder-radius:2px;\r\n\t\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\t\toverflow:hidden;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\tcursor:pointer;\r\n\t\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: transparent;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-expand{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-responsive-collapse-toggle{\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\t\t\tjustify-content:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\theight:15px;\r\n\t\t\twidth:15px;\r\n\r\n\t\t\tborder-radius:20px;\r\n\t\t\tbackground:#666;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:1.1em;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\topacity:.7;\r\n\t\t\t}\r\n\r\n\t\t\t&.open{\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\t\tdisplay:initial;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-open{\r\n\t\t\t\t\tdisplay:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\tdisplay:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-traffic-light{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\theight:14px;\r\n\t\t\twidth:14px;\r\n\r\n\t\t\tborder-radius:14px;\r\n\t\t}\r\n\t}\r\n\r\n\t//row grouping element\r\n\t&.tabulator-group{\r\n\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-bottom:2px solid $primary;\r\n\t\tborder-top:2px solid $primary;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:lighten($primary, 20%);\r\n\t\tfont-weight:bold;\r\n\t\tcolor:fff;\r\n\t\tmargin-bottom: 2px;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:rgba(0,0,0,.1);\r\n\t\t}\r\n\r\n\r\n\t\t&.tabulator-group-visible{\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\tpadding-left:30px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\tpadding-left:50px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\tpadding-left:70px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\tpadding-left:90px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\tpadding-left:110px;\r\n\t\t}\r\n\r\n\t\t.tabulator-group-toggle{\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:$primary;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n.tabulator-edit-select-list{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tmax-height:200px;\r\n\r\n\tbackground:$rowBackgroundColor;\r\n\tborder:1px solid $editBoxColor;\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-edit-select-list-item{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\r\n\t\t&.active{\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-group{\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\tpadding:4px;\r\n\t\tpadding-top:6px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\tfont-weight:bold;\r\n\t}\r\n}\r\n\r\n// Table print styling\r\n\r\n.tabulator-print-fullscreen{\r\n\tposition: absolute;\r\n\ttop:0;\r\n\tbottom:0;\r\n\tleft:0;\r\n\tright:0;\r\n\r\n\tz-index: 10000;\r\n}\r\n\r\nbody.tabulator-print-fullscreen-hide>*:not(.tabulator-print-fullscreen){\r\n\tdisplay:none !important;\r\n}\r\n\r\n.tabulator-print-table{\r\n\tborder-collapse: collapse;\r\n}\r\n\r\n"]}
\ No newline at end of file
index d558324..e84b806 100644 (file)
@@ -1,4 +1,4 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 .tabulator {
   position: relative;
   background-color: #fff;
   padding-left: 110px;
 }
 
+.tabulator-row.tabulator-group .tabulator-group-toggle {
+  display: inline-block;
+}
+
 .tabulator-row.tabulator-group .tabulator-arrow {
   display: inline-block;
   width: 0;
index fd9ae4d..4ca1e9d 100644 (file)
@@ -1,3 +1,3 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
-.tabulator{position:relative;background-color:#fff;overflow:hidden;font-size:14px;text-align:left;transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator.tabulator-block-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:#fff;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 #ddd;background-color:#fff;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #999;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-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-arrow{display:inline-block;position:absolute;top:9px;right:8px;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:-ms-flexbox;display:flex;border-top:1px solid #ddd;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child{margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col.ui-sortable-helper{position:absolute;background-color:#e6e6e6!important;border:1px solid #ddd}.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-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-arrow{border-top:6px solid #666;border-bottom:none}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack: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-arrow{right:calc(50% - 6px)}.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:#f2f2f2!important;border-top:1px solid #ddd;border-bottom:1px solid #999;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#f2f2f2!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:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{position:absolute;top:0;left:0;height:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#000;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:#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-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-footer{padding:5px 10px;border-top:1px solid #999;background-color:#fff;text-align:right;color:#555;font-weight:700;white-space:nowrap;-ms-user-select:none;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:#f2f2f2!important;border-bottom:1px solid #fff;border-top:1px solid #ddd;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#f2f2f2!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 #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-loader{position:absolute;display:-ms-flexbox;display:flex;-ms-flex-align:center;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;border-bottom:1px solid #ddd}.tabulator-row,.tabulator-row:nth-child(2n){background-color:#fff}.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-moving{position:absolute;border-top:1px solid #ddd;border-bottom:1px solid #ddd;pointer-events:none!important;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:last-of-type{border-right:none}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;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:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items: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:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align: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:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack: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;padding-left:10px;background:#fafafa;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-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:#666}.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:hover{cursor:pointer;color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #ddd;padding:4px;padding-top:6px;color:#333;font-weight:700}.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 v4.5.1 (c) Oliver Folkerd */
+.tabulator{position:relative;background-color:#fff;overflow:hidden;font-size:14px;text-align:left;transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator.tabulator-block-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:#fff;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 #ddd;background-color:#fff;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #999;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-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-arrow{display:inline-block;position:absolute;top:9px;right:8px;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:-ms-flexbox;display:flex;border-top:1px solid #ddd;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child{margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col.ui-sortable-helper{position:absolute;background-color:#e6e6e6!important;border:1px solid #ddd}.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-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-arrow{border-top:6px solid #666;border-bottom:none}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack: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-arrow{right:calc(50% - 6px)}.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:#f2f2f2!important;border-top:1px solid #ddd;border-bottom:1px solid #999;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#f2f2f2!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:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{position:absolute;top:0;left:0;height:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#000;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:#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-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-footer{padding:5px 10px;border-top:1px solid #999;background-color:#fff;text-align:right;color:#555;font-weight:700;white-space:nowrap;-ms-user-select:none;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:#f2f2f2!important;border-bottom:1px solid #fff;border-top:1px solid #ddd;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#f2f2f2!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 #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-loader{position:absolute;display:-ms-flexbox;display:flex;-ms-flex-align:center;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;border-bottom:1px solid #ddd}.tabulator-row,.tabulator-row:nth-child(2n){background-color:#fff}.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-moving{position:absolute;border-top:1px solid #ddd;border-bottom:1px solid #ddd;pointer-events:none!important;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:last-of-type{border-right:none}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;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:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items: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:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align: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:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack: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;padding-left:10px;background:#fafafa;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:#666}.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:hover{cursor:pointer;color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #ddd;padding:4px;padding-top:6px;color:#333;font-weight:700}.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}
 /*# sourceMappingURL=tabulator_simple.min.css.map */
index b4702ad..b890116 100644 (file)
@@ -1 +1 @@
-{"version":3,"sources":["tabulator_simple.scss"],"names":[],"mappings":"AA0CA,WACC,kBAAkB,AAClB,sBAxCqB,AAyCrB,gBAAe,AACf,eAxCa,AAyCb,gBAAgB,AAMhB,uBAAwB,CAwfxB,AAngBD,iFAgBI,cAAc,CACd,AAjBJ,kCAsBE,yBAAiB,AAAjB,sBAAiB,AAAjB,qBAAiB,AAAjB,gBAAiB,CACjB,AAvBF,6BA2BE,kBAAiB,AACjB,sBAAsB,AAEtB,WAAU,AAEV,6BA9DwB,AA+DxB,sBAlEyB,AAmEzB,WAlEmB,AAmEnB,gBAAgB,AAEhB,mBAAmB,AACnB,gBAAe,AAEf,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAoPpB,AA/RF,qDA8CG,YAAY,CACZ,AA/CH,4CAmDG,qBAAoB,AACpB,kBAAiB,AACjB,sBAAqB,AACrB,4BArFoB,AAsFpB,sBAxFwB,AAyFxB,gBAAe,AACf,sBAAsB,AACtB,eAAgB,CAuLhB,AAjPH,6DA6DI,kBAAkB,AAClB,sBA5FsB,AA6FtB,mBAA8C,AAC9C,mBAAoB,CACpB,AAjEJ,mEAqEI,sBAAqB,AACrB,kBAAkB,AAClB,WAAW,CAsCX,AA7GJ,wFA2EK,sBAAqB,AACrB,WAAW,AAEX,mBAAmB,AACnB,gBAAgB,AAChB,uBAAuB,AACvB,qBAAqB,CAarB,AA9FL,gHAqFM,sBAAsB,AACtB,WAAW,AAEX,sBAAqB,AAErB,YAAW,AAEX,eAAgB,CAChB,AA7FN,oFAkGK,qBAAqB,AACrB,kBAAkB,AAClB,QAAO,AACP,UAAS,AACT,QAAQ,AACR,SAAS,AACT,kCAAkC,AAClC,mCAAmC,AACnC,4BAnImB,CAoInB,AA3GL,0FAoHK,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AAEb,0BAtJkB,AAuJlB,eAAgB,CAKhB,AA7HL,oHA2HM,iBAAiB,CACjB,AA5HN,0FAoIK,YAAa,CACb,AArIL,+DA0II,kBAAkB,AAClB,mCAA+D,AAC/D,qBA3KmB,CA4KnB,AA7IJ,qEAiJI,kBAAkB,AAClB,sBAAsB,AACtB,eAAc,AACd,WAAU,AACV,iBAAkB,CAiBlB,AAtKJ,8EAyJK,qBAAsB,CACtB,AA1JL,yEA6JK,cAAe,CACf,AA9JL,sFAkKO,QAAS,AACT,QAAS,CACV,AApKN,oFA4KK,kBAAkB,CAClB,AA7KL,qEAgLK,eAAc,AACd,wBAAoD,CACpD,AAlLL,uHAuLM,gBAAgB,AAChB,4BAjNkB,CAkNlB,AAzLN,sHA8LM,gBAAgB,AAChB,4BAzNgB,CA0NhB,AAhMN,uHAqMM,0BA/NgB,AAgOhB,kBAAmB,CACnB,AAvMN,+GA8MM,uBAAyB,AAAzB,yBAAyB,AACzB,uBAAuB,AAEvB,oBAAY,AAAZ,aAAY,AACZ,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,sBAAsB,CACtB,AApNN,oHAyNM,wBAAyB,CACzB,AA1NN,2GA+NM,gBAAe,AACf,gBAAgB,CAChB,AAjON,uIAqOO,gBAAe,AACf,mBAAmB,CACnB,AAvOP,uGA4OM,qBAAqB,CACrB,AA7ON,+CAoPG,qBAAqB,AACrB,kBAAkB,AAIlB,UAAW,CASX,AAlQH,qEA4PI,2BAhRgB,CAiRhB,AA7PJ,sEAgQI,0BApRgB,CAqRhB,AAjQJ,qDAqQG,sBAAqB,AACrB,eAAc,AAEd,6BAAwD,AAUxD,0BAtSiB,AAuSjB,6BAjTuB,AAmTvB,eAAgB,CAChB,AAtRH,oEA2QI,4BAAwD,CAKxD,AAhRJ,iGA8QK,YAAa,CACb,AA/QL,2DAyRG,cAAc,CAKd,AA9RH,iEA4RI,YAAa,CACb,AA7RJ,kCAqSE,kBAAiB,AACjB,WAAU,AACV,mBAAmB,AACnB,cAAa,AACb,gCAAiC,CA0DjC,AAnWF,wCA4SG,YAAa,CACb,AA7SH,yDAiTG,sBAAqB,AACrB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AASlB,UAAU,CAYV,AAxUH,wFAsTI,kBAAkB,AAClB,MAAK,AACL,OAAM,AACN,WAAW,CACX,AA1TJ,8DA+TI,qBAAqB,AAErB,cAAa,AACb,aAAY,AAEZ,WAAU,AACV,gBAAiB,AACjB,cAAe,CACf,AAvUJ,mDA4UG,kBAAiB,AACjB,qBAAoB,AACpB,sBApWqB,AAqWrB,mBAAmB,AACnB,iBAAgB,AAChB,UApWe,CAqXf,AAlWH,kFAqVK,gBAAiB,AACjB,4BAAwD,CASxD,AA/VL,sGAyVM,4BA7Wc,CA8Wd,AA1VN,yGA6VM,yBAjXc,CAkXd,AA9VN,wCAuWE,kBAAiB,AACjB,QAAO,AACP,MAAK,AACL,SAAQ,AACR,SAAS,CAUT,AArXF,6CA8WG,OAAM,AACN,UAAU,CACV,AAhXH,8CAmXG,gBAAgB,CAChB,AApXH,6BA0XE,iBAAgB,AAChB,0BAhYwB,AAiYxB,sBApYyB,AAqYzB,iBAAgB,AAChB,WArYmB,AAsYnB,gBAAgB,AAChB,mBAAkB,AAClB,qBAAgB,AAAhB,iBAAgB,AAEhB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAkFpB,AAxdF,qDAyYG,sBAAqB,AACrB,wBAAuB,AACvB,sBAA2B,AAE3B,gBAAgB,AAEhB,6BAAwD,AAUxD,6BAjawB,AAkaxB,0BA9aiB,AAgbjB,eAAgB,CAMhB,AAlaH,oEAkZI,4BAAwD,CAKxD,AAvZJ,iGAqZK,YAAa,CACb,AAtZL,gEA+ZI,mBAAkB,AAClB,kBAAkB,CAClB,AAjaJ,kDAsaG,WA7akB,AA8alB,oBAAmB,AACnB,oBAAmB,AACnB,iBAAiB,CACjB,AA1aH,kDA8aG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBAzboB,AA0bpB,iBAAiB,CACjB,AArbH,8CAybG,YAAY,CACZ,AA1bH,6CA8bG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBAzcoB,AA0cpB,kBAAiB,AAEjB,6BAA+B,CAiB/B,AAvdH,oDAycI,UA7cmB,CA8cnB,AA1cJ,sDA6cI,UAAU,CACV,AA9cJ,kEAkdK,eAAc,AACd,0BAAyB,AACzB,UAAU,CACV,AArdL,6BA4dE,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AAElB,MAAK,AACL,OAAM,AACN,YAAW,AAEX,YAAW,AACX,WAAU,AACV,0BAAyB,AACzB,iBAAiB,CA2BjB,AAlgBF,mDA2eG,qBAAoB,AAEpB,cAAa,AACb,kBAAiB,AAEjB,mBAAkB,AAElB,gBAAe,AACf,gBAAgB,AAChB,cAAc,CAad,AAjgBH,qEAwfI,sBAAqB,AACrB,UAAU,CACV,AA1fJ,mEA8fI,sBAAqB,AACrB,aAAa,CACb,AAMJ,eACC,kBAAkB,AAClB,sBAAsB,AAEtB,gBAA0C,AAE1C,4BAhiBmB,CAy4BnB,AA/WD,4CAKC,qBAjiBuB,CAsiBtB,AAVF,0CAaE,sBAriBsB,AAsiBtB,cAAe,CACf,AAfF,kCAkBE,wBAxiB6B,CAyiB7B,AAnBF,wCAsBE,yBA3iBkC,AA4iBlC,cAAe,CACf,AAxBF,gCA2BE,kBAAkB,AAElB,0BAvjBkB,AAwjBlB,6BAxjBkB,AA0jBlB,8BAA+B,AAC/B,UAAU,CACV,AAlCF,4CAsCE,kBAAiB,AACjB,QAAO,AACP,SAAQ,AACR,OAAM,AACN,UAAU,CAUV,AApDF,iDA6CG,MAAK,AACL,WAAW,CACX,AA/CH,kDAkDG,gBAAgB,CAChB,AAnDH,iCAuDE,qBAAqB,AACrB,kBAAkB,AAElB,yBAAyB,AAEzB,UAAW,CASX,AArEF,uDA+DG,2BAzlBiB,CA0lBjB,AAhEH,wDAmEG,0BA7lBiB,CA8lBjB,AApEH,8CAwEE,sBAAqB,AAErB,YAAW,AAEX,0BAtmBkB,AAumBlB,4BAvmBkB,CA0nBlB,AAhGF,oDAgFG,YAAY,CACZ,AAjFH,oDAoFG,cA9nBW,CAyoBX,AA/FH,0DAwFK,iBAAkB,CAKlB,AA7FL,wEA2FM,kBAAkB,CAClB,AA5FN,+BAoGE,qBAAoB,AACpB,kBAAkB,AAClB,sBAAqB,AACrB,YAAW,AACX,4BAloBkB,AAmoBlB,sBAAqB,AACrB,mBAAkB,AAClB,gBAAe,AACf,sBAAsB,CA6LtB,AAzSF,4CA+GG,iBAAkB,CAClB,AAhHH,iDAmHG,yBAroBkB,AAsoBlB,SAAU,CAMV,AA1HH,+GAuHI,WAAU,AACV,sBAAsB,CACtB,AAzHJ,yDA6HG,qBA9oBgB,CAqpBhB,AApIH,+HA+HI,WAAU,AACV,uBAAsB,AAEtB,UAnpBe,CAopBf,AAnIJ,6EAyII,YAAa,CACb,AA1IJ,oDAgJG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAElB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAcpB,AApKH,8EA0JI,SAAS,CAST,AAnKJ,wGA8JK,WAAU,AACV,WAAU,AACV,eAAc,AACd,eAAe,CACf,AAlKL,2DAuKG,qBAAoB,AACpB,sBAAqB,AAErB,WAAU,AACV,UAAS,AAET,gBAAe,AACf,iBAAgB,AAEhB,8BAA6B,AAE7B,2BA5sBiB,AA6sBjB,4BA7sBiB,CA8sBjB,AApLH,4DAwLG,2BAAmB,AAAnB,oBAAmB,AACnB,qBAAsB,AAAtB,uBAAsB,AACtB,sBAAkB,AAAlB,mBAAkB,AAClB,sBAAqB,AAErB,YAAW,AACX,WAAU,AAEV,iBAAgB,AAEhB,sBA3tBe,AA4tBf,kBAAiB,AACjB,0BAA4B,AAE5B,eAAe,CAmDf,AAzPH,kEAyMI,eAAc,AACd,yBAA4B,CAC5B,AA3MJ,kGA8MI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,sBAAuB,CAavB,AAjOJ,wGAuNK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAxvBa,CAyvBb,AAhOL,gGAoOI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,eAnwBc,CAgxBd,AAvPJ,sGA6OK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eA9wBa,CA+wBb,AAtPL,qEA4PG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,uBAAsB,AAEtB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,oBAAoB,AAEpB,YAAW,AACX,WAAU,AAEV,mBAAkB,AAClB,gBAAe,AAEf,WAvyBqB,AAwyBrB,gBAAgB,AAChB,eAAe,CAmBf,AAhSH,2EAgRI,UAAU,CACV,AAjRJ,sHAqRK,eAAe,CACf,AAtRL,sOA8RI,YAAY,CACZ,AA/RJ,wDAmSG,qBAAqB,AACrB,YAAW,AACX,WAAU,AAEV,kBAAkB,CAClB,AAxSH,+BA8SE,sBAAqB,AACrB,6BAA4B,AAC5B,4BA10BkB,AA20BlB,0BAAyB,AACzB,YAAW,AACX,kBAAiB,AACjB,mBAAkB,AAClB,gBAAgB,AAEhB,cAAe,CAuDf,AA9WF,qCA0TG,eAAc,AACd,+BAA+B,CAC/B,AA5TH,wEAgUI,kBAAiB,AACjB,kCAAkC,AAClC,mCAAmC,AACnC,0BAn2BkB,AAo2BlB,eAAgB,CAChB,AArUJ,uDAyUG,iBAAiB,CACjB,AA1UH,uDA6UG,iBAAiB,CACjB,AA9UH,uDAiVG,iBAAiB,CACjB,AAlVH,uDAqVG,iBAAiB,CACjB,AAtVH,uDAyVG,kBAAkB,CAClB,AA1VH,gDA+VG,qBAAqB,AACrB,QAAQ,AACR,SAAS,AACT,kBAAiB,AACjB,iCAAiC,AACjC,oCAAoC,AACpC,eAAe,AACf,2BAt4BmB,AAu4BnB,qBAAqB,CACrB,AAxWH,oCA2WG,iBAAgB,AAChB,UAAU,CACV,AAIH,4BACC,kBAAkB,AAClB,qBAAoB,AACpB,sBAAqB,AAErB,iBAAgB,AAEhB,gBAp5BuB,AAq5BvB,sBAn5BmB,AAq5BnB,eAr6Ba,AAu6Bb,gBAAe,AACf,iCAAiC,AAEjC,aAAc,CA6Bd,AA5CD,6DAkBE,YAAW,AAEX,UA95BgB,CA26BhB,AAjCF,oEAuBG,WAp6BqB,AAq6BrB,kBA35BkB,CA45BlB,AAzBH,mEA4BG,eAAc,AAEd,WA36BqB,AA46BrB,kBAl6BkB,CAm6BlB,AAhCH,8DAoCE,6BA/6BkB,AAi7BlB,YAAW,AACX,gBAAe,AAEf,WAn7BgB,AAo7BhB,eAAgB,CAChB,AAKF,4BACC,kBAAkB,AAClB,MAAK,AACL,SAAQ,AACR,OAAM,AACN,QAAO,AAEP,aAAc,CACd,AAED,uEACC,sBAAuB,CACvB,AAED,uBACC,wBAAyB,CACzB","file":"tabulator_simple.min.css","sourcesContent":["/* Tabulator v4.4.3 (c) Oliver Folkerd */\n\n\r\n//Main Theme Variables\r\n$backgroundColor: #fff !default; //background color of tabulator\r\n$borderColor:#999 !default; //border to tabulator\r\n$textSize:14px !default; //table text size\r\n\r\n//header themeing\r\n$headerBackgroundColor:#fff !default; //border to tabulator\r\n$headerTextColor:#555 !default; //header text colour\r\n$headerBorderColor:#ddd !default;  //header border color\r\n$headerSeperatorColor:#999 !default; //header bottom seperator color\r\n$headerMargin:4px !default; //padding round header\r\n\r\n//column header arrows\r\n$sortArrowActive: #666 !default;\r\n$sortArrowInactive: #bbb !default;\r\n\r\n//row themeing\r\n$rowBackgroundColor:#fff !default; //table row background color\r\n$rowAltBackgroundColor:#fff !default; //table row background color\r\n$rowBorderColor:#ddd !default; //table border color\r\n$rowTextColor:#333 !default; //table text color\r\n$rowHoverBackground:#bbb !default; //row background color on hover\r\n\r\n$rowSelectedBackground: #9ABCEA !default; //row background color when selected\r\n$rowSelectedBackgroundHover: #769BCC !default;//row background color when selected and hovered\r\n\r\n\r\n$editBoxColor:#1D68CD !default; //border color for edit boxes\r\n$errorColor:#dd0000 !default; //error indication\r\n\r\n//footer themeing\r\n$footerBackgroundColor:#fff !default; //border to tabulator\r\n$footerTextColor:#555 !default; //footer text colour\r\n$footerBorderColor:#aaa !default; //footer border color\r\n$footerSeperatorColor:#999 !default; //footer bottom seperator color\r\n$footerActiveColor:#d00 !default; //footer bottom active text color\r\n\r\n\r\n//Tabulator Containing Element\r\n.tabulator{\r\n\tposition: relative;\r\n\tbackground-color: $backgroundColor;\r\n\toverflow:hidden;\r\n\tfont-size:$textSize;\r\n\ttext-align: left;\r\n\r\n\t-webkit-transform: translatez(0);\r\n\t-moz-transform: translatez(0);\r\n\t-ms-transform: translatez(0);\r\n\t-o-transform: translatez(0);\r\n\ttransform: translatez(0);\r\n\r\n\t&[tabulator-layout=\"fitDataFill\"]{\r\n\t\t.tabulator-tableHolder{\r\n\t\t\t.tabulator-table{\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t&.tabulator-block-select{\r\n\t\tuser-select: none;\r\n\t}\r\n\r\n\t//column header containing element\r\n\t.tabulator-header{\r\n\t\tposition:relative;\r\n\t\tbox-sizing: border-box;\r\n\r\n\t\twidth:100%;\r\n\r\n\t\tborder-bottom:1px solid $headerSeperatorColor;\r\n\t\tbackground-color: $headerBackgroundColor;\r\n\t\tcolor: $headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:hidden;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t&.tabulator-header-hidden{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\t//individual column header element\r\n\t\t.tabulator-col{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition:relative;\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tborder-right:1px solid $headerBorderColor;\r\n\t\t\tbackground-color: $headerBackgroundColor;\r\n\t\t\ttext-align:left;\r\n\t\t\tvertical-align: bottom;\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&.tabulator-moving{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tborder:1px solid  $headerSeperatorColor;\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 10%);\r\n\t\t\t\tpointer-events: none;\r\n\t\t\t}\r\n\r\n\t\t\t//hold content of column header\r\n\t\t\t.tabulator-col-content{\r\n\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tpadding:4px;\r\n\r\n\t\t\t\t//hold title of column header\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\twhite-space: nowrap;\r\n\t\t\t\t\toverflow: hidden;\r\n\t\t\t\t\ttext-overflow: ellipsis;\r\n\t\t\t\t\tvertical-align:bottom;\r\n\r\n\t\t\t\t\t//element to hold title editor\r\n\t\t\t\t\t.tabulator-title-editor{\r\n\t\t\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\t\tborder:1px solid #999;\r\n\r\n\t\t\t\t\t\tpadding:1px;\r\n\r\n\t\t\t\t\t\tbackground: #fff;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//column sorter arrow\r\n\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\tdisplay: inline-block;\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\ttop:9px;\r\n\t\t\t\t\tright:8px;\r\n\t\t\t\t\twidth: 0;\r\n\t\t\t\t\theight: 0;\r\n\t\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t//complex header column group\r\n\t\t\t&.tabulator-col-group{\r\n\r\n\t\t\t\t//gelement to hold sub columns in column group\r\n\t\t\t\t.tabulator-col-group-cols{\r\n\t\t\t\t\tposition:relative;\r\n\t\t\t\t\tdisplay: flex;\r\n\r\n\t\t\t\t\tborder-top:1px solid $headerBorderColor;\r\n\t\t\t\t\toverflow: hidden;\r\n\r\n\t\t\t\t\t.tabulator-col:last-child{\r\n\t\t\t\t\t\tmargin-right:-1px;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\t//hide left resize handle on first column\r\n\t\t\t&:first-child{\r\n\t\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//placeholder element for sortable columns\r\n\t\t\t&.ui-sortable-helper{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tbackground-color:darken($headerBackgroundColor, 10%) !important;\r\n\t\t\t\tborder:1px solid $headerBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t//header filter containing element\r\n\t\t\t.tabulator-header-filter{\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\tmargin-top:2px;\r\n\t\t\t\twidth:100%;\r\n\t\t\t\ttext-align: center;\r\n\r\n\t\t\t\t//styling adjustment for inbuilt editors\r\n\t\t\t\ttextarea{\r\n\t\t\t\t\theight:auto !important;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsvg{\r\n\t\t\t\t\tmargin-top: 3px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinput{\r\n\t\t\t\t\t&::-ms-clear {\r\n\t\t\t\t\t  width : 0;\r\n\t\t\t\t\t  height: 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\t//styling child elements for sortable columns\r\n\t\t\t&.tabulator-sortable{\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tpadding-right:25px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\t&[aria-sort=\"none\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"asc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowActive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"desc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\t\t\tborder-bottom: none;\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&.tabulator-col-vertical{\r\n\t\t\t\t.tabulator-col-content{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\twriting-mode: vertical-rl;\r\n\t\t\t\t\t\ttext-orientation: mixed;\r\n\r\n\t\t\t\t\t\tdisplay:flex;\r\n\t\t\t\t\t\talign-items:center;\r\n\t\t\t\t\t\tjustify-content:center;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\ttransform: rotate(180deg);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-sortable{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\tpadding-top:20px;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\t\tpadding-bottom:20px;\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.tabulator-arrow{\r\n\t\t\t\t\t\tright:calc(50% - 6px);\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\t.tabulator-frozen{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\tposition: absolute;\r\n\r\n\t\t\t// background-color: inherit;\r\n\r\n\t\t\tz-index: 10;\r\n\r\n\t\t\t&.tabulator-frozen-left{\r\n\t\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-frozen-right{\r\n\t\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\tbackground:darken($headerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\t\t\tborder-bottom:1px solid $headerSeperatorColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen-rows-holder{\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\t&:empty{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\r\n\t//scrolling element to hold table\r\n\t.tabulator-tableHolder{\r\n\t\tposition:relative;\r\n\t\twidth:100%;\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:auto;\r\n\t\t-webkit-overflow-scrolling: touch;\r\n\r\n\t\t&:focus{\r\n\t\t\toutline: none;\r\n\t\t}\r\n\r\n\t\t//default placeholder element\r\n\t\t.tabulator-placeholder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t&[tabulator-render-mode=\"virtual\"]{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\ttop:0;\r\n\t\t\t\tleft:0;\r\n\t\t\t\theight:100%;\r\n\t\t\t}\r\n\r\n\t\t\twidth:100%;\r\n\r\n\t\t\tspan{\r\n\t\t\t\tdisplay: inline-block;\r\n\r\n\t\t\t\tmargin:0 auto;\r\n\t\t\t\tpadding:10px;\r\n\r\n\t\t\t\tcolor:#000;\r\n\t\t\t\tfont-weight: bold;\r\n\t\t\t\tfont-size: 20px;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//element to hold table rows\r\n\t\t.tabulator-table{\r\n\t\t\tposition:relative;\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tbackground-color:$rowBackgroundColor;\r\n\t\t\twhite-space: nowrap;\r\n\t\t\toverflow:visible;\r\n\t\t\tcolor:$rowTextColor;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\t&.tabulator-calcs{\r\n\t\t\t\t\tfont-weight: bold;\r\n\t\t\t\t\tbackground:darken($rowAltBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t\t&.tabulator-calcs-top{\r\n\t\t\t\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-calcs-bottom{\r\n\t\t\t\t\t\tborder-top:2px solid $rowBorderColor;\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\t}\r\n\r\n\t//column resize handles\r\n\t.tabulator-col-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\ttop:0;\r\n\t\tbottom:0;\r\n\t\twidth:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\tleft:0;\r\n\t\t\tright:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ew-resize;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//footer element\r\n\t.tabulator-footer{\r\n\t\tpadding:5px 10px;\r\n\t\tborder-top:1px solid $footerSeperatorColor;\r\n\t\tbackground-color: $footerBackgroundColor;\r\n\t\ttext-align:right;\r\n\t\tcolor: $footerTextColor;\r\n\t\tfont-weight:bold;\r\n\t\twhite-space:nowrap;\r\n\t\tuser-select:none;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\twidth:calc(100% + 20px);\r\n\t\t\tmargin:-5px -10px 5px -10px;\r\n\r\n\t\t\ttext-align: left;\r\n\r\n\t\t\tbackground:darken($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:darken($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-bottom:1px solid $footerBackgroundColor;\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&:only-child{\r\n\t\t\t\tmargin-bottom:-5px;\r\n\t\t\t\tborder-bottom:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-paginator{\r\n\t\t\tcolor: $footerTextColor;\r\n\t\t\tfont-family:inherit;\r\n\t\t\tfont-weight:inherit;\r\n\t\t\tfont-size:inherit;\r\n\t\t}\r\n\r\n\t\t//page size select element\r\n\t\t.tabulator-page-size{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 5px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-pages{\r\n\t\t\tmargin:0 7px;\r\n\t\t}\r\n\r\n\t\t//pagination button\r\n\t\t.tabulator-page{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 2px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\r\n\t\t\tbackground:rgba(255,255,255,.2);\r\n\r\n\t\t\t&.active{\r\n\t\t\t\tcolor:$footerActiveColor;\r\n\t\t\t}\r\n\r\n\t\t\t&:disabled{\r\n\t\t\t\topacity:.5;\r\n\t\t\t}\r\n\r\n\t\t\t&:not(.disabled){\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground:rgba(0,0,0,.2);\r\n\t\t\t\t\tcolor:#fff;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//holding div that contains loader and covers tabulator element to prevent interaction\r\n\t.tabulator-loader{\r\n\t\tposition:absolute;\r\n\t\tdisplay: flex;\r\n\t\talign-items:center;\r\n\r\n\t\ttop:0;\r\n\t\tleft:0;\r\n\t\tz-index:100;\r\n\r\n\t\theight:100%;\r\n\t\twidth:100%;\r\n\t\tbackground:rgba(0,0,0,.4);\r\n\t\ttext-align:center;\r\n\r\n\t\t//loading message element\r\n\t\t.tabulator-loader-msg{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 auto;\r\n\t\t\tpadding:10px 20px;\r\n\r\n\t\t\tborder-radius:10px;\r\n\r\n\t\t\tbackground:#fff;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:16px;\r\n\r\n\t\t\t//loading message\r\n\t\t\t&.tabulator-loading{\r\n\t\t\t\tborder:4px solid #333;\r\n\t\t\t\tcolor:#000;\r\n\t\t\t}\r\n\r\n\t\t\t//error message\r\n\t\t\t&.tabulator-error{\r\n\t\t\t\tborder:4px solid #D00;\r\n\t\t\t\tcolor:#590000;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n//row element\r\n.tabulator-row{\r\n\tposition: relative;\r\n\tbox-sizing: border-box;\r\n\r\n\tmin-height:$textSize + ($headerMargin * 2);\r\n\tbackground-color: $rowBackgroundColor;\r\n\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t&:nth-child(even){\r\n\t\tbackground-color: $rowAltBackgroundColor;\r\n\t}\r\n\r\n\t&.tabulator-selectable:hover{\r\n\t\tbackground-color:$rowHoverBackground;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-selected{\r\n\t\tbackground-color:$rowSelectedBackground;\r\n\t}\r\n\r\n\t&.tabulator-selected:hover{\r\n\t\tbackground-color:$rowSelectedBackgroundHover;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-moving{\r\n\t\tposition: absolute;\r\n\r\n\t\tborder-top:1px solid  $rowBorderColor;\r\n\t\tborder-bottom:1px solid  $rowBorderColor;\r\n\r\n\t\tpointer-events: none !important;\r\n\t\tz-index:15;\r\n\t}\r\n\r\n\t//row resize handles\r\n\t.tabulator-row-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\tbottom:0;\r\n\t\tleft:0;\r\n\t\theight:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\ttop:0;\r\n\t\t\tbottom:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ns-resize;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-frozen{\r\n\t\tdisplay: inline-block;\r\n\t\tposition: absolute;\r\n\r\n\t\tbackground-color: inherit;\r\n\r\n\t\tz-index: 10;\r\n\r\n\t\t&.tabulator-frozen-left{\r\n\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t&.tabulator-frozen-right{\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-responsive-collapse{\r\n\t\tbox-sizing:border-box;\r\n\r\n\t\tpadding:5px;\r\n\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\t&:empty{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\ttable{\r\n\t\t\tfont-size:$textSize;\r\n\r\n\t\t\ttr{\r\n\t\t\t\ttd{\r\n\t\t\t\t\tposition: relative;\r\n\r\n\t\t\t\t\t&:first-of-type{\r\n\t\t\t\t\t\tpadding-right:10px;\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//cell element\r\n\t.tabulator-cell{\r\n\t\tdisplay:inline-block;\r\n\t\tposition: relative;\r\n\t\tbox-sizing:border-box;\r\n\t\tpadding:4px;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tvertical-align:middle;\r\n\t\twhite-space:nowrap;\r\n\t\toverflow:hidden;\r\n\t\ttext-overflow:ellipsis;\r\n\r\n\t\t&:last-of-type{\r\n\t\t\tborder-right: none;\r\n\t\t}\r\n\r\n\t\t&.tabulator-editing{\r\n\t\t\tborder:1px solid  $editBoxColor;\r\n\t\t\tpadding: 0;\r\n\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-validation-fail{\r\n\t\t\tborder:1px solid $errorColor;\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\r\n\t\t\t\tcolor: $errorColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//hide left resize handle on first column\r\n\t\t&:first-child{\r\n\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//movable row handle\r\n\t\t&.tabulator-row-handle{\r\n\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\t//handle holder\r\n\t\t\t.tabulator-row-handle-box{\r\n\t\t\t\twidth:80%;\r\n\r\n\t\t\t\t//Hamburger element\r\n\t\t\t\t.tabulator-row-handle-bar{\r\n\t\t\t\t\twidth:100%;\r\n\t\t\t\t\theight:3px;\r\n\t\t\t\t\tmargin-top:2px;\r\n\t\t\t\t\tbackground:#666;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-branch{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:9px;\r\n\t\t\twidth:7px;\r\n\r\n\t\t\tmargin-top:-9px;\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control{\r\n\r\n\t\t\tdisplay:inline-flex;\r\n\t\t\tjustify-content:center;\r\n\t\t\talign-items:center;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:11px;\r\n\t\t\twidth:11px;\r\n\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder:1px solid $rowTextColor;\r\n\t\t\tborder-radius:2px;\r\n\t\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\t\toverflow:hidden;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\tcursor:pointer;\r\n\t\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: transparent;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-expand{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-responsive-collapse-toggle{\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\t\t\tjustify-content:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\theight:15px;\r\n\t\t\twidth:15px;\r\n\r\n\t\t\tborder-radius:20px;\r\n\t\t\tbackground:#666;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:1.1em;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\topacity:.7;\r\n\t\t\t}\r\n\r\n\t\t\t&.open{\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\t\tdisplay:initial;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-open{\r\n\t\t\t\t\tdisplay:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\tdisplay:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-traffic-light{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\theight:14px;\r\n\t\t\twidth:14px;\r\n\r\n\t\t\tborder-radius:14px;\r\n\t\t}\r\n\t}\r\n\r\n\t//row grouping element\r\n\t&.tabulator-group{\r\n\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-bottom:1px solid #999;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tborder-top:1px solid #999;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:#fafafa;\r\n\t\tfont-weight:bold;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:rgba(0,0,0,.1);\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-visible{\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\tpadding-left:30px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\tpadding-left:50px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\tpadding-left:70px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\tpadding-left:90px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\tpadding-left:110px;\r\n\t\t}\r\n\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:#666;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n.tabulator-edit-select-list{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tmax-height:200px;\r\n\r\n\tbackground:$rowBackgroundColor;\r\n\tborder:1px solid $rowBorderColor;\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-edit-select-list-item{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\r\n\t\t&.active{\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-group{\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\tpadding:4px;\r\n\t\tpadding-top:6px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\tfont-weight:bold;\r\n\t}\r\n}\r\n\r\n// Table print styling\r\n\r\n.tabulator-print-fullscreen{\r\n\tposition: absolute;\r\n\ttop:0;\r\n\tbottom:0;\r\n\tleft:0;\r\n\tright:0;\r\n\r\n\tz-index: 10000;\r\n}\r\n\r\nbody.tabulator-print-fullscreen-hide>*:not(.tabulator-print-fullscreen){\r\n\tdisplay:none !important;\r\n}\r\n\r\n.tabulator-print-table{\r\n\tborder-collapse: collapse;\r\n}\r\n\r\n"]}
\ No newline at end of file
+{"version":3,"sources":["tabulator_simple.scss"],"names":[],"mappings":"AA0CA,WACC,kBAAkB,AAClB,sBAxCqB,AAyCrB,gBAAe,AACf,eAxCa,AAyCb,gBAAgB,AAMhB,uBAAwB,CAwfxB,AAngBD,iFAgBI,cAAc,CACd,AAjBJ,kCAsBE,yBAAiB,AAAjB,sBAAiB,AAAjB,qBAAiB,AAAjB,gBAAiB,CACjB,AAvBF,6BA2BE,kBAAiB,AACjB,sBAAsB,AAEtB,WAAU,AAEV,6BA9DwB,AA+DxB,sBAlEyB,AAmEzB,WAlEmB,AAmEnB,gBAAgB,AAEhB,mBAAmB,AACnB,gBAAe,AAEf,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAoPpB,AA/RF,qDA8CG,YAAY,CACZ,AA/CH,4CAmDG,qBAAoB,AACpB,kBAAiB,AACjB,sBAAqB,AACrB,4BArFoB,AAsFpB,sBAxFwB,AAyFxB,gBAAe,AACf,sBAAsB,AACtB,eAAgB,CAuLhB,AAjPH,6DA6DI,kBAAkB,AAClB,sBA5FsB,AA6FtB,mBAA8C,AAC9C,mBAAoB,CACpB,AAjEJ,mEAqEI,sBAAqB,AACrB,kBAAkB,AAClB,WAAW,CAsCX,AA7GJ,wFA2EK,sBAAqB,AACrB,WAAW,AAEX,mBAAmB,AACnB,gBAAgB,AAChB,uBAAuB,AACvB,qBAAqB,CAarB,AA9FL,gHAqFM,sBAAsB,AACtB,WAAW,AAEX,sBAAqB,AAErB,YAAW,AAEX,eAAgB,CAChB,AA7FN,oFAkGK,qBAAqB,AACrB,kBAAkB,AAClB,QAAO,AACP,UAAS,AACT,QAAQ,AACR,SAAS,AACT,kCAAkC,AAClC,mCAAmC,AACnC,4BAnImB,CAoInB,AA3GL,0FAoHK,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AAEb,0BAtJkB,AAuJlB,eAAgB,CAKhB,AA7HL,oHA2HM,iBAAiB,CACjB,AA5HN,0FAoIK,YAAa,CACb,AArIL,+DA0II,kBAAkB,AAClB,mCAA+D,AAC/D,qBA3KmB,CA4KnB,AA7IJ,qEAiJI,kBAAkB,AAClB,sBAAsB,AACtB,eAAc,AACd,WAAU,AACV,iBAAkB,CAiBlB,AAtKJ,8EAyJK,qBAAsB,CACtB,AA1JL,yEA6JK,cAAe,CACf,AA9JL,sFAkKO,QAAS,AACT,QAAS,CACV,AApKN,oFA4KK,kBAAkB,CAClB,AA7KL,qEAgLK,eAAc,AACd,wBAAoD,CACpD,AAlLL,uHAuLM,gBAAgB,AAChB,4BAjNkB,CAkNlB,AAzLN,sHA8LM,gBAAgB,AAChB,4BAzNgB,CA0NhB,AAhMN,uHAqMM,0BA/NgB,AAgOhB,kBAAmB,CACnB,AAvMN,+GA8MM,uBAAyB,AAAzB,yBAAyB,AACzB,uBAAuB,AAEvB,oBAAY,AAAZ,aAAY,AACZ,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,sBAAsB,CACtB,AApNN,oHAyNM,wBAAyB,CACzB,AA1NN,2GA+NM,gBAAe,AACf,gBAAgB,CAChB,AAjON,uIAqOO,gBAAe,AACf,mBAAmB,CACnB,AAvOP,uGA4OM,qBAAqB,CACrB,AA7ON,+CAoPG,qBAAqB,AACrB,kBAAkB,AAIlB,UAAW,CASX,AAlQH,qEA4PI,2BAhRgB,CAiRhB,AA7PJ,sEAgQI,0BApRgB,CAqRhB,AAjQJ,qDAqQG,sBAAqB,AACrB,eAAc,AAEd,6BAAwD,AAUxD,0BAtSiB,AAuSjB,6BAjTuB,AAmTvB,eAAgB,CAChB,AAtRH,oEA2QI,4BAAwD,CAKxD,AAhRJ,iGA8QK,YAAa,CACb,AA/QL,2DAyRG,cAAc,CAKd,AA9RH,iEA4RI,YAAa,CACb,AA7RJ,kCAqSE,kBAAiB,AACjB,WAAU,AACV,mBAAmB,AACnB,cAAa,AACb,gCAAiC,CA0DjC,AAnWF,wCA4SG,YAAa,CACb,AA7SH,yDAiTG,sBAAqB,AACrB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AASlB,UAAU,CAYV,AAxUH,wFAsTI,kBAAkB,AAClB,MAAK,AACL,OAAM,AACN,WAAW,CACX,AA1TJ,8DA+TI,qBAAqB,AAErB,cAAa,AACb,aAAY,AAEZ,WAAU,AACV,gBAAiB,AACjB,cAAe,CACf,AAvUJ,mDA4UG,kBAAiB,AACjB,qBAAoB,AACpB,sBApWqB,AAqWrB,mBAAmB,AACnB,iBAAgB,AAChB,UApWe,CAqXf,AAlWH,kFAqVK,gBAAiB,AACjB,4BAAwD,CASxD,AA/VL,sGAyVM,4BA7Wc,CA8Wd,AA1VN,yGA6VM,yBAjXc,CAkXd,AA9VN,wCAuWE,kBAAiB,AACjB,QAAO,AACP,MAAK,AACL,SAAQ,AACR,SAAS,CAUT,AArXF,6CA8WG,OAAM,AACN,UAAU,CACV,AAhXH,8CAmXG,gBAAgB,CAChB,AApXH,6BA0XE,iBAAgB,AAChB,0BAhYwB,AAiYxB,sBApYyB,AAqYzB,iBAAgB,AAChB,WArYmB,AAsYnB,gBAAgB,AAChB,mBAAkB,AAClB,qBAAgB,AAAhB,iBAAgB,AAEhB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAkFpB,AAxdF,qDAyYG,sBAAqB,AACrB,wBAAuB,AACvB,sBAA2B,AAE3B,gBAAgB,AAEhB,6BAAwD,AAUxD,6BAjawB,AAkaxB,0BA9aiB,AAgbjB,eAAgB,CAMhB,AAlaH,oEAkZI,4BAAwD,CAKxD,AAvZJ,iGAqZK,YAAa,CACb,AAtZL,gEA+ZI,mBAAkB,AAClB,kBAAkB,CAClB,AAjaJ,kDAsaG,WA7akB,AA8alB,oBAAmB,AACnB,oBAAmB,AACnB,iBAAiB,CACjB,AA1aH,kDA8aG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBAzboB,AA0bpB,iBAAiB,CACjB,AArbH,8CAybG,YAAY,CACZ,AA1bH,6CA8bG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBAzcoB,AA0cpB,kBAAiB,AAEjB,6BAA+B,CAiB/B,AAvdH,oDAycI,UA7cmB,CA8cnB,AA1cJ,sDA6cI,UAAU,CACV,AA9cJ,kEAkdK,eAAc,AACd,0BAAyB,AACzB,UAAU,CACV,AArdL,6BA4dE,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AAElB,MAAK,AACL,OAAM,AACN,YAAW,AAEX,YAAW,AACX,WAAU,AACV,0BAAyB,AACzB,iBAAiB,CA2BjB,AAlgBF,mDA2eG,qBAAoB,AAEpB,cAAa,AACb,kBAAiB,AAEjB,mBAAkB,AAElB,gBAAe,AACf,gBAAgB,AAChB,cAAc,CAad,AAjgBH,qEAwfI,sBAAqB,AACrB,UAAU,CACV,AA1fJ,mEA8fI,sBAAqB,AACrB,aAAa,CACb,AAMJ,eACC,kBAAkB,AAClB,sBAAsB,AAEtB,gBAA0C,AAE1C,4BAhiBmB,CA44BnB,AAlXD,4CAKC,qBAjiBuB,CAsiBtB,AAVF,0CAaE,sBAriBsB,AAsiBtB,cAAe,CACf,AAfF,kCAkBE,wBAxiB6B,CAyiB7B,AAnBF,wCAsBE,yBA3iBkC,AA4iBlC,cAAe,CACf,AAxBF,gCA2BE,kBAAkB,AAElB,0BAvjBkB,AAwjBlB,6BAxjBkB,AA0jBlB,8BAA+B,AAC/B,UAAU,CACV,AAlCF,4CAsCE,kBAAiB,AACjB,QAAO,AACP,SAAQ,AACR,OAAM,AACN,UAAU,CAUV,AApDF,iDA6CG,MAAK,AACL,WAAW,CACX,AA/CH,kDAkDG,gBAAgB,CAChB,AAnDH,iCAuDE,qBAAqB,AACrB,kBAAkB,AAElB,yBAAyB,AAEzB,UAAW,CASX,AArEF,uDA+DG,2BAzlBiB,CA0lBjB,AAhEH,wDAmEG,0BA7lBiB,CA8lBjB,AApEH,8CAwEE,sBAAqB,AAErB,YAAW,AAEX,0BAtmBkB,AAumBlB,4BAvmBkB,CA0nBlB,AAhGF,oDAgFG,YAAY,CACZ,AAjFH,oDAoFG,cA9nBW,CAyoBX,AA/FH,0DAwFK,iBAAkB,CAKlB,AA7FL,wEA2FM,kBAAkB,CAClB,AA5FN,+BAoGE,qBAAoB,AACpB,kBAAkB,AAClB,sBAAqB,AACrB,YAAW,AACX,4BAloBkB,AAmoBlB,sBAAqB,AACrB,mBAAkB,AAClB,gBAAe,AACf,sBAAsB,CA6LtB,AAzSF,4CA+GG,iBAAkB,CAClB,AAhHH,iDAmHG,yBAroBkB,AAsoBlB,SAAU,CAMV,AA1HH,+GAuHI,WAAU,AACV,sBAAsB,CACtB,AAzHJ,yDA6HG,qBA9oBgB,CAqpBhB,AApIH,+HA+HI,WAAU,AACV,uBAAsB,AAEtB,UAnpBe,CAopBf,AAnIJ,6EAyII,YAAa,CACb,AA1IJ,oDAgJG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAElB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAcpB,AApKH,8EA0JI,SAAS,CAST,AAnKJ,wGA8JK,WAAU,AACV,WAAU,AACV,eAAc,AACd,eAAe,CACf,AAlKL,2DAuKG,qBAAoB,AACpB,sBAAqB,AAErB,WAAU,AACV,UAAS,AAET,gBAAe,AACf,iBAAgB,AAEhB,8BAA6B,AAE7B,2BA5sBiB,AA6sBjB,4BA7sBiB,CA8sBjB,AApLH,4DAwLG,2BAAmB,AAAnB,oBAAmB,AACnB,qBAAsB,AAAtB,uBAAsB,AACtB,sBAAkB,AAAlB,mBAAkB,AAClB,sBAAqB,AAErB,YAAW,AACX,WAAU,AAEV,iBAAgB,AAEhB,sBA3tBe,AA4tBf,kBAAiB,AACjB,0BAA4B,AAE5B,eAAe,CAmDf,AAzPH,kEAyMI,eAAc,AACd,yBAA4B,CAC5B,AA3MJ,kGA8MI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,sBAAuB,CAavB,AAjOJ,wGAuNK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAxvBa,CAyvBb,AAhOL,gGAoOI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,eAnwBc,CAgxBd,AAvPJ,sGA6OK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eA9wBa,CA+wBb,AAtPL,qEA4PG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,uBAAsB,AAEtB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,oBAAoB,AAEpB,YAAW,AACX,WAAU,AAEV,mBAAkB,AAClB,gBAAe,AAEf,WAvyBqB,AAwyBrB,gBAAgB,AAChB,eAAe,CAmBf,AAhSH,2EAgRI,UAAU,CACV,AAjRJ,sHAqRK,eAAe,CACf,AAtRL,sOA8RI,YAAY,CACZ,AA/RJ,wDAmSG,qBAAqB,AACrB,YAAW,AACX,WAAU,AAEV,kBAAkB,CAClB,AAxSH,+BA8SE,sBAAqB,AACrB,6BAA4B,AAC5B,4BA10BkB,AA20BlB,0BAAyB,AACzB,YAAW,AACX,kBAAiB,AACjB,mBAAkB,AAClB,gBAAgB,AAEhB,cAAe,CA0Df,AAjXF,qCA0TG,eAAc,AACd,+BAA+B,CAC/B,AA5TH,wEAgUI,kBAAiB,AACjB,kCAAkC,AAClC,mCAAmC,AACnC,0BAn2BkB,AAo2BlB,eAAgB,CAChB,AArUJ,uDAyUG,iBAAiB,CACjB,AA1UH,uDA6UG,iBAAiB,CACjB,AA9UH,uDAiVG,iBAAiB,CACjB,AAlVH,uDAqVG,iBAAiB,CACjB,AAtVH,uDAyVG,kBAAkB,CAClB,AA1VH,uDA6VG,oBAAqB,CACrB,AA9VH,gDAkWG,qBAAqB,AACrB,QAAQ,AACR,SAAS,AACT,kBAAiB,AACjB,iCAAiC,AACjC,oCAAoC,AACpC,eAAe,AACf,2BAz4BmB,AA04BnB,qBAAqB,CACrB,AA3WH,oCA8WG,iBAAgB,AAChB,UAAU,CACV,AAIH,4BACC,kBAAkB,AAClB,qBAAoB,AACpB,sBAAqB,AAErB,iBAAgB,AAEhB,gBAv5BuB,AAw5BvB,sBAt5BmB,AAw5BnB,eAx6Ba,AA06Bb,gBAAe,AACf,iCAAiC,AAEjC,aAAc,CA6Bd,AA5CD,6DAkBE,YAAW,AAEX,UAj6BgB,CA86BhB,AAjCF,oEAuBG,WAv6BqB,AAw6BrB,kBA95BkB,CA+5BlB,AAzBH,mEA4BG,eAAc,AAEd,WA96BqB,AA+6BrB,kBAr6BkB,CAs6BlB,AAhCH,8DAoCE,6BAl7BkB,AAo7BlB,YAAW,AACX,gBAAe,AAEf,WAt7BgB,AAu7BhB,eAAgB,CAChB,AAKF,4BACC,kBAAkB,AAClB,MAAK,AACL,SAAQ,AACR,OAAM,AACN,QAAO,AAEP,aAAc,CACd,AAED,uEACC,sBAAuB,CACvB,AAED,uBACC,wBAAyB,CACzB","file":"tabulator_simple.min.css","sourcesContent":["/* Tabulator v4.5.1 (c) Oliver Folkerd */\n\n\r\n//Main Theme Variables\r\n$backgroundColor: #fff !default; //background color of tabulator\r\n$borderColor:#999 !default; //border to tabulator\r\n$textSize:14px !default; //table text size\r\n\r\n//header themeing\r\n$headerBackgroundColor:#fff !default; //border to tabulator\r\n$headerTextColor:#555 !default; //header text colour\r\n$headerBorderColor:#ddd !default;  //header border color\r\n$headerSeperatorColor:#999 !default; //header bottom seperator color\r\n$headerMargin:4px !default; //padding round header\r\n\r\n//column header arrows\r\n$sortArrowActive: #666 !default;\r\n$sortArrowInactive: #bbb !default;\r\n\r\n//row themeing\r\n$rowBackgroundColor:#fff !default; //table row background color\r\n$rowAltBackgroundColor:#fff !default; //table row background color\r\n$rowBorderColor:#ddd !default; //table border color\r\n$rowTextColor:#333 !default; //table text color\r\n$rowHoverBackground:#bbb !default; //row background color on hover\r\n\r\n$rowSelectedBackground: #9ABCEA !default; //row background color when selected\r\n$rowSelectedBackgroundHover: #769BCC !default;//row background color when selected and hovered\r\n\r\n\r\n$editBoxColor:#1D68CD !default; //border color for edit boxes\r\n$errorColor:#dd0000 !default; //error indication\r\n\r\n//footer themeing\r\n$footerBackgroundColor:#fff !default; //border to tabulator\r\n$footerTextColor:#555 !default; //footer text colour\r\n$footerBorderColor:#aaa !default; //footer border color\r\n$footerSeperatorColor:#999 !default; //footer bottom seperator color\r\n$footerActiveColor:#d00 !default; //footer bottom active text color\r\n\r\n\r\n//Tabulator Containing Element\r\n.tabulator{\r\n\tposition: relative;\r\n\tbackground-color: $backgroundColor;\r\n\toverflow:hidden;\r\n\tfont-size:$textSize;\r\n\ttext-align: left;\r\n\r\n\t-webkit-transform: translatez(0);\r\n\t-moz-transform: translatez(0);\r\n\t-ms-transform: translatez(0);\r\n\t-o-transform: translatez(0);\r\n\ttransform: translatez(0);\r\n\r\n\t&[tabulator-layout=\"fitDataFill\"]{\r\n\t\t.tabulator-tableHolder{\r\n\t\t\t.tabulator-table{\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t&.tabulator-block-select{\r\n\t\tuser-select: none;\r\n\t}\r\n\r\n\t//column header containing element\r\n\t.tabulator-header{\r\n\t\tposition:relative;\r\n\t\tbox-sizing: border-box;\r\n\r\n\t\twidth:100%;\r\n\r\n\t\tborder-bottom:1px solid $headerSeperatorColor;\r\n\t\tbackground-color: $headerBackgroundColor;\r\n\t\tcolor: $headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:hidden;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t&.tabulator-header-hidden{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\t//individual column header element\r\n\t\t.tabulator-col{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition:relative;\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tborder-right:1px solid $headerBorderColor;\r\n\t\t\tbackground-color: $headerBackgroundColor;\r\n\t\t\ttext-align:left;\r\n\t\t\tvertical-align: bottom;\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&.tabulator-moving{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tborder:1px solid  $headerSeperatorColor;\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 10%);\r\n\t\t\t\tpointer-events: none;\r\n\t\t\t}\r\n\r\n\t\t\t//hold content of column header\r\n\t\t\t.tabulator-col-content{\r\n\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tpadding:4px;\r\n\r\n\t\t\t\t//hold title of column header\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\twhite-space: nowrap;\r\n\t\t\t\t\toverflow: hidden;\r\n\t\t\t\t\ttext-overflow: ellipsis;\r\n\t\t\t\t\tvertical-align:bottom;\r\n\r\n\t\t\t\t\t//element to hold title editor\r\n\t\t\t\t\t.tabulator-title-editor{\r\n\t\t\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\t\tborder:1px solid #999;\r\n\r\n\t\t\t\t\t\tpadding:1px;\r\n\r\n\t\t\t\t\t\tbackground: #fff;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//column sorter arrow\r\n\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\tdisplay: inline-block;\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\ttop:9px;\r\n\t\t\t\t\tright:8px;\r\n\t\t\t\t\twidth: 0;\r\n\t\t\t\t\theight: 0;\r\n\t\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t//complex header column group\r\n\t\t\t&.tabulator-col-group{\r\n\r\n\t\t\t\t//gelement to hold sub columns in column group\r\n\t\t\t\t.tabulator-col-group-cols{\r\n\t\t\t\t\tposition:relative;\r\n\t\t\t\t\tdisplay: flex;\r\n\r\n\t\t\t\t\tborder-top:1px solid $headerBorderColor;\r\n\t\t\t\t\toverflow: hidden;\r\n\r\n\t\t\t\t\t.tabulator-col:last-child{\r\n\t\t\t\t\t\tmargin-right:-1px;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\t//hide left resize handle on first column\r\n\t\t\t&:first-child{\r\n\t\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//placeholder element for sortable columns\r\n\t\t\t&.ui-sortable-helper{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tbackground-color:darken($headerBackgroundColor, 10%) !important;\r\n\t\t\t\tborder:1px solid $headerBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t//header filter containing element\r\n\t\t\t.tabulator-header-filter{\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\tmargin-top:2px;\r\n\t\t\t\twidth:100%;\r\n\t\t\t\ttext-align: center;\r\n\r\n\t\t\t\t//styling adjustment for inbuilt editors\r\n\t\t\t\ttextarea{\r\n\t\t\t\t\theight:auto !important;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsvg{\r\n\t\t\t\t\tmargin-top: 3px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinput{\r\n\t\t\t\t\t&::-ms-clear {\r\n\t\t\t\t\t  width : 0;\r\n\t\t\t\t\t  height: 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\t//styling child elements for sortable columns\r\n\t\t\t&.tabulator-sortable{\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tpadding-right:25px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\t&[aria-sort=\"none\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"asc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowActive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"desc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\t\t\tborder-bottom: none;\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&.tabulator-col-vertical{\r\n\t\t\t\t.tabulator-col-content{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\twriting-mode: vertical-rl;\r\n\t\t\t\t\t\ttext-orientation: mixed;\r\n\r\n\t\t\t\t\t\tdisplay:flex;\r\n\t\t\t\t\t\talign-items:center;\r\n\t\t\t\t\t\tjustify-content:center;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\ttransform: rotate(180deg);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-sortable{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\tpadding-top:20px;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\t\tpadding-bottom:20px;\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.tabulator-arrow{\r\n\t\t\t\t\t\tright:calc(50% - 6px);\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\t.tabulator-frozen{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\tposition: absolute;\r\n\r\n\t\t\t// background-color: inherit;\r\n\r\n\t\t\tz-index: 10;\r\n\r\n\t\t\t&.tabulator-frozen-left{\r\n\t\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-frozen-right{\r\n\t\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\tbackground:darken($headerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\t\t\tborder-bottom:1px solid $headerSeperatorColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen-rows-holder{\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\t&:empty{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\r\n\t//scrolling element to hold table\r\n\t.tabulator-tableHolder{\r\n\t\tposition:relative;\r\n\t\twidth:100%;\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:auto;\r\n\t\t-webkit-overflow-scrolling: touch;\r\n\r\n\t\t&:focus{\r\n\t\t\toutline: none;\r\n\t\t}\r\n\r\n\t\t//default placeholder element\r\n\t\t.tabulator-placeholder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t&[tabulator-render-mode=\"virtual\"]{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\ttop:0;\r\n\t\t\t\tleft:0;\r\n\t\t\t\theight:100%;\r\n\t\t\t}\r\n\r\n\t\t\twidth:100%;\r\n\r\n\t\t\tspan{\r\n\t\t\t\tdisplay: inline-block;\r\n\r\n\t\t\t\tmargin:0 auto;\r\n\t\t\t\tpadding:10px;\r\n\r\n\t\t\t\tcolor:#000;\r\n\t\t\t\tfont-weight: bold;\r\n\t\t\t\tfont-size: 20px;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//element to hold table rows\r\n\t\t.tabulator-table{\r\n\t\t\tposition:relative;\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tbackground-color:$rowBackgroundColor;\r\n\t\t\twhite-space: nowrap;\r\n\t\t\toverflow:visible;\r\n\t\t\tcolor:$rowTextColor;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\t&.tabulator-calcs{\r\n\t\t\t\t\tfont-weight: bold;\r\n\t\t\t\t\tbackground:darken($rowAltBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t\t&.tabulator-calcs-top{\r\n\t\t\t\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-calcs-bottom{\r\n\t\t\t\t\t\tborder-top:2px solid $rowBorderColor;\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\t}\r\n\r\n\t//column resize handles\r\n\t.tabulator-col-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\ttop:0;\r\n\t\tbottom:0;\r\n\t\twidth:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\tleft:0;\r\n\t\t\tright:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ew-resize;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//footer element\r\n\t.tabulator-footer{\r\n\t\tpadding:5px 10px;\r\n\t\tborder-top:1px solid $footerSeperatorColor;\r\n\t\tbackground-color: $footerBackgroundColor;\r\n\t\ttext-align:right;\r\n\t\tcolor: $footerTextColor;\r\n\t\tfont-weight:bold;\r\n\t\twhite-space:nowrap;\r\n\t\tuser-select:none;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\twidth:calc(100% + 20px);\r\n\t\t\tmargin:-5px -10px 5px -10px;\r\n\r\n\t\t\ttext-align: left;\r\n\r\n\t\t\tbackground:darken($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:darken($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-bottom:1px solid $footerBackgroundColor;\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&:only-child{\r\n\t\t\t\tmargin-bottom:-5px;\r\n\t\t\t\tborder-bottom:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-paginator{\r\n\t\t\tcolor: $footerTextColor;\r\n\t\t\tfont-family:inherit;\r\n\t\t\tfont-weight:inherit;\r\n\t\t\tfont-size:inherit;\r\n\t\t}\r\n\r\n\t\t//page size select element\r\n\t\t.tabulator-page-size{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 5px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-pages{\r\n\t\t\tmargin:0 7px;\r\n\t\t}\r\n\r\n\t\t//pagination button\r\n\t\t.tabulator-page{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 2px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\r\n\t\t\tbackground:rgba(255,255,255,.2);\r\n\r\n\t\t\t&.active{\r\n\t\t\t\tcolor:$footerActiveColor;\r\n\t\t\t}\r\n\r\n\t\t\t&:disabled{\r\n\t\t\t\topacity:.5;\r\n\t\t\t}\r\n\r\n\t\t\t&:not(.disabled){\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground:rgba(0,0,0,.2);\r\n\t\t\t\t\tcolor:#fff;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//holding div that contains loader and covers tabulator element to prevent interaction\r\n\t.tabulator-loader{\r\n\t\tposition:absolute;\r\n\t\tdisplay: flex;\r\n\t\talign-items:center;\r\n\r\n\t\ttop:0;\r\n\t\tleft:0;\r\n\t\tz-index:100;\r\n\r\n\t\theight:100%;\r\n\t\twidth:100%;\r\n\t\tbackground:rgba(0,0,0,.4);\r\n\t\ttext-align:center;\r\n\r\n\t\t//loading message element\r\n\t\t.tabulator-loader-msg{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 auto;\r\n\t\t\tpadding:10px 20px;\r\n\r\n\t\t\tborder-radius:10px;\r\n\r\n\t\t\tbackground:#fff;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:16px;\r\n\r\n\t\t\t//loading message\r\n\t\t\t&.tabulator-loading{\r\n\t\t\t\tborder:4px solid #333;\r\n\t\t\t\tcolor:#000;\r\n\t\t\t}\r\n\r\n\t\t\t//error message\r\n\t\t\t&.tabulator-error{\r\n\t\t\t\tborder:4px solid #D00;\r\n\t\t\t\tcolor:#590000;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n//row element\r\n.tabulator-row{\r\n\tposition: relative;\r\n\tbox-sizing: border-box;\r\n\r\n\tmin-height:$textSize + ($headerMargin * 2);\r\n\tbackground-color: $rowBackgroundColor;\r\n\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t&:nth-child(even){\r\n\t\tbackground-color: $rowAltBackgroundColor;\r\n\t}\r\n\r\n\t&.tabulator-selectable:hover{\r\n\t\tbackground-color:$rowHoverBackground;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-selected{\r\n\t\tbackground-color:$rowSelectedBackground;\r\n\t}\r\n\r\n\t&.tabulator-selected:hover{\r\n\t\tbackground-color:$rowSelectedBackgroundHover;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-moving{\r\n\t\tposition: absolute;\r\n\r\n\t\tborder-top:1px solid  $rowBorderColor;\r\n\t\tborder-bottom:1px solid  $rowBorderColor;\r\n\r\n\t\tpointer-events: none !important;\r\n\t\tz-index:15;\r\n\t}\r\n\r\n\t//row resize handles\r\n\t.tabulator-row-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\tbottom:0;\r\n\t\tleft:0;\r\n\t\theight:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\ttop:0;\r\n\t\t\tbottom:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ns-resize;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-frozen{\r\n\t\tdisplay: inline-block;\r\n\t\tposition: absolute;\r\n\r\n\t\tbackground-color: inherit;\r\n\r\n\t\tz-index: 10;\r\n\r\n\t\t&.tabulator-frozen-left{\r\n\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t&.tabulator-frozen-right{\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-responsive-collapse{\r\n\t\tbox-sizing:border-box;\r\n\r\n\t\tpadding:5px;\r\n\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\t&:empty{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\ttable{\r\n\t\t\tfont-size:$textSize;\r\n\r\n\t\t\ttr{\r\n\t\t\t\ttd{\r\n\t\t\t\t\tposition: relative;\r\n\r\n\t\t\t\t\t&:first-of-type{\r\n\t\t\t\t\t\tpadding-right:10px;\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//cell element\r\n\t.tabulator-cell{\r\n\t\tdisplay:inline-block;\r\n\t\tposition: relative;\r\n\t\tbox-sizing:border-box;\r\n\t\tpadding:4px;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tvertical-align:middle;\r\n\t\twhite-space:nowrap;\r\n\t\toverflow:hidden;\r\n\t\ttext-overflow:ellipsis;\r\n\r\n\t\t&:last-of-type{\r\n\t\t\tborder-right: none;\r\n\t\t}\r\n\r\n\t\t&.tabulator-editing{\r\n\t\t\tborder:1px solid  $editBoxColor;\r\n\t\t\tpadding: 0;\r\n\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-validation-fail{\r\n\t\t\tborder:1px solid $errorColor;\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\r\n\t\t\t\tcolor: $errorColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//hide left resize handle on first column\r\n\t\t&:first-child{\r\n\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//movable row handle\r\n\t\t&.tabulator-row-handle{\r\n\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\t//handle holder\r\n\t\t\t.tabulator-row-handle-box{\r\n\t\t\t\twidth:80%;\r\n\r\n\t\t\t\t//Hamburger element\r\n\t\t\t\t.tabulator-row-handle-bar{\r\n\t\t\t\t\twidth:100%;\r\n\t\t\t\t\theight:3px;\r\n\t\t\t\t\tmargin-top:2px;\r\n\t\t\t\t\tbackground:#666;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-branch{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:9px;\r\n\t\t\twidth:7px;\r\n\r\n\t\t\tmargin-top:-9px;\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control{\r\n\r\n\t\t\tdisplay:inline-flex;\r\n\t\t\tjustify-content:center;\r\n\t\t\talign-items:center;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:11px;\r\n\t\t\twidth:11px;\r\n\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder:1px solid $rowTextColor;\r\n\t\t\tborder-radius:2px;\r\n\t\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\t\toverflow:hidden;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\tcursor:pointer;\r\n\t\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: transparent;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-expand{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-responsive-collapse-toggle{\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\t\t\tjustify-content:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\theight:15px;\r\n\t\t\twidth:15px;\r\n\r\n\t\t\tborder-radius:20px;\r\n\t\t\tbackground:#666;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:1.1em;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\topacity:.7;\r\n\t\t\t}\r\n\r\n\t\t\t&.open{\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\t\tdisplay:initial;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-open{\r\n\t\t\t\t\tdisplay:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\tdisplay:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-traffic-light{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\theight:14px;\r\n\t\t\twidth:14px;\r\n\r\n\t\t\tborder-radius:14px;\r\n\t\t}\r\n\t}\r\n\r\n\t//row grouping element\r\n\t&.tabulator-group{\r\n\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-bottom:1px solid #999;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tborder-top:1px solid #999;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:#fafafa;\r\n\t\tfont-weight:bold;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:rgba(0,0,0,.1);\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-visible{\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\tpadding-left:30px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\tpadding-left:50px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\tpadding-left:70px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\tpadding-left:90px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\tpadding-left:110px;\r\n\t\t}\r\n\r\n\t\t.tabulator-group-toggle{\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:#666;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n.tabulator-edit-select-list{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tmax-height:200px;\r\n\r\n\tbackground:$rowBackgroundColor;\r\n\tborder:1px solid $rowBorderColor;\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-edit-select-list-item{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\r\n\t\t&.active{\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-group{\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\tpadding:4px;\r\n\t\tpadding-top:6px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\tfont-weight:bold;\r\n\t}\r\n}\r\n\r\n// Table print styling\r\n\r\n.tabulator-print-fullscreen{\r\n\tposition: absolute;\r\n\ttop:0;\r\n\tbottom:0;\r\n\tleft:0;\r\n\tright:0;\r\n\r\n\tz-index: 10000;\r\n}\r\n\r\nbody.tabulator-print-fullscreen-hide>*:not(.tabulator-print-fullscreen){\r\n\tdisplay:none !important;\r\n}\r\n\r\n.tabulator-print-table{\r\n\tborder-collapse: collapse;\r\n}\r\n\r\n"]}
\ No newline at end of file
index fdfbea5..89005d4 100644 (file)
@@ -1,4 +1,4 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 .tabulator {
   position: relative;
   border-bottom: 5px solid #222;
   padding-left: 110px;
 }
 
+.tabulator-row.tabulator-group .tabulator-group-toggle {
+  display: inline-block;
+}
+
 .tabulator-row.tabulator-group .tabulator-arrow {
   display: inline-block;
   width: 0;
index 57e4f7b..839f319 100644 (file)
@@ -1,3 +1,3 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
-.tabulator{position:relative;border-bottom:5px solid #222;background-color:#fff;font-size:14px;text-align:left;overflow:hidden;transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitColumns] .tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator.tabulator-block-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:3px solid #3fb449;background-color:#222;color:#fff;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-color:#222;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #3fb449;background:#090909;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:8px}.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-arrow{display:inline-block;position:absolute;top:14px;right:8px;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:-ms-flexbox;display:flex;border-top:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child{margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col.ui-sortable-helper{position:absolute;background-color:#222!important;border:1px solid #aaa}.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:#090909}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #3fb449}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-arrow{border-top:6px solid #3fb449;border-bottom:none}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack: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-arrow{right:calc(50% - 6px)}.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:#3c3c3c!important;border-top:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#3c3c3c!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:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{position:absolute;top:0;left:0;height:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#3fb449;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:#484848!important;color:#fff}.tabulator .tabulator-footer{padding:5px 10px;padding-top:8px;border-top:3px solid #3fb449;background-color:#222;text-align:right;color:#222;font-weight:700;white-space:nowrap;-ms-user-select:none;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:-8px -10px 8px;text-align:left;background:#3c3c3c!important;border-bottom:1px solid #aaa;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#3c3c3c!important;color:#fff!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 label{color:#fff}.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:#fff;color:#222;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page.active{color:#3fb449}.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:-ms-flexbox;display:flex;-ms-flex-align:center;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 #aaa;border-bottom:1px solid #aaa;pointer-events:none!important;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: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:6px;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;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:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items: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:#3fb449}.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:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align: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:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack: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-right:1px solid #aaa;border-top:1px solid #000;border-bottom:2px solid #3fb449;padding:5px;padding-left:10px;background:#222;color:#fff;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:#090909}.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 #3fb449;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-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 #3fb449;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#3fb449}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#fff;border:1px solid #aaa;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:hover{cursor:pointer;color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #aaa;padding:4px;padding-top:6px;color:#333;font-weight:700}.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 v4.5.1 (c) Oliver Folkerd */
+.tabulator{position:relative;border-bottom:5px solid #222;background-color:#fff;font-size:14px;text-align:left;overflow:hidden;transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitColumns] .tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator.tabulator-block-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:3px solid #3fb449;background-color:#222;color:#fff;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-color:#222;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #3fb449;background:#090909;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:8px}.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-arrow{display:inline-block;position:absolute;top:14px;right:8px;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:-ms-flexbox;display:flex;border-top:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child{margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col.ui-sortable-helper{position:absolute;background-color:#222!important;border:1px solid #aaa}.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:#090909}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #3fb449}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-arrow{border-top:6px solid #3fb449;border-bottom:none}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack: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-arrow{right:calc(50% - 6px)}.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:#3c3c3c!important;border-top:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#3c3c3c!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:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{position:absolute;top:0;left:0;height:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#3fb449;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:#484848!important;color:#fff}.tabulator .tabulator-footer{padding:5px 10px;padding-top:8px;border-top:3px solid #3fb449;background-color:#222;text-align:right;color:#222;font-weight:700;white-space:nowrap;-ms-user-select:none;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:-8px -10px 8px;text-align:left;background:#3c3c3c!important;border-bottom:1px solid #aaa;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#3c3c3c!important;color:#fff!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 label{color:#fff}.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:#fff;color:#222;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page.active{color:#3fb449}.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:-ms-flexbox;display:flex;-ms-flex-align:center;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 #aaa;border-bottom:1px solid #aaa;pointer-events:none!important;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: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:6px;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;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:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items: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:#3fb449}.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:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align: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:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack: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-right:1px solid #aaa;border-top:1px solid #000;border-bottom:2px solid #3fb449;padding:5px;padding-left:10px;background:#222;color:#fff;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:#090909}.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 #3fb449;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 #3fb449;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#3fb449}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#fff;border:1px solid #aaa;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:hover{cursor:pointer;color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #aaa;padding:4px;padding-top:6px;color:#333;font-weight:700}.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}
 /*# sourceMappingURL=tabulator_site.min.css.map */
index b023e6c..1c2acd2 100644 (file)
@@ -1 +1 @@
-{"version":3,"sources":["tabulator_site.scss"],"names":[],"mappings":"AAyCA,WACC,kBAAkB,AAElB,6BAvCgB,AAyChB,sBA1CqB,AA4CrB,eA1Ca,AA2Cb,gBAAgB,AAChB,gBAAe,AAMf,uBAAwB,CA8fxB,AA7gBD,iFAoBI,cAAc,CACd,AArBJ,oFA6BK,iBAAkB,CAClB,AA9BL,kCAqCE,yBAAiB,AAAjB,sBAAiB,AAAjB,qBAAiB,AAAjB,gBAAiB,CACjB,AAtCF,6BA0CE,kBAAiB,AACjB,sBAAsB,AAEtB,WAAU,AAEV,gCA5E2B,AA6E3B,sBAhFyB,AAiFzB,WAhFmB,AAiFnB,gBAAgB,AAEhB,mBAAmB,AACnB,gBAAe,AAEf,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAkPpB,AA5SF,qDA6DG,YAAY,CACZ,AA9DH,4CAkEG,qBAAoB,AAEpB,kBAAiB,AACjB,sBAAqB,AACrB,4BApGoB,AAqGpB,sBAvGwB,AAwGxB,gBAAe,AACf,sBAAsB,AACtB,eAAgB,CAoLhB,AA9PH,6DA6EI,kBAAkB,AAClB,yBA3GyB,AA4GzB,mBAA8C,AAC9C,mBAAoB,CACpB,AAjFJ,mEAqFI,sBAAqB,AACrB,kBAAkB,AAClB,WAAW,CAsCX,AA7HJ,wFA2FK,sBAAqB,AACrB,WAAW,AAEX,mBAAmB,AACnB,gBAAgB,AAChB,uBAAuB,AACvB,qBAAqB,CAarB,AA9GL,gHAqGM,sBAAsB,AACtB,WAAW,AAEX,sBAAqB,AAErB,YAAW,AAEX,eAAgB,CAChB,AA7GN,oFAkHK,qBAAqB,AACrB,kBAAkB,AAClB,SAAQ,AACR,UAAS,AACT,QAAQ,AACR,SAAS,AACT,kCAAkC,AAClC,mCAAmC,AACnC,4BAlJmB,CAmJnB,AA3HL,0FAoIK,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AAEb,0BArKkB,AAsKlB,eAAgB,CAKhB,AA7IL,oHA2IM,iBAAiB,CACjB,AA5IN,0FAmJK,YAAa,CACb,AApJL,+DAyJI,kBAAkB,AAClB,gCAAmD,AACnD,qBAzLmB,CA0LnB,AA5JJ,qEAgKI,kBAAkB,AAClB,sBAAsB,AACtB,eAAc,AACd,WAAU,AACV,iBAAkB,CAiBlB,AArLJ,8EAwKK,qBAAsB,CACtB,AAzKL,yEA4KK,cAAe,CACf,AA7KL,sFAiLO,QAAS,AACT,QAAS,CACV,AAnLN,oFA0LK,kBAAkB,CAClB,AA3LL,qEA8LK,eAAc,AACd,wBAAoD,CACpD,AAhML,uHAoMM,gBAAgB,AAChB,4BA7NkB,CA8NlB,AAtMN,sHA2MM,gBAAgB,AAChB,+BArOmB,CAsOnB,AA7MN,uHAkNM,6BA3OmB,AA4OnB,kBAAmB,CACnB,AApNN,+GA2NM,uBAAyB,AAAzB,yBAAyB,AACzB,uBAAuB,AAEvB,oBAAY,AAAZ,aAAY,AACZ,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,sBAAsB,CACtB,AAjON,oHAsOM,wBAAyB,CACzB,AAvON,2GA4OM,gBAAe,AACf,gBAAgB,CAChB,AA9ON,uIAkPO,gBAAe,AACf,mBAAmB,CACnB,AApPP,uGAyPM,qBAAqB,CACrB,AA1PN,+CAiQG,qBAAqB,AACrB,kBAAkB,AAIlB,UAAW,CASX,AA/QH,qEAyQI,2BA5RgB,CA6RhB,AA1QJ,sEA6QI,0BAhSgB,CAiShB,AA9QJ,qDAkRG,sBAAqB,AACrB,eAAc,AAEd,6BAA0D,AAU1D,0BAlTiB,AAqTjB,eAAgB,CAChB,AAnSH,oEAwRI,4BAA0D,CAK1D,AA7RJ,iGA2RK,YAAa,CACb,AA5RL,2DAsSG,cAAc,CAKd,AA3SH,iEAySI,YAAa,CACb,AA1SJ,kCAgTE,kBAAiB,AACjB,WAAU,AACV,mBAAmB,AACnB,cAAa,AACb,gCAAiC,CAkDjC,AAtWF,wCAuTG,YAAa,CACb,AAxTH,yDA4TG,sBAAqB,AACrB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AASlB,UAAU,CAYV,AAnVH,wFAiUI,kBAAkB,AAClB,MAAK,AACL,OAAM,AACN,WAAW,CACX,AArUJ,8DA0UI,qBAAqB,AAErB,cAAa,AACb,aAAY,AAEZ,cA5WyB,AA6WzB,gBAAiB,AACjB,cAAe,CACf,AAlVJ,mDAuVG,kBAAiB,AACjB,qBAAoB,AACpB,sBA9WqB,AA+WrB,mBAAmB,AACnB,iBAAgB,AAChB,UA9We,CAuXf,AArWH,kFAgWK,gBAAiB,AACjB,6BAA0D,AAC1D,UAjYgB,CAkYhB,AAnWL,6BA2WE,iBAAgB,AAChB,gBAAe,AACf,6BAlX2B,AAmX3B,sBAtXyB,AAuXzB,iBAAgB,AAChB,WAvXmB,AAwXnB,gBAAgB,AAChB,mBAAkB,AAClB,qBAAgB,AAAhB,iBAAgB,AAEhB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAuFpB,AA/cF,qDA2XG,sBAAqB,AACrB,wBAAuB,AACvB,sBAA2B,AAE3B,gBAAgB,AAEhB,6BAA0D,AAY1D,6BAhaiB,AAkajB,eAAgB,CAMhB,AArZH,oEAoYI,6BAA0D,AAC1D,oBAAiC,CAKjC,AA1YJ,iGAwYK,YAAa,CACb,AAzYL,gEAkZI,mBAAkB,AAClB,kBAAkB,CAClB,AApZJ,wDA0ZI,UAAU,CACV,AA3ZJ,kDAgaG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBA3aoB,AA4apB,iBAAiB,CACjB,AAvaH,8CA2aG,YAAY,CACZ,AA5aH,6CAgbG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBA3boB,AA4bpB,kBAAiB,AAEjB,gBAAe,AAEf,WAjckB,AAkclB,oBAAmB,AACnB,oBAAmB,AACnB,iBAAiB,CAiBjB,AA9cH,oDAgcI,aArcyB,CAsczB,AAjcJ,sDAocI,UAAU,CACV,AArcJ,kEAycK,eAAc,AACd,0BAAyB,AACzB,UAAU,CACV,AA5cL,wCAmdE,kBAAiB,AACjB,QAAO,AACP,MAAK,AACL,SAAQ,AACR,SAAS,CAUT,AAjeF,6CA0dG,OAAM,AACN,UAAU,CACV,AA5dH,8CA+dG,gBAAgB,CAChB,AAheH,6BAseE,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AAElB,MAAK,AACL,OAAM,AACN,YAAW,AAEX,YAAW,AACX,WAAU,AACV,0BAAyB,AACzB,iBAAiB,CA2BjB,AA5gBF,mDAqfG,qBAAoB,AAEpB,cAAa,AACb,kBAAiB,AAEjB,mBAAkB,AAElB,gBAAe,AACf,gBAAgB,AAChB,cAAc,CAad,AA3gBH,qEAkgBI,sBAAqB,AACrB,UAAU,CACV,AApgBJ,mEAwgBI,sBAAqB,AACrB,aAAa,CACb,AAMJ,eACC,kBAAkB,AAClB,sBAAsB,AACtB,gBAA0C,AAC1C,qBAziBuB,CAs5BvB,AAjXD,kCAQE,wBA5iB4B,CA6iB5B,AATF,0CAYE,sBA7iBsB,AA8iBtB,cAAe,CACf,AAdF,kCAiBE,wBAhjB6B,CAijB7B,AAlBF,wCAqBE,yBAnjBkC,AAojBlC,cAAe,CACf,AAvBF,oCA0BE,sBAAqB,AACrB,eAAe,CACf,AA5BF,gCA+BE,kBAAkB,AAElB,0BApkBkB,AAqkBlB,6BArkBkB,AAukBlB,8BAA+B,AAC/B,UAAU,CACV,AAtCF,4CA0CE,kBAAiB,AACjB,QAAO,AACP,SAAQ,AACR,OAAM,AACN,UAAU,CAUV,AAxDF,iDAiDG,MAAK,AACL,WAAW,CACX,AAnDH,kDAsDG,gBAAgB,CAChB,AAvDH,iCA2DE,qBAAqB,AACrB,kBAAkB,AAElB,yBAAyB,AAEzB,UAAW,CASX,AAzEF,uDAmEG,2BAtmBiB,CAumBjB,AApEH,wDAuEG,0BA1mBiB,CA2mBjB,AAxEH,8CA4EE,sBAAqB,AAErB,YAAW,AAEX,0BAnnBkB,AAonBlB,4BApnBkB,CAuoBlB,AApGF,oDAoFG,YAAY,CACZ,AArFH,oDAwFG,cA3oBW,CAspBX,AAnGH,0DA4FK,iBAAkB,CAKlB,AAjGL,wEA+FM,kBAAkB,CAClB,AAhGN,+BAwGE,qBAAoB,AACpB,kBAAkB,AAClB,sBAAqB,AACrB,YAAW,AACX,4BA/oBkB,AAgpBlB,sBAAqB,AACrB,mBAAkB,AAClB,gBAAe,AACf,sBAAsB,CA0LtB,AA1SF,iDAoHG,yBAhpBkB,AAipBlB,SAAU,CAMV,AA3HH,+GAwHI,WAAU,AACV,sBAAsB,CACtB,AA1HJ,yDA8HG,qBAzpBgB,CAgqBhB,AArIH,+HAgII,WAAU,AACV,uBAAsB,AAEtB,UA9pBe,CA+pBf,AApIJ,6EA0II,YAAa,CACb,AA3IJ,oDAiJG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAElB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAcpB,AArKH,8EA2JI,SAAS,CAST,AApKJ,wGA+JK,WAAU,AACV,WAAU,AACV,eAAc,AACd,kBA3sBoB,CA4sBpB,AAnKL,2DAwKG,qBAAoB,AACpB,sBAAqB,AAErB,WAAU,AACV,UAAS,AAET,gBAAe,AACf,iBAAgB,AAEhB,8BAA6B,AAE7B,2BAttBiB,AAutBjB,4BAvtBiB,CAwtBjB,AArLH,4DAyLG,2BAAmB,AAAnB,oBAAmB,AACnB,qBAAsB,AAAtB,uBAAsB,AACtB,sBAAkB,AAAlB,mBAAkB,AAClB,sBAAqB,AAErB,YAAW,AACX,WAAU,AAEV,iBAAgB,AAEhB,sBAruBe,AAsuBf,kBAAiB,AACjB,0BAA4B,AAE5B,eAAe,CAmDf,AA1PH,kEA0MI,eAAc,AACd,yBAA4B,CAC5B,AA5MJ,kGA+MI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,sBAAuB,CAavB,AAlOJ,wGAwNK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAlwBa,CAmwBb,AAjOL,gGAqOI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,eA7wBc,CA0xBd,AAxPJ,sGA8OK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAxxBa,CAyxBb,AAvPL,qEA6PG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,uBAAsB,AAEtB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,oBAAoB,AAEpB,YAAW,AACX,WAAU,AAEV,mBAAkB,AAClB,gBAAe,AAEf,WAjzBqB,AAkzBrB,gBAAgB,AAChB,eAAe,CAmBf,AAjSH,2EAiRI,UAAU,CACV,AAlRJ,sHAsRK,eAAe,CACf,AAvRL,sOA+RI,YAAY,CACZ,AAhSJ,wDAoSG,qBAAqB,AACrB,YAAW,AACX,WAAU,AAEV,kBAAkB,CAClB,AAzSH,+BA8SE,sBAAqB,AACrB,4BAl1BkB,AAm1BlB,0BAAyB,AACzB,gCA91B2B,AA+1B3B,YAAW,AACX,kBAAiB,AACjB,gBAp2ByB,AAq2BzB,WAp2BmB,AAq2BnB,gBAAgB,AAEhB,cAAe,CAuDf,AA/WF,qCA2TG,eAAc,AACd,wBAAoD,CACpD,AA7TH,wEAiUI,kBAAiB,AACjB,kCAAkC,AAClC,mCAAmC,AACnC,6BA72BqB,AA82BrB,eAAgB,CAChB,AAtUJ,uDA0UG,iBAAiB,CACjB,AA3UH,uDA8UG,iBAAiB,CACjB,AA/UH,uDAkVG,iBAAiB,CACjB,AAnVH,uDAsVG,iBAAiB,CACjB,AAvVH,uDA0VG,kBAAkB,CAClB,AA3VH,gDAgWG,qBAAqB,AACrB,QAAQ,AACR,SAAS,AACT,kBAAiB,AACjB,iCAAiC,AACjC,oCAAoC,AACpC,eAAe,AACf,8BAh5BsB,AAi5BtB,qBAAqB,CACrB,AAzWH,oCA4WG,iBAAgB,AAChB,aA15B0B,CA25B1B,AAKH,4BACC,kBAAkB,AAClB,qBAAoB,AACpB,sBAAqB,AAErB,iBAAgB,AAEhB,gBA/5BuB,AAg6BvB,sBA95BmB,AAg6BnB,eAh7Ba,AAk7Bb,gBAAe,AACf,iCAAiC,AAEjC,aAAc,CA6Bd,AA5CD,6DAkBE,YAAW,AAEX,UAz6BgB,CAs7BhB,AAjCF,oEAuBG,WA/6BqB,AAg7BrB,kBAv6BkB,CAw6BlB,AAzBH,mEA4BG,eAAc,AAEd,WAt7BqB,AAu7BrB,kBA96BkB,CA+6BlB,AAhCH,8DAoCE,6BA17BkB,AA47BlB,YAAW,AACX,gBAAe,AAEf,WA97BgB,AA+7BhB,eAAgB,CAChB,AAKF,4BACC,kBAAkB,AAClB,MAAK,AACL,SAAQ,AACR,OAAM,AACN,QAAO,AAEP,aAAc,CACd,AAED,uEACC,sBAAuB,CACvB,AAED,uBACC,wBAAyB,CACzB","file":"tabulator_site.min.css","sourcesContent":["/* Tabulator v4.4.3 (c) Oliver Folkerd */\n\n\r\n//Main Theme Variables\r\n$backgroundColor: #fff !default; //background color of tabulator\r\n$borderColor:#222 !default; //border to tabulator\r\n$textSize:14px !default; //table text size\r\n\r\n//header themeing\r\n$headerBackgroundColor:#222 !default; //border to tabulator\r\n$headerTextColor:#fff !default; //header text colour\r\n$headerBorderColor:#aaa !default;  //header border color\r\n$headerSeperatorColor:#3FB449 !default; //header bottom seperator color\r\n$headerMargin:4px !default; //padding round header\r\n\r\n//column header arrows\r\n$sortArrowActive: #3FB449 !default;\r\n$sortArrowInactive: #bbb !default;\r\n\r\n//row themeing\r\n$rowBackgroundColor:#fff !default; //table row background color\r\n$rowAltBackgroundColor:#EFEFEF !default; //table row background color\r\n$rowBorderColor:#aaa !default; //table border color\r\n$rowTextColor:#333 !default; //table text color\r\n$rowHoverBackground:#bbb !default; //row background color on hover\r\n\r\n$rowSelectedBackground: #9ABCEA !default; //row background color when selected\r\n$rowSelectedBackgroundHover: #769BCC !default;//row background color when selected and hovered\r\n\r\n$editBoxColor:#1D68CD !default; //border color for edit boxes\r\n$errorColor:#dd0000 !default; //error indication\r\n\r\n//footer themeing\r\n$footerBackgroundColor:#222 !default; //border to tabulator\r\n$footerTextColor:#222 !default; //footer text colour\r\n$footerBorderColor:#aaa !default; //footer border color\r\n$footerSeperatorColor:#3FB449 !default; //footer bottom seperator color\r\n$footerActiveColor:$footerSeperatorColor !default; //footer bottom active text color\r\n\r\n\r\n//Tabulator Containing Element\r\n.tabulator{\r\n\tposition: relative;\r\n\r\n\tborder-bottom: 5px solid $borderColor;\r\n\r\n\tbackground-color: $backgroundColor;\r\n\r\n\tfont-size:$textSize;\r\n\ttext-align: left;\r\n\toverflow:hidden;\r\n\r\n\t-webkit-transform: translatez(0);\r\n\t-moz-transform: translatez(0);\r\n\t-ms-transform: translatez(0);\r\n\t-o-transform: translatez(0);\r\n\ttransform: translatez(0);\r\n\r\n\t&[tabulator-layout=\"fitDataFill\"]{\r\n\t\t.tabulator-tableHolder{\r\n\t\t\t.tabulator-table{\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t&[tabulator-layout=\"fitColumns\"]{\r\n\t\t.tabulator-row{\r\n\t\t\t.tabulator-cell{\r\n\t\t\t\t&:last-of-type{\r\n\t\t\t\t\tborder-right: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t&.tabulator-block-select{\r\n\t\tuser-select: none;\r\n\t}\r\n\r\n\t//column header containing element\r\n\t.tabulator-header{\r\n\t\tposition:relative;\r\n\t\tbox-sizing: border-box;\r\n\r\n\t\twidth:100%;\r\n\r\n\t\tborder-bottom:3px solid $headerSeperatorColor;\r\n\t\tbackground-color: $headerBackgroundColor;\r\n\t\tcolor: $headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:hidden;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t&.tabulator-header-hidden{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\t//individual column header element\r\n\t\t.tabulator-col{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tposition:relative;\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tborder-right:1px solid $headerBorderColor;\r\n\t\t\tbackground-color: $headerBackgroundColor;\r\n\t\t\ttext-align:left;\r\n\t\t\tvertical-align: bottom;\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&.tabulator-moving{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tborder:1px solid  $headerSeperatorColor;\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 10%);\r\n\t\t\t\tpointer-events: none;\r\n\t\t\t}\r\n\r\n\t\t\t//hold content of column header\r\n\t\t\t.tabulator-col-content{\r\n\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tpadding:8px;\r\n\r\n\t\t\t\t//hold title of column header\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\twhite-space: nowrap;\r\n\t\t\t\t\toverflow: hidden;\r\n\t\t\t\t\ttext-overflow: ellipsis;\r\n\t\t\t\t\tvertical-align:bottom;\r\n\r\n\t\t\t\t\t//element to hold title editor\r\n\t\t\t\t\t.tabulator-title-editor{\r\n\t\t\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\t\tborder:1px solid #999;\r\n\r\n\t\t\t\t\t\tpadding:1px;\r\n\r\n\t\t\t\t\t\tbackground: #fff;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//column sorter arrow\r\n\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\tdisplay: inline-block;\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\ttop:14px;\r\n\t\t\t\t\tright:8px;\r\n\t\t\t\t\twidth: 0;\r\n\t\t\t\t\theight: 0;\r\n\t\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t//complex header column group\r\n\t\t\t&.tabulator-col-group{\r\n\r\n\t\t\t\t//gelement to hold sub columns in column group\r\n\t\t\t\t.tabulator-col-group-cols{\r\n\t\t\t\t\tposition:relative;\r\n\t\t\t\t\tdisplay: flex;\r\n\r\n\t\t\t\t\tborder-top:1px solid $headerBorderColor;\r\n\t\t\t\t\toverflow: hidden;\r\n\r\n\t\t\t\t\t.tabulator-col:last-child{\r\n\t\t\t\t\t\tmargin-right:-1px;\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//hide left resize handle on first column\r\n\t\t\t&:first-child{\r\n\t\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//placeholder element for sortable columns\r\n\t\t\t&.ui-sortable-helper{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tbackground-color: $headerBackgroundColor !important;\r\n\t\t\t\tborder:1px solid $headerBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t//header filter containing element\r\n\t\t\t.tabulator-header-filter{\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\tmargin-top:2px;\r\n\t\t\t\twidth:100%;\r\n\t\t\t\ttext-align: center;\r\n\r\n\t\t\t\t//styling adjustment for inbuilt editors\r\n\t\t\t\ttextarea{\r\n\t\t\t\t\theight:auto !important;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsvg{\r\n\t\t\t\t\tmargin-top: 3px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinput{\r\n\t\t\t\t\t&::-ms-clear {\r\n\t\t\t\t\t  width : 0;\r\n\t\t\t\t\t  height: 0;\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//styling child elements for sortable columns\r\n\t\t\t&.tabulator-sortable{\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tpadding-right:25px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"none\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"asc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowActive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"desc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\t\t\tborder-bottom: none;\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&.tabulator-col-vertical{\r\n\t\t\t\t.tabulator-col-content{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\twriting-mode: vertical-rl;\r\n\t\t\t\t\t\ttext-orientation: mixed;\r\n\r\n\t\t\t\t\t\tdisplay:flex;\r\n\t\t\t\t\t\talign-items:center;\r\n\t\t\t\t\t\tjustify-content:center;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\ttransform: rotate(180deg);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-sortable{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\tpadding-top:20px;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\t\tpadding-bottom:20px;\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.tabulator-arrow{\r\n\t\t\t\t\t\tright:calc(50% - 6px);\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\t.tabulator-frozen{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\tposition: absolute;\r\n\r\n\t\t\t// background-color: inherit;\r\n\r\n\t\t\tz-index: 10;\r\n\r\n\t\t\t&.tabulator-frozen-left{\r\n\t\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-frozen-right{\r\n\t\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\tbackground:lighten($headerBackgroundColor, 10%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:lighten($headerBackgroundColor, 10%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\t\t\t// border-bottom:1px solid $headerBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen-rows-holder{\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\t&:empty{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//scrolling element to hold table\r\n\t.tabulator-tableHolder{\r\n\t\tposition:relative;\r\n\t\twidth:100%;\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:auto;\r\n\t\t-webkit-overflow-scrolling: touch;\r\n\r\n\t\t&:focus{\r\n\t\t\toutline: none;\r\n\t\t}\r\n\r\n\t\t//default placeholder element\r\n\t\t.tabulator-placeholder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t&[tabulator-render-mode=\"virtual\"]{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\ttop:0;\r\n\t\t\t\tleft:0;\r\n\t\t\t\theight:100%;\r\n\t\t\t}\r\n\r\n\t\t\twidth:100%;\r\n\r\n\t\t\tspan{\r\n\t\t\t\tdisplay: inline-block;\r\n\r\n\t\t\t\tmargin:0 auto;\r\n\t\t\t\tpadding:10px;\r\n\r\n\t\t\t\tcolor:$headerSeperatorColor;\r\n\t\t\t\tfont-weight: bold;\r\n\t\t\t\tfont-size: 20px;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//element to hold table rows\r\n\t\t.tabulator-table{\r\n\t\t\tposition:relative;\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tbackground-color:$rowBackgroundColor;\r\n\t\t\twhite-space: nowrap;\r\n\t\t\toverflow:visible;\r\n\t\t\tcolor:$rowTextColor;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\t&.tabulator-calcs{\r\n\t\t\t\t\tfont-weight: bold;\r\n\t\t\t\t\tbackground:lighten($headerBackgroundColor, 15%) !important;\r\n\t\t\t\t\tcolor:$headerTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//footer element\r\n\t.tabulator-footer{\r\n\t\tpadding:5px 10px;\r\n\t\tpadding-top:8px;\r\n\t\tborder-top:3px solid $footerSeperatorColor;\r\n\t\tbackground-color: $footerBackgroundColor;\r\n\t\ttext-align:right;\r\n\t\tcolor: $footerTextColor;\r\n\t\tfont-weight:bold;\r\n\t\twhite-space:nowrap;\r\n\t\tuser-select:none;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\twidth:calc(100% + 20px);\r\n\t\t\tmargin:-8px -10px 8px -10px;\r\n\r\n\t\t\ttext-align: left;\r\n\r\n\t\t\tbackground:lighten($footerBackgroundColor, 10%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:lighten($footerBackgroundColor, 10%) !important;\r\n\t\t\t\tcolor:$headerTextColor !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// border-top:1px solid $rowBorderColor;\r\n\t\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&:only-child{\r\n\t\t\t\tmargin-bottom:-5px;\r\n\t\t\t\tborder-bottom:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-paginator{\r\n\t\t\tlabel{\r\n\t\t\t\tcolor:#fff;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//page size select element\r\n\t\t.tabulator-page-size{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 5px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-pages{\r\n\t\t\tmargin:0 7px;\r\n\t\t}\r\n\r\n\t\t//pagination button\r\n\t\t.tabulator-page{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 2px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\r\n\t\t\tbackground:#fff;\r\n\r\n\t\t\tcolor: $footerTextColor;\r\n\t\t\tfont-family:inherit;\r\n\t\t\tfont-weight:inherit;\r\n\t\t\tfont-size:inherit;\r\n\r\n\t\t\t&.active{\r\n\t\t\t\tcolor:$footerActiveColor;\r\n\t\t\t}\r\n\r\n\t\t\t&:disabled{\r\n\t\t\t\topacity:.5;\r\n\t\t\t}\r\n\r\n\t\t\t&:not(.disabled){\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground:rgba(0,0,0,.2);\r\n\t\t\t\t\tcolor:#fff;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//column resize handles\r\n\t.tabulator-col-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\ttop:0;\r\n\t\tbottom:0;\r\n\t\twidth:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\tleft:0;\r\n\t\t\tright:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ew-resize;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//holding div that contains loader and covers tabulator element to prevent interaction\r\n\t.tabulator-loader{\r\n\t\tposition:absolute;\r\n\t\tdisplay: flex;\r\n\t\talign-items:center;\r\n\r\n\t\ttop:0;\r\n\t\tleft:0;\r\n\t\tz-index:100;\r\n\r\n\t\theight:100%;\r\n\t\twidth:100%;\r\n\t\tbackground:rgba(0,0,0,.4);\r\n\t\ttext-align:center;\r\n\r\n\t\t//loading message element\r\n\t\t.tabulator-loader-msg{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 auto;\r\n\t\t\tpadding:10px 20px;\r\n\r\n\t\t\tborder-radius:10px;\r\n\r\n\t\t\tbackground:#fff;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:16px;\r\n\r\n\t\t\t//loading message\r\n\t\t\t&.tabulator-loading{\r\n\t\t\t\tborder:4px solid #333;\r\n\t\t\t\tcolor:#000;\r\n\t\t\t}\r\n\r\n\t\t\t//error message\r\n\t\t\t&.tabulator-error{\r\n\t\t\t\tborder:4px solid #D00;\r\n\t\t\t\tcolor:#590000;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n//row element\r\n.tabulator-row{\r\n\tposition: relative;\r\n\tbox-sizing: border-box;\r\n\tmin-height:$textSize + ($headerMargin * 2);\r\n\tbackground-color: $rowBackgroundColor;\r\n\r\n\r\n\t&.tabulator-row-even{\r\n\t\tbackground-color: $rowAltBackgroundColor;\r\n\t}\r\n\r\n\t&.tabulator-selectable:hover{\r\n\t\tbackground-color:$rowHoverBackground;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-selected{\r\n\t\tbackground-color:$rowSelectedBackground;\r\n\t}\r\n\r\n\t&.tabulator-selected:hover{\r\n\t\tbackground-color:$rowSelectedBackgroundHover;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-row-moving{\r\n\t\tborder:1px solid #000;\r\n\t\tbackground:#fff;\r\n\t}\r\n\r\n\t&.tabulator-moving{\r\n\t\tposition: absolute;\r\n\r\n\t\tborder-top:1px solid  $rowBorderColor;\r\n\t\tborder-bottom:1px solid  $rowBorderColor;\r\n\r\n\t\tpointer-events: none !important;\r\n\t\tz-index:15;\r\n\t}\r\n\r\n\t//row resize handles\r\n\t.tabulator-row-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\tbottom:0;\r\n\t\tleft:0;\r\n\t\theight:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\ttop:0;\r\n\t\t\tbottom:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ns-resize;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-frozen{\r\n\t\tdisplay: inline-block;\r\n\t\tposition: absolute;\r\n\r\n\t\tbackground-color: inherit;\r\n\r\n\t\tz-index: 10;\r\n\r\n\t\t&.tabulator-frozen-left{\r\n\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t&.tabulator-frozen-right{\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-responsive-collapse{\r\n\t\tbox-sizing:border-box;\r\n\r\n\t\tpadding:5px;\r\n\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\t&:empty{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\ttable{\r\n\t\t\tfont-size:$textSize;\r\n\r\n\t\t\ttr{\r\n\t\t\t\ttd{\r\n\t\t\t\t\tposition: relative;\r\n\r\n\t\t\t\t\t&:first-of-type{\r\n\t\t\t\t\t\tpadding-right:10px;\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//cell element\r\n\t.tabulator-cell{\r\n\t\tdisplay:inline-block;\r\n\t\tposition: relative;\r\n\t\tbox-sizing:border-box;\r\n\t\tpadding:6px;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tvertical-align:middle;\r\n\t\twhite-space:nowrap;\r\n\t\toverflow:hidden;\r\n\t\ttext-overflow:ellipsis;\r\n\r\n\r\n\t\t&.tabulator-editing{\r\n\t\t\tborder:1px solid  $editBoxColor;\r\n\t\t\tpadding: 0;\r\n\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-validation-fail{\r\n\t\t\tborder:1px solid $errorColor;\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\r\n\t\t\t\tcolor: $errorColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//hide left resize handle on first column\r\n\t\t&:first-child{\r\n\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//movable row handle\r\n\t\t&.tabulator-row-handle{\r\n\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\t//handle holder\r\n\t\t\t.tabulator-row-handle-box{\r\n\t\t\t\twidth:80%;\r\n\r\n\t\t\t\t//Hamburger element\r\n\t\t\t\t.tabulator-row-handle-bar{\r\n\t\t\t\t\twidth:100%;\r\n\t\t\t\t\theight:3px;\r\n\t\t\t\t\tmargin-top:2px;\r\n\t\t\t\t\tbackground:$sortArrowActive;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-branch{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:9px;\r\n\t\t\twidth:7px;\r\n\r\n\t\t\tmargin-top:-9px;\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control{\r\n\r\n\t\t\tdisplay:inline-flex;\r\n\t\t\tjustify-content:center;\r\n\t\t\talign-items:center;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:11px;\r\n\t\t\twidth:11px;\r\n\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder:1px solid $rowTextColor;\r\n\t\t\tborder-radius:2px;\r\n\t\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\t\toverflow:hidden;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\tcursor:pointer;\r\n\t\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: transparent;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-expand{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-responsive-collapse-toggle{\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\t\t\tjustify-content:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\theight:15px;\r\n\t\t\twidth:15px;\r\n\r\n\t\t\tborder-radius:20px;\r\n\t\t\tbackground:#666;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:1.1em;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\topacity:.7;\r\n\t\t\t}\r\n\r\n\t\t\t&.open{\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\t\tdisplay:initial;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-open{\r\n\t\t\t\t\tdisplay:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\tdisplay:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-traffic-light{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\theight:14px;\r\n\t\t\twidth:14px;\r\n\r\n\t\t\tborder-radius:14px;\r\n\t\t}\r\n\t}\r\n\r\n\t//row grouping element\r\n\t&.tabulator-group{\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tborder-top:1px solid #000;\r\n\t\tborder-bottom:2px solid $headerSeperatorColor;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:$headerBackgroundColor;\r\n\t\tcolor:$headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-visible{\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\tpadding-left:30px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\tpadding-left:50px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\tpadding-left:70px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\tpadding-left:90px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\tpadding-left:110px;\r\n\t\t}\r\n\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:$headerSeperatorColor;\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n.tabulator-edit-select-list{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tmax-height:200px;\r\n\r\n\tbackground:$rowBackgroundColor;\r\n\tborder:1px solid $rowBorderColor;\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-edit-select-list-item{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\r\n\t\t&.active{\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-group{\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\tpadding:4px;\r\n\t\tpadding-top:6px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\tfont-weight:bold;\r\n\t}\r\n}\r\n\r\n// Table print styling\r\n\r\n.tabulator-print-fullscreen{\r\n\tposition: absolute;\r\n\ttop:0;\r\n\tbottom:0;\r\n\tleft:0;\r\n\tright:0;\r\n\r\n\tz-index: 10000;\r\n}\r\n\r\nbody.tabulator-print-fullscreen-hide>*:not(.tabulator-print-fullscreen){\r\n\tdisplay:none !important;\r\n}\r\n\r\n.tabulator-print-table{\r\n\tborder-collapse: collapse;\r\n}\r\n\r\n"]}
\ No newline at end of file
+{"version":3,"sources":["tabulator_site.scss"],"names":[],"mappings":"AAyCA,WACC,kBAAkB,AAElB,6BAvCgB,AAyChB,sBA1CqB,AA4CrB,eA1Ca,AA2Cb,gBAAgB,AAChB,gBAAe,AAMf,uBAAwB,CA8fxB,AA7gBD,iFAoBI,cAAc,CACd,AArBJ,oFA6BK,iBAAkB,CAClB,AA9BL,kCAqCE,yBAAiB,AAAjB,sBAAiB,AAAjB,qBAAiB,AAAjB,gBAAiB,CACjB,AAtCF,6BA0CE,kBAAiB,AACjB,sBAAsB,AAEtB,WAAU,AAEV,gCA5E2B,AA6E3B,sBAhFyB,AAiFzB,WAhFmB,AAiFnB,gBAAgB,AAEhB,mBAAmB,AACnB,gBAAe,AAEf,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAkPpB,AA5SF,qDA6DG,YAAY,CACZ,AA9DH,4CAkEG,qBAAoB,AAEpB,kBAAiB,AACjB,sBAAqB,AACrB,4BApGoB,AAqGpB,sBAvGwB,AAwGxB,gBAAe,AACf,sBAAsB,AACtB,eAAgB,CAoLhB,AA9PH,6DA6EI,kBAAkB,AAClB,yBA3GyB,AA4GzB,mBAA8C,AAC9C,mBAAoB,CACpB,AAjFJ,mEAqFI,sBAAqB,AACrB,kBAAkB,AAClB,WAAW,CAsCX,AA7HJ,wFA2FK,sBAAqB,AACrB,WAAW,AAEX,mBAAmB,AACnB,gBAAgB,AAChB,uBAAuB,AACvB,qBAAqB,CAarB,AA9GL,gHAqGM,sBAAsB,AACtB,WAAW,AAEX,sBAAqB,AAErB,YAAW,AAEX,eAAgB,CAChB,AA7GN,oFAkHK,qBAAqB,AACrB,kBAAkB,AAClB,SAAQ,AACR,UAAS,AACT,QAAQ,AACR,SAAS,AACT,kCAAkC,AAClC,mCAAmC,AACnC,4BAlJmB,CAmJnB,AA3HL,0FAoIK,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AAEb,0BArKkB,AAsKlB,eAAgB,CAKhB,AA7IL,oHA2IM,iBAAiB,CACjB,AA5IN,0FAmJK,YAAa,CACb,AApJL,+DAyJI,kBAAkB,AAClB,gCAAmD,AACnD,qBAzLmB,CA0LnB,AA5JJ,qEAgKI,kBAAkB,AAClB,sBAAsB,AACtB,eAAc,AACd,WAAU,AACV,iBAAkB,CAiBlB,AArLJ,8EAwKK,qBAAsB,CACtB,AAzKL,yEA4KK,cAAe,CACf,AA7KL,sFAiLO,QAAS,AACT,QAAS,CACV,AAnLN,oFA0LK,kBAAkB,CAClB,AA3LL,qEA8LK,eAAc,AACd,wBAAoD,CACpD,AAhML,uHAoMM,gBAAgB,AAChB,4BA7NkB,CA8NlB,AAtMN,sHA2MM,gBAAgB,AAChB,+BArOmB,CAsOnB,AA7MN,uHAkNM,6BA3OmB,AA4OnB,kBAAmB,CACnB,AApNN,+GA2NM,uBAAyB,AAAzB,yBAAyB,AACzB,uBAAuB,AAEvB,oBAAY,AAAZ,aAAY,AACZ,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,sBAAsB,CACtB,AAjON,oHAsOM,wBAAyB,CACzB,AAvON,2GA4OM,gBAAe,AACf,gBAAgB,CAChB,AA9ON,uIAkPO,gBAAe,AACf,mBAAmB,CACnB,AApPP,uGAyPM,qBAAqB,CACrB,AA1PN,+CAiQG,qBAAqB,AACrB,kBAAkB,AAIlB,UAAW,CASX,AA/QH,qEAyQI,2BA5RgB,CA6RhB,AA1QJ,sEA6QI,0BAhSgB,CAiShB,AA9QJ,qDAkRG,sBAAqB,AACrB,eAAc,AAEd,6BAA0D,AAU1D,0BAlTiB,AAqTjB,eAAgB,CAChB,AAnSH,oEAwRI,4BAA0D,CAK1D,AA7RJ,iGA2RK,YAAa,CACb,AA5RL,2DAsSG,cAAc,CAKd,AA3SH,iEAySI,YAAa,CACb,AA1SJ,kCAgTE,kBAAiB,AACjB,WAAU,AACV,mBAAmB,AACnB,cAAa,AACb,gCAAiC,CAkDjC,AAtWF,wCAuTG,YAAa,CACb,AAxTH,yDA4TG,sBAAqB,AACrB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AASlB,UAAU,CAYV,AAnVH,wFAiUI,kBAAkB,AAClB,MAAK,AACL,OAAM,AACN,WAAW,CACX,AArUJ,8DA0UI,qBAAqB,AAErB,cAAa,AACb,aAAY,AAEZ,cA5WyB,AA6WzB,gBAAiB,AACjB,cAAe,CACf,AAlVJ,mDAuVG,kBAAiB,AACjB,qBAAoB,AACpB,sBA9WqB,AA+WrB,mBAAmB,AACnB,iBAAgB,AAChB,UA9We,CAuXf,AArWH,kFAgWK,gBAAiB,AACjB,6BAA0D,AAC1D,UAjYgB,CAkYhB,AAnWL,6BA2WE,iBAAgB,AAChB,gBAAe,AACf,6BAlX2B,AAmX3B,sBAtXyB,AAuXzB,iBAAgB,AAChB,WAvXmB,AAwXnB,gBAAgB,AAChB,mBAAkB,AAClB,qBAAgB,AAAhB,iBAAgB,AAEhB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAuFpB,AA/cF,qDA2XG,sBAAqB,AACrB,wBAAuB,AACvB,sBAA2B,AAE3B,gBAAgB,AAEhB,6BAA0D,AAY1D,6BAhaiB,AAkajB,eAAgB,CAMhB,AArZH,oEAoYI,6BAA0D,AAC1D,oBAAiC,CAKjC,AA1YJ,iGAwYK,YAAa,CACb,AAzYL,gEAkZI,mBAAkB,AAClB,kBAAkB,CAClB,AApZJ,wDA0ZI,UAAU,CACV,AA3ZJ,kDAgaG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBA3aoB,AA4apB,iBAAiB,CACjB,AAvaH,8CA2aG,YAAY,CACZ,AA5aH,6CAgbG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBA3boB,AA4bpB,kBAAiB,AAEjB,gBAAe,AAEf,WAjckB,AAkclB,oBAAmB,AACnB,oBAAmB,AACnB,iBAAiB,CAiBjB,AA9cH,oDAgcI,aArcyB,CAsczB,AAjcJ,sDAocI,UAAU,CACV,AArcJ,kEAycK,eAAc,AACd,0BAAyB,AACzB,UAAU,CACV,AA5cL,wCAmdE,kBAAiB,AACjB,QAAO,AACP,MAAK,AACL,SAAQ,AACR,SAAS,CAUT,AAjeF,6CA0dG,OAAM,AACN,UAAU,CACV,AA5dH,8CA+dG,gBAAgB,CAChB,AAheH,6BAseE,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AAElB,MAAK,AACL,OAAM,AACN,YAAW,AAEX,YAAW,AACX,WAAU,AACV,0BAAyB,AACzB,iBAAiB,CA2BjB,AA5gBF,mDAqfG,qBAAoB,AAEpB,cAAa,AACb,kBAAiB,AAEjB,mBAAkB,AAElB,gBAAe,AACf,gBAAgB,AAChB,cAAc,CAad,AA3gBH,qEAkgBI,sBAAqB,AACrB,UAAU,CACV,AApgBJ,mEAwgBI,sBAAqB,AACrB,aAAa,CACb,AAMJ,eACC,kBAAkB,AAClB,sBAAsB,AACtB,gBAA0C,AAC1C,qBAziBuB,CAy5BvB,AApXD,kCAQE,wBA5iB4B,CA6iB5B,AATF,0CAYE,sBA7iBsB,AA8iBtB,cAAe,CACf,AAdF,kCAiBE,wBAhjB6B,CAijB7B,AAlBF,wCAqBE,yBAnjBkC,AAojBlC,cAAe,CACf,AAvBF,oCA0BE,sBAAqB,AACrB,eAAe,CACf,AA5BF,gCA+BE,kBAAkB,AAElB,0BApkBkB,AAqkBlB,6BArkBkB,AAukBlB,8BAA+B,AAC/B,UAAU,CACV,AAtCF,4CA0CE,kBAAiB,AACjB,QAAO,AACP,SAAQ,AACR,OAAM,AACN,UAAU,CAUV,AAxDF,iDAiDG,MAAK,AACL,WAAW,CACX,AAnDH,kDAsDG,gBAAgB,CAChB,AAvDH,iCA2DE,qBAAqB,AACrB,kBAAkB,AAElB,yBAAyB,AAEzB,UAAW,CASX,AAzEF,uDAmEG,2BAtmBiB,CAumBjB,AApEH,wDAuEG,0BA1mBiB,CA2mBjB,AAxEH,8CA4EE,sBAAqB,AAErB,YAAW,AAEX,0BAnnBkB,AAonBlB,4BApnBkB,CAuoBlB,AApGF,oDAoFG,YAAY,CACZ,AArFH,oDAwFG,cA3oBW,CAspBX,AAnGH,0DA4FK,iBAAkB,CAKlB,AAjGL,wEA+FM,kBAAkB,CAClB,AAhGN,+BAwGE,qBAAoB,AACpB,kBAAkB,AAClB,sBAAqB,AACrB,YAAW,AACX,4BA/oBkB,AAgpBlB,sBAAqB,AACrB,mBAAkB,AAClB,gBAAe,AACf,sBAAsB,CA0LtB,AA1SF,iDAoHG,yBAhpBkB,AAipBlB,SAAU,CAMV,AA3HH,+GAwHI,WAAU,AACV,sBAAsB,CACtB,AA1HJ,yDA8HG,qBAzpBgB,CAgqBhB,AArIH,+HAgII,WAAU,AACV,uBAAsB,AAEtB,UA9pBe,CA+pBf,AApIJ,6EA0II,YAAa,CACb,AA3IJ,oDAiJG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAElB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAcpB,AArKH,8EA2JI,SAAS,CAST,AApKJ,wGA+JK,WAAU,AACV,WAAU,AACV,eAAc,AACd,kBA3sBoB,CA4sBpB,AAnKL,2DAwKG,qBAAoB,AACpB,sBAAqB,AAErB,WAAU,AACV,UAAS,AAET,gBAAe,AACf,iBAAgB,AAEhB,8BAA6B,AAE7B,2BAttBiB,AAutBjB,4BAvtBiB,CAwtBjB,AArLH,4DAyLG,2BAAmB,AAAnB,oBAAmB,AACnB,qBAAsB,AAAtB,uBAAsB,AACtB,sBAAkB,AAAlB,mBAAkB,AAClB,sBAAqB,AAErB,YAAW,AACX,WAAU,AAEV,iBAAgB,AAEhB,sBAruBe,AAsuBf,kBAAiB,AACjB,0BAA4B,AAE5B,eAAe,CAmDf,AA1PH,kEA0MI,eAAc,AACd,yBAA4B,CAC5B,AA5MJ,kGA+MI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,sBAAuB,CAavB,AAlOJ,wGAwNK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAlwBa,CAmwBb,AAjOL,gGAqOI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,eA7wBc,CA0xBd,AAxPJ,sGA8OK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAxxBa,CAyxBb,AAvPL,qEA6PG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,uBAAsB,AAEtB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,oBAAoB,AAEpB,YAAW,AACX,WAAU,AAEV,mBAAkB,AAClB,gBAAe,AAEf,WAjzBqB,AAkzBrB,gBAAgB,AAChB,eAAe,CAmBf,AAjSH,2EAiRI,UAAU,CACV,AAlRJ,sHAsRK,eAAe,CACf,AAvRL,sOA+RI,YAAY,CACZ,AAhSJ,wDAoSG,qBAAqB,AACrB,YAAW,AACX,WAAU,AAEV,kBAAkB,CAClB,AAzSH,+BA8SE,sBAAqB,AACrB,4BAl1BkB,AAm1BlB,0BAAyB,AACzB,gCA91B2B,AA+1B3B,YAAW,AACX,kBAAiB,AACjB,gBAp2ByB,AAq2BzB,WAp2BmB,AAq2BnB,gBAAgB,AAEhB,cAAe,CA0Df,AAlXF,qCA2TG,eAAc,AACd,wBAAoD,CACpD,AA7TH,wEAiUI,kBAAiB,AACjB,kCAAkC,AAClC,mCAAmC,AACnC,6BA72BqB,AA82BrB,eAAgB,CAChB,AAtUJ,uDA0UG,iBAAiB,CACjB,AA3UH,uDA8UG,iBAAiB,CACjB,AA/UH,uDAkVG,iBAAiB,CACjB,AAnVH,uDAsVG,iBAAiB,CACjB,AAvVH,uDA0VG,kBAAkB,CAClB,AA3VH,uDA8VG,oBAAqB,CACrB,AA/VH,gDAmWG,qBAAqB,AACrB,QAAQ,AACR,SAAS,AACT,kBAAiB,AACjB,iCAAiC,AACjC,oCAAoC,AACpC,eAAe,AACf,8BAn5BsB,AAo5BtB,qBAAqB,CACrB,AA5WH,oCA+WG,iBAAgB,AAChB,aA75B0B,CA85B1B,AAKH,4BACC,kBAAkB,AAClB,qBAAoB,AACpB,sBAAqB,AAErB,iBAAgB,AAEhB,gBAl6BuB,AAm6BvB,sBAj6BmB,AAm6BnB,eAn7Ba,AAq7Bb,gBAAe,AACf,iCAAiC,AAEjC,aAAc,CA6Bd,AA5CD,6DAkBE,YAAW,AAEX,UA56BgB,CAy7BhB,AAjCF,oEAuBG,WAl7BqB,AAm7BrB,kBA16BkB,CA26BlB,AAzBH,mEA4BG,eAAc,AAEd,WAz7BqB,AA07BrB,kBAj7BkB,CAk7BlB,AAhCH,8DAoCE,6BA77BkB,AA+7BlB,YAAW,AACX,gBAAe,AAEf,WAj8BgB,AAk8BhB,eAAgB,CAChB,AAKF,4BACC,kBAAkB,AAClB,MAAK,AACL,SAAQ,AACR,OAAM,AACN,QAAO,AAEP,aAAc,CACd,AAED,uEACC,sBAAuB,CACvB,AAED,uBACC,wBAAyB,CACzB","file":"tabulator_site.min.css","sourcesContent":["/* Tabulator v4.5.1 (c) Oliver Folkerd */\n\n\r\n//Main Theme Variables\r\n$backgroundColor: #fff !default; //background color of tabulator\r\n$borderColor:#222 !default; //border to tabulator\r\n$textSize:14px !default; //table text size\r\n\r\n//header themeing\r\n$headerBackgroundColor:#222 !default; //border to tabulator\r\n$headerTextColor:#fff !default; //header text colour\r\n$headerBorderColor:#aaa !default;  //header border color\r\n$headerSeperatorColor:#3FB449 !default; //header bottom seperator color\r\n$headerMargin:4px !default; //padding round header\r\n\r\n//column header arrows\r\n$sortArrowActive: #3FB449 !default;\r\n$sortArrowInactive: #bbb !default;\r\n\r\n//row themeing\r\n$rowBackgroundColor:#fff !default; //table row background color\r\n$rowAltBackgroundColor:#EFEFEF !default; //table row background color\r\n$rowBorderColor:#aaa !default; //table border color\r\n$rowTextColor:#333 !default; //table text color\r\n$rowHoverBackground:#bbb !default; //row background color on hover\r\n\r\n$rowSelectedBackground: #9ABCEA !default; //row background color when selected\r\n$rowSelectedBackgroundHover: #769BCC !default;//row background color when selected and hovered\r\n\r\n$editBoxColor:#1D68CD !default; //border color for edit boxes\r\n$errorColor:#dd0000 !default; //error indication\r\n\r\n//footer themeing\r\n$footerBackgroundColor:#222 !default; //border to tabulator\r\n$footerTextColor:#222 !default; //footer text colour\r\n$footerBorderColor:#aaa !default; //footer border color\r\n$footerSeperatorColor:#3FB449 !default; //footer bottom seperator color\r\n$footerActiveColor:$footerSeperatorColor !default; //footer bottom active text color\r\n\r\n\r\n//Tabulator Containing Element\r\n.tabulator{\r\n\tposition: relative;\r\n\r\n\tborder-bottom: 5px solid $borderColor;\r\n\r\n\tbackground-color: $backgroundColor;\r\n\r\n\tfont-size:$textSize;\r\n\ttext-align: left;\r\n\toverflow:hidden;\r\n\r\n\t-webkit-transform: translatez(0);\r\n\t-moz-transform: translatez(0);\r\n\t-ms-transform: translatez(0);\r\n\t-o-transform: translatez(0);\r\n\ttransform: translatez(0);\r\n\r\n\t&[tabulator-layout=\"fitDataFill\"]{\r\n\t\t.tabulator-tableHolder{\r\n\t\t\t.tabulator-table{\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t&[tabulator-layout=\"fitColumns\"]{\r\n\t\t.tabulator-row{\r\n\t\t\t.tabulator-cell{\r\n\t\t\t\t&:last-of-type{\r\n\t\t\t\t\tborder-right: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t&.tabulator-block-select{\r\n\t\tuser-select: none;\r\n\t}\r\n\r\n\t//column header containing element\r\n\t.tabulator-header{\r\n\t\tposition:relative;\r\n\t\tbox-sizing: border-box;\r\n\r\n\t\twidth:100%;\r\n\r\n\t\tborder-bottom:3px solid $headerSeperatorColor;\r\n\t\tbackground-color: $headerBackgroundColor;\r\n\t\tcolor: $headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:hidden;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t&.tabulator-header-hidden{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\t//individual column header element\r\n\t\t.tabulator-col{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tposition:relative;\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tborder-right:1px solid $headerBorderColor;\r\n\t\t\tbackground-color: $headerBackgroundColor;\r\n\t\t\ttext-align:left;\r\n\t\t\tvertical-align: bottom;\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&.tabulator-moving{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tborder:1px solid  $headerSeperatorColor;\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 10%);\r\n\t\t\t\tpointer-events: none;\r\n\t\t\t}\r\n\r\n\t\t\t//hold content of column header\r\n\t\t\t.tabulator-col-content{\r\n\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tpadding:8px;\r\n\r\n\t\t\t\t//hold title of column header\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\twhite-space: nowrap;\r\n\t\t\t\t\toverflow: hidden;\r\n\t\t\t\t\ttext-overflow: ellipsis;\r\n\t\t\t\t\tvertical-align:bottom;\r\n\r\n\t\t\t\t\t//element to hold title editor\r\n\t\t\t\t\t.tabulator-title-editor{\r\n\t\t\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\t\tborder:1px solid #999;\r\n\r\n\t\t\t\t\t\tpadding:1px;\r\n\r\n\t\t\t\t\t\tbackground: #fff;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//column sorter arrow\r\n\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\tdisplay: inline-block;\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\ttop:14px;\r\n\t\t\t\t\tright:8px;\r\n\t\t\t\t\twidth: 0;\r\n\t\t\t\t\theight: 0;\r\n\t\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t//complex header column group\r\n\t\t\t&.tabulator-col-group{\r\n\r\n\t\t\t\t//gelement to hold sub columns in column group\r\n\t\t\t\t.tabulator-col-group-cols{\r\n\t\t\t\t\tposition:relative;\r\n\t\t\t\t\tdisplay: flex;\r\n\r\n\t\t\t\t\tborder-top:1px solid $headerBorderColor;\r\n\t\t\t\t\toverflow: hidden;\r\n\r\n\t\t\t\t\t.tabulator-col:last-child{\r\n\t\t\t\t\t\tmargin-right:-1px;\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//hide left resize handle on first column\r\n\t\t\t&:first-child{\r\n\t\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//placeholder element for sortable columns\r\n\t\t\t&.ui-sortable-helper{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tbackground-color: $headerBackgroundColor !important;\r\n\t\t\t\tborder:1px solid $headerBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t//header filter containing element\r\n\t\t\t.tabulator-header-filter{\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\tmargin-top:2px;\r\n\t\t\t\twidth:100%;\r\n\t\t\t\ttext-align: center;\r\n\r\n\t\t\t\t//styling adjustment for inbuilt editors\r\n\t\t\t\ttextarea{\r\n\t\t\t\t\theight:auto !important;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsvg{\r\n\t\t\t\t\tmargin-top: 3px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinput{\r\n\t\t\t\t\t&::-ms-clear {\r\n\t\t\t\t\t  width : 0;\r\n\t\t\t\t\t  height: 0;\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//styling child elements for sortable columns\r\n\t\t\t&.tabulator-sortable{\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tpadding-right:25px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"none\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"asc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowActive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"desc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\t\t\tborder-bottom: none;\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&.tabulator-col-vertical{\r\n\t\t\t\t.tabulator-col-content{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\twriting-mode: vertical-rl;\r\n\t\t\t\t\t\ttext-orientation: mixed;\r\n\r\n\t\t\t\t\t\tdisplay:flex;\r\n\t\t\t\t\t\talign-items:center;\r\n\t\t\t\t\t\tjustify-content:center;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\ttransform: rotate(180deg);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-sortable{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\tpadding-top:20px;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\t\tpadding-bottom:20px;\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.tabulator-arrow{\r\n\t\t\t\t\t\tright:calc(50% - 6px);\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\t.tabulator-frozen{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\tposition: absolute;\r\n\r\n\t\t\t// background-color: inherit;\r\n\r\n\t\t\tz-index: 10;\r\n\r\n\t\t\t&.tabulator-frozen-left{\r\n\t\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-frozen-right{\r\n\t\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\tbackground:lighten($headerBackgroundColor, 10%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:lighten($headerBackgroundColor, 10%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\t\t\t// border-bottom:1px solid $headerBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen-rows-holder{\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\t&:empty{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//scrolling element to hold table\r\n\t.tabulator-tableHolder{\r\n\t\tposition:relative;\r\n\t\twidth:100%;\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:auto;\r\n\t\t-webkit-overflow-scrolling: touch;\r\n\r\n\t\t&:focus{\r\n\t\t\toutline: none;\r\n\t\t}\r\n\r\n\t\t//default placeholder element\r\n\t\t.tabulator-placeholder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t&[tabulator-render-mode=\"virtual\"]{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\ttop:0;\r\n\t\t\t\tleft:0;\r\n\t\t\t\theight:100%;\r\n\t\t\t}\r\n\r\n\t\t\twidth:100%;\r\n\r\n\t\t\tspan{\r\n\t\t\t\tdisplay: inline-block;\r\n\r\n\t\t\t\tmargin:0 auto;\r\n\t\t\t\tpadding:10px;\r\n\r\n\t\t\t\tcolor:$headerSeperatorColor;\r\n\t\t\t\tfont-weight: bold;\r\n\t\t\t\tfont-size: 20px;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//element to hold table rows\r\n\t\t.tabulator-table{\r\n\t\t\tposition:relative;\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tbackground-color:$rowBackgroundColor;\r\n\t\t\twhite-space: nowrap;\r\n\t\t\toverflow:visible;\r\n\t\t\tcolor:$rowTextColor;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\t&.tabulator-calcs{\r\n\t\t\t\t\tfont-weight: bold;\r\n\t\t\t\t\tbackground:lighten($headerBackgroundColor, 15%) !important;\r\n\t\t\t\t\tcolor:$headerTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//footer element\r\n\t.tabulator-footer{\r\n\t\tpadding:5px 10px;\r\n\t\tpadding-top:8px;\r\n\t\tborder-top:3px solid $footerSeperatorColor;\r\n\t\tbackground-color: $footerBackgroundColor;\r\n\t\ttext-align:right;\r\n\t\tcolor: $footerTextColor;\r\n\t\tfont-weight:bold;\r\n\t\twhite-space:nowrap;\r\n\t\tuser-select:none;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\twidth:calc(100% + 20px);\r\n\t\t\tmargin:-8px -10px 8px -10px;\r\n\r\n\t\t\ttext-align: left;\r\n\r\n\t\t\tbackground:lighten($footerBackgroundColor, 10%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:lighten($footerBackgroundColor, 10%) !important;\r\n\t\t\t\tcolor:$headerTextColor !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// border-top:1px solid $rowBorderColor;\r\n\t\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&:only-child{\r\n\t\t\t\tmargin-bottom:-5px;\r\n\t\t\t\tborder-bottom:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-paginator{\r\n\t\t\tlabel{\r\n\t\t\t\tcolor:#fff;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//page size select element\r\n\t\t.tabulator-page-size{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 5px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-pages{\r\n\t\t\tmargin:0 7px;\r\n\t\t}\r\n\r\n\t\t//pagination button\r\n\t\t.tabulator-page{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 2px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\r\n\t\t\tbackground:#fff;\r\n\r\n\t\t\tcolor: $footerTextColor;\r\n\t\t\tfont-family:inherit;\r\n\t\t\tfont-weight:inherit;\r\n\t\t\tfont-size:inherit;\r\n\r\n\t\t\t&.active{\r\n\t\t\t\tcolor:$footerActiveColor;\r\n\t\t\t}\r\n\r\n\t\t\t&:disabled{\r\n\t\t\t\topacity:.5;\r\n\t\t\t}\r\n\r\n\t\t\t&:not(.disabled){\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground:rgba(0,0,0,.2);\r\n\t\t\t\t\tcolor:#fff;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//column resize handles\r\n\t.tabulator-col-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\ttop:0;\r\n\t\tbottom:0;\r\n\t\twidth:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\tleft:0;\r\n\t\t\tright:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ew-resize;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//holding div that contains loader and covers tabulator element to prevent interaction\r\n\t.tabulator-loader{\r\n\t\tposition:absolute;\r\n\t\tdisplay: flex;\r\n\t\talign-items:center;\r\n\r\n\t\ttop:0;\r\n\t\tleft:0;\r\n\t\tz-index:100;\r\n\r\n\t\theight:100%;\r\n\t\twidth:100%;\r\n\t\tbackground:rgba(0,0,0,.4);\r\n\t\ttext-align:center;\r\n\r\n\t\t//loading message element\r\n\t\t.tabulator-loader-msg{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 auto;\r\n\t\t\tpadding:10px 20px;\r\n\r\n\t\t\tborder-radius:10px;\r\n\r\n\t\t\tbackground:#fff;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:16px;\r\n\r\n\t\t\t//loading message\r\n\t\t\t&.tabulator-loading{\r\n\t\t\t\tborder:4px solid #333;\r\n\t\t\t\tcolor:#000;\r\n\t\t\t}\r\n\r\n\t\t\t//error message\r\n\t\t\t&.tabulator-error{\r\n\t\t\t\tborder:4px solid #D00;\r\n\t\t\t\tcolor:#590000;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n//row element\r\n.tabulator-row{\r\n\tposition: relative;\r\n\tbox-sizing: border-box;\r\n\tmin-height:$textSize + ($headerMargin * 2);\r\n\tbackground-color: $rowBackgroundColor;\r\n\r\n\r\n\t&.tabulator-row-even{\r\n\t\tbackground-color: $rowAltBackgroundColor;\r\n\t}\r\n\r\n\t&.tabulator-selectable:hover{\r\n\t\tbackground-color:$rowHoverBackground;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-selected{\r\n\t\tbackground-color:$rowSelectedBackground;\r\n\t}\r\n\r\n\t&.tabulator-selected:hover{\r\n\t\tbackground-color:$rowSelectedBackgroundHover;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-row-moving{\r\n\t\tborder:1px solid #000;\r\n\t\tbackground:#fff;\r\n\t}\r\n\r\n\t&.tabulator-moving{\r\n\t\tposition: absolute;\r\n\r\n\t\tborder-top:1px solid  $rowBorderColor;\r\n\t\tborder-bottom:1px solid  $rowBorderColor;\r\n\r\n\t\tpointer-events: none !important;\r\n\t\tz-index:15;\r\n\t}\r\n\r\n\t//row resize handles\r\n\t.tabulator-row-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\tbottom:0;\r\n\t\tleft:0;\r\n\t\theight:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\ttop:0;\r\n\t\t\tbottom:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ns-resize;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-frozen{\r\n\t\tdisplay: inline-block;\r\n\t\tposition: absolute;\r\n\r\n\t\tbackground-color: inherit;\r\n\r\n\t\tz-index: 10;\r\n\r\n\t\t&.tabulator-frozen-left{\r\n\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t&.tabulator-frozen-right{\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-responsive-collapse{\r\n\t\tbox-sizing:border-box;\r\n\r\n\t\tpadding:5px;\r\n\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\t&:empty{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\ttable{\r\n\t\t\tfont-size:$textSize;\r\n\r\n\t\t\ttr{\r\n\t\t\t\ttd{\r\n\t\t\t\t\tposition: relative;\r\n\r\n\t\t\t\t\t&:first-of-type{\r\n\t\t\t\t\t\tpadding-right:10px;\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//cell element\r\n\t.tabulator-cell{\r\n\t\tdisplay:inline-block;\r\n\t\tposition: relative;\r\n\t\tbox-sizing:border-box;\r\n\t\tpadding:6px;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tvertical-align:middle;\r\n\t\twhite-space:nowrap;\r\n\t\toverflow:hidden;\r\n\t\ttext-overflow:ellipsis;\r\n\r\n\r\n\t\t&.tabulator-editing{\r\n\t\t\tborder:1px solid  $editBoxColor;\r\n\t\t\tpadding: 0;\r\n\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-validation-fail{\r\n\t\t\tborder:1px solid $errorColor;\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\r\n\t\t\t\tcolor: $errorColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//hide left resize handle on first column\r\n\t\t&:first-child{\r\n\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//movable row handle\r\n\t\t&.tabulator-row-handle{\r\n\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\t//handle holder\r\n\t\t\t.tabulator-row-handle-box{\r\n\t\t\t\twidth:80%;\r\n\r\n\t\t\t\t//Hamburger element\r\n\t\t\t\t.tabulator-row-handle-bar{\r\n\t\t\t\t\twidth:100%;\r\n\t\t\t\t\theight:3px;\r\n\t\t\t\t\tmargin-top:2px;\r\n\t\t\t\t\tbackground:$sortArrowActive;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-branch{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:9px;\r\n\t\t\twidth:7px;\r\n\r\n\t\t\tmargin-top:-9px;\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control{\r\n\r\n\t\t\tdisplay:inline-flex;\r\n\t\t\tjustify-content:center;\r\n\t\t\talign-items:center;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:11px;\r\n\t\t\twidth:11px;\r\n\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder:1px solid $rowTextColor;\r\n\t\t\tborder-radius:2px;\r\n\t\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\t\toverflow:hidden;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\tcursor:pointer;\r\n\t\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: transparent;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-expand{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-responsive-collapse-toggle{\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\t\t\tjustify-content:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\theight:15px;\r\n\t\t\twidth:15px;\r\n\r\n\t\t\tborder-radius:20px;\r\n\t\t\tbackground:#666;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:1.1em;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\topacity:.7;\r\n\t\t\t}\r\n\r\n\t\t\t&.open{\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\t\tdisplay:initial;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-open{\r\n\t\t\t\t\tdisplay:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\tdisplay:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-traffic-light{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\theight:14px;\r\n\t\t\twidth:14px;\r\n\r\n\t\t\tborder-radius:14px;\r\n\t\t}\r\n\t}\r\n\r\n\t//row grouping element\r\n\t&.tabulator-group{\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tborder-top:1px solid #000;\r\n\t\tborder-bottom:2px solid $headerSeperatorColor;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:$headerBackgroundColor;\r\n\t\tcolor:$headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-visible{\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\tpadding-left:30px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\tpadding-left:50px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\tpadding-left:70px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\tpadding-left:90px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\tpadding-left:110px;\r\n\t\t}\r\n\r\n\t\t.tabulator-group-toggle{\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:$headerSeperatorColor;\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n.tabulator-edit-select-list{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tmax-height:200px;\r\n\r\n\tbackground:$rowBackgroundColor;\r\n\tborder:1px solid $rowBorderColor;\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-edit-select-list-item{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\r\n\t\t&.active{\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-group{\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\tpadding:4px;\r\n\t\tpadding-top:6px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\tfont-weight:bold;\r\n\t}\r\n}\r\n\r\n// Table print styling\r\n\r\n.tabulator-print-fullscreen{\r\n\tposition: absolute;\r\n\ttop:0;\r\n\tbottom:0;\r\n\tleft:0;\r\n\tright:0;\r\n\r\n\tz-index: 10000;\r\n}\r\n\r\nbody.tabulator-print-fullscreen-hide>*:not(.tabulator-print-fullscreen){\r\n\tdisplay:none !important;\r\n}\r\n\r\n.tabulator-print-table{\r\n\tborder-collapse: collapse;\r\n}\r\n\r\n"]}
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/accessor.js b/backoffice/vendors/tabulator/js.old/modules/accessor.js
new file mode 100644 (file)
index 0000000..b174a5c
--- /dev/null
@@ -0,0 +1,91 @@
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+
+var Accessor = function Accessor(table) {
+       this.table = table; //hold Tabulator object
+       this.allowedTypes = ["", "data", "download", "clipboard"]; //list of accessor types
+};
+
+//initialize column accessor
+Accessor.prototype.initializeColumn = function (column) {
+       var self = this,
+           match = false,
+           config = {};
+
+       this.allowedTypes.forEach(function (type) {
+               var key = "accessor" + (type.charAt(0).toUpperCase() + type.slice(1)),
+                   accessor;
+
+               if (column.definition[key]) {
+                       accessor = self.lookupAccessor(column.definition[key]);
+
+                       if (accessor) {
+                               match = true;
+
+                               config[key] = {
+                                       accessor: accessor,
+                                       params: column.definition[key + "Params"] || {}
+                               };
+                       }
+               }
+       });
+
+       if (match) {
+               column.modules.accessor = config;
+       }
+}, Accessor.prototype.lookupAccessor = function (value) {
+       var accessor = false;
+
+       //set column accessor
+       switch (typeof value === "undefined" ? "undefined" : _typeof(value)) {
+               case "string":
+                       if (this.accessors[value]) {
+                               accessor = this.accessors[value];
+                       } else {
+                               console.warn("Accessor Error - No such accessor found, ignoring: ", value);
+                       }
+                       break;
+
+               case "function":
+                       accessor = value;
+                       break;
+       }
+
+       return accessor;
+};
+
+//apply accessor to row
+Accessor.prototype.transformRow = function (dataIn, type) {
+       var self = this,
+           key = "accessor" + (type.charAt(0).toUpperCase() + type.slice(1));
+
+       //clone data object with deep copy to isolate internal data from returned result
+       var data = Tabulator.prototype.helpers.deepClone(dataIn || {});
+
+       self.table.columnManager.traverse(function (column) {
+               var value, accessor, params, component;
+
+               if (column.modules.accessor) {
+
+                       accessor = column.modules.accessor[key] || column.modules.accessor.accessor || false;
+
+                       if (accessor) {
+                               value = column.getFieldValue(data);
+
+                               if (value != "undefined") {
+                                       component = column.getComponent();
+                                       params = typeof accessor.params === "function" ? accessor.params(value, data, type, component) : accessor.params;
+                                       column.setFieldValue(data, accessor.accessor(value, data, type, params, component));
+                               }
+                       }
+               }
+       });
+
+       return data;
+},
+
+//default accessors
+Accessor.prototype.accessors = {};
+
+Tabulator.prototype.registerModule("accessor", Accessor);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/accessor.min.js b/backoffice/vendors/tabulator/js.old/modules/accessor.min.js
new file mode 100644 (file)
index 0000000..4fc25aa
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},Accessor=function(o){this.table=o,this.allowedTypes=["","data","download","clipboard"]};Accessor.prototype.initializeColumn=function(o){var e=this,s=!1,r={};this.allowedTypes.forEach(function(c){var t,a="accessor"+(c.charAt(0).toUpperCase()+c.slice(1));o.definition[a]&&(t=e.lookupAccessor(o.definition[a]))&&(s=!0,r[a]={accessor:t,params:o.definition[a+"Params"]||{}})}),s&&(o.modules.accessor=r)},Accessor.prototype.lookupAccessor=function(o){var e=!1;switch(void 0===o?"undefined":_typeof(o)){case"string":this.accessors[o]?e=this.accessors[o]:console.warn("Accessor Error - No such accessor found, ignoring: ",o);break;case"function":e=o}return e},Accessor.prototype.transformRow=function(o,e){var s=this,r="accessor"+(e.charAt(0).toUpperCase()+e.slice(1)),c=Tabulator.prototype.helpers.deepClone(o||{});return s.table.columnManager.traverse(function(o){var s,t,a,n;o.modules.accessor&&(t=o.modules.accessor[r]||o.modules.accessor.accessor||!1)&&"undefined"!=(s=o.getFieldValue(c))&&(n=o.getComponent(),a="function"==typeof t.params?t.params(s,c,e,n):t.params,o.setFieldValue(c,t.accessor(s,c,e,a,n)))}),c},Accessor.prototype.accessors={},Tabulator.prototype.registerModule("accessor",Accessor);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/ajax.js b/backoffice/vendors/tabulator/js.old/modules/ajax.js
new file mode 100644 (file)
index 0000000..afd9deb
--- /dev/null
@@ -0,0 +1,465 @@
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+
+var Ajax = function Ajax(table) {
+
+       this.table = table; //hold Tabulator object
+       this.config = false; //hold config object for ajax request
+       this.url = ""; //request URL
+       this.urlGenerator = false;
+       this.params = false; //request parameters
+
+       this.loaderElement = this.createLoaderElement(); //loader message div
+       this.msgElement = this.createMsgElement(); //message element
+       this.loadingElement = false;
+       this.errorElement = false;
+       this.loaderPromise = false;
+
+       this.progressiveLoad = false;
+       this.loading = false;
+
+       this.requestOrder = 0; //prevent requests comming out of sequence if overridden by another load request
+};
+
+//initialize setup options
+Ajax.prototype.initialize = function () {
+       var template;
+
+       this.loaderElement.appendChild(this.msgElement);
+
+       if (this.table.options.ajaxLoaderLoading) {
+               if (typeof this.table.options.ajaxLoaderLoading == "string") {
+                       template = document.createElement('template');
+                       template.innerHTML = this.table.options.ajaxLoaderLoading.trim();
+                       this.loadingElement = template.content.firstChild;
+               } else {
+                       this.loadingElement = this.table.options.ajaxLoaderLoading;
+               }
+       }
+
+       this.loaderPromise = this.table.options.ajaxRequestFunc || this.defaultLoaderPromise;
+
+       this.urlGenerator = this.table.options.ajaxURLGenerator || this.defaultURLGenerator;
+
+       if (this.table.options.ajaxLoaderError) {
+               if (typeof this.table.options.ajaxLoaderError == "string") {
+                       template = document.createElement('template');
+                       template.innerHTML = this.table.options.ajaxLoaderError.trim();
+                       this.errorElement = template.content.firstChild;
+               } else {
+                       this.errorElement = this.table.options.ajaxLoaderError;
+               }
+       }
+
+       if (this.table.options.ajaxParams) {
+               this.setParams(this.table.options.ajaxParams);
+       }
+
+       if (this.table.options.ajaxConfig) {
+               this.setConfig(this.table.options.ajaxConfig);
+       }
+
+       if (this.table.options.ajaxURL) {
+               this.setUrl(this.table.options.ajaxURL);
+       }
+
+       if (this.table.options.ajaxProgressiveLoad) {
+               if (this.table.options.pagination) {
+                       this.progressiveLoad = false;
+                       console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time");
+               } else {
+                       if (this.table.modExists("page")) {
+                               this.progressiveLoad = this.table.options.ajaxProgressiveLoad;
+                               this.table.modules.page.initializeProgressive(this.progressiveLoad);
+                       } else {
+                               console.error("Pagination plugin is required for progressive ajax loading");
+                       }
+               }
+       }
+};
+
+Ajax.prototype.createLoaderElement = function () {
+       var el = document.createElement("div");
+       el.classList.add("tabulator-loader");
+       return el;
+};
+
+Ajax.prototype.createMsgElement = function () {
+       var el = document.createElement("div");
+
+       el.classList.add("tabulator-loader-msg");
+       el.setAttribute("role", "alert");
+
+       return el;
+};
+
+//set ajax params
+Ajax.prototype.setParams = function (params, update) {
+       if (update) {
+               this.params = this.params || {};
+
+               for (var key in params) {
+                       this.params[key] = params[key];
+               }
+       } else {
+               this.params = params;
+       }
+};
+
+Ajax.prototype.getParams = function () {
+       return this.params || {};
+};
+
+//load config object
+Ajax.prototype.setConfig = function (config) {
+       this._loadDefaultConfig();
+
+       if (typeof config == "string") {
+               this.config.method = config;
+       } else {
+               for (var key in config) {
+                       this.config[key] = config[key];
+               }
+       }
+};
+
+//create config object from default
+Ajax.prototype._loadDefaultConfig = function (force) {
+       var self = this;
+       if (!self.config || force) {
+
+               self.config = {};
+
+               //load base config from defaults
+               for (var key in self.defaultConfig) {
+                       self.config[key] = self.defaultConfig[key];
+               }
+       }
+};
+
+//set request url
+Ajax.prototype.setUrl = function (url) {
+       this.url = url;
+};
+
+//get request url
+Ajax.prototype.getUrl = function () {
+       return this.url;
+};
+
+//lstandard loading function
+Ajax.prototype.loadData = function (inPosition) {
+       var self = this;
+
+       if (this.progressiveLoad) {
+               return this._loadDataProgressive();
+       } else {
+               return this._loadDataStandard(inPosition);
+       }
+};
+
+Ajax.prototype.nextPage = function (diff) {
+       var margin;
+
+       if (!this.loading) {
+
+               margin = this.table.options.ajaxProgressiveLoadScrollMargin || this.table.rowManager.getElement().clientHeight * 2;
+
+               if (diff < margin) {
+                       this.table.modules.page.nextPage().then(function () {}).catch(function () {});
+               }
+       }
+};
+
+Ajax.prototype.blockActiveRequest = function () {
+       this.requestOrder++;
+};
+
+Ajax.prototype._loadDataProgressive = function () {
+       this.table.rowManager.setData([]);
+       return this.table.modules.page.setPage(1);
+};
+
+Ajax.prototype._loadDataStandard = function (inPosition) {
+       var _this = this;
+
+       return new Promise(function (resolve, reject) {
+               _this.sendRequest(inPosition).then(function (data) {
+                       _this.table.rowManager.setData(data, inPosition).then(function () {
+                               resolve();
+                       }).catch(function (e) {
+                               reject(e);
+                       });
+               }).catch(function (e) {
+                       reject(e);
+               });
+       });
+};
+
+Ajax.prototype.generateParamsList = function (data, prefix) {
+       var self = this,
+           output = [];
+
+       prefix = prefix || "";
+
+       if (Array.isArray(data)) {
+               data.forEach(function (item, i) {
+                       output = output.concat(self.generateParamsList(item, prefix ? prefix + "[" + i + "]" : i));
+               });
+       } else if ((typeof data === "undefined" ? "undefined" : _typeof(data)) === "object") {
+               for (var key in data) {
+                       output = output.concat(self.generateParamsList(data[key], prefix ? prefix + "[" + key + "]" : key));
+               }
+       } else {
+               output.push({ key: prefix, value: data });
+       }
+
+       return output;
+};
+
+Ajax.prototype.serializeParams = function (params) {
+       var output = this.generateParamsList(params),
+           encoded = [];
+
+       output.forEach(function (item) {
+               encoded.push(encodeURIComponent(item.key) + "=" + encodeURIComponent(item.value));
+       });
+
+       return encoded.join("&");
+};
+
+//send ajax request
+Ajax.prototype.sendRequest = function (silent) {
+       var _this2 = this;
+
+       var self = this,
+           url = self.url,
+           requestNo,
+           esc,
+           query;
+
+       self.requestOrder++;
+       requestNo = self.requestOrder;
+
+       self._loadDefaultConfig();
+
+       return new Promise(function (resolve, reject) {
+               if (self.table.options.ajaxRequesting.call(_this2.table, self.url, self.params) !== false) {
+
+                       self.loading = true;
+
+                       if (!silent) {
+                               self.showLoader();
+                       }
+
+                       _this2.loaderPromise(url, self.config, self.params).then(function (data) {
+                               if (requestNo === self.requestOrder) {
+                                       if (self.table.options.ajaxResponse) {
+                                               data = self.table.options.ajaxResponse.call(self.table, self.url, self.params, data);
+                                       }
+                                       resolve(data);
+                               } else {
+                                       console.warn("Ajax Response Blocked - An active ajax request was blocked by an attempt to change table data while the request was being made");
+                               }
+
+                               self.hideLoader();
+
+                               self.loading = false;
+                       }).catch(function (error) {
+                               console.error("Ajax Load Error: ", error);
+                               self.table.options.ajaxError.call(self.table, error);
+
+                               self.showError();
+
+                               setTimeout(function () {
+                                       self.hideLoader();
+                               }, 3000);
+
+                               self.loading = false;
+
+                               reject();
+                       });
+               } else {
+                       reject();
+               }
+       });
+};
+
+Ajax.prototype.showLoader = function () {
+       var shouldLoad = typeof this.table.options.ajaxLoader === "function" ? this.table.options.ajaxLoader() : this.table.options.ajaxLoader;
+
+       if (shouldLoad) {
+
+               this.hideLoader();
+
+               while (this.msgElement.firstChild) {
+                       this.msgElement.removeChild(this.msgElement.firstChild);
+               }this.msgElement.classList.remove("tabulator-error");
+               this.msgElement.classList.add("tabulator-loading");
+
+               if (this.loadingElement) {
+                       this.msgElement.appendChild(this.loadingElement);
+               } else {
+                       this.msgElement.innerHTML = this.table.modules.localize.getText("ajax|loading");
+               }
+
+               this.table.element.appendChild(this.loaderElement);
+       }
+};
+
+Ajax.prototype.showError = function () {
+       this.hideLoader();
+
+       while (this.msgElement.firstChild) {
+               this.msgElement.removeChild(this.msgElement.firstChild);
+       }this.msgElement.classList.remove("tabulator-loading");
+       this.msgElement.classList.add("tabulator-error");
+
+       if (this.errorElement) {
+               this.msgElement.appendChild(this.errorElement);
+       } else {
+               this.msgElement.innerHTML = this.table.modules.localize.getText("ajax|error");
+       }
+
+       this.table.element.appendChild(this.loaderElement);
+};
+
+Ajax.prototype.hideLoader = function () {
+       if (this.loaderElement.parentNode) {
+               this.loaderElement.parentNode.removeChild(this.loaderElement);
+       }
+};
+
+//default ajax config object
+Ajax.prototype.defaultConfig = {
+       method: "GET"
+};
+
+Ajax.prototype.defaultURLGenerator = function (url, config, params) {
+
+       if (url) {
+               if (params && Object.keys(params).length) {
+                       if (!config.method || config.method.toLowerCase() == "get") {
+                               config.method = "get";
+                               url += "?" + this.serializeParams(params);
+                       }
+               }
+       }
+
+       return url;
+};
+
+Ajax.prototype.defaultLoaderPromise = function (url, config, params) {
+       var self = this,
+           contentType;
+
+       return new Promise(function (resolve, reject) {
+
+               //set url
+               url = self.urlGenerator(url, config, params);
+
+               //set body content if not GET request
+               if (config.method.toUpperCase() != "GET") {
+                       contentType = _typeof(self.table.options.ajaxContentType) === "object" ? self.table.options.ajaxContentType : self.contentTypeFormatters[self.table.options.ajaxContentType];
+                       if (contentType) {
+
+                               for (var key in contentType.headers) {
+                                       if (!config.headers) {
+                                               config.headers = {};
+                                       }
+
+                                       if (typeof config.headers[key] === "undefined") {
+                                               config.headers[key] = contentType.headers[key];
+                                       }
+                               }
+
+                               config.body = contentType.body.call(self, url, config, params);
+                       } else {
+                               console.warn("Ajax Error - Invalid ajaxContentType value:", self.table.options.ajaxContentType);
+                       }
+               }
+
+               if (url) {
+
+                       //configure headers
+                       if (typeof config.headers === "undefined") {
+                               config.headers = {};
+                       }
+
+                       if (typeof config.headers.Accept === "undefined") {
+                               config.headers.Accept = "application/json";
+                       }
+
+                       if (typeof config.headers["X-Requested-With"] === "undefined") {
+                               config.headers["X-Requested-With"] = "XMLHttpRequest";
+                       }
+
+                       if (typeof config.mode === "undefined") {
+                               config.mode = "cors";
+                       }
+
+                       if (config.mode == "cors") {
+
+                               if (typeof config.headers["Access-Control-Allow-Origin"] === "undefined") {
+                                       config.headers["Access-Control-Allow-Origin"] = window.location.origin;
+                               }
+
+                               if (typeof config.credentials === "undefined") {
+                                       config.credentials = 'same-origin';
+                               }
+                       } else {
+                               if (typeof config.credentials === "undefined") {
+                                       config.credentials = 'include';
+                               }
+                       }
+
+                       //send request
+                       fetch(url, config).then(function (response) {
+                               if (response.ok) {
+                                       response.json().then(function (data) {
+                                               resolve(data);
+                                       }).catch(function (error) {
+                                               reject(error);
+                                               console.warn("Ajax Load Error - Invalid JSON returned", error);
+                                       });
+                               } else {
+                                       console.error("Ajax Load Error - Connection Error: " + response.status, response.statusText);
+                                       reject(response);
+                               }
+                       }).catch(function (error) {
+                               console.error("Ajax Load Error - Connection Error: ", error);
+                               reject(error);
+                       });
+               } else {
+                       console.warn("Ajax Load Error - No URL Set");
+                       resolve([]);
+               }
+       });
+};
+
+Ajax.prototype.contentTypeFormatters = {
+       "json": {
+               headers: {
+                       'Content-Type': 'application/json'
+               },
+               body: function body(url, config, params) {
+                       return JSON.stringify(params);
+               }
+       },
+       "form": {
+               headers: {},
+               body: function body(url, config, params) {
+                       var output = this.generateParamsList(params),
+                           form = new FormData();
+
+                       output.forEach(function (item) {
+                               form.append(item.key, item.value);
+                       });
+
+                       return form;
+               }
+       }
+};
+
+Tabulator.prototype.registerModule("ajax", Ajax);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/ajax.min.js b/backoffice/vendors/tabulator/js.old/modules/ajax.min.js
new file mode 100644 (file)
index 0000000..66a965f
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+var _typeof="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},Ajax=function(e){this.table=e,this.config=!1,this.url="",this.urlGenerator=!1,this.params=!1,this.loaderElement=this.createLoaderElement(),this.msgElement=this.createMsgElement(),this.loadingElement=!1,this.errorElement=!1,this.loaderPromise=!1,this.progressiveLoad=!1,this.loading=!1,this.requestOrder=0};Ajax.prototype.initialize=function(){var e;this.loaderElement.appendChild(this.msgElement),this.table.options.ajaxLoaderLoading&&("string"==typeof this.table.options.ajaxLoaderLoading?(e=document.createElement("template"),e.innerHTML=this.table.options.ajaxLoaderLoading.trim(),this.loadingElement=e.content.firstChild):this.loadingElement=this.table.options.ajaxLoaderLoading),this.loaderPromise=this.table.options.ajaxRequestFunc||this.defaultLoaderPromise,this.urlGenerator=this.table.options.ajaxURLGenerator||this.defaultURLGenerator,this.table.options.ajaxLoaderError&&("string"==typeof this.table.options.ajaxLoaderError?(e=document.createElement("template"),e.innerHTML=this.table.options.ajaxLoaderError.trim(),this.errorElement=e.content.firstChild):this.errorElement=this.table.options.ajaxLoaderError),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.table.options.ajaxProgressiveLoad&&(this.table.options.pagination?(this.progressiveLoad=!1,console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time")):this.table.modExists("page")?(this.progressiveLoad=this.table.options.ajaxProgressiveLoad,this.table.modules.page.initializeProgressive(this.progressiveLoad)):console.error("Pagination plugin is required for progressive ajax loading"))},Ajax.prototype.createLoaderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-loader"),e},Ajax.prototype.createMsgElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-loader-msg"),e.setAttribute("role","alert"),e},Ajax.prototype.setParams=function(e,t){if(t){this.params=this.params||{};for(var o in e)this.params[o]=e[o]}else this.params=e},Ajax.prototype.getParams=function(){return this.params||{}},Ajax.prototype.setConfig=function(e){if(this._loadDefaultConfig(),"string"==typeof e)this.config.method=e;else for(var t in e)this.config[t]=e[t]},Ajax.prototype._loadDefaultConfig=function(e){var t=this;if(!t.config||e){t.config={};for(var o in t.defaultConfig)t.config[o]=t.defaultConfig[o]}},Ajax.prototype.setUrl=function(e){this.url=e},Ajax.prototype.getUrl=function(){return this.url},Ajax.prototype.loadData=function(e){return this.progressiveLoad?this._loadDataProgressive():this._loadDataStandard(e)},Ajax.prototype.nextPage=function(e){var t;this.loading||(t=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.getElement().clientHeight,e<t&&this.table.modules.page.nextPage().then(function(){}).catch(function(){}))},Ajax.prototype.blockActiveRequest=function(){this.requestOrder++},Ajax.prototype._loadDataProgressive=function(){return this.table.rowManager.setData([]),this.table.modules.page.setPage(1)},Ajax.prototype._loadDataStandard=function(e){var t=this;return new Promise(function(o,a){t.sendRequest(e).then(function(r){t.table.rowManager.setData(r,e).then(function(){o()}).catch(function(e){a(e)})}).catch(function(e){a(e)})})},Ajax.prototype.generateParamsList=function(e,t){var o=this,a=[];if(t=t||"",Array.isArray(e))e.forEach(function(e,r){a=a.concat(o.generateParamsList(e,t?t+"["+r+"]":r))});else if("object"===(void 0===e?"undefined":_typeof(e)))for(var r in e)a=a.concat(o.generateParamsList(e[r],t?t+"["+r+"]":r));else a.push({key:t,value:e});return a},Ajax.prototype.serializeParams=function(e){var t=this.generateParamsList(e),o=[];return t.forEach(function(e){o.push(encodeURIComponent(e.key)+"="+encodeURIComponent(e.value))}),o.join("&")},Ajax.prototype.sendRequest=function(e){var t,o=this,a=this,r=a.url;return a.requestOrder++,t=a.requestOrder,a._loadDefaultConfig(),new Promise(function(i,n){!1!==a.table.options.ajaxRequesting.call(o.table,a.url,a.params)?(a.loading=!0,e||a.showLoader(),o.loaderPromise(r,a.config,a.params).then(function(e){t===a.requestOrder?(a.table.options.ajaxResponse&&(e=a.table.options.ajaxResponse.call(a.table,a.url,a.params,e)),i(e)):console.warn("Ajax Response Blocked - An active ajax request was blocked by an attempt to change table data while the request was being made"),a.hideLoader(),a.loading=!1}).catch(function(e){console.error("Ajax Load Error: ",e),a.table.options.ajaxError.call(a.table,e),a.showError(),setTimeout(function(){a.hideLoader()},3e3),a.loading=!1,n()})):n()})},Ajax.prototype.showLoader=function(){if("function"==typeof this.table.options.ajaxLoader?this.table.options.ajaxLoader():this.table.options.ajaxLoader){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.table.modules.localize.getText("ajax|loading"),this.table.element.appendChild(this.loaderElement)}},Ajax.prototype.showError=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.table.modules.localize.getText("ajax|error"),this.table.element.appendChild(this.loaderElement)},Ajax.prototype.hideLoader=function(){this.loaderElement.parentNode&&this.loaderElement.parentNode.removeChild(this.loaderElement)},Ajax.prototype.defaultConfig={method:"GET"},Ajax.prototype.defaultURLGenerator=function(e,t,o){return e&&o&&Object.keys(o).length&&(t.method&&"get"!=t.method.toLowerCase()||(t.method="get",e+="?"+this.serializeParams(o))),e},Ajax.prototype.defaultLoaderPromise=function(e,t,o){var a,r=this;return new Promise(function(i,n){if(e=r.urlGenerator(e,t,o),"GET"!=t.method.toUpperCase())if(a="object"===_typeof(r.table.options.ajaxContentType)?r.table.options.ajaxContentType:r.contentTypeFormatters[r.table.options.ajaxContentType]){for(var s in a.headers)t.headers||(t.headers={}),void 0===t.headers[s]&&(t.headers[s]=a.headers[s]);t.body=a.body.call(r,e,t,o)}else console.warn("Ajax Error - Invalid ajaxContentType value:",r.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["Access-Control-Allow-Origin"]&&(t.headers["Access-Control-Allow-Origin"]=window.location.origin),void 0===t.credentials&&(t.credentials="same-origin")):void 0===t.credentials&&(t.credentials="include"),fetch(e,t).then(function(e){e.ok?e.json().then(function(e){i(e)}).catch(function(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(function(e){console.error("Ajax Load Error - Connection Error: ",e),n(e)})):(console.warn("Ajax Load Error - No URL Set"),i([]))})},Ajax.prototype.contentTypeFormatters={json:{headers:{"Content-Type":"application/json"},body:function(e,t,o){return JSON.stringify(o)}},form:{headers:{},body:function(e,t,o){var a=this.generateParamsList(o),r=new FormData;return a.forEach(function(e){r.append(e.key,e.value)}),r}}},Tabulator.prototype.registerModule("ajax",Ajax);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/calculation_colums.js b/backoffice/vendors/tabulator/js.old/modules/calculation_colums.js
new file mode 100644 (file)
index 0000000..2ab41c9
--- /dev/null
@@ -0,0 +1,468 @@
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+
+var ColumnCalcs = function ColumnCalcs(table) {
+       this.table = table; //hold Tabulator object
+       this.topCalcs = [];
+       this.botCalcs = [];
+       this.genColumn = false;
+       this.topElement = this.createElement();
+       this.botElement = this.createElement();
+       this.topRow = false;
+       this.botRow = false;
+       this.topInitialized = false;
+       this.botInitialized = false;
+
+       this.initialize();
+};
+
+ColumnCalcs.prototype.createElement = function () {
+       var el = document.createElement("div");
+       el.classList.add("tabulator-calcs-holder");
+       return el;
+};
+
+ColumnCalcs.prototype.initialize = function () {
+       this.genColumn = new Column({ field: "value" }, this);
+};
+
+//dummy functions to handle being mock column manager
+ColumnCalcs.prototype.registerColumnField = function () {};
+
+//initialize column calcs
+ColumnCalcs.prototype.initializeColumn = function (column) {
+       var def = column.definition;
+
+       var config = {
+               topCalcParams: def.topCalcParams || {},
+               botCalcParams: def.bottomCalcParams || {}
+       };
+
+       if (def.topCalc) {
+
+               switch (_typeof(def.topCalc)) {
+                       case "string":
+                               if (this.calculations[def.topCalc]) {
+                                       config.topCalc = this.calculations[def.topCalc];
+                               } else {
+                                       console.warn("Column Calc Error - No such calculation found, ignoring: ", def.topCalc);
+                               }
+                               break;
+
+                       case "function":
+                               config.topCalc = def.topCalc;
+                               break;
+
+               }
+
+               if (config.topCalc) {
+                       column.modules.columnCalcs = config;
+                       this.topCalcs.push(column);
+
+                       if (this.table.options.columnCalcs != "group") {
+                               this.initializeTopRow();
+                       }
+               }
+       }
+
+       if (def.bottomCalc) {
+               switch (_typeof(def.bottomCalc)) {
+                       case "string":
+                               if (this.calculations[def.bottomCalc]) {
+                                       config.botCalc = this.calculations[def.bottomCalc];
+                               } else {
+                                       console.warn("Column Calc Error - No such calculation found, ignoring: ", def.bottomCalc);
+                               }
+                               break;
+
+                       case "function":
+                               config.botCalc = def.bottomCalc;
+                               break;
+
+               }
+
+               if (config.botCalc) {
+                       column.modules.columnCalcs = config;
+                       this.botCalcs.push(column);
+
+                       if (this.table.options.columnCalcs != "group") {
+                               this.initializeBottomRow();
+                       }
+               }
+       }
+};
+
+ColumnCalcs.prototype.removeCalcs = function () {
+       var changed = false;
+
+       if (this.topInitialized) {
+               this.topInitialized = false;
+               this.topElement.parentNode.removeChild(this.topElement);
+               changed = true;
+       }
+
+       if (this.botInitialized) {
+               this.botInitialized = false;
+               this.table.footerManager.remove(this.botElement);
+               changed = true;
+       }
+
+       if (changed) {
+               this.table.rowManager.adjustTableSize();
+       }
+};
+
+ColumnCalcs.prototype.initializeTopRow = function () {
+       if (!this.topInitialized) {
+               // this.table.columnManager.headersElement.after(this.topElement);
+               this.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);
+               this.topInitialized = true;
+       }
+};
+
+ColumnCalcs.prototype.initializeBottomRow = function () {
+       if (!this.botInitialized) {
+               this.table.footerManager.prepend(this.botElement);
+               this.botInitialized = true;
+       }
+};
+
+ColumnCalcs.prototype.scrollHorizontal = function (left) {
+       var hozAdjust = 0,
+           scrollWidth = this.table.columnManager.getElement().scrollWidth - this.table.element.clientWidth;
+
+       if (this.botInitialized) {
+               this.botRow.getElement().style.marginLeft = -left + "px";
+       }
+};
+
+ColumnCalcs.prototype.recalc = function (rows) {
+       var data, row;
+
+       if (this.topInitialized || this.botInitialized) {
+               data = this.rowsToData(rows);
+
+               if (this.topInitialized) {
+                       if (this.topRow) {
+                               this.topRow.deleteCells();
+                       }
+
+                       row = this.generateRow("top", this.rowsToData(rows));
+                       this.topRow = row;
+                       while (this.topElement.firstChild) {
+                               this.topElement.removeChild(this.topElement.firstChild);
+                       }this.topElement.appendChild(row.getElement());
+                       row.initialize(true);
+               }
+
+               if (this.botInitialized) {
+                       if (this.botRow) {
+                               this.botRow.deleteCells();
+                       }
+
+                       row = this.generateRow("bottom", this.rowsToData(rows));
+                       this.botRow = row;
+                       while (this.botElement.firstChild) {
+                               this.botElement.removeChild(this.botElement.firstChild);
+                       }this.botElement.appendChild(row.getElement());
+                       row.initialize(true);
+               }
+
+               this.table.rowManager.adjustTableSize();
+
+               //set resizable handles
+               if (this.table.modExists("frozenColumns")) {
+                       this.table.modules.frozenColumns.layout();
+               }
+       }
+};
+
+ColumnCalcs.prototype.recalcRowGroup = function (row) {
+       this.recalcGroup(this.table.modules.groupRows.getRowGroup(row));
+};
+
+ColumnCalcs.prototype.recalcGroup = function (group) {
+       var data, rowData;
+
+       if (group) {
+               if (group.calcs) {
+                       if (group.calcs.bottom) {
+                               data = this.rowsToData(group.rows);
+                               rowData = this.generateRowData("bottom", data);
+
+                               group.calcs.bottom.updateData(rowData);
+                               group.calcs.bottom.reinitialize();
+                       }
+
+                       if (group.calcs.top) {
+                               data = this.rowsToData(group.rows);
+                               rowData = this.generateRowData("top", data);
+
+                               group.calcs.top.updateData(rowData);
+                               group.calcs.top.reinitialize();
+                       }
+               }
+       }
+};
+
+//generate top stats row
+ColumnCalcs.prototype.generateTopRow = function (rows) {
+       return this.generateRow("top", this.rowsToData(rows));
+};
+//generate bottom stats row
+ColumnCalcs.prototype.generateBottomRow = function (rows) {
+       return this.generateRow("bottom", this.rowsToData(rows));
+};
+
+ColumnCalcs.prototype.rowsToData = function (rows) {
+       var data = [];
+
+       rows.forEach(function (row) {
+               data.push(row.getData());
+       });
+
+       return data;
+};
+
+//generate stats row
+ColumnCalcs.prototype.generateRow = function (pos, data) {
+       var self = this,
+           rowData = this.generateRowData(pos, data),
+           row;
+
+       if (self.table.modExists("mutator")) {
+               self.table.modules.mutator.disable();
+       }
+
+       row = new Row(rowData, this);
+
+       if (self.table.modExists("mutator")) {
+               self.table.modules.mutator.enable();
+       }
+
+       row.getElement().classList.add("tabulator-calcs", "tabulator-calcs-" + pos);
+       row.type = "calc";
+
+       row.generateCells = function () {
+
+               var cells = [];
+
+               self.table.columnManager.columnsByIndex.forEach(function (column) {
+
+                       //set field name of mock column
+                       self.genColumn.setField(column.getField());
+                       self.genColumn.hozAlign = column.hozAlign;
+
+                       if (column.definition[pos + "CalcFormatter"] && self.table.modExists("format")) {
+
+                               self.genColumn.modules.format = {
+                                       formatter: self.table.modules.format.getFormatter(column.definition[pos + "CalcFormatter"]),
+                                       params: column.definition[pos + "CalcFormatterParams"]
+                               };
+                       } else {
+                               self.genColumn.modules.format = {
+                                       formatter: self.table.modules.format.getFormatter("plaintext"),
+                                       params: {}
+                               };
+                       }
+
+                       //ensure css class defintion is replicated to calculation cell
+                       self.genColumn.definition.cssClass = column.definition.cssClass;
+
+                       //generate cell and assign to correct column
+                       var cell = new Cell(self.genColumn, row);
+                       cell.column = column;
+                       cell.setWidth();
+
+                       column.cells.push(cell);
+                       cells.push(cell);
+
+                       if (!column.visible) {
+                               cell.hide();
+                       }
+               });
+
+               this.cells = cells;
+       };
+
+       return row;
+};
+
+//generate stats row
+ColumnCalcs.prototype.generateRowData = function (pos, data) {
+       var rowData = {},
+           calcs = pos == "top" ? this.topCalcs : this.botCalcs,
+           type = pos == "top" ? "topCalc" : "botCalc",
+           params,
+           paramKey;
+
+       calcs.forEach(function (column) {
+               var values = [];
+
+               if (column.modules.columnCalcs && column.modules.columnCalcs[type]) {
+                       data.forEach(function (item) {
+                               values.push(column.getFieldValue(item));
+                       });
+
+                       paramKey = type + "Params";
+                       params = typeof column.modules.columnCalcs[paramKey] === "function" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey];
+
+                       column.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params));
+               }
+       });
+
+       return rowData;
+};
+
+ColumnCalcs.prototype.hasTopCalcs = function () {
+       return !!this.topCalcs.length;
+};
+
+ColumnCalcs.prototype.hasBottomCalcs = function () {
+       return !!this.botCalcs.length;
+};
+
+//handle table redraw
+ColumnCalcs.prototype.redraw = function () {
+       if (this.topRow) {
+               this.topRow.normalizeHeight(true);
+       }
+       if (this.botRow) {
+               this.botRow.normalizeHeight(true);
+       }
+};
+
+//return the calculated
+ColumnCalcs.prototype.getResults = function () {
+       var self = this,
+           results = {},
+           groups;
+
+       if (this.table.options.groupBy && this.table.modExists("groupRows")) {
+               groups = this.table.modules.groupRows.getGroups(true);
+
+               groups.forEach(function (group) {
+                       results[group.getKey()] = self.getGroupResults(group);
+               });
+       } else {
+               results = {
+                       top: this.topRow ? this.topRow.getData() : {},
+                       bottom: this.botRow ? this.botRow.getData() : {}
+               };
+       }
+
+       return results;
+};
+
+//get results from a group
+ColumnCalcs.prototype.getGroupResults = function (group) {
+       var self = this,
+           groupObj = group._getSelf(),
+           subGroups = group.getSubGroups(),
+           subGroupResults = {},
+           results = {};
+
+       subGroups.forEach(function (subgroup) {
+               subGroupResults[subgroup.getKey()] = self.getGroupResults(subgroup);
+       });
+
+       results = {
+               top: groupObj.calcs.top ? groupObj.calcs.top.getData() : {},
+               bottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {},
+               groups: subGroupResults
+       };
+
+       return results;
+};
+
+//default calculations
+ColumnCalcs.prototype.calculations = {
+       "avg": function avg(values, data, calcParams) {
+               var output = 0,
+                   precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : 2;
+
+               if (values.length) {
+                       output = values.reduce(function (sum, value) {
+                               value = Number(value);
+                               return sum + value;
+                       });
+
+                       output = output / values.length;
+
+                       output = precision !== false ? output.toFixed(precision) : output;
+               }
+
+               return parseFloat(output).toString();
+       },
+       "max": function max(values, data, calcParams) {
+               var output = null,
+                   precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false;
+
+               values.forEach(function (value) {
+
+                       value = Number(value);
+
+                       if (value > output || output === null) {
+                               output = value;
+                       }
+               });
+
+               return output !== null ? precision !== false ? output.toFixed(precision) : output : "";
+       },
+       "min": function min(values, data, calcParams) {
+               var output = null,
+                   precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false;
+
+               values.forEach(function (value) {
+
+                       value = Number(value);
+
+                       if (value < output || output === null) {
+                               output = value;
+                       }
+               });
+
+               return output !== null ? precision !== false ? output.toFixed(precision) : output : "";
+       },
+       "sum": function sum(values, data, calcParams) {
+               var output = 0,
+                   precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false;
+
+               if (values.length) {
+                       values.forEach(function (value) {
+                               value = Number(value);
+
+                               output += !isNaN(value) ? Number(value) : 0;
+                       });
+               }
+
+               return precision !== false ? output.toFixed(precision) : output;
+       },
+       "concat": function concat(values, data, calcParams) {
+               var output = 0;
+
+               if (values.length) {
+                       output = values.reduce(function (sum, value) {
+                               return String(sum) + String(value);
+                       });
+               }
+
+               return output;
+       },
+       "count": function count(values, data, calcParams) {
+               var output = 0;
+
+               if (values.length) {
+                       values.forEach(function (value) {
+                               if (value) {
+                                       output++;
+                               }
+                       });
+               }
+
+               return output;
+       }
+};
+
+Tabulator.prototype.registerModule("columnCalcs", ColumnCalcs);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/calculation_colums.min.js b/backoffice/vendors/tabulator/js.old/modules/calculation_colums.min.js
new file mode 100644 (file)
index 0000000..9aae8ba
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ColumnCalcs=function(t){this.table=t,this.topCalcs=[],this.botCalcs=[],this.genColumn=!1,this.topElement=this.createElement(),this.botElement=this.createElement(),this.topRow=!1,this.botRow=!1,this.topInitialized=!1,this.botInitialized=!1,this.initialize()};ColumnCalcs.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-calcs-holder"),t},ColumnCalcs.prototype.initialize=function(){this.genColumn=new Column({field:"value"},this)},ColumnCalcs.prototype.registerColumnField=function(){},ColumnCalcs.prototype.initializeColumn=function(t){var o=t.definition,e={topCalcParams:o.topCalcParams||{},botCalcParams:o.bottomCalcParams||{}};if(o.topCalc){switch(_typeof(o.topCalc)){case"string":this.calculations[o.topCalc]?e.topCalc=this.calculations[o.topCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",o.topCalc);break;case"function":e.topCalc=o.topCalc}e.topCalc&&(t.modules.columnCalcs=e,this.topCalcs.push(t),"group"!=this.table.options.columnCalcs&&this.initializeTopRow())}if(o.bottomCalc){switch(_typeof(o.bottomCalc)){case"string":this.calculations[o.bottomCalc]?e.botCalc=this.calculations[o.bottomCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",o.bottomCalc);break;case"function":e.botCalc=o.bottomCalc}e.botCalc&&(t.modules.columnCalcs=e,this.botCalcs.push(t),"group"!=this.table.options.columnCalcs&&this.initializeBottomRow())}},ColumnCalcs.prototype.removeCalcs=function(){var t=!1;this.topInitialized&&(this.topInitialized=!1,this.topElement.parentNode.removeChild(this.topElement),t=!0),this.botInitialized&&(this.botInitialized=!1,this.table.footerManager.remove(this.botElement),t=!0),t&&this.table.rowManager.adjustTableSize()},ColumnCalcs.prototype.initializeTopRow=function(){this.topInitialized||(this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling),this.topInitialized=!0)},ColumnCalcs.prototype.initializeBottomRow=function(){this.botInitialized||(this.table.footerManager.prepend(this.botElement),this.botInitialized=!0)},ColumnCalcs.prototype.scrollHorizontal=function(t){this.table.columnManager.getElement().scrollWidth,this.table.element.clientWidth;this.botInitialized&&(this.botRow.getElement().style.marginLeft=-t+"px")},ColumnCalcs.prototype.recalc=function(t){var o;if(this.topInitialized||this.botInitialized){if(this.rowsToData(t),this.topInitialized){for(this.topRow&&this.topRow.deleteCells(),o=this.generateRow("top",this.rowsToData(t)),this.topRow=o;this.topElement.firstChild;)this.topElement.removeChild(this.topElement.firstChild);this.topElement.appendChild(o.getElement()),o.initialize(!0)}if(this.botInitialized){for(this.botRow&&this.botRow.deleteCells(),o=this.generateRow("bottom",this.rowsToData(t)),this.botRow=o;this.botElement.firstChild;)this.botElement.removeChild(this.botElement.firstChild);this.botElement.appendChild(o.getElement()),o.initialize(!0)}this.table.rowManager.adjustTableSize(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()}},ColumnCalcs.prototype.recalcRowGroup=function(t){this.recalcGroup(this.table.modules.groupRows.getRowGroup(t))},ColumnCalcs.prototype.recalcGroup=function(t){var o,e;t&&t.calcs&&(t.calcs.bottom&&(o=this.rowsToData(t.rows),e=this.generateRowData("bottom",o),t.calcs.bottom.updateData(e),t.calcs.bottom.reinitialize()),t.calcs.top&&(o=this.rowsToData(t.rows),e=this.generateRowData("top",o),t.calcs.top.updateData(e),t.calcs.top.reinitialize()))},ColumnCalcs.prototype.generateTopRow=function(t){return this.generateRow("top",this.rowsToData(t))},ColumnCalcs.prototype.generateBottomRow=function(t){return this.generateRow("bottom",this.rowsToData(t))},ColumnCalcs.prototype.rowsToData=function(t){var o=[];return t.forEach(function(t){o.push(t.getData())}),o},ColumnCalcs.prototype.generateRow=function(t,o){var e,i=this,l=this.generateRowData(t,o);return i.table.modExists("mutator")&&i.table.modules.mutator.disable(),e=new Row(l,this),i.table.modExists("mutator")&&i.table.modules.mutator.enable(),e.getElement().classList.add("tabulator-calcs","tabulator-calcs-"+t),e.type="calc",e.generateCells=function(){var o=[];i.table.columnManager.columnsByIndex.forEach(function(l){i.genColumn.setField(l.getField()),i.genColumn.hozAlign=l.hozAlign,l.definition[t+"CalcFormatter"]&&i.table.modExists("format")?i.genColumn.modules.format={formatter:i.table.modules.format.getFormatter(l.definition[t+"CalcFormatter"]),params:l.definition[t+"CalcFormatterParams"]}:i.genColumn.modules.format={formatter:i.table.modules.format.getFormatter("plaintext"),params:{}},i.genColumn.definition.cssClass=l.definition.cssClass;var a=new Cell(i.genColumn,e);a.column=l,a.setWidth(),l.cells.push(a),o.push(a),l.visible||a.hide()}),this.cells=o},e},ColumnCalcs.prototype.generateRowData=function(t,o){var e,i,l={},a="top"==t?this.topCalcs:this.botCalcs,n="top"==t?"topCalc":"botCalc";return a.forEach(function(t){var a=[];t.modules.columnCalcs&&t.modules.columnCalcs[n]&&(o.forEach(function(o){a.push(t.getFieldValue(o))}),i=n+"Params",e="function"==typeof t.modules.columnCalcs[i]?t.modules.columnCalcs[i](a,o):t.modules.columnCalcs[i],t.setFieldValue(l,t.modules.columnCalcs[n](a,o,e)))}),l},ColumnCalcs.prototype.hasTopCalcs=function(){return!!this.topCalcs.length},ColumnCalcs.prototype.hasBottomCalcs=function(){return!!this.botCalcs.length},ColumnCalcs.prototype.redraw=function(){this.topRow&&this.topRow.normalizeHeight(!0),this.botRow&&this.botRow.normalizeHeight(!0)},ColumnCalcs.prototype.getResults=function(){var t,o=this,e={};return this.table.options.groupBy&&this.table.modExists("groupRows")?(t=this.table.modules.groupRows.getGroups(!0),t.forEach(function(t){e[t.getKey()]=o.getGroupResults(t)})):e={top:this.topRow?this.topRow.getData():{},bottom:this.botRow?this.botRow.getData():{}},e},ColumnCalcs.prototype.getGroupResults=function(t){var o=this,e=t._getSelf(),i=t.getSubGroups(),l={};return i.forEach(function(t){l[t.getKey()]=o.getGroupResults(t)}),{top:e.calcs.top?e.calcs.top.getData():{},bottom:e.calcs.bottom?e.calcs.bottom.getData():{},groups:l}},ColumnCalcs.prototype.calculations={avg:function(t,o,e){var i=0,l=void 0!==e.precision?e.precision:2;return t.length&&(i=t.reduce(function(t,o){return o=Number(o),t+o}),i/=t.length,i=!1!==l?i.toFixed(l):i),parseFloat(i).toString()},max:function(t,o,e){var i=null,l=void 0!==e.precision&&e.precision;return t.forEach(function(t){((t=Number(t))>i||null===i)&&(i=t)}),null!==i?!1!==l?i.toFixed(l):i:""},min:function(t,o,e){var i=null,l=void 0!==e.precision&&e.precision;return t.forEach(function(t){((t=Number(t))<i||null===i)&&(i=t)}),null!==i?!1!==l?i.toFixed(l):i:""},sum:function(t,o,e){var i=0,l=void 0!==e.precision&&e.precision;return t.length&&t.forEach(function(t){t=Number(t),i+=isNaN(t)?0:Number(t)}),!1!==l?i.toFixed(l):i},concat:function(t,o,e){var i=0;return t.length&&(i=t.reduce(function(t,o){return String(t)+String(o)})),i},count:function(t,o,e){var i=0;return t.length&&t.forEach(function(t){t&&i++}),i}},Tabulator.prototype.registerModule("columnCalcs",ColumnCalcs);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/clipboard.js b/backoffice/vendors/tabulator/js.old/modules/clipboard.js
new file mode 100644 (file)
index 0000000..60a3fe2
--- /dev/null
@@ -0,0 +1,1011 @@
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+
+var Clipboard = function Clipboard(table) {
+       this.table = table;
+       this.mode = true;
+       this.copySelector = false;
+       this.copySelectorParams = {};
+       this.copyFormatter = false;
+       this.copyFormatterParams = {};
+       this.pasteParser = function () {};
+       this.pasteAction = function () {};
+       this.htmlElement = false;
+       this.config = {};
+
+       this.blocked = true; //block copy actions not originating from this command
+};
+
+Clipboard.prototype.initialize = function () {
+       var self = this;
+
+       this.mode = this.table.options.clipboard;
+
+       if (this.mode === true || this.mode === "copy") {
+               this.table.element.addEventListener("copy", function (e) {
+                       var data;
+
+                       self.processConfig();
+
+                       if (!self.blocked) {
+                               e.preventDefault();
+
+                               data = self.generateContent();
+
+                               if (window.clipboardData && window.clipboardData.setData) {
+                                       window.clipboardData.setData('Text', data);
+                               } else if (e.clipboardData && e.clipboardData.setData) {
+                                       e.clipboardData.setData('text/plain', data);
+                                       if (self.htmlElement) {
+                                               e.clipboardData.setData('text/html', self.htmlElement.outerHTML);
+                                       }
+                               } else if (e.originalEvent && e.originalEvent.clipboardData.setData) {
+                                       e.originalEvent.clipboardData.setData('text/plain', data);
+                                       if (self.htmlElement) {
+                                               e.originalEvent.clipboardData.setData('text/html', self.htmlElement.outerHTML);
+                                       }
+                               }
+
+                               self.table.options.clipboardCopied.call(this.table, data);
+
+                               self.reset();
+                       }
+               });
+       }
+
+       if (this.mode === true || this.mode === "paste") {
+               this.table.element.addEventListener("paste", function (e) {
+                       self.paste(e);
+               });
+       }
+
+       this.setPasteParser(this.table.options.clipboardPasteParser);
+       this.setPasteAction(this.table.options.clipboardPasteAction);
+};
+
+Clipboard.prototype.processConfig = function () {
+       var config = {
+               columnHeaders: "groups",
+               rowGroups: true,
+               columnCalcs: true
+       };
+
+       if (typeof this.table.options.clipboardCopyHeader !== "undefined") {
+               config.columnHeaders = this.table.options.clipboardCopyHeader;
+               console.warn("DEPRECATION WARNING - clipboardCopyHeader option has been deprecated, please use the columnHeaders property on the clipboardCopyConfig option");
+       }
+
+       if (this.table.options.clipboardCopyConfig) {
+               for (var key in this.table.options.clipboardCopyConfig) {
+                       config[key] = this.table.options.clipboardCopyConfig[key];
+               }
+       }
+
+       if (config.rowGroups && this.table.options.groupBy && this.table.modExists("groupRows")) {
+               this.config.rowGroups = true;
+       }
+
+       if (config.columnHeaders) {
+               if ((config.columnHeaders === "groups" || config === true) && this.table.columnManager.columns.length != this.table.columnManager.columnsByIndex.length) {
+                       this.config.columnHeaders = "groups";
+               } else {
+                       this.config.columnHeaders = "columns";
+               }
+       } else {
+               this.config.columnHeaders = false;
+       }
+
+       if (config.columnCalcs && this.table.modExists("columnCalcs")) {
+               this.config.columnCalcs = true;
+       }
+};
+
+Clipboard.prototype.reset = function () {
+       this.blocked = false;
+       this.originalSelectionText = "";
+};
+
+Clipboard.prototype.setPasteAction = function (action) {
+
+       switch (typeof action === "undefined" ? "undefined" : _typeof(action)) {
+               case "string":
+                       this.pasteAction = this.pasteActions[action];
+
+                       if (!this.pasteAction) {
+                               console.warn("Clipboard Error - No such paste action found:", action);
+                       }
+                       break;
+
+               case "function":
+                       this.pasteAction = action;
+                       break;
+       }
+};
+
+Clipboard.prototype.setPasteParser = function (parser) {
+       switch (typeof parser === "undefined" ? "undefined" : _typeof(parser)) {
+               case "string":
+                       this.pasteParser = this.pasteParsers[parser];
+
+                       if (!this.pasteParser) {
+                               console.warn("Clipboard Error - No such paste parser found:", parser);
+                       }
+                       break;
+
+               case "function":
+                       this.pasteParser = parser;
+                       break;
+       }
+};
+
+Clipboard.prototype.paste = function (e) {
+       var data, rowData, rows;
+
+       if (this.checkPaseOrigin(e)) {
+
+               data = this.getPasteData(e);
+
+               rowData = this.pasteParser.call(this, data);
+
+               if (rowData) {
+                       e.preventDefault();
+
+                       if (this.table.modExists("mutator")) {
+                               rowData = this.mutateData(rowData);
+                       }
+
+                       rows = this.pasteAction.call(this, rowData);
+                       this.table.options.clipboardPasted.call(this.table, data, rowData, rows);
+               } else {
+                       this.table.options.clipboardPasteError.call(this.table, data);
+               }
+       }
+};
+
+Clipboard.prototype.mutateData = function (data) {
+       var self = this,
+           output = [];
+
+       if (Array.isArray(data)) {
+               data.forEach(function (row) {
+                       output.push(self.table.modules.mutator.transformRow(row, "clipboard"));
+               });
+       } else {
+               output = data;
+       }
+
+       return output;
+};
+
+Clipboard.prototype.checkPaseOrigin = function (e) {
+       var valid = true;
+
+       if (e.target.tagName != "DIV" || this.table.modules.edit.currentCell) {
+               valid = false;
+       }
+
+       return valid;
+};
+
+Clipboard.prototype.getPasteData = function (e) {
+       var data;
+
+       if (window.clipboardData && window.clipboardData.getData) {
+               data = window.clipboardData.getData('Text');
+       } else if (e.clipboardData && e.clipboardData.getData) {
+               data = e.clipboardData.getData('text/plain');
+       } else if (e.originalEvent && e.originalEvent.clipboardData.getData) {
+               data = e.originalEvent.clipboardData.getData('text/plain');
+       }
+
+       return data;
+};
+
+Clipboard.prototype.copy = function (selector, selectorParams, formatter, formatterParams, internal) {
+       var range, sel, textRange;
+       this.blocked = false;
+
+       if (this.mode === true || this.mode === "copy") {
+
+               if (typeof window.getSelection != "undefined" && typeof document.createRange != "undefined") {
+                       range = document.createRange();
+                       range.selectNodeContents(this.table.element);
+                       sel = window.getSelection();
+
+                       if (sel.toString() && internal) {
+                               selector = "userSelection";
+                               formatter = "raw";
+                               selectorParams = sel.toString();
+                       }
+
+                       sel.removeAllRanges();
+                       sel.addRange(range);
+               } else if (typeof document.selection != "undefined" && typeof document.body.createTextRange != "undefined") {
+                       textRange = document.body.createTextRange();
+                       textRange.moveToElementText(this.table.element);
+                       textRange.select();
+               }
+
+               this.setSelector(selector);
+               this.copySelectorParams = typeof selectorParams != "undefined" && selectorParams != null ? selectorParams : this.config.columnHeaders;
+               this.setFormatter(formatter);
+               this.copyFormatterParams = typeof formatterParams != "undefined" && formatterParams != null ? formatterParams : {};
+
+               document.execCommand('copy');
+
+               if (sel) {
+                       sel.removeAllRanges();
+               }
+       }
+};
+
+Clipboard.prototype.setSelector = function (selector) {
+       selector = selector || this.table.options.clipboardCopySelector;
+
+       switch (typeof selector === "undefined" ? "undefined" : _typeof(selector)) {
+               case "string":
+                       if (this.copySelectors[selector]) {
+                               this.copySelector = this.copySelectors[selector];
+                       } else {
+                               console.warn("Clipboard Error - No such selector found:", selector);
+                       }
+                       break;
+
+               case "function":
+                       this.copySelector = selector;
+                       break;
+       }
+};
+
+Clipboard.prototype.setFormatter = function (formatter) {
+
+       formatter = formatter || this.table.options.clipboardCopyFormatter;
+
+       switch (typeof formatter === "undefined" ? "undefined" : _typeof(formatter)) {
+               case "string":
+                       if (this.copyFormatters[formatter]) {
+                               this.copyFormatter = this.copyFormatters[formatter];
+                       } else {
+                               console.warn("Clipboard Error - No such formatter found:", formatter);
+                       }
+                       break;
+
+               case "function":
+                       this.copyFormatter = formatter;
+                       break;
+       }
+};
+
+Clipboard.prototype.generateContent = function () {
+       var data;
+
+       this.htmlElement = false;
+       data = this.copySelector.call(this, this.config, this.copySelectorParams);
+
+       return this.copyFormatter.call(this, data, this.config, this.copyFormatterParams);
+};
+
+Clipboard.prototype.generateSimpleHeaders = function (columns) {
+       var headers = [];
+
+       columns.forEach(function (column) {
+               headers.push(column.definition.title);
+       });
+
+       return headers;
+};
+
+Clipboard.prototype.generateColumnGroupHeaders = function (columns) {
+       var _this = this;
+
+       var output = [];
+
+       this.table.columnManager.columns.forEach(function (column) {
+               var colData = _this.processColumnGroup(column);
+
+               if (colData) {
+                       output.push(colData);
+               }
+       });
+
+       return output;
+};
+
+Clipboard.prototype.processColumnGroup = function (column) {
+       var _this2 = this;
+
+       var subGroups = column.columns;
+
+       var groupData = {
+               type: "group",
+               title: column.definition.title,
+               column: column
+       };
+
+       if (subGroups.length) {
+               groupData.subGroups = [];
+               groupData.width = 0;
+
+               subGroups.forEach(function (subGroup) {
+                       var subGroupData = _this2.processColumnGroup(subGroup);
+
+                       if (subGroupData) {
+                               groupData.width += subGroupData.width;
+                               groupData.subGroups.push(subGroupData);
+                       }
+               });
+
+               if (!groupData.width) {
+                       return false;
+               }
+       } else {
+               if (column.field && (column.definition.clipboard || column.visible && column.definition.clipboard !== false)) {
+                       groupData.width = 1;
+               } else {
+                       return false;
+               }
+       }
+
+       return groupData;
+};
+
+Clipboard.prototype.groupHeadersToRows = function (columns) {
+
+       var headers = [];
+
+       function parseColumnGroup(column, level) {
+
+               if (typeof headers[level] === "undefined") {
+                       headers[level] = [];
+               }
+
+               headers[level].push(column.title);
+
+               if (column.subGroups) {
+                       column.subGroups.forEach(function (subGroup) {
+                               parseColumnGroup(subGroup, level + 1);
+                       });
+               } else {
+                       padColumnheaders();
+               }
+       }
+
+       function padColumnheaders() {
+               var max = 0;
+
+               headers.forEach(function (title) {
+                       var len = title.length;
+                       if (len > max) {
+                               max = len;
+                       }
+               });
+
+               headers.forEach(function (title) {
+                       var len = title.length;
+                       if (len < max) {
+                               for (var i = len; i < max; i++) {
+                                       title.push("");
+                               }
+                       }
+               });
+       }
+
+       columns.forEach(function (column) {
+               parseColumnGroup(column, 0);
+       });
+
+       return headers;
+};
+
+Clipboard.prototype.rowsToData = function (rows, columns, config, params) {
+       var data = [];
+
+       rows.forEach(function (row) {
+               var rowArray = [],
+                   rowData = row instanceof RowComponent ? row.getData("clipboard") : row;
+
+               columns.forEach(function (column) {
+                       var value = column.getFieldValue(rowData);
+
+                       switch (typeof value === "undefined" ? "undefined" : _typeof(value)) {
+                               case "object":
+                                       value = JSON.stringify(value);
+                                       break;
+
+                               case "undefined":
+                               case "null":
+                                       value = "";
+                                       break;
+
+                               default:
+                                       value = value;
+                       }
+
+                       rowArray.push(value);
+               });
+
+               data.push(rowArray);
+       });
+
+       return data;
+};
+
+Clipboard.prototype.buildComplexRows = function (config) {
+       var _this3 = this;
+
+       var output = [],
+           groups = this.table.modules.groupRows.getGroups();
+
+       groups.forEach(function (group) {
+               output.push(_this3.processGroupData(group));
+       });
+
+       return output;
+};
+
+Clipboard.prototype.processGroupData = function (group) {
+       var _this4 = this;
+
+       var subGroups = group.getSubGroups();
+
+       var groupData = {
+               type: "group",
+               key: group.key
+       };
+
+       if (subGroups.length) {
+               groupData.subGroups = [];
+
+               subGroups.forEach(function (subGroup) {
+                       groupData.subGroups.push(_this4.processGroupData(subGroup));
+               });
+       } else {
+               groupData.rows = group.getRows(true);
+       }
+
+       return groupData;
+};
+
+Clipboard.prototype.getCalcRow = function (calcs, columns, selector, pos) {
+       var calcData = calcs[selector];
+
+       if (calcData) {
+               if (pos) {
+                       calcData = calcData[pos];
+               }
+
+               if (Object.keys(calcData).length) {
+                       return this.rowsToData([calcData], columns);
+               }
+       }
+
+       return [];
+};
+
+Clipboard.prototype.buildOutput = function (rows, config, params) {
+       var _this5 = this;
+
+       var output = [],
+           calcs,
+           columns = [];
+
+       if (config.columnHeaders == "groups") {
+               columns = this.generateColumnGroupHeaders(this.table.columnManager.columns);
+
+               output = output.concat(this.groupHeadersToRows(columns));
+       } else {
+               this.table.columnManager.columnsByIndex.forEach(function (column) {
+                       if (column.definition.clipboard || column.visible && column.definition.clipboard !== false) {
+                               columns.push(column);
+                       }
+               });
+
+               output.push(this.generateSimpleHeaders(columns));
+       }
+
+       if (this.config.columnCalcs) {
+               calcs = this.table.getCalcResults();
+       }
+
+       //generate styled content
+       if (this.table.options.clipboardCopyStyled) {
+               this.generateHTML(rows, columns, calcs, config, params);
+       }
+
+       //generate unstyled content
+       if (config.rowGroups) {
+               rows.forEach(function (row) {
+                       output = output.concat(_this5.parseRowGroupData(row, columns, config, params, calcs || {}));
+               });
+       } else {
+               if (config.columnCalcs) {
+                       output = output.concat(this.getCalcRow(calcs, columns, "top"));
+               }
+
+               output = output.concat(this.rowsToData(rows, columns, config, params));
+
+               if (config.columnCalcs) {
+                       output = output.concat(this.getCalcRow(calcs, columns, "bottom"));
+               }
+       }
+
+       return output;
+};
+
+Clipboard.prototype.parseRowGroupData = function (group, columns, config, params, calcObj) {
+       var _this6 = this;
+
+       var groupData = [];
+
+       groupData.push([group.key]);
+
+       if (group.subGroups) {
+               group.subGroups.forEach(function (subGroup) {
+                       groupData = groupData.concat(_this6.parseRowGroupData(subGroup, config, params, calcObj[group.key] ? calcObj[group.key].groups || {} : {}));
+               });
+       } else {
+               if (config.columnCalcs) {
+                       groupData = groupData.concat(this.getCalcRow(calcObj, columns, group.key, "top"));
+               }
+
+               groupData = groupData.concat(this.rowsToData(group.rows, columns, config, params));
+
+               if (config.columnCalcs) {
+                       groupData = groupData.concat(this.getCalcRow(calcObj, columns, group.key, "bottom"));
+               }
+       }
+
+       return groupData;
+};
+
+Clipboard.prototype.generateHTML = function (rows, columns, calcs, config, params) {
+       var self = this,
+           data = [],
+           headers = [],
+           body,
+           oddRow,
+           evenRow,
+           calcRow,
+           firstRow,
+           firstCell,
+           firstGroup,
+           lastCell,
+           styleCells;
+
+       //create table element
+       this.htmlElement = document.createElement("table");
+       self.mapElementStyles(this.table.element, this.htmlElement, ["border-top", "border-left", "border-right", "border-bottom"]);
+
+       function generateSimpleHeaders() {
+               var headerEl = document.createElement("tr");
+
+               columns.forEach(function (column) {
+                       var columnEl = document.createElement("th");
+                       columnEl.innerHTML = column.definition.title;
+
+                       self.mapElementStyles(column.getElement(), columnEl, ["border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
+
+                       headerEl.appendChild(columnEl);
+               });
+
+               self.mapElementStyles(self.table.columnManager.getHeadersElement(), headerEl, ["border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
+
+               self.htmlElement.appendChild(document.createElement("thead").appendChild(headerEl));
+       }
+
+       function generateHeaders(headers) {
+
+               var headerHolderEl = document.createElement("thead");
+
+               headers.forEach(function (columns) {
+                       var headerEl = document.createElement("tr");
+
+                       columns.forEach(function (column) {
+                               var columnEl = document.createElement("th");
+
+                               if (column.width > 1) {
+                                       columnEl.colSpan = column.width;
+                               }
+
+                               if (column.height > 1) {
+                                       columnEl.rowSpan = column.height;
+                               }
+
+                               columnEl.innerHTML = column.title;
+
+                               self.mapElementStyles(column.element, columnEl, ["border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
+
+                               headerEl.appendChild(columnEl);
+                       });
+
+                       self.mapElementStyles(self.table.columnManager.getHeadersElement(), headerEl, ["border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
+
+                       headerHolderEl.appendChild(headerEl);
+               });
+
+               self.htmlElement.appendChild(headerHolderEl);
+       }
+
+       function parseColumnGroup(column, level) {
+
+               if (typeof headers[level] === "undefined") {
+                       headers[level] = [];
+               }
+
+               headers[level].push({
+                       title: column.title,
+                       width: column.width,
+                       height: 1,
+                       children: !!column.subGroups,
+                       element: column.column.getElement()
+               });
+
+               if (column.subGroups) {
+                       column.subGroups.forEach(function (subGroup) {
+                               parseColumnGroup(subGroup, level + 1);
+                       });
+               }
+       }
+
+       function padVerticalColumnheaders() {
+               headers.forEach(function (row, index) {
+                       row.forEach(function (header) {
+                               if (!header.children) {
+                                       header.height = headers.length - index;
+                               }
+                       });
+               });
+       }
+
+       function addCalcRow(calcs, selector, pos) {
+               var calcData = calcs[selector];
+
+               if (calcData) {
+                       if (pos) {
+                               calcData = calcData[pos];
+                       }
+
+                       if (Object.keys(calcData).length) {
+                               // calcRowIndexs.push(body.length);
+                               processRows([calcData]);
+                       }
+               }
+       }
+
+       //create headers if needed
+       if (config.columnHeaders) {
+               if (config.columnHeaders == "groups") {
+                       columns.forEach(function (column) {
+                               parseColumnGroup(column, 0);
+                       });
+
+                       padVerticalColumnheaders();
+                       generateHeaders(headers);
+               } else {
+                       generateSimpleHeaders();
+               }
+       }
+
+       // columns = this.table.columnManager.columnsByIndex;
+
+       //create table body
+       body = document.createElement("tbody");
+
+       //lookup row styles
+       if (window.getComputedStyle) {
+               oddRow = this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)");
+               evenRow = this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)");
+               calcRow = this.table.element.querySelector(".tabulator-row.tabulator-calcs");
+               firstRow = this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)");
+               firstGroup = this.table.element.getElementsByClassName("tabulator-group")[0];
+
+               if (firstRow) {
+                       styleCells = firstRow.getElementsByClassName("tabulator-cell");
+                       firstCell = styleCells[0];
+                       lastCell = styleCells[styleCells.length - 1];
+               }
+       }
+
+       function processRows(rowArray) {
+               //add rows to table
+               rowArray.forEach(function (row, i) {
+                       var rowEl = document.createElement("tr"),
+                           styleRow = firstRow,
+                           isCalc = false,
+                           rowData;
+
+                       if (row instanceof RowComponent) {
+                               rowData = row.getData("clipboard");
+                       } else {
+                               rowData = row;
+                               isCalc = true;
+                       }
+
+                       columns.forEach(function (column, j) {
+                               var cellEl = document.createElement("td"),
+                                   value = column.getFieldValue(rowData);
+
+                               switch (typeof value === "undefined" ? "undefined" : _typeof(value)) {
+                                       case "object":
+                                               value = JSON.stringify(value);
+                                               break;
+
+                                       case "undefined":
+                                       case "null":
+                                               value = "";
+                                               break;
+
+                                       default:
+                                               value = value;
+                               }
+
+                               cellEl.innerHTML = value;
+
+                               if (column.definition.align) {
+                                       cellEl.style.textAlign = column.definition.align;
+                               }
+
+                               if (j < columns.length - 1) {
+                                       if (firstCell) {
+                                               self.mapElementStyles(firstCell, cellEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size"]);
+                                       }
+                               } else {
+                                       if (firstCell) {
+                                               self.mapElementStyles(firstCell, cellEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size"]);
+                                       }
+                               }
+
+                               rowEl.appendChild(cellEl);
+                       });
+
+                       if (isCalc) {
+                               styleRow = calcRow;
+                       } else {
+                               if (!(i % 2) && oddRow) {
+                                       styleRow = oddRow;
+                               }
+
+                               if (i % 2 && evenRow) {
+                                       styleRow = evenRow;
+                               }
+                       }
+
+                       if (styleRow) {
+                               self.mapElementStyles(styleRow, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]);
+                       }
+
+                       body.appendChild(rowEl);
+               });
+       }
+
+       function processGroup(group, calcObj) {
+               var groupEl = document.createElement("tr"),
+                   groupCellEl = document.createElement("td");
+
+               groupCellEl.colSpan = columns.length;
+
+               groupCellEl.innerHTML = group.key;
+
+               groupEl.appendChild(groupCellEl);
+               body.appendChild(groupEl);
+
+               self.mapElementStyles(firstGroup, groupEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]);
+
+               if (group.subGroups) {
+                       group.subGroups.forEach(function (subGroup) {
+                               processGroup(subGroup, calcObj[group.key] ? calcObj[group.key].groups || {} : {});
+                       });
+               } else {
+                       if (config.columnCalcs) {
+                               addCalcRow(calcObj, group.key, "top");
+                       }
+
+                       processRows(group.rows);
+
+                       if (config.columnCalcs) {
+                               addCalcRow(calcObj, group.key, "bottom");
+                       }
+               }
+       }
+
+       if (config.rowGroups) {
+               rows.forEach(function (group) {
+                       processGroup(group, calcs || {});
+               });
+       } else {
+               if (config.columnCalcs) {
+                       addCalcRow(calcs, "top");
+               }
+
+               processRows(rows);
+
+               if (config.columnCalcs) {
+                       addCalcRow(calcs, "bottom");
+               }
+       }
+
+       this.htmlElement.appendChild(body);
+};
+
+Clipboard.prototype.mapElementStyles = function (from, to, props) {
+
+       var lookup = {
+               "background-color": "backgroundColor",
+               "color": "fontColor",
+               "font-weight": "fontWeight",
+               "font-family": "fontFamily",
+               "font-size": "fontSize",
+               "border-top": "borderTop",
+               "border-left": "borderLeft",
+               "border-right": "borderRight",
+               "border-bottom": "borderBottom"
+       };
+
+       if (window.getComputedStyle) {
+               var fromStyle = window.getComputedStyle(from);
+
+               props.forEach(function (prop) {
+                       to.style[lookup[prop]] = fromStyle.getPropertyValue(prop);
+               });
+       }
+
+       // return window.getComputedStyle ? window.getComputedStyle(element, null).getPropertyValue(property) : element.style[property.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); })];
+};
+
+Clipboard.prototype.copySelectors = {
+       userSelection: function userSelection(config, params) {
+               return params;
+       },
+       selected: function selected(config, params) {
+               var rows = [];
+
+               if (this.table.modExists("selectRow", true)) {
+                       rows = this.table.modules.selectRow.getSelectedRows();
+               }
+
+               if (config.rowGroups) {
+                       console.warn("Clipboard Warning - select coptSelector does not support row groups");
+               }
+
+               return this.buildOutput(rows, config, params);
+       },
+       table: function table(config, params) {
+               if (config.rowGroups) {
+                       console.warn("Clipboard Warning - table coptSelector does not support row groups");
+               }
+
+               return this.buildOutput(this.table.rowManager.getComponents(), config, params);
+       },
+       active: function active(config, params) {
+               var rows;
+
+               if (config.rowGroups) {
+                       rows = this.buildComplexRows(config);
+               } else {
+                       rows = this.table.rowManager.getComponents(true);
+               }
+
+               return this.buildOutput(rows, config, params);
+       }
+};
+
+Clipboard.prototype.copyFormatters = {
+       raw: function raw(data, params) {
+               return data;
+       },
+       table: function table(data, params) {
+               var output = [];
+
+               data.forEach(function (row) {
+                       row.forEach(function (value) {
+                               if (typeof value == "undefined") {
+                                       value = "";
+                               }
+
+                               value = typeof value == "undefined" || value === null ? "" : value.toString();
+
+                               if (value.match(/\r|\n/)) {
+                                       value = value.split('"').join('""');
+                                       value = '"' + value + '"';
+                               }
+                       });
+
+                       output.push(row.join("\t"));
+               });
+
+               return output.join("\n");
+       }
+};
+
+Clipboard.prototype.pasteParsers = {
+       table: function table(clipboard) {
+               var data = [],
+                   success = false,
+                   headerFindSuccess = true,
+                   columns = this.table.columnManager.columns,
+                   columnMap = [],
+                   rows = [];
+
+               //get data from clipboard into array of columns and rows.
+               clipboard = clipboard.split("\n");
+
+               clipboard.forEach(function (row) {
+                       data.push(row.split("\t"));
+               });
+
+               if (data.length && !(data.length === 1 && data[0].length < 2)) {
+                       success = true;
+
+                       //check if headers are present by title
+                       data[0].forEach(function (value) {
+                               var column = columns.find(function (column) {
+                                       return value && column.definition.title && value.trim() && column.definition.title.trim() === value.trim();
+                               });
+
+                               if (column) {
+                                       columnMap.push(column);
+                               } else {
+                                       headerFindSuccess = false;
+                               }
+                       });
+
+                       //check if column headers are present by field
+                       if (!headerFindSuccess) {
+                               headerFindSuccess = true;
+                               columnMap = [];
+
+                               data[0].forEach(function (value) {
+                                       var column = columns.find(function (column) {
+                                               return value && column.field && value.trim() && column.field.trim() === value.trim();
+                                       });
+
+                                       if (column) {
+                                               columnMap.push(column);
+                                       } else {
+                                               headerFindSuccess = false;
+                                       }
+                               });
+
+                               if (!headerFindSuccess) {
+                                       columnMap = this.table.columnManager.columnsByIndex;
+                               }
+                       }
+
+                       //remove header row if found
+                       if (headerFindSuccess) {
+                               data.shift();
+                       }
+
+                       data.forEach(function (item) {
+                               var row = {};
+
+                               item.forEach(function (value, i) {
+                                       if (columnMap[i]) {
+                                               row[columnMap[i].field] = value;
+                                       }
+                               });
+
+                               rows.push(row);
+                       });
+
+                       return rows;
+               } else {
+                       return false;
+               }
+       }
+};
+
+Clipboard.prototype.pasteActions = {
+       replace: function replace(rows) {
+               return this.table.setData(rows);
+       },
+       update: function update(rows) {
+               return this.table.updateOrAddData(rows);
+       },
+       insert: function insert(rows) {
+               return this.table.addData(rows);
+       }
+};
+
+Tabulator.prototype.registerModule("clipboard", Clipboard);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/clipboard.min.js b/backoffice/vendors/tabulator/js.old/modules/clipboard.min.js
new file mode 100644 (file)
index 0000000..5c068c1
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Clipboard=function(t){this.table=t,this.mode=!0,this.copySelector=!1,this.copySelectorParams={},this.copyFormatter=!1,this.copyFormatterParams={},this.pasteParser=function(){},this.pasteAction=function(){},this.htmlElement=!1,this.config={},this.blocked=!0};Clipboard.prototype.initialize=function(){var t=this;this.mode=this.table.options.clipboard,!0!==this.mode&&"copy"!==this.mode||this.table.element.addEventListener("copy",function(o){var e;t.processConfig(),t.blocked||(o.preventDefault(),e=t.generateContent(),window.clipboardData&&window.clipboardData.setData?window.clipboardData.setData("Text",e):o.clipboardData&&o.clipboardData.setData?(o.clipboardData.setData("text/plain",e),t.htmlElement&&o.clipboardData.setData("text/html",t.htmlElement.outerHTML)):o.originalEvent&&o.originalEvent.clipboardData.setData&&(o.originalEvent.clipboardData.setData("text/plain",e),t.htmlElement&&o.originalEvent.clipboardData.setData("text/html",t.htmlElement.outerHTML)),t.table.options.clipboardCopied.call(this.table,e),t.reset())}),!0!==this.mode&&"paste"!==this.mode||this.table.element.addEventListener("paste",function(o){t.paste(o)}),this.setPasteParser(this.table.options.clipboardPasteParser),this.setPasteAction(this.table.options.clipboardPasteAction)},Clipboard.prototype.processConfig=function(){var t={columnHeaders:"groups",rowGroups:!0,columnCalcs:!0};if(void 0!==this.table.options.clipboardCopyHeader&&(t.columnHeaders=this.table.options.clipboardCopyHeader,console.warn("DEPRECATION WARNING - clipboardCopyHeader option has been deprecated, please use the columnHeaders property on the clipboardCopyConfig option")),this.table.options.clipboardCopyConfig)for(var o in this.table.options.clipboardCopyConfig)t[o]=this.table.options.clipboardCopyConfig[o];t.rowGroups&&this.table.options.groupBy&&this.table.modExists("groupRows")&&(this.config.rowGroups=!0),t.columnHeaders?"groups"!==t.columnHeaders&&!0!==t||this.table.columnManager.columns.length==this.table.columnManager.columnsByIndex.length?this.config.columnHeaders="columns":this.config.columnHeaders="groups":this.config.columnHeaders=!1,t.columnCalcs&&this.table.modExists("columnCalcs")&&(this.config.columnCalcs=!0)},Clipboard.prototype.reset=function(){this.blocked=!1,this.originalSelectionText=""},Clipboard.prototype.setPasteAction=function(t){switch(void 0===t?"undefined":_typeof(t)){case"string":this.pasteAction=this.pasteActions[t],this.pasteAction||console.warn("Clipboard Error - No such paste action found:",t);break;case"function":this.pasteAction=t}},Clipboard.prototype.setPasteParser=function(t){switch(void 0===t?"undefined":_typeof(t)){case"string":this.pasteParser=this.pasteParsers[t],this.pasteParser||console.warn("Clipboard Error - No such paste parser found:",t);break;case"function":this.pasteParser=t}},Clipboard.prototype.paste=function(t){var o,e,r;this.checkPaseOrigin(t)&&(o=this.getPasteData(t),e=this.pasteParser.call(this,o),e?(t.preventDefault(),this.table.modExists("mutator")&&(e=this.mutateData(e)),r=this.pasteAction.call(this,e),this.table.options.clipboardPasted.call(this.table,o,e,r)):this.table.options.clipboardPasteError.call(this.table,o))},Clipboard.prototype.mutateData=function(t){var o=this,e=[];return Array.isArray(t)?t.forEach(function(t){e.push(o.table.modules.mutator.transformRow(t,"clipboard"))}):e=t,e},Clipboard.prototype.checkPaseOrigin=function(t){var o=!0;return("DIV"!=t.target.tagName||this.table.modules.edit.currentCell)&&(o=!1),o},Clipboard.prototype.getPasteData=function(t){var o;return window.clipboardData&&window.clipboardData.getData?o=window.clipboardData.getData("Text"):t.clipboardData&&t.clipboardData.getData?o=t.clipboardData.getData("text/plain"):t.originalEvent&&t.originalEvent.clipboardData.getData&&(o=t.originalEvent.clipboardData.getData("text/plain")),o},Clipboard.prototype.copy=function(t,o,e,r,a){var n,i,l;this.blocked=!1,!0!==this.mode&&"copy"!==this.mode||(void 0!==window.getSelection&&void 0!==document.createRange?(n=document.createRange(),n.selectNodeContents(this.table.element),i=window.getSelection(),i.toString()&&a&&(t="userSelection",e="raw",o=i.toString()),i.removeAllRanges(),i.addRange(n)):void 0!==document.selection&&void 0!==document.body.createTextRange&&(l=document.body.createTextRange(),l.moveToElementText(this.table.element),l.select()),this.setSelector(t),this.copySelectorParams=void 0!==o&&null!=o?o:this.config.columnHeaders,this.setFormatter(e),this.copyFormatterParams=void 0!==r&&null!=r?r:{},document.execCommand("copy"),i&&i.removeAllRanges())},Clipboard.prototype.setSelector=function(t){switch(t=t||this.table.options.clipboardCopySelector,void 0===t?"undefined":_typeof(t)){case"string":this.copySelectors[t]?this.copySelector=this.copySelectors[t]:console.warn("Clipboard Error - No such selector found:",t);break;case"function":this.copySelector=t}},Clipboard.prototype.setFormatter=function(t){switch(t=t||this.table.options.clipboardCopyFormatter,void 0===t?"undefined":_typeof(t)){case"string":this.copyFormatters[t]?this.copyFormatter=this.copyFormatters[t]:console.warn("Clipboard Error - No such formatter found:",t);break;case"function":this.copyFormatter=t}},Clipboard.prototype.generateContent=function(){var t;return this.htmlElement=!1,t=this.copySelector.call(this,this.config,this.copySelectorParams),this.copyFormatter.call(this,t,this.config,this.copyFormatterParams)},Clipboard.prototype.generateSimpleHeaders=function(t){var o=[];return t.forEach(function(t){o.push(t.definition.title)}),o},Clipboard.prototype.generateColumnGroupHeaders=function(t){var o=this,e=[];return this.table.columnManager.columns.forEach(function(t){var r=o.processColumnGroup(t);r&&e.push(r)}),e},Clipboard.prototype.processColumnGroup=function(t){var o=this,e=t.columns,r={type:"group",title:t.definition.title,column:t};if(e.length){if(r.subGroups=[],r.width=0,e.forEach(function(t){var e=o.processColumnGroup(t);e&&(r.width+=e.width,r.subGroups.push(e))}),!r.width)return!1}else{if(!t.field||!(t.definition.clipboard||t.visible&&!1!==t.definition.clipboard))return!1;r.width=1}return r},Clipboard.prototype.groupHeadersToRows=function(t){function o(t,a){void 0===r[a]&&(r[a]=[]),r[a].push(t.title),t.subGroups?t.subGroups.forEach(function(t){o(t,a+1)}):e()}function e(){var t=0;r.forEach(function(o){var e=o.length;e>t&&(t=e)}),r.forEach(function(o){var e=o.length;if(e<t)for(var r=e;r<t;r++)o.push("")})}var r=[];return t.forEach(function(t){o(t,0)}),r},Clipboard.prototype.rowsToData=function(t,o,e,r){var a=[];return t.forEach(function(t){var e=[],r=t instanceof RowComponent?t.getData("clipboard"):t;o.forEach(function(t){var o=t.getFieldValue(r);switch(void 0===o?"undefined":_typeof(o)){case"object":o=JSON.stringify(o);break;case"undefined":case"null":o="";break;default:o=o}e.push(o)}),a.push(e)}),a},Clipboard.prototype.buildComplexRows=function(t){var o=this,e=[];return this.table.modules.groupRows.getGroups().forEach(function(t){e.push(o.processGroupData(t))}),e},Clipboard.prototype.processGroupData=function(t){var o=this,e=t.getSubGroups(),r={type:"group",key:t.key};return e.length?(r.subGroups=[],e.forEach(function(t){r.subGroups.push(o.processGroupData(t))})):r.rows=t.getRows(!0),r},Clipboard.prototype.getCalcRow=function(t,o,e,r){var a=t[e];return a&&(r&&(a=a[r]),Object.keys(a).length)?this.rowsToData([a],o):[]},Clipboard.prototype.buildOutput=function(t,o,e){var r,a=this,n=[],i=[];return"groups"==o.columnHeaders?(i=this.generateColumnGroupHeaders(this.table.columnManager.columns),n=n.concat(this.groupHeadersToRows(i))):(this.table.columnManager.columnsByIndex.forEach(function(t){(t.definition.clipboard||t.visible&&!1!==t.definition.clipboard)&&i.push(t)}),n.push(this.generateSimpleHeaders(i))),this.config.columnCalcs&&(r=this.table.getCalcResults()),this.table.options.clipboardCopyStyled&&this.generateHTML(t,i,r,o,e),o.rowGroups?t.forEach(function(t){n=n.concat(a.parseRowGroupData(t,i,o,e,r||{}))}):(o.columnCalcs&&(n=n.concat(this.getCalcRow(r,i,"top"))),n=n.concat(this.rowsToData(t,i,o,e)),o.columnCalcs&&(n=n.concat(this.getCalcRow(r,i,"bottom")))),n},Clipboard.prototype.parseRowGroupData=function(t,o,e,r,a){var n=this,i=[];return i.push([t.key]),t.subGroups?t.subGroups.forEach(function(o){i=i.concat(n.parseRowGroupData(o,e,r,a[t.key]?a[t.key].groups||{}:{}))}):(e.columnCalcs&&(i=i.concat(this.getCalcRow(a,o,t.key,"top"))),i=i.concat(this.rowsToData(t.rows,o,e,r)),e.columnCalcs&&(i=i.concat(this.getCalcRow(a,o,t.key,"bottom")))),i},Clipboard.prototype.generateHTML=function(t,o,e,r,a){function n(t,o){void 0===y[o]&&(y[o]=[]),y[o].push({title:t.title,width:t.width,height:1,children:!!t.subGroups,element:t.column.getElement()}),t.subGroups&&t.subGroups.forEach(function(t){n(t,o+1)})}function i(t,o,e){var r=t[o];r&&(e&&(r=r[e]),Object.keys(r).length&&l([r]))}function l(t){t.forEach(function(t,e){var r,a=document.createElement("tr"),n=h,i=!1;t instanceof RowComponent?r=t.getData("clipboard"):(r=t,i=!0),o.forEach(function(t,e){var n=document.createElement("td"),i=t.getFieldValue(r);switch(void 0===i?"undefined":_typeof(i)){case"object":i=JSON.stringify(i);break;case"undefined":case"null":i="";break;default:i=i}n.innerHTML=i,t.definition.align&&(n.style.textAlign=t.definition.align),o.length,b&&g.mapElementStyles(b,n,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size"]),a.appendChild(n)}),i?n=d:(e%2||!p||(n=p),e%2&&u&&(n=u)),n&&g.mapElementStyles(n,a,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),c.appendChild(a)})}function s(t,e){var a=document.createElement("tr"),n=document.createElement("td");n.colSpan=o.length,n.innerHTML=t.key,a.appendChild(n),c.appendChild(a),g.mapElementStyles(f,a,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),t.subGroups?t.subGroups.forEach(function(o){s(o,e[t.key]?e[t.key].groups||{}:{})}):(r.columnCalcs&&i(e,t.key,"top"),l(t.rows),r.columnCalcs&&i(e,t.key,"bottom"))}var c,p,u,d,h,b,f,m,g=this,y=[];this.htmlElement=document.createElement("table"),g.mapElementStyles(this.table.element,this.htmlElement,["border-top","border-left","border-right","border-bottom"]),r.columnHeaders&&("groups"==r.columnHeaders?(o.forEach(function(t){n(t,0)}),function(){y.forEach(function(t,o){t.forEach(function(t){t.children||(t.height=y.length-o)})})}(),function(t){var o=document.createElement("thead");t.forEach(function(t){var e=document.createElement("tr");t.forEach(function(t){var o=document.createElement("th");t.width>1&&(o.colSpan=t.width),t.height>1&&(o.rowSpan=t.height),o.innerHTML=t.title,g.mapElementStyles(t.element,o,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),e.appendChild(o)}),g.mapElementStyles(g.table.columnManager.getHeadersElement(),e,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),o.appendChild(e)}),g.htmlElement.appendChild(o)}(y)):function(){var t=document.createElement("tr");o.forEach(function(o){var e=document.createElement("th");e.innerHTML=o.definition.title,g.mapElementStyles(o.getElement(),e,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),t.appendChild(e)}),g.mapElementStyles(g.table.columnManager.getHeadersElement(),t,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),g.htmlElement.appendChild(document.createElement("thead").appendChild(t))}()),c=document.createElement("tbody"),window.getComputedStyle&&(p=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),u=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),d=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),h=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),f=this.table.element.getElementsByClassName("tabulator-group")[0],h&&(m=h.getElementsByClassName("tabulator-cell"),b=m[0],m[m.length-1])),r.rowGroups?t.forEach(function(t){s(t,e||{})}):(r.columnCalcs&&i(e,"top"),l(t),r.columnCalcs&&i(e,"bottom")),this.htmlElement.appendChild(c)},Clipboard.prototype.mapElementStyles=function(t,o,e){var r={"background-color":"backgroundColor",color:"fontColor","font-weight":"fontWeight","font-family":"fontFamily","font-size":"fontSize","border-top":"borderTop","border-left":"borderLeft","border-right":"borderRight","border-bottom":"borderBottom"};if(window.getComputedStyle){var a=window.getComputedStyle(t);e.forEach(function(t){o.style[r[t]]=a.getPropertyValue(t)})}},Clipboard.prototype.copySelectors={userSelection:function(t,o){return o},selected:function(t,o){var e=[];return this.table.modExists("selectRow",!0)&&(e=this.table.modules.selectRow.getSelectedRows()),t.rowGroups&&console.warn("Clipboard Warning - select coptSelector does not support row groups"),this.buildOutput(e,t,o)},table:function(t,o){return t.rowGroups&&console.warn("Clipboard Warning - table coptSelector does not support row groups"),this.buildOutput(this.table.rowManager.getComponents(),t,o)},active:function(t,o){var e;return e=t.rowGroups?this.buildComplexRows(t):this.table.rowManager.getComponents(!0),this.buildOutput(e,t,o)}},Clipboard.prototype.copyFormatters={raw:function(t,o){return t},table:function(t,o){var e=[];return t.forEach(function(t){t.forEach(function(t){void 0===t&&(t=""),t=void 0===t||null===t?"":t.toString(),t.match(/\r|\n/)&&(t=t.split('"').join('""'),t='"'+t+'"')}),e.push(t.join("\t"))}),e.join("\n")}},Clipboard.prototype.pasteParsers={table:function(t){var o=[],e=!0,r=this.table.columnManager.columns,a=[],n=[];return t=t.split("\n"),t.forEach(function(t){o.push(t.split("\t"))}),!(!o.length||1===o.length&&o[0].length<2)&&(!0,o[0].forEach(function(t){var o=r.find(function(o){return t&&o.definition.title&&t.trim()&&o.definition.title.trim()===t.trim()});o?a.push(o):e=!1}),e||(e=!0,a=[],o[0].forEach(function(t){var o=r.find(function(o){return t&&o.field&&t.trim()&&o.field.trim()===t.trim()});o?a.push(o):e=!1}),e||(a=this.table.columnManager.columnsByIndex)),e&&o.shift(),o.forEach(function(t){var o={};t.forEach(function(t,e){a[e]&&(o[a[e].field]=t)}),n.push(o)}),n)}},Clipboard.prototype.pasteActions={replace:function(t){return this.table.setData(t)},update:function(t){return this.table.updateOrAddData(t)},insert:function(t){return this.table.addData(t)}},Tabulator.prototype.registerModule("clipboard",Clipboard);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/data_tree.js b/backoffice/vendors/tabulator/js.old/modules/data_tree.js
new file mode 100644 (file)
index 0000000..8686cb3
--- /dev/null
@@ -0,0 +1,341 @@
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+
+var DataTree = function DataTree(table) {
+       this.table = table;
+       this.indent = 10;
+       this.field = "";
+       this.collapseEl = null;
+       this.expandEl = null;
+       this.branchEl = null;
+       this.elementField = false;
+
+       this.startOpen = function () {};
+
+       this.displayIndex = 0;
+};
+
+DataTree.prototype.initialize = function () {
+       var dummyEl = null,
+           firstCol = this.table.columnManager.getFirstVisibileColumn(),
+           options = this.table.options;
+
+       this.field = options.dataTreeChildField;
+       this.indent = options.dataTreeChildIndent;
+       this.elementField = options.dataTreeElementColumn || (firstCol ? firstCol.field : false);
+
+       if (options.dataTreeBranchElement) {
+
+               if (options.dataTreeBranchElement === true) {
+                       this.branchEl = document.createElement("div");
+                       this.branchEl.classList.add("tabulator-data-tree-branch");
+               } else {
+                       if (typeof options.dataTreeBranchElement === "string") {
+                               dummyEl = document.createElement("div");
+                               dummyEl.innerHTML = options.dataTreeBranchElement;
+                               this.branchEl = dummyEl.firstChild;
+                       } else {
+                               this.branchEl = options.dataTreeBranchElement;
+                       }
+               }
+       }
+
+       if (options.dataTreeCollapseElement) {
+               if (typeof options.dataTreeCollapseElement === "string") {
+                       dummyEl = document.createElement("div");
+                       dummyEl.innerHTML = options.dataTreeCollapseElement;
+                       this.collapseEl = dummyEl.firstChild;
+               } else {
+                       this.collapseEl = options.dataTreeCollapseElement;
+               }
+       } else {
+               this.collapseEl = document.createElement("div");
+               this.collapseEl.classList.add("tabulator-data-tree-control");
+               this.collapseEl.tabIndex = 0;
+               this.collapseEl.innerHTML = "<div class='tabulator-data-tree-control-collapse'></div>";
+       }
+
+       if (options.dataTreeExpandElement) {
+               if (typeof options.dataTreeExpandElement === "string") {
+                       dummyEl = document.createElement("div");
+                       dummyEl.innerHTML = options.dataTreeExpandElement;
+                       this.expandEl = dummyEl.firstChild;
+               } else {
+                       this.expandEl = options.dataTreeExpandElement;
+               }
+       } else {
+               this.expandEl = document.createElement("div");
+               this.expandEl.classList.add("tabulator-data-tree-control");
+               this.expandEl.tabIndex = 0;
+               this.expandEl.innerHTML = "<div class='tabulator-data-tree-control-expand'></div>";
+       }
+
+       switch (_typeof(options.dataTreeStartExpanded)) {
+               case "boolean":
+                       this.startOpen = function (row, index) {
+                               return options.dataTreeStartExpanded;
+                       };
+                       break;
+
+               case "function":
+                       this.startOpen = options.dataTreeStartExpanded;
+                       break;
+
+               default:
+                       this.startOpen = function (row, index) {
+                               return options.dataTreeStartExpanded[index];
+                       };
+                       break;
+       }
+};
+
+DataTree.prototype.initializeRow = function (row) {
+       var childArray = row.getData()[this.field];
+       var isArray = Array.isArray(childArray);
+
+       var children = isArray || !isArray && (typeof childArray === "undefined" ? "undefined" : _typeof(childArray)) === "object" && childArray !== null;
+
+       row.modules.dataTree = {
+               index: 0,
+               open: children ? this.startOpen(row.getComponent(), 0) : false,
+               controlEl: false,
+               branchEl: false,
+               parent: false,
+               children: children
+       };
+};
+
+DataTree.prototype.layoutRow = function (row) {
+       var cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0],
+           el = cell.getElement(),
+           config = row.modules.dataTree;
+
+       if (config.branchEl) {
+               config.branchEl.parentNode.removeChild(config.branchEl);
+       }
+
+       this.generateControlElement(row, el);
+
+       if (config.index) {
+               if (this.branchEl) {
+                       config.branchEl = this.branchEl.cloneNode(true);
+                       el.insertBefore(config.branchEl, el.firstChild);
+                       config.branchEl.style.marginLeft = (config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1) + config.index * this.indent + "px";
+               } else {
+                       el.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + config.index * this.indent + "px";
+               }
+       }
+};
+
+DataTree.prototype.generateControlElement = function (row, el) {
+       var _this = this;
+
+       var config = row.modules.dataTree,
+           el = el || row.getCells()[0].getElement(),
+           oldControl = config.controlEl;
+
+       if (config.children !== false) {
+
+               if (config.open) {
+                       config.controlEl = this.collapseEl.cloneNode(true);
+                       config.controlEl.addEventListener("click", function (e) {
+                               e.stopPropagation();
+                               _this.collapseRow(row);
+                       });
+               } else {
+                       config.controlEl = this.expandEl.cloneNode(true);
+                       config.controlEl.addEventListener("click", function (e) {
+                               e.stopPropagation();
+                               _this.expandRow(row);
+                       });
+               }
+
+               config.controlEl.addEventListener("mousedown", function (e) {
+                       e.stopPropagation();
+               });
+
+               if (oldControl && oldControl.parentNode === el) {
+                       oldControl.parentNode.replaceChild(config.controlEl, oldControl);
+               } else {
+                       el.insertBefore(config.controlEl, el.firstChild);
+               }
+       }
+};
+
+DataTree.prototype.setDisplayIndex = function (index) {
+       this.displayIndex = index;
+};
+
+DataTree.prototype.getDisplayIndex = function () {
+       return this.displayIndex;
+};
+
+DataTree.prototype.getRows = function (rows) {
+       var _this2 = this;
+
+       var output = [];
+
+       rows.forEach(function (row, i) {
+               var config, children;
+
+               output.push(row);
+
+               if (row instanceof Row) {
+
+                       config = row.modules.dataTree.children;
+
+                       if (!config.index && config.children !== false) {
+                               children = _this2.getChildren(row);
+
+                               children.forEach(function (child) {
+                                       output.push(child);
+                               });
+                       }
+               }
+       });
+
+       return output;
+};
+
+DataTree.prototype.getChildren = function (row) {
+       var _this3 = this;
+
+       var config = row.modules.dataTree,
+           children = [],
+           output = [];
+
+       if (config.children !== false && config.open) {
+               if (!Array.isArray(config.children)) {
+                       config.children = this.generateChildren(row);
+               }
+
+               if (this.table.modExists("filter")) {
+                       children = this.table.modules.filter.filter(config.children);
+               } else {
+                       children = config.children;
+               }
+
+               if (this.table.modExists("sort")) {
+                       this.table.modules.sort.sort(children);
+               }
+
+               children.forEach(function (child) {
+                       output.push(child);
+
+                       var subChildren = _this3.getChildren(child);
+
+                       subChildren.forEach(function (sub) {
+                               output.push(sub);
+                       });
+               });
+       }
+
+       return output;
+};
+
+DataTree.prototype.generateChildren = function (row) {
+       var _this4 = this;
+
+       var children = [];
+
+       var childArray = row.getData()[this.field];
+
+       if (!Array.isArray(childArray)) {
+               childArray = [childArray];
+       }
+
+       childArray.forEach(function (childData) {
+               var childRow = new Row(childData || {}, _this4.table.rowManager);
+               childRow.modules.dataTree.index = row.modules.dataTree.index + 1;
+               childRow.modules.dataTree.parent = row;
+               if (childRow.modules.dataTree.children) {
+                       childRow.modules.dataTree.open = _this4.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);
+               }
+               children.push(childRow);
+       });
+
+       return children;
+};
+
+DataTree.prototype.expandRow = function (row, silent) {
+       var config = row.modules.dataTree;
+
+       if (config.children !== false) {
+               config.open = true;
+
+               row.reinitialize();
+
+               this.table.rowManager.refreshActiveData("tree", false, true);
+
+               this.table.options.dataTreeRowExpanded(row.getComponent(), row.modules.dataTree.index);
+       }
+};
+
+DataTree.prototype.collapseRow = function (row) {
+       var config = row.modules.dataTree;
+
+       if (config.children !== false) {
+               config.open = false;
+
+               row.reinitialize();
+
+               this.table.rowManager.refreshActiveData("tree", false, true);
+
+               this.table.options.dataTreeRowCollapsed(row.getComponent(), row.modules.dataTree.index);
+       }
+};
+
+DataTree.prototype.toggleRow = function (row) {
+       var config = row.modules.dataTree;
+
+       if (config.children !== false) {
+               if (config.open) {
+                       this.collapseRow(row);
+               } else {
+                       this.expandRow(row);
+               }
+       }
+};
+
+DataTree.prototype.getTreeParent = function (row) {
+       return row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false;
+};
+
+DataTree.prototype.getTreeChildren = function (row) {
+       var config = row.modules.dataTree,
+           output = [];
+
+       if (config.children) {
+
+               if (!Array.isArray(config.children)) {
+                       config.children = this.generateChildren(row);
+               }
+
+               config.children.forEach(function (childRow) {
+                       if (childRow instanceof Row) {
+                               output.push(childRow.getComponent());
+                       }
+               });
+       }
+
+       return output;
+};
+
+DataTree.prototype.checkForRestyle = function (cell) {
+       if (!cell.row.cells.indexOf(cell)) {
+               if (cell.row.modules.dataTree.children !== false) {
+                       cell.row.reinitialize();
+               }
+       }
+};
+
+DataTree.prototype.getChildField = function () {
+       return this.field;
+};
+
+DataTree.prototype.redrawNeeded = function (data) {
+       return (this.field ? typeof data[this.field] !== "undefined" : false) || (this.elementField ? typeof data[this.elementField] !== "undefined" : false);
+};
+
+Tabulator.prototype.registerModule("dataTree", DataTree);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/data_tree.min.js b/backoffice/vendors/tabulator/js.old/modules/data_tree.min.js
new file mode 100644 (file)
index 0000000..c98b238
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+var _typeof="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},DataTree=function(e){this.table=e,this.indent=10,this.field="",this.collapseEl=null,this.expandEl=null,this.branchEl=null,this.elementField=!1,this.startOpen=function(){},this.displayIndex=0};DataTree.prototype.initialize=function(){var e=null,t=this.table.columnManager.getFirstVisibileColumn(),a=this.table.options;switch(this.field=a.dataTreeChildField,this.indent=a.dataTreeChildIndent,this.elementField=a.dataTreeElementColumn||!!t&&t.field,a.dataTreeBranchElement&&(!0===a.dataTreeBranchElement?(this.branchEl=document.createElement("div"),this.branchEl.classList.add("tabulator-data-tree-branch")):"string"==typeof a.dataTreeBranchElement?(e=document.createElement("div"),e.innerHTML=a.dataTreeBranchElement,this.branchEl=e.firstChild):this.branchEl=a.dataTreeBranchElement),a.dataTreeCollapseElement?"string"==typeof a.dataTreeCollapseElement?(e=document.createElement("div"),e.innerHTML=a.dataTreeCollapseElement,this.collapseEl=e.firstChild):this.collapseEl=a.dataTreeCollapseElement:(this.collapseEl=document.createElement("div"),this.collapseEl.classList.add("tabulator-data-tree-control"),this.collapseEl.tabIndex=0,this.collapseEl.innerHTML="<div class='tabulator-data-tree-control-collapse'></div>"),a.dataTreeExpandElement?"string"==typeof a.dataTreeExpandElement?(e=document.createElement("div"),e.innerHTML=a.dataTreeExpandElement,this.expandEl=e.firstChild):this.expandEl=a.dataTreeExpandElement:(this.expandEl=document.createElement("div"),this.expandEl.classList.add("tabulator-data-tree-control"),this.expandEl.tabIndex=0,this.expandEl.innerHTML="<div class='tabulator-data-tree-control-expand'></div>"),_typeof(a.dataTreeStartExpanded)){case"boolean":this.startOpen=function(e,t){return a.dataTreeStartExpanded};break;case"function":this.startOpen=a.dataTreeStartExpanded;break;default:this.startOpen=function(e,t){return a.dataTreeStartExpanded[t]}}},DataTree.prototype.initializeRow=function(e){var t=e.getData()[this.field],a=Array.isArray(t),n=a||!a&&"object"===(void 0===t?"undefined":_typeof(t))&&null!==t;e.modules.dataTree={index:0,open:!!n&&this.startOpen(e.getComponent(),0),controlEl:!1,branchEl:!1,parent:!1,children:n}},DataTree.prototype.layoutRow=function(e){var t=this.elementField?e.getCell(this.elementField):e.getCells()[0],a=t.getElement(),n=e.modules.dataTree;n.branchEl&&n.branchEl.parentNode.removeChild(n.branchEl),this.generateControlElement(e,a),n.index&&(this.branchEl?(n.branchEl=this.branchEl.cloneNode(!0),a.insertBefore(n.branchEl,a.firstChild),n.branchEl.style.marginLeft=(n.branchEl.offsetWidth+n.branchEl.style.marginRight)*(n.index-1)+n.index*this.indent+"px"):a.style.paddingLeft=parseInt(window.getComputedStyle(a,null).getPropertyValue("padding-left"))+n.index*this.indent+"px")},DataTree.prototype.generateControlElement=function(e,t){var a=this,n=e.modules.dataTree,t=t||e.getCells()[0].getElement(),r=n.controlEl;!1!==n.children&&(n.open?(n.controlEl=this.collapseEl.cloneNode(!0),n.controlEl.addEventListener("click",function(t){t.stopPropagation(),a.collapseRow(e)})):(n.controlEl=this.expandEl.cloneNode(!0),n.controlEl.addEventListener("click",function(t){t.stopPropagation(),a.expandRow(e)})),n.controlEl.addEventListener("mousedown",function(e){e.stopPropagation()}),r&&r.parentNode===t?r.parentNode.replaceChild(n.controlEl,r):t.insertBefore(n.controlEl,t.firstChild))},DataTree.prototype.setDisplayIndex=function(e){this.displayIndex=e},DataTree.prototype.getDisplayIndex=function(){return this.displayIndex},DataTree.prototype.getRows=function(e){var t=this,a=[];return e.forEach(function(e,n){var r,l;a.push(e),e instanceof Row&&(r=e.modules.dataTree.children,r.index||!1===r.children||(l=t.getChildren(e),l.forEach(function(e){a.push(e)})))}),a},DataTree.prototype.getChildren=function(e){var t=this,a=e.modules.dataTree,n=[],r=[];return!1!==a.children&&a.open&&(Array.isArray(a.children)||(a.children=this.generateChildren(e)),n=this.table.modExists("filter")?this.table.modules.filter.filter(a.children):a.children,this.table.modExists("sort")&&this.table.modules.sort.sort(n),n.forEach(function(e){r.push(e),t.getChildren(e).forEach(function(e){r.push(e)})})),r},DataTree.prototype.generateChildren=function(e){var t=this,a=[],n=e.getData()[this.field];return Array.isArray(n)||(n=[n]),n.forEach(function(n){var r=new Row(n||{},t.table.rowManager);r.modules.dataTree.index=e.modules.dataTree.index+1,r.modules.dataTree.parent=e,r.modules.dataTree.children&&(r.modules.dataTree.open=t.startOpen(r.getComponent(),r.modules.dataTree.index)),a.push(r)}),a},DataTree.prototype.expandRow=function(e,t){var a=e.modules.dataTree;!1!==a.children&&(a.open=!0,e.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowExpanded(e.getComponent(),e.modules.dataTree.index))},DataTree.prototype.collapseRow=function(e){var t=e.modules.dataTree;!1!==t.children&&(t.open=!1,e.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowCollapsed(e.getComponent(),e.modules.dataTree.index))},DataTree.prototype.toggleRow=function(e){var t=e.modules.dataTree;!1!==t.children&&(t.open?this.collapseRow(e):this.expandRow(e))},DataTree.prototype.getTreeParent=function(e){return!!e.modules.dataTree.parent&&e.modules.dataTree.parent.getComponent()},DataTree.prototype.getTreeChildren=function(e){var t=e.modules.dataTree,a=[];return t.children&&(Array.isArray(t.children)||(t.children=this.generateChildren(e)),t.children.forEach(function(e){e instanceof Row&&a.push(e.getComponent())})),a},DataTree.prototype.checkForRestyle=function(e){e.row.cells.indexOf(e)||!1!==e.row.modules.dataTree.children&&e.row.reinitialize()},DataTree.prototype.getChildField=function(){return this.field},DataTree.prototype.redrawNeeded=function(e){return!!this.field&&void 0!==e[this.field]||!!this.elementField&&void 0!==e[this.elementField]},Tabulator.prototype.registerModule("dataTree",DataTree);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/download.js b/backoffice/vendors/tabulator/js.old/modules/download.js
new file mode 100644 (file)
index 0000000..277bbf0
--- /dev/null
@@ -0,0 +1,900 @@
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+
+var Download = function Download(table) {
+       this.table = table; //hold Tabulator object
+       this.fields = {}; //hold filed multi dimension arrays
+       this.columnsByIndex = []; //hold columns in their order in the table
+       this.columnsByField = {}; //hold columns with lookup by field name
+       this.config = {};
+};
+
+//trigger file download
+Download.prototype.download = function (type, filename, options, interceptCallback) {
+       var self = this,
+           downloadFunc = false;
+       this.processConfig();
+
+       function buildLink(data, mime) {
+               if (interceptCallback) {
+                       if (interceptCallback === true) {
+                               self.triggerDownload(data, mime, type, filename, true);
+                       } else {
+                               interceptCallback(data);
+                       }
+               } else {
+                       self.triggerDownload(data, mime, type, filename);
+               }
+       }
+
+       if (typeof type == "function") {
+               downloadFunc = type;
+       } else {
+               if (self.downloaders[type]) {
+                       downloadFunc = self.downloaders[type];
+               } else {
+                       console.warn("Download Error - No such download type found: ", type);
+               }
+       }
+
+       this.processColumns();
+
+       if (downloadFunc) {
+               downloadFunc.call(this, self.processDefinitions(), self.processData(), options || {}, buildLink, this.config);
+       }
+};
+
+Download.prototype.processConfig = function () {
+       var config = { //download config
+               columnGroups: true,
+               rowGroups: true,
+               columnCalcs: true
+       };
+
+       if (this.table.options.downloadConfig) {
+               for (var key in this.table.options.downloadConfig) {
+                       config[key] = this.table.options.downloadConfig[key];
+               }
+       }
+
+       if (config.rowGroups && this.table.options.groupBy && this.table.modExists("groupRows")) {
+               this.config.rowGroups = true;
+       }
+
+       if (config.columnGroups && this.table.columnManager.columns.length != this.table.columnManager.columnsByIndex.length) {
+               this.config.columnGroups = true;
+       }
+
+       if (config.columnCalcs && this.table.modExists("columnCalcs")) {
+               this.config.columnCalcs = true;
+       }
+};
+
+Download.prototype.processColumns = function () {
+       var self = this;
+
+       self.columnsByIndex = [];
+       self.columnsByField = {};
+
+       self.table.columnManager.columnsByIndex.forEach(function (column) {
+
+               if (column.field && column.definition.download !== false && (column.visible || !column.visible && column.definition.download)) {
+                       self.columnsByIndex.push(column);
+                       self.columnsByField[column.field] = column;
+               }
+       });
+};
+
+Download.prototype.processDefinitions = function () {
+       var self = this,
+           processedDefinitions = [];
+
+       if (this.config.columnGroups) {
+               self.table.columnManager.columns.forEach(function (column) {
+                       var colData = self.processColumnGroup(column);
+
+                       if (colData) {
+                               processedDefinitions.push(colData);
+                       }
+               });
+       } else {
+               self.columnsByIndex.forEach(function (column) {
+                       if (column.download !== false) {
+                               //isolate definiton from defintion object
+                               processedDefinitions.push(self.processDefinition(column));
+                       }
+               });
+       }
+
+       return processedDefinitions;
+};
+
+Download.prototype.processColumnGroup = function (column) {
+       var _this = this;
+
+       var subGroups = column.columns,
+           maxDepth = 0;
+       var processedColumn = this.processDefinition(column);
+       var groupData = {
+               type: "group",
+               title: processedColumn.title,
+               depth: 1
+       };
+
+       if (subGroups.length) {
+               groupData.subGroups = [];
+               groupData.width = 0;
+
+               subGroups.forEach(function (subGroup) {
+                       var subGroupData = _this.processColumnGroup(subGroup);
+
+                       if (subGroupData.depth > maxDepth) {
+                               maxDepth = subGroupData.depth;
+                       }
+
+                       if (subGroupData) {
+                               groupData.width += subGroupData.width;
+                               groupData.subGroups.push(subGroupData);
+                       }
+               });
+
+               groupData.depth += maxDepth;
+
+               if (!groupData.width) {
+                       return false;
+               }
+       } else {
+               if (column.field && column.definition.download !== false && (column.visible || !column.visible && column.definition.download)) {
+                       groupData.width = 1;
+                       groupData.definition = processedColumn;
+               } else {
+                       return false;
+               }
+       }
+
+       return groupData;
+};
+
+Download.prototype.processDefinition = function (column) {
+       var def = {};
+
+       for (var key in column.definition) {
+               def[key] = column.definition[key];
+       }
+
+       if (typeof column.definition.downloadTitle != "undefined") {
+               def.title = column.definition.downloadTitle;
+       }
+
+       return def;
+};
+
+Download.prototype.processData = function () {
+       var _this2 = this;
+
+       var self = this,
+           data = [],
+           groups = [],
+           calcs = {};
+
+       if (this.config.rowGroups) {
+               groups = this.table.modules.groupRows.getGroups();
+
+               groups.forEach(function (group) {
+                       data.push(_this2.processGroupData(group));
+               });
+       } else {
+               data = self.table.rowManager.getData(true, "download");
+       }
+
+       if (this.config.columnCalcs) {
+               calcs = this.table.getCalcResults();
+
+               data = {
+                       calcs: calcs,
+                       data: data
+               };
+       }
+
+       //bulk data processing
+       if (typeof self.table.options.downloadDataFormatter == "function") {
+               data = self.table.options.downloadDataFormatter(data);
+       }
+
+       return data;
+};
+
+Download.prototype.processGroupData = function (group) {
+       var _this3 = this;
+
+       var subGroups = group.getSubGroups();
+
+       var groupData = {
+               type: "group",
+               key: group.key
+       };
+
+       if (subGroups.length) {
+               groupData.subGroups = [];
+
+               subGroups.forEach(function (subGroup) {
+                       groupData.subGroups.push(_this3.processGroupData(subGroup));
+               });
+       } else {
+               groupData.rows = group.getData(true, "download");
+       }
+
+       return groupData;
+};
+
+Download.prototype.triggerDownload = function (data, mime, type, filename, newTab) {
+       var element = document.createElement('a'),
+           blob = new Blob([data], { type: mime }),
+           filename = filename || "Tabulator." + (typeof type === "function" ? "txt" : type);
+
+       blob = this.table.options.downloadReady.call(this.table, data, blob);
+
+       if (blob) {
+
+               if (newTab) {
+                       window.open(window.URL.createObjectURL(blob));
+               } else {
+                       if (navigator.msSaveOrOpenBlob) {
+                               navigator.msSaveOrOpenBlob(blob, filename);
+                       } else {
+                               element.setAttribute('href', window.URL.createObjectURL(blob));
+
+                               //set file title
+                               element.setAttribute('download', filename);
+
+                               //trigger download
+                               element.style.display = 'none';
+                               document.body.appendChild(element);
+                               element.click();
+
+                               //remove temporary link element
+                               document.body.removeChild(element);
+                       }
+               }
+
+               if (this.table.options.downloadComplete) {
+                       this.table.options.downloadComplete();
+               }
+       }
+};
+
+//nested field lookup
+Download.prototype.getFieldValue = function (field, data) {
+       var column = this.columnsByField[field];
+
+       if (column) {
+               return column.getFieldValue(data);
+       }
+
+       return false;
+};
+
+Download.prototype.commsReceived = function (table, action, data) {
+       switch (action) {
+               case "intercept":
+                       this.download(data.type, "", data.options, data.intercept);
+                       break;
+       }
+};
+
+//downloaders
+Download.prototype.downloaders = {
+       csv: function csv(columns, data, options, setFileContents, config) {
+               var self = this,
+                   titles = [],
+                   fields = [],
+                   delimiter = options && options.delimiter ? options.delimiter : ",",
+                   fileContents,
+                   output;
+
+               //build column headers
+               function parseSimpleTitles() {
+                       columns.forEach(function (column) {
+                               titles.push('"' + String(column.title).split('"').join('""') + '"');
+                               fields.push(column.field);
+                       });
+               }
+
+               function parseColumnGroup(column, level) {
+                       if (column.subGroups) {
+                               column.subGroups.forEach(function (subGroup) {
+                                       parseColumnGroup(subGroup, level + 1);
+                               });
+                       } else {
+                               titles.push('"' + String(column.title).split('"').join('""') + '"');
+                               fields.push(column.definition.field);
+                       }
+               }
+
+               if (config.columnGroups) {
+                       console.warn("Download Warning - CSV downloader cannot process column groups");
+
+                       columns.forEach(function (column) {
+                               parseColumnGroup(column, 0);
+                       });
+               } else {
+                       parseSimpleTitles();
+               }
+
+               //generate header row
+               fileContents = [titles.join(delimiter)];
+
+               function parseRows(data) {
+                       //generate each row of the table
+                       data.forEach(function (row) {
+                               var rowData = [];
+
+                               fields.forEach(function (field) {
+                                       var value = self.getFieldValue(field, row);
+
+                                       switch (typeof value === "undefined" ? "undefined" : _typeof(value)) {
+                                               case "object":
+                                                       value = JSON.stringify(value);
+                                                       break;
+
+                                               case "undefined":
+                                               case "null":
+                                                       value = "";
+                                                       break;
+
+                                               default:
+                                                       value = value;
+                                       }
+
+                                       //escape quotation marks
+                                       rowData.push('"' + String(value).split('"').join('""') + '"');
+                               });
+
+                               fileContents.push(rowData.join(delimiter));
+                       });
+               }
+
+               function parseGroup(group) {
+                       if (group.subGroups) {
+                               group.subGroups.forEach(function (subGroup) {
+                                       parseGroup(subGroup);
+                               });
+                       } else {
+                               parseRows(group.rows);
+                       }
+               }
+
+               if (config.columnCalcs) {
+                       console.warn("Download Warning - CSV downloader cannot process column calculations");
+                       data = data.data;
+               }
+
+               if (config.rowGroups) {
+                       console.warn("Download Warning - CSV downloader cannot process row groups");
+
+                       data.forEach(function (group) {
+                               parseGroup(group);
+                       });
+               } else {
+                       parseRows(data);
+               }
+
+               output = fileContents.join("\n");
+
+               if (options.bom) {
+                       output = "\uFEFF" + output;
+               }
+
+               setFileContents(output, "text/csv");
+       },
+
+       json: function json(columns, data, options, setFileContents, config) {
+               var fileContents;
+
+               if (config.columnCalcs) {
+                       console.warn("Download Warning - CSV downloader cannot process column calculations");
+                       data = data.data;
+               }
+
+               fileContents = JSON.stringify(data, null, '\t');
+
+               setFileContents(fileContents, "application/json");
+       },
+
+       pdf: function pdf(columns, data, options, setFileContents, config) {
+               var self = this,
+                   fields = [],
+                   header = [],
+                   body = [],
+                   calcs = {},
+                   headerDepth = 1,
+                   table = "",
+                   autoTableParams = {},
+                   rowGroupStyles = options.rowGroupStyles || {
+                       fontStyle: "bold",
+                       fontSize: 12,
+                       cellPadding: 6,
+                       fillColor: 220
+               },
+                   rowCalcStyles = options.rowCalcStyles || {
+                       fontStyle: "bold",
+                       fontSize: 10,
+                       cellPadding: 4,
+                       fillColor: 232
+               },
+                   jsPDFParams = options.jsPDF || {},
+                   title = options && options.title ? options.title : "";
+
+               if (config.columnCalcs) {
+                       calcs = data.calcs;
+                       data = data.data;
+               }
+
+               if (!jsPDFParams.orientation) {
+                       jsPDFParams.orientation = options.orientation || "landscape";
+               }
+
+               if (!jsPDFParams.unit) {
+                       jsPDFParams.unit = "pt";
+               }
+
+               //build column headers
+               function parseSimpleTitles() {
+                       columns.forEach(function (column) {
+                               if (column.field) {
+                                       header.push(column.title || "");
+                                       fields.push(column.field);
+                               }
+                       });
+
+                       header = [header];
+               }
+
+               function parseColumnGroup(column, level) {
+                       var colSpan = column.width,
+                           rowSpan = 1,
+                           col = {
+                               content: column.title || ""
+                       };
+
+                       if (column.subGroups) {
+                               column.subGroups.forEach(function (subGroup) {
+                                       parseColumnGroup(subGroup, level + 1);
+                               });
+                               rowSpan = 1;
+                       } else {
+                               fields.push(column.definition.field);
+                               rowSpan = headerDepth - level;
+                       }
+
+                       col.rowSpan = rowSpan;
+                       // col.colSpan = colSpan;
+
+                       header[level].push(col);
+
+                       colSpan--;
+
+                       if (rowSpan > 1) {
+                               for (var i = level + 1; i < headerDepth; i++) {
+                                       header[i].push("");
+                               }
+                       }
+
+                       for (var i = 0; i < colSpan; i++) {
+                               header[level].push("");
+                       }
+               }
+
+               if (config.columnGroups) {
+                       columns.forEach(function (column) {
+                               if (column.depth > headerDepth) {
+                                       headerDepth = column.depth;
+                               }
+                       });
+
+                       for (var i = 0; i < headerDepth; i++) {
+                               header.push([]);
+                       }
+
+                       columns.forEach(function (column) {
+                               parseColumnGroup(column, 0);
+                       });
+               } else {
+                       parseSimpleTitles();
+               }
+
+               function parseValue(value) {
+                       switch (typeof value === "undefined" ? "undefined" : _typeof(value)) {
+                               case "object":
+                                       value = JSON.stringify(value);
+                                       break;
+
+                               case "undefined":
+                               case "null":
+                                       value = "";
+                                       break;
+
+                               default:
+                                       value = value;
+                       }
+
+                       return value;
+               }
+
+               function parseRows(data) {
+                       //build table rows
+                       data.forEach(function (row) {
+                               body.push(parseRow(row));
+                       });
+               }
+
+               function parseRow(row, styles) {
+                       var rowData = [];
+
+                       fields.forEach(function (field) {
+                               var value = self.getFieldValue(field, row);
+                               value = parseValue(value);
+
+                               if (styles) {
+                                       rowData.push({
+                                               content: value,
+                                               styles: styles
+                                       });
+                               } else {
+                                       rowData.push(value);
+                               }
+                       });
+
+                       return rowData;
+               }
+
+               function parseGroup(group, calcObj) {
+                       var groupData = [];
+
+                       groupData.push({ content: parseValue(group.key), colSpan: fields.length, styles: rowGroupStyles });
+
+                       body.push(groupData);
+
+                       if (group.subGroups) {
+                               group.subGroups.forEach(function (subGroup) {
+                                       parseGroup(subGroup, calcObj[group.key] ? calcObj[group.key].groups || {} : {});
+                               });
+                       } else {
+
+                               if (config.columnCalcs) {
+                                       addCalcRow(calcObj, group.key, "top");
+                               }
+
+                               parseRows(group.rows);
+
+                               if (config.columnCalcs) {
+                                       addCalcRow(calcObj, group.key, "bottom");
+                               }
+                       }
+               }
+
+               function addCalcRow(calcs, selector, pos) {
+                       var calcData = calcs[selector];
+
+                       if (calcData) {
+                               if (pos) {
+                                       calcData = calcData[pos];
+                               }
+
+                               if (Object.keys(calcData).length) {
+                                       body.push(parseRow(calcData, rowCalcStyles));
+                               }
+                       }
+               }
+
+               if (config.rowGroups) {
+                       data.forEach(function (group) {
+                               parseGroup(group, calcs);
+                       });
+               } else {
+                       if (config.columnCalcs) {
+                               addCalcRow(calcs, "top");
+                       }
+
+                       parseRows(data);
+
+                       if (config.columnCalcs) {
+                               addCalcRow(calcs, "bottom");
+                       }
+               }
+
+               var doc = new jsPDF(jsPDFParams); //set document to landscape, better for most tables
+
+               if (options && options.autoTable) {
+                       if (typeof options.autoTable === "function") {
+                               autoTableParams = options.autoTable(doc) || {};
+                       } else {
+                               autoTableParams = options.autoTable;
+                       }
+               }
+
+               if (title) {
+                       autoTableParams.addPageContent = function (data) {
+                               doc.text(title, 40, 30);
+                       };
+               }
+
+               autoTableParams.head = header;
+               autoTableParams.body = body;
+
+               doc.autoTable(autoTableParams);
+
+               if (options && options.documentProcessing) {
+                       options.documentProcessing(doc);
+               }
+
+               setFileContents(doc.output("arraybuffer"), "application/pdf");
+       },
+
+       xlsx: function xlsx(columns, data, options, setFileContents, config) {
+               var self = this,
+                   sheetName = options.sheetName || "Sheet1",
+                   workbook = { SheetNames: [], Sheets: {} },
+                   calcs = {},
+                   groupRowIndexs = [],
+                   groupColumnIndexs = [],
+                   calcRowIndexs = [],
+                   output;
+
+               if (config.columnCalcs) {
+                       calcs = data.calcs;
+                       data = data.data;
+               }
+
+               function generateSheet() {
+                       var titles = [],
+                           fields = [],
+                           rows = [],
+                           worksheet;
+
+                       //convert rows to worksheet
+                       function rowsToSheet() {
+                               var sheet = {};
+                               var range = { s: { c: 0, r: 0 }, e: { c: fields.length, r: rows.length } };
+
+                               XLSX.utils.sheet_add_aoa(sheet, rows);
+
+                               sheet['!ref'] = XLSX.utils.encode_range(range);
+
+                               var merges = generateMerges();
+
+                               if (merges.length) {
+                                       sheet["!merges"] = merges;
+                               }
+
+                               return sheet;
+                       }
+
+                       function parseSimpleTitles() {
+                               //get field lists
+                               columns.forEach(function (column) {
+                                       titles.push(column.title);
+                                       fields.push(column.field);
+                               });
+
+                               rows.push(titles);
+                       }
+
+                       function parseColumnGroup(column, level) {
+
+                               if (typeof titles[level] === "undefined") {
+                                       titles[level] = [];
+                               }
+
+                               if (typeof groupColumnIndexs[level] === "undefined") {
+                                       groupColumnIndexs[level] = [];
+                               }
+
+                               if (column.width > 1) {
+
+                                       groupColumnIndexs[level].push({
+                                               type: "hoz",
+                                               start: titles[level].length,
+                                               end: titles[level].length + column.width - 1
+                                       });
+                               }
+
+                               titles[level].push(column.title);
+
+                               if (column.subGroups) {
+                                       column.subGroups.forEach(function (subGroup) {
+                                               parseColumnGroup(subGroup, level + 1);
+                                       });
+                               } else {
+                                       fields.push(column.definition.field);
+                                       padColumnTitles(fields.length - 1, level);
+
+                                       groupColumnIndexs[level].push({
+                                               type: "vert",
+                                               start: fields.length - 1
+                                       });
+                               }
+                       }
+
+                       function padColumnTitles() {
+                               var max = 0;
+
+                               titles.forEach(function (title) {
+                                       var len = title.length;
+                                       if (len > max) {
+                                               max = len;
+                                       }
+                               });
+
+                               titles.forEach(function (title) {
+                                       var len = title.length;
+                                       if (len < max) {
+                                               for (var i = len; i < max; i++) {
+                                                       title.push("");
+                                               }
+                                       }
+                               });
+                       }
+
+                       if (config.columnGroups) {
+                               columns.forEach(function (column) {
+                                       parseColumnGroup(column, 0);
+                               });
+
+                               titles.forEach(function (title) {
+                                       rows.push(title);
+                               });
+                       } else {
+                               parseSimpleTitles();
+                       }
+
+                       function generateMerges() {
+                               var output = [];
+
+                               groupRowIndexs.forEach(function (index) {
+                                       output.push({ s: { r: index, c: 0 }, e: { r: index, c: fields.length - 1 } });
+                               });
+
+                               groupColumnIndexs.forEach(function (merges, level) {
+                                       merges.forEach(function (merge) {
+                                               if (merge.type === "hoz") {
+                                                       output.push({ s: { r: level, c: merge.start }, e: { r: level, c: merge.end } });
+                                               } else {
+                                                       if (level != titles.length - 1) {
+                                                               output.push({ s: { r: level, c: merge.start }, e: { r: titles.length - 1, c: merge.start } });
+                                                       }
+                                               }
+                                       });
+                               });
+
+                               return output;
+                       }
+
+                       //generate each row of the table
+                       function parseRows(data) {
+                               data.forEach(function (row) {
+                                       rows.push(parseRow(row));
+                               });
+                       }
+
+                       function parseRow(row) {
+                               var rowData = [];
+
+                               fields.forEach(function (field) {
+                                       var value = self.getFieldValue(field, row);
+                                       rowData.push(!(value instanceof Date) && (typeof value === "undefined" ? "undefined" : _typeof(value)) === "object" ? JSON.stringify(value) : value);
+                               });
+
+                               return rowData;
+                       }
+
+                       function addCalcRow(calcs, selector, pos) {
+                               var calcData = calcs[selector];
+
+                               if (calcData) {
+                                       if (pos) {
+                                               calcData = calcData[pos];
+                                       }
+
+                                       if (Object.keys(calcData).length) {
+                                               calcRowIndexs.push(rows.length);
+                                               rows.push(parseRow(calcData));
+                                       }
+                               }
+                       }
+
+                       function parseGroup(group, calcObj) {
+                               var groupData = [];
+
+                               groupData.push(group.key);
+
+                               groupRowIndexs.push(rows.length);
+
+                               rows.push(groupData);
+
+                               if (group.subGroups) {
+                                       group.subGroups.forEach(function (subGroup) {
+                                               parseGroup(subGroup, calcObj[group.key] ? calcObj[group.key].groups || {} : {});
+                                       });
+                               } else {
+
+                                       if (config.columnCalcs) {
+                                               addCalcRow(calcObj, group.key, "top");
+                                       }
+
+                                       parseRows(group.rows);
+
+                                       if (config.columnCalcs) {
+                                               addCalcRow(calcObj, group.key, "bottom");
+                                       }
+                               }
+                       }
+
+                       if (config.rowGroups) {
+                               data.forEach(function (group) {
+                                       parseGroup(group, calcs);
+                               });
+                       } else {
+                               if (config.columnCalcs) {
+                                       addCalcRow(calcs, "top");
+                               }
+
+                               parseRows(data);
+
+                               if (config.columnCalcs) {
+                                       addCalcRow(calcs, "bottom");
+                               }
+                       }
+
+                       worksheet = rowsToSheet();
+
+                       return worksheet;
+               }
+
+               if (options.sheetOnly) {
+                       setFileContents(generateSheet());
+                       return;
+               }
+
+               if (options.sheets) {
+                       for (var sheet in options.sheets) {
+
+                               if (options.sheets[sheet] === true) {
+                                       workbook.SheetNames.push(sheet);
+                                       workbook.Sheets[sheet] = generateSheet();
+                               } else {
+
+                                       workbook.SheetNames.push(sheet);
+
+                                       this.table.modules.comms.send(options.sheets[sheet], "download", "intercept", {
+                                               type: "xlsx",
+                                               options: { sheetOnly: true },
+                                               intercept: function intercept(data) {
+                                                       workbook.Sheets[sheet] = data;
+                                               }
+                                       });
+                               }
+                       }
+               } else {
+                       workbook.SheetNames.push(sheetName);
+                       workbook.Sheets[sheetName] = generateSheet();
+               }
+
+               //convert workbook to binary array
+               function s2ab(s) {
+                       var buf = new ArrayBuffer(s.length);
+                       var view = new Uint8Array(buf);
+                       for (var i = 0; i != s.length; ++i) {
+                               view[i] = s.charCodeAt(i) & 0xFF;
+                       }return buf;
+               }
+
+               output = XLSX.write(workbook, { bookType: 'xlsx', bookSST: true, type: 'binary' });
+
+               setFileContents(s2ab(output), "application/octet-stream");
+       }
+
+};
+
+Tabulator.prototype.registerModule("download", Download);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/download.min.js b/backoffice/vendors/tabulator/js.old/modules/download.min.js
new file mode 100644 (file)
index 0000000..01df3e1
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},Download=function(o){this.table=o,this.fields={},this.columnsByIndex=[],this.columnsByField={},this.config={}};Download.prototype.download=function(o,n,t,e){function i(t,i){e?!0===e?s.triggerDownload(t,i,o,n,!0):e(t):s.triggerDownload(t,i,o,n)}var s=this,r=!1;this.processConfig(),"function"==typeof o?r=o:s.downloaders[o]?r=s.downloaders[o]:console.warn("Download Error - No such download type found: ",o),this.processColumns(),r&&r.call(this,s.processDefinitions(),s.processData(),t||{},i,this.config)},Download.prototype.processConfig=function(){var o={columnGroups:!0,rowGroups:!0,columnCalcs:!0};if(this.table.options.downloadConfig)for(var n in this.table.options.downloadConfig)o[n]=this.table.options.downloadConfig[n];o.rowGroups&&this.table.options.groupBy&&this.table.modExists("groupRows")&&(this.config.rowGroups=!0),o.columnGroups&&this.table.columnManager.columns.length!=this.table.columnManager.columnsByIndex.length&&(this.config.columnGroups=!0),o.columnCalcs&&this.table.modExists("columnCalcs")&&(this.config.columnCalcs=!0)},Download.prototype.processColumns=function(){var o=this;o.columnsByIndex=[],o.columnsByField={},o.table.columnManager.columnsByIndex.forEach(function(n){n.field&&!1!==n.definition.download&&(n.visible||!n.visible&&n.definition.download)&&(o.columnsByIndex.push(n),o.columnsByField[n.field]=n)})},Download.prototype.processDefinitions=function(){var o=this,n=[];return this.config.columnGroups?o.table.columnManager.columns.forEach(function(t){var e=o.processColumnGroup(t);e&&n.push(e)}):o.columnsByIndex.forEach(function(t){!1!==t.download&&n.push(o.processDefinition(t))}),n},Download.prototype.processColumnGroup=function(o){var n=this,t=o.columns,e=0,i=this.processDefinition(o),s={type:"group",title:i.title,depth:1};if(t.length){if(s.subGroups=[],s.width=0,t.forEach(function(o){var t=n.processColumnGroup(o);t.depth>e&&(e=t.depth),t&&(s.width+=t.width,s.subGroups.push(t))}),s.depth+=e,!s.width)return!1}else{if(!o.field||!1===o.definition.download||!(o.visible||!o.visible&&o.definition.download))return!1;s.width=1,s.definition=i}return s},Download.prototype.processDefinition=function(o){var n={};for(var t in o.definition)n[t]=o.definition[t];return void 0!==o.definition.downloadTitle&&(n.title=o.definition.downloadTitle),n},Download.prototype.processData=function(){var o=this,n=this,t=[],e=[],i={};return this.config.rowGroups?(e=this.table.modules.groupRows.getGroups(),e.forEach(function(n){t.push(o.processGroupData(n))})):t=n.table.rowManager.getData(!0,"download"),this.config.columnCalcs&&(i=this.table.getCalcResults(),t={calcs:i,data:t}),"function"==typeof n.table.options.downloadDataFormatter&&(t=n.table.options.downloadDataFormatter(t)),t},Download.prototype.processGroupData=function(o){var n=this,t=o.getSubGroups(),e={type:"group",key:o.key};return t.length?(e.subGroups=[],t.forEach(function(o){e.subGroups.push(n.processGroupData(o))})):e.rows=o.getData(!0,"download"),e},Download.prototype.triggerDownload=function(o,n,t,e,i){var s=document.createElement("a"),r=new Blob([o],{type:n}),e=e||"Tabulator."+("function"==typeof t?"txt":t);(r=this.table.options.downloadReady.call(this.table,o,r))&&(i?window.open(window.URL.createObjectURL(r)):navigator.msSaveOrOpenBlob?navigator.msSaveOrOpenBlob(r,e):(s.setAttribute("href",window.URL.createObjectURL(r)),s.setAttribute("download",e),s.style.display="none",document.body.appendChild(s),s.click(),document.body.removeChild(s)),this.table.options.downloadComplete&&this.table.options.downloadComplete())},Download.prototype.getFieldValue=function(o,n){var t=this.columnsByField[o];return!!t&&t.getFieldValue(n)},Download.prototype.commsReceived=function(o,n,t){switch(n){case"intercept":this.download(t.type,"",t.options,t.intercept)}},Download.prototype.downloaders={csv:function(o,n,t,e,i){function s(o,n){o.subGroups?o.subGroups.forEach(function(o){s(o,n+1)}):(f.push('"'+String(o.title).split('"').join('""')+'"'),p.push(o.definition.field))}function r(o){o.forEach(function(o){var n=[];p.forEach(function(t){var e=c.getFieldValue(t,o);switch(void 0===e?"undefined":_typeof(e)){case"object":e=JSON.stringify(e);break;case"undefined":case"null":e="";break;default:e=e}n.push('"'+String(e).split('"').join('""')+'"')}),u.push(n.join(d))})}function a(o){o.subGroups?o.subGroups.forEach(function(o){a(o)}):r(o.rows)}var u,l,c=this,f=[],p=[],d=t&&t.delimiter?t.delimiter:",";i.columnGroups?(console.warn("Download Warning - CSV downloader cannot process column groups"),o.forEach(function(o){s(o,0)})):function(){o.forEach(function(o){f.push('"'+String(o.title).split('"').join('""')+'"'),p.push(o.field)})}(),u=[f.join(d)],i.columnCalcs&&(console.warn("Download Warning - CSV downloader cannot process column calculations"),n=n.data),i.rowGroups?(console.warn("Download Warning - CSV downloader cannot process row groups"),n.forEach(function(o){a(o)})):r(n),l=u.join("\n"),t.bom&&(l="\ufeff"+l),e(l,"text/csv")},json:function(o,n,t,e,i){var s;i.columnCalcs&&(console.warn("Download Warning - CSV downloader cannot process column calculations"),n=n.data),s=JSON.stringify(n,null,"\t"),e(s,"application/json")},pdf:function(o,n,t,e,i){function s(o,n){var t=o.width,e=1,i={content:o.title||""};if(o.subGroups?(o.subGroups.forEach(function(o){s(o,n+1)}),e=1):(p.push(o.definition.field),e=y-n),i.rowSpan=e,d[n].push(i),t--,e>1)for(var r=n+1;r<y;r++)d[r].push("");for(var r=0;r<t;r++)d[n].push("")}function r(o){switch(void 0===o?"undefined":_typeof(o)){case"object":o=JSON.stringify(o);break;case"undefined":case"null":o="";break;default:o=o}return o}function a(o){o.forEach(function(o){h.push(u(o))})}function u(o,n){var t=[];return p.forEach(function(e){var i=f.getFieldValue(e,o);i=r(i),n?t.push({content:i,styles:n}):t.push(i)}),t}function l(o,n){var t=[];t.push({content:r(o.key),colSpan:p.length,styles:g}),h.push(t),o.subGroups?o.subGroups.forEach(function(t){l(t,n[o.key]?n[o.key].groups||{}:{})}):(i.columnCalcs&&c(n,o.key,"top"),a(o.rows),i.columnCalcs&&c(n,o.key,"bottom"))}function c(o,n,t){var e=o[n];e&&(t&&(e=e[t]),Object.keys(e).length&&h.push(u(e,b)))}var f=this,p=[],d=[],h=[],w={},y=1,m={},g=t.rowGroupStyles||{fontStyle:"bold",fontSize:12,cellPadding:6,fillColor:220},b=t.rowCalcStyles||{fontStyle:"bold",fontSize:10,cellPadding:4,fillColor:232},v=t.jsPDF||{},C=t&&t.title?t.title:"";if(i.columnCalcs&&(w=n.calcs,n=n.data),v.orientation||(v.orientation=t.orientation||"landscape"),v.unit||(v.unit="pt"),i.columnGroups){o.forEach(function(o){o.depth>y&&(y=o.depth)});for(var S=0;S<y;S++)d.push([]);o.forEach(function(o){s(o,0)})}else!function(){o.forEach(function(o){o.field&&(d.push(o.title||""),p.push(o.field))}),d=[d]}();i.rowGroups?n.forEach(function(o){l(o,w)}):(i.columnCalcs&&c(w,"top"),a(n),i.columnCalcs&&c(w,"bottom"));var D=new jsPDF(v);t&&t.autoTable&&(m="function"==typeof t.autoTable?t.autoTable(D)||{}:t.autoTable),C&&(m.addPageContent=function(o){D.text(C,40,30)}),m.head=d,m.body=h,D.autoTable(m),t&&t.documentProcessing&&t.documentProcessing(D),e(D.output("arraybuffer"),"application/pdf")},xlsx:function(o,n,t,e,i){function s(){function t(o,n){void 0===w[n]&&(w[n]=[]),void 0===p[n]&&(p[n]=[]),o.width>1&&p[n].push({type:"hoz",start:w[n].length,end:w[n].length+o.width-1}),w[n].push(o.title),o.subGroups?o.subGroups.forEach(function(o){t(o,n+1)}):(y.push(o.definition.field),e(y.length),p[n].push({type:"vert",start:y.length-1}))}function e(){var o=0;w.forEach(function(n){var t=n.length;t>o&&(o=t)}),w.forEach(function(n){var t=n.length;if(t<o)for(var e=t;e<o;e++)n.push("")})}function s(){var o=[];return f.forEach(function(n){o.push({s:{r:n,c:0},e:{r:n,c:y.length-1}})}),p.forEach(function(n,t){n.forEach(function(n){"hoz"===n.type?o.push({s:{r:t,c:n.start},e:{r:t,c:n.end}}):t!=w.length-1&&o.push({s:{r:t,c:n.start},e:{r:w.length-1,c:n.start}})})}),o}function r(o){o.forEach(function(o){m.push(u(o))})}function u(o){var n=[];return y.forEach(function(t){var e=a.getFieldValue(t,o);n.push(e instanceof Date||"object"!==(void 0===e?"undefined":_typeof(e))?e:JSON.stringify(e))}),n}function l(o,n,t){var e=o[n];e&&(t&&(e=e[t]),Object.keys(e).length&&(d.push(m.length),m.push(u(e))))}function h(o,n){var t=[];t.push(o.key),f.push(m.length),m.push(t),o.subGroups?o.subGroups.forEach(function(t){h(t,n[o.key]?n[o.key].groups||{}:{})}):(i.columnCalcs&&l(n,o.key,"top"),r(o.rows),i.columnCalcs&&l(n,o.key,"bottom"))}var w=[],y=[],m=[];return i.columnGroups?(o.forEach(function(o){t(o,0)}),w.forEach(function(o){m.push(o)})):function(){o.forEach(function(o){w.push(o.title),y.push(o.field)}),m.push(w)}(),i.rowGroups?n.forEach(function(o){h(o,c)}):(i.columnCalcs&&l(c,"top"),r(n),i.columnCalcs&&l(c,"bottom")),function(){var o={},n={s:{c:0,r:0},e:{c:y.length,r:m.length}};XLSX.utils.sheet_add_aoa(o,m),o["!ref"]=XLSX.utils.encode_range(n);var t=s();return t.length&&(o["!merges"]=t),o}()}var r,a=this,u=t.sheetName||"Sheet1",l={SheetNames:[],Sheets:{}},c={},f=[],p=[],d=[];if(i.columnCalcs&&(c=n.calcs,n=n.data),t.sheetOnly)return void e(s());if(t.sheets)for(var h in t.sheets)!0===t.sheets[h]?(l.SheetNames.push(h),l.Sheets[h]=s()):(l.SheetNames.push(h),this.table.modules.comms.send(t.sheets[h],"download","intercept",{type:"xlsx",options:{sheetOnly:!0},intercept:function(o){l.Sheets[h]=o}}));else l.SheetNames.push(u),l.Sheets[u]=s();r=XLSX.write(l,{bookType:"xlsx",bookSST:!0,type:"binary"}),e(function(o){for(var n=new ArrayBuffer(o.length),t=new Uint8Array(n),e=0;e!=o.length;++e)t[e]=255&o.charCodeAt(e);return n}(r),"application/octet-stream")}},Tabulator.prototype.registerModule("download",Download);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/edit.js b/backoffice/vendors/tabulator/js.old/modules/edit.js
new file mode 100644 (file)
index 0000000..74c3eb7
--- /dev/null
@@ -0,0 +1,1727 @@
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+
+var Edit = function Edit(table) {
+       this.table = table; //hold Tabulator object
+       this.currentCell = false; //hold currently editing cell
+       this.mouseClick = false; //hold mousedown state to prevent click binding being overriden by editor opening
+       this.recursionBlock = false; //prevent focus recursion
+       this.invalidEdit = false;
+};
+
+//initialize column editor
+Edit.prototype.initializeColumn = function (column) {
+       var self = this,
+           config = {
+               editor: false,
+               blocked: false,
+               check: column.definition.editable,
+               params: column.definition.editorParams || {}
+       };
+
+       //set column editor
+       switch (_typeof(column.definition.editor)) {
+               case "string":
+
+                       if (column.definition.editor === "tick") {
+                               column.definition.editor = "tickCross";
+                               console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor");
+                       }
+
+                       if (self.editors[column.definition.editor]) {
+                               config.editor = self.editors[column.definition.editor];
+                       } else {
+                               console.warn("Editor Error - No such editor found: ", column.definition.editor);
+                       }
+                       break;
+
+               case "function":
+                       config.editor = column.definition.editor;
+                       break;
+
+               case "boolean":
+
+                       if (column.definition.editor === true) {
+
+                               if (typeof column.definition.formatter !== "function") {
+
+                                       if (column.definition.formatter === "tick") {
+                                               column.definition.formatter = "tickCross";
+                                               console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor");
+                                       }
+
+                                       if (self.editors[column.definition.formatter]) {
+                                               config.editor = self.editors[column.definition.formatter];
+                                       } else {
+                                               config.editor = self.editors["input"];
+                                       }
+                               } else {
+                                       console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ", column.definition.formatter);
+                               }
+                       }
+                       break;
+       }
+
+       if (config.editor) {
+               column.modules.edit = config;
+       }
+};
+
+Edit.prototype.getCurrentCell = function () {
+       return this.currentCell ? this.currentCell.getComponent() : false;
+};
+
+Edit.prototype.clearEditor = function () {
+       var cell = this.currentCell,
+           cellEl;
+
+       this.invalidEdit = false;
+
+       if (cell) {
+               this.currentCell = false;
+
+               cellEl = cell.getElement();
+               cellEl.classList.remove("tabulator-validation-fail");
+               cellEl.classList.remove("tabulator-editing");
+               while (cellEl.firstChild) {
+                       cellEl.removeChild(cellEl.firstChild);
+               }cell.row.getElement().classList.remove("tabulator-row-editing");
+       }
+};
+
+Edit.prototype.cancelEdit = function () {
+
+       if (this.currentCell) {
+               var cell = this.currentCell;
+               var component = this.currentCell.getComponent();
+
+               this.clearEditor();
+               cell.setValueActual(cell.getValue());
+
+               if (cell.column.cellEvents.cellEditCancelled) {
+                       cell.column.cellEvents.cellEditCancelled.call(this.table, component);
+               }
+
+               this.table.options.cellEditCancelled.call(this.table, component);
+       }
+};
+
+//return a formatted value for a cell
+Edit.prototype.bindEditor = function (cell) {
+       var self = this,
+           element = cell.getElement();
+
+       element.setAttribute("tabindex", 0);
+
+       element.addEventListener("click", function (e) {
+               if (!element.classList.contains("tabulator-editing")) {
+                       element.focus();
+               }
+       });
+
+       element.addEventListener("mousedown", function (e) {
+               self.mouseClick = true;
+       });
+
+       element.addEventListener("focus", function (e) {
+               if (!self.recursionBlock) {
+                       self.edit(cell, e, false);
+               }
+       });
+};
+
+Edit.prototype.focusCellNoEvent = function (cell) {
+       this.recursionBlock = true;
+       if (this.table.browser !== "ie") {
+               cell.getElement().focus();
+       }
+       this.recursionBlock = false;
+};
+
+Edit.prototype.editCell = function (cell, forceEdit) {
+       this.focusCellNoEvent(cell);
+       this.edit(cell, false, forceEdit);
+};
+
+Edit.prototype.edit = function (cell, e, forceEdit) {
+       var self = this,
+           allowEdit = true,
+           rendered = function rendered() {},
+           element = cell.getElement(),
+           cellEditor,
+           component,
+           params;
+
+       //prevent editing if another cell is refusing to leave focus (eg. validation fail)
+       if (this.currentCell) {
+               if (!this.invalidEdit) {
+                       this.cancelEdit();
+               }
+               return;
+       }
+
+       //handle successfull value change
+       function success(value) {
+
+               if (self.currentCell === cell) {
+                       var valid = true;
+
+                       if (cell.column.modules.validate && self.table.modExists("validate")) {
+                               valid = self.table.modules.validate.validate(cell.column.modules.validate, cell.getComponent(), value);
+                       }
+
+                       if (valid === true) {
+                               self.clearEditor();
+                               cell.setValue(value, true);
+
+                               if (self.table.options.dataTree && self.table.modExists("dataTree")) {
+                                       self.table.modules.dataTree.checkForRestyle(cell);
+                               }
+
+                               return true;
+                       } else {
+                               self.invalidEdit = true;
+                               element.classList.add("tabulator-validation-fail");
+                               self.focusCellNoEvent(cell);
+                               rendered();
+                               self.table.options.validationFailed.call(self.table, cell.getComponent(), value, valid);
+
+                               return false;
+                       }
+               } else {
+                       // console.warn("Edit Success Error - cannot call success on a cell that is no longer being edited");
+               }
+       }
+
+       //handle aborted edit
+       function cancel() {
+               if (self.currentCell === cell) {
+                       self.cancelEdit();
+
+                       if (self.table.options.dataTree && self.table.modExists("dataTree")) {
+                               self.table.modules.dataTree.checkForRestyle(cell);
+                       }
+               } else {
+                       // console.warn("Edit Success Error - cannot call cancel on a cell that is no longer being edited");
+               }
+       }
+
+       function onRendered(callback) {
+               rendered = callback;
+       }
+
+       if (!cell.column.modules.edit.blocked) {
+               if (e) {
+                       e.stopPropagation();
+               }
+
+               switch (_typeof(cell.column.modules.edit.check)) {
+                       case "function":
+                               allowEdit = cell.column.modules.edit.check(cell.getComponent());
+                               break;
+
+                       case "boolean":
+                               allowEdit = cell.column.modules.edit.check;
+                               break;
+               }
+
+               if (allowEdit || forceEdit) {
+
+                       self.cancelEdit();
+
+                       self.currentCell = cell;
+
+                       component = cell.getComponent();
+
+                       if (this.mouseClick) {
+                               this.mouseClick = false;
+
+                               if (cell.column.cellEvents.cellClick) {
+                                       cell.column.cellEvents.cellClick.call(this.table, e, component);
+                               }
+                       }
+
+                       if (cell.column.cellEvents.cellEditing) {
+                               cell.column.cellEvents.cellEditing.call(this.table, component);
+                       }
+
+                       self.table.options.cellEditing.call(this.table, component);
+
+                       params = typeof cell.column.modules.edit.params === "function" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params;
+
+                       cellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params);
+
+                       //if editor returned, add to DOM, if false, abort edit
+                       if (cellEditor !== false) {
+
+                               if (cellEditor instanceof Node) {
+                                       element.classList.add("tabulator-editing");
+                                       cell.row.getElement().classList.add("tabulator-row-editing");
+                                       while (element.firstChild) {
+                                               element.removeChild(element.firstChild);
+                                       }element.appendChild(cellEditor);
+
+                                       //trigger onRendered Callback
+                                       rendered();
+
+                                       //prevent editing from triggering rowClick event
+                                       var children = element.children;
+
+                                       for (var i = 0; i < children.length; i++) {
+                                               children[i].addEventListener("click", function (e) {
+                                                       e.stopPropagation();
+                                               });
+                                       }
+                               } else {
+                                       console.warn("Edit Error - Editor should return an instance of Node, the editor returned:", cellEditor);
+                                       element.blur();
+                                       return false;
+                               }
+                       } else {
+                               element.blur();
+                               return false;
+                       }
+
+                       return true;
+               } else {
+                       this.mouseClick = false;
+                       element.blur();
+                       return false;
+               }
+       } else {
+               this.mouseClick = false;
+               element.blur();
+               return false;
+       }
+};
+
+//default data editors
+Edit.prototype.editors = {
+
+       //input element
+       input: function input(cell, onRendered, success, cancel, editorParams) {
+
+               //create and style input
+               var cellValue = cell.getValue(),
+                   input = document.createElement("input");
+
+               input.setAttribute("type", editorParams.search ? "search" : "text");
+
+               input.style.padding = "4px";
+               input.style.width = "100%";
+               input.style.boxSizing = "border-box";
+
+               if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+                       for (var key in editorParams.elementAttributes) {
+                               if (key.charAt(0) == "+") {
+                                       key = key.slice(1);
+                                       input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+                               } else {
+                                       input.setAttribute(key, editorParams.elementAttributes[key]);
+                               }
+                       }
+               }
+
+               input.value = typeof cellValue !== "undefined" ? cellValue : "";
+
+               onRendered(function () {
+                       input.focus();
+                       input.style.height = "100%";
+               });
+
+               function onChange(e) {
+                       if ((cellValue === null || typeof cellValue === "undefined") && input.value !== "" || input.value != cellValue) {
+
+                               if (success(input.value)) {
+                                       cellValue = input.value; //persist value if successfully validated incase editor is used as header filter
+                               }
+                       } else {
+                               cancel();
+                       }
+               }
+
+               //submit new value on blur or change
+               input.addEventListener("change", onChange);
+               input.addEventListener("blur", onChange);
+
+               //submit new value on enter
+               input.addEventListener("keydown", function (e) {
+                       switch (e.keyCode) {
+                               case 13:
+                                       onChange(e);
+                                       break;
+
+                               case 27:
+                                       cancel();
+                                       break;
+                       }
+               });
+
+               return input;
+       },
+
+       //resizable text area element
+       textarea: function textarea(cell, onRendered, success, cancel, editorParams) {
+               var self = this,
+                   cellValue = cell.getValue(),
+                   value = String(cellValue !== null && typeof cellValue !== "undefined" ? cellValue : ""),
+                   count = (value.match(/(?:\r\n|\r|\n)/g) || []).length + 1,
+                   input = document.createElement("textarea"),
+                   scrollHeight = 0;
+
+               //create and style input
+               input.style.display = "block";
+               input.style.padding = "2px";
+               input.style.height = "100%";
+               input.style.width = "100%";
+               input.style.boxSizing = "border-box";
+               input.style.whiteSpace = "pre-wrap";
+               input.style.resize = "none";
+
+               if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+                       for (var key in editorParams.elementAttributes) {
+                               if (key.charAt(0) == "+") {
+                                       key = key.slice(1);
+                                       input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+                               } else {
+                                       input.setAttribute(key, editorParams.elementAttributes[key]);
+                               }
+                       }
+               }
+
+               input.value = value;
+
+               onRendered(function () {
+                       input.focus();
+                       input.style.height = "100%";
+               });
+
+               function onChange(e) {
+
+                       if ((cellValue === null || typeof cellValue === "undefined") && input.value !== "" || input.value != cellValue) {
+
+                               if (success(input.value)) {
+                                       cellValue = input.value; //persist value if successfully validated incase editor is used as header filter
+                               }
+
+                               setTimeout(function () {
+                                       cell.getRow().normalizeHeight();
+                               }, 300);
+                       } else {
+                               cancel();
+                       }
+               }
+
+               //submit new value on blur or change
+               input.addEventListener("change", onChange);
+               input.addEventListener("blur", onChange);
+
+               input.addEventListener("keyup", function () {
+
+                       input.style.height = "";
+
+                       var heightNow = input.scrollHeight;
+
+                       input.style.height = heightNow + "px";
+
+                       if (heightNow != scrollHeight) {
+                               scrollHeight = heightNow;
+                               cell.getRow().normalizeHeight();
+                       }
+               });
+
+               input.addEventListener("keydown", function (e) {
+                       if (e.keyCode == 27) {
+                               cancel();
+                       }
+               });
+
+               return input;
+       },
+
+       //input element with type of number
+       number: function number(cell, onRendered, success, cancel, editorParams) {
+
+               var cellValue = cell.getValue(),
+                   input = document.createElement("input");
+
+               input.setAttribute("type", "number");
+
+               if (typeof editorParams.max != "undefined") {
+                       input.setAttribute("max", editorParams.max);
+               }
+
+               if (typeof editorParams.min != "undefined") {
+                       input.setAttribute("min", editorParams.min);
+               }
+
+               if (typeof editorParams.step != "undefined") {
+                       input.setAttribute("step", editorParams.step);
+               }
+
+               //create and style input
+               input.style.padding = "4px";
+               input.style.width = "100%";
+               input.style.boxSizing = "border-box";
+
+               if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+                       for (var key in editorParams.elementAttributes) {
+                               if (key.charAt(0) == "+") {
+                                       key = key.slice(1);
+                                       input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+                               } else {
+                                       input.setAttribute(key, editorParams.elementAttributes[key]);
+                               }
+                       }
+               }
+
+               input.value = cellValue;
+
+               var blurFunc = function blurFunc(e) {
+                       onChange();
+               };
+
+               onRendered(function () {
+                       //submit new value on blur
+                       input.removeEventListener("blur", blurFunc);
+
+                       input.focus();
+                       input.style.height = "100%";
+
+                       //submit new value on blur
+                       input.addEventListener("blur", blurFunc);
+               });
+
+               function onChange() {
+                       var value = input.value;
+
+                       if (!isNaN(value) && value !== "") {
+                               value = Number(value);
+                       }
+
+                       if (value != cellValue) {
+                               if (success(value)) {
+                                       cellValue = value; //persist value if successfully validated incase editor is used as header filter
+                               }
+                       } else {
+                               cancel();
+                       }
+               }
+
+               //submit new value on enter
+               input.addEventListener("keydown", function (e) {
+                       switch (e.keyCode) {
+                               case 13:
+                                       // case 9:
+                                       onChange();
+                                       break;
+
+                               case 27:
+                                       cancel();
+                                       break;
+                       }
+               });
+
+               return input;
+       },
+
+       //input element with type of number
+       range: function range(cell, onRendered, success, cancel, editorParams) {
+
+               var cellValue = cell.getValue(),
+                   input = document.createElement("input");
+
+               input.setAttribute("type", "range");
+
+               if (typeof editorParams.max != "undefined") {
+                       input.setAttribute("max", editorParams.max);
+               }
+
+               if (typeof editorParams.min != "undefined") {
+                       input.setAttribute("min", editorParams.min);
+               }
+
+               if (typeof editorParams.step != "undefined") {
+                       input.setAttribute("step", editorParams.step);
+               }
+
+               //create and style input
+               input.style.padding = "4px";
+               input.style.width = "100%";
+               input.style.boxSizing = "border-box";
+
+               if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+                       for (var key in editorParams.elementAttributes) {
+                               if (key.charAt(0) == "+") {
+                                       key = key.slice(1);
+                                       input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+                               } else {
+                                       input.setAttribute(key, editorParams.elementAttributes[key]);
+                               }
+                       }
+               }
+
+               input.value = cellValue;
+
+               onRendered(function () {
+                       input.focus();
+                       input.style.height = "100%";
+               });
+
+               function onChange() {
+                       var value = input.value;
+
+                       if (!isNaN(value) && value !== "") {
+                               value = Number(value);
+                       }
+
+                       if (value != cellValue) {
+                               if (success(value)) {
+                                       cellValue = value; //persist value if successfully validated incase editor is used as header filter
+                               }
+                       } else {
+                               cancel();
+                       }
+               }
+
+               //submit new value on blur
+               input.addEventListener("blur", function (e) {
+                       onChange();
+               });
+
+               //submit new value on enter
+               input.addEventListener("keydown", function (e) {
+                       switch (e.keyCode) {
+                               case 13:
+                               case 9:
+                                       onChange();
+                                       break;
+
+                               case 27:
+                                       cancel();
+                                       break;
+                       }
+               });
+
+               return input;
+       },
+
+       //select
+       select: function select(cell, onRendered, success, cancel, editorParams) {
+               var self = this,
+                   cellEl = cell.getElement(),
+                   initialValue = cell.getValue(),
+                   initialDisplayValue = typeof initialValue !== "undefined" || initialValue === null ? initialValue : typeof editorParams.defaultValue !== "undefined" ? editorParams.defaultValue : "",
+                   input = document.createElement("input"),
+                   listEl = document.createElement("div"),
+                   dataItems = [],
+                   displayItems = [],
+                   currentItem = {},
+                   blurable = true;
+
+               this.table.rowManager.element.addEventListener("scroll", cancelItem);
+
+               if (Array.isArray(editorParams) || !Array.isArray(editorParams) && (typeof editorParams === "undefined" ? "undefined" : _typeof(editorParams)) === "object" && !editorParams.values) {
+                       console.warn("DEPRECATION WANRING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object");
+                       editorParams = { values: editorParams };
+               }
+
+               function getUniqueColumnValues(field) {
+                       var output = {},
+                           data = self.table.getData(),
+                           column;
+
+                       if (field) {
+                               column = self.table.columnManager.getColumnByField(field);
+                       } else {
+                               column = cell.getColumn()._getSelf();
+                       }
+
+                       if (column) {
+                               data.forEach(function (row) {
+                                       var val = column.getFieldValue(row);
+
+                                       if (val !== null && typeof val !== "undefined" && val !== "") {
+                                               output[val] = true;
+                                       }
+                               });
+
+                               if (editorParams.sortValuesList) {
+                                       if (editorParams.sortValuesList == "asc") {
+                                               output = Object.keys(output).sort();
+                                       } else {
+                                               output = Object.keys(output).sort().reverse();
+                                       }
+                               } else {
+                                       output = Object.keys(output);
+                               }
+                       } else {
+                               console.warn("unable to find matching column to create select lookup list:", field);
+                       }
+
+                       return output;
+               }
+
+               function parseItems(inputValues, curentValue) {
+                       var dataList = [];
+                       var displayList = [];
+
+                       function processComplexListItem(item) {
+                               var item = {
+                                       label: editorParams.listItemFormatter ? editorParams.listItemFormatter(item.value, item.label) : item.label,
+                                       value: item.value,
+                                       element: false
+                               };
+
+                               if (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {
+                                       setCurrentItem(item);
+                               }
+
+                               dataList.push(item);
+                               displayList.push(item);
+
+                               return item;
+                       }
+
+                       if (typeof inputValues == "function") {
+                               inputValues = inputValues(cell);
+                       }
+
+                       if (Array.isArray(inputValues)) {
+                               inputValues.forEach(function (value) {
+                                       var item;
+
+                                       if ((typeof value === "undefined" ? "undefined" : _typeof(value)) === "object") {
+
+                                               if (value.options) {
+                                                       item = {
+                                                               label: value.label,
+                                                               group: true,
+                                                               element: false
+                                                       };
+
+                                                       displayList.push(item);
+
+                                                       value.options.forEach(function (item) {
+                                                               processComplexListItem(item);
+                                                       });
+                                               } else {
+                                                       processComplexListItem(value);
+                                               }
+                                       } else {
+
+                                               item = {
+                                                       label: editorParams.listItemFormatter ? editorParams.listItemFormatter(value, value) : value,
+                                                       value: value,
+                                                       element: false
+                                               };
+
+                                               if (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {
+                                                       setCurrentItem(item);
+                                               }
+
+                                               dataList.push(item);
+                                               displayList.push(item);
+                                       }
+                               });
+                       } else {
+                               for (var key in inputValues) {
+                                       var item = {
+                                               label: editorParams.listItemFormatter ? editorParams.listItemFormatter(key, inputValues[key]) : inputValues[key],
+                                               value: key,
+                                               element: false
+                                       };
+
+                                       if (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {
+                                               setCurrentItem(item);
+                                       }
+
+                                       dataList.push(item);
+                                       displayList.push(item);
+                               }
+                       }
+
+                       dataItems = dataList;
+                       displayItems = displayList;
+
+                       fillList();
+               }
+
+               function fillList() {
+                       while (listEl.firstChild) {
+                               listEl.removeChild(listEl.firstChild);
+                       }displayItems.forEach(function (item) {
+                               var el = item.element;
+
+                               if (!el) {
+
+                                       if (item.group) {
+                                               el = document.createElement("div");
+                                               el.classList.add("tabulator-edit-select-list-group");
+                                               el.tabIndex = 0;
+                                               el.innerHTML = item.label === "" ? "&nbsp;" : item.label;
+                                       } else {
+                                               el = document.createElement("div");
+                                               el.classList.add("tabulator-edit-select-list-item");
+                                               el.tabIndex = 0;
+                                               el.innerHTML = item.label === "" ? "&nbsp;" : item.label;
+
+                                               el.addEventListener("click", function () {
+                                                       setCurrentItem(item);
+                                                       chooseItem();
+                                               });
+
+                                               if (item === currentItem) {
+                                                       el.classList.add("active");
+                                               }
+                                       }
+
+                                       el.addEventListener("mousedown", function () {
+                                               blurable = false;
+
+                                               setTimeout(function () {
+                                                       blurable = true;
+                                               }, 10);
+                                       });
+
+                                       item.element = el;
+                               }
+
+                               listEl.appendChild(el);
+                       });
+               }
+
+               function setCurrentItem(item) {
+
+                       if (currentItem && currentItem.element) {
+                               currentItem.element.classList.remove("active");
+                       }
+
+                       currentItem = item;
+                       input.value = item.label === "&nbsp;" ? "" : item.label;
+
+                       if (item.element) {
+                               item.element.classList.add("active");
+                       }
+               }
+
+               function chooseItem() {
+                       hideList();
+
+                       if (initialValue !== currentItem.value) {
+                               initialValue = currentItem.value;
+                               success(currentItem.value);
+                       } else {
+                               cancel();
+                       }
+               }
+
+               function cancelItem() {
+                       hideList();
+                       cancel();
+               }
+
+               function showList() {
+                       if (!listEl.parentNode) {
+
+                               if (editorParams.values === true) {
+                                       parseItems(getUniqueColumnValues(), initialDisplayValue);
+                               } else if (typeof editorParams.values === "string") {
+                                       parseItems(getUniqueColumnValues(editorParams.values), initialDisplayValue);
+                               } else {
+                                       parseItems(editorParams.values || [], initialDisplayValue);
+                               }
+
+                               var offset = Tabulator.prototype.helpers.elOffset(cellEl);
+
+                               listEl.style.minWidth = cellEl.offsetWidth + "px";
+
+                               listEl.style.top = offset.top + cellEl.offsetHeight + "px";
+                               listEl.style.left = offset.left + "px";
+                               document.body.appendChild(listEl);
+                       }
+               }
+
+               function hideList() {
+                       if (listEl.parentNode) {
+                               listEl.parentNode.removeChild(listEl);
+                       }
+
+                       removeScrollListener();
+               }
+
+               function removeScrollListener() {
+                       self.table.rowManager.element.removeEventListener("scroll", cancelItem);
+               }
+
+               //style input
+               input.setAttribute("type", "text");
+
+               input.style.padding = "4px";
+               input.style.width = "100%";
+               input.style.boxSizing = "border-box";
+               input.style.cursor = "default";
+               input.readOnly = this.currentCell != false;
+
+               if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+                       for (var key in editorParams.elementAttributes) {
+                               if (key.charAt(0) == "+") {
+                                       key = key.slice(1);
+                                       input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+                               } else {
+                                       input.setAttribute(key, editorParams.elementAttributes[key]);
+                               }
+                       }
+               }
+
+               input.value = typeof initialValue !== "undefined" || initialValue === null ? initialValue : "";
+
+               if (editorParams.values === true) {
+                       parseItems(getUniqueColumnValues(), initialValue);
+               } else if (typeof editorParams.values === "string") {
+                       parseItems(getUniqueColumnValues(editorParams.values), initialValue);
+               } else {
+                       parseItems(editorParams.values || [], initialValue);
+               }
+
+               //allow key based navigation
+               input.addEventListener("keydown", function (e) {
+                       var index;
+
+                       switch (e.keyCode) {
+                               case 38:
+                                       //up arrow
+                                       e.stopImmediatePropagation();
+                                       e.stopPropagation();
+                                       e.preventDefault();
+
+                                       index = dataItems.indexOf(currentItem);
+
+                                       if (index > 0) {
+                                               setCurrentItem(dataItems[index - 1]);
+                                       }
+                                       break;
+
+                               case 40:
+                                       //down arrow
+                                       e.stopImmediatePropagation();
+                                       e.stopPropagation();
+                                       e.preventDefault();
+
+                                       index = dataItems.indexOf(currentItem);
+
+                                       if (index < dataItems.length - 1) {
+                                               if (index == -1) {
+                                                       setCurrentItem(dataItems[0]);
+                                               } else {
+                                                       setCurrentItem(dataItems[index + 1]);
+                                               }
+                                       }
+                                       break;
+
+                               case 37: //left arrow
+                               case 39:
+                                       //right arrow
+                                       e.stopImmediatePropagation();
+                                       e.stopPropagation();
+                                       e.preventDefault();
+                                       break;
+
+                               case 13:
+                                       //enter
+                                       chooseItem();
+                                       break;
+
+                               case 27:
+                                       //escape
+                                       cancelItem();
+                                       break;
+                       }
+               });
+
+               input.addEventListener("blur", function (e) {
+                       if (blurable) {
+                               cancelItem();
+                       }
+               });
+
+               input.addEventListener("focus", function (e) {
+                       showList();
+               });
+
+               //style list element
+               listEl = document.createElement("div");
+               listEl.classList.add("tabulator-edit-select-list");
+
+               onRendered(function () {
+                       input.style.height = "100%";
+                       input.focus();
+               });
+
+               return input;
+       },
+
+       //autocomplete
+       autocomplete: function autocomplete(cell, onRendered, success, cancel, editorParams) {
+               var self = this,
+                   cellEl = cell.getElement(),
+                   initialValue = cell.getValue(),
+                   initialDisplayValue = typeof initialValue !== "undefined" || initialValue === null ? initialValue : typeof editorParams.defaultValue !== "undefined" ? editorParams.defaultValue : "",
+                   input = document.createElement("input"),
+                   listEl = document.createElement("div"),
+                   allItems = [],
+                   displayItems = [],
+                   values = [],
+                   currentItem = {},
+                   blurable = true;
+
+               this.table.rowManager.element.addEventListener("scroll", cancelItem);
+
+               function getUniqueColumnValues(field) {
+                       var output = {},
+                           data = self.table.getData(),
+                           column;
+
+                       if (field) {
+                               column = self.table.columnManager.getColumnByField(field);
+                       } else {
+                               column = cell.getColumn()._getSelf();
+                       }
+
+                       if (column) {
+                               data.forEach(function (row) {
+                                       var val = column.getFieldValue(row);
+
+                                       if (val !== null && typeof val !== "undefined" && val !== "") {
+                                               output[val] = true;
+                                       }
+                               });
+
+                               if (editorParams.sortValuesList) {
+                                       if (editorParams.sortValuesList == "asc") {
+                                               output = Object.keys(output).sort();
+                                       } else {
+                                               output = Object.keys(output).sort().reverse();
+                                       }
+                               } else {
+                                       output = Object.keys(output);
+                               }
+                       } else {
+                               console.warn("unable to find matching column to create autocomplete lookup list:", field);
+                       }
+
+                       return output;
+               }
+
+               function parseItems(inputValues, curentValue) {
+                       var itemList = [];
+
+                       if (Array.isArray(inputValues)) {
+                               inputValues.forEach(function (value) {
+                                       var item = {
+                                               title: editorParams.listItemFormatter ? editorParams.listItemFormatter(value, value) : value,
+                                               value: value,
+                                               element: false
+                                       };
+
+                                       if (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {
+                                               setCurrentItem(item);
+                                       }
+
+                                       itemList.push(item);
+                               });
+                       } else {
+                               for (var key in inputValues) {
+                                       var item = {
+                                               title: editorParams.listItemFormatter ? editorParams.listItemFormatter(key, inputValues[key]) : inputValues[key],
+                                               value: key,
+                                               element: false
+                                       };
+
+                                       if (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {
+                                               setCurrentItem(item);
+                                       }
+
+                                       itemList.push(item);
+                               }
+                       }
+
+                       if (editorParams.searchFunc) {
+                               itemList.forEach(function (item) {
+                                       item.search = {
+                                               title: item.title,
+                                               value: item.value
+                                       };
+                               });
+                       }
+
+                       allItems = itemList;
+               }
+
+               function filterList(term, intialLoad) {
+                       var matches = [],
+                           searchObjs = [],
+                           searchResults = [];
+
+                       if (editorParams.searchFunc) {
+
+                               allItems.forEach(function (item) {
+                                       searchObjs.push(item.search);
+                               });
+
+                               searchResults = editorParams.searchFunc(term, searchObjs);
+
+                               searchResults.forEach(function (result) {
+                                       var match = allItems.find(function (item) {
+                                               return item.search === result;
+                                       });
+
+                                       if (match) {
+                                               matches.push(match);
+                                       }
+                               });
+                       } else {
+                               if (term === "") {
+
+                                       if (editorParams.showListOnEmpty) {
+                                               allItems.forEach(function (item) {
+                                                       matches.push(item);
+                                               });
+                                       }
+                               } else {
+                                       allItems.forEach(function (item) {
+
+                                               if (item.value !== null || typeof item.value !== "undefined") {
+                                                       if (String(item.value).toLowerCase().indexOf(String(term).toLowerCase()) > -1 || String(item.title).toLowerCase().indexOf(String(term).toLowerCase()) > -1) {
+                                                               matches.push(item);
+                                                       }
+                                               }
+                                       });
+                               }
+                       }
+
+                       displayItems = matches;
+
+                       fillList(intialLoad);
+               }
+
+               function fillList(intialLoad) {
+                       var current = false;
+
+                       while (listEl.firstChild) {
+                               listEl.removeChild(listEl.firstChild);
+                       }displayItems.forEach(function (item) {
+                               var el = item.element;
+
+                               if (!el) {
+                                       el = document.createElement("div");
+                                       el.classList.add("tabulator-edit-select-list-item");
+                                       el.tabIndex = 0;
+                                       el.innerHTML = item.title;
+
+                                       el.addEventListener("click", function () {
+                                               setCurrentItem(item);
+                                               chooseItem();
+                                       });
+
+                                       el.addEventListener("mousedown", function () {
+                                               blurable = false;
+
+                                               setTimeout(function () {
+                                                       blurable = true;
+                                               }, 10);
+                                       });
+
+                                       item.element = el;
+
+                                       if (intialLoad && item.value == initialValue) {
+                                               input.value = item.title;
+                                               item.element.classList.add("active");
+                                               current = true;
+                                       }
+
+                                       if (item === currentItem) {
+                                               item.element.classList.add("active");
+                                               current = true;
+                                       }
+                               }
+
+                               listEl.appendChild(el);
+                       });
+
+                       if (!current) {
+                               setCurrentItem(false);
+                       }
+               }
+
+               function setCurrentItem(item, showInputValue) {
+                       if (currentItem && currentItem.element) {
+                               currentItem.element.classList.remove("active");
+                       }
+
+                       currentItem = item;
+
+                       if (item && item.element) {
+                               item.element.classList.add("active");
+                       }
+               }
+
+               function chooseItem() {
+                       hideList();
+
+                       if (currentItem) {
+                               if (initialValue !== currentItem.value) {
+                                       initialValue = currentItem.value;
+                                       input.value = currentItem.title;
+                                       success(currentItem.value);
+                               } else {
+                                       cancel();
+                               }
+                       } else {
+                               if (editorParams.freetext) {
+                                       initialValue = input.value;
+                                       success(input.value);
+                               } else {
+                                       if (editorParams.allowEmpty && input.value === "") {
+                                               initialValue = input.value;
+                                               success(input.value);
+                                       } else {
+                                               cancel();
+                                       }
+                               }
+                       }
+               }
+
+               function cancelItem() {
+                       hideList();
+                       cancel();
+               }
+
+               function showList() {
+                       if (!listEl.parentNode) {
+                               while (listEl.firstChild) {
+                                       listEl.removeChild(listEl.firstChild);
+                               }if (editorParams.values === true) {
+                                       values = getUniqueColumnValues();
+                               } else if (typeof editorParams.values === "string") {
+                                       values = getUniqueColumnValues(editorParams.values);
+                               } else {
+                                       values = editorParams.values || [];
+                               }
+
+                               parseItems(values, initialValue);
+
+                               var offset = Tabulator.prototype.helpers.elOffset(cellEl);
+
+                               listEl.style.minWidth = cellEl.offsetWidth + "px";
+
+                               listEl.style.top = offset.top + cellEl.offsetHeight + "px";
+                               listEl.style.left = offset.left + "px";
+                               document.body.appendChild(listEl);
+                       }
+               }
+
+               function hideList() {
+                       if (listEl.parentNode) {
+                               listEl.parentNode.removeChild(listEl);
+                       }
+
+                       removeScrollListener();
+               }
+
+               function removeScrollListener() {
+                       self.table.rowManager.element.removeEventListener("scroll", cancelItem);
+               }
+
+               //style input
+               input.setAttribute("type", "search");
+
+               input.style.padding = "4px";
+               input.style.width = "100%";
+               input.style.boxSizing = "border-box";
+
+               if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+                       for (var key in editorParams.elementAttributes) {
+                               if (key.charAt(0) == "+") {
+                                       key = key.slice(1);
+                                       input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+                               } else {
+                                       input.setAttribute(key, editorParams.elementAttributes[key]);
+                               }
+                       }
+               }
+
+               //allow key based navigation
+               input.addEventListener("keydown", function (e) {
+                       var index;
+
+                       switch (e.keyCode) {
+                               case 38:
+                                       //up arrow
+                                       e.stopImmediatePropagation();
+                                       e.stopPropagation();
+                                       e.preventDefault();
+
+                                       index = displayItems.indexOf(currentItem);
+
+                                       if (index > 0) {
+                                               setCurrentItem(displayItems[index - 1]);
+                                       } else {
+                                               setCurrentItem(false);
+                                       }
+                                       break;
+
+                               case 40:
+                                       //down arrow
+                                       e.stopImmediatePropagation();
+                                       e.stopPropagation();
+                                       e.preventDefault();
+
+                                       index = displayItems.indexOf(currentItem);
+
+                                       if (index < displayItems.length - 1) {
+                                               if (index == -1) {
+                                                       setCurrentItem(displayItems[0]);
+                                               } else {
+                                                       setCurrentItem(displayItems[index + 1]);
+                                               }
+                                       }
+                                       break;
+
+                               case 37: //left arrow
+                               case 39:
+                                       //right arrow
+                                       e.stopImmediatePropagation();
+                                       e.stopPropagation();
+                                       e.preventDefault();
+                                       break;
+
+                               case 13:
+                                       //enter
+                                       chooseItem();
+                                       break;
+
+                               case 27:
+                                       //escape
+                                       cancelItem();
+                                       break;
+
+                               case 36: //home
+                               case 35:
+                                       //end
+                                       //prevent table navigation while using input element
+                                       e.stopImmediatePropagation();
+                                       break;
+                       }
+               });
+
+               input.addEventListener("keyup", function (e) {
+
+                       switch (e.keyCode) {
+                               case 38: //up arrow
+                               case 37: //left arrow
+                               case 39: //up arrow
+                               case 40: //right arrow
+                               case 13: //enter
+                               case 27:
+                                       //escape
+                                       break;
+
+                               default:
+                                       filterList(input.value);
+                       }
+               });
+
+               input.addEventListener("search", function (e) {
+                       filterList(input.value);
+               });
+
+               input.addEventListener("blur", function (e) {
+                       if (blurable) {
+                               chooseItem();
+                       }
+               });
+
+               input.addEventListener("focus", function (e) {
+                       var value = initialDisplayValue;
+                       showList();
+                       input.value = value;
+                       filterList(value, true);
+               });
+
+               //style list element
+               listEl = document.createElement("div");
+               listEl.classList.add("tabulator-edit-select-list");
+
+               onRendered(function () {
+                       input.style.height = "100%";
+                       input.focus();
+               });
+
+               return input;
+       },
+
+       //start rating
+       star: function star(cell, onRendered, success, cancel, editorParams) {
+               var self = this,
+                   element = cell.getElement(),
+                   value = cell.getValue(),
+                   maxStars = element.getElementsByTagName("svg").length || 5,
+                   size = element.getElementsByTagName("svg")[0] ? element.getElementsByTagName("svg")[0].getAttribute("width") : 14,
+                   stars = [],
+                   starsHolder = document.createElement("div"),
+                   star = document.createElementNS('http://www.w3.org/2000/svg', "svg");
+
+               //change star type
+               function starChange(val) {
+                       stars.forEach(function (star, i) {
+                               if (i < val) {
+                                       if (self.table.browser == "ie") {
+                                               star.setAttribute("class", "tabulator-star-active");
+                                       } else {
+                                               star.classList.replace("tabulator-star-inactive", "tabulator-star-active");
+                                       }
+
+                                       star.innerHTML = '<polygon fill="#488CE9" stroke="#014AAE" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>';
+                               } else {
+                                       if (self.table.browser == "ie") {
+                                               star.setAttribute("class", "tabulator-star-inactive");
+                                       } else {
+                                               star.classList.replace("tabulator-star-active", "tabulator-star-inactive");
+                                       }
+
+                                       star.innerHTML = '<polygon fill="#010155" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>';
+                               }
+                       });
+               }
+
+               //build stars
+               function buildStar(i) {
+
+                       var starHolder = document.createElement("span");
+                       var nextStar = star.cloneNode(true);
+
+                       stars.push(nextStar);
+
+                       starHolder.addEventListener("mouseenter", function (e) {
+                               e.stopPropagation();
+                               e.stopImmediatePropagation();
+                               starChange(i);
+                       });
+
+                       starHolder.addEventListener("mousemove", function (e) {
+                               e.stopPropagation();
+                               e.stopImmediatePropagation();
+                       });
+
+                       starHolder.addEventListener("click", function (e) {
+                               e.stopPropagation();
+                               e.stopImmediatePropagation();
+                               success(i);
+                       });
+
+                       starHolder.appendChild(nextStar);
+                       starsHolder.appendChild(starHolder);
+               }
+
+               //handle keyboard navigation value change
+               function changeValue(val) {
+                       value = val;
+                       starChange(val);
+               }
+
+               //style cell
+               element.style.whiteSpace = "nowrap";
+               element.style.overflow = "hidden";
+               element.style.textOverflow = "ellipsis";
+
+               //style holding element
+               starsHolder.style.verticalAlign = "middle";
+               starsHolder.style.display = "inline-block";
+               starsHolder.style.padding = "4px";
+
+               //style star
+               star.setAttribute("width", size);
+               star.setAttribute("height", size);
+               star.setAttribute("viewBox", "0 0 512 512");
+               star.setAttribute("xml:space", "preserve");
+               star.style.padding = "0 1px";
+
+               if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+                       for (var key in editorParams.elementAttributes) {
+                               if (key.charAt(0) == "+") {
+                                       key = key.slice(1);
+                                       starsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+                               } else {
+                                       starsHolder.setAttribute(key, editorParams.elementAttributes[key]);
+                               }
+                       }
+               }
+
+               //create correct number of stars
+               for (var i = 1; i <= maxStars; i++) {
+                       buildStar(i);
+               }
+
+               //ensure value does not exceed number of stars
+               value = Math.min(parseInt(value), maxStars);
+
+               // set initial styling of stars
+               starChange(value);
+
+               starsHolder.addEventListener("mousemove", function (e) {
+                       starChange(0);
+               });
+
+               starsHolder.addEventListener("click", function (e) {
+                       success(0);
+               });
+
+               element.addEventListener("blur", function (e) {
+                       cancel();
+               });
+
+               //allow key based navigation
+               element.addEventListener("keydown", function (e) {
+                       switch (e.keyCode) {
+                               case 39:
+                                       //right arrow
+                                       changeValue(value + 1);
+                                       break;
+
+                               case 37:
+                                       //left arrow
+                                       changeValue(value - 1);
+                                       break;
+
+                               case 13:
+                                       //enter
+                                       success(value);
+                                       break;
+
+                               case 27:
+                                       //escape
+                                       cancel();
+                                       break;
+                       }
+               });
+
+               return starsHolder;
+       },
+
+       //draggable progress bar
+       progress: function progress(cell, onRendered, success, cancel, editorParams) {
+               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,
+                   percent = (max - min) / 100,
+                   value = cell.getValue() || 0,
+                   handle = document.createElement("div"),
+                   bar = document.createElement("div"),
+                   mouseDrag,
+                   mouseDragWidth;
+
+               //set new value
+               function updateValue() {
+                       var calcVal = percent * Math.round(bar.offsetWidth / (element.clientWidth / 100)) + min;
+                       success(calcVal);
+                       element.setAttribute("aria-valuenow", calcVal);
+                       element.setAttribute("aria-label", value);
+               }
+
+               //style handle
+               handle.style.position = "absolute";
+               handle.style.right = "0";
+               handle.style.top = "0";
+               handle.style.bottom = "0";
+               handle.style.width = "5px";
+               handle.classList.add("tabulator-progress-handle");
+
+               //style bar
+               bar.style.display = "inline-block";
+               bar.style.position = "relative";
+               // bar.style.top = "8px";
+               // bar.style.bottom = "8px";
+               // bar.style.left = "4px";
+               // bar.style.marginRight = "4px";
+               bar.style.height = "100%";
+               bar.style.backgroundColor = "#488CE9";
+               bar.style.maxWidth = "100%";
+               bar.style.minWidth = "0%";
+
+               if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+                       for (var key in editorParams.elementAttributes) {
+                               if (key.charAt(0) == "+") {
+                                       key = key.slice(1);
+                                       bar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+                               } else {
+                                       bar.setAttribute(key, editorParams.elementAttributes[key]);
+                               }
+                       }
+               }
+
+               //style cell
+               element.style.padding = "4px 4px";
+
+               //make sure value is in range
+               value = Math.min(parseFloat(value), max);
+               value = Math.max(parseFloat(value), min);
+
+               //workout percentage
+               value = Math.round((value - min) / percent);
+               // bar.style.right = value + "%";
+               bar.style.width = value + "%";
+
+               element.setAttribute("aria-valuemin", min);
+               element.setAttribute("aria-valuemax", max);
+
+               bar.appendChild(handle);
+
+               handle.addEventListener("mousedown", function (e) {
+                       mouseDrag = e.screenX;
+                       mouseDragWidth = bar.offsetWidth;
+               });
+
+               handle.addEventListener("mouseover", function () {
+                       handle.style.cursor = "ew-resize";
+               });
+
+               element.addEventListener("mousemove", function (e) {
+                       if (mouseDrag) {
+                               bar.style.width = mouseDragWidth + e.screenX - mouseDrag + "px";
+                       }
+               });
+
+               element.addEventListener("mouseup", function (e) {
+                       if (mouseDrag) {
+                               e.stopPropagation();
+                               e.stopImmediatePropagation();
+
+                               mouseDrag = false;
+                               mouseDragWidth = false;
+
+                               updateValue();
+                       }
+               });
+
+               //allow key based navigation
+               element.addEventListener("keydown", function (e) {
+                       switch (e.keyCode) {
+                               case 39:
+                                       //right arrow
+                                       bar.style.width = bar.clientWidth + element.clientWidth / 100 + "px";
+                                       break;
+
+                               case 37:
+                                       //left arrow
+                                       bar.style.width = bar.clientWidth - element.clientWidth / 100 + "px";
+                                       break;
+
+                               case 13:
+                                       //enter
+                                       updateValue();
+                                       break;
+
+                               case 27:
+                                       //escape
+                                       cancel();
+                                       break;
+
+                       }
+               });
+
+               element.addEventListener("blur", function () {
+                       cancel();
+               });
+
+               return bar;
+       },
+
+       //checkbox
+       tickCross: function tickCross(cell, onRendered, success, cancel, editorParams) {
+               var value = cell.getValue(),
+                   input = document.createElement("input"),
+                   tristate = editorParams.tristate,
+                   indetermValue = typeof editorParams.indeterminateValue === "undefined" ? null : editorParams.indeterminateValue,
+                   indetermState = false;
+
+               input.setAttribute("type", "checkbox");
+               input.style.marginTop = "5px";
+               input.style.boxSizing = "border-box";
+
+               if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+                       for (var key in editorParams.elementAttributes) {
+                               if (key.charAt(0) == "+") {
+                                       key = key.slice(1);
+                                       input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+                               } else {
+                                       input.setAttribute(key, editorParams.elementAttributes[key]);
+                               }
+                       }
+               }
+
+               input.value = value;
+
+               if (tristate && (typeof value === "undefined" || value === indetermValue || value === "")) {
+                       indetermState = true;
+                       input.indeterminate = true;
+               }
+
+               if (this.table.browser != "firefox") {
+                       //prevent blur issue on mac firefox
+                       onRendered(function () {
+                               input.focus();
+                       });
+               }
+
+               input.checked = value === true || value === "true" || value === "True" || value === 1;
+
+               function setValue(blur) {
+                       if (tristate) {
+                               if (!blur) {
+                                       if (input.checked && !indetermState) {
+                                               input.checked = false;
+                                               input.indeterminate = true;
+                                               indetermState = true;
+                                               return indetermValue;
+                                       } else {
+                                               indetermState = false;
+                                               return input.checked;
+                                       }
+                               } else {
+                                       if (indetermState) {
+                                               return indetermValue;
+                                       } else {
+                                               return input.checked;
+                                       }
+                               }
+                       } else {
+                               return input.checked;
+                       }
+               }
+
+               //submit new value on blur
+               input.addEventListener("change", function (e) {
+                       success(setValue());
+               });
+
+               input.addEventListener("blur", function (e) {
+                       success(setValue(true));
+               });
+
+               //submit new value on enter
+               input.addEventListener("keydown", function (e) {
+                       if (e.keyCode == 13) {
+                               success(setValue());
+                       }
+                       if (e.keyCode == 27) {
+                               cancel();
+                       }
+               });
+
+               return input;
+       }
+};
+
+Tabulator.prototype.registerModule("edit", Edit);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/edit.min.js b/backoffice/vendors/tabulator/js.old/modules/edit.min.js
new file mode 100644 (file)
index 0000000..fc6d407
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+var _typeof="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},Edit=function(e){this.table=e,this.currentCell=!1,this.mouseClick=!1,this.recursionBlock=!1,this.invalidEdit=!1};Edit.prototype.initializeColumn=function(e){var t=this,i={editor:!1,blocked:!1,check:e.definition.editable,params:e.definition.editorParams||{}};switch(_typeof(e.definition.editor)){case"string":"tick"===e.definition.editor&&(e.definition.editor="tickCross",console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor")),t.editors[e.definition.editor]?i.editor=t.editors[e.definition.editor]:console.warn("Editor Error - No such editor found: ",e.definition.editor);break;case"function":i.editor=e.definition.editor;break;case"boolean":!0===e.definition.editor&&("function"!=typeof e.definition.formatter?("tick"===e.definition.formatter&&(e.definition.formatter="tickCross",console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor")),t.editors[e.definition.formatter]?i.editor=t.editors[e.definition.formatter]:i.editor=t.editors.input):console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ",e.definition.formatter))}i.editor&&(e.modules.edit=i)},Edit.prototype.getCurrentCell=function(){return!!this.currentCell&&this.currentCell.getComponent()},Edit.prototype.clearEditor=function(){var e,t=this.currentCell;if(this.invalidEdit=!1,t){for(this.currentCell=!1,e=t.getElement(),e.classList.remove("tabulator-validation-fail"),e.classList.remove("tabulator-editing");e.firstChild;)e.removeChild(e.firstChild);t.row.getElement().classList.remove("tabulator-row-editing")}},Edit.prototype.cancelEdit=function(){if(this.currentCell){var e=this.currentCell,t=this.currentCell.getComponent();this.clearEditor(),e.setValueActual(e.getValue()),e.column.cellEvents.cellEditCancelled&&e.column.cellEvents.cellEditCancelled.call(this.table,t),this.table.options.cellEditCancelled.call(this.table,t)}},Edit.prototype.bindEditor=function(e){var t=this,i=e.getElement();i.setAttribute("tabindex",0),i.addEventListener("click",function(e){i.classList.contains("tabulator-editing")||i.focus()}),i.addEventListener("mousedown",function(e){t.mouseClick=!0}),i.addEventListener("focus",function(i){t.recursionBlock||t.edit(e,i,!1)})},Edit.prototype.focusCellNoEvent=function(e){this.recursionBlock=!0,"ie"!==this.table.browser&&e.getElement().focus(),this.recursionBlock=!1},Edit.prototype.editCell=function(e,t){this.focusCellNoEvent(e),this.edit(e,!1,t)},Edit.prototype.edit=function(e,t,i){function n(t){if(u.currentCell===e){var i=!0;return e.column.modules.validate&&u.table.modExists("validate")&&(i=u.table.modules.validate.validate(e.column.modules.validate,e.getComponent(),t)),!0===i?(u.clearEditor(),e.setValue(t,!0),u.table.options.dataTree&&u.table.modExists("dataTree")&&u.table.modules.dataTree.checkForRestyle(e),!0):(u.invalidEdit=!0,m.classList.add("tabulator-validation-fail"),u.focusCellNoEvent(e),d(),u.table.options.validationFailed.call(u.table,e.getComponent(),t,i),!1)}}function a(){u.currentCell===e&&(u.cancelEdit(),u.table.options.dataTree&&u.table.modExists("dataTree")&&u.table.modules.dataTree.checkForRestyle(e))}function o(e){d=e}var r,l,s,u=this,c=!0,d=function(){},m=e.getElement();if(this.currentCell)return void(this.invalidEdit||this.cancelEdit());if(e.column.modules.edit.blocked)return this.mouseClick=!1,m.blur(),!1;switch(t&&t.stopPropagation(),_typeof(e.column.modules.edit.check)){case"function":c=e.column.modules.edit.check(e.getComponent());break;case"boolean":c=e.column.modules.edit.check}if(c||i){if(u.cancelEdit(),u.currentCell=e,l=e.getComponent(),this.mouseClick&&(this.mouseClick=!1,e.column.cellEvents.cellClick&&e.column.cellEvents.cellClick.call(this.table,t,l)),e.column.cellEvents.cellEditing&&e.column.cellEvents.cellEditing.call(this.table,l),u.table.options.cellEditing.call(this.table,l),s="function"==typeof e.column.modules.edit.params?e.column.modules.edit.params(l):e.column.modules.edit.params,!1===(r=e.column.modules.edit.editor.call(u,l,o,n,a,s)))return m.blur(),!1;if(!(r instanceof Node))return console.warn("Edit Error - Editor should return an instance of Node, the editor returned:",r),m.blur(),!1;for(m.classList.add("tabulator-editing"),e.row.getElement().classList.add("tabulator-row-editing");m.firstChild;)m.removeChild(m.firstChild);m.appendChild(r),d();for(var f=m.children,v=0;v<f.length;v++)f[v].addEventListener("click",function(e){e.stopPropagation()});return!0}return this.mouseClick=!1,m.blur(),!1},Edit.prototype.editors={input:function(e,t,i,n,a){function o(e){(null===r||void 0===r)&&""!==l.value||l.value!=r?i(l.value)&&(r=l.value):n()}var r=e.getValue(),l=document.createElement("input");if(l.setAttribute("type",a.search?"search":"text"),l.style.padding="4px",l.style.width="100%",l.style.boxSizing="border-box",a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var s in a.elementAttributes)"+"==s.charAt(0)?(s=s.slice(1),l.setAttribute(s,l.getAttribute(s)+a.elementAttributes["+"+s])):l.setAttribute(s,a.elementAttributes[s]);return l.value=void 0!==r?r:"",t(function(){l.focus(),l.style.height="100%"}),l.addEventListener("change",o),l.addEventListener("blur",o),l.addEventListener("keydown",function(e){switch(e.keyCode){case 13:o(e);break;case 27:n()}}),l},textarea:function(e,t,i,n,a){function o(t){(null===r||void 0===r)&&""!==s.value||s.value!=r?(i(s.value)&&(r=s.value),setTimeout(function(){e.getRow().normalizeHeight()},300)):n()}var r=e.getValue(),l=String(null!==r&&void 0!==r?r:""),s=(l.match(/(?:\r\n|\r|\n)/g),document.createElement("textarea")),u=0;if(s.style.display="block",s.style.padding="2px",s.style.height="100%",s.style.width="100%",s.style.boxSizing="border-box",s.style.whiteSpace="pre-wrap",s.style.resize="none",a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var c in a.elementAttributes)"+"==c.charAt(0)?(c=c.slice(1),s.setAttribute(c,s.getAttribute(c)+a.elementAttributes["+"+c])):s.setAttribute(c,a.elementAttributes[c]);return s.value=l,t(function(){s.focus(),s.style.height="100%"}),s.addEventListener("change",o),s.addEventListener("blur",o),s.addEventListener("keyup",function(){s.style.height="";var t=s.scrollHeight;s.style.height=t+"px",t!=u&&(u=t,e.getRow().normalizeHeight())}),s.addEventListener("keydown",function(e){27==e.keyCode&&n()}),s},number:function(e,t,i,n,a){function o(){var e=l.value;isNaN(e)||""===e||(e=Number(e)),e!=r?i(e)&&(r=e):n()}var r=e.getValue(),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"==_typeof(a.elementAttributes))for(var s in a.elementAttributes)"+"==s.charAt(0)?(s=s.slice(1),l.setAttribute(s,l.getAttribute(s)+a.elementAttributes["+"+s])):l.setAttribute(s,a.elementAttributes[s]);l.value=r;var u=function(e){o()};return t(function(){l.removeEventListener("blur",u),l.focus(),l.style.height="100%",l.addEventListener("blur",u)}),l.addEventListener("keydown",function(e){switch(e.keyCode){case 13:o();break;case 27:n()}}),l},range:function(e,t,i,n,a){function o(){var e=l.value;isNaN(e)||""===e||(e=Number(e)),e!=r?i(e)&&(r=e):n()}var r=e.getValue(),l=document.createElement("input");if(l.setAttribute("type","range"),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"==_typeof(a.elementAttributes))for(var s in a.elementAttributes)"+"==s.charAt(0)?(s=s.slice(1),l.setAttribute(s,l.getAttribute(s)+a.elementAttributes["+"+s])):l.setAttribute(s,a.elementAttributes[s]);return l.value=r,t(function(){l.focus(),l.style.height="100%"}),l.addEventListener("blur",function(e){o()}),l.addEventListener("keydown",function(e){switch(e.keyCode){case 13:case 9:o();break;case 27:n()}}),l},select:function(e,t,i,n,a){function o(t){var i,n={},o=v.table.getData();return i=t?v.table.columnManager.getColumnByField(t):e.getColumn()._getSelf(),i?(o.forEach(function(e){var t=i.getFieldValue(e);null!==t&&void 0!==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 select lookup list:",t),n}function r(t,i){function n(e){var e={label:a.listItemFormatter?a.listItemFormatter(e.value,e.label):e.label,value:e.value,element:!1};return e.value!==i&&(isNaN(parseFloat(e.value))||isNaN(parseFloat(e.value))||parseFloat(e.value)!==parseFloat(i))||s(e),o.push(e),r.push(e),e}var o=[],r=[];if("function"==typeof t&&(t=t(e)),Array.isArray(t))t.forEach(function(e){var t;"object"===(void 0===e?"undefined":_typeof(e))?e.options?(t={label:e.label,group:!0,element:!1},r.push(t),e.options.forEach(function(e){n(e)})):n(e):(t={label:a.listItemFormatter?a.listItemFormatter(e,e):e,value:e,element:!1},t.value!==i&&(isNaN(parseFloat(t.value))||isNaN(parseFloat(t.value))||parseFloat(t.value)!==parseFloat(i))||s(t),o.push(t),r.push(t))});else for(var u in t){var c={label:a.listItemFormatter?a.listItemFormatter(u,t[u]):t[u],value:u,element:!1};c.value!==i&&(isNaN(parseFloat(c.value))||isNaN(parseFloat(c.value))||parseFloat(c.value)!==parseFloat(i))||s(c),o.push(c),r.push(c)}E=o,A=r,l()}function l(){for(;g.firstChild;)g.removeChild(g.firstChild);A.forEach(function(e){var t=e.element;t||(e.group?(t=document.createElement("div"),t.classList.add("tabulator-edit-select-list-group"),t.tabIndex=0,t.innerHTML=""===e.label?"&nbsp;":e.label):(t=document.createElement("div"),t.classList.add("tabulator-edit-select-list-item"),t.tabIndex=0,t.innerHTML=""===e.label?"&nbsp;":e.label,t.addEventListener("click",function(){s(e),u()}),e===k&&t.classList.add("active")),t.addEventListener("mousedown",function(){C=!1,setTimeout(function(){C=!0},10)}),e.element=t),g.appendChild(t)})}function s(e){k&&k.element&&k.element.classList.remove("active"),k=e,y.value="&nbsp;"===e.label?"":e.label,e.element&&e.element.classList.add("active")}function u(){m(),b!==k.value?(b=k.value,i(k.value)):n()}function c(){m(),n()}function d(){if(!g.parentNode){!0===a.values?r(o(),h):"string"==typeof a.values?r(o(a.values),h):r(a.values||[],h);var e=Tabulator.prototype.helpers.elOffset(p);g.style.minWidth=p.offsetWidth+"px",g.style.top=e.top+p.offsetHeight+"px",g.style.left=e.left+"px",document.body.appendChild(g)}}function m(){g.parentNode&&g.parentNode.removeChild(g),f()}function f(){v.table.rowManager.element.removeEventListener("scroll",c)}var v=this,p=e.getElement(),b=e.getValue(),h=void 0!==b||null===b?b:void 0!==a.defaultValue?a.defaultValue:"",y=document.createElement("input"),g=document.createElement("div"),E=[],A=[],k={},C=!0;if(this.table.rowManager.element.addEventListener("scroll",c),(Array.isArray(a)||!Array.isArray(a)&&"object"===(void 0===a?"undefined":_typeof(a))&&!a.values)&&(console.warn("DEPRECATION WANRING - 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}),y.setAttribute("type","text"),y.style.padding="4px",y.style.width="100%",y.style.boxSizing="border-box",y.style.cursor="default",y.readOnly=0!=this.currentCell,a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var L in a.elementAttributes)"+"==L.charAt(0)?(L=L.slice(1),y.setAttribute(L,y.getAttribute(L)+a.elementAttributes["+"+L])):y.setAttribute(L,a.elementAttributes[L]);return y.value=void 0!==b||null===b?b:"",!0===a.values?r(o(),b):"string"==typeof a.values?r(o(a.values),b):r(a.values||[],b),y.addEventListener("keydown",function(e){var t;switch(e.keyCode){case 38:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t=E.indexOf(k),t>0&&s(E[t-1]);break;case 40:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t=E.indexOf(k),t<E.length-1&&s(-1==t?E[0]:E[t+1]);break;case 37:case 39:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault();break;case 13:u();break;case 27:c()}}),y.addEventListener("blur",function(e){C&&c()}),y.addEventListener("focus",function(e){d()}),g=document.createElement("div"),g.classList.add("tabulator-edit-select-list"),t(function(){y.style.height="100%",y.focus()}),y},autocomplete:function(e,t,i,n,a){function o(t){var i,n={},o=p.table.getData();return i=t?p.table.columnManager.getColumnByField(t):e.getColumn()._getSelf(),i?(o.forEach(function(e){var t=i.getFieldValue(e);null!==t&&void 0!==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:",t),n}function r(e,t){var i=[];if(Array.isArray(e))e.forEach(function(e){var n={title:a.listItemFormatter?a.listItemFormatter(e,e):e,value:e,element:!1};n.value!==t&&(isNaN(parseFloat(n.value))||isNaN(parseFloat(n.value))||parseFloat(n.value)!==parseFloat(t))||u(n),i.push(n)});else for(var n in e){var o={title:a.listItemFormatter?a.listItemFormatter(n,e[n]):e[n],value:n,element:!1};o.value!==t&&(isNaN(parseFloat(o.value))||isNaN(parseFloat(o.value))||parseFloat(o.value)!==parseFloat(t))||u(o),i.push(o)}a.searchFunc&&i.forEach(function(e){e.search={title:e.title,value:e.value}}),A=i}function l(e,t){var i=[],n=[],o=[];a.searchFunc?(A.forEach(function(e){n.push(e.search)}),o=a.searchFunc(e,n),o.forEach(function(e){var t=A.find(function(t){return t.search===e});t&&i.push(t)})):""===e?a.showListOnEmpty&&A.forEach(function(e){i.push(e)}):A.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)&&i.push(t)}),k=i,s(t)}function s(e){for(var t=!1;E.firstChild;)E.removeChild(E.firstChild);k.forEach(function(i){var n=i.element;n||(n=document.createElement("div"),n.classList.add("tabulator-edit-select-list-item"),n.tabIndex=0,n.innerHTML=i.title,n.addEventListener("click",function(){u(i),c()}),n.addEventListener("mousedown",function(){w=!1,setTimeout(function(){w=!0},10)}),i.element=n,e&&i.value==h&&(g.value=i.title,i.element.classList.add("active"),t=!0),i===L&&(i.element.classList.add("active"),t=!0)),E.appendChild(n)}),t||u(!1)}function u(e,t){L&&L.element&&L.element.classList.remove("active"),L=e,e&&e.element&&e.element.classList.add("active")}function c(){f(),L?h!==L.value?(h=L.value,g.value=L.title,i(L.value)):n():a.freetext?(h=g.value,i(g.value)):a.allowEmpty&&""===g.value?(h=g.value,i(g.value)):n()}function d(){f(),n()}function m(){if(!E.parentNode){for(;E.firstChild;)E.removeChild(E.firstChild);C=!0===a.values?o():"string"==typeof a.values?o(a.values):a.values||[],r(C,h);var e=Tabulator.prototype.helpers.elOffset(b);E.style.minWidth=b.offsetWidth+"px",E.style.top=e.top+b.offsetHeight+"px",E.style.left=e.left+"px",document.body.appendChild(E)}}function f(){E.parentNode&&E.parentNode.removeChild(E),v()}function v(){p.table.rowManager.element.removeEventListener("scroll",d)}var p=this,b=e.getElement(),h=e.getValue(),y=void 0!==h||null===h?h:void 0!==a.defaultValue?a.defaultValue:"",g=document.createElement("input"),E=document.createElement("div"),A=[],k=[],C=[],L={},w=!0;if(this.table.rowManager.element.addEventListener("scroll",d),g.setAttribute("type","search"),g.style.padding="4px",g.style.width="100%",g.style.boxSizing="border-box",a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var x in a.elementAttributes)"+"==x.charAt(0)?(x=x.slice(1),g.setAttribute(x,g.getAttribute(x)+a.elementAttributes["+"+x])):g.setAttribute(x,a.elementAttributes[x]);return g.addEventListener("keydown",function(e){var t;switch(e.keyCode){case 38:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t=k.indexOf(L),u(t>0?k[t-1]:!1);break;case 40:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t=k.indexOf(L),t<k.length-1&&u(-1==t?k[0]:k[t+1]);break;case 37:case 39:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault();break;case 13:c();break;case 27:d();break;case 36:case 35:e.stopImmediatePropagation()}}),g.addEventListener("keyup",function(e){switch(e.keyCode){case 38:case 37:case 39:case 40:case 13:case 27:break;default:l(g.value)}}),g.addEventListener("search",function(e){l(g.value)}),g.addEventListener("blur",function(e){w&&c()}),g.addEventListener("focus",function(e){var t=y;m(),g.value=t,l(t,!0)}),E=document.createElement("div"),E.classList.add("tabulator-edit-select-list"),t(function(){g.style.height="100%",g.focus()}),g},star:function(e,t,i,n,a){function o(e){m.forEach(function(t,i){i<e?("ie"==l.table.browser?t.setAttribute("class","tabulator-star-active"):t.classList.replace("tabulator-star-inactive","tabulator-star-active"),t.innerHTML='<polygon fill="#488CE9" stroke="#014AAE" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>'):("ie"==l.table.browser?t.setAttribute("class","tabulator-star-inactive"):t.classList.replace("tabulator-star-active","tabulator-star-inactive"),t.innerHTML='<polygon fill="#010155" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>')})}function r(e){u=e,o(e)}var l=this,s=e.getElement(),u=e.getValue(),c=s.getElementsByTagName("svg").length||5,d=s.getElementsByTagName("svg")[0]?s.getElementsByTagName("svg")[0].getAttribute("width"):14,m=[],f=document.createElement("div"),v=document.createElementNS("http://www.w3.org/2000/svg","svg");if(s.style.whiteSpace="nowrap",s.style.overflow="hidden",s.style.textOverflow="ellipsis",f.style.verticalAlign="middle",f.style.display="inline-block",f.style.padding="4px",v.setAttribute("width",d),v.setAttribute("height",d),v.setAttribute("viewBox","0 0 512 512"),v.setAttribute("xml:space","preserve"),v.style.padding="0 1px",a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var p in a.elementAttributes)"+"==p.charAt(0)?(p=p.slice(1),f.setAttribute(p,f.getAttribute(p)+a.elementAttributes["+"+p])):f.setAttribute(p,a.elementAttributes[p]);for(var b=1;b<=c;b++)!function(e){var t=document.createElement("span"),n=v.cloneNode(!0);m.push(n),t.addEventListener("mouseenter",function(t){t.stopPropagation(),t.stopImmediatePropagation(),o(e)}),t.addEventListener("mousemove",function(e){e.stopPropagation(),e.stopImmediatePropagation()}),t.addEventListener("click",function(t){t.stopPropagation(),t.stopImmediatePropagation(),i(e)}),t.appendChild(n),f.appendChild(t)}(b);return u=Math.min(parseInt(u),c),o(u),f.addEventListener("mousemove",function(e){o(0)}),f.addEventListener("click",function(e){i(0)}),s.addEventListener("blur",function(e){n()}),s.addEventListener("keydown",function(e){switch(e.keyCode){case 39:r(u+1);break;case 37:r(u-1);break;case 13:i(u);break;case 27:n()}}),f},progress:function(e,t,i,n,a){function o(){var e=d*Math.round(v.offsetWidth/(s.clientWidth/100))+c;i(e),s.setAttribute("aria-valuenow",e),s.setAttribute("aria-label",m)}var r,l,s=e.getElement(),u=void 0===a.max?s.getElementsByTagName("div")[0].getAttribute("max")||100:a.max,c=void 0===a.min?s.getElementsByTagName("div")[0].getAttribute("min")||0:a.min,d=(u-c)/100,m=e.getValue()||0,f=document.createElement("div"),v=document.createElement("div");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"),v.style.display="inline-block",v.style.position="relative",v.style.height="100%",v.style.backgroundColor="#488CE9",v.style.maxWidth="100%",v.style.minWidth="0%",a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var p in a.elementAttributes)"+"==p.charAt(0)?(p=p.slice(1),v.setAttribute(p,v.getAttribute(p)+a.elementAttributes["+"+p])):v.setAttribute(p,a.elementAttributes[p]);return s.style.padding="4px 4px",m=Math.min(parseFloat(m),u),m=Math.max(parseFloat(m),c),m=Math.round((m-c)/d),v.style.width=m+"%",s.setAttribute("aria-valuemin",c),s.setAttribute("aria-valuemax",u),v.appendChild(f),f.addEventListener("mousedown",function(e){r=e.screenX,l=v.offsetWidth}),f.addEventListener("mouseover",function(){f.style.cursor="ew-resize"}),s.addEventListener("mousemove",function(e){r&&(v.style.width=l+e.screenX-r+"px")}),s.addEventListener("mouseup",function(e){r&&(e.stopPropagation(),e.stopImmediatePropagation(),r=!1,l=!1,o())}),s.addEventListener("keydown",function(e){switch(e.keyCode){case 39:v.style.width=v.clientWidth+s.clientWidth/100+"px";break;case 37:v.style.width=v.clientWidth-s.clientWidth/100+"px";break;case 13:o();break;case 27:n()}}),s.addEventListener("blur",function(){n()}),v},tickCross:function(e,t,i,n,a){function o(e){return s?e?c?u:l.checked:l.checked&&!c?(l.checked=!1,l.indeterminate=!0,c=!0,u):(c=!1,l.checked):l.checked}var r=e.getValue(),l=document.createElement("input"),s=a.tristate,u=void 0===a.indeterminateValue?null:a.indeterminateValue,c=!1;if(l.setAttribute("type","checkbox"),l.style.marginTop="5px",l.style.boxSizing="border-box",a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var d in a.elementAttributes)"+"==d.charAt(0)?(d=d.slice(1),l.setAttribute(d,l.getAttribute(d)+a.elementAttributes["+"+d])):l.setAttribute(d,a.elementAttributes[d]);return l.value=r,!s||void 0!==r&&r!==u&&""!==r||(c=!0,l.indeterminate=!0),"firefox"!=this.table.browser&&t(function(){l.focus()}),l.checked=!0===r||"true"===r||"True"===r||1===r,l.addEventListener("change",function(e){i(o())}),l.addEventListener("blur",function(e){i(o(!0))}),l.addEventListener("keydown",function(e){13==e.keyCode&&i(o()),27==e.keyCode&&n()}),l}},Tabulator.prototype.registerModule("edit",Edit);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/filter.js b/backoffice/vendors/tabulator/js.old/modules/filter.js
new file mode 100644 (file)
index 0000000..88ae538
--- /dev/null
@@ -0,0 +1,754 @@
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+
+var Filter = function Filter(table) {
+
+       this.table = table; //hold Tabulator object
+
+       this.filterList = []; //hold filter list
+       this.headerFilters = {}; //hold column filters
+       this.headerFilterElements = []; //hold header filter elements for manipulation
+       this.headerFilterColumns = []; //hold columns that use header filters
+
+       this.changed = false; //has filtering changed since last render
+};
+
+//initialize column header filter
+Filter.prototype.initializeColumn = function (column, value) {
+       var self = this,
+           field = column.getField(),
+           params;
+
+       //handle successfull value change
+       function success(value) {
+               var filterType = column.modules.filter.tagType == "input" && column.modules.filter.attrType == "text" || column.modules.filter.tagType == "textarea" ? "partial" : "match",
+                   type = "",
+                   filterFunc;
+
+               if (typeof column.modules.filter.prevSuccess === "undefined" || column.modules.filter.prevSuccess !== value) {
+
+                       column.modules.filter.prevSuccess = value;
+
+                       if (!column.modules.filter.emptyFunc(value)) {
+                               column.modules.filter.value = value;
+
+                               switch (_typeof(column.definition.headerFilterFunc)) {
+                                       case "string":
+                                               if (self.filters[column.definition.headerFilterFunc]) {
+                                                       type = column.definition.headerFilterFunc;
+                                                       filterFunc = function filterFunc(data) {
+                                                               var params = column.definition.headerFilterFuncParams || {};
+                                                               var fieldVal = column.getFieldValue(data);
+
+                                                               params = typeof params === "function" ? params(value, fieldVal, data) : params;
+
+                                                               return self.filters[column.definition.headerFilterFunc](value, fieldVal, data, params);
+                                                       };
+                                               } else {
+                                                       console.warn("Header Filter Error - Matching filter function not found: ", column.definition.headerFilterFunc);
+                                               }
+                                               break;
+
+                                       case "function":
+                                               filterFunc = function filterFunc(data) {
+                                                       var params = column.definition.headerFilterFuncParams || {};
+                                                       var fieldVal = column.getFieldValue(data);
+
+                                                       params = typeof params === "function" ? params(value, fieldVal, data) : params;
+
+                                                       return column.definition.headerFilterFunc(value, fieldVal, data, params);
+                                               };
+
+                                               type = filterFunc;
+                                               break;
+                               }
+
+                               if (!filterFunc) {
+                                       switch (filterType) {
+                                               case "partial":
+                                                       filterFunc = function filterFunc(data) {
+                                                               var colVal = column.getFieldValue(data);
+
+                                                               if (typeof colVal !== 'undefined' && colVal !== null) {
+                                                                       return String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1;
+                                                               } else {
+                                                                       return false;
+                                                               }
+                                                       };
+                                                       type = "like";
+                                                       break;
+
+                                               default:
+                                                       filterFunc = function filterFunc(data) {
+                                                               return column.getFieldValue(data) == value;
+                                                       };
+                                                       type = "=";
+                                       }
+                               }
+
+                               self.headerFilters[field] = { value: value, func: filterFunc, type: type };
+                       } else {
+                               delete self.headerFilters[field];
+                       }
+
+                       self.changed = true;
+
+                       self.table.rowManager.filterRefresh();
+               }
+
+               return true;
+       }
+
+       column.modules.filter = {
+               success: success,
+               attrType: false,
+               tagType: false,
+               emptyFunc: false
+       };
+
+       this.generateHeaderFilterElement(column);
+};
+
+Filter.prototype.generateHeaderFilterElement = function (column, initialValue) {
+       var _this = this;
+
+       var self = this,
+           success = column.modules.filter.success,
+           field = column.getField(),
+           filterElement,
+           editor,
+           editorElement,
+           cellWrapper,
+           typingTimer,
+           searchTrigger,
+           params;
+
+       //handle aborted edit
+       function cancel() {}
+
+       if (column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode) {
+               var oldFilterElement = column.modules.filter.headerElement.parentNode;
+               var oldFilterElementIndex = self.headerFilterElements.indexOf(oldFilterElement);
+               if (oldFilterElementIndex >= 0) {
+                       self.headerFilterElements.splice(oldFilterElementIndex, 1);
+               }
+
+               var oldColumnIndex = self.headerFilterColumns.indexOf(oldColumnIndex);
+               if (oldColumnIndex >= 0) {
+                       self.headerFilterColumns.splice(oldColumnIndex, 1);
+               }
+
+               column.contentElement.removeChild(oldFilterElement);
+       }
+
+       if (field) {
+
+               //set empty value function
+               column.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function (value) {
+                       return !value && value !== "0";
+               };
+
+               filterElement = document.createElement("div");
+               filterElement.classList.add("tabulator-header-filter");
+
+               //set column editor
+               switch (_typeof(column.definition.headerFilter)) {
+                       case "string":
+                               if (self.table.modules.edit.editors[column.definition.headerFilter]) {
+                                       editor = self.table.modules.edit.editors[column.definition.headerFilter];
+
+                                       if ((column.definition.headerFilter === "tick" || column.definition.headerFilter === "tickCross") && !column.definition.headerFilterEmptyCheck) {
+                                               column.modules.filter.emptyFunc = function (value) {
+                                                       return value !== true && value !== false;
+                                               };
+                                       }
+                               } else {
+                                       console.warn("Filter Error - Cannot build header filter, No such editor found: ", column.definition.editor);
+                               }
+                               break;
+
+                       case "function":
+                               editor = column.definition.headerFilter;
+                               break;
+
+                       case "boolean":
+                               if (column.modules.edit && column.modules.edit.editor) {
+                                       editor = column.modules.edit.editor;
+                               } else {
+                                       if (column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]) {
+                                               editor = self.table.modules.edit.editors[column.definition.formatter];
+
+                                               if ((column.definition.formatter === "tick" || column.definition.formatter === "tickCross") && !column.definition.headerFilterEmptyCheck) {
+                                                       column.modules.filter.emptyFunc = function (value) {
+                                                               return value !== true && value !== false;
+                                                       };
+                                               }
+                                       } else {
+                                               editor = self.table.modules.edit.editors["input"];
+                                       }
+                               }
+                               break;
+               }
+
+               if (editor) {
+
+                       cellWrapper = {
+                               getValue: function getValue() {
+                                       return typeof initialValue !== "undefined" ? initialValue : "";
+                               },
+                               getField: function getField() {
+                                       return column.definition.field;
+                               },
+                               getElement: function getElement() {
+                                       return filterElement;
+                               },
+                               getColumn: function getColumn() {
+                                       return column.getComponent();
+                               },
+                               getRow: function getRow() {
+                                       return {
+                                               normalizeHeight: function normalizeHeight() {}
+                                       };
+                               }
+                       };
+
+                       params = column.definition.headerFilterParams || {};
+
+                       params = typeof params === "function" ? params.call(self.table) : params;
+
+                       editorElement = editor.call(this.table.modules.edit, cellWrapper, function () {}, success, cancel, params);
+
+                       if (!editorElement) {
+                               console.warn("Filter Error - Cannot add filter to " + field + " column, editor returned a value of false");
+                               return;
+                       }
+
+                       if (!(editorElement instanceof Node)) {
+                               console.warn("Filter Error - Cannot add filter to " + field + " column, editor should return an instance of Node, the editor returned:", editorElement);
+                               return;
+                       }
+
+                       //set Placeholder Text
+                       if (field) {
+                               self.table.modules.localize.bind("headerFilters|columns|" + column.definition.field, function (value) {
+                                       editorElement.setAttribute("placeholder", typeof value !== "undefined" && value ? value : self.table.modules.localize.getText("headerFilters|default"));
+                               });
+                       } else {
+                               self.table.modules.localize.bind("headerFilters|default", function (value) {
+                                       editorElement.setAttribute("placeholder", typeof self.column.definition.headerFilterPlaceholder !== "undefined" && self.column.definition.headerFilterPlaceholder ? self.column.definition.headerFilterPlaceholder : value);
+                               });
+                       }
+
+                       //focus on element on click
+                       editorElement.addEventListener("click", function (e) {
+                               e.stopPropagation();
+                               editorElement.focus();
+                       });
+
+                       editorElement.addEventListener("focus", function (e) {
+                               var left = _this.table.columnManager.element.scrollLeft;
+
+                               if (left !== _this.table.rowManager.element.scrollLeft) {
+                                       _this.table.rowManager.scrollHorizontal(left);
+                                       _this.table.columnManager.scrollHorizontal(left);
+                               }
+                       });
+
+                       //live update filters as user types
+                       typingTimer = false;
+
+                       searchTrigger = function searchTrigger(e) {
+                               if (typingTimer) {
+                                       clearTimeout(typingTimer);
+                               }
+
+                               typingTimer = setTimeout(function () {
+                                       success(editorElement.value);
+                               }, 300);
+                       };
+
+                       column.modules.filter.headerElement = editorElement;
+                       column.modules.filter.attrType = editorElement.hasAttribute("type") ? editorElement.getAttribute("type").toLowerCase() : "";
+                       column.modules.filter.tagType = editorElement.tagName.toLowerCase();
+
+                       if (column.definition.headerFilterLiveFilter !== false) {
+
+                               if (!(column.definition.headerFilter === 'autocomplete' || column.definition.headerFilter === 'tickCross' || (column.definition.editor === 'autocomplete' || column.definition.editor === 'tickCross') && column.definition.headerFilter === true)) {
+                                       editorElement.addEventListener("keyup", searchTrigger);
+                                       editorElement.addEventListener("search", searchTrigger);
+
+                                       //update number filtered columns on change
+                                       if (column.modules.filter.attrType == "number") {
+                                               editorElement.addEventListener("change", function (e) {
+                                                       success(editorElement.value);
+                                               });
+                                       }
+
+                                       //change text inputs to search inputs to allow for clearing of field
+                                       if (column.modules.filter.attrType == "text" && this.table.browser !== "ie") {
+                                               editorElement.setAttribute("type", "search");
+                                               // editorElement.off("change blur"); //prevent blur from triggering filter and preventing selection click
+                                       }
+                               }
+
+                               //prevent input and select elements from propegating click to column sorters etc
+                               if (column.modules.filter.tagType == "input" || column.modules.filter.tagType == "select" || column.modules.filter.tagType == "textarea") {
+                                       editorElement.addEventListener("mousedown", function (e) {
+                                               e.stopPropagation();
+                                       });
+                               }
+                       }
+
+                       filterElement.appendChild(editorElement);
+
+                       column.contentElement.appendChild(filterElement);
+
+                       self.headerFilterElements.push(editorElement);
+                       self.headerFilterColumns.push(column);
+               }
+       } else {
+               console.warn("Filter Error - Cannot add header filter, column has no field set:", column.definition.title);
+       }
+};
+
+//hide all header filter elements (used to ensure correct column widths in "fitData" layout mode)
+Filter.prototype.hideHeaderFilterElements = function () {
+       this.headerFilterElements.forEach(function (element) {
+               element.style.display = 'none';
+       });
+};
+
+//show all header filter elements (used to ensure correct column widths in "fitData" layout mode)
+Filter.prototype.showHeaderFilterElements = function () {
+       this.headerFilterElements.forEach(function (element) {
+               element.style.display = '';
+       });
+};
+
+//programatically set value of header filter
+Filter.prototype.setHeaderFilterFocus = function (column) {
+       if (column.modules.filter && column.modules.filter.headerElement) {
+               column.modules.filter.headerElement.focus();
+       } else {
+               console.warn("Column Filter Focus Error - No header filter set on column:", column.getField());
+       }
+};
+
+//programatically set value of header filter
+Filter.prototype.setHeaderFilterValue = function (column, value) {
+       if (column) {
+               if (column.modules.filter && column.modules.filter.headerElement) {
+                       this.generateHeaderFilterElement(column, value);
+                       column.modules.filter.success(value);
+               } else {
+                       console.warn("Column Filter Error - No header filter set on column:", column.getField());
+               }
+       }
+};
+
+Filter.prototype.reloadHeaderFilter = function (column) {
+       if (column) {
+               if (column.modules.filter && column.modules.filter.headerElement) {
+                       this.generateHeaderFilterElement(column, column.modules.filter.value);
+               } else {
+                       console.warn("Column Filter Error - No header filter set on column:", column.getField());
+               }
+       }
+};
+
+//check if the filters has changed since last use
+Filter.prototype.hasChanged = function () {
+       var changed = this.changed;
+       this.changed = false;
+       return changed;
+};
+
+//set standard filters
+Filter.prototype.setFilter = function (field, type, value) {
+       var self = this;
+
+       self.filterList = [];
+
+       if (!Array.isArray(field)) {
+               field = [{ field: field, type: type, value: value }];
+       }
+
+       self.addFilter(field);
+};
+
+//add filter to array
+Filter.prototype.addFilter = function (field, type, value) {
+       var self = this;
+
+       if (!Array.isArray(field)) {
+               field = [{ field: field, type: type, value: value }];
+       }
+
+       field.forEach(function (filter) {
+
+               filter = self.findFilter(filter);
+
+               if (filter) {
+                       self.filterList.push(filter);
+
+                       self.changed = true;
+               }
+       });
+
+       if (this.table.options.persistentFilter && this.table.modExists("persistence", true)) {
+               this.table.modules.persistence.save("filter");
+       }
+};
+
+Filter.prototype.findFilter = function (filter) {
+       var self = this,
+           column;
+
+       if (Array.isArray(filter)) {
+               return this.findSubFilters(filter);
+       }
+
+       var filterFunc = false;
+
+       if (typeof filter.field == "function") {
+               filterFunc = function filterFunc(data) {
+                       return filter.field(data, filter.type || {}); // pass params to custom filter function
+               };
+       } else {
+
+               if (self.filters[filter.type]) {
+
+                       column = self.table.columnManager.getColumnByField(filter.field);
+
+                       if (column) {
+                               filterFunc = function filterFunc(data) {
+                                       return self.filters[filter.type](filter.value, column.getFieldValue(data));
+                               };
+                       } else {
+                               filterFunc = function filterFunc(data) {
+                                       return self.filters[filter.type](filter.value, data[filter.field]);
+                               };
+                       }
+               } else {
+                       console.warn("Filter Error - No such filter type found, ignoring: ", filter.type);
+               }
+       }
+
+       filter.func = filterFunc;
+
+       return filter.func ? filter : false;
+};
+
+Filter.prototype.findSubFilters = function (filters) {
+       var self = this,
+           output = [];
+
+       filters.forEach(function (filter) {
+               filter = self.findFilter(filter);
+
+               if (filter) {
+                       output.push(filter);
+               }
+       });
+
+       return output.length ? output : false;
+};
+
+//get all filters
+Filter.prototype.getFilters = function (all, ajax) {
+       var output = [];
+
+       if (all) {
+               output = this.getHeaderFilters();
+       }
+
+       if (ajax) {
+               output.forEach(function (item) {
+                       if (typeof item.type == "function") {
+                               item.type = "function";
+                       }
+               });
+       }
+
+       output = output.concat(this.filtersToArray(this.filterList, ajax));
+
+       return output;
+};
+
+//filter to Object
+Filter.prototype.filtersToArray = function (filterList, ajax) {
+       var _this2 = this;
+
+       var output = [];
+
+       filterList.forEach(function (filter) {
+               var item;
+
+               if (Array.isArray(filter)) {
+                       output.push(_this2.filtersToArray(filter, ajax));
+               } else {
+                       item = { field: filter.field, type: filter.type, value: filter.value };
+
+                       if (ajax) {
+                               if (typeof item.type == "function") {
+                                       item.type = "function";
+                               }
+                       }
+
+                       output.push(item);
+               }
+       });
+
+       return output;
+};
+
+//get all filters
+Filter.prototype.getHeaderFilters = function () {
+       var self = this,
+           output = [];
+
+       for (var key in this.headerFilters) {
+               output.push({ field: key, type: this.headerFilters[key].type, value: this.headerFilters[key].value });
+       }
+
+       return output;
+};
+
+//remove filter from array
+Filter.prototype.removeFilter = function (field, type, value) {
+       var self = this;
+
+       if (!Array.isArray(field)) {
+               field = [{ field: field, type: type, value: value }];
+       }
+
+       field.forEach(function (filter) {
+               var index = -1;
+
+               if (_typeof(filter.field) == "object") {
+                       index = self.filterList.findIndex(function (element) {
+                               return filter === element;
+                       });
+               } else {
+                       index = self.filterList.findIndex(function (element) {
+                               return filter.field === element.field && filter.type === element.type && filter.value === element.value;
+                       });
+               }
+
+               if (index > -1) {
+                       self.filterList.splice(index, 1);
+                       self.changed = true;
+               } else {
+                       console.warn("Filter Error - No matching filter type found, ignoring: ", filter.type);
+               }
+       });
+
+       if (this.table.options.persistentFilter && this.table.modExists("persistence", true)) {
+               this.table.modules.persistence.save("filter");
+       }
+};
+
+//clear filters
+Filter.prototype.clearFilter = function (all) {
+       this.filterList = [];
+
+       if (all) {
+               this.clearHeaderFilter();
+       }
+
+       this.changed = true;
+
+       if (this.table.options.persistentFilter && this.table.modExists("persistence", true)) {
+               this.table.modules.persistence.save("filter");
+       }
+};
+
+//clear header filters
+Filter.prototype.clearHeaderFilter = function () {
+       var self = this;
+
+       this.headerFilters = {};
+
+       this.headerFilterColumns.forEach(function (column) {
+               column.modules.filter.value = null;
+               column.modules.filter.prevSuccess = undefined;
+               self.reloadHeaderFilter(column);
+       });
+
+       this.changed = true;
+};
+
+//search data and return matching rows
+Filter.prototype.search = function (searchType, field, type, value) {
+       var self = this,
+           activeRows = [],
+           filterList = [];
+
+       if (!Array.isArray(field)) {
+               field = [{ field: field, type: type, value: value }];
+       }
+
+       field.forEach(function (filter) {
+               filter = self.findFilter(filter);
+
+               if (filter) {
+                       filterList.push(filter);
+               }
+       });
+
+       this.table.rowManager.rows.forEach(function (row) {
+               var match = true;
+
+               filterList.forEach(function (filter) {
+                       if (!self.filterRecurse(filter, row.getData())) {
+                               match = false;
+                       }
+               });
+
+               if (match) {
+                       activeRows.push(searchType === "data" ? row.getData("data") : row.getComponent());
+               }
+       });
+
+       return activeRows;
+};
+
+//filter row array
+Filter.prototype.filter = function (rowList, filters) {
+       var self = this,
+           activeRows = [],
+           activeRowComponents = [];
+
+       if (self.table.options.dataFiltering) {
+               self.table.options.dataFiltering.call(self.table, self.getFilters());
+       }
+
+       if (!self.table.options.ajaxFiltering && (self.filterList.length || Object.keys(self.headerFilters).length)) {
+
+               rowList.forEach(function (row) {
+                       if (self.filterRow(row)) {
+                               activeRows.push(row);
+                       }
+               });
+       } else {
+               activeRows = rowList.slice(0);
+       }
+
+       if (self.table.options.dataFiltered) {
+
+               activeRows.forEach(function (row) {
+                       activeRowComponents.push(row.getComponent());
+               });
+
+               self.table.options.dataFiltered.call(self.table, self.getFilters(), activeRowComponents);
+       }
+
+       return activeRows;
+};
+
+//filter individual row
+Filter.prototype.filterRow = function (row, filters) {
+       var self = this,
+           match = true,
+           data = row.getData();
+
+       self.filterList.forEach(function (filter) {
+               if (!self.filterRecurse(filter, data)) {
+                       match = false;
+               }
+       });
+
+       for (var field in self.headerFilters) {
+               if (!self.headerFilters[field].func(data)) {
+                       match = false;
+               }
+       }
+
+       return match;
+};
+
+Filter.prototype.filterRecurse = function (filter, data) {
+       var self = this,
+           match = false;
+
+       if (Array.isArray(filter)) {
+               filter.forEach(function (subFilter) {
+                       if (self.filterRecurse(subFilter, data)) {
+                               match = true;
+                       }
+               });
+       } else {
+               match = filter.func(data);
+       }
+
+       return match;
+};
+
+//list of available filters
+Filter.prototype.filters = {
+
+       //equal to
+       "=": function _(filterVal, rowVal, rowData, filterParams) {
+               return rowVal == filterVal ? true : false;
+       },
+
+       //less than
+       "<": function _(filterVal, rowVal, rowData, filterParams) {
+               return rowVal < filterVal ? true : false;
+       },
+
+       //less than or equal to
+       "<=": function _(filterVal, rowVal, rowData, filterParams) {
+               return rowVal <= filterVal ? true : false;
+       },
+
+       //greater than
+       ">": function _(filterVal, rowVal, rowData, filterParams) {
+               return rowVal > filterVal ? true : false;
+       },
+
+       //greater than or equal to
+       ">=": function _(filterVal, rowVal, rowData, filterParams) {
+               return rowVal >= filterVal ? true : false;
+       },
+
+       //not equal to
+       "!=": function _(filterVal, rowVal, rowData, filterParams) {
+               return rowVal != filterVal ? true : false;
+       },
+
+       "regex": function regex(filterVal, rowVal, rowData, filterParams) {
+
+               if (typeof filterVal == "string") {
+                       filterVal = new RegExp(filterVal);
+               }
+
+               return filterVal.test(rowVal);
+       },
+
+       //contains the string
+       "like": function like(filterVal, rowVal, rowData, filterParams) {
+               if (filterVal === null || typeof filterVal === "undefined") {
+                       return rowVal === filterVal ? true : false;
+               } else {
+                       if (typeof rowVal !== 'undefined' && rowVal !== null) {
+                               return String(rowVal).toLowerCase().indexOf(filterVal.toLowerCase()) > -1;
+                       } else {
+                               return false;
+                       }
+               }
+       },
+
+       //in array
+       "in": function _in(filterVal, rowVal, rowData, filterParams) {
+               if (Array.isArray(filterVal)) {
+                       return filterVal.indexOf(rowVal) > -1;
+               } else {
+                       console.warn("Filter Error - filter value is not an array:", filterVal);
+                       return false;
+               }
+       }
+};
+
+Tabulator.prototype.registerModule("filter", Filter);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/filter.min.js b/backoffice/vendors/tabulator/js.old/modules/filter.min.js
new file mode 100644 (file)
index 0000000..5971aaf
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+var _typeof="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},Filter=function(e){this.table=e,this.filterList=[],this.headerFilters={},this.headerFilterElements=[],this.headerFilterColumns=[],this.changed=!1};Filter.prototype.initializeColumn=function(e,t){function r(t){var r,l="input"==e.modules.filter.tagType&&"text"==e.modules.filter.attrType||"textarea"==e.modules.filter.tagType?"partial":"match",o="";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[n];else{switch(e.modules.filter.value=t,_typeof(e.definition.headerFilterFunc)){case"string":i.filters[e.definition.headerFilterFunc]?(o=e.definition.headerFilterFunc,r=function(r){var n=e.definition.headerFilterFuncParams||{},l=e.getFieldValue(r);return n="function"==typeof n?n(t,l,r):n,i.filters[e.definition.headerFilterFunc](t,l,r,n)}):console.warn("Header Filter Error - Matching filter function not found: ",e.definition.headerFilterFunc);break;case"function":r=function(r){var i=e.definition.headerFilterFuncParams||{},n=e.getFieldValue(r);return i="function"==typeof i?i(t,n,r):i,e.definition.headerFilterFunc(t,n,r,i)},o=r}if(!r)switch(l){case"partial":r=function(r){var i=e.getFieldValue(r);return void 0!==i&&null!==i&&String(i).toLowerCase().indexOf(String(t).toLowerCase())>-1},o="like";break;default:r=function(r){return e.getFieldValue(r)==t},o="="}i.headerFilters[n]={value:t,func:r,type:o}}i.changed=!0,i.table.rowManager.filterRefresh()}return!0}var i=this,n=e.getField();e.modules.filter={success:r,attrType:!1,tagType:!1,emptyFunc:!1},this.generateHeaderFilterElement(e)},Filter.prototype.generateHeaderFilterElement=function(e,t){function r(){}var i,n,l,o,a,s,d,u=this,f=this,c=e.modules.filter.success,h=e.getField();if(e.modules.filter.headerElement&&e.modules.filter.headerElement.parentNode){var p=e.modules.filter.headerElement.parentNode,F=f.headerFilterElements.indexOf(p);F>=0&&f.headerFilterElements.splice(F,1);var m=f.headerFilterColumns.indexOf(m);m>=0&&f.headerFilterColumns.splice(m,1),e.contentElement.removeChild(p)}if(h){switch(e.modules.filter.emptyFunc=e.definition.headerFilterEmptyCheck||function(e){return!e&&"0"!==e},i=document.createElement("div"),i.classList.add("tabulator-header-filter"),_typeof(e.definition.headerFilter)){case"string":f.table.modules.edit.editors[e.definition.headerFilter]?(n=f.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":n=e.definition.headerFilter;break;case"boolean":e.modules.edit&&e.modules.edit.editor?n=e.modules.edit.editor:e.definition.formatter&&f.table.modules.edit.editors[e.definition.formatter]?(n=f.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})):n=f.table.modules.edit.editors.input}if(n){if(o={getValue:function(){return void 0!==t?t:""},getField:function(){return e.definition.field},getElement:function(){return i},getColumn:function(){return e.getComponent()},getRow:function(){return{normalizeHeight:function(){}}}},d=e.definition.headerFilterParams||{},d="function"==typeof d?d.call(f.table):d,!(l=n.call(this.table.modules.edit,o,function(){},c,r,d)))return void console.warn("Filter Error - Cannot add filter to "+h+" column, editor returned a value of false");if(!(l instanceof Node))return void console.warn("Filter Error - Cannot add filter to "+h+" column, editor should return an instance of Node, the editor returned:",l);h?f.table.modules.localize.bind("headerFilters|columns|"+e.definition.field,function(e){l.setAttribute("placeholder",void 0!==e&&e?e:f.table.modules.localize.getText("headerFilters|default"))}):f.table.modules.localize.bind("headerFilters|default",function(e){l.setAttribute("placeholder",void 0!==f.column.definition.headerFilterPlaceholder&&f.column.definition.headerFilterPlaceholder?f.column.definition.headerFilterPlaceholder:e)}),l.addEventListener("click",function(e){e.stopPropagation(),l.focus()}),l.addEventListener("focus",function(e){var t=u.table.columnManager.element.scrollLeft;t!==u.table.rowManager.element.scrollLeft&&(u.table.rowManager.scrollHorizontal(t),u.table.columnManager.scrollHorizontal(t))}),a=!1,s=function(e){a&&clearTimeout(a),a=setTimeout(function(){c(l.value)},300)},e.modules.filter.headerElement=l,e.modules.filter.attrType=l.hasAttribute("type")?l.getAttribute("type").toLowerCase():"",e.modules.filter.tagType=l.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)&&(l.addEventListener("keyup",s),l.addEventListener("search",s),"number"==e.modules.filter.attrType&&l.addEventListener("change",function(e){c(l.value)}),"text"==e.modules.filter.attrType&&"ie"!==this.table.browser&&l.setAttribute("type","search")),"input"!=e.modules.filter.tagType&&"select"!=e.modules.filter.tagType&&"textarea"!=e.modules.filter.tagType||l.addEventListener("mousedown",function(e){e.stopPropagation()})),i.appendChild(l),e.contentElement.appendChild(i),f.headerFilterElements.push(l),f.headerFilterColumns.push(e)}}else console.warn("Filter Error - Cannot add header filter, column has no field set:",e.definition.title)},Filter.prototype.hideHeaderFilterElements=function(){this.headerFilterElements.forEach(function(e){e.style.display="none"})},Filter.prototype.showHeaderFilterElements=function(){this.headerFilterElements.forEach(function(e){e.style.display=""})},Filter.prototype.setHeaderFilterFocus=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())},Filter.prototype.setHeaderFilterValue=function(e,t){e&&(e.modules.filter&&e.modules.filter.headerElement?(this.generateHeaderFilterElement(e,t),e.modules.filter.success(t)):console.warn("Column Filter Error - No header filter set on column:",e.getField()))},Filter.prototype.reloadHeaderFilter=function(e){e&&(e.modules.filter&&e.modules.filter.headerElement?this.generateHeaderFilterElement(e,e.modules.filter.value):console.warn("Column Filter Error - No header filter set on column:",e.getField()))},Filter.prototype.hasChanged=function(){var e=this.changed;return this.changed=!1,e},Filter.prototype.setFilter=function(e,t,r){var i=this;i.filterList=[],Array.isArray(e)||(e=[{field:e,type:t,value:r}]),i.addFilter(e)},Filter.prototype.addFilter=function(e,t,r){var i=this;Array.isArray(e)||(e=[{field:e,type:t,value:r}]),e.forEach(function(e){(e=i.findFilter(e))&&(i.filterList.push(e),i.changed=!0)}),this.table.options.persistentFilter&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("filter")},Filter.prototype.findFilter=function(e){var t,r=this;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]?(t=r.table.columnManager.getColumnByField(e.field),i=t?function(i){return r.filters[e.type](e.value,t.getFieldValue(i))}:function(t){return r.filters[e.type](e.value,t[e.field])}):console.warn("Filter Error - No such filter type found, ignoring: ",e.type),e.func=i,!!e.func&&e},Filter.prototype.findSubFilters=function(e){var t=this,r=[];return e.forEach(function(e){(e=t.findFilter(e))&&r.push(e)}),!!r.length&&r},Filter.prototype.getFilters=function(e,t){var r=[];return e&&(r=this.getHeaderFilters()),t&&r.forEach(function(e){"function"==typeof e.type&&(e.type="function")}),r=r.concat(this.filtersToArray(this.filterList,t))},Filter.prototype.filtersToArray=function(e,t){var r=this,i=[];return e.forEach(function(e){var n;Array.isArray(e)?i.push(r.filtersToArray(e,t)):(n={field:e.field,type:e.type,value:e.value},t&&"function"==typeof n.type&&(n.type="function"),i.push(n))}),i},Filter.prototype.getHeaderFilters=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},Filter.prototype.removeFilter=function(e,t,r){var i=this;Array.isArray(e)||(e=[{field:e,type:t,value:r}]),e.forEach(function(e){var t=-1;t="object"==_typeof(e.field)?i.filterList.findIndex(function(t){return e===t}):i.filterList.findIndex(function(t){return e.field===t.field&&e.type===t.type&&e.value===t.value}),t>-1?(i.filterList.splice(t,1),i.changed=!0):console.warn("Filter Error - No matching filter type found, ignoring: ",e.type)}),this.table.options.persistentFilter&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("filter")},Filter.prototype.clearFilter=function(e){this.filterList=[],e&&this.clearHeaderFilter(),this.changed=!0,this.table.options.persistentFilter&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("filter")},Filter.prototype.clearHeaderFilter=function(){var e=this;this.headerFilters={},this.headerFilterColumns.forEach(function(t){t.modules.filter.value=null,t.modules.filter.prevSuccess=void 0,e.reloadHeaderFilter(t)}),this.changed=!0},Filter.prototype.search=function(e,t,r,i){var n=this,l=[],o=[];return Array.isArray(t)||(t=[{field:t,type:r,value:i}]),t.forEach(function(e){(e=n.findFilter(e))&&o.push(e)}),this.table.rowManager.rows.forEach(function(t){var r=!0;o.forEach(function(e){n.filterRecurse(e,t.getData())||(r=!1)}),r&&l.push("data"===e?t.getData("data"):t.getComponent())}),l},Filter.prototype.filter=function(e,t){var r=this,i=[],n=[];return r.table.options.dataFiltering&&r.table.options.dataFiltering.call(r.table,r.getFilters()),r.table.options.ajaxFiltering||!r.filterList.length&&!Object.keys(r.headerFilters).length?i=e.slice(0):e.forEach(function(e){r.filterRow(e)&&i.push(e)}),r.table.options.dataFiltered&&(i.forEach(function(e){n.push(e.getComponent())}),r.table.options.dataFiltered.call(r.table,r.getFilters(),n)),i},Filter.prototype.filterRow=function(e,t){var r=this,i=!0,n=e.getData();r.filterList.forEach(function(e){r.filterRecurse(e,n)||(i=!1)});for(var l in r.headerFilters)r.headerFilters[l].func(n)||(i=!1);return i},Filter.prototype.filterRecurse=function(e,t){var r=this,i=!1;return Array.isArray(e)?e.forEach(function(e){r.filterRecurse(e,t)&&(i=!0)}):i=e.func(t),i},Filter.prototype.filters={"=":function(e,t,r,i){return t==e},"<":function(e,t,r,i){return t<e},"<=":function(e,t,r,i){return t<=e},">":function(e,t,r,i){return t>e},">=":function(e,t,r,i){return t>=e},"!=":function(e,t,r,i){return t!=e},regex:function(e,t,r,i){return"string"==typeof e&&(e=new RegExp(e)),e.test(t)},like:function(e,t,r,i){return null===e||void 0===e?t===e:void 0!==t&&null!==t&&String(t).toLowerCase().indexOf(e.toLowerCase())>-1},in:function(e,t,r,i){return Array.isArray(e)?e.indexOf(t)>-1:(console.warn("Filter Error - filter value is not an array:",e),!1)}},Tabulator.prototype.registerModule("filter",Filter);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/format.js b/backoffice/vendors/tabulator/js.old/modules/format.js
new file mode 100644 (file)
index 0000000..ac9c843
--- /dev/null
@@ -0,0 +1,632 @@
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+
+var Format = function Format(table) {
+       this.table = table; //hold Tabulator object
+};
+
+//initialize column formatter
+Format.prototype.initializeColumn = function (column) {
+       var self = this,
+           config = { params: column.definition.formatterParams || {} };
+
+       //set column formatter
+       switch (_typeof(column.definition.formatter)) {
+               case "string":
+
+                       if (column.definition.formatter === "tick") {
+                               column.definition.formatter = "tickCross";
+
+                               if (typeof config.params.crossElement == "undefined") {
+                                       config.params.crossElement = false;
+                               }
+
+                               console.warn("DEPRECATION WARNING - the tick formatter has been deprecated, please use the tickCross formatter with the crossElement param set to false");
+                       }
+
+                       if (self.formatters[column.definition.formatter]) {
+                               config.formatter = self.formatters[column.definition.formatter];
+                       } else {
+                               console.warn("Formatter Error - No such formatter found: ", column.definition.formatter);
+                               config.formatter = self.formatters.plaintext;
+                       }
+                       break;
+
+               case "function":
+                       config.formatter = column.definition.formatter;
+                       break;
+
+               default:
+                       config.formatter = self.formatters.plaintext;
+                       break;
+       }
+
+       column.modules.format = config;
+};
+
+Format.prototype.cellRendered = function (cell) {
+       if (cell.column.modules.format.renderedCallback) {
+               cell.column.modules.format.renderedCallback();
+       }
+};
+
+//return a formatted value for a cell
+Format.prototype.formatValue = function (cell) {
+       var component = cell.getComponent(),
+           params = typeof cell.column.modules.format.params === "function" ? cell.column.modules.format.params(component) : cell.column.modules.format.params;
+
+       function onRendered(callback) {
+               cell.column.modules.format.renderedCallback = callback;
+       }
+
+       return cell.column.modules.format.formatter.call(this, component, params, onRendered);
+};
+
+Format.prototype.sanitizeHTML = function (value) {
+       if (value) {
+               var entityMap = {
+                       '&': '&amp;',
+                       '<': '&lt;',
+                       '>': '&gt;',
+                       '"': '&quot;',
+                       "'": '&#39;',
+                       '/': '&#x2F;',
+                       '`': '&#x60;',
+                       '=': '&#x3D;'
+               };
+
+               return String(value).replace(/[&<>"'`=\/]/g, function (s) {
+                       return entityMap[s];
+               });
+       } else {
+               return value;
+       }
+};
+
+Format.prototype.emptyToSpace = function (value) {
+       return value === null || typeof value === "undefined" ? "&nbsp;" : value;
+};
+
+//get formatter for cell
+Format.prototype.getFormatter = function (formatter) {
+       var formatter;
+
+       switch (typeof formatter === "undefined" ? "undefined" : _typeof(formatter)) {
+               case "string":
+                       if (this.formatters[formatter]) {
+                               formatter = this.formatters[formatter];
+                       } else {
+                               console.warn("Formatter Error - No such formatter found: ", formatter);
+                               formatter = this.formatters.plaintext;
+                       }
+                       break;
+
+               case "function":
+                       formatter = formatter;
+                       break;
+
+               default:
+                       formatter = this.formatters.plaintext;
+                       break;
+       }
+
+       return formatter;
+};
+
+//default data formatters
+Format.prototype.formatters = {
+       //plain text value
+       plaintext: function plaintext(cell, formatterParams, onRendered) {
+               return this.emptyToSpace(this.sanitizeHTML(cell.getValue()));
+       },
+
+       //html text value
+       html: function html(cell, formatterParams, onRendered) {
+               return cell.getValue();
+       },
+
+       //multiline text area
+       textarea: function textarea(cell, formatterParams, onRendered) {
+               cell.getElement().style.whiteSpace = "pre-wrap";
+               return this.emptyToSpace(this.sanitizeHTML(cell.getValue()));
+       },
+
+       //currency formatting
+       money: function money(cell, formatterParams, onRendered) {
+               var floatVal = parseFloat(cell.getValue()),
+                   number,
+                   integer,
+                   decimal,
+                   rgx;
+
+               var decimalSym = formatterParams.decimal || ".";
+               var thousandSym = formatterParams.thousand || ",";
+               var symbol = formatterParams.symbol || "";
+               var after = !!formatterParams.symbolAfter;
+               var precision = typeof formatterParams.precision !== "undefined" ? formatterParams.precision : 2;
+
+               if (isNaN(floatVal)) {
+                       return this.emptyToSpace(this.sanitizeHTML(cell.getValue()));
+               }
+
+               number = precision !== false ? floatVal.toFixed(precision) : floatVal;
+               number = String(number).split(".");
+
+               integer = number[0];
+               decimal = number.length > 1 ? decimalSym + number[1] : "";
+
+               rgx = /(\d+)(\d{3})/;
+
+               while (rgx.test(integer)) {
+                       integer = integer.replace(rgx, "$1" + thousandSym + "$2");
+               }
+
+               return after ? integer + decimal + symbol : symbol + integer + decimal;
+       },
+
+       //clickable anchor tag
+       link: function link(cell, formatterParams, onRendered) {
+               var value = cell.getValue(),
+                   urlPrefix = formatterParams.urlPrefix || "",
+                   label = value,
+                   el = document.createElement("a"),
+                   data;
+
+               if (formatterParams.labelField) {
+                       data = cell.getData();
+                       label = data[formatterParams.labelField];
+               }
+
+               if (formatterParams.label) {
+                       switch (_typeof(formatterParams.label)) {
+                               case "string":
+                                       label = formatterParams.label;
+                                       break;
+
+                               case "function":
+                                       label = formatterParams.label(cell);
+                                       break;
+                       }
+               }
+
+               if (label) {
+                       if (formatterParams.urlField) {
+                               data = cell.getData();
+                               value = data[formatterParams.urlField];
+                       }
+
+                       if (formatterParams.url) {
+                               switch (_typeof(formatterParams.url)) {
+                                       case "string":
+                                               value = formatterParams.url;
+                                               break;
+
+                                       case "function":
+                                               value = formatterParams.url(cell);
+                                               break;
+                               }
+                       }
+
+                       el.setAttribute("href", urlPrefix + value);
+
+                       if (formatterParams.target) {
+                               el.setAttribute("target", formatterParams.target);
+                       }
+
+                       el.innerHTML = this.emptyToSpace(this.sanitizeHTML(label));
+
+                       return el;
+               } else {
+                       return "&nbsp;";
+               }
+       },
+
+       //image element
+       image: function image(cell, formatterParams, onRendered) {
+               var el = document.createElement("img");
+               el.setAttribute("src", cell.getValue());
+
+               switch (_typeof(formatterParams.height)) {
+                       case "number":
+                               el.style.height = formatterParams.height + "px";
+                               break;
+
+                       case "string":
+                               el.style.height = formatterParams.height;
+                               break;
+               }
+
+               switch (_typeof(formatterParams.width)) {
+                       case "number":
+                               el.style.width = formatterParams.width + "px";
+                               break;
+
+                       case "string":
+                               el.style.width = formatterParams.width;
+                               break;
+               }
+
+               el.addEventListener("load", function () {
+                       cell.getRow().normalizeHeight();
+               });
+
+               return el;
+       },
+
+       //tick or cross
+       tickCross: function tickCross(cell, formatterParams, onRendered) {
+               var value = cell.getValue(),
+                   element = cell.getElement(),
+                   empty = formatterParams.allowEmpty,
+                   truthy = formatterParams.allowTruthy,
+                   tick = typeof formatterParams.tickElement !== "undefined" ? formatterParams.tickElement : '<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>',
+                   cross = typeof formatterParams.crossElement !== "undefined" ? formatterParams.crossElement : '<svg enable-background="new 0 0 24 24" height="14" width="14"  viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';
+
+               if (truthy && value || value === true || value === "true" || value === "True" || value === 1 || value === "1") {
+                       element.setAttribute("aria-checked", true);
+                       return tick || "";
+               } else {
+                       if (empty && (value === "null" || value === "" || value === null || typeof value === "undefined")) {
+                               element.setAttribute("aria-checked", "mixed");
+                               return "";
+                       } else {
+                               element.setAttribute("aria-checked", false);
+                               return cross || "";
+                       }
+               }
+       },
+
+       datetime: function datetime(cell, formatterParams, onRendered) {
+               var inputFormat = formatterParams.inputFormat || "YYYY-MM-DD hh:mm:ss";
+               var outputFormat = formatterParams.outputFormat || "DD/MM/YYYY hh:mm:ss";
+               var invalid = typeof formatterParams.invalidPlaceholder !== "undefined" ? formatterParams.invalidPlaceholder : "";
+               var value = cell.getValue();
+
+               var newDatetime = moment(value, inputFormat);
+
+               if (newDatetime.isValid()) {
+                       return newDatetime.format(outputFormat);
+               } else {
+
+                       if (invalid === true) {
+                               return value;
+                       } else if (typeof invalid === "function") {
+                               return invalid(value);
+                       } else {
+                               return invalid;
+                       }
+               }
+       },
+
+       datetimediff: function datetime(cell, formatterParams, onRendered) {
+               var inputFormat = formatterParams.inputFormat || "YYYY-MM-DD hh:mm:ss";
+               var invalid = typeof formatterParams.invalidPlaceholder !== "undefined" ? formatterParams.invalidPlaceholder : "";
+               var suffix = typeof formatterParams.suffix !== "undefined" ? formatterParams.suffix : false;
+               var unit = typeof formatterParams.unit !== "undefined" ? formatterParams.unit : undefined;
+               var humanize = typeof formatterParams.humanize !== "undefined" ? formatterParams.humanize : false;
+               var date = typeof formatterParams.date !== "undefined" ? formatterParams.date : moment();
+               var value = cell.getValue();
+
+               var newDatetime = moment(value, inputFormat);
+
+               if (newDatetime.isValid()) {
+                       if (humanize) {
+                               return moment.duration(newDatetime.diff(date)).humanize(suffix);
+                       } else {
+                               return newDatetime.diff(date, unit) + (suffix ? " " + suffix : "");
+                       }
+               } else {
+
+                       if (invalid === true) {
+                               return value;
+                       } else if (typeof invalid === "function") {
+                               return invalid(value);
+                       } else {
+                               return invalid;
+                       }
+               }
+       },
+
+       //select
+       lookup: function lookup(cell, formatterParams, onRendered) {
+               var value = cell.getValue();
+
+               if (typeof formatterParams[value] === "undefined") {
+                       console.warn('Missing display value for ' + value);
+                       return value;
+               }
+
+               return formatterParams[value];
+       },
+
+       //star rating
+       star: function star(cell, formatterParams, onRendered) {
+               var value = cell.getValue(),
+                   element = cell.getElement(),
+                   maxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5,
+                   stars = document.createElement("span"),
+                   star = document.createElementNS('http://www.w3.org/2000/svg', "svg"),
+                   starActive = '<polygon fill="#FFEA00" stroke="#C1AB60" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>',
+                   starInactive = '<polygon fill="#D2D2D2" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>';
+
+               //style stars holder
+               stars.style.verticalAlign = "middle";
+
+               //style star
+               star.setAttribute("width", "14");
+               star.setAttribute("height", "14");
+               star.setAttribute("viewBox", "0 0 512 512");
+               star.setAttribute("xml:space", "preserve");
+               star.style.padding = "0 1px";
+
+               value = value && !isNaN(value) ? parseInt(value) : 0;
+
+               value = Math.max(0, Math.min(value, maxStars));
+
+               for (var i = 1; i <= maxStars; i++) {
+                       var nextStar = star.cloneNode(true);
+                       nextStar.innerHTML = i <= value ? starActive : starInactive;
+
+                       stars.appendChild(nextStar);
+               }
+
+               element.style.whiteSpace = "nowrap";
+               element.style.overflow = "hidden";
+               element.style.textOverflow = "ellipsis";
+
+               element.setAttribute("aria-label", value);
+
+               return stars;
+       },
+
+       traffic: function traffic(cell, formatterParams, onRendered) {
+               var value = this.sanitizeHTML(cell.getValue()) || 0,
+                   el = document.createElement("span"),
+                   max = formatterParams && formatterParams.max ? formatterParams.max : 100,
+                   min = formatterParams && formatterParams.min ? formatterParams.min : 0,
+                   colors = formatterParams && typeof formatterParams.color !== "undefined" ? formatterParams.color : ["red", "orange", "green"],
+                   color = "#666666",
+                   percent,
+                   percentValue;
+
+               if (isNaN(value) || typeof cell.getValue() === "undefined") {
+                       return;
+               }
+
+               el.classList.add("tabulator-traffic-light");
+
+               //make sure value is in range
+               percentValue = parseFloat(value) <= max ? parseFloat(value) : max;
+               percentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;
+
+               //workout percentage
+               percent = (max - min) / 100;
+               percentValue = Math.round((percentValue - min) / percent);
+
+               //set color
+               switch (typeof colors === "undefined" ? "undefined" : _typeof(colors)) {
+                       case "string":
+                               color = colors;
+                               break;
+                       case "function":
+                               color = colors(value);
+                               break;
+                       case "object":
+                               if (Array.isArray(colors)) {
+                                       var unit = 100 / colors.length;
+                                       var index = Math.floor(percentValue / unit);
+
+                                       index = Math.min(index, colors.length - 1);
+                                       index = Math.max(index, 0);
+                                       color = colors[index];
+                                       break;
+                               }
+               }
+
+               el.style.backgroundColor = color;
+
+               return el;
+       },
+
+       //progress bar
+       progress: function progress(cell, formatterParams, onRendered) {
+               //progress bar
+               var value = this.sanitizeHTML(cell.getValue()) || 0,
+                   element = cell.getElement(),
+                   max = formatterParams && formatterParams.max ? formatterParams.max : 100,
+                   min = formatterParams && formatterParams.min ? formatterParams.min : 0,
+                   legendAlign = formatterParams && formatterParams.legendAlign ? formatterParams.legendAlign : "center",
+                   percent,
+                   percentValue,
+                   color,
+                   legend,
+                   legendColor,
+                   top,
+                   left,
+                   right,
+                   bottom;
+
+               //make sure value is in range
+               percentValue = parseFloat(value) <= max ? parseFloat(value) : max;
+               percentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;
+
+               //workout percentage
+               percent = (max - min) / 100;
+               percentValue = Math.round((percentValue - min) / percent);
+
+               //set bar color
+               switch (_typeof(formatterParams.color)) {
+                       case "string":
+                               color = formatterParams.color;
+                               break;
+                       case "function":
+                               color = formatterParams.color(value);
+                               break;
+                       case "object":
+                               if (Array.isArray(formatterParams.color)) {
+                                       var unit = 100 / formatterParams.color.length;
+                                       var index = Math.floor(percentValue / unit);
+
+                                       index = Math.min(index, formatterParams.color.length - 1);
+                                       index = Math.max(index, 0);
+                                       color = formatterParams.color[index];
+                                       break;
+                               }
+                       default:
+                               color = "#2DC214";
+               }
+
+               //generate legend
+               switch (_typeof(formatterParams.legend)) {
+                       case "string":
+                               legend = formatterParams.legend;
+                               break;
+                       case "function":
+                               legend = formatterParams.legend(value);
+                               break;
+                       case "boolean":
+                               legend = value;
+                               break;
+                       default:
+                               legend = false;
+               }
+
+               //set legend color
+               switch (_typeof(formatterParams.legendColor)) {
+                       case "string":
+                               legendColor = formatterParams.legendColor;
+                               break;
+                       case "function":
+                               legendColor = formatterParams.legendColor(value);
+                               break;
+                       case "object":
+                               if (Array.isArray(formatterParams.legendColor)) {
+                                       var unit = 100 / formatterParams.legendColor.length;
+                                       var index = Math.floor(percentValue / unit);
+
+                                       index = Math.min(index, formatterParams.legendColor.length - 1);
+                                       index = Math.max(index, 0);
+                                       legendColor = formatterParams.legendColor[index];
+                               }
+                               break;
+                       default:
+                               legendColor = "#000";
+               }
+
+               element.style.minWidth = "30px";
+               element.style.position = "relative";
+
+               element.setAttribute("aria-label", percentValue);
+
+               return "<div style='position:relative; height:100%;'  data-max='" + max + "' data-min='" + min + "'><div style='position:relative; height:100%; width:calc(" + percentValue + "%); background-color:" + color + "; display:inline-block;'></div></div>" + (legend ? "<div style='position:absolute; top:4px; left:0; text-align:" + legendAlign + "; width:100%; color:" + legendColor + ";'>" + legend + "</div>" : "");
+       },
+
+       //background color
+       color: function color(cell, formatterParams, onRendered) {
+               cell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue());
+               return "";
+       },
+
+       //tick icon
+       buttonTick: function buttonTick(cell, formatterParams, onRendered) {
+               return '<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>';
+       },
+
+       //cross icon
+       buttonCross: function buttonCross(cell, formatterParams, onRendered) {
+               return '<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';
+       },
+
+       //current row number
+       rownum: function rownum(cell, formatterParams, onRendered) {
+               return this.table.rowManager.activeRows.indexOf(cell.getRow()._getSelf()) + 1;
+       },
+
+       //row handle
+       handle: function handle(cell, formatterParams, onRendered) {
+               cell.getElement().classList.add("tabulator-row-handle");
+               return "<div class='tabulator-row-handle-box'><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div></div>";
+       },
+
+       responsiveCollapse: function responsiveCollapse(cell, formatterParams, onRendered) {
+               var self = this,
+                   open = false,
+                   el = document.createElement("div");
+
+               function toggleList(isOpen) {
+                       var collapse = cell.getRow().getElement().getElementsByClassName("tabulator-responsive-collapse")[0];
+
+                       open = isOpen;
+
+                       if (open) {
+                               el.classList.add("open");
+                               if (collapse) {
+                                       collapse.style.display = '';
+                               }
+                       } else {
+                               el.classList.remove("open");
+                               if (collapse) {
+                                       collapse.style.display = 'none';
+                               }
+                       }
+               }
+
+               el.classList.add("tabulator-responsive-collapse-toggle");
+               el.innerHTML = "<span class='tabulator-responsive-collapse-toggle-open'>+</span><span class='tabulator-responsive-collapse-toggle-close'>-</span>";
+
+               cell.getElement().classList.add("tabulator-row-handle");
+
+               if (self.table.options.responsiveLayoutCollapseStartOpen) {
+                       open = true;
+               }
+
+               el.addEventListener("click", function (e) {
+                       e.stopImmediatePropagation();
+                       toggleList(!open);
+               });
+
+               toggleList(open);
+
+               return el;
+       },
+
+       rowSelection: function rowSelection(cell) {
+               var _this = this;
+
+               var checkbox = document.createElement("input");
+
+               checkbox.type = 'checkbox';
+
+               if (this.table.modExists("selectRow", true)) {
+
+                       checkbox.addEventListener("click", function (e) {
+                               e.stopPropagation();
+                       });
+
+                       if (typeof cell.getRow == 'function') {
+                               var row = cell.getRow();
+
+                               checkbox.addEventListener("change", function (e) {
+                                       row.toggleSelect();
+                               });
+
+                               checkbox.checked = row.isSelected();
+                               this.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);
+                       } else {
+                               checkbox.addEventListener("change", function (e) {
+                                       if (_this.table.modules.selectRow.selectedRows.length) {
+                                               _this.table.deselectRow();
+                                       } else {
+                                               _this.table.selectRow();
+                                       }
+                               });
+
+                               this.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox);
+                       }
+               }
+               return checkbox;
+       }
+};
+
+Tabulator.prototype.registerModule("format", Format);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/format.min.js b/backoffice/vendors/tabulator/js.old/modules/format.min.js
new file mode 100644 (file)
index 0000000..d973d78
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+var _typeof="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},Format=function(e){this.table=e};Format.prototype.initializeColumn=function(e){var t=this,o={params:e.definition.formatterParams||{}};switch(_typeof(e.definition.formatter)){case"string":"tick"===e.definition.formatter&&(e.definition.formatter="tickCross",void 0===o.params.crossElement&&(o.params.crossElement=!1),console.warn("DEPRECATION WARNING - the tick formatter has been deprecated, please use the tickCross formatter with the crossElement param set to false")),t.formatters[e.definition.formatter]?o.formatter=t.formatters[e.definition.formatter]:(console.warn("Formatter Error - No such formatter found: ",e.definition.formatter),o.formatter=t.formatters.plaintext);break;case"function":o.formatter=e.definition.formatter;break;default:o.formatter=t.formatters.plaintext}e.modules.format=o},Format.prototype.cellRendered=function(e){e.column.modules.format.renderedCallback&&e.column.modules.format.renderedCallback()},Format.prototype.formatValue=function(e){function t(t){e.column.modules.format.renderedCallback=t}var o=e.getComponent(),r="function"==typeof e.column.modules.format.params?e.column.modules.format.params(o):e.column.modules.format.params;return e.column.modules.format.formatter.call(this,o,r,t)},Format.prototype.sanitizeHTML=function(e){if(e){var t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;","`":"&#x60;","=":"&#x3D;"};return String(e).replace(/[&<>"'`=\/]/g,function(e){return t[e]})}return e},Format.prototype.emptyToSpace=function(e){return null===e||void 0===e?"&nbsp;":e},Format.prototype.getFormatter=function(e){var e;switch(void 0===e?"undefined":_typeof(e)){case"string":this.formatters[e]?e=this.formatters[e]:(console.warn("Formatter Error - No such formatter found: ",e),e=this.formatters.plaintext);break;case"function":e=e;break;default:e=this.formatters.plaintext}return e},Format.prototype.formatters={plaintext:function(e,t,o){return this.emptyToSpace(this.sanitizeHTML(e.getValue()))},html:function(e,t,o){return e.getValue()},textarea:function(e,t,o){return e.getElement().style.whiteSpace="pre-wrap",this.emptyToSpace(this.sanitizeHTML(e.getValue()))},money:function(e,t,o){var r,a,i,n,l=parseFloat(e.getValue()),s=t.decimal||".",c=t.thousand||",",d=t.symbol||"",u=!!t.symbolAfter,m=void 0!==t.precision?t.precision:2;if(isNaN(l))return this.emptyToSpace(this.sanitizeHTML(e.getValue()));for(r=!1!==m?l.toFixed(m):l,r=String(r).split("."),a=r[0],i=r.length>1?s+r[1]:"",n=/(\d+)(\d{3})/;n.test(a);)a=a.replace(n,"$1"+c+"$2");return u?a+i+d:d+a+i},link:function(e,t,o){var r,a=e.getValue(),i=t.urlPrefix||"",n=a,l=document.createElement("a");if(t.labelField&&(r=e.getData(),n=r[t.labelField]),t.label)switch(_typeof(t.label)){case"string":n=t.label;break;case"function":n=t.label(e)}if(n){if(t.urlField&&(r=e.getData(),a=r[t.urlField]),t.url)switch(_typeof(t.url)){case"string":a=t.url;break;case"function":a=t.url(e)}return l.setAttribute("href",i+a),t.target&&l.setAttribute("target",t.target),l.innerHTML=this.emptyToSpace(this.sanitizeHTML(n)),l}return"&nbsp;"},image:function(e,t,o){var r=document.createElement("img");switch(r.setAttribute("src",e.getValue()),_typeof(t.height)){case"number":r.style.height=t.height+"px";break;case"string":r.style.height=t.height}switch(_typeof(t.width)){case"number":r.style.width=t.width+"px";break;case"string":r.style.width=t.width}return r.addEventListener("load",function(){e.getRow().normalizeHeight()}),r},tickCross:function(e,t,o){var r=e.getValue(),a=e.getElement(),i=t.allowEmpty,n=t.allowTruthy,l=void 0!==t.tickElement?t.tickElement:'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>',s=void 0!==t.crossElement?t.crossElement:'<svg enable-background="new 0 0 24 24" height="14" width="14"  viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';return n&&r||!0===r||"true"===r||"True"===r||1===r||"1"===r?(a.setAttribute("aria-checked",!0),l||""):!i||"null"!==r&&""!==r&&null!==r&&void 0!==r?(a.setAttribute("aria-checked",!1),s||""):(a.setAttribute("aria-checked","mixed"),"")},datetime:function(e,t,o){var r=t.inputFormat||"YYYY-MM-DD hh:mm:ss",a=t.outputFormat||"DD/MM/YYYY hh:mm:ss",i=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",n=e.getValue(),l=moment(n,r);return l.isValid()?l.format(a):!0===i?n:"function"==typeof i?i(n):i},datetimediff:function(e,t,o){var r=t.inputFormat||"YYYY-MM-DD hh:mm:ss",a=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",i=void 0!==t.suffix&&t.suffix,n=void 0!==t.unit?t.unit:void 0,l=void 0!==t.humanize&&t.humanize,s=void 0!==t.date?t.date:moment(),c=e.getValue(),d=moment(c,r);return d.isValid()?l?moment.duration(d.diff(s)).humanize(i):d.diff(s,n)+(i?" "+i:""):!0===a?c:"function"==typeof a?a(c):a},lookup:function(e,t,o){var r=e.getValue();return void 0===t[r]?(console.warn("Missing display value for "+r),r):t[r]},star:function(e,t,o){var r=e.getValue(),a=e.getElement(),i=t&&t.stars?t.stars:5,n=document.createElement("span"),l=document.createElementNS("http://www.w3.org/2000/svg","svg");n.style.verticalAlign="middle",l.setAttribute("width","14"),l.setAttribute("height","14"),l.setAttribute("viewBox","0 0 512 512"),l.setAttribute("xml:space","preserve"),l.style.padding="0 1px",r=r&&!isNaN(r)?parseInt(r):0,r=Math.max(0,Math.min(r,i));for(var s=1;s<=i;s++){var c=l.cloneNode(!0);c.innerHTML=s<=r?'<polygon fill="#FFEA00" stroke="#C1AB60" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>':'<polygon fill="#D2D2D2" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>',n.appendChild(c)}return a.style.whiteSpace="nowrap",a.style.overflow="hidden",a.style.textOverflow="ellipsis",a.setAttribute("aria-label",r),n},traffic:function(e,t,o){var r,a,i=this.sanitizeHTML(e.getValue())||0,n=document.createElement("span"),l=t&&t.max?t.max:100,s=t&&t.min?t.min:0,c=t&&void 0!==t.color?t.color:["red","orange","green"],d="#666666";if(!isNaN(i)&&void 0!==e.getValue()){switch(n.classList.add("tabulator-traffic-light"),a=parseFloat(i)<=l?parseFloat(i):l,a=parseFloat(a)>=s?parseFloat(a):s,r=(l-s)/100,a=Math.round((a-s)/r),void 0===c?"undefined":_typeof(c)){case"string":d=c;break;case"function":d=c(i);break;case"object":if(Array.isArray(c)){var u=100/c.length,m=Math.floor(a/u);m=Math.min(m,c.length-1),m=Math.max(m,0),d=c[m];break}}return n.style.backgroundColor=d,n}},progress:function(e,t,o){var r,a,i,n,l,s=this.sanitizeHTML(e.getValue())||0,c=e.getElement(),d=t&&t.max?t.max:100,u=t&&t.min?t.min:0,m=t&&t.legendAlign?t.legendAlign:"center";switch(a=parseFloat(s)<=d?parseFloat(s):d,a=parseFloat(a)>=u?parseFloat(a):u,r=(d-u)/100,a=Math.round((a-u)/r),_typeof(t.color)){case"string":i=t.color;break;case"function":i=t.color(s);break;case"object":if(Array.isArray(t.color)){var f=100/t.color.length,p=Math.floor(a/f);p=Math.min(p,t.color.length-1),p=Math.max(p,0),i=t.color[p];break}default:i="#2DC214"}switch(_typeof(t.legend)){case"string":n=t.legend;break;case"function":n=t.legend(s);break;case"boolean":n=s;break;default:n=!1}switch(_typeof(t.legendColor)){case"string":l=t.legendColor;break;case"function":l=t.legendColor(s);break;case"object":if(Array.isArray(t.legendColor)){var f=100/t.legendColor.length,p=Math.floor(a/f);p=Math.min(p,t.legendColor.length-1),p=Math.max(p,0),l=t.legendColor[p]}break;default:l="#000"}return c.style.minWidth="30px",c.style.position="relative",c.setAttribute("aria-label",a),"<div style='position:relative; height:100%;'  data-max='"+d+"' data-min='"+u+"'><div style='position:relative; height:100%; width:calc("+a+"%); background-color:"+i+"; display:inline-block;'></div></div>"+(n?"<div style='position:absolute; top:4px; left:0; text-align:"+m+"; width:100%; color:"+l+";'>"+n+"</div>":"")},color:function(e,t,o){return e.getElement().style.backgroundColor=this.sanitizeHTML(e.getValue()),""},buttonTick:function(e,t,o){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>'},buttonCross:function(e,t,o){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>'},rownum:function(e,t,o){return this.table.rowManager.activeRows.indexOf(e.getRow()._getSelf())+1},handle:function(e,t,o){return e.getElement().classList.add("tabulator-row-handle"),"<div class='tabulator-row-handle-box'><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div></div>"},responsiveCollapse:function(e,t,o){function r(t){var o=e.getRow().getElement().getElementsByClassName("tabulator-responsive-collapse")[0];i=t,i?(n.classList.add("open"),o&&(o.style.display="")):(n.classList.remove("open"),o&&(o.style.display="none"))}var a=this,i=!1,n=document.createElement("div");return n.classList.add("tabulator-responsive-collapse-toggle"),n.innerHTML="<span class='tabulator-responsive-collapse-toggle-open'>+</span><span class='tabulator-responsive-collapse-toggle-close'>-</span>",e.getElement().classList.add("tabulator-row-handle"),a.table.options.responsiveLayoutCollapseStartOpen&&(i=!0),n.addEventListener("click",function(e){e.stopImmediatePropagation(),r(!i)}),r(i),n},rowSelection:function(e){var t=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 r=e.getRow();o.addEventListener("change",function(e){r.toggleSelect()}),o.checked=r.isSelected(),this.table.modules.selectRow.registerRowSelectCheckbox(r,o)}else o.addEventListener("change",function(e){t.table.modules.selectRow.selectedRows.length?t.table.deselectRow():t.table.selectRow()}),this.table.modules.selectRow.registerHeaderSelectCheckbox(o);return o}},Tabulator.prototype.registerModule("format",Format);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/frozen_columns.js b/backoffice/vendors/tabulator/js.old/modules/frozen_columns.js
new file mode 100644 (file)
index 0000000..687a245
--- /dev/null
@@ -0,0 +1,243 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+
+var FrozenColumns = function FrozenColumns(table) {
+       this.table = table; //hold Tabulator object
+       this.leftColumns = [];
+       this.rightColumns = [];
+       this.leftMargin = 0;
+       this.rightMargin = 0;
+       this.rightPadding = 0;
+       this.initializationMode = "left";
+       this.active = false;
+       this.scrollEndTimer = false;
+};
+
+//reset initial state
+FrozenColumns.prototype.reset = function () {
+       this.initializationMode = "left";
+       this.leftColumns = [];
+       this.rightColumns = [];
+       this.leftMargin = 0;
+       this.rightMargin = 0;
+       this.rightMargin = 0;
+       this.active = false;
+
+       this.table.columnManager.headersElement.style.marginLeft = 0;
+       this.table.columnManager.element.style.paddingRight = 0;
+};
+
+//initialize specific column
+FrozenColumns.prototype.initializeColumn = function (column) {
+       var config = { margin: 0, edge: false };
+
+       if (column.definition.frozen) {
+
+               if (!column.parent.isGroup) {
+
+                       if (!column.isGroup) {
+                               config.position = this.initializationMode;
+
+                               if (this.initializationMode == "left") {
+                                       this.leftColumns.push(column);
+                               } else {
+                                       this.rightColumns.unshift(column);
+                               }
+
+                               this.active = true;
+
+                               column.modules.frozen = config;
+                       } else {
+                               console.warn("Frozen Column Error - Column Groups cannot be frozen");
+                       }
+               } else {
+                       console.warn("Frozen Column Error - Grouped columns cannot be frozen");
+               }
+       } else {
+               this.initializationMode = "right";
+       }
+};
+
+//quick layout to smooth horizontal scrolling
+FrozenColumns.prototype.scrollHorizontal = function () {
+       var _this = this;
+
+       var rows;
+
+       if (this.active) {
+               clearTimeout(this.scrollEndTimer);
+
+               //layout all rows after scroll is complete
+               this.scrollEndTimer = setTimeout(function () {
+                       _this.layout();
+               }, 100);
+
+               rows = this.table.rowManager.getVisibleRows();
+
+               this.calcMargins();
+
+               this.layoutColumnPosition();
+
+               this.layoutCalcRows();
+
+               rows.forEach(function (row) {
+                       if (row.type === "row") {
+                               _this.layoutRow(row);
+                       }
+               });
+
+               this.table.rowManager.tableElement.style.marginRight = this.rightMargin;
+       }
+};
+
+//calculate margins for rows
+FrozenColumns.prototype.calcMargins = 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;
+
+       //calculate right frozen columns
+       this.rightPadding = this.table.rowManager.element.clientWidth + this.table.columnManager.scrollLeft;
+};
+
+//layout calculation rows
+FrozenColumns.prototype.layoutCalcRows = function () {
+       if (this.table.modExists("columnCalcs")) {
+               if (this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow) {
+                       this.layoutRow(this.table.modules.columnCalcs.topRow);
+               }
+               if (this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow) {
+                       this.layoutRow(this.table.modules.columnCalcs.botRow);
+               }
+       }
+};
+
+//calculate column positions and layout headers
+FrozenColumns.prototype.layoutColumnPosition = function (allCells) {
+       var _this2 = this;
+
+       this.leftColumns.forEach(function (column, i) {
+               column.modules.frozen.margin = _this2._calcSpace(_this2.leftColumns, i) + _this2.table.columnManager.scrollLeft + "px";
+
+               if (i == _this2.leftColumns.length - 1) {
+                       column.modules.frozen.edge = true;
+               } else {
+                       column.modules.frozen.edge = false;
+               }
+
+               _this2.layoutElement(column.getElement(), column);
+
+               if (allCells) {
+                       column.cells.forEach(function (cell) {
+                               _this2.layoutElement(cell.getElement(), column);
+                       });
+               }
+       });
+
+       this.rightColumns.forEach(function (column, i) {
+               column.modules.frozen.margin = _this2.rightPadding - _this2._calcSpace(_this2.rightColumns, i + 1) + "px";
+
+               if (i == _this2.rightColumns.length - 1) {
+                       column.modules.frozen.edge = true;
+               } else {
+                       column.modules.frozen.edge = false;
+               }
+
+               _this2.layoutElement(column.getElement(), column);
+
+               if (allCells) {
+                       column.cells.forEach(function (cell) {
+                               _this2.layoutElement(cell.getElement(), column);
+                       });
+               }
+       });
+};
+
+//layout columns appropropriatly
+FrozenColumns.prototype.layout = function () {
+       var self = this,
+           rightMargin = 0;
+
+       if (self.active) {
+
+               //calculate row padding
+               this.calcMargins();
+
+               // self.table.rowManager.activeRows.forEach(function(row){
+               //      self.layoutRow(row);
+               // });
+
+               // if(self.table.options.dataTree){
+               self.table.rowManager.getDisplayRows().forEach(function (row) {
+                       if (row.type === "row") {
+                               self.layoutRow(row);
+                       }
+               });
+               // }
+
+               this.layoutCalcRows();
+
+               //calculate left columns
+               this.layoutColumnPosition(true);
+
+               // if(tableHolder.scrollHeight > tableHolder.clientHeight){
+               //      rightMargin -= tableHolder.offsetWidth - tableHolder.clientWidth;
+               // }
+
+               this.table.rowManager.tableElement.style.marginRight = this.rightMargin;
+       }
+};
+
+FrozenColumns.prototype.layoutRow = function (row) {
+       var _this3 = this;
+
+       var rowEl = row.getElement();
+
+       rowEl.style.paddingLeft = this.leftMargin;
+       // rowEl.style.paddingRight = this.rightMargin + "px";
+
+       this.leftColumns.forEach(function (column) {
+               var cell = row.getCell(column);
+
+               if (cell) {
+                       _this3.layoutElement(cell.getElement(), column);
+               }
+       });
+
+       this.rightColumns.forEach(function (column) {
+               var cell = row.getCell(column);
+
+               if (cell) {
+                       _this3.layoutElement(cell.getElement(), column);
+               }
+       });
+};
+
+FrozenColumns.prototype.layoutElement = function (element, column) {
+
+       if (column.modules.frozen) {
+               element.style.position = "absolute";
+               element.style.left = column.modules.frozen.margin;
+
+               element.classList.add("tabulator-frozen");
+
+               if (column.modules.frozen.edge) {
+                       element.classList.add("tabulator-frozen-" + column.modules.frozen.position);
+               }
+       }
+};
+
+FrozenColumns.prototype._calcSpace = function (columns, index) {
+       var width = 0;
+
+       for (var i = 0; i < index; i++) {
+               if (columns[i].visible) {
+                       width += columns[i].getWidth();
+               }
+       }
+
+       return width;
+};
+
+Tabulator.prototype.registerModule("frozenColumns", FrozenColumns);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/frozen_columns.min.js b/backoffice/vendors/tabulator/js.old/modules/frozen_columns.min.js
new file mode 100644 (file)
index 0000000..9cf6fa6
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+var FrozenColumns=function(t){this.table=t,this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightPadding=0,this.initializationMode="left",this.active=!1,this.scrollEndTimer=!1};FrozenColumns.prototype.reset=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},FrozenColumns.prototype.initializeColumn=function(t){var o={margin:0,edge:!1};t.definition.frozen?t.parent.isGroup?console.warn("Frozen Column Error - Grouped columns cannot be frozen"):t.isGroup?console.warn("Frozen Column Error - Column Groups cannot be frozen"):(o.position=this.initializationMode,"left"==this.initializationMode?this.leftColumns.push(t):this.rightColumns.unshift(t),this.active=!0,t.modules.frozen=o):this.initializationMode="right"},FrozenColumns.prototype.scrollHorizontal=function(){var t,o=this;this.active&&(clearTimeout(this.scrollEndTimer),this.scrollEndTimer=setTimeout(function(){o.layout()},100),t=this.table.rowManager.getVisibleRows(),this.calcMargins(),this.layoutColumnPosition(),this.layoutCalcRows(),t.forEach(function(t){"row"===t.type&&o.layoutRow(t)}),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},FrozenColumns.prototype.calcMargins=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},FrozenColumns.prototype.layoutCalcRows=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))},FrozenColumns.prototype.layoutColumnPosition=function(t){var o=this;this.leftColumns.forEach(function(e,n){e.modules.frozen.margin=o._calcSpace(o.leftColumns,n)+o.table.columnManager.scrollLeft+"px",n==o.leftColumns.length-1?e.modules.frozen.edge=!0:e.modules.frozen.edge=!1,o.layoutElement(e.getElement(),e),t&&e.cells.forEach(function(t){o.layoutElement(t.getElement(),e)})}),this.rightColumns.forEach(function(e,n){e.modules.frozen.margin=o.rightPadding-o._calcSpace(o.rightColumns,n+1)+"px",n==o.rightColumns.length-1?e.modules.frozen.edge=!0:e.modules.frozen.edge=!1,o.layoutElement(e.getElement(),e),t&&e.cells.forEach(function(t){o.layoutElement(t.getElement(),e)})})},FrozenColumns.prototype.layout=function(){var t=this;t.active&&(this.calcMargins(),t.table.rowManager.getDisplayRows().forEach(function(o){"row"===o.type&&t.layoutRow(o)}),this.layoutCalcRows(),this.layoutColumnPosition(!0),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},FrozenColumns.prototype.layoutRow=function(t){var o=this;t.getElement().style.paddingLeft=this.leftMargin,this.leftColumns.forEach(function(e){var n=t.getCell(e);n&&o.layoutElement(n.getElement(),e)}),this.rightColumns.forEach(function(e){var n=t.getCell(e);n&&o.layoutElement(n.getElement(),e)})},FrozenColumns.prototype.layoutElement=function(t,o){o.modules.frozen&&(t.style.position="absolute",t.style.left=o.modules.frozen.margin,t.classList.add("tabulator-frozen"),o.modules.frozen.edge&&t.classList.add("tabulator-frozen-"+o.modules.frozen.position))},FrozenColumns.prototype._calcSpace=function(t,o){for(var e=0,n=0;n<o;n++)t[n].visible&&(e+=t[n].getWidth());return e},Tabulator.prototype.registerModule("frozenColumns",FrozenColumns);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/frozen_rows.js b/backoffice/vendors/tabulator/js.old/modules/frozen_rows.js
new file mode 100644 (file)
index 0000000..087bc84
--- /dev/null
@@ -0,0 +1,98 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+
+var FrozenRows = function FrozenRows(table) {
+       this.table = table; //hold Tabulator object
+       this.topElement = document.createElement("div");
+       this.rows = [];
+       this.displayIndex = 0; //index in display pipeline
+};
+
+FrozenRows.prototype.initialize = function () {
+       this.rows = [];
+
+       this.topElement.classList.add("tabulator-frozen-rows-holder");
+
+       // this.table.columnManager.element.append(this.topElement);
+       this.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);
+};
+
+FrozenRows.prototype.setDisplayIndex = function (index) {
+       this.displayIndex = index;
+};
+
+FrozenRows.prototype.getDisplayIndex = function () {
+       return this.displayIndex;
+};
+
+FrozenRows.prototype.isFrozen = function () {
+       return !!this.rows.length;
+};
+
+//filter frozen rows out of display data
+FrozenRows.prototype.getRows = function (rows) {
+       var self = this,
+           frozen = [],
+           output = rows.slice(0);
+
+       this.rows.forEach(function (row) {
+               var index = output.indexOf(row);
+
+               if (index > -1) {
+                       output.splice(index, 1);
+               }
+       });
+
+       return output;
+};
+
+FrozenRows.prototype.freezeRow = function (row) {
+       if (!row.modules.frozen) {
+               row.modules.frozen = true;
+               this.topElement.appendChild(row.getElement());
+               row.initialize();
+               row.normalizeHeight();
+               this.table.rowManager.adjustTableSize();
+
+               this.rows.push(row);
+
+               this.table.rowManager.refreshActiveData("display");
+
+               this.styleRows();
+       } else {
+               console.warn("Freeze Error - Row is already frozen");
+       }
+};
+
+FrozenRows.prototype.unfreezeRow = function (row) {
+       var index = this.rows.indexOf(row);
+
+       if (row.modules.frozen) {
+
+               row.modules.frozen = false;
+
+               var rowEl = row.getElement();
+               rowEl.parentNode.removeChild(rowEl);
+
+               this.table.rowManager.adjustTableSize();
+
+               this.rows.splice(index, 1);
+
+               this.table.rowManager.refreshActiveData("display");
+
+               if (this.rows.length) {
+                       this.styleRows();
+               }
+       } else {
+               console.warn("Freeze Error - Row is already unfrozen");
+       }
+};
+
+FrozenRows.prototype.styleRows = function (row) {
+       var self = this;
+
+       this.rows.forEach(function (row, i) {
+               self.table.rowManager.styleRow(row, i);
+       });
+};
+
+Tabulator.prototype.registerModule("frozenRows", FrozenRows);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/frozen_rows.min.js b/backoffice/vendors/tabulator/js.old/modules/frozen_rows.min.js
new file mode 100644 (file)
index 0000000..7c6debc
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+var FrozenRows=function(e){this.table=e,this.topElement=document.createElement("div"),this.rows=[],this.displayIndex=0};FrozenRows.prototype.initialize=function(){this.rows=[],this.topElement.classList.add("tabulator-frozen-rows-holder"),this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling)},FrozenRows.prototype.setDisplayIndex=function(e){this.displayIndex=e},FrozenRows.prototype.getDisplayIndex=function(){return this.displayIndex},FrozenRows.prototype.isFrozen=function(){return!!this.rows.length},FrozenRows.prototype.getRows=function(e){var o=e.slice(0);return this.rows.forEach(function(e){var t=o.indexOf(e);t>-1&&o.splice(t,1)}),o},FrozenRows.prototype.freezeRow=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.table.rowManager.refreshActiveData("display"),this.styleRows())},FrozenRows.prototype.unfreezeRow=function(e){var o=this.rows.indexOf(e);if(e.modules.frozen){e.modules.frozen=!1;var t=e.getElement();t.parentNode.removeChild(t),this.table.rowManager.adjustTableSize(),this.rows.splice(o,1),this.table.rowManager.refreshActiveData("display"),this.rows.length&&this.styleRows()}else console.warn("Freeze Error - Row is already unfrozen")},FrozenRows.prototype.styleRows=function(e){var o=this;this.rows.forEach(function(e,t){o.table.rowManager.styleRow(e,t)})},Tabulator.prototype.registerModule("frozenRows",FrozenRows);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/group_rows.js b/backoffice/vendors/tabulator/js.old/modules/group_rows.js
new file mode 100644 (file)
index 0000000..310ab00
--- /dev/null
@@ -0,0 +1,1048 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+
+//public group object
+var GroupComponent = function GroupComponent(group) {
+       this._group = group;
+       this.type = "GroupComponent";
+};
+
+GroupComponent.prototype.getKey = function () {
+       return this._group.key;
+};
+
+GroupComponent.prototype.getField = function () {
+       return this._group.field;
+};
+
+GroupComponent.prototype.getElement = function () {
+       return this._group.element;
+};
+
+GroupComponent.prototype.getRows = function () {
+       return this._group.getRows(true);
+};
+
+GroupComponent.prototype.getSubGroups = function () {
+       return this._group.getSubGroups(true);
+};
+
+GroupComponent.prototype.getParentGroup = function () {
+       return this._group.parent ? this._group.parent.getComponent() : false;
+};
+
+GroupComponent.prototype.getVisibility = function () {
+       return this._group.visible;
+};
+
+GroupComponent.prototype.show = function () {
+       this._group.show();
+};
+
+GroupComponent.prototype.hide = function () {
+       this._group.hide();
+};
+
+GroupComponent.prototype.toggle = function () {
+       this._group.toggleVisibility();
+};
+
+GroupComponent.prototype._getSelf = function () {
+       return this._group;
+};
+
+GroupComponent.prototype.getTable = function () {
+       return this._group.groupManager.table;
+};
+
+//////////////////////////////////////////////////
+//////////////// Group Functions /////////////////
+//////////////////////////////////////////////////
+
+var Group = function Group(groupManager, parent, level, key, field, generator, oldGroup) {
+
+       this.groupManager = groupManager;
+       this.parent = parent;
+       this.key = key;
+       this.level = level;
+       this.field = field;
+       this.hasSubGroups = level < groupManager.groupIDLookups.length - 1;
+       this.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow;
+       this.type = "group"; //type of element
+       this.old = oldGroup;
+       this.rows = [];
+       this.groups = [];
+       this.groupList = [];
+       this.generator = generator;
+       this.elementContents = false;
+       this.height = 0;
+       this.outerHeight = 0;
+       this.initialized = false;
+       this.calcs = {};
+       this.initialized = false;
+       this.modules = {};
+       this.arrowElement = false;
+
+       this.visible = oldGroup ? oldGroup.visible : typeof groupManager.startOpen[level] !== "undefined" ? groupManager.startOpen[level] : groupManager.startOpen[0];
+
+       this.createElements();
+       this.addBindings();
+
+       this.createValueGroups();
+};
+
+Group.prototype.wipe = function () {
+       if (this.groupList.length) {
+               this.groupList.forEach(function (group) {
+                       group.wipe();
+               });
+       } else {
+               this.element = false;
+               this.arrowElement = false;
+               this.elementContents = false;
+       }
+};
+
+Group.prototype.createElements = function () {
+       this.element = document.createElement("div");
+       this.element.classList.add("tabulator-row");
+       this.element.classList.add("tabulator-group");
+       this.element.classList.add("tabulator-group-level-" + this.level);
+       this.element.setAttribute("role", "rowgroup");
+
+       this.arrowElement = document.createElement("div");
+       this.arrowElement.classList.add("tabulator-arrow");
+
+       //setup movable rows
+       if (this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists("moveRow")) {
+               this.groupManager.table.modules.moveRow.initializeGroupHeader(this);
+       }
+};
+
+Group.prototype.createValueGroups = function () {
+       var _this = this;
+
+       var level = this.level + 1;
+       if (this.groupManager.allowedValues && this.groupManager.allowedValues[level]) {
+               this.groupManager.allowedValues[level].forEach(function (value) {
+                       _this._createGroup(value, level);
+               });
+       }
+};
+
+Group.prototype.addBindings = function () {
+       var self = this,
+           dblTap,
+           tapHold,
+           tap,
+           toggleElement;
+
+       //handle group click events
+       if (self.groupManager.table.options.groupClick) {
+               self.element.addEventListener("click", function (e) {
+                       self.groupManager.table.options.groupClick(e, self.getComponent());
+               });
+       }
+
+       if (self.groupManager.table.options.groupDblClick) {
+               self.element.addEventListener("dblclick", function (e) {
+                       self.groupManager.table.options.groupDblClick(e, self.getComponent());
+               });
+       }
+
+       if (self.groupManager.table.options.groupContext) {
+               self.element.addEventListener("contextmenu", function (e) {
+                       self.groupManager.table.options.groupContext(e, self.getComponent());
+               });
+       }
+
+       if (self.groupManager.table.options.groupTap) {
+
+               tap = false;
+
+               self.element.addEventListener("touchstart", function (e) {
+                       tap = true;
+               }, { passive: true });
+
+               self.element.addEventListener("touchend", function (e) {
+                       if (tap) {
+                               self.groupManager.table.options.groupTap(e, self.getComponent());
+                       }
+
+                       tap = false;
+               });
+       }
+
+       if (self.groupManager.table.options.groupDblTap) {
+
+               dblTap = null;
+
+               self.element.addEventListener("touchend", function (e) {
+
+                       if (dblTap) {
+                               clearTimeout(dblTap);
+                               dblTap = null;
+
+                               self.groupManager.table.options.groupDblTap(e, self.getComponent());
+                       } else {
+
+                               dblTap = setTimeout(function () {
+                                       clearTimeout(dblTap);
+                                       dblTap = null;
+                               }, 300);
+                       }
+               });
+       }
+
+       if (self.groupManager.table.options.groupTapHold) {
+
+               tapHold = null;
+
+               self.element.addEventListener("touchstart", function (e) {
+                       clearTimeout(tapHold);
+
+                       tapHold = setTimeout(function () {
+                               clearTimeout(tapHold);
+                               tapHold = null;
+                               tap = false;
+                               self.groupManager.table.options.groupTapHold(e, self.getComponent());
+                       }, 1000);
+               }, { passive: true });
+
+               self.element.addEventListener("touchend", function (e) {
+                       clearTimeout(tapHold);
+                       tapHold = null;
+               });
+       }
+
+       if (self.groupManager.table.options.groupToggleElement) {
+               toggleElement = self.groupManager.table.options.groupToggleElement == "arrow" ? self.arrowElement : self.element;
+
+               toggleElement.addEventListener("click", function (e) {
+                       e.stopPropagation();
+                       e.stopImmediatePropagation();
+                       self.toggleVisibility();
+               });
+       }
+};
+
+Group.prototype._createGroup = function (groupID, level) {
+       var groupKey = level + "_" + groupID;
+       var 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);
+
+       this.groups[groupKey] = group;
+       this.groupList.push(group);
+};
+
+Group.prototype._addRowToGroup = function (row) {
+
+       var level = this.level + 1;
+
+       if (this.hasSubGroups) {
+               var groupID = this.groupManager.groupIDLookups[level].func(row.getData()),
+                   groupKey = level + "_" + groupID;
+
+               if (this.groupManager.allowedValues && this.groupManager.allowedValues[level]) {
+                       if (this.groups[groupKey]) {
+                               this.groups[groupKey].addRow(row);
+                       }
+               } else {
+                       if (!this.groups[groupKey]) {
+                               this._createGroup(groupID, level);
+                       }
+
+                       this.groups[groupKey].addRow(row);
+               }
+       }
+};
+
+Group.prototype._addRow = function (row) {
+       this.rows.push(row);
+       row.modules.group = this;
+};
+
+Group.prototype.insertRow = function (row, to, after) {
+       var data = this.conformRowData({});
+
+       row.updateData(data);
+
+       var toIndex = this.rows.indexOf(to);
+
+       if (toIndex > -1) {
+               if (after) {
+                       this.rows.splice(toIndex + 1, 0, row);
+               } else {
+                       this.rows.splice(toIndex, 0, row);
+               }
+       } else {
+               if (after) {
+                       this.rows.push(row);
+               } else {
+                       this.rows.unshift(row);
+               }
+       }
+
+       row.modules.group = this;
+
+       this.generateGroupHeaderContents();
+
+       if (this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.options.columnCalcs != "table") {
+               this.groupManager.table.modules.columnCalcs.recalcGroup(this);
+       }
+
+       this.groupManager.updateGroupRows(true);
+};
+
+Group.prototype.scrollHeader = function (left) {
+       this.arrowElement.style.marginLeft = left;
+
+       this.groupList.forEach(function (child) {
+               child.scrollHeader(left);
+       });
+};
+
+Group.prototype.getRowIndex = function (row) {};
+
+//update row data to match grouping contraints
+Group.prototype.conformRowData = function (data) {
+       if (this.field) {
+               data[this.field] = this.key;
+       } else {
+               console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function");
+       }
+
+       if (this.parent) {
+               data = this.parent.conformRowData(data);
+       }
+
+       return data;
+};
+
+Group.prototype.removeRow = function (row) {
+       var index = this.rows.indexOf(row);
+       var el = row.getElement();
+
+       if (index > -1) {
+               this.rows.splice(index, 1);
+       }
+
+       if (!this.groupManager.table.options.groupValues && !this.rows.length) {
+               if (this.parent) {
+                       this.parent.removeGroup(this);
+               } else {
+                       this.groupManager.removeGroup(this);
+               }
+
+               this.groupManager.updateGroupRows(true);
+       } else {
+
+               if (el.parentNode) {
+                       el.parentNode.removeChild(el);
+               }
+
+               this.generateGroupHeaderContents();
+
+               if (this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.options.columnCalcs != "table") {
+                       this.groupManager.table.modules.columnCalcs.recalcGroup(this);
+               }
+       }
+};
+
+Group.prototype.removeGroup = function (group) {
+       var groupKey = group.level + "_" + group.key,
+           index;
+
+       if (this.groups[groupKey]) {
+               delete this.groups[groupKey];
+
+               index = this.groupList.indexOf(group);
+
+               if (index > -1) {
+                       this.groupList.splice(index, 1);
+               }
+
+               if (!this.groupList.length) {
+                       if (this.parent) {
+                               this.parent.removeGroup(this);
+                       } else {
+                               this.groupManager.removeGroup(this);
+                       }
+               }
+       }
+};
+
+Group.prototype.getHeadersAndRows = function (noCalc) {
+       var output = [];
+
+       output.push(this);
+
+       this._visSet();
+
+       if (this.visible) {
+               if (this.groupList.length) {
+                       this.groupList.forEach(function (group) {
+                               output = output.concat(group.getHeadersAndRows(noCalc));
+                       });
+               } else {
+                       if (!noCalc && this.groupManager.table.options.columnCalcs != "table" && this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()) {
+                               if (this.calcs.top) {
+                                       this.calcs.top.detachElement();
+                                       this.calcs.top.deleteCells();
+                               }
+
+                               this.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);
+                               output.push(this.calcs.top);
+                       }
+
+                       output = output.concat(this.rows);
+
+                       if (!noCalc && this.groupManager.table.options.columnCalcs != "table" && this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()) {
+                               if (this.calcs.bottom) {
+                                       this.calcs.bottom.detachElement();
+                                       this.calcs.bottom.deleteCells();
+                               }
+
+                               this.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);
+                               output.push(this.calcs.bottom);
+                       }
+               }
+       } else {
+               if (!this.groupList.length && this.groupManager.table.options.columnCalcs != "table") {
+
+                       if (this.groupManager.table.modExists("columnCalcs")) {
+
+                               if (!noCalc && this.groupManager.table.modules.columnCalcs.hasTopCalcs()) {
+                                       if (this.calcs.top) {
+                                               this.calcs.top.detachElement();
+                                               this.calcs.top.deleteCells();
+                                       }
+
+                                       if (this.groupManager.table.options.groupClosedShowCalcs) {
+                                               this.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);
+                                               output.push(this.calcs.top);
+                                       }
+                               }
+
+                               if (!noCalc && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()) {
+                                       if (this.calcs.bottom) {
+                                               this.calcs.bottom.detachElement();
+                                               this.calcs.bottom.deleteCells();
+                                       }
+
+                                       if (this.groupManager.table.options.groupClosedShowCalcs) {
+                                               this.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);
+                                               output.push(this.calcs.bottom);
+                                       }
+                               }
+                       }
+               }
+       }
+
+       return output;
+};
+
+Group.prototype.getData = function (visible, transform) {
+       var self = this,
+           output = [];
+
+       this._visSet();
+
+       if (!visible || visible && this.visible) {
+               this.rows.forEach(function (row) {
+                       output.push(row.getData(transform || "data"));
+               });
+       }
+
+       return output;
+};
+
+// Group.prototype.getRows = function(){
+//     this._visSet();
+
+//     return this.visible ? this.rows : [];
+// };
+
+Group.prototype.getRowCount = function () {
+       var count = 0;
+
+       if (this.groupList.length) {
+               this.groupList.forEach(function (group) {
+                       count += group.getRowCount();
+               });
+       } else {
+               count = this.rows.length;
+       }
+       return count;
+};
+
+Group.prototype.toggleVisibility = function () {
+       if (this.visible) {
+               this.hide();
+       } else {
+               this.show();
+       }
+};
+
+Group.prototype.hide = function () {
+       this.visible = false;
+
+       if (this.groupManager.table.rowManager.getRenderMode() == "classic" && !this.groupManager.table.options.pagination) {
+
+               this.element.classList.remove("tabulator-group-visible");
+
+               if (this.groupList.length) {
+                       this.groupList.forEach(function (group) {
+
+                               var rows = group.getHeadersAndRows();
+
+                               rows.forEach(function (row) {
+                                       row.detachElement();
+                               });
+                       });
+               } else {
+                       this.rows.forEach(function (row) {
+                               var rowEl = row.getElement();
+                               rowEl.parentNode.removeChild(rowEl);
+                       });
+               }
+
+               this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());
+
+               this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();
+       } else {
+               this.groupManager.updateGroupRows(true);
+       }
+
+       this.groupManager.table.options.groupVisibilityChanged.call(this.table, this.getComponent(), false);
+};
+
+Group.prototype.show = function () {
+       var self = this;
+
+       self.visible = true;
+
+       if (this.groupManager.table.rowManager.getRenderMode() == "classic" && !this.groupManager.table.options.pagination) {
+
+               this.element.classList.add("tabulator-group-visible");
+
+               var prev = self.getElement();
+
+               if (this.groupList.length) {
+                       this.groupList.forEach(function (group) {
+                               var rows = group.getHeadersAndRows();
+
+                               rows.forEach(function (row) {
+                                       var rowEl = row.getElement();
+                                       prev.parentNode.insertBefore(rowEl, prev.nextSibling);
+                                       row.initialize();
+                                       prev = rowEl;
+                               });
+                       });
+               } else {
+                       self.rows.forEach(function (row) {
+                               var rowEl = row.getElement();
+                               prev.parentNode.insertBefore(rowEl, prev.nextSibling);
+                               row.initialize();
+                               prev = rowEl;
+                       });
+               }
+
+               this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());
+
+               this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();
+       } else {
+               this.groupManager.updateGroupRows(true);
+       }
+
+       this.groupManager.table.options.groupVisibilityChanged.call(this.table, this.getComponent(), true);
+};
+
+Group.prototype._visSet = function () {
+       var data = [];
+
+       if (typeof this.visible == "function") {
+
+               this.rows.forEach(function (row) {
+                       data.push(row.getData());
+               });
+
+               this.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent());
+       }
+};
+
+Group.prototype.getRowGroup = function (row) {
+       var match = false;
+       if (this.groupList.length) {
+               this.groupList.forEach(function (group) {
+                       var result = group.getRowGroup(row);
+
+                       if (result) {
+                               match = result;
+                       }
+               });
+       } else {
+               if (this.rows.find(function (item) {
+                       return item === row;
+               })) {
+                       match = this;
+               }
+       }
+
+       return match;
+};
+
+Group.prototype.getSubGroups = function (component) {
+       var output = [];
+
+       this.groupList.forEach(function (child) {
+               output.push(component ? child.getComponent() : child);
+       });
+
+       return output;
+};
+
+Group.prototype.getRows = function (compoment) {
+       var output = [];
+
+       this.rows.forEach(function (row) {
+               output.push(compoment ? row.getComponent() : row);
+       });
+
+       return output;
+};
+
+Group.prototype.generateGroupHeaderContents = function () {
+       var data = [];
+
+       this.rows.forEach(function (row) {
+               data.push(row.getData());
+       });
+
+       this.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent());
+
+       while (this.element.firstChild) {
+               this.element.removeChild(this.element.firstChild);
+       }if (typeof this.elementContents === "string") {
+               this.element.innerHTML = this.elementContents;
+       } else {
+               this.element.appendChild(this.elementContents);
+       }
+
+       this.element.insertBefore(this.arrowElement, this.element.firstChild);
+};
+
+////////////// Standard Row Functions //////////////
+
+Group.prototype.getElement = function () {
+       this.addBindingsd = false;
+
+       this._visSet();
+
+       if (this.visible) {
+               this.element.classList.add("tabulator-group-visible");
+       } else {
+               this.element.classList.remove("tabulator-group-visible");
+       }
+
+       for (var i = 0; i < this.element.childNodes.length; ++i) {
+               this.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]);
+       }
+
+       this.generateGroupHeaderContents();
+
+       // this.addBindings();
+
+       return this.element;
+};
+
+Group.prototype.detachElement = function () {
+       if (this.element && this.element.parentNode) {
+               this.element.parentNode.removeChild(this.element);
+       }
+};
+
+//normalize the height of elements in the row
+Group.prototype.normalizeHeight = function () {
+       this.setHeight(this.element.clientHeight);
+};
+
+Group.prototype.initialize = function (force) {
+       if (!this.initialized || force) {
+               this.normalizeHeight();
+               this.initialized = true;
+       }
+};
+
+Group.prototype.reinitialize = function () {
+       this.initialized = false;
+       this.height = 0;
+
+       if (Tabulator.prototype.helpers.elVisible(this.element)) {
+               this.initialize(true);
+       }
+};
+
+Group.prototype.setHeight = function (height) {
+       if (this.height != height) {
+               this.height = height;
+               this.outerHeight = this.element.offsetHeight;
+       }
+};
+
+//return rows outer height
+Group.prototype.getHeight = function () {
+       return this.outerHeight;
+};
+
+Group.prototype.getGroup = function () {
+       return this;
+};
+
+Group.prototype.reinitializeHeight = function () {};
+Group.prototype.calcHeight = function () {};
+Group.prototype.setCellHeight = function () {};
+Group.prototype.clearCellHeight = function () {};
+
+//////////////// Object Generation /////////////////
+Group.prototype.getComponent = function () {
+       return new GroupComponent(this);
+};
+
+//////////////////////////////////////////////////
+////////////// Group Row Extension ///////////////
+//////////////////////////////////////////////////
+
+var GroupRows = function GroupRows(table) {
+
+       this.table = table; //hold Tabulator object
+
+       this.groupIDLookups = false; //enable table grouping and set field to group by
+       this.startOpen = [function () {
+               return false;
+       }]; //starting state of group
+       this.headerGenerator = [function () {
+               return "";
+       }];
+       this.groupList = []; //ordered list of groups
+       this.allowedValues = false;
+       this.groups = {}; //hold row groups
+       this.displayIndex = 0; //index in display pipeline
+};
+
+//initialize group configuration
+GroupRows.prototype.initialize = function () {
+       var self = this,
+           groupBy = self.table.options.groupBy,
+           startOpen = self.table.options.groupStartOpen,
+           groupHeader = self.table.options.groupHeader;
+
+       this.allowedValues = self.table.options.groupValues;
+
+       if (Array.isArray(groupBy) && Array.isArray(groupHeader) && groupBy.length > groupHeader.length) {
+               console.warn("Error creating group headers, groupHeader array is shorter than groupBy array");
+       }
+
+       self.headerGenerator = [function () {
+               return "";
+       }];
+       this.startOpen = [function () {
+               return false;
+       }]; //starting state of group
+
+       self.table.modules.localize.bind("groups|item", function (langValue, lang) {
+               self.headerGenerator[0] = function (value, count, data) {
+                       //header layout function
+                       return (typeof value === "undefined" ? "" : value) + "<span>(" + count + " " + (count === 1 ? langValue : lang.groups.items) + ")</span>";
+               };
+       });
+
+       this.groupIDLookups = [];
+
+       if (Array.isArray(groupBy) || groupBy) {
+               if (this.table.modExists("columnCalcs") && this.table.options.columnCalcs != "table" && this.table.options.columnCalcs != "both") {
+                       this.table.modules.columnCalcs.removeCalcs();
+               }
+       } else {
+               if (this.table.modExists("columnCalcs") && this.table.options.columnCalcs != "group") {
+
+                       var cols = this.table.columnManager.getRealColumns();
+
+                       cols.forEach(function (col) {
+                               if (col.definition.topCalc) {
+                                       self.table.modules.columnCalcs.initializeTopRow();
+                               }
+
+                               if (col.definition.bottomCalc) {
+                                       self.table.modules.columnCalcs.initializeBottomRow();
+                               }
+                       });
+               }
+       }
+
+       if (!Array.isArray(groupBy)) {
+               groupBy = [groupBy];
+       }
+
+       groupBy.forEach(function (group, i) {
+               var lookupFunc, column;
+
+               if (typeof group == "function") {
+                       lookupFunc = group;
+               } else {
+                       column = self.table.columnManager.getColumnByField(group);
+
+                       if (column) {
+                               lookupFunc = function lookupFunc(data) {
+                                       return column.getFieldValue(data);
+                               };
+                       } else {
+                               lookupFunc = function lookupFunc(data) {
+                                       return data[group];
+                               };
+                       }
+               }
+
+               self.groupIDLookups.push({
+                       field: typeof group === "function" ? false : group,
+                       func: lookupFunc,
+                       values: self.allowedValues ? self.allowedValues[i] : false
+               });
+       });
+
+       if (startOpen) {
+
+               if (!Array.isArray(startOpen)) {
+                       startOpen = [startOpen];
+               }
+
+               startOpen.forEach(function (level) {
+                       level = typeof level == "function" ? level : function () {
+                               return true;
+                       };
+               });
+
+               self.startOpen = startOpen;
+       }
+
+       if (groupHeader) {
+               self.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];
+       }
+
+       this.initialized = true;
+};
+
+GroupRows.prototype.setDisplayIndex = function (index) {
+       this.displayIndex = index;
+};
+
+GroupRows.prototype.getDisplayIndex = function () {
+       return this.displayIndex;
+};
+
+//return appropriate rows with group headers
+GroupRows.prototype.getRows = function (rows) {
+       if (this.groupIDLookups.length) {
+
+               this.table.options.dataGrouping.call(this.table);
+
+               this.generateGroups(rows);
+
+               if (this.table.options.dataGrouped) {
+                       this.table.options.dataGrouped.call(this.table, this.getGroups(true));
+               }
+
+               return this.updateGroupRows();
+       } else {
+               return rows.slice(0);
+       }
+};
+
+GroupRows.prototype.getGroups = function (compoment) {
+       var groupComponents = [];
+
+       this.groupList.forEach(function (group) {
+               groupComponents.push(compoment ? group.getComponent() : group);
+       });
+
+       return groupComponents;
+};
+
+GroupRows.prototype.wipe = function () {
+       this.groupList.forEach(function (group) {
+               group.wipe();
+       });
+};
+
+GroupRows.prototype.pullGroupListData = function (groupList) {
+       var self = this;
+       var groupListData = [];
+
+       groupList.forEach(function (group) {
+               var groupHeader = {};
+               groupHeader.level = 0;
+               groupHeader.rowCount = 0;
+               groupHeader.headerContent = "";
+               var childData = [];
+
+               if (group.hasSubGroups) {
+                       childData = self.pullGroupListData(group.groupList);
+
+                       groupHeader.level = group.level;
+                       groupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers
+                       groupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group);
+
+                       groupListData.push(groupHeader);
+                       groupListData = groupListData.concat(childData);
+               } else {
+                       groupHeader.level = group.level;
+                       groupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group);
+                       groupHeader.rowCount = group.getRows().length;
+
+                       groupListData.push(groupHeader);
+
+                       group.getRows().forEach(function (row) {
+                               groupListData.push(row.getData("data"));
+                       });
+               }
+       });
+
+       return groupListData;
+};
+
+GroupRows.prototype.getGroupedData = function () {
+
+       return this.pullGroupListData(this.groupList);
+};
+
+GroupRows.prototype.getRowGroup = function (row) {
+       var match = false;
+
+       this.groupList.forEach(function (group) {
+               var result = group.getRowGroup(row);
+
+               if (result) {
+                       match = result;
+               }
+       });
+
+       return match;
+};
+
+GroupRows.prototype.countGroups = function () {
+       return this.groupList.length;
+};
+
+GroupRows.prototype.generateGroups = function (rows) {
+       var self = this,
+           oldGroups = self.groups;
+
+       self.groups = {};
+       self.groupList = [];
+
+       if (this.allowedValues && this.allowedValues[0]) {
+               this.allowedValues[0].forEach(function (value) {
+                       self.createGroup(value, 0, oldGroups);
+               });
+
+               rows.forEach(function (row) {
+                       self.assignRowToExistingGroup(row, oldGroups);
+               });
+       } else {
+               rows.forEach(function (row) {
+                       self.assignRowToGroup(row, oldGroups);
+               });
+       }
+};
+
+GroupRows.prototype.createGroup = function (groupID, level, oldGroups) {
+       var groupKey = level + "_" + groupID,
+           group;
+
+       oldGroups = oldGroups || [];
+
+       group = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]);
+
+       this.groups[groupKey] = group;
+       this.groupList.push(group);
+};
+
+GroupRows.prototype.assignRowToGroup = function (row, oldGroups) {
+       var groupID = this.groupIDLookups[0].func(row.getData()),
+           groupKey = "0_" + groupID;
+
+       if (!this.groups[groupKey]) {
+               this.createGroup(groupID, 0, oldGroups);
+       }
+
+       this.groups[groupKey].addRow(row);
+};
+
+GroupRows.prototype.assignRowToExistingGroup = function (row, oldGroups) {
+       var groupID = this.groupIDLookups[0].func(row.getData()),
+           groupKey = "0_" + groupID;
+
+       if (this.groups[groupKey]) {
+               this.groups[groupKey].addRow(row);
+       }
+};
+
+GroupRows.prototype.assignRowToGroup = function (row, oldGroups) {
+       var groupID = this.groupIDLookups[0].func(row.getData()),
+           newGroupNeeded = !this.groups["0_" + groupID];
+
+       if (newGroupNeeded) {
+               this.createGroup(groupID, 0, oldGroups);
+       }
+
+       this.groups["0_" + groupID].addRow(row);
+
+       return !newGroupNeeded;
+};
+
+GroupRows.prototype.updateGroupRows = function (force) {
+       var self = this,
+           output = [],
+           oldRowCount;
+
+       self.groupList.forEach(function (group) {
+               output = output.concat(group.getHeadersAndRows());
+       });
+
+       //force update of table display
+       if (force) {
+
+               var displayIndex = self.table.rowManager.setDisplayRows(output, this.getDisplayIndex());
+
+               if (displayIndex !== true) {
+                       this.setDisplayIndex(displayIndex);
+               }
+
+               self.table.rowManager.refreshActiveData("group", true, true);
+       }
+
+       return output;
+};
+
+GroupRows.prototype.scrollHeaders = function (left) {
+       left = left + "px";
+
+       this.groupList.forEach(function (group) {
+               group.scrollHeader(left);
+       });
+};
+
+GroupRows.prototype.removeGroup = function (group) {
+       var groupKey = group.level + "_" + group.key,
+           index;
+
+       if (this.groups[groupKey]) {
+               delete this.groups[groupKey];
+
+               index = this.groupList.indexOf(group);
+
+               if (index > -1) {
+                       this.groupList.splice(index, 1);
+               }
+       }
+};
+
+Tabulator.prototype.registerModule("groupRows", GroupRows);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/group_rows.min.js b/backoffice/vendors/tabulator/js.old/modules/group_rows.min.js
new file mode 100644 (file)
index 0000000..af2ccd1
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+var GroupComponent=function(t){this._group=t,this.type="GroupComponent"};GroupComponent.prototype.getKey=function(){return this._group.key},GroupComponent.prototype.getField=function(){return this._group.field},GroupComponent.prototype.getElement=function(){return this._group.element},GroupComponent.prototype.getRows=function(){return this._group.getRows(!0)},GroupComponent.prototype.getSubGroups=function(){return this._group.getSubGroups(!0)},GroupComponent.prototype.getParentGroup=function(){return!!this._group.parent&&this._group.parent.getComponent()},GroupComponent.prototype.getVisibility=function(){return this._group.visible},GroupComponent.prototype.show=function(){this._group.show()},GroupComponent.prototype.hide=function(){this._group.hide()},GroupComponent.prototype.toggle=function(){this._group.toggleVisibility()},GroupComponent.prototype._getSelf=function(){return this._group},GroupComponent.prototype.getTable=function(){return this._group.groupManager.table};var Group=function(t,o,e,r,s,i,n){this.groupManager=t,this.parent=o,this.key=r,this.level=e,this.field=s,this.hasSubGroups=e<t.groupIDLookups.length-1,this.addRow=this.hasSubGroups?this._addRowToGroup:this._addRow,this.type="group",this.old=n,this.rows=[],this.groups=[],this.groupList=[],this.generator=i,this.elementContents=!1,this.height=0,this.outerHeight=0,this.initialized=!1,this.calcs={},this.initialized=!1,this.modules={},this.arrowElement=!1,this.visible=n?n.visible:void 0!==t.startOpen[e]?t.startOpen[e]:t.startOpen[0],this.createElements(),this.addBindings(),this.createValueGroups()};Group.prototype.wipe=function(){this.groupList.length?this.groupList.forEach(function(t){t.wipe()}):(this.element=!1,this.arrowElement=!1,this.elementContents=!1)},Group.prototype.createElements=function(){this.element=document.createElement("div"),this.element.classList.add("tabulator-row"),this.element.classList.add("tabulator-group"),this.element.classList.add("tabulator-group-level-"+this.level),this.element.setAttribute("role","rowgroup"),this.arrowElement=document.createElement("div"),this.arrowElement.classList.add("tabulator-arrow"),!1!==this.groupManager.table.options.movableRows&&this.groupManager.table.modExists("moveRow")&&this.groupManager.table.modules.moveRow.initializeGroupHeader(this)},Group.prototype.createValueGroups=function(){var t=this,o=this.level+1;this.groupManager.allowedValues&&this.groupManager.allowedValues[o]&&this.groupManager.allowedValues[o].forEach(function(e){t._createGroup(e,o)})},Group.prototype.addBindings=function(){var t,o,e,r,s=this;s.groupManager.table.options.groupClick&&s.element.addEventListener("click",function(t){s.groupManager.table.options.groupClick(t,s.getComponent())}),s.groupManager.table.options.groupDblClick&&s.element.addEventListener("dblclick",function(t){s.groupManager.table.options.groupDblClick(t,s.getComponent())}),s.groupManager.table.options.groupContext&&s.element.addEventListener("contextmenu",function(t){s.groupManager.table.options.groupContext(t,s.getComponent())}),s.groupManager.table.options.groupTap&&(e=!1,s.element.addEventListener("touchstart",function(t){e=!0},{passive:!0}),s.element.addEventListener("touchend",function(t){e&&s.groupManager.table.options.groupTap(t,s.getComponent()),e=!1})),s.groupManager.table.options.groupDblTap&&(t=null,s.element.addEventListener("touchend",function(o){t?(clearTimeout(t),t=null,s.groupManager.table.options.groupDblTap(o,s.getComponent())):t=setTimeout(function(){clearTimeout(t),t=null},300)})),s.groupManager.table.options.groupTapHold&&(o=null,s.element.addEventListener("touchstart",function(t){clearTimeout(o),o=setTimeout(function(){clearTimeout(o),o=null,e=!1,s.groupManager.table.options.groupTapHold(t,s.getComponent())},1e3)},{passive:!0}),s.element.addEventListener("touchend",function(t){clearTimeout(o),o=null})),s.groupManager.table.options.groupToggleElement&&(r="arrow"==s.groupManager.table.options.groupToggleElement?s.arrowElement:s.element,r.addEventListener("click",function(t){t.stopPropagation(),t.stopImmediatePropagation(),s.toggleVisibility()}))},Group.prototype._createGroup=function(t,o){var e=o+"_"+t,r=new Group(this.groupManager,this,o,t,this.groupManager.groupIDLookups[o].field,this.groupManager.headerGenerator[o]||this.groupManager.headerGenerator[0],!!this.old&&this.old.groups[e]);this.groups[e]=r,this.groupList.push(r)},Group.prototype._addRowToGroup=function(t){var o=this.level+1;if(this.hasSubGroups){var e=this.groupManager.groupIDLookups[o].func(t.getData()),r=o+"_"+e;this.groupManager.allowedValues&&this.groupManager.allowedValues[o]?this.groups[r]&&this.groups[r].addRow(t):(this.groups[r]||this._createGroup(e,o),this.groups[r].addRow(t))}},Group.prototype._addRow=function(t){this.rows.push(t),t.modules.group=this},Group.prototype.insertRow=function(t,o,e){var r=this.conformRowData({});t.updateData(r);var s=this.rows.indexOf(o);s>-1?e?this.rows.splice(s+1,0,t):this.rows.splice(s,0,t):e?this.rows.push(t):this.rows.unshift(t),t.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)},Group.prototype.scrollHeader=function(t){this.arrowElement.style.marginLeft=t,this.groupList.forEach(function(o){o.scrollHeader(t)})},Group.prototype.getRowIndex=function(t){},Group.prototype.conformRowData=function(t){return this.field?t[this.field]=this.key:console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function"),this.parent&&(t=this.parent.conformRowData(t)),t},Group.prototype.removeRow=function(t){var o=this.rows.indexOf(t),e=t.getElement();o>-1&&this.rows.splice(o,1),this.groupManager.table.options.groupValues||this.rows.length?(e.parentNode&&e.parentNode.removeChild(e),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))},Group.prototype.removeGroup=function(t){var o,e=t.level+"_"+t.key;this.groups[e]&&(delete this.groups[e],o=this.groupList.indexOf(t),o>-1&&this.groupList.splice(o,1),this.groupList.length||(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this)))},Group.prototype.getHeadersAndRows=function(t){var o=[];return o.push(this),this._visSet(),this.visible?this.groupList.length?this.groupList.forEach(function(e){o=o.concat(e.getHeadersAndRows(t))}):(!t&&"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),o.push(this.calcs.top)),o=o.concat(this.rows),!t&&"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),o.push(this.calcs.bottom))):this.groupList.length||"table"==this.groupManager.table.options.columnCalcs||this.groupManager.table.modExists("columnCalcs")&&(!t&&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),o.push(this.calcs.top))),!t&&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),o.push(this.calcs.bottom)))),o},Group.prototype.getData=function(t,o){var e=[];return this._visSet(),(!t||t&&this.visible)&&this.rows.forEach(function(t){e.push(t.getData(o||"data"))}),e},Group.prototype.getRowCount=function(){var t=0;return this.groupList.length?this.groupList.forEach(function(o){t+=o.getRowCount()}):t=this.rows.length,t},Group.prototype.toggleVisibility=function(){this.visible?this.hide():this.show()},Group.prototype.hide=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(t){t.getHeadersAndRows().forEach(function(t){t.detachElement()})}):this.rows.forEach(function(t){var o=t.getElement();o.parentNode.removeChild(o)}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()),this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!1)},Group.prototype.show=function(){var t=this;if(t.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 o=t.getElement();this.groupList.length?this.groupList.forEach(function(t){t.getHeadersAndRows().forEach(function(t){var e=t.getElement();o.parentNode.insertBefore(e,o.nextSibling),t.initialize(),o=e})}):t.rows.forEach(function(t){var e=t.getElement();o.parentNode.insertBefore(e,o.nextSibling),t.initialize(),o=e}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()}this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!0)},Group.prototype._visSet=function(){var t=[];"function"==typeof this.visible&&(this.rows.forEach(function(o){t.push(o.getData())}),this.visible=this.visible(this.key,this.getRowCount(),t,this.getComponent()))},Group.prototype.getRowGroup=function(t){var o=!1;return this.groupList.length?this.groupList.forEach(function(e){var r=e.getRowGroup(t);r&&(o=r)}):this.rows.find(function(o){return o===t})&&(o=this),o},Group.prototype.getSubGroups=function(t){var o=[];return this.groupList.forEach(function(e){o.push(t?e.getComponent():e)}),o},Group.prototype.getRows=function(t){var o=[];return this.rows.forEach(function(e){o.push(t?e.getComponent():e)}),o},Group.prototype.generateGroupHeaderContents=function(){var t=[];for(this.rows.forEach(function(o){t.push(o.getData())}),this.elementContents=this.generator(this.key,this.getRowCount(),t,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)},Group.prototype.getElement=function(){this.addBindingsd=!1,this._visSet(),this.visible?this.element.classList.add("tabulator-group-visible"):this.element.classList.remove("tabulator-group-visible");for(var t=0;t<this.element.childNodes.length;++t)this.element.childNodes[t].parentNode.removeChild(this.element.childNodes[t]);return this.generateGroupHeaderContents(),this.element},Group.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},Group.prototype.normalizeHeight=function(){this.setHeight(this.element.clientHeight)},Group.prototype.initialize=function(t){this.initialized&&!t||(this.normalizeHeight(),this.initialized=!0)},Group.prototype.reinitialize=function(){this.initialized=!1,this.height=0,Tabulator.prototype.helpers.elVisible(this.element)&&this.initialize(!0)},Group.prototype.setHeight=function(t){this.height!=t&&(this.height=t,this.outerHeight=this.element.offsetHeight)},Group.prototype.getHeight=function(){return this.outerHeight},Group.prototype.getGroup=function(){return this},Group.prototype.reinitializeHeight=function(){},Group.prototype.calcHeight=function(){},Group.prototype.setCellHeight=function(){},Group.prototype.clearCellHeight=function(){},Group.prototype.getComponent=function(){return new GroupComponent(this)};var GroupRows=function(t){this.table=t,this.groupIDLookups=!1,this.startOpen=[function(){return!1}],this.headerGenerator=[function(){return""}],this.groupList=[],this.allowedValues=!1,this.groups={},this.displayIndex=0};GroupRows.prototype.initialize=function(){var t=this,o=t.table.options.groupBy,e=t.table.options.groupStartOpen,r=t.table.options.groupHeader;if(this.allowedValues=t.table.options.groupValues,Array.isArray(o)&&Array.isArray(r)&&o.length>r.length&&console.warn("Error creating group headers, groupHeader array is shorter than groupBy array"),t.headerGenerator=[function(){return""}],this.startOpen=[function(){return!1}],t.table.modules.localize.bind("groups|item",function(o,e){t.headerGenerator[0]=function(t,r,s){return(void 0===t?"":t)+"<span>("+r+" "+(1===r?o:e.groups.items)+")</span>"}}),this.groupIDLookups=[],Array.isArray(o)||o)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){var s=this.table.columnManager.getRealColumns();s.forEach(function(o){o.definition.topCalc&&t.table.modules.columnCalcs.initializeTopRow(),o.definition.bottomCalc&&t.table.modules.columnCalcs.initializeBottomRow()})}Array.isArray(o)||(o=[o]),o.forEach(function(o,e){var r,s;"function"==typeof o?r=o:(s=t.table.columnManager.getColumnByField(o),r=s?function(t){return s.getFieldValue(t)}:function(t){return t[o]}),t.groupIDLookups.push({field:"function"!=typeof o&&o,func:r,values:!!t.allowedValues&&t.allowedValues[e]})}),e&&(Array.isArray(e)||(e=[e]),e.forEach(function(t){t="function"==typeof t?t:function(){return!0}}),t.startOpen=e),r&&(t.headerGenerator=Array.isArray(r)?r:[r]),this.initialized=!0},GroupRows.prototype.setDisplayIndex=function(t){this.displayIndex=t},GroupRows.prototype.getDisplayIndex=function(){return this.displayIndex},GroupRows.prototype.getRows=function(t){return this.groupIDLookups.length?(this.table.options.dataGrouping.call(this.table),this.generateGroups(t),this.table.options.dataGrouped&&this.table.options.dataGrouped.call(this.table,this.getGroups(!0)),this.updateGroupRows()):t.slice(0)},GroupRows.prototype.getGroups=function(t){var o=[];return this.groupList.forEach(function(e){o.push(t?e.getComponent():e)}),o},GroupRows.prototype.wipe=function(){this.groupList.forEach(function(t){t.wipe()})},GroupRows.prototype.pullGroupListData=function(t){var o=this,e=[];return t.forEach(function(t){var r={};r.level=0,r.rowCount=0,r.headerContent="";var s=[];t.hasSubGroups?(s=o.pullGroupListData(t.groupList),r.level=t.level,r.rowCount=s.length-t.groupList.length,r.headerContent=t.generator(t.key,r.rowCount,t.rows,t),e.push(r),e=e.concat(s)):(r.level=t.level,r.headerContent=t.generator(t.key,t.rows.length,t.rows,t),r.rowCount=t.getRows().length,e.push(r),t.getRows().forEach(function(t){e.push(t.getData("data"))}))}),e},GroupRows.prototype.getGroupedData=function(){return this.pullGroupListData(this.groupList)},GroupRows.prototype.getRowGroup=function(t){var o=!1;return this.groupList.forEach(function(e){var r=e.getRowGroup(t);r&&(o=r)}),o},GroupRows.prototype.countGroups=function(){return this.groupList.length},GroupRows.prototype.generateGroups=function(t){var o=this,e=o.groups;o.groups={},o.groupList=[],this.allowedValues&&this.allowedValues[0]?(this.allowedValues[0].forEach(function(t){o.createGroup(t,0,e)}),t.forEach(function(t){o.assignRowToExistingGroup(t,e)})):t.forEach(function(t){o.assignRowToGroup(t,e)})},GroupRows.prototype.createGroup=function(t,o,e){var r,s=o+"_"+t;e=e||[],r=new Group(this,!1,o,t,this.groupIDLookups[0].field,this.headerGenerator[0],e[s]),this.groups[s]=r,this.groupList.push(r)},GroupRows.prototype.assignRowToGroup=function(t,o){var e=this.groupIDLookups[0].func(t.getData()),r="0_"+e;this.groups[r]||this.createGroup(e,0,o),this.groups[r].addRow(t)},GroupRows.prototype.assignRowToExistingGroup=function(t,o){var e=this.groupIDLookups[0].func(t.getData()),r="0_"+e;this.groups[r]&&this.groups[r].addRow(t)},GroupRows.prototype.assignRowToGroup=function(t,o){var e=this.groupIDLookups[0].func(t.getData()),r=!this.groups["0_"+e];return r&&this.createGroup(e,0,o),this.groups["0_"+e].addRow(t),!r},GroupRows.prototype.updateGroupRows=function(t){var o=this,e=[];if(o.groupList.forEach(function(t){e=e.concat(t.getHeadersAndRows())}),t){var r=o.table.rowManager.setDisplayRows(e,this.getDisplayIndex());!0!==r&&this.setDisplayIndex(r),o.table.rowManager.refreshActiveData("group",!0,!0)}return e},GroupRows.prototype.scrollHeaders=function(t){t+="px",this.groupList.forEach(function(o){o.scrollHeader(t)})},GroupRows.prototype.removeGroup=function(t){var o,e=t.level+"_"+t.key;this.groups[e]&&(delete this.groups[e],(o=this.groupList.indexOf(t))>-1&&this.groupList.splice(o,1))},Tabulator.prototype.registerModule("groupRows",GroupRows);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/history.js b/backoffice/vendors/tabulator/js.old/modules/history.js
new file mode 100644 (file)
index 0000000..c00a321
--- /dev/null
@@ -0,0 +1,141 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+
+var History = function History(table) {
+       this.table = table; //hold Tabulator object
+
+       this.history = [];
+       this.index = -1;
+};
+
+History.prototype.clear = function () {
+       this.history = [];
+       this.index = -1;
+};
+
+History.prototype.action = function (type, component, data) {
+
+       this.history = this.history.slice(0, this.index + 1);
+
+       this.history.push({
+               type: type,
+               component: component,
+               data: data
+       });
+
+       this.index++;
+};
+
+History.prototype.getHistoryUndoSize = function () {
+       return this.index + 1;
+};
+
+History.prototype.getHistoryRedoSize = function () {
+       return this.history.length - (this.index + 1);
+};
+
+History.prototype.undo = function () {
+
+       if (this.index > -1) {
+               var action = this.history[this.index];
+
+               this.undoers[action.type].call(this, action);
+
+               this.index--;
+
+               this.table.options.historyUndo.call(this.table, action.type, action.component.getComponent(), action.data);
+
+               return true;
+       } else {
+               console.warn("History Undo Error - No more history to undo");
+               return false;
+       }
+};
+
+History.prototype.redo = function () {
+       if (this.history.length - 1 > this.index) {
+
+               this.index++;
+
+               var action = this.history[this.index];
+
+               this.redoers[action.type].call(this, action);
+
+               this.table.options.historyRedo.call(this.table, action.type, action.component.getComponent(), action.data);
+
+               return true;
+       } else {
+               console.warn("History Redo Error - No more history to redo");
+               return false;
+       }
+};
+
+History.prototype.undoers = {
+       cellEdit: function cellEdit(action) {
+               action.component.setValueProcessData(action.data.oldValue);
+       },
+
+       rowAdd: function rowAdd(action) {
+               action.component.deleteActual();
+       },
+
+       rowDelete: function rowDelete(action) {
+               var newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);
+
+               if (this.table.options.groupBy && this.table.modExists("groupRows")) {
+                       this.table.modules.groupRows.updateGroupRows(true);
+               }
+
+               this._rebindRow(action.component, newRow);
+       },
+
+       rowMove: function rowMove(action) {
+               this.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.pos], false);
+               this.table.rowManager.redraw();
+       }
+};
+
+History.prototype.redoers = {
+       cellEdit: function cellEdit(action) {
+               action.component.setValueProcessData(action.data.newValue);
+       },
+
+       rowAdd: function rowAdd(action) {
+               var newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);
+
+               if (this.table.options.groupBy && this.table.modExists("groupRows")) {
+                       this.table.modules.groupRows.updateGroupRows(true);
+               }
+
+               this._rebindRow(action.component, newRow);
+       },
+
+       rowDelete: function rowDelete(action) {
+               action.component.deleteActual();
+       },
+
+       rowMove: function rowMove(action) {
+               this.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.pos], false);
+               this.table.rowManager.redraw();
+       }
+};
+
+//rebind rows to new element after deletion
+History.prototype._rebindRow = function (oldRow, newRow) {
+       this.history.forEach(function (action) {
+               if (action.component instanceof Row) {
+                       if (action.component === oldRow) {
+                               action.component = newRow;
+                       }
+               } else if (action.component instanceof Cell) {
+                       if (action.component.row === oldRow) {
+                               var field = action.component.column.getField();
+
+                               if (field) {
+                                       action.component = newRow.getCell(field);
+                               }
+                       }
+               }
+       });
+};
+
+Tabulator.prototype.registerModule("history", History);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/history.min.js b/backoffice/vendors/tabulator/js.old/modules/history.min.js
new file mode 100644 (file)
index 0000000..feb4d98
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+var History=function(t){this.table=t,this.history=[],this.index=-1};History.prototype.clear=function(){this.history=[],this.index=-1},History.prototype.action=function(t,o,e){this.history=this.history.slice(0,this.index+1),this.history.push({type:t,component:o,data:e}),this.index++},History.prototype.getHistoryUndoSize=function(){return this.index+1},History.prototype.getHistoryRedoSize=function(){return this.history.length-(this.index+1)},History.prototype.undo=function(){if(this.index>-1){var t=this.history[this.index];return this.undoers[t.type].call(this,t),this.index--,this.table.options.historyUndo.call(this.table,t.type,t.component.getComponent(),t.data),!0}return console.warn("History Undo Error - No more history to undo"),!1},History.prototype.redo=function(){if(this.history.length-1>this.index){this.index++;var t=this.history[this.index];return this.redoers[t.type].call(this,t),this.table.options.historyRedo.call(this.table,t.type,t.component.getComponent(),t.data),!0}return console.warn("History Redo Error - No more history to redo"),!1},History.prototype.undoers={cellEdit:function(t){t.component.setValueProcessData(t.data.oldValue)},rowAdd:function(t){t.component.deleteActual()},rowDelete:function(t){var o=this.table.rowManager.addRowActual(t.data.data,t.data.pos,t.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(t.component,o)},rowMove:function(t){this.table.rowManager.moveRowActual(t.component,this.table.rowManager.rows[t.data.pos],!1),this.table.rowManager.redraw()}},History.prototype.redoers={cellEdit:function(t){t.component.setValueProcessData(t.data.newValue)},rowAdd:function(t){var o=this.table.rowManager.addRowActual(t.data.data,t.data.pos,t.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(t.component,o)},rowDelete:function(t){t.component.deleteActual()},rowMove:function(t){this.table.rowManager.moveRowActual(t.component,this.table.rowManager.rows[t.data.pos],!1),this.table.rowManager.redraw()}},History.prototype._rebindRow=function(t,o){this.history.forEach(function(e){if(e.component instanceof Row)e.component===t&&(e.component=o);else if(e.component instanceof Cell&&e.component.row===t){var i=e.component.column.getField();i&&(e.component=o.getCell(i))}})},Tabulator.prototype.registerModule("history",History);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/html_table_export.js b/backoffice/vendors/tabulator/js.old/modules/html_table_export.js
new file mode 100644 (file)
index 0000000..82702a3
--- /dev/null
@@ -0,0 +1,377 @@
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+
+var HtmlTableExport = function HtmlTableExport(table) {
+       this.table = table; //hold Tabulator object
+       this.config = {};
+       this.cloneTableStyle = true;
+       this.colVisProp = "";
+};
+
+HtmlTableExport.prototype.genereateTable = function (config, style, visible, colVisProp) {
+       this.cloneTableStyle = style;
+       this.config = config || {};
+       this.colVisProp = colVisProp;
+
+       var headers = this.generateHeaderElements();
+       var body = this.generateBodyElements(visible);
+
+       var table = document.createElement("table");
+       table.classList.add("tabulator-print-table");
+       table.appendChild(headers);
+       table.appendChild(body);
+
+       this.mapElementStyles(this.table.element, table, ["border-top", "border-left", "border-right", "border-bottom"]);
+
+       return table;
+};
+
+HtmlTableExport.prototype.generateColumnGroupHeaders = function () {
+       var _this = this;
+
+       var output = [];
+
+       var columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;
+
+       columns.forEach(function (column) {
+               var colData = _this.processColumnGroup(column);
+
+               if (colData) {
+                       output.push(colData);
+               }
+       });
+
+       return output;
+};
+
+HtmlTableExport.prototype.processColumnGroup = function (column) {
+       var _this2 = this;
+
+       var subGroups = column.columns,
+           maxDepth = 0;
+
+       var groupData = {
+               title: column.definition.title,
+               column: column,
+               depth: 1
+       };
+
+       if (subGroups.length) {
+               groupData.subGroups = [];
+               groupData.width = 0;
+
+               subGroups.forEach(function (subGroup) {
+                       var subGroupData = _this2.processColumnGroup(subGroup);
+
+                       if (subGroupData) {
+                               groupData.width += subGroupData.width;
+                               groupData.subGroups.push(subGroupData);
+
+                               if (subGroupData.depth > maxDepth) {
+                                       maxDepth = subGroupData.depth;
+                               }
+                       }
+               });
+
+               groupData.depth += maxDepth;
+
+               if (!groupData.width) {
+                       return false;
+               }
+       } else {
+               if (this.columnVisCheck(column)) {
+                       groupData.width = 1;
+               } else {
+                       return false;
+               }
+       }
+
+       return groupData;
+};
+
+HtmlTableExport.prototype.groupHeadersToRows = function (columns) {
+
+       var headers = [],
+           headerDepth = 0;
+
+       function parseColumnGroup(column, level) {
+
+               var depth = headerDepth - level;
+
+               if (typeof headers[level] === "undefined") {
+                       headers[level] = [];
+               }
+
+               column.height = column.subGroups ? 1 : depth - column.depth + 1;
+
+               headers[level].push(column);
+
+               if (column.subGroups) {
+                       column.subGroups.forEach(function (subGroup) {
+                               parseColumnGroup(subGroup, level + 1);
+                       });
+               }
+       }
+
+       //calculate maximum header debth
+       columns.forEach(function (column) {
+               if (column.depth > headerDepth) {
+                       headerDepth = column.depth;
+               }
+       });
+
+       columns.forEach(function (column) {
+               parseColumnGroup(column, 0);
+       });
+
+       return headers;
+};
+
+HtmlTableExport.prototype.generateHeaderElements = function () {
+       var _this3 = this;
+
+       var headerEl = document.createElement("thead");
+
+       var rows = this.groupHeadersToRows(this.generateColumnGroupHeaders());
+
+       rows.forEach(function (row) {
+               var rowEl = document.createElement("tr");
+
+               _this3.mapElementStyles(_this3.table.columnManager.getHeadersElement(), headerEl, ["border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
+
+               row.forEach(function (column) {
+                       var cellEl = document.createElement("th");
+
+                       cellEl.colSpan = column.width;
+                       cellEl.rowSpan = column.height;
+
+                       cellEl.innerHTML = column.column.definition.title;
+
+                       if (_this3.cloneTableStyle) {
+                               cellEl.style.boxSizing = "border-box";
+                       }
+
+                       _this3.mapElementStyles(column.column.getElement(), cellEl, ["text-align", "border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
+                       _this3.mapElementStyles(column.column.contentElement, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom"]);
+
+                       if (column.column.visible) {
+                               _this3.mapElementStyles(column.column.getElement(), cellEl, ["width"]);
+                       } else {
+                               if (column.column.definition.width) {
+                                       cellEl.style.width = column.column.definition.width + "px";
+                               }
+                       }
+
+                       if (column.column.parent) {
+                               _this3.mapElementStyles(column.column.parent.groupElement, cellEl, ["border-top"]);
+                       }
+
+                       rowEl.appendChild(cellEl);
+               });
+
+               headerEl.appendChild(rowEl);
+       });
+
+       return headerEl;
+};
+
+HtmlTableExport.prototype.generateBodyElements = function (visible) {
+       var _this4 = this;
+
+       var oddRow, evenRow, calcRow, firstRow, firstCell, firstGroup, lastCell, styleCells, styleRow;
+
+       //lookup row styles
+       if (this.cloneTableStyle && window.getComputedStyle) {
+               oddRow = this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)");
+               evenRow = this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)");
+               calcRow = this.table.element.querySelector(".tabulator-row.tabulator-calcs");
+               firstRow = this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)");
+               firstGroup = this.table.element.getElementsByClassName("tabulator-group")[0];
+
+               if (firstRow) {
+                       styleCells = firstRow.getElementsByClassName("tabulator-cell");
+                       firstCell = styleCells[0];
+                       lastCell = styleCells[styleCells.length - 1];
+               }
+       }
+
+       var bodyEl = document.createElement("tbody");
+
+       var rows = visible ? this.table.rowManager.getVisibleRows(true) : this.table.rowManager.getDisplayRows();
+       var columns = [];
+
+       if (this.config.columnCalcs !== false && this.table.modExists("columnCalcs")) {
+               if (this.table.modules.columnCalcs.topInitialized) {
+                       rows.unshift(this.table.modules.columnCalcs.topRow);
+               }
+
+               if (this.table.modules.columnCalcs.botInitialized) {
+                       rows.push(this.table.modules.columnCalcs.botRow);
+               }
+       }
+
+       this.table.columnManager.columnsByIndex.forEach(function (column) {
+               if (_this4.columnVisCheck(column)) {
+                       columns.push(column);
+               }
+       });
+
+       rows = rows.filter(function (row) {
+               switch (row.type) {
+                       case "group":
+                               return _this4.config.rowGroups !== false;
+                               break;
+
+                       case "calc":
+                               return _this4.config.columnCalcs !== false;
+                               break;
+               }
+
+               return true;
+       });
+
+       if (rows.length > 1000) {
+               console.warn("It may take a long time to render an HTML table with more than 1000 rows");
+       }
+
+       rows.forEach(function (row, i) {
+               var rowData = row.getData();
+
+               var rowEl = document.createElement("tr");
+               rowEl.classList.add("tabulator-print-table-row");
+
+               switch (row.type) {
+                       case "group":
+                               var cellEl = document.createElement("td");
+                               cellEl.colSpan = columns.length;
+                               cellEl.innerHTML = row.key;
+
+                               rowEl.classList.add("tabulator-print-table-group");
+
+                               _this4.mapElementStyles(firstGroup, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]);
+                               _this4.mapElementStyles(firstGroup, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom"]);
+                               rowEl.appendChild(cellEl);
+                               break;
+
+                       case "calc":
+                               rowEl.classList.add("tabulator-print-table-calcs");
+
+                       case "row":
+                               columns.forEach(function (column) {
+                                       var cellEl = document.createElement("td");
+
+                                       var value = column.getFieldValue(rowData);
+
+                                       var cellWrapper = {
+                                               getValue: function getValue() {
+                                                       return value;
+                                               },
+                                               getField: function getField() {
+                                                       return column.defi;
+                                               },
+                                               getElement: function getElement() {
+                                                       return cellEl;
+                                               },
+                                               getColumn: function getColumn() {
+                                                       return column.getComponent();
+                                               },
+                                               getData: function getData() {
+                                                       return rowData;
+                                               },
+                                               getRow: function getRow() {
+                                                       return row.getComponent();
+                                               },
+                                               getComponent: function getComponent() {
+                                                       return cellWrapper;
+                                               },
+                                               column: column
+                                       };
+
+                                       if (_this4.table.modExists("format")) {
+                                               value = _this4.table.modules.format.formatValue(cellWrapper);
+                                       } else {
+                                               switch (typeof value === "undefined" ? "undefined" : _typeof(value)) {
+                                                       case "object":
+                                                               value = JSON.stringify(value);
+                                                               break;
+
+                                                       case "undefined":
+                                                       case "null":
+                                                               value = "";
+                                                               break;
+
+                                                       default:
+                                                               value = value;
+                                               }
+                                       }
+
+                                       if (value instanceof Node) {
+                                               cellEl.appendChild(value);
+                                       } else {
+                                               cellEl.innerHTML = value;
+                                       }
+
+                                       if (firstCell) {
+                                               _this4.mapElementStyles(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", "text-align"]);
+                                       }
+
+                                       rowEl.appendChild(cellEl);
+                               });
+
+                               styleRow = row.type == "calc" ? calcRow : i % 2 && evenRow ? evenRow : oddRow;
+
+                               _this4.mapElementStyles(styleRow, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]);
+                               break;
+               }
+
+               bodyEl.appendChild(rowEl);
+       });
+
+       return bodyEl;
+};
+
+HtmlTableExport.prototype.columnVisCheck = function (column) {
+       return column.definition[this.colVisProp] !== false && (column.visible || !column.visible && column.definition[this.colVisProp]);
+};
+
+HtmlTableExport.prototype.getHtml = function (visible, style, config) {
+       var holder = document.createElement("div");
+
+       holder.appendChild(this.genereateTable(config || this.table.options.htmlOutputConfig, style, visible, "htmlOutput"));
+
+       return holder.innerHTML;
+};
+
+HtmlTableExport.prototype.mapElementStyles = function (from, to, props) {
+       if (this.cloneTableStyle && from && to) {
+
+               var lookup = {
+                       "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 fromStyle = window.getComputedStyle(from);
+
+                       props.forEach(function (prop) {
+                               to.style[lookup[prop]] = fromStyle.getPropertyValue(prop);
+                       });
+               }
+       }
+};
+
+Tabulator.prototype.registerModule("htmlTableExport", HtmlTableExport);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/html_table_export.min.js b/backoffice/vendors/tabulator/js.old/modules/html_table_export.min.js
new file mode 100644 (file)
index 0000000..90b25c7
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},HtmlTableExport=function(t){this.table=t,this.config={},this.cloneTableStyle=!0,this.colVisProp=""};HtmlTableExport.prototype.genereateTable=function(t,e,o,n){this.cloneTableStyle=e,this.config=t||{},this.colVisProp=n;var r=this.generateHeaderElements(),l=this.generateBodyElements(o),a=document.createElement("table");return a.classList.add("tabulator-print-table"),a.appendChild(r),a.appendChild(l),this.mapElementStyles(this.table.element,a,["border-top","border-left","border-right","border-bottom"]),a},HtmlTableExport.prototype.generateColumnGroupHeaders=function(){var t=this,e=[];return(!1!==this.config.columnGroups?this.table.columnManager.columns:this.table.columnManager.columnsByIndex).forEach(function(o){var n=t.processColumnGroup(o);n&&e.push(n)}),e},HtmlTableExport.prototype.processColumnGroup=function(t){var e=this,o=t.columns,n=0,r={title:t.definition.title,column:t,depth:1};if(o.length){if(r.subGroups=[],r.width=0,o.forEach(function(t){var o=e.processColumnGroup(t);o&&(r.width+=o.width,r.subGroups.push(o),o.depth>n&&(n=o.depth))}),r.depth+=n,!r.width)return!1}else{if(!this.columnVisCheck(t))return!1;r.width=1}return r},HtmlTableExport.prototype.groupHeadersToRows=function(t){function e(t,r){var l=n-r;void 0===o[r]&&(o[r]=[]),t.height=t.subGroups?1:l-t.depth+1,o[r].push(t),t.subGroups&&t.subGroups.forEach(function(t){e(t,r+1)})}var o=[],n=0;return t.forEach(function(t){t.depth>n&&(n=t.depth)}),t.forEach(function(t){e(t,0)}),o},HtmlTableExport.prototype.generateHeaderElements=function(){var t=this,e=document.createElement("thead");return this.groupHeadersToRows(this.generateColumnGroupHeaders()).forEach(function(o){var n=document.createElement("tr");t.mapElementStyles(t.table.columnManager.getHeadersElement(),e,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),o.forEach(function(e){var o=document.createElement("th");o.colSpan=e.width,o.rowSpan=e.height,o.innerHTML=e.column.definition.title,t.cloneTableStyle&&(o.style.boxSizing="border-box"),t.mapElementStyles(e.column.getElement(),o,["text-align","border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),t.mapElementStyles(e.column.contentElement,o,["padding-top","padding-left","padding-right","padding-bottom"]),e.column.visible?t.mapElementStyles(e.column.getElement(),o,["width"]):e.column.definition.width&&(o.style.width=e.column.definition.width+"px"),e.column.parent&&t.mapElementStyles(e.column.parent.groupElement,o,["border-top"]),n.appendChild(o)}),e.appendChild(n)}),e},HtmlTableExport.prototype.generateBodyElements=function(t){var e,o,n,r,l,a,i,d,u=this;this.cloneTableStyle&&window.getComputedStyle&&(e=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),o=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),n=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),r=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),a=this.table.element.getElementsByClassName("tabulator-group")[0],r&&(i=r.getElementsByClassName("tabulator-cell"),l=i[0],i[i.length-1]));var c=document.createElement("tbody"),s=t?this.table.rowManager.getVisibleRows(!0):this.table.rowManager.getDisplayRows(),p=[];return!1!==this.config.columnCalcs&&this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&s.unshift(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&s.push(this.table.modules.columnCalcs.botRow)),this.table.columnManager.columnsByIndex.forEach(function(t){u.columnVisCheck(t)&&p.push(t)}),s=s.filter(function(t){switch(t.type){case"group":return!1!==u.config.rowGroups;case"calc":return!1!==u.config.columnCalcs}return!0}),s.length>1e3&&console.warn("It may take a long time to render an HTML table with more than 1000 rows"),s.forEach(function(t,r){var i=t.getData(),s=document.createElement("tr");switch(s.classList.add("tabulator-print-table-row"),t.type){case"group":var m=document.createElement("td");m.colSpan=p.length,m.innerHTML=t.key,s.classList.add("tabulator-print-table-group"),u.mapElementStyles(a,s,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),u.mapElementStyles(a,m,["padding-top","padding-left","padding-right","padding-bottom"]),s.appendChild(m);break;case"calc":s.classList.add("tabulator-print-table-calcs");case"row":p.forEach(function(e){var o=document.createElement("td"),n=e.getFieldValue(i),r={getValue:function(){return n},getField:function(){return e.defi},getElement:function(){return o},getColumn:function(){return e.getComponent()},getData:function(){return i},getRow:function(){return t.getComponent()},getComponent:function(){return r},column:e};if(u.table.modExists("format"))n=u.table.modules.format.formatValue(r);else switch(void 0===n?"undefined":_typeof(n)){case"object":n=JSON.stringify(n);break;case"undefined":case"null":n="";break;default:n=n}n instanceof Node?o.appendChild(n):o.innerHTML=n,l&&u.mapElementStyles(l,o,["padding-top","padding-left","padding-right","padding-bottom","border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","text-align"]),s.appendChild(o)}),d="calc"==t.type?n:r%2&&o?o:e,u.mapElementStyles(d,s,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"])}c.appendChild(s)}),c},HtmlTableExport.prototype.columnVisCheck=function(t){return!1!==t.definition[this.colVisProp]&&(t.visible||!t.visible&&t.definition[this.colVisProp])},HtmlTableExport.prototype.getHtml=function(t,e,o){var n=document.createElement("div");return n.appendChild(this.genereateTable(o||this.table.options.htmlOutputConfig,e,t,"htmlOutput")),n.innerHTML},HtmlTableExport.prototype.mapElementStyles=function(t,e,o){if(this.cloneTableStyle&&t&&e){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 r=window.getComputedStyle(t);o.forEach(function(t){e.style[n[t]]=r.getPropertyValue(t)})}}},Tabulator.prototype.registerModule("htmlTableExport",HtmlTableExport);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/html_table_import.js b/backoffice/vendors/tabulator/js.old/modules/html_table_import.js
new file mode 100644 (file)
index 0000000..08d6ed9
--- /dev/null
@@ -0,0 +1,203 @@
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+
+var HtmlTableImport = function HtmlTableImport(table) {
+       this.table = table; //hold Tabulator object
+       this.fieldIndex = [];
+       this.hasIndex = false;
+};
+
+HtmlTableImport.prototype.parseTable = function () {
+       var self = this,
+           element = self.table.element,
+           options = self.table.options,
+           columns = options.columns,
+           headers = element.getElementsByTagName("th"),
+           rows = element.getElementsByTagName("tbody")[0],
+           data = [],
+           newTable;
+
+       self.hasIndex = false;
+
+       self.table.options.htmlImporting.call(this.table);
+
+       rows = rows ? rows.getElementsByTagName("tr") : [];
+
+       //check for tablator inline options
+       self._extractOptions(element, options);
+
+       if (headers.length) {
+               self._extractHeaders(headers, rows);
+       } else {
+               self._generateBlankHeaders(headers, rows);
+       }
+
+       //iterate through table rows and build data set
+       for (var index = 0; index < rows.length; index++) {
+               var row = rows[index],
+                   cells = row.getElementsByTagName("td"),
+                   item = {};
+
+               //create index if the dont exist in table
+               if (!self.hasIndex) {
+                       item[options.index] = index;
+               }
+
+               for (var i = 0; i < cells.length; i++) {
+                       var cell = cells[i];
+                       if (typeof this.fieldIndex[i] !== "undefined") {
+                               item[this.fieldIndex[i]] = cell.innerHTML;
+                       }
+               }
+
+               //add row data to item
+               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;
+
+       self.table.options.htmlImported.call(this.table);
+
+       // // newElement.tabulator(options);
+
+       this.table.element = newElement;
+};
+
+//extract tabulator attribute options
+HtmlTableImport.prototype._extractOptions = function (element, options, defaultOptions) {
+       var attributes = element.attributes;
+       var optionsArr = defaultOptions ? Object.assign([], defaultOptions) : Object.keys(options);
+       var optionsList = {};
+
+       optionsArr.forEach(function (item) {
+               optionsList[item.toLowerCase()] = item;
+       });
+
+       for (var index in attributes) {
+               var attrib = attributes[index];
+               var name;
+
+               if (attrib && (typeof attrib === "undefined" ? "undefined" : _typeof(attrib)) == "object" && attrib.name && attrib.name.indexOf("tabulator-") === 0) {
+                       name = attrib.name.replace("tabulator-", "");
+
+                       if (typeof optionsList[name] !== "undefined") {
+                               options[optionsList[name]] = this._attribValue(attrib.value);
+                       }
+               }
+       }
+};
+
+//get value of attribute
+HtmlTableImport.prototype._attribValue = function (value) {
+       if (value === "true") {
+               return true;
+       }
+
+       if (value === "false") {
+               return false;
+       }
+
+       return value;
+};
+
+//find column if it has already been defined
+HtmlTableImport.prototype._findCol = function (title) {
+       var match = this.table.options.columns.find(function (column) {
+               return column.title === title;
+       });
+
+       return match || false;
+};
+
+//extract column from headers
+HtmlTableImport.prototype._extractHeaders = function (headers, rows) {
+       for (var index = 0; index < headers.length; index++) {
+               var header = headers[index],
+                   exists = false,
+                   col = this._findCol(header.textContent),
+                   width,
+                   attributes;
+
+               if (col) {
+                       exists = true;
+               } else {
+                       col = { title: header.textContent.trim() };
+               }
+
+               if (!col.field) {
+                       col.field = header.textContent.trim().toLowerCase().replace(" ", "_");
+               }
+
+               width = header.getAttribute("width");
+
+               if (width && !col.width) {
+                       col.width = width;
+               }
+
+               //check for tablator inline options
+               attributes = header.attributes;
+
+               // //check for tablator inline options
+               this._extractOptions(header, col, Column.prototype.defaultOptionList);
+
+               for (var i in attributes) {
+                       var attrib = attributes[i],
+                           name;
+
+                       if (attrib && (typeof attrib === "undefined" ? "undefined" : _typeof(attrib)) == "object" && attrib.name && attrib.name.indexOf("tabulator-") === 0) {
+
+                               name = attrib.name.replace("tabulator-", "");
+
+                               col[name] = this._attribValue(attrib.value);
+                       }
+               }
+
+               this.fieldIndex[index] = col.field;
+
+               if (col.field == this.table.options.index) {
+                       this.hasIndex = true;
+               }
+
+               if (!exists) {
+                       this.table.options.columns.push(col);
+               }
+       }
+};
+
+//generate blank headers
+HtmlTableImport.prototype._generateBlankHeaders = function (headers, rows) {
+       for (var index = 0; index < headers.length; index++) {
+               var header = headers[index],
+                   col = { title: "", field: "col" + index };
+
+               this.fieldIndex[index] = col.field;
+
+               var width = header.getAttribute("width");
+
+               if (width) {
+                       col.width = width;
+               }
+
+               this.table.options.columns.push(col);
+       }
+};
+
+Tabulator.prototype.registerModule("htmlTableImport", HtmlTableImport);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/html_table_import.min.js b/backoffice/vendors/tabulator/js.old/modules/html_table_import.min.js
new file mode 100644 (file)
index 0000000..adeaa25
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},HtmlTableImport=function(t){this.table=t,this.fieldIndex=[],this.hasIndex=!1};HtmlTableImport.prototype.parseTable=function(){var t=this,e=t.table.element,o=t.table.options,a=(o.columns,e.getElementsByTagName("th")),n=e.getElementsByTagName("tbody")[0],r=[];t.hasIndex=!1,t.table.options.htmlImporting.call(this.table),n=n?n.getElementsByTagName("tr"):[],t._extractOptions(e,o),a.length?t._extractHeaders(a,n):t._generateBlankHeaders(a,n);for(var l=0;l<n.length;l++){var i=n[l],s=i.getElementsByTagName("td"),p={};t.hasIndex||(p[o.index]=l);for(var m=0;m<s.length;m++){var d=s[m];void 0!==this.fieldIndex[m]&&(p[this.fieldIndex[m]]=d.innerHTML)}r.push(p)}var f=document.createElement("div"),u=e.attributes;for(var m in u)"object"==_typeof(u[m])&&f.setAttribute(u[m].name,u[m].value);e.parentNode.replaceChild(f,e),o.data=r,t.table.options.htmlImported.call(this.table),this.table.element=f},HtmlTableImport.prototype._extractOptions=function(t,e,o){var a=t.attributes,n=o?Object.assign([],o):Object.keys(e),r={};n.forEach(function(t){r[t.toLowerCase()]=t});for(var l in a){var i,s=a[l];s&&"object"==(void 0===s?"undefined":_typeof(s))&&s.name&&0===s.name.indexOf("tabulator-")&&(i=s.name.replace("tabulator-",""),void 0!==r[i]&&(e[r[i]]=this._attribValue(s.value)))}},HtmlTableImport.prototype._attribValue=function(t){return"true"===t||"false"!==t&&t},HtmlTableImport.prototype._findCol=function(t){return this.table.options.columns.find(function(e){return e.title===t})||!1},HtmlTableImport.prototype._extractHeaders=function(t,e){for(var o=0;o<t.length;o++){var a,n,r=t[o],l=!1,i=this._findCol(r.textContent);i?l=!0:i={title:r.textContent.trim()},i.field||(i.field=r.textContent.trim().toLowerCase().replace(" ","_")),a=r.getAttribute("width"),a&&!i.width&&(i.width=a),n=r.attributes,this._extractOptions(r,i,Column.prototype.defaultOptionList);for(var s in n){var p,m=n[s];m&&"object"==(void 0===m?"undefined":_typeof(m))&&m.name&&0===m.name.indexOf("tabulator-")&&(p=m.name.replace("tabulator-",""),i[p]=this._attribValue(m.value))}this.fieldIndex[o]=i.field,i.field==this.table.options.index&&(this.hasIndex=!0),l||this.table.options.columns.push(i)}},HtmlTableImport.prototype._generateBlankHeaders=function(t,e){for(var o=0;o<t.length;o++){var a=t[o],n={title:"",field:"col"+o};this.fieldIndex[o]=n.field;var r=a.getAttribute("width");r&&(n.width=r),this.table.options.columns.push(n)}},Tabulator.prototype.registerModule("htmlTableImport",HtmlTableImport);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/keybindings.js b/backoffice/vendors/tabulator/js.old/modules/keybindings.js
new file mode 100644 (file)
index 0000000..60ab402
--- /dev/null
@@ -0,0 +1,382 @@
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+
+var Keybindings = function Keybindings(table) {
+       this.table = table; //hold Tabulator object
+       this.watchKeys = null;
+       this.pressedKeys = null;
+       this.keyupBinding = false;
+       this.keydownBinding = false;
+};
+
+Keybindings.prototype.initialize = function () {
+       var bindings = this.table.options.keybindings,
+           mergedBindings = {};
+
+       this.watchKeys = {};
+       this.pressedKeys = [];
+
+       if (bindings !== false) {
+
+               for (var key in this.bindings) {
+                       mergedBindings[key] = this.bindings[key];
+               }
+
+               if (Object.keys(bindings).length) {
+
+                       for (var _key in bindings) {
+                               mergedBindings[_key] = bindings[_key];
+                       }
+               }
+
+               this.mapBindings(mergedBindings);
+               this.bindEvents();
+       }
+};
+
+Keybindings.prototype.mapBindings = function (bindings) {
+       var _this = this;
+
+       var self = this;
+
+       var _loop = function _loop(key) {
+
+               if (_this.actions[key]) {
+
+                       if (bindings[key]) {
+
+                               if (_typeof(bindings[key]) !== "object") {
+                                       bindings[key] = [bindings[key]];
+                               }
+
+                               bindings[key].forEach(function (binding) {
+                                       self.mapBinding(key, binding);
+                               });
+                       }
+               } else {
+                       console.warn("Key Binding Error - no such action:", key);
+               }
+       };
+
+       for (var key in bindings) {
+               _loop(key);
+       }
+};
+
+Keybindings.prototype.mapBinding = function (action, symbolsList) {
+       var self = this;
+
+       var binding = {
+               action: this.actions[action],
+               keys: [],
+               ctrl: false,
+               shift: false
+       };
+
+       var symbols = symbolsList.toString().toLowerCase().split(" ").join("").split("+");
+
+       symbols.forEach(function (symbol) {
+               switch (symbol) {
+                       case "ctrl":
+                               binding.ctrl = true;
+                               break;
+
+                       case "shift":
+                               binding.shift = true;
+                               break;
+
+                       default:
+                               symbol = parseInt(symbol);
+                               binding.keys.push(symbol);
+
+                               if (!self.watchKeys[symbol]) {
+                                       self.watchKeys[symbol] = [];
+                               }
+
+                               self.watchKeys[symbol].push(binding);
+               }
+       });
+};
+
+Keybindings.prototype.bindEvents = function () {
+       var self = this;
+
+       this.keyupBinding = function (e) {
+               var code = e.keyCode;
+               var bindings = self.watchKeys[code];
+
+               if (bindings) {
+
+                       self.pressedKeys.push(code);
+
+                       bindings.forEach(function (binding) {
+                               self.checkBinding(e, binding);
+                       });
+               }
+       };
+
+       this.keydownBinding = function (e) {
+               var code = e.keyCode;
+               var bindings = self.watchKeys[code];
+
+               if (bindings) {
+
+                       var index = self.pressedKeys.indexOf(code);
+
+                       if (index > -1) {
+                               self.pressedKeys.splice(index, 1);
+                       }
+               }
+       };
+
+       this.table.element.addEventListener("keydown", this.keyupBinding);
+
+       this.table.element.addEventListener("keyup", this.keydownBinding);
+};
+
+Keybindings.prototype.clearBindings = function () {
+       if (this.keyupBinding) {
+               this.table.element.removeEventListener("keydown", this.keyupBinding);
+       }
+
+       if (this.keydownBinding) {
+               this.table.element.removeEventListener("keyup", this.keydownBinding);
+       }
+};
+
+Keybindings.prototype.checkBinding = function (e, binding) {
+       var self = this,
+           match = true;
+
+       if (e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift) {
+               binding.keys.forEach(function (key) {
+                       var index = self.pressedKeys.indexOf(key);
+
+                       if (index == -1) {
+                               match = false;
+                       }
+               });
+
+               if (match) {
+                       binding.action.call(self, e);
+               }
+
+               return true;
+       }
+
+       return false;
+};
+
+//default bindings
+Keybindings.prototype.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"
+};
+
+//default actions
+Keybindings.prototype.actions = {
+       keyBlock: function keyBlock(e) {
+               e.stopPropagation();
+               e.preventDefault();
+       },
+       scrollPageUp: function scrollPageUp(e) {
+               var rowManager = this.table.rowManager,
+                   newPos = rowManager.scrollTop - rowManager.height,
+                   scrollMax = rowManager.element.scrollHeight;
+
+               e.preventDefault();
+
+               if (rowManager.displayRowsCount) {
+                       if (newPos >= 0) {
+                               rowManager.element.scrollTop = newPos;
+                       } else {
+                               rowManager.scrollToRow(rowManager.getDisplayRows()[0]);
+                       }
+               }
+
+               this.table.element.focus();
+       },
+       scrollPageDown: function scrollPageDown(e) {
+               var rowManager = this.table.rowManager,
+                   newPos = rowManager.scrollTop + rowManager.height,
+                   scrollMax = rowManager.element.scrollHeight;
+
+               e.preventDefault();
+
+               if (rowManager.displayRowsCount) {
+                       if (newPos <= scrollMax) {
+                               rowManager.element.scrollTop = newPos;
+                       } else {
+                               rowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);
+                       }
+               }
+
+               this.table.element.focus();
+       },
+       scrollToStart: function scrollToStart(e) {
+               var rowManager = this.table.rowManager;
+
+               e.preventDefault();
+
+               if (rowManager.displayRowsCount) {
+                       rowManager.scrollToRow(rowManager.getDisplayRows()[0]);
+               }
+
+               this.table.element.focus();
+       },
+       scrollToEnd: function scrollToEnd(e) {
+               var rowManager = this.table.rowManager;
+
+               e.preventDefault();
+
+               if (rowManager.displayRowsCount) {
+                       rowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);
+               }
+
+               this.table.element.focus();
+       },
+       navPrev: function navPrev(e) {
+               var cell = false;
+
+               if (this.table.modExists("edit")) {
+                       cell = this.table.modules.edit.currentCell;
+
+                       if (cell) {
+                               e.preventDefault();
+                               cell.nav().prev();
+                       }
+               }
+       },
+
+       navNext: function navNext(e) {
+               var cell = false;
+               var newRow = this.table.options.tabEndNewRow;
+               var nav;
+
+               if (this.table.modExists("edit")) {
+                       cell = this.table.modules.edit.currentCell;
+
+                       if (cell) {
+                               e.preventDefault();
+
+                               nav = cell.nav();
+
+                               if (!nav.next()) {
+                                       if (newRow) {
+                                               if (newRow === true) {
+                                                       newRow = this.table.addRow({});
+                                               } else {
+                                                       if (typeof newRow == "function") {
+                                                               newRow = this.table.addRow(newRow(cell.row.getComponent()));
+                                                       } else {
+                                                               newRow = this.table.addRow(newRow);
+                                                       }
+                                               }
+
+                                               newRow.then(function () {
+                                                       nav.next();
+                                               });
+                                       }
+                               }
+                       }
+               }
+       },
+
+       navLeft: function navLeft(e) {
+               var cell = false;
+
+               if (this.table.modExists("edit")) {
+                       cell = this.table.modules.edit.currentCell;
+
+                       if (cell) {
+                               e.preventDefault();
+                               cell.nav().left();
+                       }
+               }
+       },
+
+       navRight: function navRight(e) {
+               var cell = false;
+
+               if (this.table.modExists("edit")) {
+                       cell = this.table.modules.edit.currentCell;
+
+                       if (cell) {
+                               e.preventDefault();
+                               cell.nav().right();
+                       }
+               }
+       },
+
+       navUp: function navUp(e) {
+               var cell = false;
+
+               if (this.table.modExists("edit")) {
+                       cell = this.table.modules.edit.currentCell;
+
+                       if (cell) {
+                               e.preventDefault();
+                               cell.nav().up();
+                       }
+               }
+       },
+
+       navDown: function navDown(e) {
+               var cell = false;
+
+               if (this.table.modExists("edit")) {
+                       cell = this.table.modules.edit.currentCell;
+
+                       if (cell) {
+                               e.preventDefault();
+                               cell.nav().down();
+                       }
+               }
+       },
+
+       undo: function undo(e) {
+               var cell = false;
+               if (this.table.options.history && this.table.modExists("history") && this.table.modExists("edit")) {
+
+                       cell = this.table.modules.edit.currentCell;
+
+                       if (!cell) {
+                               e.preventDefault();
+                               this.table.modules.history.undo();
+                       }
+               }
+       },
+
+       redo: function redo(e) {
+               var cell = false;
+               if (this.table.options.history && this.table.modExists("history") && this.table.modExists("edit")) {
+
+                       cell = this.table.modules.edit.currentCell;
+
+                       if (!cell) {
+                               e.preventDefault();
+                               this.table.modules.history.redo();
+                       }
+               }
+       },
+
+       copyToClipboard: function copyToClipboard(e) {
+               if (!this.table.modules.edit.currentCell) {
+                       if (this.table.modExists("clipboard", true)) {
+                               this.table.modules.clipboard.copy(!this.table.options.selectable || this.table.options.selectable == "highlight" ? "active" : "selected", null, null, null, true);
+                       }
+               }
+       }
+};
+
+Tabulator.prototype.registerModule("keybindings", Keybindings);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/keybindings.min.js b/backoffice/vendors/tabulator/js.old/modules/keybindings.min.js
new file mode 100644 (file)
index 0000000..4f681fb
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Keybindings=function(t){this.table=t,this.watchKeys=null,this.pressedKeys=null,this.keyupBinding=!1,this.keydownBinding=!1};Keybindings.prototype.initialize=function(){var t=this.table.options.keybindings,e={};if(this.watchKeys={},this.pressedKeys=[],!1!==t){for(var i in this.bindings)e[i]=this.bindings[i];if(Object.keys(t).length)for(var n in t)e[n]=t[n];this.mapBindings(e),this.bindEvents()}},Keybindings.prototype.mapBindings=function(t){var e=this,i=this;for(var n in t)!function(n){e.actions[n]?t[n]&&("object"!==_typeof(t[n])&&(t[n]=[t[n]]),t[n].forEach(function(t){i.mapBinding(n,t)})):console.warn("Key Binding Error - no such action:",n)}(n)},Keybindings.prototype.mapBinding=function(t,e){var i=this,n={action:this.actions[t],keys:[],ctrl:!1,shift:!1};e.toString().toLowerCase().split(" ").join("").split("+").forEach(function(t){switch(t){case"ctrl":n.ctrl=!0;break;case"shift":n.shift=!0;break;default:t=parseInt(t),n.keys.push(t),i.watchKeys[t]||(i.watchKeys[t]=[]),i.watchKeys[t].push(n)}})},Keybindings.prototype.bindEvents=function(){var t=this;this.keyupBinding=function(e){var i=e.keyCode,n=t.watchKeys[i];n&&(t.pressedKeys.push(i),n.forEach(function(i){t.checkBinding(e,i)}))},this.keydownBinding=function(e){var i=e.keyCode;if(t.watchKeys[i]){var n=t.pressedKeys.indexOf(i);n>-1&&t.pressedKeys.splice(n,1)}},this.table.element.addEventListener("keydown",this.keyupBinding),this.table.element.addEventListener("keyup",this.keydownBinding)},Keybindings.prototype.clearBindings=function(){this.keyupBinding&&this.table.element.removeEventListener("keydown",this.keyupBinding),this.keydownBinding&&this.table.element.removeEventListener("keyup",this.keydownBinding)},Keybindings.prototype.checkBinding=function(t,e){var i=this,n=!0;return t.ctrlKey==e.ctrl&&t.shiftKey==e.shift&&(e.keys.forEach(function(t){-1==i.pressedKeys.indexOf(t)&&(n=!1)}),n&&e.action.call(i,t),!0)},Keybindings.prototype.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"},Keybindings.prototype.actions={keyBlock:function(t){t.stopPropagation(),t.preventDefault()},scrollPageUp:function(t){var e=this.table.rowManager,i=e.scrollTop-e.height;e.element.scrollHeight;t.preventDefault(),e.displayRowsCount&&(i>=0?e.element.scrollTop=i:e.scrollToRow(e.getDisplayRows()[0])),this.table.element.focus()},scrollPageDown:function(t){var e=this.table.rowManager,i=e.scrollTop+e.height,n=e.element.scrollHeight;t.preventDefault(),e.displayRowsCount&&(i<=n?e.element.scrollTop=i:e.scrollToRow(e.getDisplayRows()[e.displayRowsCount-1])),this.table.element.focus()},scrollToStart:function(t){var e=this.table.rowManager;t.preventDefault(),e.displayRowsCount&&e.scrollToRow(e.getDisplayRows()[0]),this.table.element.focus()},scrollToEnd:function(t){var e=this.table.rowManager;t.preventDefault(),e.displayRowsCount&&e.scrollToRow(e.getDisplayRows()[e.displayRowsCount-1]),this.table.element.focus()},navPrev:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().prev())},navNext:function(t){var e,i=!1,n=this.table.options.tabEndNewRow;this.table.modExists("edit")&&(i=this.table.modules.edit.currentCell)&&(t.preventDefault(),e=i.nav(),e.next()||n&&(n=!0===n?this.table.addRow({}):"function"==typeof n?this.table.addRow(n(i.row.getComponent())):this.table.addRow(n),n.then(function(){e.next()})))},navLeft:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().left())},navRight:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().right())},navUp:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().up())},navDown:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().down())},undo:function(t){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(t.preventDefault(),this.table.modules.history.undo()))},redo:function(t){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(t.preventDefault(),this.table.modules.history.redo()))},copyToClipboard:function(t){this.table.modules.edit.currentCell||this.table.modExists("clipboard",!0)&&this.table.modules.clipboard.copy(this.table.options.selectable&&"highlight"!=this.table.options.selectable?"selected":"active",null,null,null,!0)}},Tabulator.prototype.registerModule("keybindings",Keybindings);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/moveable_columns.js b/backoffice/vendors/tabulator/js.old/modules/moveable_columns.js
new file mode 100644 (file)
index 0000000..b0366cb
--- /dev/null
@@ -0,0 +1,289 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+
+var MoveColumns = function MoveColumns(table) {
+       this.table = table; //hold Tabulator object
+       this.placeholderElement = this.createPlaceholderElement();
+       this.hoverElement = false; //floating column header element
+       this.checkTimeout = false; //click check timeout holder
+       this.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click
+       this.moving = false; //currently moving column
+       this.toCol = false; //destination column
+       this.toColAfter = false; //position of moving column relative to the desitnation column
+       this.startX = 0; //starting position within header element
+       this.autoScrollMargin = 40; //auto scroll on edge when within margin
+       this.autoScrollStep = 5; //auto scroll distance in pixels
+       this.autoScrollTimeout = false; //auto scroll timeout
+       this.touchMove = false;
+
+       this.moveHover = this.moveHover.bind(this);
+       this.endMove = this.endMove.bind(this);
+};
+
+MoveColumns.prototype.createPlaceholderElement = function () {
+       var el = document.createElement("div");
+
+       el.classList.add("tabulator-col");
+       el.classList.add("tabulator-col-placeholder");
+
+       return el;
+};
+
+MoveColumns.prototype.initializeColumn = function (column) {
+       var self = this,
+           config = {},
+           colEl;
+
+       if (!column.modules.frozen) {
+
+               colEl = column.getElement();
+
+               config.mousemove = function (e) {
+                       if (column.parent === self.moving.parent) {
+                               if ((self.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.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);
+                                       }
+                               } else {
+                                       if (self.toCol !== column || self.toColAfter) {
+                                               colEl.parentNode.insertBefore(self.placeholderElement, colEl);
+                                               self.moveColumn(column, false);
+                                       }
+                               }
+                       }
+               }.bind(self);
+
+               colEl.addEventListener("mousedown", function (e) {
+                       self.touchMove = false;
+                       if (e.which === 1) {
+                               self.checkTimeout = setTimeout(function () {
+                                       self.startMove(e, column);
+                               }, self.checkPeriod);
+                       }
+               });
+
+               colEl.addEventListener("mouseup", function (e) {
+                       if (e.which === 1) {
+                               if (self.checkTimeout) {
+                                       clearTimeout(self.checkTimeout);
+                               }
+                       }
+               });
+
+               self.bindTouchEvents(column);
+       }
+
+       column.modules.moveColumn = config;
+};
+
+MoveColumns.prototype.bindTouchEvents = function (column) {
+       var self = this,
+           colEl = column.getElement(),
+           startXMove = false,
+           //shifting center position of the cell
+       dir = false,
+           currentCol,
+           nextCol,
+           prevCol,
+           nextColWidth,
+           prevColWidth,
+           nextColWidthLast,
+           prevColWidthLast;
+
+       colEl.addEventListener("touchstart", function (e) {
+               self.checkTimeout = setTimeout(function () {
+                       self.touchMove = true;
+                       currentCol = column;
+                       nextCol = column.nextColumn();
+                       nextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;
+                       prevCol = column.prevColumn();
+                       prevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;
+                       nextColWidthLast = 0;
+                       prevColWidthLast = 0;
+                       startXMove = false;
+
+                       self.startMove(e, column);
+               }, self.checkPeriod);
+       }, { passive: true });
+
+       colEl.addEventListener("touchmove", function (e) {
+               var halfCol, diff, moveToCol;
+
+               if (self.moving) {
+                       self.moveHover(e);
+
+                       if (!startXMove) {
+                               startXMove = e.touches[0].pageX;
+                       }
+
+                       diff = e.touches[0].pageX - startXMove;
+
+                       if (diff > 0) {
+                               if (nextCol && diff - nextColWidthLast > nextColWidth) {
+                                       moveToCol = nextCol;
+
+                                       if (moveToCol !== column) {
+                                               startXMove = e.touches[0].pageX;
+                                               moveToCol.getElement().parentNode.insertBefore(self.placeholderElement, moveToCol.getElement().nextSibling);
+                                               self.moveColumn(moveToCol, true);
+                                       }
+                               }
+                       } else {
+                               if (prevCol && -diff - prevColWidthLast > prevColWidth) {
+                                       moveToCol = prevCol;
+
+                                       if (moveToCol !== column) {
+                                               startXMove = e.touches[0].pageX;
+                                               moveToCol.getElement().parentNode.insertBefore(self.placeholderElement, moveToCol.getElement());
+                                               self.moveColumn(moveToCol, false);
+                                       }
+                               }
+                       }
+
+                       if (moveToCol) {
+                               currentCol = moveToCol;
+                               nextCol = moveToCol.nextColumn();
+                               nextColWidthLast = nextColWidth;
+                               nextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;
+                               prevCol = moveToCol.prevColumn();
+                               prevColWidthLast = prevColWidth;
+                               prevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;
+                       }
+               }
+       }, { passive: true });
+
+       colEl.addEventListener("touchend", function (e) {
+               if (self.checkTimeout) {
+                       clearTimeout(self.checkTimeout);
+               }
+               if (self.moving) {
+                       self.endMove(e);
+               }
+       });
+};
+
+MoveColumns.prototype.startMove = function (e, column) {
+       var element = column.getElement();
+
+       this.moving = column;
+       this.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.helpers.elOffset(element).left;
+
+       this.table.element.classList.add("tabulator-block-select");
+
+       //create placeholder
+       this.placeholderElement.style.width = column.getWidth() + "px";
+       this.placeholderElement.style.height = column.getHeight() + "px";
+
+       element.parentNode.insertBefore(this.placeholderElement, element);
+       element.parentNode.removeChild(element);
+
+       //create hover element
+       this.hoverElement = element.cloneNode(true);
+       this.hoverElement.classList.add("tabulator-moving");
+
+       this.table.columnManager.getElement().appendChild(this.hoverElement);
+
+       this.hoverElement.style.left = "0";
+       this.hoverElement.style.bottom = "0";
+
+       if (!this.touchMove) {
+               this._bindMouseMove();
+
+               document.body.addEventListener("mousemove", this.moveHover);
+               document.body.addEventListener("mouseup", this.endMove);
+       }
+
+       this.moveHover(e);
+};
+
+MoveColumns.prototype._bindMouseMove = function () {
+       this.table.columnManager.columnsByIndex.forEach(function (column) {
+               if (column.modules.moveColumn.mousemove) {
+                       column.getElement().addEventListener("mousemove", column.modules.moveColumn.mousemove);
+               }
+       });
+};
+
+MoveColumns.prototype._unbindMouseMove = function () {
+       this.table.columnManager.columnsByIndex.forEach(function (column) {
+               if (column.modules.moveColumn.mousemove) {
+                       column.getElement().removeEventListener("mousemove", column.modules.moveColumn.mousemove);
+               }
+       });
+};
+
+MoveColumns.prototype.moveColumn = function (column, after) {
+       var movingCells = this.moving.getCells();
+
+       this.toCol = column;
+       this.toColAfter = after;
+
+       if (after) {
+               column.getCells().forEach(function (cell, i) {
+                       var cellEl = cell.getElement();
+                       cellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling);
+               });
+       } else {
+               column.getCells().forEach(function (cell, i) {
+                       var cellEl = cell.getElement();
+                       cellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl);
+               });
+       }
+};
+
+MoveColumns.prototype.endMove = function (e) {
+       if (e.which === 1 || 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");
+
+               if (this.toCol) {
+                       this.table.columnManager.moveColumnActual(this.moving, this.toCol, this.toColAfter);
+               }
+
+               this.moving = false;
+               this.toCol = false;
+               this.toColAfter = false;
+
+               if (!this.touchMove) {
+                       document.body.removeEventListener("mousemove", this.moveHover);
+                       document.body.removeEventListener("mouseup", this.endMove);
+               }
+       }
+};
+
+MoveColumns.prototype.moveHover = function (e) {
+       var self = this,
+           columnHolder = self.table.columnManager.getElement(),
+           scrollLeft = columnHolder.scrollLeft,
+           xPos = (self.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.helpers.elOffset(columnHolder).left + scrollLeft,
+           scrollPos;
+
+       self.hoverElement.style.left = xPos - self.startX + "px";
+
+       if (xPos - scrollLeft < self.autoScrollMargin) {
+               if (!self.autoScrollTimeout) {
+                       self.autoScrollTimeout = setTimeout(function () {
+                               scrollPos = Math.max(0, scrollLeft - 5);
+                               self.table.rowManager.getElement().scrollLeft = scrollPos;
+                               self.autoScrollTimeout = false;
+                       }, 1);
+               }
+       }
+
+       if (scrollLeft + columnHolder.clientWidth - xPos < self.autoScrollMargin) {
+               if (!self.autoScrollTimeout) {
+                       self.autoScrollTimeout = setTimeout(function () {
+                               scrollPos = Math.min(columnHolder.clientWidth, scrollLeft + 5);
+                               self.table.rowManager.getElement().scrollLeft = scrollPos;
+                               self.autoScrollTimeout = false;
+                       }, 1);
+               }
+       }
+};
+
+Tabulator.prototype.registerModule("moveColumn", MoveColumns);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/moveable_columns.min.js b/backoffice/vendors/tabulator/js.old/modules/moveable_columns.min.js
new file mode 100644 (file)
index 0000000..07c57c4
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+var MoveColumns=function(e){this.table=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)};MoveColumns.prototype.createPlaceholderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.classList.add("tabulator-col-placeholder"),e},MoveColumns.prototype.initializeColumn=function(e){var t,o=this,n={};e.modules.frozen||(t=e.getElement(),n.mousemove=function(n){e.parent===o.moving.parent&&((o.touchMove?n.touches[0].pageX:n.pageX)-Tabulator.prototype.helpers.elOffset(t).left+o.table.columnManager.element.scrollLeft>e.getWidth()/2?o.toCol===e&&o.toColAfter||(t.parentNode.insertBefore(o.placeholderElement,t.nextSibling),o.moveColumn(e,!0)):(o.toCol!==e||o.toColAfter)&&(t.parentNode.insertBefore(o.placeholderElement,t),o.moveColumn(e,!1)))}.bind(o),t.addEventListener("mousedown",function(t){o.touchMove=!1,1===t.which&&(o.checkTimeout=setTimeout(function(){o.startMove(t,e)},o.checkPeriod))}),t.addEventListener("mouseup",function(e){1===e.which&&o.checkTimeout&&clearTimeout(o.checkTimeout)}),o.bindTouchEvents(e)),e.modules.moveColumn=n},MoveColumns.prototype.bindTouchEvents=function(e){var t,o,n,l,i,s,m,r=this,u=e.getElement(),h=!1;u.addEventListener("touchstart",function(u){r.checkTimeout=setTimeout(function(){r.touchMove=!0,t=e,o=e.nextColumn(),l=o?o.getWidth()/2:0,n=e.prevColumn(),i=n?n.getWidth()/2:0,s=0,m=0,h=!1,r.startMove(u,e)},r.checkPeriod)},{passive:!0}),u.addEventListener("touchmove",function(u){var a,c;r.moving&&(r.moveHover(u),h||(h=u.touches[0].pageX),a=u.touches[0].pageX-h,a>0?o&&a-s>l&&(c=o)!==e&&(h=u.touches[0].pageX,c.getElement().parentNode.insertBefore(r.placeholderElement,c.getElement().nextSibling),r.moveColumn(c,!0)):n&&-a-m>i&&(c=n)!==e&&(h=u.touches[0].pageX,c.getElement().parentNode.insertBefore(r.placeholderElement,c.getElement()),r.moveColumn(c,!1)),c&&(t=c,o=c.nextColumn(),s=l,l=o?o.getWidth()/2:0,n=c.prevColumn(),m=i,i=n?n.getWidth()/2:0))},{passive:!0}),u.addEventListener("touchend",function(e){r.checkTimeout&&clearTimeout(r.checkTimeout),r.moving&&r.endMove(e)})},MoveColumns.prototype.startMove=function(e,t){var o=t.getElement();this.moving=t,this.startX=(this.touchMove?e.touches[0].pageX:e.pageX)-Tabulator.prototype.helpers.elOffset(o).left,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",o.parentNode.insertBefore(this.placeholderElement,o),o.parentNode.removeChild(o),this.hoverElement=o.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)},MoveColumns.prototype._bindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(e){e.modules.moveColumn.mousemove&&e.getElement().addEventListener("mousemove",e.modules.moveColumn.mousemove)})},MoveColumns.prototype._unbindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(e){e.modules.moveColumn.mousemove&&e.getElement().removeEventListener("mousemove",e.modules.moveColumn.mousemove)})},MoveColumns.prototype.moveColumn=function(e,t){var o=this.moving.getCells();this.toCol=e,this.toColAfter=t,t?e.getCells().forEach(function(e,t){var n=e.getElement();n.parentNode.insertBefore(o[t].getElement(),n.nextSibling)}):e.getCells().forEach(function(e,t){var n=e.getElement();n.parentNode.insertBefore(o[t].getElement(),n)})},MoveColumns.prototype.endMove=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)))},MoveColumns.prototype.moveHover=function(e){var t,o=this,n=o.table.columnManager.getElement(),l=n.scrollLeft,i=(o.touchMove?e.touches[0].pageX:e.pageX)-Tabulator.prototype.helpers.elOffset(n).left+l;o.hoverElement.style.left=i-o.startX+"px",i-l<o.autoScrollMargin&&(o.autoScrollTimeout||(o.autoScrollTimeout=setTimeout(function(){t=Math.max(0,l-5),o.table.rowManager.getElement().scrollLeft=t,o.autoScrollTimeout=!1},1))),l+n.clientWidth-i<o.autoScrollMargin&&(o.autoScrollTimeout||(o.autoScrollTimeout=setTimeout(function(){t=Math.min(n.clientWidth,l+5),o.table.rowManager.getElement().scrollLeft=t,o.autoScrollTimeout=!1},1)))},Tabulator.prototype.registerModule("moveColumn",MoveColumns);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/moveable_rows.js b/backoffice/vendors/tabulator/js.old/modules/moveable_rows.js
new file mode 100644 (file)
index 0000000..c7e3207
--- /dev/null
@@ -0,0 +1,580 @@
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+
+var MoveRows = function MoveRows(table) {
+
+       this.table = table; //hold Tabulator object
+       this.placeholderElement = this.createPlaceholderElement();
+       this.hoverElement = false; //floating row header element
+       this.checkTimeout = false; //click check timeout holder
+       this.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click
+       this.moving = false; //currently moving row
+       this.toRow = false; //destination row
+       this.toRowAfter = false; //position of moving row relative to the desitnation row
+       this.hasHandle = false; //row has handle instead of fully movable row
+       this.startY = 0; //starting Y position within header element
+       this.startX = 0; //starting X position within header element
+
+       this.moveHover = this.moveHover.bind(this);
+       this.endMove = this.endMove.bind(this);
+       this.tableRowDropEvent = false;
+
+       this.touchMove = false;
+
+       this.connection = false;
+       this.connections = [];
+
+       this.connectedTable = false;
+       this.connectedRow = false;
+};
+
+MoveRows.prototype.createPlaceholderElement = function () {
+       var el = document.createElement("div");
+
+       el.classList.add("tabulator-row");
+       el.classList.add("tabulator-row-placeholder");
+
+       return el;
+};
+
+MoveRows.prototype.initialize = function (handle) {
+       this.connection = this.table.options.movableRowsConnectedTables;
+};
+
+MoveRows.prototype.setHandle = function (handle) {
+       this.hasHandle = handle;
+};
+
+MoveRows.prototype.initializeGroupHeader = function (group) {
+       var self = this,
+           config = {},
+           rowEl;
+
+       //inter table drag drop
+       config.mouseup = function (e) {
+               self.tableRowDrop(e, row);
+       }.bind(self);
+
+       //same table drag drop
+       config.mousemove = function (e) {
+               if (e.pageY - Tabulator.prototype.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);
+                               self.moveRow(group, true);
+                       }
+               } else {
+                       if (self.toRow !== group || self.toRowAfter) {
+                               var rowEl = group.getElement();
+                               if (rowEl.previousSibling) {
+                                       rowEl.parentNode.insertBefore(self.placeholderElement, rowEl);
+                                       self.moveRow(group, false);
+                               }
+                       }
+               }
+       }.bind(self);
+
+       group.modules.moveRow = config;
+};
+
+MoveRows.prototype.initializeRow = function (row) {
+       var self = this,
+           config = {},
+           rowEl;
+
+       //inter table drag drop
+       config.mouseup = function (e) {
+               self.tableRowDrop(e, row);
+       }.bind(self);
+
+       //same table drag drop
+       config.mousemove = function (e) {
+               if (e.pageY - Tabulator.prototype.helpers.elOffset(row.element).top + self.table.rowManager.element.scrollTop > row.getHeight() / 2) {
+                       if (self.toRow !== row || !self.toRowAfter) {
+                               var rowEl = row.getElement();
+                               rowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);
+                               self.moveRow(row, true);
+                       }
+               } else {
+                       if (self.toRow !== row || self.toRowAfter) {
+                               var rowEl = row.getElement();
+                               rowEl.parentNode.insertBefore(self.placeholderElement, rowEl);
+                               self.moveRow(row, false);
+                       }
+               }
+       }.bind(self);
+
+       if (!this.hasHandle) {
+
+               rowEl = row.getElement();
+
+               rowEl.addEventListener("mousedown", function (e) {
+                       if (e.which === 1) {
+                               self.checkTimeout = setTimeout(function () {
+                                       self.startMove(e, row);
+                               }, self.checkPeriod);
+                       }
+               });
+
+               rowEl.addEventListener("mouseup", function (e) {
+                       if (e.which === 1) {
+                               if (self.checkTimeout) {
+                                       clearTimeout(self.checkTimeout);
+                               }
+                       }
+               });
+
+               this.bindTouchEvents(row, row.getElement());
+       }
+
+       row.modules.moveRow = config;
+};
+
+MoveRows.prototype.initializeCell = function (cell) {
+       var self = this,
+           cellEl = cell.getElement();
+
+       cellEl.addEventListener("mousedown", function (e) {
+               if (e.which === 1) {
+                       self.checkTimeout = setTimeout(function () {
+                               self.startMove(e, cell.row);
+                       }, self.checkPeriod);
+               }
+       });
+
+       cellEl.addEventListener("mouseup", function (e) {
+               if (e.which === 1) {
+                       if (self.checkTimeout) {
+                               clearTimeout(self.checkTimeout);
+                       }
+               }
+       });
+
+       this.bindTouchEvents(cell.row, cell.getElement());
+};
+
+MoveRows.prototype.bindTouchEvents = function (row, element) {
+       var self = this,
+           startYMove = false,
+           //shifting center position of the cell
+       dir = false,
+           currentRow,
+           nextRow,
+           prevRow,
+           nextRowHeight,
+           prevRowHeight,
+           nextRowHeightLast,
+           prevRowHeightLast;
+
+       element.addEventListener("touchstart", function (e) {
+               self.checkTimeout = setTimeout(function () {
+                       self.touchMove = true;
+                       currentRow = row;
+                       nextRow = row.nextRow();
+                       nextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;
+                       prevRow = row.prevRow();
+                       prevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;
+                       nextRowHeightLast = 0;
+                       prevRowHeightLast = 0;
+                       startYMove = false;
+
+                       self.startMove(e, row);
+               }, self.checkPeriod);
+       }, { passive: true });
+       this.moving, this.toRow, this.toRowAfter;
+       element.addEventListener("touchmove", function (e) {
+
+               var halfCol, diff, moveToRow;
+
+               if (self.moving) {
+                       e.preventDefault();
+
+                       self.moveHover(e);
+
+                       if (!startYMove) {
+                               startYMove = e.touches[0].pageY;
+                       }
+
+                       diff = e.touches[0].pageY - startYMove;
+
+                       if (diff > 0) {
+                               if (nextRow && diff - nextRowHeightLast > nextRowHeight) {
+                                       moveToRow = nextRow;
+
+                                       if (moveToRow !== row) {
+                                               startYMove = e.touches[0].pageY;
+                                               moveToRow.getElement().parentNode.insertBefore(self.placeholderElement, moveToRow.getElement().nextSibling);
+                                               self.moveRow(moveToRow, true);
+                                       }
+                               }
+                       } else {
+                               if (prevRow && -diff - prevRowHeightLast > prevRowHeight) {
+                                       moveToRow = prevRow;
+
+                                       if (moveToRow !== row) {
+                                               startYMove = e.touches[0].pageY;
+                                               moveToRow.getElement().parentNode.insertBefore(self.placeholderElement, moveToRow.getElement());
+                                               self.moveRow(moveToRow, false);
+                                       }
+                               }
+                       }
+
+                       if (moveToRow) {
+                               currentRow = moveToRow;
+                               nextRow = moveToRow.nextRow();
+                               nextRowHeightLast = nextRowHeight;
+                               nextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;
+                               prevRow = moveToRow.prevRow();
+                               prevRowHeightLast = prevRowHeight;
+                               prevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;
+                       }
+               }
+       });
+
+       element.addEventListener("touchend", function (e) {
+               if (self.checkTimeout) {
+                       clearTimeout(self.checkTimeout);
+               }
+               if (self.moving) {
+                       self.endMove(e);
+                       self.touchMove = false;
+               }
+       });
+};
+
+MoveRows.prototype._bindMouseMove = function () {
+       var self = this;
+
+       self.table.rowManager.getDisplayRows().forEach(function (row) {
+               if ((row.type === "row" || row.type === "group") && row.modules.moveRow.mousemove) {
+                       row.getElement().addEventListener("mousemove", row.modules.moveRow.mousemove);
+               }
+       });
+};
+
+MoveRows.prototype._unbindMouseMove = function () {
+       var self = this;
+
+       self.table.rowManager.getDisplayRows().forEach(function (row) {
+               if ((row.type === "row" || row.type === "group") && row.modules.moveRow.mousemove) {
+                       row.getElement().removeEventListener("mousemove", row.modules.moveRow.mousemove);
+               }
+       });
+};
+
+MoveRows.prototype.startMove = function (e, row) {
+       var element = row.getElement();
+
+       this.setStartPosition(e, row);
+
+       this.moving = row;
+
+       this.table.element.classList.add("tabulator-block-select");
+
+       //create placeholder
+       this.placeholderElement.style.width = row.getWidth() + "px";
+       this.placeholderElement.style.height = row.getHeight() + "px";
+
+       if (!this.connection) {
+               element.parentNode.insertBefore(this.placeholderElement, element);
+               element.parentNode.removeChild(element);
+       } else {
+               this.table.element.classList.add("tabulator-movingrow-sending");
+               this.connectToTables(row);
+       }
+
+       //create hover element
+       this.hoverElement = element.cloneNode(true);
+       this.hoverElement.classList.add("tabulator-moving");
+
+       if (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";
+       } else {
+               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);
+};
+
+MoveRows.prototype.setStartPosition = function (e, row) {
+       var pageX = this.touchMove ? e.touches[0].pageX : e.pageX,
+           pageY = this.touchMove ? e.touches[0].pageY : e.pageY,
+           element,
+           position;
+
+       element = row.getElement();
+       if (this.connection) {
+               position = element.getBoundingClientRect();
+
+               this.startX = position.left - pageX + window.pageXOffset;
+               this.startY = position.top - pageY + window.pageYOffset;
+       } else {
+               this.startY = pageY - element.getBoundingClientRect().top;
+       }
+};
+
+MoveRows.prototype.endMove = function (e) {
+       if (!e || e.which === 1 || this.touchMove) {
+               this._unbindMouseMove();
+
+               if (!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");
+
+               if (this.toRow) {
+                       this.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter);
+               }
+
+               this.moving = false;
+               this.toRow = false;
+               this.toRowAfter = false;
+
+               document.body.removeEventListener("mousemove", this.moveHover);
+               document.body.removeEventListener("mouseup", this.endMove);
+
+               if (this.connection) {
+                       this.table.element.classList.remove("tabulator-movingrow-sending");
+                       this.disconnectFromTables();
+               }
+       }
+};
+
+MoveRows.prototype.moveRow = function (row, after) {
+       this.toRow = row;
+       this.toRowAfter = after;
+};
+
+MoveRows.prototype.moveHover = function (e) {
+       if (this.connection) {
+               this.moveHoverConnections.call(this, e);
+       } else {
+               this.moveHoverTable.call(this, e);
+       }
+};
+
+MoveRows.prototype.moveHoverTable = function (e) {
+       var rowHolder = this.table.rowManager.getElement(),
+           scrollTop = rowHolder.scrollTop,
+           yPos = (this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top + scrollTop,
+           scrollPos;
+
+       this.hoverElement.style.top = yPos - this.startY + "px";
+};
+
+MoveRows.prototype.moveHoverConnections = 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";
+};
+
+//establish connection with other tables
+MoveRows.prototype.connectToTables = function (row) {
+       var self = this,
+           connections = this.table.modules.comms.getConnections(this.connection);
+
+       this.table.options.movableRowsSendingStart.call(this.table, connections);
+
+       this.table.modules.comms.send(this.connection, "moveRow", "connect", {
+               row: row
+       });
+};
+
+//disconnect from other tables
+MoveRows.prototype.disconnectFromTables = function () {
+       var self = this,
+           connections = this.table.modules.comms.getConnections(this.connection);
+
+       this.table.options.movableRowsSendingStop.call(this.table, connections);
+
+       this.table.modules.comms.send(this.connection, "moveRow", "disconnect");
+};
+
+//accept incomming connection
+MoveRows.prototype.connect = function (table, row) {
+       var self = this;
+       if (!this.connectedTable) {
+               this.connectedTable = table;
+               this.connectedRow = row;
+
+               this.table.element.classList.add("tabulator-movingrow-receiving");
+
+               self.table.rowManager.getDisplayRows().forEach(function (row) {
+                       if (row.type === "row" && row.modules.moveRow && row.modules.moveRow.mouseup) {
+                               row.getElement().addEventListener("mouseup", row.modules.moveRow.mouseup);
+                       }
+               });
+
+               self.tableRowDropEvent = self.tableRowDrop.bind(self);
+
+               self.table.element.addEventListener("mouseup", self.tableRowDropEvent);
+
+               this.table.options.movableRowsReceivingStart.call(this.table, row, table);
+
+               return true;
+       } else {
+               console.warn("Move Row Error - Table cannot accept connection, already connected to table:", this.connectedTable);
+               return false;
+       }
+};
+
+//close incomming connection
+MoveRows.prototype.disconnect = function (table) {
+       var self = this;
+       if (table === this.connectedTable) {
+               this.connectedTable = false;
+               this.connectedRow = false;
+
+               this.table.element.classList.remove("tabulator-movingrow-receiving");
+
+               self.table.rowManager.getDisplayRows().forEach(function (row) {
+                       if (row.type === "row" && row.modules.moveRow && row.modules.moveRow.mouseup) {
+                               row.getElement().removeEventListener("mouseup", row.modules.moveRow.mouseup);
+                       }
+               });
+
+               self.table.element.removeEventListener("mouseup", self.tableRowDropEvent);
+
+               this.table.options.movableRowsReceivingStop.call(this.table, table);
+       } else {
+               console.warn("Move Row Error - trying to disconnect from non connected table");
+       }
+};
+
+MoveRows.prototype.dropComplete = function (table, row, success) {
+       var sender = false;
+
+       if (success) {
+
+               switch (_typeof(this.table.options.movableRowsSender)) {
+                       case "string":
+                               sender = this.senders[this.table.options.movableRowsSender];
+                               break;
+
+                       case "function":
+                               sender = this.table.options.movableRowsSender;
+                               break;
+               }
+
+               if (sender) {
+                       sender.call(this, this.moving.getComponent(), row ? row.getComponent() : undefined, table);
+               } else {
+                       if (this.table.options.movableRowsSender) {
+                               console.warn("Mover Row Error - no matching sender found:", this.table.options.movableRowsSender);
+                       }
+               }
+
+               this.table.options.movableRowsSent.call(this.table, this.moving.getComponent(), row ? row.getComponent() : undefined, table);
+       } else {
+               this.table.options.movableRowsSentFailed.call(this.table, this.moving.getComponent(), row ? row.getComponent() : undefined, table);
+       }
+
+       this.endMove();
+};
+
+MoveRows.prototype.tableRowDrop = function (e, row) {
+       var receiver = false,
+           success = false;
+
+       e.stopImmediatePropagation();
+
+       switch (_typeof(this.table.options.movableRowsReceiver)) {
+               case "string":
+                       receiver = this.receivers[this.table.options.movableRowsReceiver];
+                       break;
+
+               case "function":
+                       receiver = this.table.options.movableRowsReceiver;
+                       break;
+       }
+
+       if (receiver) {
+               success = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);
+       } else {
+               console.warn("Mover Row Error - no matching receiver found:", this.table.options.movableRowsReceiver);
+       }
+
+       if (success) {
+               this.table.options.movableRowsReceived.call(this.table, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);
+       } else {
+               this.table.options.movableRowsReceivedFailed.call(this.table, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);
+       }
+
+       this.table.modules.comms.send(this.connectedTable, "moveRow", "dropcomplete", {
+               row: row,
+               success: success
+       });
+};
+
+MoveRows.prototype.receivers = {
+       insert: function insert(fromRow, toRow, fromTable) {
+               this.table.addRow(fromRow.getData(), undefined, toRow);
+               return true;
+       },
+
+       add: function add(fromRow, toRow, fromTable) {
+               this.table.addRow(fromRow.getData());
+               return true;
+       },
+
+       update: function update(fromRow, toRow, fromTable) {
+               if (toRow) {
+                       toRow.update(fromRow.getData());
+                       return true;
+               }
+
+               return false;
+       },
+
+       replace: function replace(fromRow, toRow, fromTable) {
+               if (toRow) {
+                       this.table.addRow(fromRow.getData(), undefined, toRow);
+                       toRow.delete();
+                       return true;
+               }
+
+               return false;
+       }
+};
+
+MoveRows.prototype.senders = {
+       delete: function _delete(fromRow, toRow, toTable) {
+               fromRow.delete();
+       }
+};
+
+MoveRows.prototype.commsReceived = function (table, action, data) {
+       switch (action) {
+               case "connect":
+                       return this.connect(table, data.row);
+                       break;
+
+               case "disconnect":
+                       return this.disconnect(table);
+                       break;
+
+               case "dropcomplete":
+                       return this.dropComplete(table, data.row, data.success);
+                       break;
+       }
+};
+
+Tabulator.prototype.registerModule("moveRow", MoveRows);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/moveable_rows.min.js b/backoffice/vendors/tabulator/js.old/modules/moveable_rows.min.js
new file mode 100644 (file)
index 0000000..bb6ea65
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+var _typeof="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},MoveRows=function(e){this.table=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.connections=[],this.connectedTable=!1,this.connectedRow=!1};MoveRows.prototype.createPlaceholderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-row"),e.classList.add("tabulator-row-placeholder"),e},MoveRows.prototype.initialize=function(e){this.connection=this.table.options.movableRowsConnectedTables},MoveRows.prototype.setHandle=function(e){this.hasHandle=e},MoveRows.prototype.initializeGroupHeader=function(e){var t=this,o={};o.mouseup=function(e){t.tableRowDrop(e,row)}.bind(t),o.mousemove=function(o){if(o.pageY-Tabulator.prototype.helpers.elOffset(e.element).top+t.table.rowManager.element.scrollTop>e.getHeight()/2){if(t.toRow!==e||!t.toRowAfter){var n=e.getElement();n.parentNode.insertBefore(t.placeholderElement,n.nextSibling),t.moveRow(e,!0)}}else if(t.toRow!==e||t.toRowAfter){var n=e.getElement();n.previousSibling&&(n.parentNode.insertBefore(t.placeholderElement,n),t.moveRow(e,!1))}}.bind(t),e.modules.moveRow=o},MoveRows.prototype.initializeRow=function(e){var t,o=this,n={};n.mouseup=function(t){o.tableRowDrop(t,e)}.bind(o),n.mousemove=function(t){if(t.pageY-Tabulator.prototype.helpers.elOffset(e.element).top+o.table.rowManager.element.scrollTop>e.getHeight()/2){if(o.toRow!==e||!o.toRowAfter){var n=e.getElement();n.parentNode.insertBefore(o.placeholderElement,n.nextSibling),o.moveRow(e,!0)}}else if(o.toRow!==e||o.toRowAfter){var n=e.getElement();n.parentNode.insertBefore(o.placeholderElement,n),o.moveRow(e,!1)}}.bind(o),this.hasHandle||(t=e.getElement(),t.addEventListener("mousedown",function(t){1===t.which&&(o.checkTimeout=setTimeout(function(){o.startMove(t,e)},o.checkPeriod))}),t.addEventListener("mouseup",function(e){1===e.which&&o.checkTimeout&&clearTimeout(o.checkTimeout)}),this.bindTouchEvents(e,e.getElement())),e.modules.moveRow=n},MoveRows.prototype.initializeCell=function(e){var t=this,o=e.getElement();o.addEventListener("mousedown",function(o){1===o.which&&(t.checkTimeout=setTimeout(function(){t.startMove(o,e.row)},t.checkPeriod))}),o.addEventListener("mouseup",function(e){1===e.which&&t.checkTimeout&&clearTimeout(t.checkTimeout)}),this.bindTouchEvents(e.row,e.getElement())},MoveRows.prototype.bindTouchEvents=function(e,t){var o,n,i,s,l,r,a,c=this,h=!1;t.addEventListener("touchstart",function(t){c.checkTimeout=setTimeout(function(){c.touchMove=!0,o=e,n=e.nextRow(),s=n?n.getHeight()/2:0,i=e.prevRow(),l=i?i.getHeight()/2:0,r=0,a=0,h=!1,c.startMove(t,e)},c.checkPeriod)},{passive:!0}),this.moving,this.toRow,this.toRowAfter,t.addEventListener("touchmove",function(t){var m,v;c.moving&&(t.preventDefault(),c.moveHover(t),h||(h=t.touches[0].pageY),m=t.touches[0].pageY-h,m>0?n&&m-r>s&&(v=n)!==e&&(h=t.touches[0].pageY,v.getElement().parentNode.insertBefore(c.placeholderElement,v.getElement().nextSibling),c.moveRow(v,!0)):i&&-m-a>l&&(v=i)!==e&&(h=t.touches[0].pageY,v.getElement().parentNode.insertBefore(c.placeholderElement,v.getElement()),c.moveRow(v,!1)),v&&(o=v,n=v.nextRow(),r=s,s=n?n.getHeight()/2:0,i=v.prevRow(),a=l,l=i?i.getHeight()/2:0))}),t.addEventListener("touchend",function(e){c.checkTimeout&&clearTimeout(c.checkTimeout),c.moving&&(c.endMove(e),c.touchMove=!1)})},MoveRows.prototype._bindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(e){"row"!==e.type&&"group"!==e.type||!e.modules.moveRow.mousemove||e.getElement().addEventListener("mousemove",e.modules.moveRow.mousemove)})},MoveRows.prototype._unbindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(e){"row"!==e.type&&"group"!==e.type||!e.modules.moveRow.mousemove||e.getElement().removeEventListener("mousemove",e.modules.moveRow.mousemove)})},MoveRows.prototype.startMove=function(e,t){var o=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)):(o.parentNode.insertBefore(this.placeholderElement,o),o.parentNode.removeChild(o)),this.hoverElement=o.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)},MoveRows.prototype.setStartPosition=function(e,t){var o,n,i=this.touchMove?e.touches[0].pageX:e.pageX,s=this.touchMove?e.touches[0].pageY:e.pageY;o=t.getElement(),this.connection?(n=o.getBoundingClientRect(),this.startX=n.left-i+window.pageXOffset,this.startY=n.top-s+window.pageYOffset):this.startY=s-o.getBoundingClientRect().top},MoveRows.prototype.endMove=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()))},MoveRows.prototype.moveRow=function(e,t){this.toRow=e,this.toRowAfter=t},MoveRows.prototype.moveHover=function(e){this.connection?this.moveHoverConnections.call(this,e):this.moveHoverTable.call(this,e)},MoveRows.prototype.moveHoverTable=function(e){var t=this.table.rowManager.getElement(),o=t.scrollTop,n=(this.touchMove?e.touches[0].pageY:e.pageY)-t.getBoundingClientRect().top+o;this.hoverElement.style.top=n-this.startY+"px"},MoveRows.prototype.moveHoverConnections=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"},MoveRows.prototype.connectToTables=function(e){var t=this.table.modules.comms.getConnections(this.connection);this.table.options.movableRowsSendingStart.call(this.table,t),this.table.modules.comms.send(this.connection,"moveRow","connect",{row:e})},MoveRows.prototype.disconnectFromTables=function(){var e=this.table.modules.comms.getConnections(this.connection);this.table.options.movableRowsSendingStop.call(this.table,e),this.table.modules.comms.send(this.connection,"moveRow","disconnect")},MoveRows.prototype.connect=function(e,t){var o=this;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"),o.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().addEventListener("mouseup",e.modules.moveRow.mouseup)}),o.tableRowDropEvent=o.tableRowDrop.bind(o),o.table.element.addEventListener("mouseup",o.tableRowDropEvent),this.table.options.movableRowsReceivingStart.call(this.table,t,e),!0)},MoveRows.prototype.disconnect=function(e){var t=this;e===this.connectedTable?(this.connectedTable=!1,this.connectedRow=!1,this.table.element.classList.remove("tabulator-movingrow-receiving"),t.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().removeEventListener("mouseup",e.modules.moveRow.mouseup)}),t.table.element.removeEventListener("mouseup",t.tableRowDropEvent),this.table.options.movableRowsReceivingStop.call(this.table,e)):console.warn("Move Row Error - trying to disconnect from non connected table")},MoveRows.prototype.dropComplete=function(e,t,o){var n=!1;if(o){switch(_typeof(this.table.options.movableRowsSender)){case"string":n=this.senders[this.table.options.movableRowsSender];break;case"function":n=this.table.options.movableRowsSender}n?n.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.table.options.movableRowsSent.call(this.table,this.moving.getComponent(),t?t.getComponent():void 0,e)}else this.table.options.movableRowsSentFailed.call(this.table,this.moving.getComponent(),t?t.getComponent():void 0,e);this.endMove()},MoveRows.prototype.tableRowDrop=function(e,t){var o=!1,n=!1;switch(e.stopImmediatePropagation(),_typeof(this.table.options.movableRowsReceiver)){case"string":o=this.receivers[this.table.options.movableRowsReceiver];break;case"function":o=this.table.options.movableRowsReceiver}o?n=o.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),n?this.table.options.movableRowsReceived.call(this.table,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):this.table.options.movableRowsReceivedFailed.call(this.table,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable),this.table.modules.comms.send(this.connectedTable,"moveRow","dropcomplete",{row:t,success:n})},MoveRows.prototype.receivers={insert:function(e,t,o){return this.table.addRow(e.getData(),void 0,t),!0},add:function(e,t,o){return this.table.addRow(e.getData()),!0},update:function(e,t,o){return!!t&&(t.update(e.getData()),!0)},replace:function(e,t,o){return!!t&&(this.table.addRow(e.getData(),void 0,t),t.delete(),!0)}},MoveRows.prototype.senders={delete:function(e,t,o){e.delete()}},MoveRows.prototype.commsReceived=function(e,t,o){switch(t){case"connect":return this.connect(e,o.row);case"disconnect":return this.disconnect(e);case"dropcomplete":return this.dropComplete(e,o.row,o.success)}},Tabulator.prototype.registerModule("moveRow",MoveRows);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/mutator.js b/backoffice/vendors/tabulator/js.old/modules/mutator.js
new file mode 100644 (file)
index 0000000..ef90ea8
--- /dev/null
@@ -0,0 +1,113 @@
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+
+var Mutator = function Mutator(table) {
+       this.table = table; //hold Tabulator object
+       this.allowedTypes = ["", "data", "edit", "clipboard"]; //list of muatation types
+       this.enabled = true;
+};
+
+//initialize column mutator
+Mutator.prototype.initializeColumn = function (column) {
+       var self = this,
+           match = false,
+           config = {};
+
+       this.allowedTypes.forEach(function (type) {
+               var key = "mutator" + (type.charAt(0).toUpperCase() + type.slice(1)),
+                   mutator;
+
+               if (column.definition[key]) {
+                       mutator = self.lookupMutator(column.definition[key]);
+
+                       if (mutator) {
+                               match = true;
+
+                               config[key] = {
+                                       mutator: mutator,
+                                       params: column.definition[key + "Params"] || {}
+                               };
+                       }
+               }
+       });
+
+       if (match) {
+               column.modules.mutate = config;
+       }
+};
+
+Mutator.prototype.lookupMutator = function (value) {
+       var mutator = false;
+
+       //set column mutator
+       switch (typeof value === "undefined" ? "undefined" : _typeof(value)) {
+               case "string":
+                       if (this.mutators[value]) {
+                               mutator = this.mutators[value];
+                       } else {
+                               console.warn("Mutator Error - No such mutator found, ignoring: ", value);
+                       }
+                       break;
+
+               case "function":
+                       mutator = value;
+                       break;
+       }
+
+       return mutator;
+};
+
+//apply mutator to row
+Mutator.prototype.transformRow = function (data, type, update) {
+       var self = this,
+           key = "mutator" + (type.charAt(0).toUpperCase() + type.slice(1)),
+           value;
+
+       if (this.enabled) {
+
+               self.table.columnManager.traverse(function (column) {
+                       var mutator, params, component;
+
+                       if (column.modules.mutate) {
+                               mutator = column.modules.mutate[key] || column.modules.mutate.mutator || false;
+
+                               if (mutator) {
+                                       value = column.getFieldValue(data);
+
+                                       if (!update || update && typeof value !== "undefined") {
+                                               component = column.getComponent();
+                                               params = typeof mutator.params === "function" ? mutator.params(value, data, type, component) : mutator.params;
+                                               column.setFieldValue(data, mutator.mutator(value, data, type, params, component));
+                                       }
+                               }
+                       }
+               });
+       }
+
+       return data;
+};
+
+//apply mutator to new cell value
+Mutator.prototype.transformCell = function (cell, value) {
+       var mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false;
+
+       if (mutator) {
+               return mutator.mutator(value, cell.row.getData(), "edit", mutator.params, cell.getComponent());
+       } else {
+               return value;
+       }
+};
+
+Mutator.prototype.enable = function () {
+       this.enabled = true;
+};
+
+Mutator.prototype.disable = function () {
+       this.enabled = false;
+};
+
+//default mutators
+Mutator.prototype.mutators = {};
+
+Tabulator.prototype.registerModule("mutator", Mutator);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/mutator.min.js b/backoffice/vendors/tabulator/js.old/modules/mutator.min.js
new file mode 100644 (file)
index 0000000..1534f29
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Mutator=function(t){this.table=t,this.allowedTypes=["","data","edit","clipboard"],this.enabled=!0};Mutator.prototype.initializeColumn=function(t){var o=this,e=!1,a={};this.allowedTypes.forEach(function(r){var u,n="mutator"+(r.charAt(0).toUpperCase()+r.slice(1));t.definition[n]&&(u=o.lookupMutator(t.definition[n]))&&(e=!0,a[n]={mutator:u,params:t.definition[n+"Params"]||{}})}),e&&(t.modules.mutate=a)},Mutator.prototype.lookupMutator=function(t){var o=!1;switch(void 0===t?"undefined":_typeof(t)){case"string":this.mutators[t]?o=this.mutators[t]:console.warn("Mutator Error - No such mutator found, ignoring: ",t);break;case"function":o=t}return o},Mutator.prototype.transformRow=function(t,o,e){var a,r=this,u="mutator"+(o.charAt(0).toUpperCase()+o.slice(1));return this.enabled&&r.table.columnManager.traverse(function(r){var n,i,s;r.modules.mutate&&(n=r.modules.mutate[u]||r.modules.mutate.mutator||!1)&&(a=r.getFieldValue(t),(!e||e&&void 0!==a)&&(s=r.getComponent(),i="function"==typeof n.params?n.params(a,t,o,s):n.params,r.setFieldValue(t,n.mutator(a,t,o,i,s))))}),t},Mutator.prototype.transformCell=function(t,o){var e=t.column.modules.mutate.mutatorEdit||t.column.modules.mutate.mutator||!1;return e?e.mutator(o,t.row.getData(),"edit",e.params,t.getComponent()):o},Mutator.prototype.enable=function(){this.enabled=!0},Mutator.prototype.disable=function(){this.enabled=!1},Mutator.prototype.mutators={},Tabulator.prototype.registerModule("mutator",Mutator);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/page.js b/backoffice/vendors/tabulator/js.old/modules/page.js
new file mode 100644 (file)
index 0000000..a3af23a
--- /dev/null
@@ -0,0 +1,636 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+
+var Page = function Page(table) {
+
+       this.table = table; //hold Tabulator object
+
+       this.mode = "local";
+       this.progressiveLoad = false;
+
+       this.size = 0;
+       this.page = 1;
+       this.count = 5;
+       this.max = 1;
+
+       this.displayIndex = 0; //index in display pipeline
+
+       this.pageSizes = [];
+
+       this.createElements();
+};
+
+Page.prototype.createElements = function () {
+
+       var button;
+
+       this.element = document.createElement("span");
+       this.element.classList.add("tabulator-paginator");
+
+       this.pagesElement = document.createElement("span");
+       this.pagesElement.classList.add("tabulator-pages");
+
+       button = document.createElement("button");
+       button.classList.add("tabulator-page");
+       button.setAttribute("type", "button");
+       button.setAttribute("role", "button");
+       button.setAttribute("aria-label", "");
+       button.setAttribute("title", "");
+
+       this.firstBut = button.cloneNode(true);
+       this.firstBut.setAttribute("data-page", "first");
+
+       this.prevBut = button.cloneNode(true);
+       this.prevBut.setAttribute("data-page", "prev");
+
+       this.nextBut = button.cloneNode(true);
+       this.nextBut.setAttribute("data-page", "next");
+
+       this.lastBut = button.cloneNode(true);
+       this.lastBut.setAttribute("data-page", "last");
+
+       if (this.table.options.paginationSizeSelector) {
+               this.pageSizeSelect = document.createElement("select");
+               this.pageSizeSelect.classList.add("tabulator-page-size");
+       }
+};
+
+Page.prototype.generatePageSizeSelectList = function () {
+       var _this = this;
+
+       var pageSizes = [];
+
+       if (this.pageSizeSelect) {
+
+               if (Array.isArray(this.table.options.paginationSizeSelector)) {
+                       pageSizes = this.table.options.paginationSizeSelector;
+                       this.pageSizes = pageSizes;
+
+                       if (this.pageSizes.indexOf(this.size) == -1) {
+                               pageSizes.unshift(this.size);
+                       }
+               } else {
+
+                       if (this.pageSizes.indexOf(this.size) == -1) {
+                               pageSizes = [];
+
+                               for (var i = 1; i < 5; i++) {
+                                       pageSizes.push(this.size * i);
+                               }
+
+                               this.pageSizes = pageSizes;
+                       } else {
+                               pageSizes = this.pageSizes;
+                       }
+               }
+
+               while (this.pageSizeSelect.firstChild) {
+                       this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);
+               }pageSizes.forEach(function (item) {
+                       var itemEl = document.createElement("option");
+                       itemEl.value = item;
+                       itemEl.innerHTML = item;
+
+                       _this.pageSizeSelect.appendChild(itemEl);
+               });
+
+               this.pageSizeSelect.value = this.size;
+       }
+};
+
+//setup pageination
+Page.prototype.initialize = function (hidden) {
+       var self = this,
+           pageSelectLabel;
+
+       //update param names
+       for (var key in self.table.options.paginationDataSent) {
+               self.paginationDataSentNames[key] = self.table.options.paginationDataSent[key];
+       }
+
+       for (var _key in self.table.options.paginationDataReceived) {
+               self.paginationDataReceivedNames[_key] = self.table.options.paginationDataReceived[_key];
+       }
+
+       //build pagination element
+
+       //bind localizations
+       self.table.modules.localize.bind("pagination|first", function (value) {
+               self.firstBut.innerHTML = value;
+       });
+
+       self.table.modules.localize.bind("pagination|first_title", function (value) {
+               self.firstBut.setAttribute("aria-label", value);
+               self.firstBut.setAttribute("title", value);
+       });
+
+       self.table.modules.localize.bind("pagination|prev", function (value) {
+               self.prevBut.innerHTML = value;
+       });
+
+       self.table.modules.localize.bind("pagination|prev_title", function (value) {
+               self.prevBut.setAttribute("aria-label", value);
+               self.prevBut.setAttribute("title", value);
+       });
+
+       self.table.modules.localize.bind("pagination|next", function (value) {
+               self.nextBut.innerHTML = value;
+       });
+
+       self.table.modules.localize.bind("pagination|next_title", function (value) {
+               self.nextBut.setAttribute("aria-label", value);
+               self.nextBut.setAttribute("title", value);
+       });
+
+       self.table.modules.localize.bind("pagination|last", function (value) {
+               self.lastBut.innerHTML = value;
+       });
+
+       self.table.modules.localize.bind("pagination|last_title", function (value) {
+               self.lastBut.setAttribute("aria-label", value);
+               self.lastBut.setAttribute("title", value);
+       });
+
+       //click bindings
+       self.firstBut.addEventListener("click", function () {
+               self.setPage(1);
+       });
+
+       self.prevBut.addEventListener("click", function () {
+               self.previousPage();
+       });
+
+       self.nextBut.addEventListener("click", function () {
+               self.nextPage().then(function () {}).catch(function () {});
+       });
+
+       self.lastBut.addEventListener("click", function () {
+               self.setPage(self.max);
+       });
+
+       if (self.table.options.paginationElement) {
+               self.element = self.table.options.paginationElement;
+       }
+
+       if (this.pageSizeSelect) {
+               pageSelectLabel = document.createElement("label");
+
+               self.table.modules.localize.bind("pagination|page_size", function (value) {
+                       self.pageSizeSelect.setAttribute("aria-label", value);
+                       self.pageSizeSelect.setAttribute("title", value);
+                       pageSelectLabel.innerHTML = value;
+               });
+
+               self.element.appendChild(pageSelectLabel);
+               self.element.appendChild(self.pageSizeSelect);
+
+               self.pageSizeSelect.addEventListener("change", function (e) {
+                       self.setPageSize(self.pageSizeSelect.value);
+                       self.setPage(1).then(function () {}).catch(function () {});
+               });
+       }
+
+       //append to DOM
+       self.element.appendChild(self.firstBut);
+       self.element.appendChild(self.prevBut);
+       self.element.appendChild(self.pagesElement);
+       self.element.appendChild(self.nextBut);
+       self.element.appendChild(self.lastBut);
+
+       if (!self.table.options.paginationElement && !hidden) {
+               self.table.footerManager.append(self.element, self);
+       }
+
+       //set default values
+       self.mode = self.table.options.pagination;
+       self.size = self.table.options.paginationSize || Math.floor(self.table.rowManager.getElement().clientHeight / 24);
+       self.count = self.table.options.paginationButtonCount;
+
+       self.generatePageSizeSelectList();
+};
+
+Page.prototype.initializeProgressive = function (mode) {
+       this.initialize(true);
+       this.mode = "progressive_" + mode;
+       this.progressiveLoad = true;
+};
+
+Page.prototype.setDisplayIndex = function (index) {
+       this.displayIndex = index;
+};
+
+Page.prototype.getDisplayIndex = function () {
+       return this.displayIndex;
+};
+
+//calculate maximum page from number of rows
+Page.prototype.setMaxRows = function (rowCount) {
+       if (!rowCount) {
+               this.max = 1;
+       } else {
+               this.max = Math.ceil(rowCount / this.size);
+       }
+
+       if (this.page > this.max) {
+               this.page = this.max;
+       }
+};
+
+//reset to first page without triggering action
+Page.prototype.reset = function (force) {
+       if (this.mode == "local" || force) {
+               this.page = 1;
+       }
+       return true;
+};
+
+//set the maxmum page
+Page.prototype.setMaxPage = function (max) {
+
+       max = parseInt(max);
+
+       this.max = max || 1;
+
+       if (this.page > this.max) {
+               this.page = this.max;
+               this.trigger();
+       }
+};
+
+//set current page number
+Page.prototype.setPage = function (page) {
+       var _this2 = this;
+
+       return new Promise(function (resolve, reject) {
+
+               page = parseInt(page);
+
+               if (page > 0 && page <= _this2.max) {
+                       _this2.page = page;
+                       _this2.trigger().then(function () {
+                               resolve();
+                       }).catch(function () {
+                               reject();
+                       });
+               } else {
+                       console.warn("Pagination Error - Requested page is out of range of 1 - " + _this2.max + ":", page);
+                       reject();
+               }
+       });
+};
+
+Page.prototype.setPageToRow = function (row) {
+       var _this3 = this;
+
+       return new Promise(function (resolve, reject) {
+
+               var rows = _this3.table.rowManager.getDisplayRows(_this3.displayIndex - 1);
+               var index = rows.indexOf(row);
+
+               if (index > -1) {
+                       var page = Math.ceil((index + 1) / _this3.size);
+
+                       _this3.setPage(page).then(function () {
+                               resolve();
+                       }).catch(function () {
+                               reject();
+                       });
+               } else {
+                       console.warn("Pagination Error - Requested row is not visible");
+                       reject();
+               }
+       });
+};
+
+Page.prototype.setPageSize = function (size) {
+       size = parseInt(size);
+
+       if (size > 0) {
+               this.size = size;
+       }
+
+       if (this.pageSizeSelect) {
+               // this.pageSizeSelect.value = size;
+               this.generatePageSizeSelectList();
+       }
+};
+
+//setup the pagination buttons
+Page.prototype._setPageButtons = function () {
+       var self = this;
+
+       var leftSize = Math.floor((this.count - 1) / 2);
+       var rightSize = Math.ceil((this.count - 1) / 2);
+       var min = this.max - this.page + leftSize + 1 < this.count ? this.max - this.count + 1 : Math.max(this.page - leftSize, 1);
+       var max = this.page <= rightSize ? Math.min(this.count, this.max) : Math.min(this.page + rightSize, this.max);
+
+       while (self.pagesElement.firstChild) {
+               self.pagesElement.removeChild(self.pagesElement.firstChild);
+       }if (self.page == 1) {
+               self.firstBut.disabled = true;
+               self.prevBut.disabled = true;
+       } else {
+               self.firstBut.disabled = false;
+               self.prevBut.disabled = false;
+       }
+
+       if (self.page == self.max) {
+               self.lastBut.disabled = true;
+               self.nextBut.disabled = true;
+       } else {
+               self.lastBut.disabled = false;
+               self.nextBut.disabled = false;
+       }
+
+       for (var i = min; i <= max; i++) {
+               if (i > 0 && i <= self.max) {
+                       self.pagesElement.appendChild(self._generatePageButton(i));
+               }
+       }
+
+       this.footerRedraw();
+};
+
+Page.prototype._generatePageButton = function (page) {
+       var self = this,
+           button = document.createElement("button");
+
+       button.classList.add("tabulator-page");
+       if (page == self.page) {
+               button.classList.add("active");
+       }
+
+       button.setAttribute("type", "button");
+       button.setAttribute("role", "button");
+       button.setAttribute("aria-label", "Show Page " + page);
+       button.setAttribute("title", "Show Page " + page);
+       button.setAttribute("data-page", page);
+       button.textContent = page;
+
+       button.addEventListener("click", function (e) {
+               self.setPage(page);
+       });
+
+       return button;
+};
+
+//previous page
+Page.prototype.previousPage = function () {
+       var _this4 = this;
+
+       return new Promise(function (resolve, reject) {
+               if (_this4.page > 1) {
+                       _this4.page--;
+                       _this4.trigger().then(function () {
+                               resolve();
+                       }).catch(function () {
+                               reject();
+                       });
+               } else {
+                       console.warn("Pagination Error - Previous page would be less than page 1:", 0);
+                       reject();
+               }
+       });
+};
+
+//next page
+Page.prototype.nextPage = function () {
+       var _this5 = this;
+
+       return new Promise(function (resolve, reject) {
+               if (_this5.page < _this5.max) {
+                       _this5.page++;
+                       _this5.trigger().then(function () {
+                               resolve();
+                       }).catch(function () {
+                               reject();
+                       });
+               } else {
+                       if (!_this5.progressiveLoad) {
+                               console.warn("Pagination Error - Next page would be greater than maximum page of " + _this5.max + ":", _this5.max + 1);
+                       }
+                       reject();
+               }
+       });
+};
+
+//return current page number
+Page.prototype.getPage = function () {
+       return this.page;
+};
+
+//return max page number
+Page.prototype.getPageMax = function () {
+       return this.max;
+};
+
+Page.prototype.getPageSize = function (size) {
+       return this.size;
+};
+
+Page.prototype.getMode = function () {
+       return this.mode;
+};
+
+//return appropriate rows for current page
+Page.prototype.getRows = function (data) {
+       var output, start, end;
+
+       if (this.mode == "local") {
+               output = [];
+               start = this.size * (this.page - 1);
+               end = start + parseInt(this.size);
+
+               this._setPageButtons();
+
+               for (var i = start; i < end; i++) {
+                       if (data[i]) {
+                               output.push(data[i]);
+                       }
+               }
+
+               return output;
+       } else {
+
+               this._setPageButtons();
+
+               return data.slice(0);
+       }
+};
+
+Page.prototype.trigger = function () {
+       var _this6 = this;
+
+       var left;
+
+       return new Promise(function (resolve, reject) {
+
+               switch (_this6.mode) {
+                       case "local":
+                               left = _this6.table.rowManager.scrollLeft;
+
+                               _this6.table.rowManager.refreshActiveData("page");
+                               _this6.table.rowManager.scrollHorizontal(left);
+
+                               _this6.table.options.pageLoaded.call(_this6.table, _this6.getPage());
+                               resolve();
+                               break;
+
+                       case "remote":
+                       case "progressive_load":
+                       case "progressive_scroll":
+                               _this6.table.modules.ajax.blockActiveRequest();
+                               _this6._getRemotePage().then(function () {
+                                       resolve();
+                               }).catch(function () {
+                                       reject();
+                               });
+                               break;
+
+                       default:
+                               console.warn("Pagination Error - no such pagination mode:", _this6.mode);
+                               reject();
+               }
+       });
+};
+
+Page.prototype._getRemotePage = function () {
+       var _this7 = this;
+
+       var self = this,
+           oldParams,
+           pageParams;
+
+       return new Promise(function (resolve, reject) {
+
+               if (!self.table.modExists("ajax", true)) {
+                       reject();
+               }
+
+               //record old params and restore after request has been made
+               oldParams = Tabulator.prototype.helpers.deepClone(self.table.modules.ajax.getParams() || {});
+               pageParams = self.table.modules.ajax.getParams();
+
+               //configure request params
+               pageParams[_this7.paginationDataSentNames.page] = self.page;
+
+               //set page size if defined
+               if (_this7.size) {
+                       pageParams[_this7.paginationDataSentNames.size] = _this7.size;
+               }
+
+               //set sort data if defined
+               if (_this7.table.options.ajaxSorting && _this7.table.modExists("sort")) {
+                       var sorters = self.table.modules.sort.getSort();
+
+                       sorters.forEach(function (item) {
+                               delete item.column;
+                       });
+
+                       pageParams[_this7.paginationDataSentNames.sorters] = sorters;
+               }
+
+               //set filter data if defined
+               if (_this7.table.options.ajaxFiltering && _this7.table.modExists("filter")) {
+                       var filters = self.table.modules.filter.getFilters(true, true);
+                       pageParams[_this7.paginationDataSentNames.filters] = filters;
+               }
+
+               self.table.modules.ajax.setParams(pageParams);
+
+               self.table.modules.ajax.sendRequest(_this7.progressiveLoad).then(function (data) {
+                       self._parseRemoteData(data);
+                       resolve();
+               }).catch(function (e) {
+                       reject();
+               });
+
+               self.table.modules.ajax.setParams(oldParams);
+       });
+};
+
+Page.prototype._parseRemoteData = function (data) {
+       var self = this,
+           left,
+           data,
+           margin;
+
+       if (typeof data[this.paginationDataReceivedNames.last_page] === "undefined") {
+               console.warn("Remote Pagination Error - Server response missing '" + this.paginationDataReceivedNames.last_page + "' property");
+       }
+
+       if (data[this.paginationDataReceivedNames.data]) {
+               this.max = parseInt(data[this.paginationDataReceivedNames.last_page]) || 1;
+
+               if (this.progressiveLoad) {
+                       switch (this.mode) {
+                               case "progressive_load":
+                                       this.table.rowManager.addRows(data[this.paginationDataReceivedNames.data]);
+                                       if (this.page < this.max) {
+                                               setTimeout(function () {
+                                                       self.nextPage().then(function () {}).catch(function () {});
+                                               }, self.table.options.ajaxProgressiveLoadDelay);
+                                       }
+                                       break;
+
+                               case "progressive_scroll":
+                                       data = this.table.rowManager.getData().concat(data[this.paginationDataReceivedNames.data]);
+
+                                       this.table.rowManager.setData(data, true);
+
+                                       margin = this.table.options.ajaxProgressiveLoadScrollMargin || this.table.rowManager.element.clientHeight * 2;
+
+                                       if (self.table.rowManager.element.scrollHeight <= self.table.rowManager.element.clientHeight + margin) {
+                                               self.nextPage().then(function () {}).catch(function () {});
+                                       }
+                                       break;
+                       }
+               } else {
+                       left = this.table.rowManager.scrollLeft;
+
+                       this.table.rowManager.setData(data[this.paginationDataReceivedNames.data]);
+
+                       this.table.rowManager.scrollHorizontal(left);
+
+                       this.table.columnManager.scrollHorizontal(left);
+
+                       this.table.options.pageLoaded.call(this.table, this.getPage());
+               }
+       } else {
+               console.warn("Remote Pagination Error - Server response missing '" + this.paginationDataReceivedNames.data + "' property");
+       }
+};
+
+//handle the footer element being redrawn
+Page.prototype.footerRedraw = function () {
+       var footer = this.table.footerManager.element;
+
+       if (Math.ceil(footer.clientWidth) - footer.scrollWidth < 0) {
+               this.pagesElement.style.display = 'none';
+       } else {
+               this.pagesElement.style.display = '';
+
+               if (Math.ceil(footer.clientWidth) - footer.scrollWidth < 0) {
+                       this.pagesElement.style.display = 'none';
+               }
+       }
+};
+
+//set the paramter names for pagination requests
+Page.prototype.paginationDataSentNames = {
+       "page": "page",
+       "size": "size",
+       "sorters": "sorters",
+       // "sort_dir":"sort_dir",
+       "filters": "filters"
+       // "filter_value":"filter_value",
+       // "filter_type":"filter_type",
+};
+
+//set the property names for pagination responses
+Page.prototype.paginationDataReceivedNames = {
+       "current_page": "current_page",
+       "last_page": "last_page",
+       "data": "data"
+};
+
+Tabulator.prototype.registerModule("page", Page);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/page.min.js b/backoffice/vendors/tabulator/js.old/modules/page.min.js
new file mode 100644 (file)
index 0000000..ab6e069
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+var Page=function(e){this.table=e,this.mode="local",this.progressiveLoad=!1,this.size=0,this.page=1,this.count=5,this.max=1,this.displayIndex=0,this.pageSizes=[],this.createElements()};Page.prototype.createElements=function(){var e;this.element=document.createElement("span"),this.element.classList.add("tabulator-paginator"),this.pagesElement=document.createElement("span"),this.pagesElement.classList.add("tabulator-pages"),e=document.createElement("button"),e.classList.add("tabulator-page"),e.setAttribute("type","button"),e.setAttribute("role","button"),e.setAttribute("aria-label",""),e.setAttribute("title",""),this.firstBut=e.cloneNode(!0),this.firstBut.setAttribute("data-page","first"),this.prevBut=e.cloneNode(!0),this.prevBut.setAttribute("data-page","prev"),this.nextBut=e.cloneNode(!0),this.nextBut.setAttribute("data-page","next"),this.lastBut=e.cloneNode(!0),this.lastBut.setAttribute("data-page","last"),this.table.options.paginationSizeSelector&&(this.pageSizeSelect=document.createElement("select"),this.pageSizeSelect.classList.add("tabulator-page-size"))},Page.prototype.generatePageSizeSelectList=function(){var e=this,t=[];if(this.pageSizeSelect){if(Array.isArray(this.table.options.paginationSizeSelector))t=this.table.options.paginationSizeSelector,this.pageSizes=t,-1==this.pageSizes.indexOf(this.size)&&t.unshift(this.size);else if(-1==this.pageSizes.indexOf(this.size)){t=[];for(var a=1;a<5;a++)t.push(this.size*a);this.pageSizes=t}else t=this.pageSizes;for(;this.pageSizeSelect.firstChild;)this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);t.forEach(function(t){var a=document.createElement("option");a.value=t,a.innerHTML=t,e.pageSizeSelect.appendChild(a)}),this.pageSizeSelect.value=this.size}},Page.prototype.initialize=function(e){var t,a=this;for(var i in a.table.options.paginationDataSent)a.paginationDataSentNames[i]=a.table.options.paginationDataSent[i];for(var n in a.table.options.paginationDataReceived)a.paginationDataReceivedNames[n]=a.table.options.paginationDataReceived[n];a.table.modules.localize.bind("pagination|first",function(e){a.firstBut.innerHTML=e}),a.table.modules.localize.bind("pagination|first_title",function(e){a.firstBut.setAttribute("aria-label",e),a.firstBut.setAttribute("title",e)}),a.table.modules.localize.bind("pagination|prev",function(e){a.prevBut.innerHTML=e}),a.table.modules.localize.bind("pagination|prev_title",function(e){a.prevBut.setAttribute("aria-label",e),a.prevBut.setAttribute("title",e)}),a.table.modules.localize.bind("pagination|next",function(e){a.nextBut.innerHTML=e}),a.table.modules.localize.bind("pagination|next_title",function(e){a.nextBut.setAttribute("aria-label",e),a.nextBut.setAttribute("title",e)}),a.table.modules.localize.bind("pagination|last",function(e){a.lastBut.innerHTML=e}),a.table.modules.localize.bind("pagination|last_title",function(e){a.lastBut.setAttribute("aria-label",e),a.lastBut.setAttribute("title",e)}),a.firstBut.addEventListener("click",function(){a.setPage(1)}),a.prevBut.addEventListener("click",function(){a.previousPage()}),a.nextBut.addEventListener("click",function(){a.nextPage().then(function(){}).catch(function(){})}),a.lastBut.addEventListener("click",function(){a.setPage(a.max)}),a.table.options.paginationElement&&(a.element=a.table.options.paginationElement),this.pageSizeSelect&&(t=document.createElement("label"),a.table.modules.localize.bind("pagination|page_size",function(e){a.pageSizeSelect.setAttribute("aria-label",e),a.pageSizeSelect.setAttribute("title",e),t.innerHTML=e}),a.element.appendChild(t),a.element.appendChild(a.pageSizeSelect),a.pageSizeSelect.addEventListener("change",function(e){a.setPageSize(a.pageSizeSelect.value),a.setPage(1).then(function(){}).catch(function(){})})),a.element.appendChild(a.firstBut),a.element.appendChild(a.prevBut),a.element.appendChild(a.pagesElement),a.element.appendChild(a.nextBut),a.element.appendChild(a.lastBut),a.table.options.paginationElement||e||a.table.footerManager.append(a.element,a),a.mode=a.table.options.pagination,a.size=a.table.options.paginationSize||Math.floor(a.table.rowManager.getElement().clientHeight/24),a.count=a.table.options.paginationButtonCount,a.generatePageSizeSelectList()},Page.prototype.initializeProgressive=function(e){this.initialize(!0),this.mode="progressive_"+e,this.progressiveLoad=!0},Page.prototype.setDisplayIndex=function(e){this.displayIndex=e},Page.prototype.getDisplayIndex=function(){return this.displayIndex},Page.prototype.setMaxRows=function(e){this.max=e?Math.ceil(e/this.size):1,this.page>this.max&&(this.page=this.max)},Page.prototype.reset=function(e){return("local"==this.mode||e)&&(this.page=1),!0},Page.prototype.setMaxPage=function(e){e=parseInt(e),this.max=e||1,this.page>this.max&&(this.page=this.max,this.trigger())},Page.prototype.setPage=function(e){var t=this;return new Promise(function(a,i){e=parseInt(e),e>0&&e<=t.max?(t.page=e,t.trigger().then(function(){a()}).catch(function(){i()})):(console.warn("Pagination Error - Requested page is out of range of 1 - "+t.max+":",e),i())})},Page.prototype.setPageToRow=function(e){var t=this;return new Promise(function(a,i){var n=t.table.rowManager.getDisplayRows(t.displayIndex-1),s=n.indexOf(e);if(s>-1){var o=Math.ceil((s+1)/t.size);t.setPage(o).then(function(){a()}).catch(function(){i()})}else console.warn("Pagination Error - Requested row is not visible"),i()})},Page.prototype.setPageSize=function(e){e=parseInt(e),e>0&&(this.size=e),this.pageSizeSelect&&this.generatePageSizeSelectList()},Page.prototype._setPageButtons=function(){for(var e=this,t=Math.floor((this.count-1)/2),a=Math.ceil((this.count-1)/2),i=this.max-this.page+t+1<this.count?this.max-this.count+1:Math.max(this.page-t,1),n=this.page<=a?Math.min(this.count,this.max):Math.min(this.page+a,this.max);e.pagesElement.firstChild;)e.pagesElement.removeChild(e.pagesElement.firstChild);1==e.page?(e.firstBut.disabled=!0,e.prevBut.disabled=!0):(e.firstBut.disabled=!1,e.prevBut.disabled=!1),e.page==e.max?(e.lastBut.disabled=!0,e.nextBut.disabled=!0):(e.lastBut.disabled=!1,e.nextBut.disabled=!1);for(var s=i;s<=n;s++)s>0&&s<=e.max&&e.pagesElement.appendChild(e._generatePageButton(s));this.footerRedraw()},Page.prototype._generatePageButton=function(e){var t=this,a=document.createElement("button");return a.classList.add("tabulator-page"),e==t.page&&a.classList.add("active"),a.setAttribute("type","button"),a.setAttribute("role","button"),a.setAttribute("aria-label","Show Page "+e),a.setAttribute("title","Show Page "+e),a.setAttribute("data-page",e),a.textContent=e,a.addEventListener("click",function(a){t.setPage(e)}),a},Page.prototype.previousPage=function(){var e=this;return new Promise(function(t,a){e.page>1?(e.page--,e.trigger().then(function(){t()}).catch(function(){a()})):(console.warn("Pagination Error - Previous page would be less than page 1:",0),a())})},Page.prototype.nextPage=function(){var e=this;return new Promise(function(t,a){e.page<e.max?(e.page++,e.trigger().then(function(){t()}).catch(function(){a()})):(e.progressiveLoad||console.warn("Pagination Error - Next page would be greater than maximum page of "+e.max+":",e.max+1),a())})},Page.prototype.getPage=function(){return this.page},Page.prototype.getPageMax=function(){return this.max},Page.prototype.getPageSize=function(e){return this.size},Page.prototype.getMode=function(){return this.mode},Page.prototype.getRows=function(e){var t,a,i;if("local"==this.mode){t=[],a=this.size*(this.page-1),i=a+parseInt(this.size),this._setPageButtons();for(var n=a;n<i;n++)e[n]&&t.push(e[n]);return t}return this._setPageButtons(),e.slice(0)},Page.prototype.trigger=function(){var e,t=this;return new Promise(function(a,i){switch(t.mode){case"local":e=t.table.rowManager.scrollLeft,t.table.rowManager.refreshActiveData("page"),t.table.rowManager.scrollHorizontal(e),t.table.options.pageLoaded.call(t.table,t.getPage()),a();break;case"remote":case"progressive_load":case"progressive_scroll":t.table.modules.ajax.blockActiveRequest(),t._getRemotePage().then(function(){a()}).catch(function(){i()});break;default:console.warn("Pagination Error - no such pagination mode:",t.mode),i()}})},Page.prototype._getRemotePage=function(){var e,t,a=this,i=this;return new Promise(function(n,s){if(i.table.modExists("ajax",!0)||s(),e=Tabulator.prototype.helpers.deepClone(i.table.modules.ajax.getParams()||{}),t=i.table.modules.ajax.getParams(),t[a.paginationDataSentNames.page]=i.page,a.size&&(t[a.paginationDataSentNames.size]=a.size),a.table.options.ajaxSorting&&a.table.modExists("sort")){var o=i.table.modules.sort.getSort();o.forEach(function(e){delete e.column}),t[a.paginationDataSentNames.sorters]=o}if(a.table.options.ajaxFiltering&&a.table.modExists("filter")){var r=i.table.modules.filter.getFilters(!0,!0);t[a.paginationDataSentNames.filters]=r}i.table.modules.ajax.setParams(t),i.table.modules.ajax.sendRequest(a.progressiveLoad).then(function(e){i._parseRemoteData(e),n()}).catch(function(e){s()}),i.table.modules.ajax.setParams(e)})},Page.prototype._parseRemoteData=function(e){var t,e,a,i=this;if(void 0===e[this.paginationDataReceivedNames.last_page]&&console.warn("Remote Pagination Error - Server response missing '"+this.paginationDataReceivedNames.last_page+"' property"),e[this.paginationDataReceivedNames.data])if(this.max=parseInt(e[this.paginationDataReceivedNames.last_page])||1,this.progressiveLoad)switch(this.mode){case"progressive_load":this.table.rowManager.addRows(e[this.paginationDataReceivedNames.data]),this.page<this.max&&setTimeout(function(){i.nextPage().then(function(){}).catch(function(){})},i.table.options.ajaxProgressiveLoadDelay);break;case"progressive_scroll":e=this.table.rowManager.getData().concat(e[this.paginationDataReceivedNames.data]),this.table.rowManager.setData(e,!0),a=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.element.clientHeight,i.table.rowManager.element.scrollHeight<=i.table.rowManager.element.clientHeight+a&&i.nextPage().then(function(){}).catch(function(){})}else t=this.table.rowManager.scrollLeft,this.table.rowManager.setData(e[this.paginationDataReceivedNames.data]),this.table.rowManager.scrollHorizontal(t),this.table.columnManager.scrollHorizontal(t),this.table.options.pageLoaded.call(this.table,this.getPage());else console.warn("Remote Pagination Error - Server response missing '"+this.paginationDataReceivedNames.data+"' property")},Page.prototype.footerRedraw=function(){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"))},Page.prototype.paginationDataSentNames={page:"page",size:"size",sorters:"sorters",filters:"filters"},Page.prototype.paginationDataReceivedNames={current_page:"current_page",last_page:"last_page",data:"data"},Tabulator.prototype.registerModule("page",Page);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/persistence.js b/backoffice/vendors/tabulator/js.old/modules/persistence.js
new file mode 100644 (file)
index 0000000..4c904e3
--- /dev/null
@@ -0,0 +1,222 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+
+var Persistence = function Persistence(table) {
+       this.table = table; //hold Tabulator object
+       this.mode = "";
+       this.id = "";
+       this.persistProps = ["field", "width", "visible"];
+};
+
+// Test for whether localStorage is available for use.
+Persistence.prototype.localStorageTest = function () {
+       var testKey = "_tabulator_test";
+
+       try {
+               window.localStorage.setItem(testKey, testKey);
+               window.localStorage.removeItem(testKey);
+               return true;
+       } catch (e) {
+               return false;
+       }
+};
+
+//setup parameters
+Persistence.prototype.initialize = function (mode, id) {
+       //determine persistent layout storage type
+
+       this.mode = mode !== true ? mode : this.localStorageTest() ? "local" : "cookie";
+
+       //set storage tag
+       this.id = "tabulator-" + (id || this.table.element.getAttribute("id") || "");
+};
+
+//load saved definitions
+Persistence.prototype.load = function (type, current) {
+
+       var data = this.retreiveData(type);
+
+       if (current) {
+               data = data ? this.mergeDefinition(current, data) : current;
+       }
+
+       return data;
+};
+
+//retreive data from memory
+Persistence.prototype.retreiveData = function (type) {
+       var data = "",
+           id = this.id + (type === "columns" ? "" : "-" + type);
+
+       switch (this.mode) {
+               case "local":
+                       data = localStorage.getItem(id);
+                       break;
+
+               case "cookie":
+
+                       //find cookie
+                       var cookie = document.cookie,
+                           cookiePos = cookie.indexOf(id + "="),
+                           end = void 0;
+
+                       //if cookie exists, decode and load column data into tabulator
+                       if (cookiePos > -1) {
+                               cookie = cookie.substr(cookiePos);
+
+                               end = cookie.indexOf(";");
+
+                               if (end > -1) {
+                                       cookie = cookie.substr(0, end);
+                               }
+
+                               data = cookie.replace(id + "=", "");
+                       }
+                       break;
+
+               default:
+                       console.warn("Persistence Load Error - invalid mode selected", this.mode);
+       }
+
+       return data ? JSON.parse(data) : false;
+};
+
+//merge old and new column definitions
+Persistence.prototype.mergeDefinition = function (oldCols, newCols) {
+       var self = this,
+           output = [];
+
+       // oldCols = oldCols || [];
+       newCols = newCols || [];
+
+       newCols.forEach(function (column, to) {
+
+               var from = self._findColumn(oldCols, column);
+
+               if (from) {
+
+                       from.width = column.width;
+                       from.visible = column.visible;
+
+                       if (from.columns) {
+                               from.columns = self.mergeDefinition(from.columns, column.columns);
+                       }
+
+                       output.push(from);
+               }
+       });
+       oldCols.forEach(function (column, i) {
+               var from = self._findColumn(newCols, column);
+               if (!from) {
+                       if (output.length > i) {
+                               output.splice(i, 0, column);
+                       } else {
+                               output.push(column);
+                       }
+               }
+       });
+
+       return output;
+};
+
+//find matching columns
+Persistence.prototype._findColumn = function (columns, subject) {
+       var type = subject.columns ? "group" : subject.field ? "field" : "object";
+
+       return columns.find(function (col) {
+               switch (type) {
+                       case "group":
+                               return col.title === subject.title && col.columns.length === subject.columns.length;
+                               break;
+
+                       case "field":
+                               return col.field === subject.field;
+                               break;
+
+                       case "object":
+                               return col === subject;
+                               break;
+               }
+       });
+};
+
+//save data
+Persistence.prototype.save = function (type) {
+       var data = {};
+
+       switch (type) {
+               case "columns":
+                       data = this.parseColumns(this.table.columnManager.getColumns());
+                       break;
+
+               case "filter":
+                       data = this.table.modules.filter.getFilters();
+                       break;
+
+               case "sort":
+                       data = this.validateSorters(this.table.modules.sort.getSort());
+                       break;
+       }
+
+       var id = this.id + (type === "columns" ? "" : "-" + type);
+
+       this.saveData(id, data);
+};
+
+//ensure sorters contain no function data
+Persistence.prototype.validateSorters = function (data) {
+       data.forEach(function (item) {
+               item.column = item.field;
+               delete item.field;
+       });
+
+       return data;
+};
+
+//save data to chosed medium
+Persistence.prototype.saveData = function (id, data) {
+
+       data = JSON.stringify(data);
+
+       switch (this.mode) {
+               case "local":
+                       localStorage.setItem(id, data);
+                       break;
+
+               case "cookie":
+                       var expireDate = new Date();
+                       expireDate.setDate(expireDate.getDate() + 10000);
+
+                       //save cookie
+                       document.cookie = id + "=" + data + "; expires=" + expireDate.toUTCString();
+                       break;
+
+               default:
+                       console.warn("Persistence Save Error - invalid mode selected", this.mode);
+       }
+};
+
+//build permission list
+Persistence.prototype.parseColumns = function (columns) {
+       var self = this,
+           definitions = [];
+
+       columns.forEach(function (column) {
+               var def = {};
+
+               if (column.isGroup) {
+                       def.title = column.getDefinition().title;
+                       def.columns = self.parseColumns(column.getColumns());
+               } else {
+                       def.title = column.getDefinition().title;
+                       def.field = column.getField();
+                       def.width = column.getWidth();
+                       def.visible = column.visible;
+               }
+
+               definitions.push(def);
+       });
+
+       return definitions;
+};
+
+Tabulator.prototype.registerModule("persistence", Persistence);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/persistence.min.js b/backoffice/vendors/tabulator/js.old/modules/persistence.min.js
new file mode 100644 (file)
index 0000000..10efece
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+var Persistence=function(e){this.table=e,this.mode="",this.id="",this.persistProps=["field","width","visible"]};Persistence.prototype.localStorageTest=function(){var e="_tabulator_test";try{return window.localStorage.setItem(e,e),window.localStorage.removeItem(e),!0}catch(e){return!1}},Persistence.prototype.initialize=function(e,t){this.mode=!0!==e?e:this.localStorageTest()?"local":"cookie",this.id="tabulator-"+(t||this.table.element.getAttribute("id")||"")},Persistence.prototype.load=function(e,t){var i=this.retreiveData(e);return t&&(i=i?this.mergeDefinition(t,i):t),i},Persistence.prototype.retreiveData=function(e){var t="",i=this.id+("columns"===e?"":"-"+e);switch(this.mode){case"local":t=localStorage.getItem(i);break;case"cookie":var o=document.cookie,s=o.indexOf(i+"="),r=void 0;s>-1&&(o=o.substr(s),r=o.indexOf(";"),r>-1&&(o=o.substr(0,r)),t=o.replace(i+"=",""));break;default:console.warn("Persistence Load Error - invalid mode selected",this.mode)}return!!t&&JSON.parse(t)},Persistence.prototype.mergeDefinition=function(e,t){var i=this,o=[];return t=t||[],t.forEach(function(t,s){var r=i._findColumn(e,t);r&&(r.width=t.width,r.visible=t.visible,r.columns&&(r.columns=i.mergeDefinition(r.columns,t.columns)),o.push(r))}),e.forEach(function(e,s){i._findColumn(t,e)||(o.length>s?o.splice(s,0,e):o.push(e))}),o},Persistence.prototype._findColumn=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}})},Persistence.prototype.save=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())}var i=this.id+("columns"===e?"":"-"+e);this.saveData(i,t)},Persistence.prototype.validateSorters=function(e){return e.forEach(function(e){e.column=e.field,delete e.field}),e},Persistence.prototype.saveData=function(e,t){switch(t=JSON.stringify(t),this.mode){case"local":localStorage.setItem(e,t);break;case"cookie":var i=new Date;i.setDate(i.getDate()+1e4),document.cookie=e+"="+t+"; expires="+i.toUTCString();break;default:console.warn("Persistence Save Error - invalid mode selected",this.mode)}},Persistence.prototype.parseColumns=function(e){var t=this,i=[];return e.forEach(function(e){var o={};e.isGroup?(o.title=e.getDefinition().title,o.columns=t.parseColumns(e.getColumns())):(o.title=e.getDefinition().title,o.field=e.getField(),o.width=e.getWidth(),o.visible=e.visible),i.push(o)}),i},Tabulator.prototype.registerModule("persistence",Persistence);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/print.js b/backoffice/vendors/tabulator/js.old/modules/print.js
new file mode 100644 (file)
index 0000000..799a5ed
--- /dev/null
@@ -0,0 +1,96 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+
+var Print = function Print(table) {
+       this.table = table; //hold Tabulator object
+       this.element = false;
+       this.manualBlock = false;
+};
+
+Print.prototype.initialize = function () {
+       window.addEventListener("beforeprint", this.replaceTable.bind(this));
+       window.addEventListener("afterprint", this.cleanup.bind(this));
+};
+
+Print.prototype.replaceTable = function () {
+       if (!this.manualBlock) {
+               this.element = document.createElement("div");
+               this.element.classList.add("tabulator-print-table");
+
+               this.element.appendChild(this.table.modules.htmlTableExport.genereateTable(this.table.options.printConfig, this.table.options.printCopyStyle, this.table.options.printVisibleRows, "print"));
+
+               this.table.element.style.display = "none";
+
+               this.table.element.parentNode.insertBefore(this.element, this.table.element);
+       }
+};
+
+Print.prototype.cleanup = function () {
+       document.body.classList.remove("tabulator-print-fullscreen-hide");
+
+       if (this.element && this.element.parentNode) {
+               this.element.parentNode.removeChild(this.element);
+               this.table.element.style.display = "";
+       }
+};
+
+Print.prototype.printFullscreen = function (visible, style, config) {
+       var scrollX = window.scrollX,
+           scrollY = window.scrollY,
+           headerEl = document.createElement("div"),
+           footerEl = document.createElement("div"),
+           tableEl = this.table.modules.htmlTableExport.genereateTable(typeof config != "undefined" ? config : this.table.options.printConfig, typeof style != "undefined" ? style : this.table.options.printCopyStyle, visible, "print"),
+           headerContent,
+           footerContent;
+
+       this.manualBlock = true;
+
+       this.element = document.createElement("div");
+       this.element.classList.add("tabulator-print-fullscreen");
+
+       if (this.table.options.printHeader) {
+               headerEl.classList.add("tabulator-print-header");
+
+               headerContent = typeof this.table.options.printHeader == "function" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader;
+
+               if (typeof headerContent == "string") {
+                       headerEl.innerHTML = headerContent;
+               } else {
+                       headerEl.appendChild(headerContent);
+               }
+
+               this.element.appendChild(headerEl);
+       }
+
+       this.element.appendChild(tableEl);
+
+       if (this.table.options.printFooter) {
+               footerEl.classList.add("tabulator-print-footer");
+
+               footerContent = typeof this.table.options.printFooter == "function" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter;
+
+               if (typeof footerContent == "string") {
+                       footerEl.innerHTML = footerContent;
+               } else {
+                       footerEl.appendChild(footerContent);
+               }
+
+               this.element.appendChild(footerEl);
+       }
+
+       document.body.classList.add("tabulator-print-fullscreen-hide");
+       document.body.appendChild(this.element);
+
+       if (this.table.options.printFormatter) {
+               this.table.options.printFormatter(this.element, tableEl);
+       }
+
+       window.print();
+
+       this.cleanup();
+
+       window.scrollTo(scrollX, scrollY);
+
+       this.manualBlock = false;
+};
+
+Tabulator.prototype.registerModule("print", Print);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/print.min.js b/backoffice/vendors/tabulator/js.old/modules/print.min.js
new file mode 100644 (file)
index 0000000..24a5cb1
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+var Print=function(t){this.table=t,this.element=!1,this.manualBlock=!1};Print.prototype.initialize=function(){window.addEventListener("beforeprint",this.replaceTable.bind(this)),window.addEventListener("afterprint",this.cleanup.bind(this))},Print.prototype.replaceTable=function(){this.manualBlock||(this.element=document.createElement("div"),this.element.classList.add("tabulator-print-table"),this.element.appendChild(this.table.modules.htmlTableExport.genereateTable(this.table.options.printConfig,this.table.options.printCopyStyle,this.table.options.printVisibleRows,"print")),this.table.element.style.display="none",this.table.element.parentNode.insertBefore(this.element,this.table.element))},Print.prototype.cleanup=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="")},Print.prototype.printFullscreen=function(t,e,i){var n,l,o=window.scrollX,s=window.scrollY,a=document.createElement("div"),r=document.createElement("div"),p=this.table.modules.htmlTableExport.genereateTable(void 0!==i?i:this.table.options.printConfig,void 0!==e?e:this.table.options.printCopyStyle,t,"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"),n="function"==typeof this.table.options.printHeader?this.table.options.printHeader.call(this.table):this.table.options.printHeader,"string"==typeof n?a.innerHTML=n:a.appendChild(n),this.element.appendChild(a)),this.element.appendChild(p),this.table.options.printFooter&&(r.classList.add("tabulator-print-footer"),l="function"==typeof this.table.options.printFooter?this.table.options.printFooter.call(this.table):this.table.options.printFooter,"string"==typeof l?r.innerHTML=l:r.appendChild(l),this.element.appendChild(r)),document.body.classList.add("tabulator-print-fullscreen-hide"),document.body.appendChild(this.element),this.table.options.printFormatter&&this.table.options.printFormatter(this.element,p),window.print(),this.cleanup(),window.scrollTo(o,s),this.manualBlock=!1},Tabulator.prototype.registerModule("print",Print);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/reactive_data.js b/backoffice/vendors/tabulator/js.old/modules/reactive_data.js
new file mode 100644 (file)
index 0000000..c403d2d
--- /dev/null
@@ -0,0 +1,235 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+
+var ReactiveData = function ReactiveData(table) {
+       this.table = table; //hold Tabulator object
+       this.data = false;
+       this.blocked = false; //block reactivity while performing update
+       this.origFuncs = {}; // hold original data array functions to allow replacement after data is done with
+       this.currentVersion = 0;
+};
+
+ReactiveData.prototype.watchData = function (data) {
+       var self = this,
+           pushFunc,
+           version;
+
+       this.currentVersion++;
+
+       version = this.currentVersion;
+
+       self.unwatchData();
+
+       self.data = data;
+
+       //override array push function
+       self.origFuncs.push = data.push;
+
+       Object.defineProperty(self.data, "push", {
+               enumerable: false,
+               configurable: true,
+               value: function value() {
+                       var args = Array.from(arguments);
+
+                       if (!self.blocked && version === self.currentVersion) {
+                               args.forEach(function (arg) {
+                                       self.table.rowManager.addRowActual(arg, false);
+                               });
+                       }
+
+                       return self.origFuncs.push.apply(data, arguments);
+               }
+       });
+
+       //override array unshift function
+       self.origFuncs.unshift = data.unshift;
+
+       Object.defineProperty(self.data, "unshift", {
+               enumerable: false,
+               configurable: true,
+               value: function value() {
+                       var args = Array.from(arguments);
+
+                       if (!self.blocked && version === self.currentVersion) {
+                               args.forEach(function (arg) {
+                                       self.table.rowManager.addRowActual(arg, true);
+                               });
+                       }
+
+                       return self.origFuncs.unshift.apply(data, arguments);
+               }
+       });
+
+       //override array shift function
+       self.origFuncs.shift = data.shift;
+
+       Object.defineProperty(self.data, "shift", {
+               enumerable: false,
+               configurable: true,
+               value: function value() {
+                       var row;
+
+                       if (!self.blocked && version === self.currentVersion) {
+                               if (self.data.length) {
+                                       row = self.table.rowManager.getRowFromDataObject(self.data[0]);
+
+                                       if (row) {
+                                               row.deleteActual();
+                                       }
+                               }
+                       }
+
+                       return self.origFuncs.shift.call(data);
+               }
+       });
+
+       //override array pop function
+       self.origFuncs.pop = data.pop;
+
+       Object.defineProperty(self.data, "pop", {
+               enumerable: false,
+               configurable: true,
+               value: function value() {
+                       var row;
+                       if (!self.blocked && version === self.currentVersion) {
+                               if (self.data.length) {
+                                       row = self.table.rowManager.getRowFromDataObject(self.data[self.data.length - 1]);
+
+                                       if (row) {
+                                               row.deleteActual();
+                                       }
+                               }
+                       }
+                       return self.origFuncs.pop.call(data);
+               }
+       });
+
+       //override array splice function
+       self.origFuncs.splice = data.splice;
+
+       Object.defineProperty(self.data, "splice", {
+               enumerable: false,
+               configurable: true,
+               value: function value() {
+                       var args = Array.from(arguments),
+                           start = args[0] < 0 ? data.length + args[0] : args[0],
+                           end = args[1],
+                           newRows = args[2] ? args.slice(2) : false,
+                           startRow;
+
+                       if (!self.blocked && version === self.currentVersion) {
+
+                               //add new rows
+                               if (newRows) {
+                                       startRow = data[start] ? self.table.rowManager.getRowFromDataObject(data[start]) : false;
+
+                                       if (startRow) {
+                                               newRows.forEach(function (rowData) {
+                                                       self.table.rowManager.addRowActual(rowData, true, startRow, true);
+                                               });
+                                       } else {
+                                               newRows = newRows.slice().reverse();
+
+                                               newRows.forEach(function (rowData) {
+                                                       self.table.rowManager.addRowActual(rowData, true, false, true);
+                                               });
+                                       }
+                               }
+
+                               //delete removed rows
+                               if (end !== 0) {
+                                       var oldRows = data.slice(start, typeof args[1] === "undefined" ? args[1] : start + end);
+
+                                       oldRows.forEach(function (rowData, i) {
+                                               var row = self.table.rowManager.getRowFromDataObject(rowData);
+
+                                               if (row) {
+                                                       row.deleteActual(i !== oldRows.length - 1);
+                                               }
+                                       });
+                               }
+
+                               if (newRows || end !== 0) {
+                                       self.table.rowManager.reRenderInPosition();
+                               }
+                       }
+
+                       return self.origFuncs.splice.apply(data, arguments);
+               }
+       });
+};
+
+ReactiveData.prototype.unwatchData = function () {
+       if (this.data !== false) {
+               for (var key in this.origFuncs) {
+                       Object.defineProperty(this.data, key, {
+                               enumerable: true,
+                               configurable: true,
+                               writable: true,
+                               value: this.origFuncs.key
+                       });
+               }
+       }
+};
+
+ReactiveData.prototype.watchRow = function (row) {
+       var self = this,
+           data = row.getData();
+
+       this.blocked = true;
+
+       for (var key in data) {
+               this.watchKey(row, data, key);
+       }
+
+       this.blocked = false;
+};
+
+ReactiveData.prototype.watchKey = function (row, data, key) {
+       var self = this,
+           props = Object.getOwnPropertyDescriptor(data, key),
+           value = data[key],
+           version = this.currentVersion;
+
+       Object.defineProperty(data, key, {
+               set: function set(newValue) {
+                       value = newValue;
+                       if (!self.blocked && version === self.currentVersion) {
+                               var update = {};
+                               update[key] = newValue;
+                               row.updateData(update);
+                       }
+
+                       if (props.set) {
+                               props.set(newValue);
+                       }
+               },
+               get: function get() {
+
+                       if (props.get) {
+                               props.get();
+                       }
+
+                       return value;
+               }
+       });
+};
+
+ReactiveData.prototype.unwatchRow = function (row) {
+       var data = row.getData();
+
+       for (var key in data) {
+               Object.defineProperty(data, key, {
+                       value: data[key]
+               });
+       }
+};
+
+ReactiveData.prototype.block = function () {
+       this.blocked = true;
+};
+
+ReactiveData.prototype.unblock = function () {
+       this.blocked = false;
+};
+
+Tabulator.prototype.registerModule("reactiveData", ReactiveData);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/reactive_data.min.js b/backoffice/vendors/tabulator/js.old/modules/reactive_data.min.js
new file mode 100644 (file)
index 0000000..4697757
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+var ReactiveData=function(e){this.table=e,this.data=!1,this.blocked=!1,this.origFuncs={},this.currentVersion=0};ReactiveData.prototype.watchData=function(e){var t,a=this;this.currentVersion++,t=this.currentVersion,a.unwatchData(),a.data=e,a.origFuncs.push=e.push,Object.defineProperty(a.data,"push",{enumerable:!1,configurable:!0,value:function(){var r=Array.from(arguments);return a.blocked||t!==a.currentVersion||r.forEach(function(e){a.table.rowManager.addRowActual(e,!1)}),a.origFuncs.push.apply(e,arguments)}}),a.origFuncs.unshift=e.unshift,Object.defineProperty(a.data,"unshift",{enumerable:!1,configurable:!0,value:function(){var r=Array.from(arguments);return a.blocked||t!==a.currentVersion||r.forEach(function(e){a.table.rowManager.addRowActual(e,!0)}),a.origFuncs.unshift.apply(e,arguments)}}),a.origFuncs.shift=e.shift,Object.defineProperty(a.data,"shift",{enumerable:!1,configurable:!0,value:function(){var r;return a.blocked||t!==a.currentVersion||a.data.length&&(r=a.table.rowManager.getRowFromDataObject(a.data[0]))&&r.deleteActual(),a.origFuncs.shift.call(e)}}),a.origFuncs.pop=e.pop,Object.defineProperty(a.data,"pop",{enumerable:!1,configurable:!0,value:function(){var r;return a.blocked||t!==a.currentVersion||a.data.length&&(r=a.table.rowManager.getRowFromDataObject(a.data[a.data.length-1]))&&r.deleteActual(),a.origFuncs.pop.call(e)}}),a.origFuncs.splice=e.splice,Object.defineProperty(a.data,"splice",{enumerable:!1,configurable:!0,value:function(){var r,o=Array.from(arguments),n=o[0]<0?e.length+o[0]:o[0],c=o[1],i=!!o[2]&&o.slice(2);if(!a.blocked&&t===a.currentVersion){if(i&&(r=!!e[n]&&a.table.rowManager.getRowFromDataObject(e[n]),r?i.forEach(function(e){a.table.rowManager.addRowActual(e,!0,r,!0)}):(i=i.slice().reverse(),i.forEach(function(e){a.table.rowManager.addRowActual(e,!0,!1,!0)}))),0!==c){var u=e.slice(n,void 0===o[1]?o[1]:n+c);u.forEach(function(e,t){var r=a.table.rowManager.getRowFromDataObject(e);r&&r.deleteActual(t!==u.length-1)})}(i||0!==c)&&a.table.rowManager.reRenderInPosition()}return a.origFuncs.splice.apply(e,arguments)}})},ReactiveData.prototype.unwatchData=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})},ReactiveData.prototype.watchRow=function(e){var t=e.getData();this.blocked=!0;for(var a in t)this.watchKey(e,t,a);this.blocked=!1},ReactiveData.prototype.watchKey=function(e,t,a){var r=this,o=Object.getOwnPropertyDescriptor(t,a),n=t[a],c=this.currentVersion;Object.defineProperty(t,a,{set:function(t){if(n=t,!r.blocked&&c===r.currentVersion){var i={};i[a]=t,e.updateData(i)}o.set&&o.set(t)},get:function(){return o.get&&o.get(),n}})},ReactiveData.prototype.unwatchRow=function(e){var t=e.getData();for(var a in t)Object.defineProperty(t,a,{value:t[a]})},ReactiveData.prototype.block=function(){this.blocked=!0},ReactiveData.prototype.unblock=function(){this.blocked=!1},Tabulator.prototype.registerModule("reactiveData",ReactiveData);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/resize_columns.js b/backoffice/vendors/tabulator/js.old/modules/resize_columns.js
new file mode 100644 (file)
index 0000000..f8929c4
--- /dev/null
@@ -0,0 +1,161 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+
+var ResizeColumns = function ResizeColumns(table) {
+       this.table = table; //hold Tabulator object
+       this.startColumn = false;
+       this.startX = false;
+       this.startWidth = false;
+       this.handle = null;
+       this.prevHandle = null;
+};
+
+ResizeColumns.prototype.initializeColumn = function (type, column, element) {
+       var self = this,
+           variableHeight = false,
+           mode = this.table.options.resizableColumns;
+
+       //set column resize mode
+       if (type === "header") {
+               variableHeight = column.definition.formatter == "textarea" || column.definition.variableHeight;
+               column.modules.resize = { variableHeight: variableHeight };
+       }
+
+       if (mode === true || mode == type) {
+
+               var handle = document.createElement('div');
+               handle.className = "tabulator-col-resize-handle";
+
+               var prevHandle = document.createElement('div');
+               prevHandle.className = "tabulator-col-resize-handle prev";
+
+               handle.addEventListener("click", function (e) {
+                       e.stopPropagation();
+               });
+
+               var handleDown = function handleDown(e) {
+                       var nearestColumn = column.getLastColumn();
+
+                       if (nearestColumn && self._checkResizability(nearestColumn)) {
+                               self.startColumn = column;
+                               self._mouseDown(e, nearestColumn, handle);
+                       }
+               };
+
+               handle.addEventListener("mousedown", handleDown);
+               handle.addEventListener("touchstart", handleDown, { passive: true });
+
+               //reszie column on  double click
+               handle.addEventListener("dblclick", function (e) {
+                       var col = column.getLastColumn();
+
+                       if (col && self._checkResizability(col)) {
+                               col.reinitializeWidth(true);
+                       }
+               });
+
+               prevHandle.addEventListener("click", function (e) {
+                       e.stopPropagation();
+               });
+
+               var prevHandleDown = function prevHandleDown(e) {
+                       var nearestColumn, colIndex, prevColumn;
+
+                       nearestColumn = column.getFirstColumn();
+
+                       if (nearestColumn) {
+                               colIndex = self.table.columnManager.findColumnIndex(nearestColumn);
+                               prevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;
+
+                               if (prevColumn && self._checkResizability(prevColumn)) {
+                                       self.startColumn = column;
+                                       self._mouseDown(e, prevColumn, prevHandle);
+                               }
+                       }
+               };
+
+               prevHandle.addEventListener("mousedown", prevHandleDown);
+               prevHandle.addEventListener("touchstart", prevHandleDown, { passive: true });
+
+               //resize column on double click
+               prevHandle.addEventListener("dblclick", function (e) {
+                       var nearestColumn, colIndex, prevColumn;
+
+                       nearestColumn = column.getFirstColumn();
+
+                       if (nearestColumn) {
+                               colIndex = self.table.columnManager.findColumnIndex(nearestColumn);
+                               prevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;
+
+                               if (prevColumn && self._checkResizability(prevColumn)) {
+                                       prevColumn.reinitializeWidth(true);
+                               }
+                       }
+               });
+
+               element.appendChild(handle);
+               element.appendChild(prevHandle);
+       }
+};
+
+ResizeColumns.prototype._checkResizability = function (column) {
+       return typeof column.definition.resizable != "undefined" ? column.definition.resizable : this.table.options.resizableColumns;
+};
+
+ResizeColumns.prototype._mouseDown = function (e, column, handle) {
+       var self = this;
+
+       self.table.element.classList.add("tabulator-block-select");
+
+       function mouseMove(e) {
+               // self.table.columnManager.tempScrollBlock();
+
+               column.setWidth(self.startWidth + ((typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX) - self.startX));
+
+               if (!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight) {
+                       column.checkCellHeights();
+               }
+       }
+
+       function mouseUp(e) {
+
+               //block editor from taking action while resizing is taking place
+               if (self.startColumn.modules.edit) {
+                       self.startColumn.modules.edit.blocked = false;
+               }
+
+               if (self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight) {
+                       column.checkCellHeights();
+               }
+
+               document.body.removeEventListener("mouseup", mouseUp);
+               document.body.removeEventListener("mousemove", mouseMove);
+
+               handle.removeEventListener("touchmove", mouseMove);
+               handle.removeEventListener("touchend", mouseUp);
+
+               self.table.element.classList.remove("tabulator-block-select");
+
+               if (self.table.options.persistentLayout && self.table.modExists("persistence", true)) {
+                       self.table.modules.persistence.save("columns");
+               }
+
+               self.table.options.columnResized.call(self.table, column.getComponent());
+       }
+
+       e.stopPropagation(); //prevent resize from interfereing with movable columns
+
+       //block editor from taking action while resizing is taking place
+       if (self.startColumn.modules.edit) {
+               self.startColumn.modules.edit.blocked = true;
+       }
+
+       self.startX = typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX;
+       self.startWidth = column.getWidth();
+
+       document.body.addEventListener("mousemove", mouseMove);
+       document.body.addEventListener("mouseup", mouseUp);
+       handle.addEventListener("touchmove", mouseMove, { passive: true });
+       handle.addEventListener("touchend", mouseUp);
+};
+
+Tabulator.prototype.registerModule("resizeColumns", ResizeColumns);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/resize_columns.min.js b/backoffice/vendors/tabulator/js.old/modules/resize_columns.min.js
new file mode 100644 (file)
index 0000000..a7b2701
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+var ResizeColumns=function(e){this.table=e,this.startColumn=!1,this.startX=!1,this.startWidth=!1,this.handle=null,this.prevHandle=null};ResizeColumns.prototype.initializeColumn=function(e,t,n){var i=this,o=!1,s=this.table.options.resizableColumns;if("header"===e&&(o="textarea"==t.definition.formatter||t.definition.variableHeight,t.modules.resize={variableHeight:o}),!0===s||s==e){var a=document.createElement("div");a.className="tabulator-col-resize-handle";var l=document.createElement("div");l.className="tabulator-col-resize-handle prev",a.addEventListener("click",function(e){e.stopPropagation()});var r=function(e){var n=t.getLastColumn();n&&i._checkResizability(n)&&(i.startColumn=t,i._mouseDown(e,n,a))};a.addEventListener("mousedown",r),a.addEventListener("touchstart",r,{passive:!0}),a.addEventListener("dblclick",function(e){var n=t.getLastColumn();n&&i._checkResizability(n)&&n.reinitializeWidth(!0)}),l.addEventListener("click",function(e){e.stopPropagation()});var d=function(e){var n,o,s;(n=t.getFirstColumn())&&(o=i.table.columnManager.findColumnIndex(n),(s=o>0&&i.table.columnManager.getColumnByIndex(o-1))&&i._checkResizability(s)&&(i.startColumn=t,i._mouseDown(e,s,l)))};l.addEventListener("mousedown",d),l.addEventListener("touchstart",d,{passive:!0}),l.addEventListener("dblclick",function(e){var n,o,s;(n=t.getFirstColumn())&&(o=i.table.columnManager.findColumnIndex(n),(s=o>0&&i.table.columnManager.getColumnByIndex(o-1))&&i._checkResizability(s)&&s.reinitializeWidth(!0))}),n.appendChild(a),n.appendChild(l)}},ResizeColumns.prototype._checkResizability=function(e){return void 0!==e.definition.resizable?e.definition.resizable:this.table.options.resizableColumns},ResizeColumns.prototype._mouseDown=function(e,t,n){function i(e){t.setWidth(s.startWidth+((void 0===e.screenX?e.touches[0].screenX:e.screenX)-s.startX)),!s.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights()}function o(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",o),document.body.removeEventListener("mousemove",i),n.removeEventListener("touchmove",i),n.removeEventListener("touchend",o),s.table.element.classList.remove("tabulator-block-select"),s.table.options.persistentLayout&&s.table.modExists("persistence",!0)&&s.table.modules.persistence.save("columns"),s.table.options.columnResized.call(s.table,t.getComponent())}var s=this;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",i),document.body.addEventListener("mouseup",o),n.addEventListener("touchmove",i,{passive:!0}),n.addEventListener("touchend",o)},Tabulator.prototype.registerModule("resizeColumns",ResizeColumns);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/resize_rows.js b/backoffice/vendors/tabulator/js.old/modules/resize_rows.js
new file mode 100644 (file)
index 0000000..cb4a2b8
--- /dev/null
@@ -0,0 +1,98 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+
+var ResizeRows = function ResizeRows(table) {
+       this.table = table; //hold Tabulator object
+       this.startColumn = false;
+       this.startY = false;
+       this.startHeight = false;
+       this.handle = null;
+       this.prevHandle = null;
+};
+
+ResizeRows.prototype.initializeRow = function (row) {
+       var self = this,
+           rowEl = row.getElement();
+
+       var handle = document.createElement('div');
+       handle.className = "tabulator-row-resize-handle";
+
+       var prevHandle = document.createElement('div');
+       prevHandle.className = "tabulator-row-resize-handle prev";
+
+       handle.addEventListener("click", function (e) {
+               e.stopPropagation();
+       });
+
+       var handleDown = function handleDown(e) {
+               self.startRow = row;
+               self._mouseDown(e, row, handle);
+       };
+
+       handle.addEventListener("mousedown", handleDown, { passive: true });
+       handle.addEventListener("touchstart", handleDown);
+
+       prevHandle.addEventListener("click", function (e) {
+               e.stopPropagation();
+       });
+
+       var prevHandleDown = function prevHandleDown(e) {
+               var prevRow = self.table.rowManager.prevDisplayRow(row);
+
+               if (prevRow) {
+                       self.startRow = prevRow;
+                       self._mouseDown(e, prevRow, prevHandle);
+               }
+       };
+
+       prevHandle.addEventListener("mousedown", prevHandleDown);
+       prevHandle.addEventListener("touchstart", prevHandleDown, { passive: true });
+
+       rowEl.appendChild(handle);
+       rowEl.appendChild(prevHandle);
+};
+
+ResizeRows.prototype._mouseDown = function (e, row, handle) {
+       var self = this;
+
+       self.table.element.classList.add("tabulator-block-select");
+
+       function mouseMove(e) {
+               row.setHeight(self.startHeight + ((typeof e.screenY === "undefined" ? e.touches[0].screenY : e.screenY) - self.startY));
+       }
+
+       function mouseUp(e) {
+
+               // //block editor from taking action while resizing is taking place
+               // if(self.startColumn.modules.edit){
+               //      self.startColumn.modules.edit.blocked = false;
+               // }
+
+               document.body.removeEventListener("mouseup", mouseMove);
+               document.body.removeEventListener("mousemove", mouseMove);
+
+               handle.removeEventListener("touchmove", mouseMove);
+               handle.removeEventListener("touchend", mouseUp);
+
+               self.table.element.classList.remove("tabulator-block-select");
+
+               self.table.options.rowResized.call(this.table, row.getComponent());
+       }
+
+       e.stopPropagation(); //prevent resize from interfereing with movable columns
+
+       //block editor from taking action while resizing is taking place
+       // if(self.startColumn.modules.edit){
+       //      self.startColumn.modules.edit.blocked = true;
+       // }
+
+       self.startY = typeof e.screenY === "undefined" ? e.touches[0].screenY : e.screenY;
+       self.startHeight = row.getHeight();
+
+       document.body.addEventListener("mousemove", mouseMove);
+       document.body.addEventListener("mouseup", mouseUp);
+
+       handle.addEventListener("touchmove", mouseMove, { passive: true });
+       handle.addEventListener("touchend", mouseUp);
+};
+
+Tabulator.prototype.registerModule("resizeRows", ResizeRows);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/resize_rows.min.js b/backoffice/vendors/tabulator/js.old/modules/resize_rows.min.js
new file mode 100644 (file)
index 0000000..e5d08f8
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+var ResizeRows=function(e){this.table=e,this.startColumn=!1,this.startY=!1,this.startHeight=!1,this.handle=null,this.prevHandle=null};ResizeRows.prototype.initializeRow=function(e){var t=this,o=e.getElement(),s=document.createElement("div");s.className="tabulator-row-resize-handle";var n=document.createElement("div");n.className="tabulator-row-resize-handle prev",s.addEventListener("click",function(e){e.stopPropagation()});var a=function(o){t.startRow=e,t._mouseDown(o,e,s)};s.addEventListener("mousedown",a,{passive:!0}),s.addEventListener("touchstart",a),n.addEventListener("click",function(e){e.stopPropagation()});var r=function(o){var s=t.table.rowManager.prevDisplayRow(e);s&&(t.startRow=s,t._mouseDown(o,s,n))};n.addEventListener("mousedown",r),n.addEventListener("touchstart",r,{passive:!0}),o.appendChild(s),o.appendChild(n)},ResizeRows.prototype._mouseDown=function(e,t,o){function s(e){t.setHeight(a.startHeight+((void 0===e.screenY?e.touches[0].screenY:e.screenY)-a.startY))}function n(e){document.body.removeEventListener("mouseup",s),document.body.removeEventListener("mousemove",s),o.removeEventListener("touchmove",s),o.removeEventListener("touchend",n),a.table.element.classList.remove("tabulator-block-select"),a.table.options.rowResized.call(this.table,t.getComponent())}var a=this;a.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),a.startY=void 0===e.screenY?e.touches[0].screenY:e.screenY,a.startHeight=t.getHeight(),document.body.addEventListener("mousemove",s),document.body.addEventListener("mouseup",n),o.addEventListener("touchmove",s,{passive:!0}),o.addEventListener("touchend",n)},Tabulator.prototype.registerModule("resizeRows",ResizeRows);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/resize_table.js b/backoffice/vendors/tabulator/js.old/modules/resize_table.js
new file mode 100644 (file)
index 0000000..75f7294
--- /dev/null
@@ -0,0 +1,38 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+
+var ResizeTable = function ResizeTable(table) {
+       this.table = table; //hold Tabulator object
+       this.binding = false;
+       this.observer = false;
+};
+
+ResizeTable.prototype.initialize = function (row) {
+       var table = this.table,
+           observer;
+
+       if (typeof ResizeObserver !== "undefined" && table.rowManager.getRenderMode() === "virtual") {
+               this.observer = new ResizeObserver(function (entry) {
+                       table.redraw();
+               });
+
+               this.observer.observe(table.element);
+       } else {
+               this.binding = function () {
+                       table.redraw();
+               };
+
+               window.addEventListener("resize", this.binding);
+       }
+};
+
+ResizeTable.prototype.clearBindings = function (row) {
+       if (this.binding) {
+               window.removeEventListener("resize", this.binding);
+       }
+
+       if (this.observer) {
+               this.observer.unobserve(this.table.element);
+       }
+};
+
+Tabulator.prototype.registerModule("resizeTable", ResizeTable);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/resize_table.min.js b/backoffice/vendors/tabulator/js.old/modules/resize_table.min.js
new file mode 100644 (file)
index 0000000..8db36ed
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+var ResizeTable=function(e){this.table=e,this.binding=!1,this.observer=!1};ResizeTable.prototype.initialize=function(e){var i=this.table;"undefined"!=typeof ResizeObserver&&"virtual"===i.rowManager.getRenderMode()?(this.observer=new ResizeObserver(function(e){i.redraw()}),this.observer.observe(i.element)):(this.binding=function(){i.redraw()},window.addEventListener("resize",this.binding))},ResizeTable.prototype.clearBindings=function(e){this.binding&&window.removeEventListener("resize",this.binding),this.observer&&this.observer.unobserve(this.table.element)},Tabulator.prototype.registerModule("resizeTable",ResizeTable);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/responsive_layout.js b/backoffice/vendors/tabulator/js.old/modules/responsive_layout.js
new file mode 100644 (file)
index 0000000..7b800ef
--- /dev/null
@@ -0,0 +1,255 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+
+var ResponsiveLayout = function ResponsiveLayout(table) {
+       this.table = table; //hold Tabulator object
+       this.columns = [];
+       this.hiddenColumns = [];
+       this.mode = "";
+       this.index = 0;
+       this.collapseFormatter = [];
+       this.collapseStartOpen = true;
+};
+
+//generate resposive columns list
+ResponsiveLayout.prototype.initialize = function () {
+       var self = this,
+           columns = [];
+
+       this.mode = this.table.options.responsiveLayout;
+       this.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData;
+       this.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen;
+       this.hiddenColumns = [];
+
+       //detemine level of responsivity for each column
+       this.table.columnManager.columnsByIndex.forEach(function (column, i) {
+               if (column.modules.responsive) {
+                       if (column.modules.responsive.order && column.modules.responsive.visible) {
+                               column.modules.responsive.index = i;
+                               columns.push(column);
+
+                               if (!column.visible && self.mode === "collapse") {
+                                       self.hiddenColumns.push(column);
+                               }
+                       }
+               }
+       });
+
+       //sort list by responsivity
+       columns = columns.reverse();
+       columns = columns.sort(function (a, b) {
+               var diff = b.modules.responsive.order - a.modules.responsive.order;
+               return diff || b.modules.responsive.index - a.modules.responsive.index;
+       });
+
+       this.columns = columns;
+
+       if (this.mode === "collapse") {
+               this.generateCollapsedContent();
+       }
+};
+
+//define layout information
+ResponsiveLayout.prototype.initializeColumn = function (column) {
+       var def = column.getDefinition();
+
+       column.modules.responsive = { order: typeof def.responsive === "undefined" ? 1 : def.responsive, visible: def.visible === false ? false : true };
+};
+
+ResponsiveLayout.prototype.layoutRow = function (row) {
+       var rowEl = row.getElement(),
+           el = document.createElement("div");
+
+       el.classList.add("tabulator-responsive-collapse");
+
+       if (!rowEl.classList.contains("tabulator-calcs")) {
+               row.modules.responsiveLayout = {
+                       element: el
+               };
+
+               if (!this.collapseStartOpen) {
+                       el.style.display = 'none';
+               }
+
+               rowEl.appendChild(el);
+
+               this.generateCollapsedRowContent(row);
+       }
+};
+
+//update column visibility
+ResponsiveLayout.prototype.updateColumnVisibility = function (column, visible) {
+       var index;
+       if (column.modules.responsive) {
+               column.modules.responsive.visible = visible;
+               this.initialize();
+       }
+};
+
+ResponsiveLayout.prototype.hideColumn = function (column) {
+       column.hide(false, true);
+
+       if (this.mode === "collapse") {
+               this.hiddenColumns.unshift(column);
+               this.generateCollapsedContent();
+       }
+};
+
+ResponsiveLayout.prototype.showColumn = function (column) {
+       var index;
+
+       column.show(false, true);
+       //set column width to prevent calculation loops on uninitialized columns
+       column.setWidth(column.getWidth());
+
+       if (this.mode === "collapse") {
+               index = this.hiddenColumns.indexOf(column);
+
+               if (index > -1) {
+                       this.hiddenColumns.splice(index, 1);
+               }
+
+               this.generateCollapsedContent();
+       }
+};
+
+//redraw columns to fit space
+ResponsiveLayout.prototype.update = function () {
+       var self = this,
+           working = true;
+
+       while (working) {
+
+               var width = self.table.modules.layout.getMode() == "fitColumns" ? self.table.columnManager.getFlexBaseWidth() : self.table.columnManager.getWidth();
+
+               var diff = (self.table.options.headerVisible ? self.table.columnManager.element.clientWidth : self.table.element.clientWidth) - width;
+
+               if (diff < 0) {
+                       //table is too wide
+                       var column = self.columns[self.index];
+
+                       if (column) {
+                               self.hideColumn(column);
+                               self.index++;
+                       } else {
+                               working = false;
+                       }
+               } else {
+
+                       //table has spare space
+                       var _column = self.columns[self.index - 1];
+
+                       if (_column) {
+                               if (diff > 0) {
+                                       if (diff >= _column.getWidth()) {
+                                               self.showColumn(_column);
+                                               self.index--;
+                                       } else {
+                                               working = false;
+                                       }
+                               } else {
+                                       working = false;
+                               }
+                       } else {
+                               working = false;
+                       }
+               }
+
+               if (!self.table.rowManager.activeRowsCount) {
+                       self.table.rowManager.renderEmptyScroll();
+               }
+       }
+};
+
+ResponsiveLayout.prototype.generateCollapsedContent = function () {
+       var self = this,
+           rows = this.table.rowManager.getDisplayRows();
+
+       rows.forEach(function (row) {
+               self.generateCollapsedRowContent(row);
+       });
+};
+
+ResponsiveLayout.prototype.generateCollapsedRowContent = function (row) {
+       var el, contents;
+
+       if (row.modules.responsiveLayout) {
+               el = row.modules.responsiveLayout.element;
+
+               while (el.firstChild) {
+                       el.removeChild(el.firstChild);
+               }contents = this.collapseFormatter(this.generateCollapsedRowData(row));
+               if (contents) {
+                       el.appendChild(contents);
+               }
+       }
+};
+
+ResponsiveLayout.prototype.generateCollapsedRowData = function (row) {
+       var self = this,
+           data = row.getData(),
+           output = [],
+           mockCellComponent;
+
+       this.hiddenColumns.forEach(function (column) {
+               var value = column.getFieldValue(data);
+
+               if (column.definition.title && column.field) {
+                       if (column.modules.format && self.table.options.responsiveLayoutCollapseUseFormatters) {
+
+                               mockCellComponent = {
+                                       value: false,
+                                       data: {},
+                                       getValue: function getValue() {
+                                               return value;
+                                       },
+                                       getData: function getData() {
+                                               return data;
+                                       },
+                                       getElement: function getElement() {
+                                               return document.createElement("div");
+                                       },
+                                       getRow: function getRow() {
+                                               return row.getComponent();
+                                       },
+                                       getColumn: function getColumn() {
+                                               return column.getComponent();
+                                       }
+                               };
+
+                               output.push({
+                                       title: column.definition.title,
+                                       value: column.modules.format.formatter.call(self.table.modules.format, mockCellComponent, column.modules.format.params)
+                               });
+                       } else {
+                               output.push({
+                                       title: column.definition.title,
+                                       value: value
+                               });
+                       }
+               }
+       });
+
+       return output;
+};
+
+ResponsiveLayout.prototype.formatCollapsedData = function (data) {
+       var list = document.createElement("table"),
+           listContents = "";
+
+       data.forEach(function (item) {
+               var div = document.createElement("div");
+
+               if (item.value instanceof Node) {
+                       div.appendChild(item.value);
+                       item.value = div.innerHTML;
+               }
+
+               listContents += "<tr><td><strong>" + item.title + "</strong></td><td>" + item.value + "</td></tr>";
+       });
+
+       list.innerHTML = listContents;
+
+       return Object.keys(data).length ? list : "";
+};
+
+Tabulator.prototype.registerModule("responsiveLayout", ResponsiveLayout);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/responsive_layout.min.js b/backoffice/vendors/tabulator/js.old/modules/responsive_layout.min.js
new file mode 100644 (file)
index 0000000..0ee2860
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+var ResponsiveLayout=function(e){this.table=e,this.columns=[],this.hiddenColumns=[],this.mode="",this.index=0,this.collapseFormatter=[],this.collapseStartOpen=!0};ResponsiveLayout.prototype.initialize=function(){var e=this,t=[];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(o,n){o.modules.responsive&&o.modules.responsive.order&&o.modules.responsive.visible&&(o.modules.responsive.index=n,t.push(o),o.visible||"collapse"!==e.mode||e.hiddenColumns.push(o))}),t=t.reverse(),t=t.sort(function(e,t){return t.modules.responsive.order-e.modules.responsive.order||t.modules.responsive.index-e.modules.responsive.index}),this.columns=t,"collapse"===this.mode&&this.generateCollapsedContent()},ResponsiveLayout.prototype.initializeColumn=function(e){var t=e.getDefinition();e.modules.responsive={order:void 0===t.responsive?1:t.responsive,visible:!1!==t.visible}},ResponsiveLayout.prototype.layoutRow=function(e){var t=e.getElement(),o=document.createElement("div");o.classList.add("tabulator-responsive-collapse"),t.classList.contains("tabulator-calcs")||(e.modules.responsiveLayout={element:o},this.collapseStartOpen||(o.style.display="none"),t.appendChild(o),this.generateCollapsedRowContent(e))},ResponsiveLayout.prototype.updateColumnVisibility=function(e,t){e.modules.responsive&&(e.modules.responsive.visible=t,this.initialize())},ResponsiveLayout.prototype.hideColumn=function(e){e.hide(!1,!0),"collapse"===this.mode&&(this.hiddenColumns.unshift(e),this.generateCollapsedContent())},ResponsiveLayout.prototype.showColumn=function(e){var t;e.show(!1,!0),e.setWidth(e.getWidth()),"collapse"===this.mode&&(t=this.hiddenColumns.indexOf(e),t>-1&&this.hiddenColumns.splice(t,1),this.generateCollapsedContent())},ResponsiveLayout.prototype.update=function(){for(var e=this,t=!0;t;){var o="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)-o;if(n<0){var s=e.columns[e.index];s?(e.hideColumn(s),e.index++):t=!1}else{var i=e.columns[e.index-1];i&&n>0&&n>=i.getWidth()?(e.showColumn(i),e.index--):t=!1}e.table.rowManager.activeRowsCount||e.table.rowManager.renderEmptyScroll()}},ResponsiveLayout.prototype.generateCollapsedContent=function(){var e=this;this.table.rowManager.getDisplayRows().forEach(function(t){e.generateCollapsedRowContent(t)})},ResponsiveLayout.prototype.generateCollapsedRowContent=function(e){var t,o;if(e.modules.responsiveLayout){for(t=e.modules.responsiveLayout.element;t.firstChild;)t.removeChild(t.firstChild);o=this.collapseFormatter(this.generateCollapsedRowData(e)),o&&t.appendChild(o)}},ResponsiveLayout.prototype.generateCollapsedRowData=function(e){var t,o=this,n=e.getData(),s=[];return this.hiddenColumns.forEach(function(i){var a=i.getFieldValue(n);i.definition.title&&i.field&&(i.modules.format&&o.table.options.responsiveLayoutCollapseUseFormatters?(t={value:!1,data:{},getValue:function(){return a},getData:function(){return n},getElement:function(){return document.createElement("div")},getRow:function(){return e.getComponent()},getColumn:function(){return i.getComponent()}},s.push({title:i.definition.title,value:i.modules.format.formatter.call(o.table.modules.format,t,i.modules.format.params)})):s.push({title:i.definition.title,value:a}))}),s},ResponsiveLayout.prototype.formatCollapsedData=function(e){var t=document.createElement("table"),o="";return e.forEach(function(e){var t=document.createElement("div");e.value instanceof Node&&(t.appendChild(e.value),e.value=t.innerHTML),o+="<tr><td><strong>"+e.title+"</strong></td><td>"+e.value+"</td></tr>"}),t.innerHTML=o,Object.keys(e).length?t:""},Tabulator.prototype.registerModule("responsiveLayout",ResponsiveLayout);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/select_row.js b/backoffice/vendors/tabulator/js.old/modules/select_row.js
new file mode 100644 (file)
index 0000000..42c5b89
--- /dev/null
@@ -0,0 +1,361 @@
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+
+var SelectRow = function SelectRow(table) {
+       this.table = table; //hold Tabulator object
+       this.selecting = false; //flag selecting in progress
+       this.lastClickedRow = false; //last clicked row
+       this.selectPrev = []; //hold previously selected element for drag drop selection
+       this.selectedRows = []; //hold selected rows
+       this.headerCheckboxElement = null; // hold header select element
+};
+
+SelectRow.prototype.clearSelectionData = function (silent) {
+       this.selecting = false;
+       this.lastClickedRow = false;
+       this.selectPrev = [];
+       this.selectedRows = [];
+
+       if (!silent) {
+               this._rowSelectionChanged();
+       }
+};
+
+SelectRow.prototype.initializeRow = function (row) {
+       var self = this,
+           element = row.getElement();
+
+       // trigger end of row selection
+       var endSelect = function endSelect() {
+
+               setTimeout(function () {
+                       self.selecting = false;
+               }, 50);
+
+               document.body.removeEventListener("mouseup", endSelect);
+       };
+
+       row.modules.select = { selected: false };
+
+       //set row selection class
+       if (self.table.options.selectableCheck.call(this.table, row.getComponent())) {
+               element.classList.add("tabulator-selectable");
+               element.classList.remove("tabulator-unselectable");
+
+               if (self.table.options.selectable && self.table.options.selectable != "highlight") {
+                       if (self.table.options.selectableRangeMode === "click") {
+                               element.addEventListener("click", function (e) {
+
+                                       self.table._clearSelection();
+
+                                       if (e.shiftKey) {
+                                               self.lastClickedRow = self.lastClickedRow || row;
+
+                                               var lastClickedRowIdx = self.table.rowManager.getDisplayRowIndex(self.lastClickedRow);
+                                               var rowIdx = self.table.rowManager.getDisplayRowIndex(row);
+
+                                               var fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx;
+                                               var toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx;
+
+                                               var rows = self.table.rowManager.getDisplayRows().slice(0);
+                                               var toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1);
+
+                                               if (e.ctrlKey || e.metaKey) {
+                                                       toggledRows.forEach(function (toggledRow) {
+                                                               if (toggledRow !== self.lastClickedRow) {
+
+                                                                       if (self.table.options.selectable !== true && !self.isRowSelected(row)) {
+                                                                               if (self.selectedRows.length < self.table.options.selectable) {
+                                                                                       self.toggleRow(toggledRow);
+                                                                               }
+                                                                       } else {
+                                                                               self.toggleRow(toggledRow);
+                                                                       }
+                                                               }
+                                                       });
+                                                       self.lastClickedRow = row;
+                                               } else {
+                                                       self.deselectRows();
+
+                                                       if (self.table.options.selectable !== true) {
+                                                               if (toggledRows.length > self.table.options.selectable) {
+                                                                       toggledRows = toggledRows.slice(0, self.table.options.selectable);
+                                                               }
+                                                       }
+
+                                                       self.selectRows(toggledRows);
+                                               }
+                                       } else if (e.ctrlKey || e.metaKey) {
+                                               self.toggleRow(row);
+                                               self.lastClickedRow = row;
+                                       } else {
+                                               self.deselectRows();
+                                               self.selectRows(row);
+                                               self.lastClickedRow = row;
+                                       }
+
+                                       self.table._clearSelection();
+                               });
+                       } else {
+                               element.addEventListener("click", function (e) {
+                                       if (!self.table.modExists("edit") || !self.table.modules.edit.getCurrentCell()) {
+                                               self.table._clearSelection();
+                                       }
+
+                                       if (!self.selecting) {
+                                               self.toggleRow(row);
+                                       }
+                               });
+
+                               element.addEventListener("mousedown", function (e) {
+                                       if (e.shiftKey) {
+                                               self.table._clearSelection();
+
+                                               self.selecting = true;
+
+                                               self.selectPrev = [];
+
+                                               document.body.addEventListener("mouseup", endSelect);
+                                               document.body.addEventListener("keyup", endSelect);
+
+                                               self.toggleRow(row);
+
+                                               return false;
+                                       }
+                               });
+
+                               element.addEventListener("mouseenter", function (e) {
+                                       if (self.selecting) {
+                                               self.table._clearSelection();
+                                               self.toggleRow(row);
+
+                                               if (self.selectPrev[1] == row) {
+                                                       self.toggleRow(self.selectPrev[0]);
+                                               }
+                                       }
+                               });
+
+                               element.addEventListener("mouseout", function (e) {
+                                       if (self.selecting) {
+                                               self.table._clearSelection();
+                                               self.selectPrev.unshift(row);
+                                       }
+                               });
+                       }
+               }
+       } else {
+               element.classList.add("tabulator-unselectable");
+               element.classList.remove("tabulator-selectable");
+       }
+};
+
+//toggle row selection
+SelectRow.prototype.toggleRow = function (row) {
+       if (this.table.options.selectableCheck.call(this.table, row.getComponent())) {
+               if (row.modules.select && row.modules.select.selected) {
+                       this._deselectRow(row);
+               } else {
+                       this._selectRow(row);
+               }
+       }
+};
+
+//select a number of rows
+SelectRow.prototype.selectRows = function (rows) {
+       var self = this;
+
+       switch (typeof rows === "undefined" ? "undefined" : _typeof(rows)) {
+               case "undefined":
+                       self.table.rowManager.rows.forEach(function (row) {
+                               self._selectRow(row, true, true);
+                       });
+
+                       self._rowSelectionChanged();
+                       break;
+
+               case "boolean":
+                       if (rows === true) {
+                               self.table.rowManager.activeRows.forEach(function (row) {
+                                       self._selectRow(row, true, true);
+                               });
+
+                               self._rowSelectionChanged();
+                       }
+                       break;
+
+               default:
+                       if (Array.isArray(rows)) {
+                               rows.forEach(function (row) {
+                                       self._selectRow(row, true, true);
+                               });
+
+                               self._rowSelectionChanged();
+                       } else {
+                               self._selectRow(rows, false, true);
+                       }
+                       break;
+       }
+};
+
+//select an individual row
+SelectRow.prototype._selectRow = function (rowInfo, silent, force) {
+       var index;
+
+       //handle max row count
+       if (!isNaN(this.table.options.selectable) && this.table.options.selectable !== true && !force) {
+               if (this.selectedRows.length >= this.table.options.selectable) {
+                       if (this.table.options.selectableRollingSelection) {
+                               this._deselectRow(this.selectedRows[0]);
+                       } else {
+                               return false;
+                       }
+               }
+       }
+
+       var row = this.table.rowManager.findRow(rowInfo);
+
+       if (row) {
+               if (this.selectedRows.indexOf(row) == -1) {
+                       if (!row.modules.select) {
+                               row.modules.select = {};
+                       }
+
+                       row.modules.select.selected = true;
+                       if (row.modules.select.checkboxEl) {
+                               row.modules.select.checkboxEl.checked = true;
+                       }
+                       row.getElement().classList.add("tabulator-selected");
+
+                       this.selectedRows.push(row);
+
+                       if (!silent) {
+                               this.table.options.rowSelected.call(this.table, row.getComponent());
+                               this._rowSelectionChanged();
+                       }
+               }
+       } else {
+               if (!silent) {
+                       console.warn("Selection Error - No such row found, ignoring selection:" + rowInfo);
+               }
+       }
+};
+
+SelectRow.prototype.isRowSelected = function (row) {
+       return this.selectedRows.indexOf(row) !== -1;
+};
+
+//deselect a number of rows
+SelectRow.prototype.deselectRows = function (rows) {
+       var self = this,
+           rowCount;
+
+       if (typeof rows == "undefined") {
+
+               rowCount = self.selectedRows.length;
+
+               for (var i = 0; i < rowCount; i++) {
+                       self._deselectRow(self.selectedRows[0], true);
+               }
+
+               self._rowSelectionChanged();
+       } else {
+               if (Array.isArray(rows)) {
+                       rows.forEach(function (row) {
+                               self._deselectRow(row, true);
+                       });
+
+                       self._rowSelectionChanged();
+               } else {
+                       self._deselectRow(rows);
+               }
+       }
+};
+
+//deselect an individual row
+SelectRow.prototype._deselectRow = function (rowInfo, silent) {
+       var self = this,
+           row = self.table.rowManager.findRow(rowInfo),
+           index;
+
+       if (row) {
+               index = self.selectedRows.findIndex(function (selectedRow) {
+                       return selectedRow == row;
+               });
+
+               if (index > -1) {
+
+                       if (!row.modules.select) {
+                               row.modules.select = {};
+                       }
+
+                       row.modules.select.selected = false;
+                       if (row.modules.select.checkboxEl) {
+                               row.modules.select.checkboxEl.checked = false;
+                       }
+                       row.getElement().classList.remove("tabulator-selected");
+                       self.selectedRows.splice(index, 1);
+
+                       if (!silent) {
+                               self.table.options.rowDeselected.call(this.table, row.getComponent());
+                               self._rowSelectionChanged();
+                       }
+               }
+       } else {
+               if (!silent) {
+                       console.warn("Deselection Error - No such row found, ignoring selection:" + rowInfo);
+               }
+       }
+};
+
+SelectRow.prototype.getSelectedData = function () {
+       var data = [];
+
+       this.selectedRows.forEach(function (row) {
+               data.push(row.getData());
+       });
+
+       return data;
+};
+
+SelectRow.prototype.getSelectedRows = function () {
+
+       var rows = [];
+
+       this.selectedRows.forEach(function (row) {
+               rows.push(row.getComponent());
+       });
+
+       return rows;
+};
+
+SelectRow.prototype._rowSelectionChanged = function () {
+       if (this.headerCheckboxElement) {
+               if (this.selectedRows.length === 0) {
+                       this.headerCheckboxElement.checked = false;
+                       this.headerCheckboxElement.indeterminate = false;
+               } else if (this.table.rowManager.rows.length === this.selectedRows.length) {
+                       this.headerCheckboxElement.checked = true;
+                       this.headerCheckboxElement.indeterminate = false;
+               } else {
+                       this.headerCheckboxElement.indeterminate = true;
+                       this.headerCheckboxElement.checked = false;
+               }
+       }
+
+       this.table.options.rowSelectionChanged.call(this.table, this.getSelectedData(), this.getSelectedRows());
+};
+
+SelectRow.prototype.registerRowSelectCheckbox = function (row, element) {
+       if (!row._row.modules.select) {
+               row._row.modules.select = {};
+       }
+
+       row._row.modules.select.checkboxEl = element;
+};
+
+SelectRow.prototype.registerHeaderSelectCheckbox = function (element) {
+       this.headerCheckboxElement = element;
+};
+
+Tabulator.prototype.registerModule("selectRow", SelectRow);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/select_row.min.js b/backoffice/vendors/tabulator/js.old/modules/select_row.min.js
new file mode 100644 (file)
index 0000000..3c0eb5e
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+var _typeof="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},SelectRow=function(e){this.table=e,this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],this.headerCheckboxElement=null};SelectRow.prototype.clearSelectionData=function(e){this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],e||this._rowSelectionChanged()},SelectRow.prototype.initializeRow=function(e){var t=this,o=e.getElement(),l=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())?(o.classList.add("tabulator-selectable"),o.classList.remove("tabulator-unselectable"),t.table.options.selectable&&"highlight"!=t.table.options.selectable&&("click"===t.table.options.selectableRangeMode?o.addEventListener("click",function(o){if(t.table._clearSelection(),o.shiftKey){t.lastClickedRow=t.lastClickedRow||e;var l=t.table.rowManager.getDisplayRowIndex(t.lastClickedRow),s=t.table.rowManager.getDisplayRowIndex(e),c=l<=s?l:s,n=l>=s?l:s,i=t.table.rowManager.getDisplayRows().slice(0),a=i.splice(c,n-c+1);o.ctrlKey||o.metaKey?(a.forEach(function(o){o!==t.lastClickedRow&&(!0===t.table.options.selectable||t.isRowSelected(e)?t.toggleRow(o):t.selectedRows.length<t.table.options.selectable&&t.toggleRow(o))}),t.lastClickedRow=e):(t.deselectRows(),!0!==t.table.options.selectable&&a.length>t.table.options.selectable&&(a=a.slice(0,t.table.options.selectable)),t.selectRows(a))}else o.ctrlKey||o.metaKey?(t.toggleRow(e),t.lastClickedRow=e):(t.deselectRows(),t.selectRows(e),t.lastClickedRow=e);t.table._clearSelection()}):(o.addEventListener("click",function(o){t.table.modExists("edit")&&t.table.modules.edit.getCurrentCell()||t.table._clearSelection(),t.selecting||t.toggleRow(e)}),o.addEventListener("mousedown",function(o){if(o.shiftKey)return t.table._clearSelection(),t.selecting=!0,t.selectPrev=[],document.body.addEventListener("mouseup",l),document.body.addEventListener("keyup",l),t.toggleRow(e),!1}),o.addEventListener("mouseenter",function(o){t.selecting&&(t.table._clearSelection(),t.toggleRow(e),t.selectPrev[1]==e&&t.toggleRow(t.selectPrev[0]))}),o.addEventListener("mouseout",function(o){t.selecting&&(t.table._clearSelection(),t.selectPrev.unshift(e))})))):(o.classList.add("tabulator-unselectable"),o.classList.remove("tabulator-selectable"))},SelectRow.prototype.toggleRow=function(e){this.table.options.selectableCheck.call(this.table,e.getComponent())&&(e.modules.select&&e.modules.select.selected?this._deselectRow(e):this._selectRow(e))},SelectRow.prototype.selectRows=function(e){var t=this;switch(void 0===e?"undefined":_typeof(e)){case"undefined":t.table.rowManager.rows.forEach(function(e){t._selectRow(e,!0,!0)}),t._rowSelectionChanged();break;case"boolean":!0===e&&(t.table.rowManager.activeRows.forEach(function(e){t._selectRow(e,!0,!0)}),t._rowSelectionChanged());break;default:Array.isArray(e)?(e.forEach(function(e){t._selectRow(e,!0,!0)}),t._rowSelectionChanged()):t._selectRow(e,!1,!0)}},SelectRow.prototype._selectRow=function(e,t,o){if(!isNaN(this.table.options.selectable)&&!0!==this.table.options.selectable&&!o&&this.selectedRows.length>=this.table.options.selectable){if(!this.table.options.selectableRollingSelection)return!1;this._deselectRow(this.selectedRows[0])}var l=this.table.rowManager.findRow(e);l?-1==this.selectedRows.indexOf(l)&&(l.modules.select||(l.modules.select={}),l.modules.select.selected=!0,l.modules.select.checkboxEl&&(l.modules.select.checkboxEl.checked=!0),l.getElement().classList.add("tabulator-selected"),this.selectedRows.push(l),t||(this.table.options.rowSelected.call(this.table,l.getComponent()),this._rowSelectionChanged())):t||console.warn("Selection Error - No such row found, ignoring selection:"+e)},SelectRow.prototype.isRowSelected=function(e){return-1!==this.selectedRows.indexOf(e)},SelectRow.prototype.deselectRows=function(e){var t,o=this;if(void 0===e){t=o.selectedRows.length;for(var l=0;l<t;l++)o._deselectRow(o.selectedRows[0],!0);o._rowSelectionChanged()}else Array.isArray(e)?(e.forEach(function(e){o._deselectRow(e,!0)}),o._rowSelectionChanged()):o._deselectRow(e)},SelectRow.prototype._deselectRow=function(e,t){var o,l=this,s=l.table.rowManager.findRow(e);s?(o=l.selectedRows.findIndex(function(e){return e==s}))>-1&&(s.modules.select||(s.modules.select={}),s.modules.select.selected=!1,s.modules.select.checkboxEl&&(s.modules.select.checkboxEl.checked=!1),s.getElement().classList.remove("tabulator-selected"),l.selectedRows.splice(o,1),t||(l.table.options.rowDeselected.call(this.table,s.getComponent()),l._rowSelectionChanged())):t||console.warn("Deselection Error - No such row found, ignoring selection:"+e)},SelectRow.prototype.getSelectedData=function(){var e=[];return this.selectedRows.forEach(function(t){e.push(t.getData())}),e},SelectRow.prototype.getSelectedRows=function(){var e=[];return this.selectedRows.forEach(function(t){e.push(t.getComponent())}),e},SelectRow.prototype._rowSelectionChanged=function(){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)),this.table.options.rowSelectionChanged.call(this.table,this.getSelectedData(),this.getSelectedRows())},SelectRow.prototype.registerRowSelectCheckbox=function(e,t){e._row.modules.select||(e._row.modules.select={}),e._row.modules.select.checkboxEl=t},SelectRow.prototype.registerHeaderSelectCheckbox=function(e){this.headerCheckboxElement=e},Tabulator.prototype.registerModule("selectRow",SelectRow);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/sort.js b/backoffice/vendors/tabulator/js.old/modules/sort.js
new file mode 100644 (file)
index 0000000..a2507d0
--- /dev/null
@@ -0,0 +1,560 @@
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+
+var Sort = function Sort(table) {
+       this.table = table; //hold Tabulator object
+       this.sortList = []; //holder current sort
+       this.changed = false; //has the sort changed since last render
+};
+
+//initialize column header for sorting
+Sort.prototype.initializeColumn = function (column, content) {
+       var self = this,
+           sorter = false,
+           colEl,
+           arrowEl;
+
+       switch (_typeof(column.definition.sorter)) {
+               case "string":
+                       if (self.sorters[column.definition.sorter]) {
+                               sorter = self.sorters[column.definition.sorter];
+                       } else {
+                               console.warn("Sort Error - No such sorter found: ", column.definition.sorter);
+                       }
+                       break;
+
+               case "function":
+                       sorter = column.definition.sorter;
+                       break;
+       }
+
+       column.modules.sort = {
+               sorter: sorter, dir: "none",
+               params: column.definition.sorterParams || {},
+               startingDir: column.definition.headerSortStartingDir || "asc",
+               tristate: typeof column.definition.headerSortTristate !== "undefined" ? column.definition.headerSortTristate : this.table.options.headerSortTristate
+       };
+
+       if (typeof column.definition.headerSort === "undefined" ? this.table.options.headerSort !== false : column.definition.headerSort !== false) {
+
+               colEl = column.getElement();
+
+               colEl.classList.add("tabulator-sortable");
+
+               arrowEl = document.createElement("div");
+               arrowEl.classList.add("tabulator-arrow");
+               //create sorter arrow
+               content.appendChild(arrowEl);
+
+               //sort on click
+               colEl.addEventListener("click", function (e) {
+                       var dir = "",
+                           sorters = [],
+                           match = false;
+
+                       if (column.modules.sort) {
+                               if (column.modules.sort.tristate) {
+                                       if (column.modules.sort.dir == "none") {
+                                               dir = column.modules.sort.startingDir;
+                                       } else {
+                                               if (column.modules.sort.dir == column.modules.sort.startingDir) {
+                                                       dir = column.modules.sort.dir == "asc" ? "desc" : "asc";
+                                               } else {
+                                                       dir = "none";
+                                               }
+                                       }
+                               } else {
+                                       switch (column.modules.sort.dir) {
+                                               case "asc":
+                                                       dir = "desc";
+                                                       break;
+
+                                               case "desc":
+                                                       dir = "asc";
+                                                       break;
+
+                                               default:
+                                                       dir = column.modules.sort.startingDir;
+                                       }
+                               }
+
+                               if (self.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) {
+                                       sorters = self.getSort();
+
+                                       match = sorters.findIndex(function (sorter) {
+                                               return sorter.field === column.getField();
+                                       });
+
+                                       if (match > -1) {
+                                               sorters[match].dir = dir;
+
+                                               if (match != sorters.length - 1) {
+                                                       match = sorters.splice(match, 1)[0];
+                                                       if (dir != "none") {
+                                                               sorters.push(match);
+                                                       }
+                                               }
+                                       } else {
+                                               if (dir != "none") {
+                                                       sorters.push({ column: column, dir: dir });
+                                               }
+                                       }
+
+                                       //add to existing sort
+                                       self.setSort(sorters);
+                               } else {
+                                       if (dir == "none") {
+                                               self.clear();
+                                       } else {
+                                               //sort by column only
+                                               self.setSort(column, dir);
+                                       }
+                               }
+
+                               self.table.rowManager.sorterRefresh(!self.sortList.length);
+                       }
+               });
+       }
+};
+
+//check if the sorters have changed since last use
+Sort.prototype.hasChanged = function () {
+       var changed = this.changed;
+       this.changed = false;
+       return changed;
+};
+
+//return current sorters
+Sort.prototype.getSort = function () {
+       var self = this,
+           sorters = [];
+
+       self.sortList.forEach(function (item) {
+               if (item.column) {
+                       sorters.push({ column: item.column.getComponent(), field: item.column.getField(), dir: item.dir });
+               }
+       });
+
+       return sorters;
+};
+
+//change sort list and trigger sort
+Sort.prototype.setSort = function (sortList, dir) {
+       var self = this,
+           newSortList = [];
+
+       if (!Array.isArray(sortList)) {
+               sortList = [{ column: sortList, dir: dir }];
+       }
+
+       sortList.forEach(function (item) {
+               var column;
+
+               column = self.table.columnManager.findColumn(item.column);
+
+               if (column) {
+                       item.column = column;
+                       newSortList.push(item);
+                       self.changed = true;
+               } else {
+                       console.warn("Sort Warning - Sort field does not exist and is being ignored: ", item.column);
+               }
+       });
+
+       self.sortList = newSortList;
+
+       if (this.table.options.persistentSort && this.table.modExists("persistence", true)) {
+               this.table.modules.persistence.save("sort");
+       }
+};
+
+//clear sorters
+Sort.prototype.clear = function () {
+       this.setSort([]);
+};
+
+//find appropriate sorter for column
+Sort.prototype.findSorter = function (column) {
+       var row = this.table.rowManager.activeRows[0],
+           sorter = "string",
+           field,
+           value;
+
+       if (row) {
+               row = row.getData();
+               field = column.getField();
+
+               if (field) {
+
+                       value = column.getFieldValue(row);
+
+                       switch (typeof value === "undefined" ? "undefined" : _typeof(value)) {
+                               case "undefined":
+                                       sorter = "string";
+                                       break;
+
+                               case "boolean":
+                                       sorter = "boolean";
+                                       break;
+
+                               default:
+                                       if (!isNaN(value) && value !== "") {
+                                               sorter = "number";
+                                       } else {
+                                               if (value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)) {
+                                                       sorter = "alphanum";
+                                               }
+                                       }
+                                       break;
+                       }
+               }
+       }
+
+       return this.sorters[sorter];
+};
+
+//work through sort list sorting data
+Sort.prototype.sort = function (data) {
+       var self = this,
+           lastSort,
+           sortList;
+
+       sortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList;
+
+       if (self.table.options.dataSorting) {
+               self.table.options.dataSorting.call(self.table, self.getSort());
+       }
+
+       self.clearColumnHeaders();
+
+       if (!self.table.options.ajaxSorting) {
+
+               sortList.forEach(function (item, i) {
+
+                       if (item.column && item.column.modules.sort) {
+
+                               //if no sorter has been defined, take a guess
+                               if (!item.column.modules.sort.sorter) {
+                                       item.column.modules.sort.sorter = self.findSorter(item.column);
+                               }
+
+                               self._sortItem(data, item.column, item.dir, sortList, i);
+                       }
+
+                       self.setColumnHeader(item.column, item.dir);
+               });
+       } else {
+               sortList.forEach(function (item, i) {
+                       self.setColumnHeader(item.column, item.dir);
+               });
+       }
+
+       if (self.table.options.dataSorted) {
+               self.table.options.dataSorted.call(self.table, self.getSort(), self.table.rowManager.getComponents(true));
+       }
+};
+
+//clear sort arrows on columns
+Sort.prototype.clearColumnHeaders = function () {
+       this.table.columnManager.getRealColumns().forEach(function (column) {
+               if (column.modules.sort) {
+                       column.modules.sort.dir = "none";
+                       column.getElement().setAttribute("aria-sort", "none");
+               }
+       });
+};
+
+//set the column header sort direction
+Sort.prototype.setColumnHeader = function (column, dir) {
+       column.modules.sort.dir = dir;
+       column.getElement().setAttribute("aria-sort", dir);
+};
+
+//sort each item in sort list
+Sort.prototype._sortItem = function (data, column, dir, sortList, i) {
+       var self = this;
+
+       var params = typeof column.modules.sort.params === "function" ? column.modules.sort.params(column.getComponent(), dir) : column.modules.sort.params;
+
+       data.sort(function (a, b) {
+
+               var result = self._sortRow(a, b, column, dir, params);
+
+               //if results match recurse through previous searchs to be sure
+               if (result === 0 && i) {
+                       for (var j = i - 1; j >= 0; j--) {
+                               result = self._sortRow(a, b, sortList[j].column, sortList[j].dir, params);
+
+                               if (result !== 0) {
+                                       break;
+                               }
+                       }
+               }
+
+               return result;
+       });
+};
+
+//process individual rows for a sort function on active data
+Sort.prototype._sortRow = function (a, b, column, dir, params) {
+       var el1Comp, el2Comp, colComp;
+
+       //switch elements depending on search direction
+       var el1 = dir == "asc" ? a : b;
+       var el2 = dir == "asc" ? b : a;
+
+       a = column.getFieldValue(el1.getData());
+       b = column.getFieldValue(el2.getData());
+
+       a = typeof a !== "undefined" ? a : "";
+       b = typeof b !== "undefined" ? b : "";
+
+       el1Comp = el1.getComponent();
+       el2Comp = el2.getComponent();
+
+       return column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params);
+};
+
+//default data sorters
+Sort.prototype.sorters = {
+
+       //sort numbers
+       number: function number(a, b, aRow, bRow, column, dir, params) {
+               var alignEmptyValues = params.alignEmptyValues;
+               var decimal = params.decimalSeparator || ".";
+               var thousand = params.thousandSeparator || ",";
+               var emptyAlign = 0;
+
+               a = parseFloat(String(a).split(thousand).join("").split(decimal).join("."));
+               b = parseFloat(String(b).split(thousand).join("").split(decimal).join("."));
+
+               //handle non numeric values
+               if (isNaN(a)) {
+                       emptyAlign = isNaN(b) ? 0 : -1;
+               } else if (isNaN(b)) {
+                       emptyAlign = 1;
+               } else {
+                       //compare valid values
+                       return a - b;
+               }
+
+               //fix empty values in position
+               if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
+                       emptyAlign *= -1;
+               }
+
+               return emptyAlign;
+       },
+
+       //sort strings
+       string: function string(a, b, aRow, bRow, column, dir, params) {
+               var alignEmptyValues = params.alignEmptyValues;
+               var emptyAlign = 0;
+               var locale;
+
+               //handle empty values
+               if (!a) {
+                       emptyAlign = !b ? 0 : -1;
+               } else if (!b) {
+                       emptyAlign = 1;
+               } else {
+                       //compare valid values
+                       switch (_typeof(params.locale)) {
+                               case "boolean":
+                                       if (params.locale) {
+                                               locale = this.table.modules.localize.getLocale();
+                                       }
+                                       break;
+                               case "string":
+                                       locale = params.locale;
+                                       break;
+                       }
+
+                       return String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale);
+               }
+
+               //fix empty values in position
+               if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
+                       emptyAlign *= -1;
+               }
+
+               return emptyAlign;
+       },
+
+       //sort date
+       date: function date(a, b, aRow, bRow, column, dir, params) {
+               if (!params.format) {
+                       params.format = "DD/MM/YYYY";
+               }
+
+               return this.sorters.datetime.call(this, a, b, aRow, bRow, column, dir, params);
+       },
+
+       //sort hh:mm formatted times
+       time: function time(a, b, aRow, bRow, column, dir, params) {
+               if (!params.format) {
+                       params.format = "hh:mm";
+               }
+
+               return this.sorters.datetime.call(this, a, b, aRow, bRow, column, dir, params);
+       },
+
+       //sort datetime
+       datetime: function datetime(a, b, aRow, bRow, column, dir, params) {
+               var format = params.format || "DD/MM/YYYY hh:mm:ss",
+                   alignEmptyValues = params.alignEmptyValues,
+                   emptyAlign = 0;
+
+               if (typeof moment != "undefined") {
+                       a = moment(a, format);
+                       b = moment(b, format);
+
+                       if (!a.isValid()) {
+                               emptyAlign = !b.isValid() ? 0 : -1;
+                       } else if (!b.isValid()) {
+                               emptyAlign = 1;
+                       } else {
+                               //compare valid values
+                               return a - b;
+                       }
+
+                       //fix empty values in position
+                       if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
+                               emptyAlign *= -1;
+                       }
+
+                       return emptyAlign;
+               } else {
+                       console.error("Sort Error - 'datetime' sorter is dependant on moment.js");
+               }
+       },
+
+       //sort booleans
+       boolean: function boolean(a, b, aRow, bRow, column, dir, params) {
+               var el1 = a === true || a === "true" || a === "True" || a === 1 ? 1 : 0;
+               var el2 = b === true || b === "true" || b === "True" || b === 1 ? 1 : 0;
+
+               return el1 - el2;
+       },
+
+       //sort if element contains any data
+       array: function array(a, b, aRow, bRow, column, dir, params) {
+               var el1 = 0;
+               var el2 = 0;
+               var type = params.type || "length";
+               var alignEmptyValues = params.alignEmptyValues;
+               var emptyAlign = 0;
+
+               function calc(value) {
+
+                       switch (type) {
+                               case "length":
+                                       return value.length;
+                                       break;
+
+                               case "sum":
+                                       return value.reduce(function (c, d) {
+                                               return c + d;
+                                       });
+                                       break;
+
+                               case "max":
+                                       return Math.max.apply(null, value);
+                                       break;
+
+                               case "min":
+                                       return Math.min.apply(null, value);
+                                       break;
+
+                               case "avg":
+                                       return value.reduce(function (c, d) {
+                                               return c + d;
+                                       }) / value.length;
+                                       break;
+                       }
+               }
+
+               //handle non array values
+               if (!Array.isArray(a)) {
+                       alignEmptyValues = !Array.isArray(b) ? 0 : -1;
+               } else if (!Array.isArray(b)) {
+                       alignEmptyValues = 1;
+               } else {
+
+                       //compare valid values
+                       el1 = a ? calc(a) : 0;
+                       el2 = b ? calc(b) : 0;
+
+                       return el1 - el2;
+               }
+
+               //fix empty values in position
+               if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
+                       emptyAlign *= -1;
+               }
+
+               return emptyAlign;
+       },
+
+       //sort if element contains any data
+       exists: function exists(a, b, aRow, bRow, column, dir, params) {
+               var el1 = typeof a == "undefined" ? 0 : 1;
+               var el2 = typeof b == "undefined" ? 0 : 1;
+
+               return el1 - el2;
+       },
+
+       //sort alpha numeric strings
+       alphanum: function alphanum(as, bs, aRow, bRow, column, dir, params) {
+               var a,
+                   b,
+                   a1,
+                   b1,
+                   i = 0,
+                   L,
+                   rx = /(\d+)|(\D+)/g,
+                   rd = /\d/;
+               var alignEmptyValues = params.alignEmptyValues;
+               var emptyAlign = 0;
+
+               //handle empty values
+               if (!as && as !== 0) {
+                       emptyAlign = !bs && bs !== 0 ? 0 : -1;
+               } else if (!bs && bs !== 0) {
+                       emptyAlign = 1;
+               } else {
+
+                       if (isFinite(as) && isFinite(bs)) return as - bs;
+                       a = String(as).toLowerCase();
+                       b = String(bs).toLowerCase();
+                       if (a === b) return 0;
+                       if (!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;
+                       a = a.match(rx);
+                       b = b.match(rx);
+                       L = a.length > b.length ? b.length : a.length;
+                       while (i < L) {
+                               a1 = a[i];
+                               b1 = b[i++];
+                               if (a1 !== b1) {
+                                       if (isFinite(a1) && isFinite(b1)) {
+                                               if (a1.charAt(0) === "0") a1 = "." + a1;
+                                               if (b1.charAt(0) === "0") b1 = "." + b1;
+                                               return a1 - b1;
+                                       } else return a1 > b1 ? 1 : -1;
+                               }
+                       }
+
+                       return a.length > b.length;
+               }
+
+               //fix empty values in position
+               if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
+                       emptyAlign *= -1;
+               }
+
+               return emptyAlign;
+       }
+};
+
+Tabulator.prototype.registerModule("sort", Sort);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/sort.min.js b/backoffice/vendors/tabulator/js.old/modules/sort.min.js
new file mode 100644 (file)
index 0000000..eb36968
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Sort=function(t){this.table=t,this.sortList=[],this.changed=!1};Sort.prototype.initializeColumn=function(t,e){var o,r,n=this,i=!1;switch(_typeof(t.definition.sorter)){case"string":n.sorters[t.definition.sorter]?i=n.sorters[t.definition.sorter]:console.warn("Sort Error - No such sorter found: ",t.definition.sorter);break;case"function":i=t.definition.sorter}t.modules.sort={sorter:i,dir:"none",params:t.definition.sorterParams||{},startingDir:t.definition.headerSortStartingDir||"asc",tristate:void 0!==t.definition.headerSortTristate?t.definition.headerSortTristate:this.table.options.headerSortTristate},(void 0===t.definition.headerSort?!1!==this.table.options.headerSort:!1!==t.definition.headerSort)&&(o=t.getElement(),o.classList.add("tabulator-sortable"),r=document.createElement("div"),r.classList.add("tabulator-arrow"),e.appendChild(r),o.addEventListener("click",function(e){var o="",r=[],i=!1;if(t.modules.sort){if(t.modules.sort.tristate)o="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":o="desc";break;case"desc":o="asc";break;default:o=t.modules.sort.startingDir}n.table.options.columnHeaderSortMulti&&(e.shiftKey||e.ctrlKey)?(r=n.getSort(),i=r.findIndex(function(e){return e.field===t.getField()}),i>-1?(r[i].dir=o,i!=r.length-1&&(i=r.splice(i,1)[0],"none"!=o&&r.push(i))):"none"!=o&&r.push({column:t,dir:o}),n.setSort(r)):"none"==o?n.clear():n.setSort(t,o),n.table.rowManager.sorterRefresh(!n.sortList.length)}}))},Sort.prototype.hasChanged=function(){var t=this.changed;return this.changed=!1,t},Sort.prototype.getSort=function(){var t=this,e=[];return t.sortList.forEach(function(t){t.column&&e.push({column:t.column.getComponent(),field:t.column.getField(),dir:t.dir})}),e},Sort.prototype.setSort=function(t,e){var o=this,r=[];Array.isArray(t)||(t=[{column:t,dir:e}]),t.forEach(function(t){var e;e=o.table.columnManager.findColumn(t.column),e?(t.column=e,r.push(t),o.changed=!0):console.warn("Sort Warning - Sort field does not exist and is being ignored: ",t.column)}),o.sortList=r,this.table.options.persistentSort&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("sort")},Sort.prototype.clear=function(){this.setSort([])},Sort.prototype.findSorter=function(t){var e,o=this.table.rowManager.activeRows[0],r="string";if(o&&(o=o.getData(),t.getField()))switch(e=t.getFieldValue(o),void 0===e?"undefined":_typeof(e)){case"undefined":r="string";break;case"boolean":r="boolean";break;default:isNaN(e)||""===e?e.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)&&(r="alphanum"):r="number"}return this.sorters[r]},Sort.prototype.sort=function(t){var e,o=this;e=this.table.options.sortOrderReverse?o.sortList.slice().reverse():o.sortList,o.table.options.dataSorting&&o.table.options.dataSorting.call(o.table,o.getSort()),o.clearColumnHeaders(),o.table.options.ajaxSorting?e.forEach(function(t,e){o.setColumnHeader(t.column,t.dir)}):e.forEach(function(r,n){r.column&&r.column.modules.sort&&(r.column.modules.sort.sorter||(r.column.modules.sort.sorter=o.findSorter(r.column)),o._sortItem(t,r.column,r.dir,e,n)),o.setColumnHeader(r.column,r.dir)}),o.table.options.dataSorted&&o.table.options.dataSorted.call(o.table,o.getSort(),o.table.rowManager.getComponents(!0))},Sort.prototype.clearColumnHeaders=function(){this.table.columnManager.getRealColumns().forEach(function(t){t.modules.sort&&(t.modules.sort.dir="none",t.getElement().setAttribute("aria-sort","none"))})},Sort.prototype.setColumnHeader=function(t,e){t.modules.sort.dir=e,t.getElement().setAttribute("aria-sort",e)},Sort.prototype._sortItem=function(t,e,o,r,n){var i=this,s="function"==typeof e.modules.sort.params?e.modules.sort.params(e.getComponent(),o):e.modules.sort.params;t.sort(function(t,a){var l=i._sortRow(t,a,e,o,s);if(0===l&&n)for(var u=n-1;u>=0&&0===(l=i._sortRow(t,a,r[u].column,r[u].dir,s));u--);return l})},Sort.prototype._sortRow=function(t,e,o,r,n){var i,s,a="asc"==r?t:e,l="asc"==r?e:t;return t=o.getFieldValue(a.getData()),e=o.getFieldValue(l.getData()),t=void 0!==t?t:"",e=void 0!==e?e:"",i=a.getComponent(),s=l.getComponent(),o.modules.sort.sorter.call(this,t,e,i,s,o.getComponent(),r,n)},Sort.prototype.sorters={number:function(t,e,o,r,n,i,s){var a=s.alignEmptyValues,l=s.decimalSeparator||".",u=s.thousandSeparator||",",c=0;if(t=parseFloat(String(t).split(u).join("").split(l).join(".")),e=parseFloat(String(e).split(u).join("").split(l).join(".")),isNaN(t))c=isNaN(e)?0:-1;else{if(!isNaN(e))return t-e;c=1}return("top"===a&&"desc"===i||"bottom"===a&&"asc"===i)&&(c*=-1),c},string:function(t,e,o,r,n,i,s){var a,l=s.alignEmptyValues,u=0;if(t){if(e){switch(_typeof(s.locale)){case"boolean":s.locale&&(a=this.table.modules.localize.getLocale());break;case"string":a=s.locale}return String(t).toLowerCase().localeCompare(String(e).toLowerCase(),a)}u=1}else u=e?-1:0;return("top"===l&&"desc"===i||"bottom"===l&&"asc"===i)&&(u*=-1),u},date:function(t,e,o,r,n,i,s){return s.format||(s.format="DD/MM/YYYY"),this.sorters.datetime.call(this,t,e,o,r,n,i,s)},time:function(t,e,o,r,n,i,s){return s.format||(s.format="hh:mm"),this.sorters.datetime.call(this,t,e,o,r,n,i,s)},datetime:function(t,e,o,r,n,i,s){var a=s.format||"DD/MM/YYYY hh:mm:ss",l=s.alignEmptyValues,u=0;if("undefined"!=typeof moment){if(t=moment(t,a),e=moment(e,a),t.isValid()){if(e.isValid())return t-e;u=1}else u=e.isValid()?-1:0;return("top"===l&&"desc"===i||"bottom"===l&&"asc"===i)&&(u*=-1),u}console.error("Sort Error - 'datetime' sorter is dependant on moment.js")},boolean:function(t,e,o,r,n,i,s){return(!0===t||"true"===t||"True"===t||1===t?1:0)-(!0===e||"true"===e||"True"===e||1===e?1:0)},array:function(t,e,o,r,n,i,s){function a(t){switch(c){case"length":return t.length;case"sum":return t.reduce(function(t,e){return t+e});case"max":return Math.max.apply(null,t);case"min":return Math.min.apply(null,t);case"avg":return t.reduce(function(t,e){return t+e})/t.length}}var l=0,u=0,c=s.type||"length",d=s.alignEmptyValues,m=0;if(Array.isArray(t)){if(Array.isArray(e))return l=t?a(t):0,u=e?a(e):0,l-u;d=1}else d=Array.isArray(e)?-1:0;return("top"===d&&"desc"===i||"bottom"===d&&"asc"===i)&&(m*=-1),m},exists:function(t,e,o,r,n,i,s){return(void 0===t?0:1)-(void 0===e?0:1)},alphanum:function(t,e,o,r,n,i,s){var a,l,u,c,d,m=0,f=/(\d+)|(\D+)/g,p=/\d/,h=s.alignEmptyValues,g=0;if(t||0===t){if(e||0===e){if(isFinite(t)&&isFinite(e))return t-e;if(a=String(t).toLowerCase(),l=String(e).toLowerCase(),a===l)return 0;if(!p.test(a)||!p.test(l))return a>l?1:-1;for(a=a.match(f),l=l.match(f),d=a.length>l.length?l.length:a.length;m<d;)if(u=a[m],c=l[m++],u!==c)return isFinite(u)&&isFinite(c)?("0"===u.charAt(0)&&(u="."+u),"0"===c.charAt(0)&&(c="."+c),u-c):u>c?1:-1;return a.length>l.length}g=1}else g=e||0===e?-1:0;return("top"===h&&"desc"===i||"bottom"===h&&"asc"===i)&&(g*=-1),g}},Tabulator.prototype.registerModule("sort",Sort);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/validate.js b/backoffice/vendors/tabulator/js.old/modules/validate.js
new file mode 100644 (file)
index 0000000..3bf46d1
--- /dev/null
@@ -0,0 +1,219 @@
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+
+var Validate = function Validate(table) {
+       this.table = table;
+};
+
+//validate
+Validate.prototype.initializeColumn = function (column) {
+       var self = this,
+           config = [],
+           validator;
+
+       if (column.definition.validator) {
+
+               if (Array.isArray(column.definition.validator)) {
+                       column.definition.validator.forEach(function (item) {
+                               validator = self._extractValidator(item);
+
+                               if (validator) {
+                                       config.push(validator);
+                               }
+                       });
+               } else {
+                       validator = this._extractValidator(column.definition.validator);
+
+                       if (validator) {
+                               config.push(validator);
+                       }
+               }
+
+               column.modules.validate = config.length ? config : false;
+       }
+};
+
+Validate.prototype._extractValidator = function (value) {
+       var type, params, pos;
+
+       switch (typeof value === "undefined" ? "undefined" : _typeof(value)) {
+               case "string":
+                       pos = value.indexOf(':');
+
+                       if (pos > -1) {
+                               type = value.substring(0, pos);
+                               params = value.substring(pos + 1);
+                       } else {
+                               type = value;
+                       }
+
+                       console.log("v", value, type, params);
+
+                       return this._buildValidator(type, params);
+                       break;
+
+               case "function":
+                       return this._buildValidator(value);
+                       break;
+
+               case "object":
+                       return this._buildValidator(value.type, value.parameters);
+                       break;
+       }
+};
+
+Validate.prototype._buildValidator = function (type, params) {
+
+       var func = typeof type == "function" ? type : this.validators[type];
+
+       if (!func) {
+               console.warn("Validator Setup Error - No matching validator found:", type);
+               return false;
+       } else {
+               return {
+                       type: typeof type == "function" ? "function" : type,
+                       func: func,
+                       params: params
+               };
+       }
+};
+
+Validate.prototype.validate = function (validators, cell, value) {
+       var self = this,
+           valid = [];
+
+       if (validators) {
+               validators.forEach(function (item) {
+                       if (!item.func.call(self, cell, value, item.params)) {
+                               valid.push({
+                                       type: item.type,
+                                       parameters: item.params
+                               });
+                       }
+               });
+       }
+
+       return valid.length ? valid : true;
+};
+
+Validate.prototype.validators = {
+
+       //is integer
+       integer: function integer(cell, value, parameters) {
+               if (value === "" || value === null || typeof value === "undefined") {
+                       return true;
+               }
+               value = Number(value);
+               return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;
+       },
+
+       //is float
+       float: function float(cell, value, parameters) {
+               if (value === "" || value === null || typeof value === "undefined") {
+                       return true;
+               }
+               value = Number(value);
+               return typeof value === 'number' && isFinite(value) && value % 1 !== 0;
+       },
+
+       //must be a number
+       numeric: function numeric(cell, value, parameters) {
+               if (value === "" || value === null || typeof value === "undefined") {
+                       return true;
+               }
+               return !isNaN(value);
+       },
+
+       //must be a string
+       string: function string(cell, value, parameters) {
+               if (value === "" || value === null || typeof value === "undefined") {
+                       return true;
+               }
+               return isNaN(value);
+       },
+
+       //maximum value
+       max: function max(cell, value, parameters) {
+               if (value === "" || value === null || typeof value === "undefined") {
+                       return true;
+               }
+               return parseFloat(value) <= parameters;
+       },
+
+       //minimum value
+       min: function min(cell, value, parameters) {
+               if (value === "" || value === null || typeof value === "undefined") {
+                       return true;
+               }
+               return parseFloat(value) >= parameters;
+       },
+
+       //minimum string length
+       minLength: function minLength(cell, value, parameters) {
+               if (value === "" || value === null || typeof value === "undefined") {
+                       return true;
+               }
+               return String(value).length >= parameters;
+       },
+
+       //maximum string length
+       maxLength: function maxLength(cell, value, parameters) {
+               if (value === "" || value === null || typeof value === "undefined") {
+                       return true;
+               }
+               return String(value).length <= parameters;
+       },
+
+       //in provided value list
+       in: function _in(cell, value, parameters) {
+               if (value === "" || value === null || typeof value === "undefined") {
+                       return true;
+               }
+               if (typeof parameters == "string") {
+                       parameters = parameters.split("|");
+               }
+
+               return value === "" || parameters.indexOf(value) > -1;
+       },
+
+       //must match provided regex
+       regex: function regex(cell, value, parameters) {
+               if (value === "" || value === null || typeof value === "undefined") {
+                       return true;
+               }
+               var reg = new RegExp(parameters);
+
+               return reg.test(value);
+       },
+
+       //value must be unique in this column
+       unique: function unique(cell, value, parameters) {
+               if (value === "" || value === null || typeof value === "undefined") {
+                       return true;
+               }
+               var unique = true;
+
+               var cellData = cell.getData();
+               var column = cell.getColumn()._getSelf();
+
+               this.table.rowManager.rows.forEach(function (row) {
+                       var data = row.getData();
+
+                       if (data !== cellData) {
+                               if (value == column.getFieldValue(data)) {
+                                       unique = false;
+                               }
+                       }
+               });
+
+               return unique;
+       },
+
+       //must have a value
+       required: function required(cell, value, parameters) {
+               return value !== "" && value !== null && typeof value !== "undefined";
+       }
+};
+
+Tabulator.prototype.registerModule("validate", Validate);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/modules/validate.min.js b/backoffice/vendors/tabulator/js.old/modules/validate.min.js
new file mode 100644 (file)
index 0000000..259a30f
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Validate=function(t){this.table=t};Validate.prototype.initializeColumn=function(t){var n,i=this,o=[];t.definition.validator&&(Array.isArray(t.definition.validator)?t.definition.validator.forEach(function(t){(n=i._extractValidator(t))&&o.push(n)}):(n=this._extractValidator(t.definition.validator))&&o.push(n),t.modules.validate=!!o.length&&o)},Validate.prototype._extractValidator=function(t){var n,i,o;switch(void 0===t?"undefined":_typeof(t)){case"string":return o=t.indexOf(":"),o>-1?(n=t.substring(0,o),i=t.substring(o+1)):n=t,console.log("v",t,n,i),this._buildValidator(n,i);case"function":return this._buildValidator(t);case"object":return this._buildValidator(t.type,t.parameters)}},Validate.prototype._buildValidator=function(t,n){var i="function"==typeof t?t:this.validators[t];return i?{type:"function"==typeof t?"function":t,func:i,params:n}:(console.warn("Validator Setup Error - No matching validator found:",t),!1)},Validate.prototype.validate=function(t,n,i){var o=this,r=[];return t&&t.forEach(function(t){t.func.call(o,n,i,t.params)||r.push({type:t.type,parameters:t.params})}),!r.length||r},Validate.prototype.validators={integer:function(t,n,i){return""===n||null===n||void 0===n||"number"==typeof(n=Number(n))&&isFinite(n)&&Math.floor(n)===n},float:function(t,n,i){return""===n||null===n||void 0===n||"number"==typeof(n=Number(n))&&isFinite(n)&&n%1!=0},numeric:function(t,n,i){return""===n||null===n||void 0===n||!isNaN(n)},string:function(t,n,i){return""===n||null===n||void 0===n||isNaN(n)},max:function(t,n,i){return""===n||null===n||void 0===n||parseFloat(n)<=i},min:function(t,n,i){return""===n||null===n||void 0===n||parseFloat(n)>=i},minLength:function(t,n,i){return""===n||null===n||void 0===n||String(n).length>=i},maxLength:function(t,n,i){return""===n||null===n||void 0===n||String(n).length<=i},in:function(t,n,i){return""===n||null===n||void 0===n||("string"==typeof i&&(i=i.split("|")),""===n||i.indexOf(n)>-1)},regex:function(t,n,i){return""===n||null===n||void 0===n||new RegExp(i).test(n)},unique:function(t,n,i){if(""===n||null===n||void 0===n)return!0;var o=!0,r=t.getData(),e=t.getColumn()._getSelf();return this.table.rowManager.rows.forEach(function(t){var i=t.getData();i!==r&&n==e.getFieldValue(i)&&(o=!1)}),o},required:function(t,n,i){return""!==n&&null!==n&&void 0!==n}},Tabulator.prototype.registerModule("validate",Validate);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/tabulator.js b/backoffice/vendors/tabulator/js.old/tabulator.js
new file mode 100644 (file)
index 0000000..e86fd3a
--- /dev/null
@@ -0,0 +1,22906 @@
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+
+;(function (global, factory) {
+       if ((typeof exports === 'undefined' ? 'undefined' : _typeof(exports)) === 'object' && typeof module !== 'undefined') {
+               module.exports = factory();
+       } else if (typeof define === 'function' && define.amd) {
+               define(factory);
+       } else {
+               global.Tabulator = factory();
+       }
+})(this, function () {
+
+       'use strict';
+
+       // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex
+
+
+       if (!Array.prototype.findIndex) {
+
+               Object.defineProperty(Array.prototype, 'findIndex', {
+
+                       value: function value(predicate) {
+
+                               // 1. Let O be ? ToObject(this value).
+
+
+                               if (this == null) {
+
+                                       throw new TypeError('"this" is null or not defined');
+                               }
+
+                               var o = Object(this);
+
+                               // 2. Let len be ? ToLength(? Get(O, "length")).
+
+
+                               var len = o.length >>> 0;
+
+                               // 3. If IsCallable(predicate) is false, throw a TypeError exception.
+
+
+                               if (typeof predicate !== 'function') {
+
+                                       throw new TypeError('predicate must be a function');
+                               }
+
+                               // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.
+
+
+                               var thisArg = arguments[1];
+
+                               // 5. Let k be 0.
+
+
+                               var k = 0;
+
+                               // 6. Repeat, while k < len
+
+
+                               while (k < len) {
+
+                                       // a. Let Pk be ! ToString(k).
+
+
+                                       // b. Let kValue be ? Get(O, Pk).
+
+
+                                       // c. Let testResult be ToBoolean(? Call(predicate, T, Â« kValue, k, O Â»)).
+
+
+                                       // d. If testResult is true, return k.
+
+
+                                       var kValue = o[k];
+
+                                       if (predicate.call(thisArg, kValue, k, o)) {
+
+                                               return k;
+                                       }
+
+                                       // e. Increase k by 1.
+
+
+                                       k++;
+                               }
+
+                               // 7. Return -1.
+
+
+                               return -1;
+                       }
+
+               });
+       }
+
+       // https://tc39.github.io/ecma262/#sec-array.prototype.find
+
+
+       if (!Array.prototype.find) {
+
+               Object.defineProperty(Array.prototype, 'find', {
+
+                       value: function value(predicate) {
+
+                               // 1. Let O be ? ToObject(this value).
+
+
+                               if (this == null) {
+
+                                       throw new TypeError('"this" is null or not defined');
+                               }
+
+                               var o = Object(this);
+
+                               // 2. Let len be ? ToLength(? Get(O, "length")).
+
+
+                               var len = o.length >>> 0;
+
+                               // 3. If IsCallable(predicate) is false, throw a TypeError exception.
+
+
+                               if (typeof predicate !== 'function') {
+
+                                       throw new TypeError('predicate must be a function');
+                               }
+
+                               // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.
+
+
+                               var thisArg = arguments[1];
+
+                               // 5. Let k be 0.
+
+
+                               var k = 0;
+
+                               // 6. Repeat, while k < len
+
+
+                               while (k < len) {
+
+                                       // a. Let Pk be ! ToString(k).
+
+
+                                       // b. Let kValue be ? Get(O, Pk).
+
+
+                                       // c. Let testResult be ToBoolean(? Call(predicate, T, Â« kValue, k, O Â»)).
+
+
+                                       // d. If testResult is true, return kValue.
+
+
+                                       var kValue = o[k];
+
+                                       if (predicate.call(thisArg, kValue, k, o)) {
+
+                                               return kValue;
+                                       }
+
+                                       // e. Increase k by 1.
+
+
+                                       k++;
+                               }
+
+                               // 7. Return undefined.
+
+
+                               return undefined;
+                       }
+
+               });
+       }
+
+       var ColumnManager = function ColumnManager(table) {
+
+               this.table = table; //hold parent table
+
+
+               this.blockHozScrollEvent = false;
+
+               this.headersElement = this.createHeadersElement();
+
+               this.element = this.createHeaderElement(); //containing element
+
+
+               this.rowManager = null; //hold row manager object
+
+
+               this.columns = []; // column definition object
+
+
+               this.columnsByIndex = []; //columns by index
+
+
+               this.columnsByField = {}; //columns by field
+
+
+               this.scrollLeft = 0;
+
+               this.element.insertBefore(this.headersElement, this.element.firstChild);
+       };
+
+       ////////////// Setup Functions /////////////////
+
+
+       ColumnManager.prototype.createHeadersElement = function () {
+
+               var el = document.createElement("div");
+
+               el.classList.add("tabulator-headers");
+
+               return el;
+       };
+
+       ColumnManager.prototype.createHeaderElement = function () {
+
+               var el = document.createElement("div");
+
+               el.classList.add("tabulator-header");
+
+               if (!this.table.options.headerVisible) {
+
+                       el.classList.add("tabulator-header-hidden");
+               }
+
+               return el;
+       };
+
+       ColumnManager.prototype.initialize = function () {
+
+               var self = this;
+
+               //scroll body along with header
+
+
+               // self.element.addEventListener("scroll", function(e){
+
+
+               //      if(!self.blockHozScrollEvent){
+
+
+               //              self.table.rowManager.scrollHorizontal(self.element.scrollLeft);
+
+
+               //      }
+
+
+               // });
+
+       };
+
+       //link to row manager
+
+
+       ColumnManager.prototype.setRowManager = function (manager) {
+
+               this.rowManager = manager;
+       };
+
+       //return containing element
+
+
+       ColumnManager.prototype.getElement = function () {
+
+               return this.element;
+       };
+
+       //return header containing element
+
+
+       ColumnManager.prototype.getHeadersElement = function () {
+
+               return this.headersElement;
+       };
+
+       // ColumnManager.prototype.tempScrollBlock = function(){
+
+
+       //      clearTimeout(this.blockHozScrollEvent);
+
+
+       //      this.blockHozScrollEvent = setTimeout(() => {this.blockHozScrollEvent = false;}, 50);
+
+
+       // }
+
+
+       //scroll horizontally to match table body
+
+
+       ColumnManager.prototype.scrollHorizontal = function (left) {
+
+               var hozAdjust = 0,
+                   scrollWidth = this.element.scrollWidth - this.table.element.clientWidth;
+
+               // this.tempScrollBlock();
+
+
+               this.element.scrollLeft = left;
+
+               //adjust for vertical scrollbar moving table when present
+
+
+               if (left > scrollWidth) {
+
+                       hozAdjust = left - scrollWidth;
+
+                       this.element.style.marginLeft = -hozAdjust + "px";
+               } else {
+
+                       this.element.style.marginLeft = 0;
+               }
+
+               //keep frozen columns fixed in position
+
+
+               //this._calcFrozenColumnsPos(hozAdjust + 3);
+
+
+               this.scrollLeft = left;
+
+               if (this.table.modExists("frozenColumns")) {
+
+                       this.table.modules.frozenColumns.scrollHorizontal();
+               }
+       };
+
+       ///////////// Column Setup Functions /////////////
+
+
+       ColumnManager.prototype.generateColumnsFromRowData = function (data) {
+
+               var cols = [],
+                   row,
+                   sorter;
+
+               if (data && data.length) {
+
+                       row = data[0];
+
+                       for (var key in row) {
+
+                               var col = {
+
+                                       field: key,
+
+                                       title: key
+
+                               };
+
+                               var value = row[key];
+
+                               switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
+
+                                       case "undefined":
+
+                                               sorter = "string";
+
+                                               break;
+
+                                       case "boolean":
+
+                                               sorter = "boolean";
+
+                                               break;
+
+                                       case "object":
+
+                                               if (Array.isArray(value)) {
+
+                                                       sorter = "array";
+                                               } else {
+
+                                                       sorter = "string";
+                                               }
+
+                                               break;
+
+                                       default:
+
+                                               if (!isNaN(value) && value !== "") {
+
+                                                       sorter = "number";
+                                               } else {
+
+                                                       if (value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)) {
+
+                                                               sorter = "alphanum";
+                                                       } else {
+
+                                                               sorter = "string";
+                                                       }
+                                               }
+
+                                               break;
+
+                               }
+
+                               col.sorter = sorter;
+
+                               cols.push(col);
+                       }
+
+                       this.table.options.columns = cols;
+
+                       this.setColumns(this.table.options.columns);
+               }
+       };
+
+       ColumnManager.prototype.setColumns = function (cols, row) {
+
+               var self = this;
+
+               while (self.headersElement.firstChild) {
+                       self.headersElement.removeChild(self.headersElement.firstChild);
+               }self.columns = [];
+
+               self.columnsByIndex = [];
+
+               self.columnsByField = {};
+
+               //reset frozen columns
+
+
+               if (self.table.modExists("frozenColumns")) {
+
+                       self.table.modules.frozenColumns.reset();
+               }
+
+               cols.forEach(function (def, i) {
+
+                       self._addColumn(def);
+               });
+
+               self._reIndexColumns();
+
+               if (self.table.options.responsiveLayout && self.table.modExists("responsiveLayout", true)) {
+
+                       self.table.modules.responsiveLayout.initialize();
+               }
+
+               self.redraw(true);
+       };
+
+       ColumnManager.prototype._addColumn = function (definition, before, nextToColumn) {
+
+               var column = new Column(definition, this),
+                   colEl = column.getElement(),
+                   index = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;
+
+               if (nextToColumn && index > -1) {
+
+                       var parentIndex = this.columns.indexOf(nextToColumn.getTopColumn());
+
+                       var nextEl = nextToColumn.getElement();
+
+                       if (before) {
+
+                               this.columns.splice(parentIndex, 0, column);
+
+                               nextEl.parentNode.insertBefore(colEl, nextEl);
+                       } else {
+
+                               this.columns.splice(parentIndex + 1, 0, column);
+
+                               nextEl.parentNode.insertBefore(colEl, nextEl.nextSibling);
+                       }
+               } else {
+
+                       if (before) {
+
+                               this.columns.unshift(column);
+
+                               this.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild);
+                       } else {
+
+                               this.columns.push(column);
+
+                               this.headersElement.appendChild(column.getElement());
+                       }
+               }
+
+               return column;
+       };
+
+       ColumnManager.prototype.registerColumnField = function (col) {
+
+               if (col.definition.field) {
+
+                       this.columnsByField[col.definition.field] = col;
+               }
+       };
+
+       ColumnManager.prototype.registerColumnPosition = function (col) {
+
+               this.columnsByIndex.push(col);
+       };
+
+       ColumnManager.prototype._reIndexColumns = function () {
+
+               this.columnsByIndex = [];
+
+               this.columns.forEach(function (column) {
+
+                       column.reRegisterPosition();
+               });
+       };
+
+       //ensure column headers take up the correct amount of space in column groups
+
+
+       ColumnManager.prototype._verticalAlignHeaders = function () {
+
+               var self = this,
+                   minHeight = 0;
+
+               self.columns.forEach(function (column) {
+
+                       var height;
+
+                       column.clearVerticalAlign();
+
+                       height = column.getHeight();
+
+                       if (height > minHeight) {
+
+                               minHeight = height;
+                       }
+               });
+
+               self.columns.forEach(function (column) {
+
+                       column.verticalAlign(self.table.options.columnVertAlign, minHeight);
+               });
+
+               self.rowManager.adjustTableSize();
+       };
+
+       //////////////// Column Details /////////////////
+
+
+       ColumnManager.prototype.findColumn = function (subject) {
+
+               var self = this;
+
+               if ((typeof subject === 'undefined' ? 'undefined' : _typeof(subject)) == "object") {
+
+                       if (subject instanceof Column) {
+
+                               //subject is column element
+
+
+                               return subject;
+                       } else if (subject instanceof ColumnComponent) {
+
+                               //subject is public column component
+
+
+                               return subject._getSelf() || false;
+                       } else if (typeof HTMLElement !== "undefined" && subject instanceof HTMLElement) {
+
+                               //subject is a HTML element of the column header
+
+
+                               var match = self.columns.find(function (column) {
+
+                                       return column.element === subject;
+                               });
+
+                               return match || false;
+                       }
+               } else {
+
+                       //subject should be treated as the field name of the column
+
+
+                       return this.columnsByField[subject] || false;
+               }
+
+               //catch all for any other type of input
+
+
+               return false;
+       };
+
+       ColumnManager.prototype.getColumnByField = function (field) {
+
+               return this.columnsByField[field];
+       };
+
+       ColumnManager.prototype.getColumnsByFieldRoot = function (root) {
+               var _this = this;
+
+               var matches = [];
+
+               Object.keys(this.columnsByField).forEach(function (field) {
+
+                       var fieldRoot = field.split(".")[0];
+
+                       if (fieldRoot === root) {
+
+                               matches.push(_this.columnsByField[field]);
+                       }
+               });
+
+               return matches;
+       };
+
+       ColumnManager.prototype.getColumnByIndex = function (index) {
+
+               return this.columnsByIndex[index];
+       };
+
+       ColumnManager.prototype.getFirstVisibileColumn = function (index) {
+
+               var index = this.columnsByIndex.findIndex(function (col) {
+
+                       return col.visible;
+               });
+
+               return index > -1 ? this.columnsByIndex[index] : false;
+       };
+
+       ColumnManager.prototype.getColumns = function () {
+
+               return this.columns;
+       };
+
+       ColumnManager.prototype.findColumnIndex = function (column) {
+
+               return this.columnsByIndex.findIndex(function (col) {
+
+                       return column === col;
+               });
+       };
+
+       //return all columns that are not groups
+
+
+       ColumnManager.prototype.getRealColumns = function () {
+
+               return this.columnsByIndex;
+       };
+
+       //travers across columns and call action
+
+
+       ColumnManager.prototype.traverse = function (callback) {
+
+               var self = this;
+
+               self.columnsByIndex.forEach(function (column, i) {
+
+                       callback(column, i);
+               });
+       };
+
+       //get defintions of actual columns
+
+
+       ColumnManager.prototype.getDefinitions = function (active) {
+
+               var self = this,
+                   output = [];
+
+               self.columnsByIndex.forEach(function (column) {
+
+                       if (!active || active && column.visible) {
+
+                               output.push(column.getDefinition());
+                       }
+               });
+
+               return output;
+       };
+
+       //get full nested definition tree
+
+
+       ColumnManager.prototype.getDefinitionTree = function () {
+
+               var self = this,
+                   output = [];
+
+               self.columns.forEach(function (column) {
+
+                       output.push(column.getDefinition(true));
+               });
+
+               return output;
+       };
+
+       ColumnManager.prototype.getComponents = function (structured) {
+
+               var self = this,
+                   output = [],
+                   columns = structured ? self.columns : self.columnsByIndex;
+
+               columns.forEach(function (column) {
+
+                       output.push(column.getComponent());
+               });
+
+               return output;
+       };
+
+       ColumnManager.prototype.getWidth = function () {
+
+               var width = 0;
+
+               this.columnsByIndex.forEach(function (column) {
+
+                       if (column.visible) {
+
+                               width += column.getWidth();
+                       }
+               });
+
+               return width;
+       };
+
+       ColumnManager.prototype.moveColumn = function (from, to, after) {
+
+               this.moveColumnActual(from, to, after);
+
+               if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+                       this.table.modules.responsiveLayout.initialize();
+               }
+
+               if (this.table.modExists("columnCalcs")) {
+
+                       this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
+               }
+
+               to.element.parentNode.insertBefore(from.element, to.element);
+
+               if (after) {
+
+                       to.element.parentNode.insertBefore(to.element, from.element);
+               }
+
+               this._verticalAlignHeaders();
+
+               this.table.rowManager.reinitialize();
+       };
+
+       ColumnManager.prototype.moveColumnActual = function (from, to, after) {
+
+               this._moveColumnInArray(this.columns, from, to, after);
+
+               this._moveColumnInArray(this.columnsByIndex, from, to, after, true);
+
+               if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+                       this.table.modules.responsiveLayout.initialize();
+               }
+
+               if (this.table.options.columnMoved) {
+
+                       this.table.options.columnMoved.call(this.table, from.getComponent(), this.table.columnManager.getComponents());
+               }
+
+               if (this.table.options.persistentLayout && this.table.modExists("persistence", true)) {
+
+                       this.table.modules.persistence.save("columns");
+               }
+       };
+
+       ColumnManager.prototype._moveColumnInArray = function (columns, from, to, after, updateRows) {
+
+               var fromIndex = columns.indexOf(from),
+                   toIndex;
+
+               if (fromIndex > -1) {
+
+                       columns.splice(fromIndex, 1);
+
+                       toIndex = columns.indexOf(to);
+
+                       if (toIndex > -1) {
+
+                               if (after) {
+
+                                       toIndex = toIndex + 1;
+                               }
+                       } else {
+
+                               toIndex = fromIndex;
+                       }
+
+                       columns.splice(toIndex, 0, from);
+
+                       if (updateRows) {
+
+                               this.table.rowManager.rows.forEach(function (row) {
+
+                                       if (row.cells.length) {
+
+                                               var cell = row.cells.splice(fromIndex, 1)[0];
+
+                                               row.cells.splice(toIndex, 0, cell);
+                                       }
+                               });
+                       }
+               }
+       };
+
+       ColumnManager.prototype.scrollToColumn = function (column, position, ifVisible) {
+               var _this2 = this;
+
+               var left = 0,
+                   offset = 0,
+                   adjust = 0,
+                   colEl = column.getElement();
+
+               return new Promise(function (resolve, reject) {
+
+                       if (typeof position === "undefined") {
+
+                               position = _this2.table.options.scrollToColumnPosition;
+                       }
+
+                       if (typeof ifVisible === "undefined") {
+
+                               ifVisible = _this2.table.options.scrollToColumnIfVisible;
+                       }
+
+                       if (column.visible) {
+
+                               //align to correct position
+
+
+                               switch (position) {
+
+                                       case "middle":
+
+                                       case "center":
+
+                                               adjust = -_this2.element.clientWidth / 2;
+
+                                               break;
+
+                                       case "right":
+
+                                               adjust = colEl.clientWidth - _this2.headersElement.clientWidth;
+
+                                               break;
+
+                               }
+
+                               //check column visibility
+
+
+                               if (!ifVisible) {
+
+                                       offset = colEl.offsetLeft;
+
+                                       if (offset > 0 && offset + colEl.offsetWidth < _this2.element.clientWidth) {
+
+                                               return false;
+                                       }
+                               }
+
+                               //calculate scroll position
+
+
+                               left = colEl.offsetLeft + _this2.element.scrollLeft + adjust;
+
+                               left = Math.max(Math.min(left, _this2.table.rowManager.element.scrollWidth - _this2.table.rowManager.element.clientWidth), 0);
+
+                               _this2.table.rowManager.scrollHorizontal(left);
+
+                               _this2.scrollHorizontal(left);
+
+                               resolve();
+                       } else {
+
+                               console.warn("Scroll Error - Column not visible");
+
+                               reject("Scroll Error - Column not visible");
+                       }
+               });
+       };
+
+       //////////////// Cell Management /////////////////
+
+
+       ColumnManager.prototype.generateCells = function (row) {
+
+               var self = this;
+
+               var cells = [];
+
+               self.columnsByIndex.forEach(function (column) {
+
+                       cells.push(column.generateCell(row));
+               });
+
+               return cells;
+       };
+
+       //////////////// Column Management /////////////////
+
+
+       ColumnManager.prototype.getFlexBaseWidth = function () {
+
+               var self = this,
+                   totalWidth = self.table.element.clientWidth,
+                   //table element width
+
+
+               fixedWidth = 0;
+
+               //adjust for vertical scrollbar if present
+
+
+               if (self.rowManager.element.scrollHeight > self.rowManager.element.clientHeight) {
+
+                       totalWidth -= self.rowManager.element.offsetWidth - self.rowManager.element.clientWidth;
+               }
+
+               this.columnsByIndex.forEach(function (column) {
+
+                       var width, minWidth, colWidth;
+
+                       if (column.visible) {
+
+                               width = column.definition.width || 0;
+
+                               minWidth = typeof column.minWidth == "undefined" ? self.table.options.columnMinWidth : parseInt(column.minWidth);
+
+                               if (typeof width == "string") {
+
+                                       if (width.indexOf("%") > -1) {
+
+                                               colWidth = totalWidth / 100 * parseInt(width);
+                                       } else {
+
+                                               colWidth = parseInt(width);
+                                       }
+                               } else {
+
+                                       colWidth = width;
+                               }
+
+                               fixedWidth += colWidth > minWidth ? colWidth : minWidth;
+                       }
+               });
+
+               return fixedWidth;
+       };
+
+       ColumnManager.prototype.addColumn = function (definition, before, nextToColumn) {
+
+               var column = this._addColumn(definition, before, nextToColumn);
+
+               this._reIndexColumns();
+
+               if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+                       this.table.modules.responsiveLayout.initialize();
+               }
+
+               if (this.table.modExists("columnCalcs")) {
+
+                       this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
+               }
+
+               this.redraw();
+
+               if (this.table.modules.layout.getMode() != "fitColumns") {
+
+                       column.reinitializeWidth();
+               }
+
+               this._verticalAlignHeaders();
+
+               this.table.rowManager.reinitialize();
+       };
+
+       //remove column from system
+
+
+       ColumnManager.prototype.deregisterColumn = function (column) {
+
+               var field = column.getField(),
+                   index;
+
+               //remove from field list
+
+
+               if (field) {
+
+                       delete this.columnsByField[field];
+               }
+
+               //remove from index list
+
+
+               index = this.columnsByIndex.indexOf(column);
+
+               if (index > -1) {
+
+                       this.columnsByIndex.splice(index, 1);
+               }
+
+               //remove from column list
+
+
+               index = this.columns.indexOf(column);
+
+               if (index > -1) {
+
+                       this.columns.splice(index, 1);
+               }
+
+               if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+                       this.table.modules.responsiveLayout.initialize();
+               }
+
+               this.redraw();
+       };
+
+       //redraw columns
+
+
+       ColumnManager.prototype.redraw = function (force) {
+
+               if (force) {
+
+                       if (Tabulator.prototype.helpers.elVisible(this.element)) {
+
+                               this._verticalAlignHeaders();
+                       }
+
+                       this.table.rowManager.resetScroll();
+
+                       this.table.rowManager.reinitialize();
+               }
+
+               if (this.table.modules.layout.getMode() == "fitColumns") {
+
+                       this.table.modules.layout.layout();
+               } else {
+
+                       if (force) {
+
+                               this.table.modules.layout.layout();
+                       } else {
+
+                               if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+                                       this.table.modules.responsiveLayout.update();
+                               }
+                       }
+               }
+
+               if (this.table.modExists("frozenColumns")) {
+
+                       this.table.modules.frozenColumns.layout();
+               }
+
+               if (this.table.modExists("columnCalcs")) {
+
+                       this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
+               }
+
+               if (force) {
+
+                       if (this.table.options.persistentLayout && this.table.modExists("persistence", true)) {
+
+                               this.table.modules.persistence.save("columns");
+                       }
+
+                       if (this.table.modExists("columnCalcs")) {
+
+                               this.table.modules.columnCalcs.redraw();
+                       }
+               }
+
+               this.table.footerManager.redraw();
+       };
+
+       //public column object
+
+       var ColumnComponent = function ColumnComponent(column) {
+
+               this._column = column;
+
+               this.type = "ColumnComponent";
+       };
+
+       ColumnComponent.prototype.getElement = function () {
+
+               return this._column.getElement();
+       };
+
+       ColumnComponent.prototype.getDefinition = function () {
+
+               return this._column.getDefinition();
+       };
+
+       ColumnComponent.prototype.getField = function () {
+
+               return this._column.getField();
+       };
+
+       ColumnComponent.prototype.getCells = function () {
+
+               var cells = [];
+
+               this._column.cells.forEach(function (cell) {
+
+                       cells.push(cell.getComponent());
+               });
+
+               return cells;
+       };
+
+       ColumnComponent.prototype.getVisibility = function () {
+
+               return this._column.visible;
+       };
+
+       ColumnComponent.prototype.show = function () {
+
+               if (this._column.isGroup) {
+
+                       this._column.columns.forEach(function (column) {
+
+                               column.show();
+                       });
+               } else {
+
+                       this._column.show();
+               }
+       };
+
+       ColumnComponent.prototype.hide = function () {
+
+               if (this._column.isGroup) {
+
+                       this._column.columns.forEach(function (column) {
+
+                               column.hide();
+                       });
+               } else {
+
+                       this._column.hide();
+               }
+       };
+
+       ColumnComponent.prototype.toggle = function () {
+
+               if (this._column.visible) {
+
+                       this.hide();
+               } else {
+
+                       this.show();
+               }
+       };
+
+       ColumnComponent.prototype.delete = function () {
+
+               this._column.delete();
+       };
+
+       ColumnComponent.prototype.getSubColumns = function () {
+
+               var output = [];
+
+               if (this._column.columns.length) {
+
+                       this._column.columns.forEach(function (column) {
+
+                               output.push(column.getComponent());
+                       });
+               }
+
+               return output;
+       };
+
+       ColumnComponent.prototype.getParentColumn = function () {
+
+               return this._column.parent instanceof Column ? this._column.parent.getComponent() : false;
+       };
+
+       ColumnComponent.prototype._getSelf = function () {
+
+               return this._column;
+       };
+
+       ColumnComponent.prototype.scrollTo = function () {
+
+               return this._column.table.columnManager.scrollToColumn(this._column);
+       };
+
+       ColumnComponent.prototype.getTable = function () {
+
+               return this._column.table;
+       };
+
+       ColumnComponent.prototype.headerFilterFocus = function () {
+
+               if (this._column.table.modExists("filter", true)) {
+
+                       this._column.table.modules.filter.setHeaderFilterFocus(this._column);
+               }
+       };
+
+       ColumnComponent.prototype.reloadHeaderFilter = function () {
+
+               if (this._column.table.modExists("filter", true)) {
+
+                       this._column.table.modules.filter.reloadHeaderFilter(this._column);
+               }
+       };
+
+       ColumnComponent.prototype.setHeaderFilterValue = function (value) {
+
+               if (this._column.table.modExists("filter", true)) {
+
+                       this._column.table.modules.filter.setHeaderFilterValue(this._column, value);
+               }
+       };
+
+       ColumnComponent.prototype.move = function (to, after) {
+
+               var toColumn = this._column.table.columnManager.findColumn(to);
+
+               if (toColumn) {
+
+                       this._column.table.columnManager.moveColumn(this._column, toColumn, after);
+               } else {
+
+                       console.warn("Move Error - No matching column found:", toColumn);
+               }
+       };
+
+       ColumnComponent.prototype.getNextColumn = function () {
+
+               var nextCol = this._column.nextColumn();
+
+               return nextCol ? nextCol.getComponent() : false;
+       };
+
+       ColumnComponent.prototype.getPrevColumn = function () {
+
+               var prevCol = this._column.prevColumn();
+
+               return prevCol ? prevCol.getComponent() : false;
+       };
+
+       var Column = function Column(def, parent) {
+
+               var self = this;
+
+               this.table = parent.table;
+
+               this.definition = def; //column definition
+
+               this.parent = parent; //hold parent object
+
+               this.type = "column"; //type of element
+
+               this.columns = []; //child columns
+
+               this.cells = []; //cells bound to this column
+
+               this.element = this.createElement(); //column header element
+
+               this.contentElement = false;
+
+               this.groupElement = this.createGroupElement(); //column group holder element
+
+               this.isGroup = false;
+
+               this.tooltip = false; //hold column tooltip
+
+               this.hozAlign = ""; //horizontal text alignment
+
+
+               //multi dimensional filed handling
+
+               this.field = "";
+
+               this.fieldStructure = "";
+
+               this.getFieldValue = "";
+
+               this.setFieldValue = "";
+
+               this.setField(this.definition.field);
+
+               if (this.table.options.invalidOptionWarnings) {
+
+                       this.checkDefinition();
+               }
+
+               this.modules = {}; //hold module variables;
+
+
+               this.cellEvents = {
+
+                       cellClick: false,
+
+                       cellDblClick: false,
+
+                       cellContext: false,
+
+                       cellTap: false,
+
+                       cellDblTap: false,
+
+                       cellTapHold: false,
+
+                       cellMouseEnter: false,
+
+                       cellMouseLeave: false,
+
+                       cellMouseOver: false,
+
+                       cellMouseOut: false,
+
+                       cellMouseMove: false
+
+               };
+
+               this.width = null; //column width
+
+               this.widthStyled = ""; //column width prestyled to improve render efficiency
+
+               this.minWidth = null; //column minimum width
+
+               this.minWidthStyled = ""; //column minimum prestyled to improve render efficiency
+
+               this.widthFixed = false; //user has specified a width for this column
+
+
+               this.visible = true; //default visible state
+
+
+               this._mapDepricatedFunctionality();
+
+               //initialize column
+
+               if (def.columns) {
+
+                       this.isGroup = true;
+
+                       def.columns.forEach(function (def, i) {
+
+                               var newCol = new Column(def, self);
+
+                               self.attachColumn(newCol);
+                       });
+
+                       self.checkColumnVisibility();
+               } else {
+
+                       parent.registerColumnField(this);
+               }
+
+               if (def.rowHandle && this.table.options.movableRows !== false && this.table.modExists("moveRow")) {
+
+                       this.table.modules.moveRow.setHandle(true);
+               }
+
+               this._buildHeader();
+       };
+
+       Column.prototype.createElement = function () {
+
+               var el = document.createElement("div");
+
+               el.classList.add("tabulator-col");
+
+               el.setAttribute("role", "columnheader");
+
+               el.setAttribute("aria-sort", "none");
+
+               return el;
+       };
+
+       Column.prototype.createGroupElement = function () {
+
+               var el = document.createElement("div");
+
+               el.classList.add("tabulator-col-group-cols");
+
+               return el;
+       };
+
+       Column.prototype.checkDefinition = function () {
+               var _this3 = this;
+
+               Object.keys(this.definition).forEach(function (key) {
+
+                       if (_this3.defaultOptionList.indexOf(key) === -1) {
+
+                               console.warn("Invalid column definition option in '" + (_this3.field || _this3.definition.title) + "' column:", key);
+                       }
+               });
+       };
+
+       Column.prototype.setField = function (field) {
+
+               this.field = field;
+
+               this.fieldStructure = field ? this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field] : [];
+
+               this.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData;
+
+               this.setFieldValue = this.fieldStructure.length > 1 ? this._setNesteData : this._setFlatData;
+       };
+
+       //register column position with column manager
+
+       Column.prototype.registerColumnPosition = function (column) {
+
+               this.parent.registerColumnPosition(column);
+       };
+
+       //register column position with column manager
+
+       Column.prototype.registerColumnField = function (column) {
+
+               this.parent.registerColumnField(column);
+       };
+
+       //trigger position registration
+
+       Column.prototype.reRegisterPosition = function () {
+
+               if (this.isGroup) {
+
+                       this.columns.forEach(function (column) {
+
+                               column.reRegisterPosition();
+                       });
+               } else {
+
+                       this.registerColumnPosition(this);
+               }
+       };
+
+       Column.prototype._mapDepricatedFunctionality = function () {
+
+               if (typeof this.definition.hideInHtml !== "undefined") {
+
+                       this.definition.htmlOutput = !this.definition.hideInHtml;
+
+                       console.warn("hideInHtml column definition property is deprecated, you should now use htmlOutput");
+               }
+       };
+
+       Column.prototype.setTooltip = function () {
+
+               var self = this,
+                   def = self.definition;
+
+               //set header tooltips
+
+               var tooltip = def.headerTooltip || def.tooltip === false ? def.headerTooltip : self.table.options.tooltipsHeader;
+
+               if (tooltip) {
+
+                       if (tooltip === true) {
+
+                               if (def.field) {
+
+                                       self.table.modules.localize.bind("columns|" + def.field, function (value) {
+
+                                               self.element.setAttribute("title", value || def.title);
+                                       });
+                               } else {
+
+                                       self.element.setAttribute("title", def.title);
+                               }
+                       } else {
+
+                               if (typeof tooltip == "function") {
+
+                                       tooltip = tooltip(self.getComponent());
+
+                                       if (tooltip === false) {
+
+                                               tooltip = "";
+                                       }
+                               }
+
+                               self.element.setAttribute("title", tooltip);
+                       }
+               } else {
+
+                       self.element.setAttribute("title", "");
+               }
+       };
+
+       //build header element
+
+       Column.prototype._buildHeader = function () {
+
+               var self = this,
+                   def = self.definition;
+
+               while (self.element.firstChild) {
+                       self.element.removeChild(self.element.firstChild);
+               }if (def.headerVertical) {
+
+                       self.element.classList.add("tabulator-col-vertical");
+
+                       if (def.headerVertical === "flip") {
+
+                               self.element.classList.add("tabulator-col-vertical-flip");
+                       }
+               }
+
+               self.contentElement = self._bindEvents();
+
+               self.contentElement = self._buildColumnHeaderContent();
+
+               self.element.appendChild(self.contentElement);
+
+               if (self.isGroup) {
+
+                       self._buildGroupHeader();
+               } else {
+
+                       self._buildColumnHeader();
+               }
+
+               self.setTooltip();
+
+               //set resizable handles
+
+               if (self.table.options.resizableColumns && self.table.modExists("resizeColumns")) {
+
+                       self.table.modules.resizeColumns.initializeColumn("header", self, self.element);
+               }
+
+               //set resizable handles
+
+               if (def.headerFilter && self.table.modExists("filter") && self.table.modExists("edit")) {
+
+                       if (typeof def.headerFilterPlaceholder !== "undefined" && def.field) {
+
+                               self.table.modules.localize.setHeaderFilterColumnPlaceholder(def.field, def.headerFilterPlaceholder);
+                       }
+
+                       self.table.modules.filter.initializeColumn(self);
+               }
+
+               //set resizable handles
+
+               if (self.table.modExists("frozenColumns")) {
+
+                       self.table.modules.frozenColumns.initializeColumn(self);
+               }
+
+               //set movable column
+
+               if (self.table.options.movableColumns && !self.isGroup && self.table.modExists("moveColumn")) {
+
+                       self.table.modules.moveColumn.initializeColumn(self);
+               }
+
+               //set calcs column
+
+               if ((def.topCalc || def.bottomCalc) && self.table.modExists("columnCalcs")) {
+
+                       self.table.modules.columnCalcs.initializeColumn(self);
+               }
+
+               //update header tooltip on mouse enter
+
+               self.element.addEventListener("mouseenter", function (e) {
+
+                       self.setTooltip();
+               });
+       };
+
+       Column.prototype._bindEvents = function () {
+
+               var self = this,
+                   def = self.definition,
+                   dblTap,
+                   tapHold,
+                   tap;
+
+               //setup header click event bindings
+
+               if (typeof def.headerClick == "function") {
+
+                       self.element.addEventListener("click", function (e) {
+                               def.headerClick(e, self.getComponent());
+                       });
+               }
+
+               if (typeof def.headerDblClick == "function") {
+
+                       self.element.addEventListener("dblclick", function (e) {
+                               def.headerDblClick(e, self.getComponent());
+                       });
+               }
+
+               if (typeof def.headerContext == "function") {
+
+                       self.element.addEventListener("contextmenu", function (e) {
+                               def.headerContext(e, self.getComponent());
+                       });
+               }
+
+               //setup header tap event bindings
+
+               if (typeof def.headerTap == "function") {
+
+                       tap = false;
+
+                       self.element.addEventListener("touchstart", function (e) {
+
+                               tap = true;
+                       }, { passive: true });
+
+                       self.element.addEventListener("touchend", function (e) {
+
+                               if (tap) {
+
+                                       def.headerTap(e, self.getComponent());
+                               }
+
+                               tap = false;
+                       });
+               }
+
+               if (typeof def.headerDblTap == "function") {
+
+                       dblTap = null;
+
+                       self.element.addEventListener("touchend", function (e) {
+
+                               if (dblTap) {
+
+                                       clearTimeout(dblTap);
+
+                                       dblTap = null;
+
+                                       def.headerDblTap(e, self.getComponent());
+                               } else {
+
+                                       dblTap = setTimeout(function () {
+
+                                               clearTimeout(dblTap);
+
+                                               dblTap = null;
+                                       }, 300);
+                               }
+                       });
+               }
+
+               if (typeof def.headerTapHold == "function") {
+
+                       tapHold = null;
+
+                       self.element.addEventListener("touchstart", function (e) {
+
+                               clearTimeout(tapHold);
+
+                               tapHold = setTimeout(function () {
+
+                                       clearTimeout(tapHold);
+
+                                       tapHold = null;
+
+                                       tap = false;
+
+                                       def.headerTapHold(e, self.getComponent());
+                               }, 1000);
+                       }, { passive: true });
+
+                       self.element.addEventListener("touchend", function (e) {
+
+                               clearTimeout(tapHold);
+
+                               tapHold = null;
+                       });
+               }
+
+               //store column cell click event bindings
+
+               if (typeof def.cellClick == "function") {
+
+                       self.cellEvents.cellClick = def.cellClick;
+               }
+
+               if (typeof def.cellDblClick == "function") {
+
+                       self.cellEvents.cellDblClick = def.cellDblClick;
+               }
+
+               if (typeof def.cellContext == "function") {
+
+                       self.cellEvents.cellContext = def.cellContext;
+               }
+
+               //store column mouse event bindings
+
+               if (typeof def.cellMouseEnter == "function") {
+
+                       self.cellEvents.cellMouseEnter = def.cellMouseEnter;
+               }
+
+               if (typeof def.cellMouseLeave == "function") {
+
+                       self.cellEvents.cellMouseLeave = def.cellMouseLeave;
+               }
+
+               if (typeof def.cellMouseOver == "function") {
+
+                       self.cellEvents.cellMouseOver = def.cellMouseOver;
+               }
+
+               if (typeof def.cellMouseOut == "function") {
+
+                       self.cellEvents.cellMouseOut = def.cellMouseOut;
+               }
+
+               if (typeof def.cellMouseMove == "function") {
+
+                       self.cellEvents.cellMouseMove = def.cellMouseMove;
+               }
+
+               //setup column cell tap event bindings
+
+               if (typeof def.cellTap == "function") {
+
+                       self.cellEvents.cellTap = def.cellTap;
+               }
+
+               if (typeof def.cellDblTap == "function") {
+
+                       self.cellEvents.cellDblTap = def.cellDblTap;
+               }
+
+               if (typeof def.cellTapHold == "function") {
+
+                       self.cellEvents.cellTapHold = def.cellTapHold;
+               }
+
+               //setup column cell edit callbacks
+
+               if (typeof def.cellEdited == "function") {
+
+                       self.cellEvents.cellEdited = def.cellEdited;
+               }
+
+               if (typeof def.cellEditing == "function") {
+
+                       self.cellEvents.cellEditing = def.cellEditing;
+               }
+
+               if (typeof def.cellEditCancelled == "function") {
+
+                       self.cellEvents.cellEditCancelled = def.cellEditCancelled;
+               }
+       };
+
+       //build header element for header
+
+       Column.prototype._buildColumnHeader = function () {
+
+               var self = this,
+                   def = self.definition,
+                   table = self.table,
+                   sortable;
+
+               //set column sorter
+
+               if (table.modExists("sort")) {
+
+                       table.modules.sort.initializeColumn(self, self.contentElement);
+               }
+
+               //set column formatter
+
+               if (table.modExists("format")) {
+
+                       table.modules.format.initializeColumn(self);
+               }
+
+               //set column editor
+
+               if (typeof def.editor != "undefined" && table.modExists("edit")) {
+
+                       table.modules.edit.initializeColumn(self);
+               }
+
+               //set colum validator
+
+               if (typeof def.validator != "undefined" && table.modExists("validate")) {
+
+                       table.modules.validate.initializeColumn(self);
+               }
+
+               //set column mutator
+
+               if (table.modExists("mutator")) {
+
+                       table.modules.mutator.initializeColumn(self);
+               }
+
+               //set column accessor
+
+               if (table.modExists("accessor")) {
+
+                       table.modules.accessor.initializeColumn(self);
+               }
+
+               //set respoviveLayout
+
+               if (_typeof(table.options.responsiveLayout) && table.modExists("responsiveLayout")) {
+
+                       table.modules.responsiveLayout.initializeColumn(self);
+               }
+
+               //set column visibility
+
+               if (typeof def.visible != "undefined") {
+
+                       if (def.visible) {
+
+                               self.show(true);
+                       } else {
+
+                               self.hide(true);
+                       }
+               }
+
+               //asign additional css classes to column header
+
+               if (def.cssClass) {
+
+                       var classeNames = def.cssClass.split(" ");
+
+                       classeNames.forEach(function (className) {
+
+                               self.element.classList.add(className);
+                       });
+               }
+
+               if (def.field) {
+
+                       this.element.setAttribute("tabulator-field", def.field);
+               }
+
+               //set min width if present
+
+               self.setMinWidth(typeof def.minWidth == "undefined" ? self.table.options.columnMinWidth : parseInt(def.minWidth));
+
+               self.reinitializeWidth();
+
+               //set tooltip if present
+
+               self.tooltip = self.definition.tooltip || self.definition.tooltip === false ? self.definition.tooltip : self.table.options.tooltips;
+
+               //set orizontal text alignment
+
+               self.hozAlign = typeof self.definition.align == "undefined" ? "" : self.definition.align;
+       };
+
+       Column.prototype._buildColumnHeaderContent = function () {
+
+               var self = this,
+                   def = self.definition,
+                   table = self.table;
+
+               var contentElement = document.createElement("div");
+
+               contentElement.classList.add("tabulator-col-content");
+
+               contentElement.appendChild(self._buildColumnHeaderTitle());
+
+               return contentElement;
+       };
+
+       //build title element of column
+
+       Column.prototype._buildColumnHeaderTitle = function () {
+
+               var self = this,
+                   def = self.definition,
+                   table = self.table,
+                   title;
+
+               var titleHolderElement = document.createElement("div");
+
+               titleHolderElement.classList.add("tabulator-col-title");
+
+               if (def.editableTitle) {
+
+                       var titleElement = document.createElement("input");
+
+                       titleElement.classList.add("tabulator-title-editor");
+
+                       titleElement.addEventListener("click", function (e) {
+
+                               e.stopPropagation();
+
+                               titleElement.focus();
+                       });
+
+                       titleElement.addEventListener("change", function () {
+
+                               def.title = titleElement.value;
+
+                               table.options.columnTitleChanged.call(self.table, self.getComponent());
+                       });
+
+                       titleHolderElement.appendChild(titleElement);
+
+                       if (def.field) {
+
+                               table.modules.localize.bind("columns|" + def.field, function (text) {
+
+                                       titleElement.value = text || def.title || "&nbsp;";
+                               });
+                       } else {
+
+                               titleElement.value = def.title || "&nbsp;";
+                       }
+               } else {
+
+                       if (def.field) {
+
+                               table.modules.localize.bind("columns|" + def.field, function (text) {
+
+                                       self._formatColumnHeaderTitle(titleHolderElement, text || def.title || "&nbsp;");
+                               });
+                       } else {
+
+                               self._formatColumnHeaderTitle(titleHolderElement, def.title || "&nbsp;");
+                       }
+               }
+
+               return titleHolderElement;
+       };
+
+       Column.prototype._formatColumnHeaderTitle = function (el, title) {
+
+               var formatter, contents, params, mockCell;
+
+               if (this.definition.titleFormatter && this.table.modExists("format")) {
+
+                       formatter = this.table.modules.format.getFormatter(this.definition.titleFormatter);
+
+                       mockCell = {
+
+                               getValue: function getValue() {
+
+                                       return title;
+                               },
+
+                               getElement: function getElement() {
+
+                                       return el;
+                               }
+
+                       };
+
+                       params = this.definition.titleFormatterParams || {};
+
+                       params = typeof params === "function" ? params() : params;
+
+                       contents = formatter.call(this.table.modules.format, mockCell, params);
+
+                       switch (typeof contents === 'undefined' ? 'undefined' : _typeof(contents)) {
+
+                               case "object":
+
+                                       if (contents instanceof Node) {
+
+                                               el.appendChild(contents);
+                                       } else {
+
+                                               el.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:", contents);
+                                       }
+
+                                       break;
+
+                               case "undefined":
+
+                               case "null":
+
+                                       el.innerHTML = "";
+
+                                       break;
+
+                               default:
+
+                                       el.innerHTML = contents;
+
+                       }
+               } else {
+
+                       el.innerHTML = title;
+               }
+       };
+
+       //build header element for column group
+
+       Column.prototype._buildGroupHeader = function () {
+
+               this.element.classList.add("tabulator-col-group");
+
+               this.element.setAttribute("role", "columngroup");
+
+               this.element.setAttribute("aria-title", this.definition.title);
+
+               this.element.appendChild(this.groupElement);
+       };
+
+       //flat field lookup
+
+       Column.prototype._getFlatData = function (data) {
+
+               return data[this.field];
+       };
+
+       //nested field lookup
+
+       Column.prototype._getNestedData = function (data) {
+
+               var dataObj = data,
+                   structure = this.fieldStructure,
+                   length = structure.length,
+                   output;
+
+               for (var i = 0; i < length; i++) {
+
+                       dataObj = dataObj[structure[i]];
+
+                       output = dataObj;
+
+                       if (!dataObj) {
+
+                               break;
+                       }
+               }
+
+               return output;
+       };
+
+       //flat field set
+
+       Column.prototype._setFlatData = function (data, value) {
+
+               if (this.field) {
+
+                       data[this.field] = value;
+               }
+       };
+
+       //nested field set
+
+       Column.prototype._setNesteData = function (data, value) {
+
+               var dataObj = data,
+                   structure = this.fieldStructure,
+                   length = structure.length;
+
+               for (var i = 0; i < length; i++) {
+
+                       if (i == length - 1) {
+
+                               dataObj[structure[i]] = value;
+                       } else {
+
+                               if (!dataObj[structure[i]]) {
+
+                                       dataObj[structure[i]] = {};
+                               }
+
+                               dataObj = dataObj[structure[i]];
+                       }
+               }
+       };
+
+       //attach column to this group
+
+       Column.prototype.attachColumn = function (column) {
+
+               var self = this;
+
+               if (self.groupElement) {
+
+                       self.columns.push(column);
+
+                       self.groupElement.appendChild(column.getElement());
+               } else {
+
+                       console.warn("Column Warning - Column being attached to another column instead of column group");
+               }
+       };
+
+       //vertically align header in column
+
+       Column.prototype.verticalAlign = function (alignment, height) {
+
+               //calculate height of column header and group holder element
+
+               var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : height || this.parent.getHeadersElement().clientHeight;
+
+               // var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight;
+
+
+               this.element.style.height = parentHeight + "px";
+
+               if (this.isGroup) {
+
+                       this.groupElement.style.minHeight = parentHeight - this.contentElement.offsetHeight + "px";
+               }
+
+               //vertically align cell contents
+
+               if (!this.isGroup && alignment !== "top") {
+
+                       if (alignment === "bottom") {
+
+                               this.element.style.paddingTop = this.element.clientHeight - this.contentElement.offsetHeight + "px";
+                       } else {
+
+                               this.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) / 2 + "px";
+                       }
+               }
+
+               this.columns.forEach(function (column) {
+
+                       column.verticalAlign(alignment);
+               });
+       };
+
+       //clear vertical alignmenet
+
+       Column.prototype.clearVerticalAlign = function () {
+
+               this.element.style.paddingTop = "";
+
+               this.element.style.height = "";
+
+               this.element.style.minHeight = "";
+
+               this.groupElement.style.minHeight = "";
+
+               this.columns.forEach(function (column) {
+
+                       column.clearVerticalAlign();
+               });
+       };
+
+       //// Retreive Column Information ////
+
+
+       //return column header element
+
+       Column.prototype.getElement = function () {
+
+               return this.element;
+       };
+
+       //return colunm group element
+
+       Column.prototype.getGroupElement = function () {
+
+               return this.groupElement;
+       };
+
+       //return field name
+
+       Column.prototype.getField = function () {
+
+               return this.field;
+       };
+
+       //return the first column in a group
+
+       Column.prototype.getFirstColumn = function () {
+
+               if (!this.isGroup) {
+
+                       return this;
+               } else {
+
+                       if (this.columns.length) {
+
+                               return this.columns[0].getFirstColumn();
+                       } else {
+
+                               return false;
+                       }
+               }
+       };
+
+       //return the last column in a group
+
+       Column.prototype.getLastColumn = function () {
+
+               if (!this.isGroup) {
+
+                       return this;
+               } else {
+
+                       if (this.columns.length) {
+
+                               return this.columns[this.columns.length - 1].getLastColumn();
+                       } else {
+
+                               return false;
+                       }
+               }
+       };
+
+       //return all columns in a group
+
+       Column.prototype.getColumns = function () {
+
+               return this.columns;
+       };
+
+       //return all columns in a group
+
+       Column.prototype.getCells = function () {
+
+               return this.cells;
+       };
+
+       //retreive the top column in a group of columns
+
+       Column.prototype.getTopColumn = function () {
+
+               if (this.parent.isGroup) {
+
+                       return this.parent.getTopColumn();
+               } else {
+
+                       return this;
+               }
+       };
+
+       //return column definition object
+
+       Column.prototype.getDefinition = function (updateBranches) {
+
+               var colDefs = [];
+
+               if (this.isGroup && updateBranches) {
+
+                       this.columns.forEach(function (column) {
+
+                               colDefs.push(column.getDefinition(true));
+                       });
+
+                       this.definition.columns = colDefs;
+               }
+
+               return this.definition;
+       };
+
+       //////////////////// Actions ////////////////////
+
+
+       Column.prototype.checkColumnVisibility = function () {
+
+               var visible = false;
+
+               this.columns.forEach(function (column) {
+
+                       if (column.visible) {
+
+                               visible = true;
+                       }
+               });
+
+               if (visible) {
+
+                       this.show();
+
+                       this.parent.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), false);
+               } else {
+
+                       this.hide();
+               }
+       };
+
+       //show column
+
+       Column.prototype.show = function (silent, responsiveToggle) {
+
+               if (!this.visible) {
+
+                       this.visible = true;
+
+                       this.element.style.display = "";
+
+                       if (this.parent.isGroup) {
+
+                               this.parent.checkColumnVisibility();
+                       }
+
+                       this.cells.forEach(function (cell) {
+
+                               cell.show();
+                       });
+
+                       if (!this.isGroup && this.width === null) {
+
+                               this.reinitializeWidth();
+                       }
+
+                       this.table.columnManager._verticalAlignHeaders();
+
+                       if (this.table.options.persistentLayout && this.table.modExists("responsiveLayout", true)) {
+
+                               this.table.modules.persistence.save("columns");
+                       }
+
+                       if (!responsiveToggle && this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+                               this.table.modules.responsiveLayout.updateColumnVisibility(this, this.visible);
+                       }
+
+                       if (!silent) {
+
+                               this.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), true);
+                       }
+
+                       if (this.parent.isGroup) {
+
+                               this.parent.matchChildWidths();
+                       }
+               }
+       };
+
+       //hide column
+
+       Column.prototype.hide = function (silent, responsiveToggle) {
+
+               if (this.visible) {
+
+                       this.visible = false;
+
+                       this.element.style.display = "none";
+
+                       this.table.columnManager._verticalAlignHeaders();
+
+                       if (this.parent.isGroup) {
+
+                               this.parent.checkColumnVisibility();
+                       }
+
+                       this.cells.forEach(function (cell) {
+
+                               cell.hide();
+                       });
+
+                       if (this.table.options.persistentLayout && this.table.modExists("persistence", true)) {
+
+                               this.table.modules.persistence.save("columns");
+                       }
+
+                       if (!responsiveToggle && this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+                               this.table.modules.responsiveLayout.updateColumnVisibility(this, this.visible);
+                       }
+
+                       if (!silent) {
+
+                               this.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), false);
+                       }
+
+                       if (this.parent.isGroup) {
+
+                               this.parent.matchChildWidths();
+                       }
+               }
+       };
+
+       Column.prototype.matchChildWidths = function () {
+
+               var childWidth = 0;
+
+               if (this.contentElement && this.columns.length) {
+
+                       this.columns.forEach(function (column) {
+
+                               if (column.visible) {
+
+                                       childWidth += column.getWidth();
+                               }
+                       });
+
+                       this.contentElement.style.maxWidth = childWidth - 1 + "px";
+               }
+       };
+
+       Column.prototype.setWidth = function (width) {
+
+               this.widthFixed = true;
+
+               this.setWidthActual(width);
+       };
+
+       Column.prototype.setWidthActual = function (width) {
+
+               if (isNaN(width)) {
+
+                       width = Math.floor(this.table.element.clientWidth / 100 * parseInt(width));
+               }
+
+               width = Math.max(this.minWidth, width);
+
+               this.width = width;
+
+               this.widthStyled = width ? width + "px" : "";
+
+               this.element.style.width = this.widthStyled;
+
+               if (!this.isGroup) {
+
+                       this.cells.forEach(function (cell) {
+
+                               cell.setWidth();
+                       });
+               }
+
+               if (this.parent.isGroup) {
+
+                       this.parent.matchChildWidths();
+               }
+
+               //set resizable handles
+
+               if (this.table.modExists("frozenColumns")) {
+
+                       this.table.modules.frozenColumns.layout();
+               }
+       };
+
+       Column.prototype.checkCellHeights = function () {
+
+               var rows = [];
+
+               this.cells.forEach(function (cell) {
+
+                       if (cell.row.heightInitialized) {
+
+                               if (cell.row.getElement().offsetParent !== null) {
+
+                                       rows.push(cell.row);
+
+                                       cell.row.clearCellHeight();
+                               } else {
+
+                                       cell.row.heightInitialized = false;
+                               }
+                       }
+               });
+
+               rows.forEach(function (row) {
+
+                       row.calcHeight();
+               });
+
+               rows.forEach(function (row) {
+
+                       row.setCellHeight();
+               });
+       };
+
+       Column.prototype.getWidth = function () {
+
+               // return this.element.offsetWidth;
+
+               return this.width;
+       };
+
+       Column.prototype.getHeight = function () {
+
+               return this.element.offsetHeight;
+       };
+
+       Column.prototype.setMinWidth = function (minWidth) {
+
+               this.minWidth = minWidth;
+
+               this.minWidthStyled = minWidth ? minWidth + "px" : "";
+
+               this.element.style.minWidth = this.minWidthStyled;
+
+               this.cells.forEach(function (cell) {
+
+                       cell.setMinWidth();
+               });
+       };
+
+       Column.prototype.delete = function () {
+
+               if (this.isGroup) {
+
+                       this.columns.forEach(function (column) {
+
+                               column.delete();
+                       });
+               }
+
+               var cellCount = this.cells.length;
+
+               for (var i = 0; i < cellCount; i++) {
+
+                       this.cells[0].delete();
+               }
+
+               this.element.parentNode.removeChild(this.element);
+
+               this.table.columnManager.deregisterColumn(this);
+       };
+
+       //////////////// Cell Management /////////////////
+
+
+       //generate cell for this column
+
+       Column.prototype.generateCell = function (row) {
+
+               var self = this;
+
+               var cell = new Cell(self, row);
+
+               this.cells.push(cell);
+
+               return cell;
+       };
+
+       Column.prototype.nextColumn = function () {
+
+               var index = this.table.columnManager.findColumnIndex(this);
+
+               return index > -1 ? this._nextVisibleColumn(index + 1) : false;
+       };
+
+       Column.prototype._nextVisibleColumn = function (index) {
+
+               var column = this.table.columnManager.getColumnByIndex(index);
+
+               return !column || column.visible ? column : this._nextVisibleColumn(index + 1);
+       };
+
+       Column.prototype.prevColumn = function () {
+
+               var index = this.table.columnManager.findColumnIndex(this);
+
+               return index > -1 ? this._prevVisibleColumn(index - 1) : false;
+       };
+
+       Column.prototype._prevVisibleColumn = function (index) {
+
+               var column = this.table.columnManager.getColumnByIndex(index);
+
+               return !column || column.visible ? column : this._prevVisibleColumn(index - 1);
+       };
+
+       Column.prototype.reinitializeWidth = function (force) {
+
+               this.widthFixed = false;
+
+               //set width if present
+
+               if (typeof this.definition.width !== "undefined" && !force) {
+
+                       this.setWidth(this.definition.width);
+               }
+
+               //hide header filters to prevent them altering column width
+
+               if (this.table.modExists("filter")) {
+
+                       this.table.modules.filter.hideHeaderFilterElements();
+               }
+
+               this.fitToData();
+
+               //show header filters again after layout is complete
+
+               if (this.table.modExists("filter")) {
+
+                       this.table.modules.filter.showHeaderFilterElements();
+               }
+       };
+
+       //set column width to maximum cell width
+
+       Column.prototype.fitToData = function () {
+
+               var self = this;
+
+               if (!this.widthFixed) {
+
+                       this.element.style.width = "";
+
+                       self.cells.forEach(function (cell) {
+
+                               cell.clearWidth();
+                       });
+               }
+
+               var maxWidth = this.element.offsetWidth;
+
+               if (!self.width || !this.widthFixed) {
+
+                       self.cells.forEach(function (cell) {
+
+                               var width = cell.getWidth();
+
+                               if (width > maxWidth) {
+
+                                       maxWidth = width;
+                               }
+                       });
+
+                       if (maxWidth) {
+
+                               self.setWidthActual(maxWidth + 1);
+                       }
+               }
+       };
+
+       Column.prototype.deleteCell = function (cell) {
+
+               var index = this.cells.indexOf(cell);
+
+               if (index > -1) {
+
+                       this.cells.splice(index, 1);
+               }
+       };
+
+       Column.prototype.defaultOptionList = ["title", "field", "columns", "visible", "align", "width", "minWidth", "widthGrow", "widthShrink", "resizable", "frozen", "responsive", "tooltip", "cssClass", "rowHandle", "hideInHtml", "print", "htmlOutput", "sorter", "sorterParams", "formatter", "formatterParams", "variableHeight", "editable", "editor", "editorParams", "validator", "mutator", "mutatorParams", "mutatorData", "mutatorDataParams", "mutatorEdit", "mutatorEditParams", "mutatorClipboard", "mutatorClipboardParams", "accessor", "accessorParams", "accessorData", "accessorDataParams", "accessorDownload", "accessorDownloadParams", "accessorClipboard", "accessorClipboardParams", "clipboard", "download", "downloadTitle", "topCalc", "topCalcParams", "topCalcFormatter", "topCalcFormatterParams", "bottomCalc", "bottomCalcParams", "bottomCalcFormatter", "bottomCalcFormatterParams", "cellClick", "cellDblClick", "cellContext", "cellTap", "cellDblTap", "cellTapHold", "cellMouseEnter", "cellMouseLeave", "cellMouseOver", "cellMouseOut", "cellMouseMove", "cellEditing", "cellEdited", "cellEditCancelled", "headerSort", "headerSortStartingDir", "headerSortTristate", "headerClick", "headerDblClick", "headerContext", "headerTap", "headerDblTap", "headerTapHold", "headerTooltip", "headerVertical", "editableTitle", "titleFormatter", "titleFormatterParams", "headerFilter", "headerFilterPlaceholder", "headerFilterParams", "headerFilterEmptyCheck", "headerFilterFunc", "headerFilterFuncParams", "headerFilterLiveFilter", "print"];
+
+       //////////////// Event Bindings /////////////////
+
+
+       //////////////// Object Generation /////////////////
+
+       Column.prototype.getComponent = function () {
+
+               return new ColumnComponent(this);
+       };
+
+       var RowManager = function RowManager(table) {
+
+               this.table = table;
+
+               this.element = this.createHolderElement(); //containing element
+
+               this.tableElement = this.createTableElement(); //table element
+
+               this.columnManager = null; //hold column manager object
+
+               this.height = 0; //hold height of table element
+
+
+               this.firstRender = false; //handle first render
+
+               this.renderMode = "classic"; //current rendering mode
+
+
+               this.rows = []; //hold row data objects
+
+               this.activeRows = []; //rows currently available to on display in the table
+
+               this.activeRowsCount = 0; //count of active rows
+
+
+               this.displayRows = []; //rows currently on display in the table
+
+               this.displayRowsCount = 0; //count of display rows
+
+
+               this.scrollTop = 0;
+
+               this.scrollLeft = 0;
+
+               this.vDomRowHeight = 20; //approximation of row heights for padding
+
+
+               this.vDomTop = 0; //hold position for first rendered row in the virtual DOM
+
+               this.vDomBottom = 0; //hold possition for last rendered row in the virtual DOM
+
+
+               this.vDomScrollPosTop = 0; //last scroll position of the vDom top;
+
+               this.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom;
+
+
+               this.vDomTopPad = 0; //hold value of padding for top of virtual DOM
+
+               this.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM
+
+
+               this.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go
+
+
+               this.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling
+
+
+               this.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows)
+
+               this.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin
+
+
+               this.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed
+
+               this.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed
+       };
+
+       //////////////// Setup Functions /////////////////
+
+
+       RowManager.prototype.createHolderElement = function () {
+
+               var el = document.createElement("div");
+
+               el.classList.add("tabulator-tableHolder");
+
+               el.setAttribute("tabindex", 0);
+
+               return el;
+       };
+
+       RowManager.prototype.createTableElement = function () {
+
+               var el = document.createElement("div");
+
+               el.classList.add("tabulator-table");
+
+               return el;
+       };
+
+       //return containing element
+
+       RowManager.prototype.getElement = function () {
+
+               return this.element;
+       };
+
+       //return table element
+
+       RowManager.prototype.getTableElement = function () {
+
+               return this.tableElement;
+       };
+
+       //return position of row in table
+
+       RowManager.prototype.getRowPosition = function (row, active) {
+
+               if (active) {
+
+                       return this.activeRows.indexOf(row);
+               } else {
+
+                       return this.rows.indexOf(row);
+               }
+       };
+
+       //link to column manager
+
+       RowManager.prototype.setColumnManager = function (manager) {
+
+               this.columnManager = manager;
+       };
+
+       RowManager.prototype.initialize = function () {
+
+               var self = this;
+
+               self.setRenderMode();
+
+               //initialize manager
+
+               self.element.appendChild(self.tableElement);
+
+               self.firstRender = true;
+
+               //scroll header along with table body
+
+               self.element.addEventListener("scroll", function () {
+
+                       var left = self.element.scrollLeft;
+
+                       //handle horizontal scrolling
+
+                       if (self.scrollLeft != left) {
+
+                               self.columnManager.scrollHorizontal(left);
+
+                               if (self.table.options.groupBy) {
+
+                                       self.table.modules.groupRows.scrollHeaders(left);
+                               }
+
+                               if (self.table.modExists("columnCalcs")) {
+
+                                       self.table.modules.columnCalcs.scrollHorizontal(left);
+                               }
+                       }
+
+                       self.scrollLeft = left;
+               });
+
+               //handle virtual dom scrolling
+
+               if (this.renderMode === "virtual") {
+
+                       self.element.addEventListener("scroll", function () {
+
+                               var top = self.element.scrollTop;
+
+                               var dir = self.scrollTop > top;
+
+                               //handle verical scrolling
+
+                               if (self.scrollTop != top) {
+
+                                       self.scrollTop = top;
+
+                                       self.scrollVertical(dir);
+
+                                       if (self.table.options.ajaxProgressiveLoad == "scroll") {
+
+                                               self.table.modules.ajax.nextPage(self.element.scrollHeight - self.element.clientHeight - top);
+                                       }
+                               } else {
+
+                                       self.scrollTop = top;
+                               }
+                       });
+               }
+       };
+
+       ////////////////// Row Manipulation //////////////////
+
+
+       RowManager.prototype.findRow = function (subject) {
+
+               var self = this;
+
+               if ((typeof subject === 'undefined' ? 'undefined' : _typeof(subject)) == "object") {
+
+                       if (subject instanceof Row) {
+
+                               //subject is row element
+
+                               return subject;
+                       } else if (subject instanceof RowComponent) {
+
+                               //subject is public row component
+
+                               return subject._getSelf() || false;
+                       } else if (typeof HTMLElement !== "undefined" && subject instanceof HTMLElement) {
+
+                               //subject is a HTML element of the row
+
+                               var match = self.rows.find(function (row) {
+
+                                       return row.element === subject;
+                               });
+
+                               return match || false;
+                       }
+               } else if (typeof subject == "undefined" || subject === null) {
+
+                       return false;
+               } else {
+
+                       //subject should be treated as the index of the row
+
+                       var _match = self.rows.find(function (row) {
+
+                               return row.data[self.table.options.index] == subject;
+                       });
+
+                       return _match || false;
+               }
+
+               //catch all for any other type of input
+
+
+               return false;
+       };
+
+       RowManager.prototype.getRowFromDataObject = function (data) {
+
+               var match = this.rows.find(function (row) {
+
+                       return row.data === data;
+               });
+
+               return match || false;
+       };
+
+       RowManager.prototype.getRowFromPosition = function (position, active) {
+
+               if (active) {
+
+                       return this.activeRows[position];
+               } else {
+
+                       return this.rows[position];
+               }
+       };
+
+       RowManager.prototype.scrollToRow = function (row, position, ifVisible) {
+               var _this4 = this;
+
+               var rowIndex = this.getDisplayRows().indexOf(row),
+                   rowEl = row.getElement(),
+                   rowTop,
+                   offset = 0;
+
+               return new Promise(function (resolve, reject) {
+
+                       if (rowIndex > -1) {
+
+                               if (typeof position === "undefined") {
+
+                                       position = _this4.table.options.scrollToRowPosition;
+                               }
+
+                               if (typeof ifVisible === "undefined") {
+
+                                       ifVisible = _this4.table.options.scrollToRowIfVisible;
+                               }
+
+                               if (position === "nearest") {
+
+                                       switch (_this4.renderMode) {
+
+                                               case "classic":
+
+                                                       rowTop = Tabulator.prototype.helpers.elOffset(rowEl).top;
+
+                                                       position = Math.abs(_this4.element.scrollTop - rowTop) > Math.abs(_this4.element.scrollTop + _this4.element.clientHeight - rowTop) ? "bottom" : "top";
+
+                                                       break;
+
+                                               case "virtual":
+
+                                                       position = Math.abs(_this4.vDomTop - rowIndex) > Math.abs(_this4.vDomBottom - rowIndex) ? "bottom" : "top";
+
+                                                       break;
+
+                                       }
+                               }
+
+                               //check row visibility
+
+                               if (!ifVisible) {
+
+                                       if (Tabulator.prototype.helpers.elVisible(rowEl)) {
+
+                                               offset = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this4.element).top;
+
+                                               if (offset > 0 && offset < _this4.element.clientHeight - rowEl.offsetHeight) {
+
+                                                       return false;
+                                               }
+                                       }
+                               }
+
+                               //scroll to row
+
+                               switch (_this4.renderMode) {
+
+                                       case "classic":
+
+                                               _this4.element.scrollTop = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this4.element).top + _this4.element.scrollTop;
+
+                                               break;
+
+                                       case "virtual":
+
+                                               _this4._virtualRenderFill(rowIndex, true);
+
+                                               break;
+
+                               }
+
+                               //align to correct position
+
+                               switch (position) {
+
+                                       case "middle":
+
+                                       case "center":
+
+                                               if (_this4.element.scrollHeight - _this4.element.scrollTop == _this4.element.clientHeight) {
+
+                                                       _this4.element.scrollTop = _this4.element.scrollTop + (rowEl.offsetTop - _this4.element.scrollTop) - (_this4.element.scrollHeight - rowEl.offsetTop) / 2;
+                                               } else {
+
+                                                       _this4.element.scrollTop = _this4.element.scrollTop - _this4.element.clientHeight / 2;
+                                               }
+
+                                               break;
+
+                                       case "bottom":
+
+                                               if (_this4.element.scrollHeight - _this4.element.scrollTop == _this4.element.clientHeight) {
+
+                                                       _this4.element.scrollTop = _this4.element.scrollTop - (_this4.element.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;
+                                               } else {
+
+                                                       _this4.element.scrollTop = _this4.element.scrollTop - _this4.element.clientHeight + rowEl.offsetHeight;
+                                               }
+
+                                               break;
+
+                               }
+
+                               resolve();
+                       } else {
+
+                               console.warn("Scroll Error - Row not visible");
+
+                               reject("Scroll Error - Row not visible");
+                       }
+               });
+       };
+
+       ////////////////// Data Handling //////////////////
+
+
+       RowManager.prototype.setData = function (data, renderInPosition) {
+               var _this5 = this;
+
+               var self = this;
+
+               return new Promise(function (resolve, reject) {
+
+                       if (renderInPosition && _this5.getDisplayRows().length) {
+
+                               if (self.table.options.pagination) {
+
+                                       self._setDataActual(data, true);
+                               } else {
+
+                                       _this5.reRenderInPosition(function () {
+
+                                               self._setDataActual(data);
+                                       });
+                               }
+                       } else {
+
+                               if (_this5.table.options.autoColumns) {
+
+                                       _this5.table.columnManager.generateColumnsFromRowData(data);
+                               }
+
+                               _this5.resetScroll();
+
+                               _this5._setDataActual(data);
+                       }
+
+                       resolve();
+               });
+       };
+
+       RowManager.prototype._setDataActual = function (data, renderInPosition) {
+
+               var self = this;
+
+               self.table.options.dataLoading.call(this.table, data);
+
+               this._wipeElements();
+
+               if (this.table.options.history && this.table.modExists("history")) {
+
+                       this.table.modules.history.clear();
+               }
+
+               if (Array.isArray(data)) {
+
+                       if (this.table.modExists("selectRow")) {
+
+                               this.table.modules.selectRow.clearSelectionData();
+                       }
+
+                       if (this.table.options.reactiveData && this.table.modExists("reactiveData", true)) {
+
+                               this.table.modules.reactiveData.watchData(data);
+                       }
+
+                       data.forEach(function (def, i) {
+
+                               if (def && (typeof def === 'undefined' ? 'undefined' : _typeof(def)) === "object") {
+
+                                       var row = new Row(def, self);
+
+                                       self.rows.push(row);
+                               } else {
+
+                                       console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:", def);
+                               }
+                       });
+
+                       self.table.options.dataLoaded.call(this.table, data);
+
+                       self.refreshActiveData(false, false, renderInPosition);
+               } else {
+
+                       console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ", typeof data === 'undefined' ? 'undefined' : _typeof(data), "\nData:     ", data);
+               }
+       };
+
+       RowManager.prototype._wipeElements = function () {
+
+               this.rows.forEach(function (row) {
+
+                       row.wipe();
+               });
+
+               if (this.table.options.groupBy && this.table.modExists("groupRows")) {
+
+                       this.table.modules.groupRows.wipe();
+               }
+
+               this.rows = [];
+       };
+
+       RowManager.prototype.deleteRow = function (row, blockRedraw) {
+
+               var allIndex = this.rows.indexOf(row),
+                   activeIndex = this.activeRows.indexOf(row);
+
+               if (activeIndex > -1) {
+
+                       this.activeRows.splice(activeIndex, 1);
+               }
+
+               if (allIndex > -1) {
+
+                       this.rows.splice(allIndex, 1);
+               }
+
+               this.setActiveRows(this.activeRows);
+
+               this.displayRowIterator(function (rows) {
+
+                       var displayIndex = rows.indexOf(row);
+
+                       if (displayIndex > -1) {
+
+                               rows.splice(displayIndex, 1);
+                       }
+               });
+
+               if (!blockRedraw) {
+
+                       this.reRenderInPosition();
+               }
+
+               this.table.options.rowDeleted.call(this.table, row.getComponent());
+
+               this.table.options.dataEdited.call(this.table, this.getData());
+
+               if (this.table.options.groupBy && this.table.modExists("groupRows")) {
+
+                       this.table.modules.groupRows.updateGroupRows(true);
+               } else if (this.table.options.pagination && this.table.modExists("page")) {
+
+                       this.refreshActiveData(false, false, true);
+               } else {
+
+                       if (this.table.options.pagination && this.table.modExists("page")) {
+
+                               this.refreshActiveData("page");
+                       }
+               }
+       };
+
+       RowManager.prototype.addRow = function (data, pos, index, blockRedraw) {
+
+               var row = this.addRowActual(data, pos, index, blockRedraw);
+
+               if (this.table.options.history && this.table.modExists("history")) {
+
+                       this.table.modules.history.action("rowAdd", row, { data: data, pos: pos, index: index });
+               }
+
+               return row;
+       };
+
+       //add multiple rows
+
+       RowManager.prototype.addRows = function (data, pos, index) {
+               var _this6 = this;
+
+               var self = this,
+                   length = 0,
+                   rows = [];
+
+               return new Promise(function (resolve, reject) {
+
+                       pos = _this6.findAddRowPos(pos);
+
+                       if (!Array.isArray(data)) {
+
+                               data = [data];
+                       }
+
+                       length = data.length - 1;
+
+                       if (typeof index == "undefined" && pos || typeof index !== "undefined" && !pos) {
+
+                               data.reverse();
+                       }
+
+                       data.forEach(function (item, i) {
+
+                               var row = self.addRow(item, pos, index, true);
+
+                               rows.push(row);
+                       });
+
+                       if (_this6.table.options.groupBy && _this6.table.modExists("groupRows")) {
+
+                               _this6.table.modules.groupRows.updateGroupRows(true);
+                       } else if (_this6.table.options.pagination && _this6.table.modExists("page")) {
+
+                               _this6.refreshActiveData(false, false, true);
+                       } else {
+
+                               _this6.reRenderInPosition();
+                       }
+
+                       //recalc column calculations if present
+
+                       if (_this6.table.modExists("columnCalcs")) {
+
+                               _this6.table.modules.columnCalcs.recalc(_this6.table.rowManager.activeRows);
+                       }
+
+                       resolve(rows);
+               });
+       };
+
+       RowManager.prototype.findAddRowPos = function (pos) {
+
+               if (typeof pos === "undefined") {
+
+                       pos = this.table.options.addRowPos;
+               }
+
+               if (pos === "pos") {
+
+                       pos = true;
+               }
+
+               if (pos === "bottom") {
+
+                       pos = false;
+               }
+
+               return pos;
+       };
+
+       RowManager.prototype.addRowActual = function (data, pos, index, blockRedraw) {
+
+               var row = data instanceof Row ? data : new Row(data || {}, this),
+                   top = this.findAddRowPos(pos),
+                   dispRows;
+
+               if (!index && this.table.options.pagination && this.table.options.paginationAddRow == "page") {
+
+                       dispRows = this.getDisplayRows();
+
+                       if (top) {
+
+                               if (dispRows.length) {
+
+                                       index = dispRows[0];
+                               } else {
+
+                                       if (this.activeRows.length) {
+
+                                               index = this.activeRows[this.activeRows.length - 1];
+
+                                               top = false;
+                                       }
+                               }
+                       } else {
+
+                               if (dispRows.length) {
+
+                                       index = dispRows[dispRows.length - 1];
+
+                                       top = dispRows.length < this.table.modules.page.getPageSize() ? false : true;
+                               }
+                       }
+               }
+
+               if (index) {
+
+                       index = this.findRow(index);
+               }
+
+               if (this.table.options.groupBy && this.table.modExists("groupRows")) {
+
+                       this.table.modules.groupRows.assignRowToGroup(row);
+
+                       var groupRows = row.getGroup().rows;
+
+                       if (groupRows.length > 1) {
+
+                               if (!index || index && groupRows.indexOf(index) == -1) {
+
+                                       if (top) {
+
+                                               if (groupRows[0] !== row) {
+
+                                                       index = groupRows[0];
+
+                                                       this._moveRowInArray(row.getGroup().rows, row, index, !top);
+                                               }
+                                       } else {
+
+                                               if (groupRows[groupRows.length - 1] !== row) {
+
+                                                       index = groupRows[groupRows.length - 1];
+
+                                                       this._moveRowInArray(row.getGroup().rows, row, index, !top);
+                                               }
+                                       }
+                               } else {
+
+                                       this._moveRowInArray(row.getGroup().rows, row, index, !top);
+                               }
+                       }
+               }
+
+               if (index) {
+
+                       var allIndex = this.rows.indexOf(index),
+                           activeIndex = this.activeRows.indexOf(index);
+
+                       this.displayRowIterator(function (rows) {
+
+                               var displayIndex = rows.indexOf(index);
+
+                               if (displayIndex > -1) {
+
+                                       rows.splice(top ? displayIndex : displayIndex + 1, 0, row);
+                               }
+                       });
+
+                       if (activeIndex > -1) {
+
+                               this.activeRows.splice(top ? activeIndex : activeIndex + 1, 0, row);
+                       }
+
+                       if (allIndex > -1) {
+
+                               this.rows.splice(top ? allIndex : allIndex + 1, 0, row);
+                       }
+               } else {
+
+                       if (top) {
+
+                               this.displayRowIterator(function (rows) {
+
+                                       rows.unshift(row);
+                               });
+
+                               this.activeRows.unshift(row);
+
+                               this.rows.unshift(row);
+                       } else {
+
+                               this.displayRowIterator(function (rows) {
+
+                                       rows.push(row);
+                               });
+
+                               this.activeRows.push(row);
+
+                               this.rows.push(row);
+                       }
+               }
+
+               this.setActiveRows(this.activeRows);
+
+               this.table.options.rowAdded.call(this.table, row.getComponent());
+
+               this.table.options.dataEdited.call(this.table, this.getData());
+
+               if (!blockRedraw) {
+
+                       this.reRenderInPosition();
+               }
+
+               return row;
+       };
+
+       RowManager.prototype.moveRow = function (from, to, after) {
+
+               if (this.table.options.history && this.table.modExists("history")) {
+
+                       this.table.modules.history.action("rowMove", from, { pos: this.getRowPosition(from), to: to, after: after });
+               }
+
+               this.moveRowActual(from, to, after);
+
+               this.table.options.rowMoved.call(this.table, from.getComponent());
+       };
+
+       RowManager.prototype.moveRowActual = function (from, to, after) {
+
+               var self = this;
+
+               this._moveRowInArray(this.rows, from, to, after);
+
+               this._moveRowInArray(this.activeRows, from, to, after);
+
+               this.displayRowIterator(function (rows) {
+
+                       self._moveRowInArray(rows, from, to, after);
+               });
+
+               if (this.table.options.groupBy && this.table.modExists("groupRows")) {
+
+                       var toGroup = to.getGroup();
+
+                       var fromGroup = from.getGroup();
+
+                       if (toGroup === fromGroup) {
+
+                               this._moveRowInArray(toGroup.rows, from, to, after);
+                       } else {
+
+                               if (fromGroup) {
+
+                                       fromGroup.removeRow(from);
+                               }
+
+                               toGroup.insertRow(from, to, after);
+                       }
+               }
+       };
+
+       RowManager.prototype._moveRowInArray = function (rows, from, to, after) {
+
+               var fromIndex, toIndex, start, end;
+
+               if (from !== to) {
+
+                       fromIndex = rows.indexOf(from);
+
+                       if (fromIndex > -1) {
+
+                               rows.splice(fromIndex, 1);
+
+                               toIndex = rows.indexOf(to);
+
+                               if (toIndex > -1) {
+
+                                       if (after) {
+
+                                               rows.splice(toIndex + 1, 0, from);
+                                       } else {
+
+                                               rows.splice(toIndex, 0, from);
+                                       }
+                               } else {
+
+                                       rows.splice(fromIndex, 0, from);
+                               }
+                       }
+
+                       //restyle rows
+
+                       if (rows === this.getDisplayRows()) {
+
+                               start = fromIndex < toIndex ? fromIndex : toIndex;
+
+                               end = toIndex > fromIndex ? toIndex : fromIndex + 1;
+
+                               for (var i = start; i <= end; i++) {
+
+                                       if (rows[i]) {
+
+                                               this.styleRow(rows[i], i);
+                                       }
+                               }
+                       }
+               }
+       };
+
+       RowManager.prototype.clearData = function () {
+
+               this.setData([]);
+       };
+
+       RowManager.prototype.getRowIndex = function (row) {
+
+               return this.findRowIndex(row, this.rows);
+       };
+
+       RowManager.prototype.getDisplayRowIndex = function (row) {
+
+               var index = this.getDisplayRows().indexOf(row);
+
+               return index > -1 ? index : false;
+       };
+
+       RowManager.prototype.nextDisplayRow = function (row, rowOnly) {
+
+               var index = this.getDisplayRowIndex(row),
+                   nextRow = false;
+
+               if (index !== false && index < this.displayRowsCount - 1) {
+
+                       nextRow = this.getDisplayRows()[index + 1];
+               }
+
+               if (nextRow && (!(nextRow instanceof Row) || nextRow.type != "row")) {
+
+                       return this.nextDisplayRow(nextRow, rowOnly);
+               }
+
+               return nextRow;
+       };
+
+       RowManager.prototype.prevDisplayRow = function (row, rowOnly) {
+
+               var index = this.getDisplayRowIndex(row),
+                   prevRow = false;
+
+               if (index) {
+
+                       prevRow = this.getDisplayRows()[index - 1];
+               }
+
+               if (prevRow && (!(prevRow instanceof Row) || prevRow.type != "row")) {
+
+                       return this.prevDisplayRow(prevRow, rowOnly);
+               }
+
+               return prevRow;
+       };
+
+       RowManager.prototype.findRowIndex = function (row, list) {
+
+               var rowIndex;
+
+               row = this.findRow(row);
+
+               if (row) {
+
+                       rowIndex = list.indexOf(row);
+
+                       if (rowIndex > -1) {
+
+                               return rowIndex;
+                       }
+               }
+
+               return false;
+       };
+
+       RowManager.prototype.getData = function (active, transform) {
+
+               var self = this,
+                   output = [];
+
+               var rows = active ? self.activeRows : self.rows;
+
+               rows.forEach(function (row) {
+
+                       output.push(row.getData(transform || "data"));
+               });
+
+               return output;
+       };
+
+       RowManager.prototype.getComponents = function (active) {
+
+               var self = this,
+                   output = [];
+
+               var rows = active ? self.activeRows : self.rows;
+
+               rows.forEach(function (row) {
+
+                       output.push(row.getComponent());
+               });
+
+               return output;
+       };
+
+       RowManager.prototype.getDataCount = function (active) {
+
+               return active ? this.activeRows.length : this.rows.length;
+       };
+
+       RowManager.prototype._genRemoteRequest = function () {
+
+               var self = this,
+                   table = self.table,
+                   options = table.options,
+                   params = {};
+
+               if (table.modExists("page")) {
+
+                       //set sort data if defined
+
+                       if (options.ajaxSorting) {
+
+                               var sorters = self.table.modules.sort.getSort();
+
+                               sorters.forEach(function (item) {
+
+                                       delete item.column;
+                               });
+
+                               params[self.table.modules.page.paginationDataSentNames.sorters] = sorters;
+                       }
+
+                       //set filter data if defined
+
+                       if (options.ajaxFiltering) {
+
+                               var filters = self.table.modules.filter.getFilters(true, true);
+
+                               params[self.table.modules.page.paginationDataSentNames.filters] = filters;
+                       }
+
+                       self.table.modules.ajax.setParams(params, true);
+               }
+
+               table.modules.ajax.sendRequest().then(function (data) {
+
+                       self.setData(data);
+               }).catch(function (e) {});
+       };
+
+       //choose the path to refresh data after a filter update
+
+       RowManager.prototype.filterRefresh = function () {
+
+               var table = this.table,
+                   options = table.options,
+                   left = this.scrollLeft;
+
+               if (options.ajaxFiltering) {
+
+                       if (options.pagination == "remote" && table.modExists("page")) {
+
+                               table.modules.page.reset(true);
+
+                               table.modules.page.setPage(1).then(function () {}).catch(function () {});
+                       } else if (options.ajaxProgressiveLoad) {
+
+                               table.modules.ajax.loadData().then(function () {}).catch(function () {});
+                       } else {
+
+                               //assume data is url, make ajax call to url to get data
+
+                               this._genRemoteRequest();
+                       }
+               } else {
+
+                       this.refreshActiveData("filter");
+               }
+
+               this.scrollHorizontal(left);
+       };
+
+       //choose the path to refresh data after a sorter update
+
+       RowManager.prototype.sorterRefresh = function (loadOrignalData) {
+
+               var table = this.table,
+                   options = this.table.options,
+                   left = this.scrollLeft;
+
+               if (options.ajaxSorting) {
+
+                       if ((options.pagination == "remote" || options.progressiveLoad) && table.modExists("page")) {
+
+                               table.modules.page.reset(true);
+
+                               table.modules.page.setPage(1).then(function () {}).catch(function () {});
+                       } else if (options.ajaxProgressiveLoad) {
+
+                               table.modules.ajax.loadData().then(function () {}).catch(function () {});
+                       } else {
+
+                               //assume data is url, make ajax call to url to get data
+
+                               this._genRemoteRequest();
+                       }
+               } else {
+
+                       this.refreshActiveData(loadOrignalData ? "filter" : "sort");
+               }
+
+               this.scrollHorizontal(left);
+       };
+
+       RowManager.prototype.scrollHorizontal = function (left) {
+
+               this.scrollLeft = left;
+
+               this.element.scrollLeft = left;
+
+               if (this.table.options.groupBy) {
+
+                       this.table.modules.groupRows.scrollHeaders(left);
+               }
+
+               if (this.table.modExists("columnCalcs")) {
+
+                       this.table.modules.columnCalcs.scrollHorizontal(left);
+               }
+       };
+
+       //set active data set
+
+       RowManager.prototype.refreshActiveData = function (stage, skipStage, renderInPosition) {
+
+               var self = this,
+                   table = this.table,
+                   displayIndex;
+
+               if (self.table.modExists("edit")) {
+
+                       self.table.modules.edit.cancelEdit();
+               }
+
+               if (!stage) {
+
+                       stage = "all";
+               }
+
+               if (table.options.selectable && !table.options.selectablePersistence && table.modExists("selectRow")) {
+
+                       table.modules.selectRow.deselectRows();
+               }
+
+               //cascade through data refresh stages
+
+               switch (stage) {
+
+                       case "all":
+
+                       case "filter":
+
+                               if (!skipStage) {
+
+                                       if (table.modExists("filter")) {
+
+                                               self.setActiveRows(table.modules.filter.filter(self.rows));
+                                       } else {
+
+                                               self.setActiveRows(self.rows.slice(0));
+                                       }
+                               } else {
+
+                                       skipStage = false;
+                               }
+
+                       case "sort":
+
+                               if (!skipStage) {
+
+                                       if (table.modExists("sort")) {
+
+                                               table.modules.sort.sort(this.activeRows);
+                                       }
+                               } else {
+
+                                       skipStage = false;
+                               }
+
+                       //generic stage to allow for pipeline trigger after the data manipulation stage
+
+                       case "display":
+
+                               this.resetDisplayRows();
+
+                       case "freeze":
+
+                               if (!skipStage) {
+
+                                       if (this.table.modExists("frozenRows")) {
+
+                                               if (table.modules.frozenRows.isFrozen()) {
+
+                                                       if (!table.modules.frozenRows.getDisplayIndex()) {
+
+                                                               table.modules.frozenRows.setDisplayIndex(this.getNextDisplayIndex());
+                                                       }
+
+                                                       displayIndex = table.modules.frozenRows.getDisplayIndex();
+
+                                                       displayIndex = self.setDisplayRows(table.modules.frozenRows.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
+
+                                                       if (displayIndex !== true) {
+
+                                                               table.modules.frozenRows.setDisplayIndex(displayIndex);
+                                                       }
+                                               }
+                                       }
+                               } else {
+
+                                       skipStage = false;
+                               }
+
+                       case "group":
+
+                               if (!skipStage) {
+
+                                       if (table.options.groupBy && table.modExists("groupRows")) {
+
+                                               if (!table.modules.groupRows.getDisplayIndex()) {
+
+                                                       table.modules.groupRows.setDisplayIndex(this.getNextDisplayIndex());
+                                               }
+
+                                               displayIndex = table.modules.groupRows.getDisplayIndex();
+
+                                               displayIndex = self.setDisplayRows(table.modules.groupRows.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
+
+                                               if (displayIndex !== true) {
+
+                                                       table.modules.groupRows.setDisplayIndex(displayIndex);
+                                               }
+                                       }
+                               } else {
+
+                                       skipStage = false;
+                               }
+
+                       case "tree":
+
+                               if (!skipStage) {
+
+                                       if (table.options.dataTree && table.modExists("dataTree")) {
+
+                                               if (!table.modules.dataTree.getDisplayIndex()) {
+
+                                                       table.modules.dataTree.setDisplayIndex(this.getNextDisplayIndex());
+                                               }
+
+                                               displayIndex = table.modules.dataTree.getDisplayIndex();
+
+                                               displayIndex = self.setDisplayRows(table.modules.dataTree.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
+
+                                               if (displayIndex !== true) {
+
+                                                       table.modules.dataTree.setDisplayIndex(displayIndex);
+                                               }
+                                       }
+                               } else {
+
+                                       skipStage = false;
+                               }
+
+                               if (table.options.pagination && table.modExists("page") && !renderInPosition) {
+
+                                       if (table.modules.page.getMode() == "local") {
+
+                                               table.modules.page.reset();
+                                       }
+                               }
+
+                       case "page":
+
+                               if (!skipStage) {
+
+                                       if (table.options.pagination && table.modExists("page")) {
+
+                                               if (!table.modules.page.getDisplayIndex()) {
+
+                                                       table.modules.page.setDisplayIndex(this.getNextDisplayIndex());
+                                               }
+
+                                               displayIndex = table.modules.page.getDisplayIndex();
+
+                                               if (table.modules.page.getMode() == "local") {
+
+                                                       table.modules.page.setMaxRows(this.getDisplayRows(displayIndex - 1).length);
+                                               }
+
+                                               displayIndex = self.setDisplayRows(table.modules.page.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
+
+                                               if (displayIndex !== true) {
+
+                                                       table.modules.page.setDisplayIndex(displayIndex);
+                                               }
+                                       }
+                               } else {
+
+                                       skipStage = false;
+                               }
+
+               }
+
+               if (Tabulator.prototype.helpers.elVisible(self.element)) {
+
+                       if (renderInPosition) {
+
+                               self.reRenderInPosition();
+                       } else {
+
+                               self.renderTable();
+
+                               if (table.options.layoutColumnsOnNewData) {
+
+                                       self.table.columnManager.redraw(true);
+                               }
+                       }
+               }
+
+               if (table.modExists("columnCalcs")) {
+
+                       table.modules.columnCalcs.recalc(this.activeRows);
+               }
+       };
+
+       RowManager.prototype.setActiveRows = function (activeRows) {
+
+               this.activeRows = activeRows;
+
+               this.activeRowsCount = this.activeRows.length;
+       };
+
+       //reset display rows array
+
+       RowManager.prototype.resetDisplayRows = function () {
+
+               this.displayRows = [];
+
+               this.displayRows.push(this.activeRows.slice(0));
+
+               this.displayRowsCount = this.displayRows[0].length;
+
+               if (this.table.modExists("frozenRows")) {
+
+                       this.table.modules.frozenRows.setDisplayIndex(0);
+               }
+
+               if (this.table.options.groupBy && this.table.modExists("groupRows")) {
+
+                       this.table.modules.groupRows.setDisplayIndex(0);
+               }
+
+               if (this.table.options.pagination && this.table.modExists("page")) {
+
+                       this.table.modules.page.setDisplayIndex(0);
+               }
+       };
+
+       RowManager.prototype.getNextDisplayIndex = function () {
+
+               return this.displayRows.length;
+       };
+
+       //set display row pipeline data
+
+       RowManager.prototype.setDisplayRows = function (displayRows, index) {
+
+               var output = true;
+
+               if (index && typeof this.displayRows[index] != "undefined") {
+
+                       this.displayRows[index] = displayRows;
+
+                       output = true;
+               } else {
+
+                       this.displayRows.push(displayRows);
+
+                       output = index = this.displayRows.length - 1;
+               }
+
+               if (index == this.displayRows.length - 1) {
+
+                       this.displayRowsCount = this.displayRows[this.displayRows.length - 1].length;
+               }
+
+               return output;
+       };
+
+       RowManager.prototype.getDisplayRows = function (index) {
+
+               if (typeof index == "undefined") {
+
+                       return this.displayRows.length ? this.displayRows[this.displayRows.length - 1] : [];
+               } else {
+
+                       return this.displayRows[index] || [];
+               }
+       };
+
+       RowManager.prototype.getVisibleRows = function (viewable) {
+
+               var topEdge = this.element.scrollTop,
+                   bottomEdge = this.element.clientHeight + topEdge,
+                   topFound = false,
+                   topRow = 0,
+                   bottomRow = 0,
+                   rows = this.getDisplayRows();
+
+               if (viewable) {
+
+                       this.getDisplayRows();
+
+                       for (var i = this.vDomTop; i <= this.vDomBottom; i++) {
+
+                               if (rows[i]) {
+
+                                       if (!topFound) {
+
+                                               if (topEdge - rows[i].getElement().offsetTop >= 0) {
+
+                                                       topRow = i;
+                                               } else {
+
+                                                       topFound = true;
+                                               }
+                                       } else {
+
+                                               if (bottomEdge - rows[i].getElement().offsetTop >= 0) {
+
+                                                       bottomRow = i;
+                                               } else {
+
+                                                       break;
+                                               }
+                                       }
+                               }
+                       }
+               } else {
+
+                       topRow = this.vDomTop;
+
+                       bottomRow = this.vDomBottom;
+               }
+
+               return rows.slice(topRow, bottomRow + 1);
+       };
+
+       //repeat action accross display rows
+
+       RowManager.prototype.displayRowIterator = function (callback) {
+
+               this.displayRows.forEach(callback);
+
+               this.displayRowsCount = this.displayRows[this.displayRows.length - 1].length;
+       };
+
+       //return only actual rows (not group headers etc)
+
+       RowManager.prototype.getRows = function () {
+
+               return this.rows;
+       };
+
+       ///////////////// Table Rendering /////////////////
+
+
+       //trigger rerender of table in current position
+
+       RowManager.prototype.reRenderInPosition = function (callback) {
+
+               if (this.getRenderMode() == "virtual") {
+
+                       var scrollTop = this.element.scrollTop;
+
+                       var topRow = false;
+
+                       var topOffset = false;
+
+                       var left = this.scrollLeft;
+
+                       var rows = this.getDisplayRows();
+
+                       for (var i = this.vDomTop; i <= this.vDomBottom; i++) {
+
+                               if (rows[i]) {
+
+                                       var diff = scrollTop - rows[i].getElement().offsetTop;
+
+                                       if (topOffset === false || Math.abs(diff) < topOffset) {
+
+                                               topOffset = diff;
+
+                                               topRow = i;
+                                       } else {
+
+                                               break;
+                                       }
+                               }
+                       }
+
+                       if (callback) {
+
+                               callback();
+                       }
+
+                       this._virtualRenderFill(topRow === false ? this.displayRowsCount - 1 : topRow, true, topOffset || 0);
+
+                       this.scrollHorizontal(left);
+               } else {
+
+                       this.renderTable();
+
+                       if (callback) {
+
+                               callback();
+                       }
+               }
+       };
+
+       RowManager.prototype.setRenderMode = function () {
+
+               if ((this.table.element.clientHeight || this.table.options.height) && this.table.options.virtualDom) {
+
+                       this.renderMode = "virtual";
+               } else {
+
+                       this.renderMode = "classic";
+               }
+       };
+
+       RowManager.prototype.getRenderMode = function () {
+
+               return this.renderMode;
+       };
+
+       RowManager.prototype.renderTable = function () {
+
+               var self = this;
+
+               self.table.options.renderStarted.call(this.table);
+
+               self.element.scrollTop = 0;
+
+               switch (self.renderMode) {
+
+                       case "classic":
+
+                               self._simpleRender();
+
+                               break;
+
+                       case "virtual":
+
+                               self._virtualRenderFill();
+
+                               break;
+
+               }
+
+               if (self.firstRender) {
+
+                       if (self.displayRowsCount) {
+
+                               self.firstRender = false;
+
+                               self.table.modules.layout.layout();
+                       } else {
+
+                               self.renderEmptyScroll();
+                       }
+               }
+
+               if (self.table.modExists("frozenColumns")) {
+
+                       self.table.modules.frozenColumns.layout();
+               }
+
+               if (!self.displayRowsCount) {
+
+                       if (self.table.options.placeholder) {
+
+                               if (this.renderMode) {
+
+                                       self.table.options.placeholder.setAttribute("tabulator-render-mode", this.renderMode);
+                               }
+
+                               self.getElement().appendChild(self.table.options.placeholder);
+                       }
+               }
+
+               self.table.options.renderComplete.call(this.table);
+       };
+
+       //simple render on heightless table
+
+       RowManager.prototype._simpleRender = function () {
+
+               this._clearVirtualDom();
+
+               if (this.displayRowsCount) {
+
+                       this.checkClassicModeGroupHeaderWidth();
+               } else {
+
+                       this.renderEmptyScroll();
+               }
+       };
+
+       RowManager.prototype.checkClassicModeGroupHeaderWidth = function () {
+
+               var self = this,
+                   element = this.tableElement,
+                   onlyGroupHeaders = true;
+
+               self.getDisplayRows().forEach(function (row, index) {
+
+                       self.styleRow(row, index);
+
+                       element.appendChild(row.getElement());
+
+                       row.initialize(true);
+
+                       if (row.type !== "group") {
+
+                               onlyGroupHeaders = false;
+                       }
+               });
+
+               if (onlyGroupHeaders) {
+
+                       element.style.minWidth = self.table.columnManager.getWidth() + "px";
+               } else {
+
+                       element.style.minWidth = "";
+               }
+       };
+
+       //show scrollbars on empty table div
+
+       RowManager.prototype.renderEmptyScroll = function () {
+
+               this.tableElement.style.minWidth = this.table.columnManager.getWidth() + "px";
+
+               this.tableElement.style.minHeight = "1px";
+
+               this.tableElement.style.visibility = "hidden";
+       };
+
+       RowManager.prototype._clearVirtualDom = function () {
+
+               var element = this.tableElement;
+
+               if (this.table.options.placeholder && this.table.options.placeholder.parentNode) {
+
+                       this.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);
+               }
+
+               // element.children.detach();
+
+               while (element.firstChild) {
+                       element.removeChild(element.firstChild);
+               }element.style.paddingTop = "";
+
+               element.style.paddingBottom = "";
+
+               element.style.minWidth = "";
+
+               element.style.minHeight = "";
+
+               element.style.visibility = "";
+
+               this.scrollTop = 0;
+
+               this.scrollLeft = 0;
+
+               this.vDomTop = 0;
+
+               this.vDomBottom = 0;
+
+               this.vDomTopPad = 0;
+
+               this.vDomBottomPad = 0;
+       };
+
+       RowManager.prototype.styleRow = function (row, index) {
+
+               var rowEl = row.getElement();
+
+               if (index % 2) {
+
+                       rowEl.classList.add("tabulator-row-even");
+
+                       rowEl.classList.remove("tabulator-row-odd");
+               } else {
+
+                       rowEl.classList.add("tabulator-row-odd");
+
+                       rowEl.classList.remove("tabulator-row-even");
+               }
+       };
+
+       //full virtual render
+
+       RowManager.prototype._virtualRenderFill = function (position, forceMove, offset) {
+
+               var self = this,
+                   element = self.tableElement,
+                   holder = self.element,
+                   topPad = 0,
+                   rowsHeight = 0,
+                   topPadHeight = 0,
+                   i = 0,
+                   onlyGroupHeaders = true,
+                   rows = self.getDisplayRows();
+
+               position = position || 0;
+
+               offset = offset || 0;
+
+               if (!position) {
+
+                       self._clearVirtualDom();
+               } else {
+
+                       while (element.firstChild) {
+                               element.removeChild(element.firstChild);
+                       } //check if position is too close to bottom of table
+
+                       var heightOccupied = (self.displayRowsCount - position + 1) * self.vDomRowHeight;
+
+                       if (heightOccupied < self.height) {
+
+                               position -= Math.ceil((self.height - heightOccupied) / self.vDomRowHeight);
+
+                               if (position < 0) {
+
+                                       position = 0;
+                               }
+                       }
+
+                       //calculate initial pad
+
+                       topPad = Math.min(Math.max(Math.floor(self.vDomWindowBuffer / self.vDomRowHeight), self.vDomWindowMinMarginRows), position);
+
+                       position -= topPad;
+               }
+
+               if (self.displayRowsCount && Tabulator.prototype.helpers.elVisible(self.element)) {
+
+                       self.vDomTop = position;
+
+                       self.vDomBottom = position - 1;
+
+                       while ((rowsHeight <= self.height + self.vDomWindowBuffer || i < self.vDomWindowMinTotalRows) && self.vDomBottom < self.displayRowsCount - 1) {
+
+                               var index = self.vDomBottom + 1,
+                                   row = rows[index],
+                                   rowHeight = 0;
+
+                               self.styleRow(row, index);
+
+                               element.appendChild(row.getElement());
+
+                               if (!row.initialized) {
+
+                                       row.initialize(true);
+                               } else {
+
+                                       if (!row.heightInitialized) {
+
+                                               row.normalizeHeight(true);
+                                       }
+                               }
+
+                               rowHeight = row.getHeight();
+
+                               if (i < topPad) {
+
+                                       topPadHeight += rowHeight;
+                               } else {
+
+                                       rowsHeight += rowHeight;
+                               }
+
+                               if (rowHeight > this.vDomWindowBuffer) {
+
+                                       this.vDomWindowBuffer = rowHeight * 2;
+                               }
+
+                               if (row.type !== "group") {
+
+                                       onlyGroupHeaders = false;
+                               }
+
+                               self.vDomBottom++;
+
+                               i++;
+                       }
+
+                       if (!position) {
+
+                               this.vDomTopPad = 0;
+
+                               //adjust rowheight to match average of rendered elements
+
+                               self.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / i);
+
+                               self.vDomBottomPad = self.vDomRowHeight * (self.displayRowsCount - self.vDomBottom - 1);
+
+                               self.vDomScrollHeight = topPadHeight + rowsHeight + self.vDomBottomPad - self.height;
+                       } else {
+
+                               self.vDomTopPad = !forceMove ? self.scrollTop - topPadHeight : self.vDomRowHeight * this.vDomTop + offset;
+
+                               self.vDomBottomPad = self.vDomBottom == self.displayRowsCount - 1 ? 0 : Math.max(self.vDomScrollHeight - self.vDomTopPad - rowsHeight - topPadHeight, 0);
+                       }
+
+                       element.style.paddingTop = self.vDomTopPad + "px";
+
+                       element.style.paddingBottom = self.vDomBottomPad + "px";
+
+                       if (forceMove) {
+
+                               this.scrollTop = self.vDomTopPad + topPadHeight + offset - (this.element.scrollWidth > this.element.clientWidth ? this.element.offsetHeight - this.element.clientHeight : 0);
+                       }
+
+                       this.scrollTop = Math.min(this.scrollTop, this.element.scrollHeight - this.height);
+
+                       //adjust for horizontal scrollbar if present (and not at top of table)
+
+                       if (this.element.scrollWidth > this.element.offsetWidth && forceMove) {
+
+                               this.scrollTop += this.element.offsetHeight - this.element.clientHeight;
+                       }
+
+                       this.vDomScrollPosTop = this.scrollTop;
+
+                       this.vDomScrollPosBottom = this.scrollTop;
+
+                       holder.scrollTop = this.scrollTop;
+
+                       element.style.minWidth = onlyGroupHeaders ? self.table.columnManager.getWidth() + "px" : "";
+
+                       if (self.table.options.groupBy) {
+
+                               if (self.table.modules.layout.getMode() != "fitDataFill" && self.displayRowsCount == self.table.modules.groupRows.countGroups()) {
+
+                                       self.tableElement.style.minWidth = self.table.columnManager.getWidth();
+                               }
+                       }
+               } else {
+
+                       this.renderEmptyScroll();
+               }
+       };
+
+       //handle vertical scrolling
+
+       RowManager.prototype.scrollVertical = function (dir) {
+
+               var topDiff = this.scrollTop - this.vDomScrollPosTop;
+
+               var bottomDiff = this.scrollTop - this.vDomScrollPosBottom;
+
+               var margin = this.vDomWindowBuffer * 2;
+
+               if (-topDiff > margin || bottomDiff > margin) {
+
+                       //if big scroll redraw table;
+
+                       var left = this.scrollLeft;
+
+                       this._virtualRenderFill(Math.floor(this.element.scrollTop / this.element.scrollHeight * this.displayRowsCount));
+
+                       this.scrollHorizontal(left);
+               } else {
+
+                       if (dir) {
+
+                               //scrolling up
+
+                               if (topDiff < 0) {
+
+                                       this._addTopRow(-topDiff);
+                               }
+
+                               if (bottomDiff < 0) {
+
+                                       //hide bottom row if needed
+
+                                       if (this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer) {
+
+                                               this._removeBottomRow(-bottomDiff);
+                                       }
+                               }
+                       } else {
+
+                               //scrolling down
+
+                               if (topDiff >= 0) {
+
+                                       //hide top row if needed
+
+                                       if (this.scrollTop > this.vDomWindowBuffer) {
+
+                                               this._removeTopRow(topDiff);
+                                       }
+                               }
+
+                               if (bottomDiff >= 0) {
+
+                                       this._addBottomRow(bottomDiff);
+                               }
+                       }
+               }
+       };
+
+       RowManager.prototype._addTopRow = function (topDiff) {
+               var i = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
+
+
+               var table = this.tableElement,
+                   rows = this.getDisplayRows();
+
+               if (this.vDomTop) {
+
+                       var index = this.vDomTop - 1,
+                           topRow = rows[index],
+                           topRowHeight = topRow.getHeight() || this.vDomRowHeight;
+
+                       //hide top row if needed
+
+                       if (topDiff >= topRowHeight) {
+
+                               this.styleRow(topRow, index);
+
+                               table.insertBefore(topRow.getElement(), table.firstChild);
+
+                               if (!topRow.initialized || !topRow.heightInitialized) {
+
+                                       this.vDomTopNewRows.push(topRow);
+
+                                       if (!topRow.heightInitialized) {
+
+                                               topRow.clearCellHeight();
+                                       }
+                               }
+
+                               topRow.initialize();
+
+                               this.vDomTopPad -= topRowHeight;
+
+                               if (this.vDomTopPad < 0) {
+
+                                       this.vDomTopPad = index * this.vDomRowHeight;
+                               }
+
+                               if (!index) {
+
+                                       this.vDomTopPad = 0;
+                               }
+
+                               table.style.paddingTop = this.vDomTopPad + "px";
+
+                               this.vDomScrollPosTop -= topRowHeight;
+
+                               this.vDomTop--;
+                       }
+
+                       topDiff = -(this.scrollTop - this.vDomScrollPosTop);
+
+                       if (topRow.getHeight() > this.vDomWindowBuffer) {
+
+                               this.vDomWindowBuffer = topRow.getHeight() * 2;
+                       }
+
+                       if (i < this.vDomMaxRenderChain && this.vDomTop && topDiff >= (rows[this.vDomTop - 1].getHeight() || this.vDomRowHeight)) {
+
+                               this._addTopRow(topDiff, i + 1);
+                       } else {
+
+                               this._quickNormalizeRowHeight(this.vDomTopNewRows);
+                       }
+               }
+       };
+
+       RowManager.prototype._removeTopRow = function (topDiff) {
+
+               var table = this.tableElement,
+                   topRow = this.getDisplayRows()[this.vDomTop],
+                   topRowHeight = topRow.getHeight() || this.vDomRowHeight;
+
+               if (topDiff >= topRowHeight) {
+
+                       var rowEl = topRow.getElement();
+
+                       rowEl.parentNode.removeChild(rowEl);
+
+                       this.vDomTopPad += topRowHeight;
+
+                       table.style.paddingTop = this.vDomTopPad + "px";
+
+                       this.vDomScrollPosTop += this.vDomTop ? topRowHeight : topRowHeight + this.vDomWindowBuffer;
+
+                       this.vDomTop++;
+
+                       topDiff = this.scrollTop - this.vDomScrollPosTop;
+
+                       this._removeTopRow(topDiff);
+               }
+       };
+
+       RowManager.prototype._addBottomRow = function (bottomDiff) {
+               var i = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
+
+
+               var table = this.tableElement,
+                   rows = this.getDisplayRows();
+
+               if (this.vDomBottom < this.displayRowsCount - 1) {
+
+                       var index = this.vDomBottom + 1,
+                           bottomRow = rows[index],
+                           bottomRowHeight = bottomRow.getHeight() || this.vDomRowHeight;
+
+                       //hide bottom row if needed
+
+                       if (bottomDiff >= bottomRowHeight) {
+
+                               this.styleRow(bottomRow, index);
+
+                               table.appendChild(bottomRow.getElement());
+
+                               if (!bottomRow.initialized || !bottomRow.heightInitialized) {
+
+                                       this.vDomBottomNewRows.push(bottomRow);
+
+                                       if (!bottomRow.heightInitialized) {
+
+                                               bottomRow.clearCellHeight();
+                                       }
+                               }
+
+                               bottomRow.initialize();
+
+                               this.vDomBottomPad -= bottomRowHeight;
+
+                               if (this.vDomBottomPad < 0 || index == this.displayRowsCount - 1) {
+
+                                       this.vDomBottomPad = 0;
+                               }
+
+                               table.style.paddingBottom = this.vDomBottomPad + "px";
+
+                               this.vDomScrollPosBottom += bottomRowHeight;
+
+                               this.vDomBottom++;
+                       }
+
+                       bottomDiff = this.scrollTop - this.vDomScrollPosBottom;
+
+                       if (bottomRow.getHeight() > this.vDomWindowBuffer) {
+
+                               this.vDomWindowBuffer = bottomRow.getHeight() * 2;
+                       }
+
+                       if (i < this.vDomMaxRenderChain && this.vDomBottom < this.displayRowsCount - 1 && bottomDiff >= (rows[this.vDomBottom + 1].getHeight() || this.vDomRowHeight)) {
+
+                               this._addBottomRow(bottomDiff, i + 1);
+                       } else {
+
+                               this._quickNormalizeRowHeight(this.vDomBottomNewRows);
+                       }
+               }
+       };
+
+       RowManager.prototype._removeBottomRow = function (bottomDiff) {
+
+               var table = this.tableElement,
+                   bottomRow = this.getDisplayRows()[this.vDomBottom],
+                   bottomRowHeight = bottomRow.getHeight() || this.vDomRowHeight;
+
+               if (bottomDiff >= bottomRowHeight) {
+
+                       var rowEl = bottomRow.getElement();
+
+                       if (rowEl.parentNode) {
+
+                               rowEl.parentNode.removeChild(rowEl);
+                       }
+
+                       this.vDomBottomPad += bottomRowHeight;
+
+                       if (this.vDomBottomPad < 0) {
+
+                               this.vDomBottomPad = 0;
+                       }
+
+                       table.style.paddingBottom = this.vDomBottomPad + "px";
+
+                       this.vDomScrollPosBottom -= bottomRowHeight;
+
+                       this.vDomBottom--;
+
+                       bottomDiff = -(this.scrollTop - this.vDomScrollPosBottom);
+
+                       this._removeBottomRow(bottomDiff);
+               }
+       };
+
+       RowManager.prototype._quickNormalizeRowHeight = function (rows) {
+
+               rows.forEach(function (row) {
+
+                       row.calcHeight();
+               });
+
+               rows.forEach(function (row) {
+
+                       row.setCellHeight();
+               });
+
+               rows.length = 0;
+       };
+
+       //normalize height of active rows
+
+       RowManager.prototype.normalizeHeight = function () {
+
+               this.activeRows.forEach(function (row) {
+
+                       row.normalizeHeight();
+               });
+       };
+
+       //adjust the height of the table holder to fit in the Tabulator element
+
+       RowManager.prototype.adjustTableSize = function () {
+
+               if (this.renderMode === "virtual") {
+
+                       this.height = this.element.clientHeight;
+
+                       this.vDomWindowBuffer = this.table.options.virtualDomBuffer || this.height;
+
+                       var otherHeight = this.columnManager.getElement().offsetHeight + (this.table.footerManager && !this.table.footerManager.external ? this.table.footerManager.getElement().offsetHeight : 0);
+
+                       this.element.style.minHeight = "calc(100% - " + otherHeight + "px)";
+
+                       this.element.style.height = "calc(100% - " + otherHeight + "px)";
+
+                       this.element.style.maxHeight = "calc(100% - " + otherHeight + "px)";
+               }
+       };
+
+       //renitialize all rows
+
+       RowManager.prototype.reinitialize = function () {
+
+               this.rows.forEach(function (row) {
+
+                       row.reinitialize();
+               });
+       };
+
+       //redraw table
+
+       RowManager.prototype.redraw = function (force) {
+
+               var pos = 0,
+                   left = this.scrollLeft;
+
+               this.adjustTableSize();
+
+               this.table.tableWidth = this.table.element.clientWidth;
+
+               if (!force) {
+
+                       if (this.renderMode == "classic") {
+
+                               if (this.table.options.groupBy) {
+
+                                       this.refreshActiveData("group", false, false);
+                               } else {
+
+                                       this._simpleRender();
+                               }
+                       } else {
+
+                               this.reRenderInPosition();
+
+                               this.scrollHorizontal(left);
+                       }
+
+                       if (!this.displayRowsCount) {
+
+                               if (this.table.options.placeholder) {
+
+                                       this.getElement().appendChild(this.table.options.placeholder);
+                               }
+                       }
+               } else {
+
+                       this.renderTable();
+               }
+       };
+
+       RowManager.prototype.resetScroll = function () {
+
+               this.element.scrollLeft = 0;
+
+               this.element.scrollTop = 0;
+
+               if (this.table.browser === "ie") {
+
+                       var event = document.createEvent("Event");
+
+                       event.initEvent("scroll", false, true);
+
+                       this.element.dispatchEvent(event);
+               } else {
+
+                       this.element.dispatchEvent(new Event('scroll'));
+               }
+       };
+
+       //public row object
+
+       var RowComponent = function RowComponent(row) {
+
+               this._row = row;
+       };
+
+       RowComponent.prototype.getData = function (transform) {
+
+               return this._row.getData(transform);
+       };
+
+       RowComponent.prototype.getElement = function () {
+
+               return this._row.getElement();
+       };
+
+       RowComponent.prototype.getCells = function () {
+
+               var cells = [];
+
+               this._row.getCells().forEach(function (cell) {
+
+                       cells.push(cell.getComponent());
+               });
+
+               return cells;
+       };
+
+       RowComponent.prototype.getCell = function (column) {
+
+               var cell = this._row.getCell(column);
+
+               return cell ? cell.getComponent() : false;
+       };
+
+       RowComponent.prototype.getIndex = function () {
+
+               return this._row.getData("data")[this._row.table.options.index];
+       };
+
+       RowComponent.prototype.getPosition = function (active) {
+
+               return this._row.table.rowManager.getRowPosition(this._row, active);
+       };
+
+       RowComponent.prototype.delete = function () {
+
+               return this._row.delete();
+       };
+
+       RowComponent.prototype.scrollTo = function () {
+
+               return this._row.table.rowManager.scrollToRow(this._row);
+       };
+
+       RowComponent.prototype.pageTo = function () {
+
+               if (this._row.table.modExists("page", true)) {
+
+                       return this._row.table.modules.page.setPageToRow(this._row);
+               }
+       };
+
+       RowComponent.prototype.move = function (to, after) {
+
+               this._row.moveToRow(to, after);
+       };
+
+       RowComponent.prototype.update = function (data) {
+
+               return this._row.updateData(data);
+       };
+
+       RowComponent.prototype.normalizeHeight = function () {
+
+               this._row.normalizeHeight(true);
+       };
+
+       RowComponent.prototype.select = function () {
+
+               this._row.table.modules.selectRow.selectRows(this._row);
+       };
+
+       RowComponent.prototype.deselect = function () {
+
+               this._row.table.modules.selectRow.deselectRows(this._row);
+       };
+
+       RowComponent.prototype.toggleSelect = function () {
+
+               this._row.table.modules.selectRow.toggleRow(this._row);
+       };
+
+       RowComponent.prototype.isSelected = function () {
+
+               return this._row.table.modules.selectRow.isRowSelected(this._row);
+       };
+
+       RowComponent.prototype._getSelf = function () {
+
+               return this._row;
+       };
+
+       RowComponent.prototype.freeze = function () {
+
+               if (this._row.table.modExists("frozenRows", true)) {
+
+                       this._row.table.modules.frozenRows.freezeRow(this._row);
+               }
+       };
+
+       RowComponent.prototype.unfreeze = function () {
+
+               if (this._row.table.modExists("frozenRows", true)) {
+
+                       this._row.table.modules.frozenRows.unfreezeRow(this._row);
+               }
+       };
+
+       RowComponent.prototype.treeCollapse = function () {
+
+               if (this._row.table.modExists("dataTree", true)) {
+
+                       this._row.table.modules.dataTree.collapseRow(this._row);
+               }
+       };
+
+       RowComponent.prototype.treeExpand = function () {
+
+               if (this._row.table.modExists("dataTree", true)) {
+
+                       this._row.table.modules.dataTree.expandRow(this._row);
+               }
+       };
+
+       RowComponent.prototype.treeToggle = function () {
+
+               if (this._row.table.modExists("dataTree", true)) {
+
+                       this._row.table.modules.dataTree.toggleRow(this._row);
+               }
+       };
+
+       RowComponent.prototype.getTreeParent = function () {
+
+               if (this._row.table.modExists("dataTree", true)) {
+
+                       return this._row.table.modules.dataTree.getTreeParent(this._row);
+               }
+
+               return false;
+       };
+
+       RowComponent.prototype.getTreeChildren = function () {
+
+               if (this._row.table.modExists("dataTree", true)) {
+
+                       return this._row.table.modules.dataTree.getTreeChildren(this._row);
+               }
+
+               return false;
+       };
+
+       RowComponent.prototype.reformat = function () {
+
+               return this._row.reinitialize();
+       };
+
+       RowComponent.prototype.getGroup = function () {
+
+               return this._row.getGroup().getComponent();
+       };
+
+       RowComponent.prototype.getTable = function () {
+
+               return this._row.table;
+       };
+
+       RowComponent.prototype.getNextRow = function () {
+
+               var row = this._row.nextRow();
+
+               return row ? row.getComponent() : row;
+       };
+
+       RowComponent.prototype.getPrevRow = function () {
+
+               var row = this._row.prevRow();
+
+               return row ? row.getComponent() : row;
+       };
+
+       var Row = function Row(data, parent) {
+
+               this.table = parent.table;
+
+               this.parent = parent;
+
+               this.data = {};
+
+               this.type = "row"; //type of element
+
+               this.element = this.createElement();
+
+               this.modules = {}; //hold module variables;
+
+               this.cells = [];
+
+               this.height = 0; //hold element height
+
+               this.heightStyled = ""; //hold element height prestyled to improve render efficiency
+
+               this.manualHeight = false; //user has manually set row height
+
+               this.outerHeight = 0; //holde lements outer height
+
+               this.initialized = false; //element has been rendered
+
+               this.heightInitialized = false; //element has resized cells to fit
+
+
+               this.setData(data);
+
+               this.generateElement();
+       };
+
+       Row.prototype.createElement = function () {
+
+               var el = document.createElement("div");
+
+               el.classList.add("tabulator-row");
+
+               el.setAttribute("role", "row");
+
+               return el;
+       };
+
+       Row.prototype.getElement = function () {
+
+               return this.element;
+       };
+
+       Row.prototype.detachElement = function () {
+
+               if (this.element && this.element.parentNode) {
+
+                       this.element.parentNode.removeChild(this.element);
+               }
+       };
+
+       Row.prototype.generateElement = function () {
+
+               var self = this,
+                   dblTap,
+                   tapHold,
+                   tap;
+
+               //set row selection characteristics
+
+               if (self.table.options.selectable !== false && self.table.modExists("selectRow")) {
+
+                       self.table.modules.selectRow.initializeRow(this);
+               }
+
+               //setup movable rows
+
+               if (self.table.options.movableRows !== false && self.table.modExists("moveRow")) {
+
+                       self.table.modules.moveRow.initializeRow(this);
+               }
+
+               //setup data tree
+
+               if (self.table.options.dataTree !== false && self.table.modExists("dataTree")) {
+
+                       self.table.modules.dataTree.initializeRow(this);
+               }
+
+               //handle row click events
+
+               if (self.table.options.rowClick) {
+
+                       self.element.addEventListener("click", function (e) {
+
+                               self.table.options.rowClick(e, self.getComponent());
+                       });
+               }
+
+               if (self.table.options.rowDblClick) {
+
+                       self.element.addEventListener("dblclick", function (e) {
+
+                               self.table.options.rowDblClick(e, self.getComponent());
+                       });
+               }
+
+               if (self.table.options.rowContext) {
+
+                       self.element.addEventListener("contextmenu", function (e) {
+
+                               self.table.options.rowContext(e, self.getComponent());
+                       });
+               }
+
+               //handle mouse events
+
+               if (self.table.options.rowMouseEnter) {
+
+                       self.element.addEventListener("mouseenter", function (e) {
+
+                               self.table.options.rowMouseEnter(e, self.getComponent());
+                       });
+               }
+
+               if (self.table.options.rowMouseLeave) {
+
+                       self.element.addEventListener("mouseleave", function (e) {
+
+                               self.table.options.rowMouseLeave(e, self.getComponent());
+                       });
+               }
+
+               if (self.table.options.rowMouseOver) {
+
+                       self.element.addEventListener("mouseover", function (e) {
+
+                               self.table.options.rowMouseOver(e, self.getComponent());
+                       });
+               }
+
+               if (self.table.options.rowMouseOut) {
+
+                       self.element.addEventListener("mouseout", function (e) {
+
+                               self.table.options.rowMouseOut(e, self.getComponent());
+                       });
+               }
+
+               if (self.table.options.rowMouseMove) {
+
+                       self.element.addEventListener("mousemove", function (e) {
+
+                               self.table.options.rowMouseMove(e, self.getComponent());
+                       });
+               }
+
+               if (self.table.options.rowTap) {
+
+                       tap = false;
+
+                       self.element.addEventListener("touchstart", function (e) {
+
+                               tap = true;
+                       }, { passive: true });
+
+                       self.element.addEventListener("touchend", function (e) {
+
+                               if (tap) {
+
+                                       self.table.options.rowTap(e, self.getComponent());
+                               }
+
+                               tap = false;
+                       });
+               }
+
+               if (self.table.options.rowDblTap) {
+
+                       dblTap = null;
+
+                       self.element.addEventListener("touchend", function (e) {
+
+                               if (dblTap) {
+
+                                       clearTimeout(dblTap);
+
+                                       dblTap = null;
+
+                                       self.table.options.rowDblTap(e, self.getComponent());
+                               } else {
+
+                                       dblTap = setTimeout(function () {
+
+                                               clearTimeout(dblTap);
+
+                                               dblTap = null;
+                                       }, 300);
+                               }
+                       });
+               }
+
+               if (self.table.options.rowTapHold) {
+
+                       tapHold = null;
+
+                       self.element.addEventListener("touchstart", function (e) {
+
+                               clearTimeout(tapHold);
+
+                               tapHold = setTimeout(function () {
+
+                                       clearTimeout(tapHold);
+
+                                       tapHold = null;
+
+                                       tap = false;
+
+                                       self.table.options.rowTapHold(e, self.getComponent());
+                               }, 1000);
+                       }, { passive: true });
+
+                       self.element.addEventListener("touchend", function (e) {
+
+                               clearTimeout(tapHold);
+
+                               tapHold = null;
+                       });
+               }
+       };
+
+       Row.prototype.generateCells = function () {
+
+               this.cells = this.table.columnManager.generateCells(this);
+       };
+
+       //functions to setup on first render
+
+       Row.prototype.initialize = function (force) {
+
+               var self = this;
+
+               if (!self.initialized || force) {
+
+                       self.deleteCells();
+
+                       while (self.element.firstChild) {
+                               self.element.removeChild(self.element.firstChild);
+                       } //handle frozen cells
+
+                       if (this.table.modExists("frozenColumns")) {
+
+                               this.table.modules.frozenColumns.layoutRow(this);
+                       }
+
+                       this.generateCells();
+
+                       self.cells.forEach(function (cell) {
+
+                               self.element.appendChild(cell.getElement());
+
+                               cell.cellRendered();
+                       });
+
+                       if (force) {
+
+                               self.normalizeHeight();
+                       }
+
+                       //setup movable rows
+
+                       if (self.table.options.dataTree && self.table.modExists("dataTree")) {
+
+                               self.table.modules.dataTree.layoutRow(this);
+                       }
+
+                       //setup movable rows
+
+                       if (self.table.options.responsiveLayout === "collapse" && self.table.modExists("responsiveLayout")) {
+
+                               self.table.modules.responsiveLayout.layoutRow(this);
+                       }
+
+                       if (self.table.options.rowFormatter) {
+
+                               self.table.options.rowFormatter(self.getComponent());
+                       }
+
+                       //set resizable handles
+
+                       if (self.table.options.resizableRows && self.table.modExists("resizeRows")) {
+
+                               self.table.modules.resizeRows.initializeRow(self);
+                       }
+
+                       self.initialized = true;
+               }
+       };
+
+       Row.prototype.reinitializeHeight = function () {
+
+               this.heightInitialized = false;
+
+               if (this.element.offsetParent !== null) {
+
+                       this.normalizeHeight(true);
+               }
+       };
+
+       Row.prototype.reinitialize = function () {
+
+               this.initialized = false;
+
+               this.heightInitialized = false;
+
+               if (!this.manualHeight) {
+
+                       this.height = 0;
+
+                       this.heightStyled = "";
+               }
+
+               if (this.element.offsetParent !== null) {
+
+                       this.initialize(true);
+               }
+       };
+
+       //get heights when doing bulk row style calcs in virtual DOM
+
+       Row.prototype.calcHeight = function (force) {
+
+               var maxHeight = 0,
+                   minHeight = this.table.options.resizableRows ? this.element.clientHeight : 0;
+
+               this.cells.forEach(function (cell) {
+
+                       var height = cell.getHeight();
+
+                       if (height > maxHeight) {
+
+                               maxHeight = height;
+                       }
+               });
+
+               if (force) {
+
+                       this.height = Math.max(maxHeight, minHeight);
+               } else {
+
+                       this.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight);
+               }
+
+               this.heightStyled = this.height ? this.height + "px" : "";
+
+               this.outerHeight = this.element.offsetHeight;
+       };
+
+       //set of cells
+
+       Row.prototype.setCellHeight = function () {
+
+               this.cells.forEach(function (cell) {
+
+                       cell.setHeight();
+               });
+
+               this.heightInitialized = true;
+       };
+
+       Row.prototype.clearCellHeight = function () {
+
+               this.cells.forEach(function (cell) {
+
+                       cell.clearHeight();
+               });
+       };
+
+       //normalize the height of elements in the row
+
+       Row.prototype.normalizeHeight = function (force) {
+
+               if (force) {
+
+                       this.clearCellHeight();
+               }
+
+               this.calcHeight(force);
+
+               this.setCellHeight();
+       };
+
+       // Row.prototype.setHeight = function(height){
+
+       //      this.height = height;
+
+
+       //      this.setCellHeight();
+
+       // };
+
+
+       //set height of rows
+
+       Row.prototype.setHeight = function (height, force) {
+
+               if (this.height != height || force) {
+
+                       this.manualHeight = true;
+
+                       this.height = height;
+
+                       this.heightStyled = height ? height + "px" : "";
+
+                       this.setCellHeight();
+
+                       // this.outerHeight = this.element.outerHeight();
+
+                       this.outerHeight = this.element.offsetHeight;
+               }
+       };
+
+       //return rows outer height
+
+       Row.prototype.getHeight = function () {
+
+               return this.outerHeight;
+       };
+
+       //return rows outer Width
+
+       Row.prototype.getWidth = function () {
+
+               return this.element.offsetWidth;
+       };
+
+       //////////////// Cell Management /////////////////
+
+
+       Row.prototype.deleteCell = function (cell) {
+
+               var index = this.cells.indexOf(cell);
+
+               if (index > -1) {
+
+                       this.cells.splice(index, 1);
+               }
+       };
+
+       //////////////// Data Management /////////////////
+
+
+       Row.prototype.setData = function (data) {
+
+               if (this.table.modExists("mutator")) {
+
+                       data = this.table.modules.mutator.transformRow(data, "data");
+               }
+
+               this.data = data;
+
+               if (this.table.options.reactiveData && this.table.modExists("reactiveData", true)) {
+
+                       this.table.modules.reactiveData.watchRow(this);
+               }
+       };
+
+       //update the rows data
+
+       Row.prototype.updateData = function (data) {
+               var _this7 = this;
+
+               var self = this,
+                   visible = Tabulator.prototype.helpers.elVisible(this.element);
+
+               return new Promise(function (resolve, reject) {
+
+                       if (typeof data === "string") {
+
+                               data = JSON.parse(data);
+                       }
+
+                       if (_this7.table.options.reactiveData && _this7.table.modExists("reactiveData", true)) {
+
+                               _this7.table.modules.reactiveData.block();
+                       }
+
+                       //mutate incomming data if needed
+
+                       if (self.table.modExists("mutator")) {
+
+                               data = self.table.modules.mutator.transformRow(data, "data", true);
+                       }
+
+                       //set data
+
+                       for (var attrname in data) {
+
+                               self.data[attrname] = data[attrname];
+                       }
+
+                       if (_this7.table.options.reactiveData && _this7.table.modExists("reactiveData", true)) {
+
+                               _this7.table.modules.reactiveData.unblock();
+                       }
+
+                       //update affected cells only
+
+                       for (var attrname in data) {
+
+                               var columns = _this7.table.columnManager.getColumnsByFieldRoot(attrname);
+
+                               columns.forEach(function (column) {
+
+                                       var cell = _this7.getCell(column.getField());
+
+                                       if (cell) {
+
+                                               var value = column.getFieldValue(data);
+
+                                               if (cell.getValue() != value) {
+
+                                                       cell.setValueProcessData(value);
+
+                                                       if (visible) {
+
+                                                               cell.cellRendered();
+                                                       }
+                                               }
+                                       }
+                               });
+                       }
+
+                       //Partial reinitialization if visible
+
+                       if (visible) {
+
+                               self.normalizeHeight();
+
+                               if (self.table.options.rowFormatter) {
+
+                                       self.table.options.rowFormatter(self.getComponent());
+                               }
+                       } else {
+
+                               _this7.initialized = false;
+
+                               _this7.height = 0;
+
+                               _this7.heightStyled = "";
+                       }
+
+                       if (self.table.options.dataTree !== false && self.table.modExists("dataTree") && _this7.table.modules.dataTree.redrawNeeded(data)) {
+
+                               _this7.table.modules.dataTree.initializeRow(_this7);
+
+                               _this7.table.modules.dataTree.layoutRow(_this7);
+
+                               _this7.table.rowManager.refreshActiveData("tree", false, true);
+                       }
+
+                       //self.reinitialize();
+
+
+                       self.table.options.rowUpdated.call(_this7.table, self.getComponent());
+
+                       resolve();
+               });
+       };
+
+       Row.prototype.getData = function (transform) {
+
+               var self = this;
+
+               if (transform) {
+
+                       if (self.table.modExists("accessor")) {
+
+                               return self.table.modules.accessor.transformRow(self.data, transform);
+                       }
+               } else {
+
+                       return this.data;
+               }
+       };
+
+       Row.prototype.getCell = function (column) {
+
+               var match = false;
+
+               column = this.table.columnManager.findColumn(column);
+
+               match = this.cells.find(function (cell) {
+
+                       return cell.column === column;
+               });
+
+               return match;
+       };
+
+       Row.prototype.getCellIndex = function (findCell) {
+
+               return this.cells.findIndex(function (cell) {
+
+                       return cell === findCell;
+               });
+       };
+
+       Row.prototype.findNextEditableCell = function (index) {
+
+               var nextCell = false;
+
+               if (index < this.cells.length - 1) {
+
+                       for (var i = index + 1; i < this.cells.length; i++) {
+
+                               var cell = this.cells[i];
+
+                               if (cell.column.modules.edit && Tabulator.prototype.helpers.elVisible(cell.getElement())) {
+
+                                       var allowEdit = true;
+
+                                       if (typeof cell.column.modules.edit.check == "function") {
+
+                                               allowEdit = cell.column.modules.edit.check(cell.getComponent());
+                                       }
+
+                                       if (allowEdit) {
+
+                                               nextCell = cell;
+
+                                               break;
+                                       }
+                               }
+                       }
+               }
+
+               return nextCell;
+       };
+
+       Row.prototype.findPrevEditableCell = function (index) {
+
+               var prevCell = false;
+
+               if (index > 0) {
+
+                       for (var i = index - 1; i >= 0; i--) {
+
+                               var cell = this.cells[i],
+                                   allowEdit = true;
+
+                               if (cell.column.modules.edit && Tabulator.prototype.helpers.elVisible(cell.getElement())) {
+
+                                       if (typeof cell.column.modules.edit.check == "function") {
+
+                                               allowEdit = cell.column.modules.edit.check(cell.getComponent());
+                                       }
+
+                                       if (allowEdit) {
+
+                                               prevCell = cell;
+
+                                               break;
+                                       }
+                               }
+                       }
+               }
+
+               return prevCell;
+       };
+
+       Row.prototype.getCells = function () {
+
+               return this.cells;
+       };
+
+       Row.prototype.nextRow = function () {
+
+               var row = this.table.rowManager.nextDisplayRow(this, true);
+
+               return row || false;
+       };
+
+       Row.prototype.prevRow = function () {
+
+               var row = this.table.rowManager.prevDisplayRow(this, true);
+
+               return row || false;
+       };
+
+       Row.prototype.moveToRow = function (to, before) {
+
+               var toRow = this.table.rowManager.findRow(to);
+
+               if (toRow) {
+
+                       this.table.rowManager.moveRowActual(this, toRow, !before);
+
+                       this.table.rowManager.refreshActiveData("display", false, true);
+               } else {
+
+                       console.warn("Move Error - No matching row found:", to);
+               }
+       };
+
+       ///////////////////// Actions  /////////////////////
+
+
+       Row.prototype.delete = function () {
+               var _this8 = this;
+
+               return new Promise(function (resolve, reject) {
+
+                       var index, rows;
+
+                       if (_this8.table.options.history && _this8.table.modExists("history")) {
+
+                               if (_this8.table.options.groupBy && _this8.table.modExists("groupRows")) {
+
+                                       rows = _this8.getGroup().rows;
+
+                                       index = rows.indexOf(_this8);
+
+                                       if (index) {
+
+                                               index = rows[index - 1];
+                                       }
+                               } else {
+
+                                       index = _this8.table.rowManager.getRowIndex(_this8);
+
+                                       if (index) {
+
+                                               index = _this8.table.rowManager.rows[index - 1];
+                                       }
+                               }
+
+                               _this8.table.modules.history.action("rowDelete", _this8, { data: _this8.getData(), pos: !index, index: index });
+                       }
+
+                       _this8.deleteActual();
+
+                       resolve();
+               });
+       };
+
+       Row.prototype.deleteActual = function (blockRedraw) {
+
+               var index = this.table.rowManager.getRowIndex(this);
+
+               //deselect row if it is selected
+
+               if (this.table.modExists("selectRow")) {
+
+                       this.table.modules.selectRow._deselectRow(this, true);
+               }
+
+               // if(this.table.options.dataTree && this.table.modExists("dataTree")){
+
+               //      this.table.modules.dataTree.collapseRow(this, true);
+
+               // }
+
+
+               //remove any reactive data watchers from row object
+
+               if (this.table.options.reactiveData && this.table.modExists("reactiveData", true)) {}
+
+               // this.table.modules.reactiveData.unwatchRow(this);
+
+               //remove from group
+
+               if (this.modules.group) {
+
+                       this.modules.group.removeRow(this);
+               }
+
+               this.table.rowManager.deleteRow(this, blockRedraw);
+
+               this.deleteCells();
+
+               this.initialized = false;
+
+               this.heightInitialized = false;
+
+               //recalc column calculations if present
+
+               if (this.table.modExists("columnCalcs")) {
+
+                       if (this.table.options.groupBy && this.table.modExists("groupRows")) {
+
+                               this.table.modules.columnCalcs.recalcRowGroup(this);
+                       } else {
+
+                               this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
+                       }
+               }
+       };
+
+       Row.prototype.deleteCells = function () {
+
+               var cellCount = this.cells.length;
+
+               for (var i = 0; i < cellCount; i++) {
+
+                       this.cells[0].delete();
+               }
+       };
+
+       Row.prototype.wipe = function () {
+
+               this.deleteCells();
+
+               while (this.element.firstChild) {
+                       this.element.removeChild(this.element.firstChild);
+               }this.element = false;
+
+               this.modules = {};
+
+               if (this.element.parentNode) {
+
+                       this.element.parentNode.removeChild(this.element);
+               }
+       };
+
+       Row.prototype.getGroup = function () {
+
+               return this.modules.group || false;
+       };
+
+       //////////////// Object Generation /////////////////
+
+       Row.prototype.getComponent = function () {
+
+               return new RowComponent(this);
+       };
+
+       //public row object
+
+       var CellComponent = function CellComponent(cell) {
+
+               this._cell = cell;
+       };
+
+       CellComponent.prototype.getValue = function () {
+
+               return this._cell.getValue();
+       };
+
+       CellComponent.prototype.getOldValue = function () {
+
+               return this._cell.getOldValue();
+       };
+
+       CellComponent.prototype.getElement = function () {
+
+               return this._cell.getElement();
+       };
+
+       CellComponent.prototype.getRow = function () {
+
+               return this._cell.row.getComponent();
+       };
+
+       CellComponent.prototype.getData = function () {
+
+               return this._cell.row.getData();
+       };
+
+       CellComponent.prototype.getField = function () {
+
+               return this._cell.column.getField();
+       };
+
+       CellComponent.prototype.getColumn = function () {
+
+               return this._cell.column.getComponent();
+       };
+
+       CellComponent.prototype.setValue = function (value, mutate) {
+
+               if (typeof mutate == "undefined") {
+
+                       mutate = true;
+               }
+
+               this._cell.setValue(value, mutate);
+       };
+
+       CellComponent.prototype.restoreOldValue = function () {
+
+               this._cell.setValueActual(this._cell.getOldValue());
+       };
+
+       CellComponent.prototype.edit = function (force) {
+
+               return this._cell.edit(force);
+       };
+
+       CellComponent.prototype.cancelEdit = function () {
+
+               this._cell.cancelEdit();
+       };
+
+       CellComponent.prototype.nav = function () {
+
+               return this._cell.nav();
+       };
+
+       CellComponent.prototype.checkHeight = function () {
+
+               this._cell.checkHeight();
+       };
+
+       CellComponent.prototype.getTable = function () {
+
+               return this._cell.table;
+       };
+
+       CellComponent.prototype._getSelf = function () {
+
+               return this._cell;
+       };
+
+       var Cell = function Cell(column, row) {
+
+               this.table = column.table;
+
+               this.column = column;
+
+               this.row = row;
+
+               this.element = null;
+
+               this.value = null;
+
+               this.oldValue = null;
+
+               this.height = null;
+
+               this.width = null;
+
+               this.minWidth = null;
+
+               this.build();
+       };
+
+       //////////////// Setup Functions /////////////////
+
+
+       //generate element
+
+       Cell.prototype.build = function () {
+
+               this.generateElement();
+
+               this.setWidth();
+
+               this._configureCell();
+
+               this.setValueActual(this.column.getFieldValue(this.row.data));
+       };
+
+       Cell.prototype.generateElement = function () {
+
+               this.element = document.createElement('div');
+
+               this.element.className = "tabulator-cell";
+
+               this.element.setAttribute("role", "gridcell");
+
+               this.element = this.element;
+       };
+
+       Cell.prototype._configureCell = function () {
+
+               var self = this,
+                   cellEvents = self.column.cellEvents,
+                   element = self.element,
+                   field = this.column.getField();
+
+               //set text alignment
+
+               element.style.textAlign = self.column.hozAlign;
+
+               if (field) {
+
+                       element.setAttribute("tabulator-field", field);
+               }
+
+               //add class to cell if needed
+
+               if (self.column.definition.cssClass) {
+
+                       var classNames = self.column.definition.cssClass.split(" ");
+
+                       classNames.forEach(function (className) {
+
+                               element.classList.add(className);
+                       });
+               }
+
+               //update tooltip on mouse enter
+
+               if (this.table.options.tooltipGenerationMode === "hover") {
+
+                       element.addEventListener("mouseenter", function (e) {
+
+                               self._generateTooltip();
+                       });
+               }
+
+               self._bindClickEvents(cellEvents);
+
+               self._bindTouchEvents(cellEvents);
+
+               self._bindMouseEvents(cellEvents);
+
+               if (self.column.modules.edit) {
+
+                       self.table.modules.edit.bindEditor(self);
+               }
+
+               if (self.column.definition.rowHandle && self.table.options.movableRows !== false && self.table.modExists("moveRow")) {
+
+                       self.table.modules.moveRow.initializeCell(self);
+               }
+
+               //hide cell if not visible
+
+               if (!self.column.visible) {
+
+                       self.hide();
+               }
+       };
+
+       Cell.prototype._bindClickEvents = function (cellEvents) {
+
+               var self = this,
+                   element = self.element;
+
+               //set event bindings
+
+               if (cellEvents.cellClick || self.table.options.cellClick) {
+
+                       element.addEventListener("click", function (e) {
+
+                               var component = self.getComponent();
+
+                               if (cellEvents.cellClick) {
+
+                                       cellEvents.cellClick.call(self.table, e, component);
+                               }
+
+                               if (self.table.options.cellClick) {
+
+                                       self.table.options.cellClick.call(self.table, e, component);
+                               }
+                       });
+               }
+
+               if (cellEvents.cellDblClick || this.table.options.cellDblClick) {
+
+                       element.addEventListener("dblclick", function (e) {
+
+                               var component = self.getComponent();
+
+                               if (cellEvents.cellDblClick) {
+
+                                       cellEvents.cellDblClick.call(self.table, e, component);
+                               }
+
+                               if (self.table.options.cellDblClick) {
+
+                                       self.table.options.cellDblClick.call(self.table, e, component);
+                               }
+                       });
+               } else {
+
+                       element.addEventListener("dblclick", function (e) {
+
+                               e.preventDefault();
+
+                               try {
+
+                                       if (document.selection) {
+                                               // IE
+
+                                               var range = document.body.createTextRange();
+
+                                               range.moveToElementText(self.element);
+
+                                               range.select();
+                                       } else if (window.getSelection) {
+
+                                               var range = document.createRange();
+
+                                               range.selectNode(self.element);
+
+                                               window.getSelection().removeAllRanges();
+
+                                               window.getSelection().addRange(range);
+                                       }
+                               } catch (e) {}
+                       });
+               }
+
+               if (cellEvents.cellContext || this.table.options.cellContext) {
+
+                       element.addEventListener("contextmenu", function (e) {
+
+                               var component = self.getComponent();
+
+                               if (cellEvents.cellContext) {
+
+                                       cellEvents.cellContext.call(self.table, e, component);
+                               }
+
+                               if (self.table.options.cellContext) {
+
+                                       self.table.options.cellContext.call(self.table, e, component);
+                               }
+                       });
+               }
+       };
+
+       Cell.prototype._bindMouseEvents = function (cellEvents) {
+
+               var self = this,
+                   element = self.element;
+
+               if (cellEvents.cellMouseEnter || self.table.options.cellMouseEnter) {
+
+                       element.addEventListener("mouseenter", function (e) {
+
+                               var component = self.getComponent();
+
+                               if (cellEvents.cellMouseEnter) {
+
+                                       cellEvents.cellMouseEnter.call(self.table, e, component);
+                               }
+
+                               if (self.table.options.cellMouseEnter) {
+
+                                       self.table.options.cellMouseEnter.call(self.table, e, component);
+                               }
+                       });
+               }
+
+               if (cellEvents.cellMouseLeave || self.table.options.cellMouseLeave) {
+
+                       element.addEventListener("mouseleave", function (e) {
+
+                               var component = self.getComponent();
+
+                               if (cellEvents.cellMouseLeave) {
+
+                                       cellEvents.cellMouseLeave.call(self.table, e, component);
+                               }
+
+                               if (self.table.options.cellMouseLeave) {
+
+                                       self.table.options.cellMouseLeave.call(self.table, e, component);
+                               }
+                       });
+               }
+
+               if (cellEvents.cellMouseOver || self.table.options.cellMouseOver) {
+
+                       element.addEventListener("mouseover", function (e) {
+
+                               var component = self.getComponent();
+
+                               if (cellEvents.cellMouseOver) {
+
+                                       cellEvents.cellMouseOver.call(self.table, e, component);
+                               }
+
+                               if (self.table.options.cellMouseOver) {
+
+                                       self.table.options.cellMouseOver.call(self.table, e, component);
+                               }
+                       });
+               }
+
+               if (cellEvents.cellMouseOut || self.table.options.cellMouseOut) {
+
+                       element.addEventListener("mouseout", function (e) {
+
+                               var component = self.getComponent();
+
+                               if (cellEvents.cellMouseOut) {
+
+                                       cellEvents.cellMouseOut.call(self.table, e, component);
+                               }
+
+                               if (self.table.options.cellMouseOut) {
+
+                                       self.table.options.cellMouseOut.call(self.table, e, component);
+                               }
+                       });
+               }
+
+               if (cellEvents.cellMouseMove || self.table.options.cellMouseMove) {
+
+                       element.addEventListener("mousemove", function (e) {
+
+                               var component = self.getComponent();
+
+                               if (cellEvents.cellMouseMove) {
+
+                                       cellEvents.cellMouseMove.call(self.table, e, component);
+                               }
+
+                               if (self.table.options.cellMouseMove) {
+
+                                       self.table.options.cellMouseMove.call(self.table, e, component);
+                               }
+                       });
+               }
+       };
+
+       Cell.prototype._bindTouchEvents = function (cellEvents) {
+
+               var self = this,
+                   element = self.element,
+                   dblTap,
+                   tapHold,
+                   tap;
+
+               if (cellEvents.cellTap || this.table.options.cellTap) {
+
+                       tap = false;
+
+                       element.addEventListener("touchstart", function (e) {
+
+                               tap = true;
+                       }, { passive: true });
+
+                       element.addEventListener("touchend", function (e) {
+
+                               if (tap) {
+
+                                       var component = self.getComponent();
+
+                                       if (cellEvents.cellTap) {
+
+                                               cellEvents.cellTap.call(self.table, e, component);
+                                       }
+
+                                       if (self.table.options.cellTap) {
+
+                                               self.table.options.cellTap.call(self.table, e, component);
+                                       }
+                               }
+
+                               tap = false;
+                       });
+               }
+
+               if (cellEvents.cellDblTap || this.table.options.cellDblTap) {
+
+                       dblTap = null;
+
+                       element.addEventListener("touchend", function (e) {
+
+                               if (dblTap) {
+
+                                       clearTimeout(dblTap);
+
+                                       dblTap = null;
+
+                                       var component = self.getComponent();
+
+                                       if (cellEvents.cellDblTap) {
+
+                                               cellEvents.cellDblTap.call(self.table, e, component);
+                                       }
+
+                                       if (self.table.options.cellDblTap) {
+
+                                               self.table.options.cellDblTap.call(self.table, e, component);
+                                       }
+                               } else {
+
+                                       dblTap = setTimeout(function () {
+
+                                               clearTimeout(dblTap);
+
+                                               dblTap = null;
+                                       }, 300);
+                               }
+                       });
+               }
+
+               if (cellEvents.cellTapHold || this.table.options.cellTapHold) {
+
+                       tapHold = null;
+
+                       element.addEventListener("touchstart", function (e) {
+
+                               clearTimeout(tapHold);
+
+                               tapHold = setTimeout(function () {
+
+                                       clearTimeout(tapHold);
+
+                                       tapHold = null;
+
+                                       tap = false;
+
+                                       var component = self.getComponent();
+
+                                       if (cellEvents.cellTapHold) {
+
+                                               cellEvents.cellTapHold.call(self.table, e, component);
+                                       }
+
+                                       if (self.table.options.cellTapHold) {
+
+                                               self.table.options.cellTapHold.call(self.table, e, component);
+                                       }
+                               }, 1000);
+                       }, { passive: true });
+
+                       element.addEventListener("touchend", function (e) {
+
+                               clearTimeout(tapHold);
+
+                               tapHold = null;
+                       });
+               }
+       };
+
+       //generate cell contents
+
+       Cell.prototype._generateContents = function () {
+
+               var val;
+
+               if (this.table.modExists("format")) {
+
+                       val = this.table.modules.format.formatValue(this);
+               } else {
+
+                       val = this.element.innerHTML = this.value;
+               }
+
+               switch (typeof val === 'undefined' ? 'undefined' : _typeof(val)) {
+
+                       case "object":
+
+                               if (val instanceof Node) {
+
+                                       //clear previous cell contents
+
+                                       while (this.element.firstChild) {
+                                               this.element.removeChild(this.element.firstChild);
+                                       }this.element.appendChild(val);
+                               } else {
+
+                                       this.element.innerHTML = "";
+
+                                       if (val != null) {
+
+                                               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:", val);
+                                       }
+                               }
+
+                               break;
+
+                       case "undefined":
+
+                       case "null":
+
+                               this.element.innerHTML = "";
+
+                               break;
+
+                       default:
+
+                               this.element.innerHTML = val;
+
+               }
+       };
+
+       Cell.prototype.cellRendered = function () {
+
+               if (this.table.modExists("format") && this.table.modules.format.cellRendered) {
+
+                       this.table.modules.format.cellRendered(this);
+               }
+       };
+
+       //generate tooltip text
+
+       Cell.prototype._generateTooltip = function () {
+
+               var tooltip = this.column.tooltip;
+
+               if (tooltip) {
+
+                       if (tooltip === true) {
+
+                               tooltip = this.value;
+                       } else if (typeof tooltip == "function") {
+
+                               tooltip = tooltip(this.getComponent());
+
+                               if (tooltip === false) {
+
+                                       tooltip = "";
+                               }
+                       }
+
+                       if (typeof tooltip === "undefined") {
+
+                               tooltip = "";
+                       }
+
+                       this.element.setAttribute("title", tooltip);
+               } else {
+
+                       this.element.setAttribute("title", "");
+               }
+       };
+
+       //////////////////// Getters ////////////////////
+
+       Cell.prototype.getElement = function () {
+
+               return this.element;
+       };
+
+       Cell.prototype.getValue = function () {
+
+               return this.value;
+       };
+
+       Cell.prototype.getOldValue = function () {
+
+               return this.oldValue;
+       };
+
+       //////////////////// Actions ////////////////////
+
+
+       Cell.prototype.setValue = function (value, mutate) {
+
+               var changed = this.setValueProcessData(value, mutate),
+                   component;
+
+               if (changed) {
+
+                       if (this.table.options.history && this.table.modExists("history")) {
+
+                               this.table.modules.history.action("cellEdit", this, { oldValue: this.oldValue, newValue: this.value });
+                       }
+
+                       component = this.getComponent();
+
+                       if (this.column.cellEvents.cellEdited) {
+
+                               this.column.cellEvents.cellEdited.call(this.table, component);
+                       }
+
+                       this.table.options.cellEdited.call(this.table, component);
+
+                       this.table.options.dataEdited.call(this.table, this.table.rowManager.getData());
+               }
+       };
+
+       Cell.prototype.setValueProcessData = function (value, mutate) {
+
+               var changed = false;
+
+               if (this.value != value) {
+
+                       changed = true;
+
+                       if (mutate) {
+
+                               if (this.column.modules.mutate) {
+
+                                       value = this.table.modules.mutator.transformCell(this, value);
+                               }
+                       }
+               }
+
+               this.setValueActual(value);
+
+               if (changed && this.table.modExists("columnCalcs")) {
+
+                       if (this.column.definition.topCalc || this.column.definition.bottomCalc) {
+
+                               if (this.table.options.groupBy && this.table.modExists("groupRows")) {
+
+                                       if (this.table.options.columnCalcs == "table" || this.table.options.columnCalcs == "both") {
+
+                                               this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
+                                       }
+
+                                       if (this.table.options.columnCalcs != "table") {
+
+                                               this.table.modules.columnCalcs.recalcRowGroup(this.row);
+                                       }
+                               } else {
+
+                                       this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
+                               }
+                       }
+               }
+
+               return changed;
+       };
+
+       Cell.prototype.setValueActual = function (value) {
+
+               this.oldValue = this.value;
+
+               this.value = value;
+
+               if (this.table.options.reactiveData && this.table.modExists("reactiveData")) {
+
+                       this.table.modules.reactiveData.block();
+               }
+
+               this.column.setFieldValue(this.row.data, value);
+
+               if (this.table.options.reactiveData && this.table.modExists("reactiveData")) {
+
+                       this.table.modules.reactiveData.unblock();
+               }
+
+               this._generateContents();
+
+               this._generateTooltip();
+
+               //set resizable handles
+
+               if (this.table.options.resizableColumns && this.table.modExists("resizeColumns")) {
+
+                       this.table.modules.resizeColumns.initializeColumn("cell", this.column, this.element);
+               }
+
+               //handle frozen cells
+
+               if (this.table.modExists("frozenColumns")) {
+
+                       this.table.modules.frozenColumns.layoutElement(this.element, this.column);
+               }
+       };
+
+       Cell.prototype.setWidth = function () {
+
+               this.width = this.column.width;
+
+               this.element.style.width = this.column.widthStyled;
+       };
+
+       Cell.prototype.clearWidth = function () {
+
+               this.width = "";
+
+               this.element.style.width = "";
+       };
+
+       Cell.prototype.getWidth = function () {
+
+               return this.width || this.element.offsetWidth;
+       };
+
+       Cell.prototype.setMinWidth = function () {
+
+               this.minWidth = this.column.minWidth;
+
+               this.element.style.minWidth = this.column.minWidthStyled;
+       };
+
+       Cell.prototype.checkHeight = function () {
+
+               // var height = this.element.css("height");
+
+               this.row.reinitializeHeight();
+       };
+
+       Cell.prototype.clearHeight = function () {
+
+               this.element.style.height = "";
+
+               this.height = null;
+       };
+
+       Cell.prototype.setHeight = function () {
+
+               this.height = this.row.height;
+
+               this.element.style.height = this.row.heightStyled;
+       };
+
+       Cell.prototype.getHeight = function () {
+
+               return this.height || this.element.offsetHeight;
+       };
+
+       Cell.prototype.show = function () {
+
+               this.element.style.display = "";
+       };
+
+       Cell.prototype.hide = function () {
+
+               this.element.style.display = "none";
+       };
+
+       Cell.prototype.edit = function (force) {
+
+               if (this.table.modExists("edit", true)) {
+
+                       return this.table.modules.edit.editCell(this, force);
+               }
+       };
+
+       Cell.prototype.cancelEdit = function () {
+
+               if (this.table.modExists("edit", true)) {
+
+                       var editing = this.table.modules.edit.getCurrentCell();
+
+                       if (editing && editing._getSelf() === this) {
+
+                               this.table.modules.edit.cancelEdit();
+                       } else {
+
+                               console.warn("Cancel Editor Error - This cell is not currently being edited ");
+                       }
+               }
+       };
+
+       Cell.prototype.delete = function () {
+
+               this.element.parentNode.removeChild(this.element);
+
+               this.element = false;
+
+               this.column.deleteCell(this);
+
+               this.row.deleteCell(this);
+
+               this.calcs = {};
+       };
+
+       //////////////// Navigation /////////////////
+
+
+       Cell.prototype.nav = function () {
+
+               var self = this,
+                   nextCell = false,
+                   index = this.row.getCellIndex(this);
+
+               return {
+
+                       next: function next() {
+
+                               var nextCell = this.right(),
+                                   nextRow;
+
+                               if (!nextCell) {
+
+                                       nextRow = self.table.rowManager.nextDisplayRow(self.row, true);
+
+                                       if (nextRow) {
+
+                                               nextCell = nextRow.findNextEditableCell(-1);
+
+                                               if (nextCell) {
+
+                                                       nextCell.edit();
+
+                                                       return true;
+                                               }
+                                       }
+                               } else {
+
+                                       return true;
+                               }
+
+                               return false;
+                       },
+
+                       prev: function prev() {
+
+                               var nextCell = this.left(),
+                                   prevRow;
+
+                               if (!nextCell) {
+
+                                       prevRow = self.table.rowManager.prevDisplayRow(self.row, true);
+
+                                       if (prevRow) {
+
+                                               nextCell = prevRow.findPrevEditableCell(prevRow.cells.length);
+
+                                               if (nextCell) {
+
+                                                       nextCell.edit();
+
+                                                       return true;
+                                               }
+                                       }
+                               } else {
+
+                                       return true;
+                               }
+
+                               return false;
+                       },
+
+                       left: function left() {
+
+                               nextCell = self.row.findPrevEditableCell(index);
+
+                               if (nextCell) {
+
+                                       nextCell.edit();
+
+                                       return true;
+                               } else {
+
+                                       return false;
+                               }
+                       },
+
+                       right: function right() {
+
+                               nextCell = self.row.findNextEditableCell(index);
+
+                               if (nextCell) {
+
+                                       nextCell.edit();
+
+                                       return true;
+                               } else {
+
+                                       return false;
+                               }
+                       },
+
+                       up: function up() {
+
+                               var nextRow = self.table.rowManager.prevDisplayRow(self.row, true);
+
+                               if (nextRow) {
+
+                                       nextRow.cells[index].edit();
+                               }
+                       },
+
+                       down: function down() {
+
+                               var nextRow = self.table.rowManager.nextDisplayRow(self.row, true);
+
+                               if (nextRow) {
+
+                                       nextRow.cells[index].edit();
+                               }
+                       }
+
+               };
+       };
+
+       Cell.prototype.getIndex = function () {
+
+               this.row.getCellIndex(this);
+       };
+
+       //////////////// Object Generation /////////////////
+
+       Cell.prototype.getComponent = function () {
+
+               return new CellComponent(this);
+       };
+
+       var FooterManager = function FooterManager(table) {
+
+               this.table = table;
+
+               this.active = false;
+
+               this.element = this.createElement(); //containing element
+
+               this.external = false;
+
+               this.links = [];
+
+               this._initialize();
+       };
+
+       FooterManager.prototype.createElement = function () {
+
+               var el = document.createElement("div");
+
+               el.classList.add("tabulator-footer");
+
+               return el;
+       };
+
+       FooterManager.prototype._initialize = function (element) {
+
+               if (this.table.options.footerElement) {
+
+                       switch (_typeof(this.table.options.footerElement)) {
+
+                               case "string":
+
+                                       if (this.table.options.footerElement[0] === "<") {
+
+                                               this.element.innerHTML = this.table.options.footerElement;
+                                       } else {
+
+                                               this.external = true;
+
+                                               this.element = document.querySelector(this.table.options.footerElement);
+                                       }
+
+                                       break;
+
+                               default:
+
+                                       this.element = this.table.options.footerElement;
+
+                                       break;
+
+                       }
+               }
+       };
+
+       FooterManager.prototype.getElement = function () {
+
+               return this.element;
+       };
+
+       FooterManager.prototype.append = function (element, parent) {
+
+               this.activate(parent);
+
+               this.element.appendChild(element);
+
+               this.table.rowManager.adjustTableSize();
+       };
+
+       FooterManager.prototype.prepend = function (element, parent) {
+
+               this.activate(parent);
+
+               this.element.insertBefore(element, this.element.firstChild);
+
+               this.table.rowManager.adjustTableSize();
+       };
+
+       FooterManager.prototype.remove = function (element) {
+
+               element.parentNode.removeChild(element);
+
+               this.deactivate();
+       };
+
+       FooterManager.prototype.deactivate = function (force) {
+
+               if (!this.element.firstChild || force) {
+
+                       if (!this.external) {
+
+                               this.element.parentNode.removeChild(this.element);
+                       }
+
+                       this.active = false;
+               }
+
+               // this.table.rowManager.adjustTableSize();
+       };
+
+       FooterManager.prototype.activate = function (parent) {
+
+               if (!this.active) {
+
+                       this.active = true;
+
+                       if (!this.external) {
+
+                               this.table.element.appendChild(this.getElement());
+
+                               this.table.element.style.display = '';
+                       }
+               }
+
+               if (parent) {
+
+                       this.links.push(parent);
+               }
+       };
+
+       FooterManager.prototype.redraw = function () {
+
+               this.links.forEach(function (link) {
+
+                       link.footerRedraw();
+               });
+       };
+
+       var Tabulator = function Tabulator(element, options) {
+
+               this.options = {};
+
+               this.columnManager = null; // hold Column Manager
+
+               this.rowManager = null; //hold Row Manager
+
+               this.footerManager = null; //holder Footer Manager
+
+               this.browser = ""; //hold current browser type
+
+               this.browserSlow = false; //handle reduced functionality for slower browsers
+
+
+               this.modules = {}; //hold all modules bound to this table
+
+
+               this.initializeElement(element);
+
+               this.initializeOptions(options || {});
+
+               this._create();
+
+               Tabulator.prototype.comms.register(this); //register table for inderdevice communication
+       };
+
+       //default setup options
+
+       Tabulator.prototype.defaultOptions = {
+
+               height: false, //height of tabulator
+
+
+               layout: "fitData", ///layout type "fitColumns" | "fitData"
+
+               layoutColumnsOnNewData: false, //update column widths on setData
+
+
+               columnMinWidth: 40, //minimum global width for a column
+
+               columnVertAlign: "top", //vertical alignment of column headers
+
+
+               resizableColumns: true, //resizable columns
+
+               resizableRows: false, //resizable rows
+
+               autoResize: true, //auto resize table
+
+
+               columns: [], //store for colum header info
+
+
+               data: [], //default starting data
+
+
+               autoColumns: false, //build columns from data row structure
+
+
+               reactiveData: false, //enable data reactivity
+
+
+               nestedFieldSeparator: ".", //seperatpr for nested data
+
+
+               tooltips: false, //Tool tip value
+
+               tooltipsHeader: false, //Tool tip for headers
+
+               tooltipGenerationMode: "load", //when to generate tooltips
+
+
+               initialSort: false, //initial sorting criteria
+
+               initialFilter: false, //initial filtering criteria
+
+               initialHeaderFilter: false, //initial header filtering criteria
+
+
+               columnHeaderSortMulti: true, //multiple or single column sorting
+
+
+               sortOrderReverse: false, //reverse internal sort ordering
+
+
+               headerSort: true, //set default global header sort
+
+               headerSortTristate: false, //set default tristate header sorting
+
+
+               footerElement: false, //hold footer element
+
+
+               index: "id", //filed for row index
+
+
+               keybindings: [], //array for keybindings
+
+
+               tabEndNewRow: false, //create new row when tab to end of table
+
+
+               invalidOptionWarnings: true, //allow toggling of invalid option warnings
+
+
+               clipboard: false, //enable clipboard
+
+               clipboardCopyStyled: true, //formatted table data
+
+               clipboardCopySelector: "active", //method of chosing which data is coppied to the clipboard
+
+               clipboardCopyFormatter: "table", //convert data to a clipboard string
+
+               clipboardPasteParser: "table", //convert pasted clipboard data to rows
+
+               clipboardPasteAction: "insert", //how to insert pasted data into the table
+
+               clipboardCopyConfig: false, //clipboard config
+
+
+               clipboardCopied: function clipboardCopied() {}, //data has been copied to the clipboard
+
+               clipboardPasted: function clipboardPasted() {}, //data has been pasted into the table
+
+               clipboardPasteError: function clipboardPasteError() {}, //data has not successfully been pasted into the table
+
+
+               downloadDataFormatter: false, //function to manipulate table data before it is downloaded
+
+               downloadReady: function downloadReady(data, blob) {
+                       return blob;
+               }, //function to manipulate download data
+
+               downloadComplete: false, //function to manipulate download data
+
+               downloadConfig: false, //download config
+
+
+               dataTree: false, //enable data tree
+
+               dataTreeElementColumn: false,
+
+               dataTreeBranchElement: true, //show data tree branch element
+
+               dataTreeChildIndent: 9, //data tree child indent in px
+
+               dataTreeChildField: "_children", //data tre column field to look for child rows
+
+               dataTreeCollapseElement: false, //data tree row collapse element
+
+               dataTreeExpandElement: false, //data tree row expand element
+
+               dataTreeStartExpanded: false,
+
+               dataTreeRowExpanded: function dataTreeRowExpanded() {}, //row has been expanded
+
+               dataTreeRowCollapsed: function dataTreeRowCollapsed() {}, //row has been collapsed
+
+
+               printAsHtml: false, //enable print as html
+
+               printFormatter: false, //printing page formatter
+
+               printHeader: false, //page header contents
+
+               printFooter: false, //page footer contents
+
+               printCopyStyle: true, //enable print as html styling
+
+               printVisibleRows: true, //restrict print to visible rows only
+
+               printConfig: {}, //print config options
+
+
+               addRowPos: "bottom", //position to insert blank rows, top|bottom
+
+
+               selectable: "highlight", //highlight rows on hover
+
+               selectableRangeMode: "drag", //highlight rows on hover
+
+               selectableRollingSelection: true, //roll selection once maximum number of selectable rows is reached
+
+               selectablePersistence: true, // maintain selection when table view is updated
+
+               selectableCheck: function selectableCheck(data, row) {
+                       return true;
+               }, //check wheather row is selectable
+
+
+               headerFilterPlaceholder: false, //placeholder text to display in header filters
+
+
+               headerVisible: true, //hide header
+
+
+               history: false, //enable edit history
+
+
+               locale: false, //current system language
+
+               langs: {},
+
+               virtualDom: true, //enable DOM virtualization
+
+               virtualDomBuffer: 0, // set virtual DOM buffer size
+
+
+               persistentLayout: false, //store column layout in memory
+
+               persistentSort: false, //store sorting in memory
+
+               persistentFilter: false, //store filters in memory
+
+               persistenceID: "", //key for persistent storage
+
+               persistenceMode: true, //mode for storing persistence information
+
+
+               responsiveLayout: false, //responsive layout flags
+
+               responsiveLayoutCollapseStartOpen: true, //start showing collapsed data
+
+               responsiveLayoutCollapseUseFormatters: true, //responsive layout collapse formatter
+
+               responsiveLayoutCollapseFormatter: false, //responsive layout collapse formatter
+
+
+               pagination: false, //set pagination type
+
+               paginationSize: false, //set number of rows to a page
+
+               paginationButtonCount: 5, // set count of page button
+
+               paginationSizeSelector: false, //add pagination size selector element
+
+               paginationElement: false, //element to hold pagination numbers
+
+               paginationDataSent: {}, //pagination data sent to the server
+
+               paginationDataReceived: {}, //pagination data received from the server
+
+               paginationAddRow: "page", //add rows on table or page
+
+
+               ajaxURL: false, //url for ajax loading
+
+               ajaxURLGenerator: false,
+
+               ajaxParams: {}, //params for ajax loading
+
+               ajaxConfig: "get", //ajax request type
+
+               ajaxContentType: "form", //ajax request type
+
+               ajaxRequestFunc: false, //promise function
+
+               ajaxLoader: true, //show loader
+
+               ajaxLoaderLoading: false, //loader element
+
+               ajaxLoaderError: false, //loader element
+
+               ajaxFiltering: false,
+
+               ajaxSorting: false,
+
+               ajaxProgressiveLoad: false, //progressive loading
+
+               ajaxProgressiveLoadDelay: 0, //delay between requests
+
+               ajaxProgressiveLoadScrollMargin: 0, //margin before scroll begins
+
+
+               groupBy: false, //enable table grouping and set field to group by
+
+               groupStartOpen: true, //starting state of group
+
+               groupValues: false,
+
+               groupHeader: false, //header generation function
+
+
+               htmlOutputConfig: false, //html outypu config
+
+
+               movableColumns: false, //enable movable columns
+
+
+               movableRows: false, //enable movable rows
+
+               movableRowsConnectedTables: false, //tables for movable rows to be connected to
+
+               movableRowsSender: false,
+
+               movableRowsReceiver: "insert",
+
+               movableRowsSendingStart: function movableRowsSendingStart() {},
+
+               movableRowsSent: function movableRowsSent() {},
+
+               movableRowsSentFailed: function movableRowsSentFailed() {},
+
+               movableRowsSendingStop: function movableRowsSendingStop() {},
+
+               movableRowsReceivingStart: function movableRowsReceivingStart() {},
+
+               movableRowsReceived: function movableRowsReceived() {},
+
+               movableRowsReceivedFailed: function movableRowsReceivedFailed() {},
+
+               movableRowsReceivingStop: function movableRowsReceivingStop() {},
+
+               scrollToRowPosition: "top",
+
+               scrollToRowIfVisible: true,
+
+               scrollToColumnPosition: "left",
+
+               scrollToColumnIfVisible: true,
+
+               rowFormatter: false,
+
+               placeholder: false,
+
+               //table building callbacks
+
+               tableBuilding: function tableBuilding() {},
+
+               tableBuilt: function tableBuilt() {},
+
+               //render callbacks
+
+               renderStarted: function renderStarted() {},
+
+               renderComplete: function renderComplete() {},
+
+               //row callbacks
+
+               rowClick: false,
+
+               rowDblClick: false,
+
+               rowContext: false,
+
+               rowTap: false,
+
+               rowDblTap: false,
+
+               rowTapHold: false,
+
+               rowMouseEnter: false,
+
+               rowMouseLeave: false,
+
+               rowMouseOver: false,
+
+               rowMouseOut: false,
+
+               rowMouseMove: false,
+
+               rowAdded: function rowAdded() {},
+
+               rowDeleted: function rowDeleted() {},
+
+               rowMoved: function rowMoved() {},
+
+               rowUpdated: function rowUpdated() {},
+
+               rowSelectionChanged: function rowSelectionChanged() {},
+
+               rowSelected: function rowSelected() {},
+
+               rowDeselected: function rowDeselected() {},
+
+               rowResized: function rowResized() {},
+
+               //cell callbacks
+
+               //row callbacks
+
+               cellClick: false,
+
+               cellDblClick: false,
+
+               cellContext: false,
+
+               cellTap: false,
+
+               cellDblTap: false,
+
+               cellTapHold: false,
+
+               cellMouseEnter: false,
+
+               cellMouseLeave: false,
+
+               cellMouseOver: false,
+
+               cellMouseOut: false,
+
+               cellMouseMove: false,
+
+               cellEditing: function cellEditing() {},
+
+               cellEdited: function cellEdited() {},
+
+               cellEditCancelled: function cellEditCancelled() {},
+
+               //column callbacks
+
+               columnMoved: false,
+
+               columnResized: function columnResized() {},
+
+               columnTitleChanged: function columnTitleChanged() {},
+
+               columnVisibilityChanged: function columnVisibilityChanged() {},
+
+               //HTML iport callbacks
+
+               htmlImporting: function htmlImporting() {},
+
+               htmlImported: function htmlImported() {},
+
+               //data callbacks
+
+               dataLoading: function dataLoading() {},
+
+               dataLoaded: function dataLoaded() {},
+
+               dataEdited: function dataEdited() {},
+
+               //ajax callbacks
+
+               ajaxRequesting: function ajaxRequesting() {},
+
+               ajaxResponse: false,
+
+               ajaxError: function ajaxError() {},
+
+               //filtering callbacks
+
+               dataFiltering: false,
+
+               dataFiltered: false,
+
+               //sorting callbacks
+
+               dataSorting: function dataSorting() {},
+
+               dataSorted: function dataSorted() {},
+
+               //grouping callbacks
+
+               groupToggleElement: "arrow",
+
+               groupClosedShowCalcs: false,
+
+               dataGrouping: function dataGrouping() {},
+
+               dataGrouped: false,
+
+               groupVisibilityChanged: function groupVisibilityChanged() {},
+
+               groupClick: false,
+
+               groupDblClick: false,
+
+               groupContext: false,
+
+               groupTap: false,
+
+               groupDblTap: false,
+
+               groupTapHold: false,
+
+               columnCalcs: true,
+
+               //pagination callbacks
+
+               pageLoaded: function pageLoaded() {},
+
+               //localization callbacks
+
+               localized: function localized() {},
+
+               //validation has failed
+
+               validationFailed: function validationFailed() {},
+
+               //history callbacks
+
+               historyUndo: function historyUndo() {},
+
+               historyRedo: function historyRedo() {}
+
+       };
+
+       Tabulator.prototype.initializeOptions = function (options) {
+
+               //warn user if option is not available
+
+               if (options.invalidOptionWarnings !== false) {
+
+                       for (var key in options) {
+
+                               if (typeof this.defaultOptions[key] === "undefined") {
+
+                                       console.warn("Invalid table constructor option:", key);
+                               }
+                       }
+               }
+
+               //assign options to table
+
+               for (var key in this.defaultOptions) {
+
+                       if (key in options) {
+
+                               this.options[key] = options[key];
+                       } else {
+
+                               if (Array.isArray(this.defaultOptions[key])) {
+
+                                       this.options[key] = [];
+                               } else if (_typeof(this.defaultOptions[key]) === "object") {
+
+                                       this.options[key] = {};
+                               } else {
+
+                                       this.options[key] = this.defaultOptions[key];
+                               }
+                       }
+               }
+       };
+
+       Tabulator.prototype.initializeElement = function (element) {
+
+               if (typeof HTMLElement !== "undefined" && element instanceof HTMLElement) {
+
+                       this.element = element;
+
+                       return true;
+               } else if (typeof element === "string") {
+
+                       this.element = document.querySelector(element);
+
+                       if (this.element) {
+
+                               return true;
+                       } else {
+
+                               console.error("Tabulator Creation Error - no element found matching selector: ", element);
+
+                               return false;
+                       }
+               } else {
+
+                       console.error("Tabulator Creation Error - Invalid element provided:", element);
+
+                       return false;
+               }
+       };
+
+       //convert depricated functionality to new functions
+
+       Tabulator.prototype._mapDepricatedFunctionality = function () {};
+
+       Tabulator.prototype._clearSelection = function () {
+
+               this.element.classList.add("tabulator-block-select");
+
+               if (window.getSelection) {
+
+                       if (window.getSelection().empty) {
+                               // Chrome
+
+                               window.getSelection().empty();
+                       } else if (window.getSelection().removeAllRanges) {
+                               // Firefox
+
+                               window.getSelection().removeAllRanges();
+                       }
+               } else if (document.selection) {
+                       // IE?
+
+                       document.selection.empty();
+               }
+
+               this.element.classList.remove("tabulator-block-select");
+       };
+
+       //concreate table
+
+       Tabulator.prototype._create = function () {
+
+               this._clearObjectPointers();
+
+               this._mapDepricatedFunctionality();
+
+               this.bindModules();
+
+               if (this.element.tagName === "TABLE") {
+
+                       if (this.modExists("htmlTableImport", true)) {
+
+                               this.modules.htmlTableImport.parseTable();
+                       }
+               }
+
+               this.columnManager = new ColumnManager(this);
+
+               this.rowManager = new RowManager(this);
+
+               this.footerManager = new FooterManager(this);
+
+               this.columnManager.setRowManager(this.rowManager);
+
+               this.rowManager.setColumnManager(this.columnManager);
+
+               this._buildElement();
+
+               this._loadInitialData();
+       };
+
+       //clear pointers to objects in default config object
+
+       Tabulator.prototype._clearObjectPointers = function () {
+
+               this.options.columns = this.options.columns.slice(0);
+
+               if (!this.options.reactiveData) {
+
+                       this.options.data = this.options.data.slice(0);
+               }
+       };
+
+       //build tabulator element
+
+       Tabulator.prototype._buildElement = function () {
+               var _this9 = this;
+
+               var element = this.element,
+                   mod = this.modules,
+                   options = this.options;
+
+               options.tableBuilding.call(this);
+
+               element.classList.add("tabulator");
+
+               element.setAttribute("role", "grid");
+
+               //empty element
+
+               while (element.firstChild) {
+                       element.removeChild(element.firstChild);
+               } //set table height
+
+               if (options.height) {
+
+                       options.height = isNaN(options.height) ? options.height : options.height + "px";
+
+                       element.style.height = options.height;
+               }
+
+               this.columnManager.initialize();
+
+               this.rowManager.initialize();
+
+               this._detectBrowser();
+
+               if (this.modExists("layout", true)) {
+
+                       mod.layout.initialize(options.layout);
+               }
+
+               //set localization
+
+               if (options.headerFilterPlaceholder !== false) {
+
+                       mod.localize.setHeaderFilterPlaceholder(options.headerFilterPlaceholder);
+               }
+
+               for (var locale in options.langs) {
+
+                       mod.localize.installLang(locale, options.langs[locale]);
+               }
+
+               mod.localize.setLocale(options.locale);
+
+               //configure placeholder element
+
+               if (typeof options.placeholder == "string") {
+
+                       var el = document.createElement("div");
+
+                       el.classList.add("tabulator-placeholder");
+
+                       var span = document.createElement("span");
+
+                       span.innerHTML = options.placeholder;
+
+                       el.appendChild(span);
+
+                       options.placeholder = el;
+               }
+
+               //build table elements
+
+               element.appendChild(this.columnManager.getElement());
+
+               element.appendChild(this.rowManager.getElement());
+
+               if (options.footerElement) {
+
+                       this.footerManager.activate();
+               }
+
+               if ((options.persistentLayout || options.persistentSort || options.persistentFilter) && this.modExists("persistence", true)) {
+
+                       mod.persistence.initialize(options.persistenceMode, options.persistenceID);
+               }
+
+               if (options.persistentLayout && this.modExists("persistence", true)) {
+
+                       options.columns = mod.persistence.load("columns", options.columns);
+               }
+
+               if (options.movableRows && this.modExists("moveRow")) {
+
+                       mod.moveRow.initialize();
+               }
+
+               if (options.autoColumns && this.options.data) {
+
+                       this.columnManager.generateColumnsFromRowData(this.options.data);
+               }
+
+               if (this.modExists("columnCalcs")) {
+
+                       mod.columnCalcs.initialize();
+               }
+
+               this.columnManager.setColumns(options.columns);
+
+               if (options.dataTree && this.modExists("dataTree", true)) {
+
+                       mod.dataTree.initialize();
+               }
+
+               if (this.modExists("frozenRows")) {
+
+                       this.modules.frozenRows.initialize();
+               }
+
+               if ((options.persistentSort || options.initialSort) && this.modExists("sort", true)) {
+
+                       var sorters = [];
+
+                       if (options.persistentSort && this.modExists("persistence", true)) {
+
+                               sorters = mod.persistence.load("sort");
+
+                               if (sorters === false && options.initialSort) {
+
+                                       sorters = options.initialSort;
+                               }
+                       } else if (options.initialSort) {
+
+                               sorters = options.initialSort;
+                       }
+
+                       mod.sort.setSort(sorters);
+               }
+
+               if ((options.persistentFilter || options.initialFilter) && this.modExists("filter", true)) {
+
+                       var filters = [];
+
+                       if (options.persistentFilter && this.modExists("persistence", true)) {
+
+                               filters = mod.persistence.load("filter");
+
+                               if (filters === false && options.initialFilter) {
+
+                                       filters = options.initialFilter;
+                               }
+                       } else if (options.initialFilter) {
+
+                               filters = options.initialFilter;
+                       }
+
+                       mod.filter.setFilter(filters);
+               }
+
+               if (options.initialHeaderFilter && this.modExists("filter", true)) {
+
+                       options.initialHeaderFilter.forEach(function (item) {
+
+                               var column = _this9.columnManager.findColumn(item.field);
+
+                               if (column) {
+
+                                       mod.filter.setHeaderFilterValue(column, item.value);
+                               } else {
+
+                                       console.warn("Column Filter Error - No matching column found:", item.field);
+
+                                       return false;
+                               }
+                       });
+               }
+
+               if (this.modExists("ajax")) {
+
+                       mod.ajax.initialize();
+               }
+
+               if (options.pagination && this.modExists("page", true)) {
+
+                       mod.page.initialize();
+               }
+
+               if (options.groupBy && this.modExists("groupRows", true)) {
+
+                       mod.groupRows.initialize();
+               }
+
+               if (this.modExists("keybindings")) {
+
+                       mod.keybindings.initialize();
+               }
+
+               if (this.modExists("selectRow")) {
+
+                       mod.selectRow.clearSelectionData(true);
+               }
+
+               if (options.autoResize && this.modExists("resizeTable")) {
+
+                       mod.resizeTable.initialize();
+               }
+
+               if (this.modExists("clipboard")) {
+
+                       mod.clipboard.initialize();
+               }
+
+               if (options.printAsHtml && this.modExists("print")) {
+
+                       mod.print.initialize();
+               }
+
+               options.tableBuilt.call(this);
+       };
+
+       Tabulator.prototype._loadInitialData = function () {
+
+               var self = this;
+
+               if (self.options.pagination && self.modExists("page")) {
+
+                       self.modules.page.reset(true);
+
+                       if (self.options.pagination == "local") {
+
+                               if (self.options.data.length) {
+
+                                       self.rowManager.setData(self.options.data);
+                               } else {
+
+                                       if ((self.options.ajaxURL || self.options.ajaxURLGenerator) && self.modExists("ajax")) {
+
+                                               self.modules.ajax.loadData().then(function () {}).catch(function () {});
+                                       } else {
+
+                                               self.rowManager.setData(self.options.data);
+                                       }
+                               }
+                       } else {
+
+                               if (self.options.ajaxURL) {
+
+                                       self.modules.page.setPage(1).then(function () {}).catch(function () {});
+                               } else {
+
+                                       self.rowManager.setData([]);
+                               }
+                       }
+               } else {
+
+                       if (self.options.data.length) {
+
+                               self.rowManager.setData(self.options.data);
+                       } else {
+
+                               if ((self.options.ajaxURL || self.options.ajaxURLGenerator) && self.modExists("ajax")) {
+
+                                       self.modules.ajax.loadData().then(function () {}).catch(function () {});
+                               } else {
+
+                                       self.rowManager.setData(self.options.data);
+                               }
+                       }
+               }
+       };
+
+       //deconstructor
+
+       Tabulator.prototype.destroy = function () {
+
+               var element = this.element;
+
+               Tabulator.prototype.comms.deregister(this); //deregister table from inderdevice communication
+
+
+               if (this.options.reactiveData && this.modExists("reactiveData", true)) {
+
+                       this.modules.reactiveData.unwatchData();
+               }
+
+               //clear row data
+
+               this.rowManager.rows.forEach(function (row) {
+
+                       row.wipe();
+               });
+
+               this.rowManager.rows = [];
+
+               this.rowManager.activeRows = [];
+
+               this.rowManager.displayRows = [];
+
+               //clear event bindings
+
+               if (this.options.autoResize && this.modExists("resizeTable")) {
+
+                       this.modules.resizeTable.clearBindings();
+               }
+
+               if (this.modExists("keybindings")) {
+
+                       this.modules.keybindings.clearBindings();
+               }
+
+               //clear DOM
+
+               while (element.firstChild) {
+                       element.removeChild(element.firstChild);
+               }element.classList.remove("tabulator");
+       };
+
+       Tabulator.prototype._detectBrowser = function () {
+
+               var ua = navigator.userAgent;
+
+               if (ua.indexOf("Trident") > -1) {
+
+                       this.browser = "ie";
+
+                       this.browserSlow = true;
+               } else if (ua.indexOf("Edge") > -1) {
+
+                       this.browser = "edge";
+
+                       this.browserSlow = true;
+               } else if (ua.indexOf("Firefox") > -1) {
+
+                       this.browser = "firefox";
+
+                       this.browserSlow = false;
+               } else {
+
+                       this.browser = "other";
+
+                       this.browserSlow = false;
+               }
+       };
+
+       ////////////////// Data Handling //////////////////
+
+
+       //loca data from local file
+
+       Tabulator.prototype.setDataFromLocalFile = function (extensions) {
+               var _this10 = this;
+
+               return new Promise(function (resolve, reject) {
+
+                       var input = document.createElement("input");
+
+                       input.type = "file";
+
+                       input.accept = extensions || ".json,application/json";
+
+                       input.addEventListener("change", function (e) {
+
+                               var file = input.files[0],
+                                   reader = new FileReader(),
+                                   data;
+
+                               reader.readAsText(file);
+
+                               reader.onload = function (e) {
+
+                                       try {
+
+                                               data = JSON.parse(reader.result);
+                                       } catch (e) {
+
+                                               console.warn("File Load Error - File contents is invalid JSON", e);
+
+                                               reject(e);
+
+                                               return;
+                                       }
+
+                                       _this10._setData(data).then(function (data) {
+
+                                               resolve(data);
+                                       }).catch(function (err) {
+
+                                               resolve(err);
+                                       });
+                               };
+
+                               reader.onerror = function (e) {
+
+                                       console.warn("File Load Error - Unable to read file");
+
+                                       reject();
+                               };
+                       });
+
+                       input.click();
+               });
+       };
+
+       //load data
+
+       Tabulator.prototype.setData = function (data, params, config) {
+
+               if (this.modExists("ajax")) {
+
+                       this.modules.ajax.blockActiveRequest();
+               }
+
+               return this._setData(data, params, config);
+       };
+
+       Tabulator.prototype._setData = function (data, params, config, inPosition) {
+
+               var self = this;
+
+               if (typeof data === "string") {
+
+                       if (data.indexOf("{") == 0 || data.indexOf("[") == 0) {
+
+                               //data is a json encoded string
+
+                               return self.rowManager.setData(JSON.parse(data), inPosition);
+                       } else {
+
+                               if (self.modExists("ajax", true)) {
+
+                                       if (params) {
+
+                                               self.modules.ajax.setParams(params);
+                                       }
+
+                                       if (config) {
+
+                                               self.modules.ajax.setConfig(config);
+                                       }
+
+                                       self.modules.ajax.setUrl(data);
+
+                                       if (self.options.pagination == "remote" && self.modExists("page", true)) {
+
+                                               self.modules.page.reset(true);
+
+                                               return self.modules.page.setPage(1);
+                                       } else {
+
+                                               //assume data is url, make ajax call to url to get data
+
+                                               return self.modules.ajax.loadData(inPosition);
+                                       }
+                               }
+                       }
+               } else {
+
+                       if (data) {
+
+                               //asume data is already an object
+
+                               return self.rowManager.setData(data, inPosition);
+                       } else {
+
+                               //no data provided, check if ajaxURL is present;
+
+                               if (self.modExists("ajax") && (self.modules.ajax.getUrl || self.options.ajaxURLGenerator)) {
+
+                                       if (self.options.pagination == "remote" && self.modExists("page", true)) {
+
+                                               self.modules.page.reset(true);
+
+                                               return self.modules.page.setPage(1);
+                                       } else {
+
+                                               return self.modules.ajax.loadData(inPosition);
+                                       }
+                               } else {
+
+                                       //empty data
+
+                                       return self.rowManager.setData([], inPosition);
+                               }
+                       }
+               }
+       };
+
+       //clear data
+
+       Tabulator.prototype.clearData = function () {
+
+               if (this.modExists("ajax")) {
+
+                       this.modules.ajax.blockActiveRequest();
+               }
+
+               this.rowManager.clearData();
+       };
+
+       //get table data array
+
+       Tabulator.prototype.getData = function (active) {
+
+               return this.rowManager.getData(active);
+       };
+
+       //get table data array count
+
+       Tabulator.prototype.getDataCount = function (active) {
+
+               return this.rowManager.getDataCount(active);
+       };
+
+       //search for specific row components
+
+       Tabulator.prototype.searchRows = function (field, type, value) {
+
+               if (this.modExists("filter", true)) {
+
+                       return this.modules.filter.search("rows", field, type, value);
+               }
+       };
+
+       //search for specific data
+
+       Tabulator.prototype.searchData = function (field, type, value) {
+
+               if (this.modExists("filter", true)) {
+
+                       return this.modules.filter.search("data", field, type, value);
+               }
+       };
+
+       //get table html
+
+       Tabulator.prototype.getHtml = function (visible, style, config) {
+
+               if (this.modExists("htmlTableExport", true)) {
+
+                       return this.modules.htmlTableExport.getHtml(visible, style, config);
+               }
+       };
+
+       //get print html
+
+       Tabulator.prototype.print = function (visible, style, config) {
+
+               if (this.modExists("print", true)) {
+
+                       return this.modules.print.printFullscreen(visible, style, config);
+               }
+       };
+
+       //retrieve Ajax URL
+
+       Tabulator.prototype.getAjaxUrl = function () {
+
+               if (this.modExists("ajax", true)) {
+
+                       return this.modules.ajax.getUrl();
+               }
+       };
+
+       //replace data, keeping table in position with same sort
+
+       Tabulator.prototype.replaceData = function (data, params, config) {
+
+               if (this.modExists("ajax")) {
+
+                       this.modules.ajax.blockActiveRequest();
+               }
+
+               return this._setData(data, params, config, true);
+       };
+
+       //update table data
+
+       Tabulator.prototype.updateData = function (data) {
+               var _this11 = this;
+
+               var self = this;
+
+               var responses = 0;
+
+               return new Promise(function (resolve, reject) {
+
+                       if (_this11.modExists("ajax")) {
+
+                               _this11.modules.ajax.blockActiveRequest();
+                       }
+
+                       if (typeof data === "string") {
+
+                               data = JSON.parse(data);
+                       }
+
+                       if (data) {
+
+                               data.forEach(function (item) {
+
+                                       var row = self.rowManager.findRow(item[self.options.index]);
+
+                                       if (row) {
+
+                                               responses++;
+
+                                               row.updateData(item).then(function () {
+
+                                                       responses--;
+
+                                                       if (!responses) {
+
+                                                               resolve();
+                                                       }
+                                               });
+                                       }
+                               });
+                       } else {
+
+                               console.warn("Update Error - No data provided");
+
+                               reject("Update Error - No data provided");
+                       }
+               });
+       };
+
+       Tabulator.prototype.addData = function (data, pos, index) {
+               var _this12 = this;
+
+               return new Promise(function (resolve, reject) {
+
+                       if (_this12.modExists("ajax")) {
+
+                               _this12.modules.ajax.blockActiveRequest();
+                       }
+
+                       if (typeof data === "string") {
+
+                               data = JSON.parse(data);
+                       }
+
+                       if (data) {
+
+                               _this12.rowManager.addRows(data, pos, index).then(function (rows) {
+
+                                       var output = [];
+
+                                       rows.forEach(function (row) {
+
+                                               output.push(row.getComponent());
+                                       });
+
+                                       resolve(output);
+                               });
+                       } else {
+
+                               console.warn("Update Error - No data provided");
+
+                               reject("Update Error - No data provided");
+                       }
+               });
+       };
+
+       //update table data
+
+       Tabulator.prototype.updateOrAddData = function (data) {
+               var _this13 = this;
+
+               var self = this,
+                   rows = [],
+                   responses = 0;
+
+               return new Promise(function (resolve, reject) {
+
+                       if (_this13.modExists("ajax")) {
+
+                               _this13.modules.ajax.blockActiveRequest();
+                       }
+
+                       if (typeof data === "string") {
+
+                               data = JSON.parse(data);
+                       }
+
+                       if (data) {
+
+                               data.forEach(function (item) {
+
+                                       var row = self.rowManager.findRow(item[self.options.index]);
+
+                                       responses++;
+
+                                       if (row) {
+
+                                               row.updateData(item).then(function () {
+
+                                                       responses--;
+
+                                                       rows.push(row.getComponent());
+
+                                                       if (!responses) {
+
+                                                               resolve(rows);
+                                                       }
+                                               });
+                                       } else {
+
+                                               self.rowManager.addRows(item).then(function (newRows) {
+
+                                                       responses--;
+
+                                                       rows.push(newRows[0].getComponent());
+
+                                                       if (!responses) {
+
+                                                               resolve(rows);
+                                                       }
+                                               });
+                                       }
+                               });
+                       } else {
+
+                               console.warn("Update Error - No data provided");
+
+                               reject("Update Error - No data provided");
+                       }
+               });
+       };
+
+       //get row object
+
+       Tabulator.prototype.getRow = function (index) {
+
+               var row = this.rowManager.findRow(index);
+
+               if (row) {
+
+                       return row.getComponent();
+               } else {
+
+                       console.warn("Find Error - No matching row found:", index);
+
+                       return false;
+               }
+       };
+
+       //get row object
+
+       Tabulator.prototype.getRowFromPosition = function (position, active) {
+
+               var row = this.rowManager.getRowFromPosition(position, active);
+
+               if (row) {
+
+                       return row.getComponent();
+               } else {
+
+                       console.warn("Find Error - No matching row found:", position);
+
+                       return false;
+               }
+       };
+
+       //delete row from table
+
+       Tabulator.prototype.deleteRow = function (index) {
+               var _this14 = this;
+
+               return new Promise(function (resolve, reject) {
+
+                       var row = _this14.rowManager.findRow(index);
+
+                       if (row) {
+
+                               row.delete().then(function () {
+
+                                       resolve();
+                               }).catch(function (err) {
+
+                                       reject(err);
+                               });
+                       } else {
+
+                               console.warn("Delete Error - No matching row found:", index);
+
+                               reject("Delete Error - No matching row found");
+                       }
+               });
+       };
+
+       //add row to table
+
+       Tabulator.prototype.addRow = function (data, pos, index) {
+               var _this15 = this;
+
+               return new Promise(function (resolve, reject) {
+
+                       if (typeof data === "string") {
+
+                               data = JSON.parse(data);
+                       }
+
+                       _this15.rowManager.addRows(data, pos, index).then(function (rows) {
+
+                               //recalc column calculations if present
+
+                               if (_this15.modExists("columnCalcs")) {
+
+                                       _this15.modules.columnCalcs.recalc(_this15.rowManager.activeRows);
+                               }
+
+                               resolve(rows[0].getComponent());
+                       });
+               });
+       };
+
+       //update a row if it exitsts otherwise create it
+
+       Tabulator.prototype.updateOrAddRow = function (index, data) {
+               var _this16 = this;
+
+               return new Promise(function (resolve, reject) {
+
+                       var row = _this16.rowManager.findRow(index);
+
+                       if (typeof data === "string") {
+
+                               data = JSON.parse(data);
+                       }
+
+                       if (row) {
+
+                               row.updateData(data).then(function () {
+
+                                       //recalc column calculations if present
+
+                                       if (_this16.modExists("columnCalcs")) {
+
+                                               _this16.modules.columnCalcs.recalc(_this16.rowManager.activeRows);
+                                       }
+
+                                       resolve(row.getComponent());
+                               }).catch(function (err) {
+
+                                       reject(err);
+                               });
+                       } else {
+
+                               row = _this16.rowManager.addRows(data).then(function (rows) {
+
+                                       //recalc column calculations if present
+
+                                       if (_this16.modExists("columnCalcs")) {
+
+                                               _this16.modules.columnCalcs.recalc(_this16.rowManager.activeRows);
+                                       }
+
+                                       resolve(rows[0].getComponent());
+                               }).catch(function (err) {
+
+                                       reject(err);
+                               });
+                       }
+               });
+       };
+
+       //update row data
+
+       Tabulator.prototype.updateRow = function (index, data) {
+               var _this17 = this;
+
+               return new Promise(function (resolve, reject) {
+
+                       var row = _this17.rowManager.findRow(index);
+
+                       if (typeof data === "string") {
+
+                               data = JSON.parse(data);
+                       }
+
+                       if (row) {
+
+                               row.updateData(data).then(function () {
+
+                                       resolve(row.getComponent());
+                               }).catch(function (err) {
+
+                                       reject(err);
+                               });
+                       } else {
+
+                               console.warn("Update Error - No matching row found:", index);
+
+                               reject("Update Error - No matching row found");
+                       }
+               });
+       };
+
+       //scroll to row in DOM
+
+       Tabulator.prototype.scrollToRow = function (index, position, ifVisible) {
+               var _this18 = this;
+
+               return new Promise(function (resolve, reject) {
+
+                       var row = _this18.rowManager.findRow(index);
+
+                       if (row) {
+
+                               _this18.rowManager.scrollToRow(row, position, ifVisible).then(function () {
+
+                                       resolve();
+                               }).catch(function (err) {
+
+                                       reject(err);
+                               });
+                       } else {
+
+                               console.warn("Scroll Error - No matching row found:", index);
+
+                               reject("Scroll Error - No matching row found");
+                       }
+               });
+       };
+
+       Tabulator.prototype.moveRow = function (from, to, after) {
+
+               var fromRow = this.rowManager.findRow(from);
+
+               if (fromRow) {
+
+                       fromRow.moveToRow(to, after);
+               } else {
+
+                       console.warn("Move Error - No matching row found:", from);
+               }
+       };
+
+       Tabulator.prototype.getRows = function (active) {
+
+               return this.rowManager.getComponents(active);
+       };
+
+       //get position of row in table
+
+       Tabulator.prototype.getRowPosition = function (index, active) {
+
+               var row = this.rowManager.findRow(index);
+
+               if (row) {
+
+                       return this.rowManager.getRowPosition(row, active);
+               } else {
+
+                       console.warn("Position Error - No matching row found:", index);
+
+                       return false;
+               }
+       };
+
+       //copy table data to clipboard
+
+       Tabulator.prototype.copyToClipboard = function (selector, selectorParams, formatter, formatterParams) {
+
+               if (this.modExists("clipboard", true)) {
+
+                       this.modules.clipboard.copy(selector, selectorParams, formatter, formatterParams);
+               }
+       };
+
+       /////////////// Column Functions  ///////////////
+
+
+       Tabulator.prototype.setColumns = function (definition) {
+
+               this.columnManager.setColumns(definition);
+       };
+
+       Tabulator.prototype.getColumns = function (structured) {
+
+               return this.columnManager.getComponents(structured);
+       };
+
+       Tabulator.prototype.getColumn = function (field) {
+
+               var col = this.columnManager.findColumn(field);
+
+               if (col) {
+
+                       return col.getComponent();
+               } else {
+
+                       console.warn("Find Error - No matching column found:", field);
+
+                       return false;
+               }
+       };
+
+       Tabulator.prototype.getColumnDefinitions = function () {
+
+               return this.columnManager.getDefinitionTree();
+       };
+
+       Tabulator.prototype.getColumnLayout = function () {
+
+               if (this.modExists("persistence", true)) {
+
+                       return this.modules.persistence.parseColumns(this.columnManager.getColumns());
+               }
+       };
+
+       Tabulator.prototype.setColumnLayout = function (layout) {
+
+               if (this.modExists("persistence", true)) {
+
+                       this.columnManager.setColumns(this.modules.persistence.mergeDefinition(this.options.columns, layout));
+
+                       return true;
+               }
+
+               return false;
+       };
+
+       Tabulator.prototype.showColumn = function (field) {
+
+               var column = this.columnManager.findColumn(field);
+
+               if (column) {
+
+                       column.show();
+
+                       if (this.options.responsiveLayout && this.modExists("responsiveLayout", true)) {
+
+                               this.modules.responsiveLayout.update();
+                       }
+               } else {
+
+                       console.warn("Column Show Error - No matching column found:", field);
+
+                       return false;
+               }
+       };
+
+       Tabulator.prototype.hideColumn = function (field) {
+
+               var column = this.columnManager.findColumn(field);
+
+               if (column) {
+
+                       column.hide();
+
+                       if (this.options.responsiveLayout && this.modExists("responsiveLayout", true)) {
+
+                               this.modules.responsiveLayout.update();
+                       }
+               } else {
+
+                       console.warn("Column Hide Error - No matching column found:", field);
+
+                       return false;
+               }
+       };
+
+       Tabulator.prototype.toggleColumn = function (field) {
+
+               var column = this.columnManager.findColumn(field);
+
+               if (column) {
+
+                       if (column.visible) {
+
+                               column.hide();
+                       } else {
+
+                               column.show();
+                       }
+               } else {
+
+                       console.warn("Column Visibility Toggle Error - No matching column found:", field);
+
+                       return false;
+               }
+       };
+
+       Tabulator.prototype.addColumn = function (definition, before, field) {
+
+               var column = this.columnManager.findColumn(field);
+
+               this.columnManager.addColumn(definition, before, column);
+       };
+
+       Tabulator.prototype.deleteColumn = function (field) {
+
+               var column = this.columnManager.findColumn(field);
+
+               if (column) {
+
+                       column.delete();
+               } else {
+
+                       console.warn("Column Delete Error - No matching column found:", field);
+
+                       return false;
+               }
+       };
+
+       Tabulator.prototype.moveColumn = function (from, to, after) {
+
+               var fromColumn = this.columnManager.findColumn(from);
+
+               var toColumn = this.columnManager.findColumn(to);
+
+               if (fromColumn) {
+
+                       if (toColumn) {
+
+                               this.columnManager.moveColumn(fromColumn, toColumn, after);
+                       } else {
+
+                               console.warn("Move Error - No matching column found:", toColumn);
+                       }
+               } else {
+
+                       console.warn("Move Error - No matching column found:", from);
+               }
+       };
+
+       //scroll to column in DOM
+
+       Tabulator.prototype.scrollToColumn = function (field, position, ifVisible) {
+               var _this19 = this;
+
+               return new Promise(function (resolve, reject) {
+
+                       var column = _this19.columnManager.findColumn(field);
+
+                       if (column) {
+
+                               _this19.columnManager.scrollToColumn(column, position, ifVisible).then(function () {
+
+                                       resolve();
+                               }).catch(function (err) {
+
+                                       reject(err);
+                               });
+                       } else {
+
+                               console.warn("Scroll Error - No matching column found:", field);
+
+                               reject("Scroll Error - No matching column found");
+                       }
+               });
+       };
+
+       //////////// Localization Functions  ////////////
+
+       Tabulator.prototype.setLocale = function (locale) {
+
+               this.modules.localize.setLocale(locale);
+       };
+
+       Tabulator.prototype.getLocale = function () {
+
+               return this.modules.localize.getLocale();
+       };
+
+       Tabulator.prototype.getLang = function (locale) {
+
+               return this.modules.localize.getLang(locale);
+       };
+
+       //////////// General Public Functions ////////////
+
+
+       //redraw list without updating data
+
+       Tabulator.prototype.redraw = function (force) {
+
+               this.columnManager.redraw(force);
+
+               this.rowManager.redraw(force);
+       };
+
+       Tabulator.prototype.setHeight = function (height) {
+
+               if (this.rowManager.renderMode !== "classic") {
+
+                       this.options.height = isNaN(height) ? height : height + "px";
+
+                       this.element.style.height = this.options.height;
+
+                       this.rowManager.redraw();
+               } else {
+
+                       console.warn("setHeight function is not available in classic render mode");
+               }
+       };
+
+       ///////////////////// Sorting ////////////////////
+
+
+       //trigger sort
+
+       Tabulator.prototype.setSort = function (sortList, dir) {
+
+               if (this.modExists("sort", true)) {
+
+                       this.modules.sort.setSort(sortList, dir);
+
+                       this.rowManager.sorterRefresh();
+               }
+       };
+
+       Tabulator.prototype.getSorters = function () {
+
+               if (this.modExists("sort", true)) {
+
+                       return this.modules.sort.getSort();
+               }
+       };
+
+       Tabulator.prototype.clearSort = function () {
+
+               if (this.modExists("sort", true)) {
+
+                       this.modules.sort.clear();
+
+                       this.rowManager.sorterRefresh();
+               }
+       };
+
+       ///////////////////// Filtering ////////////////////
+
+
+       //set standard filters
+
+       Tabulator.prototype.setFilter = function (field, type, value) {
+
+               if (this.modExists("filter", true)) {
+
+                       this.modules.filter.setFilter(field, type, value);
+
+                       this.rowManager.filterRefresh();
+               }
+       };
+
+       //add filter to array
+
+       Tabulator.prototype.addFilter = function (field, type, value) {
+
+               if (this.modExists("filter", true)) {
+
+                       this.modules.filter.addFilter(field, type, value);
+
+                       this.rowManager.filterRefresh();
+               }
+       };
+
+       //get all filters
+
+       Tabulator.prototype.getFilters = function (all) {
+
+               if (this.modExists("filter", true)) {
+
+                       return this.modules.filter.getFilters(all);
+               }
+       };
+
+       Tabulator.prototype.setHeaderFilterFocus = function (field) {
+
+               if (this.modExists("filter", true)) {
+
+                       var column = this.columnManager.findColumn(field);
+
+                       if (column) {
+
+                               this.modules.filter.setHeaderFilterFocus(column);
+                       } else {
+
+                               console.warn("Column Filter Focus Error - No matching column found:", field);
+
+                               return false;
+                       }
+               }
+       };
+
+       Tabulator.prototype.setHeaderFilterValue = function (field, value) {
+
+               if (this.modExists("filter", true)) {
+
+                       var column = this.columnManager.findColumn(field);
+
+                       if (column) {
+
+                               this.modules.filter.setHeaderFilterValue(column, value);
+                       } else {
+
+                               console.warn("Column Filter Error - No matching column found:", field);
+
+                               return false;
+                       }
+               }
+       };
+
+       Tabulator.prototype.getHeaderFilters = function () {
+
+               if (this.modExists("filter", true)) {
+
+                       return this.modules.filter.getHeaderFilters();
+               }
+       };
+
+       //remove filter from array
+
+       Tabulator.prototype.removeFilter = function (field, type, value) {
+
+               if (this.modExists("filter", true)) {
+
+                       this.modules.filter.removeFilter(field, type, value);
+
+                       this.rowManager.filterRefresh();
+               }
+       };
+
+       //clear filters
+
+       Tabulator.prototype.clearFilter = function (all) {
+
+               if (this.modExists("filter", true)) {
+
+                       this.modules.filter.clearFilter(all);
+
+                       this.rowManager.filterRefresh();
+               }
+       };
+
+       //clear header filters
+
+       Tabulator.prototype.clearHeaderFilter = function () {
+
+               if (this.modExists("filter", true)) {
+
+                       this.modules.filter.clearHeaderFilter();
+
+                       this.rowManager.filterRefresh();
+               }
+       };
+
+       ///////////////////// Filtering ////////////////////
+
+       Tabulator.prototype.selectRow = function (rows) {
+
+               if (this.modExists("selectRow", true)) {
+
+                       this.modules.selectRow.selectRows(rows);
+               }
+       };
+
+       Tabulator.prototype.deselectRow = function (rows) {
+
+               if (this.modExists("selectRow", true)) {
+
+                       this.modules.selectRow.deselectRows(rows);
+               }
+       };
+
+       Tabulator.prototype.toggleSelectRow = function (row) {
+
+               if (this.modExists("selectRow", true)) {
+
+                       this.modules.selectRow.toggleRow(row);
+               }
+       };
+
+       Tabulator.prototype.getSelectedRows = function () {
+
+               if (this.modExists("selectRow", true)) {
+
+                       return this.modules.selectRow.getSelectedRows();
+               }
+       };
+
+       Tabulator.prototype.getSelectedData = function () {
+
+               if (this.modExists("selectRow", true)) {
+
+                       return this.modules.selectRow.getSelectedData();
+               }
+       };
+
+       //////////// Pagination Functions  ////////////
+
+
+       Tabulator.prototype.setMaxPage = function (max) {
+
+               if (this.options.pagination && this.modExists("page")) {
+
+                       this.modules.page.setMaxPage(max);
+               } else {
+
+                       return false;
+               }
+       };
+
+       Tabulator.prototype.setPage = function (page) {
+
+               if (this.options.pagination && this.modExists("page")) {
+
+                       return this.modules.page.setPage(page);
+               } else {
+
+                       return new Promise(function (resolve, reject) {
+                               reject();
+                       });
+               }
+       };
+
+       Tabulator.prototype.setPageToRow = function (row) {
+               var _this20 = this;
+
+               return new Promise(function (resolve, reject) {
+
+                       if (_this20.options.pagination && _this20.modExists("page")) {
+
+                               row = _this20.rowManager.findRow(row);
+
+                               if (row) {
+
+                                       _this20.modules.page.setPageToRow(row).then(function () {
+
+                                               resolve();
+                                       }).catch(function () {
+
+                                               reject();
+                                       });
+                               } else {
+
+                                       reject();
+                               }
+                       } else {
+
+                               reject();
+                       }
+               });
+       };
+
+       Tabulator.prototype.setPageSize = function (size) {
+
+               if (this.options.pagination && this.modExists("page")) {
+
+                       this.modules.page.setPageSize(size);
+
+                       this.modules.page.setPage(1).then(function () {}).catch(function () {});
+               } else {
+
+                       return false;
+               }
+       };
+
+       Tabulator.prototype.getPageSize = function () {
+
+               if (this.options.pagination && this.modExists("page", true)) {
+
+                       return this.modules.page.getPageSize();
+               }
+       };
+
+       Tabulator.prototype.previousPage = function () {
+
+               if (this.options.pagination && this.modExists("page")) {
+
+                       this.modules.page.previousPage();
+               } else {
+
+                       return false;
+               }
+       };
+
+       Tabulator.prototype.nextPage = function () {
+
+               if (this.options.pagination && this.modExists("page")) {
+
+                       this.modules.page.nextPage();
+               } else {
+
+                       return false;
+               }
+       };
+
+       Tabulator.prototype.getPage = function () {
+
+               if (this.options.pagination && this.modExists("page")) {
+
+                       return this.modules.page.getPage();
+               } else {
+
+                       return false;
+               }
+       };
+
+       Tabulator.prototype.getPageMax = function () {
+
+               if (this.options.pagination && this.modExists("page")) {
+
+                       return this.modules.page.getPageMax();
+               } else {
+
+                       return false;
+               }
+       };
+
+       ///////////////// Grouping Functions ///////////////
+
+
+       Tabulator.prototype.setGroupBy = function (groups) {
+
+               if (this.modExists("groupRows", true)) {
+
+                       this.options.groupBy = groups;
+
+                       this.modules.groupRows.initialize();
+
+                       this.rowManager.refreshActiveData("display");
+               } else {
+
+                       return false;
+               }
+       };
+
+       Tabulator.prototype.setGroupStartOpen = function (values) {
+
+               if (this.modExists("groupRows", true)) {
+
+                       this.options.groupStartOpen = values;
+
+                       this.modules.groupRows.initialize();
+
+                       if (this.options.groupBy) {
+
+                               this.rowManager.refreshActiveData("group");
+                       } else {
+
+                               console.warn("Grouping Update - cant refresh view, no groups have been set");
+                       }
+               } else {
+
+                       return false;
+               }
+       };
+
+       Tabulator.prototype.setGroupHeader = function (values) {
+
+               if (this.modExists("groupRows", true)) {
+
+                       this.options.groupHeader = values;
+
+                       this.modules.groupRows.initialize();
+
+                       if (this.options.groupBy) {
+
+                               this.rowManager.refreshActiveData("group");
+                       } else {
+
+                               console.warn("Grouping Update - cant refresh view, no groups have been set");
+                       }
+               } else {
+
+                       return false;
+               }
+       };
+
+       Tabulator.prototype.getGroups = function (values) {
+
+               if (this.modExists("groupRows", true)) {
+
+                       return this.modules.groupRows.getGroups(true);
+               } else {
+
+                       return false;
+               }
+       };
+
+       // get grouped table data in the same format as getData()
+
+       Tabulator.prototype.getGroupedData = function () {
+
+               if (this.modExists("groupRows", true)) {
+
+                       return this.options.groupBy ? this.modules.groupRows.getGroupedData() : this.getData();
+               }
+       };
+
+       ///////////////// Column Calculation Functions ///////////////
+
+       Tabulator.prototype.getCalcResults = function () {
+
+               if (this.modExists("columnCalcs", true)) {
+
+                       return this.modules.columnCalcs.getResults();
+               } else {
+
+                       return false;
+               }
+       };
+
+       /////////////// Navigation Management //////////////
+
+
+       Tabulator.prototype.navigatePrev = function () {
+
+               var cell = false;
+
+               if (this.modExists("edit", true)) {
+
+                       cell = this.modules.edit.currentCell;
+
+                       if (cell) {
+
+                               return cell.nav().prev();
+                       }
+               }
+
+               return false;
+       };
+
+       Tabulator.prototype.navigateNext = function () {
+
+               var cell = false;
+
+               if (this.modExists("edit", true)) {
+
+                       cell = this.modules.edit.currentCell;
+
+                       if (cell) {
+
+                               return cell.nav().next();
+                       }
+               }
+
+               return false;
+       };
+
+       Tabulator.prototype.navigateLeft = function () {
+
+               var cell = false;
+
+               if (this.modExists("edit", true)) {
+
+                       cell = this.modules.edit.currentCell;
+
+                       if (cell) {
+
+                               e.preventDefault();
+
+                               return cell.nav().left();
+                       }
+               }
+
+               return false;
+       };
+
+       Tabulator.prototype.navigateRight = function () {
+
+               var cell = false;
+
+               if (this.modExists("edit", true)) {
+
+                       cell = this.modules.edit.currentCell;
+
+                       if (cell) {
+
+                               e.preventDefault();
+
+                               return cell.nav().right();
+                       }
+               }
+
+               return false;
+       };
+
+       Tabulator.prototype.navigateUp = function () {
+
+               var cell = false;
+
+               if (this.modExists("edit", true)) {
+
+                       cell = this.modules.edit.currentCell;
+
+                       if (cell) {
+
+                               e.preventDefault();
+
+                               return cell.nav().up();
+                       }
+               }
+
+               return false;
+       };
+
+       Tabulator.prototype.navigateDown = function () {
+
+               var cell = false;
+
+               if (this.modExists("edit", true)) {
+
+                       cell = this.modules.edit.currentCell;
+
+                       if (cell) {
+
+                               e.preventDefault();
+
+                               return cell.nav().down();
+                       }
+               }
+
+               return false;
+       };
+
+       /////////////// History Management //////////////
+
+       Tabulator.prototype.undo = function () {
+
+               if (this.options.history && this.modExists("history", true)) {
+
+                       return this.modules.history.undo();
+               } else {
+
+                       return false;
+               }
+       };
+
+       Tabulator.prototype.redo = function () {
+
+               if (this.options.history && this.modExists("history", true)) {
+
+                       return this.modules.history.redo();
+               } else {
+
+                       return false;
+               }
+       };
+
+       Tabulator.prototype.getHistoryUndoSize = function () {
+
+               if (this.options.history && this.modExists("history", true)) {
+
+                       return this.modules.history.getHistoryUndoSize();
+               } else {
+
+                       return false;
+               }
+       };
+
+       Tabulator.prototype.getHistoryRedoSize = function () {
+
+               if (this.options.history && this.modExists("history", true)) {
+
+                       return this.modules.history.getHistoryRedoSize();
+               } else {
+
+                       return false;
+               }
+       };
+
+       /////////////// Download Management //////////////
+
+
+       Tabulator.prototype.download = function (type, filename, options) {
+
+               if (this.modExists("download", true)) {
+
+                       this.modules.download.download(type, filename, options);
+               }
+       };
+
+       Tabulator.prototype.downloadToTab = function (type, filename, options) {
+
+               if (this.modExists("download", true)) {
+
+                       this.modules.download.download(type, filename, options, true);
+               }
+       };
+
+       /////////// Inter Table Communications ///////////
+
+
+       Tabulator.prototype.tableComms = function (table, module, action, data) {
+
+               this.modules.comms.receive(table, module, action, data);
+       };
+
+       ////////////// Extension Management //////////////
+
+
+       //object to hold module
+
+       Tabulator.prototype.moduleBindings = {};
+
+       //extend module
+
+       Tabulator.prototype.extendModule = function (name, property, values) {
+
+               if (Tabulator.prototype.moduleBindings[name]) {
+
+                       var source = Tabulator.prototype.moduleBindings[name].prototype[property];
+
+                       if (source) {
+
+                               if ((typeof values === 'undefined' ? 'undefined' : _typeof(values)) == "object") {
+
+                                       for (var key in values) {
+
+                                               source[key] = values[key];
+                                       }
+                               } else {
+
+                                       console.warn("Module Error - Invalid value type, it must be an object");
+                               }
+                       } else {
+
+                               console.warn("Module Error - property does not exist:", property);
+                       }
+               } else {
+
+                       console.warn("Module Error - module does not exist:", name);
+               }
+       };
+
+       //add module to tabulator
+
+       Tabulator.prototype.registerModule = function (name, module) {
+
+               var self = this;
+
+               Tabulator.prototype.moduleBindings[name] = module;
+       };
+
+       //ensure that module are bound to instantiated function
+
+       Tabulator.prototype.bindModules = function () {
+
+               this.modules = {};
+
+               for (var name in Tabulator.prototype.moduleBindings) {
+
+                       this.modules[name] = new Tabulator.prototype.moduleBindings[name](this);
+               }
+       };
+
+       //Check for module
+
+       Tabulator.prototype.modExists = function (plugin, required) {
+
+               if (this.modules[plugin]) {
+
+                       return true;
+               } else {
+
+                       if (required) {
+
+                               console.error("Tabulator Module Not Installed: " + plugin);
+                       }
+
+                       return false;
+               }
+       };
+
+       Tabulator.prototype.helpers = {
+
+               elVisible: function elVisible(el) {
+
+                       return !(el.offsetWidth <= 0 && el.offsetHeight <= 0);
+               },
+
+               elOffset: function elOffset(el) {
+
+                       var box = el.getBoundingClientRect();
+
+                       return {
+
+                               top: box.top + window.pageYOffset - document.documentElement.clientTop,
+
+                               left: box.left + window.pageXOffset - document.documentElement.clientLeft
+
+                       };
+               },
+
+               deepClone: function deepClone(obj) {
+
+                       var clone = Array.isArray(obj) ? [] : {};
+
+                       for (var i in obj) {
+
+                               if (obj[i] != null && _typeof(obj[i]) === "object") {
+
+                                       if (obj[i] instanceof Date) {
+
+                                               clone[i] = new Date(obj[i]);
+                                       } else {
+
+                                               clone[i] = this.deepClone(obj[i]);
+                                       }
+                               } else {
+
+                                       clone[i] = obj[i];
+                               }
+                       }
+
+                       return clone;
+               }
+
+       };
+
+       Tabulator.prototype.comms = {
+
+               tables: [],
+
+               register: function register(table) {
+
+                       Tabulator.prototype.comms.tables.push(table);
+               },
+
+               deregister: function deregister(table) {
+
+                       var index = Tabulator.prototype.comms.tables.indexOf(table);
+
+                       if (index > -1) {
+
+                               Tabulator.prototype.comms.tables.splice(index, 1);
+                       }
+               },
+
+               lookupTable: function lookupTable(query) {
+
+                       var results = [],
+                           matches,
+                           match;
+
+                       if (typeof query === "string") {
+
+                               matches = document.querySelectorAll(query);
+
+                               if (matches.length) {
+
+                                       for (var i = 0; i < matches.length; i++) {
+
+                                               match = Tabulator.prototype.comms.matchElement(matches[i]);
+
+                                               if (match) {
+
+                                                       results.push(match);
+                                               }
+                                       }
+                               }
+                       } else if (typeof HTMLElement !== "undefined" && query instanceof HTMLElement || query instanceof Tabulator) {
+
+                               match = Tabulator.prototype.comms.matchElement(query);
+
+                               if (match) {
+
+                                       results.push(match);
+                               }
+                       } else if (Array.isArray(query)) {
+
+                               query.forEach(function (item) {
+
+                                       results = results.concat(Tabulator.prototype.comms.lookupTable(item));
+                               });
+                       } else {
+
+                               console.warn("Table Connection Error - Invalid Selector", query);
+                       }
+
+                       return results;
+               },
+
+               matchElement: function matchElement(element) {
+
+                       return Tabulator.prototype.comms.tables.find(function (table) {
+
+                               return element instanceof Tabulator ? table === element : table.element === element;
+                       });
+               }
+
+       };
+
+       var Layout = function Layout(table) {
+
+               this.table = table;
+
+               this.mode = null;
+       };
+
+       //initialize layout system
+
+
+       Layout.prototype.initialize = function (layout) {
+
+               if (this.modes[layout]) {
+
+                       this.mode = layout;
+               } else {
+
+                       console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : " + layout);
+
+                       this.mode = 'fitData';
+               }
+
+               this.table.element.setAttribute("tabulator-layout", this.mode);
+       };
+
+       Layout.prototype.getMode = function () {
+
+               return this.mode;
+       };
+
+       //trigger table layout
+
+
+       Layout.prototype.layout = function () {
+
+               this.modes[this.mode].call(this, this.table.columnManager.columnsByIndex);
+       };
+
+       //layout render functions
+
+
+       Layout.prototype.modes = {
+
+               //resize columns to fit data the contain
+
+
+               "fitData": function fitData(columns) {
+
+                       columns.forEach(function (column) {
+
+                               column.reinitializeWidth();
+                       });
+
+                       if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+                               this.table.modules.responsiveLayout.update();
+                       }
+               },
+
+               //resize columns to fit data the contain
+
+
+               "fitDataFill": function fitDataFill(columns) {
+
+                       columns.forEach(function (column) {
+
+                               column.reinitializeWidth();
+                       });
+
+                       if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+                               this.table.modules.responsiveLayout.update();
+                       }
+               },
+
+               //resize columns to fit
+
+
+               "fitColumns": function fitColumns(columns) {
+
+                       var self = this;
+
+                       var totalWidth = self.table.element.clientWidth; //table element width
+
+
+                       var fixedWidth = 0; //total width of columns with a defined width
+
+
+                       var flexWidth = 0; //total width available to flexible columns
+
+
+                       var flexGrowUnits = 0; //total number of widthGrow blocks accross all columns
+
+
+                       var flexColWidth = 0; //desired width of flexible columns
+
+
+                       var flexColumns = []; //array of flexible width columns
+
+
+                       var fixedShrinkColumns = []; //array of fixed width columns that can shrink
+
+
+                       var flexShrinkUnits = 0; //total number of widthShrink blocks accross all columns
+
+
+                       var overflowWidth = 0; //horizontal overflow width
+
+
+                       var gapFill = 0; //number of pixels to be added to final column to close and half pixel gaps
+
+
+                       function calcWidth(width) {
+
+                               var colWidth;
+
+                               if (typeof width == "string") {
+
+                                       if (width.indexOf("%") > -1) {
+
+                                               colWidth = totalWidth / 100 * parseInt(width);
+                                       } else {
+
+                                               colWidth = parseInt(width);
+                                       }
+                               } else {
+
+                                       colWidth = width;
+                               }
+
+                               return colWidth;
+                       }
+
+                       //ensure columns resize to take up the correct amount of space
+
+
+                       function scaleColumns(columns, freeSpace, colWidth, shrinkCols) {
+
+                               var oversizeCols = [],
+                                   oversizeSpace = 0,
+                                   remainingSpace = 0,
+                                   nextColWidth = 0,
+                                   gap = 0,
+                                   changeUnits = 0,
+                                   undersizeCols = [];
+
+                               function calcGrow(col) {
+
+                                       return colWidth * (col.column.definition.widthGrow || 1);
+                               }
+
+                               function calcShrink(col) {
+
+                                       return calcWidth(col.width) - colWidth * (col.column.definition.widthShrink || 0);
+                               }
+
+                               columns.forEach(function (col, i) {
+
+                                       var width = shrinkCols ? calcShrink(col) : calcGrow(col);
+
+                                       if (col.column.minWidth >= width) {
+
+                                               oversizeCols.push(col);
+                                       } else {
+
+                                               undersizeCols.push(col);
+
+                                               changeUnits += shrinkCols ? col.column.definition.widthShrink || 1 : col.column.definition.widthGrow || 1;
+                                       }
+                               });
+
+                               if (oversizeCols.length) {
+
+                                       oversizeCols.forEach(function (col) {
+
+                                               oversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;
+
+                                               col.width = col.column.minWidth;
+                                       });
+
+                                       remainingSpace = freeSpace - oversizeSpace;
+
+                                       nextColWidth = changeUnits ? Math.floor(remainingSpace / changeUnits) : remainingSpace;
+
+                                       gap = remainingSpace - nextColWidth * changeUnits;
+
+                                       gap += scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);
+                               } else {
+
+                                       gap = changeUnits ? freeSpace - Math.floor(freeSpace / changeUnits) * changeUnits : freeSpace;
+
+                                       undersizeCols.forEach(function (column) {
+
+                                               column.width = shrinkCols ? calcShrink(column) : calcGrow(column);
+                                       });
+                               }
+
+                               return gap;
+                       }
+
+                       if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+                               this.table.modules.responsiveLayout.update();
+                       }
+
+                       //adjust for vertical scrollbar if present
+
+
+                       if (this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight) {
+
+                               totalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;
+                       }
+
+                       columns.forEach(function (column) {
+
+                               var width, minWidth, colWidth;
+
+                               if (column.visible) {
+
+                                       width = column.definition.width;
+
+                                       minWidth = parseInt(column.minWidth);
+
+                                       if (width) {
+
+                                               colWidth = calcWidth(width);
+
+                                               fixedWidth += colWidth > minWidth ? colWidth : minWidth;
+
+                                               if (column.definition.widthShrink) {
+
+                                                       fixedShrinkColumns.push({
+
+                                                               column: column,
+
+                                                               width: colWidth > minWidth ? colWidth : minWidth
+
+                                                       });
+
+                                                       flexShrinkUnits += column.definition.widthShrink;
+                                               }
+                                       } else {
+
+                                               flexColumns.push({
+
+                                                       column: column,
+
+                                                       width: 0
+
+                                               });
+
+                                               flexGrowUnits += column.definition.widthGrow || 1;
+                                       }
+                               }
+                       });
+
+                       //calculate available space
+
+
+                       flexWidth = totalWidth - fixedWidth;
+
+                       //calculate correct column size
+
+
+                       flexColWidth = Math.floor(flexWidth / flexGrowUnits);
+
+                       //generate column widths
+
+
+                       var gapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);
+
+                       //increase width of last column to account for rounding errors
+
+
+                       if (flexColumns.length && gapFill > 0) {
+
+                               flexColumns[flexColumns.length - 1].width += +gapFill;
+                       }
+
+                       //caculate space for columns to be shrunk into
+
+
+                       flexColumns.forEach(function (col) {
+
+                               flexWidth -= col.width;
+                       });
+
+                       overflowWidth = Math.abs(gapFill) + flexWidth;
+
+                       //shrink oversize columns if there is no available space
+
+
+                       if (overflowWidth > 0 && flexShrinkUnits) {
+
+                               gapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);
+                       }
+
+                       //decrease width of last column to account for rounding errors
+
+
+                       if (fixedShrinkColumns.length) {
+
+                               fixedShrinkColumns[fixedShrinkColumns.length - 1].width -= gapFill;
+                       }
+
+                       flexColumns.forEach(function (col) {
+
+                               col.column.setWidth(col.width);
+                       });
+
+                       fixedShrinkColumns.forEach(function (col) {
+
+                               col.column.setWidth(col.width);
+                       });
+               }
+
+       };
+
+       Tabulator.prototype.registerModule("layout", Layout);
+
+       var Localize = function Localize(table) {
+
+               this.table = table; //hold Tabulator object
+
+               this.locale = "default"; //current locale
+
+               this.lang = false; //current language
+
+               this.bindings = {}; //update events to call when locale is changed
+       };
+
+       //set header placehoder
+
+       Localize.prototype.setHeaderFilterPlaceholder = function (placeholder) {
+
+               this.langs.default.headerFilters.default = placeholder;
+       };
+
+       //set header filter placeholder by column
+
+       Localize.prototype.setHeaderFilterColumnPlaceholder = function (column, placeholder) {
+
+               this.langs.default.headerFilters.columns[column] = placeholder;
+
+               if (this.lang && !this.lang.headerFilters.columns[column]) {
+
+                       this.lang.headerFilters.columns[column] = placeholder;
+               }
+       };
+
+       //setup a lang description object
+
+       Localize.prototype.installLang = function (locale, lang) {
+
+               if (this.langs[locale]) {
+
+                       this._setLangProp(this.langs[locale], lang);
+               } else {
+
+                       this.langs[locale] = lang;
+               }
+       };
+
+       Localize.prototype._setLangProp = function (lang, values) {
+
+               for (var key in values) {
+
+                       if (lang[key] && _typeof(lang[key]) == "object") {
+
+                               this._setLangProp(lang[key], values[key]);
+                       } else {
+
+                               lang[key] = values[key];
+                       }
+               }
+       };
+
+       //set current locale
+
+       Localize.prototype.setLocale = function (desiredLocale) {
+
+               var self = this;
+
+               desiredLocale = desiredLocale || "default";
+
+               //fill in any matching languge values
+
+               function traverseLang(trans, path) {
+
+                       for (var prop in trans) {
+
+                               if (_typeof(trans[prop]) == "object") {
+
+                                       if (!path[prop]) {
+
+                                               path[prop] = {};
+                                       }
+
+                                       traverseLang(trans[prop], path[prop]);
+                               } else {
+
+                                       path[prop] = trans[prop];
+                               }
+                       }
+               }
+
+               //determing correct locale to load
+
+               if (desiredLocale === true && navigator.language) {
+
+                       //get local from system
+
+                       desiredLocale = navigator.language.toLowerCase();
+               }
+
+               if (desiredLocale) {
+
+                       //if locale is not set, check for matching top level locale else use default
+
+                       if (!self.langs[desiredLocale]) {
+
+                               var prefix = desiredLocale.split("-")[0];
+
+                               if (self.langs[prefix]) {
+
+                                       console.warn("Localization Error - Exact matching locale not found, using closest match: ", desiredLocale, prefix);
+
+                                       desiredLocale = prefix;
+                               } else {
+
+                                       console.warn("Localization Error - Matching locale not found, using default: ", desiredLocale);
+
+                                       desiredLocale = "default";
+                               }
+                       }
+               }
+
+               self.locale = desiredLocale;
+
+               //load default lang template
+
+               self.lang = Tabulator.prototype.helpers.deepClone(self.langs.default || {});
+
+               if (desiredLocale != "default") {
+
+                       traverseLang(self.langs[desiredLocale], self.lang);
+               }
+
+               self.table.options.localized.call(self.table, self.locale, self.lang);
+
+               self._executeBindings();
+       };
+
+       //get current locale
+
+       Localize.prototype.getLocale = function (locale) {
+
+               return self.locale;
+       };
+
+       //get lang object for given local or current if none provided
+
+       Localize.prototype.getLang = function (locale) {
+
+               return locale ? this.langs[locale] : this.lang;
+       };
+
+       //get text for current locale
+
+       Localize.prototype.getText = function (path, value) {
+
+               var path = value ? path + "|" + value : path,
+                   pathArray = path.split("|"),
+                   text = this._getLangElement(pathArray, this.locale);
+
+               // if(text === false){
+
+               //      console.warn("Localization Error - Matching localized text not found for given path: ", path);
+
+               // }
+
+
+               return text || "";
+       };
+
+       //traverse langs object and find localized copy
+
+       Localize.prototype._getLangElement = function (path, locale) {
+
+               var self = this;
+
+               var root = self.lang;
+
+               path.forEach(function (level) {
+
+                       var rootPath;
+
+                       if (root) {
+
+                               rootPath = root[level];
+
+                               if (typeof rootPath != "undefined") {
+
+                                       root = rootPath;
+                               } else {
+
+                                       root = false;
+                               }
+                       }
+               });
+
+               return root;
+       };
+
+       //set update binding
+
+       Localize.prototype.bind = function (path, callback) {
+
+               if (!this.bindings[path]) {
+
+                       this.bindings[path] = [];
+               }
+
+               this.bindings[path].push(callback);
+
+               callback(this.getText(path), this.lang);
+       };
+
+       //itterate through bindings and trigger updates
+
+       Localize.prototype._executeBindings = function () {
+
+               var self = this;
+
+               var _loop = function _loop(path) {
+
+                       self.bindings[path].forEach(function (binding) {
+
+                               binding(self.getText(path), self.lang);
+                       });
+               };
+
+               for (var path in self.bindings) {
+                       _loop(path);
+               }
+       };
+
+       //Localized text listings
+
+       Localize.prototype.langs = {
+
+               "default": { //hold default locale text
+
+                       "groups": {
+
+                               "item": "item",
+
+                               "items": "items"
+
+                       },
+
+                       "columns": {},
+
+                       "ajax": {
+
+                               "loading": "Loading",
+
+                               "error": "Error"
+
+                       },
+
+                       "pagination": {
+
+                               "page_size": "Page Size",
+
+                               "first": "First",
+
+                               "first_title": "First Page",
+
+                               "last": "Last",
+
+                               "last_title": "Last Page",
+
+                               "prev": "Prev",
+
+                               "prev_title": "Prev Page",
+
+                               "next": "Next",
+
+                               "next_title": "Next Page"
+
+                       },
+
+                       "headerFilters": {
+
+                               "default": "filter column...",
+
+                               "columns": {}
+
+                       }
+
+               }
+
+       };
+
+       Tabulator.prototype.registerModule("localize", Localize);
+
+       var Comms = function Comms(table) {
+
+               this.table = table;
+       };
+
+       Comms.prototype.getConnections = function (selectors) {
+
+               var self = this,
+                   connections = [],
+                   connection;
+
+               connection = Tabulator.prototype.comms.lookupTable(selectors);
+
+               connection.forEach(function (con) {
+
+                       if (self.table !== con) {
+
+                               connections.push(con);
+                       }
+               });
+
+               return connections;
+       };
+
+       Comms.prototype.send = function (selectors, module, action, data) {
+
+               var self = this,
+                   connections = this.getConnections(selectors);
+
+               connections.forEach(function (connection) {
+
+                       connection.tableComms(self.table.element, module, action, data);
+               });
+
+               if (!connections.length && selectors) {
+
+                       console.warn("Table Connection Error - No tables matching selector found", selectors);
+               }
+       };
+
+       Comms.prototype.receive = function (table, module, action, data) {
+
+               if (this.table.modExists(module)) {
+
+                       return this.table.modules[module].commsReceived(table, action, data);
+               } else {
+
+                       console.warn("Inter-table Comms Error - no such module:", module);
+               }
+       };
+
+       Tabulator.prototype.registerModule("comms", Comms);
+
+       var Accessor = function Accessor(table) {
+               this.table = table; //hold Tabulator object
+               this.allowedTypes = ["", "data", "download", "clipboard"]; //list of accessor types
+       };
+
+       //initialize column accessor
+       Accessor.prototype.initializeColumn = function (column) {
+               var self = this,
+                   match = false,
+                   config = {};
+
+               this.allowedTypes.forEach(function (type) {
+                       var key = "accessor" + (type.charAt(0).toUpperCase() + type.slice(1)),
+                           accessor;
+
+                       if (column.definition[key]) {
+                               accessor = self.lookupAccessor(column.definition[key]);
+
+                               if (accessor) {
+                                       match = true;
+
+                                       config[key] = {
+                                               accessor: accessor,
+                                               params: column.definition[key + "Params"] || {}
+                                       };
+                               }
+                       }
+               });
+
+               if (match) {
+                       column.modules.accessor = config;
+               }
+       }, Accessor.prototype.lookupAccessor = function (value) {
+               var accessor = false;
+
+               //set column accessor
+               switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
+                       case "string":
+                               if (this.accessors[value]) {
+                                       accessor = this.accessors[value];
+                               } else {
+                                       console.warn("Accessor Error - No such accessor found, ignoring: ", value);
+                               }
+                               break;
+
+                       case "function":
+                               accessor = value;
+                               break;
+               }
+
+               return accessor;
+       };
+
+       //apply accessor to row
+       Accessor.prototype.transformRow = function (dataIn, type) {
+               var self = this,
+                   key = "accessor" + (type.charAt(0).toUpperCase() + type.slice(1));
+
+               //clone data object with deep copy to isolate internal data from returned result
+               var data = Tabulator.prototype.helpers.deepClone(dataIn || {});
+
+               self.table.columnManager.traverse(function (column) {
+                       var value, accessor, params, component;
+
+                       if (column.modules.accessor) {
+
+                               accessor = column.modules.accessor[key] || column.modules.accessor.accessor || false;
+
+                               if (accessor) {
+                                       value = column.getFieldValue(data);
+
+                                       if (value != "undefined") {
+                                               component = column.getComponent();
+                                               params = typeof accessor.params === "function" ? accessor.params(value, data, type, component) : accessor.params;
+                                               column.setFieldValue(data, accessor.accessor(value, data, type, params, component));
+                                       }
+                               }
+                       }
+               });
+
+               return data;
+       },
+
+       //default accessors
+       Accessor.prototype.accessors = {};
+
+       Tabulator.prototype.registerModule("accessor", Accessor);
+       var Ajax = function Ajax(table) {
+
+               this.table = table; //hold Tabulator object
+               this.config = false; //hold config object for ajax request
+               this.url = ""; //request URL
+               this.urlGenerator = false;
+               this.params = false; //request parameters
+
+               this.loaderElement = this.createLoaderElement(); //loader message div
+               this.msgElement = this.createMsgElement(); //message element
+               this.loadingElement = false;
+               this.errorElement = false;
+               this.loaderPromise = false;
+
+               this.progressiveLoad = false;
+               this.loading = false;
+
+               this.requestOrder = 0; //prevent requests comming out of sequence if overridden by another load request
+       };
+
+       //initialize setup options
+       Ajax.prototype.initialize = function () {
+               var template;
+
+               this.loaderElement.appendChild(this.msgElement);
+
+               if (this.table.options.ajaxLoaderLoading) {
+                       if (typeof this.table.options.ajaxLoaderLoading == "string") {
+                               template = document.createElement('template');
+                               template.innerHTML = this.table.options.ajaxLoaderLoading.trim();
+                               this.loadingElement = template.content.firstChild;
+                       } else {
+                               this.loadingElement = this.table.options.ajaxLoaderLoading;
+                       }
+               }
+
+               this.loaderPromise = this.table.options.ajaxRequestFunc || this.defaultLoaderPromise;
+
+               this.urlGenerator = this.table.options.ajaxURLGenerator || this.defaultURLGenerator;
+
+               if (this.table.options.ajaxLoaderError) {
+                       if (typeof this.table.options.ajaxLoaderError == "string") {
+                               template = document.createElement('template');
+                               template.innerHTML = this.table.options.ajaxLoaderError.trim();
+                               this.errorElement = template.content.firstChild;
+                       } else {
+                               this.errorElement = this.table.options.ajaxLoaderError;
+                       }
+               }
+
+               if (this.table.options.ajaxParams) {
+                       this.setParams(this.table.options.ajaxParams);
+               }
+
+               if (this.table.options.ajaxConfig) {
+                       this.setConfig(this.table.options.ajaxConfig);
+               }
+
+               if (this.table.options.ajaxURL) {
+                       this.setUrl(this.table.options.ajaxURL);
+               }
+
+               if (this.table.options.ajaxProgressiveLoad) {
+                       if (this.table.options.pagination) {
+                               this.progressiveLoad = false;
+                               console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time");
+                       } else {
+                               if (this.table.modExists("page")) {
+                                       this.progressiveLoad = this.table.options.ajaxProgressiveLoad;
+                                       this.table.modules.page.initializeProgressive(this.progressiveLoad);
+                               } else {
+                                       console.error("Pagination plugin is required for progressive ajax loading");
+                               }
+                       }
+               }
+       };
+
+       Ajax.prototype.createLoaderElement = function () {
+               var el = document.createElement("div");
+               el.classList.add("tabulator-loader");
+               return el;
+       };
+
+       Ajax.prototype.createMsgElement = function () {
+               var el = document.createElement("div");
+
+               el.classList.add("tabulator-loader-msg");
+               el.setAttribute("role", "alert");
+
+               return el;
+       };
+
+       //set ajax params
+       Ajax.prototype.setParams = function (params, update) {
+               if (update) {
+                       this.params = this.params || {};
+
+                       for (var key in params) {
+                               this.params[key] = params[key];
+                       }
+               } else {
+                       this.params = params;
+               }
+       };
+
+       Ajax.prototype.getParams = function () {
+               return this.params || {};
+       };
+
+       //load config object
+       Ajax.prototype.setConfig = function (config) {
+               this._loadDefaultConfig();
+
+               if (typeof config == "string") {
+                       this.config.method = config;
+               } else {
+                       for (var key in config) {
+                               this.config[key] = config[key];
+                       }
+               }
+       };
+
+       //create config object from default
+       Ajax.prototype._loadDefaultConfig = function (force) {
+               var self = this;
+               if (!self.config || force) {
+
+                       self.config = {};
+
+                       //load base config from defaults
+                       for (var key in self.defaultConfig) {
+                               self.config[key] = self.defaultConfig[key];
+                       }
+               }
+       };
+
+       //set request url
+       Ajax.prototype.setUrl = function (url) {
+               this.url = url;
+       };
+
+       //get request url
+       Ajax.prototype.getUrl = function () {
+               return this.url;
+       };
+
+       //lstandard loading function
+       Ajax.prototype.loadData = function (inPosition) {
+               var self = this;
+
+               if (this.progressiveLoad) {
+                       return this._loadDataProgressive();
+               } else {
+                       return this._loadDataStandard(inPosition);
+               }
+       };
+
+       Ajax.prototype.nextPage = function (diff) {
+               var margin;
+
+               if (!this.loading) {
+
+                       margin = this.table.options.ajaxProgressiveLoadScrollMargin || this.table.rowManager.getElement().clientHeight * 2;
+
+                       if (diff < margin) {
+                               this.table.modules.page.nextPage().then(function () {}).catch(function () {});
+                       }
+               }
+       };
+
+       Ajax.prototype.blockActiveRequest = function () {
+               this.requestOrder++;
+       };
+
+       Ajax.prototype._loadDataProgressive = function () {
+               this.table.rowManager.setData([]);
+               return this.table.modules.page.setPage(1);
+       };
+
+       Ajax.prototype._loadDataStandard = function (inPosition) {
+               var _this21 = this;
+
+               return new Promise(function (resolve, reject) {
+                       _this21.sendRequest(inPosition).then(function (data) {
+                               _this21.table.rowManager.setData(data, inPosition).then(function () {
+                                       resolve();
+                               }).catch(function (e) {
+                                       reject(e);
+                               });
+                       }).catch(function (e) {
+                               reject(e);
+                       });
+               });
+       };
+
+       Ajax.prototype.generateParamsList = function (data, prefix) {
+               var self = this,
+                   output = [];
+
+               prefix = prefix || "";
+
+               if (Array.isArray(data)) {
+                       data.forEach(function (item, i) {
+                               output = output.concat(self.generateParamsList(item, prefix ? prefix + "[" + i + "]" : i));
+                       });
+               } else if ((typeof data === 'undefined' ? 'undefined' : _typeof(data)) === "object") {
+                       for (var key in data) {
+                               output = output.concat(self.generateParamsList(data[key], prefix ? prefix + "[" + key + "]" : key));
+                       }
+               } else {
+                       output.push({ key: prefix, value: data });
+               }
+
+               return output;
+       };
+
+       Ajax.prototype.serializeParams = function (params) {
+               var output = this.generateParamsList(params),
+                   encoded = [];
+
+               output.forEach(function (item) {
+                       encoded.push(encodeURIComponent(item.key) + "=" + encodeURIComponent(item.value));
+               });
+
+               return encoded.join("&");
+       };
+
+       //send ajax request
+       Ajax.prototype.sendRequest = function (silent) {
+               var _this22 = this;
+
+               var self = this,
+                   url = self.url,
+                   requestNo,
+                   esc,
+                   query;
+
+               self.requestOrder++;
+               requestNo = self.requestOrder;
+
+               self._loadDefaultConfig();
+
+               return new Promise(function (resolve, reject) {
+                       if (self.table.options.ajaxRequesting.call(_this22.table, self.url, self.params) !== false) {
+
+                               self.loading = true;
+
+                               if (!silent) {
+                                       self.showLoader();
+                               }
+
+                               _this22.loaderPromise(url, self.config, self.params).then(function (data) {
+                                       if (requestNo === self.requestOrder) {
+                                               if (self.table.options.ajaxResponse) {
+                                                       data = self.table.options.ajaxResponse.call(self.table, self.url, self.params, data);
+                                               }
+                                               resolve(data);
+                                       } else {
+                                               console.warn("Ajax Response Blocked - An active ajax request was blocked by an attempt to change table data while the request was being made");
+                                       }
+
+                                       self.hideLoader();
+
+                                       self.loading = false;
+                               }).catch(function (error) {
+                                       console.error("Ajax Load Error: ", error);
+                                       self.table.options.ajaxError.call(self.table, error);
+
+                                       self.showError();
+
+                                       setTimeout(function () {
+                                               self.hideLoader();
+                                       }, 3000);
+
+                                       self.loading = false;
+
+                                       reject();
+                               });
+                       } else {
+                               reject();
+                       }
+               });
+       };
+
+       Ajax.prototype.showLoader = function () {
+               var shouldLoad = typeof this.table.options.ajaxLoader === "function" ? this.table.options.ajaxLoader() : this.table.options.ajaxLoader;
+
+               if (shouldLoad) {
+
+                       this.hideLoader();
+
+                       while (this.msgElement.firstChild) {
+                               this.msgElement.removeChild(this.msgElement.firstChild);
+                       }this.msgElement.classList.remove("tabulator-error");
+                       this.msgElement.classList.add("tabulator-loading");
+
+                       if (this.loadingElement) {
+                               this.msgElement.appendChild(this.loadingElement);
+                       } else {
+                               this.msgElement.innerHTML = this.table.modules.localize.getText("ajax|loading");
+                       }
+
+                       this.table.element.appendChild(this.loaderElement);
+               }
+       };
+
+       Ajax.prototype.showError = function () {
+               this.hideLoader();
+
+               while (this.msgElement.firstChild) {
+                       this.msgElement.removeChild(this.msgElement.firstChild);
+               }this.msgElement.classList.remove("tabulator-loading");
+               this.msgElement.classList.add("tabulator-error");
+
+               if (this.errorElement) {
+                       this.msgElement.appendChild(this.errorElement);
+               } else {
+                       this.msgElement.innerHTML = this.table.modules.localize.getText("ajax|error");
+               }
+
+               this.table.element.appendChild(this.loaderElement);
+       };
+
+       Ajax.prototype.hideLoader = function () {
+               if (this.loaderElement.parentNode) {
+                       this.loaderElement.parentNode.removeChild(this.loaderElement);
+               }
+       };
+
+       //default ajax config object
+       Ajax.prototype.defaultConfig = {
+               method: "GET"
+       };
+
+       Ajax.prototype.defaultURLGenerator = function (url, config, params) {
+
+               if (url) {
+                       if (params && Object.keys(params).length) {
+                               if (!config.method || config.method.toLowerCase() == "get") {
+                                       config.method = "get";
+                                       url += "?" + this.serializeParams(params);
+                               }
+                       }
+               }
+
+               return url;
+       };
+
+       Ajax.prototype.defaultLoaderPromise = function (url, config, params) {
+               var self = this,
+                   contentType;
+
+               return new Promise(function (resolve, reject) {
+
+                       //set url
+                       url = self.urlGenerator(url, config, params);
+
+                       //set body content if not GET request
+                       if (config.method.toUpperCase() != "GET") {
+                               contentType = _typeof(self.table.options.ajaxContentType) === "object" ? self.table.options.ajaxContentType : self.contentTypeFormatters[self.table.options.ajaxContentType];
+                               if (contentType) {
+
+                                       for (var key in contentType.headers) {
+                                               if (!config.headers) {
+                                                       config.headers = {};
+                                               }
+
+                                               if (typeof config.headers[key] === "undefined") {
+                                                       config.headers[key] = contentType.headers[key];
+                                               }
+                                       }
+
+                                       config.body = contentType.body.call(self, url, config, params);
+                               } else {
+                                       console.warn("Ajax Error - Invalid ajaxContentType value:", self.table.options.ajaxContentType);
+                               }
+                       }
+
+                       if (url) {
+
+                               //configure headers
+                               if (typeof config.headers === "undefined") {
+                                       config.headers = {};
+                               }
+
+                               if (typeof config.headers.Accept === "undefined") {
+                                       config.headers.Accept = "application/json";
+                               }
+
+                               if (typeof config.headers["X-Requested-With"] === "undefined") {
+                                       config.headers["X-Requested-With"] = "XMLHttpRequest";
+                               }
+
+                               if (typeof config.mode === "undefined") {
+                                       config.mode = "cors";
+                               }
+
+                               if (config.mode == "cors") {
+
+                                       if (typeof config.headers["Access-Control-Allow-Origin"] === "undefined") {
+                                               config.headers["Access-Control-Allow-Origin"] = window.location.origin;
+                                       }
+
+                                       if (typeof config.credentials === "undefined") {
+                                               config.credentials = 'same-origin';
+                                       }
+                               } else {
+                                       if (typeof config.credentials === "undefined") {
+                                               config.credentials = 'include';
+                                       }
+                               }
+
+                               //send request
+                               fetch(url, config).then(function (response) {
+                                       if (response.ok) {
+                                               response.json().then(function (data) {
+                                                       resolve(data);
+                                               }).catch(function (error) {
+                                                       reject(error);
+                                                       console.warn("Ajax Load Error - Invalid JSON returned", error);
+                                               });
+                                       } else {
+                                               console.error("Ajax Load Error - Connection Error: " + response.status, response.statusText);
+                                               reject(response);
+                                       }
+                               }).catch(function (error) {
+                                       console.error("Ajax Load Error - Connection Error: ", error);
+                                       reject(error);
+                               });
+                       } else {
+                               console.warn("Ajax Load Error - No URL Set");
+                               resolve([]);
+                       }
+               });
+       };
+
+       Ajax.prototype.contentTypeFormatters = {
+               "json": {
+                       headers: {
+                               'Content-Type': 'application/json'
+                       },
+                       body: function body(url, config, params) {
+                               return JSON.stringify(params);
+                       }
+               },
+               "form": {
+                       headers: {},
+                       body: function body(url, config, params) {
+                               var output = this.generateParamsList(params),
+                                   form = new FormData();
+
+                               output.forEach(function (item) {
+                                       form.append(item.key, item.value);
+                               });
+
+                               return form;
+                       }
+               }
+       };
+
+       Tabulator.prototype.registerModule("ajax", Ajax);
+
+       var ColumnCalcs = function ColumnCalcs(table) {
+               this.table = table; //hold Tabulator object
+               this.topCalcs = [];
+               this.botCalcs = [];
+               this.genColumn = false;
+               this.topElement = this.createElement();
+               this.botElement = this.createElement();
+               this.topRow = false;
+               this.botRow = false;
+               this.topInitialized = false;
+               this.botInitialized = false;
+
+               this.initialize();
+       };
+
+       ColumnCalcs.prototype.createElement = function () {
+               var el = document.createElement("div");
+               el.classList.add("tabulator-calcs-holder");
+               return el;
+       };
+
+       ColumnCalcs.prototype.initialize = function () {
+               this.genColumn = new Column({ field: "value" }, this);
+       };
+
+       //dummy functions to handle being mock column manager
+       ColumnCalcs.prototype.registerColumnField = function () {};
+
+       //initialize column calcs
+       ColumnCalcs.prototype.initializeColumn = function (column) {
+               var def = column.definition;
+
+               var config = {
+                       topCalcParams: def.topCalcParams || {},
+                       botCalcParams: def.bottomCalcParams || {}
+               };
+
+               if (def.topCalc) {
+
+                       switch (_typeof(def.topCalc)) {
+                               case "string":
+                                       if (this.calculations[def.topCalc]) {
+                                               config.topCalc = this.calculations[def.topCalc];
+                                       } else {
+                                               console.warn("Column Calc Error - No such calculation found, ignoring: ", def.topCalc);
+                                       }
+                                       break;
+
+                               case "function":
+                                       config.topCalc = def.topCalc;
+                                       break;
+
+                       }
+
+                       if (config.topCalc) {
+                               column.modules.columnCalcs = config;
+                               this.topCalcs.push(column);
+
+                               if (this.table.options.columnCalcs != "group") {
+                                       this.initializeTopRow();
+                               }
+                       }
+               }
+
+               if (def.bottomCalc) {
+                       switch (_typeof(def.bottomCalc)) {
+                               case "string":
+                                       if (this.calculations[def.bottomCalc]) {
+                                               config.botCalc = this.calculations[def.bottomCalc];
+                                       } else {
+                                               console.warn("Column Calc Error - No such calculation found, ignoring: ", def.bottomCalc);
+                                       }
+                                       break;
+
+                               case "function":
+                                       config.botCalc = def.bottomCalc;
+                                       break;
+
+                       }
+
+                       if (config.botCalc) {
+                               column.modules.columnCalcs = config;
+                               this.botCalcs.push(column);
+
+                               if (this.table.options.columnCalcs != "group") {
+                                       this.initializeBottomRow();
+                               }
+                       }
+               }
+       };
+
+       ColumnCalcs.prototype.removeCalcs = function () {
+               var changed = false;
+
+               if (this.topInitialized) {
+                       this.topInitialized = false;
+                       this.topElement.parentNode.removeChild(this.topElement);
+                       changed = true;
+               }
+
+               if (this.botInitialized) {
+                       this.botInitialized = false;
+                       this.table.footerManager.remove(this.botElement);
+                       changed = true;
+               }
+
+               if (changed) {
+                       this.table.rowManager.adjustTableSize();
+               }
+       };
+
+       ColumnCalcs.prototype.initializeTopRow = function () {
+               if (!this.topInitialized) {
+                       // this.table.columnManager.headersElement.after(this.topElement);
+                       this.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);
+                       this.topInitialized = true;
+               }
+       };
+
+       ColumnCalcs.prototype.initializeBottomRow = function () {
+               if (!this.botInitialized) {
+                       this.table.footerManager.prepend(this.botElement);
+                       this.botInitialized = true;
+               }
+       };
+
+       ColumnCalcs.prototype.scrollHorizontal = function (left) {
+               var hozAdjust = 0,
+                   scrollWidth = this.table.columnManager.getElement().scrollWidth - this.table.element.clientWidth;
+
+               if (this.botInitialized) {
+                       this.botRow.getElement().style.marginLeft = -left + "px";
+               }
+       };
+
+       ColumnCalcs.prototype.recalc = function (rows) {
+               var data, row;
+
+               if (this.topInitialized || this.botInitialized) {
+                       data = this.rowsToData(rows);
+
+                       if (this.topInitialized) {
+                               if (this.topRow) {
+                                       this.topRow.deleteCells();
+                               }
+
+                               row = this.generateRow("top", this.rowsToData(rows));
+                               this.topRow = row;
+                               while (this.topElement.firstChild) {
+                                       this.topElement.removeChild(this.topElement.firstChild);
+                               }this.topElement.appendChild(row.getElement());
+                               row.initialize(true);
+                       }
+
+                       if (this.botInitialized) {
+                               if (this.botRow) {
+                                       this.botRow.deleteCells();
+                               }
+
+                               row = this.generateRow("bottom", this.rowsToData(rows));
+                               this.botRow = row;
+                               while (this.botElement.firstChild) {
+                                       this.botElement.removeChild(this.botElement.firstChild);
+                               }this.botElement.appendChild(row.getElement());
+                               row.initialize(true);
+                       }
+
+                       this.table.rowManager.adjustTableSize();
+
+                       //set resizable handles
+                       if (this.table.modExists("frozenColumns")) {
+                               this.table.modules.frozenColumns.layout();
+                       }
+               }
+       };
+
+       ColumnCalcs.prototype.recalcRowGroup = function (row) {
+               this.recalcGroup(this.table.modules.groupRows.getRowGroup(row));
+       };
+
+       ColumnCalcs.prototype.recalcGroup = function (group) {
+               var data, rowData;
+
+               if (group) {
+                       if (group.calcs) {
+                               if (group.calcs.bottom) {
+                                       data = this.rowsToData(group.rows);
+                                       rowData = this.generateRowData("bottom", data);
+
+                                       group.calcs.bottom.updateData(rowData);
+                                       group.calcs.bottom.reinitialize();
+                               }
+
+                               if (group.calcs.top) {
+                                       data = this.rowsToData(group.rows);
+                                       rowData = this.generateRowData("top", data);
+
+                                       group.calcs.top.updateData(rowData);
+                                       group.calcs.top.reinitialize();
+                               }
+                       }
+               }
+       };
+
+       //generate top stats row
+       ColumnCalcs.prototype.generateTopRow = function (rows) {
+               return this.generateRow("top", this.rowsToData(rows));
+       };
+       //generate bottom stats row
+       ColumnCalcs.prototype.generateBottomRow = function (rows) {
+               return this.generateRow("bottom", this.rowsToData(rows));
+       };
+
+       ColumnCalcs.prototype.rowsToData = function (rows) {
+               var data = [];
+
+               rows.forEach(function (row) {
+                       data.push(row.getData());
+               });
+
+               return data;
+       };
+
+       //generate stats row
+       ColumnCalcs.prototype.generateRow = function (pos, data) {
+               var self = this,
+                   rowData = this.generateRowData(pos, data),
+                   row;
+
+               if (self.table.modExists("mutator")) {
+                       self.table.modules.mutator.disable();
+               }
+
+               row = new Row(rowData, this);
+
+               if (self.table.modExists("mutator")) {
+                       self.table.modules.mutator.enable();
+               }
+
+               row.getElement().classList.add("tabulator-calcs", "tabulator-calcs-" + pos);
+               row.type = "calc";
+
+               row.generateCells = function () {
+
+                       var cells = [];
+
+                       self.table.columnManager.columnsByIndex.forEach(function (column) {
+
+                               //set field name of mock column
+                               self.genColumn.setField(column.getField());
+                               self.genColumn.hozAlign = column.hozAlign;
+
+                               if (column.definition[pos + "CalcFormatter"] && self.table.modExists("format")) {
+
+                                       self.genColumn.modules.format = {
+                                               formatter: self.table.modules.format.getFormatter(column.definition[pos + "CalcFormatter"]),
+                                               params: column.definition[pos + "CalcFormatterParams"]
+                                       };
+                               } else {
+                                       self.genColumn.modules.format = {
+                                               formatter: self.table.modules.format.getFormatter("plaintext"),
+                                               params: {}
+                                       };
+                               }
+
+                               //ensure css class defintion is replicated to calculation cell
+                               self.genColumn.definition.cssClass = column.definition.cssClass;
+
+                               //generate cell and assign to correct column
+                               var cell = new Cell(self.genColumn, row);
+                               cell.column = column;
+                               cell.setWidth();
+
+                               column.cells.push(cell);
+                               cells.push(cell);
+
+                               if (!column.visible) {
+                                       cell.hide();
+                               }
+                       });
+
+                       this.cells = cells;
+               };
+
+               return row;
+       };
+
+       //generate stats row
+       ColumnCalcs.prototype.generateRowData = function (pos, data) {
+               var rowData = {},
+                   calcs = pos == "top" ? this.topCalcs : this.botCalcs,
+                   type = pos == "top" ? "topCalc" : "botCalc",
+                   params,
+                   paramKey;
+
+               calcs.forEach(function (column) {
+                       var values = [];
+
+                       if (column.modules.columnCalcs && column.modules.columnCalcs[type]) {
+                               data.forEach(function (item) {
+                                       values.push(column.getFieldValue(item));
+                               });
+
+                               paramKey = type + "Params";
+                               params = typeof column.modules.columnCalcs[paramKey] === "function" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey];
+
+                               column.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params));
+                       }
+               });
+
+               return rowData;
+       };
+
+       ColumnCalcs.prototype.hasTopCalcs = function () {
+               return !!this.topCalcs.length;
+       };
+
+       ColumnCalcs.prototype.hasBottomCalcs = function () {
+               return !!this.botCalcs.length;
+       };
+
+       //handle table redraw
+       ColumnCalcs.prototype.redraw = function () {
+               if (this.topRow) {
+                       this.topRow.normalizeHeight(true);
+               }
+               if (this.botRow) {
+                       this.botRow.normalizeHeight(true);
+               }
+       };
+
+       //return the calculated
+       ColumnCalcs.prototype.getResults = function () {
+               var self = this,
+                   results = {},
+                   groups;
+
+               if (this.table.options.groupBy && this.table.modExists("groupRows")) {
+                       groups = this.table.modules.groupRows.getGroups(true);
+
+                       groups.forEach(function (group) {
+                               results[group.getKey()] = self.getGroupResults(group);
+                       });
+               } else {
+                       results = {
+                               top: this.topRow ? this.topRow.getData() : {},
+                               bottom: this.botRow ? this.botRow.getData() : {}
+                       };
+               }
+
+               return results;
+       };
+
+       //get results from a group
+       ColumnCalcs.prototype.getGroupResults = function (group) {
+               var self = this,
+                   groupObj = group._getSelf(),
+                   subGroups = group.getSubGroups(),
+                   subGroupResults = {},
+                   results = {};
+
+               subGroups.forEach(function (subgroup) {
+                       subGroupResults[subgroup.getKey()] = self.getGroupResults(subgroup);
+               });
+
+               results = {
+                       top: groupObj.calcs.top ? groupObj.calcs.top.getData() : {},
+                       bottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {},
+                       groups: subGroupResults
+               };
+
+               return results;
+       };
+
+       //default calculations
+       ColumnCalcs.prototype.calculations = {
+               "avg": function avg(values, data, calcParams) {
+                       var output = 0,
+                           precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : 2;
+
+                       if (values.length) {
+                               output = values.reduce(function (sum, value) {
+                                       value = Number(value);
+                                       return sum + value;
+                               });
+
+                               output = output / values.length;
+
+                               output = precision !== false ? output.toFixed(precision) : output;
+                       }
+
+                       return parseFloat(output).toString();
+               },
+               "max": function max(values, data, calcParams) {
+                       var output = null,
+                           precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false;
+
+                       values.forEach(function (value) {
+
+                               value = Number(value);
+
+                               if (value > output || output === null) {
+                                       output = value;
+                               }
+                       });
+
+                       return output !== null ? precision !== false ? output.toFixed(precision) : output : "";
+               },
+               "min": function min(values, data, calcParams) {
+                       var output = null,
+                           precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false;
+
+                       values.forEach(function (value) {
+
+                               value = Number(value);
+
+                               if (value < output || output === null) {
+                                       output = value;
+                               }
+                       });
+
+                       return output !== null ? precision !== false ? output.toFixed(precision) : output : "";
+               },
+               "sum": function sum(values, data, calcParams) {
+                       var output = 0,
+                           precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false;
+
+                       if (values.length) {
+                               values.forEach(function (value) {
+                                       value = Number(value);
+
+                                       output += !isNaN(value) ? Number(value) : 0;
+                               });
+                       }
+
+                       return precision !== false ? output.toFixed(precision) : output;
+               },
+               "concat": function concat(values, data, calcParams) {
+                       var output = 0;
+
+                       if (values.length) {
+                               output = values.reduce(function (sum, value) {
+                                       return String(sum) + String(value);
+                               });
+                       }
+
+                       return output;
+               },
+               "count": function count(values, data, calcParams) {
+                       var output = 0;
+
+                       if (values.length) {
+                               values.forEach(function (value) {
+                                       if (value) {
+                                               output++;
+                                       }
+                               });
+                       }
+
+                       return output;
+               }
+       };
+
+       Tabulator.prototype.registerModule("columnCalcs", ColumnCalcs);
+
+       var Clipboard = function Clipboard(table) {
+               this.table = table;
+               this.mode = true;
+               this.copySelector = false;
+               this.copySelectorParams = {};
+               this.copyFormatter = false;
+               this.copyFormatterParams = {};
+               this.pasteParser = function () {};
+               this.pasteAction = function () {};
+               this.htmlElement = false;
+               this.config = {};
+
+               this.blocked = true; //block copy actions not originating from this command
+       };
+
+       Clipboard.prototype.initialize = function () {
+               var self = this;
+
+               this.mode = this.table.options.clipboard;
+
+               if (this.mode === true || this.mode === "copy") {
+                       this.table.element.addEventListener("copy", function (e) {
+                               var data;
+
+                               self.processConfig();
+
+                               if (!self.blocked) {
+                                       e.preventDefault();
+
+                                       data = self.generateContent();
+
+                                       if (window.clipboardData && window.clipboardData.setData) {
+                                               window.clipboardData.setData('Text', data);
+                                       } else if (e.clipboardData && e.clipboardData.setData) {
+                                               e.clipboardData.setData('text/plain', data);
+                                               if (self.htmlElement) {
+                                                       e.clipboardData.setData('text/html', self.htmlElement.outerHTML);
+                                               }
+                                       } else if (e.originalEvent && e.originalEvent.clipboardData.setData) {
+                                               e.originalEvent.clipboardData.setData('text/plain', data);
+                                               if (self.htmlElement) {
+                                                       e.originalEvent.clipboardData.setData('text/html', self.htmlElement.outerHTML);
+                                               }
+                                       }
+
+                                       self.table.options.clipboardCopied.call(this.table, data);
+
+                                       self.reset();
+                               }
+                       });
+               }
+
+               if (this.mode === true || this.mode === "paste") {
+                       this.table.element.addEventListener("paste", function (e) {
+                               self.paste(e);
+                       });
+               }
+
+               this.setPasteParser(this.table.options.clipboardPasteParser);
+               this.setPasteAction(this.table.options.clipboardPasteAction);
+       };
+
+       Clipboard.prototype.processConfig = function () {
+               var config = {
+                       columnHeaders: "groups",
+                       rowGroups: true,
+                       columnCalcs: true
+               };
+
+               if (typeof this.table.options.clipboardCopyHeader !== "undefined") {
+                       config.columnHeaders = this.table.options.clipboardCopyHeader;
+                       console.warn("DEPRECATION WARNING - clipboardCopyHeader option has been deprecated, please use the columnHeaders property on the clipboardCopyConfig option");
+               }
+
+               if (this.table.options.clipboardCopyConfig) {
+                       for (var key in this.table.options.clipboardCopyConfig) {
+                               config[key] = this.table.options.clipboardCopyConfig[key];
+                       }
+               }
+
+               if (config.rowGroups && this.table.options.groupBy && this.table.modExists("groupRows")) {
+                       this.config.rowGroups = true;
+               }
+
+               if (config.columnHeaders) {
+                       if ((config.columnHeaders === "groups" || config === true) && this.table.columnManager.columns.length != this.table.columnManager.columnsByIndex.length) {
+                               this.config.columnHeaders = "groups";
+                       } else {
+                               this.config.columnHeaders = "columns";
+                       }
+               } else {
+                       this.config.columnHeaders = false;
+               }
+
+               if (config.columnCalcs && this.table.modExists("columnCalcs")) {
+                       this.config.columnCalcs = true;
+               }
+       };
+
+       Clipboard.prototype.reset = function () {
+               this.blocked = false;
+               this.originalSelectionText = "";
+       };
+
+       Clipboard.prototype.setPasteAction = function (action) {
+
+               switch (typeof action === 'undefined' ? 'undefined' : _typeof(action)) {
+                       case "string":
+                               this.pasteAction = this.pasteActions[action];
+
+                               if (!this.pasteAction) {
+                                       console.warn("Clipboard Error - No such paste action found:", action);
+                               }
+                               break;
+
+                       case "function":
+                               this.pasteAction = action;
+                               break;
+               }
+       };
+
+       Clipboard.prototype.setPasteParser = function (parser) {
+               switch (typeof parser === 'undefined' ? 'undefined' : _typeof(parser)) {
+                       case "string":
+                               this.pasteParser = this.pasteParsers[parser];
+
+                               if (!this.pasteParser) {
+                                       console.warn("Clipboard Error - No such paste parser found:", parser);
+                               }
+                               break;
+
+                       case "function":
+                               this.pasteParser = parser;
+                               break;
+               }
+       };
+
+       Clipboard.prototype.paste = function (e) {
+               var data, rowData, rows;
+
+               if (this.checkPaseOrigin(e)) {
+
+                       data = this.getPasteData(e);
+
+                       rowData = this.pasteParser.call(this, data);
+
+                       if (rowData) {
+                               e.preventDefault();
+
+                               if (this.table.modExists("mutator")) {
+                                       rowData = this.mutateData(rowData);
+                               }
+
+                               rows = this.pasteAction.call(this, rowData);
+                               this.table.options.clipboardPasted.call(this.table, data, rowData, rows);
+                       } else {
+                               this.table.options.clipboardPasteError.call(this.table, data);
+                       }
+               }
+       };
+
+       Clipboard.prototype.mutateData = function (data) {
+               var self = this,
+                   output = [];
+
+               if (Array.isArray(data)) {
+                       data.forEach(function (row) {
+                               output.push(self.table.modules.mutator.transformRow(row, "clipboard"));
+                       });
+               } else {
+                       output = data;
+               }
+
+               return output;
+       };
+
+       Clipboard.prototype.checkPaseOrigin = function (e) {
+               var valid = true;
+
+               if (e.target.tagName != "DIV" || this.table.modules.edit.currentCell) {
+                       valid = false;
+               }
+
+               return valid;
+       };
+
+       Clipboard.prototype.getPasteData = function (e) {
+               var data;
+
+               if (window.clipboardData && window.clipboardData.getData) {
+                       data = window.clipboardData.getData('Text');
+               } else if (e.clipboardData && e.clipboardData.getData) {
+                       data = e.clipboardData.getData('text/plain');
+               } else if (e.originalEvent && e.originalEvent.clipboardData.getData) {
+                       data = e.originalEvent.clipboardData.getData('text/plain');
+               }
+
+               return data;
+       };
+
+       Clipboard.prototype.copy = function (selector, selectorParams, formatter, formatterParams, internal) {
+               var range, sel, textRange;
+               this.blocked = false;
+
+               if (this.mode === true || this.mode === "copy") {
+
+                       if (typeof window.getSelection != "undefined" && typeof document.createRange != "undefined") {
+                               range = document.createRange();
+                               range.selectNodeContents(this.table.element);
+                               sel = window.getSelection();
+
+                               if (sel.toString() && internal) {
+                                       selector = "userSelection";
+                                       formatter = "raw";
+                                       selectorParams = sel.toString();
+                               }
+
+                               sel.removeAllRanges();
+                               sel.addRange(range);
+                       } else if (typeof document.selection != "undefined" && typeof document.body.createTextRange != "undefined") {
+                               textRange = document.body.createTextRange();
+                               textRange.moveToElementText(this.table.element);
+                               textRange.select();
+                       }
+
+                       this.setSelector(selector);
+                       this.copySelectorParams = typeof selectorParams != "undefined" && selectorParams != null ? selectorParams : this.config.columnHeaders;
+                       this.setFormatter(formatter);
+                       this.copyFormatterParams = typeof formatterParams != "undefined" && formatterParams != null ? formatterParams : {};
+
+                       document.execCommand('copy');
+
+                       if (sel) {
+                               sel.removeAllRanges();
+                       }
+               }
+       };
+
+       Clipboard.prototype.setSelector = function (selector) {
+               selector = selector || this.table.options.clipboardCopySelector;
+
+               switch (typeof selector === 'undefined' ? 'undefined' : _typeof(selector)) {
+                       case "string":
+                               if (this.copySelectors[selector]) {
+                                       this.copySelector = this.copySelectors[selector];
+                               } else {
+                                       console.warn("Clipboard Error - No such selector found:", selector);
+                               }
+                               break;
+
+                       case "function":
+                               this.copySelector = selector;
+                               break;
+               }
+       };
+
+       Clipboard.prototype.setFormatter = function (formatter) {
+
+               formatter = formatter || this.table.options.clipboardCopyFormatter;
+
+               switch (typeof formatter === 'undefined' ? 'undefined' : _typeof(formatter)) {
+                       case "string":
+                               if (this.copyFormatters[formatter]) {
+                                       this.copyFormatter = this.copyFormatters[formatter];
+                               } else {
+                                       console.warn("Clipboard Error - No such formatter found:", formatter);
+                               }
+                               break;
+
+                       case "function":
+                               this.copyFormatter = formatter;
+                               break;
+               }
+       };
+
+       Clipboard.prototype.generateContent = function () {
+               var data;
+
+               this.htmlElement = false;
+               data = this.copySelector.call(this, this.config, this.copySelectorParams);
+
+               return this.copyFormatter.call(this, data, this.config, this.copyFormatterParams);
+       };
+
+       Clipboard.prototype.generateSimpleHeaders = function (columns) {
+               var headers = [];
+
+               columns.forEach(function (column) {
+                       headers.push(column.definition.title);
+               });
+
+               return headers;
+       };
+
+       Clipboard.prototype.generateColumnGroupHeaders = function (columns) {
+               var _this23 = this;
+
+               var output = [];
+
+               this.table.columnManager.columns.forEach(function (column) {
+                       var colData = _this23.processColumnGroup(column);
+
+                       if (colData) {
+                               output.push(colData);
+                       }
+               });
+
+               return output;
+       };
+
+       Clipboard.prototype.processColumnGroup = function (column) {
+               var _this24 = this;
+
+               var subGroups = column.columns;
+
+               var groupData = {
+                       type: "group",
+                       title: column.definition.title,
+                       column: column
+               };
+
+               if (subGroups.length) {
+                       groupData.subGroups = [];
+                       groupData.width = 0;
+
+                       subGroups.forEach(function (subGroup) {
+                               var subGroupData = _this24.processColumnGroup(subGroup);
+
+                               if (subGroupData) {
+                                       groupData.width += subGroupData.width;
+                                       groupData.subGroups.push(subGroupData);
+                               }
+                       });
+
+                       if (!groupData.width) {
+                               return false;
+                       }
+               } else {
+                       if (column.field && (column.definition.clipboard || column.visible && column.definition.clipboard !== false)) {
+                               groupData.width = 1;
+                       } else {
+                               return false;
+                       }
+               }
+
+               return groupData;
+       };
+
+       Clipboard.prototype.groupHeadersToRows = function (columns) {
+
+               var headers = [];
+
+               function parseColumnGroup(column, level) {
+
+                       if (typeof headers[level] === "undefined") {
+                               headers[level] = [];
+                       }
+
+                       headers[level].push(column.title);
+
+                       if (column.subGroups) {
+                               column.subGroups.forEach(function (subGroup) {
+                                       parseColumnGroup(subGroup, level + 1);
+                               });
+                       } else {
+                               padColumnheaders();
+                       }
+               }
+
+               function padColumnheaders() {
+                       var max = 0;
+
+                       headers.forEach(function (title) {
+                               var len = title.length;
+                               if (len > max) {
+                                       max = len;
+                               }
+                       });
+
+                       headers.forEach(function (title) {
+                               var len = title.length;
+                               if (len < max) {
+                                       for (var i = len; i < max; i++) {
+                                               title.push("");
+                                       }
+                               }
+                       });
+               }
+
+               columns.forEach(function (column) {
+                       parseColumnGroup(column, 0);
+               });
+
+               return headers;
+       };
+
+       Clipboard.prototype.rowsToData = function (rows, columns, config, params) {
+               var data = [];
+
+               rows.forEach(function (row) {
+                       var rowArray = [],
+                           rowData = row instanceof RowComponent ? row.getData("clipboard") : row;
+
+                       columns.forEach(function (column) {
+                               var value = column.getFieldValue(rowData);
+
+                               switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
+                                       case "object":
+                                               value = JSON.stringify(value);
+                                               break;
+
+                                       case "undefined":
+                                       case "null":
+                                               value = "";
+                                               break;
+
+                                       default:
+                                               value = value;
+                               }
+
+                               rowArray.push(value);
+                       });
+
+                       data.push(rowArray);
+               });
+
+               return data;
+       };
+
+       Clipboard.prototype.buildComplexRows = function (config) {
+               var _this25 = this;
+
+               var output = [],
+                   groups = this.table.modules.groupRows.getGroups();
+
+               groups.forEach(function (group) {
+                       output.push(_this25.processGroupData(group));
+               });
+
+               return output;
+       };
+
+       Clipboard.prototype.processGroupData = function (group) {
+               var _this26 = this;
+
+               var subGroups = group.getSubGroups();
+
+               var groupData = {
+                       type: "group",
+                       key: group.key
+               };
+
+               if (subGroups.length) {
+                       groupData.subGroups = [];
+
+                       subGroups.forEach(function (subGroup) {
+                               groupData.subGroups.push(_this26.processGroupData(subGroup));
+                       });
+               } else {
+                       groupData.rows = group.getRows(true);
+               }
+
+               return groupData;
+       };
+
+       Clipboard.prototype.getCalcRow = function (calcs, columns, selector, pos) {
+               var calcData = calcs[selector];
+
+               if (calcData) {
+                       if (pos) {
+                               calcData = calcData[pos];
+                       }
+
+                       if (Object.keys(calcData).length) {
+                               return this.rowsToData([calcData], columns);
+                       }
+               }
+
+               return [];
+       };
+
+       Clipboard.prototype.buildOutput = function (rows, config, params) {
+               var _this27 = this;
+
+               var output = [],
+                   calcs,
+                   columns = [];
+
+               if (config.columnHeaders == "groups") {
+                       columns = this.generateColumnGroupHeaders(this.table.columnManager.columns);
+
+                       output = output.concat(this.groupHeadersToRows(columns));
+               } else {
+                       this.table.columnManager.columnsByIndex.forEach(function (column) {
+                               if (column.definition.clipboard || column.visible && column.definition.clipboard !== false) {
+                                       columns.push(column);
+                               }
+                       });
+
+                       output.push(this.generateSimpleHeaders(columns));
+               }
+
+               if (this.config.columnCalcs) {
+                       calcs = this.table.getCalcResults();
+               }
+
+               //generate styled content
+               if (this.table.options.clipboardCopyStyled) {
+                       this.generateHTML(rows, columns, calcs, config, params);
+               }
+
+               //generate unstyled content
+               if (config.rowGroups) {
+                       rows.forEach(function (row) {
+                               output = output.concat(_this27.parseRowGroupData(row, columns, config, params, calcs || {}));
+                       });
+               } else {
+                       if (config.columnCalcs) {
+                               output = output.concat(this.getCalcRow(calcs, columns, "top"));
+                       }
+
+                       output = output.concat(this.rowsToData(rows, columns, config, params));
+
+                       if (config.columnCalcs) {
+                               output = output.concat(this.getCalcRow(calcs, columns, "bottom"));
+                       }
+               }
+
+               return output;
+       };
+
+       Clipboard.prototype.parseRowGroupData = function (group, columns, config, params, calcObj) {
+               var _this28 = this;
+
+               var groupData = [];
+
+               groupData.push([group.key]);
+
+               if (group.subGroups) {
+                       group.subGroups.forEach(function (subGroup) {
+                               groupData = groupData.concat(_this28.parseRowGroupData(subGroup, config, params, calcObj[group.key] ? calcObj[group.key].groups || {} : {}));
+                       });
+               } else {
+                       if (config.columnCalcs) {
+                               groupData = groupData.concat(this.getCalcRow(calcObj, columns, group.key, "top"));
+                       }
+
+                       groupData = groupData.concat(this.rowsToData(group.rows, columns, config, params));
+
+                       if (config.columnCalcs) {
+                               groupData = groupData.concat(this.getCalcRow(calcObj, columns, group.key, "bottom"));
+                       }
+               }
+
+               return groupData;
+       };
+
+       Clipboard.prototype.generateHTML = function (rows, columns, calcs, config, params) {
+               var self = this,
+                   data = [],
+                   headers = [],
+                   body,
+                   oddRow,
+                   evenRow,
+                   calcRow,
+                   firstRow,
+                   firstCell,
+                   firstGroup,
+                   lastCell,
+                   styleCells;
+
+               //create table element
+               this.htmlElement = document.createElement("table");
+               self.mapElementStyles(this.table.element, this.htmlElement, ["border-top", "border-left", "border-right", "border-bottom"]);
+
+               function generateSimpleHeaders() {
+                       var headerEl = document.createElement("tr");
+
+                       columns.forEach(function (column) {
+                               var columnEl = document.createElement("th");
+                               columnEl.innerHTML = column.definition.title;
+
+                               self.mapElementStyles(column.getElement(), columnEl, ["border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
+
+                               headerEl.appendChild(columnEl);
+                       });
+
+                       self.mapElementStyles(self.table.columnManager.getHeadersElement(), headerEl, ["border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
+
+                       self.htmlElement.appendChild(document.createElement("thead").appendChild(headerEl));
+               }
+
+               function generateHeaders(headers) {
+
+                       var headerHolderEl = document.createElement("thead");
+
+                       headers.forEach(function (columns) {
+                               var headerEl = document.createElement("tr");
+
+                               columns.forEach(function (column) {
+                                       var columnEl = document.createElement("th");
+
+                                       if (column.width > 1) {
+                                               columnEl.colSpan = column.width;
+                                       }
+
+                                       if (column.height > 1) {
+                                               columnEl.rowSpan = column.height;
+                                       }
+
+                                       columnEl.innerHTML = column.title;
+
+                                       self.mapElementStyles(column.element, columnEl, ["border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
+
+                                       headerEl.appendChild(columnEl);
+                               });
+
+                               self.mapElementStyles(self.table.columnManager.getHeadersElement(), headerEl, ["border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
+
+                               headerHolderEl.appendChild(headerEl);
+                       });
+
+                       self.htmlElement.appendChild(headerHolderEl);
+               }
+
+               function parseColumnGroup(column, level) {
+
+                       if (typeof headers[level] === "undefined") {
+                               headers[level] = [];
+                       }
+
+                       headers[level].push({
+                               title: column.title,
+                               width: column.width,
+                               height: 1,
+                               children: !!column.subGroups,
+                               element: column.column.getElement()
+                       });
+
+                       if (column.subGroups) {
+                               column.subGroups.forEach(function (subGroup) {
+                                       parseColumnGroup(subGroup, level + 1);
+                               });
+                       }
+               }
+
+               function padVerticalColumnheaders() {
+                       headers.forEach(function (row, index) {
+                               row.forEach(function (header) {
+                                       if (!header.children) {
+                                               header.height = headers.length - index;
+                                       }
+                               });
+                       });
+               }
+
+               function addCalcRow(calcs, selector, pos) {
+                       var calcData = calcs[selector];
+
+                       if (calcData) {
+                               if (pos) {
+                                       calcData = calcData[pos];
+                               }
+
+                               if (Object.keys(calcData).length) {
+                                       // calcRowIndexs.push(body.length);
+                                       processRows([calcData]);
+                               }
+                       }
+               }
+
+               //create headers if needed
+               if (config.columnHeaders) {
+                       if (config.columnHeaders == "groups") {
+                               columns.forEach(function (column) {
+                                       parseColumnGroup(column, 0);
+                               });
+
+                               padVerticalColumnheaders();
+                               generateHeaders(headers);
+                       } else {
+                               generateSimpleHeaders();
+                       }
+               }
+
+               // columns = this.table.columnManager.columnsByIndex;
+
+               //create table body
+               body = document.createElement("tbody");
+
+               //lookup row styles
+               if (window.getComputedStyle) {
+                       oddRow = this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)");
+                       evenRow = this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)");
+                       calcRow = this.table.element.querySelector(".tabulator-row.tabulator-calcs");
+                       firstRow = this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)");
+                       firstGroup = this.table.element.getElementsByClassName("tabulator-group")[0];
+
+                       if (firstRow) {
+                               styleCells = firstRow.getElementsByClassName("tabulator-cell");
+                               firstCell = styleCells[0];
+                               lastCell = styleCells[styleCells.length - 1];
+                       }
+               }
+
+               function processRows(rowArray) {
+                       //add rows to table
+                       rowArray.forEach(function (row, i) {
+                               var rowEl = document.createElement("tr"),
+                                   styleRow = firstRow,
+                                   isCalc = false,
+                                   rowData;
+
+                               if (row instanceof RowComponent) {
+                                       rowData = row.getData("clipboard");
+                               } else {
+                                       rowData = row;
+                                       isCalc = true;
+                               }
+
+                               columns.forEach(function (column, j) {
+                                       var cellEl = document.createElement("td"),
+                                           value = column.getFieldValue(rowData);
+
+                                       switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
+                                               case "object":
+                                                       value = JSON.stringify(value);
+                                                       break;
+
+                                               case "undefined":
+                                               case "null":
+                                                       value = "";
+                                                       break;
+
+                                               default:
+                                                       value = value;
+                                       }
+
+                                       cellEl.innerHTML = value;
+
+                                       if (column.definition.align) {
+                                               cellEl.style.textAlign = column.definition.align;
+                                       }
+
+                                       if (j < columns.length - 1) {
+                                               if (firstCell) {
+                                                       self.mapElementStyles(firstCell, cellEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size"]);
+                                               }
+                                       } else {
+                                               if (firstCell) {
+                                                       self.mapElementStyles(firstCell, cellEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size"]);
+                                               }
+                                       }
+
+                                       rowEl.appendChild(cellEl);
+                               });
+
+                               if (isCalc) {
+                                       styleRow = calcRow;
+                               } else {
+                                       if (!(i % 2) && oddRow) {
+                                               styleRow = oddRow;
+                                       }
+
+                                       if (i % 2 && evenRow) {
+                                               styleRow = evenRow;
+                                       }
+                               }
+
+                               if (styleRow) {
+                                       self.mapElementStyles(styleRow, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]);
+                               }
+
+                               body.appendChild(rowEl);
+                       });
+               }
+
+               function processGroup(group, calcObj) {
+                       var groupEl = document.createElement("tr"),
+                           groupCellEl = document.createElement("td");
+
+                       groupCellEl.colSpan = columns.length;
+
+                       groupCellEl.innerHTML = group.key;
+
+                       groupEl.appendChild(groupCellEl);
+                       body.appendChild(groupEl);
+
+                       self.mapElementStyles(firstGroup, groupEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]);
+
+                       if (group.subGroups) {
+                               group.subGroups.forEach(function (subGroup) {
+                                       processGroup(subGroup, calcObj[group.key] ? calcObj[group.key].groups || {} : {});
+                               });
+                       } else {
+                               if (config.columnCalcs) {
+                                       addCalcRow(calcObj, group.key, "top");
+                               }
+
+                               processRows(group.rows);
+
+                               if (config.columnCalcs) {
+                                       addCalcRow(calcObj, group.key, "bottom");
+                               }
+                       }
+               }
+
+               if (config.rowGroups) {
+                       rows.forEach(function (group) {
+                               processGroup(group, calcs || {});
+                       });
+               } else {
+                       if (config.columnCalcs) {
+                               addCalcRow(calcs, "top");
+                       }
+
+                       processRows(rows);
+
+                       if (config.columnCalcs) {
+                               addCalcRow(calcs, "bottom");
+                       }
+               }
+
+               this.htmlElement.appendChild(body);
+       };
+
+       Clipboard.prototype.mapElementStyles = function (from, to, props) {
+
+               var lookup = {
+                       "background-color": "backgroundColor",
+                       "color": "fontColor",
+                       "font-weight": "fontWeight",
+                       "font-family": "fontFamily",
+                       "font-size": "fontSize",
+                       "border-top": "borderTop",
+                       "border-left": "borderLeft",
+                       "border-right": "borderRight",
+                       "border-bottom": "borderBottom"
+               };
+
+               if (window.getComputedStyle) {
+                       var fromStyle = window.getComputedStyle(from);
+
+                       props.forEach(function (prop) {
+                               to.style[lookup[prop]] = fromStyle.getPropertyValue(prop);
+                       });
+               }
+
+               // return window.getComputedStyle ? window.getComputedStyle(element, null).getPropertyValue(property) : element.style[property.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); })];
+       };
+
+       Clipboard.prototype.copySelectors = {
+               userSelection: function userSelection(config, params) {
+                       return params;
+               },
+               selected: function selected(config, params) {
+                       var rows = [];
+
+                       if (this.table.modExists("selectRow", true)) {
+                               rows = this.table.modules.selectRow.getSelectedRows();
+                       }
+
+                       if (config.rowGroups) {
+                               console.warn("Clipboard Warning - select coptSelector does not support row groups");
+                       }
+
+                       return this.buildOutput(rows, config, params);
+               },
+               table: function table(config, params) {
+                       if (config.rowGroups) {
+                               console.warn("Clipboard Warning - table coptSelector does not support row groups");
+                       }
+
+                       return this.buildOutput(this.table.rowManager.getComponents(), config, params);
+               },
+               active: function active(config, params) {
+                       var rows;
+
+                       if (config.rowGroups) {
+                               rows = this.buildComplexRows(config);
+                       } else {
+                               rows = this.table.rowManager.getComponents(true);
+                       }
+
+                       return this.buildOutput(rows, config, params);
+               }
+       };
+
+       Clipboard.prototype.copyFormatters = {
+               raw: function raw(data, params) {
+                       return data;
+               },
+               table: function table(data, params) {
+                       var output = [];
+
+                       data.forEach(function (row) {
+                               row.forEach(function (value) {
+                                       if (typeof value == "undefined") {
+                                               value = "";
+                                       }
+
+                                       value = typeof value == "undefined" || value === null ? "" : value.toString();
+
+                                       if (value.match(/\r|\n/)) {
+                                               value = value.split('"').join('""');
+                                               value = '"' + value + '"';
+                                       }
+                               });
+
+                               output.push(row.join("\t"));
+                       });
+
+                       return output.join("\n");
+               }
+       };
+
+       Clipboard.prototype.pasteParsers = {
+               table: function table(clipboard) {
+                       var data = [],
+                           success = false,
+                           headerFindSuccess = true,
+                           columns = this.table.columnManager.columns,
+                           columnMap = [],
+                           rows = [];
+
+                       //get data from clipboard into array of columns and rows.
+                       clipboard = clipboard.split("\n");
+
+                       clipboard.forEach(function (row) {
+                               data.push(row.split("\t"));
+                       });
+
+                       if (data.length && !(data.length === 1 && data[0].length < 2)) {
+                               success = true;
+
+                               //check if headers are present by title
+                               data[0].forEach(function (value) {
+                                       var column = columns.find(function (column) {
+                                               return value && column.definition.title && value.trim() && column.definition.title.trim() === value.trim();
+                                       });
+
+                                       if (column) {
+                                               columnMap.push(column);
+                                       } else {
+                                               headerFindSuccess = false;
+                                       }
+                               });
+
+                               //check if column headers are present by field
+                               if (!headerFindSuccess) {
+                                       headerFindSuccess = true;
+                                       columnMap = [];
+
+                                       data[0].forEach(function (value) {
+                                               var column = columns.find(function (column) {
+                                                       return value && column.field && value.trim() && column.field.trim() === value.trim();
+                                               });
+
+                                               if (column) {
+                                                       columnMap.push(column);
+                                               } else {
+                                                       headerFindSuccess = false;
+                                               }
+                                       });
+
+                                       if (!headerFindSuccess) {
+                                               columnMap = this.table.columnManager.columnsByIndex;
+                                       }
+                               }
+
+                               //remove header row if found
+                               if (headerFindSuccess) {
+                                       data.shift();
+                               }
+
+                               data.forEach(function (item) {
+                                       var row = {};
+
+                                       item.forEach(function (value, i) {
+                                               if (columnMap[i]) {
+                                                       row[columnMap[i].field] = value;
+                                               }
+                                       });
+
+                                       rows.push(row);
+                               });
+
+                               return rows;
+                       } else {
+                               return false;
+                       }
+               }
+       };
+
+       Clipboard.prototype.pasteActions = {
+               replace: function replace(rows) {
+                       return this.table.setData(rows);
+               },
+               update: function update(rows) {
+                       return this.table.updateOrAddData(rows);
+               },
+               insert: function insert(rows) {
+                       return this.table.addData(rows);
+               }
+       };
+
+       Tabulator.prototype.registerModule("clipboard", Clipboard);
+
+       var DataTree = function DataTree(table) {
+               this.table = table;
+               this.indent = 10;
+               this.field = "";
+               this.collapseEl = null;
+               this.expandEl = null;
+               this.branchEl = null;
+               this.elementField = false;
+
+               this.startOpen = function () {};
+
+               this.displayIndex = 0;
+       };
+
+       DataTree.prototype.initialize = function () {
+               var dummyEl = null,
+                   firstCol = this.table.columnManager.getFirstVisibileColumn(),
+                   options = this.table.options;
+
+               this.field = options.dataTreeChildField;
+               this.indent = options.dataTreeChildIndent;
+               this.elementField = options.dataTreeElementColumn || (firstCol ? firstCol.field : false);
+
+               if (options.dataTreeBranchElement) {
+
+                       if (options.dataTreeBranchElement === true) {
+                               this.branchEl = document.createElement("div");
+                               this.branchEl.classList.add("tabulator-data-tree-branch");
+                       } else {
+                               if (typeof options.dataTreeBranchElement === "string") {
+                                       dummyEl = document.createElement("div");
+                                       dummyEl.innerHTML = options.dataTreeBranchElement;
+                                       this.branchEl = dummyEl.firstChild;
+                               } else {
+                                       this.branchEl = options.dataTreeBranchElement;
+                               }
+                       }
+               }
+
+               if (options.dataTreeCollapseElement) {
+                       if (typeof options.dataTreeCollapseElement === "string") {
+                               dummyEl = document.createElement("div");
+                               dummyEl.innerHTML = options.dataTreeCollapseElement;
+                               this.collapseEl = dummyEl.firstChild;
+                       } else {
+                               this.collapseEl = options.dataTreeCollapseElement;
+                       }
+               } else {
+                       this.collapseEl = document.createElement("div");
+                       this.collapseEl.classList.add("tabulator-data-tree-control");
+                       this.collapseEl.tabIndex = 0;
+                       this.collapseEl.innerHTML = "<div class='tabulator-data-tree-control-collapse'></div>";
+               }
+
+               if (options.dataTreeExpandElement) {
+                       if (typeof options.dataTreeExpandElement === "string") {
+                               dummyEl = document.createElement("div");
+                               dummyEl.innerHTML = options.dataTreeExpandElement;
+                               this.expandEl = dummyEl.firstChild;
+                       } else {
+                               this.expandEl = options.dataTreeExpandElement;
+                       }
+               } else {
+                       this.expandEl = document.createElement("div");
+                       this.expandEl.classList.add("tabulator-data-tree-control");
+                       this.expandEl.tabIndex = 0;
+                       this.expandEl.innerHTML = "<div class='tabulator-data-tree-control-expand'></div>";
+               }
+
+               switch (_typeof(options.dataTreeStartExpanded)) {
+                       case "boolean":
+                               this.startOpen = function (row, index) {
+                                       return options.dataTreeStartExpanded;
+                               };
+                               break;
+
+                       case "function":
+                               this.startOpen = options.dataTreeStartExpanded;
+                               break;
+
+                       default:
+                               this.startOpen = function (row, index) {
+                                       return options.dataTreeStartExpanded[index];
+                               };
+                               break;
+               }
+       };
+
+       DataTree.prototype.initializeRow = function (row) {
+               var childArray = row.getData()[this.field];
+               var isArray = Array.isArray(childArray);
+
+               var children = isArray || !isArray && (typeof childArray === 'undefined' ? 'undefined' : _typeof(childArray)) === "object" && childArray !== null;
+
+               row.modules.dataTree = {
+                       index: 0,
+                       open: children ? this.startOpen(row.getComponent(), 0) : false,
+                       controlEl: false,
+                       branchEl: false,
+                       parent: false,
+                       children: children
+               };
+       };
+
+       DataTree.prototype.layoutRow = function (row) {
+               var cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0],
+                   el = cell.getElement(),
+                   config = row.modules.dataTree;
+
+               if (config.branchEl) {
+                       config.branchEl.parentNode.removeChild(config.branchEl);
+               }
+
+               this.generateControlElement(row, el);
+
+               if (config.index) {
+                       if (this.branchEl) {
+                               config.branchEl = this.branchEl.cloneNode(true);
+                               el.insertBefore(config.branchEl, el.firstChild);
+                               config.branchEl.style.marginLeft = (config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1) + config.index * this.indent + "px";
+                       } else {
+                               el.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + config.index * this.indent + "px";
+                       }
+               }
+       };
+
+       DataTree.prototype.generateControlElement = function (row, el) {
+               var _this29 = this;
+
+               var config = row.modules.dataTree,
+                   el = el || row.getCells()[0].getElement(),
+                   oldControl = config.controlEl;
+
+               if (config.children !== false) {
+
+                       if (config.open) {
+                               config.controlEl = this.collapseEl.cloneNode(true);
+                               config.controlEl.addEventListener("click", function (e) {
+                                       e.stopPropagation();
+                                       _this29.collapseRow(row);
+                               });
+                       } else {
+                               config.controlEl = this.expandEl.cloneNode(true);
+                               config.controlEl.addEventListener("click", function (e) {
+                                       e.stopPropagation();
+                                       _this29.expandRow(row);
+                               });
+                       }
+
+                       config.controlEl.addEventListener("mousedown", function (e) {
+                               e.stopPropagation();
+                       });
+
+                       if (oldControl && oldControl.parentNode === el) {
+                               oldControl.parentNode.replaceChild(config.controlEl, oldControl);
+                       } else {
+                               el.insertBefore(config.controlEl, el.firstChild);
+                       }
+               }
+       };
+
+       DataTree.prototype.setDisplayIndex = function (index) {
+               this.displayIndex = index;
+       };
+
+       DataTree.prototype.getDisplayIndex = function () {
+               return this.displayIndex;
+       };
+
+       DataTree.prototype.getRows = function (rows) {
+               var _this30 = this;
+
+               var output = [];
+
+               rows.forEach(function (row, i) {
+                       var config, children;
+
+                       output.push(row);
+
+                       if (row instanceof Row) {
+
+                               config = row.modules.dataTree.children;
+
+                               if (!config.index && config.children !== false) {
+                                       children = _this30.getChildren(row);
+
+                                       children.forEach(function (child) {
+                                               output.push(child);
+                                       });
+                               }
+                       }
+               });
+
+               return output;
+       };
+
+       DataTree.prototype.getChildren = function (row) {
+               var _this31 = this;
+
+               var config = row.modules.dataTree,
+                   children = [],
+                   output = [];
+
+               if (config.children !== false && config.open) {
+                       if (!Array.isArray(config.children)) {
+                               config.children = this.generateChildren(row);
+                       }
+
+                       if (this.table.modExists("filter")) {
+                               children = this.table.modules.filter.filter(config.children);
+                       } else {
+                               children = config.children;
+                       }
+
+                       if (this.table.modExists("sort")) {
+                               this.table.modules.sort.sort(children);
+                       }
+
+                       children.forEach(function (child) {
+                               output.push(child);
+
+                               var subChildren = _this31.getChildren(child);
+
+                               subChildren.forEach(function (sub) {
+                                       output.push(sub);
+                               });
+                       });
+               }
+
+               return output;
+       };
+
+       DataTree.prototype.generateChildren = function (row) {
+               var _this32 = this;
+
+               var children = [];
+
+               var childArray = row.getData()[this.field];
+
+               if (!Array.isArray(childArray)) {
+                       childArray = [childArray];
+               }
+
+               childArray.forEach(function (childData) {
+                       var childRow = new Row(childData || {}, _this32.table.rowManager);
+                       childRow.modules.dataTree.index = row.modules.dataTree.index + 1;
+                       childRow.modules.dataTree.parent = row;
+                       if (childRow.modules.dataTree.children) {
+                               childRow.modules.dataTree.open = _this32.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);
+                       }
+                       children.push(childRow);
+               });
+
+               return children;
+       };
+
+       DataTree.prototype.expandRow = function (row, silent) {
+               var config = row.modules.dataTree;
+
+               if (config.children !== false) {
+                       config.open = true;
+
+                       row.reinitialize();
+
+                       this.table.rowManager.refreshActiveData("tree", false, true);
+
+                       this.table.options.dataTreeRowExpanded(row.getComponent(), row.modules.dataTree.index);
+               }
+       };
+
+       DataTree.prototype.collapseRow = function (row) {
+               var config = row.modules.dataTree;
+
+               if (config.children !== false) {
+                       config.open = false;
+
+                       row.reinitialize();
+
+                       this.table.rowManager.refreshActiveData("tree", false, true);
+
+                       this.table.options.dataTreeRowCollapsed(row.getComponent(), row.modules.dataTree.index);
+               }
+       };
+
+       DataTree.prototype.toggleRow = function (row) {
+               var config = row.modules.dataTree;
+
+               if (config.children !== false) {
+                       if (config.open) {
+                               this.collapseRow(row);
+                       } else {
+                               this.expandRow(row);
+                       }
+               }
+       };
+
+       DataTree.prototype.getTreeParent = function (row) {
+               return row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false;
+       };
+
+       DataTree.prototype.getTreeChildren = function (row) {
+               var config = row.modules.dataTree,
+                   output = [];
+
+               if (config.children) {
+
+                       if (!Array.isArray(config.children)) {
+                               config.children = this.generateChildren(row);
+                       }
+
+                       config.children.forEach(function (childRow) {
+                               if (childRow instanceof Row) {
+                                       output.push(childRow.getComponent());
+                               }
+                       });
+               }
+
+               return output;
+       };
+
+       DataTree.prototype.checkForRestyle = function (cell) {
+               if (!cell.row.cells.indexOf(cell)) {
+                       if (cell.row.modules.dataTree.children !== false) {
+                               cell.row.reinitialize();
+                       }
+               }
+       };
+
+       DataTree.prototype.getChildField = function () {
+               return this.field;
+       };
+
+       DataTree.prototype.redrawNeeded = function (data) {
+               return (this.field ? typeof data[this.field] !== "undefined" : false) || (this.elementField ? typeof data[this.elementField] !== "undefined" : false);
+       };
+
+       Tabulator.prototype.registerModule("dataTree", DataTree);
+       var Download = function Download(table) {
+               this.table = table; //hold Tabulator object
+               this.fields = {}; //hold filed multi dimension arrays
+               this.columnsByIndex = []; //hold columns in their order in the table
+               this.columnsByField = {}; //hold columns with lookup by field name
+               this.config = {};
+       };
+
+       //trigger file download
+       Download.prototype.download = function (type, filename, options, interceptCallback) {
+               var self = this,
+                   downloadFunc = false;
+               this.processConfig();
+
+               function buildLink(data, mime) {
+                       if (interceptCallback) {
+                               if (interceptCallback === true) {
+                                       self.triggerDownload(data, mime, type, filename, true);
+                               } else {
+                                       interceptCallback(data);
+                               }
+                       } else {
+                               self.triggerDownload(data, mime, type, filename);
+                       }
+               }
+
+               if (typeof type == "function") {
+                       downloadFunc = type;
+               } else {
+                       if (self.downloaders[type]) {
+                               downloadFunc = self.downloaders[type];
+                       } else {
+                               console.warn("Download Error - No such download type found: ", type);
+                       }
+               }
+
+               this.processColumns();
+
+               if (downloadFunc) {
+                       downloadFunc.call(this, self.processDefinitions(), self.processData(), options || {}, buildLink, this.config);
+               }
+       };
+
+       Download.prototype.processConfig = function () {
+               var config = { //download config
+                       columnGroups: true,
+                       rowGroups: true,
+                       columnCalcs: true
+               };
+
+               if (this.table.options.downloadConfig) {
+                       for (var key in this.table.options.downloadConfig) {
+                               config[key] = this.table.options.downloadConfig[key];
+                       }
+               }
+
+               if (config.rowGroups && this.table.options.groupBy && this.table.modExists("groupRows")) {
+                       this.config.rowGroups = true;
+               }
+
+               if (config.columnGroups && this.table.columnManager.columns.length != this.table.columnManager.columnsByIndex.length) {
+                       this.config.columnGroups = true;
+               }
+
+               if (config.columnCalcs && this.table.modExists("columnCalcs")) {
+                       this.config.columnCalcs = true;
+               }
+       };
+
+       Download.prototype.processColumns = function () {
+               var self = this;
+
+               self.columnsByIndex = [];
+               self.columnsByField = {};
+
+               self.table.columnManager.columnsByIndex.forEach(function (column) {
+
+                       if (column.field && column.definition.download !== false && (column.visible || !column.visible && column.definition.download)) {
+                               self.columnsByIndex.push(column);
+                               self.columnsByField[column.field] = column;
+                       }
+               });
+       };
+
+       Download.prototype.processDefinitions = function () {
+               var self = this,
+                   processedDefinitions = [];
+
+               if (this.config.columnGroups) {
+                       self.table.columnManager.columns.forEach(function (column) {
+                               var colData = self.processColumnGroup(column);
+
+                               if (colData) {
+                                       processedDefinitions.push(colData);
+                               }
+                       });
+               } else {
+                       self.columnsByIndex.forEach(function (column) {
+                               if (column.download !== false) {
+                                       //isolate definiton from defintion object
+                                       processedDefinitions.push(self.processDefinition(column));
+                               }
+                       });
+               }
+
+               return processedDefinitions;
+       };
+
+       Download.prototype.processColumnGroup = function (column) {
+               var _this33 = this;
+
+               var subGroups = column.columns,
+                   maxDepth = 0;
+               var processedColumn = this.processDefinition(column);
+               var groupData = {
+                       type: "group",
+                       title: processedColumn.title,
+                       depth: 1
+               };
+
+               if (subGroups.length) {
+                       groupData.subGroups = [];
+                       groupData.width = 0;
+
+                       subGroups.forEach(function (subGroup) {
+                               var subGroupData = _this33.processColumnGroup(subGroup);
+
+                               if (subGroupData.depth > maxDepth) {
+                                       maxDepth = subGroupData.depth;
+                               }
+
+                               if (subGroupData) {
+                                       groupData.width += subGroupData.width;
+                                       groupData.subGroups.push(subGroupData);
+                               }
+                       });
+
+                       groupData.depth += maxDepth;
+
+                       if (!groupData.width) {
+                               return false;
+                       }
+               } else {
+                       if (column.field && column.definition.download !== false && (column.visible || !column.visible && column.definition.download)) {
+                               groupData.width = 1;
+                               groupData.definition = processedColumn;
+                       } else {
+                               return false;
+                       }
+               }
+
+               return groupData;
+       };
+
+       Download.prototype.processDefinition = function (column) {
+               var def = {};
+
+               for (var key in column.definition) {
+                       def[key] = column.definition[key];
+               }
+
+               if (typeof column.definition.downloadTitle != "undefined") {
+                       def.title = column.definition.downloadTitle;
+               }
+
+               return def;
+       };
+
+       Download.prototype.processData = function () {
+               var _this34 = this;
+
+               var self = this,
+                   data = [],
+                   groups = [],
+                   calcs = {};
+
+               if (this.config.rowGroups) {
+                       groups = this.table.modules.groupRows.getGroups();
+
+                       groups.forEach(function (group) {
+                               data.push(_this34.processGroupData(group));
+                       });
+               } else {
+                       data = self.table.rowManager.getData(true, "download");
+               }
+
+               if (this.config.columnCalcs) {
+                       calcs = this.table.getCalcResults();
+
+                       data = {
+                               calcs: calcs,
+                               data: data
+                       };
+               }
+
+               //bulk data processing
+               if (typeof self.table.options.downloadDataFormatter == "function") {
+                       data = self.table.options.downloadDataFormatter(data);
+               }
+
+               return data;
+       };
+
+       Download.prototype.processGroupData = function (group) {
+               var _this35 = this;
+
+               var subGroups = group.getSubGroups();
+
+               var groupData = {
+                       type: "group",
+                       key: group.key
+               };
+
+               if (subGroups.length) {
+                       groupData.subGroups = [];
+
+                       subGroups.forEach(function (subGroup) {
+                               groupData.subGroups.push(_this35.processGroupData(subGroup));
+                       });
+               } else {
+                       groupData.rows = group.getData(true, "download");
+               }
+
+               return groupData;
+       };
+
+       Download.prototype.triggerDownload = function (data, mime, type, filename, newTab) {
+               var element = document.createElement('a'),
+                   blob = new Blob([data], { type: mime }),
+                   filename = filename || "Tabulator." + (typeof type === "function" ? "txt" : type);
+
+               blob = this.table.options.downloadReady.call(this.table, data, blob);
+
+               if (blob) {
+
+                       if (newTab) {
+                               window.open(window.URL.createObjectURL(blob));
+                       } else {
+                               if (navigator.msSaveOrOpenBlob) {
+                                       navigator.msSaveOrOpenBlob(blob, filename);
+                               } else {
+                                       element.setAttribute('href', window.URL.createObjectURL(blob));
+
+                                       //set file title
+                                       element.setAttribute('download', filename);
+
+                                       //trigger download
+                                       element.style.display = 'none';
+                                       document.body.appendChild(element);
+                                       element.click();
+
+                                       //remove temporary link element
+                                       document.body.removeChild(element);
+                               }
+                       }
+
+                       if (this.table.options.downloadComplete) {
+                               this.table.options.downloadComplete();
+                       }
+               }
+       };
+
+       //nested field lookup
+       Download.prototype.getFieldValue = function (field, data) {
+               var column = this.columnsByField[field];
+
+               if (column) {
+                       return column.getFieldValue(data);
+               }
+
+               return false;
+       };
+
+       Download.prototype.commsReceived = function (table, action, data) {
+               switch (action) {
+                       case "intercept":
+                               this.download(data.type, "", data.options, data.intercept);
+                               break;
+               }
+       };
+
+       //downloaders
+       Download.prototype.downloaders = {
+               csv: function csv(columns, data, options, setFileContents, config) {
+                       var self = this,
+                           titles = [],
+                           fields = [],
+                           delimiter = options && options.delimiter ? options.delimiter : ",",
+                           fileContents,
+                           output;
+
+                       //build column headers
+                       function parseSimpleTitles() {
+                               columns.forEach(function (column) {
+                                       titles.push('"' + String(column.title).split('"').join('""') + '"');
+                                       fields.push(column.field);
+                               });
+                       }
+
+                       function parseColumnGroup(column, level) {
+                               if (column.subGroups) {
+                                       column.subGroups.forEach(function (subGroup) {
+                                               parseColumnGroup(subGroup, level + 1);
+                                       });
+                               } else {
+                                       titles.push('"' + String(column.title).split('"').join('""') + '"');
+                                       fields.push(column.definition.field);
+                               }
+                       }
+
+                       if (config.columnGroups) {
+                               console.warn("Download Warning - CSV downloader cannot process column groups");
+
+                               columns.forEach(function (column) {
+                                       parseColumnGroup(column, 0);
+                               });
+                       } else {
+                               parseSimpleTitles();
+                       }
+
+                       //generate header row
+                       fileContents = [titles.join(delimiter)];
+
+                       function parseRows(data) {
+                               //generate each row of the table
+                               data.forEach(function (row) {
+                                       var rowData = [];
+
+                                       fields.forEach(function (field) {
+                                               var value = self.getFieldValue(field, row);
+
+                                               switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
+                                                       case "object":
+                                                               value = JSON.stringify(value);
+                                                               break;
+
+                                                       case "undefined":
+                                                       case "null":
+                                                               value = "";
+                                                               break;
+
+                                                       default:
+                                                               value = value;
+                                               }
+
+                                               //escape quotation marks
+                                               rowData.push('"' + String(value).split('"').join('""') + '"');
+                                       });
+
+                                       fileContents.push(rowData.join(delimiter));
+                               });
+                       }
+
+                       function parseGroup(group) {
+                               if (group.subGroups) {
+                                       group.subGroups.forEach(function (subGroup) {
+                                               parseGroup(subGroup);
+                                       });
+                               } else {
+                                       parseRows(group.rows);
+                               }
+                       }
+
+                       if (config.columnCalcs) {
+                               console.warn("Download Warning - CSV downloader cannot process column calculations");
+                               data = data.data;
+                       }
+
+                       if (config.rowGroups) {
+                               console.warn("Download Warning - CSV downloader cannot process row groups");
+
+                               data.forEach(function (group) {
+                                       parseGroup(group);
+                               });
+                       } else {
+                               parseRows(data);
+                       }
+
+                       output = fileContents.join("\n");
+
+                       if (options.bom) {
+                               output = '\uFEFF' + output;
+                       }
+
+                       setFileContents(output, "text/csv");
+               },
+
+               json: function json(columns, data, options, setFileContents, config) {
+                       var fileContents;
+
+                       if (config.columnCalcs) {
+                               console.warn("Download Warning - CSV downloader cannot process column calculations");
+                               data = data.data;
+                       }
+
+                       fileContents = JSON.stringify(data, null, '\t');
+
+                       setFileContents(fileContents, "application/json");
+               },
+
+               pdf: function pdf(columns, data, options, setFileContents, config) {
+                       var self = this,
+                           fields = [],
+                           header = [],
+                           body = [],
+                           calcs = {},
+                           headerDepth = 1,
+                           table = "",
+                           autoTableParams = {},
+                           rowGroupStyles = options.rowGroupStyles || {
+                               fontStyle: "bold",
+                               fontSize: 12,
+                               cellPadding: 6,
+                               fillColor: 220
+                       },
+                           rowCalcStyles = options.rowCalcStyles || {
+                               fontStyle: "bold",
+                               fontSize: 10,
+                               cellPadding: 4,
+                               fillColor: 232
+                       },
+                           jsPDFParams = options.jsPDF || {},
+                           title = options && options.title ? options.title : "";
+
+                       if (config.columnCalcs) {
+                               calcs = data.calcs;
+                               data = data.data;
+                       }
+
+                       if (!jsPDFParams.orientation) {
+                               jsPDFParams.orientation = options.orientation || "landscape";
+                       }
+
+                       if (!jsPDFParams.unit) {
+                               jsPDFParams.unit = "pt";
+                       }
+
+                       //build column headers
+                       function parseSimpleTitles() {
+                               columns.forEach(function (column) {
+                                       if (column.field) {
+                                               header.push(column.title || "");
+                                               fields.push(column.field);
+                                       }
+                               });
+
+                               header = [header];
+                       }
+
+                       function parseColumnGroup(column, level) {
+                               var colSpan = column.width,
+                                   rowSpan = 1,
+                                   col = {
+                                       content: column.title || ""
+                               };
+
+                               if (column.subGroups) {
+                                       column.subGroups.forEach(function (subGroup) {
+                                               parseColumnGroup(subGroup, level + 1);
+                                       });
+                                       rowSpan = 1;
+                               } else {
+                                       fields.push(column.definition.field);
+                                       rowSpan = headerDepth - level;
+                               }
+
+                               col.rowSpan = rowSpan;
+                               // col.colSpan = colSpan;
+
+                               header[level].push(col);
+
+                               colSpan--;
+
+                               if (rowSpan > 1) {
+                                       for (var i = level + 1; i < headerDepth; i++) {
+                                               header[i].push("");
+                                       }
+                               }
+
+                               for (var i = 0; i < colSpan; i++) {
+                                       header[level].push("");
+                               }
+                       }
+
+                       if (config.columnGroups) {
+                               columns.forEach(function (column) {
+                                       if (column.depth > headerDepth) {
+                                               headerDepth = column.depth;
+                                       }
+                               });
+
+                               for (var i = 0; i < headerDepth; i++) {
+                                       header.push([]);
+                               }
+
+                               columns.forEach(function (column) {
+                                       parseColumnGroup(column, 0);
+                               });
+                       } else {
+                               parseSimpleTitles();
+                       }
+
+                       function parseValue(value) {
+                               switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
+                                       case "object":
+                                               value = JSON.stringify(value);
+                                               break;
+
+                                       case "undefined":
+                                       case "null":
+                                               value = "";
+                                               break;
+
+                                       default:
+                                               value = value;
+                               }
+
+                               return value;
+                       }
+
+                       function parseRows(data) {
+                               //build table rows
+                               data.forEach(function (row) {
+                                       body.push(parseRow(row));
+                               });
+                       }
+
+                       function parseRow(row, styles) {
+                               var rowData = [];
+
+                               fields.forEach(function (field) {
+                                       var value = self.getFieldValue(field, row);
+                                       value = parseValue(value);
+
+                                       if (styles) {
+                                               rowData.push({
+                                                       content: value,
+                                                       styles: styles
+                                               });
+                                       } else {
+                                               rowData.push(value);
+                                       }
+                               });
+
+                               return rowData;
+                       }
+
+                       function parseGroup(group, calcObj) {
+                               var groupData = [];
+
+                               groupData.push({ content: parseValue(group.key), colSpan: fields.length, styles: rowGroupStyles });
+
+                               body.push(groupData);
+
+                               if (group.subGroups) {
+                                       group.subGroups.forEach(function (subGroup) {
+                                               parseGroup(subGroup, calcObj[group.key] ? calcObj[group.key].groups || {} : {});
+                                       });
+                               } else {
+
+                                       if (config.columnCalcs) {
+                                               addCalcRow(calcObj, group.key, "top");
+                                       }
+
+                                       parseRows(group.rows);
+
+                                       if (config.columnCalcs) {
+                                               addCalcRow(calcObj, group.key, "bottom");
+                                       }
+                               }
+                       }
+
+                       function addCalcRow(calcs, selector, pos) {
+                               var calcData = calcs[selector];
+
+                               if (calcData) {
+                                       if (pos) {
+                                               calcData = calcData[pos];
+                                       }
+
+                                       if (Object.keys(calcData).length) {
+                                               body.push(parseRow(calcData, rowCalcStyles));
+                                       }
+                               }
+                       }
+
+                       if (config.rowGroups) {
+                               data.forEach(function (group) {
+                                       parseGroup(group, calcs);
+                               });
+                       } else {
+                               if (config.columnCalcs) {
+                                       addCalcRow(calcs, "top");
+                               }
+
+                               parseRows(data);
+
+                               if (config.columnCalcs) {
+                                       addCalcRow(calcs, "bottom");
+                               }
+                       }
+
+                       var doc = new jsPDF(jsPDFParams); //set document to landscape, better for most tables
+
+                       if (options && options.autoTable) {
+                               if (typeof options.autoTable === "function") {
+                                       autoTableParams = options.autoTable(doc) || {};
+                               } else {
+                                       autoTableParams = options.autoTable;
+                               }
+                       }
+
+                       if (title) {
+                               autoTableParams.addPageContent = function (data) {
+                                       doc.text(title, 40, 30);
+                               };
+                       }
+
+                       autoTableParams.head = header;
+                       autoTableParams.body = body;
+
+                       doc.autoTable(autoTableParams);
+
+                       if (options && options.documentProcessing) {
+                               options.documentProcessing(doc);
+                       }
+
+                       setFileContents(doc.output("arraybuffer"), "application/pdf");
+               },
+
+               xlsx: function xlsx(columns, data, options, setFileContents, config) {
+                       var self = this,
+                           sheetName = options.sheetName || "Sheet1",
+                           workbook = { SheetNames: [], Sheets: {} },
+                           calcs = {},
+                           groupRowIndexs = [],
+                           groupColumnIndexs = [],
+                           calcRowIndexs = [],
+                           output;
+
+                       if (config.columnCalcs) {
+                               calcs = data.calcs;
+                               data = data.data;
+                       }
+
+                       function generateSheet() {
+                               var titles = [],
+                                   fields = [],
+                                   rows = [],
+                                   worksheet;
+
+                               //convert rows to worksheet
+                               function rowsToSheet() {
+                                       var sheet = {};
+                                       var range = { s: { c: 0, r: 0 }, e: { c: fields.length, r: rows.length } };
+
+                                       XLSX.utils.sheet_add_aoa(sheet, rows);
+
+                                       sheet['!ref'] = XLSX.utils.encode_range(range);
+
+                                       var merges = generateMerges();
+
+                                       if (merges.length) {
+                                               sheet["!merges"] = merges;
+                                       }
+
+                                       return sheet;
+                               }
+
+                               function parseSimpleTitles() {
+                                       //get field lists
+                                       columns.forEach(function (column) {
+                                               titles.push(column.title);
+                                               fields.push(column.field);
+                                       });
+
+                                       rows.push(titles);
+                               }
+
+                               function parseColumnGroup(column, level) {
+
+                                       if (typeof titles[level] === "undefined") {
+                                               titles[level] = [];
+                                       }
+
+                                       if (typeof groupColumnIndexs[level] === "undefined") {
+                                               groupColumnIndexs[level] = [];
+                                       }
+
+                                       if (column.width > 1) {
+
+                                               groupColumnIndexs[level].push({
+                                                       type: "hoz",
+                                                       start: titles[level].length,
+                                                       end: titles[level].length + column.width - 1
+                                               });
+                                       }
+
+                                       titles[level].push(column.title);
+
+                                       if (column.subGroups) {
+                                               column.subGroups.forEach(function (subGroup) {
+                                                       parseColumnGroup(subGroup, level + 1);
+                                               });
+                                       } else {
+                                               fields.push(column.definition.field);
+                                               padColumnTitles(fields.length - 1, level);
+
+                                               groupColumnIndexs[level].push({
+                                                       type: "vert",
+                                                       start: fields.length - 1
+                                               });
+                                       }
+                               }
+
+                               function padColumnTitles() {
+                                       var max = 0;
+
+                                       titles.forEach(function (title) {
+                                               var len = title.length;
+                                               if (len > max) {
+                                                       max = len;
+                                               }
+                                       });
+
+                                       titles.forEach(function (title) {
+                                               var len = title.length;
+                                               if (len < max) {
+                                                       for (var i = len; i < max; i++) {
+                                                               title.push("");
+                                                       }
+                                               }
+                                       });
+                               }
+
+                               if (config.columnGroups) {
+                                       columns.forEach(function (column) {
+                                               parseColumnGroup(column, 0);
+                                       });
+
+                                       titles.forEach(function (title) {
+                                               rows.push(title);
+                                       });
+                               } else {
+                                       parseSimpleTitles();
+                               }
+
+                               function generateMerges() {
+                                       var output = [];
+
+                                       groupRowIndexs.forEach(function (index) {
+                                               output.push({ s: { r: index, c: 0 }, e: { r: index, c: fields.length - 1 } });
+                                       });
+
+                                       groupColumnIndexs.forEach(function (merges, level) {
+                                               merges.forEach(function (merge) {
+                                                       if (merge.type === "hoz") {
+                                                               output.push({ s: { r: level, c: merge.start }, e: { r: level, c: merge.end } });
+                                                       } else {
+                                                               if (level != titles.length - 1) {
+                                                                       output.push({ s: { r: level, c: merge.start }, e: { r: titles.length - 1, c: merge.start } });
+                                                               }
+                                                       }
+                                               });
+                                       });
+
+                                       return output;
+                               }
+
+                               //generate each row of the table
+                               function parseRows(data) {
+                                       data.forEach(function (row) {
+                                               rows.push(parseRow(row));
+                                       });
+                               }
+
+                               function parseRow(row) {
+                                       var rowData = [];
+
+                                       fields.forEach(function (field) {
+                                               var value = self.getFieldValue(field, row);
+                                               rowData.push(!(value instanceof Date) && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === "object" ? JSON.stringify(value) : value);
+                                       });
+
+                                       return rowData;
+                               }
+
+                               function addCalcRow(calcs, selector, pos) {
+                                       var calcData = calcs[selector];
+
+                                       if (calcData) {
+                                               if (pos) {
+                                                       calcData = calcData[pos];
+                                               }
+
+                                               if (Object.keys(calcData).length) {
+                                                       calcRowIndexs.push(rows.length);
+                                                       rows.push(parseRow(calcData));
+                                               }
+                                       }
+                               }
+
+                               function parseGroup(group, calcObj) {
+                                       var groupData = [];
+
+                                       groupData.push(group.key);
+
+                                       groupRowIndexs.push(rows.length);
+
+                                       rows.push(groupData);
+
+                                       if (group.subGroups) {
+                                               group.subGroups.forEach(function (subGroup) {
+                                                       parseGroup(subGroup, calcObj[group.key] ? calcObj[group.key].groups || {} : {});
+                                               });
+                                       } else {
+
+                                               if (config.columnCalcs) {
+                                                       addCalcRow(calcObj, group.key, "top");
+                                               }
+
+                                               parseRows(group.rows);
+
+                                               if (config.columnCalcs) {
+                                                       addCalcRow(calcObj, group.key, "bottom");
+                                               }
+                                       }
+                               }
+
+                               if (config.rowGroups) {
+                                       data.forEach(function (group) {
+                                               parseGroup(group, calcs);
+                                       });
+                               } else {
+                                       if (config.columnCalcs) {
+                                               addCalcRow(calcs, "top");
+                                       }
+
+                                       parseRows(data);
+
+                                       if (config.columnCalcs) {
+                                               addCalcRow(calcs, "bottom");
+                                       }
+                               }
+
+                               worksheet = rowsToSheet();
+
+                               return worksheet;
+                       }
+
+                       if (options.sheetOnly) {
+                               setFileContents(generateSheet());
+                               return;
+                       }
+
+                       if (options.sheets) {
+                               for (var sheet in options.sheets) {
+
+                                       if (options.sheets[sheet] === true) {
+                                               workbook.SheetNames.push(sheet);
+                                               workbook.Sheets[sheet] = generateSheet();
+                                       } else {
+
+                                               workbook.SheetNames.push(sheet);
+
+                                               this.table.modules.comms.send(options.sheets[sheet], "download", "intercept", {
+                                                       type: "xlsx",
+                                                       options: { sheetOnly: true },
+                                                       intercept: function intercept(data) {
+                                                               workbook.Sheets[sheet] = data;
+                                                       }
+                                               });
+                                       }
+                               }
+                       } else {
+                               workbook.SheetNames.push(sheetName);
+                               workbook.Sheets[sheetName] = generateSheet();
+                       }
+
+                       //convert workbook to binary array
+                       function s2ab(s) {
+                               var buf = new ArrayBuffer(s.length);
+                               var view = new Uint8Array(buf);
+                               for (var i = 0; i != s.length; ++i) {
+                                       view[i] = s.charCodeAt(i) & 0xFF;
+                               }return buf;
+                       }
+
+                       output = XLSX.write(workbook, { bookType: 'xlsx', bookSST: true, type: 'binary' });
+
+                       setFileContents(s2ab(output), "application/octet-stream");
+               }
+
+       };
+
+       Tabulator.prototype.registerModule("download", Download);
+
+       var Edit = function Edit(table) {
+               this.table = table; //hold Tabulator object
+               this.currentCell = false; //hold currently editing cell
+               this.mouseClick = false; //hold mousedown state to prevent click binding being overriden by editor opening
+               this.recursionBlock = false; //prevent focus recursion
+               this.invalidEdit = false;
+       };
+
+       //initialize column editor
+       Edit.prototype.initializeColumn = function (column) {
+               var self = this,
+                   config = {
+                       editor: false,
+                       blocked: false,
+                       check: column.definition.editable,
+                       params: column.definition.editorParams || {}
+               };
+
+               //set column editor
+               switch (_typeof(column.definition.editor)) {
+                       case "string":
+
+                               if (column.definition.editor === "tick") {
+                                       column.definition.editor = "tickCross";
+                                       console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor");
+                               }
+
+                               if (self.editors[column.definition.editor]) {
+                                       config.editor = self.editors[column.definition.editor];
+                               } else {
+                                       console.warn("Editor Error - No such editor found: ", column.definition.editor);
+                               }
+                               break;
+
+                       case "function":
+                               config.editor = column.definition.editor;
+                               break;
+
+                       case "boolean":
+
+                               if (column.definition.editor === true) {
+
+                                       if (typeof column.definition.formatter !== "function") {
+
+                                               if (column.definition.formatter === "tick") {
+                                                       column.definition.formatter = "tickCross";
+                                                       console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor");
+                                               }
+
+                                               if (self.editors[column.definition.formatter]) {
+                                                       config.editor = self.editors[column.definition.formatter];
+                                               } else {
+                                                       config.editor = self.editors["input"];
+                                               }
+                                       } else {
+                                               console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ", column.definition.formatter);
+                                       }
+                               }
+                               break;
+               }
+
+               if (config.editor) {
+                       column.modules.edit = config;
+               }
+       };
+
+       Edit.prototype.getCurrentCell = function () {
+               return this.currentCell ? this.currentCell.getComponent() : false;
+       };
+
+       Edit.prototype.clearEditor = function () {
+               var cell = this.currentCell,
+                   cellEl;
+
+               this.invalidEdit = false;
+
+               if (cell) {
+                       this.currentCell = false;
+
+                       cellEl = cell.getElement();
+                       cellEl.classList.remove("tabulator-validation-fail");
+                       cellEl.classList.remove("tabulator-editing");
+                       while (cellEl.firstChild) {
+                               cellEl.removeChild(cellEl.firstChild);
+                       }cell.row.getElement().classList.remove("tabulator-row-editing");
+               }
+       };
+
+       Edit.prototype.cancelEdit = function () {
+
+               if (this.currentCell) {
+                       var cell = this.currentCell;
+                       var component = this.currentCell.getComponent();
+
+                       this.clearEditor();
+                       cell.setValueActual(cell.getValue());
+
+                       if (cell.column.cellEvents.cellEditCancelled) {
+                               cell.column.cellEvents.cellEditCancelled.call(this.table, component);
+                       }
+
+                       this.table.options.cellEditCancelled.call(this.table, component);
+               }
+       };
+
+       //return a formatted value for a cell
+       Edit.prototype.bindEditor = function (cell) {
+               var self = this,
+                   element = cell.getElement();
+
+               element.setAttribute("tabindex", 0);
+
+               element.addEventListener("click", function (e) {
+                       if (!element.classList.contains("tabulator-editing")) {
+                               element.focus();
+                       }
+               });
+
+               element.addEventListener("mousedown", function (e) {
+                       self.mouseClick = true;
+               });
+
+               element.addEventListener("focus", function (e) {
+                       if (!self.recursionBlock) {
+                               self.edit(cell, e, false);
+                       }
+               });
+       };
+
+       Edit.prototype.focusCellNoEvent = function (cell) {
+               this.recursionBlock = true;
+               if (this.table.browser !== "ie") {
+                       cell.getElement().focus();
+               }
+               this.recursionBlock = false;
+       };
+
+       Edit.prototype.editCell = function (cell, forceEdit) {
+               this.focusCellNoEvent(cell);
+               this.edit(cell, false, forceEdit);
+       };
+
+       Edit.prototype.edit = function (cell, e, forceEdit) {
+               var self = this,
+                   allowEdit = true,
+                   rendered = function rendered() {},
+                   element = cell.getElement(),
+                   cellEditor,
+                   component,
+                   params;
+
+               //prevent editing if another cell is refusing to leave focus (eg. validation fail)
+               if (this.currentCell) {
+                       if (!this.invalidEdit) {
+                               this.cancelEdit();
+                       }
+                       return;
+               }
+
+               //handle successfull value change
+               function success(value) {
+
+                       if (self.currentCell === cell) {
+                               var valid = true;
+
+                               if (cell.column.modules.validate && self.table.modExists("validate")) {
+                                       valid = self.table.modules.validate.validate(cell.column.modules.validate, cell.getComponent(), value);
+                               }
+
+                               if (valid === true) {
+                                       self.clearEditor();
+                                       cell.setValue(value, true);
+
+                                       if (self.table.options.dataTree && self.table.modExists("dataTree")) {
+                                               self.table.modules.dataTree.checkForRestyle(cell);
+                                       }
+
+                                       return true;
+                               } else {
+                                       self.invalidEdit = true;
+                                       element.classList.add("tabulator-validation-fail");
+                                       self.focusCellNoEvent(cell);
+                                       rendered();
+                                       self.table.options.validationFailed.call(self.table, cell.getComponent(), value, valid);
+
+                                       return false;
+                               }
+                       } else {
+                               // console.warn("Edit Success Error - cannot call success on a cell that is no longer being edited");
+                       }
+               }
+
+               //handle aborted edit
+               function cancel() {
+                       if (self.currentCell === cell) {
+                               self.cancelEdit();
+
+                               if (self.table.options.dataTree && self.table.modExists("dataTree")) {
+                                       self.table.modules.dataTree.checkForRestyle(cell);
+                               }
+                       } else {
+                               // console.warn("Edit Success Error - cannot call cancel on a cell that is no longer being edited");
+                       }
+               }
+
+               function onRendered(callback) {
+                       rendered = callback;
+               }
+
+               if (!cell.column.modules.edit.blocked) {
+                       if (e) {
+                               e.stopPropagation();
+                       }
+
+                       switch (_typeof(cell.column.modules.edit.check)) {
+                               case "function":
+                                       allowEdit = cell.column.modules.edit.check(cell.getComponent());
+                                       break;
+
+                               case "boolean":
+                                       allowEdit = cell.column.modules.edit.check;
+                                       break;
+                       }
+
+                       if (allowEdit || forceEdit) {
+
+                               self.cancelEdit();
+
+                               self.currentCell = cell;
+
+                               component = cell.getComponent();
+
+                               if (this.mouseClick) {
+                                       this.mouseClick = false;
+
+                                       if (cell.column.cellEvents.cellClick) {
+                                               cell.column.cellEvents.cellClick.call(this.table, e, component);
+                                       }
+                               }
+
+                               if (cell.column.cellEvents.cellEditing) {
+                                       cell.column.cellEvents.cellEditing.call(this.table, component);
+                               }
+
+                               self.table.options.cellEditing.call(this.table, component);
+
+                               params = typeof cell.column.modules.edit.params === "function" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params;
+
+                               cellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params);
+
+                               //if editor returned, add to DOM, if false, abort edit
+                               if (cellEditor !== false) {
+
+                                       if (cellEditor instanceof Node) {
+                                               element.classList.add("tabulator-editing");
+                                               cell.row.getElement().classList.add("tabulator-row-editing");
+                                               while (element.firstChild) {
+                                                       element.removeChild(element.firstChild);
+                                               }element.appendChild(cellEditor);
+
+                                               //trigger onRendered Callback
+                                               rendered();
+
+                                               //prevent editing from triggering rowClick event
+                                               var children = element.children;
+
+                                               for (var i = 0; i < children.length; i++) {
+                                                       children[i].addEventListener("click", function (e) {
+                                                               e.stopPropagation();
+                                                       });
+                                               }
+                                       } else {
+                                               console.warn("Edit Error - Editor should return an instance of Node, the editor returned:", cellEditor);
+                                               element.blur();
+                                               return false;
+                                       }
+                               } else {
+                                       element.blur();
+                                       return false;
+                               }
+
+                               return true;
+                       } else {
+                               this.mouseClick = false;
+                               element.blur();
+                               return false;
+                       }
+               } else {
+                       this.mouseClick = false;
+                       element.blur();
+                       return false;
+               }
+       };
+
+       //default data editors
+       Edit.prototype.editors = {
+
+               //input element
+               input: function input(cell, onRendered, success, cancel, editorParams) {
+
+                       //create and style input
+                       var cellValue = cell.getValue(),
+                           input = document.createElement("input");
+
+                       input.setAttribute("type", editorParams.search ? "search" : "text");
+
+                       input.style.padding = "4px";
+                       input.style.width = "100%";
+                       input.style.boxSizing = "border-box";
+
+                       if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+                               for (var key in editorParams.elementAttributes) {
+                                       if (key.charAt(0) == "+") {
+                                               key = key.slice(1);
+                                               input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+                                       } else {
+                                               input.setAttribute(key, editorParams.elementAttributes[key]);
+                                       }
+                               }
+                       }
+
+                       input.value = typeof cellValue !== "undefined" ? cellValue : "";
+
+                       onRendered(function () {
+                               input.focus();
+                               input.style.height = "100%";
+                       });
+
+                       function onChange(e) {
+                               if ((cellValue === null || typeof cellValue === "undefined") && input.value !== "" || input.value != cellValue) {
+
+                                       if (success(input.value)) {
+                                               cellValue = input.value; //persist value if successfully validated incase editor is used as header filter
+                                       }
+                               } else {
+                                       cancel();
+                               }
+                       }
+
+                       //submit new value on blur or change
+                       input.addEventListener("change", onChange);
+                       input.addEventListener("blur", onChange);
+
+                       //submit new value on enter
+                       input.addEventListener("keydown", function (e) {
+                               switch (e.keyCode) {
+                                       case 13:
+                                               onChange(e);
+                                               break;
+
+                                       case 27:
+                                               cancel();
+                                               break;
+                               }
+                       });
+
+                       return input;
+               },
+
+               //resizable text area element
+               textarea: function textarea(cell, onRendered, success, cancel, editorParams) {
+                       var self = this,
+                           cellValue = cell.getValue(),
+                           value = String(cellValue !== null && typeof cellValue !== "undefined" ? cellValue : ""),
+                           count = (value.match(/(?:\r\n|\r|\n)/g) || []).length + 1,
+                           input = document.createElement("textarea"),
+                           scrollHeight = 0;
+
+                       //create and style input
+                       input.style.display = "block";
+                       input.style.padding = "2px";
+                       input.style.height = "100%";
+                       input.style.width = "100%";
+                       input.style.boxSizing = "border-box";
+                       input.style.whiteSpace = "pre-wrap";
+                       input.style.resize = "none";
+
+                       if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+                               for (var key in editorParams.elementAttributes) {
+                                       if (key.charAt(0) == "+") {
+                                               key = key.slice(1);
+                                               input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+                                       } else {
+                                               input.setAttribute(key, editorParams.elementAttributes[key]);
+                                       }
+                               }
+                       }
+
+                       input.value = value;
+
+                       onRendered(function () {
+                               input.focus();
+                               input.style.height = "100%";
+                       });
+
+                       function onChange(e) {
+
+                               if ((cellValue === null || typeof cellValue === "undefined") && input.value !== "" || input.value != cellValue) {
+
+                                       if (success(input.value)) {
+                                               cellValue = input.value; //persist value if successfully validated incase editor is used as header filter
+                                       }
+
+                                       setTimeout(function () {
+                                               cell.getRow().normalizeHeight();
+                                       }, 300);
+                               } else {
+                                       cancel();
+                               }
+                       }
+
+                       //submit new value on blur or change
+                       input.addEventListener("change", onChange);
+                       input.addEventListener("blur", onChange);
+
+                       input.addEventListener("keyup", function () {
+
+                               input.style.height = "";
+
+                               var heightNow = input.scrollHeight;
+
+                               input.style.height = heightNow + "px";
+
+                               if (heightNow != scrollHeight) {
+                                       scrollHeight = heightNow;
+                                       cell.getRow().normalizeHeight();
+                               }
+                       });
+
+                       input.addEventListener("keydown", function (e) {
+                               if (e.keyCode == 27) {
+                                       cancel();
+                               }
+                       });
+
+                       return input;
+               },
+
+               //input element with type of number
+               number: function number(cell, onRendered, success, cancel, editorParams) {
+
+                       var cellValue = cell.getValue(),
+                           input = document.createElement("input");
+
+                       input.setAttribute("type", "number");
+
+                       if (typeof editorParams.max != "undefined") {
+                               input.setAttribute("max", editorParams.max);
+                       }
+
+                       if (typeof editorParams.min != "undefined") {
+                               input.setAttribute("min", editorParams.min);
+                       }
+
+                       if (typeof editorParams.step != "undefined") {
+                               input.setAttribute("step", editorParams.step);
+                       }
+
+                       //create and style input
+                       input.style.padding = "4px";
+                       input.style.width = "100%";
+                       input.style.boxSizing = "border-box";
+
+                       if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+                               for (var key in editorParams.elementAttributes) {
+                                       if (key.charAt(0) == "+") {
+                                               key = key.slice(1);
+                                               input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+                                       } else {
+                                               input.setAttribute(key, editorParams.elementAttributes[key]);
+                                       }
+                               }
+                       }
+
+                       input.value = cellValue;
+
+                       var blurFunc = function blurFunc(e) {
+                               onChange();
+                       };
+
+                       onRendered(function () {
+                               //submit new value on blur
+                               input.removeEventListener("blur", blurFunc);
+
+                               input.focus();
+                               input.style.height = "100%";
+
+                               //submit new value on blur
+                               input.addEventListener("blur", blurFunc);
+                       });
+
+                       function onChange() {
+                               var value = input.value;
+
+                               if (!isNaN(value) && value !== "") {
+                                       value = Number(value);
+                               }
+
+                               if (value != cellValue) {
+                                       if (success(value)) {
+                                               cellValue = value; //persist value if successfully validated incase editor is used as header filter
+                                       }
+                               } else {
+                                       cancel();
+                               }
+                       }
+
+                       //submit new value on enter
+                       input.addEventListener("keydown", function (e) {
+                               switch (e.keyCode) {
+                                       case 13:
+                                               // case 9:
+                                               onChange();
+                                               break;
+
+                                       case 27:
+                                               cancel();
+                                               break;
+                               }
+                       });
+
+                       return input;
+               },
+
+               //input element with type of number
+               range: function range(cell, onRendered, success, cancel, editorParams) {
+
+                       var cellValue = cell.getValue(),
+                           input = document.createElement("input");
+
+                       input.setAttribute("type", "range");
+
+                       if (typeof editorParams.max != "undefined") {
+                               input.setAttribute("max", editorParams.max);
+                       }
+
+                       if (typeof editorParams.min != "undefined") {
+                               input.setAttribute("min", editorParams.min);
+                       }
+
+                       if (typeof editorParams.step != "undefined") {
+                               input.setAttribute("step", editorParams.step);
+                       }
+
+                       //create and style input
+                       input.style.padding = "4px";
+                       input.style.width = "100%";
+                       input.style.boxSizing = "border-box";
+
+                       if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+                               for (var key in editorParams.elementAttributes) {
+                                       if (key.charAt(0) == "+") {
+                                               key = key.slice(1);
+                                               input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+                                       } else {
+                                               input.setAttribute(key, editorParams.elementAttributes[key]);
+                                       }
+                               }
+                       }
+
+                       input.value = cellValue;
+
+                       onRendered(function () {
+                               input.focus();
+                               input.style.height = "100%";
+                       });
+
+                       function onChange() {
+                               var value = input.value;
+
+                               if (!isNaN(value) && value !== "") {
+                                       value = Number(value);
+                               }
+
+                               if (value != cellValue) {
+                                       if (success(value)) {
+                                               cellValue = value; //persist value if successfully validated incase editor is used as header filter
+                                       }
+                               } else {
+                                       cancel();
+                               }
+                       }
+
+                       //submit new value on blur
+                       input.addEventListener("blur", function (e) {
+                               onChange();
+                       });
+
+                       //submit new value on enter
+                       input.addEventListener("keydown", function (e) {
+                               switch (e.keyCode) {
+                                       case 13:
+                                       case 9:
+                                               onChange();
+                                               break;
+
+                                       case 27:
+                                               cancel();
+                                               break;
+                               }
+                       });
+
+                       return input;
+               },
+
+               //select
+               select: function select(cell, onRendered, success, cancel, editorParams) {
+                       var self = this,
+                           cellEl = cell.getElement(),
+                           initialValue = cell.getValue(),
+                           initialDisplayValue = typeof initialValue !== "undefined" || initialValue === null ? initialValue : typeof editorParams.defaultValue !== "undefined" ? editorParams.defaultValue : "",
+                           input = document.createElement("input"),
+                           listEl = document.createElement("div"),
+                           dataItems = [],
+                           displayItems = [],
+                           currentItem = {},
+                           blurable = true;
+
+                       this.table.rowManager.element.addEventListener("scroll", cancelItem);
+
+                       if (Array.isArray(editorParams) || !Array.isArray(editorParams) && (typeof editorParams === 'undefined' ? 'undefined' : _typeof(editorParams)) === "object" && !editorParams.values) {
+                               console.warn("DEPRECATION WANRING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object");
+                               editorParams = { values: editorParams };
+                       }
+
+                       function getUniqueColumnValues(field) {
+                               var output = {},
+                                   data = self.table.getData(),
+                                   column;
+
+                               if (field) {
+                                       column = self.table.columnManager.getColumnByField(field);
+                               } else {
+                                       column = cell.getColumn()._getSelf();
+                               }
+
+                               if (column) {
+                                       data.forEach(function (row) {
+                                               var val = column.getFieldValue(row);
+
+                                               if (val !== null && typeof val !== "undefined" && val !== "") {
+                                                       output[val] = true;
+                                               }
+                                       });
+
+                                       if (editorParams.sortValuesList) {
+                                               if (editorParams.sortValuesList == "asc") {
+                                                       output = Object.keys(output).sort();
+                                               } else {
+                                                       output = Object.keys(output).sort().reverse();
+                                               }
+                                       } else {
+                                               output = Object.keys(output);
+                                       }
+                               } else {
+                                       console.warn("unable to find matching column to create select lookup list:", field);
+                               }
+
+                               return output;
+                       }
+
+                       function parseItems(inputValues, curentValue) {
+                               var dataList = [];
+                               var displayList = [];
+
+                               function processComplexListItem(item) {
+                                       var item = {
+                                               label: editorParams.listItemFormatter ? editorParams.listItemFormatter(item.value, item.label) : item.label,
+                                               value: item.value,
+                                               element: false
+                                       };
+
+                                       if (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {
+                                               setCurrentItem(item);
+                                       }
+
+                                       dataList.push(item);
+                                       displayList.push(item);
+
+                                       return item;
+                               }
+
+                               if (typeof inputValues == "function") {
+                                       inputValues = inputValues(cell);
+                               }
+
+                               if (Array.isArray(inputValues)) {
+                                       inputValues.forEach(function (value) {
+                                               var item;
+
+                                               if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === "object") {
+
+                                                       if (value.options) {
+                                                               item = {
+                                                                       label: value.label,
+                                                                       group: true,
+                                                                       element: false
+                                                               };
+
+                                                               displayList.push(item);
+
+                                                               value.options.forEach(function (item) {
+                                                                       processComplexListItem(item);
+                                                               });
+                                                       } else {
+                                                               processComplexListItem(value);
+                                                       }
+                                               } else {
+
+                                                       item = {
+                                                               label: editorParams.listItemFormatter ? editorParams.listItemFormatter(value, value) : value,
+                                                               value: value,
+                                                               element: false
+                                                       };
+
+                                                       if (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {
+                                                               setCurrentItem(item);
+                                                       }
+
+                                                       dataList.push(item);
+                                                       displayList.push(item);
+                                               }
+                                       });
+                               } else {
+                                       for (var key in inputValues) {
+                                               var item = {
+                                                       label: editorParams.listItemFormatter ? editorParams.listItemFormatter(key, inputValues[key]) : inputValues[key],
+                                                       value: key,
+                                                       element: false
+                                               };
+
+                                               if (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {
+                                                       setCurrentItem(item);
+                                               }
+
+                                               dataList.push(item);
+                                               displayList.push(item);
+                                       }
+                               }
+
+                               dataItems = dataList;
+                               displayItems = displayList;
+
+                               fillList();
+                       }
+
+                       function fillList() {
+                               while (listEl.firstChild) {
+                                       listEl.removeChild(listEl.firstChild);
+                               }displayItems.forEach(function (item) {
+                                       var el = item.element;
+
+                                       if (!el) {
+
+                                               if (item.group) {
+                                                       el = document.createElement("div");
+                                                       el.classList.add("tabulator-edit-select-list-group");
+                                                       el.tabIndex = 0;
+                                                       el.innerHTML = item.label === "" ? "&nbsp;" : item.label;
+                                               } else {
+                                                       el = document.createElement("div");
+                                                       el.classList.add("tabulator-edit-select-list-item");
+                                                       el.tabIndex = 0;
+                                                       el.innerHTML = item.label === "" ? "&nbsp;" : item.label;
+
+                                                       el.addEventListener("click", function () {
+                                                               setCurrentItem(item);
+                                                               chooseItem();
+                                                       });
+
+                                                       if (item === currentItem) {
+                                                               el.classList.add("active");
+                                                       }
+                                               }
+
+                                               el.addEventListener("mousedown", function () {
+                                                       blurable = false;
+
+                                                       setTimeout(function () {
+                                                               blurable = true;
+                                                       }, 10);
+                                               });
+
+                                               item.element = el;
+                                       }
+
+                                       listEl.appendChild(el);
+                               });
+                       }
+
+                       function setCurrentItem(item) {
+
+                               if (currentItem && currentItem.element) {
+                                       currentItem.element.classList.remove("active");
+                               }
+
+                               currentItem = item;
+                               input.value = item.label === "&nbsp;" ? "" : item.label;
+
+                               if (item.element) {
+                                       item.element.classList.add("active");
+                               }
+                       }
+
+                       function chooseItem() {
+                               hideList();
+
+                               if (initialValue !== currentItem.value) {
+                                       initialValue = currentItem.value;
+                                       success(currentItem.value);
+                               } else {
+                                       cancel();
+                               }
+                       }
+
+                       function cancelItem() {
+                               hideList();
+                               cancel();
+                       }
+
+                       function showList() {
+                               if (!listEl.parentNode) {
+
+                                       if (editorParams.values === true) {
+                                               parseItems(getUniqueColumnValues(), initialDisplayValue);
+                                       } else if (typeof editorParams.values === "string") {
+                                               parseItems(getUniqueColumnValues(editorParams.values), initialDisplayValue);
+                                       } else {
+                                               parseItems(editorParams.values || [], initialDisplayValue);
+                                       }
+
+                                       var offset = Tabulator.prototype.helpers.elOffset(cellEl);
+
+                                       listEl.style.minWidth = cellEl.offsetWidth + "px";
+
+                                       listEl.style.top = offset.top + cellEl.offsetHeight + "px";
+                                       listEl.style.left = offset.left + "px";
+                                       document.body.appendChild(listEl);
+                               }
+                       }
+
+                       function hideList() {
+                               if (listEl.parentNode) {
+                                       listEl.parentNode.removeChild(listEl);
+                               }
+
+                               removeScrollListener();
+                       }
+
+                       function removeScrollListener() {
+                               self.table.rowManager.element.removeEventListener("scroll", cancelItem);
+                       }
+
+                       //style input
+                       input.setAttribute("type", "text");
+
+                       input.style.padding = "4px";
+                       input.style.width = "100%";
+                       input.style.boxSizing = "border-box";
+                       input.style.cursor = "default";
+                       input.readOnly = this.currentCell != false;
+
+                       if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+                               for (var key in editorParams.elementAttributes) {
+                                       if (key.charAt(0) == "+") {
+                                               key = key.slice(1);
+                                               input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+                                       } else {
+                                               input.setAttribute(key, editorParams.elementAttributes[key]);
+                                       }
+                               }
+                       }
+
+                       input.value = typeof initialValue !== "undefined" || initialValue === null ? initialValue : "";
+
+                       if (editorParams.values === true) {
+                               parseItems(getUniqueColumnValues(), initialValue);
+                       } else if (typeof editorParams.values === "string") {
+                               parseItems(getUniqueColumnValues(editorParams.values), initialValue);
+                       } else {
+                               parseItems(editorParams.values || [], initialValue);
+                       }
+
+                       //allow key based navigation
+                       input.addEventListener("keydown", function (e) {
+                               var index;
+
+                               switch (e.keyCode) {
+                                       case 38:
+                                               //up arrow
+                                               e.stopImmediatePropagation();
+                                               e.stopPropagation();
+                                               e.preventDefault();
+
+                                               index = dataItems.indexOf(currentItem);
+
+                                               if (index > 0) {
+                                                       setCurrentItem(dataItems[index - 1]);
+                                               }
+                                               break;
+
+                                       case 40:
+                                               //down arrow
+                                               e.stopImmediatePropagation();
+                                               e.stopPropagation();
+                                               e.preventDefault();
+
+                                               index = dataItems.indexOf(currentItem);
+
+                                               if (index < dataItems.length - 1) {
+                                                       if (index == -1) {
+                                                               setCurrentItem(dataItems[0]);
+                                                       } else {
+                                                               setCurrentItem(dataItems[index + 1]);
+                                                       }
+                                               }
+                                               break;
+
+                                       case 37: //left arrow
+                                       case 39:
+                                               //right arrow
+                                               e.stopImmediatePropagation();
+                                               e.stopPropagation();
+                                               e.preventDefault();
+                                               break;
+
+                                       case 13:
+                                               //enter
+                                               chooseItem();
+                                               break;
+
+                                       case 27:
+                                               //escape
+                                               cancelItem();
+                                               break;
+                               }
+                       });
+
+                       input.addEventListener("blur", function (e) {
+                               if (blurable) {
+                                       cancelItem();
+                               }
+                       });
+
+                       input.addEventListener("focus", function (e) {
+                               showList();
+                       });
+
+                       //style list element
+                       listEl = document.createElement("div");
+                       listEl.classList.add("tabulator-edit-select-list");
+
+                       onRendered(function () {
+                               input.style.height = "100%";
+                               input.focus();
+                       });
+
+                       return input;
+               },
+
+               //autocomplete
+               autocomplete: function autocomplete(cell, onRendered, success, cancel, editorParams) {
+                       var self = this,
+                           cellEl = cell.getElement(),
+                           initialValue = cell.getValue(),
+                           initialDisplayValue = typeof initialValue !== "undefined" || initialValue === null ? initialValue : typeof editorParams.defaultValue !== "undefined" ? editorParams.defaultValue : "",
+                           input = document.createElement("input"),
+                           listEl = document.createElement("div"),
+                           allItems = [],
+                           displayItems = [],
+                           values = [],
+                           currentItem = {},
+                           blurable = true;
+
+                       this.table.rowManager.element.addEventListener("scroll", cancelItem);
+
+                       function getUniqueColumnValues(field) {
+                               var output = {},
+                                   data = self.table.getData(),
+                                   column;
+
+                               if (field) {
+                                       column = self.table.columnManager.getColumnByField(field);
+                               } else {
+                                       column = cell.getColumn()._getSelf();
+                               }
+
+                               if (column) {
+                                       data.forEach(function (row) {
+                                               var val = column.getFieldValue(row);
+
+                                               if (val !== null && typeof val !== "undefined" && val !== "") {
+                                                       output[val] = true;
+                                               }
+                                       });
+
+                                       if (editorParams.sortValuesList) {
+                                               if (editorParams.sortValuesList == "asc") {
+                                                       output = Object.keys(output).sort();
+                                               } else {
+                                                       output = Object.keys(output).sort().reverse();
+                                               }
+                                       } else {
+                                               output = Object.keys(output);
+                                       }
+                               } else {
+                                       console.warn("unable to find matching column to create autocomplete lookup list:", field);
+                               }
+
+                               return output;
+                       }
+
+                       function parseItems(inputValues, curentValue) {
+                               var itemList = [];
+
+                               if (Array.isArray(inputValues)) {
+                                       inputValues.forEach(function (value) {
+                                               var item = {
+                                                       title: editorParams.listItemFormatter ? editorParams.listItemFormatter(value, value) : value,
+                                                       value: value,
+                                                       element: false
+                                               };
+
+                                               if (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {
+                                                       setCurrentItem(item);
+                                               }
+
+                                               itemList.push(item);
+                                       });
+                               } else {
+                                       for (var key in inputValues) {
+                                               var item = {
+                                                       title: editorParams.listItemFormatter ? editorParams.listItemFormatter(key, inputValues[key]) : inputValues[key],
+                                                       value: key,
+                                                       element: false
+                                               };
+
+                                               if (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {
+                                                       setCurrentItem(item);
+                                               }
+
+                                               itemList.push(item);
+                                       }
+                               }
+
+                               if (editorParams.searchFunc) {
+                                       itemList.forEach(function (item) {
+                                               item.search = {
+                                                       title: item.title,
+                                                       value: item.value
+                                               };
+                                       });
+                               }
+
+                               allItems = itemList;
+                       }
+
+                       function filterList(term, intialLoad) {
+                               var matches = [],
+                                   searchObjs = [],
+                                   searchResults = [];
+
+                               if (editorParams.searchFunc) {
+
+                                       allItems.forEach(function (item) {
+                                               searchObjs.push(item.search);
+                                       });
+
+                                       searchResults = editorParams.searchFunc(term, searchObjs);
+
+                                       searchResults.forEach(function (result) {
+                                               var match = allItems.find(function (item) {
+                                                       return item.search === result;
+                                               });
+
+                                               if (match) {
+                                                       matches.push(match);
+                                               }
+                                       });
+                               } else {
+                                       if (term === "") {
+
+                                               if (editorParams.showListOnEmpty) {
+                                                       allItems.forEach(function (item) {
+                                                               matches.push(item);
+                                                       });
+                                               }
+                                       } else {
+                                               allItems.forEach(function (item) {
+
+                                                       if (item.value !== null || typeof item.value !== "undefined") {
+                                                               if (String(item.value).toLowerCase().indexOf(String(term).toLowerCase()) > -1 || String(item.title).toLowerCase().indexOf(String(term).toLowerCase()) > -1) {
+                                                                       matches.push(item);
+                                                               }
+                                                       }
+                                               });
+                                       }
+                               }
+
+                               displayItems = matches;
+
+                               fillList(intialLoad);
+                       }
+
+                       function fillList(intialLoad) {
+                               var current = false;
+
+                               while (listEl.firstChild) {
+                                       listEl.removeChild(listEl.firstChild);
+                               }displayItems.forEach(function (item) {
+                                       var el = item.element;
+
+                                       if (!el) {
+                                               el = document.createElement("div");
+                                               el.classList.add("tabulator-edit-select-list-item");
+                                               el.tabIndex = 0;
+                                               el.innerHTML = item.title;
+
+                                               el.addEventListener("click", function () {
+                                                       setCurrentItem(item);
+                                                       chooseItem();
+                                               });
+
+                                               el.addEventListener("mousedown", function () {
+                                                       blurable = false;
+
+                                                       setTimeout(function () {
+                                                               blurable = true;
+                                                       }, 10);
+                                               });
+
+                                               item.element = el;
+
+                                               if (intialLoad && item.value == initialValue) {
+                                                       input.value = item.title;
+                                                       item.element.classList.add("active");
+                                                       current = true;
+                                               }
+
+                                               if (item === currentItem) {
+                                                       item.element.classList.add("active");
+                                                       current = true;
+                                               }
+                                       }
+
+                                       listEl.appendChild(el);
+                               });
+
+                               if (!current) {
+                                       setCurrentItem(false);
+                               }
+                       }
+
+                       function setCurrentItem(item, showInputValue) {
+                               if (currentItem && currentItem.element) {
+                                       currentItem.element.classList.remove("active");
+                               }
+
+                               currentItem = item;
+
+                               if (item && item.element) {
+                                       item.element.classList.add("active");
+                               }
+                       }
+
+                       function chooseItem() {
+                               hideList();
+
+                               if (currentItem) {
+                                       if (initialValue !== currentItem.value) {
+                                               initialValue = currentItem.value;
+                                               input.value = currentItem.title;
+                                               success(currentItem.value);
+                                       } else {
+                                               cancel();
+                                       }
+                               } else {
+                                       if (editorParams.freetext) {
+                                               initialValue = input.value;
+                                               success(input.value);
+                                       } else {
+                                               if (editorParams.allowEmpty && input.value === "") {
+                                                       initialValue = input.value;
+                                                       success(input.value);
+                                               } else {
+                                                       cancel();
+                                               }
+                                       }
+                               }
+                       }
+
+                       function cancelItem() {
+                               hideList();
+                               cancel();
+                       }
+
+                       function showList() {
+                               if (!listEl.parentNode) {
+                                       while (listEl.firstChild) {
+                                               listEl.removeChild(listEl.firstChild);
+                                       }if (editorParams.values === true) {
+                                               values = getUniqueColumnValues();
+                                       } else if (typeof editorParams.values === "string") {
+                                               values = getUniqueColumnValues(editorParams.values);
+                                       } else {
+                                               values = editorParams.values || [];
+                                       }
+
+                                       parseItems(values, initialValue);
+
+                                       var offset = Tabulator.prototype.helpers.elOffset(cellEl);
+
+                                       listEl.style.minWidth = cellEl.offsetWidth + "px";
+
+                                       listEl.style.top = offset.top + cellEl.offsetHeight + "px";
+                                       listEl.style.left = offset.left + "px";
+                                       document.body.appendChild(listEl);
+                               }
+                       }
+
+                       function hideList() {
+                               if (listEl.parentNode) {
+                                       listEl.parentNode.removeChild(listEl);
+                               }
+
+                               removeScrollListener();
+                       }
+
+                       function removeScrollListener() {
+                               self.table.rowManager.element.removeEventListener("scroll", cancelItem);
+                       }
+
+                       //style input
+                       input.setAttribute("type", "search");
+
+                       input.style.padding = "4px";
+                       input.style.width = "100%";
+                       input.style.boxSizing = "border-box";
+
+                       if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+                               for (var key in editorParams.elementAttributes) {
+                                       if (key.charAt(0) == "+") {
+                                               key = key.slice(1);
+                                               input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+                                       } else {
+                                               input.setAttribute(key, editorParams.elementAttributes[key]);
+                                       }
+                               }
+                       }
+
+                       //allow key based navigation
+                       input.addEventListener("keydown", function (e) {
+                               var index;
+
+                               switch (e.keyCode) {
+                                       case 38:
+                                               //up arrow
+                                               e.stopImmediatePropagation();
+                                               e.stopPropagation();
+                                               e.preventDefault();
+
+                                               index = displayItems.indexOf(currentItem);
+
+                                               if (index > 0) {
+                                                       setCurrentItem(displayItems[index - 1]);
+                                               } else {
+                                                       setCurrentItem(false);
+                                               }
+                                               break;
+
+                                       case 40:
+                                               //down arrow
+                                               e.stopImmediatePropagation();
+                                               e.stopPropagation();
+                                               e.preventDefault();
+
+                                               index = displayItems.indexOf(currentItem);
+
+                                               if (index < displayItems.length - 1) {
+                                                       if (index == -1) {
+                                                               setCurrentItem(displayItems[0]);
+                                                       } else {
+                                                               setCurrentItem(displayItems[index + 1]);
+                                                       }
+                                               }
+                                               break;
+
+                                       case 37: //left arrow
+                                       case 39:
+                                               //right arrow
+                                               e.stopImmediatePropagation();
+                                               e.stopPropagation();
+                                               e.preventDefault();
+                                               break;
+
+                                       case 13:
+                                               //enter
+                                               chooseItem();
+                                               break;
+
+                                       case 27:
+                                               //escape
+                                               cancelItem();
+                                               break;
+
+                                       case 36: //home
+                                       case 35:
+                                               //end
+                                               //prevent table navigation while using input element
+                                               e.stopImmediatePropagation();
+                                               break;
+                               }
+                       });
+
+                       input.addEventListener("keyup", function (e) {
+
+                               switch (e.keyCode) {
+                                       case 38: //up arrow
+                                       case 37: //left arrow
+                                       case 39: //up arrow
+                                       case 40: //right arrow
+                                       case 13: //enter
+                                       case 27:
+                                               //escape
+                                               break;
+
+                                       default:
+                                               filterList(input.value);
+                               }
+                       });
+
+                       input.addEventListener("search", function (e) {
+                               filterList(input.value);
+                       });
+
+                       input.addEventListener("blur", function (e) {
+                               if (blurable) {
+                                       chooseItem();
+                               }
+                       });
+
+                       input.addEventListener("focus", function (e) {
+                               var value = initialDisplayValue;
+                               showList();
+                               input.value = value;
+                               filterList(value, true);
+                       });
+
+                       //style list element
+                       listEl = document.createElement("div");
+                       listEl.classList.add("tabulator-edit-select-list");
+
+                       onRendered(function () {
+                               input.style.height = "100%";
+                               input.focus();
+                       });
+
+                       return input;
+               },
+
+               //start rating
+               star: function star(cell, onRendered, success, cancel, editorParams) {
+                       var self = this,
+                           element = cell.getElement(),
+                           value = cell.getValue(),
+                           maxStars = element.getElementsByTagName("svg").length || 5,
+                           size = element.getElementsByTagName("svg")[0] ? element.getElementsByTagName("svg")[0].getAttribute("width") : 14,
+                           stars = [],
+                           starsHolder = document.createElement("div"),
+                           star = document.createElementNS('http://www.w3.org/2000/svg', "svg");
+
+                       //change star type
+                       function starChange(val) {
+                               stars.forEach(function (star, i) {
+                                       if (i < val) {
+                                               if (self.table.browser == "ie") {
+                                                       star.setAttribute("class", "tabulator-star-active");
+                                               } else {
+                                                       star.classList.replace("tabulator-star-inactive", "tabulator-star-active");
+                                               }
+
+                                               star.innerHTML = '<polygon fill="#488CE9" stroke="#014AAE" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>';
+                                       } else {
+                                               if (self.table.browser == "ie") {
+                                                       star.setAttribute("class", "tabulator-star-inactive");
+                                               } else {
+                                                       star.classList.replace("tabulator-star-active", "tabulator-star-inactive");
+                                               }
+
+                                               star.innerHTML = '<polygon fill="#010155" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>';
+                                       }
+                               });
+                       }
+
+                       //build stars
+                       function buildStar(i) {
+
+                               var starHolder = document.createElement("span");
+                               var nextStar = star.cloneNode(true);
+
+                               stars.push(nextStar);
+
+                               starHolder.addEventListener("mouseenter", function (e) {
+                                       e.stopPropagation();
+                                       e.stopImmediatePropagation();
+                                       starChange(i);
+                               });
+
+                               starHolder.addEventListener("mousemove", function (e) {
+                                       e.stopPropagation();
+                                       e.stopImmediatePropagation();
+                               });
+
+                               starHolder.addEventListener("click", function (e) {
+                                       e.stopPropagation();
+                                       e.stopImmediatePropagation();
+                                       success(i);
+                               });
+
+                               starHolder.appendChild(nextStar);
+                               starsHolder.appendChild(starHolder);
+                       }
+
+                       //handle keyboard navigation value change
+                       function changeValue(val) {
+                               value = val;
+                               starChange(val);
+                       }
+
+                       //style cell
+                       element.style.whiteSpace = "nowrap";
+                       element.style.overflow = "hidden";
+                       element.style.textOverflow = "ellipsis";
+
+                       //style holding element
+                       starsHolder.style.verticalAlign = "middle";
+                       starsHolder.style.display = "inline-block";
+                       starsHolder.style.padding = "4px";
+
+                       //style star
+                       star.setAttribute("width", size);
+                       star.setAttribute("height", size);
+                       star.setAttribute("viewBox", "0 0 512 512");
+                       star.setAttribute("xml:space", "preserve");
+                       star.style.padding = "0 1px";
+
+                       if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+                               for (var key in editorParams.elementAttributes) {
+                                       if (key.charAt(0) == "+") {
+                                               key = key.slice(1);
+                                               starsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+                                       } else {
+                                               starsHolder.setAttribute(key, editorParams.elementAttributes[key]);
+                                       }
+                               }
+                       }
+
+                       //create correct number of stars
+                       for (var i = 1; i <= maxStars; i++) {
+                               buildStar(i);
+                       }
+
+                       //ensure value does not exceed number of stars
+                       value = Math.min(parseInt(value), maxStars);
+
+                       // set initial styling of stars
+                       starChange(value);
+
+                       starsHolder.addEventListener("mousemove", function (e) {
+                               starChange(0);
+                       });
+
+                       starsHolder.addEventListener("click", function (e) {
+                               success(0);
+                       });
+
+                       element.addEventListener("blur", function (e) {
+                               cancel();
+                       });
+
+                       //allow key based navigation
+                       element.addEventListener("keydown", function (e) {
+                               switch (e.keyCode) {
+                                       case 39:
+                                               //right arrow
+                                               changeValue(value + 1);
+                                               break;
+
+                                       case 37:
+                                               //left arrow
+                                               changeValue(value - 1);
+                                               break;
+
+                                       case 13:
+                                               //enter
+                                               success(value);
+                                               break;
+
+                                       case 27:
+                                               //escape
+                                               cancel();
+                                               break;
+                               }
+                       });
+
+                       return starsHolder;
+               },
+
+               //draggable progress bar
+               progress: function progress(cell, onRendered, success, cancel, editorParams) {
+                       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,
+                           percent = (max - min) / 100,
+                           value = cell.getValue() || 0,
+                           handle = document.createElement("div"),
+                           bar = document.createElement("div"),
+                           mouseDrag,
+                           mouseDragWidth;
+
+                       //set new value
+                       function updateValue() {
+                               var calcVal = percent * Math.round(bar.offsetWidth / (element.clientWidth / 100)) + min;
+                               success(calcVal);
+                               element.setAttribute("aria-valuenow", calcVal);
+                               element.setAttribute("aria-label", value);
+                       }
+
+                       //style handle
+                       handle.style.position = "absolute";
+                       handle.style.right = "0";
+                       handle.style.top = "0";
+                       handle.style.bottom = "0";
+                       handle.style.width = "5px";
+                       handle.classList.add("tabulator-progress-handle");
+
+                       //style bar
+                       bar.style.display = "inline-block";
+                       bar.style.position = "relative";
+                       // bar.style.top = "8px";
+                       // bar.style.bottom = "8px";
+                       // bar.style.left = "4px";
+                       // bar.style.marginRight = "4px";
+                       bar.style.height = "100%";
+                       bar.style.backgroundColor = "#488CE9";
+                       bar.style.maxWidth = "100%";
+                       bar.style.minWidth = "0%";
+
+                       if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+                               for (var key in editorParams.elementAttributes) {
+                                       if (key.charAt(0) == "+") {
+                                               key = key.slice(1);
+                                               bar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+                                       } else {
+                                               bar.setAttribute(key, editorParams.elementAttributes[key]);
+                                       }
+                               }
+                       }
+
+                       //style cell
+                       element.style.padding = "4px 4px";
+
+                       //make sure value is in range
+                       value = Math.min(parseFloat(value), max);
+                       value = Math.max(parseFloat(value), min);
+
+                       //workout percentage
+                       value = Math.round((value - min) / percent);
+                       // bar.style.right = value + "%";
+                       bar.style.width = value + "%";
+
+                       element.setAttribute("aria-valuemin", min);
+                       element.setAttribute("aria-valuemax", max);
+
+                       bar.appendChild(handle);
+
+                       handle.addEventListener("mousedown", function (e) {
+                               mouseDrag = e.screenX;
+                               mouseDragWidth = bar.offsetWidth;
+                       });
+
+                       handle.addEventListener("mouseover", function () {
+                               handle.style.cursor = "ew-resize";
+                       });
+
+                       element.addEventListener("mousemove", function (e) {
+                               if (mouseDrag) {
+                                       bar.style.width = mouseDragWidth + e.screenX - mouseDrag + "px";
+                               }
+                       });
+
+                       element.addEventListener("mouseup", function (e) {
+                               if (mouseDrag) {
+                                       e.stopPropagation();
+                                       e.stopImmediatePropagation();
+
+                                       mouseDrag = false;
+                                       mouseDragWidth = false;
+
+                                       updateValue();
+                               }
+                       });
+
+                       //allow key based navigation
+                       element.addEventListener("keydown", function (e) {
+                               switch (e.keyCode) {
+                                       case 39:
+                                               //right arrow
+                                               bar.style.width = bar.clientWidth + element.clientWidth / 100 + "px";
+                                               break;
+
+                                       case 37:
+                                               //left arrow
+                                               bar.style.width = bar.clientWidth - element.clientWidth / 100 + "px";
+                                               break;
+
+                                       case 13:
+                                               //enter
+                                               updateValue();
+                                               break;
+
+                                       case 27:
+                                               //escape
+                                               cancel();
+                                               break;
+
+                               }
+                       });
+
+                       element.addEventListener("blur", function () {
+                               cancel();
+                       });
+
+                       return bar;
+               },
+
+               //checkbox
+               tickCross: function tickCross(cell, onRendered, success, cancel, editorParams) {
+                       var value = cell.getValue(),
+                           input = document.createElement("input"),
+                           tristate = editorParams.tristate,
+                           indetermValue = typeof editorParams.indeterminateValue === "undefined" ? null : editorParams.indeterminateValue,
+                           indetermState = false;
+
+                       input.setAttribute("type", "checkbox");
+                       input.style.marginTop = "5px";
+                       input.style.boxSizing = "border-box";
+
+                       if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+                               for (var key in editorParams.elementAttributes) {
+                                       if (key.charAt(0) == "+") {
+                                               key = key.slice(1);
+                                               input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+                                       } else {
+                                               input.setAttribute(key, editorParams.elementAttributes[key]);
+                                       }
+                               }
+                       }
+
+                       input.value = value;
+
+                       if (tristate && (typeof value === "undefined" || value === indetermValue || value === "")) {
+                               indetermState = true;
+                               input.indeterminate = true;
+                       }
+
+                       if (this.table.browser != "firefox") {
+                               //prevent blur issue on mac firefox
+                               onRendered(function () {
+                                       input.focus();
+                               });
+                       }
+
+                       input.checked = value === true || value === "true" || value === "True" || value === 1;
+
+                       function setValue(blur) {
+                               if (tristate) {
+                                       if (!blur) {
+                                               if (input.checked && !indetermState) {
+                                                       input.checked = false;
+                                                       input.indeterminate = true;
+                                                       indetermState = true;
+                                                       return indetermValue;
+                                               } else {
+                                                       indetermState = false;
+                                                       return input.checked;
+                                               }
+                                       } else {
+                                               if (indetermState) {
+                                                       return indetermValue;
+                                               } else {
+                                                       return input.checked;
+                                               }
+                                       }
+                               } else {
+                                       return input.checked;
+                               }
+                       }
+
+                       //submit new value on blur
+                       input.addEventListener("change", function (e) {
+                               success(setValue());
+                       });
+
+                       input.addEventListener("blur", function (e) {
+                               success(setValue(true));
+                       });
+
+                       //submit new value on enter
+                       input.addEventListener("keydown", function (e) {
+                               if (e.keyCode == 13) {
+                                       success(setValue());
+                               }
+                               if (e.keyCode == 27) {
+                                       cancel();
+                               }
+                       });
+
+                       return input;
+               }
+       };
+
+       Tabulator.prototype.registerModule("edit", Edit);
+
+       var Filter = function Filter(table) {
+
+               this.table = table; //hold Tabulator object
+
+               this.filterList = []; //hold filter list
+               this.headerFilters = {}; //hold column filters
+               this.headerFilterElements = []; //hold header filter elements for manipulation
+               this.headerFilterColumns = []; //hold columns that use header filters
+
+               this.changed = false; //has filtering changed since last render
+       };
+
+       //initialize column header filter
+       Filter.prototype.initializeColumn = function (column, value) {
+               var self = this,
+                   field = column.getField(),
+                   params;
+
+               //handle successfull value change
+               function success(value) {
+                       var filterType = column.modules.filter.tagType == "input" && column.modules.filter.attrType == "text" || column.modules.filter.tagType == "textarea" ? "partial" : "match",
+                           type = "",
+                           filterFunc;
+
+                       if (typeof column.modules.filter.prevSuccess === "undefined" || column.modules.filter.prevSuccess !== value) {
+
+                               column.modules.filter.prevSuccess = value;
+
+                               if (!column.modules.filter.emptyFunc(value)) {
+                                       column.modules.filter.value = value;
+
+                                       switch (_typeof(column.definition.headerFilterFunc)) {
+                                               case "string":
+                                                       if (self.filters[column.definition.headerFilterFunc]) {
+                                                               type = column.definition.headerFilterFunc;
+                                                               filterFunc = function filterFunc(data) {
+                                                                       var params = column.definition.headerFilterFuncParams || {};
+                                                                       var fieldVal = column.getFieldValue(data);
+
+                                                                       params = typeof params === "function" ? params(value, fieldVal, data) : params;
+
+                                                                       return self.filters[column.definition.headerFilterFunc](value, fieldVal, data, params);
+                                                               };
+                                                       } else {
+                                                               console.warn("Header Filter Error - Matching filter function not found: ", column.definition.headerFilterFunc);
+                                                       }
+                                                       break;
+
+                                               case "function":
+                                                       filterFunc = function filterFunc(data) {
+                                                               var params = column.definition.headerFilterFuncParams || {};
+                                                               var fieldVal = column.getFieldValue(data);
+
+                                                               params = typeof params === "function" ? params(value, fieldVal, data) : params;
+
+                                                               return column.definition.headerFilterFunc(value, fieldVal, data, params);
+                                                       };
+
+                                                       type = filterFunc;
+                                                       break;
+                                       }
+
+                                       if (!filterFunc) {
+                                               switch (filterType) {
+                                                       case "partial":
+                                                               filterFunc = function filterFunc(data) {
+                                                                       var colVal = column.getFieldValue(data);
+
+                                                                       if (typeof colVal !== 'undefined' && colVal !== null) {
+                                                                               return String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1;
+                                                                       } else {
+                                                                               return false;
+                                                                       }
+                                                               };
+                                                               type = "like";
+                                                               break;
+
+                                                       default:
+                                                               filterFunc = function filterFunc(data) {
+                                                                       return column.getFieldValue(data) == value;
+                                                               };
+                                                               type = "=";
+                                               }
+                                       }
+
+                                       self.headerFilters[field] = { value: value, func: filterFunc, type: type };
+                               } else {
+                                       delete self.headerFilters[field];
+                               }
+
+                               self.changed = true;
+
+                               self.table.rowManager.filterRefresh();
+                       }
+
+                       return true;
+               }
+
+               column.modules.filter = {
+                       success: success,
+                       attrType: false,
+                       tagType: false,
+                       emptyFunc: false
+               };
+
+               this.generateHeaderFilterElement(column);
+       };
+
+       Filter.prototype.generateHeaderFilterElement = function (column, initialValue) {
+               var _this36 = this;
+
+               var self = this,
+                   success = column.modules.filter.success,
+                   field = column.getField(),
+                   filterElement,
+                   editor,
+                   editorElement,
+                   cellWrapper,
+                   typingTimer,
+                   searchTrigger,
+                   params;
+
+               //handle aborted edit
+               function cancel() {}
+
+               if (column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode) {
+                       var oldFilterElement = column.modules.filter.headerElement.parentNode;
+                       var oldFilterElementIndex = self.headerFilterElements.indexOf(oldFilterElement);
+                       if (oldFilterElementIndex >= 0) {
+                               self.headerFilterElements.splice(oldFilterElementIndex, 1);
+                       }
+
+                       var oldColumnIndex = self.headerFilterColumns.indexOf(oldColumnIndex);
+                       if (oldColumnIndex >= 0) {
+                               self.headerFilterColumns.splice(oldColumnIndex, 1);
+                       }
+
+                       column.contentElement.removeChild(oldFilterElement);
+               }
+
+               if (field) {
+
+                       //set empty value function
+                       column.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function (value) {
+                               return !value && value !== "0";
+                       };
+
+                       filterElement = document.createElement("div");
+                       filterElement.classList.add("tabulator-header-filter");
+
+                       //set column editor
+                       switch (_typeof(column.definition.headerFilter)) {
+                               case "string":
+                                       if (self.table.modules.edit.editors[column.definition.headerFilter]) {
+                                               editor = self.table.modules.edit.editors[column.definition.headerFilter];
+
+                                               if ((column.definition.headerFilter === "tick" || column.definition.headerFilter === "tickCross") && !column.definition.headerFilterEmptyCheck) {
+                                                       column.modules.filter.emptyFunc = function (value) {
+                                                               return value !== true && value !== false;
+                                                       };
+                                               }
+                                       } else {
+                                               console.warn("Filter Error - Cannot build header filter, No such editor found: ", column.definition.editor);
+                                       }
+                                       break;
+
+                               case "function":
+                                       editor = column.definition.headerFilter;
+                                       break;
+
+                               case "boolean":
+                                       if (column.modules.edit && column.modules.edit.editor) {
+                                               editor = column.modules.edit.editor;
+                                       } else {
+                                               if (column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]) {
+                                                       editor = self.table.modules.edit.editors[column.definition.formatter];
+
+                                                       if ((column.definition.formatter === "tick" || column.definition.formatter === "tickCross") && !column.definition.headerFilterEmptyCheck) {
+                                                               column.modules.filter.emptyFunc = function (value) {
+                                                                       return value !== true && value !== false;
+                                                               };
+                                                       }
+                                               } else {
+                                                       editor = self.table.modules.edit.editors["input"];
+                                               }
+                                       }
+                                       break;
+                       }
+
+                       if (editor) {
+
+                               cellWrapper = {
+                                       getValue: function getValue() {
+                                               return typeof initialValue !== "undefined" ? initialValue : "";
+                                       },
+                                       getField: function getField() {
+                                               return column.definition.field;
+                                       },
+                                       getElement: function getElement() {
+                                               return filterElement;
+                                       },
+                                       getColumn: function getColumn() {
+                                               return column.getComponent();
+                                       },
+                                       getRow: function getRow() {
+                                               return {
+                                                       normalizeHeight: function normalizeHeight() {}
+                                               };
+                                       }
+                               };
+
+                               params = column.definition.headerFilterParams || {};
+
+                               params = typeof params === "function" ? params.call(self.table) : params;
+
+                               editorElement = editor.call(this.table.modules.edit, cellWrapper, function () {}, success, cancel, params);
+
+                               if (!editorElement) {
+                                       console.warn("Filter Error - Cannot add filter to " + field + " column, editor returned a value of false");
+                                       return;
+                               }
+
+                               if (!(editorElement instanceof Node)) {
+                                       console.warn("Filter Error - Cannot add filter to " + field + " column, editor should return an instance of Node, the editor returned:", editorElement);
+                                       return;
+                               }
+
+                               //set Placeholder Text
+                               if (field) {
+                                       self.table.modules.localize.bind("headerFilters|columns|" + column.definition.field, function (value) {
+                                               editorElement.setAttribute("placeholder", typeof value !== "undefined" && value ? value : self.table.modules.localize.getText("headerFilters|default"));
+                                       });
+                               } else {
+                                       self.table.modules.localize.bind("headerFilters|default", function (value) {
+                                               editorElement.setAttribute("placeholder", typeof self.column.definition.headerFilterPlaceholder !== "undefined" && self.column.definition.headerFilterPlaceholder ? self.column.definition.headerFilterPlaceholder : value);
+                                       });
+                               }
+
+                               //focus on element on click
+                               editorElement.addEventListener("click", function (e) {
+                                       e.stopPropagation();
+                                       editorElement.focus();
+                               });
+
+                               editorElement.addEventListener("focus", function (e) {
+                                       var left = _this36.table.columnManager.element.scrollLeft;
+
+                                       if (left !== _this36.table.rowManager.element.scrollLeft) {
+                                               _this36.table.rowManager.scrollHorizontal(left);
+                                               _this36.table.columnManager.scrollHorizontal(left);
+                                       }
+                               });
+
+                               //live update filters as user types
+                               typingTimer = false;
+
+                               searchTrigger = function searchTrigger(e) {
+                                       if (typingTimer) {
+                                               clearTimeout(typingTimer);
+                                       }
+
+                                       typingTimer = setTimeout(function () {
+                                               success(editorElement.value);
+                                       }, 300);
+                               };
+
+                               column.modules.filter.headerElement = editorElement;
+                               column.modules.filter.attrType = editorElement.hasAttribute("type") ? editorElement.getAttribute("type").toLowerCase() : "";
+                               column.modules.filter.tagType = editorElement.tagName.toLowerCase();
+
+                               if (column.definition.headerFilterLiveFilter !== false) {
+
+                                       if (!(column.definition.headerFilter === 'autocomplete' || column.definition.headerFilter === 'tickCross' || (column.definition.editor === 'autocomplete' || column.definition.editor === 'tickCross') && column.definition.headerFilter === true)) {
+                                               editorElement.addEventListener("keyup", searchTrigger);
+                                               editorElement.addEventListener("search", searchTrigger);
+
+                                               //update number filtered columns on change
+                                               if (column.modules.filter.attrType == "number") {
+                                                       editorElement.addEventListener("change", function (e) {
+                                                               success(editorElement.value);
+                                                       });
+                                               }
+
+                                               //change text inputs to search inputs to allow for clearing of field
+                                               if (column.modules.filter.attrType == "text" && this.table.browser !== "ie") {
+                                                       editorElement.setAttribute("type", "search");
+                                                       // editorElement.off("change blur"); //prevent blur from triggering filter and preventing selection click
+                                               }
+                                       }
+
+                                       //prevent input and select elements from propegating click to column sorters etc
+                                       if (column.modules.filter.tagType == "input" || column.modules.filter.tagType == "select" || column.modules.filter.tagType == "textarea") {
+                                               editorElement.addEventListener("mousedown", function (e) {
+                                                       e.stopPropagation();
+                                               });
+                                       }
+                               }
+
+                               filterElement.appendChild(editorElement);
+
+                               column.contentElement.appendChild(filterElement);
+
+                               self.headerFilterElements.push(editorElement);
+                               self.headerFilterColumns.push(column);
+                       }
+               } else {
+                       console.warn("Filter Error - Cannot add header filter, column has no field set:", column.definition.title);
+               }
+       };
+
+       //hide all header filter elements (used to ensure correct column widths in "fitData" layout mode)
+       Filter.prototype.hideHeaderFilterElements = function () {
+               this.headerFilterElements.forEach(function (element) {
+                       element.style.display = 'none';
+               });
+       };
+
+       //show all header filter elements (used to ensure correct column widths in "fitData" layout mode)
+       Filter.prototype.showHeaderFilterElements = function () {
+               this.headerFilterElements.forEach(function (element) {
+                       element.style.display = '';
+               });
+       };
+
+       //programatically set value of header filter
+       Filter.prototype.setHeaderFilterFocus = function (column) {
+               if (column.modules.filter && column.modules.filter.headerElement) {
+                       column.modules.filter.headerElement.focus();
+               } else {
+                       console.warn("Column Filter Focus Error - No header filter set on column:", column.getField());
+               }
+       };
+
+       //programatically set value of header filter
+       Filter.prototype.setHeaderFilterValue = function (column, value) {
+               if (column) {
+                       if (column.modules.filter && column.modules.filter.headerElement) {
+                               this.generateHeaderFilterElement(column, value);
+                               column.modules.filter.success(value);
+                       } else {
+                               console.warn("Column Filter Error - No header filter set on column:", column.getField());
+                       }
+               }
+       };
+
+       Filter.prototype.reloadHeaderFilter = function (column) {
+               if (column) {
+                       if (column.modules.filter && column.modules.filter.headerElement) {
+                               this.generateHeaderFilterElement(column, column.modules.filter.value);
+                       } else {
+                               console.warn("Column Filter Error - No header filter set on column:", column.getField());
+                       }
+               }
+       };
+
+       //check if the filters has changed since last use
+       Filter.prototype.hasChanged = function () {
+               var changed = this.changed;
+               this.changed = false;
+               return changed;
+       };
+
+       //set standard filters
+       Filter.prototype.setFilter = function (field, type, value) {
+               var self = this;
+
+               self.filterList = [];
+
+               if (!Array.isArray(field)) {
+                       field = [{ field: field, type: type, value: value }];
+               }
+
+               self.addFilter(field);
+       };
+
+       //add filter to array
+       Filter.prototype.addFilter = function (field, type, value) {
+               var self = this;
+
+               if (!Array.isArray(field)) {
+                       field = [{ field: field, type: type, value: value }];
+               }
+
+               field.forEach(function (filter) {
+
+                       filter = self.findFilter(filter);
+
+                       if (filter) {
+                               self.filterList.push(filter);
+
+                               self.changed = true;
+                       }
+               });
+
+               if (this.table.options.persistentFilter && this.table.modExists("persistence", true)) {
+                       this.table.modules.persistence.save("filter");
+               }
+       };
+
+       Filter.prototype.findFilter = function (filter) {
+               var self = this,
+                   column;
+
+               if (Array.isArray(filter)) {
+                       return this.findSubFilters(filter);
+               }
+
+               var filterFunc = false;
+
+               if (typeof filter.field == "function") {
+                       filterFunc = function filterFunc(data) {
+                               return filter.field(data, filter.type || {}); // pass params to custom filter function
+                       };
+               } else {
+
+                       if (self.filters[filter.type]) {
+
+                               column = self.table.columnManager.getColumnByField(filter.field);
+
+                               if (column) {
+                                       filterFunc = function filterFunc(data) {
+                                               return self.filters[filter.type](filter.value, column.getFieldValue(data));
+                                       };
+                               } else {
+                                       filterFunc = function filterFunc(data) {
+                                               return self.filters[filter.type](filter.value, data[filter.field]);
+                                       };
+                               }
+                       } else {
+                               console.warn("Filter Error - No such filter type found, ignoring: ", filter.type);
+                       }
+               }
+
+               filter.func = filterFunc;
+
+               return filter.func ? filter : false;
+       };
+
+       Filter.prototype.findSubFilters = function (filters) {
+               var self = this,
+                   output = [];
+
+               filters.forEach(function (filter) {
+                       filter = self.findFilter(filter);
+
+                       if (filter) {
+                               output.push(filter);
+                       }
+               });
+
+               return output.length ? output : false;
+       };
+
+       //get all filters
+       Filter.prototype.getFilters = function (all, ajax) {
+               var output = [];
+
+               if (all) {
+                       output = this.getHeaderFilters();
+               }
+
+               if (ajax) {
+                       output.forEach(function (item) {
+                               if (typeof item.type == "function") {
+                                       item.type = "function";
+                               }
+                       });
+               }
+
+               output = output.concat(this.filtersToArray(this.filterList, ajax));
+
+               return output;
+       };
+
+       //filter to Object
+       Filter.prototype.filtersToArray = function (filterList, ajax) {
+               var _this37 = this;
+
+               var output = [];
+
+               filterList.forEach(function (filter) {
+                       var item;
+
+                       if (Array.isArray(filter)) {
+                               output.push(_this37.filtersToArray(filter, ajax));
+                       } else {
+                               item = { field: filter.field, type: filter.type, value: filter.value };
+
+                               if (ajax) {
+                                       if (typeof item.type == "function") {
+                                               item.type = "function";
+                                       }
+                               }
+
+                               output.push(item);
+                       }
+               });
+
+               return output;
+       };
+
+       //get all filters
+       Filter.prototype.getHeaderFilters = function () {
+               var self = this,
+                   output = [];
+
+               for (var key in this.headerFilters) {
+                       output.push({ field: key, type: this.headerFilters[key].type, value: this.headerFilters[key].value });
+               }
+
+               return output;
+       };
+
+       //remove filter from array
+       Filter.prototype.removeFilter = function (field, type, value) {
+               var self = this;
+
+               if (!Array.isArray(field)) {
+                       field = [{ field: field, type: type, value: value }];
+               }
+
+               field.forEach(function (filter) {
+                       var index = -1;
+
+                       if (_typeof(filter.field) == "object") {
+                               index = self.filterList.findIndex(function (element) {
+                                       return filter === element;
+                               });
+                       } else {
+                               index = self.filterList.findIndex(function (element) {
+                                       return filter.field === element.field && filter.type === element.type && filter.value === element.value;
+                               });
+                       }
+
+                       if (index > -1) {
+                               self.filterList.splice(index, 1);
+                               self.changed = true;
+                       } else {
+                               console.warn("Filter Error - No matching filter type found, ignoring: ", filter.type);
+                       }
+               });
+
+               if (this.table.options.persistentFilter && this.table.modExists("persistence", true)) {
+                       this.table.modules.persistence.save("filter");
+               }
+       };
+
+       //clear filters
+       Filter.prototype.clearFilter = function (all) {
+               this.filterList = [];
+
+               if (all) {
+                       this.clearHeaderFilter();
+               }
+
+               this.changed = true;
+
+               if (this.table.options.persistentFilter && this.table.modExists("persistence", true)) {
+                       this.table.modules.persistence.save("filter");
+               }
+       };
+
+       //clear header filters
+       Filter.prototype.clearHeaderFilter = function () {
+               var self = this;
+
+               this.headerFilters = {};
+
+               this.headerFilterColumns.forEach(function (column) {
+                       column.modules.filter.value = null;
+                       column.modules.filter.prevSuccess = undefined;
+                       self.reloadHeaderFilter(column);
+               });
+
+               this.changed = true;
+       };
+
+       //search data and return matching rows
+       Filter.prototype.search = function (searchType, field, type, value) {
+               var self = this,
+                   activeRows = [],
+                   filterList = [];
+
+               if (!Array.isArray(field)) {
+                       field = [{ field: field, type: type, value: value }];
+               }
+
+               field.forEach(function (filter) {
+                       filter = self.findFilter(filter);
+
+                       if (filter) {
+                               filterList.push(filter);
+                       }
+               });
+
+               this.table.rowManager.rows.forEach(function (row) {
+                       var match = true;
+
+                       filterList.forEach(function (filter) {
+                               if (!self.filterRecurse(filter, row.getData())) {
+                                       match = false;
+                               }
+                       });
+
+                       if (match) {
+                               activeRows.push(searchType === "data" ? row.getData("data") : row.getComponent());
+                       }
+               });
+
+               return activeRows;
+       };
+
+       //filter row array
+       Filter.prototype.filter = function (rowList, filters) {
+               var self = this,
+                   activeRows = [],
+                   activeRowComponents = [];
+
+               if (self.table.options.dataFiltering) {
+                       self.table.options.dataFiltering.call(self.table, self.getFilters());
+               }
+
+               if (!self.table.options.ajaxFiltering && (self.filterList.length || Object.keys(self.headerFilters).length)) {
+
+                       rowList.forEach(function (row) {
+                               if (self.filterRow(row)) {
+                                       activeRows.push(row);
+                               }
+                       });
+               } else {
+                       activeRows = rowList.slice(0);
+               }
+
+               if (self.table.options.dataFiltered) {
+
+                       activeRows.forEach(function (row) {
+                               activeRowComponents.push(row.getComponent());
+                       });
+
+                       self.table.options.dataFiltered.call(self.table, self.getFilters(), activeRowComponents);
+               }
+
+               return activeRows;
+       };
+
+       //filter individual row
+       Filter.prototype.filterRow = function (row, filters) {
+               var self = this,
+                   match = true,
+                   data = row.getData();
+
+               self.filterList.forEach(function (filter) {
+                       if (!self.filterRecurse(filter, data)) {
+                               match = false;
+                       }
+               });
+
+               for (var field in self.headerFilters) {
+                       if (!self.headerFilters[field].func(data)) {
+                               match = false;
+                       }
+               }
+
+               return match;
+       };
+
+       Filter.prototype.filterRecurse = function (filter, data) {
+               var self = this,
+                   match = false;
+
+               if (Array.isArray(filter)) {
+                       filter.forEach(function (subFilter) {
+                               if (self.filterRecurse(subFilter, data)) {
+                                       match = true;
+                               }
+                       });
+               } else {
+                       match = filter.func(data);
+               }
+
+               return match;
+       };
+
+       //list of available filters
+       Filter.prototype.filters = {
+
+               //equal to
+               "=": function _(filterVal, rowVal, rowData, filterParams) {
+                       return rowVal == filterVal ? true : false;
+               },
+
+               //less than
+               "<": function _(filterVal, rowVal, rowData, filterParams) {
+                       return rowVal < filterVal ? true : false;
+               },
+
+               //less than or equal to
+               "<=": function _(filterVal, rowVal, rowData, filterParams) {
+                       return rowVal <= filterVal ? true : false;
+               },
+
+               //greater than
+               ">": function _(filterVal, rowVal, rowData, filterParams) {
+                       return rowVal > filterVal ? true : false;
+               },
+
+               //greater than or equal to
+               ">=": function _(filterVal, rowVal, rowData, filterParams) {
+                       return rowVal >= filterVal ? true : false;
+               },
+
+               //not equal to
+               "!=": function _(filterVal, rowVal, rowData, filterParams) {
+                       return rowVal != filterVal ? true : false;
+               },
+
+               "regex": function regex(filterVal, rowVal, rowData, filterParams) {
+
+                       if (typeof filterVal == "string") {
+                               filterVal = new RegExp(filterVal);
+                       }
+
+                       return filterVal.test(rowVal);
+               },
+
+               //contains the string
+               "like": function like(filterVal, rowVal, rowData, filterParams) {
+                       if (filterVal === null || typeof filterVal === "undefined") {
+                               return rowVal === filterVal ? true : false;
+                       } else {
+                               if (typeof rowVal !== 'undefined' && rowVal !== null) {
+                                       return String(rowVal).toLowerCase().indexOf(filterVal.toLowerCase()) > -1;
+                               } else {
+                                       return false;
+                               }
+                       }
+               },
+
+               //in array
+               "in": function _in(filterVal, rowVal, rowData, filterParams) {
+                       if (Array.isArray(filterVal)) {
+                               return filterVal.indexOf(rowVal) > -1;
+                       } else {
+                               console.warn("Filter Error - filter value is not an array:", filterVal);
+                               return false;
+                       }
+               }
+       };
+
+       Tabulator.prototype.registerModule("filter", Filter);
+       var Format = function Format(table) {
+               this.table = table; //hold Tabulator object
+       };
+
+       //initialize column formatter
+       Format.prototype.initializeColumn = function (column) {
+               var self = this,
+                   config = { params: column.definition.formatterParams || {} };
+
+               //set column formatter
+               switch (_typeof(column.definition.formatter)) {
+                       case "string":
+
+                               if (column.definition.formatter === "tick") {
+                                       column.definition.formatter = "tickCross";
+
+                                       if (typeof config.params.crossElement == "undefined") {
+                                               config.params.crossElement = false;
+                                       }
+
+                                       console.warn("DEPRECATION WARNING - the tick formatter has been deprecated, please use the tickCross formatter with the crossElement param set to false");
+                               }
+
+                               if (self.formatters[column.definition.formatter]) {
+                                       config.formatter = self.formatters[column.definition.formatter];
+                               } else {
+                                       console.warn("Formatter Error - No such formatter found: ", column.definition.formatter);
+                                       config.formatter = self.formatters.plaintext;
+                               }
+                               break;
+
+                       case "function":
+                               config.formatter = column.definition.formatter;
+                               break;
+
+                       default:
+                               config.formatter = self.formatters.plaintext;
+                               break;
+               }
+
+               column.modules.format = config;
+       };
+
+       Format.prototype.cellRendered = function (cell) {
+               if (cell.column.modules.format.renderedCallback) {
+                       cell.column.modules.format.renderedCallback();
+               }
+       };
+
+       //return a formatted value for a cell
+       Format.prototype.formatValue = function (cell) {
+               var component = cell.getComponent(),
+                   params = typeof cell.column.modules.format.params === "function" ? cell.column.modules.format.params(component) : cell.column.modules.format.params;
+
+               function onRendered(callback) {
+                       cell.column.modules.format.renderedCallback = callback;
+               }
+
+               return cell.column.modules.format.formatter.call(this, component, params, onRendered);
+       };
+
+       Format.prototype.sanitizeHTML = function (value) {
+               if (value) {
+                       var entityMap = {
+                               '&': '&amp;',
+                               '<': '&lt;',
+                               '>': '&gt;',
+                               '"': '&quot;',
+                               "'": '&#39;',
+                               '/': '&#x2F;',
+                               '`': '&#x60;',
+                               '=': '&#x3D;'
+                       };
+
+                       return String(value).replace(/[&<>"'`=\/]/g, function (s) {
+                               return entityMap[s];
+                       });
+               } else {
+                       return value;
+               }
+       };
+
+       Format.prototype.emptyToSpace = function (value) {
+               return value === null || typeof value === "undefined" ? "&nbsp;" : value;
+       };
+
+       //get formatter for cell
+       Format.prototype.getFormatter = function (formatter) {
+               var formatter;
+
+               switch (typeof formatter === 'undefined' ? 'undefined' : _typeof(formatter)) {
+                       case "string":
+                               if (this.formatters[formatter]) {
+                                       formatter = this.formatters[formatter];
+                               } else {
+                                       console.warn("Formatter Error - No such formatter found: ", formatter);
+                                       formatter = this.formatters.plaintext;
+                               }
+                               break;
+
+                       case "function":
+                               formatter = formatter;
+                               break;
+
+                       default:
+                               formatter = this.formatters.plaintext;
+                               break;
+               }
+
+               return formatter;
+       };
+
+       //default data formatters
+       Format.prototype.formatters = {
+               //plain text value
+               plaintext: function plaintext(cell, formatterParams, onRendered) {
+                       return this.emptyToSpace(this.sanitizeHTML(cell.getValue()));
+               },
+
+               //html text value
+               html: function html(cell, formatterParams, onRendered) {
+                       return cell.getValue();
+               },
+
+               //multiline text area
+               textarea: function textarea(cell, formatterParams, onRendered) {
+                       cell.getElement().style.whiteSpace = "pre-wrap";
+                       return this.emptyToSpace(this.sanitizeHTML(cell.getValue()));
+               },
+
+               //currency formatting
+               money: function money(cell, formatterParams, onRendered) {
+                       var floatVal = parseFloat(cell.getValue()),
+                           number,
+                           integer,
+                           decimal,
+                           rgx;
+
+                       var decimalSym = formatterParams.decimal || ".";
+                       var thousandSym = formatterParams.thousand || ",";
+                       var symbol = formatterParams.symbol || "";
+                       var after = !!formatterParams.symbolAfter;
+                       var precision = typeof formatterParams.precision !== "undefined" ? formatterParams.precision : 2;
+
+                       if (isNaN(floatVal)) {
+                               return this.emptyToSpace(this.sanitizeHTML(cell.getValue()));
+                       }
+
+                       number = precision !== false ? floatVal.toFixed(precision) : floatVal;
+                       number = String(number).split(".");
+
+                       integer = number[0];
+                       decimal = number.length > 1 ? decimalSym + number[1] : "";
+
+                       rgx = /(\d+)(\d{3})/;
+
+                       while (rgx.test(integer)) {
+                               integer = integer.replace(rgx, "$1" + thousandSym + "$2");
+                       }
+
+                       return after ? integer + decimal + symbol : symbol + integer + decimal;
+               },
+
+               //clickable anchor tag
+               link: function link(cell, formatterParams, onRendered) {
+                       var value = cell.getValue(),
+                           urlPrefix = formatterParams.urlPrefix || "",
+                           label = value,
+                           el = document.createElement("a"),
+                           data;
+
+                       if (formatterParams.labelField) {
+                               data = cell.getData();
+                               label = data[formatterParams.labelField];
+                       }
+
+                       if (formatterParams.label) {
+                               switch (_typeof(formatterParams.label)) {
+                                       case "string":
+                                               label = formatterParams.label;
+                                               break;
+
+                                       case "function":
+                                               label = formatterParams.label(cell);
+                                               break;
+                               }
+                       }
+
+                       if (label) {
+                               if (formatterParams.urlField) {
+                                       data = cell.getData();
+                                       value = data[formatterParams.urlField];
+                               }
+
+                               if (formatterParams.url) {
+                                       switch (_typeof(formatterParams.url)) {
+                                               case "string":
+                                                       value = formatterParams.url;
+                                                       break;
+
+                                               case "function":
+                                                       value = formatterParams.url(cell);
+                                                       break;
+                                       }
+                               }
+
+                               el.setAttribute("href", urlPrefix + value);
+
+                               if (formatterParams.target) {
+                                       el.setAttribute("target", formatterParams.target);
+                               }
+
+                               el.innerHTML = this.emptyToSpace(this.sanitizeHTML(label));
+
+                               return el;
+                       } else {
+                               return "&nbsp;";
+                       }
+               },
+
+               //image element
+               image: function image(cell, formatterParams, onRendered) {
+                       var el = document.createElement("img");
+                       el.setAttribute("src", cell.getValue());
+
+                       switch (_typeof(formatterParams.height)) {
+                               case "number":
+                                       el.style.height = formatterParams.height + "px";
+                                       break;
+
+                               case "string":
+                                       el.style.height = formatterParams.height;
+                                       break;
+                       }
+
+                       switch (_typeof(formatterParams.width)) {
+                               case "number":
+                                       el.style.width = formatterParams.width + "px";
+                                       break;
+
+                               case "string":
+                                       el.style.width = formatterParams.width;
+                                       break;
+                       }
+
+                       el.addEventListener("load", function () {
+                               cell.getRow().normalizeHeight();
+                       });
+
+                       return el;
+               },
+
+               //tick or cross
+               tickCross: function tickCross(cell, formatterParams, onRendered) {
+                       var value = cell.getValue(),
+                           element = cell.getElement(),
+                           empty = formatterParams.allowEmpty,
+                           truthy = formatterParams.allowTruthy,
+                           tick = typeof formatterParams.tickElement !== "undefined" ? formatterParams.tickElement : '<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>',
+                           cross = typeof formatterParams.crossElement !== "undefined" ? formatterParams.crossElement : '<svg enable-background="new 0 0 24 24" height="14" width="14"  viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';
+
+                       if (truthy && value || value === true || value === "true" || value === "True" || value === 1 || value === "1") {
+                               element.setAttribute("aria-checked", true);
+                               return tick || "";
+                       } else {
+                               if (empty && (value === "null" || value === "" || value === null || typeof value === "undefined")) {
+                                       element.setAttribute("aria-checked", "mixed");
+                                       return "";
+                               } else {
+                                       element.setAttribute("aria-checked", false);
+                                       return cross || "";
+                               }
+                       }
+               },
+
+               datetime: function datetime(cell, formatterParams, onRendered) {
+                       var inputFormat = formatterParams.inputFormat || "YYYY-MM-DD hh:mm:ss";
+                       var outputFormat = formatterParams.outputFormat || "DD/MM/YYYY hh:mm:ss";
+                       var invalid = typeof formatterParams.invalidPlaceholder !== "undefined" ? formatterParams.invalidPlaceholder : "";
+                       var value = cell.getValue();
+
+                       var newDatetime = moment(value, inputFormat);
+
+                       if (newDatetime.isValid()) {
+                               return newDatetime.format(outputFormat);
+                       } else {
+
+                               if (invalid === true) {
+                                       return value;
+                               } else if (typeof invalid === "function") {
+                                       return invalid(value);
+                               } else {
+                                       return invalid;
+                               }
+                       }
+               },
+
+               datetimediff: function datetime(cell, formatterParams, onRendered) {
+                       var inputFormat = formatterParams.inputFormat || "YYYY-MM-DD hh:mm:ss";
+                       var invalid = typeof formatterParams.invalidPlaceholder !== "undefined" ? formatterParams.invalidPlaceholder : "";
+                       var suffix = typeof formatterParams.suffix !== "undefined" ? formatterParams.suffix : false;
+                       var unit = typeof formatterParams.unit !== "undefined" ? formatterParams.unit : undefined;
+                       var humanize = typeof formatterParams.humanize !== "undefined" ? formatterParams.humanize : false;
+                       var date = typeof formatterParams.date !== "undefined" ? formatterParams.date : moment();
+                       var value = cell.getValue();
+
+                       var newDatetime = moment(value, inputFormat);
+
+                       if (newDatetime.isValid()) {
+                               if (humanize) {
+                                       return moment.duration(newDatetime.diff(date)).humanize(suffix);
+                               } else {
+                                       return newDatetime.diff(date, unit) + (suffix ? " " + suffix : "");
+                               }
+                       } else {
+
+                               if (invalid === true) {
+                                       return value;
+                               } else if (typeof invalid === "function") {
+                                       return invalid(value);
+                               } else {
+                                       return invalid;
+                               }
+                       }
+               },
+
+               //select
+               lookup: function lookup(cell, formatterParams, onRendered) {
+                       var value = cell.getValue();
+
+                       if (typeof formatterParams[value] === "undefined") {
+                               console.warn('Missing display value for ' + value);
+                               return value;
+                       }
+
+                       return formatterParams[value];
+               },
+
+               //star rating
+               star: function star(cell, formatterParams, onRendered) {
+                       var value = cell.getValue(),
+                           element = cell.getElement(),
+                           maxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5,
+                           stars = document.createElement("span"),
+                           star = document.createElementNS('http://www.w3.org/2000/svg', "svg"),
+                           starActive = '<polygon fill="#FFEA00" stroke="#C1AB60" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>',
+                           starInactive = '<polygon fill="#D2D2D2" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>';
+
+                       //style stars holder
+                       stars.style.verticalAlign = "middle";
+
+                       //style star
+                       star.setAttribute("width", "14");
+                       star.setAttribute("height", "14");
+                       star.setAttribute("viewBox", "0 0 512 512");
+                       star.setAttribute("xml:space", "preserve");
+                       star.style.padding = "0 1px";
+
+                       value = value && !isNaN(value) ? parseInt(value) : 0;
+
+                       value = Math.max(0, Math.min(value, maxStars));
+
+                       for (var i = 1; i <= maxStars; i++) {
+                               var nextStar = star.cloneNode(true);
+                               nextStar.innerHTML = i <= value ? starActive : starInactive;
+
+                               stars.appendChild(nextStar);
+                       }
+
+                       element.style.whiteSpace = "nowrap";
+                       element.style.overflow = "hidden";
+                       element.style.textOverflow = "ellipsis";
+
+                       element.setAttribute("aria-label", value);
+
+                       return stars;
+               },
+
+               traffic: function traffic(cell, formatterParams, onRendered) {
+                       var value = this.sanitizeHTML(cell.getValue()) || 0,
+                           el = document.createElement("span"),
+                           max = formatterParams && formatterParams.max ? formatterParams.max : 100,
+                           min = formatterParams && formatterParams.min ? formatterParams.min : 0,
+                           colors = formatterParams && typeof formatterParams.color !== "undefined" ? formatterParams.color : ["red", "orange", "green"],
+                           color = "#666666",
+                           percent,
+                           percentValue;
+
+                       if (isNaN(value) || typeof cell.getValue() === "undefined") {
+                               return;
+                       }
+
+                       el.classList.add("tabulator-traffic-light");
+
+                       //make sure value is in range
+                       percentValue = parseFloat(value) <= max ? parseFloat(value) : max;
+                       percentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;
+
+                       //workout percentage
+                       percent = (max - min) / 100;
+                       percentValue = Math.round((percentValue - min) / percent);
+
+                       //set color
+                       switch (typeof colors === 'undefined' ? 'undefined' : _typeof(colors)) {
+                               case "string":
+                                       color = colors;
+                                       break;
+                               case "function":
+                                       color = colors(value);
+                                       break;
+                               case "object":
+                                       if (Array.isArray(colors)) {
+                                               var unit = 100 / colors.length;
+                                               var index = Math.floor(percentValue / unit);
+
+                                               index = Math.min(index, colors.length - 1);
+                                               index = Math.max(index, 0);
+                                               color = colors[index];
+                                               break;
+                                       }
+                       }
+
+                       el.style.backgroundColor = color;
+
+                       return el;
+               },
+
+               //progress bar
+               progress: function progress(cell, formatterParams, onRendered) {
+                       //progress bar
+                       var value = this.sanitizeHTML(cell.getValue()) || 0,
+                           element = cell.getElement(),
+                           max = formatterParams && formatterParams.max ? formatterParams.max : 100,
+                           min = formatterParams && formatterParams.min ? formatterParams.min : 0,
+                           legendAlign = formatterParams && formatterParams.legendAlign ? formatterParams.legendAlign : "center",
+                           percent,
+                           percentValue,
+                           color,
+                           legend,
+                           legendColor,
+                           top,
+                           left,
+                           right,
+                           bottom;
+
+                       //make sure value is in range
+                       percentValue = parseFloat(value) <= max ? parseFloat(value) : max;
+                       percentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;
+
+                       //workout percentage
+                       percent = (max - min) / 100;
+                       percentValue = Math.round((percentValue - min) / percent);
+
+                       //set bar color
+                       switch (_typeof(formatterParams.color)) {
+                               case "string":
+                                       color = formatterParams.color;
+                                       break;
+                               case "function":
+                                       color = formatterParams.color(value);
+                                       break;
+                               case "object":
+                                       if (Array.isArray(formatterParams.color)) {
+                                               var unit = 100 / formatterParams.color.length;
+                                               var index = Math.floor(percentValue / unit);
+
+                                               index = Math.min(index, formatterParams.color.length - 1);
+                                               index = Math.max(index, 0);
+                                               color = formatterParams.color[index];
+                                               break;
+                                       }
+                               default:
+                                       color = "#2DC214";
+                       }
+
+                       //generate legend
+                       switch (_typeof(formatterParams.legend)) {
+                               case "string":
+                                       legend = formatterParams.legend;
+                                       break;
+                               case "function":
+                                       legend = formatterParams.legend(value);
+                                       break;
+                               case "boolean":
+                                       legend = value;
+                                       break;
+                               default:
+                                       legend = false;
+                       }
+
+                       //set legend color
+                       switch (_typeof(formatterParams.legendColor)) {
+                               case "string":
+                                       legendColor = formatterParams.legendColor;
+                                       break;
+                               case "function":
+                                       legendColor = formatterParams.legendColor(value);
+                                       break;
+                               case "object":
+                                       if (Array.isArray(formatterParams.legendColor)) {
+                                               var unit = 100 / formatterParams.legendColor.length;
+                                               var index = Math.floor(percentValue / unit);
+
+                                               index = Math.min(index, formatterParams.legendColor.length - 1);
+                                               index = Math.max(index, 0);
+                                               legendColor = formatterParams.legendColor[index];
+                                       }
+                                       break;
+                               default:
+                                       legendColor = "#000";
+                       }
+
+                       element.style.minWidth = "30px";
+                       element.style.position = "relative";
+
+                       element.setAttribute("aria-label", percentValue);
+
+                       return "<div style='position:relative; height:100%;'  data-max='" + max + "' data-min='" + min + "'><div style='position:relative; height:100%; width:calc(" + percentValue + "%); background-color:" + color + "; display:inline-block;'></div></div>" + (legend ? "<div style='position:absolute; top:4px; left:0; text-align:" + legendAlign + "; width:100%; color:" + legendColor + ";'>" + legend + "</div>" : "");
+               },
+
+               //background color
+               color: function color(cell, formatterParams, onRendered) {
+                       cell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue());
+                       return "";
+               },
+
+               //tick icon
+               buttonTick: function buttonTick(cell, formatterParams, onRendered) {
+                       return '<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>';
+               },
+
+               //cross icon
+               buttonCross: function buttonCross(cell, formatterParams, onRendered) {
+                       return '<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';
+               },
+
+               //current row number
+               rownum: function rownum(cell, formatterParams, onRendered) {
+                       return this.table.rowManager.activeRows.indexOf(cell.getRow()._getSelf()) + 1;
+               },
+
+               //row handle
+               handle: function handle(cell, formatterParams, onRendered) {
+                       cell.getElement().classList.add("tabulator-row-handle");
+                       return "<div class='tabulator-row-handle-box'><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div></div>";
+               },
+
+               responsiveCollapse: function responsiveCollapse(cell, formatterParams, onRendered) {
+                       var self = this,
+                           open = false,
+                           el = document.createElement("div");
+
+                       function toggleList(isOpen) {
+                               var collapse = cell.getRow().getElement().getElementsByClassName("tabulator-responsive-collapse")[0];
+
+                               open = isOpen;
+
+                               if (open) {
+                                       el.classList.add("open");
+                                       if (collapse) {
+                                               collapse.style.display = '';
+                                       }
+                               } else {
+                                       el.classList.remove("open");
+                                       if (collapse) {
+                                               collapse.style.display = 'none';
+                                       }
+                               }
+                       }
+
+                       el.classList.add("tabulator-responsive-collapse-toggle");
+                       el.innerHTML = "<span class='tabulator-responsive-collapse-toggle-open'>+</span><span class='tabulator-responsive-collapse-toggle-close'>-</span>";
+
+                       cell.getElement().classList.add("tabulator-row-handle");
+
+                       if (self.table.options.responsiveLayoutCollapseStartOpen) {
+                               open = true;
+                       }
+
+                       el.addEventListener("click", function (e) {
+                               e.stopImmediatePropagation();
+                               toggleList(!open);
+                       });
+
+                       toggleList(open);
+
+                       return el;
+               },
+
+               rowSelection: function rowSelection(cell) {
+                       var _this38 = this;
+
+                       var checkbox = document.createElement("input");
+
+                       checkbox.type = 'checkbox';
+
+                       if (this.table.modExists("selectRow", true)) {
+
+                               checkbox.addEventListener("click", function (e) {
+                                       e.stopPropagation();
+                               });
+
+                               if (typeof cell.getRow == 'function') {
+                                       var row = cell.getRow();
+
+                                       checkbox.addEventListener("change", function (e) {
+                                               row.toggleSelect();
+                                       });
+
+                                       checkbox.checked = row.isSelected();
+                                       this.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);
+                               } else {
+                                       checkbox.addEventListener("change", function (e) {
+                                               if (_this38.table.modules.selectRow.selectedRows.length) {
+                                                       _this38.table.deselectRow();
+                                               } else {
+                                                       _this38.table.selectRow();
+                                               }
+                                       });
+
+                                       this.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox);
+                               }
+                       }
+                       return checkbox;
+               }
+       };
+
+       Tabulator.prototype.registerModule("format", Format);
+
+       var FrozenColumns = function FrozenColumns(table) {
+               this.table = table; //hold Tabulator object
+               this.leftColumns = [];
+               this.rightColumns = [];
+               this.leftMargin = 0;
+               this.rightMargin = 0;
+               this.rightPadding = 0;
+               this.initializationMode = "left";
+               this.active = false;
+               this.scrollEndTimer = false;
+       };
+
+       //reset initial state
+       FrozenColumns.prototype.reset = function () {
+               this.initializationMode = "left";
+               this.leftColumns = [];
+               this.rightColumns = [];
+               this.leftMargin = 0;
+               this.rightMargin = 0;
+               this.rightMargin = 0;
+               this.active = false;
+
+               this.table.columnManager.headersElement.style.marginLeft = 0;
+               this.table.columnManager.element.style.paddingRight = 0;
+       };
+
+       //initialize specific column
+       FrozenColumns.prototype.initializeColumn = function (column) {
+               var config = { margin: 0, edge: false };
+
+               if (column.definition.frozen) {
+
+                       if (!column.parent.isGroup) {
+
+                               if (!column.isGroup) {
+                                       config.position = this.initializationMode;
+
+                                       if (this.initializationMode == "left") {
+                                               this.leftColumns.push(column);
+                                       } else {
+                                               this.rightColumns.unshift(column);
+                                       }
+
+                                       this.active = true;
+
+                                       column.modules.frozen = config;
+                               } else {
+                                       console.warn("Frozen Column Error - Column Groups cannot be frozen");
+                               }
+                       } else {
+                               console.warn("Frozen Column Error - Grouped columns cannot be frozen");
+                       }
+               } else {
+                       this.initializationMode = "right";
+               }
+       };
+
+       //quick layout to smooth horizontal scrolling
+       FrozenColumns.prototype.scrollHorizontal = function () {
+               var _this39 = this;
+
+               var rows;
+
+               if (this.active) {
+                       clearTimeout(this.scrollEndTimer);
+
+                       //layout all rows after scroll is complete
+                       this.scrollEndTimer = setTimeout(function () {
+                               _this39.layout();
+                       }, 100);
+
+                       rows = this.table.rowManager.getVisibleRows();
+
+                       this.calcMargins();
+
+                       this.layoutColumnPosition();
+
+                       this.layoutCalcRows();
+
+                       rows.forEach(function (row) {
+                               if (row.type === "row") {
+                                       _this39.layoutRow(row);
+                               }
+                       });
+
+                       this.table.rowManager.tableElement.style.marginRight = this.rightMargin;
+               }
+       };
+
+       //calculate margins for rows
+       FrozenColumns.prototype.calcMargins = 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;
+
+               //calculate right frozen columns
+               this.rightPadding = this.table.rowManager.element.clientWidth + this.table.columnManager.scrollLeft;
+       };
+
+       //layout calculation rows
+       FrozenColumns.prototype.layoutCalcRows = function () {
+               if (this.table.modExists("columnCalcs")) {
+                       if (this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow) {
+                               this.layoutRow(this.table.modules.columnCalcs.topRow);
+                       }
+                       if (this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow) {
+                               this.layoutRow(this.table.modules.columnCalcs.botRow);
+                       }
+               }
+       };
+
+       //calculate column positions and layout headers
+       FrozenColumns.prototype.layoutColumnPosition = function (allCells) {
+               var _this40 = this;
+
+               this.leftColumns.forEach(function (column, i) {
+                       column.modules.frozen.margin = _this40._calcSpace(_this40.leftColumns, i) + _this40.table.columnManager.scrollLeft + "px";
+
+                       if (i == _this40.leftColumns.length - 1) {
+                               column.modules.frozen.edge = true;
+                       } else {
+                               column.modules.frozen.edge = false;
+                       }
+
+                       _this40.layoutElement(column.getElement(), column);
+
+                       if (allCells) {
+                               column.cells.forEach(function (cell) {
+                                       _this40.layoutElement(cell.getElement(), column);
+                               });
+                       }
+               });
+
+               this.rightColumns.forEach(function (column, i) {
+                       column.modules.frozen.margin = _this40.rightPadding - _this40._calcSpace(_this40.rightColumns, i + 1) + "px";
+
+                       if (i == _this40.rightColumns.length - 1) {
+                               column.modules.frozen.edge = true;
+                       } else {
+                               column.modules.frozen.edge = false;
+                       }
+
+                       _this40.layoutElement(column.getElement(), column);
+
+                       if (allCells) {
+                               column.cells.forEach(function (cell) {
+                                       _this40.layoutElement(cell.getElement(), column);
+                               });
+                       }
+               });
+       };
+
+       //layout columns appropropriatly
+       FrozenColumns.prototype.layout = function () {
+               var self = this,
+                   rightMargin = 0;
+
+               if (self.active) {
+
+                       //calculate row padding
+                       this.calcMargins();
+
+                       // self.table.rowManager.activeRows.forEach(function(row){
+                       //      self.layoutRow(row);
+                       // });
+
+                       // if(self.table.options.dataTree){
+                       self.table.rowManager.getDisplayRows().forEach(function (row) {
+                               if (row.type === "row") {
+                                       self.layoutRow(row);
+                               }
+                       });
+                       // }
+
+                       this.layoutCalcRows();
+
+                       //calculate left columns
+                       this.layoutColumnPosition(true);
+
+                       // if(tableHolder.scrollHeight > tableHolder.clientHeight){
+                       //      rightMargin -= tableHolder.offsetWidth - tableHolder.clientWidth;
+                       // }
+
+                       this.table.rowManager.tableElement.style.marginRight = this.rightMargin;
+               }
+       };
+
+       FrozenColumns.prototype.layoutRow = function (row) {
+               var _this41 = this;
+
+               var rowEl = row.getElement();
+
+               rowEl.style.paddingLeft = this.leftMargin;
+               // rowEl.style.paddingRight = this.rightMargin + "px";
+
+               this.leftColumns.forEach(function (column) {
+                       var cell = row.getCell(column);
+
+                       if (cell) {
+                               _this41.layoutElement(cell.getElement(), column);
+                       }
+               });
+
+               this.rightColumns.forEach(function (column) {
+                       var cell = row.getCell(column);
+
+                       if (cell) {
+                               _this41.layoutElement(cell.getElement(), column);
+                       }
+               });
+       };
+
+       FrozenColumns.prototype.layoutElement = function (element, column) {
+
+               if (column.modules.frozen) {
+                       element.style.position = "absolute";
+                       element.style.left = column.modules.frozen.margin;
+
+                       element.classList.add("tabulator-frozen");
+
+                       if (column.modules.frozen.edge) {
+                               element.classList.add("tabulator-frozen-" + column.modules.frozen.position);
+                       }
+               }
+       };
+
+       FrozenColumns.prototype._calcSpace = function (columns, index) {
+               var width = 0;
+
+               for (var i = 0; i < index; i++) {
+                       if (columns[i].visible) {
+                               width += columns[i].getWidth();
+                       }
+               }
+
+               return width;
+       };
+
+       Tabulator.prototype.registerModule("frozenColumns", FrozenColumns);
+       var FrozenRows = function FrozenRows(table) {
+               this.table = table; //hold Tabulator object
+               this.topElement = document.createElement("div");
+               this.rows = [];
+               this.displayIndex = 0; //index in display pipeline
+       };
+
+       FrozenRows.prototype.initialize = function () {
+               this.rows = [];
+
+               this.topElement.classList.add("tabulator-frozen-rows-holder");
+
+               // this.table.columnManager.element.append(this.topElement);
+               this.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);
+       };
+
+       FrozenRows.prototype.setDisplayIndex = function (index) {
+               this.displayIndex = index;
+       };
+
+       FrozenRows.prototype.getDisplayIndex = function () {
+               return this.displayIndex;
+       };
+
+       FrozenRows.prototype.isFrozen = function () {
+               return !!this.rows.length;
+       };
+
+       //filter frozen rows out of display data
+       FrozenRows.prototype.getRows = function (rows) {
+               var self = this,
+                   frozen = [],
+                   output = rows.slice(0);
+
+               this.rows.forEach(function (row) {
+                       var index = output.indexOf(row);
+
+                       if (index > -1) {
+                               output.splice(index, 1);
+                       }
+               });
+
+               return output;
+       };
+
+       FrozenRows.prototype.freezeRow = function (row) {
+               if (!row.modules.frozen) {
+                       row.modules.frozen = true;
+                       this.topElement.appendChild(row.getElement());
+                       row.initialize();
+                       row.normalizeHeight();
+                       this.table.rowManager.adjustTableSize();
+
+                       this.rows.push(row);
+
+                       this.table.rowManager.refreshActiveData("display");
+
+                       this.styleRows();
+               } else {
+                       console.warn("Freeze Error - Row is already frozen");
+               }
+       };
+
+       FrozenRows.prototype.unfreezeRow = function (row) {
+               var index = this.rows.indexOf(row);
+
+               if (row.modules.frozen) {
+
+                       row.modules.frozen = false;
+
+                       var rowEl = row.getElement();
+                       rowEl.parentNode.removeChild(rowEl);
+
+                       this.table.rowManager.adjustTableSize();
+
+                       this.rows.splice(index, 1);
+
+                       this.table.rowManager.refreshActiveData("display");
+
+                       if (this.rows.length) {
+                               this.styleRows();
+                       }
+               } else {
+                       console.warn("Freeze Error - Row is already unfrozen");
+               }
+       };
+
+       FrozenRows.prototype.styleRows = function (row) {
+               var self = this;
+
+               this.rows.forEach(function (row, i) {
+                       self.table.rowManager.styleRow(row, i);
+               });
+       };
+
+       Tabulator.prototype.registerModule("frozenRows", FrozenRows);
+
+       //public group object
+       var GroupComponent = function GroupComponent(group) {
+               this._group = group;
+               this.type = "GroupComponent";
+       };
+
+       GroupComponent.prototype.getKey = function () {
+               return this._group.key;
+       };
+
+       GroupComponent.prototype.getField = function () {
+               return this._group.field;
+       };
+
+       GroupComponent.prototype.getElement = function () {
+               return this._group.element;
+       };
+
+       GroupComponent.prototype.getRows = function () {
+               return this._group.getRows(true);
+       };
+
+       GroupComponent.prototype.getSubGroups = function () {
+               return this._group.getSubGroups(true);
+       };
+
+       GroupComponent.prototype.getParentGroup = function () {
+               return this._group.parent ? this._group.parent.getComponent() : false;
+       };
+
+       GroupComponent.prototype.getVisibility = function () {
+               return this._group.visible;
+       };
+
+       GroupComponent.prototype.show = function () {
+               this._group.show();
+       };
+
+       GroupComponent.prototype.hide = function () {
+               this._group.hide();
+       };
+
+       GroupComponent.prototype.toggle = function () {
+               this._group.toggleVisibility();
+       };
+
+       GroupComponent.prototype._getSelf = function () {
+               return this._group;
+       };
+
+       GroupComponent.prototype.getTable = function () {
+               return this._group.groupManager.table;
+       };
+
+       //////////////////////////////////////////////////
+       //////////////// Group Functions /////////////////
+       //////////////////////////////////////////////////
+
+       var Group = function Group(groupManager, parent, level, key, field, generator, oldGroup) {
+
+               this.groupManager = groupManager;
+               this.parent = parent;
+               this.key = key;
+               this.level = level;
+               this.field = field;
+               this.hasSubGroups = level < groupManager.groupIDLookups.length - 1;
+               this.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow;
+               this.type = "group"; //type of element
+               this.old = oldGroup;
+               this.rows = [];
+               this.groups = [];
+               this.groupList = [];
+               this.generator = generator;
+               this.elementContents = false;
+               this.height = 0;
+               this.outerHeight = 0;
+               this.initialized = false;
+               this.calcs = {};
+               this.initialized = false;
+               this.modules = {};
+               this.arrowElement = false;
+
+               this.visible = oldGroup ? oldGroup.visible : typeof groupManager.startOpen[level] !== "undefined" ? groupManager.startOpen[level] : groupManager.startOpen[0];
+
+               this.createElements();
+               this.addBindings();
+
+               this.createValueGroups();
+       };
+
+       Group.prototype.wipe = function () {
+               if (this.groupList.length) {
+                       this.groupList.forEach(function (group) {
+                               group.wipe();
+                       });
+               } else {
+                       this.element = false;
+                       this.arrowElement = false;
+                       this.elementContents = false;
+               }
+       };
+
+       Group.prototype.createElements = function () {
+               this.element = document.createElement("div");
+               this.element.classList.add("tabulator-row");
+               this.element.classList.add("tabulator-group");
+               this.element.classList.add("tabulator-group-level-" + this.level);
+               this.element.setAttribute("role", "rowgroup");
+
+               this.arrowElement = document.createElement("div");
+               this.arrowElement.classList.add("tabulator-arrow");
+
+               //setup movable rows
+               if (this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists("moveRow")) {
+                       this.groupManager.table.modules.moveRow.initializeGroupHeader(this);
+               }
+       };
+
+       Group.prototype.createValueGroups = function () {
+               var _this42 = this;
+
+               var level = this.level + 1;
+               if (this.groupManager.allowedValues && this.groupManager.allowedValues[level]) {
+                       this.groupManager.allowedValues[level].forEach(function (value) {
+                               _this42._createGroup(value, level);
+                       });
+               }
+       };
+
+       Group.prototype.addBindings = function () {
+               var self = this,
+                   dblTap,
+                   tapHold,
+                   tap,
+                   toggleElement;
+
+               //handle group click events
+               if (self.groupManager.table.options.groupClick) {
+                       self.element.addEventListener("click", function (e) {
+                               self.groupManager.table.options.groupClick(e, self.getComponent());
+                       });
+               }
+
+               if (self.groupManager.table.options.groupDblClick) {
+                       self.element.addEventListener("dblclick", function (e) {
+                               self.groupManager.table.options.groupDblClick(e, self.getComponent());
+                       });
+               }
+
+               if (self.groupManager.table.options.groupContext) {
+                       self.element.addEventListener("contextmenu", function (e) {
+                               self.groupManager.table.options.groupContext(e, self.getComponent());
+                       });
+               }
+
+               if (self.groupManager.table.options.groupTap) {
+
+                       tap = false;
+
+                       self.element.addEventListener("touchstart", function (e) {
+                               tap = true;
+                       }, { passive: true });
+
+                       self.element.addEventListener("touchend", function (e) {
+                               if (tap) {
+                                       self.groupManager.table.options.groupTap(e, self.getComponent());
+                               }
+
+                               tap = false;
+                       });
+               }
+
+               if (self.groupManager.table.options.groupDblTap) {
+
+                       dblTap = null;
+
+                       self.element.addEventListener("touchend", function (e) {
+
+                               if (dblTap) {
+                                       clearTimeout(dblTap);
+                                       dblTap = null;
+
+                                       self.groupManager.table.options.groupDblTap(e, self.getComponent());
+                               } else {
+
+                                       dblTap = setTimeout(function () {
+                                               clearTimeout(dblTap);
+                                               dblTap = null;
+                                       }, 300);
+                               }
+                       });
+               }
+
+               if (self.groupManager.table.options.groupTapHold) {
+
+                       tapHold = null;
+
+                       self.element.addEventListener("touchstart", function (e) {
+                               clearTimeout(tapHold);
+
+                               tapHold = setTimeout(function () {
+                                       clearTimeout(tapHold);
+                                       tapHold = null;
+                                       tap = false;
+                                       self.groupManager.table.options.groupTapHold(e, self.getComponent());
+                               }, 1000);
+                       }, { passive: true });
+
+                       self.element.addEventListener("touchend", function (e) {
+                               clearTimeout(tapHold);
+                               tapHold = null;
+                       });
+               }
+
+               if (self.groupManager.table.options.groupToggleElement) {
+                       toggleElement = self.groupManager.table.options.groupToggleElement == "arrow" ? self.arrowElement : self.element;
+
+                       toggleElement.addEventListener("click", function (e) {
+                               e.stopPropagation();
+                               e.stopImmediatePropagation();
+                               self.toggleVisibility();
+                       });
+               }
+       };
+
+       Group.prototype._createGroup = function (groupID, level) {
+               var groupKey = level + "_" + groupID;
+               var 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);
+
+               this.groups[groupKey] = group;
+               this.groupList.push(group);
+       };
+
+       Group.prototype._addRowToGroup = function (row) {
+
+               var level = this.level + 1;
+
+               if (this.hasSubGroups) {
+                       var groupID = this.groupManager.groupIDLookups[level].func(row.getData()),
+                           groupKey = level + "_" + groupID;
+
+                       if (this.groupManager.allowedValues && this.groupManager.allowedValues[level]) {
+                               if (this.groups[groupKey]) {
+                                       this.groups[groupKey].addRow(row);
+                               }
+                       } else {
+                               if (!this.groups[groupKey]) {
+                                       this._createGroup(groupID, level);
+                               }
+
+                               this.groups[groupKey].addRow(row);
+                       }
+               }
+       };
+
+       Group.prototype._addRow = function (row) {
+               this.rows.push(row);
+               row.modules.group = this;
+       };
+
+       Group.prototype.insertRow = function (row, to, after) {
+               var data = this.conformRowData({});
+
+               row.updateData(data);
+
+               var toIndex = this.rows.indexOf(to);
+
+               if (toIndex > -1) {
+                       if (after) {
+                               this.rows.splice(toIndex + 1, 0, row);
+                       } else {
+                               this.rows.splice(toIndex, 0, row);
+                       }
+               } else {
+                       if (after) {
+                               this.rows.push(row);
+                       } else {
+                               this.rows.unshift(row);
+                       }
+               }
+
+               row.modules.group = this;
+
+               this.generateGroupHeaderContents();
+
+               if (this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.options.columnCalcs != "table") {
+                       this.groupManager.table.modules.columnCalcs.recalcGroup(this);
+               }
+
+               this.groupManager.updateGroupRows(true);
+       };
+
+       Group.prototype.scrollHeader = function (left) {
+               this.arrowElement.style.marginLeft = left;
+
+               this.groupList.forEach(function (child) {
+                       child.scrollHeader(left);
+               });
+       };
+
+       Group.prototype.getRowIndex = function (row) {};
+
+       //update row data to match grouping contraints
+       Group.prototype.conformRowData = function (data) {
+               if (this.field) {
+                       data[this.field] = this.key;
+               } else {
+                       console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function");
+               }
+
+               if (this.parent) {
+                       data = this.parent.conformRowData(data);
+               }
+
+               return data;
+       };
+
+       Group.prototype.removeRow = function (row) {
+               var index = this.rows.indexOf(row);
+               var el = row.getElement();
+
+               if (index > -1) {
+                       this.rows.splice(index, 1);
+               }
+
+               if (!this.groupManager.table.options.groupValues && !this.rows.length) {
+                       if (this.parent) {
+                               this.parent.removeGroup(this);
+                       } else {
+                               this.groupManager.removeGroup(this);
+                       }
+
+                       this.groupManager.updateGroupRows(true);
+               } else {
+
+                       if (el.parentNode) {
+                               el.parentNode.removeChild(el);
+                       }
+
+                       this.generateGroupHeaderContents();
+
+                       if (this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.options.columnCalcs != "table") {
+                               this.groupManager.table.modules.columnCalcs.recalcGroup(this);
+                       }
+               }
+       };
+
+       Group.prototype.removeGroup = function (group) {
+               var groupKey = group.level + "_" + group.key,
+                   index;
+
+               if (this.groups[groupKey]) {
+                       delete this.groups[groupKey];
+
+                       index = this.groupList.indexOf(group);
+
+                       if (index > -1) {
+                               this.groupList.splice(index, 1);
+                       }
+
+                       if (!this.groupList.length) {
+                               if (this.parent) {
+                                       this.parent.removeGroup(this);
+                               } else {
+                                       this.groupManager.removeGroup(this);
+                               }
+                       }
+               }
+       };
+
+       Group.prototype.getHeadersAndRows = function (noCalc) {
+               var output = [];
+
+               output.push(this);
+
+               this._visSet();
+
+               if (this.visible) {
+                       if (this.groupList.length) {
+                               this.groupList.forEach(function (group) {
+                                       output = output.concat(group.getHeadersAndRows(noCalc));
+                               });
+                       } else {
+                               if (!noCalc && this.groupManager.table.options.columnCalcs != "table" && this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()) {
+                                       if (this.calcs.top) {
+                                               this.calcs.top.detachElement();
+                                               this.calcs.top.deleteCells();
+                                       }
+
+                                       this.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);
+                                       output.push(this.calcs.top);
+                               }
+
+                               output = output.concat(this.rows);
+
+                               if (!noCalc && this.groupManager.table.options.columnCalcs != "table" && this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()) {
+                                       if (this.calcs.bottom) {
+                                               this.calcs.bottom.detachElement();
+                                               this.calcs.bottom.deleteCells();
+                                       }
+
+                                       this.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);
+                                       output.push(this.calcs.bottom);
+                               }
+                       }
+               } else {
+                       if (!this.groupList.length && this.groupManager.table.options.columnCalcs != "table") {
+
+                               if (this.groupManager.table.modExists("columnCalcs")) {
+
+                                       if (!noCalc && this.groupManager.table.modules.columnCalcs.hasTopCalcs()) {
+                                               if (this.calcs.top) {
+                                                       this.calcs.top.detachElement();
+                                                       this.calcs.top.deleteCells();
+                                               }
+
+                                               if (this.groupManager.table.options.groupClosedShowCalcs) {
+                                                       this.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);
+                                                       output.push(this.calcs.top);
+                                               }
+                                       }
+
+                                       if (!noCalc && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()) {
+                                               if (this.calcs.bottom) {
+                                                       this.calcs.bottom.detachElement();
+                                                       this.calcs.bottom.deleteCells();
+                                               }
+
+                                               if (this.groupManager.table.options.groupClosedShowCalcs) {
+                                                       this.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);
+                                                       output.push(this.calcs.bottom);
+                                               }
+                                       }
+                               }
+                       }
+               }
+
+               return output;
+       };
+
+       Group.prototype.getData = function (visible, transform) {
+               var self = this,
+                   output = [];
+
+               this._visSet();
+
+               if (!visible || visible && this.visible) {
+                       this.rows.forEach(function (row) {
+                               output.push(row.getData(transform || "data"));
+                       });
+               }
+
+               return output;
+       };
+
+       // Group.prototype.getRows = function(){
+       //      this._visSet();
+
+       //      return this.visible ? this.rows : [];
+       // };
+
+       Group.prototype.getRowCount = function () {
+               var count = 0;
+
+               if (this.groupList.length) {
+                       this.groupList.forEach(function (group) {
+                               count += group.getRowCount();
+                       });
+               } else {
+                       count = this.rows.length;
+               }
+               return count;
+       };
+
+       Group.prototype.toggleVisibility = function () {
+               if (this.visible) {
+                       this.hide();
+               } else {
+                       this.show();
+               }
+       };
+
+       Group.prototype.hide = function () {
+               this.visible = false;
+
+               if (this.groupManager.table.rowManager.getRenderMode() == "classic" && !this.groupManager.table.options.pagination) {
+
+                       this.element.classList.remove("tabulator-group-visible");
+
+                       if (this.groupList.length) {
+                               this.groupList.forEach(function (group) {
+
+                                       var rows = group.getHeadersAndRows();
+
+                                       rows.forEach(function (row) {
+                                               row.detachElement();
+                                       });
+                               });
+                       } else {
+                               this.rows.forEach(function (row) {
+                                       var rowEl = row.getElement();
+                                       rowEl.parentNode.removeChild(rowEl);
+                               });
+                       }
+
+                       this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());
+
+                       this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();
+               } else {
+                       this.groupManager.updateGroupRows(true);
+               }
+
+               this.groupManager.table.options.groupVisibilityChanged.call(this.table, this.getComponent(), false);
+       };
+
+       Group.prototype.show = function () {
+               var self = this;
+
+               self.visible = true;
+
+               if (this.groupManager.table.rowManager.getRenderMode() == "classic" && !this.groupManager.table.options.pagination) {
+
+                       this.element.classList.add("tabulator-group-visible");
+
+                       var prev = self.getElement();
+
+                       if (this.groupList.length) {
+                               this.groupList.forEach(function (group) {
+                                       var rows = group.getHeadersAndRows();
+
+                                       rows.forEach(function (row) {
+                                               var rowEl = row.getElement();
+                                               prev.parentNode.insertBefore(rowEl, prev.nextSibling);
+                                               row.initialize();
+                                               prev = rowEl;
+                                       });
+                               });
+                       } else {
+                               self.rows.forEach(function (row) {
+                                       var rowEl = row.getElement();
+                                       prev.parentNode.insertBefore(rowEl, prev.nextSibling);
+                                       row.initialize();
+                                       prev = rowEl;
+                               });
+                       }
+
+                       this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());
+
+                       this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();
+               } else {
+                       this.groupManager.updateGroupRows(true);
+               }
+
+               this.groupManager.table.options.groupVisibilityChanged.call(this.table, this.getComponent(), true);
+       };
+
+       Group.prototype._visSet = function () {
+               var data = [];
+
+               if (typeof this.visible == "function") {
+
+                       this.rows.forEach(function (row) {
+                               data.push(row.getData());
+                       });
+
+                       this.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent());
+               }
+       };
+
+       Group.prototype.getRowGroup = function (row) {
+               var match = false;
+               if (this.groupList.length) {
+                       this.groupList.forEach(function (group) {
+                               var result = group.getRowGroup(row);
+
+                               if (result) {
+                                       match = result;
+                               }
+                       });
+               } else {
+                       if (this.rows.find(function (item) {
+                               return item === row;
+                       })) {
+                               match = this;
+                       }
+               }
+
+               return match;
+       };
+
+       Group.prototype.getSubGroups = function (component) {
+               var output = [];
+
+               this.groupList.forEach(function (child) {
+                       output.push(component ? child.getComponent() : child);
+               });
+
+               return output;
+       };
+
+       Group.prototype.getRows = function (compoment) {
+               var output = [];
+
+               this.rows.forEach(function (row) {
+                       output.push(compoment ? row.getComponent() : row);
+               });
+
+               return output;
+       };
+
+       Group.prototype.generateGroupHeaderContents = function () {
+               var data = [];
+
+               this.rows.forEach(function (row) {
+                       data.push(row.getData());
+               });
+
+               this.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent());
+
+               while (this.element.firstChild) {
+                       this.element.removeChild(this.element.firstChild);
+               }if (typeof this.elementContents === "string") {
+                       this.element.innerHTML = this.elementContents;
+               } else {
+                       this.element.appendChild(this.elementContents);
+               }
+
+               this.element.insertBefore(this.arrowElement, this.element.firstChild);
+       };
+
+       ////////////// Standard Row Functions //////////////
+
+       Group.prototype.getElement = function () {
+               this.addBindingsd = false;
+
+               this._visSet();
+
+               if (this.visible) {
+                       this.element.classList.add("tabulator-group-visible");
+               } else {
+                       this.element.classList.remove("tabulator-group-visible");
+               }
+
+               for (var i = 0; i < this.element.childNodes.length; ++i) {
+                       this.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]);
+               }
+
+               this.generateGroupHeaderContents();
+
+               // this.addBindings();
+
+               return this.element;
+       };
+
+       Group.prototype.detachElement = function () {
+               if (this.element && this.element.parentNode) {
+                       this.element.parentNode.removeChild(this.element);
+               }
+       };
+
+       //normalize the height of elements in the row
+       Group.prototype.normalizeHeight = function () {
+               this.setHeight(this.element.clientHeight);
+       };
+
+       Group.prototype.initialize = function (force) {
+               if (!this.initialized || force) {
+                       this.normalizeHeight();
+                       this.initialized = true;
+               }
+       };
+
+       Group.prototype.reinitialize = function () {
+               this.initialized = false;
+               this.height = 0;
+
+               if (Tabulator.prototype.helpers.elVisible(this.element)) {
+                       this.initialize(true);
+               }
+       };
+
+       Group.prototype.setHeight = function (height) {
+               if (this.height != height) {
+                       this.height = height;
+                       this.outerHeight = this.element.offsetHeight;
+               }
+       };
+
+       //return rows outer height
+       Group.prototype.getHeight = function () {
+               return this.outerHeight;
+       };
+
+       Group.prototype.getGroup = function () {
+               return this;
+       };
+
+       Group.prototype.reinitializeHeight = function () {};
+       Group.prototype.calcHeight = function () {};
+       Group.prototype.setCellHeight = function () {};
+       Group.prototype.clearCellHeight = function () {};
+
+       //////////////// Object Generation /////////////////
+       Group.prototype.getComponent = function () {
+               return new GroupComponent(this);
+       };
+
+       //////////////////////////////////////////////////
+       ////////////// Group Row Extension ///////////////
+       //////////////////////////////////////////////////
+
+       var GroupRows = function GroupRows(table) {
+
+               this.table = table; //hold Tabulator object
+
+               this.groupIDLookups = false; //enable table grouping and set field to group by
+               this.startOpen = [function () {
+                       return false;
+               }]; //starting state of group
+               this.headerGenerator = [function () {
+                       return "";
+               }];
+               this.groupList = []; //ordered list of groups
+               this.allowedValues = false;
+               this.groups = {}; //hold row groups
+               this.displayIndex = 0; //index in display pipeline
+       };
+
+       //initialize group configuration
+       GroupRows.prototype.initialize = function () {
+               var self = this,
+                   groupBy = self.table.options.groupBy,
+                   startOpen = self.table.options.groupStartOpen,
+                   groupHeader = self.table.options.groupHeader;
+
+               this.allowedValues = self.table.options.groupValues;
+
+               if (Array.isArray(groupBy) && Array.isArray(groupHeader) && groupBy.length > groupHeader.length) {
+                       console.warn("Error creating group headers, groupHeader array is shorter than groupBy array");
+               }
+
+               self.headerGenerator = [function () {
+                       return "";
+               }];
+               this.startOpen = [function () {
+                       return false;
+               }]; //starting state of group
+
+               self.table.modules.localize.bind("groups|item", function (langValue, lang) {
+                       self.headerGenerator[0] = function (value, count, data) {
+                               //header layout function
+                               return (typeof value === "undefined" ? "" : value) + "<span>(" + count + " " + (count === 1 ? langValue : lang.groups.items) + ")</span>";
+                       };
+               });
+
+               this.groupIDLookups = [];
+
+               if (Array.isArray(groupBy) || groupBy) {
+                       if (this.table.modExists("columnCalcs") && this.table.options.columnCalcs != "table" && this.table.options.columnCalcs != "both") {
+                               this.table.modules.columnCalcs.removeCalcs();
+                       }
+               } else {
+                       if (this.table.modExists("columnCalcs") && this.table.options.columnCalcs != "group") {
+
+                               var cols = this.table.columnManager.getRealColumns();
+
+                               cols.forEach(function (col) {
+                                       if (col.definition.topCalc) {
+                                               self.table.modules.columnCalcs.initializeTopRow();
+                                       }
+
+                                       if (col.definition.bottomCalc) {
+                                               self.table.modules.columnCalcs.initializeBottomRow();
+                                       }
+                               });
+                       }
+               }
+
+               if (!Array.isArray(groupBy)) {
+                       groupBy = [groupBy];
+               }
+
+               groupBy.forEach(function (group, i) {
+                       var lookupFunc, column;
+
+                       if (typeof group == "function") {
+                               lookupFunc = group;
+                       } else {
+                               column = self.table.columnManager.getColumnByField(group);
+
+                               if (column) {
+                                       lookupFunc = function lookupFunc(data) {
+                                               return column.getFieldValue(data);
+                                       };
+                               } else {
+                                       lookupFunc = function lookupFunc(data) {
+                                               return data[group];
+                                       };
+                               }
+                       }
+
+                       self.groupIDLookups.push({
+                               field: typeof group === "function" ? false : group,
+                               func: lookupFunc,
+                               values: self.allowedValues ? self.allowedValues[i] : false
+                       });
+               });
+
+               if (startOpen) {
+
+                       if (!Array.isArray(startOpen)) {
+                               startOpen = [startOpen];
+                       }
+
+                       startOpen.forEach(function (level) {
+                               level = typeof level == "function" ? level : function () {
+                                       return true;
+                               };
+                       });
+
+                       self.startOpen = startOpen;
+               }
+
+               if (groupHeader) {
+                       self.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];
+               }
+
+               this.initialized = true;
+       };
+
+       GroupRows.prototype.setDisplayIndex = function (index) {
+               this.displayIndex = index;
+       };
+
+       GroupRows.prototype.getDisplayIndex = function () {
+               return this.displayIndex;
+       };
+
+       //return appropriate rows with group headers
+       GroupRows.prototype.getRows = function (rows) {
+               if (this.groupIDLookups.length) {
+
+                       this.table.options.dataGrouping.call(this.table);
+
+                       this.generateGroups(rows);
+
+                       if (this.table.options.dataGrouped) {
+                               this.table.options.dataGrouped.call(this.table, this.getGroups(true));
+                       }
+
+                       return this.updateGroupRows();
+               } else {
+                       return rows.slice(0);
+               }
+       };
+
+       GroupRows.prototype.getGroups = function (compoment) {
+               var groupComponents = [];
+
+               this.groupList.forEach(function (group) {
+                       groupComponents.push(compoment ? group.getComponent() : group);
+               });
+
+               return groupComponents;
+       };
+
+       GroupRows.prototype.wipe = function () {
+               this.groupList.forEach(function (group) {
+                       group.wipe();
+               });
+       };
+
+       GroupRows.prototype.pullGroupListData = function (groupList) {
+               var self = this;
+               var groupListData = [];
+
+               groupList.forEach(function (group) {
+                       var groupHeader = {};
+                       groupHeader.level = 0;
+                       groupHeader.rowCount = 0;
+                       groupHeader.headerContent = "";
+                       var childData = [];
+
+                       if (group.hasSubGroups) {
+                               childData = self.pullGroupListData(group.groupList);
+
+                               groupHeader.level = group.level;
+                               groupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers
+                               groupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group);
+
+                               groupListData.push(groupHeader);
+                               groupListData = groupListData.concat(childData);
+                       } else {
+                               groupHeader.level = group.level;
+                               groupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group);
+                               groupHeader.rowCount = group.getRows().length;
+
+                               groupListData.push(groupHeader);
+
+                               group.getRows().forEach(function (row) {
+                                       groupListData.push(row.getData("data"));
+                               });
+                       }
+               });
+
+               return groupListData;
+       };
+
+       GroupRows.prototype.getGroupedData = function () {
+
+               return this.pullGroupListData(this.groupList);
+       };
+
+       GroupRows.prototype.getRowGroup = function (row) {
+               var match = false;
+
+               this.groupList.forEach(function (group) {
+                       var result = group.getRowGroup(row);
+
+                       if (result) {
+                               match = result;
+                       }
+               });
+
+               return match;
+       };
+
+       GroupRows.prototype.countGroups = function () {
+               return this.groupList.length;
+       };
+
+       GroupRows.prototype.generateGroups = function (rows) {
+               var self = this,
+                   oldGroups = self.groups;
+
+               self.groups = {};
+               self.groupList = [];
+
+               if (this.allowedValues && this.allowedValues[0]) {
+                       this.allowedValues[0].forEach(function (value) {
+                               self.createGroup(value, 0, oldGroups);
+                       });
+
+                       rows.forEach(function (row) {
+                               self.assignRowToExistingGroup(row, oldGroups);
+                       });
+               } else {
+                       rows.forEach(function (row) {
+                               self.assignRowToGroup(row, oldGroups);
+                       });
+               }
+       };
+
+       GroupRows.prototype.createGroup = function (groupID, level, oldGroups) {
+               var groupKey = level + "_" + groupID,
+                   group;
+
+               oldGroups = oldGroups || [];
+
+               group = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]);
+
+               this.groups[groupKey] = group;
+               this.groupList.push(group);
+       };
+
+       GroupRows.prototype.assignRowToGroup = function (row, oldGroups) {
+               var groupID = this.groupIDLookups[0].func(row.getData()),
+                   groupKey = "0_" + groupID;
+
+               if (!this.groups[groupKey]) {
+                       this.createGroup(groupID, 0, oldGroups);
+               }
+
+               this.groups[groupKey].addRow(row);
+       };
+
+       GroupRows.prototype.assignRowToExistingGroup = function (row, oldGroups) {
+               var groupID = this.groupIDLookups[0].func(row.getData()),
+                   groupKey = "0_" + groupID;
+
+               if (this.groups[groupKey]) {
+                       this.groups[groupKey].addRow(row);
+               }
+       };
+
+       GroupRows.prototype.assignRowToGroup = function (row, oldGroups) {
+               var groupID = this.groupIDLookups[0].func(row.getData()),
+                   newGroupNeeded = !this.groups["0_" + groupID];
+
+               if (newGroupNeeded) {
+                       this.createGroup(groupID, 0, oldGroups);
+               }
+
+               this.groups["0_" + groupID].addRow(row);
+
+               return !newGroupNeeded;
+       };
+
+       GroupRows.prototype.updateGroupRows = function (force) {
+               var self = this,
+                   output = [],
+                   oldRowCount;
+
+               self.groupList.forEach(function (group) {
+                       output = output.concat(group.getHeadersAndRows());
+               });
+
+               //force update of table display
+               if (force) {
+
+                       var displayIndex = self.table.rowManager.setDisplayRows(output, this.getDisplayIndex());
+
+                       if (displayIndex !== true) {
+                               this.setDisplayIndex(displayIndex);
+                       }
+
+                       self.table.rowManager.refreshActiveData("group", true, true);
+               }
+
+               return output;
+       };
+
+       GroupRows.prototype.scrollHeaders = function (left) {
+               left = left + "px";
+
+               this.groupList.forEach(function (group) {
+                       group.scrollHeader(left);
+               });
+       };
+
+       GroupRows.prototype.removeGroup = function (group) {
+               var groupKey = group.level + "_" + group.key,
+                   index;
+
+               if (this.groups[groupKey]) {
+                       delete this.groups[groupKey];
+
+                       index = this.groupList.indexOf(group);
+
+                       if (index > -1) {
+                               this.groupList.splice(index, 1);
+                       }
+               }
+       };
+
+       Tabulator.prototype.registerModule("groupRows", GroupRows);
+       var History = function History(table) {
+               this.table = table; //hold Tabulator object
+
+               this.history = [];
+               this.index = -1;
+       };
+
+       History.prototype.clear = function () {
+               this.history = [];
+               this.index = -1;
+       };
+
+       History.prototype.action = function (type, component, data) {
+
+               this.history = this.history.slice(0, this.index + 1);
+
+               this.history.push({
+                       type: type,
+                       component: component,
+                       data: data
+               });
+
+               this.index++;
+       };
+
+       History.prototype.getHistoryUndoSize = function () {
+               return this.index + 1;
+       };
+
+       History.prototype.getHistoryRedoSize = function () {
+               return this.history.length - (this.index + 1);
+       };
+
+       History.prototype.undo = function () {
+
+               if (this.index > -1) {
+                       var action = this.history[this.index];
+
+                       this.undoers[action.type].call(this, action);
+
+                       this.index--;
+
+                       this.table.options.historyUndo.call(this.table, action.type, action.component.getComponent(), action.data);
+
+                       return true;
+               } else {
+                       console.warn("History Undo Error - No more history to undo");
+                       return false;
+               }
+       };
+
+       History.prototype.redo = function () {
+               if (this.history.length - 1 > this.index) {
+
+                       this.index++;
+
+                       var action = this.history[this.index];
+
+                       this.redoers[action.type].call(this, action);
+
+                       this.table.options.historyRedo.call(this.table, action.type, action.component.getComponent(), action.data);
+
+                       return true;
+               } else {
+                       console.warn("History Redo Error - No more history to redo");
+                       return false;
+               }
+       };
+
+       History.prototype.undoers = {
+               cellEdit: function cellEdit(action) {
+                       action.component.setValueProcessData(action.data.oldValue);
+               },
+
+               rowAdd: function rowAdd(action) {
+                       action.component.deleteActual();
+               },
+
+               rowDelete: function rowDelete(action) {
+                       var newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);
+
+                       if (this.table.options.groupBy && this.table.modExists("groupRows")) {
+                               this.table.modules.groupRows.updateGroupRows(true);
+                       }
+
+                       this._rebindRow(action.component, newRow);
+               },
+
+               rowMove: function rowMove(action) {
+                       this.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.pos], false);
+                       this.table.rowManager.redraw();
+               }
+       };
+
+       History.prototype.redoers = {
+               cellEdit: function cellEdit(action) {
+                       action.component.setValueProcessData(action.data.newValue);
+               },
+
+               rowAdd: function rowAdd(action) {
+                       var newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);
+
+                       if (this.table.options.groupBy && this.table.modExists("groupRows")) {
+                               this.table.modules.groupRows.updateGroupRows(true);
+                       }
+
+                       this._rebindRow(action.component, newRow);
+               },
+
+               rowDelete: function rowDelete(action) {
+                       action.component.deleteActual();
+               },
+
+               rowMove: function rowMove(action) {
+                       this.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.pos], false);
+                       this.table.rowManager.redraw();
+               }
+       };
+
+       //rebind rows to new element after deletion
+       History.prototype._rebindRow = function (oldRow, newRow) {
+               this.history.forEach(function (action) {
+                       if (action.component instanceof Row) {
+                               if (action.component === oldRow) {
+                                       action.component = newRow;
+                               }
+                       } else if (action.component instanceof Cell) {
+                               if (action.component.row === oldRow) {
+                                       var field = action.component.column.getField();
+
+                                       if (field) {
+                                               action.component = newRow.getCell(field);
+                                       }
+                               }
+                       }
+               });
+       };
+
+       Tabulator.prototype.registerModule("history", History);
+       var HtmlTableImport = function HtmlTableImport(table) {
+               this.table = table; //hold Tabulator object
+               this.fieldIndex = [];
+               this.hasIndex = false;
+       };
+
+       HtmlTableImport.prototype.parseTable = function () {
+               var self = this,
+                   element = self.table.element,
+                   options = self.table.options,
+                   columns = options.columns,
+                   headers = element.getElementsByTagName("th"),
+                   rows = element.getElementsByTagName("tbody")[0],
+                   data = [],
+                   newTable;
+
+               self.hasIndex = false;
+
+               self.table.options.htmlImporting.call(this.table);
+
+               rows = rows ? rows.getElementsByTagName("tr") : [];
+
+               //check for tablator inline options
+               self._extractOptions(element, options);
+
+               if (headers.length) {
+                       self._extractHeaders(headers, rows);
+               } else {
+                       self._generateBlankHeaders(headers, rows);
+               }
+
+               //iterate through table rows and build data set
+               for (var index = 0; index < rows.length; index++) {
+                       var row = rows[index],
+                           cells = row.getElementsByTagName("td"),
+                           item = {};
+
+                       //create index if the dont exist in table
+                       if (!self.hasIndex) {
+                               item[options.index] = index;
+                       }
+
+                       for (var i = 0; i < cells.length; i++) {
+                               var cell = cells[i];
+                               if (typeof this.fieldIndex[i] !== "undefined") {
+                                       item[this.fieldIndex[i]] = cell.innerHTML;
+                               }
+                       }
+
+                       //add row data to item
+                       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;
+
+               self.table.options.htmlImported.call(this.table);
+
+               // // newElement.tabulator(options);
+
+               this.table.element = newElement;
+       };
+
+       //extract tabulator attribute options
+       HtmlTableImport.prototype._extractOptions = function (element, options, defaultOptions) {
+               var attributes = element.attributes;
+               var optionsArr = defaultOptions ? Object.assign([], defaultOptions) : Object.keys(options);
+               var optionsList = {};
+
+               optionsArr.forEach(function (item) {
+                       optionsList[item.toLowerCase()] = item;
+               });
+
+               for (var index in attributes) {
+                       var attrib = attributes[index];
+                       var name;
+
+                       if (attrib && (typeof attrib === 'undefined' ? 'undefined' : _typeof(attrib)) == "object" && attrib.name && attrib.name.indexOf("tabulator-") === 0) {
+                               name = attrib.name.replace("tabulator-", "");
+
+                               if (typeof optionsList[name] !== "undefined") {
+                                       options[optionsList[name]] = this._attribValue(attrib.value);
+                               }
+                       }
+               }
+       };
+
+       //get value of attribute
+       HtmlTableImport.prototype._attribValue = function (value) {
+               if (value === "true") {
+                       return true;
+               }
+
+               if (value === "false") {
+                       return false;
+               }
+
+               return value;
+       };
+
+       //find column if it has already been defined
+       HtmlTableImport.prototype._findCol = function (title) {
+               var match = this.table.options.columns.find(function (column) {
+                       return column.title === title;
+               });
+
+               return match || false;
+       };
+
+       //extract column from headers
+       HtmlTableImport.prototype._extractHeaders = function (headers, rows) {
+               for (var index = 0; index < headers.length; index++) {
+                       var header = headers[index],
+                           exists = false,
+                           col = this._findCol(header.textContent),
+                           width,
+                           attributes;
+
+                       if (col) {
+                               exists = true;
+                       } else {
+                               col = { title: header.textContent.trim() };
+                       }
+
+                       if (!col.field) {
+                               col.field = header.textContent.trim().toLowerCase().replace(" ", "_");
+                       }
+
+                       width = header.getAttribute("width");
+
+                       if (width && !col.width) {
+                               col.width = width;
+                       }
+
+                       //check for tablator inline options
+                       attributes = header.attributes;
+
+                       // //check for tablator inline options
+                       this._extractOptions(header, col, Column.prototype.defaultOptionList);
+
+                       for (var i in attributes) {
+                               var attrib = attributes[i],
+                                   name;
+
+                               if (attrib && (typeof attrib === 'undefined' ? 'undefined' : _typeof(attrib)) == "object" && attrib.name && attrib.name.indexOf("tabulator-") === 0) {
+
+                                       name = attrib.name.replace("tabulator-", "");
+
+                                       col[name] = this._attribValue(attrib.value);
+                               }
+                       }
+
+                       this.fieldIndex[index] = col.field;
+
+                       if (col.field == this.table.options.index) {
+                               this.hasIndex = true;
+                       }
+
+                       if (!exists) {
+                               this.table.options.columns.push(col);
+                       }
+               }
+       };
+
+       //generate blank headers
+       HtmlTableImport.prototype._generateBlankHeaders = function (headers, rows) {
+               for (var index = 0; index < headers.length; index++) {
+                       var header = headers[index],
+                           col = { title: "", field: "col" + index };
+
+                       this.fieldIndex[index] = col.field;
+
+                       var width = header.getAttribute("width");
+
+                       if (width) {
+                               col.width = width;
+                       }
+
+                       this.table.options.columns.push(col);
+               }
+       };
+
+       Tabulator.prototype.registerModule("htmlTableImport", HtmlTableImport);
+       var HtmlTableExport = function HtmlTableExport(table) {
+               this.table = table; //hold Tabulator object
+               this.config = {};
+               this.cloneTableStyle = true;
+               this.colVisProp = "";
+       };
+
+       HtmlTableExport.prototype.genereateTable = function (config, style, visible, colVisProp) {
+               this.cloneTableStyle = style;
+               this.config = config || {};
+               this.colVisProp = colVisProp;
+
+               var headers = this.generateHeaderElements();
+               var body = this.generateBodyElements(visible);
+
+               var table = document.createElement("table");
+               table.classList.add("tabulator-print-table");
+               table.appendChild(headers);
+               table.appendChild(body);
+
+               this.mapElementStyles(this.table.element, table, ["border-top", "border-left", "border-right", "border-bottom"]);
+
+               return table;
+       };
+
+       HtmlTableExport.prototype.generateColumnGroupHeaders = function () {
+               var _this43 = this;
+
+               var output = [];
+
+               var columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;
+
+               columns.forEach(function (column) {
+                       var colData = _this43.processColumnGroup(column);
+
+                       if (colData) {
+                               output.push(colData);
+                       }
+               });
+
+               return output;
+       };
+
+       HtmlTableExport.prototype.processColumnGroup = function (column) {
+               var _this44 = this;
+
+               var subGroups = column.columns,
+                   maxDepth = 0;
+
+               var groupData = {
+                       title: column.definition.title,
+                       column: column,
+                       depth: 1
+               };
+
+               if (subGroups.length) {
+                       groupData.subGroups = [];
+                       groupData.width = 0;
+
+                       subGroups.forEach(function (subGroup) {
+                               var subGroupData = _this44.processColumnGroup(subGroup);
+
+                               if (subGroupData) {
+                                       groupData.width += subGroupData.width;
+                                       groupData.subGroups.push(subGroupData);
+
+                                       if (subGroupData.depth > maxDepth) {
+                                               maxDepth = subGroupData.depth;
+                                       }
+                               }
+                       });
+
+                       groupData.depth += maxDepth;
+
+                       if (!groupData.width) {
+                               return false;
+                       }
+               } else {
+                       if (this.columnVisCheck(column)) {
+                               groupData.width = 1;
+                       } else {
+                               return false;
+                       }
+               }
+
+               return groupData;
+       };
+
+       HtmlTableExport.prototype.groupHeadersToRows = function (columns) {
+
+               var headers = [],
+                   headerDepth = 0;
+
+               function parseColumnGroup(column, level) {
+
+                       var depth = headerDepth - level;
+
+                       if (typeof headers[level] === "undefined") {
+                               headers[level] = [];
+                       }
+
+                       column.height = column.subGroups ? 1 : depth - column.depth + 1;
+
+                       headers[level].push(column);
+
+                       if (column.subGroups) {
+                               column.subGroups.forEach(function (subGroup) {
+                                       parseColumnGroup(subGroup, level + 1);
+                               });
+                       }
+               }
+
+               //calculate maximum header debth
+               columns.forEach(function (column) {
+                       if (column.depth > headerDepth) {
+                               headerDepth = column.depth;
+                       }
+               });
+
+               columns.forEach(function (column) {
+                       parseColumnGroup(column, 0);
+               });
+
+               return headers;
+       };
+
+       HtmlTableExport.prototype.generateHeaderElements = function () {
+               var _this45 = this;
+
+               var headerEl = document.createElement("thead");
+
+               var rows = this.groupHeadersToRows(this.generateColumnGroupHeaders());
+
+               rows.forEach(function (row) {
+                       var rowEl = document.createElement("tr");
+
+                       _this45.mapElementStyles(_this45.table.columnManager.getHeadersElement(), headerEl, ["border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
+
+                       row.forEach(function (column) {
+                               var cellEl = document.createElement("th");
+
+                               cellEl.colSpan = column.width;
+                               cellEl.rowSpan = column.height;
+
+                               cellEl.innerHTML = column.column.definition.title;
+
+                               if (_this45.cloneTableStyle) {
+                                       cellEl.style.boxSizing = "border-box";
+                               }
+
+                               _this45.mapElementStyles(column.column.getElement(), cellEl, ["text-align", "border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
+                               _this45.mapElementStyles(column.column.contentElement, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom"]);
+
+                               if (column.column.visible) {
+                                       _this45.mapElementStyles(column.column.getElement(), cellEl, ["width"]);
+                               } else {
+                                       if (column.column.definition.width) {
+                                               cellEl.style.width = column.column.definition.width + "px";
+                                       }
+                               }
+
+                               if (column.column.parent) {
+                                       _this45.mapElementStyles(column.column.parent.groupElement, cellEl, ["border-top"]);
+                               }
+
+                               rowEl.appendChild(cellEl);
+                       });
+
+                       headerEl.appendChild(rowEl);
+               });
+
+               return headerEl;
+       };
+
+       HtmlTableExport.prototype.generateBodyElements = function (visible) {
+               var _this46 = this;
+
+               var oddRow, evenRow, calcRow, firstRow, firstCell, firstGroup, lastCell, styleCells, styleRow;
+
+               //lookup row styles
+               if (this.cloneTableStyle && window.getComputedStyle) {
+                       oddRow = this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)");
+                       evenRow = this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)");
+                       calcRow = this.table.element.querySelector(".tabulator-row.tabulator-calcs");
+                       firstRow = this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)");
+                       firstGroup = this.table.element.getElementsByClassName("tabulator-group")[0];
+
+                       if (firstRow) {
+                               styleCells = firstRow.getElementsByClassName("tabulator-cell");
+                               firstCell = styleCells[0];
+                               lastCell = styleCells[styleCells.length - 1];
+                       }
+               }
+
+               var bodyEl = document.createElement("tbody");
+
+               var rows = visible ? this.table.rowManager.getVisibleRows(true) : this.table.rowManager.getDisplayRows();
+               var columns = [];
+
+               if (this.config.columnCalcs !== false && this.table.modExists("columnCalcs")) {
+                       if (this.table.modules.columnCalcs.topInitialized) {
+                               rows.unshift(this.table.modules.columnCalcs.topRow);
+                       }
+
+                       if (this.table.modules.columnCalcs.botInitialized) {
+                               rows.push(this.table.modules.columnCalcs.botRow);
+                       }
+               }
+
+               this.table.columnManager.columnsByIndex.forEach(function (column) {
+                       if (_this46.columnVisCheck(column)) {
+                               columns.push(column);
+                       }
+               });
+
+               rows = rows.filter(function (row) {
+                       switch (row.type) {
+                               case "group":
+                                       return _this46.config.rowGroups !== false;
+                                       break;
+
+                               case "calc":
+                                       return _this46.config.columnCalcs !== false;
+                                       break;
+                       }
+
+                       return true;
+               });
+
+               if (rows.length > 1000) {
+                       console.warn("It may take a long time to render an HTML table with more than 1000 rows");
+               }
+
+               rows.forEach(function (row, i) {
+                       var rowData = row.getData();
+
+                       var rowEl = document.createElement("tr");
+                       rowEl.classList.add("tabulator-print-table-row");
+
+                       switch (row.type) {
+                               case "group":
+                                       var cellEl = document.createElement("td");
+                                       cellEl.colSpan = columns.length;
+                                       cellEl.innerHTML = row.key;
+
+                                       rowEl.classList.add("tabulator-print-table-group");
+
+                                       _this46.mapElementStyles(firstGroup, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]);
+                                       _this46.mapElementStyles(firstGroup, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom"]);
+                                       rowEl.appendChild(cellEl);
+                                       break;
+
+                               case "calc":
+                                       rowEl.classList.add("tabulator-print-table-calcs");
+
+                               case "row":
+                                       columns.forEach(function (column) {
+                                               var cellEl = document.createElement("td");
+
+                                               var value = column.getFieldValue(rowData);
+
+                                               var cellWrapper = {
+                                                       getValue: function getValue() {
+                                                               return value;
+                                                       },
+                                                       getField: function getField() {
+                                                               return column.defi;
+                                                       },
+                                                       getElement: function getElement() {
+                                                               return cellEl;
+                                                       },
+                                                       getColumn: function getColumn() {
+                                                               return column.getComponent();
+                                                       },
+                                                       getData: function getData() {
+                                                               return rowData;
+                                                       },
+                                                       getRow: function getRow() {
+                                                               return row.getComponent();
+                                                       },
+                                                       getComponent: function getComponent() {
+                                                               return cellWrapper;
+                                                       },
+                                                       column: column
+                                               };
+
+                                               if (_this46.table.modExists("format")) {
+                                                       value = _this46.table.modules.format.formatValue(cellWrapper);
+                                               } else {
+                                                       switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
+                                                               case "object":
+                                                                       value = JSON.stringify(value);
+                                                                       break;
+
+                                                               case "undefined":
+                                                               case "null":
+                                                                       value = "";
+                                                                       break;
+
+                                                               default:
+                                                                       value = value;
+                                                       }
+                                               }
+
+                                               if (value instanceof Node) {
+                                                       cellEl.appendChild(value);
+                                               } else {
+                                                       cellEl.innerHTML = value;
+                                               }
+
+                                               if (firstCell) {
+                                                       _this46.mapElementStyles(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", "text-align"]);
+                                               }
+
+                                               rowEl.appendChild(cellEl);
+                                       });
+
+                                       styleRow = row.type == "calc" ? calcRow : i % 2 && evenRow ? evenRow : oddRow;
+
+                                       _this46.mapElementStyles(styleRow, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]);
+                                       break;
+                       }
+
+                       bodyEl.appendChild(rowEl);
+               });
+
+               return bodyEl;
+       };
+
+       HtmlTableExport.prototype.columnVisCheck = function (column) {
+               return column.definition[this.colVisProp] !== false && (column.visible || !column.visible && column.definition[this.colVisProp]);
+       };
+
+       HtmlTableExport.prototype.getHtml = function (visible, style, config) {
+               var holder = document.createElement("div");
+
+               holder.appendChild(this.genereateTable(config || this.table.options.htmlOutputConfig, style, visible, "htmlOutput"));
+
+               return holder.innerHTML;
+       };
+
+       HtmlTableExport.prototype.mapElementStyles = function (from, to, props) {
+               if (this.cloneTableStyle && from && to) {
+
+                       var lookup = {
+                               "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 fromStyle = window.getComputedStyle(from);
+
+                               props.forEach(function (prop) {
+                                       to.style[lookup[prop]] = fromStyle.getPropertyValue(prop);
+                               });
+                       }
+               }
+       };
+
+       Tabulator.prototype.registerModule("htmlTableExport", HtmlTableExport);
+
+       var Keybindings = function Keybindings(table) {
+               this.table = table; //hold Tabulator object
+               this.watchKeys = null;
+               this.pressedKeys = null;
+               this.keyupBinding = false;
+               this.keydownBinding = false;
+       };
+
+       Keybindings.prototype.initialize = function () {
+               var bindings = this.table.options.keybindings,
+                   mergedBindings = {};
+
+               this.watchKeys = {};
+               this.pressedKeys = [];
+
+               if (bindings !== false) {
+
+                       for (var key in this.bindings) {
+                               mergedBindings[key] = this.bindings[key];
+                       }
+
+                       if (Object.keys(bindings).length) {
+
+                               for (var _key in bindings) {
+                                       mergedBindings[_key] = bindings[_key];
+                               }
+                       }
+
+                       this.mapBindings(mergedBindings);
+                       this.bindEvents();
+               }
+       };
+
+       Keybindings.prototype.mapBindings = function (bindings) {
+               var _this47 = this;
+
+               var self = this;
+
+               var _loop2 = function _loop2(key) {
+
+                       if (_this47.actions[key]) {
+
+                               if (bindings[key]) {
+
+                                       if (_typeof(bindings[key]) !== "object") {
+                                               bindings[key] = [bindings[key]];
+                                       }
+
+                                       bindings[key].forEach(function (binding) {
+                                               self.mapBinding(key, binding);
+                                       });
+                               }
+                       } else {
+                               console.warn("Key Binding Error - no such action:", key);
+                       }
+               };
+
+               for (var key in bindings) {
+                       _loop2(key);
+               }
+       };
+
+       Keybindings.prototype.mapBinding = function (action, symbolsList) {
+               var self = this;
+
+               var binding = {
+                       action: this.actions[action],
+                       keys: [],
+                       ctrl: false,
+                       shift: false
+               };
+
+               var symbols = symbolsList.toString().toLowerCase().split(" ").join("").split("+");
+
+               symbols.forEach(function (symbol) {
+                       switch (symbol) {
+                               case "ctrl":
+                                       binding.ctrl = true;
+                                       break;
+
+                               case "shift":
+                                       binding.shift = true;
+                                       break;
+
+                               default:
+                                       symbol = parseInt(symbol);
+                                       binding.keys.push(symbol);
+
+                                       if (!self.watchKeys[symbol]) {
+                                               self.watchKeys[symbol] = [];
+                                       }
+
+                                       self.watchKeys[symbol].push(binding);
+                       }
+               });
+       };
+
+       Keybindings.prototype.bindEvents = function () {
+               var self = this;
+
+               this.keyupBinding = function (e) {
+                       var code = e.keyCode;
+                       var bindings = self.watchKeys[code];
+
+                       if (bindings) {
+
+                               self.pressedKeys.push(code);
+
+                               bindings.forEach(function (binding) {
+                                       self.checkBinding(e, binding);
+                               });
+                       }
+               };
+
+               this.keydownBinding = function (e) {
+                       var code = e.keyCode;
+                       var bindings = self.watchKeys[code];
+
+                       if (bindings) {
+
+                               var index = self.pressedKeys.indexOf(code);
+
+                               if (index > -1) {
+                                       self.pressedKeys.splice(index, 1);
+                               }
+                       }
+               };
+
+               this.table.element.addEventListener("keydown", this.keyupBinding);
+
+               this.table.element.addEventListener("keyup", this.keydownBinding);
+       };
+
+       Keybindings.prototype.clearBindings = function () {
+               if (this.keyupBinding) {
+                       this.table.element.removeEventListener("keydown", this.keyupBinding);
+               }
+
+               if (this.keydownBinding) {
+                       this.table.element.removeEventListener("keyup", this.keydownBinding);
+               }
+       };
+
+       Keybindings.prototype.checkBinding = function (e, binding) {
+               var self = this,
+                   match = true;
+
+               if (e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift) {
+                       binding.keys.forEach(function (key) {
+                               var index = self.pressedKeys.indexOf(key);
+
+                               if (index == -1) {
+                                       match = false;
+                               }
+                       });
+
+                       if (match) {
+                               binding.action.call(self, e);
+                       }
+
+                       return true;
+               }
+
+               return false;
+       };
+
+       //default bindings
+       Keybindings.prototype.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"
+       };
+
+       //default actions
+       Keybindings.prototype.actions = {
+               keyBlock: function keyBlock(e) {
+                       e.stopPropagation();
+                       e.preventDefault();
+               },
+               scrollPageUp: function scrollPageUp(e) {
+                       var rowManager = this.table.rowManager,
+                           newPos = rowManager.scrollTop - rowManager.height,
+                           scrollMax = rowManager.element.scrollHeight;
+
+                       e.preventDefault();
+
+                       if (rowManager.displayRowsCount) {
+                               if (newPos >= 0) {
+                                       rowManager.element.scrollTop = newPos;
+                               } else {
+                                       rowManager.scrollToRow(rowManager.getDisplayRows()[0]);
+                               }
+                       }
+
+                       this.table.element.focus();
+               },
+               scrollPageDown: function scrollPageDown(e) {
+                       var rowManager = this.table.rowManager,
+                           newPos = rowManager.scrollTop + rowManager.height,
+                           scrollMax = rowManager.element.scrollHeight;
+
+                       e.preventDefault();
+
+                       if (rowManager.displayRowsCount) {
+                               if (newPos <= scrollMax) {
+                                       rowManager.element.scrollTop = newPos;
+                               } else {
+                                       rowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);
+                               }
+                       }
+
+                       this.table.element.focus();
+               },
+               scrollToStart: function scrollToStart(e) {
+                       var rowManager = this.table.rowManager;
+
+                       e.preventDefault();
+
+                       if (rowManager.displayRowsCount) {
+                               rowManager.scrollToRow(rowManager.getDisplayRows()[0]);
+                       }
+
+                       this.table.element.focus();
+               },
+               scrollToEnd: function scrollToEnd(e) {
+                       var rowManager = this.table.rowManager;
+
+                       e.preventDefault();
+
+                       if (rowManager.displayRowsCount) {
+                               rowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);
+                       }
+
+                       this.table.element.focus();
+               },
+               navPrev: function navPrev(e) {
+                       var cell = false;
+
+                       if (this.table.modExists("edit")) {
+                               cell = this.table.modules.edit.currentCell;
+
+                               if (cell) {
+                                       e.preventDefault();
+                                       cell.nav().prev();
+                               }
+                       }
+               },
+
+               navNext: function navNext(e) {
+                       var cell = false;
+                       var newRow = this.table.options.tabEndNewRow;
+                       var nav;
+
+                       if (this.table.modExists("edit")) {
+                               cell = this.table.modules.edit.currentCell;
+
+                               if (cell) {
+                                       e.preventDefault();
+
+                                       nav = cell.nav();
+
+                                       if (!nav.next()) {
+                                               if (newRow) {
+                                                       if (newRow === true) {
+                                                               newRow = this.table.addRow({});
+                                                       } else {
+                                                               if (typeof newRow == "function") {
+                                                                       newRow = this.table.addRow(newRow(cell.row.getComponent()));
+                                                               } else {
+                                                                       newRow = this.table.addRow(newRow);
+                                                               }
+                                                       }
+
+                                                       newRow.then(function () {
+                                                               nav.next();
+                                                       });
+                                               }
+                                       }
+                               }
+                       }
+               },
+
+               navLeft: function navLeft(e) {
+                       var cell = false;
+
+                       if (this.table.modExists("edit")) {
+                               cell = this.table.modules.edit.currentCell;
+
+                               if (cell) {
+                                       e.preventDefault();
+                                       cell.nav().left();
+                               }
+                       }
+               },
+
+               navRight: function navRight(e) {
+                       var cell = false;
+
+                       if (this.table.modExists("edit")) {
+                               cell = this.table.modules.edit.currentCell;
+
+                               if (cell) {
+                                       e.preventDefault();
+                                       cell.nav().right();
+                               }
+                       }
+               },
+
+               navUp: function navUp(e) {
+                       var cell = false;
+
+                       if (this.table.modExists("edit")) {
+                               cell = this.table.modules.edit.currentCell;
+
+                               if (cell) {
+                                       e.preventDefault();
+                                       cell.nav().up();
+                               }
+                       }
+               },
+
+               navDown: function navDown(e) {
+                       var cell = false;
+
+                       if (this.table.modExists("edit")) {
+                               cell = this.table.modules.edit.currentCell;
+
+                               if (cell) {
+                                       e.preventDefault();
+                                       cell.nav().down();
+                               }
+                       }
+               },
+
+               undo: function undo(e) {
+                       var cell = false;
+                       if (this.table.options.history && this.table.modExists("history") && this.table.modExists("edit")) {
+
+                               cell = this.table.modules.edit.currentCell;
+
+                               if (!cell) {
+                                       e.preventDefault();
+                                       this.table.modules.history.undo();
+                               }
+                       }
+               },
+
+               redo: function redo(e) {
+                       var cell = false;
+                       if (this.table.options.history && this.table.modExists("history") && this.table.modExists("edit")) {
+
+                               cell = this.table.modules.edit.currentCell;
+
+                               if (!cell) {
+                                       e.preventDefault();
+                                       this.table.modules.history.redo();
+                               }
+                       }
+               },
+
+               copyToClipboard: function copyToClipboard(e) {
+                       if (!this.table.modules.edit.currentCell) {
+                               if (this.table.modExists("clipboard", true)) {
+                                       this.table.modules.clipboard.copy(!this.table.options.selectable || this.table.options.selectable == "highlight" ? "active" : "selected", null, null, null, true);
+                               }
+                       }
+               }
+       };
+
+       Tabulator.prototype.registerModule("keybindings", Keybindings);
+       var MoveColumns = function MoveColumns(table) {
+               this.table = table; //hold Tabulator object
+               this.placeholderElement = this.createPlaceholderElement();
+               this.hoverElement = false; //floating column header element
+               this.checkTimeout = false; //click check timeout holder
+               this.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click
+               this.moving = false; //currently moving column
+               this.toCol = false; //destination column
+               this.toColAfter = false; //position of moving column relative to the desitnation column
+               this.startX = 0; //starting position within header element
+               this.autoScrollMargin = 40; //auto scroll on edge when within margin
+               this.autoScrollStep = 5; //auto scroll distance in pixels
+               this.autoScrollTimeout = false; //auto scroll timeout
+               this.touchMove = false;
+
+               this.moveHover = this.moveHover.bind(this);
+               this.endMove = this.endMove.bind(this);
+       };
+
+       MoveColumns.prototype.createPlaceholderElement = function () {
+               var el = document.createElement("div");
+
+               el.classList.add("tabulator-col");
+               el.classList.add("tabulator-col-placeholder");
+
+               return el;
+       };
+
+       MoveColumns.prototype.initializeColumn = function (column) {
+               var self = this,
+                   config = {},
+                   colEl;
+
+               if (!column.modules.frozen) {
+
+                       colEl = column.getElement();
+
+                       config.mousemove = function (e) {
+                               if (column.parent === self.moving.parent) {
+                                       if ((self.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.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);
+                                               }
+                                       } else {
+                                               if (self.toCol !== column || self.toColAfter) {
+                                                       colEl.parentNode.insertBefore(self.placeholderElement, colEl);
+                                                       self.moveColumn(column, false);
+                                               }
+                                       }
+                               }
+                       }.bind(self);
+
+                       colEl.addEventListener("mousedown", function (e) {
+                               self.touchMove = false;
+                               if (e.which === 1) {
+                                       self.checkTimeout = setTimeout(function () {
+                                               self.startMove(e, column);
+                                       }, self.checkPeriod);
+                               }
+                       });
+
+                       colEl.addEventListener("mouseup", function (e) {
+                               if (e.which === 1) {
+                                       if (self.checkTimeout) {
+                                               clearTimeout(self.checkTimeout);
+                                       }
+                               }
+                       });
+
+                       self.bindTouchEvents(column);
+               }
+
+               column.modules.moveColumn = config;
+       };
+
+       MoveColumns.prototype.bindTouchEvents = function (column) {
+               var self = this,
+                   colEl = column.getElement(),
+                   startXMove = false,
+                   //shifting center position of the cell
+               dir = false,
+                   currentCol,
+                   nextCol,
+                   prevCol,
+                   nextColWidth,
+                   prevColWidth,
+                   nextColWidthLast,
+                   prevColWidthLast;
+
+               colEl.addEventListener("touchstart", function (e) {
+                       self.checkTimeout = setTimeout(function () {
+                               self.touchMove = true;
+                               currentCol = column;
+                               nextCol = column.nextColumn();
+                               nextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;
+                               prevCol = column.prevColumn();
+                               prevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;
+                               nextColWidthLast = 0;
+                               prevColWidthLast = 0;
+                               startXMove = false;
+
+                               self.startMove(e, column);
+                       }, self.checkPeriod);
+               }, { passive: true });
+
+               colEl.addEventListener("touchmove", function (e) {
+                       var halfCol, diff, moveToCol;
+
+                       if (self.moving) {
+                               self.moveHover(e);
+
+                               if (!startXMove) {
+                                       startXMove = e.touches[0].pageX;
+                               }
+
+                               diff = e.touches[0].pageX - startXMove;
+
+                               if (diff > 0) {
+                                       if (nextCol && diff - nextColWidthLast > nextColWidth) {
+                                               moveToCol = nextCol;
+
+                                               if (moveToCol !== column) {
+                                                       startXMove = e.touches[0].pageX;
+                                                       moveToCol.getElement().parentNode.insertBefore(self.placeholderElement, moveToCol.getElement().nextSibling);
+                                                       self.moveColumn(moveToCol, true);
+                                               }
+                                       }
+                               } else {
+                                       if (prevCol && -diff - prevColWidthLast > prevColWidth) {
+                                               moveToCol = prevCol;
+
+                                               if (moveToCol !== column) {
+                                                       startXMove = e.touches[0].pageX;
+                                                       moveToCol.getElement().parentNode.insertBefore(self.placeholderElement, moveToCol.getElement());
+                                                       self.moveColumn(moveToCol, false);
+                                               }
+                                       }
+                               }
+
+                               if (moveToCol) {
+                                       currentCol = moveToCol;
+                                       nextCol = moveToCol.nextColumn();
+                                       nextColWidthLast = nextColWidth;
+                                       nextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;
+                                       prevCol = moveToCol.prevColumn();
+                                       prevColWidthLast = prevColWidth;
+                                       prevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;
+                               }
+                       }
+               }, { passive: true });
+
+               colEl.addEventListener("touchend", function (e) {
+                       if (self.checkTimeout) {
+                               clearTimeout(self.checkTimeout);
+                       }
+                       if (self.moving) {
+                               self.endMove(e);
+                       }
+               });
+       };
+
+       MoveColumns.prototype.startMove = function (e, column) {
+               var element = column.getElement();
+
+               this.moving = column;
+               this.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.helpers.elOffset(element).left;
+
+               this.table.element.classList.add("tabulator-block-select");
+
+               //create placeholder
+               this.placeholderElement.style.width = column.getWidth() + "px";
+               this.placeholderElement.style.height = column.getHeight() + "px";
+
+               element.parentNode.insertBefore(this.placeholderElement, element);
+               element.parentNode.removeChild(element);
+
+               //create hover element
+               this.hoverElement = element.cloneNode(true);
+               this.hoverElement.classList.add("tabulator-moving");
+
+               this.table.columnManager.getElement().appendChild(this.hoverElement);
+
+               this.hoverElement.style.left = "0";
+               this.hoverElement.style.bottom = "0";
+
+               if (!this.touchMove) {
+                       this._bindMouseMove();
+
+                       document.body.addEventListener("mousemove", this.moveHover);
+                       document.body.addEventListener("mouseup", this.endMove);
+               }
+
+               this.moveHover(e);
+       };
+
+       MoveColumns.prototype._bindMouseMove = function () {
+               this.table.columnManager.columnsByIndex.forEach(function (column) {
+                       if (column.modules.moveColumn.mousemove) {
+                               column.getElement().addEventListener("mousemove", column.modules.moveColumn.mousemove);
+                       }
+               });
+       };
+
+       MoveColumns.prototype._unbindMouseMove = function () {
+               this.table.columnManager.columnsByIndex.forEach(function (column) {
+                       if (column.modules.moveColumn.mousemove) {
+                               column.getElement().removeEventListener("mousemove", column.modules.moveColumn.mousemove);
+                       }
+               });
+       };
+
+       MoveColumns.prototype.moveColumn = function (column, after) {
+               var movingCells = this.moving.getCells();
+
+               this.toCol = column;
+               this.toColAfter = after;
+
+               if (after) {
+                       column.getCells().forEach(function (cell, i) {
+                               var cellEl = cell.getElement();
+                               cellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling);
+                       });
+               } else {
+                       column.getCells().forEach(function (cell, i) {
+                               var cellEl = cell.getElement();
+                               cellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl);
+                       });
+               }
+       };
+
+       MoveColumns.prototype.endMove = function (e) {
+               if (e.which === 1 || 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");
+
+                       if (this.toCol) {
+                               this.table.columnManager.moveColumnActual(this.moving, this.toCol, this.toColAfter);
+                       }
+
+                       this.moving = false;
+                       this.toCol = false;
+                       this.toColAfter = false;
+
+                       if (!this.touchMove) {
+                               document.body.removeEventListener("mousemove", this.moveHover);
+                               document.body.removeEventListener("mouseup", this.endMove);
+                       }
+               }
+       };
+
+       MoveColumns.prototype.moveHover = function (e) {
+               var self = this,
+                   columnHolder = self.table.columnManager.getElement(),
+                   scrollLeft = columnHolder.scrollLeft,
+                   xPos = (self.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.helpers.elOffset(columnHolder).left + scrollLeft,
+                   scrollPos;
+
+               self.hoverElement.style.left = xPos - self.startX + "px";
+
+               if (xPos - scrollLeft < self.autoScrollMargin) {
+                       if (!self.autoScrollTimeout) {
+                               self.autoScrollTimeout = setTimeout(function () {
+                                       scrollPos = Math.max(0, scrollLeft - 5);
+                                       self.table.rowManager.getElement().scrollLeft = scrollPos;
+                                       self.autoScrollTimeout = false;
+                               }, 1);
+                       }
+               }
+
+               if (scrollLeft + columnHolder.clientWidth - xPos < self.autoScrollMargin) {
+                       if (!self.autoScrollTimeout) {
+                               self.autoScrollTimeout = setTimeout(function () {
+                                       scrollPos = Math.min(columnHolder.clientWidth, scrollLeft + 5);
+                                       self.table.rowManager.getElement().scrollLeft = scrollPos;
+                                       self.autoScrollTimeout = false;
+                               }, 1);
+                       }
+               }
+       };
+
+       Tabulator.prototype.registerModule("moveColumn", MoveColumns);
+
+       var MoveRows = function MoveRows(table) {
+
+               this.table = table; //hold Tabulator object
+               this.placeholderElement = this.createPlaceholderElement();
+               this.hoverElement = false; //floating row header element
+               this.checkTimeout = false; //click check timeout holder
+               this.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click
+               this.moving = false; //currently moving row
+               this.toRow = false; //destination row
+               this.toRowAfter = false; //position of moving row relative to the desitnation row
+               this.hasHandle = false; //row has handle instead of fully movable row
+               this.startY = 0; //starting Y position within header element
+               this.startX = 0; //starting X position within header element
+
+               this.moveHover = this.moveHover.bind(this);
+               this.endMove = this.endMove.bind(this);
+               this.tableRowDropEvent = false;
+
+               this.touchMove = false;
+
+               this.connection = false;
+               this.connections = [];
+
+               this.connectedTable = false;
+               this.connectedRow = false;
+       };
+
+       MoveRows.prototype.createPlaceholderElement = function () {
+               var el = document.createElement("div");
+
+               el.classList.add("tabulator-row");
+               el.classList.add("tabulator-row-placeholder");
+
+               return el;
+       };
+
+       MoveRows.prototype.initialize = function (handle) {
+               this.connection = this.table.options.movableRowsConnectedTables;
+       };
+
+       MoveRows.prototype.setHandle = function (handle) {
+               this.hasHandle = handle;
+       };
+
+       MoveRows.prototype.initializeGroupHeader = function (group) {
+               var self = this,
+                   config = {},
+                   rowEl;
+
+               //inter table drag drop
+               config.mouseup = function (e) {
+                       self.tableRowDrop(e, row);
+               }.bind(self);
+
+               //same table drag drop
+               config.mousemove = function (e) {
+                       if (e.pageY - Tabulator.prototype.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);
+                                       self.moveRow(group, true);
+                               }
+                       } else {
+                               if (self.toRow !== group || self.toRowAfter) {
+                                       var rowEl = group.getElement();
+                                       if (rowEl.previousSibling) {
+                                               rowEl.parentNode.insertBefore(self.placeholderElement, rowEl);
+                                               self.moveRow(group, false);
+                                       }
+                               }
+                       }
+               }.bind(self);
+
+               group.modules.moveRow = config;
+       };
+
+       MoveRows.prototype.initializeRow = function (row) {
+               var self = this,
+                   config = {},
+                   rowEl;
+
+               //inter table drag drop
+               config.mouseup = function (e) {
+                       self.tableRowDrop(e, row);
+               }.bind(self);
+
+               //same table drag drop
+               config.mousemove = function (e) {
+                       if (e.pageY - Tabulator.prototype.helpers.elOffset(row.element).top + self.table.rowManager.element.scrollTop > row.getHeight() / 2) {
+                               if (self.toRow !== row || !self.toRowAfter) {
+                                       var rowEl = row.getElement();
+                                       rowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);
+                                       self.moveRow(row, true);
+                               }
+                       } else {
+                               if (self.toRow !== row || self.toRowAfter) {
+                                       var rowEl = row.getElement();
+                                       rowEl.parentNode.insertBefore(self.placeholderElement, rowEl);
+                                       self.moveRow(row, false);
+                               }
+                       }
+               }.bind(self);
+
+               if (!this.hasHandle) {
+
+                       rowEl = row.getElement();
+
+                       rowEl.addEventListener("mousedown", function (e) {
+                               if (e.which === 1) {
+                                       self.checkTimeout = setTimeout(function () {
+                                               self.startMove(e, row);
+                                       }, self.checkPeriod);
+                               }
+                       });
+
+                       rowEl.addEventListener("mouseup", function (e) {
+                               if (e.which === 1) {
+                                       if (self.checkTimeout) {
+                                               clearTimeout(self.checkTimeout);
+                                       }
+                               }
+                       });
+
+                       this.bindTouchEvents(row, row.getElement());
+               }
+
+               row.modules.moveRow = config;
+       };
+
+       MoveRows.prototype.initializeCell = function (cell) {
+               var self = this,
+                   cellEl = cell.getElement();
+
+               cellEl.addEventListener("mousedown", function (e) {
+                       if (e.which === 1) {
+                               self.checkTimeout = setTimeout(function () {
+                                       self.startMove(e, cell.row);
+                               }, self.checkPeriod);
+                       }
+               });
+
+               cellEl.addEventListener("mouseup", function (e) {
+                       if (e.which === 1) {
+                               if (self.checkTimeout) {
+                                       clearTimeout(self.checkTimeout);
+                               }
+                       }
+               });
+
+               this.bindTouchEvents(cell.row, cell.getElement());
+       };
+
+       MoveRows.prototype.bindTouchEvents = function (row, element) {
+               var self = this,
+                   startYMove = false,
+                   //shifting center position of the cell
+               dir = false,
+                   currentRow,
+                   nextRow,
+                   prevRow,
+                   nextRowHeight,
+                   prevRowHeight,
+                   nextRowHeightLast,
+                   prevRowHeightLast;
+
+               element.addEventListener("touchstart", function (e) {
+                       self.checkTimeout = setTimeout(function () {
+                               self.touchMove = true;
+                               currentRow = row;
+                               nextRow = row.nextRow();
+                               nextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;
+                               prevRow = row.prevRow();
+                               prevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;
+                               nextRowHeightLast = 0;
+                               prevRowHeightLast = 0;
+                               startYMove = false;
+
+                               self.startMove(e, row);
+                       }, self.checkPeriod);
+               }, { passive: true });
+               this.moving, this.toRow, this.toRowAfter;
+               element.addEventListener("touchmove", function (e) {
+
+                       var halfCol, diff, moveToRow;
+
+                       if (self.moving) {
+                               e.preventDefault();
+
+                               self.moveHover(e);
+
+                               if (!startYMove) {
+                                       startYMove = e.touches[0].pageY;
+                               }
+
+                               diff = e.touches[0].pageY - startYMove;
+
+                               if (diff > 0) {
+                                       if (nextRow && diff - nextRowHeightLast > nextRowHeight) {
+                                               moveToRow = nextRow;
+
+                                               if (moveToRow !== row) {
+                                                       startYMove = e.touches[0].pageY;
+                                                       moveToRow.getElement().parentNode.insertBefore(self.placeholderElement, moveToRow.getElement().nextSibling);
+                                                       self.moveRow(moveToRow, true);
+                                               }
+                                       }
+                               } else {
+                                       if (prevRow && -diff - prevRowHeightLast > prevRowHeight) {
+                                               moveToRow = prevRow;
+
+                                               if (moveToRow !== row) {
+                                                       startYMove = e.touches[0].pageY;
+                                                       moveToRow.getElement().parentNode.insertBefore(self.placeholderElement, moveToRow.getElement());
+                                                       self.moveRow(moveToRow, false);
+                                               }
+                                       }
+                               }
+
+                               if (moveToRow) {
+                                       currentRow = moveToRow;
+                                       nextRow = moveToRow.nextRow();
+                                       nextRowHeightLast = nextRowHeight;
+                                       nextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;
+                                       prevRow = moveToRow.prevRow();
+                                       prevRowHeightLast = prevRowHeight;
+                                       prevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;
+                               }
+                       }
+               });
+
+               element.addEventListener("touchend", function (e) {
+                       if (self.checkTimeout) {
+                               clearTimeout(self.checkTimeout);
+                       }
+                       if (self.moving) {
+                               self.endMove(e);
+                               self.touchMove = false;
+                       }
+               });
+       };
+
+       MoveRows.prototype._bindMouseMove = function () {
+               var self = this;
+
+               self.table.rowManager.getDisplayRows().forEach(function (row) {
+                       if ((row.type === "row" || row.type === "group") && row.modules.moveRow.mousemove) {
+                               row.getElement().addEventListener("mousemove", row.modules.moveRow.mousemove);
+                       }
+               });
+       };
+
+       MoveRows.prototype._unbindMouseMove = function () {
+               var self = this;
+
+               self.table.rowManager.getDisplayRows().forEach(function (row) {
+                       if ((row.type === "row" || row.type === "group") && row.modules.moveRow.mousemove) {
+                               row.getElement().removeEventListener("mousemove", row.modules.moveRow.mousemove);
+                       }
+               });
+       };
+
+       MoveRows.prototype.startMove = function (e, row) {
+               var element = row.getElement();
+
+               this.setStartPosition(e, row);
+
+               this.moving = row;
+
+               this.table.element.classList.add("tabulator-block-select");
+
+               //create placeholder
+               this.placeholderElement.style.width = row.getWidth() + "px";
+               this.placeholderElement.style.height = row.getHeight() + "px";
+
+               if (!this.connection) {
+                       element.parentNode.insertBefore(this.placeholderElement, element);
+                       element.parentNode.removeChild(element);
+               } else {
+                       this.table.element.classList.add("tabulator-movingrow-sending");
+                       this.connectToTables(row);
+               }
+
+               //create hover element
+               this.hoverElement = element.cloneNode(true);
+               this.hoverElement.classList.add("tabulator-moving");
+
+               if (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";
+               } else {
+                       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);
+       };
+
+       MoveRows.prototype.setStartPosition = function (e, row) {
+               var pageX = this.touchMove ? e.touches[0].pageX : e.pageX,
+                   pageY = this.touchMove ? e.touches[0].pageY : e.pageY,
+                   element,
+                   position;
+
+               element = row.getElement();
+               if (this.connection) {
+                       position = element.getBoundingClientRect();
+
+                       this.startX = position.left - pageX + window.pageXOffset;
+                       this.startY = position.top - pageY + window.pageYOffset;
+               } else {
+                       this.startY = pageY - element.getBoundingClientRect().top;
+               }
+       };
+
+       MoveRows.prototype.endMove = function (e) {
+               if (!e || e.which === 1 || this.touchMove) {
+                       this._unbindMouseMove();
+
+                       if (!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");
+
+                       if (this.toRow) {
+                               this.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter);
+                       }
+
+                       this.moving = false;
+                       this.toRow = false;
+                       this.toRowAfter = false;
+
+                       document.body.removeEventListener("mousemove", this.moveHover);
+                       document.body.removeEventListener("mouseup", this.endMove);
+
+                       if (this.connection) {
+                               this.table.element.classList.remove("tabulator-movingrow-sending");
+                               this.disconnectFromTables();
+                       }
+               }
+       };
+
+       MoveRows.prototype.moveRow = function (row, after) {
+               this.toRow = row;
+               this.toRowAfter = after;
+       };
+
+       MoveRows.prototype.moveHover = function (e) {
+               if (this.connection) {
+                       this.moveHoverConnections.call(this, e);
+               } else {
+                       this.moveHoverTable.call(this, e);
+               }
+       };
+
+       MoveRows.prototype.moveHoverTable = function (e) {
+               var rowHolder = this.table.rowManager.getElement(),
+                   scrollTop = rowHolder.scrollTop,
+                   yPos = (this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top + scrollTop,
+                   scrollPos;
+
+               this.hoverElement.style.top = yPos - this.startY + "px";
+       };
+
+       MoveRows.prototype.moveHoverConnections = 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";
+       };
+
+       //establish connection with other tables
+       MoveRows.prototype.connectToTables = function (row) {
+               var self = this,
+                   connections = this.table.modules.comms.getConnections(this.connection);
+
+               this.table.options.movableRowsSendingStart.call(this.table, connections);
+
+               this.table.modules.comms.send(this.connection, "moveRow", "connect", {
+                       row: row
+               });
+       };
+
+       //disconnect from other tables
+       MoveRows.prototype.disconnectFromTables = function () {
+               var self = this,
+                   connections = this.table.modules.comms.getConnections(this.connection);
+
+               this.table.options.movableRowsSendingStop.call(this.table, connections);
+
+               this.table.modules.comms.send(this.connection, "moveRow", "disconnect");
+       };
+
+       //accept incomming connection
+       MoveRows.prototype.connect = function (table, row) {
+               var self = this;
+               if (!this.connectedTable) {
+                       this.connectedTable = table;
+                       this.connectedRow = row;
+
+                       this.table.element.classList.add("tabulator-movingrow-receiving");
+
+                       self.table.rowManager.getDisplayRows().forEach(function (row) {
+                               if (row.type === "row" && row.modules.moveRow && row.modules.moveRow.mouseup) {
+                                       row.getElement().addEventListener("mouseup", row.modules.moveRow.mouseup);
+                               }
+                       });
+
+                       self.tableRowDropEvent = self.tableRowDrop.bind(self);
+
+                       self.table.element.addEventListener("mouseup", self.tableRowDropEvent);
+
+                       this.table.options.movableRowsReceivingStart.call(this.table, row, table);
+
+                       return true;
+               } else {
+                       console.warn("Move Row Error - Table cannot accept connection, already connected to table:", this.connectedTable);
+                       return false;
+               }
+       };
+
+       //close incomming connection
+       MoveRows.prototype.disconnect = function (table) {
+               var self = this;
+               if (table === this.connectedTable) {
+                       this.connectedTable = false;
+                       this.connectedRow = false;
+
+                       this.table.element.classList.remove("tabulator-movingrow-receiving");
+
+                       self.table.rowManager.getDisplayRows().forEach(function (row) {
+                               if (row.type === "row" && row.modules.moveRow && row.modules.moveRow.mouseup) {
+                                       row.getElement().removeEventListener("mouseup", row.modules.moveRow.mouseup);
+                               }
+                       });
+
+                       self.table.element.removeEventListener("mouseup", self.tableRowDropEvent);
+
+                       this.table.options.movableRowsReceivingStop.call(this.table, table);
+               } else {
+                       console.warn("Move Row Error - trying to disconnect from non connected table");
+               }
+       };
+
+       MoveRows.prototype.dropComplete = function (table, row, success) {
+               var sender = false;
+
+               if (success) {
+
+                       switch (_typeof(this.table.options.movableRowsSender)) {
+                               case "string":
+                                       sender = this.senders[this.table.options.movableRowsSender];
+                                       break;
+
+                               case "function":
+                                       sender = this.table.options.movableRowsSender;
+                                       break;
+                       }
+
+                       if (sender) {
+                               sender.call(this, this.moving.getComponent(), row ? row.getComponent() : undefined, table);
+                       } else {
+                               if (this.table.options.movableRowsSender) {
+                                       console.warn("Mover Row Error - no matching sender found:", this.table.options.movableRowsSender);
+                               }
+                       }
+
+                       this.table.options.movableRowsSent.call(this.table, this.moving.getComponent(), row ? row.getComponent() : undefined, table);
+               } else {
+                       this.table.options.movableRowsSentFailed.call(this.table, this.moving.getComponent(), row ? row.getComponent() : undefined, table);
+               }
+
+               this.endMove();
+       };
+
+       MoveRows.prototype.tableRowDrop = function (e, row) {
+               var receiver = false,
+                   success = false;
+
+               e.stopImmediatePropagation();
+
+               switch (_typeof(this.table.options.movableRowsReceiver)) {
+                       case "string":
+                               receiver = this.receivers[this.table.options.movableRowsReceiver];
+                               break;
+
+                       case "function":
+                               receiver = this.table.options.movableRowsReceiver;
+                               break;
+               }
+
+               if (receiver) {
+                       success = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);
+               } else {
+                       console.warn("Mover Row Error - no matching receiver found:", this.table.options.movableRowsReceiver);
+               }
+
+               if (success) {
+                       this.table.options.movableRowsReceived.call(this.table, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);
+               } else {
+                       this.table.options.movableRowsReceivedFailed.call(this.table, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);
+               }
+
+               this.table.modules.comms.send(this.connectedTable, "moveRow", "dropcomplete", {
+                       row: row,
+                       success: success
+               });
+       };
+
+       MoveRows.prototype.receivers = {
+               insert: function insert(fromRow, toRow, fromTable) {
+                       this.table.addRow(fromRow.getData(), undefined, toRow);
+                       return true;
+               },
+
+               add: function add(fromRow, toRow, fromTable) {
+                       this.table.addRow(fromRow.getData());
+                       return true;
+               },
+
+               update: function update(fromRow, toRow, fromTable) {
+                       if (toRow) {
+                               toRow.update(fromRow.getData());
+                               return true;
+                       }
+
+                       return false;
+               },
+
+               replace: function replace(fromRow, toRow, fromTable) {
+                       if (toRow) {
+                               this.table.addRow(fromRow.getData(), undefined, toRow);
+                               toRow.delete();
+                               return true;
+                       }
+
+                       return false;
+               }
+       };
+
+       MoveRows.prototype.senders = {
+               delete: function _delete(fromRow, toRow, toTable) {
+                       fromRow.delete();
+               }
+       };
+
+       MoveRows.prototype.commsReceived = function (table, action, data) {
+               switch (action) {
+                       case "connect":
+                               return this.connect(table, data.row);
+                               break;
+
+                       case "disconnect":
+                               return this.disconnect(table);
+                               break;
+
+                       case "dropcomplete":
+                               return this.dropComplete(table, data.row, data.success);
+                               break;
+               }
+       };
+
+       Tabulator.prototype.registerModule("moveRow", MoveRows);
+       var Mutator = function Mutator(table) {
+               this.table = table; //hold Tabulator object
+               this.allowedTypes = ["", "data", "edit", "clipboard"]; //list of muatation types
+               this.enabled = true;
+       };
+
+       //initialize column mutator
+       Mutator.prototype.initializeColumn = function (column) {
+               var self = this,
+                   match = false,
+                   config = {};
+
+               this.allowedTypes.forEach(function (type) {
+                       var key = "mutator" + (type.charAt(0).toUpperCase() + type.slice(1)),
+                           mutator;
+
+                       if (column.definition[key]) {
+                               mutator = self.lookupMutator(column.definition[key]);
+
+                               if (mutator) {
+                                       match = true;
+
+                                       config[key] = {
+                                               mutator: mutator,
+                                               params: column.definition[key + "Params"] || {}
+                                       };
+                               }
+                       }
+               });
+
+               if (match) {
+                       column.modules.mutate = config;
+               }
+       };
+
+       Mutator.prototype.lookupMutator = function (value) {
+               var mutator = false;
+
+               //set column mutator
+               switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
+                       case "string":
+                               if (this.mutators[value]) {
+                                       mutator = this.mutators[value];
+                               } else {
+                                       console.warn("Mutator Error - No such mutator found, ignoring: ", value);
+                               }
+                               break;
+
+                       case "function":
+                               mutator = value;
+                               break;
+               }
+
+               return mutator;
+       };
+
+       //apply mutator to row
+       Mutator.prototype.transformRow = function (data, type, update) {
+               var self = this,
+                   key = "mutator" + (type.charAt(0).toUpperCase() + type.slice(1)),
+                   value;
+
+               if (this.enabled) {
+
+                       self.table.columnManager.traverse(function (column) {
+                               var mutator, params, component;
+
+                               if (column.modules.mutate) {
+                                       mutator = column.modules.mutate[key] || column.modules.mutate.mutator || false;
+
+                                       if (mutator) {
+                                               value = column.getFieldValue(data);
+
+                                               if (!update || update && typeof value !== "undefined") {
+                                                       component = column.getComponent();
+                                                       params = typeof mutator.params === "function" ? mutator.params(value, data, type, component) : mutator.params;
+                                                       column.setFieldValue(data, mutator.mutator(value, data, type, params, component));
+                                               }
+                                       }
+                               }
+                       });
+               }
+
+               return data;
+       };
+
+       //apply mutator to new cell value
+       Mutator.prototype.transformCell = function (cell, value) {
+               var mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false;
+
+               if (mutator) {
+                       return mutator.mutator(value, cell.row.getData(), "edit", mutator.params, cell.getComponent());
+               } else {
+                       return value;
+               }
+       };
+
+       Mutator.prototype.enable = function () {
+               this.enabled = true;
+       };
+
+       Mutator.prototype.disable = function () {
+               this.enabled = false;
+       };
+
+       //default mutators
+       Mutator.prototype.mutators = {};
+
+       Tabulator.prototype.registerModule("mutator", Mutator);
+       var Page = function Page(table) {
+
+               this.table = table; //hold Tabulator object
+
+               this.mode = "local";
+               this.progressiveLoad = false;
+
+               this.size = 0;
+               this.page = 1;
+               this.count = 5;
+               this.max = 1;
+
+               this.displayIndex = 0; //index in display pipeline
+
+               this.pageSizes = [];
+
+               this.createElements();
+       };
+
+       Page.prototype.createElements = function () {
+
+               var button;
+
+               this.element = document.createElement("span");
+               this.element.classList.add("tabulator-paginator");
+
+               this.pagesElement = document.createElement("span");
+               this.pagesElement.classList.add("tabulator-pages");
+
+               button = document.createElement("button");
+               button.classList.add("tabulator-page");
+               button.setAttribute("type", "button");
+               button.setAttribute("role", "button");
+               button.setAttribute("aria-label", "");
+               button.setAttribute("title", "");
+
+               this.firstBut = button.cloneNode(true);
+               this.firstBut.setAttribute("data-page", "first");
+
+               this.prevBut = button.cloneNode(true);
+               this.prevBut.setAttribute("data-page", "prev");
+
+               this.nextBut = button.cloneNode(true);
+               this.nextBut.setAttribute("data-page", "next");
+
+               this.lastBut = button.cloneNode(true);
+               this.lastBut.setAttribute("data-page", "last");
+
+               if (this.table.options.paginationSizeSelector) {
+                       this.pageSizeSelect = document.createElement("select");
+                       this.pageSizeSelect.classList.add("tabulator-page-size");
+               }
+       };
+
+       Page.prototype.generatePageSizeSelectList = function () {
+               var _this48 = this;
+
+               var pageSizes = [];
+
+               if (this.pageSizeSelect) {
+
+                       if (Array.isArray(this.table.options.paginationSizeSelector)) {
+                               pageSizes = this.table.options.paginationSizeSelector;
+                               this.pageSizes = pageSizes;
+
+                               if (this.pageSizes.indexOf(this.size) == -1) {
+                                       pageSizes.unshift(this.size);
+                               }
+                       } else {
+
+                               if (this.pageSizes.indexOf(this.size) == -1) {
+                                       pageSizes = [];
+
+                                       for (var i = 1; i < 5; i++) {
+                                               pageSizes.push(this.size * i);
+                                       }
+
+                                       this.pageSizes = pageSizes;
+                               } else {
+                                       pageSizes = this.pageSizes;
+                               }
+                       }
+
+                       while (this.pageSizeSelect.firstChild) {
+                               this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);
+                       }pageSizes.forEach(function (item) {
+                               var itemEl = document.createElement("option");
+                               itemEl.value = item;
+                               itemEl.innerHTML = item;
+
+                               _this48.pageSizeSelect.appendChild(itemEl);
+                       });
+
+                       this.pageSizeSelect.value = this.size;
+               }
+       };
+
+       //setup pageination
+       Page.prototype.initialize = function (hidden) {
+               var self = this,
+                   pageSelectLabel;
+
+               //update param names
+               for (var key in self.table.options.paginationDataSent) {
+                       self.paginationDataSentNames[key] = self.table.options.paginationDataSent[key];
+               }
+
+               for (var _key2 in self.table.options.paginationDataReceived) {
+                       self.paginationDataReceivedNames[_key2] = self.table.options.paginationDataReceived[_key2];
+               }
+
+               //build pagination element
+
+               //bind localizations
+               self.table.modules.localize.bind("pagination|first", function (value) {
+                       self.firstBut.innerHTML = value;
+               });
+
+               self.table.modules.localize.bind("pagination|first_title", function (value) {
+                       self.firstBut.setAttribute("aria-label", value);
+                       self.firstBut.setAttribute("title", value);
+               });
+
+               self.table.modules.localize.bind("pagination|prev", function (value) {
+                       self.prevBut.innerHTML = value;
+               });
+
+               self.table.modules.localize.bind("pagination|prev_title", function (value) {
+                       self.prevBut.setAttribute("aria-label", value);
+                       self.prevBut.setAttribute("title", value);
+               });
+
+               self.table.modules.localize.bind("pagination|next", function (value) {
+                       self.nextBut.innerHTML = value;
+               });
+
+               self.table.modules.localize.bind("pagination|next_title", function (value) {
+                       self.nextBut.setAttribute("aria-label", value);
+                       self.nextBut.setAttribute("title", value);
+               });
+
+               self.table.modules.localize.bind("pagination|last", function (value) {
+                       self.lastBut.innerHTML = value;
+               });
+
+               self.table.modules.localize.bind("pagination|last_title", function (value) {
+                       self.lastBut.setAttribute("aria-label", value);
+                       self.lastBut.setAttribute("title", value);
+               });
+
+               //click bindings
+               self.firstBut.addEventListener("click", function () {
+                       self.setPage(1);
+               });
+
+               self.prevBut.addEventListener("click", function () {
+                       self.previousPage();
+               });
+
+               self.nextBut.addEventListener("click", function () {
+                       self.nextPage().then(function () {}).catch(function () {});
+               });
+
+               self.lastBut.addEventListener("click", function () {
+                       self.setPage(self.max);
+               });
+
+               if (self.table.options.paginationElement) {
+                       self.element = self.table.options.paginationElement;
+               }
+
+               if (this.pageSizeSelect) {
+                       pageSelectLabel = document.createElement("label");
+
+                       self.table.modules.localize.bind("pagination|page_size", function (value) {
+                               self.pageSizeSelect.setAttribute("aria-label", value);
+                               self.pageSizeSelect.setAttribute("title", value);
+                               pageSelectLabel.innerHTML = value;
+                       });
+
+                       self.element.appendChild(pageSelectLabel);
+                       self.element.appendChild(self.pageSizeSelect);
+
+                       self.pageSizeSelect.addEventListener("change", function (e) {
+                               self.setPageSize(self.pageSizeSelect.value);
+                               self.setPage(1).then(function () {}).catch(function () {});
+                       });
+               }
+
+               //append to DOM
+               self.element.appendChild(self.firstBut);
+               self.element.appendChild(self.prevBut);
+               self.element.appendChild(self.pagesElement);
+               self.element.appendChild(self.nextBut);
+               self.element.appendChild(self.lastBut);
+
+               if (!self.table.options.paginationElement && !hidden) {
+                       self.table.footerManager.append(self.element, self);
+               }
+
+               //set default values
+               self.mode = self.table.options.pagination;
+               self.size = self.table.options.paginationSize || Math.floor(self.table.rowManager.getElement().clientHeight / 24);
+               self.count = self.table.options.paginationButtonCount;
+
+               self.generatePageSizeSelectList();
+       };
+
+       Page.prototype.initializeProgressive = function (mode) {
+               this.initialize(true);
+               this.mode = "progressive_" + mode;
+               this.progressiveLoad = true;
+       };
+
+       Page.prototype.setDisplayIndex = function (index) {
+               this.displayIndex = index;
+       };
+
+       Page.prototype.getDisplayIndex = function () {
+               return this.displayIndex;
+       };
+
+       //calculate maximum page from number of rows
+       Page.prototype.setMaxRows = function (rowCount) {
+               if (!rowCount) {
+                       this.max = 1;
+               } else {
+                       this.max = Math.ceil(rowCount / this.size);
+               }
+
+               if (this.page > this.max) {
+                       this.page = this.max;
+               }
+       };
+
+       //reset to first page without triggering action
+       Page.prototype.reset = function (force) {
+               if (this.mode == "local" || force) {
+                       this.page = 1;
+               }
+               return true;
+       };
+
+       //set the maxmum page
+       Page.prototype.setMaxPage = function (max) {
+
+               max = parseInt(max);
+
+               this.max = max || 1;
+
+               if (this.page > this.max) {
+                       this.page = this.max;
+                       this.trigger();
+               }
+       };
+
+       //set current page number
+       Page.prototype.setPage = function (page) {
+               var _this49 = this;
+
+               return new Promise(function (resolve, reject) {
+
+                       page = parseInt(page);
+
+                       if (page > 0 && page <= _this49.max) {
+                               _this49.page = page;
+                               _this49.trigger().then(function () {
+                                       resolve();
+                               }).catch(function () {
+                                       reject();
+                               });
+                       } else {
+                               console.warn("Pagination Error - Requested page is out of range of 1 - " + _this49.max + ":", page);
+                               reject();
+                       }
+               });
+       };
+
+       Page.prototype.setPageToRow = function (row) {
+               var _this50 = this;
+
+               return new Promise(function (resolve, reject) {
+
+                       var rows = _this50.table.rowManager.getDisplayRows(_this50.displayIndex - 1);
+                       var index = rows.indexOf(row);
+
+                       if (index > -1) {
+                               var page = Math.ceil((index + 1) / _this50.size);
+
+                               _this50.setPage(page).then(function () {
+                                       resolve();
+                               }).catch(function () {
+                                       reject();
+                               });
+                       } else {
+                               console.warn("Pagination Error - Requested row is not visible");
+                               reject();
+                       }
+               });
+       };
+
+       Page.prototype.setPageSize = function (size) {
+               size = parseInt(size);
+
+               if (size > 0) {
+                       this.size = size;
+               }
+
+               if (this.pageSizeSelect) {
+                       // this.pageSizeSelect.value = size;
+                       this.generatePageSizeSelectList();
+               }
+       };
+
+       //setup the pagination buttons
+       Page.prototype._setPageButtons = function () {
+               var self = this;
+
+               var leftSize = Math.floor((this.count - 1) / 2);
+               var rightSize = Math.ceil((this.count - 1) / 2);
+               var min = this.max - this.page + leftSize + 1 < this.count ? this.max - this.count + 1 : Math.max(this.page - leftSize, 1);
+               var max = this.page <= rightSize ? Math.min(this.count, this.max) : Math.min(this.page + rightSize, this.max);
+
+               while (self.pagesElement.firstChild) {
+                       self.pagesElement.removeChild(self.pagesElement.firstChild);
+               }if (self.page == 1) {
+                       self.firstBut.disabled = true;
+                       self.prevBut.disabled = true;
+               } else {
+                       self.firstBut.disabled = false;
+                       self.prevBut.disabled = false;
+               }
+
+               if (self.page == self.max) {
+                       self.lastBut.disabled = true;
+                       self.nextBut.disabled = true;
+               } else {
+                       self.lastBut.disabled = false;
+                       self.nextBut.disabled = false;
+               }
+
+               for (var i = min; i <= max; i++) {
+                       if (i > 0 && i <= self.max) {
+                               self.pagesElement.appendChild(self._generatePageButton(i));
+                       }
+               }
+
+               this.footerRedraw();
+       };
+
+       Page.prototype._generatePageButton = function (page) {
+               var self = this,
+                   button = document.createElement("button");
+
+               button.classList.add("tabulator-page");
+               if (page == self.page) {
+                       button.classList.add("active");
+               }
+
+               button.setAttribute("type", "button");
+               button.setAttribute("role", "button");
+               button.setAttribute("aria-label", "Show Page " + page);
+               button.setAttribute("title", "Show Page " + page);
+               button.setAttribute("data-page", page);
+               button.textContent = page;
+
+               button.addEventListener("click", function (e) {
+                       self.setPage(page);
+               });
+
+               return button;
+       };
+
+       //previous page
+       Page.prototype.previousPage = function () {
+               var _this51 = this;
+
+               return new Promise(function (resolve, reject) {
+                       if (_this51.page > 1) {
+                               _this51.page--;
+                               _this51.trigger().then(function () {
+                                       resolve();
+                               }).catch(function () {
+                                       reject();
+                               });
+                       } else {
+                               console.warn("Pagination Error - Previous page would be less than page 1:", 0);
+                               reject();
+                       }
+               });
+       };
+
+       //next page
+       Page.prototype.nextPage = function () {
+               var _this52 = this;
+
+               return new Promise(function (resolve, reject) {
+                       if (_this52.page < _this52.max) {
+                               _this52.page++;
+                               _this52.trigger().then(function () {
+                                       resolve();
+                               }).catch(function () {
+                                       reject();
+                               });
+                       } else {
+                               if (!_this52.progressiveLoad) {
+                                       console.warn("Pagination Error - Next page would be greater than maximum page of " + _this52.max + ":", _this52.max + 1);
+                               }
+                               reject();
+                       }
+               });
+       };
+
+       //return current page number
+       Page.prototype.getPage = function () {
+               return this.page;
+       };
+
+       //return max page number
+       Page.prototype.getPageMax = function () {
+               return this.max;
+       };
+
+       Page.prototype.getPageSize = function (size) {
+               return this.size;
+       };
+
+       Page.prototype.getMode = function () {
+               return this.mode;
+       };
+
+       //return appropriate rows for current page
+       Page.prototype.getRows = function (data) {
+               var output, start, end;
+
+               if (this.mode == "local") {
+                       output = [];
+                       start = this.size * (this.page - 1);
+                       end = start + parseInt(this.size);
+
+                       this._setPageButtons();
+
+                       for (var i = start; i < end; i++) {
+                               if (data[i]) {
+                                       output.push(data[i]);
+                               }
+                       }
+
+                       return output;
+               } else {
+
+                       this._setPageButtons();
+
+                       return data.slice(0);
+               }
+       };
+
+       Page.prototype.trigger = function () {
+               var _this53 = this;
+
+               var left;
+
+               return new Promise(function (resolve, reject) {
+
+                       switch (_this53.mode) {
+                               case "local":
+                                       left = _this53.table.rowManager.scrollLeft;
+
+                                       _this53.table.rowManager.refreshActiveData("page");
+                                       _this53.table.rowManager.scrollHorizontal(left);
+
+                                       _this53.table.options.pageLoaded.call(_this53.table, _this53.getPage());
+                                       resolve();
+                                       break;
+
+                               case "remote":
+                               case "progressive_load":
+                               case "progressive_scroll":
+                                       _this53.table.modules.ajax.blockActiveRequest();
+                                       _this53._getRemotePage().then(function () {
+                                               resolve();
+                                       }).catch(function () {
+                                               reject();
+                                       });
+                                       break;
+
+                               default:
+                                       console.warn("Pagination Error - no such pagination mode:", _this53.mode);
+                                       reject();
+                       }
+               });
+       };
+
+       Page.prototype._getRemotePage = function () {
+               var _this54 = this;
+
+               var self = this,
+                   oldParams,
+                   pageParams;
+
+               return new Promise(function (resolve, reject) {
+
+                       if (!self.table.modExists("ajax", true)) {
+                               reject();
+                       }
+
+                       //record old params and restore after request has been made
+                       oldParams = Tabulator.prototype.helpers.deepClone(self.table.modules.ajax.getParams() || {});
+                       pageParams = self.table.modules.ajax.getParams();
+
+                       //configure request params
+                       pageParams[_this54.paginationDataSentNames.page] = self.page;
+
+                       //set page size if defined
+                       if (_this54.size) {
+                               pageParams[_this54.paginationDataSentNames.size] = _this54.size;
+                       }
+
+                       //set sort data if defined
+                       if (_this54.table.options.ajaxSorting && _this54.table.modExists("sort")) {
+                               var sorters = self.table.modules.sort.getSort();
+
+                               sorters.forEach(function (item) {
+                                       delete item.column;
+                               });
+
+                               pageParams[_this54.paginationDataSentNames.sorters] = sorters;
+                       }
+
+                       //set filter data if defined
+                       if (_this54.table.options.ajaxFiltering && _this54.table.modExists("filter")) {
+                               var filters = self.table.modules.filter.getFilters(true, true);
+                               pageParams[_this54.paginationDataSentNames.filters] = filters;
+                       }
+
+                       self.table.modules.ajax.setParams(pageParams);
+
+                       self.table.modules.ajax.sendRequest(_this54.progressiveLoad).then(function (data) {
+                               self._parseRemoteData(data);
+                               resolve();
+                       }).catch(function (e) {
+                               reject();
+                       });
+
+                       self.table.modules.ajax.setParams(oldParams);
+               });
+       };
+
+       Page.prototype._parseRemoteData = function (data) {
+               var self = this,
+                   left,
+                   data,
+                   margin;
+
+               if (typeof data[this.paginationDataReceivedNames.last_page] === "undefined") {
+                       console.warn("Remote Pagination Error - Server response missing '" + this.paginationDataReceivedNames.last_page + "' property");
+               }
+
+               if (data[this.paginationDataReceivedNames.data]) {
+                       this.max = parseInt(data[this.paginationDataReceivedNames.last_page]) || 1;
+
+                       if (this.progressiveLoad) {
+                               switch (this.mode) {
+                                       case "progressive_load":
+                                               this.table.rowManager.addRows(data[this.paginationDataReceivedNames.data]);
+                                               if (this.page < this.max) {
+                                                       setTimeout(function () {
+                                                               self.nextPage().then(function () {}).catch(function () {});
+                                                       }, self.table.options.ajaxProgressiveLoadDelay);
+                                               }
+                                               break;
+
+                                       case "progressive_scroll":
+                                               data = this.table.rowManager.getData().concat(data[this.paginationDataReceivedNames.data]);
+
+                                               this.table.rowManager.setData(data, true);
+
+                                               margin = this.table.options.ajaxProgressiveLoadScrollMargin || this.table.rowManager.element.clientHeight * 2;
+
+                                               if (self.table.rowManager.element.scrollHeight <= self.table.rowManager.element.clientHeight + margin) {
+                                                       self.nextPage().then(function () {}).catch(function () {});
+                                               }
+                                               break;
+                               }
+                       } else {
+                               left = this.table.rowManager.scrollLeft;
+
+                               this.table.rowManager.setData(data[this.paginationDataReceivedNames.data]);
+
+                               this.table.rowManager.scrollHorizontal(left);
+
+                               this.table.columnManager.scrollHorizontal(left);
+
+                               this.table.options.pageLoaded.call(this.table, this.getPage());
+                       }
+               } else {
+                       console.warn("Remote Pagination Error - Server response missing '" + this.paginationDataReceivedNames.data + "' property");
+               }
+       };
+
+       //handle the footer element being redrawn
+       Page.prototype.footerRedraw = function () {
+               var footer = this.table.footerManager.element;
+
+               if (Math.ceil(footer.clientWidth) - footer.scrollWidth < 0) {
+                       this.pagesElement.style.display = 'none';
+               } else {
+                       this.pagesElement.style.display = '';
+
+                       if (Math.ceil(footer.clientWidth) - footer.scrollWidth < 0) {
+                               this.pagesElement.style.display = 'none';
+                       }
+               }
+       };
+
+       //set the paramter names for pagination requests
+       Page.prototype.paginationDataSentNames = {
+               "page": "page",
+               "size": "size",
+               "sorters": "sorters",
+               // "sort_dir":"sort_dir",
+               "filters": "filters"
+               // "filter_value":"filter_value",
+               // "filter_type":"filter_type",
+       };
+
+       //set the property names for pagination responses
+       Page.prototype.paginationDataReceivedNames = {
+               "current_page": "current_page",
+               "last_page": "last_page",
+               "data": "data"
+       };
+
+       Tabulator.prototype.registerModule("page", Page);
+
+       var Persistence = function Persistence(table) {
+               this.table = table; //hold Tabulator object
+               this.mode = "";
+               this.id = "";
+               this.persistProps = ["field", "width", "visible"];
+       };
+
+       // Test for whether localStorage is available for use.
+       Persistence.prototype.localStorageTest = function () {
+               var testKey = "_tabulator_test";
+
+               try {
+                       window.localStorage.setItem(testKey, testKey);
+                       window.localStorage.removeItem(testKey);
+                       return true;
+               } catch (e) {
+                       return false;
+               }
+       };
+
+       //setup parameters
+       Persistence.prototype.initialize = function (mode, id) {
+               //determine persistent layout storage type
+
+               this.mode = mode !== true ? mode : this.localStorageTest() ? "local" : "cookie";
+
+               //set storage tag
+               this.id = "tabulator-" + (id || this.table.element.getAttribute("id") || "");
+       };
+
+       //load saved definitions
+       Persistence.prototype.load = function (type, current) {
+
+               var data = this.retreiveData(type);
+
+               if (current) {
+                       data = data ? this.mergeDefinition(current, data) : current;
+               }
+
+               return data;
+       };
+
+       //retreive data from memory
+       Persistence.prototype.retreiveData = function (type) {
+               var data = "",
+                   id = this.id + (type === "columns" ? "" : "-" + type);
+
+               switch (this.mode) {
+                       case "local":
+                               data = localStorage.getItem(id);
+                               break;
+
+                       case "cookie":
+
+                               //find cookie
+                               var cookie = document.cookie,
+                                   cookiePos = cookie.indexOf(id + "="),
+                                   end = void 0;
+
+                               //if cookie exists, decode and load column data into tabulator
+                               if (cookiePos > -1) {
+                                       cookie = cookie.substr(cookiePos);
+
+                                       end = cookie.indexOf(";");
+
+                                       if (end > -1) {
+                                               cookie = cookie.substr(0, end);
+                                       }
+
+                                       data = cookie.replace(id + "=", "");
+                               }
+                               break;
+
+                       default:
+                               console.warn("Persistence Load Error - invalid mode selected", this.mode);
+               }
+
+               return data ? JSON.parse(data) : false;
+       };
+
+       //merge old and new column definitions
+       Persistence.prototype.mergeDefinition = function (oldCols, newCols) {
+               var self = this,
+                   output = [];
+
+               // oldCols = oldCols || [];
+               newCols = newCols || [];
+
+               newCols.forEach(function (column, to) {
+
+                       var from = self._findColumn(oldCols, column);
+
+                       if (from) {
+
+                               from.width = column.width;
+                               from.visible = column.visible;
+
+                               if (from.columns) {
+                                       from.columns = self.mergeDefinition(from.columns, column.columns);
+                               }
+
+                               output.push(from);
+                       }
+               });
+               oldCols.forEach(function (column, i) {
+                       var from = self._findColumn(newCols, column);
+                       if (!from) {
+                               if (output.length > i) {
+                                       output.splice(i, 0, column);
+                               } else {
+                                       output.push(column);
+                               }
+                       }
+               });
+
+               return output;
+       };
+
+       //find matching columns
+       Persistence.prototype._findColumn = function (columns, subject) {
+               var type = subject.columns ? "group" : subject.field ? "field" : "object";
+
+               return columns.find(function (col) {
+                       switch (type) {
+                               case "group":
+                                       return col.title === subject.title && col.columns.length === subject.columns.length;
+                                       break;
+
+                               case "field":
+                                       return col.field === subject.field;
+                                       break;
+
+                               case "object":
+                                       return col === subject;
+                                       break;
+                       }
+               });
+       };
+
+       //save data
+       Persistence.prototype.save = function (type) {
+               var data = {};
+
+               switch (type) {
+                       case "columns":
+                               data = this.parseColumns(this.table.columnManager.getColumns());
+                               break;
+
+                       case "filter":
+                               data = this.table.modules.filter.getFilters();
+                               break;
+
+                       case "sort":
+                               data = this.validateSorters(this.table.modules.sort.getSort());
+                               break;
+               }
+
+               var id = this.id + (type === "columns" ? "" : "-" + type);
+
+               this.saveData(id, data);
+       };
+
+       //ensure sorters contain no function data
+       Persistence.prototype.validateSorters = function (data) {
+               data.forEach(function (item) {
+                       item.column = item.field;
+                       delete item.field;
+               });
+
+               return data;
+       };
+
+       //save data to chosed medium
+       Persistence.prototype.saveData = function (id, data) {
+
+               data = JSON.stringify(data);
+
+               switch (this.mode) {
+                       case "local":
+                               localStorage.setItem(id, data);
+                               break;
+
+                       case "cookie":
+                               var expireDate = new Date();
+                               expireDate.setDate(expireDate.getDate() + 10000);
+
+                               //save cookie
+                               document.cookie = id + "=" + data + "; expires=" + expireDate.toUTCString();
+                               break;
+
+                       default:
+                               console.warn("Persistence Save Error - invalid mode selected", this.mode);
+               }
+       };
+
+       //build permission list
+       Persistence.prototype.parseColumns = function (columns) {
+               var self = this,
+                   definitions = [];
+
+               columns.forEach(function (column) {
+                       var def = {};
+
+                       if (column.isGroup) {
+                               def.title = column.getDefinition().title;
+                               def.columns = self.parseColumns(column.getColumns());
+                       } else {
+                               def.title = column.getDefinition().title;
+                               def.field = column.getField();
+                               def.width = column.getWidth();
+                               def.visible = column.visible;
+                       }
+
+                       definitions.push(def);
+               });
+
+               return definitions;
+       };
+
+       Tabulator.prototype.registerModule("persistence", Persistence);
+
+       var Print = function Print(table) {
+               this.table = table; //hold Tabulator object
+               this.element = false;
+               this.manualBlock = false;
+       };
+
+       Print.prototype.initialize = function () {
+               window.addEventListener("beforeprint", this.replaceTable.bind(this));
+               window.addEventListener("afterprint", this.cleanup.bind(this));
+       };
+
+       Print.prototype.replaceTable = function () {
+               if (!this.manualBlock) {
+                       this.element = document.createElement("div");
+                       this.element.classList.add("tabulator-print-table");
+
+                       this.element.appendChild(this.table.modules.htmlTableExport.genereateTable(this.table.options.printConfig, this.table.options.printCopyStyle, this.table.options.printVisibleRows, "print"));
+
+                       this.table.element.style.display = "none";
+
+                       this.table.element.parentNode.insertBefore(this.element, this.table.element);
+               }
+       };
+
+       Print.prototype.cleanup = function () {
+               document.body.classList.remove("tabulator-print-fullscreen-hide");
+
+               if (this.element && this.element.parentNode) {
+                       this.element.parentNode.removeChild(this.element);
+                       this.table.element.style.display = "";
+               }
+       };
+
+       Print.prototype.printFullscreen = function (visible, style, config) {
+               var scrollX = window.scrollX,
+                   scrollY = window.scrollY,
+                   headerEl = document.createElement("div"),
+                   footerEl = document.createElement("div"),
+                   tableEl = this.table.modules.htmlTableExport.genereateTable(typeof config != "undefined" ? config : this.table.options.printConfig, typeof style != "undefined" ? style : this.table.options.printCopyStyle, visible, "print"),
+                   headerContent,
+                   footerContent;
+
+               this.manualBlock = true;
+
+               this.element = document.createElement("div");
+               this.element.classList.add("tabulator-print-fullscreen");
+
+               if (this.table.options.printHeader) {
+                       headerEl.classList.add("tabulator-print-header");
+
+                       headerContent = typeof this.table.options.printHeader == "function" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader;
+
+                       if (typeof headerContent == "string") {
+                               headerEl.innerHTML = headerContent;
+                       } else {
+                               headerEl.appendChild(headerContent);
+                       }
+
+                       this.element.appendChild(headerEl);
+               }
+
+               this.element.appendChild(tableEl);
+
+               if (this.table.options.printFooter) {
+                       footerEl.classList.add("tabulator-print-footer");
+
+                       footerContent = typeof this.table.options.printFooter == "function" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter;
+
+                       if (typeof footerContent == "string") {
+                               footerEl.innerHTML = footerContent;
+                       } else {
+                               footerEl.appendChild(footerContent);
+                       }
+
+                       this.element.appendChild(footerEl);
+               }
+
+               document.body.classList.add("tabulator-print-fullscreen-hide");
+               document.body.appendChild(this.element);
+
+               if (this.table.options.printFormatter) {
+                       this.table.options.printFormatter(this.element, tableEl);
+               }
+
+               window.print();
+
+               this.cleanup();
+
+               window.scrollTo(scrollX, scrollY);
+
+               this.manualBlock = false;
+       };
+
+       Tabulator.prototype.registerModule("print", Print);
+       var ReactiveData = function ReactiveData(table) {
+               this.table = table; //hold Tabulator object
+               this.data = false;
+               this.blocked = false; //block reactivity while performing update
+               this.origFuncs = {}; // hold original data array functions to allow replacement after data is done with
+               this.currentVersion = 0;
+       };
+
+       ReactiveData.prototype.watchData = function (data) {
+               var self = this,
+                   pushFunc,
+                   version;
+
+               this.currentVersion++;
+
+               version = this.currentVersion;
+
+               self.unwatchData();
+
+               self.data = data;
+
+               //override array push function
+               self.origFuncs.push = data.push;
+
+               Object.defineProperty(self.data, "push", {
+                       enumerable: false,
+                       configurable: true,
+                       value: function value() {
+                               var args = Array.from(arguments);
+
+                               if (!self.blocked && version === self.currentVersion) {
+                                       args.forEach(function (arg) {
+                                               self.table.rowManager.addRowActual(arg, false);
+                                       });
+                               }
+
+                               return self.origFuncs.push.apply(data, arguments);
+                       }
+               });
+
+               //override array unshift function
+               self.origFuncs.unshift = data.unshift;
+
+               Object.defineProperty(self.data, "unshift", {
+                       enumerable: false,
+                       configurable: true,
+                       value: function value() {
+                               var args = Array.from(arguments);
+
+                               if (!self.blocked && version === self.currentVersion) {
+                                       args.forEach(function (arg) {
+                                               self.table.rowManager.addRowActual(arg, true);
+                                       });
+                               }
+
+                               return self.origFuncs.unshift.apply(data, arguments);
+                       }
+               });
+
+               //override array shift function
+               self.origFuncs.shift = data.shift;
+
+               Object.defineProperty(self.data, "shift", {
+                       enumerable: false,
+                       configurable: true,
+                       value: function value() {
+                               var row;
+
+                               if (!self.blocked && version === self.currentVersion) {
+                                       if (self.data.length) {
+                                               row = self.table.rowManager.getRowFromDataObject(self.data[0]);
+
+                                               if (row) {
+                                                       row.deleteActual();
+                                               }
+                                       }
+                               }
+
+                               return self.origFuncs.shift.call(data);
+                       }
+               });
+
+               //override array pop function
+               self.origFuncs.pop = data.pop;
+
+               Object.defineProperty(self.data, "pop", {
+                       enumerable: false,
+                       configurable: true,
+                       value: function value() {
+                               var row;
+                               if (!self.blocked && version === self.currentVersion) {
+                                       if (self.data.length) {
+                                               row = self.table.rowManager.getRowFromDataObject(self.data[self.data.length - 1]);
+
+                                               if (row) {
+                                                       row.deleteActual();
+                                               }
+                                       }
+                               }
+                               return self.origFuncs.pop.call(data);
+                       }
+               });
+
+               //override array splice function
+               self.origFuncs.splice = data.splice;
+
+               Object.defineProperty(self.data, "splice", {
+                       enumerable: false,
+                       configurable: true,
+                       value: function value() {
+                               var args = Array.from(arguments),
+                                   start = args[0] < 0 ? data.length + args[0] : args[0],
+                                   end = args[1],
+                                   newRows = args[2] ? args.slice(2) : false,
+                                   startRow;
+
+                               if (!self.blocked && version === self.currentVersion) {
+
+                                       //add new rows
+                                       if (newRows) {
+                                               startRow = data[start] ? self.table.rowManager.getRowFromDataObject(data[start]) : false;
+
+                                               if (startRow) {
+                                                       newRows.forEach(function (rowData) {
+                                                               self.table.rowManager.addRowActual(rowData, true, startRow, true);
+                                                       });
+                                               } else {
+                                                       newRows = newRows.slice().reverse();
+
+                                                       newRows.forEach(function (rowData) {
+                                                               self.table.rowManager.addRowActual(rowData, true, false, true);
+                                                       });
+                                               }
+                                       }
+
+                                       //delete removed rows
+                                       if (end !== 0) {
+                                               var oldRows = data.slice(start, typeof args[1] === "undefined" ? args[1] : start + end);
+
+                                               oldRows.forEach(function (rowData, i) {
+                                                       var row = self.table.rowManager.getRowFromDataObject(rowData);
+
+                                                       if (row) {
+                                                               row.deleteActual(i !== oldRows.length - 1);
+                                                       }
+                                               });
+                                       }
+
+                                       if (newRows || end !== 0) {
+                                               self.table.rowManager.reRenderInPosition();
+                                       }
+                               }
+
+                               return self.origFuncs.splice.apply(data, arguments);
+                       }
+               });
+       };
+
+       ReactiveData.prototype.unwatchData = function () {
+               if (this.data !== false) {
+                       for (var key in this.origFuncs) {
+                               Object.defineProperty(this.data, key, {
+                                       enumerable: true,
+                                       configurable: true,
+                                       writable: true,
+                                       value: this.origFuncs.key
+                               });
+                       }
+               }
+       };
+
+       ReactiveData.prototype.watchRow = function (row) {
+               var self = this,
+                   data = row.getData();
+
+               this.blocked = true;
+
+               for (var key in data) {
+                       this.watchKey(row, data, key);
+               }
+
+               this.blocked = false;
+       };
+
+       ReactiveData.prototype.watchKey = function (row, data, key) {
+               var self = this,
+                   props = Object.getOwnPropertyDescriptor(data, key),
+                   value = data[key],
+                   version = this.currentVersion;
+
+               Object.defineProperty(data, key, {
+                       set: function set(newValue) {
+                               value = newValue;
+                               if (!self.blocked && version === self.currentVersion) {
+                                       var update = {};
+                                       update[key] = newValue;
+                                       row.updateData(update);
+                               }
+
+                               if (props.set) {
+                                       props.set(newValue);
+                               }
+                       },
+                       get: function get() {
+
+                               if (props.get) {
+                                       props.get();
+                               }
+
+                               return value;
+                       }
+               });
+       };
+
+       ReactiveData.prototype.unwatchRow = function (row) {
+               var data = row.getData();
+
+               for (var key in data) {
+                       Object.defineProperty(data, key, {
+                               value: data[key]
+                       });
+               }
+       };
+
+       ReactiveData.prototype.block = function () {
+               this.blocked = true;
+       };
+
+       ReactiveData.prototype.unblock = function () {
+               this.blocked = false;
+       };
+
+       Tabulator.prototype.registerModule("reactiveData", ReactiveData);
+
+       var ResizeColumns = function ResizeColumns(table) {
+               this.table = table; //hold Tabulator object
+               this.startColumn = false;
+               this.startX = false;
+               this.startWidth = false;
+               this.handle = null;
+               this.prevHandle = null;
+       };
+
+       ResizeColumns.prototype.initializeColumn = function (type, column, element) {
+               var self = this,
+                   variableHeight = false,
+                   mode = this.table.options.resizableColumns;
+
+               //set column resize mode
+               if (type === "header") {
+                       variableHeight = column.definition.formatter == "textarea" || column.definition.variableHeight;
+                       column.modules.resize = { variableHeight: variableHeight };
+               }
+
+               if (mode === true || mode == type) {
+
+                       var handle = document.createElement('div');
+                       handle.className = "tabulator-col-resize-handle";
+
+                       var prevHandle = document.createElement('div');
+                       prevHandle.className = "tabulator-col-resize-handle prev";
+
+                       handle.addEventListener("click", function (e) {
+                               e.stopPropagation();
+                       });
+
+                       var handleDown = function handleDown(e) {
+                               var nearestColumn = column.getLastColumn();
+
+                               if (nearestColumn && self._checkResizability(nearestColumn)) {
+                                       self.startColumn = column;
+                                       self._mouseDown(e, nearestColumn, handle);
+                               }
+                       };
+
+                       handle.addEventListener("mousedown", handleDown);
+                       handle.addEventListener("touchstart", handleDown, { passive: true });
+
+                       //reszie column on  double click
+                       handle.addEventListener("dblclick", function (e) {
+                               var col = column.getLastColumn();
+
+                               if (col && self._checkResizability(col)) {
+                                       col.reinitializeWidth(true);
+                               }
+                       });
+
+                       prevHandle.addEventListener("click", function (e) {
+                               e.stopPropagation();
+                       });
+
+                       var prevHandleDown = function prevHandleDown(e) {
+                               var nearestColumn, colIndex, prevColumn;
+
+                               nearestColumn = column.getFirstColumn();
+
+                               if (nearestColumn) {
+                                       colIndex = self.table.columnManager.findColumnIndex(nearestColumn);
+                                       prevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;
+
+                                       if (prevColumn && self._checkResizability(prevColumn)) {
+                                               self.startColumn = column;
+                                               self._mouseDown(e, prevColumn, prevHandle);
+                                       }
+                               }
+                       };
+
+                       prevHandle.addEventListener("mousedown", prevHandleDown);
+                       prevHandle.addEventListener("touchstart", prevHandleDown, { passive: true });
+
+                       //resize column on double click
+                       prevHandle.addEventListener("dblclick", function (e) {
+                               var nearestColumn, colIndex, prevColumn;
+
+                               nearestColumn = column.getFirstColumn();
+
+                               if (nearestColumn) {
+                                       colIndex = self.table.columnManager.findColumnIndex(nearestColumn);
+                                       prevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;
+
+                                       if (prevColumn && self._checkResizability(prevColumn)) {
+                                               prevColumn.reinitializeWidth(true);
+                                       }
+                               }
+                       });
+
+                       element.appendChild(handle);
+                       element.appendChild(prevHandle);
+               }
+       };
+
+       ResizeColumns.prototype._checkResizability = function (column) {
+               return typeof column.definition.resizable != "undefined" ? column.definition.resizable : this.table.options.resizableColumns;
+       };
+
+       ResizeColumns.prototype._mouseDown = function (e, column, handle) {
+               var self = this;
+
+               self.table.element.classList.add("tabulator-block-select");
+
+               function mouseMove(e) {
+                       // self.table.columnManager.tempScrollBlock();
+
+                       column.setWidth(self.startWidth + ((typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX) - self.startX));
+
+                       if (!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight) {
+                               column.checkCellHeights();
+                       }
+               }
+
+               function mouseUp(e) {
+
+                       //block editor from taking action while resizing is taking place
+                       if (self.startColumn.modules.edit) {
+                               self.startColumn.modules.edit.blocked = false;
+                       }
+
+                       if (self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight) {
+                               column.checkCellHeights();
+                       }
+
+                       document.body.removeEventListener("mouseup", mouseUp);
+                       document.body.removeEventListener("mousemove", mouseMove);
+
+                       handle.removeEventListener("touchmove", mouseMove);
+                       handle.removeEventListener("touchend", mouseUp);
+
+                       self.table.element.classList.remove("tabulator-block-select");
+
+                       if (self.table.options.persistentLayout && self.table.modExists("persistence", true)) {
+                               self.table.modules.persistence.save("columns");
+                       }
+
+                       self.table.options.columnResized.call(self.table, column.getComponent());
+               }
+
+               e.stopPropagation(); //prevent resize from interfereing with movable columns
+
+               //block editor from taking action while resizing is taking place
+               if (self.startColumn.modules.edit) {
+                       self.startColumn.modules.edit.blocked = true;
+               }
+
+               self.startX = typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX;
+               self.startWidth = column.getWidth();
+
+               document.body.addEventListener("mousemove", mouseMove);
+               document.body.addEventListener("mouseup", mouseUp);
+               handle.addEventListener("touchmove", mouseMove, { passive: true });
+               handle.addEventListener("touchend", mouseUp);
+       };
+
+       Tabulator.prototype.registerModule("resizeColumns", ResizeColumns);
+       var ResizeRows = function ResizeRows(table) {
+               this.table = table; //hold Tabulator object
+               this.startColumn = false;
+               this.startY = false;
+               this.startHeight = false;
+               this.handle = null;
+               this.prevHandle = null;
+       };
+
+       ResizeRows.prototype.initializeRow = function (row) {
+               var self = this,
+                   rowEl = row.getElement();
+
+               var handle = document.createElement('div');
+               handle.className = "tabulator-row-resize-handle";
+
+               var prevHandle = document.createElement('div');
+               prevHandle.className = "tabulator-row-resize-handle prev";
+
+               handle.addEventListener("click", function (e) {
+                       e.stopPropagation();
+               });
+
+               var handleDown = function handleDown(e) {
+                       self.startRow = row;
+                       self._mouseDown(e, row, handle);
+               };
+
+               handle.addEventListener("mousedown", handleDown, { passive: true });
+               handle.addEventListener("touchstart", handleDown);
+
+               prevHandle.addEventListener("click", function (e) {
+                       e.stopPropagation();
+               });
+
+               var prevHandleDown = function prevHandleDown(e) {
+                       var prevRow = self.table.rowManager.prevDisplayRow(row);
+
+                       if (prevRow) {
+                               self.startRow = prevRow;
+                               self._mouseDown(e, prevRow, prevHandle);
+                       }
+               };
+
+               prevHandle.addEventListener("mousedown", prevHandleDown);
+               prevHandle.addEventListener("touchstart", prevHandleDown, { passive: true });
+
+               rowEl.appendChild(handle);
+               rowEl.appendChild(prevHandle);
+       };
+
+       ResizeRows.prototype._mouseDown = function (e, row, handle) {
+               var self = this;
+
+               self.table.element.classList.add("tabulator-block-select");
+
+               function mouseMove(e) {
+                       row.setHeight(self.startHeight + ((typeof e.screenY === "undefined" ? e.touches[0].screenY : e.screenY) - self.startY));
+               }
+
+               function mouseUp(e) {
+
+                       // //block editor from taking action while resizing is taking place
+                       // if(self.startColumn.modules.edit){
+                       //      self.startColumn.modules.edit.blocked = false;
+                       // }
+
+                       document.body.removeEventListener("mouseup", mouseMove);
+                       document.body.removeEventListener("mousemove", mouseMove);
+
+                       handle.removeEventListener("touchmove", mouseMove);
+                       handle.removeEventListener("touchend", mouseUp);
+
+                       self.table.element.classList.remove("tabulator-block-select");
+
+                       self.table.options.rowResized.call(this.table, row.getComponent());
+               }
+
+               e.stopPropagation(); //prevent resize from interfereing with movable columns
+
+               //block editor from taking action while resizing is taking place
+               // if(self.startColumn.modules.edit){
+               //      self.startColumn.modules.edit.blocked = true;
+               // }
+
+               self.startY = typeof e.screenY === "undefined" ? e.touches[0].screenY : e.screenY;
+               self.startHeight = row.getHeight();
+
+               document.body.addEventListener("mousemove", mouseMove);
+               document.body.addEventListener("mouseup", mouseUp);
+
+               handle.addEventListener("touchmove", mouseMove, { passive: true });
+               handle.addEventListener("touchend", mouseUp);
+       };
+
+       Tabulator.prototype.registerModule("resizeRows", ResizeRows);
+       var ResizeTable = function ResizeTable(table) {
+               this.table = table; //hold Tabulator object
+               this.binding = false;
+               this.observer = false;
+       };
+
+       ResizeTable.prototype.initialize = function (row) {
+               var table = this.table,
+                   observer;
+
+               if (typeof ResizeObserver !== "undefined" && table.rowManager.getRenderMode() === "virtual") {
+                       this.observer = new ResizeObserver(function (entry) {
+                               table.redraw();
+                       });
+
+                       this.observer.observe(table.element);
+               } else {
+                       this.binding = function () {
+                               table.redraw();
+                       };
+
+                       window.addEventListener("resize", this.binding);
+               }
+       };
+
+       ResizeTable.prototype.clearBindings = function (row) {
+               if (this.binding) {
+                       window.removeEventListener("resize", this.binding);
+               }
+
+               if (this.observer) {
+                       this.observer.unobserve(this.table.element);
+               }
+       };
+
+       Tabulator.prototype.registerModule("resizeTable", ResizeTable);
+       var ResponsiveLayout = function ResponsiveLayout(table) {
+               this.table = table; //hold Tabulator object
+               this.columns = [];
+               this.hiddenColumns = [];
+               this.mode = "";
+               this.index = 0;
+               this.collapseFormatter = [];
+               this.collapseStartOpen = true;
+       };
+
+       //generate resposive columns list
+       ResponsiveLayout.prototype.initialize = function () {
+               var self = this,
+                   columns = [];
+
+               this.mode = this.table.options.responsiveLayout;
+               this.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData;
+               this.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen;
+               this.hiddenColumns = [];
+
+               //detemine level of responsivity for each column
+               this.table.columnManager.columnsByIndex.forEach(function (column, i) {
+                       if (column.modules.responsive) {
+                               if (column.modules.responsive.order && column.modules.responsive.visible) {
+                                       column.modules.responsive.index = i;
+                                       columns.push(column);
+
+                                       if (!column.visible && self.mode === "collapse") {
+                                               self.hiddenColumns.push(column);
+                                       }
+                               }
+                       }
+               });
+
+               //sort list by responsivity
+               columns = columns.reverse();
+               columns = columns.sort(function (a, b) {
+                       var diff = b.modules.responsive.order - a.modules.responsive.order;
+                       return diff || b.modules.responsive.index - a.modules.responsive.index;
+               });
+
+               this.columns = columns;
+
+               if (this.mode === "collapse") {
+                       this.generateCollapsedContent();
+               }
+       };
+
+       //define layout information
+       ResponsiveLayout.prototype.initializeColumn = function (column) {
+               var def = column.getDefinition();
+
+               column.modules.responsive = { order: typeof def.responsive === "undefined" ? 1 : def.responsive, visible: def.visible === false ? false : true };
+       };
+
+       ResponsiveLayout.prototype.layoutRow = function (row) {
+               var rowEl = row.getElement(),
+                   el = document.createElement("div");
+
+               el.classList.add("tabulator-responsive-collapse");
+
+               if (!rowEl.classList.contains("tabulator-calcs")) {
+                       row.modules.responsiveLayout = {
+                               element: el
+                       };
+
+                       if (!this.collapseStartOpen) {
+                               el.style.display = 'none';
+                       }
+
+                       rowEl.appendChild(el);
+
+                       this.generateCollapsedRowContent(row);
+               }
+       };
+
+       //update column visibility
+       ResponsiveLayout.prototype.updateColumnVisibility = function (column, visible) {
+               var index;
+               if (column.modules.responsive) {
+                       column.modules.responsive.visible = visible;
+                       this.initialize();
+               }
+       };
+
+       ResponsiveLayout.prototype.hideColumn = function (column) {
+               column.hide(false, true);
+
+               if (this.mode === "collapse") {
+                       this.hiddenColumns.unshift(column);
+                       this.generateCollapsedContent();
+               }
+       };
+
+       ResponsiveLayout.prototype.showColumn = function (column) {
+               var index;
+
+               column.show(false, true);
+               //set column width to prevent calculation loops on uninitialized columns
+               column.setWidth(column.getWidth());
+
+               if (this.mode === "collapse") {
+                       index = this.hiddenColumns.indexOf(column);
+
+                       if (index > -1) {
+                               this.hiddenColumns.splice(index, 1);
+                       }
+
+                       this.generateCollapsedContent();
+               }
+       };
+
+       //redraw columns to fit space
+       ResponsiveLayout.prototype.update = function () {
+               var self = this,
+                   working = true;
+
+               while (working) {
+
+                       var width = self.table.modules.layout.getMode() == "fitColumns" ? self.table.columnManager.getFlexBaseWidth() : self.table.columnManager.getWidth();
+
+                       var diff = (self.table.options.headerVisible ? self.table.columnManager.element.clientWidth : self.table.element.clientWidth) - width;
+
+                       if (diff < 0) {
+                               //table is too wide
+                               var column = self.columns[self.index];
+
+                               if (column) {
+                                       self.hideColumn(column);
+                                       self.index++;
+                               } else {
+                                       working = false;
+                               }
+                       } else {
+
+                               //table has spare space
+                               var _column = self.columns[self.index - 1];
+
+                               if (_column) {
+                                       if (diff > 0) {
+                                               if (diff >= _column.getWidth()) {
+                                                       self.showColumn(_column);
+                                                       self.index--;
+                                               } else {
+                                                       working = false;
+                                               }
+                                       } else {
+                                               working = false;
+                                       }
+                               } else {
+                                       working = false;
+                               }
+                       }
+
+                       if (!self.table.rowManager.activeRowsCount) {
+                               self.table.rowManager.renderEmptyScroll();
+                       }
+               }
+       };
+
+       ResponsiveLayout.prototype.generateCollapsedContent = function () {
+               var self = this,
+                   rows = this.table.rowManager.getDisplayRows();
+
+               rows.forEach(function (row) {
+                       self.generateCollapsedRowContent(row);
+               });
+       };
+
+       ResponsiveLayout.prototype.generateCollapsedRowContent = function (row) {
+               var el, contents;
+
+               if (row.modules.responsiveLayout) {
+                       el = row.modules.responsiveLayout.element;
+
+                       while (el.firstChild) {
+                               el.removeChild(el.firstChild);
+                       }contents = this.collapseFormatter(this.generateCollapsedRowData(row));
+                       if (contents) {
+                               el.appendChild(contents);
+                       }
+               }
+       };
+
+       ResponsiveLayout.prototype.generateCollapsedRowData = function (row) {
+               var self = this,
+                   data = row.getData(),
+                   output = [],
+                   mockCellComponent;
+
+               this.hiddenColumns.forEach(function (column) {
+                       var value = column.getFieldValue(data);
+
+                       if (column.definition.title && column.field) {
+                               if (column.modules.format && self.table.options.responsiveLayoutCollapseUseFormatters) {
+
+                                       mockCellComponent = {
+                                               value: false,
+                                               data: {},
+                                               getValue: function getValue() {
+                                                       return value;
+                                               },
+                                               getData: function getData() {
+                                                       return data;
+                                               },
+                                               getElement: function getElement() {
+                                                       return document.createElement("div");
+                                               },
+                                               getRow: function getRow() {
+                                                       return row.getComponent();
+                                               },
+                                               getColumn: function getColumn() {
+                                                       return column.getComponent();
+                                               }
+                                       };
+
+                                       output.push({
+                                               title: column.definition.title,
+                                               value: column.modules.format.formatter.call(self.table.modules.format, mockCellComponent, column.modules.format.params)
+                                       });
+                               } else {
+                                       output.push({
+                                               title: column.definition.title,
+                                               value: value
+                                       });
+                               }
+                       }
+               });
+
+               return output;
+       };
+
+       ResponsiveLayout.prototype.formatCollapsedData = function (data) {
+               var list = document.createElement("table"),
+                   listContents = "";
+
+               data.forEach(function (item) {
+                       var div = document.createElement("div");
+
+                       if (item.value instanceof Node) {
+                               div.appendChild(item.value);
+                               item.value = div.innerHTML;
+                       }
+
+                       listContents += "<tr><td><strong>" + item.title + "</strong></td><td>" + item.value + "</td></tr>";
+               });
+
+               list.innerHTML = listContents;
+
+               return Object.keys(data).length ? list : "";
+       };
+
+       Tabulator.prototype.registerModule("responsiveLayout", ResponsiveLayout);
+
+       var SelectRow = function SelectRow(table) {
+               this.table = table; //hold Tabulator object
+               this.selecting = false; //flag selecting in progress
+               this.lastClickedRow = false; //last clicked row
+               this.selectPrev = []; //hold previously selected element for drag drop selection
+               this.selectedRows = []; //hold selected rows
+               this.headerCheckboxElement = null; // hold header select element
+       };
+
+       SelectRow.prototype.clearSelectionData = function (silent) {
+               this.selecting = false;
+               this.lastClickedRow = false;
+               this.selectPrev = [];
+               this.selectedRows = [];
+
+               if (!silent) {
+                       this._rowSelectionChanged();
+               }
+       };
+
+       SelectRow.prototype.initializeRow = function (row) {
+               var self = this,
+                   element = row.getElement();
+
+               // trigger end of row selection
+               var endSelect = function endSelect() {
+
+                       setTimeout(function () {
+                               self.selecting = false;
+                       }, 50);
+
+                       document.body.removeEventListener("mouseup", endSelect);
+               };
+
+               row.modules.select = { selected: false };
+
+               //set row selection class
+               if (self.table.options.selectableCheck.call(this.table, row.getComponent())) {
+                       element.classList.add("tabulator-selectable");
+                       element.classList.remove("tabulator-unselectable");
+
+                       if (self.table.options.selectable && self.table.options.selectable != "highlight") {
+                               if (self.table.options.selectableRangeMode === "click") {
+                                       element.addEventListener("click", function (e) {
+
+                                               self.table._clearSelection();
+
+                                               if (e.shiftKey) {
+                                                       self.lastClickedRow = self.lastClickedRow || row;
+
+                                                       var lastClickedRowIdx = self.table.rowManager.getDisplayRowIndex(self.lastClickedRow);
+                                                       var rowIdx = self.table.rowManager.getDisplayRowIndex(row);
+
+                                                       var fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx;
+                                                       var toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx;
+
+                                                       var rows = self.table.rowManager.getDisplayRows().slice(0);
+                                                       var toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1);
+
+                                                       if (e.ctrlKey || e.metaKey) {
+                                                               toggledRows.forEach(function (toggledRow) {
+                                                                       if (toggledRow !== self.lastClickedRow) {
+
+                                                                               if (self.table.options.selectable !== true && !self.isRowSelected(row)) {
+                                                                                       if (self.selectedRows.length < self.table.options.selectable) {
+                                                                                               self.toggleRow(toggledRow);
+                                                                                       }
+                                                                               } else {
+                                                                                       self.toggleRow(toggledRow);
+                                                                               }
+                                                                       }
+                                                               });
+                                                               self.lastClickedRow = row;
+                                                       } else {
+                                                               self.deselectRows();
+
+                                                               if (self.table.options.selectable !== true) {
+                                                                       if (toggledRows.length > self.table.options.selectable) {
+                                                                               toggledRows = toggledRows.slice(0, self.table.options.selectable);
+                                                                       }
+                                                               }
+
+                                                               self.selectRows(toggledRows);
+                                                       }
+                                               } else if (e.ctrlKey || e.metaKey) {
+                                                       self.toggleRow(row);
+                                                       self.lastClickedRow = row;
+                                               } else {
+                                                       self.deselectRows();
+                                                       self.selectRows(row);
+                                                       self.lastClickedRow = row;
+                                               }
+
+                                               self.table._clearSelection();
+                                       });
+                               } else {
+                                       element.addEventListener("click", function (e) {
+                                               if (!self.table.modExists("edit") || !self.table.modules.edit.getCurrentCell()) {
+                                                       self.table._clearSelection();
+                                               }
+
+                                               if (!self.selecting) {
+                                                       self.toggleRow(row);
+                                               }
+                                       });
+
+                                       element.addEventListener("mousedown", function (e) {
+                                               if (e.shiftKey) {
+                                                       self.table._clearSelection();
+
+                                                       self.selecting = true;
+
+                                                       self.selectPrev = [];
+
+                                                       document.body.addEventListener("mouseup", endSelect);
+                                                       document.body.addEventListener("keyup", endSelect);
+
+                                                       self.toggleRow(row);
+
+                                                       return false;
+                                               }
+                                       });
+
+                                       element.addEventListener("mouseenter", function (e) {
+                                               if (self.selecting) {
+                                                       self.table._clearSelection();
+                                                       self.toggleRow(row);
+
+                                                       if (self.selectPrev[1] == row) {
+                                                               self.toggleRow(self.selectPrev[0]);
+                                                       }
+                                               }
+                                       });
+
+                                       element.addEventListener("mouseout", function (e) {
+                                               if (self.selecting) {
+                                                       self.table._clearSelection();
+                                                       self.selectPrev.unshift(row);
+                                               }
+                                       });
+                               }
+                       }
+               } else {
+                       element.classList.add("tabulator-unselectable");
+                       element.classList.remove("tabulator-selectable");
+               }
+       };
+
+       //toggle row selection
+       SelectRow.prototype.toggleRow = function (row) {
+               if (this.table.options.selectableCheck.call(this.table, row.getComponent())) {
+                       if (row.modules.select && row.modules.select.selected) {
+                               this._deselectRow(row);
+                       } else {
+                               this._selectRow(row);
+                       }
+               }
+       };
+
+       //select a number of rows
+       SelectRow.prototype.selectRows = function (rows) {
+               var self = this;
+
+               switch (typeof rows === 'undefined' ? 'undefined' : _typeof(rows)) {
+                       case "undefined":
+                               self.table.rowManager.rows.forEach(function (row) {
+                                       self._selectRow(row, true, true);
+                               });
+
+                               self._rowSelectionChanged();
+                               break;
+
+                       case "boolean":
+                               if (rows === true) {
+                                       self.table.rowManager.activeRows.forEach(function (row) {
+                                               self._selectRow(row, true, true);
+                                       });
+
+                                       self._rowSelectionChanged();
+                               }
+                               break;
+
+                       default:
+                               if (Array.isArray(rows)) {
+                                       rows.forEach(function (row) {
+                                               self._selectRow(row, true, true);
+                                       });
+
+                                       self._rowSelectionChanged();
+                               } else {
+                                       self._selectRow(rows, false, true);
+                               }
+                               break;
+               }
+       };
+
+       //select an individual row
+       SelectRow.prototype._selectRow = function (rowInfo, silent, force) {
+               var index;
+
+               //handle max row count
+               if (!isNaN(this.table.options.selectable) && this.table.options.selectable !== true && !force) {
+                       if (this.selectedRows.length >= this.table.options.selectable) {
+                               if (this.table.options.selectableRollingSelection) {
+                                       this._deselectRow(this.selectedRows[0]);
+                               } else {
+                                       return false;
+                               }
+                       }
+               }
+
+               var row = this.table.rowManager.findRow(rowInfo);
+
+               if (row) {
+                       if (this.selectedRows.indexOf(row) == -1) {
+                               if (!row.modules.select) {
+                                       row.modules.select = {};
+                               }
+
+                               row.modules.select.selected = true;
+                               if (row.modules.select.checkboxEl) {
+                                       row.modules.select.checkboxEl.checked = true;
+                               }
+                               row.getElement().classList.add("tabulator-selected");
+
+                               this.selectedRows.push(row);
+
+                               if (!silent) {
+                                       this.table.options.rowSelected.call(this.table, row.getComponent());
+                                       this._rowSelectionChanged();
+                               }
+                       }
+               } else {
+                       if (!silent) {
+                               console.warn("Selection Error - No such row found, ignoring selection:" + rowInfo);
+                       }
+               }
+       };
+
+       SelectRow.prototype.isRowSelected = function (row) {
+               return this.selectedRows.indexOf(row) !== -1;
+       };
+
+       //deselect a number of rows
+       SelectRow.prototype.deselectRows = function (rows) {
+               var self = this,
+                   rowCount;
+
+               if (typeof rows == "undefined") {
+
+                       rowCount = self.selectedRows.length;
+
+                       for (var i = 0; i < rowCount; i++) {
+                               self._deselectRow(self.selectedRows[0], true);
+                       }
+
+                       self._rowSelectionChanged();
+               } else {
+                       if (Array.isArray(rows)) {
+                               rows.forEach(function (row) {
+                                       self._deselectRow(row, true);
+                               });
+
+                               self._rowSelectionChanged();
+                       } else {
+                               self._deselectRow(rows);
+                       }
+               }
+       };
+
+       //deselect an individual row
+       SelectRow.prototype._deselectRow = function (rowInfo, silent) {
+               var self = this,
+                   row = self.table.rowManager.findRow(rowInfo),
+                   index;
+
+               if (row) {
+                       index = self.selectedRows.findIndex(function (selectedRow) {
+                               return selectedRow == row;
+                       });
+
+                       if (index > -1) {
+
+                               if (!row.modules.select) {
+                                       row.modules.select = {};
+                               }
+
+                               row.modules.select.selected = false;
+                               if (row.modules.select.checkboxEl) {
+                                       row.modules.select.checkboxEl.checked = false;
+                               }
+                               row.getElement().classList.remove("tabulator-selected");
+                               self.selectedRows.splice(index, 1);
+
+                               if (!silent) {
+                                       self.table.options.rowDeselected.call(this.table, row.getComponent());
+                                       self._rowSelectionChanged();
+                               }
+                       }
+               } else {
+                       if (!silent) {
+                               console.warn("Deselection Error - No such row found, ignoring selection:" + rowInfo);
+                       }
+               }
+       };
+
+       SelectRow.prototype.getSelectedData = function () {
+               var data = [];
+
+               this.selectedRows.forEach(function (row) {
+                       data.push(row.getData());
+               });
+
+               return data;
+       };
+
+       SelectRow.prototype.getSelectedRows = function () {
+
+               var rows = [];
+
+               this.selectedRows.forEach(function (row) {
+                       rows.push(row.getComponent());
+               });
+
+               return rows;
+       };
+
+       SelectRow.prototype._rowSelectionChanged = function () {
+               if (this.headerCheckboxElement) {
+                       if (this.selectedRows.length === 0) {
+                               this.headerCheckboxElement.checked = false;
+                               this.headerCheckboxElement.indeterminate = false;
+                       } else if (this.table.rowManager.rows.length === this.selectedRows.length) {
+                               this.headerCheckboxElement.checked = true;
+                               this.headerCheckboxElement.indeterminate = false;
+                       } else {
+                               this.headerCheckboxElement.indeterminate = true;
+                               this.headerCheckboxElement.checked = false;
+                       }
+               }
+
+               this.table.options.rowSelectionChanged.call(this.table, this.getSelectedData(), this.getSelectedRows());
+       };
+
+       SelectRow.prototype.registerRowSelectCheckbox = function (row, element) {
+               if (!row._row.modules.select) {
+                       row._row.modules.select = {};
+               }
+
+               row._row.modules.select.checkboxEl = element;
+       };
+
+       SelectRow.prototype.registerHeaderSelectCheckbox = function (element) {
+               this.headerCheckboxElement = element;
+       };
+
+       Tabulator.prototype.registerModule("selectRow", SelectRow);
+
+       var Sort = function Sort(table) {
+               this.table = table; //hold Tabulator object
+               this.sortList = []; //holder current sort
+               this.changed = false; //has the sort changed since last render
+       };
+
+       //initialize column header for sorting
+       Sort.prototype.initializeColumn = function (column, content) {
+               var self = this,
+                   sorter = false,
+                   colEl,
+                   arrowEl;
+
+               switch (_typeof(column.definition.sorter)) {
+                       case "string":
+                               if (self.sorters[column.definition.sorter]) {
+                                       sorter = self.sorters[column.definition.sorter];
+                               } else {
+                                       console.warn("Sort Error - No such sorter found: ", column.definition.sorter);
+                               }
+                               break;
+
+                       case "function":
+                               sorter = column.definition.sorter;
+                               break;
+               }
+
+               column.modules.sort = {
+                       sorter: sorter, dir: "none",
+                       params: column.definition.sorterParams || {},
+                       startingDir: column.definition.headerSortStartingDir || "asc",
+                       tristate: typeof column.definition.headerSortTristate !== "undefined" ? column.definition.headerSortTristate : this.table.options.headerSortTristate
+               };
+
+               if (typeof column.definition.headerSort === "undefined" ? this.table.options.headerSort !== false : column.definition.headerSort !== false) {
+
+                       colEl = column.getElement();
+
+                       colEl.classList.add("tabulator-sortable");
+
+                       arrowEl = document.createElement("div");
+                       arrowEl.classList.add("tabulator-arrow");
+                       //create sorter arrow
+                       content.appendChild(arrowEl);
+
+                       //sort on click
+                       colEl.addEventListener("click", function (e) {
+                               var dir = "",
+                                   sorters = [],
+                                   match = false;
+
+                               if (column.modules.sort) {
+                                       if (column.modules.sort.tristate) {
+                                               if (column.modules.sort.dir == "none") {
+                                                       dir = column.modules.sort.startingDir;
+                                               } else {
+                                                       if (column.modules.sort.dir == column.modules.sort.startingDir) {
+                                                               dir = column.modules.sort.dir == "asc" ? "desc" : "asc";
+                                                       } else {
+                                                               dir = "none";
+                                                       }
+                                               }
+                                       } else {
+                                               switch (column.modules.sort.dir) {
+                                                       case "asc":
+                                                               dir = "desc";
+                                                               break;
+
+                                                       case "desc":
+                                                               dir = "asc";
+                                                               break;
+
+                                                       default:
+                                                               dir = column.modules.sort.startingDir;
+                                               }
+                                       }
+
+                                       if (self.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) {
+                                               sorters = self.getSort();
+
+                                               match = sorters.findIndex(function (sorter) {
+                                                       return sorter.field === column.getField();
+                                               });
+
+                                               if (match > -1) {
+                                                       sorters[match].dir = dir;
+
+                                                       if (match != sorters.length - 1) {
+                                                               match = sorters.splice(match, 1)[0];
+                                                               if (dir != "none") {
+                                                                       sorters.push(match);
+                                                               }
+                                                       }
+                                               } else {
+                                                       if (dir != "none") {
+                                                               sorters.push({ column: column, dir: dir });
+                                                       }
+                                               }
+
+                                               //add to existing sort
+                                               self.setSort(sorters);
+                                       } else {
+                                               if (dir == "none") {
+                                                       self.clear();
+                                               } else {
+                                                       //sort by column only
+                                                       self.setSort(column, dir);
+                                               }
+                                       }
+
+                                       self.table.rowManager.sorterRefresh(!self.sortList.length);
+                               }
+                       });
+               }
+       };
+
+       //check if the sorters have changed since last use
+       Sort.prototype.hasChanged = function () {
+               var changed = this.changed;
+               this.changed = false;
+               return changed;
+       };
+
+       //return current sorters
+       Sort.prototype.getSort = function () {
+               var self = this,
+                   sorters = [];
+
+               self.sortList.forEach(function (item) {
+                       if (item.column) {
+                               sorters.push({ column: item.column.getComponent(), field: item.column.getField(), dir: item.dir });
+                       }
+               });
+
+               return sorters;
+       };
+
+       //change sort list and trigger sort
+       Sort.prototype.setSort = function (sortList, dir) {
+               var self = this,
+                   newSortList = [];
+
+               if (!Array.isArray(sortList)) {
+                       sortList = [{ column: sortList, dir: dir }];
+               }
+
+               sortList.forEach(function (item) {
+                       var column;
+
+                       column = self.table.columnManager.findColumn(item.column);
+
+                       if (column) {
+                               item.column = column;
+                               newSortList.push(item);
+                               self.changed = true;
+                       } else {
+                               console.warn("Sort Warning - Sort field does not exist and is being ignored: ", item.column);
+                       }
+               });
+
+               self.sortList = newSortList;
+
+               if (this.table.options.persistentSort && this.table.modExists("persistence", true)) {
+                       this.table.modules.persistence.save("sort");
+               }
+       };
+
+       //clear sorters
+       Sort.prototype.clear = function () {
+               this.setSort([]);
+       };
+
+       //find appropriate sorter for column
+       Sort.prototype.findSorter = function (column) {
+               var row = this.table.rowManager.activeRows[0],
+                   sorter = "string",
+                   field,
+                   value;
+
+               if (row) {
+                       row = row.getData();
+                       field = column.getField();
+
+                       if (field) {
+
+                               value = column.getFieldValue(row);
+
+                               switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
+                                       case "undefined":
+                                               sorter = "string";
+                                               break;
+
+                                       case "boolean":
+                                               sorter = "boolean";
+                                               break;
+
+                                       default:
+                                               if (!isNaN(value) && value !== "") {
+                                                       sorter = "number";
+                                               } else {
+                                                       if (value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)) {
+                                                               sorter = "alphanum";
+                                                       }
+                                               }
+                                               break;
+                               }
+                       }
+               }
+
+               return this.sorters[sorter];
+       };
+
+       //work through sort list sorting data
+       Sort.prototype.sort = function (data) {
+               var self = this,
+                   lastSort,
+                   sortList;
+
+               sortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList;
+
+               if (self.table.options.dataSorting) {
+                       self.table.options.dataSorting.call(self.table, self.getSort());
+               }
+
+               self.clearColumnHeaders();
+
+               if (!self.table.options.ajaxSorting) {
+
+                       sortList.forEach(function (item, i) {
+
+                               if (item.column && item.column.modules.sort) {
+
+                                       //if no sorter has been defined, take a guess
+                                       if (!item.column.modules.sort.sorter) {
+                                               item.column.modules.sort.sorter = self.findSorter(item.column);
+                                       }
+
+                                       self._sortItem(data, item.column, item.dir, sortList, i);
+                               }
+
+                               self.setColumnHeader(item.column, item.dir);
+                       });
+               } else {
+                       sortList.forEach(function (item, i) {
+                               self.setColumnHeader(item.column, item.dir);
+                       });
+               }
+
+               if (self.table.options.dataSorted) {
+                       self.table.options.dataSorted.call(self.table, self.getSort(), self.table.rowManager.getComponents(true));
+               }
+       };
+
+       //clear sort arrows on columns
+       Sort.prototype.clearColumnHeaders = function () {
+               this.table.columnManager.getRealColumns().forEach(function (column) {
+                       if (column.modules.sort) {
+                               column.modules.sort.dir = "none";
+                               column.getElement().setAttribute("aria-sort", "none");
+                       }
+               });
+       };
+
+       //set the column header sort direction
+       Sort.prototype.setColumnHeader = function (column, dir) {
+               column.modules.sort.dir = dir;
+               column.getElement().setAttribute("aria-sort", dir);
+       };
+
+       //sort each item in sort list
+       Sort.prototype._sortItem = function (data, column, dir, sortList, i) {
+               var self = this;
+
+               var params = typeof column.modules.sort.params === "function" ? column.modules.sort.params(column.getComponent(), dir) : column.modules.sort.params;
+
+               data.sort(function (a, b) {
+
+                       var result = self._sortRow(a, b, column, dir, params);
+
+                       //if results match recurse through previous searchs to be sure
+                       if (result === 0 && i) {
+                               for (var j = i - 1; j >= 0; j--) {
+                                       result = self._sortRow(a, b, sortList[j].column, sortList[j].dir, params);
+
+                                       if (result !== 0) {
+                                               break;
+                                       }
+                               }
+                       }
+
+                       return result;
+               });
+       };
+
+       //process individual rows for a sort function on active data
+       Sort.prototype._sortRow = function (a, b, column, dir, params) {
+               var el1Comp, el2Comp, colComp;
+
+               //switch elements depending on search direction
+               var el1 = dir == "asc" ? a : b;
+               var el2 = dir == "asc" ? b : a;
+
+               a = column.getFieldValue(el1.getData());
+               b = column.getFieldValue(el2.getData());
+
+               a = typeof a !== "undefined" ? a : "";
+               b = typeof b !== "undefined" ? b : "";
+
+               el1Comp = el1.getComponent();
+               el2Comp = el2.getComponent();
+
+               return column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params);
+       };
+
+       //default data sorters
+       Sort.prototype.sorters = {
+
+               //sort numbers
+               number: function number(a, b, aRow, bRow, column, dir, params) {
+                       var alignEmptyValues = params.alignEmptyValues;
+                       var decimal = params.decimalSeparator || ".";
+                       var thousand = params.thousandSeparator || ",";
+                       var emptyAlign = 0;
+
+                       a = parseFloat(String(a).split(thousand).join("").split(decimal).join("."));
+                       b = parseFloat(String(b).split(thousand).join("").split(decimal).join("."));
+
+                       //handle non numeric values
+                       if (isNaN(a)) {
+                               emptyAlign = isNaN(b) ? 0 : -1;
+                       } else if (isNaN(b)) {
+                               emptyAlign = 1;
+                       } else {
+                               //compare valid values
+                               return a - b;
+                       }
+
+                       //fix empty values in position
+                       if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
+                               emptyAlign *= -1;
+                       }
+
+                       return emptyAlign;
+               },
+
+               //sort strings
+               string: function string(a, b, aRow, bRow, column, dir, params) {
+                       var alignEmptyValues = params.alignEmptyValues;
+                       var emptyAlign = 0;
+                       var locale;
+
+                       //handle empty values
+                       if (!a) {
+                               emptyAlign = !b ? 0 : -1;
+                       } else if (!b) {
+                               emptyAlign = 1;
+                       } else {
+                               //compare valid values
+                               switch (_typeof(params.locale)) {
+                                       case "boolean":
+                                               if (params.locale) {
+                                                       locale = this.table.modules.localize.getLocale();
+                                               }
+                                               break;
+                                       case "string":
+                                               locale = params.locale;
+                                               break;
+                               }
+
+                               return String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale);
+                       }
+
+                       //fix empty values in position
+                       if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
+                               emptyAlign *= -1;
+                       }
+
+                       return emptyAlign;
+               },
+
+               //sort date
+               date: function date(a, b, aRow, bRow, column, dir, params) {
+                       if (!params.format) {
+                               params.format = "DD/MM/YYYY";
+                       }
+
+                       return this.sorters.datetime.call(this, a, b, aRow, bRow, column, dir, params);
+               },
+
+               //sort hh:mm formatted times
+               time: function time(a, b, aRow, bRow, column, dir, params) {
+                       if (!params.format) {
+                               params.format = "hh:mm";
+                       }
+
+                       return this.sorters.datetime.call(this, a, b, aRow, bRow, column, dir, params);
+               },
+
+               //sort datetime
+               datetime: function datetime(a, b, aRow, bRow, column, dir, params) {
+                       var format = params.format || "DD/MM/YYYY hh:mm:ss",
+                           alignEmptyValues = params.alignEmptyValues,
+                           emptyAlign = 0;
+
+                       if (typeof moment != "undefined") {
+                               a = moment(a, format);
+                               b = moment(b, format);
+
+                               if (!a.isValid()) {
+                                       emptyAlign = !b.isValid() ? 0 : -1;
+                               } else if (!b.isValid()) {
+                                       emptyAlign = 1;
+                               } else {
+                                       //compare valid values
+                                       return a - b;
+                               }
+
+                               //fix empty values in position
+                               if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
+                                       emptyAlign *= -1;
+                               }
+
+                               return emptyAlign;
+                       } else {
+                               console.error("Sort Error - 'datetime' sorter is dependant on moment.js");
+                       }
+               },
+
+               //sort booleans
+               boolean: function boolean(a, b, aRow, bRow, column, dir, params) {
+                       var el1 = a === true || a === "true" || a === "True" || a === 1 ? 1 : 0;
+                       var el2 = b === true || b === "true" || b === "True" || b === 1 ? 1 : 0;
+
+                       return el1 - el2;
+               },
+
+               //sort if element contains any data
+               array: function array(a, b, aRow, bRow, column, dir, params) {
+                       var el1 = 0;
+                       var el2 = 0;
+                       var type = params.type || "length";
+                       var alignEmptyValues = params.alignEmptyValues;
+                       var emptyAlign = 0;
+
+                       function calc(value) {
+
+                               switch (type) {
+                                       case "length":
+                                               return value.length;
+                                               break;
+
+                                       case "sum":
+                                               return value.reduce(function (c, d) {
+                                                       return c + d;
+                                               });
+                                               break;
+
+                                       case "max":
+                                               return Math.max.apply(null, value);
+                                               break;
+
+                                       case "min":
+                                               return Math.min.apply(null, value);
+                                               break;
+
+                                       case "avg":
+                                               return value.reduce(function (c, d) {
+                                                       return c + d;
+                                               }) / value.length;
+                                               break;
+                               }
+                       }
+
+                       //handle non array values
+                       if (!Array.isArray(a)) {
+                               alignEmptyValues = !Array.isArray(b) ? 0 : -1;
+                       } else if (!Array.isArray(b)) {
+                               alignEmptyValues = 1;
+                       } else {
+
+                               //compare valid values
+                               el1 = a ? calc(a) : 0;
+                               el2 = b ? calc(b) : 0;
+
+                               return el1 - el2;
+                       }
+
+                       //fix empty values in position
+                       if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
+                               emptyAlign *= -1;
+                       }
+
+                       return emptyAlign;
+               },
+
+               //sort if element contains any data
+               exists: function exists(a, b, aRow, bRow, column, dir, params) {
+                       var el1 = typeof a == "undefined" ? 0 : 1;
+                       var el2 = typeof b == "undefined" ? 0 : 1;
+
+                       return el1 - el2;
+               },
+
+               //sort alpha numeric strings
+               alphanum: function alphanum(as, bs, aRow, bRow, column, dir, params) {
+                       var a,
+                           b,
+                           a1,
+                           b1,
+                           i = 0,
+                           L,
+                           rx = /(\d+)|(\D+)/g,
+                           rd = /\d/;
+                       var alignEmptyValues = params.alignEmptyValues;
+                       var emptyAlign = 0;
+
+                       //handle empty values
+                       if (!as && as !== 0) {
+                               emptyAlign = !bs && bs !== 0 ? 0 : -1;
+                       } else if (!bs && bs !== 0) {
+                               emptyAlign = 1;
+                       } else {
+
+                               if (isFinite(as) && isFinite(bs)) return as - bs;
+                               a = String(as).toLowerCase();
+                               b = String(bs).toLowerCase();
+                               if (a === b) return 0;
+                               if (!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;
+                               a = a.match(rx);
+                               b = b.match(rx);
+                               L = a.length > b.length ? b.length : a.length;
+                               while (i < L) {
+                                       a1 = a[i];
+                                       b1 = b[i++];
+                                       if (a1 !== b1) {
+                                               if (isFinite(a1) && isFinite(b1)) {
+                                                       if (a1.charAt(0) === "0") a1 = "." + a1;
+                                                       if (b1.charAt(0) === "0") b1 = "." + b1;
+                                                       return a1 - b1;
+                                               } else return a1 > b1 ? 1 : -1;
+                                       }
+                               }
+
+                               return a.length > b.length;
+                       }
+
+                       //fix empty values in position
+                       if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
+                               emptyAlign *= -1;
+                       }
+
+                       return emptyAlign;
+               }
+       };
+
+       Tabulator.prototype.registerModule("sort", Sort);
+
+       var Validate = function Validate(table) {
+               this.table = table;
+       };
+
+       //validate
+       Validate.prototype.initializeColumn = function (column) {
+               var self = this,
+                   config = [],
+                   validator;
+
+               if (column.definition.validator) {
+
+                       if (Array.isArray(column.definition.validator)) {
+                               column.definition.validator.forEach(function (item) {
+                                       validator = self._extractValidator(item);
+
+                                       if (validator) {
+                                               config.push(validator);
+                                       }
+                               });
+                       } else {
+                               validator = this._extractValidator(column.definition.validator);
+
+                               if (validator) {
+                                       config.push(validator);
+                               }
+                       }
+
+                       column.modules.validate = config.length ? config : false;
+               }
+       };
+
+       Validate.prototype._extractValidator = function (value) {
+               var type, params, pos;
+
+               switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
+                       case "string":
+                               pos = value.indexOf(':');
+
+                               if (pos > -1) {
+                                       type = value.substring(0, pos);
+                                       params = value.substring(pos + 1);
+                               } else {
+                                       type = value;
+                               }
+
+                               console.log("v", value, type, params);
+
+                               return this._buildValidator(type, params);
+                               break;
+
+                       case "function":
+                               return this._buildValidator(value);
+                               break;
+
+                       case "object":
+                               return this._buildValidator(value.type, value.parameters);
+                               break;
+               }
+       };
+
+       Validate.prototype._buildValidator = function (type, params) {
+
+               var func = typeof type == "function" ? type : this.validators[type];
+
+               if (!func) {
+                       console.warn("Validator Setup Error - No matching validator found:", type);
+                       return false;
+               } else {
+                       return {
+                               type: typeof type == "function" ? "function" : type,
+                               func: func,
+                               params: params
+                       };
+               }
+       };
+
+       Validate.prototype.validate = function (validators, cell, value) {
+               var self = this,
+                   valid = [];
+
+               if (validators) {
+                       validators.forEach(function (item) {
+                               if (!item.func.call(self, cell, value, item.params)) {
+                                       valid.push({
+                                               type: item.type,
+                                               parameters: item.params
+                                       });
+                               }
+                       });
+               }
+
+               return valid.length ? valid : true;
+       };
+
+       Validate.prototype.validators = {
+
+               //is integer
+               integer: function integer(cell, value, parameters) {
+                       if (value === "" || value === null || typeof value === "undefined") {
+                               return true;
+                       }
+                       value = Number(value);
+                       return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;
+               },
+
+               //is float
+               float: function float(cell, value, parameters) {
+                       if (value === "" || value === null || typeof value === "undefined") {
+                               return true;
+                       }
+                       value = Number(value);
+                       return typeof value === 'number' && isFinite(value) && value % 1 !== 0;
+               },
+
+               //must be a number
+               numeric: function numeric(cell, value, parameters) {
+                       if (value === "" || value === null || typeof value === "undefined") {
+                               return true;
+                       }
+                       return !isNaN(value);
+               },
+
+               //must be a string
+               string: function string(cell, value, parameters) {
+                       if (value === "" || value === null || typeof value === "undefined") {
+                               return true;
+                       }
+                       return isNaN(value);
+               },
+
+               //maximum value
+               max: function max(cell, value, parameters) {
+                       if (value === "" || value === null || typeof value === "undefined") {
+                               return true;
+                       }
+                       return parseFloat(value) <= parameters;
+               },
+
+               //minimum value
+               min: function min(cell, value, parameters) {
+                       if (value === "" || value === null || typeof value === "undefined") {
+                               return true;
+                       }
+                       return parseFloat(value) >= parameters;
+               },
+
+               //minimum string length
+               minLength: function minLength(cell, value, parameters) {
+                       if (value === "" || value === null || typeof value === "undefined") {
+                               return true;
+                       }
+                       return String(value).length >= parameters;
+               },
+
+               //maximum string length
+               maxLength: function maxLength(cell, value, parameters) {
+                       if (value === "" || value === null || typeof value === "undefined") {
+                               return true;
+                       }
+                       return String(value).length <= parameters;
+               },
+
+               //in provided value list
+               in: function _in(cell, value, parameters) {
+                       if (value === "" || value === null || typeof value === "undefined") {
+                               return true;
+                       }
+                       if (typeof parameters == "string") {
+                               parameters = parameters.split("|");
+                       }
+
+                       return value === "" || parameters.indexOf(value) > -1;
+               },
+
+               //must match provided regex
+               regex: function regex(cell, value, parameters) {
+                       if (value === "" || value === null || typeof value === "undefined") {
+                               return true;
+                       }
+                       var reg = new RegExp(parameters);
+
+                       return reg.test(value);
+               },
+
+               //value must be unique in this column
+               unique: function unique(cell, value, parameters) {
+                       if (value === "" || value === null || typeof value === "undefined") {
+                               return true;
+                       }
+                       var unique = true;
+
+                       var cellData = cell.getData();
+                       var column = cell.getColumn()._getSelf();
+
+                       this.table.rowManager.rows.forEach(function (row) {
+                               var data = row.getData();
+
+                               if (data !== cellData) {
+                                       if (value == column.getFieldValue(data)) {
+                                               unique = false;
+                                       }
+                               }
+                       });
+
+                       return unique;
+               },
+
+               //must have a value
+               required: function required(cell, value, parameters) {
+                       return value !== "" && value !== null && typeof value !== "undefined";
+               }
+       };
+
+       Tabulator.prototype.registerModule("validate", Validate);
+
+       return Tabulator;
+});
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/tabulator.min.js b/backoffice/vendors/tabulator/js.old/tabulator.min.js
new file mode 100644 (file)
index 0000000..a969f72
--- /dev/null
@@ -0,0 +1,11 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};!function(t,e){"object"===("undefined"==typeof exports?"undefined":_typeof(exports))&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.Tabulator=e()}(this,function(){"use strict";Array.prototype.findIndex||Object.defineProperty(Array.prototype,"findIndex",{value:function(t){if(null==this)throw new TypeError('"this" is null or not defined');var e=Object(this),o=e.length>>>0;if("function"!=typeof t)throw new TypeError("predicate must be a function");for(var i=arguments[1],n=0;n<o;){var s=e[n];if(t.call(i,s,n,e))return n;n++}return-1}}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(t){if(null==this)throw new TypeError('"this" is null or not defined');var e=Object(this),o=e.length>>>0;if("function"!=typeof t)throw new TypeError("predicate must be a function");for(var i=arguments[1],n=0;n<o;){var s=e[n];if(t.call(i,s,n,e))return s;n++}}});var t=function(t){this.table=t,this.blockHozScrollEvent=!1,this.headersElement=this.createHeadersElement(),this.element=this.createHeaderElement(),this.rowManager=null,this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.scrollLeft=0,this.element.insertBefore(this.headersElement,this.element.firstChild)};t.prototype.createHeadersElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-headers"),t},t.prototype.createHeaderElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-header"),this.table.options.headerVisible||t.classList.add("tabulator-header-hidden"),t},t.prototype.initialize=function(){},t.prototype.setRowManager=function(t){this.rowManager=t},t.prototype.getElement=function(){return this.element},t.prototype.getHeadersElement=function(){return this.headersElement},t.prototype.scrollHorizontal=function(t){var e=0,o=this.element.scrollWidth-this.table.element.clientWidth;this.element.scrollLeft=t,t>o?(e=t-o,this.element.style.marginLeft=-e+"px"):this.element.style.marginLeft=0,this.scrollLeft=t,this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.scrollHorizontal()},t.prototype.generateColumnsFromRowData=function(t){var e,o,i=[];if(t&&t.length){e=t[0];for(var n in e){var s={field:n,title:n},r=e[n];switch(void 0===r?"undefined":_typeof(r)){case"undefined":o="string";break;case"boolean":o="boolean";break;case"object":o=Array.isArray(r)?"array":"string";break;default:o=isNaN(r)||""===r?r.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)?"alphanum":"string":"number"}s.sorter=o,i.push(s)}this.table.options.columns=i,this.setColumns(this.table.options.columns)}},t.prototype.setColumns=function(t,e){for(var o=this;o.headersElement.firstChild;)o.headersElement.removeChild(o.headersElement.firstChild);o.columns=[],o.columnsByIndex=[],o.columnsByField={},o.table.modExists("frozenColumns")&&o.table.modules.frozenColumns.reset(),t.forEach(function(t,e){o._addColumn(t)}),o._reIndexColumns(),o.table.options.responsiveLayout&&o.table.modExists("responsiveLayout",!0)&&o.table.modules.responsiveLayout.initialize(),o.redraw(!0)},t.prototype._addColumn=function(t,e,o){var n=new i(t,this),s=n.getElement(),r=o?this.findColumnIndex(o):o;if(o&&r>-1){var a=this.columns.indexOf(o.getTopColumn()),l=o.getElement();e?(this.columns.splice(a,0,n),l.parentNode.insertBefore(s,l)):(this.columns.splice(a+1,0,n),l.parentNode.insertBefore(s,l.nextSibling))}else e?(this.columns.unshift(n),this.headersElement.insertBefore(n.getElement(),this.headersElement.firstChild)):(this.columns.push(n),this.headersElement.appendChild(n.getElement()));return n},t.prototype.registerColumnField=function(t){t.definition.field&&(this.columnsByField[t.definition.field]=t)},t.prototype.registerColumnPosition=function(t){this.columnsByIndex.push(t)},t.prototype._reIndexColumns=function(){this.columnsByIndex=[],this.columns.forEach(function(t){t.reRegisterPosition()})},t.prototype._verticalAlignHeaders=function(){var t=this,e=0;t.columns.forEach(function(t){var o;t.clearVerticalAlign(),(o=t.getHeight())>e&&(e=o)}),t.columns.forEach(function(o){o.verticalAlign(t.table.options.columnVertAlign,e)}),t.rowManager.adjustTableSize()},t.prototype.findColumn=function(t){var e=this;if("object"!=(void 0===t?"undefined":_typeof(t)))return this.columnsByField[t]||!1;if(t instanceof i)return t;if(t instanceof o)return t._getSelf()||!1;if("undefined"!=typeof HTMLElement&&t instanceof HTMLElement){return e.columns.find(function(e){return e.element===t})||!1}return!1},t.prototype.getColumnByField=function(t){return this.columnsByField[t]},t.prototype.getColumnsByFieldRoot=function(t){var e=this,o=[];return Object.keys(this.columnsByField).forEach(function(i){i.split(".")[0]===t&&o.push(e.columnsByField[i])}),o},t.prototype.getColumnByIndex=function(t){return this.columnsByIndex[t]},t.prototype.getFirstVisibileColumn=function(t){var t=this.columnsByIndex.findIndex(function(t){return t.visible});return t>-1&&this.columnsByIndex[t]},t.prototype.getColumns=function(){return this.columns},t.prototype.findColumnIndex=function(t){return this.columnsByIndex.findIndex(function(e){return t===e})},t.prototype.getRealColumns=function(){return this.columnsByIndex},t.prototype.traverse=function(t){this.columnsByIndex.forEach(function(e,o){t(e,o)})},t.prototype.getDefinitions=function(t){var e=this,o=[];return e.columnsByIndex.forEach(function(e){(!t||t&&e.visible)&&o.push(e.getDefinition())}),o},t.prototype.getDefinitionTree=function(){var t=this,e=[];return t.columns.forEach(function(t){e.push(t.getDefinition(!0))}),e},t.prototype.getComponents=function(t){var e=this,o=[];return(t?e.columns:e.columnsByIndex).forEach(function(t){o.push(t.getComponent())}),o},t.prototype.getWidth=function(){var t=0;return this.columnsByIndex.forEach(function(e){e.visible&&(t+=e.getWidth())}),t},t.prototype.moveColumn=function(t,e,o){this.moveColumnActual(t,e,o),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),e.element.parentNode.insertBefore(t.element,e.element),o&&e.element.parentNode.insertBefore(e.element,t.element),this._verticalAlignHeaders(),this.table.rowManager.reinitialize()},t.prototype.moveColumnActual=function(t,e,o){this._moveColumnInArray(this.columns,t,e,o),this._moveColumnInArray(this.columnsByIndex,t,e,o,!0),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.options.columnMoved&&this.table.options.columnMoved.call(this.table,t.getComponent(),this.table.columnManager.getComponents()),this.table.options.persistentLayout&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("columns")},t.prototype._moveColumnInArray=function(t,e,o,i,n){var s,r=t.indexOf(e);r>-1&&(t.splice(r,1),s=t.indexOf(o),s>-1?i&&(s+=1):s=r,t.splice(s,0,e),n&&this.table.rowManager.rows.forEach(function(t){if(t.cells.length){var e=t.cells.splice(r,1)[0];t.cells.splice(s,0,e)}}))},t.prototype.scrollToColumn=function(t,e,o){var i=this,n=0,s=0,r=0,a=t.getElement();return new Promise(function(l,c){if(void 0===e&&(e=i.table.options.scrollToColumnPosition),void 0===o&&(o=i.table.options.scrollToColumnIfVisible),t.visible){switch(e){case"middle":case"center":r=-i.element.clientWidth/2;break;case"right":r=a.clientWidth-i.headersElement.clientWidth}if(!o&&(s=a.offsetLeft)>0&&s+a.offsetWidth<i.element.clientWidth)return!1;n=a.offsetLeft+i.element.scrollLeft+r,n=Math.max(Math.min(n,i.table.rowManager.element.scrollWidth-i.table.rowManager.element.clientWidth),0),i.table.rowManager.scrollHorizontal(n),i.scrollHorizontal(n),l()}else console.warn("Scroll Error - Column not visible"),c("Scroll Error - Column not visible")})},t.prototype.generateCells=function(t){var e=this,o=[];return e.columnsByIndex.forEach(function(e){o.push(e.generateCell(t))}),o},t.prototype.getFlexBaseWidth=function(){var t=this,e=t.table.element.clientWidth,o=0;return t.rowManager.element.scrollHeight>t.rowManager.element.clientHeight&&(e-=t.rowManager.element.offsetWidth-t.rowManager.element.clientWidth),this.columnsByIndex.forEach(function(i){var n,s,r;i.visible&&(n=i.definition.width||0,s=void 0===i.minWidth?t.table.options.columnMinWidth:parseInt(i.minWidth),r="string"==typeof n?n.indexOf("%")>-1?e/100*parseInt(n):parseInt(n):n,o+=r>s?r:s)}),o},t.prototype.addColumn=function(t,e,o){var i=this._addColumn(t,e,o);this._reIndexColumns(),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),this.redraw(),"fitColumns"!=this.table.modules.layout.getMode()&&i.reinitializeWidth(),this._verticalAlignHeaders(),this.table.rowManager.reinitialize()},t.prototype.deregisterColumn=function(t){var e,o=t.getField();o&&delete this.columnsByField[o],e=this.columnsByIndex.indexOf(t),e>-1&&this.columnsByIndex.splice(e,1),e=this.columns.indexOf(t),e>-1&&this.columns.splice(e,1),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.redraw()},t.prototype.redraw=function(t){t&&(u.prototype.helpers.elVisible(this.element)&&this._verticalAlignHeaders(),this.table.rowManager.resetScroll(),this.table.rowManager.reinitialize()),"fitColumns"==this.table.modules.layout.getMode()?this.table.modules.layout.layout():t?this.table.modules.layout.layout():this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),t&&(this.table.options.persistentLayout&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("columns"),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.redraw()),this.table.footerManager.redraw()};var o=function(t){this._column=t,this.type="ColumnComponent"};o.prototype.getElement=function(){return this._column.getElement()},o.prototype.getDefinition=function(){return this._column.getDefinition()},o.prototype.getField=function(){return this._column.getField()},o.prototype.getCells=function(){var t=[];return this._column.cells.forEach(function(e){t.push(e.getComponent())}),t},o.prototype.getVisibility=function(){return this._column.visible},o.prototype.show=function(){this._column.isGroup?this._column.columns.forEach(function(t){t.show()}):this._column.show()},o.prototype.hide=function(){this._column.isGroup?this._column.columns.forEach(function(t){t.hide()}):this._column.hide()},o.prototype.toggle=function(){this._column.visible?this.hide():this.show()},o.prototype.delete=function(){this._column.delete()},o.prototype.getSubColumns=function(){var t=[];return this._column.columns.length&&this._column.columns.forEach(function(e){t.push(e.getComponent())}),t},o.prototype.getParentColumn=function(){return this._column.parent instanceof i&&this._column.parent.getComponent()},o.prototype._getSelf=function(){return this._column},o.prototype.scrollTo=function(){return this._column.table.columnManager.scrollToColumn(this._column)},o.prototype.getTable=function(){return this._column.table},o.prototype.headerFilterFocus=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterFocus(this._column)},o.prototype.reloadHeaderFilter=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.reloadHeaderFilter(this._column)},o.prototype.setHeaderFilterValue=function(t){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterValue(this._column,t)},o.prototype.move=function(t,e){var o=this._column.table.columnManager.findColumn(t);o?this._column.table.columnManager.moveColumn(this._column,o,e):console.warn("Move Error - No matching column found:",o)},o.prototype.getNextColumn=function(){var t=this._column.nextColumn();return!!t&&t.getComponent()},o.prototype.getPrevColumn=function(){var t=this._column.prevColumn();return!!t&&t.getComponent()};var i=function t(e,o){var i=this;this.table=o.table,this.definition=e,this.parent=o,this.type="column",this.columns=[],this.cells=[],this.element=this.createElement(),this.contentElement=!1,this.groupElement=this.createGroupElement(),this.isGroup=!1,this.tooltip=!1,this.hozAlign="",this.field="",this.fieldStructure="",this.getFieldValue="",this.setFieldValue="",this.setField(this.definition.field),this.table.options.invalidOptionWarnings&&this.checkDefinition(),this.modules={},this.cellEvents={cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1},this.width=null,this.widthStyled="",this.minWidth=null,this.minWidthStyled="",this.widthFixed=!1,this.visible=!0,this._mapDepricatedFunctionality(),e.columns?(this.isGroup=!0,e.columns.forEach(function(e,o){var n=new t(e,i);i.attachColumn(n)}),i.checkColumnVisibility()):o.registerColumnField(this),e.rowHandle&&!1!==this.table.options.movableRows&&this.table.modExists("moveRow")&&this.table.modules.moveRow.setHandle(!0),this._buildHeader()};i.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-col"),t.setAttribute("role","columnheader"),t.setAttribute("aria-sort","none"),t},i.prototype.createGroupElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-col-group-cols"),t},i.prototype.checkDefinition=function(){var t=this;Object.keys(this.definition).forEach(function(e){-1===t.defaultOptionList.indexOf(e)&&console.warn("Invalid column definition option in '"+(t.field||t.definition.title)+"' column:",e)})},i.prototype.setField=function(t){this.field=t,this.fieldStructure=t?this.table.options.nestedFieldSeparator?t.split(this.table.options.nestedFieldSeparator):[t]:[],this.getFieldValue=this.fieldStructure.length>1?this._getNestedData:this._getFlatData,this.setFieldValue=this.fieldStructure.length>1?this._setNesteData:this._setFlatData},i.prototype.registerColumnPosition=function(t){this.parent.registerColumnPosition(t)},i.prototype.registerColumnField=function(t){this.parent.registerColumnField(t)},i.prototype.reRegisterPosition=function(){this.isGroup?this.columns.forEach(function(t){t.reRegisterPosition()}):this.registerColumnPosition(this)},i.prototype._mapDepricatedFunctionality=function(){void 0!==this.definition.hideInHtml&&(this.definition.htmlOutput=!this.definition.hideInHtml,console.warn("hideInHtml column definition property is deprecated, you should now use htmlOutput"))},i.prototype.setTooltip=function(){var t=this,e=t.definition,o=e.headerTooltip||!1===e.tooltip?e.headerTooltip:t.table.options.tooltipsHeader;o?!0===o?e.field?t.table.modules.localize.bind("columns|"+e.field,function(o){t.element.setAttribute("title",o||e.title)}):t.element.setAttribute("title",e.title):("function"==typeof o&&!1===(o=o(t.getComponent()))&&(o=""),t.element.setAttribute("title",o)):t.element.setAttribute("title","")},i.prototype._buildHeader=function(){for(var t=this,e=t.definition;t.element.firstChild;)t.element.removeChild(t.element.firstChild);e.headerVertical&&(t.element.classList.add("tabulator-col-vertical"),"flip"===e.headerVertical&&t.element.classList.add("tabulator-col-vertical-flip")),t.contentElement=t._bindEvents(),t.contentElement=t._buildColumnHeaderContent(),t.element.appendChild(t.contentElement),t.isGroup?t._buildGroupHeader():t._buildColumnHeader(),t.setTooltip(),t.table.options.resizableColumns&&t.table.modExists("resizeColumns")&&t.table.modules.resizeColumns.initializeColumn("header",t,t.element),e.headerFilter&&t.table.modExists("filter")&&t.table.modExists("edit")&&(void 0!==e.headerFilterPlaceholder&&e.field&&t.table.modules.localize.setHeaderFilterColumnPlaceholder(e.field,e.headerFilterPlaceholder),t.table.modules.filter.initializeColumn(t)),t.table.modExists("frozenColumns")&&t.table.modules.frozenColumns.initializeColumn(t),t.table.options.movableColumns&&!t.isGroup&&t.table.modExists("moveColumn")&&t.table.modules.moveColumn.initializeColumn(t),(e.topCalc||e.bottomCalc)&&t.table.modExists("columnCalcs")&&t.table.modules.columnCalcs.initializeColumn(t),t.element.addEventListener("mouseenter",function(e){t.setTooltip()})},i.prototype._bindEvents=function(){var t,e,o,i=this,n=i.definition;"function"==typeof n.headerClick&&i.element.addEventListener("click",function(t){n.headerClick(t,i.getComponent())}),"function"==typeof n.headerDblClick&&i.element.addEventListener("dblclick",function(t){n.headerDblClick(t,i.getComponent())}),"function"==typeof n.headerContext&&i.element.addEventListener("contextmenu",function(t){n.headerContext(t,i.getComponent())}),"function"==typeof n.headerTap&&(o=!1,i.element.addEventListener("touchstart",function(t){o=!0},{passive:!0}),i.element.addEventListener("touchend",function(t){o&&n.headerTap(t,i.getComponent()),o=!1})),"function"==typeof n.headerDblTap&&(t=null,i.element.addEventListener("touchend",function(e){t?(clearTimeout(t),t=null,n.headerDblTap(e,i.getComponent())):t=setTimeout(function(){clearTimeout(t),t=null},300)})),"function"==typeof n.headerTapHold&&(e=null,i.element.addEventListener("touchstart",function(t){clearTimeout(e),e=setTimeout(function(){clearTimeout(e),e=null,o=!1,n.headerTapHold(t,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(t){clearTimeout(e),e=null})),"function"==typeof n.cellClick&&(i.cellEvents.cellClick=n.cellClick),"function"==typeof n.cellDblClick&&(i.cellEvents.cellDblClick=n.cellDblClick),"function"==typeof n.cellContext&&(i.cellEvents.cellContext=n.cellContext),"function"==typeof n.cellMouseEnter&&(i.cellEvents.cellMouseEnter=n.cellMouseEnter),"function"==typeof n.cellMouseLeave&&(i.cellEvents.cellMouseLeave=n.cellMouseLeave),"function"==typeof n.cellMouseOver&&(i.cellEvents.cellMouseOver=n.cellMouseOver),"function"==typeof n.cellMouseOut&&(i.cellEvents.cellMouseOut=n.cellMouseOut),"function"==typeof n.cellMouseMove&&(i.cellEvents.cellMouseMove=n.cellMouseMove),"function"==typeof n.cellTap&&(i.cellEvents.cellTap=n.cellTap),"function"==typeof n.cellDblTap&&(i.cellEvents.cellDblTap=n.cellDblTap),"function"==typeof n.cellTapHold&&(i.cellEvents.cellTapHold=n.cellTapHold),"function"==typeof n.cellEdited&&(i.cellEvents.cellEdited=n.cellEdited),"function"==typeof n.cellEditing&&(i.cellEvents.cellEditing=n.cellEditing),"function"==typeof n.cellEditCancelled&&(i.cellEvents.cellEditCancelled=n.cellEditCancelled)},i.prototype._buildColumnHeader=function(){var t=this,e=t.definition,o=t.table;if(o.modExists("sort")&&o.modules.sort.initializeColumn(t,t.contentElement),o.modExists("format")&&o.modules.format.initializeColumn(t),void 0!==e.editor&&o.modExists("edit")&&o.modules.edit.initializeColumn(t),void 0!==e.validator&&o.modExists("validate")&&o.modules.validate.initializeColumn(t),o.modExists("mutator")&&o.modules.mutator.initializeColumn(t),o.modExists("accessor")&&o.modules.accessor.initializeColumn(t),_typeof(o.options.responsiveLayout)&&o.modExists("responsiveLayout")&&o.modules.responsiveLayout.initializeColumn(t),void 0!==e.visible&&(e.visible?t.show(!0):t.hide(!0)),e.cssClass){e.cssClass.split(" ").forEach(function(e){t.element.classList.add(e)})}e.field&&this.element.setAttribute("tabulator-field",e.field),t.setMinWidth(void 0===e.minWidth?t.table.options.columnMinWidth:parseInt(e.minWidth)),t.reinitializeWidth(),t.tooltip=t.definition.tooltip||!1===t.definition.tooltip?t.definition.tooltip:t.table.options.tooltips,t.hozAlign=void 0===t.definition.align?"":t.definition.align},i.prototype._buildColumnHeaderContent=function(){var t=this,e=(t.definition,t.table,document.createElement("div"));return e.classList.add("tabulator-col-content"),e.appendChild(t._buildColumnHeaderTitle()),e},i.prototype._buildColumnHeaderTitle=function(){var t=this,e=t.definition,o=t.table,i=document.createElement("div");if(i.classList.add("tabulator-col-title"),e.editableTitle){var n=document.createElement("input");n.classList.add("tabulator-title-editor"),n.addEventListener("click",function(t){t.stopPropagation(),n.focus()}),n.addEventListener("change",function(){e.title=n.value,o.options.columnTitleChanged.call(t.table,t.getComponent())}),i.appendChild(n),e.field?o.modules.localize.bind("columns|"+e.field,function(t){n.value=t||e.title||"&nbsp;"}):n.value=e.title||"&nbsp;"}else e.field?o.modules.localize.bind("columns|"+e.field,function(o){t._formatColumnHeaderTitle(i,o||e.title||"&nbsp;")}):t._formatColumnHeaderTitle(i,e.title||"&nbsp;");return i},i.prototype._formatColumnHeaderTitle=function(t,e){var o,i,n,s;if(this.definition.titleFormatter&&this.table.modExists("format"))switch(o=this.table.modules.format.getFormatter(this.definition.titleFormatter),s={getValue:function(){return e},getElement:function(){return t}},n=this.definition.titleFormatterParams||{},n="function"==typeof n?n():n,i=o.call(this.table.modules.format,s,n),void 0===i?"undefined":_typeof(i)){case"object":i instanceof Node?t.appendChild(i):(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:",i));break;case"undefined":case"null":t.innerHTML="";break;default:t.innerHTML=i}else t.innerHTML=e},i.prototype._buildGroupHeader=function(){this.element.classList.add("tabulator-col-group"),this.element.setAttribute("role","columngroup"),this.element.setAttribute("aria-title",this.definition.title),this.element.appendChild(this.groupElement)},i.prototype._getFlatData=function(t){return t[this.field]},i.prototype._getNestedData=function(t){for(var e,o=t,i=this.fieldStructure,n=i.length,s=0;s<n&&(o=o[i[s]],e=o,o);s++);return e},i.prototype._setFlatData=function(t,e){this.field&&(t[this.field]=e)},i.prototype._setNesteData=function(t,e){for(var o=t,i=this.fieldStructure,n=i.length,s=0;s<n;s++)s==n-1?o[i[s]]=e:(o[i[s]]||(o[i[s]]={}),o=o[i[s]])},i.prototype.attachColumn=function(t){var e=this;e.groupElement?(e.columns.push(t),e.groupElement.appendChild(t.getElement())):console.warn("Column Warning - Column being attached to another column instead of column group")},i.prototype.verticalAlign=function(t,e){var o=this.parent.isGroup?this.parent.getGroupElement().clientHeight:e||this.parent.getHeadersElement().clientHeight;this.element.style.height=o+"px",this.isGroup&&(this.groupElement.style.minHeight=o-this.contentElement.offsetHeight+"px"),this.isGroup||"top"===t||(this.element.style.paddingTop="bottom"===t?this.element.clientHeight-this.contentElement.offsetHeight+"px":(this.element.clientHeight-this.contentElement.offsetHeight)/2+"px"),this.columns.forEach(function(e){e.verticalAlign(t)})},i.prototype.clearVerticalAlign=function(){this.element.style.paddingTop="",this.element.style.height="",this.element.style.minHeight="",this.groupElement.style.minHeight="",this.columns.forEach(function(t){t.clearVerticalAlign()})},i.prototype.getElement=function(){return this.element},i.prototype.getGroupElement=function(){return this.groupElement},i.prototype.getField=function(){return this.field},i.prototype.getFirstColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[0].getFirstColumn():this},i.prototype.getLastColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[this.columns.length-1].getLastColumn():this},i.prototype.getColumns=function(){return this.columns},i.prototype.getCells=function(){return this.cells},i.prototype.getTopColumn=function(){return this.parent.isGroup?this.parent.getTopColumn():this},i.prototype.getDefinition=function(t){var e=[];return this.isGroup&&t&&(this.columns.forEach(function(t){e.push(t.getDefinition(!0))}),this.definition.columns=e),this.definition},i.prototype.checkColumnVisibility=function(){var t=!1;this.columns.forEach(function(e){e.visible&&(t=!0)}),t?(this.show(),this.parent.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1)):this.hide()},i.prototype.show=function(t,e){this.visible||(this.visible=!0,this.element.style.display="",this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(t){t.show()}),this.isGroup||null!==this.width||this.reinitializeWidth(),this.table.columnManager._verticalAlignHeaders(),this.table.options.persistentLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.persistence.save("columns"),!e&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),t||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!0),this.parent.isGroup&&this.parent.matchChildWidths())},i.prototype.hide=function(t,e){this.visible&&(this.visible=!1,this.element.style.display="none",this.table.columnManager._verticalAlignHeaders(),this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(t){t.hide()}),this.table.options.persistentLayout&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("columns"),!e&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),t||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1),this.parent.isGroup&&this.parent.matchChildWidths())},i.prototype.matchChildWidths=function(){var t=0;this.contentElement&&this.columns.length&&(this.columns.forEach(function(e){e.visible&&(t+=e.getWidth())}),this.contentElement.style.maxWidth=t-1+"px")},i.prototype.setWidth=function(t){this.widthFixed=!0,this.setWidthActual(t)},i.prototype.setWidthActual=function(t){isNaN(t)&&(t=Math.floor(this.table.element.clientWidth/100*parseInt(t))),t=Math.max(this.minWidth,t),this.width=t,this.widthStyled=t?t+"px":"",this.element.style.width=this.widthStyled,this.isGroup||this.cells.forEach(function(t){t.setWidth()}),this.parent.isGroup&&this.parent.matchChildWidths(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()},i.prototype.checkCellHeights=function(){var t=[];this.cells.forEach(function(e){e.row.heightInitialized&&(null!==e.row.getElement().offsetParent?(t.push(e.row),e.row.clearCellHeight()):e.row.heightInitialized=!1)}),t.forEach(function(t){t.calcHeight()}),t.forEach(function(t){t.setCellHeight()})},i.prototype.getWidth=function(){return this.width},i.prototype.getHeight=function(){return this.element.offsetHeight},i.prototype.setMinWidth=function(t){this.minWidth=t,this.minWidthStyled=t?t+"px":"",this.element.style.minWidth=this.minWidthStyled,this.cells.forEach(function(t){t.setMinWidth()})},i.prototype.delete=function(){this.isGroup&&this.columns.forEach(function(t){t.delete()});for(var t=this.cells.length,e=0;e<t;e++)this.cells[0].delete();this.element.parentNode.removeChild(this.element),this.table.columnManager.deregisterColumn(this)},i.prototype.generateCell=function(t){var e=this,o=new l(e,t);return this.cells.push(o),o},i.prototype.nextColumn=function(){var t=this.table.columnManager.findColumnIndex(this);return t>-1&&this._nextVisibleColumn(t+1)},i.prototype._nextVisibleColumn=function(t){var e=this.table.columnManager.getColumnByIndex(t);return!e||e.visible?e:this._nextVisibleColumn(t+1)},i.prototype.prevColumn=function(){var t=this.table.columnManager.findColumnIndex(this);return t>-1&&this._prevVisibleColumn(t-1)},i.prototype._prevVisibleColumn=function(t){var e=this.table.columnManager.getColumnByIndex(t);return!e||e.visible?e:this._prevVisibleColumn(t-1)},i.prototype.reinitializeWidth=function(t){this.widthFixed=!1,void 0===this.definition.width||t||this.setWidth(this.definition.width),this.table.modExists("filter")&&this.table.modules.filter.hideHeaderFilterElements(),this.fitToData(),this.table.modExists("filter")&&this.table.modules.filter.showHeaderFilterElements()},i.prototype.fitToData=function(){var t=this;this.widthFixed||(this.element.style.width="",t.cells.forEach(function(t){t.clearWidth()}));var e=this.element.offsetWidth;t.width&&this.widthFixed||(t.cells.forEach(function(t){var o=t.getWidth();o>e&&(e=o)}),e&&t.setWidthActual(e+1))},i.prototype.deleteCell=function(t){var e=this.cells.indexOf(t);e>-1&&this.cells.splice(e,1)},i.prototype.defaultOptionList=["title","field","columns","visible","align","width","minWidth","widthGrow","widthShrink","resizable","frozen","responsive","tooltip","cssClass","rowHandle","hideInHtml","print","htmlOutput","sorter","sorterParams","formatter","formatterParams","variableHeight","editable","editor","editorParams","validator","mutator","mutatorParams","mutatorData","mutatorDataParams","mutatorEdit","mutatorEditParams","mutatorClipboard","mutatorClipboardParams","accessor","accessorParams","accessorData","accessorDataParams","accessorDownload","accessorDownloadParams","accessorClipboard","accessorClipboardParams","clipboard","download","downloadTitle","topCalc","topCalcParams","topCalcFormatter","topCalcFormatterParams","bottomCalc","bottomCalcParams","bottomCalcFormatter","bottomCalcFormatterParams","cellClick","cellDblClick","cellContext","cellTap","cellDblTap","cellTapHold","cellMouseEnter","cellMouseLeave","cellMouseOver","cellMouseOut","cellMouseMove","cellEditing","cellEdited","cellEditCancelled","headerSort","headerSortStartingDir","headerSortTristate","headerClick","headerDblClick","headerContext","headerTap","headerDblTap","headerTapHold","headerTooltip","headerVertical","editableTitle","titleFormatter","titleFormatterParams","headerFilter","headerFilterPlaceholder","headerFilterParams","headerFilterEmptyCheck","headerFilterFunc","headerFilterFuncParams","headerFilterLiveFilter","print"],i.prototype.getComponent=function(){return new o(this)};var n=function(t){this.table=t,this.element=this.createHolderElement(),this.tableElement=this.createTableElement(),this.columnManager=null,this.height=0,this.firstRender=!1,this.renderMode="classic",this.rows=[],this.activeRows=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0,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=[]};n.prototype.createHolderElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-tableHolder"),t.setAttribute("tabindex",0),t},n.prototype.createTableElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-table"),t},n.prototype.getElement=function(){return this.element},n.prototype.getTableElement=function(){return this.tableElement},n.prototype.getRowPosition=function(t,e){return e?this.activeRows.indexOf(t):this.rows.indexOf(t)},n.prototype.setColumnManager=function(t){this.columnManager=t},n.prototype.initialize=function(){var t=this;t.setRenderMode(),t.element.appendChild(t.tableElement),t.firstRender=!0,t.element.addEventListener("scroll",function(){var e=t.element.scrollLeft;t.scrollLeft!=e&&(t.columnManager.scrollHorizontal(e),t.table.options.groupBy&&t.table.modules.groupRows.scrollHeaders(e),t.table.modExists("columnCalcs")&&t.table.modules.columnCalcs.scrollHorizontal(e)),t.scrollLeft=e}),
+"virtual"===this.renderMode&&t.element.addEventListener("scroll",function(){var e=t.element.scrollTop,o=t.scrollTop>e;t.scrollTop!=e?(t.scrollTop=e,t.scrollVertical(o),"scroll"==t.table.options.ajaxProgressiveLoad&&t.table.modules.ajax.nextPage(t.element.scrollHeight-t.element.clientHeight-e)):t.scrollTop=e})},n.prototype.findRow=function(t){var e=this;if("object"!=(void 0===t?"undefined":_typeof(t))){if(void 0===t||null===t)return!1;return e.rows.find(function(o){return o.data[e.table.options.index]==t})||!1}if(t instanceof r)return t;if(t instanceof s)return t._getSelf()||!1;if("undefined"!=typeof HTMLElement&&t instanceof HTMLElement){return e.rows.find(function(e){return e.element===t})||!1}return!1},n.prototype.getRowFromDataObject=function(t){return this.rows.find(function(e){return e.data===t})||!1},n.prototype.getRowFromPosition=function(t,e){return e?this.activeRows[t]:this.rows[t]},n.prototype.scrollToRow=function(t,e,o){var i,n=this,s=this.getDisplayRows().indexOf(t),r=t.getElement(),a=0;return new Promise(function(t,l){if(s>-1){if(void 0===e&&(e=n.table.options.scrollToRowPosition),void 0===o&&(o=n.table.options.scrollToRowIfVisible),"nearest"===e)switch(n.renderMode){case"classic":i=u.prototype.helpers.elOffset(r).top,e=Math.abs(n.element.scrollTop-i)>Math.abs(n.element.scrollTop+n.element.clientHeight-i)?"bottom":"top";break;case"virtual":e=Math.abs(n.vDomTop-s)>Math.abs(n.vDomBottom-s)?"bottom":"top"}if(!o&&u.prototype.helpers.elVisible(r)&&(a=u.prototype.helpers.elOffset(r).top-u.prototype.helpers.elOffset(n.element).top)>0&&a<n.element.clientHeight-r.offsetHeight)return!1;switch(n.renderMode){case"classic":n.element.scrollTop=u.prototype.helpers.elOffset(r).top-u.prototype.helpers.elOffset(n.element).top+n.element.scrollTop;break;case"virtual":n._virtualRenderFill(s,!0)}switch(e){case"middle":case"center":n.element.scrollHeight-n.element.scrollTop==n.element.clientHeight?n.element.scrollTop=n.element.scrollTop+(r.offsetTop-n.element.scrollTop)-(n.element.scrollHeight-r.offsetTop)/2:n.element.scrollTop=n.element.scrollTop-n.element.clientHeight/2;break;case"bottom":n.element.scrollHeight-n.element.scrollTop==n.element.clientHeight?n.element.scrollTop=n.element.scrollTop-(n.element.scrollHeight-r.offsetTop)+r.offsetHeight:n.element.scrollTop=n.element.scrollTop-n.element.clientHeight+r.offsetHeight}t()}else console.warn("Scroll Error - Row not visible"),l("Scroll Error - Row not visible")})},n.prototype.setData=function(t,e){var o=this,i=this;return new Promise(function(n,s){e&&o.getDisplayRows().length?i.table.options.pagination?i._setDataActual(t,!0):o.reRenderInPosition(function(){i._setDataActual(t)}):(o.table.options.autoColumns&&o.table.columnManager.generateColumnsFromRowData(t),o.resetScroll(),o._setDataActual(t)),n()})},n.prototype._setDataActual=function(t,e){var o=this;o.table.options.dataLoading.call(this.table,t),this._wipeElements(),this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.clear(),Array.isArray(t)?(this.table.modExists("selectRow")&&this.table.modules.selectRow.clearSelectionData(),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchData(t),t.forEach(function(t,e){if(t&&"object"===(void 0===t?"undefined":_typeof(t))){var i=new r(t,o);o.rows.push(i)}else console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:",t)}),o.table.options.dataLoaded.call(this.table,t),o.refreshActiveData(!1,!1,e)):console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ",void 0===t?"undefined":_typeof(t),"\nData:     ",t)},n.prototype._wipeElements=function(){this.rows.forEach(function(t){t.wipe()}),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.wipe(),this.rows=[]},n.prototype.deleteRow=function(t,e){var o=this.rows.indexOf(t),i=this.activeRows.indexOf(t);i>-1&&this.activeRows.splice(i,1),o>-1&&this.rows.splice(o,1),this.setActiveRows(this.activeRows),this.displayRowIterator(function(e){var o=e.indexOf(t);o>-1&&e.splice(o,1)}),e||this.reRenderInPosition(),this.table.options.rowDeleted.call(this.table,t.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.groupRows.updateGroupRows(!0):this.table.options.pagination&&this.table.modExists("page")?this.refreshActiveData(!1,!1,!0):this.table.options.pagination&&this.table.modExists("page")&&this.refreshActiveData("page")},n.prototype.addRow=function(t,e,o,i){var n=this.addRowActual(t,e,o,i);return this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowAdd",n,{data:t,pos:e,index:o}),n},n.prototype.addRows=function(t,e,o){var i=this,n=this,s=0,r=[];return new Promise(function(a,l){e=i.findAddRowPos(e),Array.isArray(t)||(t=[t]),s=t.length-1,(void 0===o&&e||void 0!==o&&!e)&&t.reverse(),t.forEach(function(t,i){var s=n.addRow(t,e,o,!0);r.push(s)}),i.table.options.groupBy&&i.table.modExists("groupRows")?i.table.modules.groupRows.updateGroupRows(!0):i.table.options.pagination&&i.table.modExists("page")?i.refreshActiveData(!1,!1,!0):i.reRenderInPosition(),i.table.modExists("columnCalcs")&&i.table.modules.columnCalcs.recalc(i.table.rowManager.activeRows),a(r)})},n.prototype.findAddRowPos=function(t){return void 0===t&&(t=this.table.options.addRowPos),"pos"===t&&(t=!0),"bottom"===t&&(t=!1),t},n.prototype.addRowActual=function(t,e,o,i){var n,s=t instanceof r?t:new r(t||{},this),a=this.findAddRowPos(e);if(!o&&this.table.options.pagination&&"page"==this.table.options.paginationAddRow&&(n=this.getDisplayRows(),a?n.length?o=n[0]:this.activeRows.length&&(o=this.activeRows[this.activeRows.length-1],a=!1):n.length&&(o=n[n.length-1],a=!(n.length<this.table.modules.page.getPageSize()))),o&&(o=this.findRow(o)),this.table.options.groupBy&&this.table.modExists("groupRows")){this.table.modules.groupRows.assignRowToGroup(s);var l=s.getGroup().rows;l.length>1&&(!o||o&&-1==l.indexOf(o)?a?l[0]!==s&&(o=l[0],this._moveRowInArray(s.getGroup().rows,s,o,!a)):l[l.length-1]!==s&&(o=l[l.length-1],this._moveRowInArray(s.getGroup().rows,s,o,!a)):this._moveRowInArray(s.getGroup().rows,s,o,!a))}if(o){var c=this.rows.indexOf(o),u=this.activeRows.indexOf(o);this.displayRowIterator(function(t){var e=t.indexOf(o);e>-1&&t.splice(a?e:e+1,0,s)}),u>-1&&this.activeRows.splice(a?u:u+1,0,s),c>-1&&this.rows.splice(a?c:c+1,0,s)}else a?(this.displayRowIterator(function(t){t.unshift(s)}),this.activeRows.unshift(s),this.rows.unshift(s)):(this.displayRowIterator(function(t){t.push(s)}),this.activeRows.push(s),this.rows.push(s));return this.setActiveRows(this.activeRows),this.table.options.rowAdded.call(this.table,s.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),i||this.reRenderInPosition(),s},n.prototype.moveRow=function(t,e,o){this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowMove",t,{pos:this.getRowPosition(t),to:e,after:o}),this.moveRowActual(t,e,o),this.table.options.rowMoved.call(this.table,t.getComponent())},n.prototype.moveRowActual=function(t,e,o){var i=this;if(this._moveRowInArray(this.rows,t,e,o),this._moveRowInArray(this.activeRows,t,e,o),this.displayRowIterator(function(n){i._moveRowInArray(n,t,e,o)}),this.table.options.groupBy&&this.table.modExists("groupRows")){var n=e.getGroup(),s=t.getGroup();n===s?this._moveRowInArray(n.rows,t,e,o):(s&&s.removeRow(t),n.insertRow(t,e,o))}},n.prototype._moveRowInArray=function(t,e,o,i){var n,s,r,a;if(e!==o&&(n=t.indexOf(e),n>-1&&(t.splice(n,1),s=t.indexOf(o),s>-1?i?t.splice(s+1,0,e):t.splice(s,0,e):t.splice(n,0,e)),t===this.getDisplayRows())){r=n<s?n:s,a=s>n?s:n+1;for(var l=r;l<=a;l++)t[l]&&this.styleRow(t[l],l)}},n.prototype.clearData=function(){this.setData([])},n.prototype.getRowIndex=function(t){return this.findRowIndex(t,this.rows)},n.prototype.getDisplayRowIndex=function(t){var e=this.getDisplayRows().indexOf(t);return e>-1&&e},n.prototype.nextDisplayRow=function(t,e){var o=this.getDisplayRowIndex(t),i=!1;return!1!==o&&o<this.displayRowsCount-1&&(i=this.getDisplayRows()[o+1]),!i||i instanceof r&&"row"==i.type?i:this.nextDisplayRow(i,e)},n.prototype.prevDisplayRow=function(t,e){var o=this.getDisplayRowIndex(t),i=!1;return o&&(i=this.getDisplayRows()[o-1]),!i||i instanceof r&&"row"==i.type?i:this.prevDisplayRow(i,e)},n.prototype.findRowIndex=function(t,e){var o;return!!((t=this.findRow(t))&&(o=e.indexOf(t))>-1)&&o},n.prototype.getData=function(t,e){var o=this,i=[];return(t?o.activeRows:o.rows).forEach(function(t){i.push(t.getData(e||"data"))}),i},n.prototype.getComponents=function(t){var e=this,o=[];return(t?e.activeRows:e.rows).forEach(function(t){o.push(t.getComponent())}),o},n.prototype.getDataCount=function(t){return t?this.activeRows.length:this.rows.length},n.prototype._genRemoteRequest=function(){var t=this,e=t.table,o=e.options,i={};if(e.modExists("page")){if(o.ajaxSorting){var n=t.table.modules.sort.getSort();n.forEach(function(t){delete t.column}),i[t.table.modules.page.paginationDataSentNames.sorters]=n}if(o.ajaxFiltering){var s=t.table.modules.filter.getFilters(!0,!0);i[t.table.modules.page.paginationDataSentNames.filters]=s}t.table.modules.ajax.setParams(i,!0)}e.modules.ajax.sendRequest().then(function(e){t.setData(e)}).catch(function(t){})},n.prototype.filterRefresh=function(){var t=this.table,e=t.options,o=this.scrollLeft;e.ajaxFiltering?"remote"==e.pagination&&t.modExists("page")?(t.modules.page.reset(!0),t.modules.page.setPage(1).then(function(){}).catch(function(){})):e.ajaxProgressiveLoad?t.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData("filter"),this.scrollHorizontal(o)},n.prototype.sorterRefresh=function(t){var e=this.table,o=this.table.options,i=this.scrollLeft;o.ajaxSorting?("remote"==o.pagination||o.progressiveLoad)&&e.modExists("page")?(e.modules.page.reset(!0),e.modules.page.setPage(1).then(function(){}).catch(function(){})):o.ajaxProgressiveLoad?e.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData(t?"filter":"sort"),this.scrollHorizontal(i)},n.prototype.scrollHorizontal=function(t){this.scrollLeft=t,this.element.scrollLeft=t,this.table.options.groupBy&&this.table.modules.groupRows.scrollHeaders(t),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.scrollHorizontal(t)},n.prototype.refreshActiveData=function(t,e,o){var i,n=this,s=this.table;switch(n.table.modExists("edit")&&n.table.modules.edit.cancelEdit(),t||(t="all"),s.options.selectable&&!s.options.selectablePersistence&&s.modExists("selectRow")&&s.modules.selectRow.deselectRows(),t){case"all":case"filter":e?e=!1:s.modExists("filter")?n.setActiveRows(s.modules.filter.filter(n.rows)):n.setActiveRows(n.rows.slice(0));case"sort":e?e=!1:s.modExists("sort")&&s.modules.sort.sort(this.activeRows);case"display":this.resetDisplayRows();case"freeze":e?e=!1:this.table.modExists("frozenRows")&&s.modules.frozenRows.isFrozen()&&(s.modules.frozenRows.getDisplayIndex()||s.modules.frozenRows.setDisplayIndex(this.getNextDisplayIndex()),i=s.modules.frozenRows.getDisplayIndex(),!0!==(i=n.setDisplayRows(s.modules.frozenRows.getRows(this.getDisplayRows(i-1)),i))&&s.modules.frozenRows.setDisplayIndex(i));case"group":e?e=!1:s.options.groupBy&&s.modExists("groupRows")&&(s.modules.groupRows.getDisplayIndex()||s.modules.groupRows.setDisplayIndex(this.getNextDisplayIndex()),i=s.modules.groupRows.getDisplayIndex(),!0!==(i=n.setDisplayRows(s.modules.groupRows.getRows(this.getDisplayRows(i-1)),i))&&s.modules.groupRows.setDisplayIndex(i));case"tree":e?e=!1:s.options.dataTree&&s.modExists("dataTree")&&(s.modules.dataTree.getDisplayIndex()||s.modules.dataTree.setDisplayIndex(this.getNextDisplayIndex()),i=s.modules.dataTree.getDisplayIndex(),!0!==(i=n.setDisplayRows(s.modules.dataTree.getRows(this.getDisplayRows(i-1)),i))&&s.modules.dataTree.setDisplayIndex(i)),s.options.pagination&&s.modExists("page")&&!o&&"local"==s.modules.page.getMode()&&s.modules.page.reset();case"page":e?e=!1:s.options.pagination&&s.modExists("page")&&(s.modules.page.getDisplayIndex()||s.modules.page.setDisplayIndex(this.getNextDisplayIndex()),i=s.modules.page.getDisplayIndex(),"local"==s.modules.page.getMode()&&s.modules.page.setMaxRows(this.getDisplayRows(i-1).length),!0!==(i=n.setDisplayRows(s.modules.page.getRows(this.getDisplayRows(i-1)),i))&&s.modules.page.setDisplayIndex(i))}u.prototype.helpers.elVisible(n.element)&&(o?n.reRenderInPosition():(n.renderTable(),s.options.layoutColumnsOnNewData&&n.table.columnManager.redraw(!0))),s.modExists("columnCalcs")&&s.modules.columnCalcs.recalc(this.activeRows)},n.prototype.setActiveRows=function(t){this.activeRows=t,this.activeRowsCount=this.activeRows.length},n.prototype.resetDisplayRows=function(){this.displayRows=[],this.displayRows.push(this.activeRows.slice(0)),this.displayRowsCount=this.displayRows[0].length,this.table.modExists("frozenRows")&&this.table.modules.frozenRows.setDisplayIndex(0),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.setDisplayIndex(0),this.table.options.pagination&&this.table.modExists("page")&&this.table.modules.page.setDisplayIndex(0)},n.prototype.getNextDisplayIndex=function(){return this.displayRows.length},n.prototype.setDisplayRows=function(t,e){var o=!0;return e&&void 0!==this.displayRows[e]?(this.displayRows[e]=t,o=!0):(this.displayRows.push(t),o=e=this.displayRows.length-1),e==this.displayRows.length-1&&(this.displayRowsCount=this.displayRows[this.displayRows.length-1].length),o},n.prototype.getDisplayRows=function(t){return void 0===t?this.displayRows.length?this.displayRows[this.displayRows.length-1]:[]:this.displayRows[t]||[]},n.prototype.getVisibleRows=function(t){var e=this.element.scrollTop,o=this.element.clientHeight+e,i=!1,n=0,s=0,r=this.getDisplayRows();if(t){this.getDisplayRows();for(var a=this.vDomTop;a<=this.vDomBottom;a++)if(r[a])if(i){if(!(o-r[a].getElement().offsetTop>=0))break;s=a}else e-r[a].getElement().offsetTop>=0?n=a:i=!0}else n=this.vDomTop,s=this.vDomBottom;return r.slice(n,s+1)},n.prototype.displayRowIterator=function(t){this.displayRows.forEach(t),this.displayRowsCount=this.displayRows[this.displayRows.length-1].length},n.prototype.getRows=function(){return this.rows},n.prototype.reRenderInPosition=function(t){if("virtual"==this.getRenderMode()){for(var e=this.element.scrollTop,o=!1,i=!1,n=this.scrollLeft,s=this.getDisplayRows(),r=this.vDomTop;r<=this.vDomBottom;r++)if(s[r]){var a=e-s[r].getElement().offsetTop;if(!(!1===i||Math.abs(a)<i))break;i=a,o=r}t&&t(),this._virtualRenderFill(!1===o?this.displayRowsCount-1:o,!0,i||0),this.scrollHorizontal(n)}else this.renderTable(),t&&t()},n.prototype.setRenderMode=function(){(this.table.element.clientHeight||this.table.options.height)&&this.table.options.virtualDom?this.renderMode="virtual":this.renderMode="classic"},n.prototype.getRenderMode=function(){return this.renderMode},n.prototype.renderTable=function(){var t=this;switch(t.table.options.renderStarted.call(this.table),t.element.scrollTop=0,t.renderMode){case"classic":t._simpleRender();break;case"virtual":t._virtualRenderFill()}t.firstRender&&(t.displayRowsCount?(t.firstRender=!1,t.table.modules.layout.layout()):t.renderEmptyScroll()),t.table.modExists("frozenColumns")&&t.table.modules.frozenColumns.layout(),t.displayRowsCount||t.table.options.placeholder&&(this.renderMode&&t.table.options.placeholder.setAttribute("tabulator-render-mode",this.renderMode),t.getElement().appendChild(t.table.options.placeholder)),t.table.options.renderComplete.call(this.table)},n.prototype._simpleRender=function(){this._clearVirtualDom(),this.displayRowsCount?this.checkClassicModeGroupHeaderWidth():this.renderEmptyScroll()},n.prototype.checkClassicModeGroupHeaderWidth=function(){var t=this,e=this.tableElement,o=!0;t.getDisplayRows().forEach(function(i,n){t.styleRow(i,n),e.appendChild(i.getElement()),i.initialize(!0),"group"!==i.type&&(o=!1)}),e.style.minWidth=o?t.table.columnManager.getWidth()+"px":""},n.prototype.renderEmptyScroll=function(){this.tableElement.style.minWidth=this.table.columnManager.getWidth()+"px",this.tableElement.style.minHeight="1px",this.tableElement.style.visibility="hidden"},n.prototype._clearVirtualDom=function(){var t=this.tableElement;for(this.table.options.placeholder&&this.table.options.placeholder.parentNode&&this.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);t.firstChild;)t.removeChild(t.firstChild);t.style.paddingTop="",t.style.paddingBottom="",t.style.minWidth="",t.style.minHeight="",t.style.visibility="",this.scrollTop=0,this.scrollLeft=0,this.vDomTop=0,this.vDomBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0},n.prototype.styleRow=function(t,e){var o=t.getElement();e%2?(o.classList.add("tabulator-row-even"),o.classList.remove("tabulator-row-odd")):(o.classList.add("tabulator-row-odd"),o.classList.remove("tabulator-row-even"))},n.prototype._virtualRenderFill=function(t,e,o){var i=this,n=i.tableElement,s=i.element,r=0,a=0,l=0,c=0,d=!0,h=i.getDisplayRows();if(t=t||0,o=o||0,t){for(;n.firstChild;)n.removeChild(n.firstChild);var p=(i.displayRowsCount-t+1)*i.vDomRowHeight;p<i.height&&(t-=Math.ceil((i.height-p)/i.vDomRowHeight))<0&&(t=0),r=Math.min(Math.max(Math.floor(i.vDomWindowBuffer/i.vDomRowHeight),i.vDomWindowMinMarginRows),t),t-=r}else i._clearVirtualDom();if(i.displayRowsCount&&u.prototype.helpers.elVisible(i.element)){for(i.vDomTop=t,i.vDomBottom=t-1;(a<=i.height+i.vDomWindowBuffer||c<i.vDomWindowMinTotalRows)&&i.vDomBottom<i.displayRowsCount-1;){var m=i.vDomBottom+1,f=h[m],g=0;i.styleRow(f,m),n.appendChild(f.getElement()),f.initialized?f.heightInitialized||f.normalizeHeight(!0):f.initialize(!0),g=f.getHeight(),c<r?l+=g:a+=g,g>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*g),"group"!==f.type&&(d=!1),i.vDomBottom++,c++}t?(i.vDomTopPad=e?i.vDomRowHeight*this.vDomTop+o:i.scrollTop-l,i.vDomBottomPad=i.vDomBottom==i.displayRowsCount-1?0:Math.max(i.vDomScrollHeight-i.vDomTopPad-a-l,0)):(this.vDomTopPad=0,i.vDomRowHeight=Math.floor((a+l)/c),i.vDomBottomPad=i.vDomRowHeight*(i.displayRowsCount-i.vDomBottom-1),i.vDomScrollHeight=l+a+i.vDomBottomPad-i.height),n.style.paddingTop=i.vDomTopPad+"px",n.style.paddingBottom=i.vDomBottomPad+"px",e&&(this.scrollTop=i.vDomTopPad+l+o-(this.element.scrollWidth>this.element.clientWidth?this.element.offsetHeight-this.element.clientHeight:0)),this.scrollTop=Math.min(this.scrollTop,this.element.scrollHeight-this.height),this.element.scrollWidth>this.element.offsetWidth&&e&&(this.scrollTop+=this.element.offsetHeight-this.element.clientHeight),this.vDomScrollPosTop=this.scrollTop,this.vDomScrollPosBottom=this.scrollTop,s.scrollTop=this.scrollTop,n.style.minWidth=d?i.table.columnManager.getWidth()+"px":"",i.table.options.groupBy&&"fitDataFill"!=i.table.modules.layout.getMode()&&i.displayRowsCount==i.table.modules.groupRows.countGroups()&&(i.tableElement.style.minWidth=i.table.columnManager.getWidth())}else this.renderEmptyScroll()},n.prototype.scrollVertical=function(t){var e=this.scrollTop-this.vDomScrollPosTop,o=this.scrollTop-this.vDomScrollPosBottom,i=2*this.vDomWindowBuffer;if(-e>i||o>i){var n=this.scrollLeft;this._virtualRenderFill(Math.floor(this.element.scrollTop/this.element.scrollHeight*this.displayRowsCount)),this.scrollHorizontal(n)}else t?(e<0&&this._addTopRow(-e),o<0&&this.vDomScrollHeight-this.scrollTop>this.vDomWindowBuffer&&this._removeBottomRow(-o)):(e>=0&&this.scrollTop>this.vDomWindowBuffer&&this._removeTopRow(e),o>=0&&this._addBottomRow(o))},n.prototype._addTopRow=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=this.tableElement,i=this.getDisplayRows();if(this.vDomTop){var n=this.vDomTop-1,s=i[n],r=s.getHeight()||this.vDomRowHeight;t>=r&&(this.styleRow(s,n),o.insertBefore(s.getElement(),o.firstChild),s.initialized&&s.heightInitialized||(this.vDomTopNewRows.push(s),s.heightInitialized||s.clearCellHeight()),s.initialize(),this.vDomTopPad-=r,this.vDomTopPad<0&&(this.vDomTopPad=n*this.vDomRowHeight),n||(this.vDomTopPad=0),o.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop-=r,this.vDomTop--),t=-(this.scrollTop-this.vDomScrollPosTop),s.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*s.getHeight()),e<this.vDomMaxRenderChain&&this.vDomTop&&t>=(i[this.vDomTop-1].getHeight()||this.vDomRowHeight)?this._addTopRow(t,e+1):this._quickNormalizeRowHeight(this.vDomTopNewRows)}},n.prototype._removeTopRow=function(t){var e=this.tableElement,o=this.getDisplayRows()[this.vDomTop],i=o.getHeight()||this.vDomRowHeight;if(t>=i){var n=o.getElement();n.parentNode.removeChild(n),this.vDomTopPad+=i,e.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop+=this.vDomTop?i:i+this.vDomWindowBuffer,this.vDomTop++,t=this.scrollTop-this.vDomScrollPosTop,this._removeTopRow(t)}},n.prototype._addBottomRow=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=this.tableElement,i=this.getDisplayRows();if(this.vDomBottom<this.displayRowsCount-1){var n=this.vDomBottom+1,s=i[n],r=s.getHeight()||this.vDomRowHeight;t>=r&&(this.styleRow(s,n),o.appendChild(s.getElement()),s.initialized&&s.heightInitialized||(this.vDomBottomNewRows.push(s),s.heightInitialized||s.clearCellHeight()),s.initialize(),this.vDomBottomPad-=r,(this.vDomBottomPad<0||n==this.displayRowsCount-1)&&(this.vDomBottomPad=0),o.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom+=r,this.vDomBottom++),t=this.scrollTop-this.vDomScrollPosBottom,s.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*s.getHeight()),e<this.vDomMaxRenderChain&&this.vDomBottom<this.displayRowsCount-1&&t>=(i[this.vDomBottom+1].getHeight()||this.vDomRowHeight)?this._addBottomRow(t,e+1):this._quickNormalizeRowHeight(this.vDomBottomNewRows)}},n.prototype._removeBottomRow=function(t){var e=this.tableElement,o=this.getDisplayRows()[this.vDomBottom],i=o.getHeight()||this.vDomRowHeight;if(t>=i){var n=o.getElement();n.parentNode&&n.parentNode.removeChild(n),this.vDomBottomPad+=i,this.vDomBottomPad<0&&(this.vDomBottomPad=0),e.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom-=i,this.vDomBottom--,t=-(this.scrollTop-this.vDomScrollPosBottom),this._removeBottomRow(t)}},n.prototype._quickNormalizeRowHeight=function(t){t.forEach(function(t){t.calcHeight()}),t.forEach(function(t){t.setCellHeight()}),t.length=0},n.prototype.normalizeHeight=function(){this.activeRows.forEach(function(t){t.normalizeHeight()})},n.prototype.adjustTableSize=function(){if("virtual"===this.renderMode){this.height=this.element.clientHeight,this.vDomWindowBuffer=this.table.options.virtualDomBuffer||this.height;var t=this.columnManager.getElement().offsetHeight+(this.table.footerManager&&!this.table.footerManager.external?this.table.footerManager.getElement().offsetHeight:0);this.element.style.minHeight="calc(100% - "+t+"px)",this.element.style.height="calc(100% - "+t+"px)",this.element.style.maxHeight="calc(100% - "+t+"px)"}},n.prototype.reinitialize=function(){this.rows.forEach(function(t){t.reinitialize()})},n.prototype.redraw=function(t){var e=this.scrollLeft;this.adjustTableSize(),this.table.tableWidth=this.table.element.clientWidth,t?this.renderTable():("classic"==this.renderMode?this.table.options.groupBy?this.refreshActiveData("group",!1,!1):this._simpleRender():(this.reRenderInPosition(),this.scrollHorizontal(e)),this.displayRowsCount||this.table.options.placeholder&&this.getElement().appendChild(this.table.options.placeholder))},n.prototype.resetScroll=function(){if(this.element.scrollLeft=0,this.element.scrollTop=0,"ie"===this.table.browser){var t=document.createEvent("Event");t.initEvent("scroll",!1,!0),this.element.dispatchEvent(t)}else this.element.dispatchEvent(new Event("scroll"))};var s=function(t){this._row=t};s.prototype.getData=function(t){return this._row.getData(t)},s.prototype.getElement=function(){return this._row.getElement()},s.prototype.getCells=function(){var t=[];return this._row.getCells().forEach(function(e){t.push(e.getComponent())}),t},s.prototype.getCell=function(t){var e=this._row.getCell(t);return!!e&&e.getComponent()},s.prototype.getIndex=function(){return this._row.getData("data")[this._row.table.options.index]},s.prototype.getPosition=function(t){return this._row.table.rowManager.getRowPosition(this._row,t)},s.prototype.delete=function(){return this._row.delete()},s.prototype.scrollTo=function(){return this._row.table.rowManager.scrollToRow(this._row)},s.prototype.pageTo=function(){if(this._row.table.modExists("page",!0))return this._row.table.modules.page.setPageToRow(this._row)},s.prototype.move=function(t,e){this._row.moveToRow(t,e)},s.prototype.update=function(t){return this._row.updateData(t)},s.prototype.normalizeHeight=function(){this._row.normalizeHeight(!0)},s.prototype.select=function(){this._row.table.modules.selectRow.selectRows(this._row)},s.prototype.deselect=function(){this._row.table.modules.selectRow.deselectRows(this._row)},s.prototype.toggleSelect=function(){this._row.table.modules.selectRow.toggleRow(this._row)},s.prototype.isSelected=function(){return this._row.table.modules.selectRow.isRowSelected(this._row)},s.prototype._getSelf=function(){return this._row},s.prototype.freeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.freezeRow(this._row)},s.prototype.unfreeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.unfreezeRow(this._row)},s.prototype.treeCollapse=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.collapseRow(this._row)},s.prototype.treeExpand=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.expandRow(this._row)},s.prototype.treeToggle=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.toggleRow(this._row)},s.prototype.getTreeParent=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeParent(this._row)},s.prototype.getTreeChildren=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeChildren(this._row)},s.prototype.reformat=function(){return this._row.reinitialize()},s.prototype.getGroup=function(){return this._row.getGroup().getComponent()},s.prototype.getTable=function(){return this._row.table},s.prototype.getNextRow=function(){var t=this._row.nextRow();return t?t.getComponent():t},s.prototype.getPrevRow=function(){var t=this._row.prevRow();return t?t.getComponent():t};var r=function(t,e){this.table=e.table,this.parent=e,this.data={},this.type="row",this.element=this.createElement(),this.modules={},this.cells=[],this.height=0,this.heightStyled="",this.manualHeight=!1,this.outerHeight=0,this.initialized=!1,this.heightInitialized=!1,this.setData(t),this.generateElement()};r.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-row"),t.setAttribute("role","row"),t},r.prototype.getElement=function(){return this.element},r.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},r.prototype.generateElement=function(){var t,e,o,i=this;!1!==i.table.options.selectable&&i.table.modExists("selectRow")&&i.table.modules.selectRow.initializeRow(this),!1!==i.table.options.movableRows&&i.table.modExists("moveRow")&&i.table.modules.moveRow.initializeRow(this),!1!==i.table.options.dataTree&&i.table.modExists("dataTree")&&i.table.modules.dataTree.initializeRow(this),i.table.options.rowClick&&i.element.addEventListener("click",function(t){i.table.options.rowClick(t,i.getComponent())}),i.table.options.rowDblClick&&i.element.addEventListener("dblclick",function(t){i.table.options.rowDblClick(t,i.getComponent())}),i.table.options.rowContext&&i.element.addEventListener("contextmenu",function(t){i.table.options.rowContext(t,i.getComponent())}),i.table.options.rowMouseEnter&&i.element.addEventListener("mouseenter",function(t){i.table.options.rowMouseEnter(t,i.getComponent())}),i.table.options.rowMouseLeave&&i.element.addEventListener("mouseleave",function(t){i.table.options.rowMouseLeave(t,i.getComponent())}),i.table.options.rowMouseOver&&i.element.addEventListener("mouseover",function(t){i.table.options.rowMouseOver(t,i.getComponent())}),i.table.options.rowMouseOut&&i.element.addEventListener("mouseout",function(t){i.table.options.rowMouseOut(t,i.getComponent())}),i.table.options.rowMouseMove&&i.element.addEventListener("mousemove",function(t){i.table.options.rowMouseMove(t,i.getComponent())}),i.table.options.rowTap&&(o=!1,i.element.addEventListener("touchstart",function(t){o=!0},{passive:!0}),i.element.addEventListener("touchend",function(t){o&&i.table.options.rowTap(t,i.getComponent()),o=!1})),i.table.options.rowDblTap&&(t=null,i.element.addEventListener("touchend",function(e){t?(clearTimeout(t),t=null,i.table.options.rowDblTap(e,i.getComponent())):t=setTimeout(function(){clearTimeout(t),t=null},300)})),i.table.options.rowTapHold&&(e=null,i.element.addEventListener("touchstart",function(t){clearTimeout(e),e=setTimeout(function(){clearTimeout(e),e=null,o=!1,i.table.options.rowTapHold(t,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(t){clearTimeout(e),e=null}))},r.prototype.generateCells=function(){this.cells=this.table.columnManager.generateCells(this)},r.prototype.initialize=function(t){var e=this;if(!e.initialized||t){for(e.deleteCells();e.element.firstChild;)e.element.removeChild(e.element.firstChild);this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutRow(this),this.generateCells(),e.cells.forEach(function(t){e.element.appendChild(t.getElement()),t.cellRendered()}),t&&e.normalizeHeight(),e.table.options.dataTree&&e.table.modExists("dataTree")&&e.table.modules.dataTree.layoutRow(this),"collapse"===e.table.options.responsiveLayout&&e.table.modExists("responsiveLayout")&&e.table.modules.responsiveLayout.layoutRow(this),e.table.options.rowFormatter&&e.table.options.rowFormatter(e.getComponent()),e.table.options.resizableRows&&e.table.modExists("resizeRows")&&e.table.modules.resizeRows.initializeRow(e),e.initialized=!0}},r.prototype.reinitializeHeight=function(){this.heightInitialized=!1,null!==this.element.offsetParent&&this.normalizeHeight(!0)},r.prototype.reinitialize=function(){this.initialized=!1,this.heightInitialized=!1,this.manualHeight||(this.height=0,this.heightStyled=""),null!==this.element.offsetParent&&this.initialize(!0)},r.prototype.calcHeight=function(t){var e=0,o=this.table.options.resizableRows?this.element.clientHeight:0;this.cells.forEach(function(t){var o=t.getHeight();o>e&&(e=o)}),this.height=t?Math.max(e,o):this.manualHeight?this.height:Math.max(e,o),this.heightStyled=this.height?this.height+"px":"",this.outerHeight=this.element.offsetHeight},r.prototype.setCellHeight=function(){this.cells.forEach(function(t){t.setHeight()}),this.heightInitialized=!0},r.prototype.clearCellHeight=function(){this.cells.forEach(function(t){t.clearHeight()})},r.prototype.normalizeHeight=function(t){t&&this.clearCellHeight(),this.calcHeight(t),this.setCellHeight()},r.prototype.setHeight=function(t,e){(this.height!=t||e)&&(this.manualHeight=!0,this.height=t,this.heightStyled=t?t+"px":"",this.setCellHeight(),this.outerHeight=this.element.offsetHeight)},r.prototype.getHeight=function(){return this.outerHeight},r.prototype.getWidth=function(){return this.element.offsetWidth},r.prototype.deleteCell=function(t){var e=this.cells.indexOf(t);e>-1&&this.cells.splice(e,1)},r.prototype.setData=function(t){this.table.modExists("mutator")&&(t=this.table.modules.mutator.transformRow(t,"data")),this.data=t,
+this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchRow(this)},r.prototype.updateData=function(t){var e=this,o=this,i=u.prototype.helpers.elVisible(this.element);return new Promise(function(n,s){"string"==typeof t&&(t=JSON.parse(t)),e.table.options.reactiveData&&e.table.modExists("reactiveData",!0)&&e.table.modules.reactiveData.block(),o.table.modExists("mutator")&&(t=o.table.modules.mutator.transformRow(t,"data",!0));for(var r in t)o.data[r]=t[r];e.table.options.reactiveData&&e.table.modExists("reactiveData",!0)&&e.table.modules.reactiveData.unblock();for(var r in t){e.table.columnManager.getColumnsByFieldRoot(r).forEach(function(o){var n=e.getCell(o.getField());if(n){var s=o.getFieldValue(t);n.getValue()!=s&&(n.setValueProcessData(s),i&&n.cellRendered())}})}i?(o.normalizeHeight(),o.table.options.rowFormatter&&o.table.options.rowFormatter(o.getComponent())):(e.initialized=!1,e.height=0,e.heightStyled=""),!1!==o.table.options.dataTree&&o.table.modExists("dataTree")&&e.table.modules.dataTree.redrawNeeded(t)&&(e.table.modules.dataTree.initializeRow(e),e.table.modules.dataTree.layoutRow(e),e.table.rowManager.refreshActiveData("tree",!1,!0)),o.table.options.rowUpdated.call(e.table,o.getComponent()),n()})},r.prototype.getData=function(t){var e=this;return t?e.table.modExists("accessor")?e.table.modules.accessor.transformRow(e.data,t):void 0:this.data},r.prototype.getCell=function(t){return t=this.table.columnManager.findColumn(t),this.cells.find(function(e){return e.column===t})},r.prototype.getCellIndex=function(t){return this.cells.findIndex(function(e){return e===t})},r.prototype.findNextEditableCell=function(t){var e=!1;if(t<this.cells.length-1)for(var o=t+1;o<this.cells.length;o++){var i=this.cells[o];if(i.column.modules.edit&&u.prototype.helpers.elVisible(i.getElement())){var n=!0;if("function"==typeof i.column.modules.edit.check&&(n=i.column.modules.edit.check(i.getComponent())),n){e=i;break}}}return e},r.prototype.findPrevEditableCell=function(t){var e=!1;if(t>0)for(var o=t-1;o>=0;o--){var i=this.cells[o],n=!0;if(i.column.modules.edit&&u.prototype.helpers.elVisible(i.getElement())&&("function"==typeof i.column.modules.edit.check&&(n=i.column.modules.edit.check(i.getComponent())),n)){e=i;break}}return e},r.prototype.getCells=function(){return this.cells},r.prototype.nextRow=function(){return this.table.rowManager.nextDisplayRow(this,!0)||!1},r.prototype.prevRow=function(){return this.table.rowManager.prevDisplayRow(this,!0)||!1},r.prototype.moveToRow=function(t,e){var o=this.table.rowManager.findRow(t);o?(this.table.rowManager.moveRowActual(this,o,!e),this.table.rowManager.refreshActiveData("display",!1,!0)):console.warn("Move Error - No matching row found:",t)},r.prototype.delete=function(){var t=this;return new Promise(function(e,o){var i,n;t.table.options.history&&t.table.modExists("history")&&(t.table.options.groupBy&&t.table.modExists("groupRows")?(n=t.getGroup().rows,(i=n.indexOf(t))&&(i=n[i-1])):(i=t.table.rowManager.getRowIndex(t))&&(i=t.table.rowManager.rows[i-1]),t.table.modules.history.action("rowDelete",t,{data:t.getData(),pos:!i,index:i})),t.deleteActual(),e()})},r.prototype.deleteActual=function(t){this.table.rowManager.getRowIndex(this);this.table.modExists("selectRow")&&this.table.modules.selectRow._deselectRow(this,!0),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0),this.modules.group&&this.modules.group.removeRow(this),this.table.rowManager.deleteRow(this,t),this.deleteCells(),this.initialized=!1,this.heightInitialized=!1,this.table.modExists("columnCalcs")&&(this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.columnCalcs.recalcRowGroup(this):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows))},r.prototype.deleteCells=function(){for(var t=this.cells.length,e=0;e<t;e++)this.cells[0].delete()},r.prototype.wipe=function(){for(this.deleteCells();this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element=!1,this.modules={},this.element.parentNode&&this.element.parentNode.removeChild(this.element)},r.prototype.getGroup=function(){return this.modules.group||!1},r.prototype.getComponent=function(){return new s(this)};var a=function(t){this._cell=t};a.prototype.getValue=function(){return this._cell.getValue()},a.prototype.getOldValue=function(){return this._cell.getOldValue()},a.prototype.getElement=function(){return this._cell.getElement()},a.prototype.getRow=function(){return this._cell.row.getComponent()},a.prototype.getData=function(){return this._cell.row.getData()},a.prototype.getField=function(){return this._cell.column.getField()},a.prototype.getColumn=function(){return this._cell.column.getComponent()},a.prototype.setValue=function(t,e){void 0===e&&(e=!0),this._cell.setValue(t,e)},a.prototype.restoreOldValue=function(){this._cell.setValueActual(this._cell.getOldValue())},a.prototype.edit=function(t){return this._cell.edit(t)},a.prototype.cancelEdit=function(){this._cell.cancelEdit()},a.prototype.nav=function(){return this._cell.nav()},a.prototype.checkHeight=function(){this._cell.checkHeight()},a.prototype.getTable=function(){return this._cell.table},a.prototype._getSelf=function(){return this._cell};var l=function(t,e){this.table=t.table,this.column=t,this.row=e,this.element=null,this.value=null,this.oldValue=null,this.height=null,this.width=null,this.minWidth=null,this.build()};l.prototype.build=function(){this.generateElement(),this.setWidth(),this._configureCell(),this.setValueActual(this.column.getFieldValue(this.row.data))},l.prototype.generateElement=function(){this.element=document.createElement("div"),this.element.className="tabulator-cell",this.element.setAttribute("role","gridcell"),this.element=this.element},l.prototype._configureCell=function(){var t=this,e=t.column.cellEvents,o=t.element,i=this.column.getField();if(o.style.textAlign=t.column.hozAlign,i&&o.setAttribute("tabulator-field",i),t.column.definition.cssClass){t.column.definition.cssClass.split(" ").forEach(function(t){o.classList.add(t)})}"hover"===this.table.options.tooltipGenerationMode&&o.addEventListener("mouseenter",function(e){t._generateTooltip()}),t._bindClickEvents(e),t._bindTouchEvents(e),t._bindMouseEvents(e),t.column.modules.edit&&t.table.modules.edit.bindEditor(t),t.column.definition.rowHandle&&!1!==t.table.options.movableRows&&t.table.modExists("moveRow")&&t.table.modules.moveRow.initializeCell(t),t.column.visible||t.hide()},l.prototype._bindClickEvents=function(t){var e=this,o=e.element;(t.cellClick||e.table.options.cellClick)&&o.addEventListener("click",function(o){var i=e.getComponent();t.cellClick&&t.cellClick.call(e.table,o,i),e.table.options.cellClick&&e.table.options.cellClick.call(e.table,o,i)}),t.cellDblClick||this.table.options.cellDblClick?o.addEventListener("dblclick",function(o){var i=e.getComponent();t.cellDblClick&&t.cellDblClick.call(e.table,o,i),e.table.options.cellDblClick&&e.table.options.cellDblClick.call(e.table,o,i)}):o.addEventListener("dblclick",function(t){t.preventDefault();try{if(document.selection){var o=document.body.createTextRange();o.moveToElementText(e.element),o.select()}else if(window.getSelection){var o=document.createRange();o.selectNode(e.element),window.getSelection().removeAllRanges(),window.getSelection().addRange(o)}}catch(t){}}),(t.cellContext||this.table.options.cellContext)&&o.addEventListener("contextmenu",function(o){var i=e.getComponent();t.cellContext&&t.cellContext.call(e.table,o,i),e.table.options.cellContext&&e.table.options.cellContext.call(e.table,o,i)})},l.prototype._bindMouseEvents=function(t){var e=this,o=e.element;(t.cellMouseEnter||e.table.options.cellMouseEnter)&&o.addEventListener("mouseenter",function(o){var i=e.getComponent();t.cellMouseEnter&&t.cellMouseEnter.call(e.table,o,i),e.table.options.cellMouseEnter&&e.table.options.cellMouseEnter.call(e.table,o,i)}),(t.cellMouseLeave||e.table.options.cellMouseLeave)&&o.addEventListener("mouseleave",function(o){var i=e.getComponent();t.cellMouseLeave&&t.cellMouseLeave.call(e.table,o,i),e.table.options.cellMouseLeave&&e.table.options.cellMouseLeave.call(e.table,o,i)}),(t.cellMouseOver||e.table.options.cellMouseOver)&&o.addEventListener("mouseover",function(o){var i=e.getComponent();t.cellMouseOver&&t.cellMouseOver.call(e.table,o,i),e.table.options.cellMouseOver&&e.table.options.cellMouseOver.call(e.table,o,i)}),(t.cellMouseOut||e.table.options.cellMouseOut)&&o.addEventListener("mouseout",function(o){var i=e.getComponent();t.cellMouseOut&&t.cellMouseOut.call(e.table,o,i),e.table.options.cellMouseOut&&e.table.options.cellMouseOut.call(e.table,o,i)}),(t.cellMouseMove||e.table.options.cellMouseMove)&&o.addEventListener("mousemove",function(o){var i=e.getComponent();t.cellMouseMove&&t.cellMouseMove.call(e.table,o,i),e.table.options.cellMouseMove&&e.table.options.cellMouseMove.call(e.table,o,i)})},l.prototype._bindTouchEvents=function(t){var e,o,i,n=this,s=n.element;(t.cellTap||this.table.options.cellTap)&&(i=!1,s.addEventListener("touchstart",function(t){i=!0},{passive:!0}),s.addEventListener("touchend",function(e){if(i){var o=n.getComponent();t.cellTap&&t.cellTap.call(n.table,e,o),n.table.options.cellTap&&n.table.options.cellTap.call(n.table,e,o)}i=!1})),(t.cellDblTap||this.table.options.cellDblTap)&&(e=null,s.addEventListener("touchend",function(o){if(e){clearTimeout(e),e=null;var i=n.getComponent();t.cellDblTap&&t.cellDblTap.call(n.table,o,i),n.table.options.cellDblTap&&n.table.options.cellDblTap.call(n.table,o,i)}else e=setTimeout(function(){clearTimeout(e),e=null},300)})),(t.cellTapHold||this.table.options.cellTapHold)&&(o=null,s.addEventListener("touchstart",function(e){clearTimeout(o),o=setTimeout(function(){clearTimeout(o),o=null,i=!1;var s=n.getComponent();t.cellTapHold&&t.cellTapHold.call(n.table,e,s),n.table.options.cellTapHold&&n.table.options.cellTapHold.call(n.table,e,s)},1e3)},{passive:!0}),s.addEventListener("touchend",function(t){clearTimeout(o),o=null}))},l.prototype._generateContents=function(){var t;switch(t=this.table.modExists("format")?this.table.modules.format.formatValue(this):this.element.innerHTML=this.value,void 0===t?"undefined":_typeof(t)){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}},l.prototype.cellRendered=function(){this.table.modExists("format")&&this.table.modules.format.cellRendered&&this.table.modules.format.cellRendered(this)},l.prototype._generateTooltip=function(){var t=this.column.tooltip;t?(!0===t?t=this.value:"function"==typeof t&&!1===(t=t(this.getComponent()))&&(t=""),void 0===t&&(t=""),this.element.setAttribute("title",t)):this.element.setAttribute("title","")},l.prototype.getElement=function(){return this.element},l.prototype.getValue=function(){return this.value},l.prototype.getOldValue=function(){return this.oldValue},l.prototype.setValue=function(t,e){var o,i=this.setValueProcessData(t,e);i&&(this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("cellEdit",this,{oldValue:this.oldValue,newValue:this.value}),o=this.getComponent(),this.column.cellEvents.cellEdited&&this.column.cellEvents.cellEdited.call(this.table,o),this.table.options.cellEdited.call(this.table,o),this.table.options.dataEdited.call(this.table,this.table.rowManager.getData()))},l.prototype.setValueProcessData=function(t,e){var o=!1;return this.value!=t&&(o=!0,e&&this.column.modules.mutate&&(t=this.table.modules.mutator.transformCell(this,t))),this.setValueActual(t),o&&this.table.modExists("columnCalcs")&&(this.column.definition.topCalc||this.column.definition.bottomCalc)&&(this.table.options.groupBy&&this.table.modExists("groupRows")?("table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs||this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),"table"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.recalcRowGroup(this.row)):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows)),o},l.prototype.setValueActual=function(t){this.oldValue=this.value,this.value=t,this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.block(),this.column.setFieldValue(this.row.data,t),this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.unblock(),this._generateContents(),this._generateTooltip(),this.table.options.resizableColumns&&this.table.modExists("resizeColumns")&&this.table.modules.resizeColumns.initializeColumn("cell",this.column,this.element),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutElement(this.element,this.column)},l.prototype.setWidth=function(){this.width=this.column.width,this.element.style.width=this.column.widthStyled},l.prototype.clearWidth=function(){this.width="",this.element.style.width=""},l.prototype.getWidth=function(){return this.width||this.element.offsetWidth},l.prototype.setMinWidth=function(){this.minWidth=this.column.minWidth,this.element.style.minWidth=this.column.minWidthStyled},l.prototype.checkHeight=function(){this.row.reinitializeHeight()},l.prototype.clearHeight=function(){this.element.style.height="",this.height=null},l.prototype.setHeight=function(){this.height=this.row.height,this.element.style.height=this.row.heightStyled},l.prototype.getHeight=function(){return this.height||this.element.offsetHeight},l.prototype.show=function(){this.element.style.display=""},l.prototype.hide=function(){this.element.style.display="none"},l.prototype.edit=function(t){if(this.table.modExists("edit",!0))return this.table.modules.edit.editCell(this,t)},l.prototype.cancelEdit=function(){if(this.table.modExists("edit",!0)){var t=this.table.modules.edit.getCurrentCell();t&&t._getSelf()===this?this.table.modules.edit.cancelEdit():console.warn("Cancel Editor Error - This cell is not currently being edited ")}},l.prototype.delete=function(){this.element.parentNode.removeChild(this.element),this.element=!1,this.column.deleteCell(this),this.row.deleteCell(this),this.calcs={}},l.prototype.nav=function(){var t=this,e=!1,o=this.row.getCellIndex(this);return{next:function(){var e,o=this.right();return!!o||!(!(e=t.table.rowManager.nextDisplayRow(t.row,!0))||!(o=e.findNextEditableCell(-1)))&&(o.edit(),!0)},prev:function(){var e,o=this.left();return!!o||!(!(e=t.table.rowManager.prevDisplayRow(t.row,!0))||!(o=e.findPrevEditableCell(e.cells.length)))&&(o.edit(),!0)},left:function(){return!!(e=t.row.findPrevEditableCell(o))&&(e.edit(),!0)},right:function(){return!!(e=t.row.findNextEditableCell(o))&&(e.edit(),!0)},up:function(){var e=t.table.rowManager.prevDisplayRow(t.row,!0);e&&e.cells[o].edit()},down:function(){var e=t.table.rowManager.nextDisplayRow(t.row,!0);e&&e.cells[o].edit()}}},l.prototype.getIndex=function(){this.row.getCellIndex(this)},l.prototype.getComponent=function(){return new a(this)};var c=function(t){this.table=t,this.active=!1,this.element=this.createElement(),this.external=!1,this.links=[],this._initialize()};c.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-footer"),t},c.prototype._initialize=function(t){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}},c.prototype.getElement=function(){return this.element},c.prototype.append=function(t,e){this.activate(e),this.element.appendChild(t),this.table.rowManager.adjustTableSize()},c.prototype.prepend=function(t,e){this.activate(e),this.element.insertBefore(t,this.element.firstChild),this.table.rowManager.adjustTableSize()},c.prototype.remove=function(t){t.parentNode.removeChild(t),this.deactivate()},c.prototype.deactivate=function(t){this.element.firstChild&&!t||(this.external||this.element.parentNode.removeChild(this.element),this.active=!1)},c.prototype.activate=function(t){this.active||(this.active=!0,this.external||(this.table.element.appendChild(this.getElement()),this.table.element.style.display="")),t&&this.links.push(t)},c.prototype.redraw=function(){this.links.forEach(function(t){t.footerRedraw()})};var u=function t(e,o){this.options={},this.columnManager=null,this.rowManager=null,this.footerManager=null,this.browser="",this.browserSlow=!1,this.modules={},this.initializeElement(e),this.initializeOptions(o||{}),this._create(),t.prototype.comms.register(this)};u.prototype.defaultOptions={height:!1,layout:"fitData",layoutColumnsOnNewData:!1,columnMinWidth:40,columnVertAlign:"top",resizableColumns:!0,resizableRows:!1,autoResize:!0,columns:[],data:[],autoColumns:!1,reactiveData:!1,nestedFieldSeparator:".",tooltips:!1,tooltipsHeader:!1,tooltipGenerationMode:"load",initialSort:!1,initialFilter:!1,initialHeaderFilter:!1,columnHeaderSortMulti:!0,sortOrderReverse:!1,headerSort:!0,headerSortTristate:!1,footerElement:!1,index:"id",keybindings:[],tabEndNewRow:!1,invalidOptionWarnings:!0,clipboard:!1,clipboardCopyStyled:!0,clipboardCopySelector:"active",clipboardCopyFormatter:"table",clipboardPasteParser:"table",clipboardPasteAction:"insert",clipboardCopyConfig:!1,clipboardCopied:function(){},clipboardPasted:function(){},clipboardPasteError:function(){},downloadDataFormatter:!1,downloadReady:function(t,e){return e},downloadComplete:!1,downloadConfig:!1,dataTree:!1,dataTreeElementColumn:!1,dataTreeBranchElement:!0,dataTreeChildIndent:9,dataTreeChildField:"_children",dataTreeCollapseElement:!1,dataTreeExpandElement:!1,dataTreeStartExpanded:!1,dataTreeRowExpanded:function(){},dataTreeRowCollapsed:function(){},printAsHtml:!1,printFormatter:!1,printHeader:!1,printFooter:!1,printCopyStyle:!0,printVisibleRows:!0,printConfig:{},addRowPos:"bottom",selectable:"highlight",selectableRangeMode:"drag",selectableRollingSelection:!0,selectablePersistence:!0,selectableCheck:function(t,e){return!0},headerFilterPlaceholder:!1,headerVisible:!0,history:!1,locale:!1,langs:{},virtualDom:!0,virtualDomBuffer:0,persistentLayout:!1,persistentSort:!1,persistentFilter:!1,persistenceID:"",persistenceMode:!0,responsiveLayout:!1,responsiveLayoutCollapseStartOpen:!0,responsiveLayoutCollapseUseFormatters:!0,responsiveLayoutCollapseFormatter:!1,pagination:!1,paginationSize:!1,paginationButtonCount:5,paginationSizeSelector:!1,paginationElement:!1,paginationDataSent:{},paginationDataReceived:{},paginationAddRow:"page",ajaxURL:!1,ajaxURLGenerator:!1,ajaxParams:{},ajaxConfig:"get",ajaxContentType:"form",ajaxRequestFunc:!1,ajaxLoader:!0,ajaxLoaderLoading:!1,ajaxLoaderError:!1,ajaxFiltering:!1,ajaxSorting:!1,ajaxProgressiveLoad:!1,ajaxProgressiveLoadDelay:0,ajaxProgressiveLoadScrollMargin:0,groupBy:!1,groupStartOpen:!0,groupValues:!1,groupHeader:!1,htmlOutputConfig:!1,movableColumns:!1,movableRows:!1,movableRowsConnectedTables:!1,movableRowsSender:!1,movableRowsReceiver:"insert",movableRowsSendingStart:function(){},movableRowsSent:function(){},movableRowsSentFailed:function(){},movableRowsSendingStop:function(){},movableRowsReceivingStart:function(){},movableRowsReceived:function(){},movableRowsReceivedFailed:function(){},movableRowsReceivingStop:function(){},scrollToRowPosition:"top",scrollToRowIfVisible:!0,scrollToColumnPosition:"left",scrollToColumnIfVisible:!0,rowFormatter:!1,placeholder:!1,tableBuilding:function(){},tableBuilt:function(){},renderStarted:function(){},renderComplete:function(){},rowClick:!1,rowDblClick:!1,rowContext:!1,rowTap:!1,rowDblTap:!1,rowTapHold:!1,rowMouseEnter:!1,rowMouseLeave:!1,rowMouseOver:!1,rowMouseOut:!1,rowMouseMove:!1,rowAdded:function(){},rowDeleted:function(){},rowMoved:function(){},rowUpdated:function(){},rowSelectionChanged:function(){},rowSelected:function(){},rowDeselected:function(){},rowResized:function(){},cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1,cellEditing:function(){},cellEdited:function(){},cellEditCancelled:function(){},columnMoved:!1,columnResized:function(){},columnTitleChanged:function(){},columnVisibilityChanged:function(){},htmlImporting:function(){},htmlImported:function(){},dataLoading:function(){},dataLoaded:function(){},dataEdited:function(){},ajaxRequesting:function(){},ajaxResponse:!1,ajaxError:function(){},dataFiltering:!1,dataFiltered:!1,dataSorting:function(){},dataSorted:function(){},groupToggleElement:"arrow",groupClosedShowCalcs:!1,dataGrouping:function(){},dataGrouped:!1,groupVisibilityChanged:function(){},groupClick:!1,groupDblClick:!1,groupContext:!1,groupTap:!1,groupDblTap:!1,groupTapHold:!1,columnCalcs:!0,pageLoaded:function(){},localized:function(){},validationFailed:function(){},historyUndo:function(){},historyRedo:function(){}},u.prototype.initializeOptions=function(t){if(!1!==t.invalidOptionWarnings)for(var e in t)void 0===this.defaultOptions[e]&&console.warn("Invalid table constructor option:",e);for(var e in this.defaultOptions)e in t?this.options[e]=t[e]:Array.isArray(this.defaultOptions[e])?this.options[e]=[]:"object"===_typeof(this.defaultOptions[e])?this.options[e]={}:this.options[e]=this.defaultOptions[e]},u.prototype.initializeElement=function(t){return"undefined"!=typeof HTMLElement&&t instanceof HTMLElement?(this.element=t,!0):"string"==typeof t?(this.element=document.querySelector(t),!!this.element||(console.error("Tabulator Creation Error - no element found matching selector: ",t),!1)):(console.error("Tabulator Creation Error - Invalid element provided:",t),!1)},u.prototype._mapDepricatedFunctionality=function(){},u.prototype._clearSelection=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")},u.prototype._create=function(){this._clearObjectPointers(),this._mapDepricatedFunctionality(),this.bindModules(),"TABLE"===this.element.tagName&&this.modExists("htmlTableImport",!0)&&this.modules.htmlTableImport.parseTable(),this.columnManager=new t(this),this.rowManager=new n(this),this.footerManager=new c(this),this.columnManager.setRowManager(this.rowManager),this.rowManager.setColumnManager(this.columnManager),this._buildElement(),this._loadInitialData()},u.prototype._clearObjectPointers=function(){this.options.columns=this.options.columns.slice(0),this.options.reactiveData||(this.options.data=this.options.data.slice(0))},u.prototype._buildElement=function(){var t=this,e=this.element,o=this.modules,i=this.options;for(i.tableBuilding.call(this),e.classList.add("tabulator"),e.setAttribute("role","grid");e.firstChild;)e.removeChild(e.firstChild);i.height&&(i.height=isNaN(i.height)?i.height:i.height+"px",e.style.height=i.height),this.columnManager.initialize(),this.rowManager.initialize(),this._detectBrowser(),this.modExists("layout",!0)&&o.layout.initialize(i.layout),!1!==i.headerFilterPlaceholder&&o.localize.setHeaderFilterPlaceholder(i.headerFilterPlaceholder);for(var n in i.langs)o.localize.installLang(n,i.langs[n]);if(o.localize.setLocale(i.locale),"string"==typeof i.placeholder){var s=document.createElement("div");s.classList.add("tabulator-placeholder");var r=document.createElement("span");r.innerHTML=i.placeholder,s.appendChild(r),i.placeholder=s}if(e.appendChild(this.columnManager.getElement()),e.appendChild(this.rowManager.getElement()),i.footerElement&&this.footerManager.activate(),(i.persistentLayout||i.persistentSort||i.persistentFilter)&&this.modExists("persistence",!0)&&o.persistence.initialize(i.persistenceMode,i.persistenceID),i.persistentLayout&&this.modExists("persistence",!0)&&(i.columns=o.persistence.load("columns",i.columns)),i.movableRows&&this.modExists("moveRow")&&o.moveRow.initialize(),i.autoColumns&&this.options.data&&this.columnManager.generateColumnsFromRowData(this.options.data),this.modExists("columnCalcs")&&o.columnCalcs.initialize(),this.columnManager.setColumns(i.columns),i.dataTree&&this.modExists("dataTree",!0)&&o.dataTree.initialize(),this.modExists("frozenRows")&&this.modules.frozenRows.initialize(),(i.persistentSort||i.initialSort)&&this.modExists("sort",!0)){var a=[];i.persistentSort&&this.modExists("persistence",!0)?!1===(a=o.persistence.load("sort"))&&i.initialSort&&(a=i.initialSort):i.initialSort&&(a=i.initialSort),o.sort.setSort(a)}if((i.persistentFilter||i.initialFilter)&&this.modExists("filter",!0)){var l=[];i.persistentFilter&&this.modExists("persistence",!0)?!1===(l=o.persistence.load("filter"))&&i.initialFilter&&(l=i.initialFilter):i.initialFilter&&(l=i.initialFilter),o.filter.setFilter(l)}i.initialHeaderFilter&&this.modExists("filter",!0)&&i.initialHeaderFilter.forEach(function(e){var i=t.columnManager.findColumn(e.field);if(!i)return console.warn("Column Filter Error - No matching column found:",e.field),!1;o.filter.setHeaderFilterValue(i,e.value)}),this.modExists("ajax")&&o.ajax.initialize(),i.pagination&&this.modExists("page",!0)&&o.page.initialize(),i.groupBy&&this.modExists("groupRows",!0)&&o.groupRows.initialize(),this.modExists("keybindings")&&o.keybindings.initialize(),this.modExists("selectRow")&&o.selectRow.clearSelectionData(!0),i.autoResize&&this.modExists("resizeTable")&&o.resizeTable.initialize(),this.modExists("clipboard")&&o.clipboard.initialize(),i.printAsHtml&&this.modExists("print")&&o.print.initialize(),i.tableBuilt.call(this)},u.prototype._loadInitialData=function(){var t=this;t.options.pagination&&t.modExists("page")?(t.modules.page.reset(!0),"local"==t.options.pagination?t.options.data.length?t.rowManager.setData(t.options.data):(t.options.ajaxURL||t.options.ajaxURLGenerator)&&t.modExists("ajax")?t.modules.ajax.loadData().then(function(){}).catch(function(){}):t.rowManager.setData(t.options.data):t.options.ajaxURL?t.modules.page.setPage(1).then(function(){}).catch(function(){}):t.rowManager.setData([])):t.options.data.length?t.rowManager.setData(t.options.data):(t.options.ajaxURL||t.options.ajaxURLGenerator)&&t.modExists("ajax")?t.modules.ajax.loadData().then(function(){}).catch(function(){}):t.rowManager.setData(t.options.data)},u.prototype.destroy=function(){var t=this.element;for(u.prototype.comms.deregister(this),this.options.reactiveData&&this.modExists("reactiveData",!0)&&this.modules.reactiveData.unwatchData(),this.rowManager.rows.forEach(function(t){t.wipe()}),this.rowManager.rows=[],this.rowManager.activeRows=[],this.rowManager.displayRows=[],this.options.autoResize&&this.modExists("resizeTable")&&this.modules.resizeTable.clearBindings(),this.modExists("keybindings")&&this.modules.keybindings.clearBindings();t.firstChild;)t.removeChild(t.firstChild);t.classList.remove("tabulator")},u.prototype._detectBrowser=function(){var t=navigator.userAgent;t.indexOf("Trident")>-1?(this.browser="ie",this.browserSlow=!0):t.indexOf("Edge")>-1?(this.browser="edge",this.browserSlow=!0):t.indexOf("Firefox")>-1?(this.browser="firefox",this.browserSlow=!1):(this.browser="other",this.browserSlow=!1)},u.prototype.setDataFromLocalFile=function(t){var e=this;return new Promise(function(o,i){var n=document.createElement("input");n.type="file",n.accept=t||".json,application/json",n.addEventListener("change",function(t){var s,r=n.files[0],a=new FileReader;a.readAsText(r),a.onload=function(t){try{s=JSON.parse(a.result)}catch(t){return console.warn("File Load Error - File contents is invalid JSON",t),void i(t)}e._setData(s).then(function(t){o(t)}).catch(function(t){o(t)})},a.onerror=function(t){console.warn("File Load Error - Unable to read file"),i()}}),n.click()})},u.prototype.setData=function(t,e,o){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(t,e,o)},u.prototype._setData=function(t,e,o,i){var n=this;return"string"!=typeof t?t?n.rowManager.setData(t,i):n.modExists("ajax")&&(n.modules.ajax.getUrl||n.options.ajaxURLGenerator)?"remote"==n.options.pagination&&n.modExists("page",!0)?(n.modules.page.reset(!0),n.modules.page.setPage(1)):n.modules.ajax.loadData(i):n.rowManager.setData([],i):0==t.indexOf("{")||0==t.indexOf("[")?n.rowManager.setData(JSON.parse(t),i):n.modExists("ajax",!0)?(e&&n.modules.ajax.setParams(e),o&&n.modules.ajax.setConfig(o),n.modules.ajax.setUrl(t),"remote"==n.options.pagination&&n.modExists("page",!0)?(n.modules.page.reset(!0),n.modules.page.setPage(1)):n.modules.ajax.loadData(i)):void 0},u.prototype.clearData=function(){this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this.rowManager.clearData()},u.prototype.getData=function(t){return this.rowManager.getData(t)},u.prototype.getDataCount=function(t){return this.rowManager.getDataCount(t)},u.prototype.searchRows=function(t,e,o){if(this.modExists("filter",!0))return this.modules.filter.search("rows",t,e,o)},u.prototype.searchData=function(t,e,o){if(this.modExists("filter",!0))return this.modules.filter.search("data",t,e,o)},u.prototype.getHtml=function(t,e,o){if(this.modExists("htmlTableExport",!0))return this.modules.htmlTableExport.getHtml(t,e,o)},u.prototype.print=function(t,e,o){if(this.modExists("print",!0))return this.modules.print.printFullscreen(t,e,o)},u.prototype.getAjaxUrl=function(){if(this.modExists("ajax",!0))return this.modules.ajax.getUrl()},u.prototype.replaceData=function(t,e,o){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(t,e,o,!0)},u.prototype.updateData=function(t){var e=this,o=this,i=0;return new Promise(function(n,s){e.modExists("ajax")&&e.modules.ajax.blockActiveRequest(),"string"==typeof t&&(t=JSON.parse(t)),t?t.forEach(function(t){var e=o.rowManager.findRow(t[o.options.index]);e&&(i++,e.updateData(t).then(function(){--i||n()}))}):(console.warn("Update Error - No data provided"),s("Update Error - No data provided"))})},u.prototype.addData=function(t,e,o){var i=this;return new Promise(function(n,s){i.modExists("ajax")&&i.modules.ajax.blockActiveRequest(),"string"==typeof t&&(t=JSON.parse(t)),t?i.rowManager.addRows(t,e,o).then(function(t){var e=[];t.forEach(function(t){e.push(t.getComponent())}),n(e)}):(console.warn("Update Error - No data provided"),s("Update Error - No data provided"))})},u.prototype.updateOrAddData=function(t){var e=this,o=this,i=[],n=0;return new Promise(function(s,r){e.modExists("ajax")&&e.modules.ajax.blockActiveRequest(),"string"==typeof t&&(t=JSON.parse(t)),t?t.forEach(function(t){var e=o.rowManager.findRow(t[o.options.index]);n++,e?e.updateData(t).then(function(){n--,i.push(e.getComponent()),n||s(i)}):o.rowManager.addRows(t).then(function(t){n--,i.push(t[0].getComponent()),n||s(i)})}):(console.warn("Update Error - No data provided"),r("Update Error - No data provided"))})},u.prototype.getRow=function(t){var e=this.rowManager.findRow(t);return e?e.getComponent():(console.warn("Find Error - No matching row found:",t),!1)},u.prototype.getRowFromPosition=function(t,e){var o=this.rowManager.getRowFromPosition(t,e);return o?o.getComponent():(console.warn("Find Error - No matching row found:",t),!1)},u.prototype.deleteRow=function(t){var e=this;return new Promise(function(o,i){var n=e.rowManager.findRow(t);n?n.delete().then(function(){o()}).catch(function(t){i(t)}):(console.warn("Delete Error - No matching row found:",t),i("Delete Error - No matching row found"))})},u.prototype.addRow=function(t,e,o){var i=this;return new Promise(function(n,s){"string"==typeof t&&(t=JSON.parse(t)),
+i.rowManager.addRows(t,e,o).then(function(t){i.modExists("columnCalcs")&&i.modules.columnCalcs.recalc(i.rowManager.activeRows),n(t[0].getComponent())})})},u.prototype.updateOrAddRow=function(t,e){var o=this;return new Promise(function(i,n){var s=o.rowManager.findRow(t);"string"==typeof e&&(e=JSON.parse(e)),s?s.updateData(e).then(function(){o.modExists("columnCalcs")&&o.modules.columnCalcs.recalc(o.rowManager.activeRows),i(s.getComponent())}).catch(function(t){n(t)}):s=o.rowManager.addRows(e).then(function(t){o.modExists("columnCalcs")&&o.modules.columnCalcs.recalc(o.rowManager.activeRows),i(t[0].getComponent())}).catch(function(t){n(t)})})},u.prototype.updateRow=function(t,e){var o=this;return new Promise(function(i,n){var s=o.rowManager.findRow(t);"string"==typeof e&&(e=JSON.parse(e)),s?s.updateData(e).then(function(){i(s.getComponent())}).catch(function(t){n(t)}):(console.warn("Update Error - No matching row found:",t),n("Update Error - No matching row found"))})},u.prototype.scrollToRow=function(t,e,o){var i=this;return new Promise(function(n,s){var r=i.rowManager.findRow(t);r?i.rowManager.scrollToRow(r,e,o).then(function(){n()}).catch(function(t){s(t)}):(console.warn("Scroll Error - No matching row found:",t),s("Scroll Error - No matching row found"))})},u.prototype.moveRow=function(t,e,o){var i=this.rowManager.findRow(t);i?i.moveToRow(e,o):console.warn("Move Error - No matching row found:",t)},u.prototype.getRows=function(t){return this.rowManager.getComponents(t)},u.prototype.getRowPosition=function(t,e){var o=this.rowManager.findRow(t);return o?this.rowManager.getRowPosition(o,e):(console.warn("Position Error - No matching row found:",t),!1)},u.prototype.copyToClipboard=function(t,e,o,i){this.modExists("clipboard",!0)&&this.modules.clipboard.copy(t,e,o,i)},u.prototype.setColumns=function(t){this.columnManager.setColumns(t)},u.prototype.getColumns=function(t){return this.columnManager.getComponents(t)},u.prototype.getColumn=function(t){var e=this.columnManager.findColumn(t);return e?e.getComponent():(console.warn("Find Error - No matching column found:",t),!1)},u.prototype.getColumnDefinitions=function(){return this.columnManager.getDefinitionTree()},u.prototype.getColumnLayout=function(){if(this.modExists("persistence",!0))return this.modules.persistence.parseColumns(this.columnManager.getColumns())},u.prototype.setColumnLayout=function(t){return!!this.modExists("persistence",!0)&&(this.columnManager.setColumns(this.modules.persistence.mergeDefinition(this.options.columns,t)),!0)},u.prototype.showColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Show Error - No matching column found:",t),!1;e.show(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},u.prototype.hideColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Hide Error - No matching column found:",t),!1;e.hide(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},u.prototype.toggleColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Visibility Toggle Error - No matching column found:",t),!1;e.visible?e.hide():e.show()},u.prototype.addColumn=function(t,e,o){var i=this.columnManager.findColumn(o);this.columnManager.addColumn(t,e,i)},u.prototype.deleteColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Delete Error - No matching column found:",t),!1;e.delete()},u.prototype.moveColumn=function(t,e,o){var i=this.columnManager.findColumn(t),n=this.columnManager.findColumn(e);i?n?this.columnManager.moveColumn(i,n,o):console.warn("Move Error - No matching column found:",n):console.warn("Move Error - No matching column found:",t)},u.prototype.scrollToColumn=function(t,e,o){var i=this;return new Promise(function(n,s){var r=i.columnManager.findColumn(t);r?i.columnManager.scrollToColumn(r,e,o).then(function(){n()}).catch(function(t){s(t)}):(console.warn("Scroll Error - No matching column found:",t),s("Scroll Error - No matching column found"))})},u.prototype.setLocale=function(t){this.modules.localize.setLocale(t)},u.prototype.getLocale=function(){return this.modules.localize.getLocale()},u.prototype.getLang=function(t){return this.modules.localize.getLang(t)},u.prototype.redraw=function(t){this.columnManager.redraw(t),this.rowManager.redraw(t)},u.prototype.setHeight=function(t){"classic"!==this.rowManager.renderMode?(this.options.height=isNaN(t)?t:t+"px",this.element.style.height=this.options.height,this.rowManager.redraw()):console.warn("setHeight function is not available in classic render mode")},u.prototype.setSort=function(t,e){this.modExists("sort",!0)&&(this.modules.sort.setSort(t,e),this.rowManager.sorterRefresh())},u.prototype.getSorters=function(){if(this.modExists("sort",!0))return this.modules.sort.getSort()},u.prototype.clearSort=function(){this.modExists("sort",!0)&&(this.modules.sort.clear(),this.rowManager.sorterRefresh())},u.prototype.setFilter=function(t,e,o){this.modExists("filter",!0)&&(this.modules.filter.setFilter(t,e,o),this.rowManager.filterRefresh())},u.prototype.addFilter=function(t,e,o){this.modExists("filter",!0)&&(this.modules.filter.addFilter(t,e,o),this.rowManager.filterRefresh())},u.prototype.getFilters=function(t){if(this.modExists("filter",!0))return this.modules.filter.getFilters(t)},u.prototype.setHeaderFilterFocus=function(t){if(this.modExists("filter",!0)){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Filter Focus Error - No matching column found:",t),!1;this.modules.filter.setHeaderFilterFocus(e)}},u.prototype.setHeaderFilterValue=function(t,e){if(this.modExists("filter",!0)){var o=this.columnManager.findColumn(t);if(!o)return console.warn("Column Filter Error - No matching column found:",t),!1;this.modules.filter.setHeaderFilterValue(o,e)}},u.prototype.getHeaderFilters=function(){if(this.modExists("filter",!0))return this.modules.filter.getHeaderFilters()},u.prototype.removeFilter=function(t,e,o){this.modExists("filter",!0)&&(this.modules.filter.removeFilter(t,e,o),this.rowManager.filterRefresh())},u.prototype.clearFilter=function(t){this.modExists("filter",!0)&&(this.modules.filter.clearFilter(t),this.rowManager.filterRefresh())},u.prototype.clearHeaderFilter=function(){this.modExists("filter",!0)&&(this.modules.filter.clearHeaderFilter(),this.rowManager.filterRefresh())},u.prototype.selectRow=function(t){this.modExists("selectRow",!0)&&this.modules.selectRow.selectRows(t)},u.prototype.deselectRow=function(t){this.modExists("selectRow",!0)&&this.modules.selectRow.deselectRows(t)},u.prototype.toggleSelectRow=function(t){this.modExists("selectRow",!0)&&this.modules.selectRow.toggleRow(t)},u.prototype.getSelectedRows=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedRows()},u.prototype.getSelectedData=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedData()},u.prototype.setMaxPage=function(t){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setMaxPage(t)},u.prototype.setPage=function(t){return this.options.pagination&&this.modExists("page")?this.modules.page.setPage(t):new Promise(function(t,e){e()})},u.prototype.setPageToRow=function(t){var e=this;return new Promise(function(o,i){e.options.pagination&&e.modExists("page")?(t=e.rowManager.findRow(t),t?e.modules.page.setPageToRow(t).then(function(){o()}).catch(function(){i()}):i()):i()})},u.prototype.setPageSize=function(t){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setPageSize(t),this.modules.page.setPage(1).then(function(){}).catch(function(){})},u.prototype.getPageSize=function(){if(this.options.pagination&&this.modExists("page",!0))return this.modules.page.getPageSize()},u.prototype.previousPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.previousPage()},u.prototype.nextPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.nextPage()},u.prototype.getPage=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPage()},u.prototype.getPageMax=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPageMax()},u.prototype.setGroupBy=function(t){if(!this.modExists("groupRows",!0))return!1;this.options.groupBy=t,this.modules.groupRows.initialize(),this.rowManager.refreshActiveData("display")},u.prototype.setGroupStartOpen=function(t){if(!this.modExists("groupRows",!0))return!1;this.options.groupStartOpen=t,this.modules.groupRows.initialize(),this.options.groupBy?this.rowManager.refreshActiveData("group"):console.warn("Grouping Update - cant refresh view, no groups have been set")},u.prototype.setGroupHeader=function(t){if(!this.modExists("groupRows",!0))return!1;this.options.groupHeader=t,this.modules.groupRows.initialize(),this.options.groupBy?this.rowManager.refreshActiveData("group"):console.warn("Grouping Update - cant refresh view, no groups have been set")},u.prototype.getGroups=function(t){return!!this.modExists("groupRows",!0)&&this.modules.groupRows.getGroups(!0)},u.prototype.getGroupedData=function(){if(this.modExists("groupRows",!0))return this.options.groupBy?this.modules.groupRows.getGroupedData():this.getData()},u.prototype.getCalcResults=function(){return!!this.modExists("columnCalcs",!0)&&this.modules.columnCalcs.getResults()},u.prototype.navigatePrev=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&t.nav().prev()},u.prototype.navigateNext=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&t.nav().next()},u.prototype.navigateLeft=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().left())},u.prototype.navigateRight=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().right())},u.prototype.navigateUp=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().up())},u.prototype.navigateDown=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().down())},u.prototype.undo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.undo()},u.prototype.redo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.redo()},u.prototype.getHistoryUndoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryUndoSize()},u.prototype.getHistoryRedoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryRedoSize()},u.prototype.download=function(t,e,o){this.modExists("download",!0)&&this.modules.download.download(t,e,o)},u.prototype.downloadToTab=function(t,e,o){this.modExists("download",!0)&&this.modules.download.download(t,e,o,!0)},u.prototype.tableComms=function(t,e,o,i){this.modules.comms.receive(t,e,o,i)},u.prototype.moduleBindings={},u.prototype.extendModule=function(t,e,o){if(u.prototype.moduleBindings[t]){var i=u.prototype.moduleBindings[t].prototype[e];if(i)if("object"==(void 0===o?"undefined":_typeof(o)))for(var n in o)i[n]=o[n];else console.warn("Module Error - Invalid value type, it must be an object");else console.warn("Module Error - property does not exist:",e)}else console.warn("Module Error - module does not exist:",t)},u.prototype.registerModule=function(t,e){u.prototype.moduleBindings[t]=e},u.prototype.bindModules=function(){this.modules={};for(var t in u.prototype.moduleBindings)this.modules[t]=new u.prototype.moduleBindings[t](this)},u.prototype.modExists=function(t,e){return!!this.modules[t]||(e&&console.error("Tabulator Module Not Installed: "+t),!1)},u.prototype.helpers={elVisible:function(t){return!(t.offsetWidth<=0&&t.offsetHeight<=0)},elOffset:function(t){var e=t.getBoundingClientRect();return{top:e.top+window.pageYOffset-document.documentElement.clientTop,left:e.left+window.pageXOffset-document.documentElement.clientLeft}},deepClone:function(t){var e=Array.isArray(t)?[]:{};for(var o in t)null!=t[o]&&"object"===_typeof(t[o])?t[o]instanceof Date?e[o]=new Date(t[o]):e[o]=this.deepClone(t[o]):e[o]=t[o];return e}},u.prototype.comms={tables:[],register:function(t){u.prototype.comms.tables.push(t)},deregister:function(t){var e=u.prototype.comms.tables.indexOf(t);e>-1&&u.prototype.comms.tables.splice(e,1)},lookupTable:function(t){var e,o,i=[];if("string"==typeof t){if(e=document.querySelectorAll(t),e.length)for(var n=0;n<e.length;n++)(o=u.prototype.comms.matchElement(e[n]))&&i.push(o)}else"undefined"!=typeof HTMLElement&&t instanceof HTMLElement||t instanceof u?(o=u.prototype.comms.matchElement(t))&&i.push(o):Array.isArray(t)?t.forEach(function(t){i=i.concat(u.prototype.comms.lookupTable(t))}):console.warn("Table Connection Error - Invalid Selector",t);return i},matchElement:function(t){return u.prototype.comms.tables.find(function(e){return t instanceof u?e===t:e.element===t})}};var d=function(t){this.table=t,this.mode=null};d.prototype.initialize=function(t){this.modes[t]?this.mode=t:(console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : "+t),this.mode="fitData"),this.table.element.setAttribute("tabulator-layout",this.mode)},d.prototype.getMode=function(){return this.mode},d.prototype.layout=function(){this.modes[this.mode].call(this,this.table.columnManager.columnsByIndex)},d.prototype.modes={fitData:function(t){t.forEach(function(t){t.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataFill:function(t){t.forEach(function(t){t.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitColumns:function(t){function e(t){return"string"==typeof t?t.indexOf("%")>-1?n/100*parseInt(t):parseInt(t):t}function o(t,i,n,s){function r(t){return n*(t.column.definition.widthGrow||1)}function a(t){return e(t.width)-n*(t.column.definition.widthShrink||0)}var l=[],c=0,u=0,d=0,h=0,p=0,m=[];return t.forEach(function(t,e){var o=s?a(t):r(t);t.column.minWidth>=o?l.push(t):(m.push(t),p+=s?t.column.definition.widthShrink||1:t.column.definition.widthGrow||1)}),l.length?(l.forEach(function(t){c+=s?t.width-t.column.minWidth:t.column.minWidth,t.width=t.column.minWidth}),u=i-c,d=p?Math.floor(u/p):u,h=u-d*p,h+=o(m,u,d,s)):(h=p?i-Math.floor(i/p)*p:i,m.forEach(function(t){t.width=s?a(t):r(t)})),h}var i=this,n=i.table.element.clientWidth,s=0,r=0,a=0,l=0,c=[],u=[],d=0,h=0,p=0;this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.rowManager.element.scrollHeight>this.table.rowManager.element.clientHeight&&(n-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),t.forEach(function(t){var o,i,n;t.visible&&(o=t.definition.width,i=parseInt(t.minWidth),o?(n=e(o),s+=n>i?n:i,t.definition.widthShrink&&(u.push({column:t,width:n>i?n:i}),d+=t.definition.widthShrink)):(c.push({column:t,width:0}),a+=t.definition.widthGrow||1))}),r=n-s,l=Math.floor(r/a);var p=o(c,r,l,!1);c.length&&p>0&&(c[c.length-1].width+=+p),c.forEach(function(t){r-=t.width}),h=Math.abs(p)+r,h>0&&d&&(p=o(u,h,Math.floor(h/d),!0)),u.length&&(u[u.length-1].width-=p),c.forEach(function(t){t.column.setWidth(t.width)}),u.forEach(function(t){t.column.setWidth(t.width)})}},u.prototype.registerModule("layout",d);var h=function(t){this.table=t,this.locale="default",this.lang=!1,this.bindings={}};h.prototype.setHeaderFilterPlaceholder=function(t){this.langs.default.headerFilters.default=t},h.prototype.setHeaderFilterColumnPlaceholder=function(t,e){this.langs.default.headerFilters.columns[t]=e,this.lang&&!this.lang.headerFilters.columns[t]&&(this.lang.headerFilters.columns[t]=e)},h.prototype.installLang=function(t,e){this.langs[t]?this._setLangProp(this.langs[t],e):this.langs[t]=e},h.prototype._setLangProp=function(t,e){for(var o in e)t[o]&&"object"==_typeof(t[o])?this._setLangProp(t[o],e[o]):t[o]=e[o]},h.prototype.setLocale=function(t){function e(t,o){for(var i in t)"object"==_typeof(t[i])?(o[i]||(o[i]={}),e(t[i],o[i])):o[i]=t[i]}var o=this;if(t=t||"default",!0===t&&navigator.language&&(t=navigator.language.toLowerCase()),t&&!o.langs[t]){var i=t.split("-")[0];o.langs[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")}o.locale=t,o.lang=u.prototype.helpers.deepClone(o.langs.default||{}),"default"!=t&&e(o.langs[t],o.lang),o.table.options.localized.call(o.table,o.locale,o.lang),o._executeBindings()},h.prototype.getLocale=function(t){return self.locale},h.prototype.getLang=function(t){return t?this.langs[t]:this.lang},h.prototype.getText=function(t,e){var t=e?t+"|"+e:t,o=t.split("|");return this._getLangElement(o,this.locale)||""},h.prototype._getLangElement=function(t,e){var o=this,i=o.lang;return t.forEach(function(t){var e;i&&(e=i[t],i=void 0!==e&&e)}),i},h.prototype.bind=function(t,e){this.bindings[t]||(this.bindings[t]=[]),this.bindings[t].push(e),e(this.getText(t),this.lang)},h.prototype._executeBindings=function(){var t=this;for(var e in t.bindings)!function(e){t.bindings[e].forEach(function(o){o(t.getText(e),t.lang)})}(e)},h.prototype.langs={default:{groups:{item:"item",items:"items"},columns:{},ajax:{loading:"Loading",error:"Error"},pagination:{page_size:"Page Size",first:"First",first_title:"First Page",last:"Last",last_title:"Last Page",prev:"Prev",prev_title:"Prev Page",next:"Next",next_title:"Next Page"},headerFilters:{default:"filter column...",columns:{}}}},u.prototype.registerModule("localize",h);var p=function(t){this.table=t};p.prototype.getConnections=function(t){var e,o=this,i=[];return e=u.prototype.comms.lookupTable(t),e.forEach(function(t){o.table!==t&&i.push(t)}),i},p.prototype.send=function(t,e,o,i){var n=this,s=this.getConnections(t);s.forEach(function(t){t.tableComms(n.table.element,e,o,i)}),!s.length&&t&&console.warn("Table Connection Error - No tables matching selector found",t)},p.prototype.receive=function(t,e,o,i){if(this.table.modExists(e))return this.table.modules[e].commsReceived(t,o,i);console.warn("Inter-table Comms Error - no such module:",e)},u.prototype.registerModule("comms",p);var m=function(t){this.table=t,this.allowedTypes=["","data","download","clipboard"]};m.prototype.initializeColumn=function(t){var e=this,o=!1,i={};this.allowedTypes.forEach(function(n){var s,r="accessor"+(n.charAt(0).toUpperCase()+n.slice(1));t.definition[r]&&(s=e.lookupAccessor(t.definition[r]))&&(o=!0,i[r]={accessor:s,params:t.definition[r+"Params"]||{}})}),o&&(t.modules.accessor=i)},m.prototype.lookupAccessor=function(t){var e=!1;switch(void 0===t?"undefined":_typeof(t)){case"string":this.accessors[t]?e=this.accessors[t]:console.warn("Accessor Error - No such accessor found, ignoring: ",t);break;case"function":e=t}return e},m.prototype.transformRow=function(t,e){var o=this,i="accessor"+(e.charAt(0).toUpperCase()+e.slice(1)),n=u.prototype.helpers.deepClone(t||{});return o.table.columnManager.traverse(function(t){var o,s,r,a;t.modules.accessor&&(s=t.modules.accessor[i]||t.modules.accessor.accessor||!1)&&"undefined"!=(o=t.getFieldValue(n))&&(a=t.getComponent(),r="function"==typeof s.params?s.params(o,n,e,a):s.params,t.setFieldValue(n,s.accessor(o,n,e,r,a)))}),n},m.prototype.accessors={},u.prototype.registerModule("accessor",m);var f=function(t){this.table=t,this.config=!1,this.url="",this.urlGenerator=!1,this.params=!1,this.loaderElement=this.createLoaderElement(),this.msgElement=this.createMsgElement(),this.loadingElement=!1,this.errorElement=!1,this.loaderPromise=!1,this.progressiveLoad=!1,this.loading=!1,this.requestOrder=0};f.prototype.initialize=function(){var t;this.loaderElement.appendChild(this.msgElement),this.table.options.ajaxLoaderLoading&&("string"==typeof this.table.options.ajaxLoaderLoading?(t=document.createElement("template"),t.innerHTML=this.table.options.ajaxLoaderLoading.trim(),this.loadingElement=t.content.firstChild):this.loadingElement=this.table.options.ajaxLoaderLoading),this.loaderPromise=this.table.options.ajaxRequestFunc||this.defaultLoaderPromise,this.urlGenerator=this.table.options.ajaxURLGenerator||this.defaultURLGenerator,this.table.options.ajaxLoaderError&&("string"==typeof this.table.options.ajaxLoaderError?(t=document.createElement("template"),t.innerHTML=this.table.options.ajaxLoaderError.trim(),this.errorElement=t.content.firstChild):this.errorElement=this.table.options.ajaxLoaderError),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.table.options.ajaxProgressiveLoad&&(this.table.options.pagination?(this.progressiveLoad=!1,console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time")):this.table.modExists("page")?(this.progressiveLoad=this.table.options.ajaxProgressiveLoad,this.table.modules.page.initializeProgressive(this.progressiveLoad)):console.error("Pagination plugin is required for progressive ajax loading"))},f.prototype.createLoaderElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-loader"),t},f.prototype.createMsgElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-loader-msg"),t.setAttribute("role","alert"),t},f.prototype.setParams=function(t,e){if(e){this.params=this.params||{};for(var o in t)this.params[o]=t[o]}else this.params=t},f.prototype.getParams=function(){return this.params||{}},f.prototype.setConfig=function(t){if(this._loadDefaultConfig(),"string"==typeof t)this.config.method=t;else for(var e in t)this.config[e]=t[e]},f.prototype._loadDefaultConfig=function(t){var e=this;if(!e.config||t){e.config={};for(var o in e.defaultConfig)e.config[o]=e.defaultConfig[o]}},f.prototype.setUrl=function(t){this.url=t},f.prototype.getUrl=function(){return this.url},f.prototype.loadData=function(t){return this.progressiveLoad?this._loadDataProgressive():this._loadDataStandard(t)},f.prototype.nextPage=function(t){var e;this.loading||(e=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.getElement().clientHeight,t<e&&this.table.modules.page.nextPage().then(function(){}).catch(function(){}))},f.prototype.blockActiveRequest=function(){this.requestOrder++},f.prototype._loadDataProgressive=function(){return this.table.rowManager.setData([]),this.table.modules.page.setPage(1)},f.prototype._loadDataStandard=function(t){var e=this;return new Promise(function(o,i){e.sendRequest(t).then(function(n){e.table.rowManager.setData(n,t).then(function(){o()}).catch(function(t){i(t)})}).catch(function(t){i(t)})})},f.prototype.generateParamsList=function(t,e){var o=this,i=[];if(e=e||"",Array.isArray(t))t.forEach(function(t,n){i=i.concat(o.generateParamsList(t,e?e+"["+n+"]":n))});else if("object"===(void 0===t?"undefined":_typeof(t)))for(var n in t)i=i.concat(o.generateParamsList(t[n],e?e+"["+n+"]":n));else i.push({key:e,value:t});return i},f.prototype.serializeParams=function(t){var e=this.generateParamsList(t),o=[];return e.forEach(function(t){o.push(encodeURIComponent(t.key)+"="+encodeURIComponent(t.value))}),o.join("&")},f.prototype.sendRequest=function(t){var e,o=this,i=this,n=i.url;return i.requestOrder++,e=i.requestOrder,i._loadDefaultConfig(),new Promise(function(s,r){!1!==i.table.options.ajaxRequesting.call(o.table,i.url,i.params)?(i.loading=!0,t||i.showLoader(),o.loaderPromise(n,i.config,i.params).then(function(t){e===i.requestOrder?(i.table.options.ajaxResponse&&(t=i.table.options.ajaxResponse.call(i.table,i.url,i.params,t)),s(t)):console.warn("Ajax Response Blocked - An active ajax request was blocked by an attempt to change table data while the request was being made"),i.hideLoader(),i.loading=!1}).catch(function(t){console.error("Ajax Load Error: ",t),i.table.options.ajaxError.call(i.table,t),i.showError(),setTimeout(function(){i.hideLoader()},3e3),i.loading=!1,r()})):r()})},f.prototype.showLoader=function(){if("function"==typeof this.table.options.ajaxLoader?this.table.options.ajaxLoader():this.table.options.ajaxLoader){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.table.modules.localize.getText("ajax|loading"),this.table.element.appendChild(this.loaderElement)}},f.prototype.showError=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.table.modules.localize.getText("ajax|error"),this.table.element.appendChild(this.loaderElement)},f.prototype.hideLoader=function(){this.loaderElement.parentNode&&this.loaderElement.parentNode.removeChild(this.loaderElement)},f.prototype.defaultConfig={method:"GET"},f.prototype.defaultURLGenerator=function(t,e,o){return t&&o&&Object.keys(o).length&&(e.method&&"get"!=e.method.toLowerCase()||(e.method="get",t+="?"+this.serializeParams(o))),t},f.prototype.defaultLoaderPromise=function(t,e,o){var i,n=this;return new Promise(function(s,r){if(t=n.urlGenerator(t,e,o),"GET"!=e.method.toUpperCase())if(i="object"===_typeof(n.table.options.ajaxContentType)?n.table.options.ajaxContentType:n.contentTypeFormatters[n.table.options.ajaxContentType]){for(var a in i.headers)e.headers||(e.headers={}),void 0===e.headers[a]&&(e.headers[a]=i.headers[a]);e.body=i.body.call(n,t,e,o)}else console.warn("Ajax Error - Invalid ajaxContentType value:",n.table.options.ajaxContentType);t?(void 0===e.headers&&(e.headers={}),void 0===e.headers.Accept&&(e.headers.Accept="application/json"),void 0===e.headers["X-Requested-With"]&&(e.headers["X-Requested-With"]="XMLHttpRequest"),void 0===e.mode&&(e.mode="cors"),"cors"==e.mode?(void 0===e.headers["Access-Control-Allow-Origin"]&&(e.headers["Access-Control-Allow-Origin"]=window.location.origin),void 0===e.credentials&&(e.credentials="same-origin")):void 0===e.credentials&&(e.credentials="include"),fetch(t,e).then(function(t){t.ok?t.json().then(function(t){s(t)}).catch(function(t){r(t),console.warn("Ajax Load Error - Invalid JSON returned",t)}):(console.error("Ajax Load Error - Connection Error: "+t.status,t.statusText),r(t))}).catch(function(t){console.error("Ajax Load Error - Connection Error: ",t),r(t)})):(console.warn("Ajax Load Error - No URL Set"),s([]))})},f.prototype.contentTypeFormatters={json:{headers:{"Content-Type":"application/json"},body:function(t,e,o){return JSON.stringify(o)}},form:{headers:{},body:function(t,e,o){var i=this.generateParamsList(o),n=new FormData;return i.forEach(function(t){n.append(t.key,t.value)}),n}}},u.prototype.registerModule("ajax",f);var g=function(t){this.table=t,this.topCalcs=[],this.botCalcs=[],this.genColumn=!1,this.topElement=this.createElement(),this.botElement=this.createElement(),this.topRow=!1,this.botRow=!1,this.topInitialized=!1,this.botInitialized=!1,this.initialize()};g.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-calcs-holder"),t},g.prototype.initialize=function(){this.genColumn=new i({field:"value"},this)},g.prototype.registerColumnField=function(){},g.prototype.initializeColumn=function(t){var e=t.definition,o={topCalcParams:e.topCalcParams||{},botCalcParams:e.bottomCalcParams||{}};if(e.topCalc){switch(_typeof(e.topCalc)){case"string":this.calculations[e.topCalc]?o.topCalc=this.calculations[e.topCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",e.topCalc);break;case"function":o.topCalc=e.topCalc}o.topCalc&&(t.modules.columnCalcs=o,this.topCalcs.push(t),"group"!=this.table.options.columnCalcs&&this.initializeTopRow())}if(e.bottomCalc){switch(_typeof(e.bottomCalc)){case"string":this.calculations[e.bottomCalc]?o.botCalc=this.calculations[e.bottomCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",e.bottomCalc);break;case"function":o.botCalc=e.bottomCalc}o.botCalc&&(t.modules.columnCalcs=o,this.botCalcs.push(t),"group"!=this.table.options.columnCalcs&&this.initializeBottomRow())}},g.prototype.removeCalcs=function(){var t=!1;this.topInitialized&&(this.topInitialized=!1,this.topElement.parentNode.removeChild(this.topElement),t=!0),this.botInitialized&&(this.botInitialized=!1,this.table.footerManager.remove(this.botElement),t=!0),t&&this.table.rowManager.adjustTableSize()},g.prototype.initializeTopRow=function(){this.topInitialized||(this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling),this.topInitialized=!0)},g.prototype.initializeBottomRow=function(){this.botInitialized||(this.table.footerManager.prepend(this.botElement),this.botInitialized=!0)},g.prototype.scrollHorizontal=function(t){this.table.columnManager.getElement().scrollWidth,this.table.element.clientWidth;this.botInitialized&&(this.botRow.getElement().style.marginLeft=-t+"px")},g.prototype.recalc=function(t){var e;if(this.topInitialized||this.botInitialized){if(this.rowsToData(t),this.topInitialized){for(this.topRow&&this.topRow.deleteCells(),e=this.generateRow("top",this.rowsToData(t)),this.topRow=e;this.topElement.firstChild;)this.topElement.removeChild(this.topElement.firstChild);this.topElement.appendChild(e.getElement()),e.initialize(!0)}if(this.botInitialized){for(this.botRow&&this.botRow.deleteCells(),e=this.generateRow("bottom",this.rowsToData(t)),this.botRow=e;this.botElement.firstChild;)this.botElement.removeChild(this.botElement.firstChild);this.botElement.appendChild(e.getElement()),e.initialize(!0)}this.table.rowManager.adjustTableSize(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()}},g.prototype.recalcRowGroup=function(t){this.recalcGroup(this.table.modules.groupRows.getRowGroup(t))},g.prototype.recalcGroup=function(t){var e,o;t&&t.calcs&&(t.calcs.bottom&&(e=this.rowsToData(t.rows),o=this.generateRowData("bottom",e),t.calcs.bottom.updateData(o),t.calcs.bottom.reinitialize()),t.calcs.top&&(e=this.rowsToData(t.rows),o=this.generateRowData("top",e),t.calcs.top.updateData(o),t.calcs.top.reinitialize()))},g.prototype.generateTopRow=function(t){return this.generateRow("top",this.rowsToData(t))},g.prototype.generateBottomRow=function(t){return this.generateRow("bottom",this.rowsToData(t))},g.prototype.rowsToData=function(t){var e=[];return t.forEach(function(t){e.push(t.getData())}),e},g.prototype.generateRow=function(t,e){var o,i=this,n=this.generateRowData(t,e);return i.table.modExists("mutator")&&i.table.modules.mutator.disable(),o=new r(n,this),i.table.modExists("mutator")&&i.table.modules.mutator.enable(),o.getElement().classList.add("tabulator-calcs","tabulator-calcs-"+t),o.type="calc",o.generateCells=function(){var e=[];i.table.columnManager.columnsByIndex.forEach(function(n){i.genColumn.setField(n.getField()),i.genColumn.hozAlign=n.hozAlign,n.definition[t+"CalcFormatter"]&&i.table.modExists("format")?i.genColumn.modules.format={formatter:i.table.modules.format.getFormatter(n.definition[t+"CalcFormatter"]),params:n.definition[t+"CalcFormatterParams"]
+}:i.genColumn.modules.format={formatter:i.table.modules.format.getFormatter("plaintext"),params:{}},i.genColumn.definition.cssClass=n.definition.cssClass;var s=new l(i.genColumn,o);s.column=n,s.setWidth(),n.cells.push(s),e.push(s),n.visible||s.hide()}),this.cells=e},o},g.prototype.generateRowData=function(t,e){var o,i,n={},s="top"==t?this.topCalcs:this.botCalcs,r="top"==t?"topCalc":"botCalc";return s.forEach(function(t){var s=[];t.modules.columnCalcs&&t.modules.columnCalcs[r]&&(e.forEach(function(e){s.push(t.getFieldValue(e))}),i=r+"Params",o="function"==typeof t.modules.columnCalcs[i]?t.modules.columnCalcs[i](s,e):t.modules.columnCalcs[i],t.setFieldValue(n,t.modules.columnCalcs[r](s,e,o)))}),n},g.prototype.hasTopCalcs=function(){return!!this.topCalcs.length},g.prototype.hasBottomCalcs=function(){return!!this.botCalcs.length},g.prototype.redraw=function(){this.topRow&&this.topRow.normalizeHeight(!0),this.botRow&&this.botRow.normalizeHeight(!0)},g.prototype.getResults=function(){var t,e=this,o={};return this.table.options.groupBy&&this.table.modExists("groupRows")?(t=this.table.modules.groupRows.getGroups(!0),t.forEach(function(t){o[t.getKey()]=e.getGroupResults(t)})):o={top:this.topRow?this.topRow.getData():{},bottom:this.botRow?this.botRow.getData():{}},o},g.prototype.getGroupResults=function(t){var e=this,o=t._getSelf(),i=t.getSubGroups(),n={};return i.forEach(function(t){n[t.getKey()]=e.getGroupResults(t)}),{top:o.calcs.top?o.calcs.top.getData():{},bottom:o.calcs.bottom?o.calcs.bottom.getData():{},groups:n}},g.prototype.calculations={avg:function(t,e,o){var i=0,n=void 0!==o.precision?o.precision:2;return t.length&&(i=t.reduce(function(t,e){return e=Number(e),t+e}),i/=t.length,i=!1!==n?i.toFixed(n):i),parseFloat(i).toString()},max:function(t,e,o){var i=null,n=void 0!==o.precision&&o.precision;return t.forEach(function(t){((t=Number(t))>i||null===i)&&(i=t)}),null!==i?!1!==n?i.toFixed(n):i:""},min:function(t,e,o){var i=null,n=void 0!==o.precision&&o.precision;return t.forEach(function(t){((t=Number(t))<i||null===i)&&(i=t)}),null!==i?!1!==n?i.toFixed(n):i:""},sum:function(t,e,o){var i=0,n=void 0!==o.precision&&o.precision;return t.length&&t.forEach(function(t){t=Number(t),i+=isNaN(t)?0:Number(t)}),!1!==n?i.toFixed(n):i},concat:function(t,e,o){var i=0;return t.length&&(i=t.reduce(function(t,e){return String(t)+String(e)})),i},count:function(t,e,o){var i=0;return t.length&&t.forEach(function(t){t&&i++}),i}},u.prototype.registerModule("columnCalcs",g);var b=function(t){this.table=t,this.mode=!0,this.copySelector=!1,this.copySelectorParams={},this.copyFormatter=!1,this.copyFormatterParams={},this.pasteParser=function(){},this.pasteAction=function(){},this.htmlElement=!1,this.config={},this.blocked=!0};b.prototype.initialize=function(){var t=this;this.mode=this.table.options.clipboard,!0!==this.mode&&"copy"!==this.mode||this.table.element.addEventListener("copy",function(e){var o;t.processConfig(),t.blocked||(e.preventDefault(),o=t.generateContent(),window.clipboardData&&window.clipboardData.setData?window.clipboardData.setData("Text",o):e.clipboardData&&e.clipboardData.setData?(e.clipboardData.setData("text/plain",o),t.htmlElement&&e.clipboardData.setData("text/html",t.htmlElement.outerHTML)):e.originalEvent&&e.originalEvent.clipboardData.setData&&(e.originalEvent.clipboardData.setData("text/plain",o),t.htmlElement&&e.originalEvent.clipboardData.setData("text/html",t.htmlElement.outerHTML)),t.table.options.clipboardCopied.call(this.table,o),t.reset())}),!0!==this.mode&&"paste"!==this.mode||this.table.element.addEventListener("paste",function(e){t.paste(e)}),this.setPasteParser(this.table.options.clipboardPasteParser),this.setPasteAction(this.table.options.clipboardPasteAction)},b.prototype.processConfig=function(){var t={columnHeaders:"groups",rowGroups:!0,columnCalcs:!0};if(void 0!==this.table.options.clipboardCopyHeader&&(t.columnHeaders=this.table.options.clipboardCopyHeader,console.warn("DEPRECATION WARNING - clipboardCopyHeader option has been deprecated, please use the columnHeaders property on the clipboardCopyConfig option")),this.table.options.clipboardCopyConfig)for(var e in this.table.options.clipboardCopyConfig)t[e]=this.table.options.clipboardCopyConfig[e];t.rowGroups&&this.table.options.groupBy&&this.table.modExists("groupRows")&&(this.config.rowGroups=!0),t.columnHeaders?"groups"!==t.columnHeaders&&!0!==t||this.table.columnManager.columns.length==this.table.columnManager.columnsByIndex.length?this.config.columnHeaders="columns":this.config.columnHeaders="groups":this.config.columnHeaders=!1,t.columnCalcs&&this.table.modExists("columnCalcs")&&(this.config.columnCalcs=!0)},b.prototype.reset=function(){this.blocked=!1,this.originalSelectionText=""},b.prototype.setPasteAction=function(t){switch(void 0===t?"undefined":_typeof(t)){case"string":this.pasteAction=this.pasteActions[t],this.pasteAction||console.warn("Clipboard Error - No such paste action found:",t);break;case"function":this.pasteAction=t}},b.prototype.setPasteParser=function(t){switch(void 0===t?"undefined":_typeof(t)){case"string":this.pasteParser=this.pasteParsers[t],this.pasteParser||console.warn("Clipboard Error - No such paste parser found:",t);break;case"function":this.pasteParser=t}},b.prototype.paste=function(t){var e,o,i;this.checkPaseOrigin(t)&&(e=this.getPasteData(t),o=this.pasteParser.call(this,e),o?(t.preventDefault(),this.table.modExists("mutator")&&(o=this.mutateData(o)),i=this.pasteAction.call(this,o),this.table.options.clipboardPasted.call(this.table,e,o,i)):this.table.options.clipboardPasteError.call(this.table,e))},b.prototype.mutateData=function(t){var e=this,o=[];return Array.isArray(t)?t.forEach(function(t){o.push(e.table.modules.mutator.transformRow(t,"clipboard"))}):o=t,o},b.prototype.checkPaseOrigin=function(t){var e=!0;return("DIV"!=t.target.tagName||this.table.modules.edit.currentCell)&&(e=!1),e},b.prototype.getPasteData=function(t){var e;return window.clipboardData&&window.clipboardData.getData?e=window.clipboardData.getData("Text"):t.clipboardData&&t.clipboardData.getData?e=t.clipboardData.getData("text/plain"):t.originalEvent&&t.originalEvent.clipboardData.getData&&(e=t.originalEvent.clipboardData.getData("text/plain")),e},b.prototype.copy=function(t,e,o,i,n){var s,r,a;this.blocked=!1,!0!==this.mode&&"copy"!==this.mode||(void 0!==window.getSelection&&void 0!==document.createRange?(s=document.createRange(),s.selectNodeContents(this.table.element),r=window.getSelection(),r.toString()&&n&&(t="userSelection",o="raw",e=r.toString()),r.removeAllRanges(),r.addRange(s)):void 0!==document.selection&&void 0!==document.body.createTextRange&&(a=document.body.createTextRange(),a.moveToElementText(this.table.element),a.select()),this.setSelector(t),this.copySelectorParams=void 0!==e&&null!=e?e:this.config.columnHeaders,this.setFormatter(o),this.copyFormatterParams=void 0!==i&&null!=i?i:{},document.execCommand("copy"),r&&r.removeAllRanges())},b.prototype.setSelector=function(t){switch(t=t||this.table.options.clipboardCopySelector,void 0===t?"undefined":_typeof(t)){case"string":this.copySelectors[t]?this.copySelector=this.copySelectors[t]:console.warn("Clipboard Error - No such selector found:",t);break;case"function":this.copySelector=t}},b.prototype.setFormatter=function(t){switch(t=t||this.table.options.clipboardCopyFormatter,void 0===t?"undefined":_typeof(t)){case"string":this.copyFormatters[t]?this.copyFormatter=this.copyFormatters[t]:console.warn("Clipboard Error - No such formatter found:",t);break;case"function":this.copyFormatter=t}},b.prototype.generateContent=function(){var t;return this.htmlElement=!1,t=this.copySelector.call(this,this.config,this.copySelectorParams),this.copyFormatter.call(this,t,this.config,this.copyFormatterParams)},b.prototype.generateSimpleHeaders=function(t){var e=[];return t.forEach(function(t){e.push(t.definition.title)}),e},b.prototype.generateColumnGroupHeaders=function(t){var e=this,o=[];return this.table.columnManager.columns.forEach(function(t){var i=e.processColumnGroup(t);i&&o.push(i)}),o},b.prototype.processColumnGroup=function(t){var e=this,o=t.columns,i={type:"group",title:t.definition.title,column:t};if(o.length){if(i.subGroups=[],i.width=0,o.forEach(function(t){var o=e.processColumnGroup(t);o&&(i.width+=o.width,i.subGroups.push(o))}),!i.width)return!1}else{if(!t.field||!(t.definition.clipboard||t.visible&&!1!==t.definition.clipboard))return!1;i.width=1}return i},b.prototype.groupHeadersToRows=function(t){function e(t,n){void 0===i[n]&&(i[n]=[]),i[n].push(t.title),t.subGroups?t.subGroups.forEach(function(t){e(t,n+1)}):o()}function o(){var t=0;i.forEach(function(e){var o=e.length;o>t&&(t=o)}),i.forEach(function(e){var o=e.length;if(o<t)for(var i=o;i<t;i++)e.push("")})}var i=[];return t.forEach(function(t){e(t,0)}),i},b.prototype.rowsToData=function(t,e,o,i){var n=[];return t.forEach(function(t){var o=[],i=t instanceof s?t.getData("clipboard"):t;e.forEach(function(t){var e=t.getFieldValue(i);switch(void 0===e?"undefined":_typeof(e)){case"object":e=JSON.stringify(e);break;case"undefined":case"null":e="";break;default:e=e}o.push(e)}),n.push(o)}),n},b.prototype.buildComplexRows=function(t){var e=this,o=[];return this.table.modules.groupRows.getGroups().forEach(function(t){o.push(e.processGroupData(t))}),o},b.prototype.processGroupData=function(t){var e=this,o=t.getSubGroups(),i={type:"group",key:t.key};return o.length?(i.subGroups=[],o.forEach(function(t){i.subGroups.push(e.processGroupData(t))})):i.rows=t.getRows(!0),i},b.prototype.getCalcRow=function(t,e,o,i){var n=t[o];return n&&(i&&(n=n[i]),Object.keys(n).length)?this.rowsToData([n],e):[]},b.prototype.buildOutput=function(t,e,o){var i,n=this,s=[],r=[];return"groups"==e.columnHeaders?(r=this.generateColumnGroupHeaders(this.table.columnManager.columns),s=s.concat(this.groupHeadersToRows(r))):(this.table.columnManager.columnsByIndex.forEach(function(t){(t.definition.clipboard||t.visible&&!1!==t.definition.clipboard)&&r.push(t)}),s.push(this.generateSimpleHeaders(r))),this.config.columnCalcs&&(i=this.table.getCalcResults()),this.table.options.clipboardCopyStyled&&this.generateHTML(t,r,i,e,o),e.rowGroups?t.forEach(function(t){s=s.concat(n.parseRowGroupData(t,r,e,o,i||{}))}):(e.columnCalcs&&(s=s.concat(this.getCalcRow(i,r,"top"))),s=s.concat(this.rowsToData(t,r,e,o)),e.columnCalcs&&(s=s.concat(this.getCalcRow(i,r,"bottom")))),s},b.prototype.parseRowGroupData=function(t,e,o,i,n){var s=this,r=[];return r.push([t.key]),t.subGroups?t.subGroups.forEach(function(e){r=r.concat(s.parseRowGroupData(e,o,i,n[t.key]?n[t.key].groups||{}:{}))}):(o.columnCalcs&&(r=r.concat(this.getCalcRow(n,e,t.key,"top"))),r=r.concat(this.rowsToData(t.rows,e,o,i)),o.columnCalcs&&(r=r.concat(this.getCalcRow(n,e,t.key,"bottom")))),r},b.prototype.generateHTML=function(t,e,o,i,n){function r(t,e){void 0===y[e]&&(y[e]=[]),y[e].push({title:t.title,width:t.width,height:1,children:!!t.subGroups,element:t.column.getElement()}),t.subGroups&&t.subGroups.forEach(function(t){r(t,e+1)})}function a(t,e,o){var i=t[e];i&&(o&&(i=i[o]),Object.keys(i).length&&l([i]))}function l(t){t.forEach(function(t,o){var i,n=document.createElement("tr"),r=m,a=!1;t instanceof s?i=t.getData("clipboard"):(i=t,a=!0),e.forEach(function(t,o){var s=document.createElement("td"),r=t.getFieldValue(i);switch(void 0===r?"undefined":_typeof(r)){case"object":r=JSON.stringify(r);break;case"undefined":case"null":r="";break;default:r=r}s.innerHTML=r,t.definition.align&&(s.style.textAlign=t.definition.align),e.length,f&&v.mapElementStyles(f,s,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size"]),n.appendChild(s)}),a?r=p:(o%2||!d||(r=d),o%2&&h&&(r=h)),r&&v.mapElementStyles(r,n,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),u.appendChild(n)})}function c(t,o){var n=document.createElement("tr"),s=document.createElement("td");s.colSpan=e.length,s.innerHTML=t.key,n.appendChild(s),u.appendChild(n),v.mapElementStyles(g,n,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),t.subGroups?t.subGroups.forEach(function(e){c(e,o[t.key]?o[t.key].groups||{}:{})}):(i.columnCalcs&&a(o,t.key,"top"),l(t.rows),i.columnCalcs&&a(o,t.key,"bottom"))}var u,d,h,p,m,f,g,b,v=this,y=[];this.htmlElement=document.createElement("table"),v.mapElementStyles(this.table.element,this.htmlElement,["border-top","border-left","border-right","border-bottom"]),i.columnHeaders&&("groups"==i.columnHeaders?(e.forEach(function(t){r(t,0)}),function(){y.forEach(function(t,e){t.forEach(function(t){t.children||(t.height=y.length-e)})})}(),function(t){var e=document.createElement("thead");t.forEach(function(t){var o=document.createElement("tr");t.forEach(function(t){var e=document.createElement("th");t.width>1&&(e.colSpan=t.width),t.height>1&&(e.rowSpan=t.height),e.innerHTML=t.title,v.mapElementStyles(t.element,e,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),o.appendChild(e)}),v.mapElementStyles(v.table.columnManager.getHeadersElement(),o,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),e.appendChild(o)}),v.htmlElement.appendChild(e)}(y)):function(){var t=document.createElement("tr");e.forEach(function(e){var o=document.createElement("th");o.innerHTML=e.definition.title,v.mapElementStyles(e.getElement(),o,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),t.appendChild(o)}),v.mapElementStyles(v.table.columnManager.getHeadersElement(),t,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),v.htmlElement.appendChild(document.createElement("thead").appendChild(t))}()),u=document.createElement("tbody"),window.getComputedStyle&&(d=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),h=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),p=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),m=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),g=this.table.element.getElementsByClassName("tabulator-group")[0],m&&(b=m.getElementsByClassName("tabulator-cell"),f=b[0],b[b.length-1])),i.rowGroups?t.forEach(function(t){c(t,o||{})}):(i.columnCalcs&&a(o,"top"),l(t),i.columnCalcs&&a(o,"bottom")),this.htmlElement.appendChild(u)},b.prototype.mapElementStyles=function(t,e,o){var i={"background-color":"backgroundColor",color:"fontColor","font-weight":"fontWeight","font-family":"fontFamily","font-size":"fontSize","border-top":"borderTop","border-left":"borderLeft","border-right":"borderRight","border-bottom":"borderBottom"};if(window.getComputedStyle){var n=window.getComputedStyle(t);o.forEach(function(t){e.style[i[t]]=n.getPropertyValue(t)})}},b.prototype.copySelectors={userSelection:function(t,e){return e},selected:function(t,e){var o=[];return this.table.modExists("selectRow",!0)&&(o=this.table.modules.selectRow.getSelectedRows()),t.rowGroups&&console.warn("Clipboard Warning - select coptSelector does not support row groups"),this.buildOutput(o,t,e)},table:function(t,e){return t.rowGroups&&console.warn("Clipboard Warning - table coptSelector does not support row groups"),this.buildOutput(this.table.rowManager.getComponents(),t,e)},active:function(t,e){var o;return o=t.rowGroups?this.buildComplexRows(t):this.table.rowManager.getComponents(!0),this.buildOutput(o,t,e)}},b.prototype.copyFormatters={raw:function(t,e){return t},table:function(t,e){var o=[];return t.forEach(function(t){t.forEach(function(t){void 0===t&&(t=""),t=void 0===t||null===t?"":t.toString(),t.match(/\r|\n/)&&(t=t.split('"').join('""'),t='"'+t+'"')}),o.push(t.join("\t"))}),o.join("\n")}},b.prototype.pasteParsers={table:function(t){var e=[],o=!0,i=this.table.columnManager.columns,n=[],s=[];return t=t.split("\n"),t.forEach(function(t){e.push(t.split("\t"))}),!(!e.length||1===e.length&&e[0].length<2)&&(!0,e[0].forEach(function(t){var e=i.find(function(e){return t&&e.definition.title&&t.trim()&&e.definition.title.trim()===t.trim()});e?n.push(e):o=!1}),o||(o=!0,n=[],e[0].forEach(function(t){var e=i.find(function(e){return t&&e.field&&t.trim()&&e.field.trim()===t.trim()});e?n.push(e):o=!1}),o||(n=this.table.columnManager.columnsByIndex)),o&&e.shift(),e.forEach(function(t){var e={};t.forEach(function(t,o){n[o]&&(e[n[o].field]=t)}),s.push(e)}),s)}},b.prototype.pasteActions={replace:function(t){return this.table.setData(t)},update:function(t){return this.table.updateOrAddData(t)},insert:function(t){return this.table.addData(t)}},u.prototype.registerModule("clipboard",b);var v=function(t){this.table=t,this.indent=10,this.field="",this.collapseEl=null,this.expandEl=null,this.branchEl=null,this.elementField=!1,this.startOpen=function(){},this.displayIndex=0};v.prototype.initialize=function(){var t=null,e=this.table.columnManager.getFirstVisibileColumn(),o=this.table.options;switch(this.field=o.dataTreeChildField,this.indent=o.dataTreeChildIndent,this.elementField=o.dataTreeElementColumn||!!e&&e.field,o.dataTreeBranchElement&&(!0===o.dataTreeBranchElement?(this.branchEl=document.createElement("div"),this.branchEl.classList.add("tabulator-data-tree-branch")):"string"==typeof o.dataTreeBranchElement?(t=document.createElement("div"),t.innerHTML=o.dataTreeBranchElement,this.branchEl=t.firstChild):this.branchEl=o.dataTreeBranchElement),o.dataTreeCollapseElement?"string"==typeof o.dataTreeCollapseElement?(t=document.createElement("div"),t.innerHTML=o.dataTreeCollapseElement,this.collapseEl=t.firstChild):this.collapseEl=o.dataTreeCollapseElement:(this.collapseEl=document.createElement("div"),this.collapseEl.classList.add("tabulator-data-tree-control"),this.collapseEl.tabIndex=0,this.collapseEl.innerHTML="<div class='tabulator-data-tree-control-collapse'></div>"),o.dataTreeExpandElement?"string"==typeof o.dataTreeExpandElement?(t=document.createElement("div"),t.innerHTML=o.dataTreeExpandElement,this.expandEl=t.firstChild):this.expandEl=o.dataTreeExpandElement:(this.expandEl=document.createElement("div"),this.expandEl.classList.add("tabulator-data-tree-control"),this.expandEl.tabIndex=0,this.expandEl.innerHTML="<div class='tabulator-data-tree-control-expand'></div>"),_typeof(o.dataTreeStartExpanded)){case"boolean":this.startOpen=function(t,e){return o.dataTreeStartExpanded};break;case"function":this.startOpen=o.dataTreeStartExpanded;break;default:this.startOpen=function(t,e){return o.dataTreeStartExpanded[e]}}},v.prototype.initializeRow=function(t){var e=t.getData()[this.field],o=Array.isArray(e),i=o||!o&&"object"===(void 0===e?"undefined":_typeof(e))&&null!==e;t.modules.dataTree={index:0,open:!!i&&this.startOpen(t.getComponent(),0),controlEl:!1,branchEl:!1,parent:!1,children:i}},v.prototype.layoutRow=function(t){var e=this.elementField?t.getCell(this.elementField):t.getCells()[0],o=e.getElement(),i=t.modules.dataTree;i.branchEl&&i.branchEl.parentNode.removeChild(i.branchEl),this.generateControlElement(t,o),i.index&&(this.branchEl?(i.branchEl=this.branchEl.cloneNode(!0),o.insertBefore(i.branchEl,o.firstChild),i.branchEl.style.marginLeft=(i.branchEl.offsetWidth+i.branchEl.style.marginRight)*(i.index-1)+i.index*this.indent+"px"):o.style.paddingLeft=parseInt(window.getComputedStyle(o,null).getPropertyValue("padding-left"))+i.index*this.indent+"px")},v.prototype.generateControlElement=function(t,e){var o=this,i=t.modules.dataTree,e=e||t.getCells()[0].getElement(),n=i.controlEl;!1!==i.children&&(i.open?(i.controlEl=this.collapseEl.cloneNode(!0),i.controlEl.addEventListener("click",function(e){e.stopPropagation(),o.collapseRow(t)})):(i.controlEl=this.expandEl.cloneNode(!0),i.controlEl.addEventListener("click",function(e){e.stopPropagation(),o.expandRow(t)})),i.controlEl.addEventListener("mousedown",function(t){t.stopPropagation()}),n&&n.parentNode===e?n.parentNode.replaceChild(i.controlEl,n):e.insertBefore(i.controlEl,e.firstChild))},v.prototype.setDisplayIndex=function(t){this.displayIndex=t},v.prototype.getDisplayIndex=function(){return this.displayIndex},v.prototype.getRows=function(t){var e=this,o=[];return t.forEach(function(t,i){var n,s;o.push(t),t instanceof r&&(n=t.modules.dataTree.children,n.index||!1===n.children||(s=e.getChildren(t),s.forEach(function(t){o.push(t)})))}),o},v.prototype.getChildren=function(t){var e=this,o=t.modules.dataTree,i=[],n=[];return!1!==o.children&&o.open&&(Array.isArray(o.children)||(o.children=this.generateChildren(t)),i=this.table.modExists("filter")?this.table.modules.filter.filter(o.children):o.children,this.table.modExists("sort")&&this.table.modules.sort.sort(i),i.forEach(function(t){n.push(t),e.getChildren(t).forEach(function(t){n.push(t)})})),n},v.prototype.generateChildren=function(t){var e=this,o=[],i=t.getData()[this.field];return Array.isArray(i)||(i=[i]),i.forEach(function(i){var n=new r(i||{},e.table.rowManager);n.modules.dataTree.index=t.modules.dataTree.index+1,n.modules.dataTree.parent=t,n.modules.dataTree.children&&(n.modules.dataTree.open=e.startOpen(n.getComponent(),n.modules.dataTree.index)),o.push(n)}),o},v.prototype.expandRow=function(t,e){var o=t.modules.dataTree;!1!==o.children&&(o.open=!0,t.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowExpanded(t.getComponent(),t.modules.dataTree.index))},v.prototype.collapseRow=function(t){var e=t.modules.dataTree;!1!==e.children&&(e.open=!1,t.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowCollapsed(t.getComponent(),t.modules.dataTree.index))},v.prototype.toggleRow=function(t){var e=t.modules.dataTree;!1!==e.children&&(e.open?this.collapseRow(t):this.expandRow(t))},v.prototype.getTreeParent=function(t){return!!t.modules.dataTree.parent&&t.modules.dataTree.parent.getComponent()},v.prototype.getTreeChildren=function(t){var e=t.modules.dataTree,o=[];return e.children&&(Array.isArray(e.children)||(e.children=this.generateChildren(t)),e.children.forEach(function(t){t instanceof r&&o.push(t.getComponent())})),o},v.prototype.checkForRestyle=function(t){t.row.cells.indexOf(t)||!1!==t.row.modules.dataTree.children&&t.row.reinitialize()},v.prototype.getChildField=function(){return this.field},v.prototype.redrawNeeded=function(t){return!!this.field&&void 0!==t[this.field]||!!this.elementField&&void 0!==t[this.elementField]},u.prototype.registerModule("dataTree",v);var y=function(t){this.table=t,this.fields={},this.columnsByIndex=[],this.columnsByField={},this.config={}};y.prototype.download=function(t,e,o,i){function n(o,n){i?!0===i?s.triggerDownload(o,n,t,e,!0):i(o):s.triggerDownload(o,n,t,e)}var s=this,r=!1;this.processConfig(),"function"==typeof t?r=t:s.downloaders[t]?r=s.downloaders[t]:console.warn("Download Error - No such download type found: ",t),this.processColumns(),r&&r.call(this,s.processDefinitions(),s.processData(),o||{},n,this.config)},y.prototype.processConfig=function(){var t={columnGroups:!0,rowGroups:!0,columnCalcs:!0};if(this.table.options.downloadConfig)for(var e in this.table.options.downloadConfig)t[e]=this.table.options.downloadConfig[e];t.rowGroups&&this.table.options.groupBy&&this.table.modExists("groupRows")&&(this.config.rowGroups=!0),t.columnGroups&&this.table.columnManager.columns.length!=this.table.columnManager.columnsByIndex.length&&(this.config.columnGroups=!0),t.columnCalcs&&this.table.modExists("columnCalcs")&&(this.config.columnCalcs=!0)},y.prototype.processColumns=function(){var t=this;t.columnsByIndex=[],t.columnsByField={},t.table.columnManager.columnsByIndex.forEach(function(e){e.field&&!1!==e.definition.download&&(e.visible||!e.visible&&e.definition.download)&&(t.columnsByIndex.push(e),t.columnsByField[e.field]=e)})},y.prototype.processDefinitions=function(){var t=this,e=[];return this.config.columnGroups?t.table.columnManager.columns.forEach(function(o){var i=t.processColumnGroup(o);i&&e.push(i)}):t.columnsByIndex.forEach(function(o){!1!==o.download&&e.push(t.processDefinition(o))}),e},y.prototype.processColumnGroup=function(t){var e=this,o=t.columns,i=0,n=this.processDefinition(t),s={type:"group",title:n.title,depth:1};if(o.length){if(s.subGroups=[],s.width=0,o.forEach(function(t){var o=e.processColumnGroup(t);o.depth>i&&(i=o.depth),o&&(s.width+=o.width,s.subGroups.push(o))}),s.depth+=i,!s.width)return!1}else{if(!t.field||!1===t.definition.download||!(t.visible||!t.visible&&t.definition.download))return!1;s.width=1,s.definition=n}return s},y.prototype.processDefinition=function(t){var e={};for(var o in t.definition)e[o]=t.definition[o];return void 0!==t.definition.downloadTitle&&(e.title=t.definition.downloadTitle),e},y.prototype.processData=function(){var t=this,e=this,o=[],i=[],n={};return this.config.rowGroups?(i=this.table.modules.groupRows.getGroups(),i.forEach(function(e){o.push(t.processGroupData(e))})):o=e.table.rowManager.getData(!0,"download"),this.config.columnCalcs&&(n=this.table.getCalcResults(),o={calcs:n,data:o}),"function"==typeof e.table.options.downloadDataFormatter&&(o=e.table.options.downloadDataFormatter(o)),o},y.prototype.processGroupData=function(t){var e=this,o=t.getSubGroups(),i={type:"group",key:t.key};return o.length?(i.subGroups=[],o.forEach(function(t){i.subGroups.push(e.processGroupData(t))})):i.rows=t.getData(!0,"download"),i},y.prototype.triggerDownload=function(t,e,o,i,n){var s=document.createElement("a"),r=new Blob([t],{type:e}),i=i||"Tabulator."+("function"==typeof o?"txt":o);(r=this.table.options.downloadReady.call(this.table,t,r))&&(n?window.open(window.URL.createObjectURL(r)):navigator.msSaveOrOpenBlob?navigator.msSaveOrOpenBlob(r,i):(s.setAttribute("href",window.URL.createObjectURL(r)),s.setAttribute("download",i),s.style.display="none",document.body.appendChild(s),s.click(),document.body.removeChild(s)),this.table.options.downloadComplete&&this.table.options.downloadComplete())},y.prototype.getFieldValue=function(t,e){var o=this.columnsByField[t];return!!o&&o.getFieldValue(e)},y.prototype.commsReceived=function(t,e,o){switch(e){case"intercept":this.download(o.type,"",o.options,o.intercept)}},y.prototype.downloaders={csv:function(t,e,o,i,n){function s(t,e){t.subGroups?t.subGroups.forEach(function(t){s(t,e+1)}):(d.push('"'+String(t.title).split('"').join('""')+'"'),h.push(t.definition.field))}function r(t){t.forEach(function(t){var e=[];h.forEach(function(o){var i=u.getFieldValue(o,t);switch(void 0===i?"undefined":_typeof(i)){case"object":i=JSON.stringify(i);break;case"undefined":case"null":i="";break;default:i=i}e.push('"'+String(i).split('"').join('""')+'"')}),l.push(e.join(p))})}function a(t){t.subGroups?t.subGroups.forEach(function(t){a(t)}):r(t.rows)}var l,c,u=this,d=[],h=[],p=o&&o.delimiter?o.delimiter:",";n.columnGroups?(console.warn("Download Warning - CSV downloader cannot process column groups"),t.forEach(function(t){s(t,0)})):function(){t.forEach(function(t){d.push('"'+String(t.title).split('"').join('""')+'"'),h.push(t.field)})}(),l=[d.join(p)],n.columnCalcs&&(console.warn("Download Warning - CSV downloader cannot process column calculations"),e=e.data),n.rowGroups?(console.warn("Download Warning - CSV downloader cannot process row groups"),e.forEach(function(t){a(t)})):r(e),c=l.join("\n"),o.bom&&(c="\ufeff"+c),i(c,"text/csv")},json:function(t,e,o,i,n){var s;n.columnCalcs&&(console.warn("Download Warning - CSV downloader cannot process column calculations"),e=e.data),s=JSON.stringify(e,null,"\t"),i(s,"application/json")},pdf:function(t,e,o,i,n){function s(t,e){var o=t.width,i=1,n={content:t.title||""};if(t.subGroups?(t.subGroups.forEach(function(t){s(t,e+1)}),i=1):(h.push(t.definition.field),i=g-e),n.rowSpan=i,p[e].push(n),o--,i>1)for(var r=e+1;r<g;r++)p[r].push("");for(var r=0;r<o;r++)p[e].push("")}function r(t){switch(void 0===t?"undefined":_typeof(t)){case"object":t=JSON.stringify(t);break;case"undefined":case"null":t="";break;default:t=t}return t}function a(t){t.forEach(function(t){m.push(l(t))})}function l(t,e){var o=[];return h.forEach(function(i){var n=d.getFieldValue(i,t);n=r(n),e?o.push({content:n,styles:e}):o.push(n)}),o}function c(t,e){var o=[];o.push({content:r(t.key),colSpan:h.length,styles:v}),m.push(o),t.subGroups?t.subGroups.forEach(function(o){c(o,e[t.key]?e[t.key].groups||{}:{})}):(n.columnCalcs&&u(e,t.key,"top"),a(t.rows),n.columnCalcs&&u(e,t.key,"bottom"))}function u(t,e,o){var i=t[e];i&&(o&&(i=i[o]),Object.keys(i).length&&m.push(l(i,y)))}var d=this,h=[],p=[],m=[],f={},g=1,b={},v=o.rowGroupStyles||{fontStyle:"bold",fontSize:12,cellPadding:6,fillColor:220},y=o.rowCalcStyles||{fontStyle:"bold",fontSize:10,cellPadding:4,fillColor:232},w=o.jsPDF||{},E=o&&o.title?o.title:"";if(n.columnCalcs&&(f=e.calcs,e=e.data),w.orientation||(w.orientation=o.orientation||"landscape"),w.unit||(w.unit="pt"),n.columnGroups){t.forEach(function(t){t.depth>g&&(g=t.depth)});for(var C=0;C<g;C++)p.push([]);t.forEach(function(t){s(t,0)})}else!function(){t.forEach(function(t){t.field&&(p.push(t.title||""),h.push(t.field))}),p=[p]}();n.rowGroups?e.forEach(function(t){c(t,f)}):(n.columnCalcs&&u(f,"top"),a(e),n.columnCalcs&&u(f,"bottom"));var x=new jsPDF(w);o&&o.autoTable&&(b="function"==typeof o.autoTable?o.autoTable(x)||{}:o.autoTable),E&&(b.addPageContent=function(t){x.text(E,40,30)}),b.head=p,b.body=m,x.autoTable(b),o&&o.documentProcessing&&o.documentProcessing(x),i(x.output("arraybuffer"),"application/pdf")},xlsx:function(t,e,o,i,n){function s(){function o(t,e){void 0===f[e]&&(f[e]=[]),void 0===h[e]&&(h[e]=[]),t.width>1&&h[e].push({type:"hoz",start:f[e].length,end:f[e].length+t.width-1}),f[e].push(t.title),t.subGroups?t.subGroups.forEach(function(t){o(t,e+1)}):(g.push(t.definition.field),i(g.length),h[e].push({type:"vert",start:g.length-1}))}function i(){var t=0;f.forEach(function(e){var o=e.length;o>t&&(t=o)}),f.forEach(function(e){var o=e.length;if(o<t)for(var i=o;i<t;i++)e.push("")})}function s(){var t=[];return d.forEach(function(e){t.push({s:{r:e,c:0},e:{r:e,c:g.length-1}})}),h.forEach(function(e,o){e.forEach(function(e){"hoz"===e.type?t.push({s:{r:o,c:e.start},e:{r:o,c:e.end}}):o!=f.length-1&&t.push({s:{r:o,c:e.start},e:{r:f.length-1,c:e.start}})})}),t}function r(t){t.forEach(function(t){b.push(l(t))})}function l(t){var e=[];return g.forEach(function(o){var i=a.getFieldValue(o,t);e.push(i instanceof Date||"object"!==(void 0===i?"undefined":_typeof(i))?i:JSON.stringify(i))}),e}function c(t,e,o){var i=t[e];i&&(o&&(i=i[o]),Object.keys(i).length&&(p.push(b.length),b.push(l(i))))}function m(t,e){var o=[];o.push(t.key),d.push(b.length),b.push(o),t.subGroups?t.subGroups.forEach(function(o){m(o,e[t.key]?e[t.key].groups||{}:{})}):(n.columnCalcs&&c(e,t.key,"top"),r(t.rows),n.columnCalcs&&c(e,t.key,"bottom"))}var f=[],g=[],b=[];return n.columnGroups?(t.forEach(function(t){o(t,0)}),f.forEach(function(t){b.push(t)})):function(){t.forEach(function(t){f.push(t.title),g.push(t.field)}),b.push(f)}(),n.rowGroups?e.forEach(function(t){m(t,u)}):(n.columnCalcs&&c(u,"top"),r(e),n.columnCalcs&&c(u,"bottom")),function(){var t={},e={s:{c:0,r:0},e:{c:g.length,r:b.length}};XLSX.utils.sheet_add_aoa(t,b),t["!ref"]=XLSX.utils.encode_range(e);var o=s();return o.length&&(t["!merges"]=o),t}()}var r,a=this,l=o.sheetName||"Sheet1",c={SheetNames:[],Sheets:{}},u={},d=[],h=[],p=[];if(n.columnCalcs&&(u=e.calcs,e=e.data),o.sheetOnly)return void i(s());if(o.sheets)for(var m in o.sheets)!0===o.sheets[m]?(c.SheetNames.push(m),c.Sheets[m]=s()):(c.SheetNames.push(m),this.table.modules.comms.send(o.sheets[m],"download","intercept",{type:"xlsx",options:{sheetOnly:!0},intercept:function(t){c.Sheets[m]=t}}));else c.SheetNames.push(l),c.Sheets[l]=s();r=XLSX.write(c,{bookType:"xlsx",bookSST:!0,type:"binary"}),i(function(t){
+for(var e=new ArrayBuffer(t.length),o=new Uint8Array(e),i=0;i!=t.length;++i)o[i]=255&t.charCodeAt(i);return e}(r),"application/octet-stream")}},u.prototype.registerModule("download",y);var w=function(t){this.table=t,this.currentCell=!1,this.mouseClick=!1,this.recursionBlock=!1,this.invalidEdit=!1};w.prototype.initializeColumn=function(t){var e=this,o={editor:!1,blocked:!1,check:t.definition.editable,params:t.definition.editorParams||{}};switch(_typeof(t.definition.editor)){case"string":"tick"===t.definition.editor&&(t.definition.editor="tickCross",console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor")),e.editors[t.definition.editor]?o.editor=e.editors[t.definition.editor]:console.warn("Editor Error - No such editor found: ",t.definition.editor);break;case"function":o.editor=t.definition.editor;break;case"boolean":!0===t.definition.editor&&("function"!=typeof t.definition.formatter?("tick"===t.definition.formatter&&(t.definition.formatter="tickCross",console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor")),e.editors[t.definition.formatter]?o.editor=e.editors[t.definition.formatter]:o.editor=e.editors.input):console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ",t.definition.formatter))}o.editor&&(t.modules.edit=o)},w.prototype.getCurrentCell=function(){return!!this.currentCell&&this.currentCell.getComponent()},w.prototype.clearEditor=function(){var t,e=this.currentCell;if(this.invalidEdit=!1,e){for(this.currentCell=!1,t=e.getElement(),t.classList.remove("tabulator-validation-fail"),t.classList.remove("tabulator-editing");t.firstChild;)t.removeChild(t.firstChild);e.row.getElement().classList.remove("tabulator-row-editing")}},w.prototype.cancelEdit=function(){if(this.currentCell){var t=this.currentCell,e=this.currentCell.getComponent();this.clearEditor(),t.setValueActual(t.getValue()),t.column.cellEvents.cellEditCancelled&&t.column.cellEvents.cellEditCancelled.call(this.table,e),this.table.options.cellEditCancelled.call(this.table,e)}},w.prototype.bindEditor=function(t){var e=this,o=t.getElement();o.setAttribute("tabindex",0),o.addEventListener("click",function(t){o.classList.contains("tabulator-editing")||o.focus()}),o.addEventListener("mousedown",function(t){e.mouseClick=!0}),o.addEventListener("focus",function(o){e.recursionBlock||e.edit(t,o,!1)})},w.prototype.focusCellNoEvent=function(t){this.recursionBlock=!0,"ie"!==this.table.browser&&t.getElement().focus(),this.recursionBlock=!1},w.prototype.editCell=function(t,e){this.focusCellNoEvent(t),this.edit(t,!1,e)},w.prototype.edit=function(t,e,o){function i(e){if(c.currentCell===t){var o=!0;return t.column.modules.validate&&c.table.modExists("validate")&&(o=c.table.modules.validate.validate(t.column.modules.validate,t.getComponent(),e)),!0===o?(c.clearEditor(),t.setValue(e,!0),c.table.options.dataTree&&c.table.modExists("dataTree")&&c.table.modules.dataTree.checkForRestyle(t),!0):(c.invalidEdit=!0,h.classList.add("tabulator-validation-fail"),c.focusCellNoEvent(t),d(),c.table.options.validationFailed.call(c.table,t.getComponent(),e,o),!1)}}function n(){c.currentCell===t&&(c.cancelEdit(),c.table.options.dataTree&&c.table.modExists("dataTree")&&c.table.modules.dataTree.checkForRestyle(t))}function s(t){d=t}var r,a,l,c=this,u=!0,d=function(){},h=t.getElement();if(this.currentCell)return void(this.invalidEdit||this.cancelEdit());if(t.column.modules.edit.blocked)return this.mouseClick=!1,h.blur(),!1;switch(e&&e.stopPropagation(),_typeof(t.column.modules.edit.check)){case"function":u=t.column.modules.edit.check(t.getComponent());break;case"boolean":u=t.column.modules.edit.check}if(u||o){if(c.cancelEdit(),c.currentCell=t,a=t.getComponent(),this.mouseClick&&(this.mouseClick=!1,t.column.cellEvents.cellClick&&t.column.cellEvents.cellClick.call(this.table,e,a)),t.column.cellEvents.cellEditing&&t.column.cellEvents.cellEditing.call(this.table,a),c.table.options.cellEditing.call(this.table,a),l="function"==typeof t.column.modules.edit.params?t.column.modules.edit.params(a):t.column.modules.edit.params,!1===(r=t.column.modules.edit.editor.call(c,a,s,i,n,l)))return h.blur(),!1;if(!(r instanceof Node))return console.warn("Edit Error - Editor should return an instance of Node, the editor returned:",r),h.blur(),!1;for(h.classList.add("tabulator-editing"),t.row.getElement().classList.add("tabulator-row-editing");h.firstChild;)h.removeChild(h.firstChild);h.appendChild(r),d();for(var p=h.children,m=0;m<p.length;m++)p[m].addEventListener("click",function(t){t.stopPropagation()});return!0}return this.mouseClick=!1,h.blur(),!1},w.prototype.editors={input:function(t,e,o,i,n){function s(t){(null===r||void 0===r)&&""!==a.value||a.value!=r?o(a.value)&&(r=a.value):i()}var r=t.getValue(),a=document.createElement("input");if(a.setAttribute("type",n.search?"search":"text"),a.style.padding="4px",a.style.width="100%",a.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var l in n.elementAttributes)"+"==l.charAt(0)?(l=l.slice(1),a.setAttribute(l,a.getAttribute(l)+n.elementAttributes["+"+l])):a.setAttribute(l,n.elementAttributes[l]);return a.value=void 0!==r?r:"",e(function(){a.focus(),a.style.height="100%"}),a.addEventListener("change",s),a.addEventListener("blur",s),a.addEventListener("keydown",function(t){switch(t.keyCode){case 13:s(t);break;case 27:i()}}),a},textarea:function(t,e,o,i,n){function s(e){(null===r||void 0===r)&&""!==l.value||l.value!=r?(o(l.value)&&(r=l.value),setTimeout(function(){t.getRow().normalizeHeight()},300)):i()}var r=t.getValue(),a=String(null!==r&&void 0!==r?r:""),l=(a.match(/(?:\r\n|\r|\n)/g),document.createElement("textarea")),c=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",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var u in n.elementAttributes)"+"==u.charAt(0)?(u=u.slice(1),l.setAttribute(u,l.getAttribute(u)+n.elementAttributes["+"+u])):l.setAttribute(u,n.elementAttributes[u]);return l.value=a,e(function(){l.focus(),l.style.height="100%"}),l.addEventListener("change",s),l.addEventListener("blur",s),l.addEventListener("keyup",function(){l.style.height="";var e=l.scrollHeight;l.style.height=e+"px",e!=c&&(c=e,t.getRow().normalizeHeight())}),l.addEventListener("keydown",function(t){27==t.keyCode&&i()}),l},number:function(t,e,o,i,n){function s(){var t=a.value;isNaN(t)||""===t||(t=Number(t)),t!=r?o(t)&&(r=t):i()}var r=t.getValue(),a=document.createElement("input");if(a.setAttribute("type","number"),void 0!==n.max&&a.setAttribute("max",n.max),void 0!==n.min&&a.setAttribute("min",n.min),void 0!==n.step&&a.setAttribute("step",n.step),a.style.padding="4px",a.style.width="100%",a.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var l in n.elementAttributes)"+"==l.charAt(0)?(l=l.slice(1),a.setAttribute(l,a.getAttribute(l)+n.elementAttributes["+"+l])):a.setAttribute(l,n.elementAttributes[l]);a.value=r;var c=function(t){s()};return e(function(){a.removeEventListener("blur",c),a.focus(),a.style.height="100%",a.addEventListener("blur",c)}),a.addEventListener("keydown",function(t){switch(t.keyCode){case 13:s();break;case 27:i()}}),a},range:function(t,e,o,i,n){function s(){var t=a.value;isNaN(t)||""===t||(t=Number(t)),t!=r?o(t)&&(r=t):i()}var r=t.getValue(),a=document.createElement("input");if(a.setAttribute("type","range"),void 0!==n.max&&a.setAttribute("max",n.max),void 0!==n.min&&a.setAttribute("min",n.min),void 0!==n.step&&a.setAttribute("step",n.step),a.style.padding="4px",a.style.width="100%",a.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var l in n.elementAttributes)"+"==l.charAt(0)?(l=l.slice(1),a.setAttribute(l,a.getAttribute(l)+n.elementAttributes["+"+l])):a.setAttribute(l,n.elementAttributes[l]);return a.value=r,e(function(){a.focus(),a.style.height="100%"}),a.addEventListener("blur",function(t){s()}),a.addEventListener("keydown",function(t){switch(t.keyCode){case 13:case 9:s();break;case 27:i()}}),a},select:function(t,e,o,i,n){function s(e){var o,i={},s=f.table.getData();return o=e?f.table.columnManager.getColumnByField(e):t.getColumn()._getSelf(),o?(s.forEach(function(t){var e=o.getFieldValue(t);null!==e&&void 0!==e&&""!==e&&(i[e]=!0)}),i=n.sortValuesList?"asc"==n.sortValuesList?Object.keys(i).sort():Object.keys(i).sort().reverse():Object.keys(i)):console.warn("unable to find matching column to create select lookup list:",e),i}function r(e,o){function i(t){var t={label:n.listItemFormatter?n.listItemFormatter(t.value,t.label):t.label,value:t.value,element:!1};return t.value!==o&&(isNaN(parseFloat(t.value))||isNaN(parseFloat(t.value))||parseFloat(t.value)!==parseFloat(o))||l(t),s.push(t),r.push(t),t}var s=[],r=[];if("function"==typeof e&&(e=e(t)),Array.isArray(e))e.forEach(function(t){var e;"object"===(void 0===t?"undefined":_typeof(t))?t.options?(e={label:t.label,group:!0,element:!1},r.push(e),t.options.forEach(function(t){i(t)})):i(t):(e={label:n.listItemFormatter?n.listItemFormatter(t,t):t,value:t,element:!1},e.value!==o&&(isNaN(parseFloat(e.value))||isNaN(parseFloat(e.value))||parseFloat(e.value)!==parseFloat(o))||l(e),s.push(e),r.push(e))});else for(var c in e){var u={label:n.listItemFormatter?n.listItemFormatter(c,e[c]):e[c],value:c,element:!1};u.value!==o&&(isNaN(parseFloat(u.value))||isNaN(parseFloat(u.value))||parseFloat(u.value)!==parseFloat(o))||l(u),s.push(u),r.push(u)}E=s,C=r,a()}function a(){for(;w.firstChild;)w.removeChild(w.firstChild);C.forEach(function(t){var e=t.element;e||(t.group?(e=document.createElement("div"),e.classList.add("tabulator-edit-select-list-group"),e.tabIndex=0,e.innerHTML=""===t.label?"&nbsp;":t.label):(e=document.createElement("div"),e.classList.add("tabulator-edit-select-list-item"),e.tabIndex=0,e.innerHTML=""===t.label?"&nbsp;":t.label,e.addEventListener("click",function(){l(t),c()}),t===x&&e.classList.add("active")),e.addEventListener("mousedown",function(){R=!1,setTimeout(function(){R=!0},10)}),t.element=e),w.appendChild(e)})}function l(t){x&&x.element&&x.element.classList.remove("active"),x=t,y.value="&nbsp;"===t.label?"":t.label,t.element&&t.element.classList.add("active")}function c(){p(),b!==x.value?(b=x.value,o(x.value)):i()}function d(){p(),i()}function h(){if(!w.parentNode){!0===n.values?r(s(),v):"string"==typeof n.values?r(s(n.values),v):r(n.values||[],v);var t=u.prototype.helpers.elOffset(g);w.style.minWidth=g.offsetWidth+"px",w.style.top=t.top+g.offsetHeight+"px",w.style.left=t.left+"px",document.body.appendChild(w)}}function p(){w.parentNode&&w.parentNode.removeChild(w),m()}function m(){f.table.rowManager.element.removeEventListener("scroll",d)}var f=this,g=t.getElement(),b=t.getValue(),v=void 0!==b||null===b?b:void 0!==n.defaultValue?n.defaultValue:"",y=document.createElement("input"),w=document.createElement("div"),E=[],C=[],x={},R=!0;if(this.table.rowManager.element.addEventListener("scroll",d),(Array.isArray(n)||!Array.isArray(n)&&"object"===(void 0===n?"undefined":_typeof(n))&&!n.values)&&(console.warn("DEPRECATION WANRING - 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}),y.setAttribute("type","text"),y.style.padding="4px",y.style.width="100%",y.style.boxSizing="border-box",y.style.cursor="default",y.readOnly=0!=this.currentCell,n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var M in n.elementAttributes)"+"==M.charAt(0)?(M=M.slice(1),y.setAttribute(M,y.getAttribute(M)+n.elementAttributes["+"+M])):y.setAttribute(M,n.elementAttributes[M]);return y.value=void 0!==b||null===b?b:"",!0===n.values?r(s(),b):"string"==typeof n.values?r(s(n.values),b):r(n.values||[],b),y.addEventListener("keydown",function(t){var e;switch(t.keyCode){case 38:t.stopImmediatePropagation(),t.stopPropagation(),t.preventDefault(),e=E.indexOf(x),e>0&&l(E[e-1]);break;case 40:t.stopImmediatePropagation(),t.stopPropagation(),t.preventDefault(),e=E.indexOf(x),e<E.length-1&&l(-1==e?E[0]:E[e+1]);break;case 37:case 39:t.stopImmediatePropagation(),t.stopPropagation(),t.preventDefault();break;case 13:c();break;case 27:d()}}),y.addEventListener("blur",function(t){R&&d()}),y.addEventListener("focus",function(t){h()}),w=document.createElement("div"),w.classList.add("tabulator-edit-select-list"),e(function(){y.style.height="100%",y.focus()}),y},autocomplete:function(t,e,o,i,n){function s(e){var o,i={},s=g.table.getData();return o=e?g.table.columnManager.getColumnByField(e):t.getColumn()._getSelf(),o?(s.forEach(function(t){var e=o.getFieldValue(t);null!==e&&void 0!==e&&""!==e&&(i[e]=!0)}),i=n.sortValuesList?"asc"==n.sortValuesList?Object.keys(i).sort():Object.keys(i).sort().reverse():Object.keys(i)):console.warn("unable to find matching column to create autocomplete lookup list:",e),i}function r(t,e){var o=[];if(Array.isArray(t))t.forEach(function(t){var i={title:n.listItemFormatter?n.listItemFormatter(t,t):t,value:t,element:!1};i.value!==e&&(isNaN(parseFloat(i.value))||isNaN(parseFloat(i.value))||parseFloat(i.value)!==parseFloat(e))||c(i),o.push(i)});else for(var i in t){var s={title:n.listItemFormatter?n.listItemFormatter(i,t[i]):t[i],value:i,element:!1};s.value!==e&&(isNaN(parseFloat(s.value))||isNaN(parseFloat(s.value))||parseFloat(s.value)!==parseFloat(e))||c(s),o.push(s)}n.searchFunc&&o.forEach(function(t){t.search={title:t.title,value:t.value}}),C=o}function a(t,e){var o=[],i=[],s=[];n.searchFunc?(C.forEach(function(t){i.push(t.search)}),s=n.searchFunc(t,i),s.forEach(function(t){var e=C.find(function(e){return e.search===t});e&&o.push(e)})):""===t?n.showListOnEmpty&&C.forEach(function(t){o.push(t)}):C.forEach(function(e){null===e.value&&void 0===e.value||(String(e.value).toLowerCase().indexOf(String(t).toLowerCase())>-1||String(e.title).toLowerCase().indexOf(String(t).toLowerCase())>-1)&&o.push(e)}),x=o,l(e)}function l(t){for(var e=!1;E.firstChild;)E.removeChild(E.firstChild);x.forEach(function(o){var i=o.element;i||(i=document.createElement("div"),i.classList.add("tabulator-edit-select-list-item"),i.tabIndex=0,i.innerHTML=o.title,i.addEventListener("click",function(){c(o),d()}),i.addEventListener("mousedown",function(){L=!1,setTimeout(function(){L=!0},10)}),o.element=i,t&&o.value==v&&(w.value=o.title,o.element.classList.add("active"),e=!0),o===M&&(o.element.classList.add("active"),e=!0)),E.appendChild(i)}),e||c(!1)}function c(t,e){M&&M.element&&M.element.classList.remove("active"),M=t,t&&t.element&&t.element.classList.add("active")}function d(){m(),M?v!==M.value?(v=M.value,w.value=M.title,o(M.value)):i():n.freetext?(v=w.value,o(w.value)):n.allowEmpty&&""===w.value?(v=w.value,o(w.value)):i()}function h(){m(),i()}function p(){if(!E.parentNode){for(;E.firstChild;)E.removeChild(E.firstChild);R=!0===n.values?s():"string"==typeof n.values?s(n.values):n.values||[],r(R,v);var t=u.prototype.helpers.elOffset(b);E.style.minWidth=b.offsetWidth+"px",E.style.top=t.top+b.offsetHeight+"px",E.style.left=t.left+"px",document.body.appendChild(E)}}function m(){E.parentNode&&E.parentNode.removeChild(E),f()}function f(){g.table.rowManager.element.removeEventListener("scroll",h)}var g=this,b=t.getElement(),v=t.getValue(),y=void 0!==v||null===v?v:void 0!==n.defaultValue?n.defaultValue:"",w=document.createElement("input"),E=document.createElement("div"),C=[],x=[],R=[],M={},L=!0;if(this.table.rowManager.element.addEventListener("scroll",h),w.setAttribute("type","search"),w.style.padding="4px",w.style.width="100%",w.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var D in n.elementAttributes)"+"==D.charAt(0)?(D=D.slice(1),w.setAttribute(D,w.getAttribute(D)+n.elementAttributes["+"+D])):w.setAttribute(D,n.elementAttributes[D]);return w.addEventListener("keydown",function(t){var e;switch(t.keyCode){case 38:t.stopImmediatePropagation(),t.stopPropagation(),t.preventDefault(),e=x.indexOf(M),c(e>0?x[e-1]:!1);break;case 40:t.stopImmediatePropagation(),t.stopPropagation(),t.preventDefault(),e=x.indexOf(M),e<x.length-1&&c(-1==e?x[0]:x[e+1]);break;case 37:case 39:t.stopImmediatePropagation(),t.stopPropagation(),t.preventDefault();break;case 13:d();break;case 27:h();break;case 36:case 35:t.stopImmediatePropagation()}}),w.addEventListener("keyup",function(t){switch(t.keyCode){case 38:case 37:case 39:case 40:case 13:case 27:break;default:a(w.value)}}),w.addEventListener("search",function(t){a(w.value)}),w.addEventListener("blur",function(t){L&&d()}),w.addEventListener("focus",function(t){var e=y;p(),w.value=e,a(e,!0)}),E=document.createElement("div"),E.classList.add("tabulator-edit-select-list"),e(function(){w.style.height="100%",w.focus()}),w},star:function(t,e,o,i,n){function s(t){h.forEach(function(e,o){o<t?("ie"==a.table.browser?e.setAttribute("class","tabulator-star-active"):e.classList.replace("tabulator-star-inactive","tabulator-star-active"),e.innerHTML='<polygon fill="#488CE9" stroke="#014AAE" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>'):("ie"==a.table.browser?e.setAttribute("class","tabulator-star-inactive"):e.classList.replace("tabulator-star-active","tabulator-star-inactive"),e.innerHTML='<polygon fill="#010155" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>')})}function r(t){c=t,s(t)}var a=this,l=t.getElement(),c=t.getValue(),u=l.getElementsByTagName("svg").length||5,d=l.getElementsByTagName("svg")[0]?l.getElementsByTagName("svg")[0].getAttribute("width"):14,h=[],p=document.createElement("div"),m=document.createElementNS("http://www.w3.org/2000/svg","svg");if(l.style.whiteSpace="nowrap",l.style.overflow="hidden",l.style.textOverflow="ellipsis",p.style.verticalAlign="middle",p.style.display="inline-block",p.style.padding="4px",m.setAttribute("width",d),m.setAttribute("height",d),m.setAttribute("viewBox","0 0 512 512"),m.setAttribute("xml:space","preserve"),m.style.padding="0 1px",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var f in n.elementAttributes)"+"==f.charAt(0)?(f=f.slice(1),p.setAttribute(f,p.getAttribute(f)+n.elementAttributes["+"+f])):p.setAttribute(f,n.elementAttributes[f]);for(var g=1;g<=u;g++)!function(t){var e=document.createElement("span"),i=m.cloneNode(!0);h.push(i),e.addEventListener("mouseenter",function(e){e.stopPropagation(),e.stopImmediatePropagation(),s(t)}),e.addEventListener("mousemove",function(t){t.stopPropagation(),t.stopImmediatePropagation()}),e.addEventListener("click",function(e){e.stopPropagation(),e.stopImmediatePropagation(),o(t)}),e.appendChild(i),p.appendChild(e)}(g);return c=Math.min(parseInt(c),u),s(c),p.addEventListener("mousemove",function(t){s(0)}),p.addEventListener("click",function(t){o(0)}),l.addEventListener("blur",function(t){i()}),l.addEventListener("keydown",function(t){switch(t.keyCode){case 39:r(c+1);break;case 37:r(c-1);break;case 13:o(c);break;case 27:i()}}),p},progress:function(t,e,o,i,n){function s(){var t=d*Math.round(m.offsetWidth/(l.clientWidth/100))+u;o(t),l.setAttribute("aria-valuenow",t),l.setAttribute("aria-label",h)}var r,a,l=t.getElement(),c=void 0===n.max?l.getElementsByTagName("div")[0].getAttribute("max")||100:n.max,u=void 0===n.min?l.getElementsByTagName("div")[0].getAttribute("min")||0:n.min,d=(c-u)/100,h=t.getValue()||0,p=document.createElement("div"),m=document.createElement("div");if(p.style.position="absolute",p.style.right="0",p.style.top="0",p.style.bottom="0",p.style.width="5px",p.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%",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var f in n.elementAttributes)"+"==f.charAt(0)?(f=f.slice(1),m.setAttribute(f,m.getAttribute(f)+n.elementAttributes["+"+f])):m.setAttribute(f,n.elementAttributes[f]);return l.style.padding="4px 4px",h=Math.min(parseFloat(h),c),h=Math.max(parseFloat(h),u),h=Math.round((h-u)/d),m.style.width=h+"%",l.setAttribute("aria-valuemin",u),l.setAttribute("aria-valuemax",c),m.appendChild(p),p.addEventListener("mousedown",function(t){r=t.screenX,a=m.offsetWidth}),p.addEventListener("mouseover",function(){p.style.cursor="ew-resize"}),l.addEventListener("mousemove",function(t){r&&(m.style.width=a+t.screenX-r+"px")}),l.addEventListener("mouseup",function(t){r&&(t.stopPropagation(),t.stopImmediatePropagation(),r=!1,a=!1,s())}),l.addEventListener("keydown",function(t){switch(t.keyCode){case 39:m.style.width=m.clientWidth+l.clientWidth/100+"px";break;case 37:m.style.width=m.clientWidth-l.clientWidth/100+"px";break;case 13:s();break;case 27:i()}}),l.addEventListener("blur",function(){i()}),m},tickCross:function(t,e,o,i,n){function s(t){return l?t?u?c:a.checked:a.checked&&!u?(a.checked=!1,a.indeterminate=!0,u=!0,c):(u=!1,a.checked):a.checked}var r=t.getValue(),a=document.createElement("input"),l=n.tristate,c=void 0===n.indeterminateValue?null:n.indeterminateValue,u=!1;if(a.setAttribute("type","checkbox"),a.style.marginTop="5px",a.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var d in n.elementAttributes)"+"==d.charAt(0)?(d=d.slice(1),a.setAttribute(d,a.getAttribute(d)+n.elementAttributes["+"+d])):a.setAttribute(d,n.elementAttributes[d]);return a.value=r,!l||void 0!==r&&r!==c&&""!==r||(u=!0,a.indeterminate=!0),"firefox"!=this.table.browser&&e(function(){a.focus()}),a.checked=!0===r||"true"===r||"True"===r||1===r,a.addEventListener("change",function(t){o(s())}),a.addEventListener("blur",function(t){o(s(!0))}),a.addEventListener("keydown",function(t){13==t.keyCode&&o(s()),27==t.keyCode&&i()}),a}},u.prototype.registerModule("edit",w);var E=function(t){this.table=t,this.filterList=[],this.headerFilters={},this.headerFilterElements=[],this.headerFilterColumns=[],this.changed=!1};E.prototype.initializeColumn=function(t,e){function o(e){var o,s="input"==t.modules.filter.tagType&&"text"==t.modules.filter.attrType||"textarea"==t.modules.filter.tagType?"partial":"match",r="";if(void 0===t.modules.filter.prevSuccess||t.modules.filter.prevSuccess!==e){if(t.modules.filter.prevSuccess=e,t.modules.filter.emptyFunc(e))delete i.headerFilters[n];else{switch(t.modules.filter.value=e,_typeof(t.definition.headerFilterFunc)){case"string":i.filters[t.definition.headerFilterFunc]?(r=t.definition.headerFilterFunc,o=function(o){var n=t.definition.headerFilterFuncParams||{},s=t.getFieldValue(o);return n="function"==typeof n?n(e,s,o):n,i.filters[t.definition.headerFilterFunc](e,s,o,n)}):console.warn("Header Filter Error - Matching filter function not found: ",t.definition.headerFilterFunc);break;case"function":o=function(o){var i=t.definition.headerFilterFuncParams||{},n=t.getFieldValue(o);return i="function"==typeof i?i(e,n,o):i,t.definition.headerFilterFunc(e,n,o,i)},r=o}if(!o)switch(s){case"partial":o=function(o){var i=t.getFieldValue(o);return void 0!==i&&null!==i&&String(i).toLowerCase().indexOf(String(e).toLowerCase())>-1},r="like";break;default:o=function(o){return t.getFieldValue(o)==e},r="="}i.headerFilters[n]={value:e,func:o,type:r}}i.changed=!0,i.table.rowManager.filterRefresh()}return!0}var i=this,n=t.getField();t.modules.filter={success:o,attrType:!1,tagType:!1,emptyFunc:!1},this.generateHeaderFilterElement(t)},E.prototype.generateHeaderFilterElement=function(t,e){function o(){}var i,n,s,r,a,l,c,u=this,d=this,h=t.modules.filter.success,p=t.getField();if(t.modules.filter.headerElement&&t.modules.filter.headerElement.parentNode){var m=t.modules.filter.headerElement.parentNode,f=d.headerFilterElements.indexOf(m);f>=0&&d.headerFilterElements.splice(f,1);var g=d.headerFilterColumns.indexOf(g);g>=0&&d.headerFilterColumns.splice(g,1),t.contentElement.removeChild(m)}if(p){switch(t.modules.filter.emptyFunc=t.definition.headerFilterEmptyCheck||function(t){return!t&&"0"!==t},i=document.createElement("div"),i.classList.add("tabulator-header-filter"),_typeof(t.definition.headerFilter)){case"string":d.table.modules.edit.editors[t.definition.headerFilter]?(n=d.table.modules.edit.editors[t.definition.headerFilter],"tick"!==t.definition.headerFilter&&"tickCross"!==t.definition.headerFilter||t.definition.headerFilterEmptyCheck||(t.modules.filter.emptyFunc=function(t){return!0!==t&&!1!==t})):console.warn("Filter Error - Cannot build header filter, No such editor found: ",t.definition.editor);break;case"function":n=t.definition.headerFilter;break;case"boolean":t.modules.edit&&t.modules.edit.editor?n=t.modules.edit.editor:t.definition.formatter&&d.table.modules.edit.editors[t.definition.formatter]?(n=d.table.modules.edit.editors[t.definition.formatter],"tick"!==t.definition.formatter&&"tickCross"!==t.definition.formatter||t.definition.headerFilterEmptyCheck||(t.modules.filter.emptyFunc=function(t){return!0!==t&&!1!==t})):n=d.table.modules.edit.editors.input}if(n){if(r={getValue:function(){return void 0!==e?e:""},getField:function(){return t.definition.field},getElement:function(){return i},getColumn:function(){return t.getComponent()},getRow:function(){return{normalizeHeight:function(){}}}},c=t.definition.headerFilterParams||{},c="function"==typeof c?c.call(d.table):c,!(s=n.call(this.table.modules.edit,r,function(){},h,o,c)))return void console.warn("Filter Error - Cannot add filter to "+p+" column, editor returned a value of false");if(!(s instanceof Node))return void console.warn("Filter Error - Cannot add filter to "+p+" column, editor should return an instance of Node, the editor returned:",s);p?d.table.modules.localize.bind("headerFilters|columns|"+t.definition.field,function(t){s.setAttribute("placeholder",void 0!==t&&t?t:d.table.modules.localize.getText("headerFilters|default"))}):d.table.modules.localize.bind("headerFilters|default",function(t){s.setAttribute("placeholder",void 0!==d.column.definition.headerFilterPlaceholder&&d.column.definition.headerFilterPlaceholder?d.column.definition.headerFilterPlaceholder:t)}),s.addEventListener("click",function(t){t.stopPropagation(),s.focus()}),s.addEventListener("focus",function(t){var e=u.table.columnManager.element.scrollLeft;e!==u.table.rowManager.element.scrollLeft&&(u.table.rowManager.scrollHorizontal(e),u.table.columnManager.scrollHorizontal(e))}),a=!1,l=function(t){a&&clearTimeout(a),a=setTimeout(function(){h(s.value)},300)},t.modules.filter.headerElement=s,t.modules.filter.attrType=s.hasAttribute("type")?s.getAttribute("type").toLowerCase():"",t.modules.filter.tagType=s.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)&&(s.addEventListener("keyup",l),s.addEventListener("search",l),"number"==t.modules.filter.attrType&&s.addEventListener("change",function(t){h(s.value)}),"text"==t.modules.filter.attrType&&"ie"!==this.table.browser&&s.setAttribute("type","search")),"input"!=t.modules.filter.tagType&&"select"!=t.modules.filter.tagType&&"textarea"!=t.modules.filter.tagType||s.addEventListener("mousedown",function(t){t.stopPropagation()})),i.appendChild(s),t.contentElement.appendChild(i),d.headerFilterElements.push(s),d.headerFilterColumns.push(t)}}else console.warn("Filter Error - Cannot add header filter, column has no field set:",t.definition.title)},E.prototype.hideHeaderFilterElements=function(){this.headerFilterElements.forEach(function(t){t.style.display="none"})},E.prototype.showHeaderFilterElements=function(){this.headerFilterElements.forEach(function(t){t.style.display=""})},E.prototype.setHeaderFilterFocus=function(t){t.modules.filter&&t.modules.filter.headerElement?t.modules.filter.headerElement.focus():console.warn("Column Filter Focus Error - No header filter set on column:",t.getField())},E.prototype.setHeaderFilterValue=function(t,e){t&&(t.modules.filter&&t.modules.filter.headerElement?(this.generateHeaderFilterElement(t,e),t.modules.filter.success(e)):console.warn("Column Filter Error - No header filter set on column:",t.getField()))},E.prototype.reloadHeaderFilter=function(t){t&&(t.modules.filter&&t.modules.filter.headerElement?this.generateHeaderFilterElement(t,t.modules.filter.value):console.warn("Column Filter Error - No header filter set on column:",t.getField()))},E.prototype.hasChanged=function(){var t=this.changed;return this.changed=!1,t},E.prototype.setFilter=function(t,e,o){var i=this;i.filterList=[],Array.isArray(t)||(t=[{field:t,type:e,value:o}]),i.addFilter(t)},E.prototype.addFilter=function(t,e,o){var i=this;Array.isArray(t)||(t=[{field:t,type:e,value:o}]),t.forEach(function(t){(t=i.findFilter(t))&&(i.filterList.push(t),i.changed=!0)}),this.table.options.persistentFilter&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("filter")},E.prototype.findFilter=function(t){var e,o=this;if(Array.isArray(t))return this.findSubFilters(t);var i=!1;return"function"==typeof t.field?i=function(e){return t.field(e,t.type||{})}:o.filters[t.type]?(e=o.table.columnManager.getColumnByField(t.field),i=e?function(i){return o.filters[t.type](t.value,e.getFieldValue(i))}:function(e){return o.filters[t.type](t.value,e[t.field])}):console.warn("Filter Error - No such filter type found, ignoring: ",t.type),t.func=i,!!t.func&&t},E.prototype.findSubFilters=function(t){var e=this,o=[];return t.forEach(function(t){(t=e.findFilter(t))&&o.push(t)}),!!o.length&&o},E.prototype.getFilters=function(t,e){var o=[];return t&&(o=this.getHeaderFilters()),e&&o.forEach(function(t){"function"==typeof t.type&&(t.type="function")}),o=o.concat(this.filtersToArray(this.filterList,e))},E.prototype.filtersToArray=function(t,e){var o=this,i=[];return t.forEach(function(t){var n;Array.isArray(t)?i.push(o.filtersToArray(t,e)):(n={field:t.field,type:t.type,value:t.value},e&&"function"==typeof n.type&&(n.type="function"),i.push(n))}),i},E.prototype.getHeaderFilters=function(){var t=[];for(var e in this.headerFilters)t.push({field:e,type:this.headerFilters[e].type,value:this.headerFilters[e].value});return t},E.prototype.removeFilter=function(t,e,o){var i=this;Array.isArray(t)||(t=[{field:t,type:e,value:o}]),t.forEach(function(t){var e=-1;e="object"==_typeof(t.field)?i.filterList.findIndex(function(e){return t===e}):i.filterList.findIndex(function(e){return t.field===e.field&&t.type===e.type&&t.value===e.value}),e>-1?(i.filterList.splice(e,1),i.changed=!0):console.warn("Filter Error - No matching filter type found, ignoring: ",t.type)}),this.table.options.persistentFilter&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("filter")},E.prototype.clearFilter=function(t){this.filterList=[],t&&this.clearHeaderFilter(),this.changed=!0,this.table.options.persistentFilter&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("filter")},E.prototype.clearHeaderFilter=function(){var t=this;this.headerFilters={},this.headerFilterColumns.forEach(function(e){e.modules.filter.value=null,e.modules.filter.prevSuccess=void 0,t.reloadHeaderFilter(e)}),this.changed=!0},E.prototype.search=function(t,e,o,i){var n=this,s=[],r=[];return Array.isArray(e)||(e=[{field:e,type:o,value:i}]),e.forEach(function(t){(t=n.findFilter(t))&&r.push(t)}),this.table.rowManager.rows.forEach(function(e){var o=!0;r.forEach(function(t){n.filterRecurse(t,e.getData())||(o=!1)}),o&&s.push("data"===t?e.getData("data"):e.getComponent())}),s},E.prototype.filter=function(t,e){
+var o=this,i=[],n=[];return o.table.options.dataFiltering&&o.table.options.dataFiltering.call(o.table,o.getFilters()),o.table.options.ajaxFiltering||!o.filterList.length&&!Object.keys(o.headerFilters).length?i=t.slice(0):t.forEach(function(t){o.filterRow(t)&&i.push(t)}),o.table.options.dataFiltered&&(i.forEach(function(t){n.push(t.getComponent())}),o.table.options.dataFiltered.call(o.table,o.getFilters(),n)),i},E.prototype.filterRow=function(t,e){var o=this,i=!0,n=t.getData();o.filterList.forEach(function(t){o.filterRecurse(t,n)||(i=!1)});for(var s in o.headerFilters)o.headerFilters[s].func(n)||(i=!1);return i},E.prototype.filterRecurse=function(t,e){var o=this,i=!1;return Array.isArray(t)?t.forEach(function(t){o.filterRecurse(t,e)&&(i=!0)}):i=t.func(e),i},E.prototype.filters={"=":function(t,e,o,i){return e==t},"<":function(t,e,o,i){return e<t},"<=":function(t,e,o,i){return e<=t},">":function(t,e,o,i){return e>t},">=":function(t,e,o,i){return e>=t},"!=":function(t,e,o,i){return e!=t},regex:function(t,e,o,i){return"string"==typeof t&&(t=new RegExp(t)),t.test(e)},like:function(t,e,o,i){return null===t||void 0===t?e===t:void 0!==e&&null!==e&&String(e).toLowerCase().indexOf(t.toLowerCase())>-1},in:function(t,e,o,i){return Array.isArray(t)?t.indexOf(e)>-1:(console.warn("Filter Error - filter value is not an array:",t),!1)}},u.prototype.registerModule("filter",E);var C=function(t){this.table=t};C.prototype.initializeColumn=function(t){var e=this,o={params:t.definition.formatterParams||{}};switch(_typeof(t.definition.formatter)){case"string":"tick"===t.definition.formatter&&(t.definition.formatter="tickCross",void 0===o.params.crossElement&&(o.params.crossElement=!1),console.warn("DEPRECATION WARNING - the tick formatter has been deprecated, please use the tickCross formatter with the crossElement param set to false")),e.formatters[t.definition.formatter]?o.formatter=e.formatters[t.definition.formatter]:(console.warn("Formatter Error - No such formatter found: ",t.definition.formatter),o.formatter=e.formatters.plaintext);break;case"function":o.formatter=t.definition.formatter;break;default:o.formatter=e.formatters.plaintext}t.modules.format=o},C.prototype.cellRendered=function(t){t.column.modules.format.renderedCallback&&t.column.modules.format.renderedCallback()},C.prototype.formatValue=function(t){function e(e){t.column.modules.format.renderedCallback=e}var o=t.getComponent(),i="function"==typeof t.column.modules.format.params?t.column.modules.format.params(o):t.column.modules.format.params;return t.column.modules.format.formatter.call(this,o,i,e)},C.prototype.sanitizeHTML=function(t){if(t){var e={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;","`":"&#x60;","=":"&#x3D;"};return String(t).replace(/[&<>"'`=\/]/g,function(t){return e[t]})}return t},C.prototype.emptyToSpace=function(t){return null===t||void 0===t?"&nbsp;":t},C.prototype.getFormatter=function(t){var t;switch(void 0===t?"undefined":_typeof(t)){case"string":this.formatters[t]?t=this.formatters[t]:(console.warn("Formatter Error - No such formatter found: ",t),t=this.formatters.plaintext);break;case"function":t=t;break;default:t=this.formatters.plaintext}return t},C.prototype.formatters={plaintext:function(t,e,o){return this.emptyToSpace(this.sanitizeHTML(t.getValue()))},html:function(t,e,o){return t.getValue()},textarea:function(t,e,o){return t.getElement().style.whiteSpace="pre-wrap",this.emptyToSpace(this.sanitizeHTML(t.getValue()))},money:function(t,e,o){var i,n,s,r,a=parseFloat(t.getValue()),l=e.decimal||".",c=e.thousand||",",u=e.symbol||"",d=!!e.symbolAfter,h=void 0!==e.precision?e.precision:2;if(isNaN(a))return this.emptyToSpace(this.sanitizeHTML(t.getValue()));for(i=!1!==h?a.toFixed(h):a,i=String(i).split("."),n=i[0],s=i.length>1?l+i[1]:"",r=/(\d+)(\d{3})/;r.test(n);)n=n.replace(r,"$1"+c+"$2");return d?n+s+u:u+n+s},link:function(t,e,o){var i,n=t.getValue(),s=e.urlPrefix||"",r=n,a=document.createElement("a");if(e.labelField&&(i=t.getData(),r=i[e.labelField]),e.label)switch(_typeof(e.label)){case"string":r=e.label;break;case"function":r=e.label(t)}if(r){if(e.urlField&&(i=t.getData(),n=i[e.urlField]),e.url)switch(_typeof(e.url)){case"string":n=e.url;break;case"function":n=e.url(t)}return a.setAttribute("href",s+n),e.target&&a.setAttribute("target",e.target),a.innerHTML=this.emptyToSpace(this.sanitizeHTML(r)),a}return"&nbsp;"},image:function(t,e,o){var i=document.createElement("img");switch(i.setAttribute("src",t.getValue()),_typeof(e.height)){case"number":i.style.height=e.height+"px";break;case"string":i.style.height=e.height}switch(_typeof(e.width)){case"number":i.style.width=e.width+"px";break;case"string":i.style.width=e.width}return i.addEventListener("load",function(){t.getRow().normalizeHeight()}),i},tickCross:function(t,e,o){var i=t.getValue(),n=t.getElement(),s=e.allowEmpty,r=e.allowTruthy,a=void 0!==e.tickElement?e.tickElement:'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>',l=void 0!==e.crossElement?e.crossElement:'<svg enable-background="new 0 0 24 24" height="14" width="14"  viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';return r&&i||!0===i||"true"===i||"True"===i||1===i||"1"===i?(n.setAttribute("aria-checked",!0),a||""):!s||"null"!==i&&""!==i&&null!==i&&void 0!==i?(n.setAttribute("aria-checked",!1),l||""):(n.setAttribute("aria-checked","mixed"),"")},datetime:function(t,e,o){var i=e.inputFormat||"YYYY-MM-DD hh:mm:ss",n=e.outputFormat||"DD/MM/YYYY hh:mm:ss",s=void 0!==e.invalidPlaceholder?e.invalidPlaceholder:"",r=t.getValue(),a=moment(r,i);return a.isValid()?a.format(n):!0===s?r:"function"==typeof s?s(r):s},datetimediff:function(t,e,o){var i=e.inputFormat||"YYYY-MM-DD hh:mm:ss",n=void 0!==e.invalidPlaceholder?e.invalidPlaceholder:"",s=void 0!==e.suffix&&e.suffix,r=void 0!==e.unit?e.unit:void 0,a=void 0!==e.humanize&&e.humanize,l=void 0!==e.date?e.date:moment(),c=t.getValue(),u=moment(c,i);return u.isValid()?a?moment.duration(u.diff(l)).humanize(s):u.diff(l,r)+(s?" "+s:""):!0===n?c:"function"==typeof n?n(c):n},lookup:function(t,e,o){var i=t.getValue();return void 0===e[i]?(console.warn("Missing display value for "+i),i):e[i]},star:function(t,e,o){var i=t.getValue(),n=t.getElement(),s=e&&e.stars?e.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",i=i&&!isNaN(i)?parseInt(i):0,i=Math.max(0,Math.min(i,s));for(var l=1;l<=s;l++){var c=a.cloneNode(!0);c.innerHTML=l<=i?'<polygon fill="#FFEA00" stroke="#C1AB60" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>':'<polygon fill="#D2D2D2" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>',r.appendChild(c)}return n.style.whiteSpace="nowrap",n.style.overflow="hidden",n.style.textOverflow="ellipsis",n.setAttribute("aria-label",i),r},traffic:function(t,e,o){var i,n,s=this.sanitizeHTML(t.getValue())||0,r=document.createElement("span"),a=e&&e.max?e.max:100,l=e&&e.min?e.min:0,c=e&&void 0!==e.color?e.color:["red","orange","green"],u="#666666";if(!isNaN(s)&&void 0!==t.getValue()){switch(r.classList.add("tabulator-traffic-light"),n=parseFloat(s)<=a?parseFloat(s):a,n=parseFloat(n)>=l?parseFloat(n):l,i=(a-l)/100,n=Math.round((n-l)/i),void 0===c?"undefined":_typeof(c)){case"string":u=c;break;case"function":u=c(s);break;case"object":if(Array.isArray(c)){var d=100/c.length,h=Math.floor(n/d);h=Math.min(h,c.length-1),h=Math.max(h,0),u=c[h];break}}return r.style.backgroundColor=u,r}},progress:function(t,e,o){var i,n,s,r,a,l=this.sanitizeHTML(t.getValue())||0,c=t.getElement(),u=e&&e.max?e.max:100,d=e&&e.min?e.min:0,h=e&&e.legendAlign?e.legendAlign:"center";switch(n=parseFloat(l)<=u?parseFloat(l):u,n=parseFloat(n)>=d?parseFloat(n):d,i=(u-d)/100,n=Math.round((n-d)/i),_typeof(e.color)){case"string":s=e.color;break;case"function":s=e.color(l);break;case"object":if(Array.isArray(e.color)){var p=100/e.color.length,m=Math.floor(n/p);m=Math.min(m,e.color.length-1),m=Math.max(m,0),s=e.color[m];break}default:s="#2DC214"}switch(_typeof(e.legend)){case"string":r=e.legend;break;case"function":r=e.legend(l);break;case"boolean":r=l;break;default:r=!1}switch(_typeof(e.legendColor)){case"string":a=e.legendColor;break;case"function":a=e.legendColor(l);break;case"object":if(Array.isArray(e.legendColor)){var p=100/e.legendColor.length,m=Math.floor(n/p);m=Math.min(m,e.legendColor.length-1),m=Math.max(m,0),a=e.legendColor[m]}break;default:a="#000"}return c.style.minWidth="30px",c.style.position="relative",c.setAttribute("aria-label",n),"<div style='position:relative; height:100%;'  data-max='"+u+"' data-min='"+d+"'><div style='position:relative; height:100%; width:calc("+n+"%); background-color:"+s+"; display:inline-block;'></div></div>"+(r?"<div style='position:absolute; top:4px; left:0; text-align:"+h+"; width:100%; color:"+a+";'>"+r+"</div>":"")},color:function(t,e,o){return t.getElement().style.backgroundColor=this.sanitizeHTML(t.getValue()),""},buttonTick:function(t,e,o){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>'},buttonCross:function(t,e,o){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>'},rownum:function(t,e,o){return this.table.rowManager.activeRows.indexOf(t.getRow()._getSelf())+1},handle:function(t,e,o){return t.getElement().classList.add("tabulator-row-handle"),"<div class='tabulator-row-handle-box'><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div></div>"},responsiveCollapse:function(t,e,o){function i(e){var o=t.getRow().getElement().getElementsByClassName("tabulator-responsive-collapse")[0];s=e,s?(r.classList.add("open"),o&&(o.style.display="")):(r.classList.remove("open"),o&&(o.style.display="none"))}var n=this,s=!1,r=document.createElement("div");return r.classList.add("tabulator-responsive-collapse-toggle"),r.innerHTML="<span class='tabulator-responsive-collapse-toggle-open'>+</span><span class='tabulator-responsive-collapse-toggle-close'>-</span>",t.getElement().classList.add("tabulator-row-handle"),n.table.options.responsiveLayoutCollapseStartOpen&&(s=!0),r.addEventListener("click",function(t){t.stopImmediatePropagation(),i(!s)}),i(s),r},rowSelection:function(t){var e=this,o=document.createElement("input");if(o.type="checkbox",this.table.modExists("selectRow",!0))if(o.addEventListener("click",function(t){t.stopPropagation()}),"function"==typeof t.getRow){var i=t.getRow();o.addEventListener("change",function(t){i.toggleSelect()}),o.checked=i.isSelected(),this.table.modules.selectRow.registerRowSelectCheckbox(i,o)}else o.addEventListener("change",function(t){e.table.modules.selectRow.selectedRows.length?e.table.deselectRow():e.table.selectRow()}),this.table.modules.selectRow.registerHeaderSelectCheckbox(o);return o}},u.prototype.registerModule("format",C);var x=function(t){this.table=t,this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightPadding=0,this.initializationMode="left",this.active=!1,this.scrollEndTimer=!1};x.prototype.reset=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},x.prototype.initializeColumn=function(t){var e={margin:0,edge:!1};t.definition.frozen?t.parent.isGroup?console.warn("Frozen Column Error - Grouped columns cannot be frozen"):t.isGroup?console.warn("Frozen Column Error - Column Groups cannot be frozen"):(e.position=this.initializationMode,"left"==this.initializationMode?this.leftColumns.push(t):this.rightColumns.unshift(t),this.active=!0,t.modules.frozen=e):this.initializationMode="right"},x.prototype.scrollHorizontal=function(){var t,e=this;this.active&&(clearTimeout(this.scrollEndTimer),this.scrollEndTimer=setTimeout(function(){e.layout()},100),t=this.table.rowManager.getVisibleRows(),this.calcMargins(),this.layoutColumnPosition(),this.layoutCalcRows(),t.forEach(function(t){"row"===t.type&&e.layoutRow(t)}),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},x.prototype.calcMargins=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},x.prototype.layoutCalcRows=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))},x.prototype.layoutColumnPosition=function(t){var e=this;this.leftColumns.forEach(function(o,i){o.modules.frozen.margin=e._calcSpace(e.leftColumns,i)+e.table.columnManager.scrollLeft+"px",i==e.leftColumns.length-1?o.modules.frozen.edge=!0:o.modules.frozen.edge=!1,e.layoutElement(o.getElement(),o),t&&o.cells.forEach(function(t){e.layoutElement(t.getElement(),o)})}),this.rightColumns.forEach(function(o,i){o.modules.frozen.margin=e.rightPadding-e._calcSpace(e.rightColumns,i+1)+"px",i==e.rightColumns.length-1?o.modules.frozen.edge=!0:o.modules.frozen.edge=!1,e.layoutElement(o.getElement(),o),t&&o.cells.forEach(function(t){e.layoutElement(t.getElement(),o)})})},x.prototype.layout=function(){var t=this;t.active&&(this.calcMargins(),t.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&t.layoutRow(e)}),this.layoutCalcRows(),this.layoutColumnPosition(!0),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},x.prototype.layoutRow=function(t){var e=this;t.getElement().style.paddingLeft=this.leftMargin,this.leftColumns.forEach(function(o){var i=t.getCell(o);i&&e.layoutElement(i.getElement(),o)}),this.rightColumns.forEach(function(o){var i=t.getCell(o);i&&e.layoutElement(i.getElement(),o)})},x.prototype.layoutElement=function(t,e){e.modules.frozen&&(t.style.position="absolute",t.style.left=e.modules.frozen.margin,t.classList.add("tabulator-frozen"),e.modules.frozen.edge&&t.classList.add("tabulator-frozen-"+e.modules.frozen.position))},x.prototype._calcSpace=function(t,e){for(var o=0,i=0;i<e;i++)t[i].visible&&(o+=t[i].getWidth());return o},u.prototype.registerModule("frozenColumns",x);var R=function(t){this.table=t,this.topElement=document.createElement("div"),this.rows=[],this.displayIndex=0};R.prototype.initialize=function(){this.rows=[],this.topElement.classList.add("tabulator-frozen-rows-holder"),this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling)},R.prototype.setDisplayIndex=function(t){this.displayIndex=t},R.prototype.getDisplayIndex=function(){return this.displayIndex},R.prototype.isFrozen=function(){return!!this.rows.length},R.prototype.getRows=function(t){var e=t.slice(0);return this.rows.forEach(function(t){var o=e.indexOf(t);o>-1&&e.splice(o,1)}),e},R.prototype.freezeRow=function(t){t.modules.frozen?console.warn("Freeze Error - Row is already frozen"):(t.modules.frozen=!0,this.topElement.appendChild(t.getElement()),t.initialize(),t.normalizeHeight(),this.table.rowManager.adjustTableSize(),this.rows.push(t),this.table.rowManager.refreshActiveData("display"),this.styleRows())},R.prototype.unfreezeRow=function(t){var e=this.rows.indexOf(t);if(t.modules.frozen){t.modules.frozen=!1;var o=t.getElement();o.parentNode.removeChild(o),this.table.rowManager.adjustTableSize(),this.rows.splice(e,1),this.table.rowManager.refreshActiveData("display"),this.rows.length&&this.styleRows()}else console.warn("Freeze Error - Row is already unfrozen")},R.prototype.styleRows=function(t){var e=this;this.rows.forEach(function(t,o){e.table.rowManager.styleRow(t,o)})},u.prototype.registerModule("frozenRows",R);var M=function(t){this._group=t,this.type="GroupComponent"};M.prototype.getKey=function(){return this._group.key},M.prototype.getField=function(){return this._group.field},M.prototype.getElement=function(){return this._group.element},M.prototype.getRows=function(){return this._group.getRows(!0)},M.prototype.getSubGroups=function(){return this._group.getSubGroups(!0)},M.prototype.getParentGroup=function(){return!!this._group.parent&&this._group.parent.getComponent()},M.prototype.getVisibility=function(){return this._group.visible},M.prototype.show=function(){this._group.show()},M.prototype.hide=function(){this._group.hide()},M.prototype.toggle=function(){this._group.toggleVisibility()},M.prototype._getSelf=function(){return this._group},M.prototype.getTable=function(){return this._group.groupManager.table};var L=function(t,e,o,i,n,s,r){this.groupManager=t,this.parent=e,this.key=i,this.level=o,this.field=n,this.hasSubGroups=o<t.groupIDLookups.length-1,this.addRow=this.hasSubGroups?this._addRowToGroup:this._addRow,this.type="group",this.old=r,this.rows=[],this.groups=[],this.groupList=[],this.generator=s,this.elementContents=!1,this.height=0,this.outerHeight=0,this.initialized=!1,this.calcs={},this.initialized=!1,this.modules={},this.arrowElement=!1,this.visible=r?r.visible:void 0!==t.startOpen[o]?t.startOpen[o]:t.startOpen[0],this.createElements(),this.addBindings(),this.createValueGroups()};L.prototype.wipe=function(){this.groupList.length?this.groupList.forEach(function(t){t.wipe()}):(this.element=!1,this.arrowElement=!1,this.elementContents=!1)},L.prototype.createElements=function(){this.element=document.createElement("div"),this.element.classList.add("tabulator-row"),this.element.classList.add("tabulator-group"),this.element.classList.add("tabulator-group-level-"+this.level),this.element.setAttribute("role","rowgroup"),this.arrowElement=document.createElement("div"),this.arrowElement.classList.add("tabulator-arrow"),!1!==this.groupManager.table.options.movableRows&&this.groupManager.table.modExists("moveRow")&&this.groupManager.table.modules.moveRow.initializeGroupHeader(this)},L.prototype.createValueGroups=function(){var t=this,e=this.level+1;this.groupManager.allowedValues&&this.groupManager.allowedValues[e]&&this.groupManager.allowedValues[e].forEach(function(o){t._createGroup(o,e)})},L.prototype.addBindings=function(){var t,e,o,i,n=this;n.groupManager.table.options.groupClick&&n.element.addEventListener("click",function(t){n.groupManager.table.options.groupClick(t,n.getComponent())}),n.groupManager.table.options.groupDblClick&&n.element.addEventListener("dblclick",function(t){n.groupManager.table.options.groupDblClick(t,n.getComponent())}),n.groupManager.table.options.groupContext&&n.element.addEventListener("contextmenu",function(t){n.groupManager.table.options.groupContext(t,n.getComponent())}),n.groupManager.table.options.groupTap&&(o=!1,n.element.addEventListener("touchstart",function(t){o=!0},{passive:!0}),n.element.addEventListener("touchend",function(t){o&&n.groupManager.table.options.groupTap(t,n.getComponent()),o=!1})),n.groupManager.table.options.groupDblTap&&(t=null,n.element.addEventListener("touchend",function(e){t?(clearTimeout(t),t=null,n.groupManager.table.options.groupDblTap(e,n.getComponent())):t=setTimeout(function(){clearTimeout(t),t=null},300)})),n.groupManager.table.options.groupTapHold&&(e=null,n.element.addEventListener("touchstart",function(t){clearTimeout(e),e=setTimeout(function(){clearTimeout(e),e=null,o=!1,n.groupManager.table.options.groupTapHold(t,n.getComponent())},1e3)},{passive:!0}),n.element.addEventListener("touchend",function(t){clearTimeout(e),e=null})),n.groupManager.table.options.groupToggleElement&&(i="arrow"==n.groupManager.table.options.groupToggleElement?n.arrowElement:n.element,i.addEventListener("click",function(t){t.stopPropagation(),t.stopImmediatePropagation(),n.toggleVisibility()}))},L.prototype._createGroup=function(t,e){var o=e+"_"+t,i=new L(this.groupManager,this,e,t,this.groupManager.groupIDLookups[e].field,this.groupManager.headerGenerator[e]||this.groupManager.headerGenerator[0],!!this.old&&this.old.groups[o]);this.groups[o]=i,this.groupList.push(i)},L.prototype._addRowToGroup=function(t){var e=this.level+1;if(this.hasSubGroups){var o=this.groupManager.groupIDLookups[e].func(t.getData()),i=e+"_"+o;this.groupManager.allowedValues&&this.groupManager.allowedValues[e]?this.groups[i]&&this.groups[i].addRow(t):(this.groups[i]||this._createGroup(o,e),this.groups[i].addRow(t))}},L.prototype._addRow=function(t){this.rows.push(t),t.modules.group=this},L.prototype.insertRow=function(t,e,o){var i=this.conformRowData({});t.updateData(i);var n=this.rows.indexOf(e);n>-1?o?this.rows.splice(n+1,0,t):this.rows.splice(n,0,t):o?this.rows.push(t):this.rows.unshift(t),t.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)},L.prototype.scrollHeader=function(t){this.arrowElement.style.marginLeft=t,this.groupList.forEach(function(e){e.scrollHeader(t)})},L.prototype.getRowIndex=function(t){},L.prototype.conformRowData=function(t){return this.field?t[this.field]=this.key:console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function"),this.parent&&(t=this.parent.conformRowData(t)),t},L.prototype.removeRow=function(t){var e=this.rows.indexOf(t),o=t.getElement();e>-1&&this.rows.splice(e,1),this.groupManager.table.options.groupValues||this.rows.length?(o.parentNode&&o.parentNode.removeChild(o),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))},L.prototype.removeGroup=function(t){var e,o=t.level+"_"+t.key;this.groups[o]&&(delete this.groups[o],e=this.groupList.indexOf(t),e>-1&&this.groupList.splice(e,1),this.groupList.length||(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this)))},L.prototype.getHeadersAndRows=function(t){var e=[];return e.push(this),this._visSet(),this.visible?this.groupList.length?this.groupList.forEach(function(o){e=e.concat(o.getHeadersAndRows(t))}):(!t&&"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),e.push(this.calcs.top)),e=e.concat(this.rows),!t&&"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),e.push(this.calcs.bottom))):this.groupList.length||"table"==this.groupManager.table.options.columnCalcs||this.groupManager.table.modExists("columnCalcs")&&(!t&&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),e.push(this.calcs.top))),!t&&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),e.push(this.calcs.bottom)))),e},L.prototype.getData=function(t,e){var o=[];return this._visSet(),(!t||t&&this.visible)&&this.rows.forEach(function(t){o.push(t.getData(e||"data"))}),o},L.prototype.getRowCount=function(){var t=0;return this.groupList.length?this.groupList.forEach(function(e){t+=e.getRowCount()}):t=this.rows.length,t},L.prototype.toggleVisibility=function(){this.visible?this.hide():this.show()},L.prototype.hide=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(t){t.getHeadersAndRows().forEach(function(t){t.detachElement()})}):this.rows.forEach(function(t){var e=t.getElement();e.parentNode.removeChild(e)}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()),this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!1)},L.prototype.show=function(){var t=this;if(t.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=t.getElement();this.groupList.length?this.groupList.forEach(function(t){t.getHeadersAndRows().forEach(function(t){var o=t.getElement();e.parentNode.insertBefore(o,e.nextSibling),t.initialize(),e=o})}):t.rows.forEach(function(t){var o=t.getElement();e.parentNode.insertBefore(o,e.nextSibling),t.initialize(),e=o}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()}this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!0)},L.prototype._visSet=function(){var t=[];"function"==typeof this.visible&&(this.rows.forEach(function(e){t.push(e.getData())}),this.visible=this.visible(this.key,this.getRowCount(),t,this.getComponent()))},L.prototype.getRowGroup=function(t){var e=!1;return this.groupList.length?this.groupList.forEach(function(o){var i=o.getRowGroup(t);i&&(e=i)}):this.rows.find(function(e){return e===t})&&(e=this),e},L.prototype.getSubGroups=function(t){var e=[];return this.groupList.forEach(function(o){e.push(t?o.getComponent():o)}),e},L.prototype.getRows=function(t){var e=[];return this.rows.forEach(function(o){e.push(t?o.getComponent():o)}),e},L.prototype.generateGroupHeaderContents=function(){var t=[];for(this.rows.forEach(function(e){t.push(e.getData())}),this.elementContents=this.generator(this.key,this.getRowCount(),t,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)},L.prototype.getElement=function(){this.addBindingsd=!1,this._visSet(),this.visible?this.element.classList.add("tabulator-group-visible"):this.element.classList.remove("tabulator-group-visible");for(var t=0;t<this.element.childNodes.length;++t)this.element.childNodes[t].parentNode.removeChild(this.element.childNodes[t]);return this.generateGroupHeaderContents(),this.element},L.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},L.prototype.normalizeHeight=function(){this.setHeight(this.element.clientHeight)},L.prototype.initialize=function(t){this.initialized&&!t||(this.normalizeHeight(),this.initialized=!0)},L.prototype.reinitialize=function(){this.initialized=!1,this.height=0,u.prototype.helpers.elVisible(this.element)&&this.initialize(!0)},L.prototype.setHeight=function(t){this.height!=t&&(this.height=t,this.outerHeight=this.element.offsetHeight)},L.prototype.getHeight=function(){return this.outerHeight},L.prototype.getGroup=function(){return this},L.prototype.reinitializeHeight=function(){},L.prototype.calcHeight=function(){},L.prototype.setCellHeight=function(){},L.prototype.clearCellHeight=function(){},L.prototype.getComponent=function(){return new M(this)};var D=function(t){this.table=t,this.groupIDLookups=!1,this.startOpen=[function(){return!1}],this.headerGenerator=[function(){return""}],this.groupList=[],this.allowedValues=!1,this.groups={},this.displayIndex=0};D.prototype.initialize=function(){var t=this,e=t.table.options.groupBy,o=t.table.options.groupStartOpen,i=t.table.options.groupHeader;if(this.allowedValues=t.table.options.groupValues,Array.isArray(e)&&Array.isArray(i)&&e.length>i.length&&console.warn("Error creating group headers, groupHeader array is shorter than groupBy array"),t.headerGenerator=[function(){return""}],this.startOpen=[function(){return!1}],t.table.modules.localize.bind("groups|item",function(e,o){t.headerGenerator[0]=function(t,i,n){
+return(void 0===t?"":t)+"<span>("+i+" "+(1===i?e:o.groups.items)+")</span>"}}),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){var n=this.table.columnManager.getRealColumns();n.forEach(function(e){e.definition.topCalc&&t.table.modules.columnCalcs.initializeTopRow(),e.definition.bottomCalc&&t.table.modules.columnCalcs.initializeBottomRow()})}Array.isArray(e)||(e=[e]),e.forEach(function(e,o){var i,n;"function"==typeof e?i=e:(n=t.table.columnManager.getColumnByField(e),i=n?function(t){return n.getFieldValue(t)}:function(t){return t[e]}),t.groupIDLookups.push({field:"function"!=typeof e&&e,func:i,values:!!t.allowedValues&&t.allowedValues[o]})}),o&&(Array.isArray(o)||(o=[o]),o.forEach(function(t){t="function"==typeof t?t:function(){return!0}}),t.startOpen=o),i&&(t.headerGenerator=Array.isArray(i)?i:[i]),this.initialized=!0},D.prototype.setDisplayIndex=function(t){this.displayIndex=t},D.prototype.getDisplayIndex=function(){return this.displayIndex},D.prototype.getRows=function(t){return this.groupIDLookups.length?(this.table.options.dataGrouping.call(this.table),this.generateGroups(t),this.table.options.dataGrouped&&this.table.options.dataGrouped.call(this.table,this.getGroups(!0)),this.updateGroupRows()):t.slice(0)},D.prototype.getGroups=function(t){var e=[];return this.groupList.forEach(function(o){e.push(t?o.getComponent():o)}),e},D.prototype.wipe=function(){this.groupList.forEach(function(t){t.wipe()})},D.prototype.pullGroupListData=function(t){var e=this,o=[];return t.forEach(function(t){var i={};i.level=0,i.rowCount=0,i.headerContent="";var n=[];t.hasSubGroups?(n=e.pullGroupListData(t.groupList),i.level=t.level,i.rowCount=n.length-t.groupList.length,i.headerContent=t.generator(t.key,i.rowCount,t.rows,t),o.push(i),o=o.concat(n)):(i.level=t.level,i.headerContent=t.generator(t.key,t.rows.length,t.rows,t),i.rowCount=t.getRows().length,o.push(i),t.getRows().forEach(function(t){o.push(t.getData("data"))}))}),o},D.prototype.getGroupedData=function(){return this.pullGroupListData(this.groupList)},D.prototype.getRowGroup=function(t){var e=!1;return this.groupList.forEach(function(o){var i=o.getRowGroup(t);i&&(e=i)}),e},D.prototype.countGroups=function(){return this.groupList.length},D.prototype.generateGroups=function(t){var e=this,o=e.groups;e.groups={},e.groupList=[],this.allowedValues&&this.allowedValues[0]?(this.allowedValues[0].forEach(function(t){e.createGroup(t,0,o)}),t.forEach(function(t){e.assignRowToExistingGroup(t,o)})):t.forEach(function(t){e.assignRowToGroup(t,o)})},D.prototype.createGroup=function(t,e,o){var i,n=e+"_"+t;o=o||[],i=new L(this,!1,e,t,this.groupIDLookups[0].field,this.headerGenerator[0],o[n]),this.groups[n]=i,this.groupList.push(i)},D.prototype.assignRowToGroup=function(t,e){var o=this.groupIDLookups[0].func(t.getData()),i="0_"+o;this.groups[i]||this.createGroup(o,0,e),this.groups[i].addRow(t)},D.prototype.assignRowToExistingGroup=function(t,e){var o=this.groupIDLookups[0].func(t.getData()),i="0_"+o;this.groups[i]&&this.groups[i].addRow(t)},D.prototype.assignRowToGroup=function(t,e){var o=this.groupIDLookups[0].func(t.getData()),i=!this.groups["0_"+o];return i&&this.createGroup(o,0,e),this.groups["0_"+o].addRow(t),!i},D.prototype.updateGroupRows=function(t){var e=this,o=[];if(e.groupList.forEach(function(t){o=o.concat(t.getHeadersAndRows())}),t){var i=e.table.rowManager.setDisplayRows(o,this.getDisplayIndex());!0!==i&&this.setDisplayIndex(i),e.table.rowManager.refreshActiveData("group",!0,!0)}return o},D.prototype.scrollHeaders=function(t){t+="px",this.groupList.forEach(function(e){e.scrollHeader(t)})},D.prototype.removeGroup=function(t){var e,o=t.level+"_"+t.key;this.groups[o]&&(delete this.groups[o],(e=this.groupList.indexOf(t))>-1&&this.groupList.splice(e,1))},u.prototype.registerModule("groupRows",D);var T=function(t){this.table=t,this.history=[],this.index=-1};T.prototype.clear=function(){this.history=[],this.index=-1},T.prototype.action=function(t,e,o){this.history=this.history.slice(0,this.index+1),this.history.push({type:t,component:e,data:o}),this.index++},T.prototype.getHistoryUndoSize=function(){return this.index+1},T.prototype.getHistoryRedoSize=function(){return this.history.length-(this.index+1)},T.prototype.undo=function(){if(this.index>-1){var t=this.history[this.index];return this.undoers[t.type].call(this,t),this.index--,this.table.options.historyUndo.call(this.table,t.type,t.component.getComponent(),t.data),!0}return console.warn("History Undo Error - No more history to undo"),!1},T.prototype.redo=function(){if(this.history.length-1>this.index){this.index++;var t=this.history[this.index];return this.redoers[t.type].call(this,t),this.table.options.historyRedo.call(this.table,t.type,t.component.getComponent(),t.data),!0}return console.warn("History Redo Error - No more history to redo"),!1},T.prototype.undoers={cellEdit:function(t){t.component.setValueProcessData(t.data.oldValue)},rowAdd:function(t){t.component.deleteActual()},rowDelete:function(t){var e=this.table.rowManager.addRowActual(t.data.data,t.data.pos,t.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(t.component,e)},rowMove:function(t){this.table.rowManager.moveRowActual(t.component,this.table.rowManager.rows[t.data.pos],!1),this.table.rowManager.redraw()}},T.prototype.redoers={cellEdit:function(t){t.component.setValueProcessData(t.data.newValue)},rowAdd:function(t){var e=this.table.rowManager.addRowActual(t.data.data,t.data.pos,t.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(t.component,e)},rowDelete:function(t){t.component.deleteActual()},rowMove:function(t){this.table.rowManager.moveRowActual(t.component,this.table.rowManager.rows[t.data.pos],!1),this.table.rowManager.redraw()}},T.prototype._rebindRow=function(t,e){this.history.forEach(function(o){if(o.component instanceof r)o.component===t&&(o.component=e);else if(o.component instanceof l&&o.component.row===t){var i=o.component.column.getField();i&&(o.component=e.getCell(i))}})},u.prototype.registerModule("history",T);var k=function(t){this.table=t,this.fieldIndex=[],this.hasIndex=!1};k.prototype.parseTable=function(){var t=this,e=t.table.element,o=t.table.options,i=(o.columns,e.getElementsByTagName("th")),n=e.getElementsByTagName("tbody")[0],s=[];t.hasIndex=!1,t.table.options.htmlImporting.call(this.table),n=n?n.getElementsByTagName("tr"):[],t._extractOptions(e,o),i.length?t._extractHeaders(i,n):t._generateBlankHeaders(i,n);for(var r=0;r<n.length;r++){var a=n[r],l=a.getElementsByTagName("td"),c={};t.hasIndex||(c[o.index]=r);for(var u=0;u<l.length;u++){var d=l[u];void 0!==this.fieldIndex[u]&&(c[this.fieldIndex[u]]=d.innerHTML)}s.push(c)}var h=document.createElement("div"),p=e.attributes;for(var u in p)"object"==_typeof(p[u])&&h.setAttribute(p[u].name,p[u].value);e.parentNode.replaceChild(h,e),o.data=s,t.table.options.htmlImported.call(this.table),this.table.element=h},k.prototype._extractOptions=function(t,e,o){var i=t.attributes,n=o?Object.assign([],o):Object.keys(e),s={};n.forEach(function(t){s[t.toLowerCase()]=t});for(var r in i){var a,l=i[r];l&&"object"==(void 0===l?"undefined":_typeof(l))&&l.name&&0===l.name.indexOf("tabulator-")&&(a=l.name.replace("tabulator-",""),void 0!==s[a]&&(e[s[a]]=this._attribValue(l.value)))}},k.prototype._attribValue=function(t){return"true"===t||"false"!==t&&t},k.prototype._findCol=function(t){return this.table.options.columns.find(function(e){return e.title===t})||!1},k.prototype._extractHeaders=function(t,e){for(var o=0;o<t.length;o++){var n,s,r=t[o],a=!1,l=this._findCol(r.textContent);l?a=!0:l={title:r.textContent.trim()},l.field||(l.field=r.textContent.trim().toLowerCase().replace(" ","_")),n=r.getAttribute("width"),n&&!l.width&&(l.width=n),s=r.attributes,this._extractOptions(r,l,i.prototype.defaultOptionList);for(var c in s){var u,d=s[c];d&&"object"==(void 0===d?"undefined":_typeof(d))&&d.name&&0===d.name.indexOf("tabulator-")&&(u=d.name.replace("tabulator-",""),l[u]=this._attribValue(d.value))}this.fieldIndex[o]=l.field,l.field==this.table.options.index&&(this.hasIndex=!0),a||this.table.options.columns.push(l)}},k.prototype._generateBlankHeaders=function(t,e){for(var o=0;o<t.length;o++){var i=t[o],n={title:"",field:"col"+o};this.fieldIndex[o]=n.field;var s=i.getAttribute("width");s&&(n.width=s),this.table.options.columns.push(n)}},u.prototype.registerModule("htmlTableImport",k);var S=function(t){this.table=t,this.config={},this.cloneTableStyle=!0,this.colVisProp=""};S.prototype.genereateTable=function(t,e,o,i){this.cloneTableStyle=e,this.config=t||{},this.colVisProp=i;var n=this.generateHeaderElements(),s=this.generateBodyElements(o),r=document.createElement("table");return r.classList.add("tabulator-print-table"),r.appendChild(n),r.appendChild(s),this.mapElementStyles(this.table.element,r,["border-top","border-left","border-right","border-bottom"]),r},S.prototype.generateColumnGroupHeaders=function(){var t=this,e=[];return(!1!==this.config.columnGroups?this.table.columnManager.columns:this.table.columnManager.columnsByIndex).forEach(function(o){var i=t.processColumnGroup(o);i&&e.push(i)}),e},S.prototype.processColumnGroup=function(t){var e=this,o=t.columns,i=0,n={title:t.definition.title,column:t,depth:1};if(o.length){if(n.subGroups=[],n.width=0,o.forEach(function(t){var o=e.processColumnGroup(t);o&&(n.width+=o.width,n.subGroups.push(o),o.depth>i&&(i=o.depth))}),n.depth+=i,!n.width)return!1}else{if(!this.columnVisCheck(t))return!1;n.width=1}return n},S.prototype.groupHeadersToRows=function(t){function e(t,n){var s=i-n;void 0===o[n]&&(o[n]=[]),t.height=t.subGroups?1:s-t.depth+1,o[n].push(t),t.subGroups&&t.subGroups.forEach(function(t){e(t,n+1)})}var o=[],i=0;return t.forEach(function(t){t.depth>i&&(i=t.depth)}),t.forEach(function(t){e(t,0)}),o},S.prototype.generateHeaderElements=function(){var t=this,e=document.createElement("thead");return this.groupHeadersToRows(this.generateColumnGroupHeaders()).forEach(function(o){var i=document.createElement("tr");t.mapElementStyles(t.table.columnManager.getHeadersElement(),e,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),o.forEach(function(e){var o=document.createElement("th");o.colSpan=e.width,o.rowSpan=e.height,o.innerHTML=e.column.definition.title,t.cloneTableStyle&&(o.style.boxSizing="border-box"),t.mapElementStyles(e.column.getElement(),o,["text-align","border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),t.mapElementStyles(e.column.contentElement,o,["padding-top","padding-left","padding-right","padding-bottom"]),e.column.visible?t.mapElementStyles(e.column.getElement(),o,["width"]):e.column.definition.width&&(o.style.width=e.column.definition.width+"px"),e.column.parent&&t.mapElementStyles(e.column.parent.groupElement,o,["border-top"]),i.appendChild(o)}),e.appendChild(i)}),e},S.prototype.generateBodyElements=function(t){var e,o,i,n,s,r,a,l,c=this;this.cloneTableStyle&&window.getComputedStyle&&(e=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),o=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),i=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),n=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),r=this.table.element.getElementsByClassName("tabulator-group")[0],n&&(a=n.getElementsByClassName("tabulator-cell"),s=a[0],a[a.length-1]));var u=document.createElement("tbody"),d=t?this.table.rowManager.getVisibleRows(!0):this.table.rowManager.getDisplayRows(),h=[];return!1!==this.config.columnCalcs&&this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&d.unshift(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&d.push(this.table.modules.columnCalcs.botRow)),this.table.columnManager.columnsByIndex.forEach(function(t){c.columnVisCheck(t)&&h.push(t)}),d=d.filter(function(t){switch(t.type){case"group":return!1!==c.config.rowGroups;case"calc":return!1!==c.config.columnCalcs}return!0}),d.length>1e3&&console.warn("It may take a long time to render an HTML table with more than 1000 rows"),d.forEach(function(t,n){var a=t.getData(),d=document.createElement("tr");switch(d.classList.add("tabulator-print-table-row"),t.type){case"group":var p=document.createElement("td");p.colSpan=h.length,p.innerHTML=t.key,d.classList.add("tabulator-print-table-group"),c.mapElementStyles(r,d,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),c.mapElementStyles(r,p,["padding-top","padding-left","padding-right","padding-bottom"]),d.appendChild(p);break;case"calc":d.classList.add("tabulator-print-table-calcs");case"row":h.forEach(function(e){var o=document.createElement("td"),i=e.getFieldValue(a),n={getValue:function(){return i},getField:function(){return e.defi},getElement:function(){return o},getColumn:function(){return e.getComponent()},getData:function(){return a},getRow:function(){return t.getComponent()},getComponent:function(){return n},column:e};if(c.table.modExists("format"))i=c.table.modules.format.formatValue(n);else switch(void 0===i?"undefined":_typeof(i)){case"object":i=JSON.stringify(i);break;case"undefined":case"null":i="";break;default:i=i}i instanceof Node?o.appendChild(i):o.innerHTML=i,s&&c.mapElementStyles(s,o,["padding-top","padding-left","padding-right","padding-bottom","border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","text-align"]),d.appendChild(o)}),l="calc"==t.type?i:n%2&&o?o:e,c.mapElementStyles(l,d,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"])}u.appendChild(d)}),u},S.prototype.columnVisCheck=function(t){return!1!==t.definition[this.colVisProp]&&(t.visible||!t.visible&&t.definition[this.colVisProp])},S.prototype.getHtml=function(t,e,o){var i=document.createElement("div");return i.appendChild(this.genereateTable(o||this.table.options.htmlOutputConfig,e,t,"htmlOutput")),i.innerHTML},S.prototype.mapElementStyles=function(t,e,o){if(this.cloneTableStyle&&t&&e){var i={"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 n=window.getComputedStyle(t);o.forEach(function(t){e.style[i[t]]=n.getPropertyValue(t)})}}},u.prototype.registerModule("htmlTableExport",S);var F=function(t){this.table=t,this.watchKeys=null,this.pressedKeys=null,this.keyupBinding=!1,this.keydownBinding=!1};F.prototype.initialize=function(){var t=this.table.options.keybindings,e={};if(this.watchKeys={},this.pressedKeys=[],!1!==t){for(var o in this.bindings)e[o]=this.bindings[o];if(Object.keys(t).length)for(var i in t)e[i]=t[i];this.mapBindings(e),this.bindEvents()}},F.prototype.mapBindings=function(t){var e=this,o=this;for(var i in t)!function(i){e.actions[i]?t[i]&&("object"!==_typeof(t[i])&&(t[i]=[t[i]]),t[i].forEach(function(t){o.mapBinding(i,t)})):console.warn("Key Binding Error - no such action:",i)}(i)},F.prototype.mapBinding=function(t,e){var o=this,i={action:this.actions[t],keys:[],ctrl:!1,shift:!1};e.toString().toLowerCase().split(" ").join("").split("+").forEach(function(t){switch(t){case"ctrl":i.ctrl=!0;break;case"shift":i.shift=!0;break;default:t=parseInt(t),i.keys.push(t),o.watchKeys[t]||(o.watchKeys[t]=[]),o.watchKeys[t].push(i)}})},F.prototype.bindEvents=function(){var t=this;this.keyupBinding=function(e){var o=e.keyCode,i=t.watchKeys[o];i&&(t.pressedKeys.push(o),i.forEach(function(o){t.checkBinding(e,o)}))},this.keydownBinding=function(e){var o=e.keyCode;if(t.watchKeys[o]){var i=t.pressedKeys.indexOf(o);i>-1&&t.pressedKeys.splice(i,1)}},this.table.element.addEventListener("keydown",this.keyupBinding),this.table.element.addEventListener("keyup",this.keydownBinding)},F.prototype.clearBindings=function(){this.keyupBinding&&this.table.element.removeEventListener("keydown",this.keyupBinding),this.keydownBinding&&this.table.element.removeEventListener("keyup",this.keydownBinding)},F.prototype.checkBinding=function(t,e){var o=this,i=!0;return t.ctrlKey==e.ctrl&&t.shiftKey==e.shift&&(e.keys.forEach(function(t){-1==o.pressedKeys.indexOf(t)&&(i=!1)}),i&&e.action.call(o,t),!0)},F.prototype.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"},F.prototype.actions={keyBlock:function(t){t.stopPropagation(),t.preventDefault()},scrollPageUp:function(t){var e=this.table.rowManager,o=e.scrollTop-e.height;e.element.scrollHeight;t.preventDefault(),e.displayRowsCount&&(o>=0?e.element.scrollTop=o:e.scrollToRow(e.getDisplayRows()[0])),this.table.element.focus()},scrollPageDown:function(t){var e=this.table.rowManager,o=e.scrollTop+e.height,i=e.element.scrollHeight;t.preventDefault(),e.displayRowsCount&&(o<=i?e.element.scrollTop=o:e.scrollToRow(e.getDisplayRows()[e.displayRowsCount-1])),this.table.element.focus()},scrollToStart:function(t){var e=this.table.rowManager;t.preventDefault(),e.displayRowsCount&&e.scrollToRow(e.getDisplayRows()[0]),this.table.element.focus()},scrollToEnd:function(t){var e=this.table.rowManager;t.preventDefault(),e.displayRowsCount&&e.scrollToRow(e.getDisplayRows()[e.displayRowsCount-1]),this.table.element.focus()},navPrev:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().prev())},navNext:function(t){var e,o=!1,i=this.table.options.tabEndNewRow;this.table.modExists("edit")&&(o=this.table.modules.edit.currentCell)&&(t.preventDefault(),e=o.nav(),e.next()||i&&(i=!0===i?this.table.addRow({}):"function"==typeof i?this.table.addRow(i(o.row.getComponent())):this.table.addRow(i),i.then(function(){e.next()})))},navLeft:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().left())},navRight:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().right())},navUp:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().up())},navDown:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().down())},undo:function(t){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(t.preventDefault(),this.table.modules.history.undo()))},redo:function(t){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(t.preventDefault(),this.table.modules.history.redo()))},copyToClipboard:function(t){this.table.modules.edit.currentCell||this.table.modExists("clipboard",!0)&&this.table.modules.clipboard.copy(this.table.options.selectable&&"highlight"!=this.table.options.selectable?"selected":"active",null,null,null,!0)}},u.prototype.registerModule("keybindings",F);var z=function(t){this.table=t,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)};z.prototype.createPlaceholderElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-col"),t.classList.add("tabulator-col-placeholder"),t},z.prototype.initializeColumn=function(t){var e,o=this,i={};t.modules.frozen||(e=t.getElement(),i.mousemove=function(i){t.parent===o.moving.parent&&((o.touchMove?i.touches[0].pageX:i.pageX)-u.prototype.helpers.elOffset(e).left+o.table.columnManager.element.scrollLeft>t.getWidth()/2?o.toCol===t&&o.toColAfter||(e.parentNode.insertBefore(o.placeholderElement,e.nextSibling),o.moveColumn(t,!0)):(o.toCol!==t||o.toColAfter)&&(e.parentNode.insertBefore(o.placeholderElement,e),o.moveColumn(t,!1)))}.bind(o),e.addEventListener("mousedown",function(e){o.touchMove=!1,1===e.which&&(o.checkTimeout=setTimeout(function(){o.startMove(e,t)},o.checkPeriod))}),e.addEventListener("mouseup",function(t){1===t.which&&o.checkTimeout&&clearTimeout(o.checkTimeout)}),o.bindTouchEvents(t)),t.modules.moveColumn=i},z.prototype.bindTouchEvents=function(t){var e,o,i,n,s,r,a,l=this,c=t.getElement(),u=!1;c.addEventListener("touchstart",function(c){l.checkTimeout=setTimeout(function(){l.touchMove=!0,e=t,o=t.nextColumn(),n=o?o.getWidth()/2:0,i=t.prevColumn(),s=i?i.getWidth()/2:0,r=0,a=0,u=!1,l.startMove(c,t)},l.checkPeriod)},{passive:!0}),c.addEventListener("touchmove",function(c){var d,h;l.moving&&(l.moveHover(c),u||(u=c.touches[0].pageX),d=c.touches[0].pageX-u,d>0?o&&d-r>n&&(h=o)!==t&&(u=c.touches[0].pageX,h.getElement().parentNode.insertBefore(l.placeholderElement,h.getElement().nextSibling),l.moveColumn(h,!0)):i&&-d-a>s&&(h=i)!==t&&(u=c.touches[0].pageX,h.getElement().parentNode.insertBefore(l.placeholderElement,h.getElement()),l.moveColumn(h,!1)),h&&(e=h,o=h.nextColumn(),r=n,n=o?o.getWidth()/2:0,i=h.prevColumn(),a=s,s=i?i.getWidth()/2:0))},{passive:!0}),c.addEventListener("touchend",function(t){l.checkTimeout&&clearTimeout(l.checkTimeout),l.moving&&l.endMove(t)})},z.prototype.startMove=function(t,e){var o=e.getElement();this.moving=e,this.startX=(this.touchMove?t.touches[0].pageX:t.pageX)-u.prototype.helpers.elOffset(o).left,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=e.getWidth()+"px",this.placeholderElement.style.height=e.getHeight()+"px",o.parentNode.insertBefore(this.placeholderElement,o),o.parentNode.removeChild(o),this.hoverElement=o.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(t)},z.prototype._bindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(t){t.modules.moveColumn.mousemove&&t.getElement().addEventListener("mousemove",t.modules.moveColumn.mousemove)})},z.prototype._unbindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(t){t.modules.moveColumn.mousemove&&t.getElement().removeEventListener("mousemove",t.modules.moveColumn.mousemove)})},z.prototype.moveColumn=function(t,e){var o=this.moving.getCells();this.toCol=t,this.toColAfter=e,e?t.getCells().forEach(function(t,e){var i=t.getElement();i.parentNode.insertBefore(o[e].getElement(),i.nextSibling)}):t.getCells().forEach(function(t,e){var i=t.getElement();i.parentNode.insertBefore(o[e].getElement(),i)})},z.prototype.endMove=function(t){(1===t.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)))},z.prototype.moveHover=function(t){var e,o=this,i=o.table.columnManager.getElement(),n=i.scrollLeft,s=(o.touchMove?t.touches[0].pageX:t.pageX)-u.prototype.helpers.elOffset(i).left+n;o.hoverElement.style.left=s-o.startX+"px",s-n<o.autoScrollMargin&&(o.autoScrollTimeout||(o.autoScrollTimeout=setTimeout(function(){e=Math.max(0,n-5),o.table.rowManager.getElement().scrollLeft=e,o.autoScrollTimeout=!1},1))),n+i.clientWidth-s<o.autoScrollMargin&&(o.autoScrollTimeout||(o.autoScrollTimeout=setTimeout(function(){e=Math.min(i.clientWidth,n+5),o.table.rowManager.getElement().scrollLeft=e,o.autoScrollTimeout=!1},1)))},u.prototype.registerModule("moveColumn",z);var _=function(t){this.table=t,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.connections=[],this.connectedTable=!1,this.connectedRow=!1};_.prototype.createPlaceholderElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-row"),t.classList.add("tabulator-row-placeholder"),t},_.prototype.initialize=function(t){this.connection=this.table.options.movableRowsConnectedTables},_.prototype.setHandle=function(t){this.hasHandle=t},_.prototype.initializeGroupHeader=function(t){var e=this,o={};o.mouseup=function(t){e.tableRowDrop(t,row)}.bind(e),o.mousemove=function(o){if(o.pageY-u.prototype.helpers.elOffset(t.element).top+e.table.rowManager.element.scrollTop>t.getHeight()/2){if(e.toRow!==t||!e.toRowAfter){var i=t.getElement();i.parentNode.insertBefore(e.placeholderElement,i.nextSibling),e.moveRow(t,!0)}}else if(e.toRow!==t||e.toRowAfter){var i=t.getElement();i.previousSibling&&(i.parentNode.insertBefore(e.placeholderElement,i),e.moveRow(t,!1))}}.bind(e),t.modules.moveRow=o},_.prototype.initializeRow=function(t){var e,o=this,i={};i.mouseup=function(e){o.tableRowDrop(e,t)}.bind(o),i.mousemove=function(e){if(e.pageY-u.prototype.helpers.elOffset(t.element).top+o.table.rowManager.element.scrollTop>t.getHeight()/2){if(o.toRow!==t||!o.toRowAfter){var i=t.getElement();i.parentNode.insertBefore(o.placeholderElement,i.nextSibling),o.moveRow(t,!0)}}else if(o.toRow!==t||o.toRowAfter){var i=t.getElement();i.parentNode.insertBefore(o.placeholderElement,i),o.moveRow(t,!1)}}.bind(o),this.hasHandle||(e=t.getElement(),e.addEventListener("mousedown",function(e){1===e.which&&(o.checkTimeout=setTimeout(function(){o.startMove(e,t)},o.checkPeriod))}),e.addEventListener("mouseup",function(t){1===t.which&&o.checkTimeout&&clearTimeout(o.checkTimeout)}),this.bindTouchEvents(t,t.getElement())),t.modules.moveRow=i},_.prototype.initializeCell=function(t){var e=this,o=t.getElement();o.addEventListener("mousedown",function(o){1===o.which&&(e.checkTimeout=setTimeout(function(){e.startMove(o,t.row)},e.checkPeriod))}),o.addEventListener("mouseup",function(t){1===t.which&&e.checkTimeout&&clearTimeout(e.checkTimeout)}),this.bindTouchEvents(t.row,t.getElement())},_.prototype.bindTouchEvents=function(t,e){var o,i,n,s,r,a,l,c=this,u=!1;e.addEventListener("touchstart",function(e){c.checkTimeout=setTimeout(function(){c.touchMove=!0,o=t,i=t.nextRow(),s=i?i.getHeight()/2:0,n=t.prevRow(),r=n?n.getHeight()/2:0,a=0,l=0,u=!1,c.startMove(e,t)},c.checkPeriod)},{passive:!0}),this.moving,this.toRow,this.toRowAfter,e.addEventListener("touchmove",function(e){var d,h;c.moving&&(e.preventDefault(),c.moveHover(e),u||(u=e.touches[0].pageY),d=e.touches[0].pageY-u,d>0?i&&d-a>s&&(h=i)!==t&&(u=e.touches[0].pageY,h.getElement().parentNode.insertBefore(c.placeholderElement,h.getElement().nextSibling),c.moveRow(h,!0)):n&&-d-l>r&&(h=n)!==t&&(u=e.touches[0].pageY,h.getElement().parentNode.insertBefore(c.placeholderElement,h.getElement()),c.moveRow(h,!1)),h&&(o=h,i=h.nextRow(),a=s,s=i?i.getHeight()/2:0,n=h.prevRow(),l=r,r=n?n.getHeight()/2:0))}),e.addEventListener("touchend",function(t){c.checkTimeout&&clearTimeout(c.checkTimeout),c.moving&&(c.endMove(t),c.touchMove=!1)})},_.prototype._bindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(t){"row"!==t.type&&"group"!==t.type||!t.modules.moveRow.mousemove||t.getElement().addEventListener("mousemove",t.modules.moveRow.mousemove)})},_.prototype._unbindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(t){"row"!==t.type&&"group"!==t.type||!t.modules.moveRow.mousemove||t.getElement().removeEventListener("mousemove",t.modules.moveRow.mousemove)})},_.prototype.startMove=function(t,e){var o=e.getElement();this.setStartPosition(t,e),this.moving=e,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=e.getWidth()+"px",this.placeholderElement.style.height=e.getHeight()+"px",this.connection?(this.table.element.classList.add("tabulator-movingrow-sending"),this.connectToTables(e)):(o.parentNode.insertBefore(this.placeholderElement,o),o.parentNode.removeChild(o)),this.hoverElement=o.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(t)},_.prototype.setStartPosition=function(t,e){var o,i,n=this.touchMove?t.touches[0].pageX:t.pageX,s=this.touchMove?t.touches[0].pageY:t.pageY;o=e.getElement(),this.connection?(i=o.getBoundingClientRect(),this.startX=i.left-n+window.pageXOffset,this.startY=i.top-s+window.pageYOffset):this.startY=s-o.getBoundingClientRect().top},_.prototype.endMove=function(t){t&&1!==t.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()))},_.prototype.moveRow=function(t,e){this.toRow=t,this.toRowAfter=e},_.prototype.moveHover=function(t){this.connection?this.moveHoverConnections.call(this,t):this.moveHoverTable.call(this,t)},_.prototype.moveHoverTable=function(t){var e=this.table.rowManager.getElement(),o=e.scrollTop,i=(this.touchMove?t.touches[0].pageY:t.pageY)-e.getBoundingClientRect().top+o;this.hoverElement.style.top=i-this.startY+"px"},_.prototype.moveHoverConnections=function(t){this.hoverElement.style.left=this.startX+(this.touchMove?t.touches[0].pageX:t.pageX)+"px",this.hoverElement.style.top=this.startY+(this.touchMove?t.touches[0].pageY:t.pageY)+"px"},
+_.prototype.connectToTables=function(t){var e=this.table.modules.comms.getConnections(this.connection);this.table.options.movableRowsSendingStart.call(this.table,e),this.table.modules.comms.send(this.connection,"moveRow","connect",{row:t})},_.prototype.disconnectFromTables=function(){var t=this.table.modules.comms.getConnections(this.connection);this.table.options.movableRowsSendingStop.call(this.table,t),this.table.modules.comms.send(this.connection,"moveRow","disconnect")},_.prototype.connect=function(t,e){var o=this;return this.connectedTable?(console.warn("Move Row Error - Table cannot accept connection, already connected to table:",this.connectedTable),!1):(this.connectedTable=t,this.connectedRow=e,this.table.element.classList.add("tabulator-movingrow-receiving"),o.table.rowManager.getDisplayRows().forEach(function(t){"row"===t.type&&t.modules.moveRow&&t.modules.moveRow.mouseup&&t.getElement().addEventListener("mouseup",t.modules.moveRow.mouseup)}),o.tableRowDropEvent=o.tableRowDrop.bind(o),o.table.element.addEventListener("mouseup",o.tableRowDropEvent),this.table.options.movableRowsReceivingStart.call(this.table,e,t),!0)},_.prototype.disconnect=function(t){var e=this;t===this.connectedTable?(this.connectedTable=!1,this.connectedRow=!1,this.table.element.classList.remove("tabulator-movingrow-receiving"),e.table.rowManager.getDisplayRows().forEach(function(t){"row"===t.type&&t.modules.moveRow&&t.modules.moveRow.mouseup&&t.getElement().removeEventListener("mouseup",t.modules.moveRow.mouseup)}),e.table.element.removeEventListener("mouseup",e.tableRowDropEvent),this.table.options.movableRowsReceivingStop.call(this.table,t)):console.warn("Move Row Error - trying to disconnect from non connected table")},_.prototype.dropComplete=function(t,e,o){var i=!1;if(o){switch(_typeof(this.table.options.movableRowsSender)){case"string":i=this.senders[this.table.options.movableRowsSender];break;case"function":i=this.table.options.movableRowsSender}i?i.call(this,this.moving.getComponent(),e?e.getComponent():void 0,t):this.table.options.movableRowsSender&&console.warn("Mover Row Error - no matching sender found:",this.table.options.movableRowsSender),this.table.options.movableRowsSent.call(this.table,this.moving.getComponent(),e?e.getComponent():void 0,t)}else this.table.options.movableRowsSentFailed.call(this.table,this.moving.getComponent(),e?e.getComponent():void 0,t);this.endMove()},_.prototype.tableRowDrop=function(t,e){var o=!1,i=!1;switch(t.stopImmediatePropagation(),_typeof(this.table.options.movableRowsReceiver)){case"string":o=this.receivers[this.table.options.movableRowsReceiver];break;case"function":o=this.table.options.movableRowsReceiver}o?i=o.call(this,this.connectedRow.getComponent(),e?e.getComponent():void 0,this.connectedTable):console.warn("Mover Row Error - no matching receiver found:",this.table.options.movableRowsReceiver),i?this.table.options.movableRowsReceived.call(this.table,this.connectedRow.getComponent(),e?e.getComponent():void 0,this.connectedTable):this.table.options.movableRowsReceivedFailed.call(this.table,this.connectedRow.getComponent(),e?e.getComponent():void 0,this.connectedTable),this.table.modules.comms.send(this.connectedTable,"moveRow","dropcomplete",{row:e,success:i})},_.prototype.receivers={insert:function(t,e,o){return this.table.addRow(t.getData(),void 0,e),!0},add:function(t,e,o){return this.table.addRow(t.getData()),!0},update:function(t,e,o){return!!e&&(e.update(t.getData()),!0)},replace:function(t,e,o){return!!e&&(this.table.addRow(t.getData(),void 0,e),e.delete(),!0)}},_.prototype.senders={delete:function(t,e,o){t.delete()}},_.prototype.commsReceived=function(t,e,o){switch(e){case"connect":return this.connect(t,o.row);case"disconnect":return this.disconnect(t);case"dropcomplete":return this.dropComplete(t,o.row,o.success)}},u.prototype.registerModule("moveRow",_);var H=function(t){this.table=t,this.allowedTypes=["","data","edit","clipboard"],this.enabled=!0};H.prototype.initializeColumn=function(t){var e=this,o=!1,i={};this.allowedTypes.forEach(function(n){var s,r="mutator"+(n.charAt(0).toUpperCase()+n.slice(1));t.definition[r]&&(s=e.lookupMutator(t.definition[r]))&&(o=!0,i[r]={mutator:s,params:t.definition[r+"Params"]||{}})}),o&&(t.modules.mutate=i)},H.prototype.lookupMutator=function(t){var e=!1;switch(void 0===t?"undefined":_typeof(t)){case"string":this.mutators[t]?e=this.mutators[t]:console.warn("Mutator Error - No such mutator found, ignoring: ",t);break;case"function":e=t}return e},H.prototype.transformRow=function(t,e,o){var i,n=this,s="mutator"+(e.charAt(0).toUpperCase()+e.slice(1));return this.enabled&&n.table.columnManager.traverse(function(n){var r,a,l;n.modules.mutate&&(r=n.modules.mutate[s]||n.modules.mutate.mutator||!1)&&(i=n.getFieldValue(t),(!o||o&&void 0!==i)&&(l=n.getComponent(),a="function"==typeof r.params?r.params(i,t,e,l):r.params,n.setFieldValue(t,r.mutator(i,t,e,a,l))))}),t},H.prototype.transformCell=function(t,e){var o=t.column.modules.mutate.mutatorEdit||t.column.modules.mutate.mutator||!1;return o?o.mutator(e,t.row.getData(),"edit",o.params,t.getComponent()):e},H.prototype.enable=function(){this.enabled=!0},H.prototype.disable=function(){this.enabled=!1},H.prototype.mutators={},u.prototype.registerModule("mutator",H);var A=function(t){this.table=t,this.mode="local",this.progressiveLoad=!1,this.size=0,this.page=1,this.count=5,this.max=1,this.displayIndex=0,this.pageSizes=[],this.createElements()};A.prototype.createElements=function(){var t;this.element=document.createElement("span"),this.element.classList.add("tabulator-paginator"),this.pagesElement=document.createElement("span"),this.pagesElement.classList.add("tabulator-pages"),t=document.createElement("button"),t.classList.add("tabulator-page"),t.setAttribute("type","button"),t.setAttribute("role","button"),t.setAttribute("aria-label",""),t.setAttribute("title",""),this.firstBut=t.cloneNode(!0),this.firstBut.setAttribute("data-page","first"),this.prevBut=t.cloneNode(!0),this.prevBut.setAttribute("data-page","prev"),this.nextBut=t.cloneNode(!0),this.nextBut.setAttribute("data-page","next"),this.lastBut=t.cloneNode(!0),this.lastBut.setAttribute("data-page","last"),this.table.options.paginationSizeSelector&&(this.pageSizeSelect=document.createElement("select"),this.pageSizeSelect.classList.add("tabulator-page-size"))},A.prototype.generatePageSizeSelectList=function(){var t=this,e=[];if(this.pageSizeSelect){if(Array.isArray(this.table.options.paginationSizeSelector))e=this.table.options.paginationSizeSelector,this.pageSizes=e,-1==this.pageSizes.indexOf(this.size)&&e.unshift(this.size);else if(-1==this.pageSizes.indexOf(this.size)){e=[];for(var o=1;o<5;o++)e.push(this.size*o);this.pageSizes=e}else e=this.pageSizes;for(;this.pageSizeSelect.firstChild;)this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);e.forEach(function(e){var o=document.createElement("option");o.value=e,o.innerHTML=e,t.pageSizeSelect.appendChild(o)}),this.pageSizeSelect.value=this.size}},A.prototype.initialize=function(t){var e,o=this;for(var i in o.table.options.paginationDataSent)o.paginationDataSentNames[i]=o.table.options.paginationDataSent[i];for(var n in o.table.options.paginationDataReceived)o.paginationDataReceivedNames[n]=o.table.options.paginationDataReceived[n];o.table.modules.localize.bind("pagination|first",function(t){o.firstBut.innerHTML=t}),o.table.modules.localize.bind("pagination|first_title",function(t){o.firstBut.setAttribute("aria-label",t),o.firstBut.setAttribute("title",t)}),o.table.modules.localize.bind("pagination|prev",function(t){o.prevBut.innerHTML=t}),o.table.modules.localize.bind("pagination|prev_title",function(t){o.prevBut.setAttribute("aria-label",t),o.prevBut.setAttribute("title",t)}),o.table.modules.localize.bind("pagination|next",function(t){o.nextBut.innerHTML=t}),o.table.modules.localize.bind("pagination|next_title",function(t){o.nextBut.setAttribute("aria-label",t),o.nextBut.setAttribute("title",t)}),o.table.modules.localize.bind("pagination|last",function(t){o.lastBut.innerHTML=t}),o.table.modules.localize.bind("pagination|last_title",function(t){o.lastBut.setAttribute("aria-label",t),o.lastBut.setAttribute("title",t)}),o.firstBut.addEventListener("click",function(){o.setPage(1)}),o.prevBut.addEventListener("click",function(){o.previousPage()}),o.nextBut.addEventListener("click",function(){o.nextPage().then(function(){}).catch(function(){})}),o.lastBut.addEventListener("click",function(){o.setPage(o.max)}),o.table.options.paginationElement&&(o.element=o.table.options.paginationElement),this.pageSizeSelect&&(e=document.createElement("label"),o.table.modules.localize.bind("pagination|page_size",function(t){o.pageSizeSelect.setAttribute("aria-label",t),o.pageSizeSelect.setAttribute("title",t),e.innerHTML=t}),o.element.appendChild(e),o.element.appendChild(o.pageSizeSelect),o.pageSizeSelect.addEventListener("change",function(t){o.setPageSize(o.pageSizeSelect.value),o.setPage(1).then(function(){}).catch(function(){})})),o.element.appendChild(o.firstBut),o.element.appendChild(o.prevBut),o.element.appendChild(o.pagesElement),o.element.appendChild(o.nextBut),o.element.appendChild(o.lastBut),o.table.options.paginationElement||t||o.table.footerManager.append(o.element,o),o.mode=o.table.options.pagination,o.size=o.table.options.paginationSize||Math.floor(o.table.rowManager.getElement().clientHeight/24),o.count=o.table.options.paginationButtonCount,o.generatePageSizeSelectList()},A.prototype.initializeProgressive=function(t){this.initialize(!0),this.mode="progressive_"+t,this.progressiveLoad=!0},A.prototype.setDisplayIndex=function(t){this.displayIndex=t},A.prototype.getDisplayIndex=function(){return this.displayIndex},A.prototype.setMaxRows=function(t){this.max=t?Math.ceil(t/this.size):1,this.page>this.max&&(this.page=this.max)},A.prototype.reset=function(t){return("local"==this.mode||t)&&(this.page=1),!0},A.prototype.setMaxPage=function(t){t=parseInt(t),this.max=t||1,this.page>this.max&&(this.page=this.max,this.trigger())},A.prototype.setPage=function(t){var e=this;return new Promise(function(o,i){t=parseInt(t),t>0&&t<=e.max?(e.page=t,e.trigger().then(function(){o()}).catch(function(){i()})):(console.warn("Pagination Error - Requested page is out of range of 1 - "+e.max+":",t),i())})},A.prototype.setPageToRow=function(t){var e=this;return new Promise(function(o,i){var n=e.table.rowManager.getDisplayRows(e.displayIndex-1),s=n.indexOf(t);if(s>-1){var r=Math.ceil((s+1)/e.size);e.setPage(r).then(function(){o()}).catch(function(){i()})}else console.warn("Pagination Error - Requested row is not visible"),i()})},A.prototype.setPageSize=function(t){t=parseInt(t),t>0&&(this.size=t),this.pageSizeSelect&&this.generatePageSizeSelectList()},A.prototype._setPageButtons=function(){for(var t=this,e=Math.floor((this.count-1)/2),o=Math.ceil((this.count-1)/2),i=this.max-this.page+e+1<this.count?this.max-this.count+1:Math.max(this.page-e,1),n=this.page<=o?Math.min(this.count,this.max):Math.min(this.page+o,this.max);t.pagesElement.firstChild;)t.pagesElement.removeChild(t.pagesElement.firstChild);1==t.page?(t.firstBut.disabled=!0,t.prevBut.disabled=!0):(t.firstBut.disabled=!1,t.prevBut.disabled=!1),t.page==t.max?(t.lastBut.disabled=!0,t.nextBut.disabled=!0):(t.lastBut.disabled=!1,t.nextBut.disabled=!1);for(var s=i;s<=n;s++)s>0&&s<=t.max&&t.pagesElement.appendChild(t._generatePageButton(s));this.footerRedraw()},A.prototype._generatePageButton=function(t){var e=this,o=document.createElement("button");return o.classList.add("tabulator-page"),t==e.page&&o.classList.add("active"),o.setAttribute("type","button"),o.setAttribute("role","button"),o.setAttribute("aria-label","Show Page "+t),o.setAttribute("title","Show Page "+t),o.setAttribute("data-page",t),o.textContent=t,o.addEventListener("click",function(o){e.setPage(t)}),o},A.prototype.previousPage=function(){var t=this;return new Promise(function(e,o){t.page>1?(t.page--,t.trigger().then(function(){e()}).catch(function(){o()})):(console.warn("Pagination Error - Previous page would be less than page 1:",0),o())})},A.prototype.nextPage=function(){var t=this;return new Promise(function(e,o){t.page<t.max?(t.page++,t.trigger().then(function(){e()}).catch(function(){o()})):(t.progressiveLoad||console.warn("Pagination Error - Next page would be greater than maximum page of "+t.max+":",t.max+1),o())})},A.prototype.getPage=function(){return this.page},A.prototype.getPageMax=function(){return this.max},A.prototype.getPageSize=function(t){return this.size},A.prototype.getMode=function(){return this.mode},A.prototype.getRows=function(t){var e,o,i;if("local"==this.mode){e=[],o=this.size*(this.page-1),i=o+parseInt(this.size),this._setPageButtons();for(var n=o;n<i;n++)t[n]&&e.push(t[n]);return e}return this._setPageButtons(),t.slice(0)},A.prototype.trigger=function(){var t,e=this;return new Promise(function(o,i){switch(e.mode){case"local":t=e.table.rowManager.scrollLeft,e.table.rowManager.refreshActiveData("page"),e.table.rowManager.scrollHorizontal(t),e.table.options.pageLoaded.call(e.table,e.getPage()),o();break;case"remote":case"progressive_load":case"progressive_scroll":e.table.modules.ajax.blockActiveRequest(),e._getRemotePage().then(function(){o()}).catch(function(){i()});break;default:console.warn("Pagination Error - no such pagination mode:",e.mode),i()}})},A.prototype._getRemotePage=function(){var t,e,o=this,i=this;return new Promise(function(n,s){if(i.table.modExists("ajax",!0)||s(),t=u.prototype.helpers.deepClone(i.table.modules.ajax.getParams()||{}),e=i.table.modules.ajax.getParams(),e[o.paginationDataSentNames.page]=i.page,o.size&&(e[o.paginationDataSentNames.size]=o.size),o.table.options.ajaxSorting&&o.table.modExists("sort")){var r=i.table.modules.sort.getSort();r.forEach(function(t){delete t.column}),e[o.paginationDataSentNames.sorters]=r}if(o.table.options.ajaxFiltering&&o.table.modExists("filter")){var a=i.table.modules.filter.getFilters(!0,!0);e[o.paginationDataSentNames.filters]=a}i.table.modules.ajax.setParams(e),i.table.modules.ajax.sendRequest(o.progressiveLoad).then(function(t){i._parseRemoteData(t),n()}).catch(function(t){s()}),i.table.modules.ajax.setParams(t)})},A.prototype._parseRemoteData=function(t){var e,t,o,i=this;if(void 0===t[this.paginationDataReceivedNames.last_page]&&console.warn("Remote Pagination Error - Server response missing '"+this.paginationDataReceivedNames.last_page+"' property"),t[this.paginationDataReceivedNames.data])if(this.max=parseInt(t[this.paginationDataReceivedNames.last_page])||1,this.progressiveLoad)switch(this.mode){case"progressive_load":this.table.rowManager.addRows(t[this.paginationDataReceivedNames.data]),this.page<this.max&&setTimeout(function(){i.nextPage().then(function(){}).catch(function(){})},i.table.options.ajaxProgressiveLoadDelay);break;case"progressive_scroll":t=this.table.rowManager.getData().concat(t[this.paginationDataReceivedNames.data]),this.table.rowManager.setData(t,!0),o=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.element.clientHeight,i.table.rowManager.element.scrollHeight<=i.table.rowManager.element.clientHeight+o&&i.nextPage().then(function(){}).catch(function(){})}else e=this.table.rowManager.scrollLeft,this.table.rowManager.setData(t[this.paginationDataReceivedNames.data]),this.table.rowManager.scrollHorizontal(e),this.table.columnManager.scrollHorizontal(e),this.table.options.pageLoaded.call(this.table,this.getPage());else console.warn("Remote Pagination Error - Server response missing '"+this.paginationDataReceivedNames.data+"' property")},A.prototype.footerRedraw=function(){var t=this.table.footerManager.element;Math.ceil(t.clientWidth)-t.scrollWidth<0?this.pagesElement.style.display="none":(this.pagesElement.style.display="",Math.ceil(t.clientWidth)-t.scrollWidth<0&&(this.pagesElement.style.display="none"))},A.prototype.paginationDataSentNames={page:"page",size:"size",sorters:"sorters",filters:"filters"},A.prototype.paginationDataReceivedNames={current_page:"current_page",last_page:"last_page",data:"data"},u.prototype.registerModule("page",A);var P=function(t){this.table=t,this.mode="",this.id="",this.persistProps=["field","width","visible"]};P.prototype.localStorageTest=function(){var t="_tabulator_test";try{return window.localStorage.setItem(t,t),window.localStorage.removeItem(t),!0}catch(t){return!1}},P.prototype.initialize=function(t,e){this.mode=!0!==t?t:this.localStorageTest()?"local":"cookie",this.id="tabulator-"+(e||this.table.element.getAttribute("id")||"")},P.prototype.load=function(t,e){var o=this.retreiveData(t);return e&&(o=o?this.mergeDefinition(e,o):e),o},P.prototype.retreiveData=function(t){var e="",o=this.id+("columns"===t?"":"-"+t);switch(this.mode){case"local":e=localStorage.getItem(o);break;case"cookie":var i=document.cookie,n=i.indexOf(o+"="),s=void 0;n>-1&&(i=i.substr(n),s=i.indexOf(";"),s>-1&&(i=i.substr(0,s)),e=i.replace(o+"=",""));break;default:console.warn("Persistence Load Error - invalid mode selected",this.mode)}return!!e&&JSON.parse(e)},P.prototype.mergeDefinition=function(t,e){var o=this,i=[];return e=e||[],e.forEach(function(e,n){var s=o._findColumn(t,e);s&&(s.width=e.width,s.visible=e.visible,s.columns&&(s.columns=o.mergeDefinition(s.columns,e.columns)),i.push(s))}),t.forEach(function(t,n){o._findColumn(e,t)||(i.length>n?i.splice(n,0,t):i.push(t))}),i},P.prototype._findColumn=function(t,e){var o=e.columns?"group":e.field?"field":"object";return t.find(function(t){switch(o){case"group":return t.title===e.title&&t.columns.length===e.columns.length;case"field":return t.field===e.field;case"object":return t===e}})},P.prototype.save=function(t){var e={};switch(t){case"columns":e=this.parseColumns(this.table.columnManager.getColumns());break;case"filter":e=this.table.modules.filter.getFilters();break;case"sort":e=this.validateSorters(this.table.modules.sort.getSort())}var o=this.id+("columns"===t?"":"-"+t);this.saveData(o,e)},P.prototype.validateSorters=function(t){return t.forEach(function(t){t.column=t.field,delete t.field}),t},P.prototype.saveData=function(t,e){switch(e=JSON.stringify(e),this.mode){case"local":localStorage.setItem(t,e);break;case"cookie":var o=new Date;o.setDate(o.getDate()+1e4),document.cookie=t+"="+e+"; expires="+o.toUTCString();break;default:console.warn("Persistence Save Error - invalid mode selected",this.mode)}},P.prototype.parseColumns=function(t){var e=this,o=[];return t.forEach(function(t){var i={};t.isGroup?(i.title=t.getDefinition().title,i.columns=e.parseColumns(t.getColumns())):(i.title=t.getDefinition().title,i.field=t.getField(),i.width=t.getWidth(),i.visible=t.visible),o.push(i)}),o},u.prototype.registerModule("persistence",P);var B=function(t){this.table=t,this.element=!1,this.manualBlock=!1};B.prototype.initialize=function(){window.addEventListener("beforeprint",this.replaceTable.bind(this)),window.addEventListener("afterprint",this.cleanup.bind(this))},B.prototype.replaceTable=function(){this.manualBlock||(this.element=document.createElement("div"),this.element.classList.add("tabulator-print-table"),this.element.appendChild(this.table.modules.htmlTableExport.genereateTable(this.table.options.printConfig,this.table.options.printCopyStyle,this.table.options.printVisibleRows,"print")),this.table.element.style.display="none",this.table.element.parentNode.insertBefore(this.element,this.table.element))},B.prototype.cleanup=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="")},B.prototype.printFullscreen=function(t,e,o){var i,n,s=window.scrollX,r=window.scrollY,a=document.createElement("div"),l=document.createElement("div"),c=this.table.modules.htmlTableExport.genereateTable(void 0!==o?o:this.table.options.printConfig,void 0!==e?e:this.table.options.printCopyStyle,t,"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"),i="function"==typeof this.table.options.printHeader?this.table.options.printHeader.call(this.table):this.table.options.printHeader,"string"==typeof i?a.innerHTML=i:a.appendChild(i),this.element.appendChild(a)),this.element.appendChild(c),this.table.options.printFooter&&(l.classList.add("tabulator-print-footer"),n="function"==typeof this.table.options.printFooter?this.table.options.printFooter.call(this.table):this.table.options.printFooter,"string"==typeof n?l.innerHTML=n:l.appendChild(n),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,c),window.print(),this.cleanup(),window.scrollTo(s,r),this.manualBlock=!1},u.prototype.registerModule("print",B);var N=function(t){this.table=t,this.data=!1,this.blocked=!1,this.origFuncs={},this.currentVersion=0};N.prototype.watchData=function(t){var e,o=this;this.currentVersion++,e=this.currentVersion,o.unwatchData(),o.data=t,o.origFuncs.push=t.push,Object.defineProperty(o.data,"push",{enumerable:!1,configurable:!0,value:function(){var i=Array.from(arguments);return o.blocked||e!==o.currentVersion||i.forEach(function(t){o.table.rowManager.addRowActual(t,!1)}),o.origFuncs.push.apply(t,arguments)}}),o.origFuncs.unshift=t.unshift,Object.defineProperty(o.data,"unshift",{enumerable:!1,configurable:!0,value:function(){var i=Array.from(arguments);return o.blocked||e!==o.currentVersion||i.forEach(function(t){o.table.rowManager.addRowActual(t,!0)}),o.origFuncs.unshift.apply(t,arguments)}}),o.origFuncs.shift=t.shift,Object.defineProperty(o.data,"shift",{enumerable:!1,configurable:!0,value:function(){var i;return o.blocked||e!==o.currentVersion||o.data.length&&(i=o.table.rowManager.getRowFromDataObject(o.data[0]))&&i.deleteActual(),o.origFuncs.shift.call(t)}}),o.origFuncs.pop=t.pop,Object.defineProperty(o.data,"pop",{enumerable:!1,configurable:!0,value:function(){var i;return o.blocked||e!==o.currentVersion||o.data.length&&(i=o.table.rowManager.getRowFromDataObject(o.data[o.data.length-1]))&&i.deleteActual(),o.origFuncs.pop.call(t)}}),o.origFuncs.splice=t.splice,Object.defineProperty(o.data,"splice",{enumerable:!1,configurable:!0,value:function(){var i,n=Array.from(arguments),s=n[0]<0?t.length+n[0]:n[0],r=n[1],a=!!n[2]&&n.slice(2);if(!o.blocked&&e===o.currentVersion){if(a&&(i=!!t[s]&&o.table.rowManager.getRowFromDataObject(t[s]),i?a.forEach(function(t){o.table.rowManager.addRowActual(t,!0,i,!0)}):(a=a.slice().reverse(),a.forEach(function(t){o.table.rowManager.addRowActual(t,!0,!1,!0)}))),0!==r){var l=t.slice(s,void 0===n[1]?n[1]:s+r);l.forEach(function(t,e){var i=o.table.rowManager.getRowFromDataObject(t);i&&i.deleteActual(e!==l.length-1)})}(a||0!==r)&&o.table.rowManager.reRenderInPosition()}return o.origFuncs.splice.apply(t,arguments)}})},N.prototype.unwatchData=function(){if(!1!==this.data)for(var t in this.origFuncs)Object.defineProperty(this.data,t,{enumerable:!0,configurable:!0,writable:!0,value:this.origFuncs.key})},N.prototype.watchRow=function(t){var e=t.getData();this.blocked=!0;for(var o in e)this.watchKey(t,e,o);this.blocked=!1},N.prototype.watchKey=function(t,e,o){var i=this,n=Object.getOwnPropertyDescriptor(e,o),s=e[o],r=this.currentVersion;Object.defineProperty(e,o,{set:function(e){if(s=e,!i.blocked&&r===i.currentVersion){var a={};a[o]=e,t.updateData(a)}n.set&&n.set(e)},get:function(){return n.get&&n.get(),s}})},N.prototype.unwatchRow=function(t){var e=t.getData();for(var o in e)Object.defineProperty(e,o,{value:e[o]})},N.prototype.block=function(){this.blocked=!0},N.prototype.unblock=function(){this.blocked=!1},u.prototype.registerModule("reactiveData",N);var I=function(t){this.table=t,this.startColumn=!1,this.startX=!1,this.startWidth=!1,this.handle=null,this.prevHandle=null};I.prototype.initializeColumn=function(t,e,o){var i=this,n=!1,s=this.table.options.resizableColumns;if("header"===t&&(n="textarea"==e.definition.formatter||e.definition.variableHeight,e.modules.resize={variableHeight:n}),!0===s||s==t){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(t){t.stopPropagation()});var l=function(t){var o=e.getLastColumn();o&&i._checkResizability(o)&&(i.startColumn=e,i._mouseDown(t,o,r))};r.addEventListener("mousedown",l),r.addEventListener("touchstart",l,{passive:!0}),r.addEventListener("dblclick",function(t){var o=e.getLastColumn();o&&i._checkResizability(o)&&o.reinitializeWidth(!0)}),a.addEventListener("click",function(t){t.stopPropagation()});var c=function(t){var o,n,s;(o=e.getFirstColumn())&&(n=i.table.columnManager.findColumnIndex(o),(s=n>0&&i.table.columnManager.getColumnByIndex(n-1))&&i._checkResizability(s)&&(i.startColumn=e,i._mouseDown(t,s,a)))};a.addEventListener("mousedown",c),a.addEventListener("touchstart",c,{passive:!0}),a.addEventListener("dblclick",function(t){var o,n,s;(o=e.getFirstColumn())&&(n=i.table.columnManager.findColumnIndex(o),(s=n>0&&i.table.columnManager.getColumnByIndex(n-1))&&i._checkResizability(s)&&s.reinitializeWidth(!0))}),o.appendChild(r),o.appendChild(a)}},I.prototype._checkResizability=function(t){return void 0!==t.definition.resizable?t.definition.resizable:this.table.options.resizableColumns},I.prototype._mouseDown=function(t,e,o){function i(t){e.setWidth(s.startWidth+((void 0===t.screenX?t.touches[0].screenX:t.screenX)-s.startX)),!s.table.browserSlow&&e.modules.resize&&e.modules.resize.variableHeight&&e.checkCellHeights()}function n(t){s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!1),s.table.browserSlow&&e.modules.resize&&e.modules.resize.variableHeight&&e.checkCellHeights(),document.body.removeEventListener("mouseup",n),document.body.removeEventListener("mousemove",i),o.removeEventListener("touchmove",i),o.removeEventListener("touchend",n),s.table.element.classList.remove("tabulator-block-select"),s.table.options.persistentLayout&&s.table.modExists("persistence",!0)&&s.table.modules.persistence.save("columns"),s.table.options.columnResized.call(s.table,e.getComponent())}var s=this;s.table.element.classList.add("tabulator-block-select"),t.stopPropagation(),s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!0),s.startX=void 0===t.screenX?t.touches[0].screenX:t.screenX,s.startWidth=e.getWidth(),document.body.addEventListener("mousemove",i),document.body.addEventListener("mouseup",n),o.addEventListener("touchmove",i,{passive:!0}),o.addEventListener("touchend",n)},u.prototype.registerModule("resizeColumns",I);var O=function(t){this.table=t,this.startColumn=!1,this.startY=!1,this.startHeight=!1,this.handle=null,this.prevHandle=null};O.prototype.initializeRow=function(t){var e=this,o=t.getElement(),i=document.createElement("div");i.className="tabulator-row-resize-handle";var n=document.createElement("div");n.className="tabulator-row-resize-handle prev",i.addEventListener("click",function(t){t.stopPropagation()});var s=function(o){e.startRow=t,e._mouseDown(o,t,i)};i.addEventListener("mousedown",s,{passive:!0}),i.addEventListener("touchstart",s),n.addEventListener("click",function(t){t.stopPropagation()});var r=function(o){var i=e.table.rowManager.prevDisplayRow(t);i&&(e.startRow=i,e._mouseDown(o,i,n))};n.addEventListener("mousedown",r),n.addEventListener("touchstart",r,{passive:!0}),o.appendChild(i),o.appendChild(n)},O.prototype._mouseDown=function(t,e,o){function i(t){e.setHeight(s.startHeight+((void 0===t.screenY?t.touches[0].screenY:t.screenY)-s.startY))}function n(t){document.body.removeEventListener("mouseup",i),document.body.removeEventListener("mousemove",i),o.removeEventListener("touchmove",i),o.removeEventListener("touchend",n),s.table.element.classList.remove("tabulator-block-select"),s.table.options.rowResized.call(this.table,e.getComponent())}var s=this;s.table.element.classList.add("tabulator-block-select"),t.stopPropagation(),s.startY=void 0===t.screenY?t.touches[0].screenY:t.screenY,s.startHeight=e.getHeight(),document.body.addEventListener("mousemove",i),document.body.addEventListener("mouseup",n),o.addEventListener("touchmove",i,{passive:!0}),o.addEventListener("touchend",n)},u.prototype.registerModule("resizeRows",O);var G=function(t){this.table=t,this.binding=!1,this.observer=!1};G.prototype.initialize=function(t){var e=this.table;"undefined"!=typeof ResizeObserver&&"virtual"===e.rowManager.getRenderMode()?(this.observer=new ResizeObserver(function(t){e.redraw()}),this.observer.observe(e.element)):(this.binding=function(){e.redraw()},window.addEventListener("resize",this.binding))},G.prototype.clearBindings=function(t){this.binding&&window.removeEventListener("resize",this.binding),this.observer&&this.observer.unobserve(this.table.element)},u.prototype.registerModule("resizeTable",G);var j=function(t){this.table=t,this.columns=[],this.hiddenColumns=[],this.mode="",this.index=0,this.collapseFormatter=[],this.collapseStartOpen=!0};j.prototype.initialize=function(){var t=this,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(o,i){o.modules.responsive&&o.modules.responsive.order&&o.modules.responsive.visible&&(o.modules.responsive.index=i,e.push(o),o.visible||"collapse"!==t.mode||t.hiddenColumns.push(o))}),e=e.reverse(),e=e.sort(function(t,e){return e.modules.responsive.order-t.modules.responsive.order||e.modules.responsive.index-t.modules.responsive.index}),this.columns=e,"collapse"===this.mode&&this.generateCollapsedContent()},j.prototype.initializeColumn=function(t){var e=t.getDefinition();t.modules.responsive={order:void 0===e.responsive?1:e.responsive,visible:!1!==e.visible}},j.prototype.layoutRow=function(t){var e=t.getElement(),o=document.createElement("div");o.classList.add("tabulator-responsive-collapse"),e.classList.contains("tabulator-calcs")||(t.modules.responsiveLayout={element:o},this.collapseStartOpen||(o.style.display="none"),e.appendChild(o),this.generateCollapsedRowContent(t))},j.prototype.updateColumnVisibility=function(t,e){t.modules.responsive&&(t.modules.responsive.visible=e,this.initialize())},j.prototype.hideColumn=function(t){t.hide(!1,!0),"collapse"===this.mode&&(this.hiddenColumns.unshift(t),this.generateCollapsedContent())},j.prototype.showColumn=function(t){var e;t.show(!1,!0),t.setWidth(t.getWidth()),"collapse"===this.mode&&(e=this.hiddenColumns.indexOf(t),e>-1&&this.hiddenColumns.splice(e,1),this.generateCollapsedContent())},j.prototype.update=function(){for(var t=this,e=!0;e;){var o="fitColumns"==t.table.modules.layout.getMode()?t.table.columnManager.getFlexBaseWidth():t.table.columnManager.getWidth(),i=(t.table.options.headerVisible?t.table.columnManager.element.clientWidth:t.table.element.clientWidth)-o;if(i<0){var n=t.columns[t.index];n?(t.hideColumn(n),t.index++):e=!1}else{var s=t.columns[t.index-1];s&&i>0&&i>=s.getWidth()?(t.showColumn(s),t.index--):e=!1}t.table.rowManager.activeRowsCount||t.table.rowManager.renderEmptyScroll()}},j.prototype.generateCollapsedContent=function(){var t=this;this.table.rowManager.getDisplayRows().forEach(function(e){t.generateCollapsedRowContent(e)})},j.prototype.generateCollapsedRowContent=function(t){var e,o;if(t.modules.responsiveLayout){for(e=t.modules.responsiveLayout.element;e.firstChild;)e.removeChild(e.firstChild);o=this.collapseFormatter(this.generateCollapsedRowData(t)),o&&e.appendChild(o)}},j.prototype.generateCollapsedRowData=function(t){var e,o=this,i=t.getData(),n=[];return this.hiddenColumns.forEach(function(s){var r=s.getFieldValue(i)
+;s.definition.title&&s.field&&(s.modules.format&&o.table.options.responsiveLayoutCollapseUseFormatters?(e={value:!1,data:{},getValue:function(){return r},getData:function(){return i},getElement:function(){return document.createElement("div")},getRow:function(){return t.getComponent()},getColumn:function(){return s.getComponent()}},n.push({title:s.definition.title,value:s.modules.format.formatter.call(o.table.modules.format,e,s.modules.format.params)})):n.push({title:s.definition.title,value:r}))}),n},j.prototype.formatCollapsedData=function(t){var e=document.createElement("table"),o="";return t.forEach(function(t){var e=document.createElement("div");t.value instanceof Node&&(e.appendChild(t.value),t.value=e.innerHTML),o+="<tr><td><strong>"+t.title+"</strong></td><td>"+t.value+"</td></tr>"}),e.innerHTML=o,Object.keys(t).length?e:""},u.prototype.registerModule("responsiveLayout",j);var V=function(t){this.table=t,this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],this.headerCheckboxElement=null};V.prototype.clearSelectionData=function(t){this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],t||this._rowSelectionChanged()},V.prototype.initializeRow=function(t){var e=this,o=t.getElement(),i=function t(){setTimeout(function(){e.selecting=!1},50),document.body.removeEventListener("mouseup",t)};t.modules.select={selected:!1},e.table.options.selectableCheck.call(this.table,t.getComponent())?(o.classList.add("tabulator-selectable"),o.classList.remove("tabulator-unselectable"),e.table.options.selectable&&"highlight"!=e.table.options.selectable&&("click"===e.table.options.selectableRangeMode?o.addEventListener("click",function(o){if(e.table._clearSelection(),o.shiftKey){e.lastClickedRow=e.lastClickedRow||t;var i=e.table.rowManager.getDisplayRowIndex(e.lastClickedRow),n=e.table.rowManager.getDisplayRowIndex(t),s=i<=n?i:n,r=i>=n?i:n,a=e.table.rowManager.getDisplayRows().slice(0),l=a.splice(s,r-s+1);o.ctrlKey||o.metaKey?(l.forEach(function(o){o!==e.lastClickedRow&&(!0===e.table.options.selectable||e.isRowSelected(t)?e.toggleRow(o):e.selectedRows.length<e.table.options.selectable&&e.toggleRow(o))}),e.lastClickedRow=t):(e.deselectRows(),!0!==e.table.options.selectable&&l.length>e.table.options.selectable&&(l=l.slice(0,e.table.options.selectable)),e.selectRows(l))}else o.ctrlKey||o.metaKey?(e.toggleRow(t),e.lastClickedRow=t):(e.deselectRows(),e.selectRows(t),e.lastClickedRow=t);e.table._clearSelection()}):(o.addEventListener("click",function(o){e.table.modExists("edit")&&e.table.modules.edit.getCurrentCell()||e.table._clearSelection(),e.selecting||e.toggleRow(t)}),o.addEventListener("mousedown",function(o){if(o.shiftKey)return e.table._clearSelection(),e.selecting=!0,e.selectPrev=[],document.body.addEventListener("mouseup",i),document.body.addEventListener("keyup",i),e.toggleRow(t),!1}),o.addEventListener("mouseenter",function(o){e.selecting&&(e.table._clearSelection(),e.toggleRow(t),e.selectPrev[1]==t&&e.toggleRow(e.selectPrev[0]))}),o.addEventListener("mouseout",function(o){e.selecting&&(e.table._clearSelection(),e.selectPrev.unshift(t))})))):(o.classList.add("tabulator-unselectable"),o.classList.remove("tabulator-selectable"))},V.prototype.toggleRow=function(t){this.table.options.selectableCheck.call(this.table,t.getComponent())&&(t.modules.select&&t.modules.select.selected?this._deselectRow(t):this._selectRow(t))},V.prototype.selectRows=function(t){var e=this;switch(void 0===t?"undefined":_typeof(t)){case"undefined":e.table.rowManager.rows.forEach(function(t){e._selectRow(t,!0,!0)}),e._rowSelectionChanged();break;case"boolean":!0===t&&(e.table.rowManager.activeRows.forEach(function(t){e._selectRow(t,!0,!0)}),e._rowSelectionChanged());break;default:Array.isArray(t)?(t.forEach(function(t){e._selectRow(t,!0,!0)}),e._rowSelectionChanged()):e._selectRow(t,!1,!0)}},V.prototype._selectRow=function(t,e,o){if(!isNaN(this.table.options.selectable)&&!0!==this.table.options.selectable&&!o&&this.selectedRows.length>=this.table.options.selectable){if(!this.table.options.selectableRollingSelection)return!1;this._deselectRow(this.selectedRows[0])}var i=this.table.rowManager.findRow(t);i?-1==this.selectedRows.indexOf(i)&&(i.modules.select||(i.modules.select={}),i.modules.select.selected=!0,i.modules.select.checkboxEl&&(i.modules.select.checkboxEl.checked=!0),i.getElement().classList.add("tabulator-selected"),this.selectedRows.push(i),e||(this.table.options.rowSelected.call(this.table,i.getComponent()),this._rowSelectionChanged())):e||console.warn("Selection Error - No such row found, ignoring selection:"+t)},V.prototype.isRowSelected=function(t){return-1!==this.selectedRows.indexOf(t)},V.prototype.deselectRows=function(t){var e,o=this;if(void 0===t){e=o.selectedRows.length;for(var i=0;i<e;i++)o._deselectRow(o.selectedRows[0],!0);o._rowSelectionChanged()}else Array.isArray(t)?(t.forEach(function(t){o._deselectRow(t,!0)}),o._rowSelectionChanged()):o._deselectRow(t)},V.prototype._deselectRow=function(t,e){var o,i=this,n=i.table.rowManager.findRow(t);n?(o=i.selectedRows.findIndex(function(t){return t==n}))>-1&&(n.modules.select||(n.modules.select={}),n.modules.select.selected=!1,n.modules.select.checkboxEl&&(n.modules.select.checkboxEl.checked=!1),n.getElement().classList.remove("tabulator-selected"),i.selectedRows.splice(o,1),e||(i.table.options.rowDeselected.call(this.table,n.getComponent()),i._rowSelectionChanged())):e||console.warn("Deselection Error - No such row found, ignoring selection:"+t)},V.prototype.getSelectedData=function(){var t=[];return this.selectedRows.forEach(function(e){t.push(e.getData())}),t},V.prototype.getSelectedRows=function(){var t=[];return this.selectedRows.forEach(function(e){t.push(e.getComponent())}),t},V.prototype._rowSelectionChanged=function(){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)),this.table.options.rowSelectionChanged.call(this.table,this.getSelectedData(),this.getSelectedRows())},V.prototype.registerRowSelectCheckbox=function(t,e){t._row.modules.select||(t._row.modules.select={}),t._row.modules.select.checkboxEl=e},V.prototype.registerHeaderSelectCheckbox=function(t){this.headerCheckboxElement=t},u.prototype.registerModule("selectRow",V);var W=function(t){this.table=t,this.sortList=[],this.changed=!1};W.prototype.initializeColumn=function(t,e){var o,i,n=this,s=!1;switch(_typeof(t.definition.sorter)){case"string":n.sorters[t.definition.sorter]?s=n.sorters[t.definition.sorter]:console.warn("Sort Error - No such sorter found: ",t.definition.sorter);break;case"function":s=t.definition.sorter}t.modules.sort={sorter:s,dir:"none",params:t.definition.sorterParams||{},startingDir:t.definition.headerSortStartingDir||"asc",tristate:void 0!==t.definition.headerSortTristate?t.definition.headerSortTristate:this.table.options.headerSortTristate},(void 0===t.definition.headerSort?!1!==this.table.options.headerSort:!1!==t.definition.headerSort)&&(o=t.getElement(),o.classList.add("tabulator-sortable"),i=document.createElement("div"),i.classList.add("tabulator-arrow"),e.appendChild(i),o.addEventListener("click",function(e){var o="",i=[],s=!1;if(t.modules.sort){if(t.modules.sort.tristate)o="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":o="desc";break;case"desc":o="asc";break;default:o=t.modules.sort.startingDir}n.table.options.columnHeaderSortMulti&&(e.shiftKey||e.ctrlKey)?(i=n.getSort(),s=i.findIndex(function(e){return e.field===t.getField()}),s>-1?(i[s].dir=o,s!=i.length-1&&(s=i.splice(s,1)[0],"none"!=o&&i.push(s))):"none"!=o&&i.push({column:t,dir:o}),n.setSort(i)):"none"==o?n.clear():n.setSort(t,o),n.table.rowManager.sorterRefresh(!n.sortList.length)}}))},W.prototype.hasChanged=function(){var t=this.changed;return this.changed=!1,t},W.prototype.getSort=function(){var t=this,e=[];return t.sortList.forEach(function(t){t.column&&e.push({column:t.column.getComponent(),field:t.column.getField(),dir:t.dir})}),e},W.prototype.setSort=function(t,e){var o=this,i=[];Array.isArray(t)||(t=[{column:t,dir:e}]),t.forEach(function(t){var e;e=o.table.columnManager.findColumn(t.column),e?(t.column=e,i.push(t),o.changed=!0):console.warn("Sort Warning - Sort field does not exist and is being ignored: ",t.column)}),o.sortList=i,this.table.options.persistentSort&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("sort")},W.prototype.clear=function(){this.setSort([])},W.prototype.findSorter=function(t){var e,o=this.table.rowManager.activeRows[0],i="string";if(o&&(o=o.getData(),t.getField()))switch(e=t.getFieldValue(o),void 0===e?"undefined":_typeof(e)){case"undefined":i="string";break;case"boolean":i="boolean";break;default:isNaN(e)||""===e?e.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)&&(i="alphanum"):i="number"}return this.sorters[i]},W.prototype.sort=function(t){var e,o=this;e=this.table.options.sortOrderReverse?o.sortList.slice().reverse():o.sortList,o.table.options.dataSorting&&o.table.options.dataSorting.call(o.table,o.getSort()),o.clearColumnHeaders(),o.table.options.ajaxSorting?e.forEach(function(t,e){o.setColumnHeader(t.column,t.dir)}):e.forEach(function(i,n){i.column&&i.column.modules.sort&&(i.column.modules.sort.sorter||(i.column.modules.sort.sorter=o.findSorter(i.column)),o._sortItem(t,i.column,i.dir,e,n)),o.setColumnHeader(i.column,i.dir)}),o.table.options.dataSorted&&o.table.options.dataSorted.call(o.table,o.getSort(),o.table.rowManager.getComponents(!0))},W.prototype.clearColumnHeaders=function(){this.table.columnManager.getRealColumns().forEach(function(t){t.modules.sort&&(t.modules.sort.dir="none",t.getElement().setAttribute("aria-sort","none"))})},W.prototype.setColumnHeader=function(t,e){t.modules.sort.dir=e,t.getElement().setAttribute("aria-sort",e)},W.prototype._sortItem=function(t,e,o,i,n){var s=this,r="function"==typeof e.modules.sort.params?e.modules.sort.params(e.getComponent(),o):e.modules.sort.params;t.sort(function(t,a){var l=s._sortRow(t,a,e,o,r);if(0===l&&n)for(var c=n-1;c>=0&&0===(l=s._sortRow(t,a,i[c].column,i[c].dir,r));c--);return l})},W.prototype._sortRow=function(t,e,o,i,n){var s,r,a="asc"==i?t:e,l="asc"==i?e:t;return t=o.getFieldValue(a.getData()),e=o.getFieldValue(l.getData()),t=void 0!==t?t:"",e=void 0!==e?e:"",s=a.getComponent(),r=l.getComponent(),o.modules.sort.sorter.call(this,t,e,s,r,o.getComponent(),i,n)},W.prototype.sorters={number:function(t,e,o,i,n,s,r){var a=r.alignEmptyValues,l=r.decimalSeparator||".",c=r.thousandSeparator||",",u=0;if(t=parseFloat(String(t).split(c).join("").split(l).join(".")),e=parseFloat(String(e).split(c).join("").split(l).join(".")),isNaN(t))u=isNaN(e)?0:-1;else{if(!isNaN(e))return t-e;u=1}return("top"===a&&"desc"===s||"bottom"===a&&"asc"===s)&&(u*=-1),u},string:function(t,e,o,i,n,s,r){var a,l=r.alignEmptyValues,c=0;if(t){if(e){switch(_typeof(r.locale)){case"boolean":r.locale&&(a=this.table.modules.localize.getLocale());break;case"string":a=r.locale}return String(t).toLowerCase().localeCompare(String(e).toLowerCase(),a)}c=1}else c=e?-1:0;return("top"===l&&"desc"===s||"bottom"===l&&"asc"===s)&&(c*=-1),c},date:function(t,e,o,i,n,s,r){return r.format||(r.format="DD/MM/YYYY"),this.sorters.datetime.call(this,t,e,o,i,n,s,r)},time:function(t,e,o,i,n,s,r){return r.format||(r.format="hh:mm"),this.sorters.datetime.call(this,t,e,o,i,n,s,r)},datetime:function(t,e,o,i,n,s,r){var a=r.format||"DD/MM/YYYY hh:mm:ss",l=r.alignEmptyValues,c=0;if("undefined"!=typeof moment){if(t=moment(t,a),e=moment(e,a),t.isValid()){if(e.isValid())return t-e;c=1}else c=e.isValid()?-1:0;return("top"===l&&"desc"===s||"bottom"===l&&"asc"===s)&&(c*=-1),c}console.error("Sort Error - 'datetime' sorter is dependant on moment.js")},boolean:function(t,e,o,i,n,s,r){return(!0===t||"true"===t||"True"===t||1===t?1:0)-(!0===e||"true"===e||"True"===e||1===e?1:0)},array:function(t,e,o,i,n,s,r){function a(t){switch(u){case"length":return t.length;case"sum":return t.reduce(function(t,e){return t+e});case"max":return Math.max.apply(null,t);case"min":return Math.min.apply(null,t);case"avg":return t.reduce(function(t,e){return t+e})/t.length}}var l=0,c=0,u=r.type||"length",d=r.alignEmptyValues,h=0;if(Array.isArray(t)){if(Array.isArray(e))return l=t?a(t):0,c=e?a(e):0,l-c;d=1}else d=Array.isArray(e)?-1:0;return("top"===d&&"desc"===s||"bottom"===d&&"asc"===s)&&(h*=-1),h},exists:function(t,e,o,i,n,s,r){return(void 0===t?0:1)-(void 0===e?0:1)},alphanum:function(t,e,o,i,n,s,r){var a,l,c,u,d,h=0,p=/(\d+)|(\D+)/g,m=/\d/,f=r.alignEmptyValues,g=0;if(t||0===t){if(e||0===e){if(isFinite(t)&&isFinite(e))return t-e;if(a=String(t).toLowerCase(),l=String(e).toLowerCase(),a===l)return 0;if(!m.test(a)||!m.test(l))return a>l?1:-1;for(a=a.match(p),l=l.match(p),d=a.length>l.length?l.length:a.length;h<d;)if(c=a[h],u=l[h++],c!==u)return isFinite(c)&&isFinite(u)?("0"===c.charAt(0)&&(c="."+c),"0"===u.charAt(0)&&(u="."+u),c-u):c>u?1:-1;return a.length>l.length}g=1}else g=e||0===e?-1:0;return("top"===f&&"desc"===s||"bottom"===f&&"asc"===s)&&(g*=-1),g}},u.prototype.registerModule("sort",W);var U=function(t){this.table=t};return U.prototype.initializeColumn=function(t){var e,o=this,i=[];t.definition.validator&&(Array.isArray(t.definition.validator)?t.definition.validator.forEach(function(t){(e=o._extractValidator(t))&&i.push(e)}):(e=this._extractValidator(t.definition.validator))&&i.push(e),t.modules.validate=!!i.length&&i)},U.prototype._extractValidator=function(t){var e,o,i;switch(void 0===t?"undefined":_typeof(t)){case"string":return i=t.indexOf(":"),i>-1?(e=t.substring(0,i),o=t.substring(i+1)):e=t,console.log("v",t,e,o),this._buildValidator(e,o);case"function":return this._buildValidator(t);case"object":return this._buildValidator(t.type,t.parameters)}},U.prototype._buildValidator=function(t,e){var o="function"==typeof t?t:this.validators[t];return o?{type:"function"==typeof t?"function":t,func:o,params:e}:(console.warn("Validator Setup Error - No matching validator found:",t),!1)},U.prototype.validate=function(t,e,o){var i=this,n=[];return t&&t.forEach(function(t){t.func.call(i,e,o,t.params)||n.push({type:t.type,parameters:t.params})}),!n.length||n},U.prototype.validators={integer:function(t,e,o){return""===e||null===e||void 0===e||"number"==typeof(e=Number(e))&&isFinite(e)&&Math.floor(e)===e},float:function(t,e,o){return""===e||null===e||void 0===e||"number"==typeof(e=Number(e))&&isFinite(e)&&e%1!=0},numeric:function(t,e,o){return""===e||null===e||void 0===e||!isNaN(e)},string:function(t,e,o){return""===e||null===e||void 0===e||isNaN(e)},max:function(t,e,o){return""===e||null===e||void 0===e||parseFloat(e)<=o},min:function(t,e,o){return""===e||null===e||void 0===e||parseFloat(e)>=o},minLength:function(t,e,o){return""===e||null===e||void 0===e||String(e).length>=o},maxLength:function(t,e,o){return""===e||null===e||void 0===e||String(e).length<=o},in:function(t,e,o){return""===e||null===e||void 0===e||("string"==typeof o&&(o=o.split("|")),""===e||o.indexOf(e)>-1)},regex:function(t,e,o){return""===e||null===e||void 0===e||new RegExp(o).test(e)},unique:function(t,e,o){if(""===e||null===e||void 0===e)return!0;var i=!0,n=t.getData(),s=t.getColumn()._getSelf();return this.table.rowManager.rows.forEach(function(t){var o=t.getData();o!==n&&e==s.getFieldValue(o)&&(i=!1)}),i},required:function(t,e,o){return""!==e&&null!==e&&void 0!==e}},u.prototype.registerModule("validate",U),u});
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/tabulator_core.js b/backoffice/vendors/tabulator/js.old/tabulator_core.js
new file mode 100644 (file)
index 0000000..c679e82
--- /dev/null
@@ -0,0 +1,7867 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+
+'use strict';
+
+// https://tc39.github.io/ecma262/#sec-array.prototype.findIndex
+
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+if (!Array.prototype.findIndex) {
+
+       Object.defineProperty(Array.prototype, 'findIndex', {
+
+               value: function value(predicate) {
+
+                       // 1. Let O be ? ToObject(this value).
+
+                       if (this == null) {
+
+                               throw new TypeError('"this" is null or not defined');
+                       }
+
+                       var o = Object(this);
+
+                       // 2. Let len be ? ToLength(? Get(O, "length")).
+
+                       var len = o.length >>> 0;
+
+                       // 3. If IsCallable(predicate) is false, throw a TypeError exception.
+
+                       if (typeof predicate !== 'function') {
+
+                               throw new TypeError('predicate must be a function');
+                       }
+
+                       // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.
+
+                       var thisArg = arguments[1];
+
+                       // 5. Let k be 0.
+
+                       var k = 0;
+
+                       // 6. Repeat, while k < len
+
+                       while (k < len) {
+
+                               // a. Let Pk be ! ToString(k).
+
+                               // b. Let kValue be ? Get(O, Pk).
+
+                               // c. Let testResult be ToBoolean(? Call(predicate, T, Â« kValue, k, O Â»)).
+
+                               // d. If testResult is true, return k.
+
+                               var kValue = o[k];
+
+                               if (predicate.call(thisArg, kValue, k, o)) {
+
+                                       return k;
+                               }
+
+                               // e. Increase k by 1.
+
+                               k++;
+                       }
+
+                       // 7. Return -1.
+
+                       return -1;
+               }
+
+       });
+}
+
+// https://tc39.github.io/ecma262/#sec-array.prototype.find
+
+if (!Array.prototype.find) {
+
+       Object.defineProperty(Array.prototype, 'find', {
+
+               value: function value(predicate) {
+
+                       // 1. Let O be ? ToObject(this value).
+
+                       if (this == null) {
+
+                               throw new TypeError('"this" is null or not defined');
+                       }
+
+                       var o = Object(this);
+
+                       // 2. Let len be ? ToLength(? Get(O, "length")).
+
+                       var len = o.length >>> 0;
+
+                       // 3. If IsCallable(predicate) is false, throw a TypeError exception.
+
+                       if (typeof predicate !== 'function') {
+
+                               throw new TypeError('predicate must be a function');
+                       }
+
+                       // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.
+
+                       var thisArg = arguments[1];
+
+                       // 5. Let k be 0.
+
+                       var k = 0;
+
+                       // 6. Repeat, while k < len
+
+                       while (k < len) {
+
+                               // a. Let Pk be ! ToString(k).
+
+                               // b. Let kValue be ? Get(O, Pk).
+
+                               // c. Let testResult be ToBoolean(? Call(predicate, T, Â« kValue, k, O Â»)).
+
+                               // d. If testResult is true, return kValue.
+
+                               var kValue = o[k];
+
+                               if (predicate.call(thisArg, kValue, k, o)) {
+
+                                       return kValue;
+                               }
+
+                               // e. Increase k by 1.
+
+                               k++;
+                       }
+
+                       // 7. Return undefined.
+
+                       return undefined;
+               }
+
+       });
+}
+
+var ColumnManager = function ColumnManager(table) {
+
+       this.table = table; //hold parent table
+
+       this.blockHozScrollEvent = false;
+
+       this.headersElement = this.createHeadersElement();
+
+       this.element = this.createHeaderElement(); //containing element
+
+       this.rowManager = null; //hold row manager object
+
+       this.columns = []; // column definition object
+
+       this.columnsByIndex = []; //columns by index
+
+       this.columnsByField = {}; //columns by field
+
+       this.scrollLeft = 0;
+
+       this.element.insertBefore(this.headersElement, this.element.firstChild);
+};
+
+////////////// Setup Functions /////////////////
+
+
+ColumnManager.prototype.createHeadersElement = function () {
+
+       var el = document.createElement("div");
+
+       el.classList.add("tabulator-headers");
+
+       return el;
+};
+
+ColumnManager.prototype.createHeaderElement = function () {
+
+       var el = document.createElement("div");
+
+       el.classList.add("tabulator-header");
+
+       if (!this.table.options.headerVisible) {
+
+               el.classList.add("tabulator-header-hidden");
+       }
+
+       return el;
+};
+
+ColumnManager.prototype.initialize = function () {
+
+       var self = this;
+
+       //scroll body along with header
+
+       // self.element.addEventListener("scroll", function(e){
+
+       //      if(!self.blockHozScrollEvent){
+
+       //              self.table.rowManager.scrollHorizontal(self.element.scrollLeft);
+
+       //      }
+
+       // });
+};
+
+//link to row manager
+
+ColumnManager.prototype.setRowManager = function (manager) {
+
+       this.rowManager = manager;
+};
+
+//return containing element
+
+ColumnManager.prototype.getElement = function () {
+
+       return this.element;
+};
+
+//return header containing element
+
+ColumnManager.prototype.getHeadersElement = function () {
+
+       return this.headersElement;
+};
+
+// ColumnManager.prototype.tempScrollBlock = function(){
+
+//     clearTimeout(this.blockHozScrollEvent);
+
+//     this.blockHozScrollEvent = setTimeout(() => {this.blockHozScrollEvent = false;}, 50);
+
+// }
+
+
+//scroll horizontally to match table body
+
+ColumnManager.prototype.scrollHorizontal = function (left) {
+
+       var hozAdjust = 0,
+           scrollWidth = this.element.scrollWidth - this.table.element.clientWidth;
+
+       // this.tempScrollBlock();
+
+       this.element.scrollLeft = left;
+
+       //adjust for vertical scrollbar moving table when present
+
+       if (left > scrollWidth) {
+
+               hozAdjust = left - scrollWidth;
+
+               this.element.style.marginLeft = -hozAdjust + "px";
+       } else {
+
+               this.element.style.marginLeft = 0;
+       }
+
+       //keep frozen columns fixed in position
+
+       //this._calcFrozenColumnsPos(hozAdjust + 3);
+
+
+       this.scrollLeft = left;
+
+       if (this.table.modExists("frozenColumns")) {
+
+               this.table.modules.frozenColumns.scrollHorizontal();
+       }
+};
+
+///////////// Column Setup Functions /////////////
+
+
+ColumnManager.prototype.generateColumnsFromRowData = function (data) {
+
+       var cols = [],
+           row,
+           sorter;
+
+       if (data && data.length) {
+
+               row = data[0];
+
+               for (var key in row) {
+
+                       var col = {
+
+                               field: key,
+
+                               title: key
+
+                       };
+
+                       var value = row[key];
+
+                       switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
+
+                               case "undefined":
+
+                                       sorter = "string";
+
+                                       break;
+
+                               case "boolean":
+
+                                       sorter = "boolean";
+
+                                       break;
+
+                               case "object":
+
+                                       if (Array.isArray(value)) {
+
+                                               sorter = "array";
+                                       } else {
+
+                                               sorter = "string";
+                                       }
+
+                                       break;
+
+                               default:
+
+                                       if (!isNaN(value) && value !== "") {
+
+                                               sorter = "number";
+                                       } else {
+
+                                               if (value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)) {
+
+                                                       sorter = "alphanum";
+                                               } else {
+
+                                                       sorter = "string";
+                                               }
+                                       }
+
+                                       break;
+
+                       }
+
+                       col.sorter = sorter;
+
+                       cols.push(col);
+               }
+
+               this.table.options.columns = cols;
+
+               this.setColumns(this.table.options.columns);
+       }
+};
+
+ColumnManager.prototype.setColumns = function (cols, row) {
+
+       var self = this;
+
+       while (self.headersElement.firstChild) {
+               self.headersElement.removeChild(self.headersElement.firstChild);
+       }self.columns = [];
+
+       self.columnsByIndex = [];
+
+       self.columnsByField = {};
+
+       //reset frozen columns
+
+       if (self.table.modExists("frozenColumns")) {
+
+               self.table.modules.frozenColumns.reset();
+       }
+
+       cols.forEach(function (def, i) {
+
+               self._addColumn(def);
+       });
+
+       self._reIndexColumns();
+
+       if (self.table.options.responsiveLayout && self.table.modExists("responsiveLayout", true)) {
+
+               self.table.modules.responsiveLayout.initialize();
+       }
+
+       self.redraw(true);
+};
+
+ColumnManager.prototype._addColumn = function (definition, before, nextToColumn) {
+
+       var column = new Column(definition, this),
+           colEl = column.getElement(),
+           index = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;
+
+       if (nextToColumn && index > -1) {
+
+               var parentIndex = this.columns.indexOf(nextToColumn.getTopColumn());
+
+               var nextEl = nextToColumn.getElement();
+
+               if (before) {
+
+                       this.columns.splice(parentIndex, 0, column);
+
+                       nextEl.parentNode.insertBefore(colEl, nextEl);
+               } else {
+
+                       this.columns.splice(parentIndex + 1, 0, column);
+
+                       nextEl.parentNode.insertBefore(colEl, nextEl.nextSibling);
+               }
+       } else {
+
+               if (before) {
+
+                       this.columns.unshift(column);
+
+                       this.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild);
+               } else {
+
+                       this.columns.push(column);
+
+                       this.headersElement.appendChild(column.getElement());
+               }
+       }
+
+       return column;
+};
+
+ColumnManager.prototype.registerColumnField = function (col) {
+
+       if (col.definition.field) {
+
+               this.columnsByField[col.definition.field] = col;
+       }
+};
+
+ColumnManager.prototype.registerColumnPosition = function (col) {
+
+       this.columnsByIndex.push(col);
+};
+
+ColumnManager.prototype._reIndexColumns = function () {
+
+       this.columnsByIndex = [];
+
+       this.columns.forEach(function (column) {
+
+               column.reRegisterPosition();
+       });
+};
+
+//ensure column headers take up the correct amount of space in column groups
+
+ColumnManager.prototype._verticalAlignHeaders = function () {
+
+       var self = this,
+           minHeight = 0;
+
+       self.columns.forEach(function (column) {
+
+               var height;
+
+               column.clearVerticalAlign();
+
+               height = column.getHeight();
+
+               if (height > minHeight) {
+
+                       minHeight = height;
+               }
+       });
+
+       self.columns.forEach(function (column) {
+
+               column.verticalAlign(self.table.options.columnVertAlign, minHeight);
+       });
+
+       self.rowManager.adjustTableSize();
+};
+
+//////////////// Column Details /////////////////
+
+
+ColumnManager.prototype.findColumn = function (subject) {
+
+       var self = this;
+
+       if ((typeof subject === 'undefined' ? 'undefined' : _typeof(subject)) == "object") {
+
+               if (subject instanceof Column) {
+
+                       //subject is column element
+
+                       return subject;
+               } else if (subject instanceof ColumnComponent) {
+
+                       //subject is public column component
+
+                       return subject._getSelf() || false;
+               } else if (typeof HTMLElement !== "undefined" && subject instanceof HTMLElement) {
+
+                       //subject is a HTML element of the column header
+
+                       var match = self.columns.find(function (column) {
+
+                               return column.element === subject;
+                       });
+
+                       return match || false;
+               }
+       } else {
+
+               //subject should be treated as the field name of the column
+
+               return this.columnsByField[subject] || false;
+       }
+
+       //catch all for any other type of input
+
+
+       return false;
+};
+
+ColumnManager.prototype.getColumnByField = function (field) {
+
+       return this.columnsByField[field];
+};
+
+ColumnManager.prototype.getColumnsByFieldRoot = function (root) {
+       var _this = this;
+
+       var matches = [];
+
+       Object.keys(this.columnsByField).forEach(function (field) {
+
+               var fieldRoot = field.split(".")[0];
+
+               if (fieldRoot === root) {
+
+                       matches.push(_this.columnsByField[field]);
+               }
+       });
+
+       return matches;
+};
+
+ColumnManager.prototype.getColumnByIndex = function (index) {
+
+       return this.columnsByIndex[index];
+};
+
+ColumnManager.prototype.getFirstVisibileColumn = function (index) {
+
+       var index = this.columnsByIndex.findIndex(function (col) {
+
+               return col.visible;
+       });
+
+       return index > -1 ? this.columnsByIndex[index] : false;
+};
+
+ColumnManager.prototype.getColumns = function () {
+
+       return this.columns;
+};
+
+ColumnManager.prototype.findColumnIndex = function (column) {
+
+       return this.columnsByIndex.findIndex(function (col) {
+
+               return column === col;
+       });
+};
+
+//return all columns that are not groups
+
+ColumnManager.prototype.getRealColumns = function () {
+
+       return this.columnsByIndex;
+};
+
+//travers across columns and call action
+
+ColumnManager.prototype.traverse = function (callback) {
+
+       var self = this;
+
+       self.columnsByIndex.forEach(function (column, i) {
+
+               callback(column, i);
+       });
+};
+
+//get defintions of actual columns
+
+ColumnManager.prototype.getDefinitions = function (active) {
+
+       var self = this,
+           output = [];
+
+       self.columnsByIndex.forEach(function (column) {
+
+               if (!active || active && column.visible) {
+
+                       output.push(column.getDefinition());
+               }
+       });
+
+       return output;
+};
+
+//get full nested definition tree
+
+ColumnManager.prototype.getDefinitionTree = function () {
+
+       var self = this,
+           output = [];
+
+       self.columns.forEach(function (column) {
+
+               output.push(column.getDefinition(true));
+       });
+
+       return output;
+};
+
+ColumnManager.prototype.getComponents = function (structured) {
+
+       var self = this,
+           output = [],
+           columns = structured ? self.columns : self.columnsByIndex;
+
+       columns.forEach(function (column) {
+
+               output.push(column.getComponent());
+       });
+
+       return output;
+};
+
+ColumnManager.prototype.getWidth = function () {
+
+       var width = 0;
+
+       this.columnsByIndex.forEach(function (column) {
+
+               if (column.visible) {
+
+                       width += column.getWidth();
+               }
+       });
+
+       return width;
+};
+
+ColumnManager.prototype.moveColumn = function (from, to, after) {
+
+       this.moveColumnActual(from, to, after);
+
+       if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+               this.table.modules.responsiveLayout.initialize();
+       }
+
+       if (this.table.modExists("columnCalcs")) {
+
+               this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
+       }
+
+       to.element.parentNode.insertBefore(from.element, to.element);
+
+       if (after) {
+
+               to.element.parentNode.insertBefore(to.element, from.element);
+       }
+
+       this._verticalAlignHeaders();
+
+       this.table.rowManager.reinitialize();
+};
+
+ColumnManager.prototype.moveColumnActual = function (from, to, after) {
+
+       this._moveColumnInArray(this.columns, from, to, after);
+
+       this._moveColumnInArray(this.columnsByIndex, from, to, after, true);
+
+       if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+               this.table.modules.responsiveLayout.initialize();
+       }
+
+       if (this.table.options.columnMoved) {
+
+               this.table.options.columnMoved.call(this.table, from.getComponent(), this.table.columnManager.getComponents());
+       }
+
+       if (this.table.options.persistentLayout && this.table.modExists("persistence", true)) {
+
+               this.table.modules.persistence.save("columns");
+       }
+};
+
+ColumnManager.prototype._moveColumnInArray = function (columns, from, to, after, updateRows) {
+
+       var fromIndex = columns.indexOf(from),
+           toIndex;
+
+       if (fromIndex > -1) {
+
+               columns.splice(fromIndex, 1);
+
+               toIndex = columns.indexOf(to);
+
+               if (toIndex > -1) {
+
+                       if (after) {
+
+                               toIndex = toIndex + 1;
+                       }
+               } else {
+
+                       toIndex = fromIndex;
+               }
+
+               columns.splice(toIndex, 0, from);
+
+               if (updateRows) {
+
+                       this.table.rowManager.rows.forEach(function (row) {
+
+                               if (row.cells.length) {
+
+                                       var cell = row.cells.splice(fromIndex, 1)[0];
+
+                                       row.cells.splice(toIndex, 0, cell);
+                               }
+                       });
+               }
+       }
+};
+
+ColumnManager.prototype.scrollToColumn = function (column, position, ifVisible) {
+       var _this2 = this;
+
+       var left = 0,
+           offset = 0,
+           adjust = 0,
+           colEl = column.getElement();
+
+       return new Promise(function (resolve, reject) {
+
+               if (typeof position === "undefined") {
+
+                       position = _this2.table.options.scrollToColumnPosition;
+               }
+
+               if (typeof ifVisible === "undefined") {
+
+                       ifVisible = _this2.table.options.scrollToColumnIfVisible;
+               }
+
+               if (column.visible) {
+
+                       //align to correct position
+
+                       switch (position) {
+
+                               case "middle":
+
+                               case "center":
+
+                                       adjust = -_this2.element.clientWidth / 2;
+
+                                       break;
+
+                               case "right":
+
+                                       adjust = colEl.clientWidth - _this2.headersElement.clientWidth;
+
+                                       break;
+
+                       }
+
+                       //check column visibility
+
+                       if (!ifVisible) {
+
+                               offset = colEl.offsetLeft;
+
+                               if (offset > 0 && offset + colEl.offsetWidth < _this2.element.clientWidth) {
+
+                                       return false;
+                               }
+                       }
+
+                       //calculate scroll position
+
+                       left = colEl.offsetLeft + _this2.element.scrollLeft + adjust;
+
+                       left = Math.max(Math.min(left, _this2.table.rowManager.element.scrollWidth - _this2.table.rowManager.element.clientWidth), 0);
+
+                       _this2.table.rowManager.scrollHorizontal(left);
+
+                       _this2.scrollHorizontal(left);
+
+                       resolve();
+               } else {
+
+                       console.warn("Scroll Error - Column not visible");
+
+                       reject("Scroll Error - Column not visible");
+               }
+       });
+};
+
+//////////////// Cell Management /////////////////
+
+
+ColumnManager.prototype.generateCells = function (row) {
+
+       var self = this;
+
+       var cells = [];
+
+       self.columnsByIndex.forEach(function (column) {
+
+               cells.push(column.generateCell(row));
+       });
+
+       return cells;
+};
+
+//////////////// Column Management /////////////////
+
+
+ColumnManager.prototype.getFlexBaseWidth = function () {
+
+       var self = this,
+           totalWidth = self.table.element.clientWidth,
+           //table element width
+
+       fixedWidth = 0;
+
+       //adjust for vertical scrollbar if present
+
+       if (self.rowManager.element.scrollHeight > self.rowManager.element.clientHeight) {
+
+               totalWidth -= self.rowManager.element.offsetWidth - self.rowManager.element.clientWidth;
+       }
+
+       this.columnsByIndex.forEach(function (column) {
+
+               var width, minWidth, colWidth;
+
+               if (column.visible) {
+
+                       width = column.definition.width || 0;
+
+                       minWidth = typeof column.minWidth == "undefined" ? self.table.options.columnMinWidth : parseInt(column.minWidth);
+
+                       if (typeof width == "string") {
+
+                               if (width.indexOf("%") > -1) {
+
+                                       colWidth = totalWidth / 100 * parseInt(width);
+                               } else {
+
+                                       colWidth = parseInt(width);
+                               }
+                       } else {
+
+                               colWidth = width;
+                       }
+
+                       fixedWidth += colWidth > minWidth ? colWidth : minWidth;
+               }
+       });
+
+       return fixedWidth;
+};
+
+ColumnManager.prototype.addColumn = function (definition, before, nextToColumn) {
+
+       var column = this._addColumn(definition, before, nextToColumn);
+
+       this._reIndexColumns();
+
+       if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+               this.table.modules.responsiveLayout.initialize();
+       }
+
+       if (this.table.modExists("columnCalcs")) {
+
+               this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
+       }
+
+       this.redraw();
+
+       if (this.table.modules.layout.getMode() != "fitColumns") {
+
+               column.reinitializeWidth();
+       }
+
+       this._verticalAlignHeaders();
+
+       this.table.rowManager.reinitialize();
+};
+
+//remove column from system
+
+ColumnManager.prototype.deregisterColumn = function (column) {
+
+       var field = column.getField(),
+           index;
+
+       //remove from field list
+
+       if (field) {
+
+               delete this.columnsByField[field];
+       }
+
+       //remove from index list
+
+       index = this.columnsByIndex.indexOf(column);
+
+       if (index > -1) {
+
+               this.columnsByIndex.splice(index, 1);
+       }
+
+       //remove from column list
+
+       index = this.columns.indexOf(column);
+
+       if (index > -1) {
+
+               this.columns.splice(index, 1);
+       }
+
+       if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+               this.table.modules.responsiveLayout.initialize();
+       }
+
+       this.redraw();
+};
+
+//redraw columns
+
+ColumnManager.prototype.redraw = function (force) {
+
+       if (force) {
+
+               if (Tabulator.prototype.helpers.elVisible(this.element)) {
+
+                       this._verticalAlignHeaders();
+               }
+
+               this.table.rowManager.resetScroll();
+
+               this.table.rowManager.reinitialize();
+       }
+
+       if (this.table.modules.layout.getMode() == "fitColumns") {
+
+               this.table.modules.layout.layout();
+       } else {
+
+               if (force) {
+
+                       this.table.modules.layout.layout();
+               } else {
+
+                       if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+                               this.table.modules.responsiveLayout.update();
+                       }
+               }
+       }
+
+       if (this.table.modExists("frozenColumns")) {
+
+               this.table.modules.frozenColumns.layout();
+       }
+
+       if (this.table.modExists("columnCalcs")) {
+
+               this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
+       }
+
+       if (force) {
+
+               if (this.table.options.persistentLayout && this.table.modExists("persistence", true)) {
+
+                       this.table.modules.persistence.save("columns");
+               }
+
+               if (this.table.modExists("columnCalcs")) {
+
+                       this.table.modules.columnCalcs.redraw();
+               }
+       }
+
+       this.table.footerManager.redraw();
+};
+
+//public column object
+var ColumnComponent = function ColumnComponent(column) {
+       this._column = column;
+       this.type = "ColumnComponent";
+};
+
+ColumnComponent.prototype.getElement = function () {
+       return this._column.getElement();
+};
+
+ColumnComponent.prototype.getDefinition = function () {
+       return this._column.getDefinition();
+};
+
+ColumnComponent.prototype.getField = function () {
+       return this._column.getField();
+};
+
+ColumnComponent.prototype.getCells = function () {
+       var cells = [];
+
+       this._column.cells.forEach(function (cell) {
+               cells.push(cell.getComponent());
+       });
+
+       return cells;
+};
+
+ColumnComponent.prototype.getVisibility = function () {
+       return this._column.visible;
+};
+
+ColumnComponent.prototype.show = function () {
+       if (this._column.isGroup) {
+               this._column.columns.forEach(function (column) {
+                       column.show();
+               });
+       } else {
+               this._column.show();
+       }
+};
+
+ColumnComponent.prototype.hide = function () {
+       if (this._column.isGroup) {
+               this._column.columns.forEach(function (column) {
+                       column.hide();
+               });
+       } else {
+               this._column.hide();
+       }
+};
+
+ColumnComponent.prototype.toggle = function () {
+       if (this._column.visible) {
+               this.hide();
+       } else {
+               this.show();
+       }
+};
+
+ColumnComponent.prototype.delete = function () {
+       this._column.delete();
+};
+
+ColumnComponent.prototype.getSubColumns = function () {
+       var output = [];
+
+       if (this._column.columns.length) {
+               this._column.columns.forEach(function (column) {
+                       output.push(column.getComponent());
+               });
+       }
+
+       return output;
+};
+
+ColumnComponent.prototype.getParentColumn = function () {
+       return this._column.parent instanceof Column ? this._column.parent.getComponent() : false;
+};
+
+ColumnComponent.prototype._getSelf = function () {
+       return this._column;
+};
+
+ColumnComponent.prototype.scrollTo = function () {
+       return this._column.table.columnManager.scrollToColumn(this._column);
+};
+
+ColumnComponent.prototype.getTable = function () {
+       return this._column.table;
+};
+
+ColumnComponent.prototype.headerFilterFocus = function () {
+       if (this._column.table.modExists("filter", true)) {
+               this._column.table.modules.filter.setHeaderFilterFocus(this._column);
+       }
+};
+
+ColumnComponent.prototype.reloadHeaderFilter = function () {
+       if (this._column.table.modExists("filter", true)) {
+               this._column.table.modules.filter.reloadHeaderFilter(this._column);
+       }
+};
+
+ColumnComponent.prototype.setHeaderFilterValue = function (value) {
+       if (this._column.table.modExists("filter", true)) {
+               this._column.table.modules.filter.setHeaderFilterValue(this._column, value);
+       }
+};
+
+ColumnComponent.prototype.move = function (to, after) {
+       var toColumn = this._column.table.columnManager.findColumn(to);
+
+       if (toColumn) {
+               this._column.table.columnManager.moveColumn(this._column, toColumn, after);
+       } else {
+               console.warn("Move Error - No matching column found:", toColumn);
+       }
+};
+
+ColumnComponent.prototype.getNextColumn = function () {
+       var nextCol = this._column.nextColumn();
+
+       return nextCol ? nextCol.getComponent() : false;
+};
+
+ColumnComponent.prototype.getPrevColumn = function () {
+       var prevCol = this._column.prevColumn();
+
+       return prevCol ? prevCol.getComponent() : false;
+};
+
+var Column = function Column(def, parent) {
+       var self = this;
+
+       this.table = parent.table;
+       this.definition = def; //column definition
+       this.parent = parent; //hold parent object
+       this.type = "column"; //type of element
+       this.columns = []; //child columns
+       this.cells = []; //cells bound to this column
+       this.element = this.createElement(); //column header element
+       this.contentElement = false;
+       this.groupElement = this.createGroupElement(); //column group holder element
+       this.isGroup = false;
+       this.tooltip = false; //hold column tooltip
+       this.hozAlign = ""; //horizontal text alignment
+
+       //multi dimensional filed handling
+       this.field = "";
+       this.fieldStructure = "";
+       this.getFieldValue = "";
+       this.setFieldValue = "";
+
+       this.setField(this.definition.field);
+
+       if (this.table.options.invalidOptionWarnings) {
+               this.checkDefinition();
+       }
+
+       this.modules = {}; //hold module variables;
+
+       this.cellEvents = {
+               cellClick: false,
+               cellDblClick: false,
+               cellContext: false,
+               cellTap: false,
+               cellDblTap: false,
+               cellTapHold: false,
+               cellMouseEnter: false,
+               cellMouseLeave: false,
+               cellMouseOver: false,
+               cellMouseOut: false,
+               cellMouseMove: false
+       };
+
+       this.width = null; //column width
+       this.widthStyled = ""; //column width prestyled to improve render efficiency
+       this.minWidth = null; //column minimum width
+       this.minWidthStyled = ""; //column minimum prestyled to improve render efficiency
+       this.widthFixed = false; //user has specified a width for this column
+
+       this.visible = true; //default visible state
+
+       this._mapDepricatedFunctionality();
+
+       //initialize column
+       if (def.columns) {
+
+               this.isGroup = true;
+
+               def.columns.forEach(function (def, i) {
+                       var newCol = new Column(def, self);
+                       self.attachColumn(newCol);
+               });
+
+               self.checkColumnVisibility();
+       } else {
+               parent.registerColumnField(this);
+       }
+
+       if (def.rowHandle && this.table.options.movableRows !== false && this.table.modExists("moveRow")) {
+               this.table.modules.moveRow.setHandle(true);
+       }
+
+       this._buildHeader();
+};
+
+Column.prototype.createElement = function () {
+       var el = document.createElement("div");
+
+       el.classList.add("tabulator-col");
+       el.setAttribute("role", "columnheader");
+       el.setAttribute("aria-sort", "none");
+
+       return el;
+};
+
+Column.prototype.createGroupElement = function () {
+       var el = document.createElement("div");
+
+       el.classList.add("tabulator-col-group-cols");
+
+       return el;
+};
+
+Column.prototype.checkDefinition = function () {
+       var _this3 = this;
+
+       Object.keys(this.definition).forEach(function (key) {
+               if (_this3.defaultOptionList.indexOf(key) === -1) {
+                       console.warn("Invalid column definition option in '" + (_this3.field || _this3.definition.title) + "' column:", key);
+               }
+       });
+};
+
+Column.prototype.setField = function (field) {
+       this.field = field;
+       this.fieldStructure = field ? this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field] : [];
+       this.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData;
+       this.setFieldValue = this.fieldStructure.length > 1 ? this._setNesteData : this._setFlatData;
+};
+
+//register column position with column manager
+Column.prototype.registerColumnPosition = function (column) {
+       this.parent.registerColumnPosition(column);
+};
+
+//register column position with column manager
+Column.prototype.registerColumnField = function (column) {
+       this.parent.registerColumnField(column);
+};
+
+//trigger position registration
+Column.prototype.reRegisterPosition = function () {
+       if (this.isGroup) {
+               this.columns.forEach(function (column) {
+                       column.reRegisterPosition();
+               });
+       } else {
+               this.registerColumnPosition(this);
+       }
+};
+
+Column.prototype._mapDepricatedFunctionality = function () {
+       if (typeof this.definition.hideInHtml !== "undefined") {
+               this.definition.htmlOutput = !this.definition.hideInHtml;
+               console.warn("hideInHtml column definition property is deprecated, you should now use htmlOutput");
+       }
+};
+
+Column.prototype.setTooltip = function () {
+       var self = this,
+           def = self.definition;
+
+       //set header tooltips
+       var tooltip = def.headerTooltip || def.tooltip === false ? def.headerTooltip : self.table.options.tooltipsHeader;
+
+       if (tooltip) {
+               if (tooltip === true) {
+                       if (def.field) {
+                               self.table.modules.localize.bind("columns|" + def.field, function (value) {
+                                       self.element.setAttribute("title", value || def.title);
+                               });
+                       } else {
+                               self.element.setAttribute("title", def.title);
+                       }
+               } else {
+                       if (typeof tooltip == "function") {
+                               tooltip = tooltip(self.getComponent());
+
+                               if (tooltip === false) {
+                                       tooltip = "";
+                               }
+                       }
+
+                       self.element.setAttribute("title", tooltip);
+               }
+       } else {
+               self.element.setAttribute("title", "");
+       }
+};
+
+//build header element
+Column.prototype._buildHeader = function () {
+       var self = this,
+           def = self.definition;
+
+       while (self.element.firstChild) {
+               self.element.removeChild(self.element.firstChild);
+       }if (def.headerVertical) {
+               self.element.classList.add("tabulator-col-vertical");
+
+               if (def.headerVertical === "flip") {
+                       self.element.classList.add("tabulator-col-vertical-flip");
+               }
+       }
+
+       self.contentElement = self._bindEvents();
+
+       self.contentElement = self._buildColumnHeaderContent();
+
+       self.element.appendChild(self.contentElement);
+
+       if (self.isGroup) {
+               self._buildGroupHeader();
+       } else {
+               self._buildColumnHeader();
+       }
+
+       self.setTooltip();
+
+       //set resizable handles
+       if (self.table.options.resizableColumns && self.table.modExists("resizeColumns")) {
+               self.table.modules.resizeColumns.initializeColumn("header", self, self.element);
+       }
+
+       //set resizable handles
+       if (def.headerFilter && self.table.modExists("filter") && self.table.modExists("edit")) {
+               if (typeof def.headerFilterPlaceholder !== "undefined" && def.field) {
+                       self.table.modules.localize.setHeaderFilterColumnPlaceholder(def.field, def.headerFilterPlaceholder);
+               }
+
+               self.table.modules.filter.initializeColumn(self);
+       }
+
+       //set resizable handles
+       if (self.table.modExists("frozenColumns")) {
+               self.table.modules.frozenColumns.initializeColumn(self);
+       }
+
+       //set movable column
+       if (self.table.options.movableColumns && !self.isGroup && self.table.modExists("moveColumn")) {
+               self.table.modules.moveColumn.initializeColumn(self);
+       }
+
+       //set calcs column
+       if ((def.topCalc || def.bottomCalc) && self.table.modExists("columnCalcs")) {
+               self.table.modules.columnCalcs.initializeColumn(self);
+       }
+
+       //update header tooltip on mouse enter
+       self.element.addEventListener("mouseenter", function (e) {
+               self.setTooltip();
+       });
+};
+
+Column.prototype._bindEvents = function () {
+
+       var self = this,
+           def = self.definition,
+           dblTap,
+           tapHold,
+           tap;
+
+       //setup header click event bindings
+       if (typeof def.headerClick == "function") {
+               self.element.addEventListener("click", function (e) {
+                       def.headerClick(e, self.getComponent());
+               });
+       }
+
+       if (typeof def.headerDblClick == "function") {
+               self.element.addEventListener("dblclick", function (e) {
+                       def.headerDblClick(e, self.getComponent());
+               });
+       }
+
+       if (typeof def.headerContext == "function") {
+               self.element.addEventListener("contextmenu", function (e) {
+                       def.headerContext(e, self.getComponent());
+               });
+       }
+
+       //setup header tap event bindings
+       if (typeof def.headerTap == "function") {
+               tap = false;
+
+               self.element.addEventListener("touchstart", function (e) {
+                       tap = true;
+               }, { passive: true });
+
+               self.element.addEventListener("touchend", function (e) {
+                       if (tap) {
+                               def.headerTap(e, self.getComponent());
+                       }
+
+                       tap = false;
+               });
+       }
+
+       if (typeof def.headerDblTap == "function") {
+               dblTap = null;
+
+               self.element.addEventListener("touchend", function (e) {
+
+                       if (dblTap) {
+                               clearTimeout(dblTap);
+                               dblTap = null;
+
+                               def.headerDblTap(e, self.getComponent());
+                       } else {
+
+                               dblTap = setTimeout(function () {
+                                       clearTimeout(dblTap);
+                                       dblTap = null;
+                               }, 300);
+                       }
+               });
+       }
+
+       if (typeof def.headerTapHold == "function") {
+               tapHold = null;
+
+               self.element.addEventListener("touchstart", function (e) {
+                       clearTimeout(tapHold);
+
+                       tapHold = setTimeout(function () {
+                               clearTimeout(tapHold);
+                               tapHold = null;
+                               tap = false;
+                               def.headerTapHold(e, self.getComponent());
+                       }, 1000);
+               }, { passive: true });
+
+               self.element.addEventListener("touchend", function (e) {
+                       clearTimeout(tapHold);
+                       tapHold = null;
+               });
+       }
+
+       //store column cell click event bindings
+       if (typeof def.cellClick == "function") {
+               self.cellEvents.cellClick = def.cellClick;
+       }
+
+       if (typeof def.cellDblClick == "function") {
+               self.cellEvents.cellDblClick = def.cellDblClick;
+       }
+
+       if (typeof def.cellContext == "function") {
+               self.cellEvents.cellContext = def.cellContext;
+       }
+
+       //store column mouse event bindings
+       if (typeof def.cellMouseEnter == "function") {
+               self.cellEvents.cellMouseEnter = def.cellMouseEnter;
+       }
+
+       if (typeof def.cellMouseLeave == "function") {
+               self.cellEvents.cellMouseLeave = def.cellMouseLeave;
+       }
+
+       if (typeof def.cellMouseOver == "function") {
+               self.cellEvents.cellMouseOver = def.cellMouseOver;
+       }
+
+       if (typeof def.cellMouseOut == "function") {
+               self.cellEvents.cellMouseOut = def.cellMouseOut;
+       }
+
+       if (typeof def.cellMouseMove == "function") {
+               self.cellEvents.cellMouseMove = def.cellMouseMove;
+       }
+
+       //setup column cell tap event bindings
+       if (typeof def.cellTap == "function") {
+               self.cellEvents.cellTap = def.cellTap;
+       }
+
+       if (typeof def.cellDblTap == "function") {
+               self.cellEvents.cellDblTap = def.cellDblTap;
+       }
+
+       if (typeof def.cellTapHold == "function") {
+               self.cellEvents.cellTapHold = def.cellTapHold;
+       }
+
+       //setup column cell edit callbacks
+       if (typeof def.cellEdited == "function") {
+               self.cellEvents.cellEdited = def.cellEdited;
+       }
+
+       if (typeof def.cellEditing == "function") {
+               self.cellEvents.cellEditing = def.cellEditing;
+       }
+
+       if (typeof def.cellEditCancelled == "function") {
+               self.cellEvents.cellEditCancelled = def.cellEditCancelled;
+       }
+};
+
+//build header element for header
+Column.prototype._buildColumnHeader = function () {
+       var self = this,
+           def = self.definition,
+           table = self.table,
+           sortable;
+
+       //set column sorter
+       if (table.modExists("sort")) {
+               table.modules.sort.initializeColumn(self, self.contentElement);
+       }
+
+       //set column formatter
+       if (table.modExists("format")) {
+               table.modules.format.initializeColumn(self);
+       }
+
+       //set column editor
+       if (typeof def.editor != "undefined" && table.modExists("edit")) {
+               table.modules.edit.initializeColumn(self);
+       }
+
+       //set colum validator
+       if (typeof def.validator != "undefined" && table.modExists("validate")) {
+               table.modules.validate.initializeColumn(self);
+       }
+
+       //set column mutator
+       if (table.modExists("mutator")) {
+               table.modules.mutator.initializeColumn(self);
+       }
+
+       //set column accessor
+       if (table.modExists("accessor")) {
+               table.modules.accessor.initializeColumn(self);
+       }
+
+       //set respoviveLayout
+       if (_typeof(table.options.responsiveLayout) && table.modExists("responsiveLayout")) {
+               table.modules.responsiveLayout.initializeColumn(self);
+       }
+
+       //set column visibility
+       if (typeof def.visible != "undefined") {
+               if (def.visible) {
+                       self.show(true);
+               } else {
+                       self.hide(true);
+               }
+       }
+
+       //asign additional css classes to column header
+       if (def.cssClass) {
+               var classeNames = def.cssClass.split(" ");
+               classeNames.forEach(function (className) {
+                       self.element.classList.add(className);
+               });
+       }
+
+       if (def.field) {
+               this.element.setAttribute("tabulator-field", def.field);
+       }
+
+       //set min width if present
+       self.setMinWidth(typeof def.minWidth == "undefined" ? self.table.options.columnMinWidth : parseInt(def.minWidth));
+
+       self.reinitializeWidth();
+
+       //set tooltip if present
+       self.tooltip = self.definition.tooltip || self.definition.tooltip === false ? self.definition.tooltip : self.table.options.tooltips;
+
+       //set orizontal text alignment
+       self.hozAlign = typeof self.definition.align == "undefined" ? "" : self.definition.align;
+};
+
+Column.prototype._buildColumnHeaderContent = function () {
+       var self = this,
+           def = self.definition,
+           table = self.table;
+
+       var contentElement = document.createElement("div");
+       contentElement.classList.add("tabulator-col-content");
+
+       contentElement.appendChild(self._buildColumnHeaderTitle());
+
+       return contentElement;
+};
+
+//build title element of column
+Column.prototype._buildColumnHeaderTitle = function () {
+       var self = this,
+           def = self.definition,
+           table = self.table,
+           title;
+
+       var titleHolderElement = document.createElement("div");
+       titleHolderElement.classList.add("tabulator-col-title");
+
+       if (def.editableTitle) {
+               var titleElement = document.createElement("input");
+               titleElement.classList.add("tabulator-title-editor");
+
+               titleElement.addEventListener("click", function (e) {
+                       e.stopPropagation();
+                       titleElement.focus();
+               });
+
+               titleElement.addEventListener("change", function () {
+                       def.title = titleElement.value;
+                       table.options.columnTitleChanged.call(self.table, self.getComponent());
+               });
+
+               titleHolderElement.appendChild(titleElement);
+
+               if (def.field) {
+                       table.modules.localize.bind("columns|" + def.field, function (text) {
+                               titleElement.value = text || def.title || "&nbsp;";
+                       });
+               } else {
+                       titleElement.value = def.title || "&nbsp;";
+               }
+       } else {
+               if (def.field) {
+                       table.modules.localize.bind("columns|" + def.field, function (text) {
+                               self._formatColumnHeaderTitle(titleHolderElement, text || def.title || "&nbsp;");
+                       });
+               } else {
+                       self._formatColumnHeaderTitle(titleHolderElement, def.title || "&nbsp;");
+               }
+       }
+
+       return titleHolderElement;
+};
+
+Column.prototype._formatColumnHeaderTitle = function (el, title) {
+       var formatter, contents, params, mockCell;
+
+       if (this.definition.titleFormatter && this.table.modExists("format")) {
+
+               formatter = this.table.modules.format.getFormatter(this.definition.titleFormatter);
+
+               mockCell = {
+                       getValue: function getValue() {
+                               return title;
+                       },
+                       getElement: function getElement() {
+                               return el;
+                       }
+               };
+
+               params = this.definition.titleFormatterParams || {};
+
+               params = typeof params === "function" ? params() : params;
+
+               contents = formatter.call(this.table.modules.format, mockCell, params);
+
+               switch (typeof contents === 'undefined' ? 'undefined' : _typeof(contents)) {
+                       case "object":
+                               if (contents instanceof Node) {
+                                       el.appendChild(contents);
+                               } else {
+                                       el.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:", contents);
+                               }
+                               break;
+                       case "undefined":
+                       case "null":
+                               el.innerHTML = "";
+                               break;
+                       default:
+                               el.innerHTML = contents;
+               }
+       } else {
+               el.innerHTML = title;
+       }
+};
+
+//build header element for column group
+Column.prototype._buildGroupHeader = function () {
+       this.element.classList.add("tabulator-col-group");
+       this.element.setAttribute("role", "columngroup");
+       this.element.setAttribute("aria-title", this.definition.title);
+
+       this.element.appendChild(this.groupElement);
+};
+
+//flat field lookup
+Column.prototype._getFlatData = function (data) {
+       return data[this.field];
+};
+
+//nested field lookup
+Column.prototype._getNestedData = function (data) {
+       var dataObj = data,
+           structure = this.fieldStructure,
+           length = structure.length,
+           output;
+
+       for (var i = 0; i < length; i++) {
+
+               dataObj = dataObj[structure[i]];
+
+               output = dataObj;
+
+               if (!dataObj) {
+                       break;
+               }
+       }
+
+       return output;
+};
+
+//flat field set
+Column.prototype._setFlatData = function (data, value) {
+       if (this.field) {
+               data[this.field] = value;
+       }
+};
+
+//nested field set
+Column.prototype._setNesteData = function (data, value) {
+       var dataObj = data,
+           structure = this.fieldStructure,
+           length = structure.length;
+
+       for (var i = 0; i < length; i++) {
+
+               if (i == length - 1) {
+                       dataObj[structure[i]] = value;
+               } else {
+                       if (!dataObj[structure[i]]) {
+                               dataObj[structure[i]] = {};
+                       }
+
+                       dataObj = dataObj[structure[i]];
+               }
+       }
+};
+
+//attach column to this group
+Column.prototype.attachColumn = function (column) {
+       var self = this;
+
+       if (self.groupElement) {
+               self.columns.push(column);
+               self.groupElement.appendChild(column.getElement());
+       } else {
+               console.warn("Column Warning - Column being attached to another column instead of column group");
+       }
+};
+
+//vertically align header in column
+Column.prototype.verticalAlign = function (alignment, height) {
+
+       //calculate height of column header and group holder element
+       var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : height || this.parent.getHeadersElement().clientHeight;
+       // var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight;
+
+       this.element.style.height = parentHeight + "px";
+
+       if (this.isGroup) {
+               this.groupElement.style.minHeight = parentHeight - this.contentElement.offsetHeight + "px";
+       }
+
+       //vertically align cell contents
+       if (!this.isGroup && alignment !== "top") {
+               if (alignment === "bottom") {
+                       this.element.style.paddingTop = this.element.clientHeight - this.contentElement.offsetHeight + "px";
+               } else {
+                       this.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) / 2 + "px";
+               }
+       }
+
+       this.columns.forEach(function (column) {
+               column.verticalAlign(alignment);
+       });
+};
+
+//clear vertical alignmenet
+Column.prototype.clearVerticalAlign = function () {
+       this.element.style.paddingTop = "";
+       this.element.style.height = "";
+       this.element.style.minHeight = "";
+       this.groupElement.style.minHeight = "";
+
+       this.columns.forEach(function (column) {
+               column.clearVerticalAlign();
+       });
+};
+
+//// Retreive Column Information ////
+
+//return column header element
+Column.prototype.getElement = function () {
+       return this.element;
+};
+
+//return colunm group element
+Column.prototype.getGroupElement = function () {
+       return this.groupElement;
+};
+
+//return field name
+Column.prototype.getField = function () {
+       return this.field;
+};
+
+//return the first column in a group
+Column.prototype.getFirstColumn = function () {
+       if (!this.isGroup) {
+               return this;
+       } else {
+               if (this.columns.length) {
+                       return this.columns[0].getFirstColumn();
+               } else {
+                       return false;
+               }
+       }
+};
+
+//return the last column in a group
+Column.prototype.getLastColumn = function () {
+       if (!this.isGroup) {
+               return this;
+       } else {
+               if (this.columns.length) {
+                       return this.columns[this.columns.length - 1].getLastColumn();
+               } else {
+                       return false;
+               }
+       }
+};
+
+//return all columns in a group
+Column.prototype.getColumns = function () {
+       return this.columns;
+};
+
+//return all columns in a group
+Column.prototype.getCells = function () {
+       return this.cells;
+};
+
+//retreive the top column in a group of columns
+Column.prototype.getTopColumn = function () {
+       if (this.parent.isGroup) {
+               return this.parent.getTopColumn();
+       } else {
+               return this;
+       }
+};
+
+//return column definition object
+Column.prototype.getDefinition = function (updateBranches) {
+       var colDefs = [];
+
+       if (this.isGroup && updateBranches) {
+               this.columns.forEach(function (column) {
+                       colDefs.push(column.getDefinition(true));
+               });
+
+               this.definition.columns = colDefs;
+       }
+
+       return this.definition;
+};
+
+//////////////////// Actions ////////////////////
+
+Column.prototype.checkColumnVisibility = function () {
+       var visible = false;
+
+       this.columns.forEach(function (column) {
+               if (column.visible) {
+                       visible = true;
+               }
+       });
+
+       if (visible) {
+               this.show();
+               this.parent.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), false);
+       } else {
+               this.hide();
+       }
+};
+
+//show column
+Column.prototype.show = function (silent, responsiveToggle) {
+       if (!this.visible) {
+               this.visible = true;
+
+               this.element.style.display = "";
+
+               if (this.parent.isGroup) {
+                       this.parent.checkColumnVisibility();
+               }
+
+               this.cells.forEach(function (cell) {
+                       cell.show();
+               });
+
+               if (!this.isGroup && this.width === null) {
+                       this.reinitializeWidth();
+               }
+
+               this.table.columnManager._verticalAlignHeaders();
+
+               if (this.table.options.persistentLayout && this.table.modExists("responsiveLayout", true)) {
+                       this.table.modules.persistence.save("columns");
+               }
+
+               if (!responsiveToggle && this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+                       this.table.modules.responsiveLayout.updateColumnVisibility(this, this.visible);
+               }
+
+               if (!silent) {
+                       this.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), true);
+               }
+
+               if (this.parent.isGroup) {
+                       this.parent.matchChildWidths();
+               }
+       }
+};
+
+//hide column
+Column.prototype.hide = function (silent, responsiveToggle) {
+       if (this.visible) {
+               this.visible = false;
+
+               this.element.style.display = "none";
+
+               this.table.columnManager._verticalAlignHeaders();
+
+               if (this.parent.isGroup) {
+                       this.parent.checkColumnVisibility();
+               }
+
+               this.cells.forEach(function (cell) {
+                       cell.hide();
+               });
+
+               if (this.table.options.persistentLayout && this.table.modExists("persistence", true)) {
+                       this.table.modules.persistence.save("columns");
+               }
+
+               if (!responsiveToggle && this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+                       this.table.modules.responsiveLayout.updateColumnVisibility(this, this.visible);
+               }
+
+               if (!silent) {
+                       this.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), false);
+               }
+
+               if (this.parent.isGroup) {
+                       this.parent.matchChildWidths();
+               }
+       }
+};
+
+Column.prototype.matchChildWidths = function () {
+       var childWidth = 0;
+
+       if (this.contentElement && this.columns.length) {
+               this.columns.forEach(function (column) {
+                       if (column.visible) {
+                               childWidth += column.getWidth();
+                       }
+               });
+
+               this.contentElement.style.maxWidth = childWidth - 1 + "px";
+       }
+};
+
+Column.prototype.setWidth = function (width) {
+       this.widthFixed = true;
+       this.setWidthActual(width);
+};
+
+Column.prototype.setWidthActual = function (width) {
+       if (isNaN(width)) {
+               width = Math.floor(this.table.element.clientWidth / 100 * parseInt(width));
+       }
+
+       width = Math.max(this.minWidth, width);
+
+       this.width = width;
+       this.widthStyled = width ? width + "px" : "";
+
+       this.element.style.width = this.widthStyled;
+
+       if (!this.isGroup) {
+               this.cells.forEach(function (cell) {
+                       cell.setWidth();
+               });
+       }
+
+       if (this.parent.isGroup) {
+               this.parent.matchChildWidths();
+       }
+
+       //set resizable handles
+       if (this.table.modExists("frozenColumns")) {
+               this.table.modules.frozenColumns.layout();
+       }
+};
+
+Column.prototype.checkCellHeights = function () {
+       var rows = [];
+
+       this.cells.forEach(function (cell) {
+               if (cell.row.heightInitialized) {
+                       if (cell.row.getElement().offsetParent !== null) {
+                               rows.push(cell.row);
+                               cell.row.clearCellHeight();
+                       } else {
+                               cell.row.heightInitialized = false;
+                       }
+               }
+       });
+
+       rows.forEach(function (row) {
+               row.calcHeight();
+       });
+
+       rows.forEach(function (row) {
+               row.setCellHeight();
+       });
+};
+
+Column.prototype.getWidth = function () {
+       // return this.element.offsetWidth;
+       return this.width;
+};
+
+Column.prototype.getHeight = function () {
+       return this.element.offsetHeight;
+};
+
+Column.prototype.setMinWidth = function (minWidth) {
+       this.minWidth = minWidth;
+       this.minWidthStyled = minWidth ? minWidth + "px" : "";
+
+       this.element.style.minWidth = this.minWidthStyled;
+
+       this.cells.forEach(function (cell) {
+               cell.setMinWidth();
+       });
+};
+
+Column.prototype.delete = function () {
+       if (this.isGroup) {
+               this.columns.forEach(function (column) {
+                       column.delete();
+               });
+       }
+
+       var cellCount = this.cells.length;
+
+       for (var i = 0; i < cellCount; i++) {
+               this.cells[0].delete();
+       }
+
+       this.element.parentNode.removeChild(this.element);
+
+       this.table.columnManager.deregisterColumn(this);
+};
+
+//////////////// Cell Management /////////////////
+
+//generate cell for this column
+Column.prototype.generateCell = function (row) {
+       var self = this;
+
+       var cell = new Cell(self, row);
+
+       this.cells.push(cell);
+
+       return cell;
+};
+
+Column.prototype.nextColumn = function () {
+       var index = this.table.columnManager.findColumnIndex(this);
+       return index > -1 ? this._nextVisibleColumn(index + 1) : false;
+};
+
+Column.prototype._nextVisibleColumn = function (index) {
+       var column = this.table.columnManager.getColumnByIndex(index);
+       return !column || column.visible ? column : this._nextVisibleColumn(index + 1);
+};
+
+Column.prototype.prevColumn = function () {
+       var index = this.table.columnManager.findColumnIndex(this);
+       return index > -1 ? this._prevVisibleColumn(index - 1) : false;
+};
+
+Column.prototype._prevVisibleColumn = function (index) {
+       var column = this.table.columnManager.getColumnByIndex(index);
+       return !column || column.visible ? column : this._prevVisibleColumn(index - 1);
+};
+
+Column.prototype.reinitializeWidth = function (force) {
+       this.widthFixed = false;
+
+       //set width if present
+       if (typeof this.definition.width !== "undefined" && !force) {
+               this.setWidth(this.definition.width);
+       }
+
+       //hide header filters to prevent them altering column width
+       if (this.table.modExists("filter")) {
+               this.table.modules.filter.hideHeaderFilterElements();
+       }
+
+       this.fitToData();
+
+       //show header filters again after layout is complete
+       if (this.table.modExists("filter")) {
+               this.table.modules.filter.showHeaderFilterElements();
+       }
+};
+
+//set column width to maximum cell width
+Column.prototype.fitToData = function () {
+       var self = this;
+
+       if (!this.widthFixed) {
+               this.element.style.width = "";
+
+               self.cells.forEach(function (cell) {
+                       cell.clearWidth();
+               });
+       }
+
+       var maxWidth = this.element.offsetWidth;
+
+       if (!self.width || !this.widthFixed) {
+               self.cells.forEach(function (cell) {
+                       var width = cell.getWidth();
+
+                       if (width > maxWidth) {
+                               maxWidth = width;
+                       }
+               });
+
+               if (maxWidth) {
+                       self.setWidthActual(maxWidth + 1);
+               }
+       }
+};
+
+Column.prototype.deleteCell = function (cell) {
+       var index = this.cells.indexOf(cell);
+
+       if (index > -1) {
+               this.cells.splice(index, 1);
+       }
+};
+
+Column.prototype.defaultOptionList = ["title", "field", "columns", "visible", "align", "width", "minWidth", "widthGrow", "widthShrink", "resizable", "frozen", "responsive", "tooltip", "cssClass", "rowHandle", "hideInHtml", "print", "htmlOutput", "sorter", "sorterParams", "formatter", "formatterParams", "variableHeight", "editable", "editor", "editorParams", "validator", "mutator", "mutatorParams", "mutatorData", "mutatorDataParams", "mutatorEdit", "mutatorEditParams", "mutatorClipboard", "mutatorClipboardParams", "accessor", "accessorParams", "accessorData", "accessorDataParams", "accessorDownload", "accessorDownloadParams", "accessorClipboard", "accessorClipboardParams", "clipboard", "download", "downloadTitle", "topCalc", "topCalcParams", "topCalcFormatter", "topCalcFormatterParams", "bottomCalc", "bottomCalcParams", "bottomCalcFormatter", "bottomCalcFormatterParams", "cellClick", "cellDblClick", "cellContext", "cellTap", "cellDblTap", "cellTapHold", "cellMouseEnter", "cellMouseLeave", "cellMouseOver", "cellMouseOut", "cellMouseMove", "cellEditing", "cellEdited", "cellEditCancelled", "headerSort", "headerSortStartingDir", "headerSortTristate", "headerClick", "headerDblClick", "headerContext", "headerTap", "headerDblTap", "headerTapHold", "headerTooltip", "headerVertical", "editableTitle", "titleFormatter", "titleFormatterParams", "headerFilter", "headerFilterPlaceholder", "headerFilterParams", "headerFilterEmptyCheck", "headerFilterFunc", "headerFilterFuncParams", "headerFilterLiveFilter", "print"];
+
+//////////////// Event Bindings /////////////////
+
+//////////////// Object Generation /////////////////
+Column.prototype.getComponent = function () {
+       return new ColumnComponent(this);
+};
+
+var RowManager = function RowManager(table) {
+
+       this.table = table;
+       this.element = this.createHolderElement(); //containing element
+       this.tableElement = this.createTableElement(); //table element
+       this.columnManager = null; //hold column manager object
+       this.height = 0; //hold height of table element
+
+       this.firstRender = false; //handle first render
+       this.renderMode = "classic"; //current rendering mode
+
+       this.rows = []; //hold row data objects
+       this.activeRows = []; //rows currently available to on display in the table
+       this.activeRowsCount = 0; //count of active rows
+
+       this.displayRows = []; //rows currently on display in the table
+       this.displayRowsCount = 0; //count of display rows
+
+       this.scrollTop = 0;
+       this.scrollLeft = 0;
+
+       this.vDomRowHeight = 20; //approximation of row heights for padding
+
+       this.vDomTop = 0; //hold position for first rendered row in the virtual DOM
+       this.vDomBottom = 0; //hold possition for last rendered row in the virtual DOM
+
+       this.vDomScrollPosTop = 0; //last scroll position of the vDom top;
+       this.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom;
+
+       this.vDomTopPad = 0; //hold value of padding for top of virtual DOM
+       this.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM
+
+       this.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go
+
+       this.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling
+
+       this.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows)
+       this.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin
+
+       this.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed
+       this.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed
+};
+
+//////////////// Setup Functions /////////////////
+
+RowManager.prototype.createHolderElement = function () {
+       var el = document.createElement("div");
+
+       el.classList.add("tabulator-tableHolder");
+       el.setAttribute("tabindex", 0);
+
+       return el;
+};
+
+RowManager.prototype.createTableElement = function () {
+       var el = document.createElement("div");
+
+       el.classList.add("tabulator-table");
+
+       return el;
+};
+
+//return containing element
+RowManager.prototype.getElement = function () {
+       return this.element;
+};
+
+//return table element
+RowManager.prototype.getTableElement = function () {
+       return this.tableElement;
+};
+
+//return position of row in table
+RowManager.prototype.getRowPosition = function (row, active) {
+       if (active) {
+               return this.activeRows.indexOf(row);
+       } else {
+               return this.rows.indexOf(row);
+       }
+};
+
+//link to column manager
+RowManager.prototype.setColumnManager = function (manager) {
+       this.columnManager = manager;
+};
+
+RowManager.prototype.initialize = function () {
+       var self = this;
+
+       self.setRenderMode();
+
+       //initialize manager
+       self.element.appendChild(self.tableElement);
+
+       self.firstRender = true;
+
+       //scroll header along with table body
+       self.element.addEventListener("scroll", function () {
+               var left = self.element.scrollLeft;
+
+               //handle horizontal scrolling
+               if (self.scrollLeft != left) {
+                       self.columnManager.scrollHorizontal(left);
+
+                       if (self.table.options.groupBy) {
+                               self.table.modules.groupRows.scrollHeaders(left);
+                       }
+
+                       if (self.table.modExists("columnCalcs")) {
+                               self.table.modules.columnCalcs.scrollHorizontal(left);
+                       }
+               }
+
+               self.scrollLeft = left;
+       });
+
+       //handle virtual dom scrolling
+       if (this.renderMode === "virtual") {
+
+               self.element.addEventListener("scroll", function () {
+                       var top = self.element.scrollTop;
+                       var dir = self.scrollTop > top;
+
+                       //handle verical scrolling
+                       if (self.scrollTop != top) {
+                               self.scrollTop = top;
+                               self.scrollVertical(dir);
+
+                               if (self.table.options.ajaxProgressiveLoad == "scroll") {
+                                       self.table.modules.ajax.nextPage(self.element.scrollHeight - self.element.clientHeight - top);
+                               }
+                       } else {
+                               self.scrollTop = top;
+                       }
+               });
+       }
+};
+
+////////////////// Row Manipulation //////////////////
+
+RowManager.prototype.findRow = function (subject) {
+       var self = this;
+
+       if ((typeof subject === 'undefined' ? 'undefined' : _typeof(subject)) == "object") {
+
+               if (subject instanceof Row) {
+                       //subject is row element
+                       return subject;
+               } else if (subject instanceof RowComponent) {
+                       //subject is public row component
+                       return subject._getSelf() || false;
+               } else if (typeof HTMLElement !== "undefined" && subject instanceof HTMLElement) {
+                       //subject is a HTML element of the row
+                       var match = self.rows.find(function (row) {
+                               return row.element === subject;
+                       });
+
+                       return match || false;
+               }
+       } else if (typeof subject == "undefined" || subject === null) {
+               return false;
+       } else {
+               //subject should be treated as the index of the row
+               var _match = self.rows.find(function (row) {
+                       return row.data[self.table.options.index] == subject;
+               });
+
+               return _match || false;
+       }
+
+       //catch all for any other type of input
+
+       return false;
+};
+
+RowManager.prototype.getRowFromDataObject = function (data) {
+       var match = this.rows.find(function (row) {
+               return row.data === data;
+       });
+
+       return match || false;
+};
+
+RowManager.prototype.getRowFromPosition = function (position, active) {
+       if (active) {
+               return this.activeRows[position];
+       } else {
+               return this.rows[position];
+       }
+};
+
+RowManager.prototype.scrollToRow = function (row, position, ifVisible) {
+       var _this4 = this;
+
+       var rowIndex = this.getDisplayRows().indexOf(row),
+           rowEl = row.getElement(),
+           rowTop,
+           offset = 0;
+
+       return new Promise(function (resolve, reject) {
+               if (rowIndex > -1) {
+
+                       if (typeof position === "undefined") {
+                               position = _this4.table.options.scrollToRowPosition;
+                       }
+
+                       if (typeof ifVisible === "undefined") {
+                               ifVisible = _this4.table.options.scrollToRowIfVisible;
+                       }
+
+                       if (position === "nearest") {
+                               switch (_this4.renderMode) {
+                                       case "classic":
+                                               rowTop = Tabulator.prototype.helpers.elOffset(rowEl).top;
+                                               position = Math.abs(_this4.element.scrollTop - rowTop) > Math.abs(_this4.element.scrollTop + _this4.element.clientHeight - rowTop) ? "bottom" : "top";
+                                               break;
+                                       case "virtual":
+                                               position = Math.abs(_this4.vDomTop - rowIndex) > Math.abs(_this4.vDomBottom - rowIndex) ? "bottom" : "top";
+                                               break;
+                               }
+                       }
+
+                       //check row visibility
+                       if (!ifVisible) {
+                               if (Tabulator.prototype.helpers.elVisible(rowEl)) {
+                                       offset = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this4.element).top;
+
+                                       if (offset > 0 && offset < _this4.element.clientHeight - rowEl.offsetHeight) {
+                                               return false;
+                                       }
+                               }
+                       }
+
+                       //scroll to row
+                       switch (_this4.renderMode) {
+                               case "classic":
+                                       _this4.element.scrollTop = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this4.element).top + _this4.element.scrollTop;
+                                       break;
+                               case "virtual":
+                                       _this4._virtualRenderFill(rowIndex, true);
+                                       break;
+                       }
+
+                       //align to correct position
+                       switch (position) {
+                               case "middle":
+                               case "center":
+
+                                       if (_this4.element.scrollHeight - _this4.element.scrollTop == _this4.element.clientHeight) {
+                                               _this4.element.scrollTop = _this4.element.scrollTop + (rowEl.offsetTop - _this4.element.scrollTop) - (_this4.element.scrollHeight - rowEl.offsetTop) / 2;
+                                       } else {
+                                               _this4.element.scrollTop = _this4.element.scrollTop - _this4.element.clientHeight / 2;
+                                       }
+
+                                       break;
+
+                               case "bottom":
+
+                                       if (_this4.element.scrollHeight - _this4.element.scrollTop == _this4.element.clientHeight) {
+                                               _this4.element.scrollTop = _this4.element.scrollTop - (_this4.element.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;
+                                       } else {
+                                               _this4.element.scrollTop = _this4.element.scrollTop - _this4.element.clientHeight + rowEl.offsetHeight;
+                                       }
+
+                                       break;
+                       }
+
+                       resolve();
+               } else {
+                       console.warn("Scroll Error - Row not visible");
+                       reject("Scroll Error - Row not visible");
+               }
+       });
+};
+
+////////////////// Data Handling //////////////////
+
+RowManager.prototype.setData = function (data, renderInPosition) {
+       var _this5 = this;
+
+       var self = this;
+
+       return new Promise(function (resolve, reject) {
+               if (renderInPosition && _this5.getDisplayRows().length) {
+                       if (self.table.options.pagination) {
+                               self._setDataActual(data, true);
+                       } else {
+                               _this5.reRenderInPosition(function () {
+                                       self._setDataActual(data);
+                               });
+                       }
+               } else {
+                       if (_this5.table.options.autoColumns) {
+                               _this5.table.columnManager.generateColumnsFromRowData(data);
+                       }
+                       _this5.resetScroll();
+                       _this5._setDataActual(data);
+               }
+
+               resolve();
+       });
+};
+
+RowManager.prototype._setDataActual = function (data, renderInPosition) {
+       var self = this;
+
+       self.table.options.dataLoading.call(this.table, data);
+
+       this._wipeElements();
+
+       if (this.table.options.history && this.table.modExists("history")) {
+               this.table.modules.history.clear();
+       }
+
+       if (Array.isArray(data)) {
+
+               if (this.table.modExists("selectRow")) {
+                       this.table.modules.selectRow.clearSelectionData();
+               }
+
+               if (this.table.options.reactiveData && this.table.modExists("reactiveData", true)) {
+                       this.table.modules.reactiveData.watchData(data);
+               }
+
+               data.forEach(function (def, i) {
+                       if (def && (typeof def === 'undefined' ? 'undefined' : _typeof(def)) === "object") {
+                               var row = new Row(def, self);
+                               self.rows.push(row);
+                       } else {
+                               console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:", def);
+                       }
+               });
+
+               self.table.options.dataLoaded.call(this.table, data);
+
+               self.refreshActiveData(false, false, renderInPosition);
+       } else {
+               console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ", typeof data === 'undefined' ? 'undefined' : _typeof(data), "\nData:     ", data);
+       }
+};
+
+RowManager.prototype._wipeElements = function () {
+       this.rows.forEach(function (row) {
+               row.wipe();
+       });
+
+       if (this.table.options.groupBy && this.table.modExists("groupRows")) {
+               this.table.modules.groupRows.wipe();
+       }
+
+       this.rows = [];
+};
+
+RowManager.prototype.deleteRow = function (row, blockRedraw) {
+       var allIndex = this.rows.indexOf(row),
+           activeIndex = this.activeRows.indexOf(row);
+
+       if (activeIndex > -1) {
+               this.activeRows.splice(activeIndex, 1);
+       }
+
+       if (allIndex > -1) {
+               this.rows.splice(allIndex, 1);
+       }
+
+       this.setActiveRows(this.activeRows);
+
+       this.displayRowIterator(function (rows) {
+               var displayIndex = rows.indexOf(row);
+
+               if (displayIndex > -1) {
+                       rows.splice(displayIndex, 1);
+               }
+       });
+
+       if (!blockRedraw) {
+               this.reRenderInPosition();
+       }
+
+       this.table.options.rowDeleted.call(this.table, row.getComponent());
+
+       this.table.options.dataEdited.call(this.table, this.getData());
+
+       if (this.table.options.groupBy && this.table.modExists("groupRows")) {
+               this.table.modules.groupRows.updateGroupRows(true);
+       } else if (this.table.options.pagination && this.table.modExists("page")) {
+               this.refreshActiveData(false, false, true);
+       } else {
+               if (this.table.options.pagination && this.table.modExists("page")) {
+                       this.refreshActiveData("page");
+               }
+       }
+};
+
+RowManager.prototype.addRow = function (data, pos, index, blockRedraw) {
+
+       var row = this.addRowActual(data, pos, index, blockRedraw);
+
+       if (this.table.options.history && this.table.modExists("history")) {
+               this.table.modules.history.action("rowAdd", row, { data: data, pos: pos, index: index });
+       }
+
+       return row;
+};
+
+//add multiple rows
+RowManager.prototype.addRows = function (data, pos, index) {
+       var _this6 = this;
+
+       var self = this,
+           length = 0,
+           rows = [];
+
+       return new Promise(function (resolve, reject) {
+               pos = _this6.findAddRowPos(pos);
+
+               if (!Array.isArray(data)) {
+                       data = [data];
+               }
+
+               length = data.length - 1;
+
+               if (typeof index == "undefined" && pos || typeof index !== "undefined" && !pos) {
+                       data.reverse();
+               }
+
+               data.forEach(function (item, i) {
+                       var row = self.addRow(item, pos, index, true);
+                       rows.push(row);
+               });
+
+               if (_this6.table.options.groupBy && _this6.table.modExists("groupRows")) {
+                       _this6.table.modules.groupRows.updateGroupRows(true);
+               } else if (_this6.table.options.pagination && _this6.table.modExists("page")) {
+                       _this6.refreshActiveData(false, false, true);
+               } else {
+                       _this6.reRenderInPosition();
+               }
+
+               //recalc column calculations if present
+               if (_this6.table.modExists("columnCalcs")) {
+                       _this6.table.modules.columnCalcs.recalc(_this6.table.rowManager.activeRows);
+               }
+
+               resolve(rows);
+       });
+};
+
+RowManager.prototype.findAddRowPos = function (pos) {
+       if (typeof pos === "undefined") {
+               pos = this.table.options.addRowPos;
+       }
+
+       if (pos === "pos") {
+               pos = true;
+       }
+
+       if (pos === "bottom") {
+               pos = false;
+       }
+
+       return pos;
+};
+
+RowManager.prototype.addRowActual = function (data, pos, index, blockRedraw) {
+       var row = data instanceof Row ? data : new Row(data || {}, this),
+           top = this.findAddRowPos(pos),
+           dispRows;
+
+       if (!index && this.table.options.pagination && this.table.options.paginationAddRow == "page") {
+               dispRows = this.getDisplayRows();
+
+               if (top) {
+                       if (dispRows.length) {
+                               index = dispRows[0];
+                       } else {
+                               if (this.activeRows.length) {
+                                       index = this.activeRows[this.activeRows.length - 1];
+                                       top = false;
+                               }
+                       }
+               } else {
+                       if (dispRows.length) {
+                               index = dispRows[dispRows.length - 1];
+                               top = dispRows.length < this.table.modules.page.getPageSize() ? false : true;
+                       }
+               }
+       }
+
+       if (index) {
+               index = this.findRow(index);
+       }
+
+       if (this.table.options.groupBy && this.table.modExists("groupRows")) {
+               this.table.modules.groupRows.assignRowToGroup(row);
+
+               var groupRows = row.getGroup().rows;
+
+               if (groupRows.length > 1) {
+
+                       if (!index || index && groupRows.indexOf(index) == -1) {
+                               if (top) {
+                                       if (groupRows[0] !== row) {
+                                               index = groupRows[0];
+                                               this._moveRowInArray(row.getGroup().rows, row, index, !top);
+                                       }
+                               } else {
+                                       if (groupRows[groupRows.length - 1] !== row) {
+                                               index = groupRows[groupRows.length - 1];
+                                               this._moveRowInArray(row.getGroup().rows, row, index, !top);
+                                       }
+                               }
+                       } else {
+                               this._moveRowInArray(row.getGroup().rows, row, index, !top);
+                       }
+               }
+       }
+
+       if (index) {
+               var allIndex = this.rows.indexOf(index),
+                   activeIndex = this.activeRows.indexOf(index);
+
+               this.displayRowIterator(function (rows) {
+                       var displayIndex = rows.indexOf(index);
+
+                       if (displayIndex > -1) {
+                               rows.splice(top ? displayIndex : displayIndex + 1, 0, row);
+                       }
+               });
+
+               if (activeIndex > -1) {
+                       this.activeRows.splice(top ? activeIndex : activeIndex + 1, 0, row);
+               }
+
+               if (allIndex > -1) {
+                       this.rows.splice(top ? allIndex : allIndex + 1, 0, row);
+               }
+       } else {
+
+               if (top) {
+
+                       this.displayRowIterator(function (rows) {
+                               rows.unshift(row);
+                       });
+
+                       this.activeRows.unshift(row);
+                       this.rows.unshift(row);
+               } else {
+                       this.displayRowIterator(function (rows) {
+                               rows.push(row);
+                       });
+
+                       this.activeRows.push(row);
+                       this.rows.push(row);
+               }
+       }
+
+       this.setActiveRows(this.activeRows);
+
+       this.table.options.rowAdded.call(this.table, row.getComponent());
+
+       this.table.options.dataEdited.call(this.table, this.getData());
+
+       if (!blockRedraw) {
+               this.reRenderInPosition();
+       }
+
+       return row;
+};
+
+RowManager.prototype.moveRow = function (from, to, after) {
+       if (this.table.options.history && this.table.modExists("history")) {
+               this.table.modules.history.action("rowMove", from, { pos: this.getRowPosition(from), to: to, after: after });
+       }
+
+       this.moveRowActual(from, to, after);
+
+       this.table.options.rowMoved.call(this.table, from.getComponent());
+};
+
+RowManager.prototype.moveRowActual = function (from, to, after) {
+       var self = this;
+       this._moveRowInArray(this.rows, from, to, after);
+       this._moveRowInArray(this.activeRows, from, to, after);
+
+       this.displayRowIterator(function (rows) {
+               self._moveRowInArray(rows, from, to, after);
+       });
+
+       if (this.table.options.groupBy && this.table.modExists("groupRows")) {
+               var toGroup = to.getGroup();
+               var fromGroup = from.getGroup();
+
+               if (toGroup === fromGroup) {
+                       this._moveRowInArray(toGroup.rows, from, to, after);
+               } else {
+                       if (fromGroup) {
+                               fromGroup.removeRow(from);
+                       }
+
+                       toGroup.insertRow(from, to, after);
+               }
+       }
+};
+
+RowManager.prototype._moveRowInArray = function (rows, from, to, after) {
+       var fromIndex, toIndex, start, end;
+
+       if (from !== to) {
+
+               fromIndex = rows.indexOf(from);
+
+               if (fromIndex > -1) {
+
+                       rows.splice(fromIndex, 1);
+
+                       toIndex = rows.indexOf(to);
+
+                       if (toIndex > -1) {
+
+                               if (after) {
+                                       rows.splice(toIndex + 1, 0, from);
+                               } else {
+                                       rows.splice(toIndex, 0, from);
+                               }
+                       } else {
+                               rows.splice(fromIndex, 0, from);
+                       }
+               }
+
+               //restyle rows
+               if (rows === this.getDisplayRows()) {
+
+                       start = fromIndex < toIndex ? fromIndex : toIndex;
+                       end = toIndex > fromIndex ? toIndex : fromIndex + 1;
+
+                       for (var i = start; i <= end; i++) {
+                               if (rows[i]) {
+                                       this.styleRow(rows[i], i);
+                               }
+                       }
+               }
+       }
+};
+
+RowManager.prototype.clearData = function () {
+       this.setData([]);
+};
+
+RowManager.prototype.getRowIndex = function (row) {
+       return this.findRowIndex(row, this.rows);
+};
+
+RowManager.prototype.getDisplayRowIndex = function (row) {
+       var index = this.getDisplayRows().indexOf(row);
+       return index > -1 ? index : false;
+};
+
+RowManager.prototype.nextDisplayRow = function (row, rowOnly) {
+       var index = this.getDisplayRowIndex(row),
+           nextRow = false;
+
+       if (index !== false && index < this.displayRowsCount - 1) {
+               nextRow = this.getDisplayRows()[index + 1];
+       }
+
+       if (nextRow && (!(nextRow instanceof Row) || nextRow.type != "row")) {
+               return this.nextDisplayRow(nextRow, rowOnly);
+       }
+
+       return nextRow;
+};
+
+RowManager.prototype.prevDisplayRow = function (row, rowOnly) {
+       var index = this.getDisplayRowIndex(row),
+           prevRow = false;
+
+       if (index) {
+               prevRow = this.getDisplayRows()[index - 1];
+       }
+
+       if (prevRow && (!(prevRow instanceof Row) || prevRow.type != "row")) {
+               return this.prevDisplayRow(prevRow, rowOnly);
+       }
+
+       return prevRow;
+};
+
+RowManager.prototype.findRowIndex = function (row, list) {
+       var rowIndex;
+
+       row = this.findRow(row);
+
+       if (row) {
+               rowIndex = list.indexOf(row);
+
+               if (rowIndex > -1) {
+                       return rowIndex;
+               }
+       }
+
+       return false;
+};
+
+RowManager.prototype.getData = function (active, transform) {
+       var self = this,
+           output = [];
+
+       var rows = active ? self.activeRows : self.rows;
+
+       rows.forEach(function (row) {
+               output.push(row.getData(transform || "data"));
+       });
+
+       return output;
+};
+
+RowManager.prototype.getComponents = function (active) {
+       var self = this,
+           output = [];
+
+       var rows = active ? self.activeRows : self.rows;
+
+       rows.forEach(function (row) {
+               output.push(row.getComponent());
+       });
+
+       return output;
+};
+
+RowManager.prototype.getDataCount = function (active) {
+       return active ? this.activeRows.length : this.rows.length;
+};
+
+RowManager.prototype._genRemoteRequest = function () {
+       var self = this,
+           table = self.table,
+           options = table.options,
+           params = {};
+
+       if (table.modExists("page")) {
+               //set sort data if defined
+               if (options.ajaxSorting) {
+                       var sorters = self.table.modules.sort.getSort();
+
+                       sorters.forEach(function (item) {
+                               delete item.column;
+                       });
+
+                       params[self.table.modules.page.paginationDataSentNames.sorters] = sorters;
+               }
+
+               //set filter data if defined
+               if (options.ajaxFiltering) {
+                       var filters = self.table.modules.filter.getFilters(true, true);
+
+                       params[self.table.modules.page.paginationDataSentNames.filters] = filters;
+               }
+
+               self.table.modules.ajax.setParams(params, true);
+       }
+
+       table.modules.ajax.sendRequest().then(function (data) {
+               self.setData(data);
+       }).catch(function (e) {});
+};
+
+//choose the path to refresh data after a filter update
+RowManager.prototype.filterRefresh = function () {
+       var table = this.table,
+           options = table.options,
+           left = this.scrollLeft;
+
+       if (options.ajaxFiltering) {
+               if (options.pagination == "remote" && table.modExists("page")) {
+                       table.modules.page.reset(true);
+                       table.modules.page.setPage(1).then(function () {}).catch(function () {});
+               } else if (options.ajaxProgressiveLoad) {
+                       table.modules.ajax.loadData().then(function () {}).catch(function () {});
+               } else {
+                       //assume data is url, make ajax call to url to get data
+                       this._genRemoteRequest();
+               }
+       } else {
+               this.refreshActiveData("filter");
+       }
+
+       this.scrollHorizontal(left);
+};
+
+//choose the path to refresh data after a sorter update
+RowManager.prototype.sorterRefresh = function (loadOrignalData) {
+       var table = this.table,
+           options = this.table.options,
+           left = this.scrollLeft;
+
+       if (options.ajaxSorting) {
+               if ((options.pagination == "remote" || options.progressiveLoad) && table.modExists("page")) {
+                       table.modules.page.reset(true);
+                       table.modules.page.setPage(1).then(function () {}).catch(function () {});
+               } else if (options.ajaxProgressiveLoad) {
+                       table.modules.ajax.loadData().then(function () {}).catch(function () {});
+               } else {
+                       //assume data is url, make ajax call to url to get data
+                       this._genRemoteRequest();
+               }
+       } else {
+               this.refreshActiveData(loadOrignalData ? "filter" : "sort");
+       }
+
+       this.scrollHorizontal(left);
+};
+
+RowManager.prototype.scrollHorizontal = function (left) {
+       this.scrollLeft = left;
+       this.element.scrollLeft = left;
+
+       if (this.table.options.groupBy) {
+               this.table.modules.groupRows.scrollHeaders(left);
+       }
+
+       if (this.table.modExists("columnCalcs")) {
+               this.table.modules.columnCalcs.scrollHorizontal(left);
+       }
+};
+
+//set active data set
+RowManager.prototype.refreshActiveData = function (stage, skipStage, renderInPosition) {
+       var self = this,
+           table = this.table,
+           displayIndex;
+
+       if (self.table.modExists("edit")) {
+               self.table.modules.edit.cancelEdit();
+       }
+
+       if (!stage) {
+               stage = "all";
+       }
+
+       if (table.options.selectable && !table.options.selectablePersistence && table.modExists("selectRow")) {
+               table.modules.selectRow.deselectRows();
+       }
+
+       //cascade through data refresh stages
+       switch (stage) {
+               case "all":
+
+               case "filter":
+                       if (!skipStage) {
+                               if (table.modExists("filter")) {
+                                       self.setActiveRows(table.modules.filter.filter(self.rows));
+                               } else {
+                                       self.setActiveRows(self.rows.slice(0));
+                               }
+                       } else {
+                               skipStage = false;
+                       }
+
+               case "sort":
+                       if (!skipStage) {
+                               if (table.modExists("sort")) {
+                                       table.modules.sort.sort(this.activeRows);
+                               }
+                       } else {
+                               skipStage = false;
+                       }
+
+               //generic stage to allow for pipeline trigger after the data manipulation stage
+               case "display":
+                       this.resetDisplayRows();
+
+               case "freeze":
+                       if (!skipStage) {
+                               if (this.table.modExists("frozenRows")) {
+                                       if (table.modules.frozenRows.isFrozen()) {
+                                               if (!table.modules.frozenRows.getDisplayIndex()) {
+                                                       table.modules.frozenRows.setDisplayIndex(this.getNextDisplayIndex());
+                                               }
+
+                                               displayIndex = table.modules.frozenRows.getDisplayIndex();
+
+                                               displayIndex = self.setDisplayRows(table.modules.frozenRows.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
+
+                                               if (displayIndex !== true) {
+                                                       table.modules.frozenRows.setDisplayIndex(displayIndex);
+                                               }
+                                       }
+                               }
+                       } else {
+                               skipStage = false;
+                       }
+
+               case "group":
+                       if (!skipStage) {
+                               if (table.options.groupBy && table.modExists("groupRows")) {
+
+                                       if (!table.modules.groupRows.getDisplayIndex()) {
+                                               table.modules.groupRows.setDisplayIndex(this.getNextDisplayIndex());
+                                       }
+
+                                       displayIndex = table.modules.groupRows.getDisplayIndex();
+
+                                       displayIndex = self.setDisplayRows(table.modules.groupRows.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
+
+                                       if (displayIndex !== true) {
+                                               table.modules.groupRows.setDisplayIndex(displayIndex);
+                                       }
+                               }
+                       } else {
+                               skipStage = false;
+                       }
+
+               case "tree":
+
+                       if (!skipStage) {
+                               if (table.options.dataTree && table.modExists("dataTree")) {
+                                       if (!table.modules.dataTree.getDisplayIndex()) {
+                                               table.modules.dataTree.setDisplayIndex(this.getNextDisplayIndex());
+                                       }
+
+                                       displayIndex = table.modules.dataTree.getDisplayIndex();
+
+                                       displayIndex = self.setDisplayRows(table.modules.dataTree.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
+
+                                       if (displayIndex !== true) {
+                                               table.modules.dataTree.setDisplayIndex(displayIndex);
+                                       }
+                               }
+                       } else {
+                               skipStage = false;
+                       }
+
+                       if (table.options.pagination && table.modExists("page") && !renderInPosition) {
+                               if (table.modules.page.getMode() == "local") {
+                                       table.modules.page.reset();
+                               }
+                       }
+
+               case "page":
+                       if (!skipStage) {
+                               if (table.options.pagination && table.modExists("page")) {
+
+                                       if (!table.modules.page.getDisplayIndex()) {
+                                               table.modules.page.setDisplayIndex(this.getNextDisplayIndex());
+                                       }
+
+                                       displayIndex = table.modules.page.getDisplayIndex();
+
+                                       if (table.modules.page.getMode() == "local") {
+                                               table.modules.page.setMaxRows(this.getDisplayRows(displayIndex - 1).length);
+                                       }
+
+                                       displayIndex = self.setDisplayRows(table.modules.page.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
+
+                                       if (displayIndex !== true) {
+                                               table.modules.page.setDisplayIndex(displayIndex);
+                                       }
+                               }
+                       } else {
+                               skipStage = false;
+                       }
+       }
+
+       if (Tabulator.prototype.helpers.elVisible(self.element)) {
+               if (renderInPosition) {
+                       self.reRenderInPosition();
+               } else {
+                       self.renderTable();
+                       if (table.options.layoutColumnsOnNewData) {
+                               self.table.columnManager.redraw(true);
+                       }
+               }
+       }
+
+       if (table.modExists("columnCalcs")) {
+               table.modules.columnCalcs.recalc(this.activeRows);
+       }
+};
+
+RowManager.prototype.setActiveRows = function (activeRows) {
+       this.activeRows = activeRows;
+       this.activeRowsCount = this.activeRows.length;
+};
+
+//reset display rows array
+RowManager.prototype.resetDisplayRows = function () {
+       this.displayRows = [];
+
+       this.displayRows.push(this.activeRows.slice(0));
+
+       this.displayRowsCount = this.displayRows[0].length;
+
+       if (this.table.modExists("frozenRows")) {
+               this.table.modules.frozenRows.setDisplayIndex(0);
+       }
+
+       if (this.table.options.groupBy && this.table.modExists("groupRows")) {
+               this.table.modules.groupRows.setDisplayIndex(0);
+       }
+
+       if (this.table.options.pagination && this.table.modExists("page")) {
+               this.table.modules.page.setDisplayIndex(0);
+       }
+};
+
+RowManager.prototype.getNextDisplayIndex = function () {
+       return this.displayRows.length;
+};
+
+//set display row pipeline data
+RowManager.prototype.setDisplayRows = function (displayRows, index) {
+
+       var output = true;
+
+       if (index && typeof this.displayRows[index] != "undefined") {
+               this.displayRows[index] = displayRows;
+               output = true;
+       } else {
+               this.displayRows.push(displayRows);
+               output = index = this.displayRows.length - 1;
+       }
+
+       if (index == this.displayRows.length - 1) {
+               this.displayRowsCount = this.displayRows[this.displayRows.length - 1].length;
+       }
+
+       return output;
+};
+
+RowManager.prototype.getDisplayRows = function (index) {
+       if (typeof index == "undefined") {
+               return this.displayRows.length ? this.displayRows[this.displayRows.length - 1] : [];
+       } else {
+               return this.displayRows[index] || [];
+       }
+};
+
+RowManager.prototype.getVisibleRows = function (viewable) {
+       var topEdge = this.element.scrollTop,
+           bottomEdge = this.element.clientHeight + topEdge,
+           topFound = false,
+           topRow = 0,
+           bottomRow = 0,
+           rows = this.getDisplayRows();
+
+       if (viewable) {
+
+               this.getDisplayRows();
+
+               for (var i = this.vDomTop; i <= this.vDomBottom; i++) {
+
+                       if (rows[i]) {
+                               if (!topFound) {
+                                       if (topEdge - rows[i].getElement().offsetTop >= 0) {
+                                               topRow = i;
+                                       } else {
+                                               topFound = true;
+                                       }
+                               } else {
+                                       if (bottomEdge - rows[i].getElement().offsetTop >= 0) {
+                                               bottomRow = i;
+                                       } else {
+                                               break;
+                                       }
+                               }
+                       }
+               }
+       } else {
+               topRow = this.vDomTop;
+               bottomRow = this.vDomBottom;
+       }
+
+       return rows.slice(topRow, bottomRow + 1);
+};
+
+//repeat action accross display rows
+RowManager.prototype.displayRowIterator = function (callback) {
+       this.displayRows.forEach(callback);
+
+       this.displayRowsCount = this.displayRows[this.displayRows.length - 1].length;
+};
+
+//return only actual rows (not group headers etc)
+RowManager.prototype.getRows = function () {
+       return this.rows;
+};
+
+///////////////// Table Rendering /////////////////
+
+//trigger rerender of table in current position
+RowManager.prototype.reRenderInPosition = function (callback) {
+       if (this.getRenderMode() == "virtual") {
+
+               var scrollTop = this.element.scrollTop;
+               var topRow = false;
+               var topOffset = false;
+
+               var left = this.scrollLeft;
+
+               var rows = this.getDisplayRows();
+
+               for (var i = this.vDomTop; i <= this.vDomBottom; i++) {
+
+                       if (rows[i]) {
+                               var diff = scrollTop - rows[i].getElement().offsetTop;
+
+                               if (topOffset === false || Math.abs(diff) < topOffset) {
+                                       topOffset = diff;
+                                       topRow = i;
+                               } else {
+                                       break;
+                               }
+                       }
+               }
+
+               if (callback) {
+                       callback();
+               }
+
+               this._virtualRenderFill(topRow === false ? this.displayRowsCount - 1 : topRow, true, topOffset || 0);
+
+               this.scrollHorizontal(left);
+       } else {
+               this.renderTable();
+
+               if (callback) {
+                       callback();
+               }
+       }
+};
+
+RowManager.prototype.setRenderMode = function () {
+       if ((this.table.element.clientHeight || this.table.options.height) && this.table.options.virtualDom) {
+               this.renderMode = "virtual";
+       } else {
+               this.renderMode = "classic";
+       }
+};
+
+RowManager.prototype.getRenderMode = function () {
+       return this.renderMode;
+};
+
+RowManager.prototype.renderTable = function () {
+       var self = this;
+
+       self.table.options.renderStarted.call(this.table);
+
+       self.element.scrollTop = 0;
+
+       switch (self.renderMode) {
+               case "classic":
+                       self._simpleRender();
+                       break;
+
+               case "virtual":
+                       self._virtualRenderFill();
+                       break;
+       }
+
+       if (self.firstRender) {
+               if (self.displayRowsCount) {
+                       self.firstRender = false;
+                       self.table.modules.layout.layout();
+               } else {
+                       self.renderEmptyScroll();
+               }
+       }
+
+       if (self.table.modExists("frozenColumns")) {
+               self.table.modules.frozenColumns.layout();
+       }
+
+       if (!self.displayRowsCount) {
+               if (self.table.options.placeholder) {
+
+                       if (this.renderMode) {
+                               self.table.options.placeholder.setAttribute("tabulator-render-mode", this.renderMode);
+                       }
+
+                       self.getElement().appendChild(self.table.options.placeholder);
+               }
+       }
+
+       self.table.options.renderComplete.call(this.table);
+};
+
+//simple render on heightless table
+RowManager.prototype._simpleRender = function () {
+       this._clearVirtualDom();
+
+       if (this.displayRowsCount) {
+               this.checkClassicModeGroupHeaderWidth();
+       } else {
+               this.renderEmptyScroll();
+       }
+};
+
+RowManager.prototype.checkClassicModeGroupHeaderWidth = function () {
+       var self = this,
+           element = this.tableElement,
+           onlyGroupHeaders = true;
+
+       self.getDisplayRows().forEach(function (row, index) {
+               self.styleRow(row, index);
+               element.appendChild(row.getElement());
+               row.initialize(true);
+
+               if (row.type !== "group") {
+                       onlyGroupHeaders = false;
+               }
+       });
+
+       if (onlyGroupHeaders) {
+               element.style.minWidth = self.table.columnManager.getWidth() + "px";
+       } else {
+               element.style.minWidth = "";
+       }
+};
+
+//show scrollbars on empty table div
+RowManager.prototype.renderEmptyScroll = function () {
+       this.tableElement.style.minWidth = this.table.columnManager.getWidth() + "px";
+       this.tableElement.style.minHeight = "1px";
+       this.tableElement.style.visibility = "hidden";
+};
+
+RowManager.prototype._clearVirtualDom = function () {
+       var element = this.tableElement;
+
+       if (this.table.options.placeholder && this.table.options.placeholder.parentNode) {
+               this.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);
+       }
+
+       // element.children.detach();
+       while (element.firstChild) {
+               element.removeChild(element.firstChild);
+       }element.style.paddingTop = "";
+       element.style.paddingBottom = "";
+       element.style.minWidth = "";
+       element.style.minHeight = "";
+       element.style.visibility = "";
+
+       this.scrollTop = 0;
+       this.scrollLeft = 0;
+       this.vDomTop = 0;
+       this.vDomBottom = 0;
+       this.vDomTopPad = 0;
+       this.vDomBottomPad = 0;
+};
+
+RowManager.prototype.styleRow = function (row, index) {
+       var rowEl = row.getElement();
+
+       if (index % 2) {
+               rowEl.classList.add("tabulator-row-even");
+               rowEl.classList.remove("tabulator-row-odd");
+       } else {
+               rowEl.classList.add("tabulator-row-odd");
+               rowEl.classList.remove("tabulator-row-even");
+       }
+};
+
+//full virtual render
+RowManager.prototype._virtualRenderFill = function (position, forceMove, offset) {
+       var self = this,
+           element = self.tableElement,
+           holder = self.element,
+           topPad = 0,
+           rowsHeight = 0,
+           topPadHeight = 0,
+           i = 0,
+           onlyGroupHeaders = true,
+           rows = self.getDisplayRows();
+
+       position = position || 0;
+
+       offset = offset || 0;
+
+       if (!position) {
+               self._clearVirtualDom();
+       } else {
+               while (element.firstChild) {
+                       element.removeChild(element.firstChild);
+               } //check if position is too close to bottom of table
+               var heightOccupied = (self.displayRowsCount - position + 1) * self.vDomRowHeight;
+
+               if (heightOccupied < self.height) {
+                       position -= Math.ceil((self.height - heightOccupied) / self.vDomRowHeight);
+
+                       if (position < 0) {
+                               position = 0;
+                       }
+               }
+
+               //calculate initial pad
+               topPad = Math.min(Math.max(Math.floor(self.vDomWindowBuffer / self.vDomRowHeight), self.vDomWindowMinMarginRows), position);
+               position -= topPad;
+       }
+
+       if (self.displayRowsCount && Tabulator.prototype.helpers.elVisible(self.element)) {
+
+               self.vDomTop = position;
+
+               self.vDomBottom = position - 1;
+
+               while ((rowsHeight <= self.height + self.vDomWindowBuffer || i < self.vDomWindowMinTotalRows) && self.vDomBottom < self.displayRowsCount - 1) {
+                       var index = self.vDomBottom + 1,
+                           row = rows[index],
+                           rowHeight = 0;
+
+                       self.styleRow(row, index);
+
+                       element.appendChild(row.getElement());
+                       if (!row.initialized) {
+                               row.initialize(true);
+                       } else {
+                               if (!row.heightInitialized) {
+                                       row.normalizeHeight(true);
+                               }
+                       }
+
+                       rowHeight = row.getHeight();
+
+                       if (i < topPad) {
+                               topPadHeight += rowHeight;
+                       } else {
+                               rowsHeight += rowHeight;
+                       }
+
+                       if (rowHeight > this.vDomWindowBuffer) {
+                               this.vDomWindowBuffer = rowHeight * 2;
+                       }
+
+                       if (row.type !== "group") {
+                               onlyGroupHeaders = false;
+                       }
+
+                       self.vDomBottom++;
+                       i++;
+               }
+
+               if (!position) {
+                       this.vDomTopPad = 0;
+                       //adjust rowheight to match average of rendered elements
+                       self.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / i);
+                       self.vDomBottomPad = self.vDomRowHeight * (self.displayRowsCount - self.vDomBottom - 1);
+
+                       self.vDomScrollHeight = topPadHeight + rowsHeight + self.vDomBottomPad - self.height;
+               } else {
+                       self.vDomTopPad = !forceMove ? self.scrollTop - topPadHeight : self.vDomRowHeight * this.vDomTop + offset;
+                       self.vDomBottomPad = self.vDomBottom == self.displayRowsCount - 1 ? 0 : Math.max(self.vDomScrollHeight - self.vDomTopPad - rowsHeight - topPadHeight, 0);
+               }
+
+               element.style.paddingTop = self.vDomTopPad + "px";
+               element.style.paddingBottom = self.vDomBottomPad + "px";
+
+               if (forceMove) {
+                       this.scrollTop = self.vDomTopPad + topPadHeight + offset - (this.element.scrollWidth > this.element.clientWidth ? this.element.offsetHeight - this.element.clientHeight : 0);
+               }
+
+               this.scrollTop = Math.min(this.scrollTop, this.element.scrollHeight - this.height);
+
+               //adjust for horizontal scrollbar if present (and not at top of table)
+               if (this.element.scrollWidth > this.element.offsetWidth && forceMove) {
+                       this.scrollTop += this.element.offsetHeight - this.element.clientHeight;
+               }
+
+               this.vDomScrollPosTop = this.scrollTop;
+               this.vDomScrollPosBottom = this.scrollTop;
+
+               holder.scrollTop = this.scrollTop;
+
+               element.style.minWidth = onlyGroupHeaders ? self.table.columnManager.getWidth() + "px" : "";
+
+               if (self.table.options.groupBy) {
+                       if (self.table.modules.layout.getMode() != "fitDataFill" && self.displayRowsCount == self.table.modules.groupRows.countGroups()) {
+                               self.tableElement.style.minWidth = self.table.columnManager.getWidth();
+                       }
+               }
+       } else {
+               this.renderEmptyScroll();
+       }
+};
+
+//handle vertical scrolling
+RowManager.prototype.scrollVertical = function (dir) {
+       var topDiff = this.scrollTop - this.vDomScrollPosTop;
+       var bottomDiff = this.scrollTop - this.vDomScrollPosBottom;
+       var margin = this.vDomWindowBuffer * 2;
+
+       if (-topDiff > margin || bottomDiff > margin) {
+               //if big scroll redraw table;
+               var left = this.scrollLeft;
+               this._virtualRenderFill(Math.floor(this.element.scrollTop / this.element.scrollHeight * this.displayRowsCount));
+               this.scrollHorizontal(left);
+       } else {
+
+               if (dir) {
+                       //scrolling up
+                       if (topDiff < 0) {
+                               this._addTopRow(-topDiff);
+                       }
+
+                       if (bottomDiff < 0) {
+
+                               //hide bottom row if needed
+                               if (this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer) {
+                                       this._removeBottomRow(-bottomDiff);
+                               }
+                       }
+               } else {
+                       //scrolling down
+                       if (topDiff >= 0) {
+
+                               //hide top row if needed
+                               if (this.scrollTop > this.vDomWindowBuffer) {
+                                       this._removeTopRow(topDiff);
+                               }
+                       }
+
+                       if (bottomDiff >= 0) {
+                               this._addBottomRow(bottomDiff);
+                       }
+               }
+       }
+};
+
+RowManager.prototype._addTopRow = function (topDiff) {
+       var i = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
+
+       var table = this.tableElement,
+           rows = this.getDisplayRows();
+
+       if (this.vDomTop) {
+               var index = this.vDomTop - 1,
+                   topRow = rows[index],
+                   topRowHeight = topRow.getHeight() || this.vDomRowHeight;
+
+               //hide top row if needed
+               if (topDiff >= topRowHeight) {
+                       this.styleRow(topRow, index);
+                       table.insertBefore(topRow.getElement(), table.firstChild);
+                       if (!topRow.initialized || !topRow.heightInitialized) {
+                               this.vDomTopNewRows.push(topRow);
+
+                               if (!topRow.heightInitialized) {
+                                       topRow.clearCellHeight();
+                               }
+                       }
+                       topRow.initialize();
+
+                       this.vDomTopPad -= topRowHeight;
+
+                       if (this.vDomTopPad < 0) {
+                               this.vDomTopPad = index * this.vDomRowHeight;
+                       }
+
+                       if (!index) {
+                               this.vDomTopPad = 0;
+                       }
+
+                       table.style.paddingTop = this.vDomTopPad + "px";
+                       this.vDomScrollPosTop -= topRowHeight;
+                       this.vDomTop--;
+               }
+
+               topDiff = -(this.scrollTop - this.vDomScrollPosTop);
+
+               if (topRow.getHeight() > this.vDomWindowBuffer) {
+                       this.vDomWindowBuffer = topRow.getHeight() * 2;
+               }
+
+               if (i < this.vDomMaxRenderChain && this.vDomTop && topDiff >= (rows[this.vDomTop - 1].getHeight() || this.vDomRowHeight)) {
+                       this._addTopRow(topDiff, i + 1);
+               } else {
+                       this._quickNormalizeRowHeight(this.vDomTopNewRows);
+               }
+       }
+};
+
+RowManager.prototype._removeTopRow = function (topDiff) {
+       var table = this.tableElement,
+           topRow = this.getDisplayRows()[this.vDomTop],
+           topRowHeight = topRow.getHeight() || this.vDomRowHeight;
+
+       if (topDiff >= topRowHeight) {
+
+               var rowEl = topRow.getElement();
+               rowEl.parentNode.removeChild(rowEl);
+
+               this.vDomTopPad += topRowHeight;
+               table.style.paddingTop = this.vDomTopPad + "px";
+               this.vDomScrollPosTop += this.vDomTop ? topRowHeight : topRowHeight + this.vDomWindowBuffer;
+               this.vDomTop++;
+
+               topDiff = this.scrollTop - this.vDomScrollPosTop;
+
+               this._removeTopRow(topDiff);
+       }
+};
+
+RowManager.prototype._addBottomRow = function (bottomDiff) {
+       var i = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
+
+       var table = this.tableElement,
+           rows = this.getDisplayRows();
+
+       if (this.vDomBottom < this.displayRowsCount - 1) {
+               var index = this.vDomBottom + 1,
+                   bottomRow = rows[index],
+                   bottomRowHeight = bottomRow.getHeight() || this.vDomRowHeight;
+
+               //hide bottom row if needed
+               if (bottomDiff >= bottomRowHeight) {
+                       this.styleRow(bottomRow, index);
+                       table.appendChild(bottomRow.getElement());
+
+                       if (!bottomRow.initialized || !bottomRow.heightInitialized) {
+                               this.vDomBottomNewRows.push(bottomRow);
+
+                               if (!bottomRow.heightInitialized) {
+                                       bottomRow.clearCellHeight();
+                               }
+                       }
+
+                       bottomRow.initialize();
+
+                       this.vDomBottomPad -= bottomRowHeight;
+
+                       if (this.vDomBottomPad < 0 || index == this.displayRowsCount - 1) {
+                               this.vDomBottomPad = 0;
+                       }
+
+                       table.style.paddingBottom = this.vDomBottomPad + "px";
+                       this.vDomScrollPosBottom += bottomRowHeight;
+                       this.vDomBottom++;
+               }
+
+               bottomDiff = this.scrollTop - this.vDomScrollPosBottom;
+
+               if (bottomRow.getHeight() > this.vDomWindowBuffer) {
+                       this.vDomWindowBuffer = bottomRow.getHeight() * 2;
+               }
+
+               if (i < this.vDomMaxRenderChain && this.vDomBottom < this.displayRowsCount - 1 && bottomDiff >= (rows[this.vDomBottom + 1].getHeight() || this.vDomRowHeight)) {
+                       this._addBottomRow(bottomDiff, i + 1);
+               } else {
+                       this._quickNormalizeRowHeight(this.vDomBottomNewRows);
+               }
+       }
+};
+
+RowManager.prototype._removeBottomRow = function (bottomDiff) {
+       var table = this.tableElement,
+           bottomRow = this.getDisplayRows()[this.vDomBottom],
+           bottomRowHeight = bottomRow.getHeight() || this.vDomRowHeight;
+
+       if (bottomDiff >= bottomRowHeight) {
+
+               var rowEl = bottomRow.getElement();
+
+               if (rowEl.parentNode) {
+                       rowEl.parentNode.removeChild(rowEl);
+               }
+
+               this.vDomBottomPad += bottomRowHeight;
+
+               if (this.vDomBottomPad < 0) {
+                       this.vDomBottomPad = 0;
+               }
+
+               table.style.paddingBottom = this.vDomBottomPad + "px";
+               this.vDomScrollPosBottom -= bottomRowHeight;
+               this.vDomBottom--;
+
+               bottomDiff = -(this.scrollTop - this.vDomScrollPosBottom);
+
+               this._removeBottomRow(bottomDiff);
+       }
+};
+
+RowManager.prototype._quickNormalizeRowHeight = function (rows) {
+       rows.forEach(function (row) {
+               row.calcHeight();
+       });
+
+       rows.forEach(function (row) {
+               row.setCellHeight();
+       });
+
+       rows.length = 0;
+};
+
+//normalize height of active rows
+RowManager.prototype.normalizeHeight = function () {
+       this.activeRows.forEach(function (row) {
+               row.normalizeHeight();
+       });
+};
+
+//adjust the height of the table holder to fit in the Tabulator element
+RowManager.prototype.adjustTableSize = function () {
+
+       if (this.renderMode === "virtual") {
+               this.height = this.element.clientHeight;
+               this.vDomWindowBuffer = this.table.options.virtualDomBuffer || this.height;
+
+               var otherHeight = this.columnManager.getElement().offsetHeight + (this.table.footerManager && !this.table.footerManager.external ? this.table.footerManager.getElement().offsetHeight : 0);
+
+               this.element.style.minHeight = "calc(100% - " + otherHeight + "px)";
+               this.element.style.height = "calc(100% - " + otherHeight + "px)";
+               this.element.style.maxHeight = "calc(100% - " + otherHeight + "px)";
+       }
+};
+
+//renitialize all rows
+RowManager.prototype.reinitialize = function () {
+       this.rows.forEach(function (row) {
+               row.reinitialize();
+       });
+};
+
+//redraw table
+RowManager.prototype.redraw = function (force) {
+       var pos = 0,
+           left = this.scrollLeft;
+
+       this.adjustTableSize();
+
+       this.table.tableWidth = this.table.element.clientWidth;
+
+       if (!force) {
+               if (this.renderMode == "classic") {
+
+                       if (this.table.options.groupBy) {
+                               this.refreshActiveData("group", false, false);
+                       } else {
+                               this._simpleRender();
+                       }
+               } else {
+                       this.reRenderInPosition();
+                       this.scrollHorizontal(left);
+               }
+
+               if (!this.displayRowsCount) {
+                       if (this.table.options.placeholder) {
+                               this.getElement().appendChild(this.table.options.placeholder);
+                       }
+               }
+       } else {
+               this.renderTable();
+       }
+};
+
+RowManager.prototype.resetScroll = function () {
+       this.element.scrollLeft = 0;
+       this.element.scrollTop = 0;
+
+       if (this.table.browser === "ie") {
+               var event = document.createEvent("Event");
+               event.initEvent("scroll", false, true);
+               this.element.dispatchEvent(event);
+       } else {
+               this.element.dispatchEvent(new Event('scroll'));
+       }
+};
+
+//public row object
+var RowComponent = function RowComponent(row) {
+       this._row = row;
+};
+
+RowComponent.prototype.getData = function (transform) {
+       return this._row.getData(transform);
+};
+
+RowComponent.prototype.getElement = function () {
+       return this._row.getElement();
+};
+
+RowComponent.prototype.getCells = function () {
+       var cells = [];
+
+       this._row.getCells().forEach(function (cell) {
+               cells.push(cell.getComponent());
+       });
+
+       return cells;
+};
+
+RowComponent.prototype.getCell = function (column) {
+       var cell = this._row.getCell(column);
+       return cell ? cell.getComponent() : false;
+};
+
+RowComponent.prototype.getIndex = function () {
+       return this._row.getData("data")[this._row.table.options.index];
+};
+
+RowComponent.prototype.getPosition = function (active) {
+       return this._row.table.rowManager.getRowPosition(this._row, active);
+};
+
+RowComponent.prototype.delete = function () {
+       return this._row.delete();
+};
+
+RowComponent.prototype.scrollTo = function () {
+       return this._row.table.rowManager.scrollToRow(this._row);
+};
+
+RowComponent.prototype.pageTo = function () {
+       if (this._row.table.modExists("page", true)) {
+               return this._row.table.modules.page.setPageToRow(this._row);
+       }
+};
+
+RowComponent.prototype.move = function (to, after) {
+       this._row.moveToRow(to, after);
+};
+
+RowComponent.prototype.update = function (data) {
+       return this._row.updateData(data);
+};
+
+RowComponent.prototype.normalizeHeight = function () {
+       this._row.normalizeHeight(true);
+};
+
+RowComponent.prototype.select = function () {
+       this._row.table.modules.selectRow.selectRows(this._row);
+};
+
+RowComponent.prototype.deselect = function () {
+       this._row.table.modules.selectRow.deselectRows(this._row);
+};
+
+RowComponent.prototype.toggleSelect = function () {
+       this._row.table.modules.selectRow.toggleRow(this._row);
+};
+
+RowComponent.prototype.isSelected = function () {
+       return this._row.table.modules.selectRow.isRowSelected(this._row);
+};
+
+RowComponent.prototype._getSelf = function () {
+       return this._row;
+};
+
+RowComponent.prototype.freeze = function () {
+       if (this._row.table.modExists("frozenRows", true)) {
+               this._row.table.modules.frozenRows.freezeRow(this._row);
+       }
+};
+
+RowComponent.prototype.unfreeze = function () {
+       if (this._row.table.modExists("frozenRows", true)) {
+               this._row.table.modules.frozenRows.unfreezeRow(this._row);
+       }
+};
+
+RowComponent.prototype.treeCollapse = function () {
+       if (this._row.table.modExists("dataTree", true)) {
+               this._row.table.modules.dataTree.collapseRow(this._row);
+       }
+};
+
+RowComponent.prototype.treeExpand = function () {
+       if (this._row.table.modExists("dataTree", true)) {
+               this._row.table.modules.dataTree.expandRow(this._row);
+       }
+};
+
+RowComponent.prototype.treeToggle = function () {
+       if (this._row.table.modExists("dataTree", true)) {
+               this._row.table.modules.dataTree.toggleRow(this._row);
+       }
+};
+
+RowComponent.prototype.getTreeParent = function () {
+       if (this._row.table.modExists("dataTree", true)) {
+               return this._row.table.modules.dataTree.getTreeParent(this._row);
+       }
+
+       return false;
+};
+
+RowComponent.prototype.getTreeChildren = function () {
+       if (this._row.table.modExists("dataTree", true)) {
+               return this._row.table.modules.dataTree.getTreeChildren(this._row);
+       }
+
+       return false;
+};
+
+RowComponent.prototype.reformat = function () {
+       return this._row.reinitialize();
+};
+
+RowComponent.prototype.getGroup = function () {
+       return this._row.getGroup().getComponent();
+};
+
+RowComponent.prototype.getTable = function () {
+       return this._row.table;
+};
+
+RowComponent.prototype.getNextRow = function () {
+       var row = this._row.nextRow();
+       return row ? row.getComponent() : row;
+};
+
+RowComponent.prototype.getPrevRow = function () {
+       var row = this._row.prevRow();
+       return row ? row.getComponent() : row;
+};
+
+var Row = function Row(data, parent) {
+       this.table = parent.table;
+       this.parent = parent;
+       this.data = {};
+       this.type = "row"; //type of element
+       this.element = this.createElement();
+       this.modules = {}; //hold module variables;
+       this.cells = [];
+       this.height = 0; //hold element height
+       this.heightStyled = ""; //hold element height prestyled to improve render efficiency
+       this.manualHeight = false; //user has manually set row height
+       this.outerHeight = 0; //holde lements outer height
+       this.initialized = false; //element has been rendered
+       this.heightInitialized = false; //element has resized cells to fit
+
+       this.setData(data);
+       this.generateElement();
+};
+
+Row.prototype.createElement = function () {
+       var el = document.createElement("div");
+
+       el.classList.add("tabulator-row");
+       el.setAttribute("role", "row");
+
+       return el;
+};
+
+Row.prototype.getElement = function () {
+       return this.element;
+};
+
+Row.prototype.detachElement = function () {
+       if (this.element && this.element.parentNode) {
+               this.element.parentNode.removeChild(this.element);
+       }
+};
+
+Row.prototype.generateElement = function () {
+       var self = this,
+           dblTap,
+           tapHold,
+           tap;
+
+       //set row selection characteristics
+       if (self.table.options.selectable !== false && self.table.modExists("selectRow")) {
+               self.table.modules.selectRow.initializeRow(this);
+       }
+
+       //setup movable rows
+       if (self.table.options.movableRows !== false && self.table.modExists("moveRow")) {
+               self.table.modules.moveRow.initializeRow(this);
+       }
+
+       //setup data tree
+       if (self.table.options.dataTree !== false && self.table.modExists("dataTree")) {
+               self.table.modules.dataTree.initializeRow(this);
+       }
+
+       //handle row click events
+       if (self.table.options.rowClick) {
+               self.element.addEventListener("click", function (e) {
+                       self.table.options.rowClick(e, self.getComponent());
+               });
+       }
+
+       if (self.table.options.rowDblClick) {
+               self.element.addEventListener("dblclick", function (e) {
+                       self.table.options.rowDblClick(e, self.getComponent());
+               });
+       }
+
+       if (self.table.options.rowContext) {
+               self.element.addEventListener("contextmenu", function (e) {
+                       self.table.options.rowContext(e, self.getComponent());
+               });
+       }
+
+       //handle mouse events
+       if (self.table.options.rowMouseEnter) {
+               self.element.addEventListener("mouseenter", function (e) {
+                       self.table.options.rowMouseEnter(e, self.getComponent());
+               });
+       }
+
+       if (self.table.options.rowMouseLeave) {
+               self.element.addEventListener("mouseleave", function (e) {
+                       self.table.options.rowMouseLeave(e, self.getComponent());
+               });
+       }
+
+       if (self.table.options.rowMouseOver) {
+               self.element.addEventListener("mouseover", function (e) {
+                       self.table.options.rowMouseOver(e, self.getComponent());
+               });
+       }
+
+       if (self.table.options.rowMouseOut) {
+               self.element.addEventListener("mouseout", function (e) {
+                       self.table.options.rowMouseOut(e, self.getComponent());
+               });
+       }
+
+       if (self.table.options.rowMouseMove) {
+               self.element.addEventListener("mousemove", function (e) {
+                       self.table.options.rowMouseMove(e, self.getComponent());
+               });
+       }
+
+       if (self.table.options.rowTap) {
+
+               tap = false;
+
+               self.element.addEventListener("touchstart", function (e) {
+                       tap = true;
+               }, { passive: true });
+
+               self.element.addEventListener("touchend", function (e) {
+                       if (tap) {
+                               self.table.options.rowTap(e, self.getComponent());
+                       }
+
+                       tap = false;
+               });
+       }
+
+       if (self.table.options.rowDblTap) {
+
+               dblTap = null;
+
+               self.element.addEventListener("touchend", function (e) {
+
+                       if (dblTap) {
+                               clearTimeout(dblTap);
+                               dblTap = null;
+
+                               self.table.options.rowDblTap(e, self.getComponent());
+                       } else {
+
+                               dblTap = setTimeout(function () {
+                                       clearTimeout(dblTap);
+                                       dblTap = null;
+                               }, 300);
+                       }
+               });
+       }
+
+       if (self.table.options.rowTapHold) {
+
+               tapHold = null;
+
+               self.element.addEventListener("touchstart", function (e) {
+                       clearTimeout(tapHold);
+
+                       tapHold = setTimeout(function () {
+                               clearTimeout(tapHold);
+                               tapHold = null;
+                               tap = false;
+                               self.table.options.rowTapHold(e, self.getComponent());
+                       }, 1000);
+               }, { passive: true });
+
+               self.element.addEventListener("touchend", function (e) {
+                       clearTimeout(tapHold);
+                       tapHold = null;
+               });
+       }
+};
+
+Row.prototype.generateCells = function () {
+       this.cells = this.table.columnManager.generateCells(this);
+};
+
+//functions to setup on first render
+Row.prototype.initialize = function (force) {
+       var self = this;
+
+       if (!self.initialized || force) {
+
+               self.deleteCells();
+
+               while (self.element.firstChild) {
+                       self.element.removeChild(self.element.firstChild);
+               } //handle frozen cells
+               if (this.table.modExists("frozenColumns")) {
+                       this.table.modules.frozenColumns.layoutRow(this);
+               }
+
+               this.generateCells();
+
+               self.cells.forEach(function (cell) {
+                       self.element.appendChild(cell.getElement());
+                       cell.cellRendered();
+               });
+
+               if (force) {
+                       self.normalizeHeight();
+               }
+
+               //setup movable rows
+               if (self.table.options.dataTree && self.table.modExists("dataTree")) {
+                       self.table.modules.dataTree.layoutRow(this);
+               }
+
+               //setup movable rows
+               if (self.table.options.responsiveLayout === "collapse" && self.table.modExists("responsiveLayout")) {
+                       self.table.modules.responsiveLayout.layoutRow(this);
+               }
+
+               if (self.table.options.rowFormatter) {
+                       self.table.options.rowFormatter(self.getComponent());
+               }
+
+               //set resizable handles
+               if (self.table.options.resizableRows && self.table.modExists("resizeRows")) {
+                       self.table.modules.resizeRows.initializeRow(self);
+               }
+
+               self.initialized = true;
+       }
+};
+
+Row.prototype.reinitializeHeight = function () {
+       this.heightInitialized = false;
+
+       if (this.element.offsetParent !== null) {
+               this.normalizeHeight(true);
+       }
+};
+
+Row.prototype.reinitialize = function () {
+       this.initialized = false;
+       this.heightInitialized = false;
+
+       if (!this.manualHeight) {
+               this.height = 0;
+               this.heightStyled = "";
+       }
+
+       if (this.element.offsetParent !== null) {
+               this.initialize(true);
+       }
+};
+
+//get heights when doing bulk row style calcs in virtual DOM
+Row.prototype.calcHeight = function (force) {
+
+       var maxHeight = 0,
+           minHeight = this.table.options.resizableRows ? this.element.clientHeight : 0;
+
+       this.cells.forEach(function (cell) {
+               var height = cell.getHeight();
+               if (height > maxHeight) {
+                       maxHeight = height;
+               }
+       });
+
+       if (force) {
+               this.height = Math.max(maxHeight, minHeight);
+       } else {
+               this.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight);
+       }
+
+       this.heightStyled = this.height ? this.height + "px" : "";
+       this.outerHeight = this.element.offsetHeight;
+};
+
+//set of cells
+Row.prototype.setCellHeight = function () {
+       this.cells.forEach(function (cell) {
+               cell.setHeight();
+       });
+
+       this.heightInitialized = true;
+};
+
+Row.prototype.clearCellHeight = function () {
+       this.cells.forEach(function (cell) {
+               cell.clearHeight();
+       });
+};
+
+//normalize the height of elements in the row
+Row.prototype.normalizeHeight = function (force) {
+
+       if (force) {
+               this.clearCellHeight();
+       }
+
+       this.calcHeight(force);
+
+       this.setCellHeight();
+};
+
+// Row.prototype.setHeight = function(height){
+//     this.height = height;
+
+//     this.setCellHeight();
+// };
+
+//set height of rows
+Row.prototype.setHeight = function (height, force) {
+       if (this.height != height || force) {
+
+               this.manualHeight = true;
+
+               this.height = height;
+               this.heightStyled = height ? height + "px" : "";
+
+               this.setCellHeight();
+
+               // this.outerHeight = this.element.outerHeight();
+               this.outerHeight = this.element.offsetHeight;
+       }
+};
+
+//return rows outer height
+Row.prototype.getHeight = function () {
+       return this.outerHeight;
+};
+
+//return rows outer Width
+Row.prototype.getWidth = function () {
+       return this.element.offsetWidth;
+};
+
+//////////////// Cell Management /////////////////
+
+Row.prototype.deleteCell = function (cell) {
+       var index = this.cells.indexOf(cell);
+
+       if (index > -1) {
+               this.cells.splice(index, 1);
+       }
+};
+
+//////////////// Data Management /////////////////
+
+Row.prototype.setData = function (data) {
+       if (this.table.modExists("mutator")) {
+               data = this.table.modules.mutator.transformRow(data, "data");
+       }
+
+       this.data = data;
+
+       if (this.table.options.reactiveData && this.table.modExists("reactiveData", true)) {
+               this.table.modules.reactiveData.watchRow(this);
+       }
+};
+
+//update the rows data
+Row.prototype.updateData = function (data) {
+       var _this7 = this;
+
+       var self = this,
+           visible = Tabulator.prototype.helpers.elVisible(this.element);
+
+       return new Promise(function (resolve, reject) {
+
+               if (typeof data === "string") {
+                       data = JSON.parse(data);
+               }
+
+               if (_this7.table.options.reactiveData && _this7.table.modExists("reactiveData", true)) {
+                       _this7.table.modules.reactiveData.block();
+               }
+
+               //mutate incomming data if needed
+               if (self.table.modExists("mutator")) {
+                       data = self.table.modules.mutator.transformRow(data, "data", true);
+               }
+
+               //set data
+               for (var attrname in data) {
+                       self.data[attrname] = data[attrname];
+               }
+
+               if (_this7.table.options.reactiveData && _this7.table.modExists("reactiveData", true)) {
+                       _this7.table.modules.reactiveData.unblock();
+               }
+
+               //update affected cells only
+               for (var attrname in data) {
+
+                       var columns = _this7.table.columnManager.getColumnsByFieldRoot(attrname);
+
+                       columns.forEach(function (column) {
+                               var cell = _this7.getCell(column.getField());
+
+                               if (cell) {
+                                       var value = column.getFieldValue(data);
+                                       if (cell.getValue() != value) {
+                                               cell.setValueProcessData(value);
+
+                                               if (visible) {
+                                                       cell.cellRendered();
+                                               }
+                                       }
+                               }
+                       });
+               }
+
+               //Partial reinitialization if visible
+               if (visible) {
+                       self.normalizeHeight();
+
+                       if (self.table.options.rowFormatter) {
+                               self.table.options.rowFormatter(self.getComponent());
+                       }
+               } else {
+                       _this7.initialized = false;
+                       _this7.height = 0;
+                       _this7.heightStyled = "";
+               }
+
+               if (self.table.options.dataTree !== false && self.table.modExists("dataTree") && _this7.table.modules.dataTree.redrawNeeded(data)) {
+                       _this7.table.modules.dataTree.initializeRow(_this7);
+                       _this7.table.modules.dataTree.layoutRow(_this7);
+                       _this7.table.rowManager.refreshActiveData("tree", false, true);
+               }
+
+               //self.reinitialize();
+
+               self.table.options.rowUpdated.call(_this7.table, self.getComponent());
+
+               resolve();
+       });
+};
+
+Row.prototype.getData = function (transform) {
+       var self = this;
+
+       if (transform) {
+               if (self.table.modExists("accessor")) {
+                       return self.table.modules.accessor.transformRow(self.data, transform);
+               }
+       } else {
+               return this.data;
+       }
+};
+
+Row.prototype.getCell = function (column) {
+       var match = false;
+
+       column = this.table.columnManager.findColumn(column);
+
+       match = this.cells.find(function (cell) {
+               return cell.column === column;
+       });
+
+       return match;
+};
+
+Row.prototype.getCellIndex = function (findCell) {
+       return this.cells.findIndex(function (cell) {
+               return cell === findCell;
+       });
+};
+
+Row.prototype.findNextEditableCell = function (index) {
+       var nextCell = false;
+
+       if (index < this.cells.length - 1) {
+               for (var i = index + 1; i < this.cells.length; i++) {
+                       var cell = this.cells[i];
+
+                       if (cell.column.modules.edit && Tabulator.prototype.helpers.elVisible(cell.getElement())) {
+                               var allowEdit = true;
+
+                               if (typeof cell.column.modules.edit.check == "function") {
+                                       allowEdit = cell.column.modules.edit.check(cell.getComponent());
+                               }
+
+                               if (allowEdit) {
+                                       nextCell = cell;
+                                       break;
+                               }
+                       }
+               }
+       }
+
+       return nextCell;
+};
+
+Row.prototype.findPrevEditableCell = function (index) {
+       var prevCell = false;
+
+       if (index > 0) {
+               for (var i = index - 1; i >= 0; i--) {
+                       var cell = this.cells[i],
+                           allowEdit = true;
+
+                       if (cell.column.modules.edit && Tabulator.prototype.helpers.elVisible(cell.getElement())) {
+                               if (typeof cell.column.modules.edit.check == "function") {
+                                       allowEdit = cell.column.modules.edit.check(cell.getComponent());
+                               }
+
+                               if (allowEdit) {
+                                       prevCell = cell;
+                                       break;
+                               }
+                       }
+               }
+       }
+
+       return prevCell;
+};
+
+Row.prototype.getCells = function () {
+       return this.cells;
+};
+
+Row.prototype.nextRow = function () {
+       var row = this.table.rowManager.nextDisplayRow(this, true);
+       return row || false;
+};
+
+Row.prototype.prevRow = function () {
+       var row = this.table.rowManager.prevDisplayRow(this, true);
+       return row || false;
+};
+
+Row.prototype.moveToRow = function (to, before) {
+       var toRow = this.table.rowManager.findRow(to);
+
+       if (toRow) {
+               this.table.rowManager.moveRowActual(this, toRow, !before);
+               this.table.rowManager.refreshActiveData("display", false, true);
+       } else {
+               console.warn("Move Error - No matching row found:", to);
+       }
+};
+
+///////////////////// Actions  /////////////////////
+
+Row.prototype.delete = function () {
+       var _this8 = this;
+
+       return new Promise(function (resolve, reject) {
+               var index, rows;
+
+               if (_this8.table.options.history && _this8.table.modExists("history")) {
+
+                       if (_this8.table.options.groupBy && _this8.table.modExists("groupRows")) {
+                               rows = _this8.getGroup().rows;
+                               index = rows.indexOf(_this8);
+
+                               if (index) {
+                                       index = rows[index - 1];
+                               }
+                       } else {
+                               index = _this8.table.rowManager.getRowIndex(_this8);
+
+                               if (index) {
+                                       index = _this8.table.rowManager.rows[index - 1];
+                               }
+                       }
+
+                       _this8.table.modules.history.action("rowDelete", _this8, { data: _this8.getData(), pos: !index, index: index });
+               }
+
+               _this8.deleteActual();
+
+               resolve();
+       });
+};
+
+Row.prototype.deleteActual = function (blockRedraw) {
+       var index = this.table.rowManager.getRowIndex(this);
+
+       //deselect row if it is selected
+       if (this.table.modExists("selectRow")) {
+               this.table.modules.selectRow._deselectRow(this, true);
+       }
+
+       // if(this.table.options.dataTree && this.table.modExists("dataTree")){
+       //      this.table.modules.dataTree.collapseRow(this, true);
+       // }
+
+       //remove any reactive data watchers from row object
+       if (this.table.options.reactiveData && this.table.modExists("reactiveData", true)) {}
+       // this.table.modules.reactiveData.unwatchRow(this);
+
+
+       //remove from group
+       if (this.modules.group) {
+               this.modules.group.removeRow(this);
+       }
+
+       this.table.rowManager.deleteRow(this, blockRedraw);
+
+       this.deleteCells();
+
+       this.initialized = false;
+       this.heightInitialized = false;
+
+       //recalc column calculations if present
+       if (this.table.modExists("columnCalcs")) {
+               if (this.table.options.groupBy && this.table.modExists("groupRows")) {
+                       this.table.modules.columnCalcs.recalcRowGroup(this);
+               } else {
+                       this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
+               }
+       }
+};
+
+Row.prototype.deleteCells = function () {
+       var cellCount = this.cells.length;
+
+       for (var i = 0; i < cellCount; i++) {
+               this.cells[0].delete();
+       }
+};
+
+Row.prototype.wipe = function () {
+       this.deleteCells();
+
+       while (this.element.firstChild) {
+               this.element.removeChild(this.element.firstChild);
+       }this.element = false;
+       this.modules = {};
+
+       if (this.element.parentNode) {
+               this.element.parentNode.removeChild(this.element);
+       }
+};
+
+Row.prototype.getGroup = function () {
+       return this.modules.group || false;
+};
+
+//////////////// Object Generation /////////////////
+Row.prototype.getComponent = function () {
+       return new RowComponent(this);
+};
+
+//public row object
+var CellComponent = function CellComponent(cell) {
+       this._cell = cell;
+};
+
+CellComponent.prototype.getValue = function () {
+       return this._cell.getValue();
+};
+
+CellComponent.prototype.getOldValue = function () {
+       return this._cell.getOldValue();
+};
+
+CellComponent.prototype.getElement = function () {
+       return this._cell.getElement();
+};
+
+CellComponent.prototype.getRow = function () {
+       return this._cell.row.getComponent();
+};
+
+CellComponent.prototype.getData = function () {
+       return this._cell.row.getData();
+};
+
+CellComponent.prototype.getField = function () {
+       return this._cell.column.getField();
+};
+
+CellComponent.prototype.getColumn = function () {
+       return this._cell.column.getComponent();
+};
+
+CellComponent.prototype.setValue = function (value, mutate) {
+       if (typeof mutate == "undefined") {
+               mutate = true;
+       }
+
+       this._cell.setValue(value, mutate);
+};
+
+CellComponent.prototype.restoreOldValue = function () {
+       this._cell.setValueActual(this._cell.getOldValue());
+};
+
+CellComponent.prototype.edit = function (force) {
+       return this._cell.edit(force);
+};
+
+CellComponent.prototype.cancelEdit = function () {
+       this._cell.cancelEdit();
+};
+
+CellComponent.prototype.nav = function () {
+       return this._cell.nav();
+};
+
+CellComponent.prototype.checkHeight = function () {
+       this._cell.checkHeight();
+};
+
+CellComponent.prototype.getTable = function () {
+       return this._cell.table;
+};
+
+CellComponent.prototype._getSelf = function () {
+       return this._cell;
+};
+
+var Cell = function Cell(column, row) {
+
+       this.table = column.table;
+       this.column = column;
+       this.row = row;
+       this.element = null;
+       this.value = null;
+       this.oldValue = null;
+
+       this.height = null;
+       this.width = null;
+       this.minWidth = null;
+
+       this.build();
+};
+
+//////////////// Setup Functions /////////////////
+
+//generate element
+Cell.prototype.build = function () {
+       this.generateElement();
+
+       this.setWidth();
+
+       this._configureCell();
+
+       this.setValueActual(this.column.getFieldValue(this.row.data));
+};
+
+Cell.prototype.generateElement = function () {
+       this.element = document.createElement('div');
+       this.element.className = "tabulator-cell";
+       this.element.setAttribute("role", "gridcell");
+       this.element = this.element;
+};
+
+Cell.prototype._configureCell = function () {
+       var self = this,
+           cellEvents = self.column.cellEvents,
+           element = self.element,
+           field = this.column.getField();
+
+       //set text alignment
+       element.style.textAlign = self.column.hozAlign;
+
+       if (field) {
+               element.setAttribute("tabulator-field", field);
+       }
+
+       //add class to cell if needed
+       if (self.column.definition.cssClass) {
+               var classNames = self.column.definition.cssClass.split(" ");
+               classNames.forEach(function (className) {
+                       element.classList.add(className);
+               });
+       }
+
+       //update tooltip on mouse enter
+       if (this.table.options.tooltipGenerationMode === "hover") {
+               element.addEventListener("mouseenter", function (e) {
+                       self._generateTooltip();
+               });
+       }
+
+       self._bindClickEvents(cellEvents);
+
+       self._bindTouchEvents(cellEvents);
+
+       self._bindMouseEvents(cellEvents);
+
+       if (self.column.modules.edit) {
+               self.table.modules.edit.bindEditor(self);
+       }
+
+       if (self.column.definition.rowHandle && self.table.options.movableRows !== false && self.table.modExists("moveRow")) {
+               self.table.modules.moveRow.initializeCell(self);
+       }
+
+       //hide cell if not visible
+       if (!self.column.visible) {
+               self.hide();
+       }
+};
+
+Cell.prototype._bindClickEvents = function (cellEvents) {
+       var self = this,
+           element = self.element;
+
+       //set event bindings
+       if (cellEvents.cellClick || self.table.options.cellClick) {
+               element.addEventListener("click", function (e) {
+                       var component = self.getComponent();
+
+                       if (cellEvents.cellClick) {
+                               cellEvents.cellClick.call(self.table, e, component);
+                       }
+
+                       if (self.table.options.cellClick) {
+                               self.table.options.cellClick.call(self.table, e, component);
+                       }
+               });
+       }
+
+       if (cellEvents.cellDblClick || this.table.options.cellDblClick) {
+               element.addEventListener("dblclick", function (e) {
+                       var component = self.getComponent();
+
+                       if (cellEvents.cellDblClick) {
+                               cellEvents.cellDblClick.call(self.table, e, component);
+                       }
+
+                       if (self.table.options.cellDblClick) {
+                               self.table.options.cellDblClick.call(self.table, e, component);
+                       }
+               });
+       } else {
+               element.addEventListener("dblclick", function (e) {
+                       e.preventDefault();
+
+                       try {
+                               if (document.selection) {
+                                       // IE
+                                       var range = document.body.createTextRange();
+                                       range.moveToElementText(self.element);
+                                       range.select();
+                               } else if (window.getSelection) {
+                                       var range = document.createRange();
+                                       range.selectNode(self.element);
+                                       window.getSelection().removeAllRanges();
+                                       window.getSelection().addRange(range);
+                               }
+                       } catch (e) {}
+               });
+       }
+
+       if (cellEvents.cellContext || this.table.options.cellContext) {
+               element.addEventListener("contextmenu", function (e) {
+                       var component = self.getComponent();
+
+                       if (cellEvents.cellContext) {
+                               cellEvents.cellContext.call(self.table, e, component);
+                       }
+
+                       if (self.table.options.cellContext) {
+                               self.table.options.cellContext.call(self.table, e, component);
+                       }
+               });
+       }
+};
+
+Cell.prototype._bindMouseEvents = function (cellEvents) {
+       var self = this,
+           element = self.element;
+
+       if (cellEvents.cellMouseEnter || self.table.options.cellMouseEnter) {
+               element.addEventListener("mouseenter", function (e) {
+                       var component = self.getComponent();
+
+                       if (cellEvents.cellMouseEnter) {
+                               cellEvents.cellMouseEnter.call(self.table, e, component);
+                       }
+
+                       if (self.table.options.cellMouseEnter) {
+                               self.table.options.cellMouseEnter.call(self.table, e, component);
+                       }
+               });
+       }
+
+       if (cellEvents.cellMouseLeave || self.table.options.cellMouseLeave) {
+               element.addEventListener("mouseleave", function (e) {
+                       var component = self.getComponent();
+
+                       if (cellEvents.cellMouseLeave) {
+                               cellEvents.cellMouseLeave.call(self.table, e, component);
+                       }
+
+                       if (self.table.options.cellMouseLeave) {
+                               self.table.options.cellMouseLeave.call(self.table, e, component);
+                       }
+               });
+       }
+
+       if (cellEvents.cellMouseOver || self.table.options.cellMouseOver) {
+               element.addEventListener("mouseover", function (e) {
+                       var component = self.getComponent();
+
+                       if (cellEvents.cellMouseOver) {
+                               cellEvents.cellMouseOver.call(self.table, e, component);
+                       }
+
+                       if (self.table.options.cellMouseOver) {
+                               self.table.options.cellMouseOver.call(self.table, e, component);
+                       }
+               });
+       }
+
+       if (cellEvents.cellMouseOut || self.table.options.cellMouseOut) {
+               element.addEventListener("mouseout", function (e) {
+                       var component = self.getComponent();
+
+                       if (cellEvents.cellMouseOut) {
+                               cellEvents.cellMouseOut.call(self.table, e, component);
+                       }
+
+                       if (self.table.options.cellMouseOut) {
+                               self.table.options.cellMouseOut.call(self.table, e, component);
+                       }
+               });
+       }
+
+       if (cellEvents.cellMouseMove || self.table.options.cellMouseMove) {
+               element.addEventListener("mousemove", function (e) {
+                       var component = self.getComponent();
+
+                       if (cellEvents.cellMouseMove) {
+                               cellEvents.cellMouseMove.call(self.table, e, component);
+                       }
+
+                       if (self.table.options.cellMouseMove) {
+                               self.table.options.cellMouseMove.call(self.table, e, component);
+                       }
+               });
+       }
+};
+
+Cell.prototype._bindTouchEvents = function (cellEvents) {
+       var self = this,
+           element = self.element,
+           dblTap,
+           tapHold,
+           tap;
+
+       if (cellEvents.cellTap || this.table.options.cellTap) {
+               tap = false;
+
+               element.addEventListener("touchstart", function (e) {
+                       tap = true;
+               }, { passive: true });
+
+               element.addEventListener("touchend", function (e) {
+                       if (tap) {
+                               var component = self.getComponent();
+
+                               if (cellEvents.cellTap) {
+                                       cellEvents.cellTap.call(self.table, e, component);
+                               }
+
+                               if (self.table.options.cellTap) {
+                                       self.table.options.cellTap.call(self.table, e, component);
+                               }
+                       }
+
+                       tap = false;
+               });
+       }
+
+       if (cellEvents.cellDblTap || this.table.options.cellDblTap) {
+               dblTap = null;
+
+               element.addEventListener("touchend", function (e) {
+
+                       if (dblTap) {
+                               clearTimeout(dblTap);
+                               dblTap = null;
+
+                               var component = self.getComponent();
+
+                               if (cellEvents.cellDblTap) {
+                                       cellEvents.cellDblTap.call(self.table, e, component);
+                               }
+
+                               if (self.table.options.cellDblTap) {
+                                       self.table.options.cellDblTap.call(self.table, e, component);
+                               }
+                       } else {
+
+                               dblTap = setTimeout(function () {
+                                       clearTimeout(dblTap);
+                                       dblTap = null;
+                               }, 300);
+                       }
+               });
+       }
+
+       if (cellEvents.cellTapHold || this.table.options.cellTapHold) {
+               tapHold = null;
+
+               element.addEventListener("touchstart", function (e) {
+                       clearTimeout(tapHold);
+
+                       tapHold = setTimeout(function () {
+                               clearTimeout(tapHold);
+                               tapHold = null;
+                               tap = false;
+                               var component = self.getComponent();
+
+                               if (cellEvents.cellTapHold) {
+                                       cellEvents.cellTapHold.call(self.table, e, component);
+                               }
+
+                               if (self.table.options.cellTapHold) {
+                                       self.table.options.cellTapHold.call(self.table, e, component);
+                               }
+                       }, 1000);
+               }, { passive: true });
+
+               element.addEventListener("touchend", function (e) {
+                       clearTimeout(tapHold);
+                       tapHold = null;
+               });
+       }
+};
+
+//generate cell contents
+Cell.prototype._generateContents = function () {
+       var val;
+
+       if (this.table.modExists("format")) {
+               val = this.table.modules.format.formatValue(this);
+       } else {
+               val = this.element.innerHTML = this.value;
+       }
+
+       switch (typeof val === 'undefined' ? 'undefined' : _typeof(val)) {
+               case "object":
+                       if (val instanceof Node) {
+
+                               //clear previous cell contents
+                               while (this.element.firstChild) {
+                                       this.element.removeChild(this.element.firstChild);
+                               }this.element.appendChild(val);
+                       } else {
+                               this.element.innerHTML = "";
+
+                               if (val != null) {
+                                       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:", val);
+                               }
+                       }
+                       break;
+               case "undefined":
+               case "null":
+                       this.element.innerHTML = "";
+                       break;
+               default:
+                       this.element.innerHTML = val;
+       }
+};
+
+Cell.prototype.cellRendered = function () {
+       if (this.table.modExists("format") && this.table.modules.format.cellRendered) {
+               this.table.modules.format.cellRendered(this);
+       }
+};
+
+//generate tooltip text
+Cell.prototype._generateTooltip = function () {
+       var tooltip = this.column.tooltip;
+
+       if (tooltip) {
+               if (tooltip === true) {
+                       tooltip = this.value;
+               } else if (typeof tooltip == "function") {
+                       tooltip = tooltip(this.getComponent());
+
+                       if (tooltip === false) {
+                               tooltip = "";
+                       }
+               }
+
+               if (typeof tooltip === "undefined") {
+                       tooltip = "";
+               }
+
+               this.element.setAttribute("title", tooltip);
+       } else {
+               this.element.setAttribute("title", "");
+       }
+};
+
+//////////////////// Getters ////////////////////
+Cell.prototype.getElement = function () {
+       return this.element;
+};
+
+Cell.prototype.getValue = function () {
+       return this.value;
+};
+
+Cell.prototype.getOldValue = function () {
+       return this.oldValue;
+};
+
+//////////////////// Actions ////////////////////
+
+Cell.prototype.setValue = function (value, mutate) {
+
+       var changed = this.setValueProcessData(value, mutate),
+           component;
+
+       if (changed) {
+               if (this.table.options.history && this.table.modExists("history")) {
+                       this.table.modules.history.action("cellEdit", this, { oldValue: this.oldValue, newValue: this.value });
+               }
+
+               component = this.getComponent();
+
+               if (this.column.cellEvents.cellEdited) {
+                       this.column.cellEvents.cellEdited.call(this.table, component);
+               }
+
+               this.table.options.cellEdited.call(this.table, component);
+
+               this.table.options.dataEdited.call(this.table, this.table.rowManager.getData());
+       }
+};
+
+Cell.prototype.setValueProcessData = function (value, mutate) {
+       var changed = false;
+
+       if (this.value != value) {
+
+               changed = true;
+
+               if (mutate) {
+                       if (this.column.modules.mutate) {
+                               value = this.table.modules.mutator.transformCell(this, value);
+                       }
+               }
+       }
+
+       this.setValueActual(value);
+
+       if (changed && this.table.modExists("columnCalcs")) {
+               if (this.column.definition.topCalc || this.column.definition.bottomCalc) {
+                       if (this.table.options.groupBy && this.table.modExists("groupRows")) {
+
+                               if (this.table.options.columnCalcs == "table" || this.table.options.columnCalcs == "both") {
+                                       this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
+                               }
+
+                               if (this.table.options.columnCalcs != "table") {
+                                       this.table.modules.columnCalcs.recalcRowGroup(this.row);
+                               }
+                       } else {
+                               this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
+                       }
+               }
+       }
+
+       return changed;
+};
+
+Cell.prototype.setValueActual = function (value) {
+       this.oldValue = this.value;
+
+       this.value = value;
+
+       if (this.table.options.reactiveData && this.table.modExists("reactiveData")) {
+               this.table.modules.reactiveData.block();
+       }
+
+       this.column.setFieldValue(this.row.data, value);
+
+       if (this.table.options.reactiveData && this.table.modExists("reactiveData")) {
+               this.table.modules.reactiveData.unblock();
+       }
+
+       this._generateContents();
+       this._generateTooltip();
+
+       //set resizable handles
+       if (this.table.options.resizableColumns && this.table.modExists("resizeColumns")) {
+               this.table.modules.resizeColumns.initializeColumn("cell", this.column, this.element);
+       }
+
+       //handle frozen cells
+       if (this.table.modExists("frozenColumns")) {
+               this.table.modules.frozenColumns.layoutElement(this.element, this.column);
+       }
+};
+
+Cell.prototype.setWidth = function () {
+       this.width = this.column.width;
+       this.element.style.width = this.column.widthStyled;
+};
+
+Cell.prototype.clearWidth = function () {
+       this.width = "";
+       this.element.style.width = "";
+};
+
+Cell.prototype.getWidth = function () {
+       return this.width || this.element.offsetWidth;
+};
+
+Cell.prototype.setMinWidth = function () {
+       this.minWidth = this.column.minWidth;
+       this.element.style.minWidth = this.column.minWidthStyled;
+};
+
+Cell.prototype.checkHeight = function () {
+       // var height = this.element.css("height");
+       this.row.reinitializeHeight();
+};
+
+Cell.prototype.clearHeight = function () {
+       this.element.style.height = "";
+       this.height = null;
+};
+
+Cell.prototype.setHeight = function () {
+       this.height = this.row.height;
+       this.element.style.height = this.row.heightStyled;
+};
+
+Cell.prototype.getHeight = function () {
+       return this.height || this.element.offsetHeight;
+};
+
+Cell.prototype.show = function () {
+       this.element.style.display = "";
+};
+
+Cell.prototype.hide = function () {
+       this.element.style.display = "none";
+};
+
+Cell.prototype.edit = function (force) {
+       if (this.table.modExists("edit", true)) {
+               return this.table.modules.edit.editCell(this, force);
+       }
+};
+
+Cell.prototype.cancelEdit = function () {
+       if (this.table.modExists("edit", true)) {
+               var editing = this.table.modules.edit.getCurrentCell();
+
+               if (editing && editing._getSelf() === this) {
+                       this.table.modules.edit.cancelEdit();
+               } else {
+                       console.warn("Cancel Editor Error - This cell is not currently being edited ");
+               }
+       }
+};
+
+Cell.prototype.delete = function () {
+       this.element.parentNode.removeChild(this.element);
+       this.element = false;
+       this.column.deleteCell(this);
+       this.row.deleteCell(this);
+       this.calcs = {};
+};
+
+//////////////// Navigation /////////////////
+
+Cell.prototype.nav = function () {
+
+       var self = this,
+           nextCell = false,
+           index = this.row.getCellIndex(this);
+
+       return {
+               next: function next() {
+                       var nextCell = this.right(),
+                           nextRow;
+
+                       if (!nextCell) {
+                               nextRow = self.table.rowManager.nextDisplayRow(self.row, true);
+
+                               if (nextRow) {
+                                       nextCell = nextRow.findNextEditableCell(-1);
+
+                                       if (nextCell) {
+                                               nextCell.edit();
+                                               return true;
+                                       }
+                               }
+                       } else {
+                               return true;
+                       }
+
+                       return false;
+               },
+               prev: function prev() {
+                       var nextCell = this.left(),
+                           prevRow;
+
+                       if (!nextCell) {
+                               prevRow = self.table.rowManager.prevDisplayRow(self.row, true);
+
+                               if (prevRow) {
+                                       nextCell = prevRow.findPrevEditableCell(prevRow.cells.length);
+
+                                       if (nextCell) {
+                                               nextCell.edit();
+                                               return true;
+                                       }
+                               }
+                       } else {
+                               return true;
+                       }
+
+                       return false;
+               },
+               left: function left() {
+
+                       nextCell = self.row.findPrevEditableCell(index);
+
+                       if (nextCell) {
+                               nextCell.edit();
+                               return true;
+                       } else {
+                               return false;
+                       }
+               },
+               right: function right() {
+                       nextCell = self.row.findNextEditableCell(index);
+
+                       if (nextCell) {
+                               nextCell.edit();
+                               return true;
+                       } else {
+                               return false;
+                       }
+               },
+               up: function up() {
+                       var nextRow = self.table.rowManager.prevDisplayRow(self.row, true);
+
+                       if (nextRow) {
+                               nextRow.cells[index].edit();
+                       }
+               },
+               down: function down() {
+                       var nextRow = self.table.rowManager.nextDisplayRow(self.row, true);
+
+                       if (nextRow) {
+                               nextRow.cells[index].edit();
+                       }
+               }
+
+       };
+};
+
+Cell.prototype.getIndex = function () {
+       this.row.getCellIndex(this);
+};
+
+//////////////// Object Generation /////////////////
+Cell.prototype.getComponent = function () {
+       return new CellComponent(this);
+};
+var FooterManager = function FooterManager(table) {
+       this.table = table;
+       this.active = false;
+       this.element = this.createElement(); //containing element
+       this.external = false;
+       this.links = [];
+
+       this._initialize();
+};
+
+FooterManager.prototype.createElement = function () {
+       var el = document.createElement("div");
+
+       el.classList.add("tabulator-footer");
+
+       return el;
+};
+
+FooterManager.prototype._initialize = function (element) {
+       if (this.table.options.footerElement) {
+
+               switch (_typeof(this.table.options.footerElement)) {
+                       case "string":
+
+                               if (this.table.options.footerElement[0] === "<") {
+                                       this.element.innerHTML = this.table.options.footerElement;
+                               } else {
+                                       this.external = true;
+                                       this.element = document.querySelector(this.table.options.footerElement);
+                               }
+                               break;
+                       default:
+                               this.element = this.table.options.footerElement;
+                               break;
+               }
+       }
+};
+
+FooterManager.prototype.getElement = function () {
+       return this.element;
+};
+
+FooterManager.prototype.append = function (element, parent) {
+       this.activate(parent);
+
+       this.element.appendChild(element);
+       this.table.rowManager.adjustTableSize();
+};
+
+FooterManager.prototype.prepend = function (element, parent) {
+       this.activate(parent);
+
+       this.element.insertBefore(element, this.element.firstChild);
+       this.table.rowManager.adjustTableSize();
+};
+
+FooterManager.prototype.remove = function (element) {
+       element.parentNode.removeChild(element);
+       this.deactivate();
+};
+
+FooterManager.prototype.deactivate = function (force) {
+       if (!this.element.firstChild || force) {
+               if (!this.external) {
+                       this.element.parentNode.removeChild(this.element);
+               }
+               this.active = false;
+       }
+
+       // this.table.rowManager.adjustTableSize();
+};
+
+FooterManager.prototype.activate = function (parent) {
+       if (!this.active) {
+               this.active = true;
+               if (!this.external) {
+                       this.table.element.appendChild(this.getElement());
+                       this.table.element.style.display = '';
+               }
+       }
+
+       if (parent) {
+               this.links.push(parent);
+       }
+};
+
+FooterManager.prototype.redraw = function () {
+       this.links.forEach(function (link) {
+               link.footerRedraw();
+       });
+};
+
+var Tabulator = function Tabulator(element, options) {
+
+       this.options = {};
+
+       this.columnManager = null; // hold Column Manager
+       this.rowManager = null; //hold Row Manager
+       this.footerManager = null; //holder Footer Manager
+       this.browser = ""; //hold current browser type
+       this.browserSlow = false; //handle reduced functionality for slower browsers
+
+       this.modules = {}; //hold all modules bound to this table
+
+       this.initializeElement(element);
+       this.initializeOptions(options || {});
+       this._create();
+
+       Tabulator.prototype.comms.register(this); //register table for inderdevice communication
+};
+
+//default setup options
+Tabulator.prototype.defaultOptions = {
+
+       height: false, //height of tabulator
+
+       layout: "fitData", ///layout type "fitColumns" | "fitData"
+       layoutColumnsOnNewData: false, //update column widths on setData
+
+       columnMinWidth: 40, //minimum global width for a column
+       columnVertAlign: "top", //vertical alignment of column headers
+
+       resizableColumns: true, //resizable columns
+       resizableRows: false, //resizable rows
+       autoResize: true, //auto resize table
+
+       columns: [], //store for colum header info
+
+       data: [], //default starting data
+
+       autoColumns: false, //build columns from data row structure
+
+       reactiveData: false, //enable data reactivity
+
+       nestedFieldSeparator: ".", //seperatpr for nested data
+
+       tooltips: false, //Tool tip value
+       tooltipsHeader: false, //Tool tip for headers
+       tooltipGenerationMode: "load", //when to generate tooltips
+
+       initialSort: false, //initial sorting criteria
+       initialFilter: false, //initial filtering criteria
+       initialHeaderFilter: false, //initial header filtering criteria
+
+       columnHeaderSortMulti: true, //multiple or single column sorting
+
+       sortOrderReverse: false, //reverse internal sort ordering
+
+       headerSort: true, //set default global header sort
+       headerSortTristate: false, //set default tristate header sorting
+
+       footerElement: false, //hold footer element
+
+       index: "id", //filed for row index
+
+       keybindings: [], //array for keybindings
+
+       tabEndNewRow: false, //create new row when tab to end of table
+
+       invalidOptionWarnings: true, //allow toggling of invalid option warnings
+
+       clipboard: false, //enable clipboard
+       clipboardCopyStyled: true, //formatted table data
+       clipboardCopySelector: "active", //method of chosing which data is coppied to the clipboard
+       clipboardCopyFormatter: "table", //convert data to a clipboard string
+       clipboardPasteParser: "table", //convert pasted clipboard data to rows
+       clipboardPasteAction: "insert", //how to insert pasted data into the table
+       clipboardCopyConfig: false, //clipboard config
+
+       clipboardCopied: function clipboardCopied() {}, //data has been copied to the clipboard
+       clipboardPasted: function clipboardPasted() {}, //data has been pasted into the table
+       clipboardPasteError: function clipboardPasteError() {}, //data has not successfully been pasted into the table
+
+       downloadDataFormatter: false, //function to manipulate table data before it is downloaded
+       downloadReady: function downloadReady(data, blob) {
+               return blob;
+       }, //function to manipulate download data
+       downloadComplete: false, //function to manipulate download data
+       downloadConfig: false, //download config
+
+       dataTree: false, //enable data tree
+       dataTreeElementColumn: false,
+       dataTreeBranchElement: true, //show data tree branch element
+       dataTreeChildIndent: 9, //data tree child indent in px
+       dataTreeChildField: "_children", //data tre column field to look for child rows
+       dataTreeCollapseElement: false, //data tree row collapse element
+       dataTreeExpandElement: false, //data tree row expand element
+       dataTreeStartExpanded: false,
+       dataTreeRowExpanded: function dataTreeRowExpanded() {}, //row has been expanded
+       dataTreeRowCollapsed: function dataTreeRowCollapsed() {}, //row has been collapsed
+
+       printAsHtml: false, //enable print as html
+       printFormatter: false, //printing page formatter
+       printHeader: false, //page header contents
+       printFooter: false, //page footer contents
+       printCopyStyle: true, //enable print as html styling
+       printVisibleRows: true, //restrict print to visible rows only
+       printConfig: {}, //print config options
+
+       addRowPos: "bottom", //position to insert blank rows, top|bottom
+
+       selectable: "highlight", //highlight rows on hover
+       selectableRangeMode: "drag", //highlight rows on hover
+       selectableRollingSelection: true, //roll selection once maximum number of selectable rows is reached
+       selectablePersistence: true, // maintain selection when table view is updated
+       selectableCheck: function selectableCheck(data, row) {
+               return true;
+       }, //check wheather row is selectable
+
+       headerFilterPlaceholder: false, //placeholder text to display in header filters
+
+       headerVisible: true, //hide header
+
+       history: false, //enable edit history
+
+       locale: false, //current system language
+       langs: {},
+
+       virtualDom: true, //enable DOM virtualization
+       virtualDomBuffer: 0, // set virtual DOM buffer size
+
+       persistentLayout: false, //store column layout in memory
+       persistentSort: false, //store sorting in memory
+       persistentFilter: false, //store filters in memory
+       persistenceID: "", //key for persistent storage
+       persistenceMode: true, //mode for storing persistence information
+
+       responsiveLayout: false, //responsive layout flags
+       responsiveLayoutCollapseStartOpen: true, //start showing collapsed data
+       responsiveLayoutCollapseUseFormatters: true, //responsive layout collapse formatter
+       responsiveLayoutCollapseFormatter: false, //responsive layout collapse formatter
+
+       pagination: false, //set pagination type
+       paginationSize: false, //set number of rows to a page
+       paginationButtonCount: 5, // set count of page button
+       paginationSizeSelector: false, //add pagination size selector element
+       paginationElement: false, //element to hold pagination numbers
+       paginationDataSent: {}, //pagination data sent to the server
+       paginationDataReceived: {}, //pagination data received from the server
+       paginationAddRow: "page", //add rows on table or page
+
+       ajaxURL: false, //url for ajax loading
+       ajaxURLGenerator: false,
+       ajaxParams: {}, //params for ajax loading
+       ajaxConfig: "get", //ajax request type
+       ajaxContentType: "form", //ajax request type
+       ajaxRequestFunc: false, //promise function
+       ajaxLoader: true, //show loader
+       ajaxLoaderLoading: false, //loader element
+       ajaxLoaderError: false, //loader element
+       ajaxFiltering: false,
+       ajaxSorting: false,
+       ajaxProgressiveLoad: false, //progressive loading
+       ajaxProgressiveLoadDelay: 0, //delay between requests
+       ajaxProgressiveLoadScrollMargin: 0, //margin before scroll begins
+
+       groupBy: false, //enable table grouping and set field to group by
+       groupStartOpen: true, //starting state of group
+       groupValues: false,
+
+       groupHeader: false, //header generation function
+
+       htmlOutputConfig: false, //html outypu config
+
+       movableColumns: false, //enable movable columns
+
+       movableRows: false, //enable movable rows
+       movableRowsConnectedTables: false, //tables for movable rows to be connected to
+       movableRowsSender: false,
+       movableRowsReceiver: "insert",
+       movableRowsSendingStart: function movableRowsSendingStart() {},
+       movableRowsSent: function movableRowsSent() {},
+       movableRowsSentFailed: function movableRowsSentFailed() {},
+       movableRowsSendingStop: function movableRowsSendingStop() {},
+       movableRowsReceivingStart: function movableRowsReceivingStart() {},
+       movableRowsReceived: function movableRowsReceived() {},
+       movableRowsReceivedFailed: function movableRowsReceivedFailed() {},
+       movableRowsReceivingStop: function movableRowsReceivingStop() {},
+
+       scrollToRowPosition: "top",
+       scrollToRowIfVisible: true,
+
+       scrollToColumnPosition: "left",
+       scrollToColumnIfVisible: true,
+
+       rowFormatter: false,
+
+       placeholder: false,
+
+       //table building callbacks
+       tableBuilding: function tableBuilding() {},
+       tableBuilt: function tableBuilt() {},
+
+       //render callbacks
+       renderStarted: function renderStarted() {},
+       renderComplete: function renderComplete() {},
+
+       //row callbacks
+       rowClick: false,
+       rowDblClick: false,
+       rowContext: false,
+       rowTap: false,
+       rowDblTap: false,
+       rowTapHold: false,
+       rowMouseEnter: false,
+       rowMouseLeave: false,
+       rowMouseOver: false,
+       rowMouseOut: false,
+       rowMouseMove: false,
+       rowAdded: function rowAdded() {},
+       rowDeleted: function rowDeleted() {},
+       rowMoved: function rowMoved() {},
+       rowUpdated: function rowUpdated() {},
+       rowSelectionChanged: function rowSelectionChanged() {},
+       rowSelected: function rowSelected() {},
+       rowDeselected: function rowDeselected() {},
+       rowResized: function rowResized() {},
+
+       //cell callbacks
+       //row callbacks
+       cellClick: false,
+       cellDblClick: false,
+       cellContext: false,
+       cellTap: false,
+       cellDblTap: false,
+       cellTapHold: false,
+       cellMouseEnter: false,
+       cellMouseLeave: false,
+       cellMouseOver: false,
+       cellMouseOut: false,
+       cellMouseMove: false,
+       cellEditing: function cellEditing() {},
+       cellEdited: function cellEdited() {},
+       cellEditCancelled: function cellEditCancelled() {},
+
+       //column callbacks
+       columnMoved: false,
+       columnResized: function columnResized() {},
+       columnTitleChanged: function columnTitleChanged() {},
+       columnVisibilityChanged: function columnVisibilityChanged() {},
+
+       //HTML iport callbacks
+       htmlImporting: function htmlImporting() {},
+       htmlImported: function htmlImported() {},
+
+       //data callbacks
+       dataLoading: function dataLoading() {},
+       dataLoaded: function dataLoaded() {},
+       dataEdited: function dataEdited() {},
+
+       //ajax callbacks
+       ajaxRequesting: function ajaxRequesting() {},
+       ajaxResponse: false,
+       ajaxError: function ajaxError() {},
+
+       //filtering callbacks
+       dataFiltering: false,
+       dataFiltered: false,
+
+       //sorting callbacks
+       dataSorting: function dataSorting() {},
+       dataSorted: function dataSorted() {},
+
+       //grouping callbacks
+       groupToggleElement: "arrow",
+       groupClosedShowCalcs: false,
+       dataGrouping: function dataGrouping() {},
+       dataGrouped: false,
+       groupVisibilityChanged: function groupVisibilityChanged() {},
+       groupClick: false,
+       groupDblClick: false,
+       groupContext: false,
+       groupTap: false,
+       groupDblTap: false,
+       groupTapHold: false,
+
+       columnCalcs: true,
+
+       //pagination callbacks
+       pageLoaded: function pageLoaded() {},
+
+       //localization callbacks
+       localized: function localized() {},
+
+       //validation has failed
+       validationFailed: function validationFailed() {},
+
+       //history callbacks
+       historyUndo: function historyUndo() {},
+       historyRedo: function historyRedo() {}
+
+};
+
+Tabulator.prototype.initializeOptions = function (options) {
+
+       //warn user if option is not available
+       if (options.invalidOptionWarnings !== false) {
+               for (var key in options) {
+                       if (typeof this.defaultOptions[key] === "undefined") {
+                               console.warn("Invalid table constructor option:", key);
+                       }
+               }
+       }
+
+       //assign options to table
+       for (var key in this.defaultOptions) {
+               if (key in options) {
+                       this.options[key] = options[key];
+               } else {
+                       if (Array.isArray(this.defaultOptions[key])) {
+                               this.options[key] = [];
+                       } else if (_typeof(this.defaultOptions[key]) === "object") {
+                               this.options[key] = {};
+                       } else {
+                               this.options[key] = this.defaultOptions[key];
+                       }
+               }
+       }
+};
+
+Tabulator.prototype.initializeElement = function (element) {
+
+       if (typeof HTMLElement !== "undefined" && element instanceof HTMLElement) {
+               this.element = element;
+               return true;
+       } else if (typeof element === "string") {
+               this.element = document.querySelector(element);
+
+               if (this.element) {
+                       return true;
+               } else {
+                       console.error("Tabulator Creation Error - no element found matching selector: ", element);
+                       return false;
+               }
+       } else {
+               console.error("Tabulator Creation Error - Invalid element provided:", element);
+               return false;
+       }
+};
+
+//convert depricated functionality to new functions
+Tabulator.prototype._mapDepricatedFunctionality = function () {};
+
+Tabulator.prototype._clearSelection = function () {
+
+       this.element.classList.add("tabulator-block-select");
+
+       if (window.getSelection) {
+               if (window.getSelection().empty) {
+                       // Chrome
+                       window.getSelection().empty();
+               } else if (window.getSelection().removeAllRanges) {
+                       // Firefox
+                       window.getSelection().removeAllRanges();
+               }
+       } else if (document.selection) {
+               // IE?
+               document.selection.empty();
+       }
+
+       this.element.classList.remove("tabulator-block-select");
+};
+
+//concreate table
+Tabulator.prototype._create = function () {
+       this._clearObjectPointers();
+
+       this._mapDepricatedFunctionality();
+
+       this.bindModules();
+
+       if (this.element.tagName === "TABLE") {
+               if (this.modExists("htmlTableImport", true)) {
+                       this.modules.htmlTableImport.parseTable();
+               }
+       }
+
+       this.columnManager = new ColumnManager(this);
+       this.rowManager = new RowManager(this);
+       this.footerManager = new FooterManager(this);
+
+       this.columnManager.setRowManager(this.rowManager);
+       this.rowManager.setColumnManager(this.columnManager);
+
+       this._buildElement();
+
+       this._loadInitialData();
+};
+
+//clear pointers to objects in default config object
+Tabulator.prototype._clearObjectPointers = function () {
+       this.options.columns = this.options.columns.slice(0);
+
+       if (!this.options.reactiveData) {
+               this.options.data = this.options.data.slice(0);
+       }
+};
+
+//build tabulator element
+Tabulator.prototype._buildElement = function () {
+       var _this9 = this;
+
+       var element = this.element,
+           mod = this.modules,
+           options = this.options;
+
+       options.tableBuilding.call(this);
+
+       element.classList.add("tabulator");
+       element.setAttribute("role", "grid");
+
+       //empty element
+       while (element.firstChild) {
+               element.removeChild(element.firstChild);
+       } //set table height
+       if (options.height) {
+               options.height = isNaN(options.height) ? options.height : options.height + "px";
+               element.style.height = options.height;
+       }
+
+       this.columnManager.initialize();
+       this.rowManager.initialize();
+
+       this._detectBrowser();
+
+       if (this.modExists("layout", true)) {
+               mod.layout.initialize(options.layout);
+       }
+
+       //set localization
+       if (options.headerFilterPlaceholder !== false) {
+               mod.localize.setHeaderFilterPlaceholder(options.headerFilterPlaceholder);
+       }
+
+       for (var locale in options.langs) {
+               mod.localize.installLang(locale, options.langs[locale]);
+       }
+
+       mod.localize.setLocale(options.locale);
+
+       //configure placeholder element
+       if (typeof options.placeholder == "string") {
+
+               var el = document.createElement("div");
+               el.classList.add("tabulator-placeholder");
+
+               var span = document.createElement("span");
+               span.innerHTML = options.placeholder;
+
+               el.appendChild(span);
+
+               options.placeholder = el;
+       }
+
+       //build table elements
+       element.appendChild(this.columnManager.getElement());
+       element.appendChild(this.rowManager.getElement());
+
+       if (options.footerElement) {
+               this.footerManager.activate();
+       }
+
+       if ((options.persistentLayout || options.persistentSort || options.persistentFilter) && this.modExists("persistence", true)) {
+               mod.persistence.initialize(options.persistenceMode, options.persistenceID);
+       }
+
+       if (options.persistentLayout && this.modExists("persistence", true)) {
+               options.columns = mod.persistence.load("columns", options.columns);
+       }
+
+       if (options.movableRows && this.modExists("moveRow")) {
+               mod.moveRow.initialize();
+       }
+
+       if (options.autoColumns && this.options.data) {
+               this.columnManager.generateColumnsFromRowData(this.options.data);
+       }
+
+       if (this.modExists("columnCalcs")) {
+               mod.columnCalcs.initialize();
+       }
+
+       this.columnManager.setColumns(options.columns);
+
+       if (options.dataTree && this.modExists("dataTree", true)) {
+               mod.dataTree.initialize();
+       }
+
+       if (this.modExists("frozenRows")) {
+               this.modules.frozenRows.initialize();
+       }
+
+       if ((options.persistentSort || options.initialSort) && this.modExists("sort", true)) {
+               var sorters = [];
+
+               if (options.persistentSort && this.modExists("persistence", true)) {
+                       sorters = mod.persistence.load("sort");
+
+                       if (sorters === false && options.initialSort) {
+                               sorters = options.initialSort;
+                       }
+               } else if (options.initialSort) {
+                       sorters = options.initialSort;
+               }
+
+               mod.sort.setSort(sorters);
+       }
+
+       if ((options.persistentFilter || options.initialFilter) && this.modExists("filter", true)) {
+               var filters = [];
+
+               if (options.persistentFilter && this.modExists("persistence", true)) {
+                       filters = mod.persistence.load("filter");
+
+                       if (filters === false && options.initialFilter) {
+                               filters = options.initialFilter;
+                       }
+               } else if (options.initialFilter) {
+                       filters = options.initialFilter;
+               }
+
+               mod.filter.setFilter(filters);
+       }
+
+       if (options.initialHeaderFilter && this.modExists("filter", true)) {
+               options.initialHeaderFilter.forEach(function (item) {
+
+                       var column = _this9.columnManager.findColumn(item.field);
+
+                       if (column) {
+                               mod.filter.setHeaderFilterValue(column, item.value);
+                       } else {
+                               console.warn("Column Filter Error - No matching column found:", item.field);
+                               return false;
+                       }
+               });
+       }
+
+       if (this.modExists("ajax")) {
+               mod.ajax.initialize();
+       }
+
+       if (options.pagination && this.modExists("page", true)) {
+               mod.page.initialize();
+       }
+
+       if (options.groupBy && this.modExists("groupRows", true)) {
+               mod.groupRows.initialize();
+       }
+
+       if (this.modExists("keybindings")) {
+               mod.keybindings.initialize();
+       }
+
+       if (this.modExists("selectRow")) {
+               mod.selectRow.clearSelectionData(true);
+       }
+
+       if (options.autoResize && this.modExists("resizeTable")) {
+               mod.resizeTable.initialize();
+       }
+
+       if (this.modExists("clipboard")) {
+               mod.clipboard.initialize();
+       }
+
+       if (options.printAsHtml && this.modExists("print")) {
+               mod.print.initialize();
+       }
+
+       options.tableBuilt.call(this);
+};
+
+Tabulator.prototype._loadInitialData = function () {
+       var self = this;
+
+       if (self.options.pagination && self.modExists("page")) {
+               self.modules.page.reset(true);
+
+               if (self.options.pagination == "local") {
+                       if (self.options.data.length) {
+                               self.rowManager.setData(self.options.data);
+                       } else {
+                               if ((self.options.ajaxURL || self.options.ajaxURLGenerator) && self.modExists("ajax")) {
+                                       self.modules.ajax.loadData().then(function () {}).catch(function () {});
+                               } else {
+                                       self.rowManager.setData(self.options.data);
+                               }
+                       }
+               } else {
+                       if (self.options.ajaxURL) {
+                               self.modules.page.setPage(1).then(function () {}).catch(function () {});
+                       } else {
+                               self.rowManager.setData([]);
+                       }
+               }
+       } else {
+               if (self.options.data.length) {
+                       self.rowManager.setData(self.options.data);
+               } else {
+                       if ((self.options.ajaxURL || self.options.ajaxURLGenerator) && self.modExists("ajax")) {
+                               self.modules.ajax.loadData().then(function () {}).catch(function () {});
+                       } else {
+                               self.rowManager.setData(self.options.data);
+                       }
+               }
+       }
+};
+
+//deconstructor
+Tabulator.prototype.destroy = function () {
+       var element = this.element;
+
+       Tabulator.prototype.comms.deregister(this); //deregister table from inderdevice communication
+
+       if (this.options.reactiveData && this.modExists("reactiveData", true)) {
+               this.modules.reactiveData.unwatchData();
+       }
+
+       //clear row data
+       this.rowManager.rows.forEach(function (row) {
+               row.wipe();
+       });
+
+       this.rowManager.rows = [];
+       this.rowManager.activeRows = [];
+       this.rowManager.displayRows = [];
+
+       //clear event bindings
+       if (this.options.autoResize && this.modExists("resizeTable")) {
+               this.modules.resizeTable.clearBindings();
+       }
+
+       if (this.modExists("keybindings")) {
+               this.modules.keybindings.clearBindings();
+       }
+
+       //clear DOM
+       while (element.firstChild) {
+               element.removeChild(element.firstChild);
+       }element.classList.remove("tabulator");
+};
+
+Tabulator.prototype._detectBrowser = function () {
+       var ua = navigator.userAgent;
+
+       if (ua.indexOf("Trident") > -1) {
+               this.browser = "ie";
+               this.browserSlow = true;
+       } else if (ua.indexOf("Edge") > -1) {
+               this.browser = "edge";
+               this.browserSlow = true;
+       } else if (ua.indexOf("Firefox") > -1) {
+               this.browser = "firefox";
+               this.browserSlow = false;
+       } else {
+               this.browser = "other";
+               this.browserSlow = false;
+       }
+};
+
+////////////////// Data Handling //////////////////
+
+//loca data from local file
+Tabulator.prototype.setDataFromLocalFile = function (extensions) {
+       var _this10 = this;
+
+       return new Promise(function (resolve, reject) {
+               var input = document.createElement("input");
+               input.type = "file";
+               input.accept = extensions || ".json,application/json";
+
+               input.addEventListener("change", function (e) {
+                       var file = input.files[0],
+                           reader = new FileReader(),
+                           data;
+
+                       reader.readAsText(file);
+
+                       reader.onload = function (e) {
+
+                               try {
+                                       data = JSON.parse(reader.result);
+                               } catch (e) {
+                                       console.warn("File Load Error - File contents is invalid JSON", e);
+                                       reject(e);
+                                       return;
+                               }
+
+                               _this10._setData(data).then(function (data) {
+                                       resolve(data);
+                               }).catch(function (err) {
+                                       resolve(err);
+                               });
+                       };
+
+                       reader.onerror = function (e) {
+                               console.warn("File Load Error - Unable to read file");
+                               reject();
+                       };
+               });
+
+               input.click();
+       });
+};
+
+//load data
+Tabulator.prototype.setData = function (data, params, config) {
+       if (this.modExists("ajax")) {
+               this.modules.ajax.blockActiveRequest();
+       }
+
+       return this._setData(data, params, config);
+};
+
+Tabulator.prototype._setData = function (data, params, config, inPosition) {
+       var self = this;
+
+       if (typeof data === "string") {
+               if (data.indexOf("{") == 0 || data.indexOf("[") == 0) {
+                       //data is a json encoded string
+                       return self.rowManager.setData(JSON.parse(data), inPosition);
+               } else {
+
+                       if (self.modExists("ajax", true)) {
+                               if (params) {
+                                       self.modules.ajax.setParams(params);
+                               }
+
+                               if (config) {
+                                       self.modules.ajax.setConfig(config);
+                               }
+
+                               self.modules.ajax.setUrl(data);
+
+                               if (self.options.pagination == "remote" && self.modExists("page", true)) {
+                                       self.modules.page.reset(true);
+                                       return self.modules.page.setPage(1);
+                               } else {
+                                       //assume data is url, make ajax call to url to get data
+                                       return self.modules.ajax.loadData(inPosition);
+                               }
+                       }
+               }
+       } else {
+               if (data) {
+                       //asume data is already an object
+                       return self.rowManager.setData(data, inPosition);
+               } else {
+
+                       //no data provided, check if ajaxURL is present;
+                       if (self.modExists("ajax") && (self.modules.ajax.getUrl || self.options.ajaxURLGenerator)) {
+
+                               if (self.options.pagination == "remote" && self.modExists("page", true)) {
+                                       self.modules.page.reset(true);
+                                       return self.modules.page.setPage(1);
+                               } else {
+                                       return self.modules.ajax.loadData(inPosition);
+                               }
+                       } else {
+                               //empty data
+                               return self.rowManager.setData([], inPosition);
+                       }
+               }
+       }
+};
+
+//clear data
+Tabulator.prototype.clearData = function () {
+       if (this.modExists("ajax")) {
+               this.modules.ajax.blockActiveRequest();
+       }
+
+       this.rowManager.clearData();
+};
+
+//get table data array
+Tabulator.prototype.getData = function (active) {
+       return this.rowManager.getData(active);
+};
+
+//get table data array count
+Tabulator.prototype.getDataCount = function (active) {
+       return this.rowManager.getDataCount(active);
+};
+
+//search for specific row components
+Tabulator.prototype.searchRows = function (field, type, value) {
+       if (this.modExists("filter", true)) {
+               return this.modules.filter.search("rows", field, type, value);
+       }
+};
+
+//search for specific data
+Tabulator.prototype.searchData = function (field, type, value) {
+       if (this.modExists("filter", true)) {
+               return this.modules.filter.search("data", field, type, value);
+       }
+};
+
+//get table html
+Tabulator.prototype.getHtml = function (visible, style, config) {
+       if (this.modExists("htmlTableExport", true)) {
+               return this.modules.htmlTableExport.getHtml(visible, style, config);
+       }
+};
+
+//get print html
+Tabulator.prototype.print = function (visible, style, config) {
+       if (this.modExists("print", true)) {
+               return this.modules.print.printFullscreen(visible, style, config);
+       }
+};
+
+//retrieve Ajax URL
+Tabulator.prototype.getAjaxUrl = function () {
+       if (this.modExists("ajax", true)) {
+               return this.modules.ajax.getUrl();
+       }
+};
+
+//replace data, keeping table in position with same sort
+Tabulator.prototype.replaceData = function (data, params, config) {
+       if (this.modExists("ajax")) {
+               this.modules.ajax.blockActiveRequest();
+       }
+
+       return this._setData(data, params, config, true);
+};
+
+//update table data
+Tabulator.prototype.updateData = function (data) {
+       var _this11 = this;
+
+       var self = this;
+       var responses = 0;
+
+       return new Promise(function (resolve, reject) {
+               if (_this11.modExists("ajax")) {
+                       _this11.modules.ajax.blockActiveRequest();
+               }
+
+               if (typeof data === "string") {
+                       data = JSON.parse(data);
+               }
+
+               if (data) {
+                       data.forEach(function (item) {
+                               var row = self.rowManager.findRow(item[self.options.index]);
+
+                               if (row) {
+                                       responses++;
+
+                                       row.updateData(item).then(function () {
+                                               responses--;
+
+                                               if (!responses) {
+                                                       resolve();
+                                               }
+                                       });
+                               }
+                       });
+               } else {
+                       console.warn("Update Error - No data provided");
+                       reject("Update Error - No data provided");
+               }
+       });
+};
+
+Tabulator.prototype.addData = function (data, pos, index) {
+       var _this12 = this;
+
+       return new Promise(function (resolve, reject) {
+               if (_this12.modExists("ajax")) {
+                       _this12.modules.ajax.blockActiveRequest();
+               }
+
+               if (typeof data === "string") {
+                       data = JSON.parse(data);
+               }
+
+               if (data) {
+                       _this12.rowManager.addRows(data, pos, index).then(function (rows) {
+                               var output = [];
+
+                               rows.forEach(function (row) {
+                                       output.push(row.getComponent());
+                               });
+
+                               resolve(output);
+                       });
+               } else {
+                       console.warn("Update Error - No data provided");
+                       reject("Update Error - No data provided");
+               }
+       });
+};
+
+//update table data
+Tabulator.prototype.updateOrAddData = function (data) {
+       var _this13 = this;
+
+       var self = this,
+           rows = [],
+           responses = 0;
+
+       return new Promise(function (resolve, reject) {
+               if (_this13.modExists("ajax")) {
+                       _this13.modules.ajax.blockActiveRequest();
+               }
+
+               if (typeof data === "string") {
+                       data = JSON.parse(data);
+               }
+
+               if (data) {
+                       data.forEach(function (item) {
+                               var row = self.rowManager.findRow(item[self.options.index]);
+
+                               responses++;
+
+                               if (row) {
+                                       row.updateData(item).then(function () {
+                                               responses--;
+                                               rows.push(row.getComponent());
+
+                                               if (!responses) {
+                                                       resolve(rows);
+                                               }
+                                       });
+                               } else {
+                                       self.rowManager.addRows(item).then(function (newRows) {
+                                               responses--;
+                                               rows.push(newRows[0].getComponent());
+
+                                               if (!responses) {
+                                                       resolve(rows);
+                                               }
+                                       });
+                               }
+                       });
+               } else {
+                       console.warn("Update Error - No data provided");
+                       reject("Update Error - No data provided");
+               }
+       });
+};
+
+//get row object
+Tabulator.prototype.getRow = function (index) {
+       var row = this.rowManager.findRow(index);
+
+       if (row) {
+               return row.getComponent();
+       } else {
+               console.warn("Find Error - No matching row found:", index);
+               return false;
+       }
+};
+
+//get row object
+Tabulator.prototype.getRowFromPosition = function (position, active) {
+       var row = this.rowManager.getRowFromPosition(position, active);
+
+       if (row) {
+               return row.getComponent();
+       } else {
+               console.warn("Find Error - No matching row found:", position);
+               return false;
+       }
+};
+
+//delete row from table
+Tabulator.prototype.deleteRow = function (index) {
+       var _this14 = this;
+
+       return new Promise(function (resolve, reject) {
+               var row = _this14.rowManager.findRow(index);
+
+               if (row) {
+                       row.delete().then(function () {
+                               resolve();
+                       }).catch(function (err) {
+                               reject(err);
+                       });
+               } else {
+                       console.warn("Delete Error - No matching row found:", index);
+                       reject("Delete Error - No matching row found");
+               }
+       });
+};
+
+//add row to table
+Tabulator.prototype.addRow = function (data, pos, index) {
+       var _this15 = this;
+
+       return new Promise(function (resolve, reject) {
+               if (typeof data === "string") {
+                       data = JSON.parse(data);
+               }
+
+               _this15.rowManager.addRows(data, pos, index).then(function (rows) {
+                       //recalc column calculations if present
+                       if (_this15.modExists("columnCalcs")) {
+                               _this15.modules.columnCalcs.recalc(_this15.rowManager.activeRows);
+                       }
+
+                       resolve(rows[0].getComponent());
+               });
+       });
+};
+
+//update a row if it exitsts otherwise create it
+Tabulator.prototype.updateOrAddRow = function (index, data) {
+       var _this16 = this;
+
+       return new Promise(function (resolve, reject) {
+               var row = _this16.rowManager.findRow(index);
+
+               if (typeof data === "string") {
+                       data = JSON.parse(data);
+               }
+
+               if (row) {
+                       row.updateData(data).then(function () {
+                               //recalc column calculations if present
+                               if (_this16.modExists("columnCalcs")) {
+                                       _this16.modules.columnCalcs.recalc(_this16.rowManager.activeRows);
+                               }
+
+                               resolve(row.getComponent());
+                       }).catch(function (err) {
+                               reject(err);
+                       });
+               } else {
+                       row = _this16.rowManager.addRows(data).then(function (rows) {
+                               //recalc column calculations if present
+                               if (_this16.modExists("columnCalcs")) {
+                                       _this16.modules.columnCalcs.recalc(_this16.rowManager.activeRows);
+                               }
+
+                               resolve(rows[0].getComponent());
+                       }).catch(function (err) {
+                               reject(err);
+                       });
+               }
+       });
+};
+
+//update row data
+Tabulator.prototype.updateRow = function (index, data) {
+       var _this17 = this;
+
+       return new Promise(function (resolve, reject) {
+               var row = _this17.rowManager.findRow(index);
+
+               if (typeof data === "string") {
+                       data = JSON.parse(data);
+               }
+
+               if (row) {
+                       row.updateData(data).then(function () {
+                               resolve(row.getComponent());
+                       }).catch(function (err) {
+                               reject(err);
+                       });
+               } else {
+                       console.warn("Update Error - No matching row found:", index);
+                       reject("Update Error - No matching row found");
+               }
+       });
+};
+
+//scroll to row in DOM
+Tabulator.prototype.scrollToRow = function (index, position, ifVisible) {
+       var _this18 = this;
+
+       return new Promise(function (resolve, reject) {
+               var row = _this18.rowManager.findRow(index);
+
+               if (row) {
+                       _this18.rowManager.scrollToRow(row, position, ifVisible).then(function () {
+                               resolve();
+                       }).catch(function (err) {
+                               reject(err);
+                       });
+               } else {
+                       console.warn("Scroll Error - No matching row found:", index);
+                       reject("Scroll Error - No matching row found");
+               }
+       });
+};
+
+Tabulator.prototype.moveRow = function (from, to, after) {
+       var fromRow = this.rowManager.findRow(from);
+
+       if (fromRow) {
+               fromRow.moveToRow(to, after);
+       } else {
+               console.warn("Move Error - No matching row found:", from);
+       }
+};
+
+Tabulator.prototype.getRows = function (active) {
+       return this.rowManager.getComponents(active);
+};
+
+//get position of row in table
+Tabulator.prototype.getRowPosition = function (index, active) {
+       var row = this.rowManager.findRow(index);
+
+       if (row) {
+               return this.rowManager.getRowPosition(row, active);
+       } else {
+               console.warn("Position Error - No matching row found:", index);
+               return false;
+       }
+};
+
+//copy table data to clipboard
+Tabulator.prototype.copyToClipboard = function (selector, selectorParams, formatter, formatterParams) {
+       if (this.modExists("clipboard", true)) {
+               this.modules.clipboard.copy(selector, selectorParams, formatter, formatterParams);
+       }
+};
+
+/////////////// Column Functions  ///////////////
+
+Tabulator.prototype.setColumns = function (definition) {
+       this.columnManager.setColumns(definition);
+};
+
+Tabulator.prototype.getColumns = function (structured) {
+       return this.columnManager.getComponents(structured);
+};
+
+Tabulator.prototype.getColumn = function (field) {
+       var col = this.columnManager.findColumn(field);
+
+       if (col) {
+               return col.getComponent();
+       } else {
+               console.warn("Find Error - No matching column found:", field);
+               return false;
+       }
+};
+
+Tabulator.prototype.getColumnDefinitions = function () {
+       return this.columnManager.getDefinitionTree();
+};
+
+Tabulator.prototype.getColumnLayout = function () {
+       if (this.modExists("persistence", true)) {
+               return this.modules.persistence.parseColumns(this.columnManager.getColumns());
+       }
+};
+
+Tabulator.prototype.setColumnLayout = function (layout) {
+       if (this.modExists("persistence", true)) {
+               this.columnManager.setColumns(this.modules.persistence.mergeDefinition(this.options.columns, layout));
+               return true;
+       }
+       return false;
+};
+
+Tabulator.prototype.showColumn = function (field) {
+       var column = this.columnManager.findColumn(field);
+
+       if (column) {
+               column.show();
+
+               if (this.options.responsiveLayout && this.modExists("responsiveLayout", true)) {
+                       this.modules.responsiveLayout.update();
+               }
+       } else {
+               console.warn("Column Show Error - No matching column found:", field);
+               return false;
+       }
+};
+
+Tabulator.prototype.hideColumn = function (field) {
+       var column = this.columnManager.findColumn(field);
+
+       if (column) {
+               column.hide();
+
+               if (this.options.responsiveLayout && this.modExists("responsiveLayout", true)) {
+                       this.modules.responsiveLayout.update();
+               }
+       } else {
+               console.warn("Column Hide Error - No matching column found:", field);
+               return false;
+       }
+};
+
+Tabulator.prototype.toggleColumn = function (field) {
+       var column = this.columnManager.findColumn(field);
+
+       if (column) {
+               if (column.visible) {
+                       column.hide();
+               } else {
+                       column.show();
+               }
+       } else {
+               console.warn("Column Visibility Toggle Error - No matching column found:", field);
+               return false;
+       }
+};
+
+Tabulator.prototype.addColumn = function (definition, before, field) {
+       var column = this.columnManager.findColumn(field);
+
+       this.columnManager.addColumn(definition, before, column);
+};
+
+Tabulator.prototype.deleteColumn = function (field) {
+       var column = this.columnManager.findColumn(field);
+
+       if (column) {
+               column.delete();
+       } else {
+               console.warn("Column Delete Error - No matching column found:", field);
+               return false;
+       }
+};
+
+Tabulator.prototype.moveColumn = function (from, to, after) {
+       var fromColumn = this.columnManager.findColumn(from);
+       var toColumn = this.columnManager.findColumn(to);
+
+       if (fromColumn) {
+               if (toColumn) {
+                       this.columnManager.moveColumn(fromColumn, toColumn, after);
+               } else {
+                       console.warn("Move Error - No matching column found:", toColumn);
+               }
+       } else {
+               console.warn("Move Error - No matching column found:", from);
+       }
+};
+
+//scroll to column in DOM
+Tabulator.prototype.scrollToColumn = function (field, position, ifVisible) {
+       var _this19 = this;
+
+       return new Promise(function (resolve, reject) {
+               var column = _this19.columnManager.findColumn(field);
+
+               if (column) {
+                       _this19.columnManager.scrollToColumn(column, position, ifVisible).then(function () {
+                               resolve();
+                       }).catch(function (err) {
+                               reject(err);
+                       });
+               } else {
+                       console.warn("Scroll Error - No matching column found:", field);
+                       reject("Scroll Error - No matching column found");
+               }
+       });
+};
+
+//////////// Localization Functions  ////////////
+Tabulator.prototype.setLocale = function (locale) {
+       this.modules.localize.setLocale(locale);
+};
+
+Tabulator.prototype.getLocale = function () {
+       return this.modules.localize.getLocale();
+};
+
+Tabulator.prototype.getLang = function (locale) {
+       return this.modules.localize.getLang(locale);
+};
+
+//////////// General Public Functions ////////////
+
+//redraw list without updating data
+Tabulator.prototype.redraw = function (force) {
+       this.columnManager.redraw(force);
+       this.rowManager.redraw(force);
+};
+
+Tabulator.prototype.setHeight = function (height) {
+
+       if (this.rowManager.renderMode !== "classic") {
+               this.options.height = isNaN(height) ? height : height + "px";
+               this.element.style.height = this.options.height;
+               this.rowManager.redraw();
+       } else {
+               console.warn("setHeight function is not available in classic render mode");
+       }
+};
+
+///////////////////// Sorting ////////////////////
+
+//trigger sort
+Tabulator.prototype.setSort = function (sortList, dir) {
+       if (this.modExists("sort", true)) {
+               this.modules.sort.setSort(sortList, dir);
+               this.rowManager.sorterRefresh();
+       }
+};
+
+Tabulator.prototype.getSorters = function () {
+       if (this.modExists("sort", true)) {
+               return this.modules.sort.getSort();
+       }
+};
+
+Tabulator.prototype.clearSort = function () {
+       if (this.modExists("sort", true)) {
+               this.modules.sort.clear();
+               this.rowManager.sorterRefresh();
+       }
+};
+
+///////////////////// Filtering ////////////////////
+
+//set standard filters
+Tabulator.prototype.setFilter = function (field, type, value) {
+       if (this.modExists("filter", true)) {
+               this.modules.filter.setFilter(field, type, value);
+               this.rowManager.filterRefresh();
+       }
+};
+
+//add filter to array
+Tabulator.prototype.addFilter = function (field, type, value) {
+       if (this.modExists("filter", true)) {
+               this.modules.filter.addFilter(field, type, value);
+               this.rowManager.filterRefresh();
+       }
+};
+
+//get all filters
+Tabulator.prototype.getFilters = function (all) {
+       if (this.modExists("filter", true)) {
+               return this.modules.filter.getFilters(all);
+       }
+};
+
+Tabulator.prototype.setHeaderFilterFocus = function (field) {
+       if (this.modExists("filter", true)) {
+               var column = this.columnManager.findColumn(field);
+
+               if (column) {
+                       this.modules.filter.setHeaderFilterFocus(column);
+               } else {
+                       console.warn("Column Filter Focus Error - No matching column found:", field);
+                       return false;
+               }
+       }
+};
+
+Tabulator.prototype.setHeaderFilterValue = function (field, value) {
+       if (this.modExists("filter", true)) {
+               var column = this.columnManager.findColumn(field);
+
+               if (column) {
+                       this.modules.filter.setHeaderFilterValue(column, value);
+               } else {
+                       console.warn("Column Filter Error - No matching column found:", field);
+                       return false;
+               }
+       }
+};
+
+Tabulator.prototype.getHeaderFilters = function () {
+       if (this.modExists("filter", true)) {
+               return this.modules.filter.getHeaderFilters();
+       }
+};
+
+//remove filter from array
+Tabulator.prototype.removeFilter = function (field, type, value) {
+       if (this.modExists("filter", true)) {
+               this.modules.filter.removeFilter(field, type, value);
+               this.rowManager.filterRefresh();
+       }
+};
+
+//clear filters
+Tabulator.prototype.clearFilter = function (all) {
+       if (this.modExists("filter", true)) {
+               this.modules.filter.clearFilter(all);
+               this.rowManager.filterRefresh();
+       }
+};
+
+//clear header filters
+Tabulator.prototype.clearHeaderFilter = function () {
+       if (this.modExists("filter", true)) {
+               this.modules.filter.clearHeaderFilter();
+               this.rowManager.filterRefresh();
+       }
+};
+
+///////////////////// Filtering ////////////////////
+Tabulator.prototype.selectRow = function (rows) {
+       if (this.modExists("selectRow", true)) {
+               this.modules.selectRow.selectRows(rows);
+       }
+};
+
+Tabulator.prototype.deselectRow = function (rows) {
+       if (this.modExists("selectRow", true)) {
+               this.modules.selectRow.deselectRows(rows);
+       }
+};
+
+Tabulator.prototype.toggleSelectRow = function (row) {
+       if (this.modExists("selectRow", true)) {
+               this.modules.selectRow.toggleRow(row);
+       }
+};
+
+Tabulator.prototype.getSelectedRows = function () {
+       if (this.modExists("selectRow", true)) {
+               return this.modules.selectRow.getSelectedRows();
+       }
+};
+
+Tabulator.prototype.getSelectedData = function () {
+       if (this.modExists("selectRow", true)) {
+               return this.modules.selectRow.getSelectedData();
+       }
+};
+
+//////////// Pagination Functions  ////////////
+
+Tabulator.prototype.setMaxPage = function (max) {
+       if (this.options.pagination && this.modExists("page")) {
+               this.modules.page.setMaxPage(max);
+       } else {
+               return false;
+       }
+};
+
+Tabulator.prototype.setPage = function (page) {
+       if (this.options.pagination && this.modExists("page")) {
+               return this.modules.page.setPage(page);
+       } else {
+               return new Promise(function (resolve, reject) {
+                       reject();
+               });
+       }
+};
+
+Tabulator.prototype.setPageToRow = function (row) {
+       var _this20 = this;
+
+       return new Promise(function (resolve, reject) {
+               if (_this20.options.pagination && _this20.modExists("page")) {
+                       row = _this20.rowManager.findRow(row);
+
+                       if (row) {
+                               _this20.modules.page.setPageToRow(row).then(function () {
+                                       resolve();
+                               }).catch(function () {
+                                       reject();
+                               });
+                       } else {
+                               reject();
+                       }
+               } else {
+                       reject();
+               }
+       });
+};
+
+Tabulator.prototype.setPageSize = function (size) {
+       if (this.options.pagination && this.modExists("page")) {
+               this.modules.page.setPageSize(size);
+               this.modules.page.setPage(1).then(function () {}).catch(function () {});
+       } else {
+               return false;
+       }
+};
+
+Tabulator.prototype.getPageSize = function () {
+       if (this.options.pagination && this.modExists("page", true)) {
+               return this.modules.page.getPageSize();
+       }
+};
+
+Tabulator.prototype.previousPage = function () {
+       if (this.options.pagination && this.modExists("page")) {
+               this.modules.page.previousPage();
+       } else {
+               return false;
+       }
+};
+
+Tabulator.prototype.nextPage = function () {
+       if (this.options.pagination && this.modExists("page")) {
+               this.modules.page.nextPage();
+       } else {
+               return false;
+       }
+};
+
+Tabulator.prototype.getPage = function () {
+       if (this.options.pagination && this.modExists("page")) {
+               return this.modules.page.getPage();
+       } else {
+               return false;
+       }
+};
+
+Tabulator.prototype.getPageMax = function () {
+       if (this.options.pagination && this.modExists("page")) {
+               return this.modules.page.getPageMax();
+       } else {
+               return false;
+       }
+};
+
+///////////////// Grouping Functions ///////////////
+
+Tabulator.prototype.setGroupBy = function (groups) {
+       if (this.modExists("groupRows", true)) {
+               this.options.groupBy = groups;
+               this.modules.groupRows.initialize();
+               this.rowManager.refreshActiveData("display");
+       } else {
+               return false;
+       }
+};
+
+Tabulator.prototype.setGroupStartOpen = function (values) {
+       if (this.modExists("groupRows", true)) {
+               this.options.groupStartOpen = values;
+               this.modules.groupRows.initialize();
+               if (this.options.groupBy) {
+                       this.rowManager.refreshActiveData("group");
+               } else {
+                       console.warn("Grouping Update - cant refresh view, no groups have been set");
+               }
+       } else {
+               return false;
+       }
+};
+
+Tabulator.prototype.setGroupHeader = function (values) {
+       if (this.modExists("groupRows", true)) {
+               this.options.groupHeader = values;
+               this.modules.groupRows.initialize();
+               if (this.options.groupBy) {
+                       this.rowManager.refreshActiveData("group");
+               } else {
+                       console.warn("Grouping Update - cant refresh view, no groups have been set");
+               }
+       } else {
+               return false;
+       }
+};
+
+Tabulator.prototype.getGroups = function (values) {
+       if (this.modExists("groupRows", true)) {
+               return this.modules.groupRows.getGroups(true);
+       } else {
+               return false;
+       }
+};
+
+// get grouped table data in the same format as getData()
+Tabulator.prototype.getGroupedData = function () {
+       if (this.modExists("groupRows", true)) {
+               return this.options.groupBy ? this.modules.groupRows.getGroupedData() : this.getData();
+       }
+};
+
+///////////////// Column Calculation Functions ///////////////
+Tabulator.prototype.getCalcResults = function () {
+       if (this.modExists("columnCalcs", true)) {
+               return this.modules.columnCalcs.getResults();
+       } else {
+               return false;
+       }
+};
+
+/////////////// Navigation Management //////////////
+
+Tabulator.prototype.navigatePrev = function () {
+       var cell = false;
+
+       if (this.modExists("edit", true)) {
+               cell = this.modules.edit.currentCell;
+
+               if (cell) {
+                       return cell.nav().prev();
+               }
+       }
+
+       return false;
+};
+
+Tabulator.prototype.navigateNext = function () {
+       var cell = false;
+
+       if (this.modExists("edit", true)) {
+               cell = this.modules.edit.currentCell;
+
+               if (cell) {
+                       return cell.nav().next();
+               }
+       }
+
+       return false;
+};
+
+Tabulator.prototype.navigateLeft = function () {
+       var cell = false;
+
+       if (this.modExists("edit", true)) {
+               cell = this.modules.edit.currentCell;
+
+               if (cell) {
+                       e.preventDefault();
+                       return cell.nav().left();
+               }
+       }
+
+       return false;
+};
+
+Tabulator.prototype.navigateRight = function () {
+       var cell = false;
+
+       if (this.modExists("edit", true)) {
+               cell = this.modules.edit.currentCell;
+
+               if (cell) {
+                       e.preventDefault();
+                       return cell.nav().right();
+               }
+       }
+
+       return false;
+};
+
+Tabulator.prototype.navigateUp = function () {
+       var cell = false;
+
+       if (this.modExists("edit", true)) {
+               cell = this.modules.edit.currentCell;
+
+               if (cell) {
+                       e.preventDefault();
+                       return cell.nav().up();
+               }
+       }
+
+       return false;
+};
+
+Tabulator.prototype.navigateDown = function () {
+       var cell = false;
+
+       if (this.modExists("edit", true)) {
+               cell = this.modules.edit.currentCell;
+
+               if (cell) {
+                       e.preventDefault();
+                       return cell.nav().down();
+               }
+       }
+
+       return false;
+};
+
+/////////////// History Management //////////////
+Tabulator.prototype.undo = function () {
+       if (this.options.history && this.modExists("history", true)) {
+               return this.modules.history.undo();
+       } else {
+               return false;
+       }
+};
+
+Tabulator.prototype.redo = function () {
+       if (this.options.history && this.modExists("history", true)) {
+               return this.modules.history.redo();
+       } else {
+               return false;
+       }
+};
+
+Tabulator.prototype.getHistoryUndoSize = function () {
+       if (this.options.history && this.modExists("history", true)) {
+               return this.modules.history.getHistoryUndoSize();
+       } else {
+               return false;
+       }
+};
+
+Tabulator.prototype.getHistoryRedoSize = function () {
+       if (this.options.history && this.modExists("history", true)) {
+               return this.modules.history.getHistoryRedoSize();
+       } else {
+               return false;
+       }
+};
+
+/////////////// Download Management //////////////
+
+Tabulator.prototype.download = function (type, filename, options) {
+       if (this.modExists("download", true)) {
+               this.modules.download.download(type, filename, options);
+       }
+};
+
+Tabulator.prototype.downloadToTab = function (type, filename, options) {
+       if (this.modExists("download", true)) {
+               this.modules.download.download(type, filename, options, true);
+       }
+};
+
+/////////// Inter Table Communications ///////////
+
+Tabulator.prototype.tableComms = function (table, module, action, data) {
+       this.modules.comms.receive(table, module, action, data);
+};
+
+////////////// Extension Management //////////////
+
+//object to hold module
+Tabulator.prototype.moduleBindings = {};
+
+//extend module
+Tabulator.prototype.extendModule = function (name, property, values) {
+
+       if (Tabulator.prototype.moduleBindings[name]) {
+               var source = Tabulator.prototype.moduleBindings[name].prototype[property];
+
+               if (source) {
+                       if ((typeof values === 'undefined' ? 'undefined' : _typeof(values)) == "object") {
+                               for (var key in values) {
+                                       source[key] = values[key];
+                               }
+                       } else {
+                               console.warn("Module Error - Invalid value type, it must be an object");
+                       }
+               } else {
+                       console.warn("Module Error - property does not exist:", property);
+               }
+       } else {
+               console.warn("Module Error - module does not exist:", name);
+       }
+};
+
+//add module to tabulator
+Tabulator.prototype.registerModule = function (name, module) {
+       var self = this;
+       Tabulator.prototype.moduleBindings[name] = module;
+};
+
+//ensure that module are bound to instantiated function
+Tabulator.prototype.bindModules = function () {
+       this.modules = {};
+
+       for (var name in Tabulator.prototype.moduleBindings) {
+               this.modules[name] = new Tabulator.prototype.moduleBindings[name](this);
+       }
+};
+
+//Check for module
+Tabulator.prototype.modExists = function (plugin, required) {
+       if (this.modules[plugin]) {
+               return true;
+       } else {
+               if (required) {
+                       console.error("Tabulator Module Not Installed: " + plugin);
+               }
+               return false;
+       }
+};
+
+Tabulator.prototype.helpers = {
+
+       elVisible: function elVisible(el) {
+               return !(el.offsetWidth <= 0 && el.offsetHeight <= 0);
+       },
+
+       elOffset: function elOffset(el) {
+               var box = el.getBoundingClientRect();
+
+               return {
+                       top: box.top + window.pageYOffset - document.documentElement.clientTop,
+                       left: box.left + window.pageXOffset - document.documentElement.clientLeft
+               };
+       },
+
+       deepClone: function deepClone(obj) {
+               var clone = Array.isArray(obj) ? [] : {};
+
+               for (var i in obj) {
+                       if (obj[i] != null && _typeof(obj[i]) === "object") {
+                               if (obj[i] instanceof Date) {
+                                       clone[i] = new Date(obj[i]);
+                               } else {
+                                       clone[i] = this.deepClone(obj[i]);
+                               }
+                       } else {
+                               clone[i] = obj[i];
+                       }
+               }
+               return clone;
+       }
+};
+
+Tabulator.prototype.comms = {
+       tables: [],
+       register: function register(table) {
+               Tabulator.prototype.comms.tables.push(table);
+       },
+       deregister: function deregister(table) {
+               var index = Tabulator.prototype.comms.tables.indexOf(table);
+
+               if (index > -1) {
+                       Tabulator.prototype.comms.tables.splice(index, 1);
+               }
+       },
+       lookupTable: function lookupTable(query) {
+               var results = [],
+                   matches,
+                   match;
+
+               if (typeof query === "string") {
+                       matches = document.querySelectorAll(query);
+
+                       if (matches.length) {
+                               for (var i = 0; i < matches.length; i++) {
+                                       match = Tabulator.prototype.comms.matchElement(matches[i]);
+
+                                       if (match) {
+                                               results.push(match);
+                                       }
+                               }
+                       }
+               } else if (typeof HTMLElement !== "undefined" && query instanceof HTMLElement || query instanceof Tabulator) {
+                       match = Tabulator.prototype.comms.matchElement(query);
+
+                       if (match) {
+                               results.push(match);
+                       }
+               } else if (Array.isArray(query)) {
+                       query.forEach(function (item) {
+                               results = results.concat(Tabulator.prototype.comms.lookupTable(item));
+                       });
+               } else {
+                       console.warn("Table Connection Error - Invalid Selector", query);
+               }
+
+               return results;
+       },
+       matchElement: function matchElement(element) {
+               return Tabulator.prototype.comms.tables.find(function (table) {
+                       return element instanceof Tabulator ? table === element : table.element === element;
+               });
+       }
+};
+
+var Layout = function Layout(table) {
+
+       this.table = table;
+
+       this.mode = null;
+};
+
+//initialize layout system
+
+Layout.prototype.initialize = function (layout) {
+
+       if (this.modes[layout]) {
+
+               this.mode = layout;
+       } else {
+
+               console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : " + layout);
+
+               this.mode = 'fitData';
+       }
+
+       this.table.element.setAttribute("tabulator-layout", this.mode);
+};
+
+Layout.prototype.getMode = function () {
+
+       return this.mode;
+};
+
+//trigger table layout
+
+Layout.prototype.layout = function () {
+
+       this.modes[this.mode].call(this, this.table.columnManager.columnsByIndex);
+};
+
+//layout render functions
+
+Layout.prototype.modes = {
+
+       //resize columns to fit data the contain
+
+       "fitData": function fitData(columns) {
+
+               columns.forEach(function (column) {
+
+                       column.reinitializeWidth();
+               });
+
+               if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+                       this.table.modules.responsiveLayout.update();
+               }
+       },
+
+       //resize columns to fit data the contain
+
+       "fitDataFill": function fitDataFill(columns) {
+
+               columns.forEach(function (column) {
+
+                       column.reinitializeWidth();
+               });
+
+               if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+                       this.table.modules.responsiveLayout.update();
+               }
+       },
+
+       //resize columns to fit
+
+       "fitColumns": function fitColumns(columns) {
+
+               var self = this;
+
+               var totalWidth = self.table.element.clientWidth; //table element width
+
+               var fixedWidth = 0; //total width of columns with a defined width
+
+               var flexWidth = 0; //total width available to flexible columns
+
+               var flexGrowUnits = 0; //total number of widthGrow blocks accross all columns
+
+               var flexColWidth = 0; //desired width of flexible columns
+
+               var flexColumns = []; //array of flexible width columns
+
+               var fixedShrinkColumns = []; //array of fixed width columns that can shrink
+
+               var flexShrinkUnits = 0; //total number of widthShrink blocks accross all columns
+
+               var overflowWidth = 0; //horizontal overflow width
+
+               var gapFill = 0; //number of pixels to be added to final column to close and half pixel gaps
+
+
+               function calcWidth(width) {
+
+                       var colWidth;
+
+                       if (typeof width == "string") {
+
+                               if (width.indexOf("%") > -1) {
+
+                                       colWidth = totalWidth / 100 * parseInt(width);
+                               } else {
+
+                                       colWidth = parseInt(width);
+                               }
+                       } else {
+
+                               colWidth = width;
+                       }
+
+                       return colWidth;
+               }
+
+               //ensure columns resize to take up the correct amount of space
+
+               function scaleColumns(columns, freeSpace, colWidth, shrinkCols) {
+
+                       var oversizeCols = [],
+                           oversizeSpace = 0,
+                           remainingSpace = 0,
+                           nextColWidth = 0,
+                           gap = 0,
+                           changeUnits = 0,
+                           undersizeCols = [];
+
+                       function calcGrow(col) {
+
+                               return colWidth * (col.column.definition.widthGrow || 1);
+                       }
+
+                       function calcShrink(col) {
+
+                               return calcWidth(col.width) - colWidth * (col.column.definition.widthShrink || 0);
+                       }
+
+                       columns.forEach(function (col, i) {
+
+                               var width = shrinkCols ? calcShrink(col) : calcGrow(col);
+
+                               if (col.column.minWidth >= width) {
+
+                                       oversizeCols.push(col);
+                               } else {
+
+                                       undersizeCols.push(col);
+
+                                       changeUnits += shrinkCols ? col.column.definition.widthShrink || 1 : col.column.definition.widthGrow || 1;
+                               }
+                       });
+
+                       if (oversizeCols.length) {
+
+                               oversizeCols.forEach(function (col) {
+
+                                       oversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;
+
+                                       col.width = col.column.minWidth;
+                               });
+
+                               remainingSpace = freeSpace - oversizeSpace;
+
+                               nextColWidth = changeUnits ? Math.floor(remainingSpace / changeUnits) : remainingSpace;
+
+                               gap = remainingSpace - nextColWidth * changeUnits;
+
+                               gap += scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);
+                       } else {
+
+                               gap = changeUnits ? freeSpace - Math.floor(freeSpace / changeUnits) * changeUnits : freeSpace;
+
+                               undersizeCols.forEach(function (column) {
+
+                                       column.width = shrinkCols ? calcShrink(column) : calcGrow(column);
+                               });
+                       }
+
+                       return gap;
+               }
+
+               if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+                       this.table.modules.responsiveLayout.update();
+               }
+
+               //adjust for vertical scrollbar if present
+
+               if (this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight) {
+
+                       totalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;
+               }
+
+               columns.forEach(function (column) {
+
+                       var width, minWidth, colWidth;
+
+                       if (column.visible) {
+
+                               width = column.definition.width;
+
+                               minWidth = parseInt(column.minWidth);
+
+                               if (width) {
+
+                                       colWidth = calcWidth(width);
+
+                                       fixedWidth += colWidth > minWidth ? colWidth : minWidth;
+
+                                       if (column.definition.widthShrink) {
+
+                                               fixedShrinkColumns.push({
+
+                                                       column: column,
+
+                                                       width: colWidth > minWidth ? colWidth : minWidth
+
+                                               });
+
+                                               flexShrinkUnits += column.definition.widthShrink;
+                                       }
+                               } else {
+
+                                       flexColumns.push({
+
+                                               column: column,
+
+                                               width: 0
+
+                                       });
+
+                                       flexGrowUnits += column.definition.widthGrow || 1;
+                               }
+                       }
+               });
+
+               //calculate available space
+
+               flexWidth = totalWidth - fixedWidth;
+
+               //calculate correct column size
+
+               flexColWidth = Math.floor(flexWidth / flexGrowUnits);
+
+               //generate column widths
+
+               var gapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);
+
+               //increase width of last column to account for rounding errors
+
+               if (flexColumns.length && gapFill > 0) {
+
+                       flexColumns[flexColumns.length - 1].width += +gapFill;
+               }
+
+               //caculate space for columns to be shrunk into
+
+               flexColumns.forEach(function (col) {
+
+                       flexWidth -= col.width;
+               });
+
+               overflowWidth = Math.abs(gapFill) + flexWidth;
+
+               //shrink oversize columns if there is no available space
+
+               if (overflowWidth > 0 && flexShrinkUnits) {
+
+                       gapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);
+               }
+
+               //decrease width of last column to account for rounding errors
+
+               if (fixedShrinkColumns.length) {
+
+                       fixedShrinkColumns[fixedShrinkColumns.length - 1].width -= gapFill;
+               }
+
+               flexColumns.forEach(function (col) {
+
+                       col.column.setWidth(col.width);
+               });
+
+               fixedShrinkColumns.forEach(function (col) {
+
+                       col.column.setWidth(col.width);
+               });
+       }
+
+};
+
+Tabulator.prototype.registerModule("layout", Layout);
+var Localize = function Localize(table) {
+       this.table = table; //hold Tabulator object
+       this.locale = "default"; //current locale
+       this.lang = false; //current language
+       this.bindings = {}; //update events to call when locale is changed
+};
+
+//set header placehoder
+Localize.prototype.setHeaderFilterPlaceholder = function (placeholder) {
+       this.langs.default.headerFilters.default = placeholder;
+};
+
+//set header filter placeholder by column
+Localize.prototype.setHeaderFilterColumnPlaceholder = function (column, placeholder) {
+       this.langs.default.headerFilters.columns[column] = placeholder;
+
+       if (this.lang && !this.lang.headerFilters.columns[column]) {
+               this.lang.headerFilters.columns[column] = placeholder;
+       }
+};
+
+//setup a lang description object
+Localize.prototype.installLang = function (locale, lang) {
+       if (this.langs[locale]) {
+               this._setLangProp(this.langs[locale], lang);
+       } else {
+               this.langs[locale] = lang;
+       }
+};
+
+Localize.prototype._setLangProp = function (lang, values) {
+       for (var key in values) {
+               if (lang[key] && _typeof(lang[key]) == "object") {
+                       this._setLangProp(lang[key], values[key]);
+               } else {
+                       lang[key] = values[key];
+               }
+       }
+};
+
+//set current locale
+Localize.prototype.setLocale = function (desiredLocale) {
+       var self = this;
+
+       desiredLocale = desiredLocale || "default";
+
+       //fill in any matching languge values
+       function traverseLang(trans, path) {
+               for (var prop in trans) {
+
+                       if (_typeof(trans[prop]) == "object") {
+                               if (!path[prop]) {
+                                       path[prop] = {};
+                               }
+                               traverseLang(trans[prop], path[prop]);
+                       } else {
+                               path[prop] = trans[prop];
+                       }
+               }
+       }
+
+       //determing correct locale to load
+       if (desiredLocale === true && navigator.language) {
+               //get local from system
+               desiredLocale = navigator.language.toLowerCase();
+       }
+
+       if (desiredLocale) {
+
+               //if locale is not set, check for matching top level locale else use default
+               if (!self.langs[desiredLocale]) {
+                       var prefix = desiredLocale.split("-")[0];
+
+                       if (self.langs[prefix]) {
+                               console.warn("Localization Error - Exact matching locale not found, using closest match: ", desiredLocale, prefix);
+                               desiredLocale = prefix;
+                       } else {
+                               console.warn("Localization Error - Matching locale not found, using default: ", desiredLocale);
+                               desiredLocale = "default";
+                       }
+               }
+       }
+
+       self.locale = desiredLocale;
+
+       //load default lang template
+       self.lang = Tabulator.prototype.helpers.deepClone(self.langs.default || {});
+
+       if (desiredLocale != "default") {
+               traverseLang(self.langs[desiredLocale], self.lang);
+       }
+
+       self.table.options.localized.call(self.table, self.locale, self.lang);
+
+       self._executeBindings();
+};
+
+//get current locale
+Localize.prototype.getLocale = function (locale) {
+       return self.locale;
+};
+
+//get lang object for given local or current if none provided
+Localize.prototype.getLang = function (locale) {
+       return locale ? this.langs[locale] : this.lang;
+};
+
+//get text for current locale
+Localize.prototype.getText = function (path, value) {
+       var path = value ? path + "|" + value : path,
+           pathArray = path.split("|"),
+           text = this._getLangElement(pathArray, this.locale);
+
+       // if(text === false){
+       //      console.warn("Localization Error - Matching localized text not found for given path: ", path);
+       // }
+
+       return text || "";
+};
+
+//traverse langs object and find localized copy
+Localize.prototype._getLangElement = function (path, locale) {
+       var self = this;
+       var root = self.lang;
+
+       path.forEach(function (level) {
+               var rootPath;
+
+               if (root) {
+                       rootPath = root[level];
+
+                       if (typeof rootPath != "undefined") {
+                               root = rootPath;
+                       } else {
+                               root = false;
+                       }
+               }
+       });
+
+       return root;
+};
+
+//set update binding
+Localize.prototype.bind = function (path, callback) {
+       if (!this.bindings[path]) {
+               this.bindings[path] = [];
+       }
+
+       this.bindings[path].push(callback);
+
+       callback(this.getText(path), this.lang);
+};
+
+//itterate through bindings and trigger updates
+Localize.prototype._executeBindings = function () {
+       var self = this;
+
+       var _loop = function _loop(path) {
+               self.bindings[path].forEach(function (binding) {
+                       binding(self.getText(path), self.lang);
+               });
+       };
+
+       for (var path in self.bindings) {
+               _loop(path);
+       }
+};
+
+//Localized text listings
+Localize.prototype.langs = {
+       "default": { //hold default locale text
+               "groups": {
+                       "item": "item",
+                       "items": "items"
+               },
+               "columns": {},
+               "ajax": {
+                       "loading": "Loading",
+                       "error": "Error"
+               },
+               "pagination": {
+                       "page_size": "Page Size",
+                       "first": "First",
+                       "first_title": "First Page",
+                       "last": "Last",
+                       "last_title": "Last Page",
+                       "prev": "Prev",
+                       "prev_title": "Prev Page",
+                       "next": "Next",
+                       "next_title": "Next Page"
+               },
+               "headerFilters": {
+                       "default": "filter column...",
+                       "columns": {}
+               }
+       }
+};
+
+Tabulator.prototype.registerModule("localize", Localize);
+var Comms = function Comms(table) {
+       this.table = table;
+};
+
+Comms.prototype.getConnections = function (selectors) {
+       var self = this,
+           connections = [],
+           connection;
+
+       connection = Tabulator.prototype.comms.lookupTable(selectors);
+
+       connection.forEach(function (con) {
+               if (self.table !== con) {
+                       connections.push(con);
+               }
+       });
+
+       return connections;
+};
+
+Comms.prototype.send = function (selectors, module, action, data) {
+       var self = this,
+           connections = this.getConnections(selectors);
+
+       connections.forEach(function (connection) {
+               connection.tableComms(self.table.element, module, action, data);
+       });
+
+       if (!connections.length && selectors) {
+               console.warn("Table Connection Error - No tables matching selector found", selectors);
+       }
+};
+
+Comms.prototype.receive = function (table, module, action, data) {
+       if (this.table.modExists(module)) {
+               return this.table.modules[module].commsReceived(table, action, data);
+       } else {
+               console.warn("Inter-table Comms Error - no such module:", module);
+       }
+};
+
+Tabulator.prototype.registerModule("comms", Comms);
\ No newline at end of file
diff --git a/backoffice/vendors/tabulator/js.old/tabulator_core.min.js b/backoffice/vendors/tabulator/js.old/tabulator_core.min.js
new file mode 100644 (file)
index 0000000..d62262c
--- /dev/null
@@ -0,0 +1,5 @@
+/* Tabulator v4.4.3 (c) Oliver Folkerd */
+"use strict";var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};Array.prototype.findIndex||Object.defineProperty(Array.prototype,"findIndex",{value:function(t){if(null==this)throw new TypeError('"this" is null or not defined');var e=Object(this),o=e.length>>>0;if("function"!=typeof t)throw new TypeError("predicate must be a function");for(var i=arguments[1],n=0;n<o;){var l=e[n];if(t.call(i,l,n,e))return n;n++}return-1}}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(t){if(null==this)throw new TypeError('"this" is null or not defined');var e=Object(this),o=e.length>>>0;if("function"!=typeof t)throw new TypeError("predicate must be a function");for(var i=arguments[1],n=0;n<o;){var l=e[n];if(t.call(i,l,n,e))return l;n++}}});var ColumnManager=function(t){this.table=t,this.blockHozScrollEvent=!1,this.headersElement=this.createHeadersElement(),this.element=this.createHeaderElement(),this.rowManager=null,this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.scrollLeft=0,this.element.insertBefore(this.headersElement,this.element.firstChild)};ColumnManager.prototype.createHeadersElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-headers"),t},ColumnManager.prototype.createHeaderElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-header"),this.table.options.headerVisible||t.classList.add("tabulator-header-hidden"),t},ColumnManager.prototype.initialize=function(){},ColumnManager.prototype.setRowManager=function(t){this.rowManager=t},ColumnManager.prototype.getElement=function(){return this.element},ColumnManager.prototype.getHeadersElement=function(){return this.headersElement},ColumnManager.prototype.scrollHorizontal=function(t){var e=0,o=this.element.scrollWidth-this.table.element.clientWidth;this.element.scrollLeft=t,t>o?(e=t-o,this.element.style.marginLeft=-e+"px"):this.element.style.marginLeft=0,this.scrollLeft=t,this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.scrollHorizontal()},ColumnManager.prototype.generateColumnsFromRowData=function(t){var e,o,i=[];if(t&&t.length){e=t[0];for(var n in e){var l={field:n,title:n},s=e[n];switch(void 0===s?"undefined":_typeof(s)){case"undefined":o="string";break;case"boolean":o="boolean";break;case"object":o=Array.isArray(s)?"array":"string";break;default:o=isNaN(s)||""===s?s.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)?"alphanum":"string":"number"}l.sorter=o,i.push(l)}this.table.options.columns=i,this.setColumns(this.table.options.columns)}},ColumnManager.prototype.setColumns=function(t,e){for(var o=this;o.headersElement.firstChild;)o.headersElement.removeChild(o.headersElement.firstChild);o.columns=[],o.columnsByIndex=[],o.columnsByField={},o.table.modExists("frozenColumns")&&o.table.modules.frozenColumns.reset(),t.forEach(function(t,e){o._addColumn(t)}),o._reIndexColumns(),o.table.options.responsiveLayout&&o.table.modExists("responsiveLayout",!0)&&o.table.modules.responsiveLayout.initialize(),o.redraw(!0)},ColumnManager.prototype._addColumn=function(t,e,o){var i=new Column(t,this),n=i.getElement(),l=o?this.findColumnIndex(o):o;if(o&&l>-1){var s=this.columns.indexOf(o.getTopColumn()),a=o.getElement();e?(this.columns.splice(s,0,i),a.parentNode.insertBefore(n,a)):(this.columns.splice(s+1,0,i),a.parentNode.insertBefore(n,a.nextSibling))}else e?(this.columns.unshift(i),this.headersElement.insertBefore(i.getElement(),this.headersElement.firstChild)):(this.columns.push(i),this.headersElement.appendChild(i.getElement()));return i},ColumnManager.prototype.registerColumnField=function(t){t.definition.field&&(this.columnsByField[t.definition.field]=t)},ColumnManager.prototype.registerColumnPosition=function(t){this.columnsByIndex.push(t)},ColumnManager.prototype._reIndexColumns=function(){this.columnsByIndex=[],this.columns.forEach(function(t){t.reRegisterPosition()})},ColumnManager.prototype._verticalAlignHeaders=function(){var t=this,e=0;t.columns.forEach(function(t){var o;t.clearVerticalAlign(),(o=t.getHeight())>e&&(e=o)}),t.columns.forEach(function(o){o.verticalAlign(t.table.options.columnVertAlign,e)}),t.rowManager.adjustTableSize()},ColumnManager.prototype.findColumn=function(t){var e=this;if("object"!=(void 0===t?"undefined":_typeof(t)))return this.columnsByField[t]||!1;if(t instanceof Column)return t;if(t instanceof ColumnComponent)return t._getSelf()||!1;if("undefined"!=typeof HTMLElement&&t instanceof HTMLElement){return e.columns.find(function(e){return e.element===t})||!1}return!1},ColumnManager.prototype.getColumnByField=function(t){return this.columnsByField[t]},ColumnManager.prototype.getColumnsByFieldRoot=function(t){var e=this,o=[];return Object.keys(this.columnsByField).forEach(function(i){i.split(".")[0]===t&&o.push(e.columnsByField[i])}),o},ColumnManager.prototype.getColumnByIndex=function(t){return this.columnsByIndex[t]},ColumnManager.prototype.getFirstVisibileColumn=function(t){var t=this.columnsByIndex.findIndex(function(t){return t.visible});return t>-1&&this.columnsByIndex[t]},ColumnManager.prototype.getColumns=function(){return this.columns},ColumnManager.prototype.findColumnIndex=function(t){return this.columnsByIndex.findIndex(function(e){return t===e})},ColumnManager.prototype.getRealColumns=function(){return this.columnsByIndex},ColumnManager.prototype.traverse=function(t){this.columnsByIndex.forEach(function(e,o){t(e,o)})},ColumnManager.prototype.getDefinitions=function(t){var e=this,o=[];return e.columnsByIndex.forEach(function(e){(!t||t&&e.visible)&&o.push(e.getDefinition())}),o},ColumnManager.prototype.getDefinitionTree=function(){var t=this,e=[];return t.columns.forEach(function(t){e.push(t.getDefinition(!0))}),e},ColumnManager.prototype.getComponents=function(t){var e=this,o=[];return(t?e.columns:e.columnsByIndex).forEach(function(t){o.push(t.getComponent())}),o},ColumnManager.prototype.getWidth=function(){var t=0;return this.columnsByIndex.forEach(function(e){e.visible&&(t+=e.getWidth())}),t},ColumnManager.prototype.moveColumn=function(t,e,o){this.moveColumnActual(t,e,o),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),e.element.parentNode.insertBefore(t.element,e.element),o&&e.element.parentNode.insertBefore(e.element,t.element),this._verticalAlignHeaders(),this.table.rowManager.reinitialize()},ColumnManager.prototype.moveColumnActual=function(t,e,o){this._moveColumnInArray(this.columns,t,e,o),this._moveColumnInArray(this.columnsByIndex,t,e,o,!0),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.options.columnMoved&&this.table.options.columnMoved.call(this.table,t.getComponent(),this.table.columnManager.getComponents()),this.table.options.persistentLayout&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("columns")},ColumnManager.prototype._moveColumnInArray=function(t,e,o,i,n){var l,s=t.indexOf(e);s>-1&&(t.splice(s,1),l=t.indexOf(o),l>-1?i&&(l+=1):l=s,t.splice(l,0,e),n&&this.table.rowManager.rows.forEach(function(t){if(t.cells.length){var e=t.cells.splice(s,1)[0];t.cells.splice(l,0,e)}}))},ColumnManager.prototype.scrollToColumn=function(t,e,o){var i=this,n=0,l=0,s=0,a=t.getElement();return new Promise(function(r,u){if(void 0===e&&(e=i.table.options.scrollToColumnPosition),void 0===o&&(o=i.table.options.scrollToColumnIfVisible),t.visible){switch(e){case"middle":case"center":s=-i.element.clientWidth/2;break;case"right":s=a.clientWidth-i.headersElement.clientWidth}if(!o&&(l=a.offsetLeft)>0&&l+a.offsetWidth<i.element.clientWidth)return!1;n=a.offsetLeft+i.element.scrollLeft+s,n=Math.max(Math.min(n,i.table.rowManager.element.scrollWidth-i.table.rowManager.element.clientWidth),0),i.table.rowManager.scrollHorizontal(n),i.scrollHorizontal(n),r()}else console.warn("Scroll Error - Column not visible"),u("Scroll Error - Column not visible")})},ColumnManager.prototype.generateCells=function(t){var e=this,o=[];return e.columnsByIndex.forEach(function(e){o.push(e.generateCell(t))}),o},ColumnManager.prototype.getFlexBaseWidth=function(){var t=this,e=t.table.element.clientWidth,o=0;return t.rowManager.element.scrollHeight>t.rowManager.element.clientHeight&&(e-=t.rowManager.element.offsetWidth-t.rowManager.element.clientWidth),this.columnsByIndex.forEach(function(i){var n,l,s;i.visible&&(n=i.definition.width||0,l=void 0===i.minWidth?t.table.options.columnMinWidth:parseInt(i.minWidth),s="string"==typeof n?n.indexOf("%")>-1?e/100*parseInt(n):parseInt(n):n,o+=s>l?s:l)}),o},ColumnManager.prototype.addColumn=function(t,e,o){var i=this._addColumn(t,e,o);this._reIndexColumns(),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),this.redraw(),"fitColumns"!=this.table.modules.layout.getMode()&&i.reinitializeWidth(),this._verticalAlignHeaders(),this.table.rowManager.reinitialize()},ColumnManager.prototype.deregisterColumn=function(t){var e,o=t.getField();o&&delete this.columnsByField[o],e=this.columnsByIndex.indexOf(t),e>-1&&this.columnsByIndex.splice(e,1),e=this.columns.indexOf(t),e>-1&&this.columns.splice(e,1),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.redraw()},ColumnManager.prototype.redraw=function(t){t&&(Tabulator.prototype.helpers.elVisible(this.element)&&this._verticalAlignHeaders(),this.table.rowManager.resetScroll(),this.table.rowManager.reinitialize()),"fitColumns"==this.table.modules.layout.getMode()?this.table.modules.layout.layout():t?this.table.modules.layout.layout():this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),t&&(this.table.options.persistentLayout&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("columns"),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.redraw()),this.table.footerManager.redraw()};var ColumnComponent=function(t){this._column=t,this.type="ColumnComponent"};ColumnComponent.prototype.getElement=function(){return this._column.getElement()},ColumnComponent.prototype.getDefinition=function(){return this._column.getDefinition()},ColumnComponent.prototype.getField=function(){return this._column.getField()},ColumnComponent.prototype.getCells=function(){var t=[];return this._column.cells.forEach(function(e){t.push(e.getComponent())}),t},ColumnComponent.prototype.getVisibility=function(){return this._column.visible},ColumnComponent.prototype.show=function(){this._column.isGroup?this._column.columns.forEach(function(t){t.show()}):this._column.show()},ColumnComponent.prototype.hide=function(){this._column.isGroup?this._column.columns.forEach(function(t){t.hide()}):this._column.hide()},ColumnComponent.prototype.toggle=function(){this._column.visible?this.hide():this.show()},ColumnComponent.prototype.delete=function(){this._column.delete()},ColumnComponent.prototype.getSubColumns=function(){var t=[];return this._column.columns.length&&this._column.columns.forEach(function(e){t.push(e.getComponent())}),t},ColumnComponent.prototype.getParentColumn=function(){return this._column.parent instanceof Column&&this._column.parent.getComponent()},ColumnComponent.prototype._getSelf=function(){return this._column},ColumnComponent.prototype.scrollTo=function(){return this._column.table.columnManager.scrollToColumn(this._column)},ColumnComponent.prototype.getTable=function(){return this._column.table},ColumnComponent.prototype.headerFilterFocus=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterFocus(this._column)},ColumnComponent.prototype.reloadHeaderFilter=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.reloadHeaderFilter(this._column)},ColumnComponent.prototype.setHeaderFilterValue=function(t){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterValue(this._column,t)},ColumnComponent.prototype.move=function(t,e){var o=this._column.table.columnManager.findColumn(t);o?this._column.table.columnManager.moveColumn(this._column,o,e):console.warn("Move Error - No matching column found:",o)},ColumnComponent.prototype.getNextColumn=function(){var t=this._column.nextColumn();return!!t&&t.getComponent()},ColumnComponent.prototype.getPrevColumn=function(){var t=this._column.prevColumn();return!!t&&t.getComponent()};var Column=function t(e,o){var i=this;this.table=o.table,this.definition=e,this.parent=o,this.type="column",this.columns=[],this.cells=[],this.element=this.createElement(),this.contentElement=!1,this.groupElement=this.createGroupElement(),this.isGroup=!1,this.tooltip=!1,this.hozAlign="",this.field="",this.fieldStructure="",this.getFieldValue="",this.setFieldValue="",this.setField(this.definition.field),this.table.options.invalidOptionWarnings&&this.checkDefinition(),this.modules={},this.cellEvents={cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1},this.width=null,this.widthStyled="",this.minWidth=null,this.minWidthStyled="",this.widthFixed=!1,this.visible=!0,this._mapDepricatedFunctionality(),e.columns?(this.isGroup=!0,e.columns.forEach(function(e,o){var n=new t(e,i);i.attachColumn(n)}),i.checkColumnVisibility()):o.registerColumnField(this),e.rowHandle&&!1!==this.table.options.movableRows&&this.table.modExists("moveRow")&&this.table.modules.moveRow.setHandle(!0),this._buildHeader()};Column.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-col"),t.setAttribute("role","columnheader"),t.setAttribute("aria-sort","none"),t},Column.prototype.createGroupElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-col-group-cols"),t},Column.prototype.checkDefinition=function(){var t=this;Object.keys(this.definition).forEach(function(e){-1===t.defaultOptionList.indexOf(e)&&console.warn("Invalid column definition option in '"+(t.field||t.definition.title)+"' column:",e)})},Column.prototype.setField=function(t){this.field=t,this.fieldStructure=t?this.table.options.nestedFieldSeparator?t.split(this.table.options.nestedFieldSeparator):[t]:[],this.getFieldValue=this.fieldStructure.length>1?this._getNestedData:this._getFlatData,this.setFieldValue=this.fieldStructure.length>1?this._setNesteData:this._setFlatData},Column.prototype.registerColumnPosition=function(t){this.parent.registerColumnPosition(t)},Column.prototype.registerColumnField=function(t){this.parent.registerColumnField(t)},Column.prototype.reRegisterPosition=function(){this.isGroup?this.columns.forEach(function(t){t.reRegisterPosition()}):this.registerColumnPosition(this)},Column.prototype._mapDepricatedFunctionality=function(){void 0!==this.definition.hideInHtml&&(this.definition.htmlOutput=!this.definition.hideInHtml,console.warn("hideInHtml column definition property is deprecated, you should now use htmlOutput"))},Column.prototype.setTooltip=function(){var t=this,e=t.definition,o=e.headerTooltip||!1===e.tooltip?e.headerTooltip:t.table.options.tooltipsHeader;o?!0===o?e.field?t.table.modules.localize.bind("columns|"+e.field,function(o){t.element.setAttribute("title",o||e.title)}):t.element.setAttribute("title",e.title):("function"==typeof o&&!1===(o=o(t.getComponent()))&&(o=""),t.element.setAttribute("title",o)):t.element.setAttribute("title","")},Column.prototype._buildHeader=function(){for(var t=this,e=t.definition;t.element.firstChild;)t.element.removeChild(t.element.firstChild);e.headerVertical&&(t.element.classList.add("tabulator-col-vertical"),"flip"===e.headerVertical&&t.element.classList.add("tabulator-col-vertical-flip")),t.contentElement=t._bindEvents(),t.contentElement=t._buildColumnHeaderContent(),t.element.appendChild(t.contentElement),t.isGroup?t._buildGroupHeader():t._buildColumnHeader(),t.setTooltip(),t.table.options.resizableColumns&&t.table.modExists("resizeColumns")&&t.table.modules.resizeColumns.initializeColumn("header",t,t.element),e.headerFilter&&t.table.modExists("filter")&&t.table.modExists("edit")&&(void 0!==e.headerFilterPlaceholder&&e.field&&t.table.modules.localize.setHeaderFilterColumnPlaceholder(e.field,e.headerFilterPlaceholder),t.table.modules.filter.initializeColumn(t)),t.table.modExists("frozenColumns")&&t.table.modules.frozenColumns.initializeColumn(t),t.table.options.movableColumns&&!t.isGroup&&t.table.modExists("moveColumn")&&t.table.modules.moveColumn.initializeColumn(t),(e.topCalc||e.bottomCalc)&&t.table.modExists("columnCalcs")&&t.table.modules.columnCalcs.initializeColumn(t),t.element.addEventListener("mouseenter",function(e){t.setTooltip()})},Column.prototype._bindEvents=function(){var t,e,o,i=this,n=i.definition;"function"==typeof n.headerClick&&i.element.addEventListener("click",function(t){n.headerClick(t,i.getComponent())}),"function"==typeof n.headerDblClick&&i.element.addEventListener("dblclick",function(t){n.headerDblClick(t,i.getComponent())}),"function"==typeof n.headerContext&&i.element.addEventListener("contextmenu",function(t){n.headerContext(t,i.getComponent())}),"function"==typeof n.headerTap&&(o=!1,i.element.addEventListener("touchstart",function(t){o=!0},{passive:!0}),i.element.addEventListener("touchend",function(t){o&&n.headerTap(t,i.getComponent()),o=!1})),"function"==typeof n.headerDblTap&&(t=null,i.element.addEventListener("touchend",function(e){t?(clearTimeout(t),t=null,n.headerDblTap(e,i.getComponent())):t=setTimeout(function(){clearTimeout(t),t=null},300)})),"function"==typeof n.headerTapHold&&(e=null,i.element.addEventListener("touchstart",function(t){clearTimeout(e),e=setTimeout(function(){clearTimeout(e),e=null,o=!1,n.headerTapHold(t,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(t){clearTimeout(e),e=null})),"function"==typeof n.cellClick&&(i.cellEvents.cellClick=n.cellClick),"function"==typeof n.cellDblClick&&(i.cellEvents.cellDblClick=n.cellDblClick),"function"==typeof n.cellContext&&(i.cellEvents.cellContext=n.cellContext),"function"==typeof n.cellMouseEnter&&(i.cellEvents.cellMouseEnter=n.cellMouseEnter),"function"==typeof n.cellMouseLeave&&(i.cellEvents.cellMouseLeave=n.cellMouseLeave),"function"==typeof n.cellMouseOver&&(i.cellEvents.cellMouseOver=n.cellMouseOver),"function"==typeof n.cellMouseOut&&(i.cellEvents.cellMouseOut=n.cellMouseOut),"function"==typeof n.cellMouseMove&&(i.cellEvents.cellMouseMove=n.cellMouseMove),"function"==typeof n.cellTap&&(i.cellEvents.cellTap=n.cellTap),"function"==typeof n.cellDblTap&&(i.cellEvents.cellDblTap=n.cellDblTap),"function"==typeof n.cellTapHold&&(i.cellEvents.cellTapHold=n.cellTapHold),"function"==typeof n.cellEdited&&(i.cellEvents.cellEdited=n.cellEdited),"function"==typeof n.cellEditing&&(i.cellEvents.cellEditing=n.cellEditing),"function"==typeof n.cellEditCancelled&&(i.cellEvents.cellEditCancelled=n.cellEditCancelled)},Column.prototype._buildColumnHeader=function(){var t=this,e=t.definition,o=t.table;if(o.modExists("sort")&&o.modules.sort.initializeColumn(t,t.contentElement),o.modExists("format")&&o.modules.format.initializeColumn(t),void 0!==e.editor&&o.modExists("edit")&&o.modules.edit.initializeColumn(t),void 0!==e.validator&&o.modExists("validate")&&o.modules.validate.initializeColumn(t),o.modExists("mutator")&&o.modules.mutator.initializeColumn(t),o.modExists("accessor")&&o.modules.accessor.initializeColumn(t),_typeof(o.options.responsiveLayout)&&o.modExists("responsiveLayout")&&o.modules.responsiveLayout.initializeColumn(t),void 0!==e.visible&&(e.visible?t.show(!0):t.hide(!0)),e.cssClass){e.cssClass.split(" ").forEach(function(e){t.element.classList.add(e)})}e.field&&this.element.setAttribute("tabulator-field",e.field),t.setMinWidth(void 0===e.minWidth?t.table.options.columnMinWidth:parseInt(e.minWidth)),t.reinitializeWidth(),t.tooltip=t.definition.tooltip||!1===t.definition.tooltip?t.definition.tooltip:t.table.options.tooltips,t.hozAlign=void 0===t.definition.align?"":t.definition.align},Column.prototype._buildColumnHeaderContent=function(){var t=this,e=(t.definition,t.table,document.createElement("div"));return e.classList.add("tabulator-col-content"),e.appendChild(t._buildColumnHeaderTitle()),e},Column.prototype._buildColumnHeaderTitle=function(){var t=this,e=t.definition,o=t.table,i=document.createElement("div");if(i.classList.add("tabulator-col-title"),e.editableTitle){var n=document.createElement("input");n.classList.add("tabulator-title-editor"),n.addEventListener("click",function(t){t.stopPropagation(),n.focus()}),n.addEventListener("change",function(){e.title=n.value,o.options.columnTitleChanged.call(t.table,t.getComponent())}),i.appendChild(n),e.field?o.modules.localize.bind("columns|"+e.field,function(t){n.value=t||e.title||"&nbsp;"}):n.value=e.title||"&nbsp;"}else e.field?o.modules.localize.bind("columns|"+e.field,function(o){t._formatColumnHeaderTitle(i,o||e.title||"&nbsp;")}):t._formatColumnHeaderTitle(i,e.title||"&nbsp;");return i},Column.prototype._formatColumnHeaderTitle=function(t,e){var o,i,n,l;if(this.definition.titleFormatter&&this.table.modExists("format"))switch(o=this.table.modules.format.getFormatter(this.definition.titleFormatter),l={getValue:function(){return e},getElement:function(){return t}},n=this.definition.titleFormatterParams||{},n="function"==typeof n?n():n,i=o.call(this.table.modules.format,l,n),void 0===i?"undefined":_typeof(i)){case"object":i instanceof Node?t.appendChild(i):(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:",i));break;case"undefined":case"null":t.innerHTML="";break;default:t.innerHTML=i}else t.innerHTML=e},Column.prototype._buildGroupHeader=function(){this.element.classList.add("tabulator-col-group"),this.element.setAttribute("role","columngroup"),this.element.setAttribute("aria-title",this.definition.title),this.element.appendChild(this.groupElement)},Column.prototype._getFlatData=function(t){return t[this.field]},Column.prototype._getNestedData=function(t){for(var e,o=t,i=this.fieldStructure,n=i.length,l=0;l<n&&(o=o[i[l]],e=o,o);l++);return e},Column.prototype._setFlatData=function(t,e){this.field&&(t[this.field]=e)},Column.prototype._setNesteData=function(t,e){for(var o=t,i=this.fieldStructure,n=i.length,l=0;l<n;l++)l==n-1?o[i[l]]=e:(o[i[l]]||(o[i[l]]={}),o=o[i[l]])},Column.prototype.attachColumn=function(t){var e=this;e.groupElement?(e.columns.push(t),e.groupElement.appendChild(t.getElement())):console.warn("Column Warning - Column being attached to another column instead of column group")},Column.prototype.verticalAlign=function(t,e){var o=this.parent.isGroup?this.parent.getGroupElement().clientHeight:e||this.parent.getHeadersElement().clientHeight;this.element.style.height=o+"px",this.isGroup&&(this.groupElement.style.minHeight=o-this.contentElement.offsetHeight+"px"),this.isGroup||"top"===t||(this.element.style.paddingTop="bottom"===t?this.element.clientHeight-this.contentElement.offsetHeight+"px":(this.element.clientHeight-this.contentElement.offsetHeight)/2+"px"),this.columns.forEach(function(e){e.verticalAlign(t)})},Column.prototype.clearVerticalAlign=function(){this.element.style.paddingTop="",this.element.style.height="",this.element.style.minHeight="",this.groupElement.style.minHeight="",this.columns.forEach(function(t){t.clearVerticalAlign()})},Column.prototype.getElement=function(){return this.element},Column.prototype.getGroupElement=function(){return this.groupElement},Column.prototype.getField=function(){return this.field},Column.prototype.getFirstColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[0].getFirstColumn():this},Column.prototype.getLastColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[this.columns.length-1].getLastColumn():this},Column.prototype.getColumns=function(){return this.columns},Column.prototype.getCells=function(){return this.cells},Column.prototype.getTopColumn=function(){return this.parent.isGroup?this.parent.getTopColumn():this},Column.prototype.getDefinition=function(t){var e=[];return this.isGroup&&t&&(this.columns.forEach(function(t){e.push(t.getDefinition(!0))}),this.definition.columns=e),this.definition},Column.prototype.checkColumnVisibility=function(){var t=!1;this.columns.forEach(function(e){e.visible&&(t=!0)}),t?(this.show(),this.parent.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1)):this.hide()},Column.prototype.show=function(t,e){this.visible||(this.visible=!0,this.element.style.display="",this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(t){t.show()}),this.isGroup||null!==this.width||this.reinitializeWidth(),this.table.columnManager._verticalAlignHeaders(),this.table.options.persistentLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.persistence.save("columns"),!e&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),t||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!0),this.parent.isGroup&&this.parent.matchChildWidths())},Column.prototype.hide=function(t,e){this.visible&&(this.visible=!1,this.element.style.display="none",this.table.columnManager._verticalAlignHeaders(),this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(t){t.hide()}),this.table.options.persistentLayout&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("columns"),!e&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),t||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1),this.parent.isGroup&&this.parent.matchChildWidths())},Column.prototype.matchChildWidths=function(){var t=0;this.contentElement&&this.columns.length&&(this.columns.forEach(function(e){e.visible&&(t+=e.getWidth())}),this.contentElement.style.maxWidth=t-1+"px")},Column.prototype.setWidth=function(t){this.widthFixed=!0,this.setWidthActual(t)},Column.prototype.setWidthActual=function(t){isNaN(t)&&(t=Math.floor(this.table.element.clientWidth/100*parseInt(t))),t=Math.max(this.minWidth,t),this.width=t,this.widthStyled=t?t+"px":"",this.element.style.width=this.widthStyled,this.isGroup||this.cells.forEach(function(t){t.setWidth()}),this.parent.isGroup&&this.parent.matchChildWidths(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()},Column.prototype.checkCellHeights=function(){var t=[];this.cells.forEach(function(e){e.row.heightInitialized&&(null!==e.row.getElement().offsetParent?(t.push(e.row),e.row.clearCellHeight()):e.row.heightInitialized=!1)}),t.forEach(function(t){t.calcHeight()}),t.forEach(function(t){t.setCellHeight()})},Column.prototype.getWidth=function(){return this.width},Column.prototype.getHeight=function(){return this.element.offsetHeight},Column.prototype.setMinWidth=function(t){this.minWidth=t,this.minWidthStyled=t?t+"px":"",this.element.style.minWidth=this.minWidthStyled,this.cells.forEach(function(t){t.setMinWidth()})},Column.prototype.delete=function(){this.isGroup&&this.columns.forEach(function(t){t.delete()});for(var t=this.cells.length,e=0;e<t;e++)this.cells[0].delete();this.element.parentNode.removeChild(this.element),this.table.columnManager.deregisterColumn(this)},Column.prototype.generateCell=function(t){var e=this,o=new Cell(e,t);return this.cells.push(o),o},Column.prototype.nextColumn=function(){var t=this.table.columnManager.findColumnIndex(this);return t>-1&&this._nextVisibleColumn(t+1)},Column.prototype._nextVisibleColumn=function(t){var e=this.table.columnManager.getColumnByIndex(t);return!e||e.visible?e:this._nextVisibleColumn(t+1)},Column.prototype.prevColumn=function(){var t=this.table.columnManager.findColumnIndex(this);return t>-1&&this._prevVisibleColumn(t-1)},Column.prototype._prevVisibleColumn=function(t){var e=this.table.columnManager.getColumnByIndex(t);return!e||e.visible?e:this._prevVisibleColumn(t-1)},Column.prototype.reinitializeWidth=function(t){this.widthFixed=!1,void 0===this.definition.width||t||this.setWidth(this.definition.width),this.table.modExists("filter")&&this.table.modules.filter.hideHeaderFilterElements(),this.fitToData(),this.table.modExists("filter")&&this.table.modules.filter.showHeaderFilterElements()},Column.prototype.fitToData=function(){var t=this;this.widthFixed||(this.element.style.width="",t.cells.forEach(function(t){t.clearWidth()}));var e=this.element.offsetWidth;t.width&&this.widthFixed||(t.cells.forEach(function(t){var o=t.getWidth();o>e&&(e=o)}),e&&t.setWidthActual(e+1))},Column.prototype.deleteCell=function(t){var e=this.cells.indexOf(t);e>-1&&this.cells.splice(e,1)},Column.prototype.defaultOptionList=["title","field","columns","visible","align","width","minWidth","widthGrow","widthShrink","resizable","frozen","responsive","tooltip","cssClass","rowHandle","hideInHtml","print","htmlOutput","sorter","sorterParams","formatter","formatterParams","variableHeight","editable","editor","editorParams","validator","mutator","mutatorParams","mutatorData","mutatorDataParams","mutatorEdit","mutatorEditParams","mutatorClipboard","mutatorClipboardParams","accessor","accessorParams","accessorData","accessorDataParams","accessorDownload","accessorDownloadParams","accessorClipboard","accessorClipboardParams","clipboard","download","downloadTitle","topCalc","topCalcParams","topCalcFormatter","topCalcFormatterParams","bottomCalc","bottomCalcParams","bottomCalcFormatter","bottomCalcFormatterParams","cellClick","cellDblClick","cellContext","cellTap","cellDblTap","cellTapHold","cellMouseEnter","cellMouseLeave","cellMouseOver","cellMouseOut","cellMouseMove","cellEditing","cellEdited","cellEditCancelled","headerSort","headerSortStartingDir","headerSortTristate","headerClick","headerDblClick","headerContext","headerTap","headerDblTap","headerTapHold","headerTooltip","headerVertical","editableTitle","titleFormatter","titleFormatterParams","headerFilter","headerFilterPlaceholder","headerFilterParams","headerFilterEmptyCheck","headerFilterFunc","headerFilterFuncParams","headerFilterLiveFilter","print"],Column.prototype.getComponent=function(){return new ColumnComponent(this)};var RowManager=function(t){this.table=t,this.element=this.createHolderElement(),this.tableElement=this.createTableElement(),this.columnManager=null,this.height=0,this.firstRender=!1,this.renderMode="classic",this.rows=[],this.activeRows=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0,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=[]};RowManager.prototype.createHolderElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-tableHolder"),t.setAttribute("tabindex",0),t},
+RowManager.prototype.createTableElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-table"),t},RowManager.prototype.getElement=function(){return this.element},RowManager.prototype.getTableElement=function(){return this.tableElement},RowManager.prototype.getRowPosition=function(t,e){return e?this.activeRows.indexOf(t):this.rows.indexOf(t)},RowManager.prototype.setColumnManager=function(t){this.columnManager=t},RowManager.prototype.initialize=function(){var t=this;t.setRenderMode(),t.element.appendChild(t.tableElement),t.firstRender=!0,t.element.addEventListener("scroll",function(){var e=t.element.scrollLeft;t.scrollLeft!=e&&(t.columnManager.scrollHorizontal(e),t.table.options.groupBy&&t.table.modules.groupRows.scrollHeaders(e),t.table.modExists("columnCalcs")&&t.table.modules.columnCalcs.scrollHorizontal(e)),t.scrollLeft=e}),"virtual"===this.renderMode&&t.element.addEventListener("scroll",function(){var e=t.element.scrollTop,o=t.scrollTop>e;t.scrollTop!=e?(t.scrollTop=e,t.scrollVertical(o),"scroll"==t.table.options.ajaxProgressiveLoad&&t.table.modules.ajax.nextPage(t.element.scrollHeight-t.element.clientHeight-e)):t.scrollTop=e})},RowManager.prototype.findRow=function(t){var e=this;if("object"!=(void 0===t?"undefined":_typeof(t))){if(void 0===t||null===t)return!1;return e.rows.find(function(o){return o.data[e.table.options.index]==t})||!1}if(t instanceof Row)return t;if(t instanceof RowComponent)return t._getSelf()||!1;if("undefined"!=typeof HTMLElement&&t instanceof HTMLElement){return e.rows.find(function(e){return e.element===t})||!1}return!1},RowManager.prototype.getRowFromDataObject=function(t){return this.rows.find(function(e){return e.data===t})||!1},RowManager.prototype.getRowFromPosition=function(t,e){return e?this.activeRows[t]:this.rows[t]},RowManager.prototype.scrollToRow=function(t,e,o){var i,n=this,l=this.getDisplayRows().indexOf(t),s=t.getElement(),a=0;return new Promise(function(t,r){if(l>-1){if(void 0===e&&(e=n.table.options.scrollToRowPosition),void 0===o&&(o=n.table.options.scrollToRowIfVisible),"nearest"===e)switch(n.renderMode){case"classic":i=Tabulator.prototype.helpers.elOffset(s).top,e=Math.abs(n.element.scrollTop-i)>Math.abs(n.element.scrollTop+n.element.clientHeight-i)?"bottom":"top";break;case"virtual":e=Math.abs(n.vDomTop-l)>Math.abs(n.vDomBottom-l)?"bottom":"top"}if(!o&&Tabulator.prototype.helpers.elVisible(s)&&(a=Tabulator.prototype.helpers.elOffset(s).top-Tabulator.prototype.helpers.elOffset(n.element).top)>0&&a<n.element.clientHeight-s.offsetHeight)return!1;switch(n.renderMode){case"classic":n.element.scrollTop=Tabulator.prototype.helpers.elOffset(s).top-Tabulator.prototype.helpers.elOffset(n.element).top+n.element.scrollTop;break;case"virtual":n._virtualRenderFill(l,!0)}switch(e){case"middle":case"center":n.element.scrollHeight-n.element.scrollTop==n.element.clientHeight?n.element.scrollTop=n.element.scrollTop+(s.offsetTop-n.element.scrollTop)-(n.element.scrollHeight-s.offsetTop)/2:n.element.scrollTop=n.element.scrollTop-n.element.clientHeight/2;break;case"bottom":n.element.scrollHeight-n.element.scrollTop==n.element.clientHeight?n.element.scrollTop=n.element.scrollTop-(n.element.scrollHeight-s.offsetTop)+s.offsetHeight:n.element.scrollTop=n.element.scrollTop-n.element.clientHeight+s.offsetHeight}t()}else console.warn("Scroll Error - Row not visible"),r("Scroll Error - Row not visible")})},RowManager.prototype.setData=function(t,e){var o=this,i=this;return new Promise(function(n,l){e&&o.getDisplayRows().length?i.table.options.pagination?i._setDataActual(t,!0):o.reRenderInPosition(function(){i._setDataActual(t)}):(o.table.options.autoColumns&&o.table.columnManager.generateColumnsFromRowData(t),o.resetScroll(),o._setDataActual(t)),n()})},RowManager.prototype._setDataActual=function(t,e){var o=this;o.table.options.dataLoading.call(this.table,t),this._wipeElements(),this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.clear(),Array.isArray(t)?(this.table.modExists("selectRow")&&this.table.modules.selectRow.clearSelectionData(),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchData(t),t.forEach(function(t,e){if(t&&"object"===(void 0===t?"undefined":_typeof(t))){var i=new Row(t,o);o.rows.push(i)}else console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:",t)}),o.table.options.dataLoaded.call(this.table,t),o.refreshActiveData(!1,!1,e)):console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ",void 0===t?"undefined":_typeof(t),"\nData:     ",t)},RowManager.prototype._wipeElements=function(){this.rows.forEach(function(t){t.wipe()}),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.wipe(),this.rows=[]},RowManager.prototype.deleteRow=function(t,e){var o=this.rows.indexOf(t),i=this.activeRows.indexOf(t);i>-1&&this.activeRows.splice(i,1),o>-1&&this.rows.splice(o,1),this.setActiveRows(this.activeRows),this.displayRowIterator(function(e){var o=e.indexOf(t);o>-1&&e.splice(o,1)}),e||this.reRenderInPosition(),this.table.options.rowDeleted.call(this.table,t.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.groupRows.updateGroupRows(!0):this.table.options.pagination&&this.table.modExists("page")?this.refreshActiveData(!1,!1,!0):this.table.options.pagination&&this.table.modExists("page")&&this.refreshActiveData("page")},RowManager.prototype.addRow=function(t,e,o,i){var n=this.addRowActual(t,e,o,i);return this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowAdd",n,{data:t,pos:e,index:o}),n},RowManager.prototype.addRows=function(t,e,o){var i=this,n=this,l=0,s=[];return new Promise(function(a,r){e=i.findAddRowPos(e),Array.isArray(t)||(t=[t]),l=t.length-1,(void 0===o&&e||void 0!==o&&!e)&&t.reverse(),t.forEach(function(t,i){var l=n.addRow(t,e,o,!0);s.push(l)}),i.table.options.groupBy&&i.table.modExists("groupRows")?i.table.modules.groupRows.updateGroupRows(!0):i.table.options.pagination&&i.table.modExists("page")?i.refreshActiveData(!1,!1,!0):i.reRenderInPosition(),i.table.modExists("columnCalcs")&&i.table.modules.columnCalcs.recalc(i.table.rowManager.activeRows),a(s)})},RowManager.prototype.findAddRowPos=function(t){return void 0===t&&(t=this.table.options.addRowPos),"pos"===t&&(t=!0),"bottom"===t&&(t=!1),t},RowManager.prototype.addRowActual=function(t,e,o,i){var n,l=t instanceof Row?t:new Row(t||{},this),s=this.findAddRowPos(e);if(!o&&this.table.options.pagination&&"page"==this.table.options.paginationAddRow&&(n=this.getDisplayRows(),s?n.length?o=n[0]:this.activeRows.length&&(o=this.activeRows[this.activeRows.length-1],s=!1):n.length&&(o=n[n.length-1],s=!(n.length<this.table.modules.page.getPageSize()))),o&&(o=this.findRow(o)),this.table.options.groupBy&&this.table.modExists("groupRows")){this.table.modules.groupRows.assignRowToGroup(l);var a=l.getGroup().rows;a.length>1&&(!o||o&&-1==a.indexOf(o)?s?a[0]!==l&&(o=a[0],this._moveRowInArray(l.getGroup().rows,l,o,!s)):a[a.length-1]!==l&&(o=a[a.length-1],this._moveRowInArray(l.getGroup().rows,l,o,!s)):this._moveRowInArray(l.getGroup().rows,l,o,!s))}if(o){var r=this.rows.indexOf(o),u=this.activeRows.indexOf(o);this.displayRowIterator(function(t){var e=t.indexOf(o);e>-1&&t.splice(s?e:e+1,0,l)}),u>-1&&this.activeRows.splice(s?u:u+1,0,l),r>-1&&this.rows.splice(s?r:r+1,0,l)}else s?(this.displayRowIterator(function(t){t.unshift(l)}),this.activeRows.unshift(l),this.rows.unshift(l)):(this.displayRowIterator(function(t){t.push(l)}),this.activeRows.push(l),this.rows.push(l));return this.setActiveRows(this.activeRows),this.table.options.rowAdded.call(this.table,l.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),i||this.reRenderInPosition(),l},RowManager.prototype.moveRow=function(t,e,o){this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowMove",t,{pos:this.getRowPosition(t),to:e,after:o}),this.moveRowActual(t,e,o),this.table.options.rowMoved.call(this.table,t.getComponent())},RowManager.prototype.moveRowActual=function(t,e,o){var i=this;if(this._moveRowInArray(this.rows,t,e,o),this._moveRowInArray(this.activeRows,t,e,o),this.displayRowIterator(function(n){i._moveRowInArray(n,t,e,o)}),this.table.options.groupBy&&this.table.modExists("groupRows")){var n=e.getGroup(),l=t.getGroup();n===l?this._moveRowInArray(n.rows,t,e,o):(l&&l.removeRow(t),n.insertRow(t,e,o))}},RowManager.prototype._moveRowInArray=function(t,e,o,i){var n,l,s,a;if(e!==o&&(n=t.indexOf(e),n>-1&&(t.splice(n,1),l=t.indexOf(o),l>-1?i?t.splice(l+1,0,e):t.splice(l,0,e):t.splice(n,0,e)),t===this.getDisplayRows())){s=n<l?n:l,a=l>n?l:n+1;for(var r=s;r<=a;r++)t[r]&&this.styleRow(t[r],r)}},RowManager.prototype.clearData=function(){this.setData([])},RowManager.prototype.getRowIndex=function(t){return this.findRowIndex(t,this.rows)},RowManager.prototype.getDisplayRowIndex=function(t){var e=this.getDisplayRows().indexOf(t);return e>-1&&e},RowManager.prototype.nextDisplayRow=function(t,e){var o=this.getDisplayRowIndex(t),i=!1;return!1!==o&&o<this.displayRowsCount-1&&(i=this.getDisplayRows()[o+1]),!i||i instanceof Row&&"row"==i.type?i:this.nextDisplayRow(i,e)},RowManager.prototype.prevDisplayRow=function(t,e){var o=this.getDisplayRowIndex(t),i=!1;return o&&(i=this.getDisplayRows()[o-1]),!i||i instanceof Row&&"row"==i.type?i:this.prevDisplayRow(i,e)},RowManager.prototype.findRowIndex=function(t,e){var o;return!!((t=this.findRow(t))&&(o=e.indexOf(t))>-1)&&o},RowManager.prototype.getData=function(t,e){var o=this,i=[];return(t?o.activeRows:o.rows).forEach(function(t){i.push(t.getData(e||"data"))}),i},RowManager.prototype.getComponents=function(t){var e=this,o=[];return(t?e.activeRows:e.rows).forEach(function(t){o.push(t.getComponent())}),o},RowManager.prototype.getDataCount=function(t){return t?this.activeRows.length:this.rows.length},RowManager.prototype._genRemoteRequest=function(){var t=this,e=t.table,o=e.options,i={};if(e.modExists("page")){if(o.ajaxSorting){var n=t.table.modules.sort.getSort();n.forEach(function(t){delete t.column}),i[t.table.modules.page.paginationDataSentNames.sorters]=n}if(o.ajaxFiltering){var l=t.table.modules.filter.getFilters(!0,!0);i[t.table.modules.page.paginationDataSentNames.filters]=l}t.table.modules.ajax.setParams(i,!0)}e.modules.ajax.sendRequest().then(function(e){t.setData(e)}).catch(function(t){})},RowManager.prototype.filterRefresh=function(){var t=this.table,e=t.options,o=this.scrollLeft;e.ajaxFiltering?"remote"==e.pagination&&t.modExists("page")?(t.modules.page.reset(!0),t.modules.page.setPage(1).then(function(){}).catch(function(){})):e.ajaxProgressiveLoad?t.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData("filter"),this.scrollHorizontal(o)},RowManager.prototype.sorterRefresh=function(t){var e=this.table,o=this.table.options,i=this.scrollLeft;o.ajaxSorting?("remote"==o.pagination||o.progressiveLoad)&&e.modExists("page")?(e.modules.page.reset(!0),e.modules.page.setPage(1).then(function(){}).catch(function(){})):o.ajaxProgressiveLoad?e.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData(t?"filter":"sort"),this.scrollHorizontal(i)},RowManager.prototype.scrollHorizontal=function(t){this.scrollLeft=t,this.element.scrollLeft=t,this.table.options.groupBy&&this.table.modules.groupRows.scrollHeaders(t),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.scrollHorizontal(t)},RowManager.prototype.refreshActiveData=function(t,e,o){var i,n=this,l=this.table;switch(n.table.modExists("edit")&&n.table.modules.edit.cancelEdit(),t||(t="all"),l.options.selectable&&!l.options.selectablePersistence&&l.modExists("selectRow")&&l.modules.selectRow.deselectRows(),t){case"all":case"filter":e?e=!1:l.modExists("filter")?n.setActiveRows(l.modules.filter.filter(n.rows)):n.setActiveRows(n.rows.slice(0));case"sort":e?e=!1:l.modExists("sort")&&l.modules.sort.sort(this.activeRows);case"display":this.resetDisplayRows();case"freeze":e?e=!1:this.table.modExists("frozenRows")&&l.modules.frozenRows.isFrozen()&&(l.modules.frozenRows.getDisplayIndex()||l.modules.frozenRows.setDisplayIndex(this.getNextDisplayIndex()),i=l.modules.frozenRows.getDisplayIndex(),!0!==(i=n.setDisplayRows(l.modules.frozenRows.getRows(this.getDisplayRows(i-1)),i))&&l.modules.frozenRows.setDisplayIndex(i));case"group":e?e=!1:l.options.groupBy&&l.modExists("groupRows")&&(l.modules.groupRows.getDisplayIndex()||l.modules.groupRows.setDisplayIndex(this.getNextDisplayIndex()),i=l.modules.groupRows.getDisplayIndex(),!0!==(i=n.setDisplayRows(l.modules.groupRows.getRows(this.getDisplayRows(i-1)),i))&&l.modules.groupRows.setDisplayIndex(i));case"tree":e?e=!1:l.options.dataTree&&l.modExists("dataTree")&&(l.modules.dataTree.getDisplayIndex()||l.modules.dataTree.setDisplayIndex(this.getNextDisplayIndex()),i=l.modules.dataTree.getDisplayIndex(),!0!==(i=n.setDisplayRows(l.modules.dataTree.getRows(this.getDisplayRows(i-1)),i))&&l.modules.dataTree.setDisplayIndex(i)),l.options.pagination&&l.modExists("page")&&!o&&"local"==l.modules.page.getMode()&&l.modules.page.reset();case"page":e?e=!1:l.options.pagination&&l.modExists("page")&&(l.modules.page.getDisplayIndex()||l.modules.page.setDisplayIndex(this.getNextDisplayIndex()),i=l.modules.page.getDisplayIndex(),"local"==l.modules.page.getMode()&&l.modules.page.setMaxRows(this.getDisplayRows(i-1).length),!0!==(i=n.setDisplayRows(l.modules.page.getRows(this.getDisplayRows(i-1)),i))&&l.modules.page.setDisplayIndex(i))}Tabulator.prototype.helpers.elVisible(n.element)&&(o?n.reRenderInPosition():(n.renderTable(),l.options.layoutColumnsOnNewData&&n.table.columnManager.redraw(!0))),l.modExists("columnCalcs")&&l.modules.columnCalcs.recalc(this.activeRows)},RowManager.prototype.setActiveRows=function(t){this.activeRows=t,this.activeRowsCount=this.activeRows.length},RowManager.prototype.resetDisplayRows=function(){this.displayRows=[],this.displayRows.push(this.activeRows.slice(0)),this.displayRowsCount=this.displayRows[0].length,this.table.modExists("frozenRows")&&this.table.modules.frozenRows.setDisplayIndex(0),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.setDisplayIndex(0),this.table.options.pagination&&this.table.modExists("page")&&this.table.modules.page.setDisplayIndex(0)},RowManager.prototype.getNextDisplayIndex=function(){return this.displayRows.length},RowManager.prototype.setDisplayRows=function(t,e){var o=!0;return e&&void 0!==this.displayRows[e]?(this.displayRows[e]=t,o=!0):(this.displayRows.push(t),o=e=this.displayRows.length-1),e==this.displayRows.length-1&&(this.displayRowsCount=this.displayRows[this.displayRows.length-1].length),o},RowManager.prototype.getDisplayRows=function(t){return void 0===t?this.displayRows.length?this.displayRows[this.displayRows.length-1]:[]:this.displayRows[t]||[]},RowManager.prototype.getVisibleRows=function(t){var e=this.element.scrollTop,o=this.element.clientHeight+e,i=!1,n=0,l=0,s=this.getDisplayRows();if(t){this.getDisplayRows();for(var a=this.vDomTop;a<=this.vDomBottom;a++)if(s[a])if(i){if(!(o-s[a].getElement().offsetTop>=0))break;l=a}else e-s[a].getElement().offsetTop>=0?n=a:i=!0}else n=this.vDomTop,l=this.vDomBottom;return s.slice(n,l+1)},RowManager.prototype.displayRowIterator=function(t){this.displayRows.forEach(t),this.displayRowsCount=this.displayRows[this.displayRows.length-1].length},RowManager.prototype.getRows=function(){return this.rows},RowManager.prototype.reRenderInPosition=function(t){if("virtual"==this.getRenderMode()){for(var e=this.element.scrollTop,o=!1,i=!1,n=this.scrollLeft,l=this.getDisplayRows(),s=this.vDomTop;s<=this.vDomBottom;s++)if(l[s]){var a=e-l[s].getElement().offsetTop;if(!(!1===i||Math.abs(a)<i))break;i=a,o=s}t&&t(),this._virtualRenderFill(!1===o?this.displayRowsCount-1:o,!0,i||0),this.scrollHorizontal(n)}else this.renderTable(),t&&t()},RowManager.prototype.setRenderMode=function(){(this.table.element.clientHeight||this.table.options.height)&&this.table.options.virtualDom?this.renderMode="virtual":this.renderMode="classic"},RowManager.prototype.getRenderMode=function(){return this.renderMode},RowManager.prototype.renderTable=function(){var t=this;switch(t.table.options.renderStarted.call(this.table),t.element.scrollTop=0,t.renderMode){case"classic":t._simpleRender();break;case"virtual":t._virtualRenderFill()}t.firstRender&&(t.displayRowsCount?(t.firstRender=!1,t.table.modules.layout.layout()):t.renderEmptyScroll()),t.table.modExists("frozenColumns")&&t.table.modules.frozenColumns.layout(),t.displayRowsCount||t.table.options.placeholder&&(this.renderMode&&t.table.options.placeholder.setAttribute("tabulator-render-mode",this.renderMode),t.getElement().appendChild(t.table.options.placeholder)),t.table.options.renderComplete.call(this.table)},RowManager.prototype._simpleRender=function(){this._clearVirtualDom(),this.displayRowsCount?this.checkClassicModeGroupHeaderWidth():this.renderEmptyScroll()},RowManager.prototype.checkClassicModeGroupHeaderWidth=function(){var t=this,e=this.tableElement,o=!0;t.getDisplayRows().forEach(function(i,n){t.styleRow(i,n),e.appendChild(i.getElement()),i.initialize(!0),"group"!==i.type&&(o=!1)}),e.style.minWidth=o?t.table.columnManager.getWidth()+"px":""},RowManager.prototype.renderEmptyScroll=function(){this.tableElement.style.minWidth=this.table.columnManager.getWidth()+"px",this.tableElement.style.minHeight="1px",this.tableElement.style.visibility="hidden"},RowManager.prototype._clearVirtualDom=function(){var t=this.tableElement;for(this.table.options.placeholder&&this.table.options.placeholder.parentNode&&this.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);t.firstChild;)t.removeChild(t.firstChild);t.style.paddingTop="",t.style.paddingBottom="",t.style.minWidth="",t.style.minHeight="",t.style.visibility="",this.scrollTop=0,this.scrollLeft=0,this.vDomTop=0,this.vDomBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0},RowManager.prototype.styleRow=function(t,e){var o=t.getElement();e%2?(o.classList.add("tabulator-row-even"),o.classList.remove("tabulator-row-odd")):(o.classList.add("tabulator-row-odd"),o.classList.remove("tabulator-row-even"))},RowManager.prototype._virtualRenderFill=function(t,e,o){var i=this,n=i.tableElement,l=i.element,s=0,a=0,r=0,u=0,c=!0,h=i.getDisplayRows();if(t=t||0,o=o||0,t){for(;n.firstChild;)n.removeChild(n.firstChild);var p=(i.displayRowsCount-t+1)*i.vDomRowHeight;p<i.height&&(t-=Math.ceil((i.height-p)/i.vDomRowHeight))<0&&(t=0),s=Math.min(Math.max(Math.floor(i.vDomWindowBuffer/i.vDomRowHeight),i.vDomWindowMinMarginRows),t),t-=s}else i._clearVirtualDom();if(i.displayRowsCount&&Tabulator.prototype.helpers.elVisible(i.element)){for(i.vDomTop=t,i.vDomBottom=t-1;(a<=i.height+i.vDomWindowBuffer||u<i.vDomWindowMinTotalRows)&&i.vDomBottom<i.displayRowsCount-1;){var d=i.vDomBottom+1,m=h[d],f=0;i.styleRow(m,d),n.appendChild(m.getElement()),m.initialized?m.heightInitialized||m.normalizeHeight(!0):m.initialize(!0),f=m.getHeight(),u<s?r+=f:a+=f,f>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*f),"group"!==m.type&&(c=!1),i.vDomBottom++,u++}t?(i.vDomTopPad=e?i.vDomRowHeight*this.vDomTop+o:i.scrollTop-r,i.vDomBottomPad=i.vDomBottom==i.displayRowsCount-1?0:Math.max(i.vDomScrollHeight-i.vDomTopPad-a-r,0)):(this.vDomTopPad=0,i.vDomRowHeight=Math.floor((a+r)/u),i.vDomBottomPad=i.vDomRowHeight*(i.displayRowsCount-i.vDomBottom-1),i.vDomScrollHeight=r+a+i.vDomBottomPad-i.height),n.style.paddingTop=i.vDomTopPad+"px",n.style.paddingBottom=i.vDomBottomPad+"px",e&&(this.scrollTop=i.vDomTopPad+r+o-(this.element.scrollWidth>this.element.clientWidth?this.element.offsetHeight-this.element.clientHeight:0)),this.scrollTop=Math.min(this.scrollTop,this.element.scrollHeight-this.height),this.element.scrollWidth>this.element.offsetWidth&&e&&(this.scrollTop+=this.element.offsetHeight-this.element.clientHeight),this.vDomScrollPosTop=this.scrollTop,this.vDomScrollPosBottom=this.scrollTop,l.scrollTop=this.scrollTop,n.style.minWidth=c?i.table.columnManager.getWidth()+"px":"",i.table.options.groupBy&&"fitDataFill"!=i.table.modules.layout.getMode()&&i.displayRowsCount==i.table.modules.groupRows.countGroups()&&(i.tableElement.style.minWidth=i.table.columnManager.getWidth())}else this.renderEmptyScroll()},RowManager.prototype.scrollVertical=function(t){var e=this.scrollTop-this.vDomScrollPosTop,o=this.scrollTop-this.vDomScrollPosBottom,i=2*this.vDomWindowBuffer;if(-e>i||o>i){var n=this.scrollLeft;this._virtualRenderFill(Math.floor(this.element.scrollTop/this.element.scrollHeight*this.displayRowsCount)),this.scrollHorizontal(n)}else t?(e<0&&this._addTopRow(-e),o<0&&this.vDomScrollHeight-this.scrollTop>this.vDomWindowBuffer&&this._removeBottomRow(-o)):(e>=0&&this.scrollTop>this.vDomWindowBuffer&&this._removeTopRow(e),o>=0&&this._addBottomRow(o))},RowManager.prototype._addTopRow=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=this.tableElement,i=this.getDisplayRows();if(this.vDomTop){var n=this.vDomTop-1,l=i[n],s=l.getHeight()||this.vDomRowHeight;t>=s&&(this.styleRow(l,n),o.insertBefore(l.getElement(),o.firstChild),l.initialized&&l.heightInitialized||(this.vDomTopNewRows.push(l),l.heightInitialized||l.clearCellHeight()),l.initialize(),this.vDomTopPad-=s,this.vDomTopPad<0&&(this.vDomTopPad=n*this.vDomRowHeight),n||(this.vDomTopPad=0),o.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop-=s,this.vDomTop--),t=-(this.scrollTop-this.vDomScrollPosTop),l.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*l.getHeight()),e<this.vDomMaxRenderChain&&this.vDomTop&&t>=(i[this.vDomTop-1].getHeight()||this.vDomRowHeight)?this._addTopRow(t,e+1):this._quickNormalizeRowHeight(this.vDomTopNewRows)}},RowManager.prototype._removeTopRow=function(t){var e=this.tableElement,o=this.getDisplayRows()[this.vDomTop],i=o.getHeight()||this.vDomRowHeight;if(t>=i){var n=o.getElement();n.parentNode.removeChild(n),this.vDomTopPad+=i,e.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop+=this.vDomTop?i:i+this.vDomWindowBuffer,this.vDomTop++,t=this.scrollTop-this.vDomScrollPosTop,this._removeTopRow(t)}},RowManager.prototype._addBottomRow=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=this.tableElement,i=this.getDisplayRows();if(this.vDomBottom<this.displayRowsCount-1){var n=this.vDomBottom+1,l=i[n],s=l.getHeight()||this.vDomRowHeight;t>=s&&(this.styleRow(l,n),o.appendChild(l.getElement()),l.initialized&&l.heightInitialized||(this.vDomBottomNewRows.push(l),l.heightInitialized||l.clearCellHeight()),l.initialize(),this.vDomBottomPad-=s,(this.vDomBottomPad<0||n==this.displayRowsCount-1)&&(this.vDomBottomPad=0),o.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom+=s,this.vDomBottom++),t=this.scrollTop-this.vDomScrollPosBottom,l.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*l.getHeight()),e<this.vDomMaxRenderChain&&this.vDomBottom<this.displayRowsCount-1&&t>=(i[this.vDomBottom+1].getHeight()||this.vDomRowHeight)?this._addBottomRow(t,e+1):this._quickNormalizeRowHeight(this.vDomBottomNewRows)}},RowManager.prototype._removeBottomRow=function(t){var e=this.tableElement,o=this.getDisplayRows()[this.vDomBottom],i=o.getHeight()||this.vDomRowHeight;if(t>=i){var n=o.getElement();n.parentNode&&n.parentNode.removeChild(n),this.vDomBottomPad+=i,this.vDomBottomPad<0&&(this.vDomBottomPad=0),e.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom-=i,this.vDomBottom--,t=-(this.scrollTop-this.vDomScrollPosBottom),this._removeBottomRow(t)}},RowManager.prototype._quickNormalizeRowHeight=function(t){t.forEach(function(t){t.calcHeight()}),t.forEach(function(t){t.setCellHeight()}),t.length=0},RowManager.prototype.normalizeHeight=function(){this.activeRows.forEach(function(t){t.normalizeHeight()})},RowManager.prototype.adjustTableSize=function(){if("virtual"===this.renderMode){this.height=this.element.clientHeight,this.vDomWindowBuffer=this.table.options.virtualDomBuffer||this.height;var t=this.columnManager.getElement().offsetHeight+(this.table.footerManager&&!this.table.footerManager.external?this.table.footerManager.getElement().offsetHeight:0);this.element.style.minHeight="calc(100% - "+t+"px)",this.element.style.height="calc(100% - "+t+"px)",this.element.style.maxHeight="calc(100% - "+t+"px)"}},RowManager.prototype.reinitialize=function(){this.rows.forEach(function(t){t.reinitialize()})},RowManager.prototype.redraw=function(t){var e=this.scrollLeft;this.adjustTableSize(),this.table.tableWidth=this.table.element.clientWidth,t?this.renderTable():("classic"==this.renderMode?this.table.options.groupBy?this.refreshActiveData("group",!1,!1):this._simpleRender():(this.reRenderInPosition(),this.scrollHorizontal(e)),this.displayRowsCount||this.table.options.placeholder&&this.getElement().appendChild(this.table.options.placeholder))},RowManager.prototype.resetScroll=function(){if(this.element.scrollLeft=0,this.element.scrollTop=0,"ie"===this.table.browser){var t=document.createEvent("Event");t.initEvent("scroll",!1,!0),this.element.dispatchEvent(t)}else this.element.dispatchEvent(new Event("scroll"))};var RowComponent=function(t){this._row=t};RowComponent.prototype.getData=function(t){return this._row.getData(t)},RowComponent.prototype.getElement=function(){return this._row.getElement()},RowComponent.prototype.getCells=function(){var t=[];return this._row.getCells().forEach(function(e){t.push(e.getComponent())}),t},RowComponent.prototype.getCell=function(t){var e=this._row.getCell(t);return!!e&&e.getComponent()},RowComponent.prototype.getIndex=function(){return this._row.getData("data")[this._row.table.options.index]},RowComponent.prototype.getPosition=function(t){return this._row.table.rowManager.getRowPosition(this._row,t)},RowComponent.prototype.delete=function(){return this._row.delete()},RowComponent.prototype.scrollTo=function(){return this._row.table.rowManager.scrollToRow(this._row)},RowComponent.prototype.pageTo=function(){if(this._row.table.modExists("page",!0))return this._row.table.modules.page.setPageToRow(this._row)},RowComponent.prototype.move=function(t,e){this._row.moveToRow(t,e)},RowComponent.prototype.update=function(t){return this._row.updateData(t)},RowComponent.prototype.normalizeHeight=function(){this._row.normalizeHeight(!0)},RowComponent.prototype.select=function(){this._row.table.modules.selectRow.selectRows(this._row)},RowComponent.prototype.deselect=function(){this._row.table.modules.selectRow.deselectRows(this._row)},RowComponent.prototype.toggleSelect=function(){this._row.table.modules.selectRow.toggleRow(this._row)},RowComponent.prototype.isSelected=function(){return this._row.table.modules.selectRow.isRowSelected(this._row)},RowComponent.prototype._getSelf=function(){return this._row},RowComponent.prototype.freeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.freezeRow(this._row)},RowComponent.prototype.unfreeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.unfreezeRow(this._row)},RowComponent.prototype.treeCollapse=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.collapseRow(this._row)},RowComponent.prototype.treeExpand=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.expandRow(this._row)},RowComponent.prototype.treeToggle=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.toggleRow(this._row)},RowComponent.prototype.getTreeParent=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeParent(this._row)},RowComponent.prototype.getTreeChildren=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeChildren(this._row)},RowComponent.prototype.reformat=function(){return this._row.reinitialize()},RowComponent.prototype.getGroup=function(){return this._row.getGroup().getComponent()},RowComponent.prototype.getTable=function(){return this._row.table},RowComponent.prototype.getNextRow=function(){var t=this._row.nextRow();return t?t.getComponent():t},RowComponent.prototype.getPrevRow=function(){var t=this._row.prevRow();return t?t.getComponent():t};var Row=function(t,e){this.table=e.table,this.parent=e,this.data={},this.type="row",this.element=this.createElement(),this.modules={},this.cells=[],this.height=0,this.heightStyled="",this.manualHeight=!1,this.outerHeight=0,this.initialized=!1,this.heightInitialized=!1,this.setData(t),this.generateElement()};Row.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-row"),t.setAttribute("role","row"),t},Row.prototype.getElement=function(){return this.element},Row.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},Row.prototype.generateElement=function(){var t,e,o,i=this;!1!==i.table.options.selectable&&i.table.modExists("selectRow")&&i.table.modules.selectRow.initializeRow(this),!1!==i.table.options.movableRows&&i.table.modExists("moveRow")&&i.table.modules.moveRow.initializeRow(this),!1!==i.table.options.dataTree&&i.table.modExists("dataTree")&&i.table.modules.dataTree.initializeRow(this),i.table.options.rowClick&&i.element.addEventListener("click",function(t){i.table.options.rowClick(t,i.getComponent())}),i.table.options.rowDblClick&&i.element.addEventListener("dblclick",function(t){i.table.options.rowDblClick(t,i.getComponent())}),i.table.options.rowContext&&i.element.addEventListener("contextmenu",function(t){i.table.options.rowContext(t,i.getComponent())}),i.table.options.rowMouseEnter&&i.element.addEventListener("mouseenter",function(t){i.table.options.rowMouseEnter(t,i.getComponent())}),i.table.options.rowMouseLeave&&i.element.addEventListener("mouseleave",function(t){i.table.options.rowMouseLeave(t,i.getComponent())}),i.table.options.rowMouseOver&&i.element.addEventListener("mouseover",function(t){i.table.options.rowMouseOver(t,i.getComponent())}),i.table.options.rowMouseOut&&i.element.addEventListener("mouseout",function(t){i.table.options.rowMouseOut(t,i.getComponent())}),i.table.options.rowMouseMove&&i.element.addEventListener("mousemove",function(t){i.table.options.rowMouseMove(t,i.getComponent())}),i.table.options.rowTap&&(o=!1,i.element.addEventListener("touchstart",function(t){o=!0},{passive:!0}),i.element.addEventListener("touchend",function(t){o&&i.table.options.rowTap(t,i.getComponent()),o=!1})),i.table.options.rowDblTap&&(t=null,i.element.addEventListener("touchend",function(e){t?(clearTimeout(t),t=null,i.table.options.rowDblTap(e,i.getComponent())):t=setTimeout(function(){clearTimeout(t),t=null},300)})),i.table.options.rowTapHold&&(e=null,i.element.addEventListener("touchstart",function(t){clearTimeout(e),e=setTimeout(function(){clearTimeout(e),e=null,o=!1,i.table.options.rowTapHold(t,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(t){clearTimeout(e),e=null}))},Row.prototype.generateCells=function(){this.cells=this.table.columnManager.generateCells(this)},Row.prototype.initialize=function(t){var e=this;if(!e.initialized||t){for(e.deleteCells();e.element.firstChild;)e.element.removeChild(e.element.firstChild);this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutRow(this),this.generateCells(),e.cells.forEach(function(t){e.element.appendChild(t.getElement()),t.cellRendered()}),t&&e.normalizeHeight(),e.table.options.dataTree&&e.table.modExists("dataTree")&&e.table.modules.dataTree.layoutRow(this),
+"collapse"===e.table.options.responsiveLayout&&e.table.modExists("responsiveLayout")&&e.table.modules.responsiveLayout.layoutRow(this),e.table.options.rowFormatter&&e.table.options.rowFormatter(e.getComponent()),e.table.options.resizableRows&&e.table.modExists("resizeRows")&&e.table.modules.resizeRows.initializeRow(e),e.initialized=!0}},Row.prototype.reinitializeHeight=function(){this.heightInitialized=!1,null!==this.element.offsetParent&&this.normalizeHeight(!0)},Row.prototype.reinitialize=function(){this.initialized=!1,this.heightInitialized=!1,this.manualHeight||(this.height=0,this.heightStyled=""),null!==this.element.offsetParent&&this.initialize(!0)},Row.prototype.calcHeight=function(t){var e=0,o=this.table.options.resizableRows?this.element.clientHeight:0;this.cells.forEach(function(t){var o=t.getHeight();o>e&&(e=o)}),this.height=t?Math.max(e,o):this.manualHeight?this.height:Math.max(e,o),this.heightStyled=this.height?this.height+"px":"",this.outerHeight=this.element.offsetHeight},Row.prototype.setCellHeight=function(){this.cells.forEach(function(t){t.setHeight()}),this.heightInitialized=!0},Row.prototype.clearCellHeight=function(){this.cells.forEach(function(t){t.clearHeight()})},Row.prototype.normalizeHeight=function(t){t&&this.clearCellHeight(),this.calcHeight(t),this.setCellHeight()},Row.prototype.setHeight=function(t,e){(this.height!=t||e)&&(this.manualHeight=!0,this.height=t,this.heightStyled=t?t+"px":"",this.setCellHeight(),this.outerHeight=this.element.offsetHeight)},Row.prototype.getHeight=function(){return this.outerHeight},Row.prototype.getWidth=function(){return this.element.offsetWidth},Row.prototype.deleteCell=function(t){var e=this.cells.indexOf(t);e>-1&&this.cells.splice(e,1)},Row.prototype.setData=function(t){this.table.modExists("mutator")&&(t=this.table.modules.mutator.transformRow(t,"data")),this.data=t,this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchRow(this)},Row.prototype.updateData=function(t){var e=this,o=this,i=Tabulator.prototype.helpers.elVisible(this.element);return new Promise(function(n,l){"string"==typeof t&&(t=JSON.parse(t)),e.table.options.reactiveData&&e.table.modExists("reactiveData",!0)&&e.table.modules.reactiveData.block(),o.table.modExists("mutator")&&(t=o.table.modules.mutator.transformRow(t,"data",!0));for(var s in t)o.data[s]=t[s];e.table.options.reactiveData&&e.table.modExists("reactiveData",!0)&&e.table.modules.reactiveData.unblock();for(var s in t){e.table.columnManager.getColumnsByFieldRoot(s).forEach(function(o){var n=e.getCell(o.getField());if(n){var l=o.getFieldValue(t);n.getValue()!=l&&(n.setValueProcessData(l),i&&n.cellRendered())}})}i?(o.normalizeHeight(),o.table.options.rowFormatter&&o.table.options.rowFormatter(o.getComponent())):(e.initialized=!1,e.height=0,e.heightStyled=""),!1!==o.table.options.dataTree&&o.table.modExists("dataTree")&&e.table.modules.dataTree.redrawNeeded(t)&&(e.table.modules.dataTree.initializeRow(e),e.table.modules.dataTree.layoutRow(e),e.table.rowManager.refreshActiveData("tree",!1,!0)),o.table.options.rowUpdated.call(e.table,o.getComponent()),n()})},Row.prototype.getData=function(t){var e=this;return t?e.table.modExists("accessor")?e.table.modules.accessor.transformRow(e.data,t):void 0:this.data},Row.prototype.getCell=function(t){return t=this.table.columnManager.findColumn(t),this.cells.find(function(e){return e.column===t})},Row.prototype.getCellIndex=function(t){return this.cells.findIndex(function(e){return e===t})},Row.prototype.findNextEditableCell=function(t){var e=!1;if(t<this.cells.length-1)for(var o=t+1;o<this.cells.length;o++){var i=this.cells[o];if(i.column.modules.edit&&Tabulator.prototype.helpers.elVisible(i.getElement())){var n=!0;if("function"==typeof i.column.modules.edit.check&&(n=i.column.modules.edit.check(i.getComponent())),n){e=i;break}}}return e},Row.prototype.findPrevEditableCell=function(t){var e=!1;if(t>0)for(var o=t-1;o>=0;o--){var i=this.cells[o],n=!0;if(i.column.modules.edit&&Tabulator.prototype.helpers.elVisible(i.getElement())&&("function"==typeof i.column.modules.edit.check&&(n=i.column.modules.edit.check(i.getComponent())),n)){e=i;break}}return e},Row.prototype.getCells=function(){return this.cells},Row.prototype.nextRow=function(){return this.table.rowManager.nextDisplayRow(this,!0)||!1},Row.prototype.prevRow=function(){return this.table.rowManager.prevDisplayRow(this,!0)||!1},Row.prototype.moveToRow=function(t,e){var o=this.table.rowManager.findRow(t);o?(this.table.rowManager.moveRowActual(this,o,!e),this.table.rowManager.refreshActiveData("display",!1,!0)):console.warn("Move Error - No matching row found:",t)},Row.prototype.delete=function(){var t=this;return new Promise(function(e,o){var i,n;t.table.options.history&&t.table.modExists("history")&&(t.table.options.groupBy&&t.table.modExists("groupRows")?(n=t.getGroup().rows,(i=n.indexOf(t))&&(i=n[i-1])):(i=t.table.rowManager.getRowIndex(t))&&(i=t.table.rowManager.rows[i-1]),t.table.modules.history.action("rowDelete",t,{data:t.getData(),pos:!i,index:i})),t.deleteActual(),e()})},Row.prototype.deleteActual=function(t){this.table.rowManager.getRowIndex(this);this.table.modExists("selectRow")&&this.table.modules.selectRow._deselectRow(this,!0),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0),this.modules.group&&this.modules.group.removeRow(this),this.table.rowManager.deleteRow(this,t),this.deleteCells(),this.initialized=!1,this.heightInitialized=!1,this.table.modExists("columnCalcs")&&(this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.columnCalcs.recalcRowGroup(this):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows))},Row.prototype.deleteCells=function(){for(var t=this.cells.length,e=0;e<t;e++)this.cells[0].delete()},Row.prototype.wipe=function(){for(this.deleteCells();this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element=!1,this.modules={},this.element.parentNode&&this.element.parentNode.removeChild(this.element)},Row.prototype.getGroup=function(){return this.modules.group||!1},Row.prototype.getComponent=function(){return new RowComponent(this)};var CellComponent=function(t){this._cell=t};CellComponent.prototype.getValue=function(){return this._cell.getValue()},CellComponent.prototype.getOldValue=function(){return this._cell.getOldValue()},CellComponent.prototype.getElement=function(){return this._cell.getElement()},CellComponent.prototype.getRow=function(){return this._cell.row.getComponent()},CellComponent.prototype.getData=function(){return this._cell.row.getData()},CellComponent.prototype.getField=function(){return this._cell.column.getField()},CellComponent.prototype.getColumn=function(){return this._cell.column.getComponent()},CellComponent.prototype.setValue=function(t,e){void 0===e&&(e=!0),this._cell.setValue(t,e)},CellComponent.prototype.restoreOldValue=function(){this._cell.setValueActual(this._cell.getOldValue())},CellComponent.prototype.edit=function(t){return this._cell.edit(t)},CellComponent.prototype.cancelEdit=function(){this._cell.cancelEdit()},CellComponent.prototype.nav=function(){return this._cell.nav()},CellComponent.prototype.checkHeight=function(){this._cell.checkHeight()},CellComponent.prototype.getTable=function(){return this._cell.table},CellComponent.prototype._getSelf=function(){return this._cell};var Cell=function(t,e){this.table=t.table,this.column=t,this.row=e,this.element=null,this.value=null,this.oldValue=null,this.height=null,this.width=null,this.minWidth=null,this.build()};Cell.prototype.build=function(){this.generateElement(),this.setWidth(),this._configureCell(),this.setValueActual(this.column.getFieldValue(this.row.data))},Cell.prototype.generateElement=function(){this.element=document.createElement("div"),this.element.className="tabulator-cell",this.element.setAttribute("role","gridcell"),this.element=this.element},Cell.prototype._configureCell=function(){var t=this,e=t.column.cellEvents,o=t.element,i=this.column.getField();if(o.style.textAlign=t.column.hozAlign,i&&o.setAttribute("tabulator-field",i),t.column.definition.cssClass){t.column.definition.cssClass.split(" ").forEach(function(t){o.classList.add(t)})}"hover"===this.table.options.tooltipGenerationMode&&o.addEventListener("mouseenter",function(e){t._generateTooltip()}),t._bindClickEvents(e),t._bindTouchEvents(e),t._bindMouseEvents(e),t.column.modules.edit&&t.table.modules.edit.bindEditor(t),t.column.definition.rowHandle&&!1!==t.table.options.movableRows&&t.table.modExists("moveRow")&&t.table.modules.moveRow.initializeCell(t),t.column.visible||t.hide()},Cell.prototype._bindClickEvents=function(t){var e=this,o=e.element;(t.cellClick||e.table.options.cellClick)&&o.addEventListener("click",function(o){var i=e.getComponent();t.cellClick&&t.cellClick.call(e.table,o,i),e.table.options.cellClick&&e.table.options.cellClick.call(e.table,o,i)}),t.cellDblClick||this.table.options.cellDblClick?o.addEventListener("dblclick",function(o){var i=e.getComponent();t.cellDblClick&&t.cellDblClick.call(e.table,o,i),e.table.options.cellDblClick&&e.table.options.cellDblClick.call(e.table,o,i)}):o.addEventListener("dblclick",function(t){t.preventDefault();try{if(document.selection){var o=document.body.createTextRange();o.moveToElementText(e.element),o.select()}else if(window.getSelection){var o=document.createRange();o.selectNode(e.element),window.getSelection().removeAllRanges(),window.getSelection().addRange(o)}}catch(t){}}),(t.cellContext||this.table.options.cellContext)&&o.addEventListener("contextmenu",function(o){var i=e.getComponent();t.cellContext&&t.cellContext.call(e.table,o,i),e.table.options.cellContext&&e.table.options.cellContext.call(e.table,o,i)})},Cell.prototype._bindMouseEvents=function(t){var e=this,o=e.element;(t.cellMouseEnter||e.table.options.cellMouseEnter)&&o.addEventListener("mouseenter",function(o){var i=e.getComponent();t.cellMouseEnter&&t.cellMouseEnter.call(e.table,o,i),e.table.options.cellMouseEnter&&e.table.options.cellMouseEnter.call(e.table,o,i)}),(t.cellMouseLeave||e.table.options.cellMouseLeave)&&o.addEventListener("mouseleave",function(o){var i=e.getComponent();t.cellMouseLeave&&t.cellMouseLeave.call(e.table,o,i),e.table.options.cellMouseLeave&&e.table.options.cellMouseLeave.call(e.table,o,i)}),(t.cellMouseOver||e.table.options.cellMouseOver)&&o.addEventListener("mouseover",function(o){var i=e.getComponent();t.cellMouseOver&&t.cellMouseOver.call(e.table,o,i),e.table.options.cellMouseOver&&e.table.options.cellMouseOver.call(e.table,o,i)}),(t.cellMouseOut||e.table.options.cellMouseOut)&&o.addEventListener("mouseout",function(o){var i=e.getComponent();t.cellMouseOut&&t.cellMouseOut.call(e.table,o,i),e.table.options.cellMouseOut&&e.table.options.cellMouseOut.call(e.table,o,i)}),(t.cellMouseMove||e.table.options.cellMouseMove)&&o.addEventListener("mousemove",function(o){var i=e.getComponent();t.cellMouseMove&&t.cellMouseMove.call(e.table,o,i),e.table.options.cellMouseMove&&e.table.options.cellMouseMove.call(e.table,o,i)})},Cell.prototype._bindTouchEvents=function(t){var e,o,i,n=this,l=n.element;(t.cellTap||this.table.options.cellTap)&&(i=!1,l.addEventListener("touchstart",function(t){i=!0},{passive:!0}),l.addEventListener("touchend",function(e){if(i){var o=n.getComponent();t.cellTap&&t.cellTap.call(n.table,e,o),n.table.options.cellTap&&n.table.options.cellTap.call(n.table,e,o)}i=!1})),(t.cellDblTap||this.table.options.cellDblTap)&&(e=null,l.addEventListener("touchend",function(o){if(e){clearTimeout(e),e=null;var i=n.getComponent();t.cellDblTap&&t.cellDblTap.call(n.table,o,i),n.table.options.cellDblTap&&n.table.options.cellDblTap.call(n.table,o,i)}else e=setTimeout(function(){clearTimeout(e),e=null},300)})),(t.cellTapHold||this.table.options.cellTapHold)&&(o=null,l.addEventListener("touchstart",function(e){clearTimeout(o),o=setTimeout(function(){clearTimeout(o),o=null,i=!1;var l=n.getComponent();t.cellTapHold&&t.cellTapHold.call(n.table,e,l),n.table.options.cellTapHold&&n.table.options.cellTapHold.call(n.table,e,l)},1e3)},{passive:!0}),l.addEventListener("touchend",function(t){clearTimeout(o),o=null}))},Cell.prototype._generateContents=function(){var t;switch(t=this.table.modExists("format")?this.table.modules.format.formatValue(this):this.element.innerHTML=this.value,void 0===t?"undefined":_typeof(t)){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}},Cell.prototype.cellRendered=function(){this.table.modExists("format")&&this.table.modules.format.cellRendered&&this.table.modules.format.cellRendered(this)},Cell.prototype._generateTooltip=function(){var t=this.column.tooltip;t?(!0===t?t=this.value:"function"==typeof t&&!1===(t=t(this.getComponent()))&&(t=""),void 0===t&&(t=""),this.element.setAttribute("title",t)):this.element.setAttribute("title","")},Cell.prototype.getElement=function(){return this.element},Cell.prototype.getValue=function(){return this.value},Cell.prototype.getOldValue=function(){return this.oldValue},Cell.prototype.setValue=function(t,e){var o,i=this.setValueProcessData(t,e);i&&(this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("cellEdit",this,{oldValue:this.oldValue,newValue:this.value}),o=this.getComponent(),this.column.cellEvents.cellEdited&&this.column.cellEvents.cellEdited.call(this.table,o),this.table.options.cellEdited.call(this.table,o),this.table.options.dataEdited.call(this.table,this.table.rowManager.getData()))},Cell.prototype.setValueProcessData=function(t,e){var o=!1;return this.value!=t&&(o=!0,e&&this.column.modules.mutate&&(t=this.table.modules.mutator.transformCell(this,t))),this.setValueActual(t),o&&this.table.modExists("columnCalcs")&&(this.column.definition.topCalc||this.column.definition.bottomCalc)&&(this.table.options.groupBy&&this.table.modExists("groupRows")?("table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs||this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),"table"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.recalcRowGroup(this.row)):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows)),o},Cell.prototype.setValueActual=function(t){this.oldValue=this.value,this.value=t,this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.block(),this.column.setFieldValue(this.row.data,t),this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.unblock(),this._generateContents(),this._generateTooltip(),this.table.options.resizableColumns&&this.table.modExists("resizeColumns")&&this.table.modules.resizeColumns.initializeColumn("cell",this.column,this.element),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutElement(this.element,this.column)},Cell.prototype.setWidth=function(){this.width=this.column.width,this.element.style.width=this.column.widthStyled},Cell.prototype.clearWidth=function(){this.width="",this.element.style.width=""},Cell.prototype.getWidth=function(){return this.width||this.element.offsetWidth},Cell.prototype.setMinWidth=function(){this.minWidth=this.column.minWidth,this.element.style.minWidth=this.column.minWidthStyled},Cell.prototype.checkHeight=function(){this.row.reinitializeHeight()},Cell.prototype.clearHeight=function(){this.element.style.height="",this.height=null},Cell.prototype.setHeight=function(){this.height=this.row.height,this.element.style.height=this.row.heightStyled},Cell.prototype.getHeight=function(){return this.height||this.element.offsetHeight},Cell.prototype.show=function(){this.element.style.display=""},Cell.prototype.hide=function(){this.element.style.display="none"},Cell.prototype.edit=function(t){if(this.table.modExists("edit",!0))return this.table.modules.edit.editCell(this,t)},Cell.prototype.cancelEdit=function(){if(this.table.modExists("edit",!0)){var t=this.table.modules.edit.getCurrentCell();t&&t._getSelf()===this?this.table.modules.edit.cancelEdit():console.warn("Cancel Editor Error - This cell is not currently being edited ")}},Cell.prototype.delete=function(){this.element.parentNode.removeChild(this.element),this.element=!1,this.column.deleteCell(this),this.row.deleteCell(this),this.calcs={}},Cell.prototype.nav=function(){var t=this,e=!1,o=this.row.getCellIndex(this);return{next:function(){var e,o=this.right();return!!o||!(!(e=t.table.rowManager.nextDisplayRow(t.row,!0))||!(o=e.findNextEditableCell(-1)))&&(o.edit(),!0)},prev:function(){var e,o=this.left();return!!o||!(!(e=t.table.rowManager.prevDisplayRow(t.row,!0))||!(o=e.findPrevEditableCell(e.cells.length)))&&(o.edit(),!0)},left:function(){return!!(e=t.row.findPrevEditableCell(o))&&(e.edit(),!0)},right:function(){return!!(e=t.row.findNextEditableCell(o))&&(e.edit(),!0)},up:function(){var e=t.table.rowManager.prevDisplayRow(t.row,!0);e&&e.cells[o].edit()},down:function(){var e=t.table.rowManager.nextDisplayRow(t.row,!0);e&&e.cells[o].edit()}}},Cell.prototype.getIndex=function(){this.row.getCellIndex(this)},Cell.prototype.getComponent=function(){return new CellComponent(this)};var FooterManager=function(t){this.table=t,this.active=!1,this.element=this.createElement(),this.external=!1,this.links=[],this._initialize()};FooterManager.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-footer"),t},FooterManager.prototype._initialize=function(t){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}},FooterManager.prototype.getElement=function(){return this.element},FooterManager.prototype.append=function(t,e){this.activate(e),this.element.appendChild(t),this.table.rowManager.adjustTableSize()},FooterManager.prototype.prepend=function(t,e){this.activate(e),this.element.insertBefore(t,this.element.firstChild),this.table.rowManager.adjustTableSize()},FooterManager.prototype.remove=function(t){t.parentNode.removeChild(t),this.deactivate()},FooterManager.prototype.deactivate=function(t){this.element.firstChild&&!t||(this.external||this.element.parentNode.removeChild(this.element),this.active=!1)},FooterManager.prototype.activate=function(t){this.active||(this.active=!0,this.external||(this.table.element.appendChild(this.getElement()),this.table.element.style.display="")),t&&this.links.push(t)},FooterManager.prototype.redraw=function(){this.links.forEach(function(t){t.footerRedraw()})};var Tabulator=function t(e,o){this.options={},this.columnManager=null,this.rowManager=null,this.footerManager=null,this.browser="",this.browserSlow=!1,this.modules={},this.initializeElement(e),this.initializeOptions(o||{}),this._create(),t.prototype.comms.register(this)};Tabulator.prototype.defaultOptions={height:!1,layout:"fitData",layoutColumnsOnNewData:!1,columnMinWidth:40,columnVertAlign:"top",resizableColumns:!0,resizableRows:!1,autoResize:!0,columns:[],data:[],autoColumns:!1,reactiveData:!1,nestedFieldSeparator:".",tooltips:!1,tooltipsHeader:!1,tooltipGenerationMode:"load",initialSort:!1,initialFilter:!1,initialHeaderFilter:!1,columnHeaderSortMulti:!0,sortOrderReverse:!1,headerSort:!0,headerSortTristate:!1,footerElement:!1,index:"id",keybindings:[],tabEndNewRow:!1,invalidOptionWarnings:!0,clipboard:!1,clipboardCopyStyled:!0,clipboardCopySelector:"active",clipboardCopyFormatter:"table",clipboardPasteParser:"table",clipboardPasteAction:"insert",clipboardCopyConfig:!1,clipboardCopied:function(){},clipboardPasted:function(){},clipboardPasteError:function(){},downloadDataFormatter:!1,downloadReady:function(t,e){return e},downloadComplete:!1,downloadConfig:!1,dataTree:!1,dataTreeElementColumn:!1,dataTreeBranchElement:!0,dataTreeChildIndent:9,dataTreeChildField:"_children",dataTreeCollapseElement:!1,dataTreeExpandElement:!1,dataTreeStartExpanded:!1,dataTreeRowExpanded:function(){},dataTreeRowCollapsed:function(){},printAsHtml:!1,printFormatter:!1,printHeader:!1,printFooter:!1,printCopyStyle:!0,printVisibleRows:!0,printConfig:{},addRowPos:"bottom",selectable:"highlight",selectableRangeMode:"drag",selectableRollingSelection:!0,selectablePersistence:!0,selectableCheck:function(t,e){return!0},headerFilterPlaceholder:!1,headerVisible:!0,history:!1,locale:!1,langs:{},virtualDom:!0,virtualDomBuffer:0,persistentLayout:!1,persistentSort:!1,persistentFilter:!1,persistenceID:"",persistenceMode:!0,responsiveLayout:!1,responsiveLayoutCollapseStartOpen:!0,responsiveLayoutCollapseUseFormatters:!0,responsiveLayoutCollapseFormatter:!1,pagination:!1,paginationSize:!1,paginationButtonCount:5,paginationSizeSelector:!1,paginationElement:!1,paginationDataSent:{},paginationDataReceived:{},paginationAddRow:"page",ajaxURL:!1,ajaxURLGenerator:!1,ajaxParams:{},ajaxConfig:"get",ajaxContentType:"form",ajaxRequestFunc:!1,ajaxLoader:!0,ajaxLoaderLoading:!1,ajaxLoaderError:!1,ajaxFiltering:!1,ajaxSorting:!1,ajaxProgressiveLoad:!1,ajaxProgressiveLoadDelay:0,ajaxProgressiveLoadScrollMargin:0,groupBy:!1,groupStartOpen:!0,groupValues:!1,groupHeader:!1,htmlOutputConfig:!1,movableColumns:!1,movableRows:!1,movableRowsConnectedTables:!1,movableRowsSender:!1,movableRowsReceiver:"insert",movableRowsSendingStart:function(){},movableRowsSent:function(){},movableRowsSentFailed:function(){},movableRowsSendingStop:function(){},movableRowsReceivingStart:function(){},movableRowsReceived:function(){},movableRowsReceivedFailed:function(){},movableRowsReceivingStop:function(){},scrollToRowPosition:"top",scrollToRowIfVisible:!0,scrollToColumnPosition:"left",scrollToColumnIfVisible:!0,rowFormatter:!1,placeholder:!1,tableBuilding:function(){},tableBuilt:function(){},renderStarted:function(){},renderComplete:function(){},rowClick:!1,rowDblClick:!1,rowContext:!1,rowTap:!1,rowDblTap:!1,rowTapHold:!1,rowMouseEnter:!1,rowMouseLeave:!1,rowMouseOver:!1,rowMouseOut:!1,rowMouseMove:!1,rowAdded:function(){},rowDeleted:function(){},rowMoved:function(){},rowUpdated:function(){},rowSelectionChanged:function(){},rowSelected:function(){},rowDeselected:function(){},rowResized:function(){},cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1,cellEditing:function(){},cellEdited:function(){},cellEditCancelled:function(){},columnMoved:!1,columnResized:function(){},columnTitleChanged:function(){},columnVisibilityChanged:function(){},htmlImporting:function(){},htmlImported:function(){},dataLoading:function(){},dataLoaded:function(){},dataEdited:function(){},ajaxRequesting:function(){},ajaxResponse:!1,ajaxError:function(){},dataFiltering:!1,dataFiltered:!1,dataSorting:function(){},dataSorted:function(){},groupToggleElement:"arrow",groupClosedShowCalcs:!1,dataGrouping:function(){},dataGrouped:!1,groupVisibilityChanged:function(){},groupClick:!1,groupDblClick:!1,groupContext:!1,groupTap:!1,groupDblTap:!1,groupTapHold:!1,columnCalcs:!0,pageLoaded:function(){},localized:function(){},validationFailed:function(){},historyUndo:function(){},historyRedo:function(){}},Tabulator.prototype.initializeOptions=function(t){if(!1!==t.invalidOptionWarnings)for(var e in t)void 0===this.defaultOptions[e]&&console.warn("Invalid table constructor option:",e);for(var e in this.defaultOptions)e in t?this.options[e]=t[e]:Array.isArray(this.defaultOptions[e])?this.options[e]=[]:"object"===_typeof(this.defaultOptions[e])?this.options[e]={}:this.options[e]=this.defaultOptions[e]},Tabulator.prototype.initializeElement=function(t){return"undefined"!=typeof HTMLElement&&t instanceof HTMLElement?(this.element=t,!0):"string"==typeof t?(this.element=document.querySelector(t),!!this.element||(console.error("Tabulator Creation Error - no element found matching selector: ",t),!1)):(console.error("Tabulator Creation Error - Invalid element provided:",t),!1)},Tabulator.prototype._mapDepricatedFunctionality=function(){},Tabulator.prototype._clearSelection=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")},Tabulator.prototype._create=function(){this._clearObjectPointers(),this._mapDepricatedFunctionality(),this.bindModules(),"TABLE"===this.element.tagName&&this.modExists("htmlTableImport",!0)&&this.modules.htmlTableImport.parseTable(),this.columnManager=new ColumnManager(this),this.rowManager=new RowManager(this),this.footerManager=new FooterManager(this),this.columnManager.setRowManager(this.rowManager),this.rowManager.setColumnManager(this.columnManager),this._buildElement(),this._loadInitialData()},Tabulator.prototype._clearObjectPointers=function(){this.options.columns=this.options.columns.slice(0),this.options.reactiveData||(this.options.data=this.options.data.slice(0))},Tabulator.prototype._buildElement=function(){var t=this,e=this.element,o=this.modules,i=this.options;for(i.tableBuilding.call(this),e.classList.add("tabulator"),e.setAttribute("role","grid");e.firstChild;)e.removeChild(e.firstChild);i.height&&(i.height=isNaN(i.height)?i.height:i.height+"px",e.style.height=i.height),this.columnManager.initialize(),this.rowManager.initialize(),this._detectBrowser(),this.modExists("layout",!0)&&o.layout.initialize(i.layout),!1!==i.headerFilterPlaceholder&&o.localize.setHeaderFilterPlaceholder(i.headerFilterPlaceholder);for(var n in i.langs)o.localize.installLang(n,i.langs[n]);if(o.localize.setLocale(i.locale),"string"==typeof i.placeholder){var l=document.createElement("div");l.classList.add("tabulator-placeholder");var s=document.createElement("span");s.innerHTML=i.placeholder,l.appendChild(s),i.placeholder=l}if(e.appendChild(this.columnManager.getElement()),e.appendChild(this.rowManager.getElement()),i.footerElement&&this.footerManager.activate(),(i.persistentLayout||i.persistentSort||i.persistentFilter)&&this.modExists("persistence",!0)&&o.persistence.initialize(i.persistenceMode,i.persistenceID),i.persistentLayout&&this.modExists("persistence",!0)&&(i.columns=o.persistence.load("columns",i.columns)),i.movableRows&&this.modExists("moveRow")&&o.moveRow.initialize(),i.autoColumns&&this.options.data&&this.columnManager.generateColumnsFromRowData(this.options.data),this.modExists("columnCalcs")&&o.columnCalcs.initialize(),this.columnManager.setColumns(i.columns),i.dataTree&&this.modExists("dataTree",!0)&&o.dataTree.initialize(),this.modExists("frozenRows")&&this.modules.frozenRows.initialize(),(i.persistentSort||i.initialSort)&&this.modExists("sort",!0)){var a=[];i.persistentSort&&this.modExists("persistence",!0)?!1===(a=o.persistence.load("sort"))&&i.initialSort&&(a=i.initialSort):i.initialSort&&(a=i.initialSort),o.sort.setSort(a)}if((i.persistentFilter||i.initialFilter)&&this.modExists("filter",!0)){var r=[];i.persistentFilter&&this.modExists("persistence",!0)?!1===(r=o.persistence.load("filter"))&&i.initialFilter&&(r=i.initialFilter):i.initialFilter&&(r=i.initialFilter),o.filter.setFilter(r)}i.initialHeaderFilter&&this.modExists("filter",!0)&&i.initialHeaderFilter.forEach(function(e){var i=t.columnManager.findColumn(e.field);if(!i)return console.warn("Column Filter Error - No matching column found:",e.field),!1;o.filter.setHeaderFilterValue(i,e.value)}),this.modExists("ajax")&&o.ajax.initialize(),i.pagination&&this.modExists("page",!0)&&o.page.initialize(),i.groupBy&&this.modExists("groupRows",!0)&&o.groupRows.initialize(),this.modExists("keybindings")&&o.keybindings.initialize(),this.modExists("selectRow")&&o.selectRow.clearSelectionData(!0),i.autoResize&&this.modExists("resizeTable")&&o.resizeTable.initialize(),this.modExists("clipboard")&&o.clipboard.initialize(),i.printAsHtml&&this.modExists("print")&&o.print.initialize(),i.tableBuilt.call(this)},Tabulator.prototype._loadInitialData=function(){var t=this;t.options.pagination&&t.modExists("page")?(t.modules.page.reset(!0),"local"==t.options.pagination?t.options.data.length?t.rowManager.setData(t.options.data):(t.options.ajaxURL||t.options.ajaxURLGenerator)&&t.modExists("ajax")?t.modules.ajax.loadData().then(function(){}).catch(function(){}):t.rowManager.setData(t.options.data):t.options.ajaxURL?t.modules.page.setPage(1).then(function(){}).catch(function(){}):t.rowManager.setData([])):t.options.data.length?t.rowManager.setData(t.options.data):(t.options.ajaxURL||t.options.ajaxURLGenerator)&&t.modExists("ajax")?t.modules.ajax.loadData().then(function(){}).catch(function(){}):t.rowManager.setData(t.options.data)},Tabulator.prototype.destroy=function(){var t=this.element;for(Tabulator.prototype.comms.deregister(this),this.options.reactiveData&&this.modExists("reactiveData",!0)&&this.modules.reactiveData.unwatchData(),this.rowManager.rows.forEach(function(t){t.wipe()}),this.rowManager.rows=[],this.rowManager.activeRows=[],this.rowManager.displayRows=[],this.options.autoResize&&this.modExists("resizeTable")&&this.modules.resizeTable.clearBindings(),this.modExists("keybindings")&&this.modules.keybindings.clearBindings();t.firstChild;)t.removeChild(t.firstChild);t.classList.remove("tabulator")},Tabulator.prototype._detectBrowser=function(){var t=navigator.userAgent;t.indexOf("Trident")>-1?(this.browser="ie",this.browserSlow=!0):t.indexOf("Edge")>-1?(this.browser="edge",this.browserSlow=!0):t.indexOf("Firefox")>-1?(this.browser="firefox",this.browserSlow=!1):(this.browser="other",this.browserSlow=!1)},Tabulator.prototype.setDataFromLocalFile=function(t){var e=this;return new Promise(function(o,i){var n=document.createElement("input");n.type="file",n.accept=t||".json,application/json",n.addEventListener("change",function(t){var l,s=n.files[0],a=new FileReader;a.readAsText(s),a.onload=function(t){try{l=JSON.parse(a.result)}catch(t){return console.warn("File Load Error - File contents is invalid JSON",t),void i(t)}e._setData(l).then(function(t){o(t)}).catch(function(t){o(t)})},a.onerror=function(t){console.warn("File Load Error - Unable to read file"),i()}}),n.click()})},Tabulator.prototype.setData=function(t,e,o){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(t,e,o)},Tabulator.prototype._setData=function(t,e,o,i){var n=this;return"string"!=typeof t?t?n.rowManager.setData(t,i):n.modExists("ajax")&&(n.modules.ajax.getUrl||n.options.ajaxURLGenerator)?"remote"==n.options.pagination&&n.modExists("page",!0)?(n.modules.page.reset(!0),n.modules.page.setPage(1)):n.modules.ajax.loadData(i):n.rowManager.setData([],i):0==t.indexOf("{")||0==t.indexOf("[")?n.rowManager.setData(JSON.parse(t),i):n.modExists("ajax",!0)?(e&&n.modules.ajax.setParams(e),o&&n.modules.ajax.setConfig(o),n.modules.ajax.setUrl(t),"remote"==n.options.pagination&&n.modExists("page",!0)?(n.modules.page.reset(!0),n.modules.page.setPage(1)):n.modules.ajax.loadData(i)):void 0},Tabulator.prototype.clearData=function(){this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this.rowManager.clearData()},Tabulator.prototype.getData=function(t){return this.rowManager.getData(t)},Tabulator.prototype.getDataCount=function(t){return this.rowManager.getDataCount(t)},Tabulator.prototype.searchRows=function(t,e,o){if(this.modExists("filter",!0))return this.modules.filter.search("rows",t,e,o)},Tabulator.prototype.searchData=function(t,e,o){
+if(this.modExists("filter",!0))return this.modules.filter.search("data",t,e,o)},Tabulator.prototype.getHtml=function(t,e,o){if(this.modExists("htmlTableExport",!0))return this.modules.htmlTableExport.getHtml(t,e,o)},Tabulator.prototype.print=function(t,e,o){if(this.modExists("print",!0))return this.modules.print.printFullscreen(t,e,o)},Tabulator.prototype.getAjaxUrl=function(){if(this.modExists("ajax",!0))return this.modules.ajax.getUrl()},Tabulator.prototype.replaceData=function(t,e,o){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(t,e,o,!0)},Tabulator.prototype.updateData=function(t){var e=this,o=this,i=0;return new Promise(function(n,l){e.modExists("ajax")&&e.modules.ajax.blockActiveRequest(),"string"==typeof t&&(t=JSON.parse(t)),t?t.forEach(function(t){var e=o.rowManager.findRow(t[o.options.index]);e&&(i++,e.updateData(t).then(function(){--i||n()}))}):(console.warn("Update Error - No data provided"),l("Update Error - No data provided"))})},Tabulator.prototype.addData=function(t,e,o){var i=this;return new Promise(function(n,l){i.modExists("ajax")&&i.modules.ajax.blockActiveRequest(),"string"==typeof t&&(t=JSON.parse(t)),t?i.rowManager.addRows(t,e,o).then(function(t){var e=[];t.forEach(function(t){e.push(t.getComponent())}),n(e)}):(console.warn("Update Error - No data provided"),l("Update Error - No data provided"))})},Tabulator.prototype.updateOrAddData=function(t){var e=this,o=this,i=[],n=0;return new Promise(function(l,s){e.modExists("ajax")&&e.modules.ajax.blockActiveRequest(),"string"==typeof t&&(t=JSON.parse(t)),t?t.forEach(function(t){var e=o.rowManager.findRow(t[o.options.index]);n++,e?e.updateData(t).then(function(){n--,i.push(e.getComponent()),n||l(i)}):o.rowManager.addRows(t).then(function(t){n--,i.push(t[0].getComponent()),n||l(i)})}):(console.warn("Update Error - No data provided"),s("Update Error - No data provided"))})},Tabulator.prototype.getRow=function(t){var e=this.rowManager.findRow(t);return e?e.getComponent():(console.warn("Find Error - No matching row found:",t),!1)},Tabulator.prototype.getRowFromPosition=function(t,e){var o=this.rowManager.getRowFromPosition(t,e);return o?o.getComponent():(console.warn("Find Error - No matching row found:",t),!1)},Tabulator.prototype.deleteRow=function(t){var e=this;return new Promise(function(o,i){var n=e.rowManager.findRow(t);n?n.delete().then(function(){o()}).catch(function(t){i(t)}):(console.warn("Delete Error - No matching row found:",t),i("Delete Error - No matching row found"))})},Tabulator.prototype.addRow=function(t,e,o){var i=this;return new Promise(function(n,l){"string"==typeof t&&(t=JSON.parse(t)),i.rowManager.addRows(t,e,o).then(function(t){i.modExists("columnCalcs")&&i.modules.columnCalcs.recalc(i.rowManager.activeRows),n(t[0].getComponent())})})},Tabulator.prototype.updateOrAddRow=function(t,e){var o=this;return new Promise(function(i,n){var l=o.rowManager.findRow(t);"string"==typeof e&&(e=JSON.parse(e)),l?l.updateData(e).then(function(){o.modExists("columnCalcs")&&o.modules.columnCalcs.recalc(o.rowManager.activeRows),i(l.getComponent())}).catch(function(t){n(t)}):l=o.rowManager.addRows(e).then(function(t){o.modExists("columnCalcs")&&o.modules.columnCalcs.recalc(o.rowManager.activeRows),i(t[0].getComponent())}).catch(function(t){n(t)})})},Tabulator.prototype.updateRow=function(t,e){var o=this;return new Promise(function(i,n){var l=o.rowManager.findRow(t);"string"==typeof e&&(e=JSON.parse(e)),l?l.updateData(e).then(function(){i(l.getComponent())}).catch(function(t){n(t)}):(console.warn("Update Error - No matching row found:",t),n("Update Error - No matching row found"))})},Tabulator.prototype.scrollToRow=function(t,e,o){var i=this;return new Promise(function(n,l){var s=i.rowManager.findRow(t);s?i.rowManager.scrollToRow(s,e,o).then(function(){n()}).catch(function(t){l(t)}):(console.warn("Scroll Error - No matching row found:",t),l("Scroll Error - No matching row found"))})},Tabulator.prototype.moveRow=function(t,e,o){var i=this.rowManager.findRow(t);i?i.moveToRow(e,o):console.warn("Move Error - No matching row found:",t)},Tabulator.prototype.getRows=function(t){return this.rowManager.getComponents(t)},Tabulator.prototype.getRowPosition=function(t,e){var o=this.rowManager.findRow(t);return o?this.rowManager.getRowPosition(o,e):(console.warn("Position Error - No matching row found:",t),!1)},Tabulator.prototype.copyToClipboard=function(t,e,o,i){this.modExists("clipboard",!0)&&this.modules.clipboard.copy(t,e,o,i)},Tabulator.prototype.setColumns=function(t){this.columnManager.setColumns(t)},Tabulator.prototype.getColumns=function(t){return this.columnManager.getComponents(t)},Tabulator.prototype.getColumn=function(t){var e=this.columnManager.findColumn(t);return e?e.getComponent():(console.warn("Find Error - No matching column found:",t),!1)},Tabulator.prototype.getColumnDefinitions=function(){return this.columnManager.getDefinitionTree()},Tabulator.prototype.getColumnLayout=function(){if(this.modExists("persistence",!0))return this.modules.persistence.parseColumns(this.columnManager.getColumns())},Tabulator.prototype.setColumnLayout=function(t){return!!this.modExists("persistence",!0)&&(this.columnManager.setColumns(this.modules.persistence.mergeDefinition(this.options.columns,t)),!0)},Tabulator.prototype.showColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Show Error - No matching column found:",t),!1;e.show(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},Tabulator.prototype.hideColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Hide Error - No matching column found:",t),!1;e.hide(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},Tabulator.prototype.toggleColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Visibility Toggle Error - No matching column found:",t),!1;e.visible?e.hide():e.show()},Tabulator.prototype.addColumn=function(t,e,o){var i=this.columnManager.findColumn(o);this.columnManager.addColumn(t,e,i)},Tabulator.prototype.deleteColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Delete Error - No matching column found:",t),!1;e.delete()},Tabulator.prototype.moveColumn=function(t,e,o){var i=this.columnManager.findColumn(t),n=this.columnManager.findColumn(e);i?n?this.columnManager.moveColumn(i,n,o):console.warn("Move Error - No matching column found:",n):console.warn("Move Error - No matching column found:",t)},Tabulator.prototype.scrollToColumn=function(t,e,o){var i=this;return new Promise(function(n,l){var s=i.columnManager.findColumn(t);s?i.columnManager.scrollToColumn(s,e,o).then(function(){n()}).catch(function(t){l(t)}):(console.warn("Scroll Error - No matching column found:",t),l("Scroll Error - No matching column found"))})},Tabulator.prototype.setLocale=function(t){this.modules.localize.setLocale(t)},Tabulator.prototype.getLocale=function(){return this.modules.localize.getLocale()},Tabulator.prototype.getLang=function(t){return this.modules.localize.getLang(t)},Tabulator.prototype.redraw=function(t){this.columnManager.redraw(t),this.rowManager.redraw(t)},Tabulator.prototype.setHeight=function(t){"classic"!==this.rowManager.renderMode?(this.options.height=isNaN(t)?t:t+"px",this.element.style.height=this.options.height,this.rowManager.redraw()):console.warn("setHeight function is not available in classic render mode")},Tabulator.prototype.setSort=function(t,e){this.modExists("sort",!0)&&(this.modules.sort.setSort(t,e),this.rowManager.sorterRefresh())},Tabulator.prototype.getSorters=function(){if(this.modExists("sort",!0))return this.modules.sort.getSort()},Tabulator.prototype.clearSort=function(){this.modExists("sort",!0)&&(this.modules.sort.clear(),this.rowManager.sorterRefresh())},Tabulator.prototype.setFilter=function(t,e,o){this.modExists("filter",!0)&&(this.modules.filter.setFilter(t,e,o),this.rowManager.filterRefresh())},Tabulator.prototype.addFilter=function(t,e,o){this.modExists("filter",!0)&&(this.modules.filter.addFilter(t,e,o),this.rowManager.filterRefresh())},Tabulator.prototype.getFilters=function(t){if(this.modExists("filter",!0))return this.modules.filter.getFilters(t)},Tabulator.prototype.setHeaderFilterFocus=function(t){if(this.modExists("filter",!0)){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Filter Focus Error - No matching column found:",t),!1;this.modules.filter.setHeaderFilterFocus(e)}},Tabulator.prototype.setHeaderFilterValue=function(t,e){if(this.modExists("filter",!0)){var o=this.columnManager.findColumn(t);if(!o)return console.warn("Column Filter Error - No matching column found:",t),!1;this.modules.filter.setHeaderFilterValue(o,e)}},Tabulator.prototype.getHeaderFilters=function(){if(this.modExists("filter",!0))return this.modules.filter.getHeaderFilters()},Tabulator.prototype.removeFilter=function(t,e,o){this.modExists("filter",!0)&&(this.modules.filter.removeFilter(t,e,o),this.rowManager.filterRefresh())},Tabulator.prototype.clearFilter=function(t){this.modExists("filter",!0)&&(this.modules.filter.clearFilter(t),this.rowManager.filterRefresh())},Tabulator.prototype.clearHeaderFilter=function(){this.modExists("filter",!0)&&(this.modules.filter.clearHeaderFilter(),this.rowManager.filterRefresh())},Tabulator.prototype.selectRow=function(t){this.modExists("selectRow",!0)&&this.modules.selectRow.selectRows(t)},Tabulator.prototype.deselectRow=function(t){this.modExists("selectRow",!0)&&this.modules.selectRow.deselectRows(t)},Tabulator.prototype.toggleSelectRow=function(t){this.modExists("selectRow",!0)&&this.modules.selectRow.toggleRow(t)},Tabulator.prototype.getSelectedRows=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedRows()},Tabulator.prototype.getSelectedData=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedData()},Tabulator.prototype.setMaxPage=function(t){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setMaxPage(t)},Tabulator.prototype.setPage=function(t){return this.options.pagination&&this.modExists("page")?this.modules.page.setPage(t):new Promise(function(t,e){e()})},Tabulator.prototype.setPageToRow=function(t){var e=this;return new Promise(function(o,i){e.options.pagination&&e.modExists("page")?(t=e.rowManager.findRow(t),t?e.modules.page.setPageToRow(t).then(function(){o()}).catch(function(){i()}):i()):i()})},Tabulator.prototype.setPageSize=function(t){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setPageSize(t),this.modules.page.setPage(1).then(function(){}).catch(function(){})},Tabulator.prototype.getPageSize=function(){if(this.options.pagination&&this.modExists("page",!0))return this.modules.page.getPageSize()},Tabulator.prototype.previousPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.previousPage()},Tabulator.prototype.nextPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.nextPage()},Tabulator.prototype.getPage=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPage()},Tabulator.prototype.getPageMax=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPageMax()},Tabulator.prototype.setGroupBy=function(t){if(!this.modExists("groupRows",!0))return!1;this.options.groupBy=t,this.modules.groupRows.initialize(),this.rowManager.refreshActiveData("display")},Tabulator.prototype.setGroupStartOpen=function(t){if(!this.modExists("groupRows",!0))return!1;this.options.groupStartOpen=t,this.modules.groupRows.initialize(),this.options.groupBy?this.rowManager.refreshActiveData("group"):console.warn("Grouping Update - cant refresh view, no groups have been set")},Tabulator.prototype.setGroupHeader=function(t){if(!this.modExists("groupRows",!0))return!1;this.options.groupHeader=t,this.modules.groupRows.initialize(),this.options.groupBy?this.rowManager.refreshActiveData("group"):console.warn("Grouping Update - cant refresh view, no groups have been set")},Tabulator.prototype.getGroups=function(t){return!!this.modExists("groupRows",!0)&&this.modules.groupRows.getGroups(!0)},Tabulator.prototype.getGroupedData=function(){if(this.modExists("groupRows",!0))return this.options.groupBy?this.modules.groupRows.getGroupedData():this.getData()},Tabulator.prototype.getCalcResults=function(){return!!this.modExists("columnCalcs",!0)&&this.modules.columnCalcs.getResults()},Tabulator.prototype.navigatePrev=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&t.nav().prev()},Tabulator.prototype.navigateNext=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&t.nav().next()},Tabulator.prototype.navigateLeft=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().left())},Tabulator.prototype.navigateRight=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().right())},Tabulator.prototype.navigateUp=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().up())},Tabulator.prototype.navigateDown=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().down())},Tabulator.prototype.undo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.undo()},Tabulator.prototype.redo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.redo()},Tabulator.prototype.getHistoryUndoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryUndoSize()},Tabulator.prototype.getHistoryRedoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryRedoSize()},Tabulator.prototype.download=function(t,e,o){this.modExists("download",!0)&&this.modules.download.download(t,e,o)},Tabulator.prototype.downloadToTab=function(t,e,o){this.modExists("download",!0)&&this.modules.download.download(t,e,o,!0)},Tabulator.prototype.tableComms=function(t,e,o,i){this.modules.comms.receive(t,e,o,i)},Tabulator.prototype.moduleBindings={},Tabulator.prototype.extendModule=function(t,e,o){if(Tabulator.prototype.moduleBindings[t]){var i=Tabulator.prototype.moduleBindings[t].prototype[e];if(i)if("object"==(void 0===o?"undefined":_typeof(o)))for(var n in o)i[n]=o[n];else console.warn("Module Error - Invalid value type, it must be an object");else console.warn("Module Error - property does not exist:",e)}else console.warn("Module Error - module does not exist:",t)},Tabulator.prototype.registerModule=function(t,e){Tabulator.prototype.moduleBindings[t]=e},Tabulator.prototype.bindModules=function(){this.modules={};for(var t in Tabulator.prototype.moduleBindings)this.modules[t]=new Tabulator.prototype.moduleBindings[t](this)},Tabulator.prototype.modExists=function(t,e){return!!this.modules[t]||(e&&console.error("Tabulator Module Not Installed: "+t),!1)},Tabulator.prototype.helpers={elVisible:function(t){return!(t.offsetWidth<=0&&t.offsetHeight<=0)},elOffset:function(t){var e=t.getBoundingClientRect();return{top:e.top+window.pageYOffset-document.documentElement.clientTop,left:e.left+window.pageXOffset-document.documentElement.clientLeft}},deepClone:function(t){var e=Array.isArray(t)?[]:{};for(var o in t)null!=t[o]&&"object"===_typeof(t[o])?t[o]instanceof Date?e[o]=new Date(t[o]):e[o]=this.deepClone(t[o]):e[o]=t[o];return e}},Tabulator.prototype.comms={tables:[],register:function(t){Tabulator.prototype.comms.tables.push(t)},deregister:function(t){var e=Tabulator.prototype.comms.tables.indexOf(t);e>-1&&Tabulator.prototype.comms.tables.splice(e,1)},lookupTable:function(t){var e,o,i=[];if("string"==typeof t){if(e=document.querySelectorAll(t),e.length)for(var n=0;n<e.length;n++)(o=Tabulator.prototype.comms.matchElement(e[n]))&&i.push(o)}else"undefined"!=typeof HTMLElement&&t instanceof HTMLElement||t instanceof Tabulator?(o=Tabulator.prototype.comms.matchElement(t))&&i.push(o):Array.isArray(t)?t.forEach(function(t){i=i.concat(Tabulator.prototype.comms.lookupTable(t))}):console.warn("Table Connection Error - Invalid Selector",t);return i},matchElement:function(t){return Tabulator.prototype.comms.tables.find(function(e){return t instanceof Tabulator?e===t:e.element===t})}};var Layout=function(t){this.table=t,this.mode=null};Layout.prototype.initialize=function(t){this.modes[t]?this.mode=t:(console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : "+t),this.mode="fitData"),this.table.element.setAttribute("tabulator-layout",this.mode)},Layout.prototype.getMode=function(){return this.mode},Layout.prototype.layout=function(){this.modes[this.mode].call(this,this.table.columnManager.columnsByIndex)},Layout.prototype.modes={fitData:function(t){t.forEach(function(t){t.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataFill:function(t){t.forEach(function(t){t.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitColumns:function(t){function e(t){return"string"==typeof t?t.indexOf("%")>-1?n/100*parseInt(t):parseInt(t):t}function o(t,i,n,l){function s(t){return n*(t.column.definition.widthGrow||1)}function a(t){return e(t.width)-n*(t.column.definition.widthShrink||0)}var r=[],u=0,c=0,h=0,p=0,d=0,m=[];return t.forEach(function(t,e){var o=l?a(t):s(t);t.column.minWidth>=o?r.push(t):(m.push(t),d+=l?t.column.definition.widthShrink||1:t.column.definition.widthGrow||1)}),r.length?(r.forEach(function(t){u+=l?t.width-t.column.minWidth:t.column.minWidth,t.width=t.column.minWidth}),c=i-u,h=d?Math.floor(c/d):c,p=c-h*d,p+=o(m,c,h,l)):(p=d?i-Math.floor(i/d)*d:i,m.forEach(function(t){t.width=l?a(t):s(t)})),p}var i=this,n=i.table.element.clientWidth,l=0,s=0,a=0,r=0,u=[],c=[],h=0,p=0,d=0;this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.rowManager.element.scrollHeight>this.table.rowManager.element.clientHeight&&(n-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),t.forEach(function(t){var o,i,n;t.visible&&(o=t.definition.width,i=parseInt(t.minWidth),o?(n=e(o),l+=n>i?n:i,t.definition.widthShrink&&(c.push({column:t,width:n>i?n:i}),h+=t.definition.widthShrink)):(u.push({column:t,width:0}),a+=t.definition.widthGrow||1))}),s=n-l,r=Math.floor(s/a);var d=o(u,s,r,!1);u.length&&d>0&&(u[u.length-1].width+=+d),u.forEach(function(t){s-=t.width}),p=Math.abs(d)+s,p>0&&h&&(d=o(c,p,Math.floor(p/h),!0)),c.length&&(c[c.length-1].width-=d),u.forEach(function(t){t.column.setWidth(t.width)}),c.forEach(function(t){t.column.setWidth(t.width)})}},Tabulator.prototype.registerModule("layout",Layout);var Localize=function(t){this.table=t,this.locale="default",this.lang=!1,this.bindings={}};Localize.prototype.setHeaderFilterPlaceholder=function(t){this.langs.default.headerFilters.default=t},Localize.prototype.setHeaderFilterColumnPlaceholder=function(t,e){this.langs.default.headerFilters.columns[t]=e,this.lang&&!this.lang.headerFilters.columns[t]&&(this.lang.headerFilters.columns[t]=e)},Localize.prototype.installLang=function(t,e){this.langs[t]?this._setLangProp(this.langs[t],e):this.langs[t]=e},Localize.prototype._setLangProp=function(t,e){for(var o in e)t[o]&&"object"==_typeof(t[o])?this._setLangProp(t[o],e[o]):t[o]=e[o]},Localize.prototype.setLocale=function(t){function e(t,o){for(var i in t)"object"==_typeof(t[i])?(o[i]||(o[i]={}),e(t[i],o[i])):o[i]=t[i]}var o=this;if(t=t||"default",!0===t&&navigator.language&&(t=navigator.language.toLowerCase()),t&&!o.langs[t]){var i=t.split("-")[0];o.langs[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")}o.locale=t,o.lang=Tabulator.prototype.helpers.deepClone(o.langs.default||{}),"default"!=t&&e(o.langs[t],o.lang),o.table.options.localized.call(o.table,o.locale,o.lang),o._executeBindings()},Localize.prototype.getLocale=function(t){return self.locale},Localize.prototype.getLang=function(t){return t?this.langs[t]:this.lang},Localize.prototype.getText=function(t,e){var t=e?t+"|"+e:t,o=t.split("|");return this._getLangElement(o,this.locale)||""},Localize.prototype._getLangElement=function(t,e){var o=this,i=o.lang;return t.forEach(function(t){var e;i&&(e=i[t],i=void 0!==e&&e)}),i},Localize.prototype.bind=function(t,e){this.bindings[t]||(this.bindings[t]=[]),this.bindings[t].push(e),e(this.getText(t),this.lang)},Localize.prototype._executeBindings=function(){var t=this;for(var e in t.bindings)!function(e){t.bindings[e].forEach(function(o){o(t.getText(e),t.lang)})}(e)},Localize.prototype.langs={default:{groups:{item:"item",items:"items"},columns:{},ajax:{loading:"Loading",error:"Error"},pagination:{page_size:"Page Size",first:"First",first_title:"First Page",last:"Last",last_title:"Last Page",prev:"Prev",prev_title:"Prev Page",next:"Next",next_title:"Next Page"},headerFilters:{default:"filter column...",columns:{}}}},Tabulator.prototype.registerModule("localize",Localize);var Comms=function(t){this.table=t};Comms.prototype.getConnections=function(t){var e,o=this,i=[];return e=Tabulator.prototype.comms.lookupTable(t),e.forEach(function(t){o.table!==t&&i.push(t)}),i},Comms.prototype.send=function(t,e,o,i){var n=this,l=this.getConnections(t);l.forEach(function(t){t.tableComms(n.table.element,e,o,i)}),!l.length&&t&&console.warn("Table Connection Error - No tables matching selector found",t)},Comms.prototype.receive=function(t,e,o,i){if(this.table.modExists(e))return this.table.modules[e].commsReceived(t,o,i);console.warn("Inter-table Comms Error - no such module:",e)},Tabulator.prototype.registerModule("comms",Comms);
\ No newline at end of file
index b174a5c..dca822d 100644 (file)
@@ -1,6 +1,6 @@
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 
 var Accessor = function Accessor(table) {
        this.table = table; //hold Tabulator object
index 4fc25aa..2c28647 100644 (file)
@@ -1,2 +1,2 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},Accessor=function(o){this.table=o,this.allowedTypes=["","data","download","clipboard"]};Accessor.prototype.initializeColumn=function(o){var e=this,s=!1,r={};this.allowedTypes.forEach(function(c){var t,a="accessor"+(c.charAt(0).toUpperCase()+c.slice(1));o.definition[a]&&(t=e.lookupAccessor(o.definition[a]))&&(s=!0,r[a]={accessor:t,params:o.definition[a+"Params"]||{}})}),s&&(o.modules.accessor=r)},Accessor.prototype.lookupAccessor=function(o){var e=!1;switch(void 0===o?"undefined":_typeof(o)){case"string":this.accessors[o]?e=this.accessors[o]:console.warn("Accessor Error - No such accessor found, ignoring: ",o);break;case"function":e=o}return e},Accessor.prototype.transformRow=function(o,e){var s=this,r="accessor"+(e.charAt(0).toUpperCase()+e.slice(1)),c=Tabulator.prototype.helpers.deepClone(o||{});return s.table.columnManager.traverse(function(o){var s,t,a,n;o.modules.accessor&&(t=o.modules.accessor[r]||o.modules.accessor.accessor||!1)&&"undefined"!=(s=o.getFieldValue(c))&&(n=o.getComponent(),a="function"==typeof t.params?t.params(s,c,e,n):t.params,o.setFieldValue(c,t.accessor(s,c,e,a,n)))}),c},Accessor.prototype.accessors={},Tabulator.prototype.registerModule("accessor",Accessor);
\ No newline at end of file
index afd9deb..53b711e 100644 (file)
@@ -1,6 +1,6 @@
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 
 var Ajax = function Ajax(table) {
 
@@ -342,7 +342,8 @@ Ajax.prototype.defaultURLGenerator = function (url, config, params) {
                if (params && Object.keys(params).length) {
                        if (!config.method || config.method.toLowerCase() == "get") {
                                config.method = "get";
-                               url += "?" + this.serializeParams(params);
+
+                               url += (url.includes("?") ? "&" : "?") + this.serializeParams(params);
                        }
                }
        }
index 66a965f..dbfa081 100644 (file)
@@ -1,2 +1,2 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
-var _typeof="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},Ajax=function(e){this.table=e,this.config=!1,this.url="",this.urlGenerator=!1,this.params=!1,this.loaderElement=this.createLoaderElement(),this.msgElement=this.createMsgElement(),this.loadingElement=!1,this.errorElement=!1,this.loaderPromise=!1,this.progressiveLoad=!1,this.loading=!1,this.requestOrder=0};Ajax.prototype.initialize=function(){var e;this.loaderElement.appendChild(this.msgElement),this.table.options.ajaxLoaderLoading&&("string"==typeof this.table.options.ajaxLoaderLoading?(e=document.createElement("template"),e.innerHTML=this.table.options.ajaxLoaderLoading.trim(),this.loadingElement=e.content.firstChild):this.loadingElement=this.table.options.ajaxLoaderLoading),this.loaderPromise=this.table.options.ajaxRequestFunc||this.defaultLoaderPromise,this.urlGenerator=this.table.options.ajaxURLGenerator||this.defaultURLGenerator,this.table.options.ajaxLoaderError&&("string"==typeof this.table.options.ajaxLoaderError?(e=document.createElement("template"),e.innerHTML=this.table.options.ajaxLoaderError.trim(),this.errorElement=e.content.firstChild):this.errorElement=this.table.options.ajaxLoaderError),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.table.options.ajaxProgressiveLoad&&(this.table.options.pagination?(this.progressiveLoad=!1,console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time")):this.table.modExists("page")?(this.progressiveLoad=this.table.options.ajaxProgressiveLoad,this.table.modules.page.initializeProgressive(this.progressiveLoad)):console.error("Pagination plugin is required for progressive ajax loading"))},Ajax.prototype.createLoaderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-loader"),e},Ajax.prototype.createMsgElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-loader-msg"),e.setAttribute("role","alert"),e},Ajax.prototype.setParams=function(e,t){if(t){this.params=this.params||{};for(var o in e)this.params[o]=e[o]}else this.params=e},Ajax.prototype.getParams=function(){return this.params||{}},Ajax.prototype.setConfig=function(e){if(this._loadDefaultConfig(),"string"==typeof e)this.config.method=e;else for(var t in e)this.config[t]=e[t]},Ajax.prototype._loadDefaultConfig=function(e){var t=this;if(!t.config||e){t.config={};for(var o in t.defaultConfig)t.config[o]=t.defaultConfig[o]}},Ajax.prototype.setUrl=function(e){this.url=e},Ajax.prototype.getUrl=function(){return this.url},Ajax.prototype.loadData=function(e){return this.progressiveLoad?this._loadDataProgressive():this._loadDataStandard(e)},Ajax.prototype.nextPage=function(e){var t;this.loading||(t=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.getElement().clientHeight,e<t&&this.table.modules.page.nextPage().then(function(){}).catch(function(){}))},Ajax.prototype.blockActiveRequest=function(){this.requestOrder++},Ajax.prototype._loadDataProgressive=function(){return this.table.rowManager.setData([]),this.table.modules.page.setPage(1)},Ajax.prototype._loadDataStandard=function(e){var t=this;return new Promise(function(o,a){t.sendRequest(e).then(function(r){t.table.rowManager.setData(r,e).then(function(){o()}).catch(function(e){a(e)})}).catch(function(e){a(e)})})},Ajax.prototype.generateParamsList=function(e,t){var o=this,a=[];if(t=t||"",Array.isArray(e))e.forEach(function(e,r){a=a.concat(o.generateParamsList(e,t?t+"["+r+"]":r))});else if("object"===(void 0===e?"undefined":_typeof(e)))for(var r in e)a=a.concat(o.generateParamsList(e[r],t?t+"["+r+"]":r));else a.push({key:t,value:e});return a},Ajax.prototype.serializeParams=function(e){var t=this.generateParamsList(e),o=[];return t.forEach(function(e){o.push(encodeURIComponent(e.key)+"="+encodeURIComponent(e.value))}),o.join("&")},Ajax.prototype.sendRequest=function(e){var t,o=this,a=this,r=a.url;return a.requestOrder++,t=a.requestOrder,a._loadDefaultConfig(),new Promise(function(i,n){!1!==a.table.options.ajaxRequesting.call(o.table,a.url,a.params)?(a.loading=!0,e||a.showLoader(),o.loaderPromise(r,a.config,a.params).then(function(e){t===a.requestOrder?(a.table.options.ajaxResponse&&(e=a.table.options.ajaxResponse.call(a.table,a.url,a.params,e)),i(e)):console.warn("Ajax Response Blocked - An active ajax request was blocked by an attempt to change table data while the request was being made"),a.hideLoader(),a.loading=!1}).catch(function(e){console.error("Ajax Load Error: ",e),a.table.options.ajaxError.call(a.table,e),a.showError(),setTimeout(function(){a.hideLoader()},3e3),a.loading=!1,n()})):n()})},Ajax.prototype.showLoader=function(){if("function"==typeof this.table.options.ajaxLoader?this.table.options.ajaxLoader():this.table.options.ajaxLoader){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.table.modules.localize.getText("ajax|loading"),this.table.element.appendChild(this.loaderElement)}},Ajax.prototype.showError=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.table.modules.localize.getText("ajax|error"),this.table.element.appendChild(this.loaderElement)},Ajax.prototype.hideLoader=function(){this.loaderElement.parentNode&&this.loaderElement.parentNode.removeChild(this.loaderElement)},Ajax.prototype.defaultConfig={method:"GET"},Ajax.prototype.defaultURLGenerator=function(e,t,o){return e&&o&&Object.keys(o).length&&(t.method&&"get"!=t.method.toLowerCase()||(t.method="get",e+="?"+this.serializeParams(o))),e},Ajax.prototype.defaultLoaderPromise=function(e,t,o){var a,r=this;return new Promise(function(i,n){if(e=r.urlGenerator(e,t,o),"GET"!=t.method.toUpperCase())if(a="object"===_typeof(r.table.options.ajaxContentType)?r.table.options.ajaxContentType:r.contentTypeFormatters[r.table.options.ajaxContentType]){for(var s in a.headers)t.headers||(t.headers={}),void 0===t.headers[s]&&(t.headers[s]=a.headers[s]);t.body=a.body.call(r,e,t,o)}else console.warn("Ajax Error - Invalid ajaxContentType value:",r.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["Access-Control-Allow-Origin"]&&(t.headers["Access-Control-Allow-Origin"]=window.location.origin),void 0===t.credentials&&(t.credentials="same-origin")):void 0===t.credentials&&(t.credentials="include"),fetch(e,t).then(function(e){e.ok?e.json().then(function(e){i(e)}).catch(function(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(function(e){console.error("Ajax Load Error - Connection Error: ",e),n(e)})):(console.warn("Ajax Load Error - No URL Set"),i([]))})},Ajax.prototype.contentTypeFormatters={json:{headers:{"Content-Type":"application/json"},body:function(e,t,o){return JSON.stringify(o)}},form:{headers:{},body:function(e,t,o){var a=this.generateParamsList(o),r=new FormData;return a.forEach(function(e){r.append(e.key,e.value)}),r}}},Tabulator.prototype.registerModule("ajax",Ajax);
\ No newline at end of file
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
+var _typeof="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},Ajax=function(e){this.table=e,this.config=!1,this.url="",this.urlGenerator=!1,this.params=!1,this.loaderElement=this.createLoaderElement(),this.msgElement=this.createMsgElement(),this.loadingElement=!1,this.errorElement=!1,this.loaderPromise=!1,this.progressiveLoad=!1,this.loading=!1,this.requestOrder=0};Ajax.prototype.initialize=function(){var e;this.loaderElement.appendChild(this.msgElement),this.table.options.ajaxLoaderLoading&&("string"==typeof this.table.options.ajaxLoaderLoading?(e=document.createElement("template"),e.innerHTML=this.table.options.ajaxLoaderLoading.trim(),this.loadingElement=e.content.firstChild):this.loadingElement=this.table.options.ajaxLoaderLoading),this.loaderPromise=this.table.options.ajaxRequestFunc||this.defaultLoaderPromise,this.urlGenerator=this.table.options.ajaxURLGenerator||this.defaultURLGenerator,this.table.options.ajaxLoaderError&&("string"==typeof this.table.options.ajaxLoaderError?(e=document.createElement("template"),e.innerHTML=this.table.options.ajaxLoaderError.trim(),this.errorElement=e.content.firstChild):this.errorElement=this.table.options.ajaxLoaderError),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.table.options.ajaxProgressiveLoad&&(this.table.options.pagination?(this.progressiveLoad=!1,console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time")):this.table.modExists("page")?(this.progressiveLoad=this.table.options.ajaxProgressiveLoad,this.table.modules.page.initializeProgressive(this.progressiveLoad)):console.error("Pagination plugin is required for progressive ajax loading"))},Ajax.prototype.createLoaderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-loader"),e},Ajax.prototype.createMsgElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-loader-msg"),e.setAttribute("role","alert"),e},Ajax.prototype.setParams=function(e,t){if(t){this.params=this.params||{};for(var o in e)this.params[o]=e[o]}else this.params=e},Ajax.prototype.getParams=function(){return this.params||{}},Ajax.prototype.setConfig=function(e){if(this._loadDefaultConfig(),"string"==typeof e)this.config.method=e;else for(var t in e)this.config[t]=e[t]},Ajax.prototype._loadDefaultConfig=function(e){var t=this;if(!t.config||e){t.config={};for(var o in t.defaultConfig)t.config[o]=t.defaultConfig[o]}},Ajax.prototype.setUrl=function(e){this.url=e},Ajax.prototype.getUrl=function(){return this.url},Ajax.prototype.loadData=function(e){return this.progressiveLoad?this._loadDataProgressive():this._loadDataStandard(e)},Ajax.prototype.nextPage=function(e){var t;this.loading||(t=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.getElement().clientHeight,e<t&&this.table.modules.page.nextPage().then(function(){}).catch(function(){}))},Ajax.prototype.blockActiveRequest=function(){this.requestOrder++},Ajax.prototype._loadDataProgressive=function(){return this.table.rowManager.setData([]),this.table.modules.page.setPage(1)},Ajax.prototype._loadDataStandard=function(e){var t=this;return new Promise(function(o,a){t.sendRequest(e).then(function(r){t.table.rowManager.setData(r,e).then(function(){o()}).catch(function(e){a(e)})}).catch(function(e){a(e)})})},Ajax.prototype.generateParamsList=function(e,t){var o=this,a=[];if(t=t||"",Array.isArray(e))e.forEach(function(e,r){a=a.concat(o.generateParamsList(e,t?t+"["+r+"]":r))});else if("object"===(void 0===e?"undefined":_typeof(e)))for(var r in e)a=a.concat(o.generateParamsList(e[r],t?t+"["+r+"]":r));else a.push({key:t,value:e});return a},Ajax.prototype.serializeParams=function(e){var t=this.generateParamsList(e),o=[];return t.forEach(function(e){o.push(encodeURIComponent(e.key)+"="+encodeURIComponent(e.value))}),o.join("&")},Ajax.prototype.sendRequest=function(e){var t,o=this,a=this,r=a.url;return a.requestOrder++,t=a.requestOrder,a._loadDefaultConfig(),new Promise(function(i,n){!1!==a.table.options.ajaxRequesting.call(o.table,a.url,a.params)?(a.loading=!0,e||a.showLoader(),o.loaderPromise(r,a.config,a.params).then(function(e){t===a.requestOrder?(a.table.options.ajaxResponse&&(e=a.table.options.ajaxResponse.call(a.table,a.url,a.params,e)),i(e)):console.warn("Ajax Response Blocked - An active ajax request was blocked by an attempt to change table data while the request was being made"),a.hideLoader(),a.loading=!1}).catch(function(e){console.error("Ajax Load Error: ",e),a.table.options.ajaxError.call(a.table,e),a.showError(),setTimeout(function(){a.hideLoader()},3e3),a.loading=!1,n()})):n()})},Ajax.prototype.showLoader=function(){if("function"==typeof this.table.options.ajaxLoader?this.table.options.ajaxLoader():this.table.options.ajaxLoader){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.table.modules.localize.getText("ajax|loading"),this.table.element.appendChild(this.loaderElement)}},Ajax.prototype.showError=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.table.modules.localize.getText("ajax|error"),this.table.element.appendChild(this.loaderElement)},Ajax.prototype.hideLoader=function(){this.loaderElement.parentNode&&this.loaderElement.parentNode.removeChild(this.loaderElement)},Ajax.prototype.defaultConfig={method:"GET"},Ajax.prototype.defaultURLGenerator=function(e,t,o){return e&&o&&Object.keys(o).length&&(t.method&&"get"!=t.method.toLowerCase()||(t.method="get",e+=(e.includes("?")?"&":"?")+this.serializeParams(o))),e},Ajax.prototype.defaultLoaderPromise=function(e,t,o){var a,r=this;return new Promise(function(i,n){if(e=r.urlGenerator(e,t,o),"GET"!=t.method.toUpperCase())if(a="object"===_typeof(r.table.options.ajaxContentType)?r.table.options.ajaxContentType:r.contentTypeFormatters[r.table.options.ajaxContentType]){for(var s in a.headers)t.headers||(t.headers={}),void 0===t.headers[s]&&(t.headers[s]=a.headers[s]);t.body=a.body.call(r,e,t,o)}else console.warn("Ajax Error - Invalid ajaxContentType value:",r.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["Access-Control-Allow-Origin"]&&(t.headers["Access-Control-Allow-Origin"]=window.location.origin),void 0===t.credentials&&(t.credentials="same-origin")):void 0===t.credentials&&(t.credentials="include"),fetch(e,t).then(function(e){e.ok?e.json().then(function(e){i(e)}).catch(function(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(function(e){console.error("Ajax Load Error - Connection Error: ",e),n(e)})):(console.warn("Ajax Load Error - No URL Set"),i([]))})},Ajax.prototype.contentTypeFormatters={json:{headers:{"Content-Type":"application/json"},body:function(e,t,o){return JSON.stringify(o)}},form:{headers:{},body:function(e,t,o){var a=this.generateParamsList(o),r=new FormData;return a.forEach(function(e){r.append(e.key,e.value)}),r}}},Tabulator.prototype.registerModule("ajax",Ajax);
\ No newline at end of file
index 2ab41c9..509ce47 100644 (file)
@@ -1,6 +1,6 @@
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 
 var ColumnCalcs = function ColumnCalcs(table) {
        this.table = table; //hold Tabulator object
@@ -235,14 +235,13 @@ ColumnCalcs.prototype.generateRow = function (pos, data) {
                self.table.modules.mutator.disable();
        }
 
-       row = new Row(rowData, this);
+       row = new Row(rowData, this, "calc");
 
        if (self.table.modExists("mutator")) {
                self.table.modules.mutator.enable();
        }
 
        row.getElement().classList.add("tabulator-calcs", "tabulator-calcs-" + pos);
-       row.type = "calc";
 
        row.generateCells = function () {
 
index 9aae8ba..5aa5152 100644 (file)
@@ -1,2 +1,2 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ColumnCalcs=function(t){this.table=t,this.topCalcs=[],this.botCalcs=[],this.genColumn=!1,this.topElement=this.createElement(),this.botElement=this.createElement(),this.topRow=!1,this.botRow=!1,this.topInitialized=!1,this.botInitialized=!1,this.initialize()};ColumnCalcs.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-calcs-holder"),t},ColumnCalcs.prototype.initialize=function(){this.genColumn=new Column({field:"value"},this)},ColumnCalcs.prototype.registerColumnField=function(){},ColumnCalcs.prototype.initializeColumn=function(t){var o=t.definition,e={topCalcParams:o.topCalcParams||{},botCalcParams:o.bottomCalcParams||{}};if(o.topCalc){switch(_typeof(o.topCalc)){case"string":this.calculations[o.topCalc]?e.topCalc=this.calculations[o.topCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",o.topCalc);break;case"function":e.topCalc=o.topCalc}e.topCalc&&(t.modules.columnCalcs=e,this.topCalcs.push(t),"group"!=this.table.options.columnCalcs&&this.initializeTopRow())}if(o.bottomCalc){switch(_typeof(o.bottomCalc)){case"string":this.calculations[o.bottomCalc]?e.botCalc=this.calculations[o.bottomCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",o.bottomCalc);break;case"function":e.botCalc=o.bottomCalc}e.botCalc&&(t.modules.columnCalcs=e,this.botCalcs.push(t),"group"!=this.table.options.columnCalcs&&this.initializeBottomRow())}},ColumnCalcs.prototype.removeCalcs=function(){var t=!1;this.topInitialized&&(this.topInitialized=!1,this.topElement.parentNode.removeChild(this.topElement),t=!0),this.botInitialized&&(this.botInitialized=!1,this.table.footerManager.remove(this.botElement),t=!0),t&&this.table.rowManager.adjustTableSize()},ColumnCalcs.prototype.initializeTopRow=function(){this.topInitialized||(this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling),this.topInitialized=!0)},ColumnCalcs.prototype.initializeBottomRow=function(){this.botInitialized||(this.table.footerManager.prepend(this.botElement),this.botInitialized=!0)},ColumnCalcs.prototype.scrollHorizontal=function(t){this.table.columnManager.getElement().scrollWidth,this.table.element.clientWidth;this.botInitialized&&(this.botRow.getElement().style.marginLeft=-t+"px")},ColumnCalcs.prototype.recalc=function(t){var o;if(this.topInitialized||this.botInitialized){if(this.rowsToData(t),this.topInitialized){for(this.topRow&&this.topRow.deleteCells(),o=this.generateRow("top",this.rowsToData(t)),this.topRow=o;this.topElement.firstChild;)this.topElement.removeChild(this.topElement.firstChild);this.topElement.appendChild(o.getElement()),o.initialize(!0)}if(this.botInitialized){for(this.botRow&&this.botRow.deleteCells(),o=this.generateRow("bottom",this.rowsToData(t)),this.botRow=o;this.botElement.firstChild;)this.botElement.removeChild(this.botElement.firstChild);this.botElement.appendChild(o.getElement()),o.initialize(!0)}this.table.rowManager.adjustTableSize(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()}},ColumnCalcs.prototype.recalcRowGroup=function(t){this.recalcGroup(this.table.modules.groupRows.getRowGroup(t))},ColumnCalcs.prototype.recalcGroup=function(t){var o,e;t&&t.calcs&&(t.calcs.bottom&&(o=this.rowsToData(t.rows),e=this.generateRowData("bottom",o),t.calcs.bottom.updateData(e),t.calcs.bottom.reinitialize()),t.calcs.top&&(o=this.rowsToData(t.rows),e=this.generateRowData("top",o),t.calcs.top.updateData(e),t.calcs.top.reinitialize()))},ColumnCalcs.prototype.generateTopRow=function(t){return this.generateRow("top",this.rowsToData(t))},ColumnCalcs.prototype.generateBottomRow=function(t){return this.generateRow("bottom",this.rowsToData(t))},ColumnCalcs.prototype.rowsToData=function(t){var o=[];return t.forEach(function(t){o.push(t.getData())}),o},ColumnCalcs.prototype.generateRow=function(t,o){var e,i=this,l=this.generateRowData(t,o);return i.table.modExists("mutator")&&i.table.modules.mutator.disable(),e=new Row(l,this),i.table.modExists("mutator")&&i.table.modules.mutator.enable(),e.getElement().classList.add("tabulator-calcs","tabulator-calcs-"+t),e.type="calc",e.generateCells=function(){var o=[];i.table.columnManager.columnsByIndex.forEach(function(l){i.genColumn.setField(l.getField()),i.genColumn.hozAlign=l.hozAlign,l.definition[t+"CalcFormatter"]&&i.table.modExists("format")?i.genColumn.modules.format={formatter:i.table.modules.format.getFormatter(l.definition[t+"CalcFormatter"]),params:l.definition[t+"CalcFormatterParams"]}:i.genColumn.modules.format={formatter:i.table.modules.format.getFormatter("plaintext"),params:{}},i.genColumn.definition.cssClass=l.definition.cssClass;var a=new Cell(i.genColumn,e);a.column=l,a.setWidth(),l.cells.push(a),o.push(a),l.visible||a.hide()}),this.cells=o},e},ColumnCalcs.prototype.generateRowData=function(t,o){var e,i,l={},a="top"==t?this.topCalcs:this.botCalcs,n="top"==t?"topCalc":"botCalc";return a.forEach(function(t){var a=[];t.modules.columnCalcs&&t.modules.columnCalcs[n]&&(o.forEach(function(o){a.push(t.getFieldValue(o))}),i=n+"Params",e="function"==typeof t.modules.columnCalcs[i]?t.modules.columnCalcs[i](a,o):t.modules.columnCalcs[i],t.setFieldValue(l,t.modules.columnCalcs[n](a,o,e)))}),l},ColumnCalcs.prototype.hasTopCalcs=function(){return!!this.topCalcs.length},ColumnCalcs.prototype.hasBottomCalcs=function(){return!!this.botCalcs.length},ColumnCalcs.prototype.redraw=function(){this.topRow&&this.topRow.normalizeHeight(!0),this.botRow&&this.botRow.normalizeHeight(!0)},ColumnCalcs.prototype.getResults=function(){var t,o=this,e={};return this.table.options.groupBy&&this.table.modExists("groupRows")?(t=this.table.modules.groupRows.getGroups(!0),t.forEach(function(t){e[t.getKey()]=o.getGroupResults(t)})):e={top:this.topRow?this.topRow.getData():{},bottom:this.botRow?this.botRow.getData():{}},e},ColumnCalcs.prototype.getGroupResults=function(t){var o=this,e=t._getSelf(),i=t.getSubGroups(),l={};return i.forEach(function(t){l[t.getKey()]=o.getGroupResults(t)}),{top:e.calcs.top?e.calcs.top.getData():{},bottom:e.calcs.bottom?e.calcs.bottom.getData():{},groups:l}},ColumnCalcs.prototype.calculations={avg:function(t,o,e){var i=0,l=void 0!==e.precision?e.precision:2;return t.length&&(i=t.reduce(function(t,o){return o=Number(o),t+o}),i/=t.length,i=!1!==l?i.toFixed(l):i),parseFloat(i).toString()},max:function(t,o,e){var i=null,l=void 0!==e.precision&&e.precision;return t.forEach(function(t){((t=Number(t))>i||null===i)&&(i=t)}),null!==i?!1!==l?i.toFixed(l):i:""},min:function(t,o,e){var i=null,l=void 0!==e.precision&&e.precision;return t.forEach(function(t){((t=Number(t))<i||null===i)&&(i=t)}),null!==i?!1!==l?i.toFixed(l):i:""},sum:function(t,o,e){var i=0,l=void 0!==e.precision&&e.precision;return t.length&&t.forEach(function(t){t=Number(t),i+=isNaN(t)?0:Number(t)}),!1!==l?i.toFixed(l):i},concat:function(t,o,e){var i=0;return t.length&&(i=t.reduce(function(t,o){return String(t)+String(o)})),i},count:function(t,o,e){var i=0;return t.length&&t.forEach(function(t){t&&i++}),i}},Tabulator.prototype.registerModule("columnCalcs",ColumnCalcs);
\ No newline at end of file
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ColumnCalcs=function(t){this.table=t,this.topCalcs=[],this.botCalcs=[],this.genColumn=!1,this.topElement=this.createElement(),this.botElement=this.createElement(),this.topRow=!1,this.botRow=!1,this.topInitialized=!1,this.botInitialized=!1,this.initialize()};ColumnCalcs.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-calcs-holder"),t},ColumnCalcs.prototype.initialize=function(){this.genColumn=new Column({field:"value"},this)},ColumnCalcs.prototype.registerColumnField=function(){},ColumnCalcs.prototype.initializeColumn=function(t){var o=t.definition,e={topCalcParams:o.topCalcParams||{},botCalcParams:o.bottomCalcParams||{}};if(o.topCalc){switch(_typeof(o.topCalc)){case"string":this.calculations[o.topCalc]?e.topCalc=this.calculations[o.topCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",o.topCalc);break;case"function":e.topCalc=o.topCalc}e.topCalc&&(t.modules.columnCalcs=e,this.topCalcs.push(t),"group"!=this.table.options.columnCalcs&&this.initializeTopRow())}if(o.bottomCalc){switch(_typeof(o.bottomCalc)){case"string":this.calculations[o.bottomCalc]?e.botCalc=this.calculations[o.bottomCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",o.bottomCalc);break;case"function":e.botCalc=o.bottomCalc}e.botCalc&&(t.modules.columnCalcs=e,this.botCalcs.push(t),"group"!=this.table.options.columnCalcs&&this.initializeBottomRow())}},ColumnCalcs.prototype.removeCalcs=function(){var t=!1;this.topInitialized&&(this.topInitialized=!1,this.topElement.parentNode.removeChild(this.topElement),t=!0),this.botInitialized&&(this.botInitialized=!1,this.table.footerManager.remove(this.botElement),t=!0),t&&this.table.rowManager.adjustTableSize()},ColumnCalcs.prototype.initializeTopRow=function(){this.topInitialized||(this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling),this.topInitialized=!0)},ColumnCalcs.prototype.initializeBottomRow=function(){this.botInitialized||(this.table.footerManager.prepend(this.botElement),this.botInitialized=!0)},ColumnCalcs.prototype.scrollHorizontal=function(t){this.table.columnManager.getElement().scrollWidth,this.table.element.clientWidth;this.botInitialized&&(this.botRow.getElement().style.marginLeft=-t+"px")},ColumnCalcs.prototype.recalc=function(t){var o;if(this.topInitialized||this.botInitialized){if(this.rowsToData(t),this.topInitialized){for(this.topRow&&this.topRow.deleteCells(),o=this.generateRow("top",this.rowsToData(t)),this.topRow=o;this.topElement.firstChild;)this.topElement.removeChild(this.topElement.firstChild);this.topElement.appendChild(o.getElement()),o.initialize(!0)}if(this.botInitialized){for(this.botRow&&this.botRow.deleteCells(),o=this.generateRow("bottom",this.rowsToData(t)),this.botRow=o;this.botElement.firstChild;)this.botElement.removeChild(this.botElement.firstChild);this.botElement.appendChild(o.getElement()),o.initialize(!0)}this.table.rowManager.adjustTableSize(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()}},ColumnCalcs.prototype.recalcRowGroup=function(t){this.recalcGroup(this.table.modules.groupRows.getRowGroup(t))},ColumnCalcs.prototype.recalcGroup=function(t){var o,e;t&&t.calcs&&(t.calcs.bottom&&(o=this.rowsToData(t.rows),e=this.generateRowData("bottom",o),t.calcs.bottom.updateData(e),t.calcs.bottom.reinitialize()),t.calcs.top&&(o=this.rowsToData(t.rows),e=this.generateRowData("top",o),t.calcs.top.updateData(e),t.calcs.top.reinitialize()))},ColumnCalcs.prototype.generateTopRow=function(t){return this.generateRow("top",this.rowsToData(t))},ColumnCalcs.prototype.generateBottomRow=function(t){return this.generateRow("bottom",this.rowsToData(t))},ColumnCalcs.prototype.rowsToData=function(t){var o=[];return t.forEach(function(t){o.push(t.getData())}),o},ColumnCalcs.prototype.generateRow=function(t,o){var e,i=this,l=this.generateRowData(t,o);return i.table.modExists("mutator")&&i.table.modules.mutator.disable(),e=new Row(l,this,"calc"),i.table.modExists("mutator")&&i.table.modules.mutator.enable(),e.getElement().classList.add("tabulator-calcs","tabulator-calcs-"+t),e.generateCells=function(){var o=[];i.table.columnManager.columnsByIndex.forEach(function(l){i.genColumn.setField(l.getField()),i.genColumn.hozAlign=l.hozAlign,l.definition[t+"CalcFormatter"]&&i.table.modExists("format")?i.genColumn.modules.format={formatter:i.table.modules.format.getFormatter(l.definition[t+"CalcFormatter"]),params:l.definition[t+"CalcFormatterParams"]}:i.genColumn.modules.format={formatter:i.table.modules.format.getFormatter("plaintext"),params:{}},i.genColumn.definition.cssClass=l.definition.cssClass;var a=new Cell(i.genColumn,e);a.column=l,a.setWidth(),l.cells.push(a),o.push(a),l.visible||a.hide()}),this.cells=o},e},ColumnCalcs.prototype.generateRowData=function(t,o){var e,i,l={},a="top"==t?this.topCalcs:this.botCalcs,n="top"==t?"topCalc":"botCalc";return a.forEach(function(t){var a=[];t.modules.columnCalcs&&t.modules.columnCalcs[n]&&(o.forEach(function(o){a.push(t.getFieldValue(o))}),i=n+"Params",e="function"==typeof t.modules.columnCalcs[i]?t.modules.columnCalcs[i](a,o):t.modules.columnCalcs[i],t.setFieldValue(l,t.modules.columnCalcs[n](a,o,e)))}),l},ColumnCalcs.prototype.hasTopCalcs=function(){return!!this.topCalcs.length},ColumnCalcs.prototype.hasBottomCalcs=function(){return!!this.botCalcs.length},ColumnCalcs.prototype.redraw=function(){this.topRow&&this.topRow.normalizeHeight(!0),this.botRow&&this.botRow.normalizeHeight(!0)},ColumnCalcs.prototype.getResults=function(){var t,o=this,e={};return this.table.options.groupBy&&this.table.modExists("groupRows")?(t=this.table.modules.groupRows.getGroups(!0),t.forEach(function(t){e[t.getKey()]=o.getGroupResults(t)})):e={top:this.topRow?this.topRow.getData():{},bottom:this.botRow?this.botRow.getData():{}},e},ColumnCalcs.prototype.getGroupResults=function(t){var o=this,e=t._getSelf(),i=t.getSubGroups(),l={};return i.forEach(function(t){l[t.getKey()]=o.getGroupResults(t)}),{top:e.calcs.top?e.calcs.top.getData():{},bottom:e.calcs.bottom?e.calcs.bottom.getData():{},groups:l}},ColumnCalcs.prototype.calculations={avg:function(t,o,e){var i=0,l=void 0!==e.precision?e.precision:2;return t.length&&(i=t.reduce(function(t,o){return o=Number(o),t+o}),i/=t.length,i=!1!==l?i.toFixed(l):i),parseFloat(i).toString()},max:function(t,o,e){var i=null,l=void 0!==e.precision&&e.precision;return t.forEach(function(t){((t=Number(t))>i||null===i)&&(i=t)}),null!==i?!1!==l?i.toFixed(l):i:""},min:function(t,o,e){var i=null,l=void 0!==e.precision&&e.precision;return t.forEach(function(t){((t=Number(t))<i||null===i)&&(i=t)}),null!==i?!1!==l?i.toFixed(l):i:""},sum:function(t,o,e){var i=0,l=void 0!==e.precision&&e.precision;return t.length&&t.forEach(function(t){t=Number(t),i+=isNaN(t)?0:Number(t)}),!1!==l?i.toFixed(l):i},concat:function(t,o,e){var i=0;return t.length&&(i=t.reduce(function(t,o){return String(t)+String(o)})),i},count:function(t,o,e){var i=0;return t.length&&t.forEach(function(t){t&&i++}),i}},Tabulator.prototype.registerModule("columnCalcs",ColumnCalcs);
\ No newline at end of file
index 60a3fe2..3cea646 100644 (file)
@@ -1,6 +1,6 @@
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 
 var Clipboard = function Clipboard(table) {
        this.table = table;
@@ -488,18 +488,20 @@ Clipboard.prototype.buildOutput = function (rows, config, params) {
 
        var output = [],
            calcs,
-           columns = [];
+           columns = [],
+           columnsByIndex = [];
+
+       this.table.columnManager.columnsByIndex.forEach(function (column) {
+               if (column.definition.clipboard || column.visible && column.definition.clipboard !== false) {
+                       columnsByIndex.push(column);
+               }
+       });
 
        if (config.columnHeaders == "groups") {
                columns = this.generateColumnGroupHeaders(this.table.columnManager.columns);
-
                output = output.concat(this.groupHeadersToRows(columns));
        } else {
-               this.table.columnManager.columnsByIndex.forEach(function (column) {
-                       if (column.definition.clipboard || column.visible && column.definition.clipboard !== false) {
-                               columns.push(column);
-                       }
-               });
+               columns = columnsByIndex;
 
                output.push(this.generateSimpleHeaders(columns));
        }
@@ -516,17 +518,17 @@ Clipboard.prototype.buildOutput = function (rows, config, params) {
        //generate unstyled content
        if (config.rowGroups) {
                rows.forEach(function (row) {
-                       output = output.concat(_this5.parseRowGroupData(row, columns, config, params, calcs || {}));
+                       output = output.concat(_this5.parseRowGroupData(row, columnsByIndex, config, params, calcs || {}));
                });
        } else {
                if (config.columnCalcs) {
-                       output = output.concat(this.getCalcRow(calcs, columns, "top"));
+                       output = output.concat(this.getCalcRow(calcs, columnsByIndex, "top"));
                }
 
-               output = output.concat(this.rowsToData(rows, columns, config, params));
+               output = output.concat(this.rowsToData(rows, columnsByIndex, config, params));
 
                if (config.columnCalcs) {
-                       output = output.concat(this.getCalcRow(calcs, columns, "bottom"));
+                       output = output.concat(this.getCalcRow(calcs, columnsByIndex, "bottom"));
                }
        }
 
@@ -629,6 +631,8 @@ Clipboard.prototype.generateHTML = function (rows, columns, calcs, config, param
 
        function parseColumnGroup(column, level) {
 
+               var actualColumns = [];
+
                if (typeof headers[level] === "undefined") {
                        headers[level] = [];
                }
@@ -643,8 +647,12 @@ Clipboard.prototype.generateHTML = function (rows, columns, calcs, config, param
 
                if (column.subGroups) {
                        column.subGroups.forEach(function (subGroup) {
-                               parseColumnGroup(subGroup, level + 1);
+                               actualColumns = actualColumns.concat(parseColumnGroup(subGroup, level + 1));
                        });
+
+                       return actualColumns;
+               } else {
+                       return [column.column];
                }
        }
 
@@ -676,10 +684,15 @@ Clipboard.prototype.generateHTML = function (rows, columns, calcs, config, param
        //create headers if needed
        if (config.columnHeaders) {
                if (config.columnHeaders == "groups") {
+
+                       var actualColumns = [];
+
                        columns.forEach(function (column) {
-                               parseColumnGroup(column, 0);
+                               actualColumns = actualColumns.concat(parseColumnGroup(column, 0));
                        });
 
+                       columns = actualColumns;
+
                        padVerticalColumnheaders();
                        generateHeaders(headers);
                } else {
@@ -883,7 +896,18 @@ Clipboard.prototype.copySelectors = {
                if (config.rowGroups) {
                        rows = this.buildComplexRows(config);
                } else {
-                       rows = this.table.rowManager.getComponents(true);
+                       rows = this.table.rowManager.getComponents("active");
+               }
+
+               return this.buildOutput(rows, config, params);
+       },
+       visible: function visible(config, params) {
+               var rows;
+
+               if (config.rowGroups) {
+                       rows = this.buildComplexRows(config);
+               } else {
+                       rows = this.table.rowManager.getComponents("visible");
                }
 
                return this.buildOutput(rows, config, params);
@@ -898,6 +922,7 @@ Clipboard.prototype.copyFormatters = {
                var output = [];
 
                data.forEach(function (row) {
+                       var newRow = [];
                        row.forEach(function (value) {
                                if (typeof value == "undefined") {
                                        value = "";
@@ -909,9 +934,10 @@ Clipboard.prototype.copyFormatters = {
                                        value = value.split('"').join('""');
                                        value = '"' + value + '"';
                                }
+                               newRow.push(value);
                        });
 
-                       output.push(row.join("\t"));
+                       output.push(newRow.join("\t"));
                });
 
                return output.join("\n");
index 5c068c1..b0461a5 100644 (file)
@@ -1,2 +1,2 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Clipboard=function(t){this.table=t,this.mode=!0,this.copySelector=!1,this.copySelectorParams={},this.copyFormatter=!1,this.copyFormatterParams={},this.pasteParser=function(){},this.pasteAction=function(){},this.htmlElement=!1,this.config={},this.blocked=!0};Clipboard.prototype.initialize=function(){var t=this;this.mode=this.table.options.clipboard,!0!==this.mode&&"copy"!==this.mode||this.table.element.addEventListener("copy",function(o){var e;t.processConfig(),t.blocked||(o.preventDefault(),e=t.generateContent(),window.clipboardData&&window.clipboardData.setData?window.clipboardData.setData("Text",e):o.clipboardData&&o.clipboardData.setData?(o.clipboardData.setData("text/plain",e),t.htmlElement&&o.clipboardData.setData("text/html",t.htmlElement.outerHTML)):o.originalEvent&&o.originalEvent.clipboardData.setData&&(o.originalEvent.clipboardData.setData("text/plain",e),t.htmlElement&&o.originalEvent.clipboardData.setData("text/html",t.htmlElement.outerHTML)),t.table.options.clipboardCopied.call(this.table,e),t.reset())}),!0!==this.mode&&"paste"!==this.mode||this.table.element.addEventListener("paste",function(o){t.paste(o)}),this.setPasteParser(this.table.options.clipboardPasteParser),this.setPasteAction(this.table.options.clipboardPasteAction)},Clipboard.prototype.processConfig=function(){var t={columnHeaders:"groups",rowGroups:!0,columnCalcs:!0};if(void 0!==this.table.options.clipboardCopyHeader&&(t.columnHeaders=this.table.options.clipboardCopyHeader,console.warn("DEPRECATION WARNING - clipboardCopyHeader option has been deprecated, please use the columnHeaders property on the clipboardCopyConfig option")),this.table.options.clipboardCopyConfig)for(var o in this.table.options.clipboardCopyConfig)t[o]=this.table.options.clipboardCopyConfig[o];t.rowGroups&&this.table.options.groupBy&&this.table.modExists("groupRows")&&(this.config.rowGroups=!0),t.columnHeaders?"groups"!==t.columnHeaders&&!0!==t||this.table.columnManager.columns.length==this.table.columnManager.columnsByIndex.length?this.config.columnHeaders="columns":this.config.columnHeaders="groups":this.config.columnHeaders=!1,t.columnCalcs&&this.table.modExists("columnCalcs")&&(this.config.columnCalcs=!0)},Clipboard.prototype.reset=function(){this.blocked=!1,this.originalSelectionText=""},Clipboard.prototype.setPasteAction=function(t){switch(void 0===t?"undefined":_typeof(t)){case"string":this.pasteAction=this.pasteActions[t],this.pasteAction||console.warn("Clipboard Error - No such paste action found:",t);break;case"function":this.pasteAction=t}},Clipboard.prototype.setPasteParser=function(t){switch(void 0===t?"undefined":_typeof(t)){case"string":this.pasteParser=this.pasteParsers[t],this.pasteParser||console.warn("Clipboard Error - No such paste parser found:",t);break;case"function":this.pasteParser=t}},Clipboard.prototype.paste=function(t){var o,e,r;this.checkPaseOrigin(t)&&(o=this.getPasteData(t),e=this.pasteParser.call(this,o),e?(t.preventDefault(),this.table.modExists("mutator")&&(e=this.mutateData(e)),r=this.pasteAction.call(this,e),this.table.options.clipboardPasted.call(this.table,o,e,r)):this.table.options.clipboardPasteError.call(this.table,o))},Clipboard.prototype.mutateData=function(t){var o=this,e=[];return Array.isArray(t)?t.forEach(function(t){e.push(o.table.modules.mutator.transformRow(t,"clipboard"))}):e=t,e},Clipboard.prototype.checkPaseOrigin=function(t){var o=!0;return("DIV"!=t.target.tagName||this.table.modules.edit.currentCell)&&(o=!1),o},Clipboard.prototype.getPasteData=function(t){var o;return window.clipboardData&&window.clipboardData.getData?o=window.clipboardData.getData("Text"):t.clipboardData&&t.clipboardData.getData?o=t.clipboardData.getData("text/plain"):t.originalEvent&&t.originalEvent.clipboardData.getData&&(o=t.originalEvent.clipboardData.getData("text/plain")),o},Clipboard.prototype.copy=function(t,o,e,r,a){var n,i,l;this.blocked=!1,!0!==this.mode&&"copy"!==this.mode||(void 0!==window.getSelection&&void 0!==document.createRange?(n=document.createRange(),n.selectNodeContents(this.table.element),i=window.getSelection(),i.toString()&&a&&(t="userSelection",e="raw",o=i.toString()),i.removeAllRanges(),i.addRange(n)):void 0!==document.selection&&void 0!==document.body.createTextRange&&(l=document.body.createTextRange(),l.moveToElementText(this.table.element),l.select()),this.setSelector(t),this.copySelectorParams=void 0!==o&&null!=o?o:this.config.columnHeaders,this.setFormatter(e),this.copyFormatterParams=void 0!==r&&null!=r?r:{},document.execCommand("copy"),i&&i.removeAllRanges())},Clipboard.prototype.setSelector=function(t){switch(t=t||this.table.options.clipboardCopySelector,void 0===t?"undefined":_typeof(t)){case"string":this.copySelectors[t]?this.copySelector=this.copySelectors[t]:console.warn("Clipboard Error - No such selector found:",t);break;case"function":this.copySelector=t}},Clipboard.prototype.setFormatter=function(t){switch(t=t||this.table.options.clipboardCopyFormatter,void 0===t?"undefined":_typeof(t)){case"string":this.copyFormatters[t]?this.copyFormatter=this.copyFormatters[t]:console.warn("Clipboard Error - No such formatter found:",t);break;case"function":this.copyFormatter=t}},Clipboard.prototype.generateContent=function(){var t;return this.htmlElement=!1,t=this.copySelector.call(this,this.config,this.copySelectorParams),this.copyFormatter.call(this,t,this.config,this.copyFormatterParams)},Clipboard.prototype.generateSimpleHeaders=function(t){var o=[];return t.forEach(function(t){o.push(t.definition.title)}),o},Clipboard.prototype.generateColumnGroupHeaders=function(t){var o=this,e=[];return this.table.columnManager.columns.forEach(function(t){var r=o.processColumnGroup(t);r&&e.push(r)}),e},Clipboard.prototype.processColumnGroup=function(t){var o=this,e=t.columns,r={type:"group",title:t.definition.title,column:t};if(e.length){if(r.subGroups=[],r.width=0,e.forEach(function(t){var e=o.processColumnGroup(t);e&&(r.width+=e.width,r.subGroups.push(e))}),!r.width)return!1}else{if(!t.field||!(t.definition.clipboard||t.visible&&!1!==t.definition.clipboard))return!1;r.width=1}return r},Clipboard.prototype.groupHeadersToRows=function(t){function o(t,a){void 0===r[a]&&(r[a]=[]),r[a].push(t.title),t.subGroups?t.subGroups.forEach(function(t){o(t,a+1)}):e()}function e(){var t=0;r.forEach(function(o){var e=o.length;e>t&&(t=e)}),r.forEach(function(o){var e=o.length;if(e<t)for(var r=e;r<t;r++)o.push("")})}var r=[];return t.forEach(function(t){o(t,0)}),r},Clipboard.prototype.rowsToData=function(t,o,e,r){var a=[];return t.forEach(function(t){var e=[],r=t instanceof RowComponent?t.getData("clipboard"):t;o.forEach(function(t){var o=t.getFieldValue(r);switch(void 0===o?"undefined":_typeof(o)){case"object":o=JSON.stringify(o);break;case"undefined":case"null":o="";break;default:o=o}e.push(o)}),a.push(e)}),a},Clipboard.prototype.buildComplexRows=function(t){var o=this,e=[];return this.table.modules.groupRows.getGroups().forEach(function(t){e.push(o.processGroupData(t))}),e},Clipboard.prototype.processGroupData=function(t){var o=this,e=t.getSubGroups(),r={type:"group",key:t.key};return e.length?(r.subGroups=[],e.forEach(function(t){r.subGroups.push(o.processGroupData(t))})):r.rows=t.getRows(!0),r},Clipboard.prototype.getCalcRow=function(t,o,e,r){var a=t[e];return a&&(r&&(a=a[r]),Object.keys(a).length)?this.rowsToData([a],o):[]},Clipboard.prototype.buildOutput=function(t,o,e){var r,a=this,n=[],i=[];return"groups"==o.columnHeaders?(i=this.generateColumnGroupHeaders(this.table.columnManager.columns),n=n.concat(this.groupHeadersToRows(i))):(this.table.columnManager.columnsByIndex.forEach(function(t){(t.definition.clipboard||t.visible&&!1!==t.definition.clipboard)&&i.push(t)}),n.push(this.generateSimpleHeaders(i))),this.config.columnCalcs&&(r=this.table.getCalcResults()),this.table.options.clipboardCopyStyled&&this.generateHTML(t,i,r,o,e),o.rowGroups?t.forEach(function(t){n=n.concat(a.parseRowGroupData(t,i,o,e,r||{}))}):(o.columnCalcs&&(n=n.concat(this.getCalcRow(r,i,"top"))),n=n.concat(this.rowsToData(t,i,o,e)),o.columnCalcs&&(n=n.concat(this.getCalcRow(r,i,"bottom")))),n},Clipboard.prototype.parseRowGroupData=function(t,o,e,r,a){var n=this,i=[];return i.push([t.key]),t.subGroups?t.subGroups.forEach(function(o){i=i.concat(n.parseRowGroupData(o,e,r,a[t.key]?a[t.key].groups||{}:{}))}):(e.columnCalcs&&(i=i.concat(this.getCalcRow(a,o,t.key,"top"))),i=i.concat(this.rowsToData(t.rows,o,e,r)),e.columnCalcs&&(i=i.concat(this.getCalcRow(a,o,t.key,"bottom")))),i},Clipboard.prototype.generateHTML=function(t,o,e,r,a){function n(t,o){void 0===y[o]&&(y[o]=[]),y[o].push({title:t.title,width:t.width,height:1,children:!!t.subGroups,element:t.column.getElement()}),t.subGroups&&t.subGroups.forEach(function(t){n(t,o+1)})}function i(t,o,e){var r=t[o];r&&(e&&(r=r[e]),Object.keys(r).length&&l([r]))}function l(t){t.forEach(function(t,e){var r,a=document.createElement("tr"),n=h,i=!1;t instanceof RowComponent?r=t.getData("clipboard"):(r=t,i=!0),o.forEach(function(t,e){var n=document.createElement("td"),i=t.getFieldValue(r);switch(void 0===i?"undefined":_typeof(i)){case"object":i=JSON.stringify(i);break;case"undefined":case"null":i="";break;default:i=i}n.innerHTML=i,t.definition.align&&(n.style.textAlign=t.definition.align),o.length,b&&g.mapElementStyles(b,n,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size"]),a.appendChild(n)}),i?n=d:(e%2||!p||(n=p),e%2&&u&&(n=u)),n&&g.mapElementStyles(n,a,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),c.appendChild(a)})}function s(t,e){var a=document.createElement("tr"),n=document.createElement("td");n.colSpan=o.length,n.innerHTML=t.key,a.appendChild(n),c.appendChild(a),g.mapElementStyles(f,a,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),t.subGroups?t.subGroups.forEach(function(o){s(o,e[t.key]?e[t.key].groups||{}:{})}):(r.columnCalcs&&i(e,t.key,"top"),l(t.rows),r.columnCalcs&&i(e,t.key,"bottom"))}var c,p,u,d,h,b,f,m,g=this,y=[];this.htmlElement=document.createElement("table"),g.mapElementStyles(this.table.element,this.htmlElement,["border-top","border-left","border-right","border-bottom"]),r.columnHeaders&&("groups"==r.columnHeaders?(o.forEach(function(t){n(t,0)}),function(){y.forEach(function(t,o){t.forEach(function(t){t.children||(t.height=y.length-o)})})}(),function(t){var o=document.createElement("thead");t.forEach(function(t){var e=document.createElement("tr");t.forEach(function(t){var o=document.createElement("th");t.width>1&&(o.colSpan=t.width),t.height>1&&(o.rowSpan=t.height),o.innerHTML=t.title,g.mapElementStyles(t.element,o,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),e.appendChild(o)}),g.mapElementStyles(g.table.columnManager.getHeadersElement(),e,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),o.appendChild(e)}),g.htmlElement.appendChild(o)}(y)):function(){var t=document.createElement("tr");o.forEach(function(o){var e=document.createElement("th");e.innerHTML=o.definition.title,g.mapElementStyles(o.getElement(),e,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),t.appendChild(e)}),g.mapElementStyles(g.table.columnManager.getHeadersElement(),t,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),g.htmlElement.appendChild(document.createElement("thead").appendChild(t))}()),c=document.createElement("tbody"),window.getComputedStyle&&(p=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),u=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),d=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),h=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),f=this.table.element.getElementsByClassName("tabulator-group")[0],h&&(m=h.getElementsByClassName("tabulator-cell"),b=m[0],m[m.length-1])),r.rowGroups?t.forEach(function(t){s(t,e||{})}):(r.columnCalcs&&i(e,"top"),l(t),r.columnCalcs&&i(e,"bottom")),this.htmlElement.appendChild(c)},Clipboard.prototype.mapElementStyles=function(t,o,e){var r={"background-color":"backgroundColor",color:"fontColor","font-weight":"fontWeight","font-family":"fontFamily","font-size":"fontSize","border-top":"borderTop","border-left":"borderLeft","border-right":"borderRight","border-bottom":"borderBottom"};if(window.getComputedStyle){var a=window.getComputedStyle(t);e.forEach(function(t){o.style[r[t]]=a.getPropertyValue(t)})}},Clipboard.prototype.copySelectors={userSelection:function(t,o){return o},selected:function(t,o){var e=[];return this.table.modExists("selectRow",!0)&&(e=this.table.modules.selectRow.getSelectedRows()),t.rowGroups&&console.warn("Clipboard Warning - select coptSelector does not support row groups"),this.buildOutput(e,t,o)},table:function(t,o){return t.rowGroups&&console.warn("Clipboard Warning - table coptSelector does not support row groups"),this.buildOutput(this.table.rowManager.getComponents(),t,o)},active:function(t,o){var e;return e=t.rowGroups?this.buildComplexRows(t):this.table.rowManager.getComponents(!0),this.buildOutput(e,t,o)}},Clipboard.prototype.copyFormatters={raw:function(t,o){return t},table:function(t,o){var e=[];return t.forEach(function(t){t.forEach(function(t){void 0===t&&(t=""),t=void 0===t||null===t?"":t.toString(),t.match(/\r|\n/)&&(t=t.split('"').join('""'),t='"'+t+'"')}),e.push(t.join("\t"))}),e.join("\n")}},Clipboard.prototype.pasteParsers={table:function(t){var o=[],e=!0,r=this.table.columnManager.columns,a=[],n=[];return t=t.split("\n"),t.forEach(function(t){o.push(t.split("\t"))}),!(!o.length||1===o.length&&o[0].length<2)&&(!0,o[0].forEach(function(t){var o=r.find(function(o){return t&&o.definition.title&&t.trim()&&o.definition.title.trim()===t.trim()});o?a.push(o):e=!1}),e||(e=!0,a=[],o[0].forEach(function(t){var o=r.find(function(o){return t&&o.field&&t.trim()&&o.field.trim()===t.trim()});o?a.push(o):e=!1}),e||(a=this.table.columnManager.columnsByIndex)),e&&o.shift(),o.forEach(function(t){var o={};t.forEach(function(t,e){a[e]&&(o[a[e].field]=t)}),n.push(o)}),n)}},Clipboard.prototype.pasteActions={replace:function(t){return this.table.setData(t)},update:function(t){return this.table.updateOrAddData(t)},insert:function(t){return this.table.addData(t)}},Tabulator.prototype.registerModule("clipboard",Clipboard);
\ No newline at end of file
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Clipboard=function(t){this.table=t,this.mode=!0,this.copySelector=!1,this.copySelectorParams={},this.copyFormatter=!1,this.copyFormatterParams={},this.pasteParser=function(){},this.pasteAction=function(){},this.htmlElement=!1,this.config={},this.blocked=!0};Clipboard.prototype.initialize=function(){var t=this;this.mode=this.table.options.clipboard,!0!==this.mode&&"copy"!==this.mode||this.table.element.addEventListener("copy",function(o){var e;t.processConfig(),t.blocked||(o.preventDefault(),e=t.generateContent(),window.clipboardData&&window.clipboardData.setData?window.clipboardData.setData("Text",e):o.clipboardData&&o.clipboardData.setData?(o.clipboardData.setData("text/plain",e),t.htmlElement&&o.clipboardData.setData("text/html",t.htmlElement.outerHTML)):o.originalEvent&&o.originalEvent.clipboardData.setData&&(o.originalEvent.clipboardData.setData("text/plain",e),t.htmlElement&&o.originalEvent.clipboardData.setData("text/html",t.htmlElement.outerHTML)),t.table.options.clipboardCopied.call(this.table,e),t.reset())}),!0!==this.mode&&"paste"!==this.mode||this.table.element.addEventListener("paste",function(o){t.paste(o)}),this.setPasteParser(this.table.options.clipboardPasteParser),this.setPasteAction(this.table.options.clipboardPasteAction)},Clipboard.prototype.processConfig=function(){var t={columnHeaders:"groups",rowGroups:!0,columnCalcs:!0};if(void 0!==this.table.options.clipboardCopyHeader&&(t.columnHeaders=this.table.options.clipboardCopyHeader,console.warn("DEPRECATION WARNING - clipboardCopyHeader option has been deprecated, please use the columnHeaders property on the clipboardCopyConfig option")),this.table.options.clipboardCopyConfig)for(var o in this.table.options.clipboardCopyConfig)t[o]=this.table.options.clipboardCopyConfig[o];t.rowGroups&&this.table.options.groupBy&&this.table.modExists("groupRows")&&(this.config.rowGroups=!0),t.columnHeaders?"groups"!==t.columnHeaders&&!0!==t||this.table.columnManager.columns.length==this.table.columnManager.columnsByIndex.length?this.config.columnHeaders="columns":this.config.columnHeaders="groups":this.config.columnHeaders=!1,t.columnCalcs&&this.table.modExists("columnCalcs")&&(this.config.columnCalcs=!0)},Clipboard.prototype.reset=function(){this.blocked=!1,this.originalSelectionText=""},Clipboard.prototype.setPasteAction=function(t){switch(void 0===t?"undefined":_typeof(t)){case"string":this.pasteAction=this.pasteActions[t],this.pasteAction||console.warn("Clipboard Error - No such paste action found:",t);break;case"function":this.pasteAction=t}},Clipboard.prototype.setPasteParser=function(t){switch(void 0===t?"undefined":_typeof(t)){case"string":this.pasteParser=this.pasteParsers[t],this.pasteParser||console.warn("Clipboard Error - No such paste parser found:",t);break;case"function":this.pasteParser=t}},Clipboard.prototype.paste=function(t){var o,e,r;this.checkPaseOrigin(t)&&(o=this.getPasteData(t),e=this.pasteParser.call(this,o),e?(t.preventDefault(),this.table.modExists("mutator")&&(e=this.mutateData(e)),r=this.pasteAction.call(this,e),this.table.options.clipboardPasted.call(this.table,o,e,r)):this.table.options.clipboardPasteError.call(this.table,o))},Clipboard.prototype.mutateData=function(t){var o=this,e=[];return Array.isArray(t)?t.forEach(function(t){e.push(o.table.modules.mutator.transformRow(t,"clipboard"))}):e=t,e},Clipboard.prototype.checkPaseOrigin=function(t){var o=!0;return("DIV"!=t.target.tagName||this.table.modules.edit.currentCell)&&(o=!1),o},Clipboard.prototype.getPasteData=function(t){var o;return window.clipboardData&&window.clipboardData.getData?o=window.clipboardData.getData("Text"):t.clipboardData&&t.clipboardData.getData?o=t.clipboardData.getData("text/plain"):t.originalEvent&&t.originalEvent.clipboardData.getData&&(o=t.originalEvent.clipboardData.getData("text/plain")),o},Clipboard.prototype.copy=function(t,o,e,r,a){var n,i,l;this.blocked=!1,!0!==this.mode&&"copy"!==this.mode||(void 0!==window.getSelection&&void 0!==document.createRange?(n=document.createRange(),n.selectNodeContents(this.table.element),i=window.getSelection(),i.toString()&&a&&(t="userSelection",e="raw",o=i.toString()),i.removeAllRanges(),i.addRange(n)):void 0!==document.selection&&void 0!==document.body.createTextRange&&(l=document.body.createTextRange(),l.moveToElementText(this.table.element),l.select()),this.setSelector(t),this.copySelectorParams=void 0!==o&&null!=o?o:this.config.columnHeaders,this.setFormatter(e),this.copyFormatterParams=void 0!==r&&null!=r?r:{},document.execCommand("copy"),i&&i.removeAllRanges())},Clipboard.prototype.setSelector=function(t){switch(t=t||this.table.options.clipboardCopySelector,void 0===t?"undefined":_typeof(t)){case"string":this.copySelectors[t]?this.copySelector=this.copySelectors[t]:console.warn("Clipboard Error - No such selector found:",t);break;case"function":this.copySelector=t}},Clipboard.prototype.setFormatter=function(t){switch(t=t||this.table.options.clipboardCopyFormatter,void 0===t?"undefined":_typeof(t)){case"string":this.copyFormatters[t]?this.copyFormatter=this.copyFormatters[t]:console.warn("Clipboard Error - No such formatter found:",t);break;case"function":this.copyFormatter=t}},Clipboard.prototype.generateContent=function(){var t;return this.htmlElement=!1,t=this.copySelector.call(this,this.config,this.copySelectorParams),this.copyFormatter.call(this,t,this.config,this.copyFormatterParams)},Clipboard.prototype.generateSimpleHeaders=function(t){var o=[];return t.forEach(function(t){o.push(t.definition.title)}),o},Clipboard.prototype.generateColumnGroupHeaders=function(t){var o=this,e=[];return this.table.columnManager.columns.forEach(function(t){var r=o.processColumnGroup(t);r&&e.push(r)}),e},Clipboard.prototype.processColumnGroup=function(t){var o=this,e=t.columns,r={type:"group",title:t.definition.title,column:t};if(e.length){if(r.subGroups=[],r.width=0,e.forEach(function(t){var e=o.processColumnGroup(t);e&&(r.width+=e.width,r.subGroups.push(e))}),!r.width)return!1}else{if(!t.field||!(t.definition.clipboard||t.visible&&!1!==t.definition.clipboard))return!1;r.width=1}return r},Clipboard.prototype.groupHeadersToRows=function(t){function o(t,a){void 0===r[a]&&(r[a]=[]),r[a].push(t.title),t.subGroups?t.subGroups.forEach(function(t){o(t,a+1)}):e()}function e(){var t=0;r.forEach(function(o){var e=o.length;e>t&&(t=e)}),r.forEach(function(o){var e=o.length;if(e<t)for(var r=e;r<t;r++)o.push("")})}var r=[];return t.forEach(function(t){o(t,0)}),r},Clipboard.prototype.rowsToData=function(t,o,e,r){var a=[];return t.forEach(function(t){var e=[],r=t instanceof RowComponent?t.getData("clipboard"):t;o.forEach(function(t){var o=t.getFieldValue(r);switch(void 0===o?"undefined":_typeof(o)){case"object":o=JSON.stringify(o);break;case"undefined":case"null":o="";break;default:o=o}e.push(o)}),a.push(e)}),a},Clipboard.prototype.buildComplexRows=function(t){var o=this,e=[];return this.table.modules.groupRows.getGroups().forEach(function(t){e.push(o.processGroupData(t))}),e},Clipboard.prototype.processGroupData=function(t){var o=this,e=t.getSubGroups(),r={type:"group",key:t.key};return e.length?(r.subGroups=[],e.forEach(function(t){r.subGroups.push(o.processGroupData(t))})):r.rows=t.getRows(!0),r},Clipboard.prototype.getCalcRow=function(t,o,e,r){var a=t[e];return a&&(r&&(a=a[r]),Object.keys(a).length)?this.rowsToData([a],o):[]},Clipboard.prototype.buildOutput=function(t,o,e){var r,a=this,n=[],i=[],l=[];return this.table.columnManager.columnsByIndex.forEach(function(t){(t.definition.clipboard||t.visible&&!1!==t.definition.clipboard)&&l.push(t)}),"groups"==o.columnHeaders?(i=this.generateColumnGroupHeaders(this.table.columnManager.columns),n=n.concat(this.groupHeadersToRows(i))):(i=l,n.push(this.generateSimpleHeaders(i))),this.config.columnCalcs&&(r=this.table.getCalcResults()),this.table.options.clipboardCopyStyled&&this.generateHTML(t,i,r,o,e),o.rowGroups?t.forEach(function(t){n=n.concat(a.parseRowGroupData(t,l,o,e,r||{}))}):(o.columnCalcs&&(n=n.concat(this.getCalcRow(r,l,"top"))),n=n.concat(this.rowsToData(t,l,o,e)),o.columnCalcs&&(n=n.concat(this.getCalcRow(r,l,"bottom")))),n},Clipboard.prototype.parseRowGroupData=function(t,o,e,r,a){var n=this,i=[];return i.push([t.key]),t.subGroups?t.subGroups.forEach(function(o){i=i.concat(n.parseRowGroupData(o,e,r,a[t.key]?a[t.key].groups||{}:{}))}):(e.columnCalcs&&(i=i.concat(this.getCalcRow(a,o,t.key,"top"))),i=i.concat(this.rowsToData(t.rows,o,e,r)),e.columnCalcs&&(i=i.concat(this.getCalcRow(a,o,t.key,"bottom")))),i},Clipboard.prototype.generateHTML=function(t,o,e,r,a){function n(t,o){var e=[];return void 0===y[o]&&(y[o]=[]),y[o].push({title:t.title,width:t.width,height:1,children:!!t.subGroups,element:t.column.getElement()}),t.subGroups?(t.subGroups.forEach(function(t){e=e.concat(n(t,o+1))}),e):[t.column]}function i(t,o,e){var r=t[o];r&&(e&&(r=r[e]),Object.keys(r).length&&l([r]))}function l(t){t.forEach(function(t,e){var r,a=document.createElement("tr"),n=h,i=!1;t instanceof RowComponent?r=t.getData("clipboard"):(r=t,i=!0),o.forEach(function(t,e){var n=document.createElement("td"),i=t.getFieldValue(r);switch(void 0===i?"undefined":_typeof(i)){case"object":i=JSON.stringify(i);break;case"undefined":case"null":i="";break;default:i=i}n.innerHTML=i,t.definition.align&&(n.style.textAlign=t.definition.align),o.length,b&&g.mapElementStyles(b,n,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size"]),a.appendChild(n)}),i?n=d:(e%2||!p||(n=p),e%2&&u&&(n=u)),n&&g.mapElementStyles(n,a,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),c.appendChild(a)})}function s(t,e){var a=document.createElement("tr"),n=document.createElement("td");n.colSpan=o.length,n.innerHTML=t.key,a.appendChild(n),c.appendChild(a),g.mapElementStyles(f,a,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),t.subGroups?t.subGroups.forEach(function(o){s(o,e[t.key]?e[t.key].groups||{}:{})}):(r.columnCalcs&&i(e,t.key,"top"),l(t.rows),r.columnCalcs&&i(e,t.key,"bottom"))}var c,p,u,d,h,b,f,m,g=this,y=[];if(this.htmlElement=document.createElement("table"),g.mapElementStyles(this.table.element,this.htmlElement,["border-top","border-left","border-right","border-bottom"]),r.columnHeaders)if("groups"==r.columnHeaders){var C=[];o.forEach(function(t){C=C.concat(n(t,0))}),o=C,function(){y.forEach(function(t,o){t.forEach(function(t){t.children||(t.height=y.length-o)})})}(),function(t){var o=document.createElement("thead");t.forEach(function(t){var e=document.createElement("tr");t.forEach(function(t){var o=document.createElement("th");t.width>1&&(o.colSpan=t.width),t.height>1&&(o.rowSpan=t.height),o.innerHTML=t.title,g.mapElementStyles(t.element,o,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),e.appendChild(o)}),g.mapElementStyles(g.table.columnManager.getHeadersElement(),e,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),o.appendChild(e)}),g.htmlElement.appendChild(o)}(y)}else!function(){var t=document.createElement("tr");o.forEach(function(o){var e=document.createElement("th");e.innerHTML=o.definition.title,g.mapElementStyles(o.getElement(),e,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),t.appendChild(e)}),g.mapElementStyles(g.table.columnManager.getHeadersElement(),t,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),g.htmlElement.appendChild(document.createElement("thead").appendChild(t))}();c=document.createElement("tbody"),window.getComputedStyle&&(p=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),u=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),d=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),h=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),f=this.table.element.getElementsByClassName("tabulator-group")[0],h&&(m=h.getElementsByClassName("tabulator-cell"),b=m[0],m[m.length-1])),r.rowGroups?t.forEach(function(t){s(t,e||{})}):(r.columnCalcs&&i(e,"top"),l(t),r.columnCalcs&&i(e,"bottom")),this.htmlElement.appendChild(c)},Clipboard.prototype.mapElementStyles=function(t,o,e){var r={"background-color":"backgroundColor",color:"fontColor","font-weight":"fontWeight","font-family":"fontFamily","font-size":"fontSize","border-top":"borderTop","border-left":"borderLeft","border-right":"borderRight","border-bottom":"borderBottom"};if(window.getComputedStyle){var a=window.getComputedStyle(t);e.forEach(function(t){o.style[r[t]]=a.getPropertyValue(t)})}},Clipboard.prototype.copySelectors={userSelection:function(t,o){return o},selected:function(t,o){var e=[];return this.table.modExists("selectRow",!0)&&(e=this.table.modules.selectRow.getSelectedRows()),t.rowGroups&&console.warn("Clipboard Warning - select coptSelector does not support row groups"),this.buildOutput(e,t,o)},table:function(t,o){return t.rowGroups&&console.warn("Clipboard Warning - table coptSelector does not support row groups"),this.buildOutput(this.table.rowManager.getComponents(),t,o)},active:function(t,o){var e;return e=t.rowGroups?this.buildComplexRows(t):this.table.rowManager.getComponents("active"),this.buildOutput(e,t,o)},visible:function(t,o){var e;return e=t.rowGroups?this.buildComplexRows(t):this.table.rowManager.getComponents("visible"),this.buildOutput(e,t,o)}},Clipboard.prototype.copyFormatters={raw:function(t,o){return t},table:function(t,o){var e=[];return t.forEach(function(t){var o=[];t.forEach(function(t){void 0===t&&(t=""),t=void 0===t||null===t?"":t.toString(),t.match(/\r|\n/)&&(t=t.split('"').join('""'),t='"'+t+'"'),o.push(t)}),e.push(o.join("\t"))}),e.join("\n")}},Clipboard.prototype.pasteParsers={table:function(t){var o=[],e=!0,r=this.table.columnManager.columns,a=[],n=[];return t=t.split("\n"),t.forEach(function(t){o.push(t.split("\t"))}),!(!o.length||1===o.length&&o[0].length<2)&&(!0,o[0].forEach(function(t){var o=r.find(function(o){return t&&o.definition.title&&t.trim()&&o.definition.title.trim()===t.trim()});o?a.push(o):e=!1}),e||(e=!0,a=[],o[0].forEach(function(t){var o=r.find(function(o){return t&&o.field&&t.trim()&&o.field.trim()===t.trim()});o?a.push(o):e=!1}),e||(a=this.table.columnManager.columnsByIndex)),e&&o.shift(),o.forEach(function(t){var o={};t.forEach(function(t,e){a[e]&&(o[a[e].field]=t)}),n.push(o)}),n)}},Clipboard.prototype.pasteActions={replace:function(t){return this.table.setData(t)},update:function(t){return this.table.updateOrAddData(t)},insert:function(t){return this.table.addData(t)}},Tabulator.prototype.registerModule("clipboard",Clipboard);
\ No newline at end of file
index 8686cb3..aec75f2 100644 (file)
@@ -1,6 +1,6 @@
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 
 var DataTree = function DataTree(table) {
        this.table = table;
index c98b238..ff9012f 100644 (file)
@@ -1,2 +1,2 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 var _typeof="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},DataTree=function(e){this.table=e,this.indent=10,this.field="",this.collapseEl=null,this.expandEl=null,this.branchEl=null,this.elementField=!1,this.startOpen=function(){},this.displayIndex=0};DataTree.prototype.initialize=function(){var e=null,t=this.table.columnManager.getFirstVisibileColumn(),a=this.table.options;switch(this.field=a.dataTreeChildField,this.indent=a.dataTreeChildIndent,this.elementField=a.dataTreeElementColumn||!!t&&t.field,a.dataTreeBranchElement&&(!0===a.dataTreeBranchElement?(this.branchEl=document.createElement("div"),this.branchEl.classList.add("tabulator-data-tree-branch")):"string"==typeof a.dataTreeBranchElement?(e=document.createElement("div"),e.innerHTML=a.dataTreeBranchElement,this.branchEl=e.firstChild):this.branchEl=a.dataTreeBranchElement),a.dataTreeCollapseElement?"string"==typeof a.dataTreeCollapseElement?(e=document.createElement("div"),e.innerHTML=a.dataTreeCollapseElement,this.collapseEl=e.firstChild):this.collapseEl=a.dataTreeCollapseElement:(this.collapseEl=document.createElement("div"),this.collapseEl.classList.add("tabulator-data-tree-control"),this.collapseEl.tabIndex=0,this.collapseEl.innerHTML="<div class='tabulator-data-tree-control-collapse'></div>"),a.dataTreeExpandElement?"string"==typeof a.dataTreeExpandElement?(e=document.createElement("div"),e.innerHTML=a.dataTreeExpandElement,this.expandEl=e.firstChild):this.expandEl=a.dataTreeExpandElement:(this.expandEl=document.createElement("div"),this.expandEl.classList.add("tabulator-data-tree-control"),this.expandEl.tabIndex=0,this.expandEl.innerHTML="<div class='tabulator-data-tree-control-expand'></div>"),_typeof(a.dataTreeStartExpanded)){case"boolean":this.startOpen=function(e,t){return a.dataTreeStartExpanded};break;case"function":this.startOpen=a.dataTreeStartExpanded;break;default:this.startOpen=function(e,t){return a.dataTreeStartExpanded[t]}}},DataTree.prototype.initializeRow=function(e){var t=e.getData()[this.field],a=Array.isArray(t),n=a||!a&&"object"===(void 0===t?"undefined":_typeof(t))&&null!==t;e.modules.dataTree={index:0,open:!!n&&this.startOpen(e.getComponent(),0),controlEl:!1,branchEl:!1,parent:!1,children:n}},DataTree.prototype.layoutRow=function(e){var t=this.elementField?e.getCell(this.elementField):e.getCells()[0],a=t.getElement(),n=e.modules.dataTree;n.branchEl&&n.branchEl.parentNode.removeChild(n.branchEl),this.generateControlElement(e,a),n.index&&(this.branchEl?(n.branchEl=this.branchEl.cloneNode(!0),a.insertBefore(n.branchEl,a.firstChild),n.branchEl.style.marginLeft=(n.branchEl.offsetWidth+n.branchEl.style.marginRight)*(n.index-1)+n.index*this.indent+"px"):a.style.paddingLeft=parseInt(window.getComputedStyle(a,null).getPropertyValue("padding-left"))+n.index*this.indent+"px")},DataTree.prototype.generateControlElement=function(e,t){var a=this,n=e.modules.dataTree,t=t||e.getCells()[0].getElement(),r=n.controlEl;!1!==n.children&&(n.open?(n.controlEl=this.collapseEl.cloneNode(!0),n.controlEl.addEventListener("click",function(t){t.stopPropagation(),a.collapseRow(e)})):(n.controlEl=this.expandEl.cloneNode(!0),n.controlEl.addEventListener("click",function(t){t.stopPropagation(),a.expandRow(e)})),n.controlEl.addEventListener("mousedown",function(e){e.stopPropagation()}),r&&r.parentNode===t?r.parentNode.replaceChild(n.controlEl,r):t.insertBefore(n.controlEl,t.firstChild))},DataTree.prototype.setDisplayIndex=function(e){this.displayIndex=e},DataTree.prototype.getDisplayIndex=function(){return this.displayIndex},DataTree.prototype.getRows=function(e){var t=this,a=[];return e.forEach(function(e,n){var r,l;a.push(e),e instanceof Row&&(r=e.modules.dataTree.children,r.index||!1===r.children||(l=t.getChildren(e),l.forEach(function(e){a.push(e)})))}),a},DataTree.prototype.getChildren=function(e){var t=this,a=e.modules.dataTree,n=[],r=[];return!1!==a.children&&a.open&&(Array.isArray(a.children)||(a.children=this.generateChildren(e)),n=this.table.modExists("filter")?this.table.modules.filter.filter(a.children):a.children,this.table.modExists("sort")&&this.table.modules.sort.sort(n),n.forEach(function(e){r.push(e),t.getChildren(e).forEach(function(e){r.push(e)})})),r},DataTree.prototype.generateChildren=function(e){var t=this,a=[],n=e.getData()[this.field];return Array.isArray(n)||(n=[n]),n.forEach(function(n){var r=new Row(n||{},t.table.rowManager);r.modules.dataTree.index=e.modules.dataTree.index+1,r.modules.dataTree.parent=e,r.modules.dataTree.children&&(r.modules.dataTree.open=t.startOpen(r.getComponent(),r.modules.dataTree.index)),a.push(r)}),a},DataTree.prototype.expandRow=function(e,t){var a=e.modules.dataTree;!1!==a.children&&(a.open=!0,e.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowExpanded(e.getComponent(),e.modules.dataTree.index))},DataTree.prototype.collapseRow=function(e){var t=e.modules.dataTree;!1!==t.children&&(t.open=!1,e.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowCollapsed(e.getComponent(),e.modules.dataTree.index))},DataTree.prototype.toggleRow=function(e){var t=e.modules.dataTree;!1!==t.children&&(t.open?this.collapseRow(e):this.expandRow(e))},DataTree.prototype.getTreeParent=function(e){return!!e.modules.dataTree.parent&&e.modules.dataTree.parent.getComponent()},DataTree.prototype.getTreeChildren=function(e){var t=e.modules.dataTree,a=[];return t.children&&(Array.isArray(t.children)||(t.children=this.generateChildren(e)),t.children.forEach(function(e){e instanceof Row&&a.push(e.getComponent())})),a},DataTree.prototype.checkForRestyle=function(e){e.row.cells.indexOf(e)||!1!==e.row.modules.dataTree.children&&e.row.reinitialize()},DataTree.prototype.getChildField=function(){return this.field},DataTree.prototype.redrawNeeded=function(e){return!!this.field&&void 0!==e[this.field]||!!this.elementField&&void 0!==e[this.elementField]},Tabulator.prototype.registerModule("dataTree",DataTree);
\ No newline at end of file
index 277bbf0..6264f4d 100644 (file)
@@ -1,6 +1,6 @@
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 
 var Download = function Download(table) {
        this.table = table; //hold Tabulator object
@@ -11,7 +11,7 @@ var Download = function Download(table) {
 };
 
 //trigger file download
-Download.prototype.download = function (type, filename, options, interceptCallback) {
+Download.prototype.download = function (type, filename, options, active, interceptCallback) {
        var self = this,
            downloadFunc = false;
        this.processConfig();
@@ -41,7 +41,7 @@ Download.prototype.download = function (type, filename, options, interceptCallba
        this.processColumns();
 
        if (downloadFunc) {
-               downloadFunc.call(this, self.processDefinitions(), self.processData(), options || {}, buildLink, this.config);
+               downloadFunc.call(this, self.processDefinitions(), self.processData(active || "active"), options || {}, buildLink, this.config);
        }
 };
 
@@ -170,22 +170,39 @@ Download.prototype.processDefinition = function (column) {
        return def;
 };
 
-Download.prototype.processData = function () {
+Download.prototype.processData = function (active) {
        var _this2 = this;
 
        var self = this,
            data = [],
            groups = [],
+           rows = false,
            calcs = {};
 
        if (this.config.rowGroups) {
-               groups = this.table.modules.groupRows.getGroups();
+
+               if (active == "visible") {
+
+                       rows = self.table.rowManager.getRows(active);
+
+                       rows.forEach(function (row) {
+                               if (row.type == "row") {
+                                       var group = row.getGroup();
+
+                                       if (groups.indexOf(group) === -1) {
+                                               groups.push(group);
+                                       }
+                               }
+                       });
+               } else {
+                       groups = this.table.modules.groupRows.getGroups();
+               }
 
                groups.forEach(function (group) {
-                       data.push(_this2.processGroupData(group));
+                       data.push(_this2.processGroupData(group, rows));
                });
        } else {
-               data = self.table.rowManager.getData(true, "download");
+               data = self.table.rowManager.getData(active, "download");
        }
 
        if (this.config.columnCalcs) {
@@ -205,7 +222,7 @@ Download.prototype.processData = function () {
        return data;
 };
 
-Download.prototype.processGroupData = function (group) {
+Download.prototype.processGroupData = function (group, visRows) {
        var _this3 = this;
 
        var subGroups = group.getSubGroups();
@@ -219,10 +236,20 @@ Download.prototype.processGroupData = function (group) {
                groupData.subGroups = [];
 
                subGroups.forEach(function (subGroup) {
-                       groupData.subGroups.push(_this3.processGroupData(subGroup));
+                       groupData.subGroups.push(_this3.processGroupData(subGroup, visRows));
                });
        } else {
-               groupData.rows = group.getData(true, "download");
+               if (visRows) {
+                       groupData.rows = [];
+
+                       group.rows.forEach(function (row) {
+                               if (visRows.indexOf(row) > -1) {
+                                       groupData.rows.push(row.getData("download"));
+                               }
+                       });
+               } else {
+                       groupData.rows = group.getData(true, "download");
+               }
        }
 
        return groupData;
@@ -635,13 +662,16 @@ Download.prototype.downloaders = {
        xlsx: function xlsx(columns, data, options, setFileContents, config) {
                var self = this,
                    sheetName = options.sheetName || "Sheet1",
-                   workbook = { SheetNames: [], Sheets: {} },
+                   workbook = XLSX.utils.book_new(),
                    calcs = {},
                    groupRowIndexs = [],
                    groupColumnIndexs = [],
                    calcRowIndexs = [],
                    output;
 
+               workbook.SheetNames = [];
+               workbook.Sheets = {};
+
                if (config.columnCalcs) {
                        calcs = data.calcs;
                        data = data.data;
@@ -881,6 +911,10 @@ Download.prototype.downloaders = {
                        workbook.Sheets[sheetName] = generateSheet();
                }
 
+               if (options.documentProcessing) {
+                       workbook = options.documentProcessing(workbook);
+               }
+
                //convert workbook to binary array
                function s2ab(s) {
                        var buf = new ArrayBuffer(s.length);
@@ -893,6 +927,12 @@ Download.prototype.downloaders = {
                output = XLSX.write(workbook, { bookType: 'xlsx', bookSST: true, type: 'binary' });
 
                setFileContents(s2ab(output), "application/octet-stream");
+       },
+
+       html: function html(columns, data, options, setFileContents, config) {
+               if (this.table.modExists("htmlTableExport", true)) {
+                       setFileContents(this.table.modules.htmlTableExport.getHtml(true, options.style, config), "text/html");
+               }
        }
 
 };
index 01df3e1..e384d70 100644 (file)
@@ -1,2 +1,2 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},Download=function(o){this.table=o,this.fields={},this.columnsByIndex=[],this.columnsByField={},this.config={}};Download.prototype.download=function(o,n,t,e){function i(t,i){e?!0===e?s.triggerDownload(t,i,o,n,!0):e(t):s.triggerDownload(t,i,o,n)}var s=this,r=!1;this.processConfig(),"function"==typeof o?r=o:s.downloaders[o]?r=s.downloaders[o]:console.warn("Download Error - No such download type found: ",o),this.processColumns(),r&&r.call(this,s.processDefinitions(),s.processData(),t||{},i,this.config)},Download.prototype.processConfig=function(){var o={columnGroups:!0,rowGroups:!0,columnCalcs:!0};if(this.table.options.downloadConfig)for(var n in this.table.options.downloadConfig)o[n]=this.table.options.downloadConfig[n];o.rowGroups&&this.table.options.groupBy&&this.table.modExists("groupRows")&&(this.config.rowGroups=!0),o.columnGroups&&this.table.columnManager.columns.length!=this.table.columnManager.columnsByIndex.length&&(this.config.columnGroups=!0),o.columnCalcs&&this.table.modExists("columnCalcs")&&(this.config.columnCalcs=!0)},Download.prototype.processColumns=function(){var o=this;o.columnsByIndex=[],o.columnsByField={},o.table.columnManager.columnsByIndex.forEach(function(n){n.field&&!1!==n.definition.download&&(n.visible||!n.visible&&n.definition.download)&&(o.columnsByIndex.push(n),o.columnsByField[n.field]=n)})},Download.prototype.processDefinitions=function(){var o=this,n=[];return this.config.columnGroups?o.table.columnManager.columns.forEach(function(t){var e=o.processColumnGroup(t);e&&n.push(e)}):o.columnsByIndex.forEach(function(t){!1!==t.download&&n.push(o.processDefinition(t))}),n},Download.prototype.processColumnGroup=function(o){var n=this,t=o.columns,e=0,i=this.processDefinition(o),s={type:"group",title:i.title,depth:1};if(t.length){if(s.subGroups=[],s.width=0,t.forEach(function(o){var t=n.processColumnGroup(o);t.depth>e&&(e=t.depth),t&&(s.width+=t.width,s.subGroups.push(t))}),s.depth+=e,!s.width)return!1}else{if(!o.field||!1===o.definition.download||!(o.visible||!o.visible&&o.definition.download))return!1;s.width=1,s.definition=i}return s},Download.prototype.processDefinition=function(o){var n={};for(var t in o.definition)n[t]=o.definition[t];return void 0!==o.definition.downloadTitle&&(n.title=o.definition.downloadTitle),n},Download.prototype.processData=function(){var o=this,n=this,t=[],e=[],i={};return this.config.rowGroups?(e=this.table.modules.groupRows.getGroups(),e.forEach(function(n){t.push(o.processGroupData(n))})):t=n.table.rowManager.getData(!0,"download"),this.config.columnCalcs&&(i=this.table.getCalcResults(),t={calcs:i,data:t}),"function"==typeof n.table.options.downloadDataFormatter&&(t=n.table.options.downloadDataFormatter(t)),t},Download.prototype.processGroupData=function(o){var n=this,t=o.getSubGroups(),e={type:"group",key:o.key};return t.length?(e.subGroups=[],t.forEach(function(o){e.subGroups.push(n.processGroupData(o))})):e.rows=o.getData(!0,"download"),e},Download.prototype.triggerDownload=function(o,n,t,e,i){var s=document.createElement("a"),r=new Blob([o],{type:n}),e=e||"Tabulator."+("function"==typeof t?"txt":t);(r=this.table.options.downloadReady.call(this.table,o,r))&&(i?window.open(window.URL.createObjectURL(r)):navigator.msSaveOrOpenBlob?navigator.msSaveOrOpenBlob(r,e):(s.setAttribute("href",window.URL.createObjectURL(r)),s.setAttribute("download",e),s.style.display="none",document.body.appendChild(s),s.click(),document.body.removeChild(s)),this.table.options.downloadComplete&&this.table.options.downloadComplete())},Download.prototype.getFieldValue=function(o,n){var t=this.columnsByField[o];return!!t&&t.getFieldValue(n)},Download.prototype.commsReceived=function(o,n,t){switch(n){case"intercept":this.download(t.type,"",t.options,t.intercept)}},Download.prototype.downloaders={csv:function(o,n,t,e,i){function s(o,n){o.subGroups?o.subGroups.forEach(function(o){s(o,n+1)}):(f.push('"'+String(o.title).split('"').join('""')+'"'),p.push(o.definition.field))}function r(o){o.forEach(function(o){var n=[];p.forEach(function(t){var e=c.getFieldValue(t,o);switch(void 0===e?"undefined":_typeof(e)){case"object":e=JSON.stringify(e);break;case"undefined":case"null":e="";break;default:e=e}n.push('"'+String(e).split('"').join('""')+'"')}),u.push(n.join(d))})}function a(o){o.subGroups?o.subGroups.forEach(function(o){a(o)}):r(o.rows)}var u,l,c=this,f=[],p=[],d=t&&t.delimiter?t.delimiter:",";i.columnGroups?(console.warn("Download Warning - CSV downloader cannot process column groups"),o.forEach(function(o){s(o,0)})):function(){o.forEach(function(o){f.push('"'+String(o.title).split('"').join('""')+'"'),p.push(o.field)})}(),u=[f.join(d)],i.columnCalcs&&(console.warn("Download Warning - CSV downloader cannot process column calculations"),n=n.data),i.rowGroups?(console.warn("Download Warning - CSV downloader cannot process row groups"),n.forEach(function(o){a(o)})):r(n),l=u.join("\n"),t.bom&&(l="\ufeff"+l),e(l,"text/csv")},json:function(o,n,t,e,i){var s;i.columnCalcs&&(console.warn("Download Warning - CSV downloader cannot process column calculations"),n=n.data),s=JSON.stringify(n,null,"\t"),e(s,"application/json")},pdf:function(o,n,t,e,i){function s(o,n){var t=o.width,e=1,i={content:o.title||""};if(o.subGroups?(o.subGroups.forEach(function(o){s(o,n+1)}),e=1):(p.push(o.definition.field),e=y-n),i.rowSpan=e,d[n].push(i),t--,e>1)for(var r=n+1;r<y;r++)d[r].push("");for(var r=0;r<t;r++)d[n].push("")}function r(o){switch(void 0===o?"undefined":_typeof(o)){case"object":o=JSON.stringify(o);break;case"undefined":case"null":o="";break;default:o=o}return o}function a(o){o.forEach(function(o){h.push(u(o))})}function u(o,n){var t=[];return p.forEach(function(e){var i=f.getFieldValue(e,o);i=r(i),n?t.push({content:i,styles:n}):t.push(i)}),t}function l(o,n){var t=[];t.push({content:r(o.key),colSpan:p.length,styles:g}),h.push(t),o.subGroups?o.subGroups.forEach(function(t){l(t,n[o.key]?n[o.key].groups||{}:{})}):(i.columnCalcs&&c(n,o.key,"top"),a(o.rows),i.columnCalcs&&c(n,o.key,"bottom"))}function c(o,n,t){var e=o[n];e&&(t&&(e=e[t]),Object.keys(e).length&&h.push(u(e,b)))}var f=this,p=[],d=[],h=[],w={},y=1,m={},g=t.rowGroupStyles||{fontStyle:"bold",fontSize:12,cellPadding:6,fillColor:220},b=t.rowCalcStyles||{fontStyle:"bold",fontSize:10,cellPadding:4,fillColor:232},v=t.jsPDF||{},C=t&&t.title?t.title:"";if(i.columnCalcs&&(w=n.calcs,n=n.data),v.orientation||(v.orientation=t.orientation||"landscape"),v.unit||(v.unit="pt"),i.columnGroups){o.forEach(function(o){o.depth>y&&(y=o.depth)});for(var S=0;S<y;S++)d.push([]);o.forEach(function(o){s(o,0)})}else!function(){o.forEach(function(o){o.field&&(d.push(o.title||""),p.push(o.field))}),d=[d]}();i.rowGroups?n.forEach(function(o){l(o,w)}):(i.columnCalcs&&c(w,"top"),a(n),i.columnCalcs&&c(w,"bottom"));var D=new jsPDF(v);t&&t.autoTable&&(m="function"==typeof t.autoTable?t.autoTable(D)||{}:t.autoTable),C&&(m.addPageContent=function(o){D.text(C,40,30)}),m.head=d,m.body=h,D.autoTable(m),t&&t.documentProcessing&&t.documentProcessing(D),e(D.output("arraybuffer"),"application/pdf")},xlsx:function(o,n,t,e,i){function s(){function t(o,n){void 0===w[n]&&(w[n]=[]),void 0===p[n]&&(p[n]=[]),o.width>1&&p[n].push({type:"hoz",start:w[n].length,end:w[n].length+o.width-1}),w[n].push(o.title),o.subGroups?o.subGroups.forEach(function(o){t(o,n+1)}):(y.push(o.definition.field),e(y.length),p[n].push({type:"vert",start:y.length-1}))}function e(){var o=0;w.forEach(function(n){var t=n.length;t>o&&(o=t)}),w.forEach(function(n){var t=n.length;if(t<o)for(var e=t;e<o;e++)n.push("")})}function s(){var o=[];return f.forEach(function(n){o.push({s:{r:n,c:0},e:{r:n,c:y.length-1}})}),p.forEach(function(n,t){n.forEach(function(n){"hoz"===n.type?o.push({s:{r:t,c:n.start},e:{r:t,c:n.end}}):t!=w.length-1&&o.push({s:{r:t,c:n.start},e:{r:w.length-1,c:n.start}})})}),o}function r(o){o.forEach(function(o){m.push(u(o))})}function u(o){var n=[];return y.forEach(function(t){var e=a.getFieldValue(t,o);n.push(e instanceof Date||"object"!==(void 0===e?"undefined":_typeof(e))?e:JSON.stringify(e))}),n}function l(o,n,t){var e=o[n];e&&(t&&(e=e[t]),Object.keys(e).length&&(d.push(m.length),m.push(u(e))))}function h(o,n){var t=[];t.push(o.key),f.push(m.length),m.push(t),o.subGroups?o.subGroups.forEach(function(t){h(t,n[o.key]?n[o.key].groups||{}:{})}):(i.columnCalcs&&l(n,o.key,"top"),r(o.rows),i.columnCalcs&&l(n,o.key,"bottom"))}var w=[],y=[],m=[];return i.columnGroups?(o.forEach(function(o){t(o,0)}),w.forEach(function(o){m.push(o)})):function(){o.forEach(function(o){w.push(o.title),y.push(o.field)}),m.push(w)}(),i.rowGroups?n.forEach(function(o){h(o,c)}):(i.columnCalcs&&l(c,"top"),r(n),i.columnCalcs&&l(c,"bottom")),function(){var o={},n={s:{c:0,r:0},e:{c:y.length,r:m.length}};XLSX.utils.sheet_add_aoa(o,m),o["!ref"]=XLSX.utils.encode_range(n);var t=s();return t.length&&(o["!merges"]=t),o}()}var r,a=this,u=t.sheetName||"Sheet1",l={SheetNames:[],Sheets:{}},c={},f=[],p=[],d=[];if(i.columnCalcs&&(c=n.calcs,n=n.data),t.sheetOnly)return void e(s());if(t.sheets)for(var h in t.sheets)!0===t.sheets[h]?(l.SheetNames.push(h),l.Sheets[h]=s()):(l.SheetNames.push(h),this.table.modules.comms.send(t.sheets[h],"download","intercept",{type:"xlsx",options:{sheetOnly:!0},intercept:function(o){l.Sheets[h]=o}}));else l.SheetNames.push(u),l.Sheets[u]=s();r=XLSX.write(l,{bookType:"xlsx",bookSST:!0,type:"binary"}),e(function(o){for(var n=new ArrayBuffer(o.length),t=new Uint8Array(n),e=0;e!=o.length;++e)t[e]=255&o.charCodeAt(e);return n}(r),"application/octet-stream")}},Tabulator.prototype.registerModule("download",Download);
\ No newline at end of file
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},Download=function(o){this.table=o,this.fields={},this.columnsByIndex=[],this.columnsByField={},this.config={}};Download.prototype.download=function(o,t,n,e,i){function s(n,e){i?!0===i?r.triggerDownload(n,e,o,t,!0):i(n):r.triggerDownload(n,e,o,t)}var r=this,a=!1;this.processConfig(),"function"==typeof o?a=o:r.downloaders[o]?a=r.downloaders[o]:console.warn("Download Error - No such download type found: ",o),this.processColumns(),a&&a.call(this,r.processDefinitions(),r.processData(e||"active"),n||{},s,this.config)},Download.prototype.processConfig=function(){var o={columnGroups:!0,rowGroups:!0,columnCalcs:!0};if(this.table.options.downloadConfig)for(var t in this.table.options.downloadConfig)o[t]=this.table.options.downloadConfig[t];o.rowGroups&&this.table.options.groupBy&&this.table.modExists("groupRows")&&(this.config.rowGroups=!0),o.columnGroups&&this.table.columnManager.columns.length!=this.table.columnManager.columnsByIndex.length&&(this.config.columnGroups=!0),o.columnCalcs&&this.table.modExists("columnCalcs")&&(this.config.columnCalcs=!0)},Download.prototype.processColumns=function(){var o=this;o.columnsByIndex=[],o.columnsByField={},o.table.columnManager.columnsByIndex.forEach(function(t){t.field&&!1!==t.definition.download&&(t.visible||!t.visible&&t.definition.download)&&(o.columnsByIndex.push(t),o.columnsByField[t.field]=t)})},Download.prototype.processDefinitions=function(){var o=this,t=[];return this.config.columnGroups?o.table.columnManager.columns.forEach(function(n){var e=o.processColumnGroup(n);e&&t.push(e)}):o.columnsByIndex.forEach(function(n){!1!==n.download&&t.push(o.processDefinition(n))}),t},Download.prototype.processColumnGroup=function(o){var t=this,n=o.columns,e=0,i=this.processDefinition(o),s={type:"group",title:i.title,depth:1};if(n.length){if(s.subGroups=[],s.width=0,n.forEach(function(o){var n=t.processColumnGroup(o);n.depth>e&&(e=n.depth),n&&(s.width+=n.width,s.subGroups.push(n))}),s.depth+=e,!s.width)return!1}else{if(!o.field||!1===o.definition.download||!(o.visible||!o.visible&&o.definition.download))return!1;s.width=1,s.definition=i}return s},Download.prototype.processDefinition=function(o){var t={};for(var n in o.definition)t[n]=o.definition[n];return void 0!==o.definition.downloadTitle&&(t.title=o.definition.downloadTitle),t},Download.prototype.processData=function(o){var t=this,n=this,e=[],i=[],s=!1,r={};return this.config.rowGroups?("visible"==o?(s=n.table.rowManager.getRows(o),s.forEach(function(o){if("row"==o.type){var t=o.getGroup();-1===i.indexOf(t)&&i.push(t)}})):i=this.table.modules.groupRows.getGroups(),i.forEach(function(o){e.push(t.processGroupData(o,s))})):e=n.table.rowManager.getData(o,"download"),this.config.columnCalcs&&(r=this.table.getCalcResults(),e={calcs:r,data:e}),"function"==typeof n.table.options.downloadDataFormatter&&(e=n.table.options.downloadDataFormatter(e)),e},Download.prototype.processGroupData=function(o,t){var n=this,e=o.getSubGroups(),i={type:"group",key:o.key};return e.length?(i.subGroups=[],e.forEach(function(o){i.subGroups.push(n.processGroupData(o,t))})):t?(i.rows=[],o.rows.forEach(function(o){t.indexOf(o)>-1&&i.rows.push(o.getData("download"))})):i.rows=o.getData(!0,"download"),i},Download.prototype.triggerDownload=function(o,t,n,e,i){var s=document.createElement("a"),r=new Blob([o],{type:t}),e=e||"Tabulator."+("function"==typeof n?"txt":n);(r=this.table.options.downloadReady.call(this.table,o,r))&&(i?window.open(window.URL.createObjectURL(r)):navigator.msSaveOrOpenBlob?navigator.msSaveOrOpenBlob(r,e):(s.setAttribute("href",window.URL.createObjectURL(r)),s.setAttribute("download",e),s.style.display="none",document.body.appendChild(s),s.click(),document.body.removeChild(s)),this.table.options.downloadComplete&&this.table.options.downloadComplete())},Download.prototype.getFieldValue=function(o,t){var n=this.columnsByField[o];return!!n&&n.getFieldValue(t)},Download.prototype.commsReceived=function(o,t,n){switch(t){case"intercept":this.download(n.type,"",n.options,n.intercept)}},Download.prototype.downloaders={csv:function(o,t,n,e,i){function s(o,t){o.subGroups?o.subGroups.forEach(function(o){s(o,t+1)}):(f.push('"'+String(o.title).split('"').join('""')+'"'),p.push(o.definition.field))}function r(o){o.forEach(function(o){var t=[];p.forEach(function(n){var e=c.getFieldValue(n,o);switch(void 0===e?"undefined":_typeof(e)){case"object":e=JSON.stringify(e);break;case"undefined":case"null":e="";break;default:e=e}t.push('"'+String(e).split('"').join('""')+'"')}),u.push(t.join(d))})}function a(o){o.subGroups?o.subGroups.forEach(function(o){a(o)}):r(o.rows)}var u,l,c=this,f=[],p=[],d=n&&n.delimiter?n.delimiter:",";i.columnGroups?(console.warn("Download Warning - CSV downloader cannot process column groups"),o.forEach(function(o){s(o,0)})):function(){o.forEach(function(o){f.push('"'+String(o.title).split('"').join('""')+'"'),p.push(o.field)})}(),u=[f.join(d)],i.columnCalcs&&(console.warn("Download Warning - CSV downloader cannot process column calculations"),t=t.data),i.rowGroups?(console.warn("Download Warning - CSV downloader cannot process row groups"),t.forEach(function(o){a(o)})):r(t),l=u.join("\n"),n.bom&&(l="\ufeff"+l),e(l,"text/csv")},json:function(o,t,n,e,i){var s;i.columnCalcs&&(console.warn("Download Warning - CSV downloader cannot process column calculations"),t=t.data),s=JSON.stringify(t,null,"\t"),e(s,"application/json")},pdf:function(o,t,n,e,i){function s(o,t){var n=o.width,e=1,i={content:o.title||""};if(o.subGroups?(o.subGroups.forEach(function(o){s(o,t+1)}),e=1):(p.push(o.definition.field),e=m-t),i.rowSpan=e,d[t].push(i),n--,e>1)for(var r=t+1;r<m;r++)d[r].push("");for(var r=0;r<n;r++)d[t].push("")}function r(o){switch(void 0===o?"undefined":_typeof(o)){case"object":o=JSON.stringify(o);break;case"undefined":case"null":o="";break;default:o=o}return o}function a(o){o.forEach(function(o){h.push(u(o))})}function u(o,t){var n=[];return p.forEach(function(e){var i=f.getFieldValue(e,o);i=r(i),t?n.push({content:i,styles:t}):n.push(i)}),n}function l(o,t){var n=[];n.push({content:r(o.key),colSpan:p.length,styles:y}),h.push(n),o.subGroups?o.subGroups.forEach(function(n){l(n,t[o.key]?t[o.key].groups||{}:{})}):(i.columnCalcs&&c(t,o.key,"top"),a(o.rows),i.columnCalcs&&c(t,o.key,"bottom"))}function c(o,t,n){var e=o[t];e&&(n&&(e=e[n]),Object.keys(e).length&&h.push(u(e,b)))}var f=this,p=[],d=[],h=[],w={},m=1,g={},y=n.rowGroupStyles||{fontStyle:"bold",fontSize:12,cellPadding:6,fillColor:220},b=n.rowCalcStyles||{fontStyle:"bold",fontSize:10,cellPadding:4,fillColor:232},v=n.jsPDF||{},E=n&&n.title?n.title:"";if(i.columnCalcs&&(w=t.calcs,t=t.data),v.orientation||(v.orientation=n.orientation||"landscape"),v.unit||(v.unit="pt"),i.columnGroups){o.forEach(function(o){o.depth>m&&(m=o.depth)});for(var S=0;S<m;S++)d.push([]);o.forEach(function(o){s(o,0)})}else!function(){o.forEach(function(o){o.field&&(d.push(o.title||""),p.push(o.field))}),d=[d]}();i.rowGroups?t.forEach(function(o){l(o,w)}):(i.columnCalcs&&c(w,"top"),a(t),i.columnCalcs&&c(w,"bottom"));var C=new jsPDF(v);n&&n.autoTable&&(g="function"==typeof n.autoTable?n.autoTable(C)||{}:n.autoTable),E&&(g.addPageContent=function(o){C.text(E,40,30)}),g.head=d,g.body=h,C.autoTable(g),n&&n.documentProcessing&&n.documentProcessing(C),e(C.output("arraybuffer"),"application/pdf")},xlsx:function(o,t,n,e,i){function s(){function n(o,t){void 0===w[t]&&(w[t]=[]),void 0===p[t]&&(p[t]=[]),o.width>1&&p[t].push({type:"hoz",start:w[t].length,end:w[t].length+o.width-1}),w[t].push(o.title),o.subGroups?o.subGroups.forEach(function(o){n(o,t+1)}):(m.push(o.definition.field),e(m.length),p[t].push({type:"vert",start:m.length-1}))}function e(){var o=0;w.forEach(function(t){var n=t.length;n>o&&(o=n)}),w.forEach(function(t){var n=t.length;if(n<o)for(var e=n;e<o;e++)t.push("")})}function s(){var o=[];return f.forEach(function(t){o.push({s:{r:t,c:0},e:{r:t,c:m.length-1}})}),p.forEach(function(t,n){t.forEach(function(t){"hoz"===t.type?o.push({s:{r:n,c:t.start},e:{r:n,c:t.end}}):n!=w.length-1&&o.push({s:{r:n,c:t.start},e:{r:w.length-1,c:t.start}})})}),o}function r(o){o.forEach(function(o){g.push(u(o))})}function u(o){var t=[];return m.forEach(function(n){var e=a.getFieldValue(n,o);t.push(e instanceof Date||"object"!==(void 0===e?"undefined":_typeof(e))?e:JSON.stringify(e))}),t}function l(o,t,n){var e=o[t];e&&(n&&(e=e[n]),Object.keys(e).length&&(d.push(g.length),g.push(u(e))))}function h(o,t){var n=[];n.push(o.key),f.push(g.length),g.push(n),o.subGroups?o.subGroups.forEach(function(n){h(n,t[o.key]?t[o.key].groups||{}:{})}):(i.columnCalcs&&l(t,o.key,"top"),r(o.rows),i.columnCalcs&&l(t,o.key,"bottom"))}var w=[],m=[],g=[];return i.columnGroups?(o.forEach(function(o){n(o,0)}),w.forEach(function(o){g.push(o)})):function(){o.forEach(function(o){w.push(o.title),m.push(o.field)}),g.push(w)}(),i.rowGroups?t.forEach(function(o){h(o,c)}):(i.columnCalcs&&l(c,"top"),r(t),i.columnCalcs&&l(c,"bottom")),function(){var o={},t={s:{c:0,r:0},e:{c:m.length,r:g.length}};XLSX.utils.sheet_add_aoa(o,g),o["!ref"]=XLSX.utils.encode_range(t);var n=s();return n.length&&(o["!merges"]=n),o}()}var r,a=this,u=n.sheetName||"Sheet1",l=XLSX.utils.book_new(),c={},f=[],p=[],d=[];if(l.SheetNames=[],l.Sheets={},i.columnCalcs&&(c=t.calcs,t=t.data),n.sheetOnly)return void e(s());if(n.sheets)for(var h in n.sheets)!0===n.sheets[h]?(l.SheetNames.push(h),l.Sheets[h]=s()):(l.SheetNames.push(h),this.table.modules.comms.send(n.sheets[h],"download","intercept",{type:"xlsx",options:{sheetOnly:!0},intercept:function(o){l.Sheets[h]=o}}));else l.SheetNames.push(u),l.Sheets[u]=s();n.documentProcessing&&(l=n.documentProcessing(l)),r=XLSX.write(l,{bookType:"xlsx",bookSST:!0,type:"binary"}),e(function(o){for(var t=new ArrayBuffer(o.length),n=new Uint8Array(t),e=0;e!=o.length;++e)n[e]=255&o.charCodeAt(e);return t}(r),"application/octet-stream")},html:function(o,t,n,e,i){this.table.modExists("htmlTableExport",!0)&&e(this.table.modules.htmlTableExport.getHtml(!0,n.style,i),"text/html")}},Tabulator.prototype.registerModule("download",Download);
\ No newline at end of file
index 74c3eb7..f32055d 100644 (file)
@@ -1,6 +1,6 @@
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 
 var Edit = function Edit(table) {
        this.table = table; //hold Tabulator object
@@ -131,9 +131,9 @@ Edit.prototype.bindEditor = function (cell) {
        });
 };
 
-Edit.prototype.focusCellNoEvent = function (cell) {
+Edit.prototype.focusCellNoEvent = function (cell, block) {
        this.recursionBlock = true;
-       if (this.table.browser !== "ie") {
+       if (!(block && this.table.browser === "ie")) {
                cell.getElement().focus();
        }
        this.recursionBlock = false;
@@ -183,7 +183,7 @@ Edit.prototype.edit = function (cell, e, forceEdit) {
                        } else {
                                self.invalidEdit = true;
                                element.classList.add("tabulator-validation-fail");
-                               self.focusCellNoEvent(cell);
+                               self.focusCellNoEvent(cell, true);
                                rendered();
                                self.table.options.validationFailed.call(self.table, cell.getComponent(), value, valid);
 
@@ -365,6 +365,7 @@ Edit.prototype.editors = {
        textarea: function textarea(cell, onRendered, success, cancel, editorParams) {
                var self = this,
                    cellValue = cell.getValue(),
+                   vertNav = editorParams.verticalNavigation || "hybrid",
                    value = String(cellValue !== null && typeof cellValue !== "undefined" ? cellValue : ""),
                    count = (value.match(/(?:\r\n|\r|\n)/g) || []).length + 1,
                    input = document.createElement("textarea"),
@@ -432,8 +433,28 @@ Edit.prototype.editors = {
                });
 
                input.addEventListener("keydown", function (e) {
-                       if (e.keyCode == 27) {
-                               cancel();
+
+                       switch (e.keyCode) {
+                               case 27:
+                                       cancel();
+                                       break;
+
+                               case 38:
+                                       //up arrow
+                                       if (vertNav == "editor" || vertNav == "hybrid" && input.selectionStart) {
+                                               e.stopImmediatePropagation();
+                                               e.stopPropagation();
+                                       }
+
+                                       break;
+
+                               case 40:
+                                       //down arrow
+                                       if (vertNav == "editor" || vertNav == "hybrid" && input.selectionStart !== input.value.length) {
+                                               e.stopImmediatePropagation();
+                                               e.stopPropagation();
+                                       }
+                                       break;
                        }
                });
 
@@ -444,6 +465,7 @@ Edit.prototype.editors = {
        number: function number(cell, onRendered, success, cancel, editorParams) {
 
                var cellValue = cell.getValue(),
+                   vertNav = editorParams.verticalNavigation || "editor",
                    input = document.createElement("input");
 
                input.setAttribute("type", "number");
@@ -520,6 +542,15 @@ Edit.prototype.editors = {
                                case 27:
                                        cancel();
                                        break;
+
+                               case 38: //up arrow
+                               case 40:
+                                       //down arrow
+                                       if (vertNav == "editor") {
+                                               e.stopImmediatePropagation();
+                                               e.stopPropagation();
+                                       }
+                                       break;
                        }
                });
 
@@ -612,6 +643,7 @@ Edit.prototype.editors = {
                var self = this,
                    cellEl = cell.getElement(),
                    initialValue = cell.getValue(),
+                   vertNav = editorParams.verticalNavigation || "editor",
                    initialDisplayValue = typeof initialValue !== "undefined" || initialValue === null ? initialValue : typeof editorParams.defaultValue !== "undefined" ? editorParams.defaultValue : "",
                    input = document.createElement("input"),
                    listEl = document.createElement("div"),
@@ -877,13 +909,13 @@ Edit.prototype.editors = {
 
                input.value = typeof initialValue !== "undefined" || initialValue === null ? initialValue : "";
 
-               if (editorParams.values === true) {
-                       parseItems(getUniqueColumnValues(), initialValue);
-               } else if (typeof editorParams.values === "string") {
-                       parseItems(getUniqueColumnValues(editorParams.values), initialValue);
-               } else {
-                       parseItems(editorParams.values || [], initialValue);
-               }
+               // if(editorParams.values === true){
+               //      parseItems(getUniqueColumnValues(), initialValue);
+               // }else if(typeof editorParams.values === "string"){
+               //      parseItems(getUniqueColumnValues(editorParams.values), initialValue);
+               // }else{
+               //      parseItems(editorParams.values || [], initialValue);
+               // }
 
                //allow key based navigation
                input.addEventListener("keydown", function (e) {
@@ -892,30 +924,34 @@ Edit.prototype.editors = {
                        switch (e.keyCode) {
                                case 38:
                                        //up arrow
-                                       e.stopImmediatePropagation();
-                                       e.stopPropagation();
-                                       e.preventDefault();
-
                                        index = dataItems.indexOf(currentItem);
 
-                                       if (index > 0) {
-                                               setCurrentItem(dataItems[index - 1]);
+                                       if (vertNav == "editor" || vertNav == "hybrid" && index) {
+                                               e.stopImmediatePropagation();
+                                               e.stopPropagation();
+                                               e.preventDefault();
+
+                                               if (index > 0) {
+                                                       setCurrentItem(dataItems[index - 1]);
+                                               }
                                        }
                                        break;
 
                                case 40:
                                        //down arrow
-                                       e.stopImmediatePropagation();
-                                       e.stopPropagation();
-                                       e.preventDefault();
-
                                        index = dataItems.indexOf(currentItem);
 
-                                       if (index < dataItems.length - 1) {
-                                               if (index == -1) {
-                                                       setCurrentItem(dataItems[0]);
-                                               } else {
-                                                       setCurrentItem(dataItems[index + 1]);
+                                       if (vertNav == "editor" || vertNav == "hybrid" && index < dataItems.length - 1) {
+                                               e.stopImmediatePropagation();
+                                               e.stopPropagation();
+                                               e.preventDefault();
+
+                                               if (index < dataItems.length - 1) {
+                                                       if (index == -1) {
+                                                               setCurrentItem(dataItems[0]);
+                                                       } else {
+                                                               setCurrentItem(dataItems[index + 1]);
+                                                       }
                                                }
                                        }
                                        break;
@@ -967,6 +1003,7 @@ Edit.prototype.editors = {
                var self = this,
                    cellEl = cell.getElement(),
                    initialValue = cell.getValue(),
+                   vertNav = editorParams.verticalNavigation || "editor",
                    initialDisplayValue = typeof initialValue !== "undefined" || initialValue === null ? initialValue : typeof editorParams.defaultValue !== "undefined" ? editorParams.defaultValue : "",
                    input = document.createElement("input"),
                    listEl = document.createElement("div"),
@@ -1259,32 +1296,38 @@ Edit.prototype.editors = {
                        switch (e.keyCode) {
                                case 38:
                                        //up arrow
-                                       e.stopImmediatePropagation();
-                                       e.stopPropagation();
-                                       e.preventDefault();
-
                                        index = displayItems.indexOf(currentItem);
 
-                                       if (index > 0) {
-                                               setCurrentItem(displayItems[index - 1]);
-                                       } else {
-                                               setCurrentItem(false);
+                                       if (vertNav == "editor" || vertNav == "hybrid" && index) {
+                                               e.stopImmediatePropagation();
+                                               e.stopPropagation();
+                                               e.preventDefault();
+
+                                               if (index > 0) {
+                                                       setCurrentItem(displayItems[index - 1]);
+                                               } else {
+                                                       setCurrentItem(false);
+                                               }
                                        }
                                        break;
 
                                case 40:
                                        //down arrow
-                                       e.stopImmediatePropagation();
-                                       e.stopPropagation();
-                                       e.preventDefault();
 
                                        index = displayItems.indexOf(currentItem);
 
-                                       if (index < displayItems.length - 1) {
-                                               if (index == -1) {
-                                                       setCurrentItem(displayItems[0]);
-                                               } else {
-                                                       setCurrentItem(displayItems[index + 1]);
+                                       if (vertNav == "editor" || vertNav == "hybrid" && index < displayItems.length - 1) {
+
+                                               e.stopImmediatePropagation();
+                                               e.stopPropagation();
+                                               e.preventDefault();
+
+                                               if (index < displayItems.length - 1) {
+                                                       if (index == -1) {
+                                                               setCurrentItem(displayItems[0]);
+                                                       } else {
+                                                               setCurrentItem(displayItems[index + 1]);
+                                                       }
                                                }
                                        }
                                        break;
index fc6d407..b699529 100644 (file)
@@ -1,2 +1,2 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
-var _typeof="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},Edit=function(e){this.table=e,this.currentCell=!1,this.mouseClick=!1,this.recursionBlock=!1,this.invalidEdit=!1};Edit.prototype.initializeColumn=function(e){var t=this,i={editor:!1,blocked:!1,check:e.definition.editable,params:e.definition.editorParams||{}};switch(_typeof(e.definition.editor)){case"string":"tick"===e.definition.editor&&(e.definition.editor="tickCross",console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor")),t.editors[e.definition.editor]?i.editor=t.editors[e.definition.editor]:console.warn("Editor Error - No such editor found: ",e.definition.editor);break;case"function":i.editor=e.definition.editor;break;case"boolean":!0===e.definition.editor&&("function"!=typeof e.definition.formatter?("tick"===e.definition.formatter&&(e.definition.formatter="tickCross",console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor")),t.editors[e.definition.formatter]?i.editor=t.editors[e.definition.formatter]:i.editor=t.editors.input):console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ",e.definition.formatter))}i.editor&&(e.modules.edit=i)},Edit.prototype.getCurrentCell=function(){return!!this.currentCell&&this.currentCell.getComponent()},Edit.prototype.clearEditor=function(){var e,t=this.currentCell;if(this.invalidEdit=!1,t){for(this.currentCell=!1,e=t.getElement(),e.classList.remove("tabulator-validation-fail"),e.classList.remove("tabulator-editing");e.firstChild;)e.removeChild(e.firstChild);t.row.getElement().classList.remove("tabulator-row-editing")}},Edit.prototype.cancelEdit=function(){if(this.currentCell){var e=this.currentCell,t=this.currentCell.getComponent();this.clearEditor(),e.setValueActual(e.getValue()),e.column.cellEvents.cellEditCancelled&&e.column.cellEvents.cellEditCancelled.call(this.table,t),this.table.options.cellEditCancelled.call(this.table,t)}},Edit.prototype.bindEditor=function(e){var t=this,i=e.getElement();i.setAttribute("tabindex",0),i.addEventListener("click",function(e){i.classList.contains("tabulator-editing")||i.focus()}),i.addEventListener("mousedown",function(e){t.mouseClick=!0}),i.addEventListener("focus",function(i){t.recursionBlock||t.edit(e,i,!1)})},Edit.prototype.focusCellNoEvent=function(e){this.recursionBlock=!0,"ie"!==this.table.browser&&e.getElement().focus(),this.recursionBlock=!1},Edit.prototype.editCell=function(e,t){this.focusCellNoEvent(e),this.edit(e,!1,t)},Edit.prototype.edit=function(e,t,i){function n(t){if(u.currentCell===e){var i=!0;return e.column.modules.validate&&u.table.modExists("validate")&&(i=u.table.modules.validate.validate(e.column.modules.validate,e.getComponent(),t)),!0===i?(u.clearEditor(),e.setValue(t,!0),u.table.options.dataTree&&u.table.modExists("dataTree")&&u.table.modules.dataTree.checkForRestyle(e),!0):(u.invalidEdit=!0,m.classList.add("tabulator-validation-fail"),u.focusCellNoEvent(e),d(),u.table.options.validationFailed.call(u.table,e.getComponent(),t,i),!1)}}function a(){u.currentCell===e&&(u.cancelEdit(),u.table.options.dataTree&&u.table.modExists("dataTree")&&u.table.modules.dataTree.checkForRestyle(e))}function o(e){d=e}var r,l,s,u=this,c=!0,d=function(){},m=e.getElement();if(this.currentCell)return void(this.invalidEdit||this.cancelEdit());if(e.column.modules.edit.blocked)return this.mouseClick=!1,m.blur(),!1;switch(t&&t.stopPropagation(),_typeof(e.column.modules.edit.check)){case"function":c=e.column.modules.edit.check(e.getComponent());break;case"boolean":c=e.column.modules.edit.check}if(c||i){if(u.cancelEdit(),u.currentCell=e,l=e.getComponent(),this.mouseClick&&(this.mouseClick=!1,e.column.cellEvents.cellClick&&e.column.cellEvents.cellClick.call(this.table,t,l)),e.column.cellEvents.cellEditing&&e.column.cellEvents.cellEditing.call(this.table,l),u.table.options.cellEditing.call(this.table,l),s="function"==typeof e.column.modules.edit.params?e.column.modules.edit.params(l):e.column.modules.edit.params,!1===(r=e.column.modules.edit.editor.call(u,l,o,n,a,s)))return m.blur(),!1;if(!(r instanceof Node))return console.warn("Edit Error - Editor should return an instance of Node, the editor returned:",r),m.blur(),!1;for(m.classList.add("tabulator-editing"),e.row.getElement().classList.add("tabulator-row-editing");m.firstChild;)m.removeChild(m.firstChild);m.appendChild(r),d();for(var f=m.children,v=0;v<f.length;v++)f[v].addEventListener("click",function(e){e.stopPropagation()});return!0}return this.mouseClick=!1,m.blur(),!1},Edit.prototype.editors={input:function(e,t,i,n,a){function o(e){(null===r||void 0===r)&&""!==l.value||l.value!=r?i(l.value)&&(r=l.value):n()}var r=e.getValue(),l=document.createElement("input");if(l.setAttribute("type",a.search?"search":"text"),l.style.padding="4px",l.style.width="100%",l.style.boxSizing="border-box",a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var s in a.elementAttributes)"+"==s.charAt(0)?(s=s.slice(1),l.setAttribute(s,l.getAttribute(s)+a.elementAttributes["+"+s])):l.setAttribute(s,a.elementAttributes[s]);return l.value=void 0!==r?r:"",t(function(){l.focus(),l.style.height="100%"}),l.addEventListener("change",o),l.addEventListener("blur",o),l.addEventListener("keydown",function(e){switch(e.keyCode){case 13:o(e);break;case 27:n()}}),l},textarea:function(e,t,i,n,a){function o(t){(null===r||void 0===r)&&""!==s.value||s.value!=r?(i(s.value)&&(r=s.value),setTimeout(function(){e.getRow().normalizeHeight()},300)):n()}var r=e.getValue(),l=String(null!==r&&void 0!==r?r:""),s=(l.match(/(?:\r\n|\r|\n)/g),document.createElement("textarea")),u=0;if(s.style.display="block",s.style.padding="2px",s.style.height="100%",s.style.width="100%",s.style.boxSizing="border-box",s.style.whiteSpace="pre-wrap",s.style.resize="none",a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var c in a.elementAttributes)"+"==c.charAt(0)?(c=c.slice(1),s.setAttribute(c,s.getAttribute(c)+a.elementAttributes["+"+c])):s.setAttribute(c,a.elementAttributes[c]);return s.value=l,t(function(){s.focus(),s.style.height="100%"}),s.addEventListener("change",o),s.addEventListener("blur",o),s.addEventListener("keyup",function(){s.style.height="";var t=s.scrollHeight;s.style.height=t+"px",t!=u&&(u=t,e.getRow().normalizeHeight())}),s.addEventListener("keydown",function(e){27==e.keyCode&&n()}),s},number:function(e,t,i,n,a){function o(){var e=l.value;isNaN(e)||""===e||(e=Number(e)),e!=r?i(e)&&(r=e):n()}var r=e.getValue(),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"==_typeof(a.elementAttributes))for(var s in a.elementAttributes)"+"==s.charAt(0)?(s=s.slice(1),l.setAttribute(s,l.getAttribute(s)+a.elementAttributes["+"+s])):l.setAttribute(s,a.elementAttributes[s]);l.value=r;var u=function(e){o()};return t(function(){l.removeEventListener("blur",u),l.focus(),l.style.height="100%",l.addEventListener("blur",u)}),l.addEventListener("keydown",function(e){switch(e.keyCode){case 13:o();break;case 27:n()}}),l},range:function(e,t,i,n,a){function o(){var e=l.value;isNaN(e)||""===e||(e=Number(e)),e!=r?i(e)&&(r=e):n()}var r=e.getValue(),l=document.createElement("input");if(l.setAttribute("type","range"),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"==_typeof(a.elementAttributes))for(var s in a.elementAttributes)"+"==s.charAt(0)?(s=s.slice(1),l.setAttribute(s,l.getAttribute(s)+a.elementAttributes["+"+s])):l.setAttribute(s,a.elementAttributes[s]);return l.value=r,t(function(){l.focus(),l.style.height="100%"}),l.addEventListener("blur",function(e){o()}),l.addEventListener("keydown",function(e){switch(e.keyCode){case 13:case 9:o();break;case 27:n()}}),l},select:function(e,t,i,n,a){function o(t){var i,n={},o=v.table.getData();return i=t?v.table.columnManager.getColumnByField(t):e.getColumn()._getSelf(),i?(o.forEach(function(e){var t=i.getFieldValue(e);null!==t&&void 0!==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 select lookup list:",t),n}function r(t,i){function n(e){var e={label:a.listItemFormatter?a.listItemFormatter(e.value,e.label):e.label,value:e.value,element:!1};return e.value!==i&&(isNaN(parseFloat(e.value))||isNaN(parseFloat(e.value))||parseFloat(e.value)!==parseFloat(i))||s(e),o.push(e),r.push(e),e}var o=[],r=[];if("function"==typeof t&&(t=t(e)),Array.isArray(t))t.forEach(function(e){var t;"object"===(void 0===e?"undefined":_typeof(e))?e.options?(t={label:e.label,group:!0,element:!1},r.push(t),e.options.forEach(function(e){n(e)})):n(e):(t={label:a.listItemFormatter?a.listItemFormatter(e,e):e,value:e,element:!1},t.value!==i&&(isNaN(parseFloat(t.value))||isNaN(parseFloat(t.value))||parseFloat(t.value)!==parseFloat(i))||s(t),o.push(t),r.push(t))});else for(var u in t){var c={label:a.listItemFormatter?a.listItemFormatter(u,t[u]):t[u],value:u,element:!1};c.value!==i&&(isNaN(parseFloat(c.value))||isNaN(parseFloat(c.value))||parseFloat(c.value)!==parseFloat(i))||s(c),o.push(c),r.push(c)}E=o,A=r,l()}function l(){for(;g.firstChild;)g.removeChild(g.firstChild);A.forEach(function(e){var t=e.element;t||(e.group?(t=document.createElement("div"),t.classList.add("tabulator-edit-select-list-group"),t.tabIndex=0,t.innerHTML=""===e.label?"&nbsp;":e.label):(t=document.createElement("div"),t.classList.add("tabulator-edit-select-list-item"),t.tabIndex=0,t.innerHTML=""===e.label?"&nbsp;":e.label,t.addEventListener("click",function(){s(e),u()}),e===k&&t.classList.add("active")),t.addEventListener("mousedown",function(){C=!1,setTimeout(function(){C=!0},10)}),e.element=t),g.appendChild(t)})}function s(e){k&&k.element&&k.element.classList.remove("active"),k=e,y.value="&nbsp;"===e.label?"":e.label,e.element&&e.element.classList.add("active")}function u(){m(),b!==k.value?(b=k.value,i(k.value)):n()}function c(){m(),n()}function d(){if(!g.parentNode){!0===a.values?r(o(),h):"string"==typeof a.values?r(o(a.values),h):r(a.values||[],h);var e=Tabulator.prototype.helpers.elOffset(p);g.style.minWidth=p.offsetWidth+"px",g.style.top=e.top+p.offsetHeight+"px",g.style.left=e.left+"px",document.body.appendChild(g)}}function m(){g.parentNode&&g.parentNode.removeChild(g),f()}function f(){v.table.rowManager.element.removeEventListener("scroll",c)}var v=this,p=e.getElement(),b=e.getValue(),h=void 0!==b||null===b?b:void 0!==a.defaultValue?a.defaultValue:"",y=document.createElement("input"),g=document.createElement("div"),E=[],A=[],k={},C=!0;if(this.table.rowManager.element.addEventListener("scroll",c),(Array.isArray(a)||!Array.isArray(a)&&"object"===(void 0===a?"undefined":_typeof(a))&&!a.values)&&(console.warn("DEPRECATION WANRING - 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}),y.setAttribute("type","text"),y.style.padding="4px",y.style.width="100%",y.style.boxSizing="border-box",y.style.cursor="default",y.readOnly=0!=this.currentCell,a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var L in a.elementAttributes)"+"==L.charAt(0)?(L=L.slice(1),y.setAttribute(L,y.getAttribute(L)+a.elementAttributes["+"+L])):y.setAttribute(L,a.elementAttributes[L]);return y.value=void 0!==b||null===b?b:"",!0===a.values?r(o(),b):"string"==typeof a.values?r(o(a.values),b):r(a.values||[],b),y.addEventListener("keydown",function(e){var t;switch(e.keyCode){case 38:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t=E.indexOf(k),t>0&&s(E[t-1]);break;case 40:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t=E.indexOf(k),t<E.length-1&&s(-1==t?E[0]:E[t+1]);break;case 37:case 39:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault();break;case 13:u();break;case 27:c()}}),y.addEventListener("blur",function(e){C&&c()}),y.addEventListener("focus",function(e){d()}),g=document.createElement("div"),g.classList.add("tabulator-edit-select-list"),t(function(){y.style.height="100%",y.focus()}),y},autocomplete:function(e,t,i,n,a){function o(t){var i,n={},o=p.table.getData();return i=t?p.table.columnManager.getColumnByField(t):e.getColumn()._getSelf(),i?(o.forEach(function(e){var t=i.getFieldValue(e);null!==t&&void 0!==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:",t),n}function r(e,t){var i=[];if(Array.isArray(e))e.forEach(function(e){var n={title:a.listItemFormatter?a.listItemFormatter(e,e):e,value:e,element:!1};n.value!==t&&(isNaN(parseFloat(n.value))||isNaN(parseFloat(n.value))||parseFloat(n.value)!==parseFloat(t))||u(n),i.push(n)});else for(var n in e){var o={title:a.listItemFormatter?a.listItemFormatter(n,e[n]):e[n],value:n,element:!1};o.value!==t&&(isNaN(parseFloat(o.value))||isNaN(parseFloat(o.value))||parseFloat(o.value)!==parseFloat(t))||u(o),i.push(o)}a.searchFunc&&i.forEach(function(e){e.search={title:e.title,value:e.value}}),A=i}function l(e,t){var i=[],n=[],o=[];a.searchFunc?(A.forEach(function(e){n.push(e.search)}),o=a.searchFunc(e,n),o.forEach(function(e){var t=A.find(function(t){return t.search===e});t&&i.push(t)})):""===e?a.showListOnEmpty&&A.forEach(function(e){i.push(e)}):A.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)&&i.push(t)}),k=i,s(t)}function s(e){for(var t=!1;E.firstChild;)E.removeChild(E.firstChild);k.forEach(function(i){var n=i.element;n||(n=document.createElement("div"),n.classList.add("tabulator-edit-select-list-item"),n.tabIndex=0,n.innerHTML=i.title,n.addEventListener("click",function(){u(i),c()}),n.addEventListener("mousedown",function(){w=!1,setTimeout(function(){w=!0},10)}),i.element=n,e&&i.value==h&&(g.value=i.title,i.element.classList.add("active"),t=!0),i===L&&(i.element.classList.add("active"),t=!0)),E.appendChild(n)}),t||u(!1)}function u(e,t){L&&L.element&&L.element.classList.remove("active"),L=e,e&&e.element&&e.element.classList.add("active")}function c(){f(),L?h!==L.value?(h=L.value,g.value=L.title,i(L.value)):n():a.freetext?(h=g.value,i(g.value)):a.allowEmpty&&""===g.value?(h=g.value,i(g.value)):n()}function d(){f(),n()}function m(){if(!E.parentNode){for(;E.firstChild;)E.removeChild(E.firstChild);C=!0===a.values?o():"string"==typeof a.values?o(a.values):a.values||[],r(C,h);var e=Tabulator.prototype.helpers.elOffset(b);E.style.minWidth=b.offsetWidth+"px",E.style.top=e.top+b.offsetHeight+"px",E.style.left=e.left+"px",document.body.appendChild(E)}}function f(){E.parentNode&&E.parentNode.removeChild(E),v()}function v(){p.table.rowManager.element.removeEventListener("scroll",d)}var p=this,b=e.getElement(),h=e.getValue(),y=void 0!==h||null===h?h:void 0!==a.defaultValue?a.defaultValue:"",g=document.createElement("input"),E=document.createElement("div"),A=[],k=[],C=[],L={},w=!0;if(this.table.rowManager.element.addEventListener("scroll",d),g.setAttribute("type","search"),g.style.padding="4px",g.style.width="100%",g.style.boxSizing="border-box",a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var x in a.elementAttributes)"+"==x.charAt(0)?(x=x.slice(1),g.setAttribute(x,g.getAttribute(x)+a.elementAttributes["+"+x])):g.setAttribute(x,a.elementAttributes[x]);return g.addEventListener("keydown",function(e){var t;switch(e.keyCode){case 38:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t=k.indexOf(L),u(t>0?k[t-1]:!1);break;case 40:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t=k.indexOf(L),t<k.length-1&&u(-1==t?k[0]:k[t+1]);break;case 37:case 39:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault();break;case 13:c();break;case 27:d();break;case 36:case 35:e.stopImmediatePropagation()}}),g.addEventListener("keyup",function(e){switch(e.keyCode){case 38:case 37:case 39:case 40:case 13:case 27:break;default:l(g.value)}}),g.addEventListener("search",function(e){l(g.value)}),g.addEventListener("blur",function(e){w&&c()}),g.addEventListener("focus",function(e){var t=y;m(),g.value=t,l(t,!0)}),E=document.createElement("div"),E.classList.add("tabulator-edit-select-list"),t(function(){g.style.height="100%",g.focus()}),g},star:function(e,t,i,n,a){function o(e){m.forEach(function(t,i){i<e?("ie"==l.table.browser?t.setAttribute("class","tabulator-star-active"):t.classList.replace("tabulator-star-inactive","tabulator-star-active"),t.innerHTML='<polygon fill="#488CE9" stroke="#014AAE" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>'):("ie"==l.table.browser?t.setAttribute("class","tabulator-star-inactive"):t.classList.replace("tabulator-star-active","tabulator-star-inactive"),t.innerHTML='<polygon fill="#010155" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>')})}function r(e){u=e,o(e)}var l=this,s=e.getElement(),u=e.getValue(),c=s.getElementsByTagName("svg").length||5,d=s.getElementsByTagName("svg")[0]?s.getElementsByTagName("svg")[0].getAttribute("width"):14,m=[],f=document.createElement("div"),v=document.createElementNS("http://www.w3.org/2000/svg","svg");if(s.style.whiteSpace="nowrap",s.style.overflow="hidden",s.style.textOverflow="ellipsis",f.style.verticalAlign="middle",f.style.display="inline-block",f.style.padding="4px",v.setAttribute("width",d),v.setAttribute("height",d),v.setAttribute("viewBox","0 0 512 512"),v.setAttribute("xml:space","preserve"),v.style.padding="0 1px",a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var p in a.elementAttributes)"+"==p.charAt(0)?(p=p.slice(1),f.setAttribute(p,f.getAttribute(p)+a.elementAttributes["+"+p])):f.setAttribute(p,a.elementAttributes[p]);for(var b=1;b<=c;b++)!function(e){var t=document.createElement("span"),n=v.cloneNode(!0);m.push(n),t.addEventListener("mouseenter",function(t){t.stopPropagation(),t.stopImmediatePropagation(),o(e)}),t.addEventListener("mousemove",function(e){e.stopPropagation(),e.stopImmediatePropagation()}),t.addEventListener("click",function(t){t.stopPropagation(),t.stopImmediatePropagation(),i(e)}),t.appendChild(n),f.appendChild(t)}(b);return u=Math.min(parseInt(u),c),o(u),f.addEventListener("mousemove",function(e){o(0)}),f.addEventListener("click",function(e){i(0)}),s.addEventListener("blur",function(e){n()}),s.addEventListener("keydown",function(e){switch(e.keyCode){case 39:r(u+1);break;case 37:r(u-1);break;case 13:i(u);break;case 27:n()}}),f},progress:function(e,t,i,n,a){function o(){var e=d*Math.round(v.offsetWidth/(s.clientWidth/100))+c;i(e),s.setAttribute("aria-valuenow",e),s.setAttribute("aria-label",m)}var r,l,s=e.getElement(),u=void 0===a.max?s.getElementsByTagName("div")[0].getAttribute("max")||100:a.max,c=void 0===a.min?s.getElementsByTagName("div")[0].getAttribute("min")||0:a.min,d=(u-c)/100,m=e.getValue()||0,f=document.createElement("div"),v=document.createElement("div");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"),v.style.display="inline-block",v.style.position="relative",v.style.height="100%",v.style.backgroundColor="#488CE9",v.style.maxWidth="100%",v.style.minWidth="0%",a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var p in a.elementAttributes)"+"==p.charAt(0)?(p=p.slice(1),v.setAttribute(p,v.getAttribute(p)+a.elementAttributes["+"+p])):v.setAttribute(p,a.elementAttributes[p]);return s.style.padding="4px 4px",m=Math.min(parseFloat(m),u),m=Math.max(parseFloat(m),c),m=Math.round((m-c)/d),v.style.width=m+"%",s.setAttribute("aria-valuemin",c),s.setAttribute("aria-valuemax",u),v.appendChild(f),f.addEventListener("mousedown",function(e){r=e.screenX,l=v.offsetWidth}),f.addEventListener("mouseover",function(){f.style.cursor="ew-resize"}),s.addEventListener("mousemove",function(e){r&&(v.style.width=l+e.screenX-r+"px")}),s.addEventListener("mouseup",function(e){r&&(e.stopPropagation(),e.stopImmediatePropagation(),r=!1,l=!1,o())}),s.addEventListener("keydown",function(e){switch(e.keyCode){case 39:v.style.width=v.clientWidth+s.clientWidth/100+"px";break;case 37:v.style.width=v.clientWidth-s.clientWidth/100+"px";break;case 13:o();break;case 27:n()}}),s.addEventListener("blur",function(){n()}),v},tickCross:function(e,t,i,n,a){function o(e){return s?e?c?u:l.checked:l.checked&&!c?(l.checked=!1,l.indeterminate=!0,c=!0,u):(c=!1,l.checked):l.checked}var r=e.getValue(),l=document.createElement("input"),s=a.tristate,u=void 0===a.indeterminateValue?null:a.indeterminateValue,c=!1;if(l.setAttribute("type","checkbox"),l.style.marginTop="5px",l.style.boxSizing="border-box",a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var d in a.elementAttributes)"+"==d.charAt(0)?(d=d.slice(1),l.setAttribute(d,l.getAttribute(d)+a.elementAttributes["+"+d])):l.setAttribute(d,a.elementAttributes[d]);return l.value=r,!s||void 0!==r&&r!==u&&""!==r||(c=!0,l.indeterminate=!0),"firefox"!=this.table.browser&&t(function(){l.focus()}),l.checked=!0===r||"true"===r||"True"===r||1===r,l.addEventListener("change",function(e){i(o())}),l.addEventListener("blur",function(e){i(o(!0))}),l.addEventListener("keydown",function(e){13==e.keyCode&&i(o()),27==e.keyCode&&n()}),l}},Tabulator.prototype.registerModule("edit",Edit);
\ No newline at end of file
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
+var _typeof="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},Edit=function(e){this.table=e,this.currentCell=!1,this.mouseClick=!1,this.recursionBlock=!1,this.invalidEdit=!1};Edit.prototype.initializeColumn=function(e){var t=this,i={editor:!1,blocked:!1,check:e.definition.editable,params:e.definition.editorParams||{}};switch(_typeof(e.definition.editor)){case"string":"tick"===e.definition.editor&&(e.definition.editor="tickCross",console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor")),t.editors[e.definition.editor]?i.editor=t.editors[e.definition.editor]:console.warn("Editor Error - No such editor found: ",e.definition.editor);break;case"function":i.editor=e.definition.editor;break;case"boolean":!0===e.definition.editor&&("function"!=typeof e.definition.formatter?("tick"===e.definition.formatter&&(e.definition.formatter="tickCross",console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor")),t.editors[e.definition.formatter]?i.editor=t.editors[e.definition.formatter]:i.editor=t.editors.input):console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ",e.definition.formatter))}i.editor&&(e.modules.edit=i)},Edit.prototype.getCurrentCell=function(){return!!this.currentCell&&this.currentCell.getComponent()},Edit.prototype.clearEditor=function(){var e,t=this.currentCell;if(this.invalidEdit=!1,t){for(this.currentCell=!1,e=t.getElement(),e.classList.remove("tabulator-validation-fail"),e.classList.remove("tabulator-editing");e.firstChild;)e.removeChild(e.firstChild);t.row.getElement().classList.remove("tabulator-row-editing")}},Edit.prototype.cancelEdit=function(){if(this.currentCell){var e=this.currentCell,t=this.currentCell.getComponent();this.clearEditor(),e.setValueActual(e.getValue()),e.column.cellEvents.cellEditCancelled&&e.column.cellEvents.cellEditCancelled.call(this.table,t),this.table.options.cellEditCancelled.call(this.table,t)}},Edit.prototype.bindEditor=function(e){var t=this,i=e.getElement();i.setAttribute("tabindex",0),i.addEventListener("click",function(e){i.classList.contains("tabulator-editing")||i.focus()}),i.addEventListener("mousedown",function(e){t.mouseClick=!0}),i.addEventListener("focus",function(i){t.recursionBlock||t.edit(e,i,!1)})},Edit.prototype.focusCellNoEvent=function(e,t){this.recursionBlock=!0,t&&"ie"===this.table.browser||e.getElement().focus(),this.recursionBlock=!1},Edit.prototype.editCell=function(e,t){this.focusCellNoEvent(e),this.edit(e,!1,t)},Edit.prototype.edit=function(e,t,i){function n(t){if(u.currentCell===e){var i=!0;return e.column.modules.validate&&u.table.modExists("validate")&&(i=u.table.modules.validate.validate(e.column.modules.validate,e.getComponent(),t)),!0===i?(u.clearEditor(),e.setValue(t,!0),u.table.options.dataTree&&u.table.modExists("dataTree")&&u.table.modules.dataTree.checkForRestyle(e),!0):(u.invalidEdit=!0,m.classList.add("tabulator-validation-fail"),u.focusCellNoEvent(e,!0),d(),u.table.options.validationFailed.call(u.table,e.getComponent(),t,i),!1)}}function a(){u.currentCell===e&&(u.cancelEdit(),u.table.options.dataTree&&u.table.modExists("dataTree")&&u.table.modules.dataTree.checkForRestyle(e))}function o(e){d=e}var r,l,s,u=this,c=!0,d=function(){},m=e.getElement();if(this.currentCell)return void(this.invalidEdit||this.cancelEdit());if(e.column.modules.edit.blocked)return this.mouseClick=!1,m.blur(),!1;switch(t&&t.stopPropagation(),_typeof(e.column.modules.edit.check)){case"function":c=e.column.modules.edit.check(e.getComponent());break;case"boolean":c=e.column.modules.edit.check}if(c||i){if(u.cancelEdit(),u.currentCell=e,l=e.getComponent(),this.mouseClick&&(this.mouseClick=!1,e.column.cellEvents.cellClick&&e.column.cellEvents.cellClick.call(this.table,t,l)),e.column.cellEvents.cellEditing&&e.column.cellEvents.cellEditing.call(this.table,l),u.table.options.cellEditing.call(this.table,l),s="function"==typeof e.column.modules.edit.params?e.column.modules.edit.params(l):e.column.modules.edit.params,!1===(r=e.column.modules.edit.editor.call(u,l,o,n,a,s)))return m.blur(),!1;if(!(r instanceof Node))return console.warn("Edit Error - Editor should return an instance of Node, the editor returned:",r),m.blur(),!1;for(m.classList.add("tabulator-editing"),e.row.getElement().classList.add("tabulator-row-editing");m.firstChild;)m.removeChild(m.firstChild);m.appendChild(r),d();for(var f=m.children,v=0;v<f.length;v++)f[v].addEventListener("click",function(e){e.stopPropagation()});return!0}return this.mouseClick=!1,m.blur(),!1},Edit.prototype.editors={input:function(e,t,i,n,a){function o(e){(null===r||void 0===r)&&""!==l.value||l.value!=r?i(l.value)&&(r=l.value):n()}var r=e.getValue(),l=document.createElement("input");if(l.setAttribute("type",a.search?"search":"text"),l.style.padding="4px",l.style.width="100%",l.style.boxSizing="border-box",a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var s in a.elementAttributes)"+"==s.charAt(0)?(s=s.slice(1),l.setAttribute(s,l.getAttribute(s)+a.elementAttributes["+"+s])):l.setAttribute(s,a.elementAttributes[s]);return l.value=void 0!==r?r:"",t(function(){l.focus(),l.style.height="100%"}),l.addEventListener("change",o),l.addEventListener("blur",o),l.addEventListener("keydown",function(e){switch(e.keyCode){case 13:o(e);break;case 27:n()}}),l},textarea:function(e,t,i,n,a){function o(t){(null===r||void 0===r)&&""!==u.value||u.value!=r?(i(u.value)&&(r=u.value),setTimeout(function(){e.getRow().normalizeHeight()},300)):n()}var r=e.getValue(),l=a.verticalNavigation||"hybrid",s=String(null!==r&&void 0!==r?r:""),u=(s.match(/(?:\r\n|\r|\n)/g),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"==_typeof(a.elementAttributes))for(var d in a.elementAttributes)"+"==d.charAt(0)?(d=d.slice(1),u.setAttribute(d,u.getAttribute(d)+a.elementAttributes["+"+d])):u.setAttribute(d,a.elementAttributes[d]);return u.value=s,t(function(){u.focus(),u.style.height="100%"}),u.addEventListener("change",o),u.addEventListener("blur",o),u.addEventListener("keyup",function(){u.style.height="";var t=u.scrollHeight;u.style.height=t+"px",t!=c&&(c=t,e.getRow().normalizeHeight())}),u.addEventListener("keydown",function(e){switch(e.keyCode){case 27:n();break;case 38:("editor"==l||"hybrid"==l&&u.selectionStart)&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 40:("editor"==l||"hybrid"==l&&u.selectionStart!==u.value.length)&&(e.stopImmediatePropagation(),e.stopPropagation())}}),u},number:function(e,t,i,n,a){function o(){var e=s.value;isNaN(e)||""===e||(e=Number(e)),e!=r?i(e)&&(r=e):n()}var r=e.getValue(),l=a.verticalNavigation||"editor",s=document.createElement("input");if(s.setAttribute("type","number"),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"==_typeof(a.elementAttributes))for(var u in a.elementAttributes)"+"==u.charAt(0)?(u=u.slice(1),s.setAttribute(u,s.getAttribute(u)+a.elementAttributes["+"+u])):s.setAttribute(u,a.elementAttributes[u]);s.value=r;var c=function(e){o()};return t(function(){s.removeEventListener("blur",c),s.focus(),s.style.height="100%",s.addEventListener("blur",c)}),s.addEventListener("keydown",function(e){switch(e.keyCode){case 13:o();break;case 27:n();break;case 38:case 40:"editor"==l&&(e.stopImmediatePropagation(),e.stopPropagation())}}),s},range:function(e,t,i,n,a){function o(){var e=l.value;isNaN(e)||""===e||(e=Number(e)),e!=r?i(e)&&(r=e):n()}var r=e.getValue(),l=document.createElement("input");if(l.setAttribute("type","range"),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"==_typeof(a.elementAttributes))for(var s in a.elementAttributes)"+"==s.charAt(0)?(s=s.slice(1),l.setAttribute(s,l.getAttribute(s)+a.elementAttributes["+"+s])):l.setAttribute(s,a.elementAttributes[s]);return l.value=r,t(function(){l.focus(),l.style.height="100%"}),l.addEventListener("blur",function(e){o()}),l.addEventListener("keydown",function(e){switch(e.keyCode){case 13:case 9:o();break;case 27:n()}}),l},select:function(e,t,i,n,a){function o(t){var i,n={},o=v.table.getData();return i=t?v.table.columnManager.getColumnByField(t):e.getColumn()._getSelf(),i?(o.forEach(function(e){var t=i.getFieldValue(e);null!==t&&void 0!==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 select lookup list:",t),n}function r(t,i){function n(e){var e={label:a.listItemFormatter?a.listItemFormatter(e.value,e.label):e.label,value:e.value,element:!1};return e.value!==i&&(isNaN(parseFloat(e.value))||isNaN(parseFloat(e.value))||parseFloat(e.value)!==parseFloat(i))||s(e),o.push(e),r.push(e),e}var o=[],r=[];if("function"==typeof t&&(t=t(e)),Array.isArray(t))t.forEach(function(e){var t;"object"===(void 0===e?"undefined":_typeof(e))?e.options?(t={label:e.label,group:!0,element:!1},r.push(t),e.options.forEach(function(e){n(e)})):n(e):(t={label:a.listItemFormatter?a.listItemFormatter(e,e):e,value:e,element:!1},t.value!==i&&(isNaN(parseFloat(t.value))||isNaN(parseFloat(t.value))||parseFloat(t.value)!==parseFloat(i))||s(t),o.push(t),r.push(t))});else for(var u in t){var c={label:a.listItemFormatter?a.listItemFormatter(u,t[u]):t[u],value:u,element:!1};c.value!==i&&(isNaN(parseFloat(c.value))||isNaN(parseFloat(c.value))||parseFloat(c.value)!==parseFloat(i))||s(c),o.push(c),r.push(c)}A=o,k=r,l()}function l(){for(;E.firstChild;)E.removeChild(E.firstChild);k.forEach(function(e){var t=e.element;t||(e.group?(t=document.createElement("div"),t.classList.add("tabulator-edit-select-list-group"),t.tabIndex=0,t.innerHTML=""===e.label?"&nbsp;":e.label):(t=document.createElement("div"),t.classList.add("tabulator-edit-select-list-item"),t.tabIndex=0,t.innerHTML=""===e.label?"&nbsp;":e.label,t.addEventListener("click",function(){s(e),u()}),e===C&&t.classList.add("active")),t.addEventListener("mousedown",function(){L=!1,setTimeout(function(){L=!0},10)}),e.element=t),E.appendChild(t)})}function s(e){C&&C.element&&C.element.classList.remove("active"),C=e,y.value="&nbsp;"===e.label?"":e.label,e.element&&e.element.classList.add("active")}function u(){m(),b!==C.value?(b=C.value,i(C.value)):n()}function c(){m(),n()}function d(){if(!E.parentNode){!0===a.values?r(o(),g):"string"==typeof a.values?r(o(a.values),g):r(a.values||[],g);var e=Tabulator.prototype.helpers.elOffset(p);E.style.minWidth=p.offsetWidth+"px",E.style.top=e.top+p.offsetHeight+"px",E.style.left=e.left+"px",document.body.appendChild(E)}}function m(){E.parentNode&&E.parentNode.removeChild(E),f()}function f(){v.table.rowManager.element.removeEventListener("scroll",c)}var v=this,p=e.getElement(),b=e.getValue(),h=a.verticalNavigation||"editor",g=void 0!==b||null===b?b:void 0!==a.defaultValue?a.defaultValue:"",y=document.createElement("input"),E=document.createElement("div"),A=[],k=[],C={},L=!0;if(this.table.rowManager.element.addEventListener("scroll",c),(Array.isArray(a)||!Array.isArray(a)&&"object"===(void 0===a?"undefined":_typeof(a))&&!a.values)&&(console.warn("DEPRECATION WANRING - 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}),y.setAttribute("type","text"),y.style.padding="4px",y.style.width="100%",y.style.boxSizing="border-box",y.style.cursor="default",y.readOnly=0!=this.currentCell,a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var w in a.elementAttributes)"+"==w.charAt(0)?(w=w.slice(1),y.setAttribute(w,y.getAttribute(w)+a.elementAttributes["+"+w])):y.setAttribute(w,a.elementAttributes[w]);return y.value=void 0!==b||null===b?b:"",y.addEventListener("keydown",function(e){var t;switch(e.keyCode){case 38:t=A.indexOf(C),("editor"==h||"hybrid"==h&&t)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t>0&&s(A[t-1]));break;case 40:t=A.indexOf(C),("editor"==h||"hybrid"==h&&t<A.length-1)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t<A.length-1&&s(-1==t?A[0]:A[t+1]));break;case 37:case 39:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault();break;case 13:u();break;case 27:c()}}),y.addEventListener("blur",function(e){L&&c()}),y.addEventListener("focus",function(e){d()}),E=document.createElement("div"),E.classList.add("tabulator-edit-select-list"),t(function(){y.style.height="100%",y.focus()}),y},autocomplete:function(e,t,i,n,a){function o(t){var i,n={},o=p.table.getData();return i=t?p.table.columnManager.getColumnByField(t):e.getColumn()._getSelf(),i?(o.forEach(function(e){var t=i.getFieldValue(e);null!==t&&void 0!==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:",t),n}function r(e,t){var i=[];if(Array.isArray(e))e.forEach(function(e){var n={title:a.listItemFormatter?a.listItemFormatter(e,e):e,value:e,element:!1};n.value!==t&&(isNaN(parseFloat(n.value))||isNaN(parseFloat(n.value))||parseFloat(n.value)!==parseFloat(t))||u(n),i.push(n)});else for(var n in e){var o={title:a.listItemFormatter?a.listItemFormatter(n,e[n]):e[n],value:n,element:!1};o.value!==t&&(isNaN(parseFloat(o.value))||isNaN(parseFloat(o.value))||parseFloat(o.value)!==parseFloat(t))||u(o),i.push(o)}a.searchFunc&&i.forEach(function(e){e.search={title:e.title,value:e.value}}),k=i}function l(e,t){var i=[],n=[],o=[];a.searchFunc?(k.forEach(function(e){n.push(e.search)}),o=a.searchFunc(e,n),o.forEach(function(e){var t=k.find(function(t){return t.search===e});t&&i.push(t)})):""===e?a.showListOnEmpty&&k.forEach(function(e){i.push(e)}):k.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)&&i.push(t)}),C=i,s(t)}function s(e){for(var t=!1;A.firstChild;)A.removeChild(A.firstChild);C.forEach(function(i){var n=i.element;n||(n=document.createElement("div"),n.classList.add("tabulator-edit-select-list-item"),n.tabIndex=0,n.innerHTML=i.title,n.addEventListener("click",function(){u(i),c()}),n.addEventListener("mousedown",function(){x=!1,setTimeout(function(){x=!0},10)}),i.element=n,e&&i.value==h&&(E.value=i.title,i.element.classList.add("active"),t=!0),i===w&&(i.element.classList.add("active"),t=!0)),A.appendChild(n)}),t||u(!1)}function u(e,t){w&&w.element&&w.element.classList.remove("active"),w=e,e&&e.element&&e.element.classList.add("active")}function c(){f(),w?h!==w.value?(h=w.value,E.value=w.title,i(w.value)):n():a.freetext?(h=E.value,i(E.value)):a.allowEmpty&&""===E.value?(h=E.value,i(E.value)):n()}function d(){f(),n()}function m(){if(!A.parentNode){for(;A.firstChild;)A.removeChild(A.firstChild);L=!0===a.values?o():"string"==typeof a.values?o(a.values):a.values||[],r(L,h);var e=Tabulator.prototype.helpers.elOffset(b);A.style.minWidth=b.offsetWidth+"px",A.style.top=e.top+b.offsetHeight+"px",A.style.left=e.left+"px",document.body.appendChild(A)}}function f(){A.parentNode&&A.parentNode.removeChild(A),v()}function v(){p.table.rowManager.element.removeEventListener("scroll",d)}var p=this,b=e.getElement(),h=e.getValue(),g=a.verticalNavigation||"editor",y=void 0!==h||null===h?h:void 0!==a.defaultValue?a.defaultValue:"",E=document.createElement("input"),A=document.createElement("div"),k=[],C=[],L=[],w={},x=!0;if(this.table.rowManager.element.addEventListener("scroll",d),E.setAttribute("type","search"),E.style.padding="4px",E.style.width="100%",E.style.boxSizing="border-box",a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var N in a.elementAttributes)"+"==N.charAt(0)?(N=N.slice(1),E.setAttribute(N,E.getAttribute(N)+a.elementAttributes["+"+N])):E.setAttribute(N,a.elementAttributes[N]);return E.addEventListener("keydown",function(e){var t;switch(e.keyCode){case 38:t=C.indexOf(w),("editor"==g||"hybrid"==g&&t)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),u(t>0?C[t-1]:!1));break;case 40:t=C.indexOf(w),("editor"==g||"hybrid"==g&&t<C.length-1)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t<C.length-1&&u(-1==t?C[0]:C[t+1]));break;case 37:case 39:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault();break;case 13:c();break;case 27:d();break;case 36:case 35:e.stopImmediatePropagation()}}),E.addEventListener("keyup",function(e){switch(e.keyCode){case 38:case 37:case 39:case 40:case 13:case 27:break;default:l(E.value)}}),E.addEventListener("search",function(e){l(E.value)}),E.addEventListener("blur",function(e){x&&c()}),E.addEventListener("focus",function(e){var t=y;m(),E.value=t,l(t,!0)}),A=document.createElement("div"),A.classList.add("tabulator-edit-select-list"),t(function(){E.style.height="100%",E.focus()}),E},star:function(e,t,i,n,a){function o(e){m.forEach(function(t,i){i<e?("ie"==l.table.browser?t.setAttribute("class","tabulator-star-active"):t.classList.replace("tabulator-star-inactive","tabulator-star-active"),t.innerHTML='<polygon fill="#488CE9" stroke="#014AAE" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>'):("ie"==l.table.browser?t.setAttribute("class","tabulator-star-inactive"):t.classList.replace("tabulator-star-active","tabulator-star-inactive"),t.innerHTML='<polygon fill="#010155" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>')})}function r(e){u=e,o(e)}var l=this,s=e.getElement(),u=e.getValue(),c=s.getElementsByTagName("svg").length||5,d=s.getElementsByTagName("svg")[0]?s.getElementsByTagName("svg")[0].getAttribute("width"):14,m=[],f=document.createElement("div"),v=document.createElementNS("http://www.w3.org/2000/svg","svg");if(s.style.whiteSpace="nowrap",s.style.overflow="hidden",s.style.textOverflow="ellipsis",f.style.verticalAlign="middle",f.style.display="inline-block",f.style.padding="4px",v.setAttribute("width",d),v.setAttribute("height",d),v.setAttribute("viewBox","0 0 512 512"),v.setAttribute("xml:space","preserve"),v.style.padding="0 1px",a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var p in a.elementAttributes)"+"==p.charAt(0)?(p=p.slice(1),f.setAttribute(p,f.getAttribute(p)+a.elementAttributes["+"+p])):f.setAttribute(p,a.elementAttributes[p]);for(var b=1;b<=c;b++)!function(e){var t=document.createElement("span"),n=v.cloneNode(!0);m.push(n),t.addEventListener("mouseenter",function(t){t.stopPropagation(),t.stopImmediatePropagation(),o(e)}),t.addEventListener("mousemove",function(e){e.stopPropagation(),e.stopImmediatePropagation()}),t.addEventListener("click",function(t){t.stopPropagation(),t.stopImmediatePropagation(),i(e)}),t.appendChild(n),f.appendChild(t)}(b);return u=Math.min(parseInt(u),c),o(u),f.addEventListener("mousemove",function(e){o(0)}),f.addEventListener("click",function(e){i(0)}),s.addEventListener("blur",function(e){n()}),s.addEventListener("keydown",function(e){switch(e.keyCode){case 39:r(u+1);break;case 37:r(u-1);break;case 13:i(u);break;case 27:n()}}),f},progress:function(e,t,i,n,a){function o(){var e=d*Math.round(v.offsetWidth/(s.clientWidth/100))+c;i(e),s.setAttribute("aria-valuenow",e),s.setAttribute("aria-label",m)}var r,l,s=e.getElement(),u=void 0===a.max?s.getElementsByTagName("div")[0].getAttribute("max")||100:a.max,c=void 0===a.min?s.getElementsByTagName("div")[0].getAttribute("min")||0:a.min,d=(u-c)/100,m=e.getValue()||0,f=document.createElement("div"),v=document.createElement("div");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"),v.style.display="inline-block",v.style.position="relative",v.style.height="100%",v.style.backgroundColor="#488CE9",v.style.maxWidth="100%",v.style.minWidth="0%",a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var p in a.elementAttributes)"+"==p.charAt(0)?(p=p.slice(1),v.setAttribute(p,v.getAttribute(p)+a.elementAttributes["+"+p])):v.setAttribute(p,a.elementAttributes[p]);return s.style.padding="4px 4px",m=Math.min(parseFloat(m),u),m=Math.max(parseFloat(m),c),m=Math.round((m-c)/d),v.style.width=m+"%",s.setAttribute("aria-valuemin",c),s.setAttribute("aria-valuemax",u),v.appendChild(f),f.addEventListener("mousedown",function(e){r=e.screenX,l=v.offsetWidth}),f.addEventListener("mouseover",function(){f.style.cursor="ew-resize"}),s.addEventListener("mousemove",function(e){r&&(v.style.width=l+e.screenX-r+"px")}),s.addEventListener("mouseup",function(e){r&&(e.stopPropagation(),e.stopImmediatePropagation(),r=!1,l=!1,o())}),s.addEventListener("keydown",function(e){switch(e.keyCode){case 39:v.style.width=v.clientWidth+s.clientWidth/100+"px";break;case 37:v.style.width=v.clientWidth-s.clientWidth/100+"px";break;case 13:o();break;case 27:n()}}),s.addEventListener("blur",function(){n()}),v},tickCross:function(e,t,i,n,a){function o(e){return s?e?c?u:l.checked:l.checked&&!c?(l.checked=!1,l.indeterminate=!0,c=!0,u):(c=!1,l.checked):l.checked}var r=e.getValue(),l=document.createElement("input"),s=a.tristate,u=void 0===a.indeterminateValue?null:a.indeterminateValue,c=!1;if(l.setAttribute("type","checkbox"),l.style.marginTop="5px",l.style.boxSizing="border-box",a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var d in a.elementAttributes)"+"==d.charAt(0)?(d=d.slice(1),l.setAttribute(d,l.getAttribute(d)+a.elementAttributes["+"+d])):l.setAttribute(d,a.elementAttributes[d]);return l.value=r,!s||void 0!==r&&r!==u&&""!==r||(c=!0,l.indeterminate=!0),"firefox"!=this.table.browser&&t(function(){l.focus()}),l.checked=!0===r||"true"===r||"True"===r||1===r,l.addEventListener("change",function(e){i(o())}),l.addEventListener("blur",function(e){i(o(!0))}),l.addEventListener("keydown",function(e){13==e.keyCode&&i(o()),27==e.keyCode&&n()}),l}},Tabulator.prototype.registerModule("edit",Edit);
\ No newline at end of file
index 88ae538..99e1d0e 100644 (file)
@@ -1,6 +1,6 @@
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 
 var Filter = function Filter(table) {
 
@@ -8,7 +8,6 @@ var Filter = function Filter(table) {
 
        this.filterList = []; //hold filter list
        this.headerFilters = {}; //hold column filters
-       this.headerFilterElements = []; //hold header filter elements for manipulation
        this.headerFilterColumns = []; //hold columns that use header filters
 
        this.changed = false; //has filtering changed since last render
@@ -110,7 +109,7 @@ Filter.prototype.initializeColumn = function (column, value) {
        this.generateHeaderFilterElement(column);
 };
 
-Filter.prototype.generateHeaderFilterElement = function (column, initialValue) {
+Filter.prototype.generateHeaderFilterElement = function (column, initialValue, reinitialize) {
        var _this = this;
 
        var self = this,
@@ -128,18 +127,7 @@ Filter.prototype.generateHeaderFilterElement = function (column, initialValue) {
        function cancel() {}
 
        if (column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode) {
-               var oldFilterElement = column.modules.filter.headerElement.parentNode;
-               var oldFilterElementIndex = self.headerFilterElements.indexOf(oldFilterElement);
-               if (oldFilterElementIndex >= 0) {
-                       self.headerFilterElements.splice(oldFilterElementIndex, 1);
-               }
-
-               var oldColumnIndex = self.headerFilterColumns.indexOf(oldColumnIndex);
-               if (oldColumnIndex >= 0) {
-                       self.headerFilterColumns.splice(oldColumnIndex, 1);
-               }
-
-               column.contentElement.removeChild(oldFilterElement);
+               column.contentElement.removeChild(column.modules.filter.headerElement.parentNode);
        }
 
        if (field) {
@@ -304,8 +292,9 @@ Filter.prototype.generateHeaderFilterElement = function (column, initialValue) {
 
                        column.contentElement.appendChild(filterElement);
 
-                       self.headerFilterElements.push(editorElement);
-                       self.headerFilterColumns.push(column);
+                       if (!reinitialize) {
+                               self.headerFilterColumns.push(column);
+                       }
                }
        } else {
                console.warn("Filter Error - Cannot add header filter, column has no field set:", column.definition.title);
@@ -314,15 +303,19 @@ Filter.prototype.generateHeaderFilterElement = function (column, initialValue) {
 
 //hide all header filter elements (used to ensure correct column widths in "fitData" layout mode)
 Filter.prototype.hideHeaderFilterElements = function () {
-       this.headerFilterElements.forEach(function (element) {
-               element.style.display = 'none';
+       this.headerFilterColumns.forEach(function (column) {
+               if (column.modules.filter && column.modules.filter.headerElement) {
+                       column.modules.filter.headerElement.style.display = 'none';
+               }
        });
 };
 
 //show all header filter elements (used to ensure correct column widths in "fitData" layout mode)
 Filter.prototype.showHeaderFilterElements = function () {
-       this.headerFilterElements.forEach(function (element) {
-               element.style.display = '';
+       this.headerFilterColumns.forEach(function (column) {
+               if (column.modules.filter && column.modules.filter.headerElement) {
+                       column.modules.filter.headerElement.style.display = '';
+               }
        });
 };
 
@@ -339,7 +332,7 @@ Filter.prototype.setHeaderFilterFocus = function (column) {
 Filter.prototype.setHeaderFilterValue = function (column, value) {
        if (column) {
                if (column.modules.filter && column.modules.filter.headerElement) {
-                       this.generateHeaderFilterElement(column, value);
+                       this.generateHeaderFilterElement(column, value, true);
                        column.modules.filter.success(value);
                } else {
                        console.warn("Column Filter Error - No header filter set on column:", column.getField());
@@ -350,7 +343,7 @@ Filter.prototype.setHeaderFilterValue = function (column, value) {
 Filter.prototype.reloadHeaderFilter = function (column) {
        if (column) {
                if (column.modules.filter && column.modules.filter.headerElement) {
-                       this.generateHeaderFilterElement(column, column.modules.filter.value);
+                       this.generateHeaderFilterElement(column, column.modules.filter.value, true);
                } else {
                        console.warn("Column Filter Error - No header filter set on column:", column.getField());
                }
@@ -396,7 +389,7 @@ Filter.prototype.addFilter = function (field, type, value) {
                }
        });
 
-       if (this.table.options.persistentFilter && this.table.modExists("persistence", true)) {
+       if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.filter) {
                this.table.modules.persistence.save("filter");
        }
 };
@@ -544,7 +537,7 @@ Filter.prototype.removeFilter = function (field, type, value) {
                }
        });
 
-       if (this.table.options.persistentFilter && this.table.modExists("persistence", true)) {
+       if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.filter) {
                this.table.modules.persistence.save("filter");
        }
 };
@@ -559,7 +552,7 @@ Filter.prototype.clearFilter = function (all) {
 
        this.changed = true;
 
-       if (this.table.options.persistentFilter && this.table.modExists("persistence", true)) {
+       if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.filter) {
                this.table.modules.persistence.save("filter");
        }
 };
index 5971aaf..cb8a93a 100644 (file)
@@ -1,2 +1,2 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
-var _typeof="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},Filter=function(e){this.table=e,this.filterList=[],this.headerFilters={},this.headerFilterElements=[],this.headerFilterColumns=[],this.changed=!1};Filter.prototype.initializeColumn=function(e,t){function r(t){var r,l="input"==e.modules.filter.tagType&&"text"==e.modules.filter.attrType||"textarea"==e.modules.filter.tagType?"partial":"match",o="";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[n];else{switch(e.modules.filter.value=t,_typeof(e.definition.headerFilterFunc)){case"string":i.filters[e.definition.headerFilterFunc]?(o=e.definition.headerFilterFunc,r=function(r){var n=e.definition.headerFilterFuncParams||{},l=e.getFieldValue(r);return n="function"==typeof n?n(t,l,r):n,i.filters[e.definition.headerFilterFunc](t,l,r,n)}):console.warn("Header Filter Error - Matching filter function not found: ",e.definition.headerFilterFunc);break;case"function":r=function(r){var i=e.definition.headerFilterFuncParams||{},n=e.getFieldValue(r);return i="function"==typeof i?i(t,n,r):i,e.definition.headerFilterFunc(t,n,r,i)},o=r}if(!r)switch(l){case"partial":r=function(r){var i=e.getFieldValue(r);return void 0!==i&&null!==i&&String(i).toLowerCase().indexOf(String(t).toLowerCase())>-1},o="like";break;default:r=function(r){return e.getFieldValue(r)==t},o="="}i.headerFilters[n]={value:t,func:r,type:o}}i.changed=!0,i.table.rowManager.filterRefresh()}return!0}var i=this,n=e.getField();e.modules.filter={success:r,attrType:!1,tagType:!1,emptyFunc:!1},this.generateHeaderFilterElement(e)},Filter.prototype.generateHeaderFilterElement=function(e,t){function r(){}var i,n,l,o,a,s,d,u=this,f=this,c=e.modules.filter.success,h=e.getField();if(e.modules.filter.headerElement&&e.modules.filter.headerElement.parentNode){var p=e.modules.filter.headerElement.parentNode,F=f.headerFilterElements.indexOf(p);F>=0&&f.headerFilterElements.splice(F,1);var m=f.headerFilterColumns.indexOf(m);m>=0&&f.headerFilterColumns.splice(m,1),e.contentElement.removeChild(p)}if(h){switch(e.modules.filter.emptyFunc=e.definition.headerFilterEmptyCheck||function(e){return!e&&"0"!==e},i=document.createElement("div"),i.classList.add("tabulator-header-filter"),_typeof(e.definition.headerFilter)){case"string":f.table.modules.edit.editors[e.definition.headerFilter]?(n=f.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":n=e.definition.headerFilter;break;case"boolean":e.modules.edit&&e.modules.edit.editor?n=e.modules.edit.editor:e.definition.formatter&&f.table.modules.edit.editors[e.definition.formatter]?(n=f.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})):n=f.table.modules.edit.editors.input}if(n){if(o={getValue:function(){return void 0!==t?t:""},getField:function(){return e.definition.field},getElement:function(){return i},getColumn:function(){return e.getComponent()},getRow:function(){return{normalizeHeight:function(){}}}},d=e.definition.headerFilterParams||{},d="function"==typeof d?d.call(f.table):d,!(l=n.call(this.table.modules.edit,o,function(){},c,r,d)))return void console.warn("Filter Error - Cannot add filter to "+h+" column, editor returned a value of false");if(!(l instanceof Node))return void console.warn("Filter Error - Cannot add filter to "+h+" column, editor should return an instance of Node, the editor returned:",l);h?f.table.modules.localize.bind("headerFilters|columns|"+e.definition.field,function(e){l.setAttribute("placeholder",void 0!==e&&e?e:f.table.modules.localize.getText("headerFilters|default"))}):f.table.modules.localize.bind("headerFilters|default",function(e){l.setAttribute("placeholder",void 0!==f.column.definition.headerFilterPlaceholder&&f.column.definition.headerFilterPlaceholder?f.column.definition.headerFilterPlaceholder:e)}),l.addEventListener("click",function(e){e.stopPropagation(),l.focus()}),l.addEventListener("focus",function(e){var t=u.table.columnManager.element.scrollLeft;t!==u.table.rowManager.element.scrollLeft&&(u.table.rowManager.scrollHorizontal(t),u.table.columnManager.scrollHorizontal(t))}),a=!1,s=function(e){a&&clearTimeout(a),a=setTimeout(function(){c(l.value)},300)},e.modules.filter.headerElement=l,e.modules.filter.attrType=l.hasAttribute("type")?l.getAttribute("type").toLowerCase():"",e.modules.filter.tagType=l.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)&&(l.addEventListener("keyup",s),l.addEventListener("search",s),"number"==e.modules.filter.attrType&&l.addEventListener("change",function(e){c(l.value)}),"text"==e.modules.filter.attrType&&"ie"!==this.table.browser&&l.setAttribute("type","search")),"input"!=e.modules.filter.tagType&&"select"!=e.modules.filter.tagType&&"textarea"!=e.modules.filter.tagType||l.addEventListener("mousedown",function(e){e.stopPropagation()})),i.appendChild(l),e.contentElement.appendChild(i),f.headerFilterElements.push(l),f.headerFilterColumns.push(e)}}else console.warn("Filter Error - Cannot add header filter, column has no field set:",e.definition.title)},Filter.prototype.hideHeaderFilterElements=function(){this.headerFilterElements.forEach(function(e){e.style.display="none"})},Filter.prototype.showHeaderFilterElements=function(){this.headerFilterElements.forEach(function(e){e.style.display=""})},Filter.prototype.setHeaderFilterFocus=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())},Filter.prototype.setHeaderFilterValue=function(e,t){e&&(e.modules.filter&&e.modules.filter.headerElement?(this.generateHeaderFilterElement(e,t),e.modules.filter.success(t)):console.warn("Column Filter Error - No header filter set on column:",e.getField()))},Filter.prototype.reloadHeaderFilter=function(e){e&&(e.modules.filter&&e.modules.filter.headerElement?this.generateHeaderFilterElement(e,e.modules.filter.value):console.warn("Column Filter Error - No header filter set on column:",e.getField()))},Filter.prototype.hasChanged=function(){var e=this.changed;return this.changed=!1,e},Filter.prototype.setFilter=function(e,t,r){var i=this;i.filterList=[],Array.isArray(e)||(e=[{field:e,type:t,value:r}]),i.addFilter(e)},Filter.prototype.addFilter=function(e,t,r){var i=this;Array.isArray(e)||(e=[{field:e,type:t,value:r}]),e.forEach(function(e){(e=i.findFilter(e))&&(i.filterList.push(e),i.changed=!0)}),this.table.options.persistentFilter&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("filter")},Filter.prototype.findFilter=function(e){var t,r=this;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]?(t=r.table.columnManager.getColumnByField(e.field),i=t?function(i){return r.filters[e.type](e.value,t.getFieldValue(i))}:function(t){return r.filters[e.type](e.value,t[e.field])}):console.warn("Filter Error - No such filter type found, ignoring: ",e.type),e.func=i,!!e.func&&e},Filter.prototype.findSubFilters=function(e){var t=this,r=[];return e.forEach(function(e){(e=t.findFilter(e))&&r.push(e)}),!!r.length&&r},Filter.prototype.getFilters=function(e,t){var r=[];return e&&(r=this.getHeaderFilters()),t&&r.forEach(function(e){"function"==typeof e.type&&(e.type="function")}),r=r.concat(this.filtersToArray(this.filterList,t))},Filter.prototype.filtersToArray=function(e,t){var r=this,i=[];return e.forEach(function(e){var n;Array.isArray(e)?i.push(r.filtersToArray(e,t)):(n={field:e.field,type:e.type,value:e.value},t&&"function"==typeof n.type&&(n.type="function"),i.push(n))}),i},Filter.prototype.getHeaderFilters=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},Filter.prototype.removeFilter=function(e,t,r){var i=this;Array.isArray(e)||(e=[{field:e,type:t,value:r}]),e.forEach(function(e){var t=-1;t="object"==_typeof(e.field)?i.filterList.findIndex(function(t){return e===t}):i.filterList.findIndex(function(t){return e.field===t.field&&e.type===t.type&&e.value===t.value}),t>-1?(i.filterList.splice(t,1),i.changed=!0):console.warn("Filter Error - No matching filter type found, ignoring: ",e.type)}),this.table.options.persistentFilter&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("filter")},Filter.prototype.clearFilter=function(e){this.filterList=[],e&&this.clearHeaderFilter(),this.changed=!0,this.table.options.persistentFilter&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("filter")},Filter.prototype.clearHeaderFilter=function(){var e=this;this.headerFilters={},this.headerFilterColumns.forEach(function(t){t.modules.filter.value=null,t.modules.filter.prevSuccess=void 0,e.reloadHeaderFilter(t)}),this.changed=!0},Filter.prototype.search=function(e,t,r,i){var n=this,l=[],o=[];return Array.isArray(t)||(t=[{field:t,type:r,value:i}]),t.forEach(function(e){(e=n.findFilter(e))&&o.push(e)}),this.table.rowManager.rows.forEach(function(t){var r=!0;o.forEach(function(e){n.filterRecurse(e,t.getData())||(r=!1)}),r&&l.push("data"===e?t.getData("data"):t.getComponent())}),l},Filter.prototype.filter=function(e,t){var r=this,i=[],n=[];return r.table.options.dataFiltering&&r.table.options.dataFiltering.call(r.table,r.getFilters()),r.table.options.ajaxFiltering||!r.filterList.length&&!Object.keys(r.headerFilters).length?i=e.slice(0):e.forEach(function(e){r.filterRow(e)&&i.push(e)}),r.table.options.dataFiltered&&(i.forEach(function(e){n.push(e.getComponent())}),r.table.options.dataFiltered.call(r.table,r.getFilters(),n)),i},Filter.prototype.filterRow=function(e,t){var r=this,i=!0,n=e.getData();r.filterList.forEach(function(e){r.filterRecurse(e,n)||(i=!1)});for(var l in r.headerFilters)r.headerFilters[l].func(n)||(i=!1);return i},Filter.prototype.filterRecurse=function(e,t){var r=this,i=!1;return Array.isArray(e)?e.forEach(function(e){r.filterRecurse(e,t)&&(i=!0)}):i=e.func(t),i},Filter.prototype.filters={"=":function(e,t,r,i){return t==e},"<":function(e,t,r,i){return t<e},"<=":function(e,t,r,i){return t<=e},">":function(e,t,r,i){return t>e},">=":function(e,t,r,i){return t>=e},"!=":function(e,t,r,i){return t!=e},regex:function(e,t,r,i){return"string"==typeof e&&(e=new RegExp(e)),e.test(t)},like:function(e,t,r,i){return null===e||void 0===e?t===e:void 0!==t&&null!==t&&String(t).toLowerCase().indexOf(e.toLowerCase())>-1},in:function(e,t,r,i){return Array.isArray(e)?e.indexOf(t)>-1:(console.warn("Filter Error - filter value is not an array:",e),!1)}},Tabulator.prototype.registerModule("filter",Filter);
\ No newline at end of file
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
+var _typeof="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},Filter=function(e){this.table=e,this.filterList=[],this.headerFilters={},this.headerFilterColumns=[],this.changed=!1};Filter.prototype.initializeColumn=function(e,t){function r(t){var r,o="input"==e.modules.filter.tagType&&"text"==e.modules.filter.attrType||"textarea"==e.modules.filter.tagType?"partial":"match",l="";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[n];else{switch(e.modules.filter.value=t,_typeof(e.definition.headerFilterFunc)){case"string":i.filters[e.definition.headerFilterFunc]?(l=e.definition.headerFilterFunc,r=function(r){var n=e.definition.headerFilterFuncParams||{},o=e.getFieldValue(r);return n="function"==typeof n?n(t,o,r):n,i.filters[e.definition.headerFilterFunc](t,o,r,n)}):console.warn("Header Filter Error - Matching filter function not found: ",e.definition.headerFilterFunc);break;case"function":r=function(r){var i=e.definition.headerFilterFuncParams||{},n=e.getFieldValue(r);return i="function"==typeof i?i(t,n,r):i,e.definition.headerFilterFunc(t,n,r,i)},l=r}if(!r)switch(o){case"partial":r=function(r){var i=e.getFieldValue(r);return void 0!==i&&null!==i&&String(i).toLowerCase().indexOf(String(t).toLowerCase())>-1},l="like";break;default:r=function(r){return e.getFieldValue(r)==t},l="="}i.headerFilters[n]={value:t,func:r,type:l}}i.changed=!0,i.table.rowManager.filterRefresh()}return!0}var i=this,n=e.getField();e.modules.filter={success:r,attrType:!1,tagType:!1,emptyFunc:!1},this.generateHeaderFilterElement(e)},Filter.prototype.generateHeaderFilterElement=function(e,t,r){function i(){}var n,o,l,a,s,d,u,f=this,c=this,h=e.modules.filter.success,p=e.getField();if(e.modules.filter.headerElement&&e.modules.filter.headerElement.parentNode&&e.contentElement.removeChild(e.modules.filter.headerElement.parentNode),p){switch(e.modules.filter.emptyFunc=e.definition.headerFilterEmptyCheck||function(e){return!e&&"0"!==e},n=document.createElement("div"),n.classList.add("tabulator-header-filter"),_typeof(e.definition.headerFilter)){case"string":c.table.modules.edit.editors[e.definition.headerFilter]?(o=c.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&&c.table.modules.edit.editors[e.definition.formatter]?(o=c.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=c.table.modules.edit.editors.input}if(o){if(a={getValue:function(){return void 0!==t?t:""},getField:function(){return e.definition.field},getElement:function(){return n},getColumn:function(){return e.getComponent()},getRow:function(){return{normalizeHeight:function(){}}}},u=e.definition.headerFilterParams||{},u="function"==typeof u?u.call(c.table):u,!(l=o.call(this.table.modules.edit,a,function(){},h,i,u)))return void console.warn("Filter Error - Cannot add filter to "+p+" column, editor returned a value of false");if(!(l instanceof Node))return void console.warn("Filter Error - Cannot add filter to "+p+" column, editor should return an instance of Node, the editor returned:",l);p?c.table.modules.localize.bind("headerFilters|columns|"+e.definition.field,function(e){l.setAttribute("placeholder",void 0!==e&&e?e:c.table.modules.localize.getText("headerFilters|default"))}):c.table.modules.localize.bind("headerFilters|default",function(e){l.setAttribute("placeholder",void 0!==c.column.definition.headerFilterPlaceholder&&c.column.definition.headerFilterPlaceholder?c.column.definition.headerFilterPlaceholder:e)}),l.addEventListener("click",function(e){e.stopPropagation(),l.focus()}),l.addEventListener("focus",function(e){var t=f.table.columnManager.element.scrollLeft;t!==f.table.rowManager.element.scrollLeft&&(f.table.rowManager.scrollHorizontal(t),f.table.columnManager.scrollHorizontal(t))}),s=!1,d=function(e){s&&clearTimeout(s),s=setTimeout(function(){h(l.value)},300)},e.modules.filter.headerElement=l,e.modules.filter.attrType=l.hasAttribute("type")?l.getAttribute("type").toLowerCase():"",e.modules.filter.tagType=l.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)&&(l.addEventListener("keyup",d),l.addEventListener("search",d),"number"==e.modules.filter.attrType&&l.addEventListener("change",function(e){h(l.value)}),"text"==e.modules.filter.attrType&&"ie"!==this.table.browser&&l.setAttribute("type","search")),"input"!=e.modules.filter.tagType&&"select"!=e.modules.filter.tagType&&"textarea"!=e.modules.filter.tagType||l.addEventListener("mousedown",function(e){e.stopPropagation()})),n.appendChild(l),e.contentElement.appendChild(n),r||c.headerFilterColumns.push(e)}}else console.warn("Filter Error - Cannot add header filter, column has no field set:",e.definition.title)},Filter.prototype.hideHeaderFilterElements=function(){this.headerFilterColumns.forEach(function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="none")})},Filter.prototype.showHeaderFilterElements=function(){this.headerFilterColumns.forEach(function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="")})},Filter.prototype.setHeaderFilterFocus=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())},Filter.prototype.setHeaderFilterValue=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()))},Filter.prototype.reloadHeaderFilter=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()))},Filter.prototype.hasChanged=function(){var e=this.changed;return this.changed=!1,e},Filter.prototype.setFilter=function(e,t,r){var i=this;i.filterList=[],Array.isArray(e)||(e=[{field:e,type:t,value:r}]),i.addFilter(e)},Filter.prototype.addFilter=function(e,t,r){var i=this;Array.isArray(e)||(e=[{field:e,type:t,value:r}]),e.forEach(function(e){(e=i.findFilter(e))&&(i.filterList.push(e),i.changed=!0)}),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.filter&&this.table.modules.persistence.save("filter")},Filter.prototype.findFilter=function(e){var t,r=this;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]?(t=r.table.columnManager.getColumnByField(e.field),i=t?function(i){return r.filters[e.type](e.value,t.getFieldValue(i))}:function(t){return r.filters[e.type](e.value,t[e.field])}):console.warn("Filter Error - No such filter type found, ignoring: ",e.type),e.func=i,!!e.func&&e},Filter.prototype.findSubFilters=function(e){var t=this,r=[];return e.forEach(function(e){(e=t.findFilter(e))&&r.push(e)}),!!r.length&&r},Filter.prototype.getFilters=function(e,t){var r=[];return e&&(r=this.getHeaderFilters()),t&&r.forEach(function(e){"function"==typeof e.type&&(e.type="function")}),r=r.concat(this.filtersToArray(this.filterList,t))},Filter.prototype.filtersToArray=function(e,t){var r=this,i=[];return e.forEach(function(e){var n;Array.isArray(e)?i.push(r.filtersToArray(e,t)):(n={field:e.field,type:e.type,value:e.value},t&&"function"==typeof n.type&&(n.type="function"),i.push(n))}),i},Filter.prototype.getHeaderFilters=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},Filter.prototype.removeFilter=function(e,t,r){var i=this;Array.isArray(e)||(e=[{field:e,type:t,value:r}]),e.forEach(function(e){var t=-1;t="object"==_typeof(e.field)?i.filterList.findIndex(function(t){return e===t}):i.filterList.findIndex(function(t){return e.field===t.field&&e.type===t.type&&e.value===t.value}),t>-1?(i.filterList.splice(t,1),i.changed=!0):console.warn("Filter Error - No matching filter type found, ignoring: ",e.type)}),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.filter&&this.table.modules.persistence.save("filter")},Filter.prototype.clearFilter=function(e){this.filterList=[],e&&this.clearHeaderFilter(),this.changed=!0,this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.filter&&this.table.modules.persistence.save("filter")},Filter.prototype.clearHeaderFilter=function(){var e=this;this.headerFilters={},this.headerFilterColumns.forEach(function(t){t.modules.filter.value=null,t.modules.filter.prevSuccess=void 0,e.reloadHeaderFilter(t)}),this.changed=!0},Filter.prototype.search=function(e,t,r,i){var n=this,o=[],l=[];return Array.isArray(t)||(t=[{field:t,type:r,value:i}]),t.forEach(function(e){(e=n.findFilter(e))&&l.push(e)}),this.table.rowManager.rows.forEach(function(t){var r=!0;l.forEach(function(e){n.filterRecurse(e,t.getData())||(r=!1)}),r&&o.push("data"===e?t.getData("data"):t.getComponent())}),o},Filter.prototype.filter=function(e,t){var r=this,i=[],n=[];return r.table.options.dataFiltering&&r.table.options.dataFiltering.call(r.table,r.getFilters()),r.table.options.ajaxFiltering||!r.filterList.length&&!Object.keys(r.headerFilters).length?i=e.slice(0):e.forEach(function(e){r.filterRow(e)&&i.push(e)}),r.table.options.dataFiltered&&(i.forEach(function(e){n.push(e.getComponent())}),r.table.options.dataFiltered.call(r.table,r.getFilters(),n)),i},Filter.prototype.filterRow=function(e,t){var r=this,i=!0,n=e.getData();r.filterList.forEach(function(e){r.filterRecurse(e,n)||(i=!1)});for(var o in r.headerFilters)r.headerFilters[o].func(n)||(i=!1);return i},Filter.prototype.filterRecurse=function(e,t){var r=this,i=!1;return Array.isArray(e)?e.forEach(function(e){r.filterRecurse(e,t)&&(i=!0)}):i=e.func(t),i},Filter.prototype.filters={"=":function(e,t,r,i){return t==e},"<":function(e,t,r,i){return t<e},"<=":function(e,t,r,i){return t<=e},">":function(e,t,r,i){return t>e},">=":function(e,t,r,i){return t>=e},"!=":function(e,t,r,i){return t!=e},regex:function(e,t,r,i){return"string"==typeof e&&(e=new RegExp(e)),e.test(t)},like:function(e,t,r,i){return null===e||void 0===e?t===e:void 0!==t&&null!==t&&String(t).toLowerCase().indexOf(e.toLowerCase())>-1},in:function(e,t,r,i){return Array.isArray(e)?e.indexOf(t)>-1:(console.warn("Filter Error - filter value is not an array:",e),!1)}},Tabulator.prototype.registerModule("filter",Filter);
\ No newline at end of file
index ac9c843..f6c10b5 100644 (file)
@@ -1,6 +1,6 @@
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 
 var Format = function Format(table) {
        this.table = table; //hold Tabulator object
@@ -46,8 +46,8 @@ Format.prototype.initializeColumn = function (column) {
 };
 
 Format.prototype.cellRendered = function (cell) {
-       if (cell.column.modules.format.renderedCallback) {
-               cell.column.modules.format.renderedCallback();
+       if (cell.modules.format && cell.modules.format.renderedCallback) {
+               cell.modules.format.renderedCallback();
        }
 };
 
@@ -57,7 +57,11 @@ Format.prototype.formatValue = function (cell) {
            params = typeof cell.column.modules.format.params === "function" ? cell.column.modules.format.params(component) : cell.column.modules.format.params;
 
        function onRendered(callback) {
-               cell.column.modules.format.renderedCallback = callback;
+               if (!cell.modules.format) {
+                       cell.modules.format = {};
+               }
+
+               cell.modules.format.renderedCallback = callback;
        }
 
        return cell.column.modules.format.formatter.call(this, component, params, onRendered);
@@ -169,6 +173,7 @@ Format.prototype.formatters = {
        link: function link(cell, formatterParams, onRendered) {
                var value = cell.getValue(),
                    urlPrefix = formatterParams.urlPrefix || "",
+                   download = formatterParams.download,
                    label = value,
                    el = document.createElement("a"),
                    data;
@@ -214,6 +219,17 @@ Format.prototype.formatters = {
                                el.setAttribute("target", formatterParams.target);
                        }
 
+                       if (formatterParams.download) {
+
+                               if (typeof download == "function") {
+                                       download = download(cell);
+                               } else {
+                                       download = download === true ? "" : download;
+                               }
+
+                               el.setAttribute("download", download);
+                       }
+
                        el.innerHTML = this.emptyToSpace(this.sanitizeHTML(label));
 
                        return el;
@@ -519,7 +535,36 @@ Format.prototype.formatters = {
 
                element.setAttribute("aria-label", percentValue);
 
-               return "<div style='position:relative; height:100%;'  data-max='" + max + "' data-min='" + min + "'><div style='position:relative; height:100%; width:calc(" + percentValue + "%); background-color:" + color + "; display:inline-block;'></div></div>" + (legend ? "<div style='position:absolute; top:4px; left:0; text-align:" + legendAlign + "; width:100%; color:" + legendColor + ";'>" + legend + "</div>" : "");
+               var barEl = document.createElement("div");
+               barEl.style.display = "inline-block";
+               barEl.style.position = "relative";
+               barEl.style.width = percentValue + "%";
+               barEl.style.backgroundColor = color;
+               barEl.style.height = "100%";
+
+               barEl.setAttribute('data-max', max);
+               barEl.setAttribute('data-min', min);
+
+               if (legend) {
+                       var legendEl = document.createElement("div");
+                       legendEl.style.position = "absolute";
+                       legendEl.style.top = "4px";
+                       legendEl.style.left = 0;
+                       legendEl.style.textAlign = legendAlign;
+                       legendEl.style.width = "100%";
+                       legendEl.style.color = legendColor;
+                       legendEl.innerHTML = legend;
+               }
+
+               onRendered(function () {
+                       element.appendChild(barEl);
+
+                       if (legend) {
+                               element.appendChild(legendEl);
+                       }
+               });
+
+               return "";
        },
 
        //background color
@@ -552,41 +597,37 @@ Format.prototype.formatters = {
        responsiveCollapse: function responsiveCollapse(cell, formatterParams, onRendered) {
                var self = this,
                    open = false,
-                   el = document.createElement("div");
-
-               function toggleList(isOpen) {
-                       var collapse = cell.getRow().getElement().getElementsByClassName("tabulator-responsive-collapse")[0];
-
-                       open = isOpen;
-
-                       if (open) {
-                               el.classList.add("open");
-                               if (collapse) {
-                                       collapse.style.display = '';
-                               }
-                       } else {
-                               el.classList.remove("open");
-                               if (collapse) {
-                                       collapse.style.display = 'none';
-                               }
-                       }
-               }
+                   el = document.createElement("div"),
+                   config = cell.getRow()._row.modules.responsiveLayout;
 
                el.classList.add("tabulator-responsive-collapse-toggle");
                el.innerHTML = "<span class='tabulator-responsive-collapse-toggle-open'>+</span><span class='tabulator-responsive-collapse-toggle-close'>-</span>";
 
                cell.getElement().classList.add("tabulator-row-handle");
 
-               if (self.table.options.responsiveLayoutCollapseStartOpen) {
-                       open = true;
+               function toggleList(isOpen) {
+                       var collapseEl = config.element;
+
+                       config.open = isOpen;
+
+                       if (collapseEl) {
+
+                               if (config.open) {
+                                       el.classList.add("open");
+                                       collapseEl.style.display = '';
+                               } else {
+                                       el.classList.remove("open");
+                                       collapseEl.style.display = 'none';
+                               }
+                       }
                }
 
                el.addEventListener("click", function (e) {
                        e.stopImmediatePropagation();
-                       toggleList(!open);
+                       toggleList(!config.open);
                });
 
-               toggleList(open);
+               toggleList(config.open);
 
                return el;
        },
index d973d78..aa6cc11 100644 (file)
@@ -1,2 +1,2 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
-var _typeof="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},Format=function(e){this.table=e};Format.prototype.initializeColumn=function(e){var t=this,o={params:e.definition.formatterParams||{}};switch(_typeof(e.definition.formatter)){case"string":"tick"===e.definition.formatter&&(e.definition.formatter="tickCross",void 0===o.params.crossElement&&(o.params.crossElement=!1),console.warn("DEPRECATION WARNING - the tick formatter has been deprecated, please use the tickCross formatter with the crossElement param set to false")),t.formatters[e.definition.formatter]?o.formatter=t.formatters[e.definition.formatter]:(console.warn("Formatter Error - No such formatter found: ",e.definition.formatter),o.formatter=t.formatters.plaintext);break;case"function":o.formatter=e.definition.formatter;break;default:o.formatter=t.formatters.plaintext}e.modules.format=o},Format.prototype.cellRendered=function(e){e.column.modules.format.renderedCallback&&e.column.modules.format.renderedCallback()},Format.prototype.formatValue=function(e){function t(t){e.column.modules.format.renderedCallback=t}var o=e.getComponent(),r="function"==typeof e.column.modules.format.params?e.column.modules.format.params(o):e.column.modules.format.params;return e.column.modules.format.formatter.call(this,o,r,t)},Format.prototype.sanitizeHTML=function(e){if(e){var t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;","`":"&#x60;","=":"&#x3D;"};return String(e).replace(/[&<>"'`=\/]/g,function(e){return t[e]})}return e},Format.prototype.emptyToSpace=function(e){return null===e||void 0===e?"&nbsp;":e},Format.prototype.getFormatter=function(e){var e;switch(void 0===e?"undefined":_typeof(e)){case"string":this.formatters[e]?e=this.formatters[e]:(console.warn("Formatter Error - No such formatter found: ",e),e=this.formatters.plaintext);break;case"function":e=e;break;default:e=this.formatters.plaintext}return e},Format.prototype.formatters={plaintext:function(e,t,o){return this.emptyToSpace(this.sanitizeHTML(e.getValue()))},html:function(e,t,o){return e.getValue()},textarea:function(e,t,o){return e.getElement().style.whiteSpace="pre-wrap",this.emptyToSpace(this.sanitizeHTML(e.getValue()))},money:function(e,t,o){var r,a,i,n,l=parseFloat(e.getValue()),s=t.decimal||".",c=t.thousand||",",d=t.symbol||"",u=!!t.symbolAfter,m=void 0!==t.precision?t.precision:2;if(isNaN(l))return this.emptyToSpace(this.sanitizeHTML(e.getValue()));for(r=!1!==m?l.toFixed(m):l,r=String(r).split("."),a=r[0],i=r.length>1?s+r[1]:"",n=/(\d+)(\d{3})/;n.test(a);)a=a.replace(n,"$1"+c+"$2");return u?a+i+d:d+a+i},link:function(e,t,o){var r,a=e.getValue(),i=t.urlPrefix||"",n=a,l=document.createElement("a");if(t.labelField&&(r=e.getData(),n=r[t.labelField]),t.label)switch(_typeof(t.label)){case"string":n=t.label;break;case"function":n=t.label(e)}if(n){if(t.urlField&&(r=e.getData(),a=r[t.urlField]),t.url)switch(_typeof(t.url)){case"string":a=t.url;break;case"function":a=t.url(e)}return l.setAttribute("href",i+a),t.target&&l.setAttribute("target",t.target),l.innerHTML=this.emptyToSpace(this.sanitizeHTML(n)),l}return"&nbsp;"},image:function(e,t,o){var r=document.createElement("img");switch(r.setAttribute("src",e.getValue()),_typeof(t.height)){case"number":r.style.height=t.height+"px";break;case"string":r.style.height=t.height}switch(_typeof(t.width)){case"number":r.style.width=t.width+"px";break;case"string":r.style.width=t.width}return r.addEventListener("load",function(){e.getRow().normalizeHeight()}),r},tickCross:function(e,t,o){var r=e.getValue(),a=e.getElement(),i=t.allowEmpty,n=t.allowTruthy,l=void 0!==t.tickElement?t.tickElement:'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>',s=void 0!==t.crossElement?t.crossElement:'<svg enable-background="new 0 0 24 24" height="14" width="14"  viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';return n&&r||!0===r||"true"===r||"True"===r||1===r||"1"===r?(a.setAttribute("aria-checked",!0),l||""):!i||"null"!==r&&""!==r&&null!==r&&void 0!==r?(a.setAttribute("aria-checked",!1),s||""):(a.setAttribute("aria-checked","mixed"),"")},datetime:function(e,t,o){var r=t.inputFormat||"YYYY-MM-DD hh:mm:ss",a=t.outputFormat||"DD/MM/YYYY hh:mm:ss",i=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",n=e.getValue(),l=moment(n,r);return l.isValid()?l.format(a):!0===i?n:"function"==typeof i?i(n):i},datetimediff:function(e,t,o){var r=t.inputFormat||"YYYY-MM-DD hh:mm:ss",a=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",i=void 0!==t.suffix&&t.suffix,n=void 0!==t.unit?t.unit:void 0,l=void 0!==t.humanize&&t.humanize,s=void 0!==t.date?t.date:moment(),c=e.getValue(),d=moment(c,r);return d.isValid()?l?moment.duration(d.diff(s)).humanize(i):d.diff(s,n)+(i?" "+i:""):!0===a?c:"function"==typeof a?a(c):a},lookup:function(e,t,o){var r=e.getValue();return void 0===t[r]?(console.warn("Missing display value for "+r),r):t[r]},star:function(e,t,o){var r=e.getValue(),a=e.getElement(),i=t&&t.stars?t.stars:5,n=document.createElement("span"),l=document.createElementNS("http://www.w3.org/2000/svg","svg");n.style.verticalAlign="middle",l.setAttribute("width","14"),l.setAttribute("height","14"),l.setAttribute("viewBox","0 0 512 512"),l.setAttribute("xml:space","preserve"),l.style.padding="0 1px",r=r&&!isNaN(r)?parseInt(r):0,r=Math.max(0,Math.min(r,i));for(var s=1;s<=i;s++){var c=l.cloneNode(!0);c.innerHTML=s<=r?'<polygon fill="#FFEA00" stroke="#C1AB60" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>':'<polygon fill="#D2D2D2" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>',n.appendChild(c)}return a.style.whiteSpace="nowrap",a.style.overflow="hidden",a.style.textOverflow="ellipsis",a.setAttribute("aria-label",r),n},traffic:function(e,t,o){var r,a,i=this.sanitizeHTML(e.getValue())||0,n=document.createElement("span"),l=t&&t.max?t.max:100,s=t&&t.min?t.min:0,c=t&&void 0!==t.color?t.color:["red","orange","green"],d="#666666";if(!isNaN(i)&&void 0!==e.getValue()){switch(n.classList.add("tabulator-traffic-light"),a=parseFloat(i)<=l?parseFloat(i):l,a=parseFloat(a)>=s?parseFloat(a):s,r=(l-s)/100,a=Math.round((a-s)/r),void 0===c?"undefined":_typeof(c)){case"string":d=c;break;case"function":d=c(i);break;case"object":if(Array.isArray(c)){var u=100/c.length,m=Math.floor(a/u);m=Math.min(m,c.length-1),m=Math.max(m,0),d=c[m];break}}return n.style.backgroundColor=d,n}},progress:function(e,t,o){var r,a,i,n,l,s=this.sanitizeHTML(e.getValue())||0,c=e.getElement(),d=t&&t.max?t.max:100,u=t&&t.min?t.min:0,m=t&&t.legendAlign?t.legendAlign:"center";switch(a=parseFloat(s)<=d?parseFloat(s):d,a=parseFloat(a)>=u?parseFloat(a):u,r=(d-u)/100,a=Math.round((a-u)/r),_typeof(t.color)){case"string":i=t.color;break;case"function":i=t.color(s);break;case"object":if(Array.isArray(t.color)){var f=100/t.color.length,p=Math.floor(a/f);p=Math.min(p,t.color.length-1),p=Math.max(p,0),i=t.color[p];break}default:i="#2DC214"}switch(_typeof(t.legend)){case"string":n=t.legend;break;case"function":n=t.legend(s);break;case"boolean":n=s;break;default:n=!1}switch(_typeof(t.legendColor)){case"string":l=t.legendColor;break;case"function":l=t.legendColor(s);break;case"object":if(Array.isArray(t.legendColor)){var f=100/t.legendColor.length,p=Math.floor(a/f);p=Math.min(p,t.legendColor.length-1),p=Math.max(p,0),l=t.legendColor[p]}break;default:l="#000"}return c.style.minWidth="30px",c.style.position="relative",c.setAttribute("aria-label",a),"<div style='position:relative; height:100%;'  data-max='"+d+"' data-min='"+u+"'><div style='position:relative; height:100%; width:calc("+a+"%); background-color:"+i+"; display:inline-block;'></div></div>"+(n?"<div style='position:absolute; top:4px; left:0; text-align:"+m+"; width:100%; color:"+l+";'>"+n+"</div>":"")},color:function(e,t,o){return e.getElement().style.backgroundColor=this.sanitizeHTML(e.getValue()),""},buttonTick:function(e,t,o){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>'},buttonCross:function(e,t,o){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>'},rownum:function(e,t,o){return this.table.rowManager.activeRows.indexOf(e.getRow()._getSelf())+1},handle:function(e,t,o){return e.getElement().classList.add("tabulator-row-handle"),"<div class='tabulator-row-handle-box'><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div></div>"},responsiveCollapse:function(e,t,o){function r(t){var o=e.getRow().getElement().getElementsByClassName("tabulator-responsive-collapse")[0];i=t,i?(n.classList.add("open"),o&&(o.style.display="")):(n.classList.remove("open"),o&&(o.style.display="none"))}var a=this,i=!1,n=document.createElement("div");return n.classList.add("tabulator-responsive-collapse-toggle"),n.innerHTML="<span class='tabulator-responsive-collapse-toggle-open'>+</span><span class='tabulator-responsive-collapse-toggle-close'>-</span>",e.getElement().classList.add("tabulator-row-handle"),a.table.options.responsiveLayoutCollapseStartOpen&&(i=!0),n.addEventListener("click",function(e){e.stopImmediatePropagation(),r(!i)}),r(i),n},rowSelection:function(e){var t=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 r=e.getRow();o.addEventListener("change",function(e){r.toggleSelect()}),o.checked=r.isSelected(),this.table.modules.selectRow.registerRowSelectCheckbox(r,o)}else o.addEventListener("change",function(e){t.table.modules.selectRow.selectedRows.length?t.table.deselectRow():t.table.selectRow()}),this.table.modules.selectRow.registerHeaderSelectCheckbox(o);return o}},Tabulator.prototype.registerModule("format",Format);
\ No newline at end of file
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
+var _typeof="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},Format=function(e){this.table=e};Format.prototype.initializeColumn=function(e){var t=this,o={params:e.definition.formatterParams||{}};switch(_typeof(e.definition.formatter)){case"string":"tick"===e.definition.formatter&&(e.definition.formatter="tickCross",void 0===o.params.crossElement&&(o.params.crossElement=!1),console.warn("DEPRECATION WARNING - the tick formatter has been deprecated, please use the tickCross formatter with the crossElement param set to false")),t.formatters[e.definition.formatter]?o.formatter=t.formatters[e.definition.formatter]:(console.warn("Formatter Error - No such formatter found: ",e.definition.formatter),o.formatter=t.formatters.plaintext);break;case"function":o.formatter=e.definition.formatter;break;default:o.formatter=t.formatters.plaintext}e.modules.format=o},Format.prototype.cellRendered=function(e){e.modules.format&&e.modules.format.renderedCallback&&e.modules.format.renderedCallback()},Format.prototype.formatValue=function(e){function t(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t}var o=e.getComponent(),r="function"==typeof e.column.modules.format.params?e.column.modules.format.params(o):e.column.modules.format.params;return e.column.modules.format.formatter.call(this,o,r,t)},Format.prototype.sanitizeHTML=function(e){if(e){var t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;","`":"&#x60;","=":"&#x3D;"};return String(e).replace(/[&<>"'`=\/]/g,function(e){return t[e]})}return e},Format.prototype.emptyToSpace=function(e){return null===e||void 0===e?"&nbsp;":e},Format.prototype.getFormatter=function(e){var e;switch(void 0===e?"undefined":_typeof(e)){case"string":this.formatters[e]?e=this.formatters[e]:(console.warn("Formatter Error - No such formatter found: ",e),e=this.formatters.plaintext);break;case"function":e=e;break;default:e=this.formatters.plaintext}return e},Format.prototype.formatters={plaintext:function(e,t,o){return this.emptyToSpace(this.sanitizeHTML(e.getValue()))},html:function(e,t,o){return e.getValue()},textarea:function(e,t,o){return e.getElement().style.whiteSpace="pre-wrap",this.emptyToSpace(this.sanitizeHTML(e.getValue()))},money:function(e,t,o){var r,a,n,i,l=parseFloat(e.getValue()),s=t.decimal||".",c=t.thousand||",",d=t.symbol||"",u=!!t.symbolAfter,m=void 0!==t.precision?t.precision:2;if(isNaN(l))return this.emptyToSpace(this.sanitizeHTML(e.getValue()));for(r=!1!==m?l.toFixed(m):l,r=String(r).split("."),a=r[0],n=r.length>1?s+r[1]:"",i=/(\d+)(\d{3})/;i.test(a);)a=a.replace(i,"$1"+c+"$2");return u?a+n+d:d+a+n},link:function(e,t,o){var r,a=e.getValue(),n=t.urlPrefix||"",i=t.download,l=a,s=document.createElement("a");if(t.labelField&&(r=e.getData(),l=r[t.labelField]),t.label)switch(_typeof(t.label)){case"string":l=t.label;break;case"function":l=t.label(e)}if(l){if(t.urlField&&(r=e.getData(),a=r[t.urlField]),t.url)switch(_typeof(t.url)){case"string":a=t.url;break;case"function":a=t.url(e)}return s.setAttribute("href",n+a),t.target&&s.setAttribute("target",t.target),t.download&&(i="function"==typeof i?i(e):!0===i?"":i,s.setAttribute("download",i)),s.innerHTML=this.emptyToSpace(this.sanitizeHTML(l)),s}return"&nbsp;"},image:function(e,t,o){var r=document.createElement("img");switch(r.setAttribute("src",e.getValue()),_typeof(t.height)){case"number":r.style.height=t.height+"px";break;case"string":r.style.height=t.height}switch(_typeof(t.width)){case"number":r.style.width=t.width+"px";break;case"string":r.style.width=t.width}return r.addEventListener("load",function(){e.getRow().normalizeHeight()}),r},tickCross:function(e,t,o){var r=e.getValue(),a=e.getElement(),n=t.allowEmpty,i=t.allowTruthy,l=void 0!==t.tickElement?t.tickElement:'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>',s=void 0!==t.crossElement?t.crossElement:'<svg enable-background="new 0 0 24 24" height="14" width="14"  viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';return i&&r||!0===r||"true"===r||"True"===r||1===r||"1"===r?(a.setAttribute("aria-checked",!0),l||""):!n||"null"!==r&&""!==r&&null!==r&&void 0!==r?(a.setAttribute("aria-checked",!1),s||""):(a.setAttribute("aria-checked","mixed"),"")},datetime:function(e,t,o){var r=t.inputFormat||"YYYY-MM-DD hh:mm:ss",a=t.outputFormat||"DD/MM/YYYY hh:mm:ss",n=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",i=e.getValue(),l=moment(i,r);return l.isValid()?l.format(a):!0===n?i:"function"==typeof n?n(i):n},datetimediff:function(e,t,o){var r=t.inputFormat||"YYYY-MM-DD hh:mm:ss",a=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",n=void 0!==t.suffix&&t.suffix,i=void 0!==t.unit?t.unit:void 0,l=void 0!==t.humanize&&t.humanize,s=void 0!==t.date?t.date:moment(),c=e.getValue(),d=moment(c,r);return d.isValid()?l?moment.duration(d.diff(s)).humanize(n):d.diff(s,i)+(n?" "+n:""):!0===a?c:"function"==typeof a?a(c):a},lookup:function(e,t,o){var r=e.getValue();return void 0===t[r]?(console.warn("Missing display value for "+r),r):t[r]},star:function(e,t,o){var r=e.getValue(),a=e.getElement(),n=t&&t.stars?t.stars:5,i=document.createElement("span"),l=document.createElementNS("http://www.w3.org/2000/svg","svg");i.style.verticalAlign="middle",l.setAttribute("width","14"),l.setAttribute("height","14"),l.setAttribute("viewBox","0 0 512 512"),l.setAttribute("xml:space","preserve"),l.style.padding="0 1px",r=r&&!isNaN(r)?parseInt(r):0,r=Math.max(0,Math.min(r,n));for(var s=1;s<=n;s++){var c=l.cloneNode(!0);c.innerHTML=s<=r?'<polygon fill="#FFEA00" stroke="#C1AB60" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>':'<polygon fill="#D2D2D2" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>',i.appendChild(c)}return a.style.whiteSpace="nowrap",a.style.overflow="hidden",a.style.textOverflow="ellipsis",a.setAttribute("aria-label",r),i},traffic:function(e,t,o){var r,a,n=this.sanitizeHTML(e.getValue())||0,i=document.createElement("span"),l=t&&t.max?t.max:100,s=t&&t.min?t.min:0,c=t&&void 0!==t.color?t.color:["red","orange","green"],d="#666666";if(!isNaN(n)&&void 0!==e.getValue()){switch(i.classList.add("tabulator-traffic-light"),a=parseFloat(n)<=l?parseFloat(n):l,a=parseFloat(a)>=s?parseFloat(a):s,r=(l-s)/100,a=Math.round((a-s)/r),void 0===c?"undefined":_typeof(c)){case"string":d=c;break;case"function":d=c(n);break;case"object":if(Array.isArray(c)){var u=100/c.length,m=Math.floor(a/u);m=Math.min(m,c.length-1),m=Math.max(m,0),d=c[m];break}}return i.style.backgroundColor=d,i}},progress:function(e,t,o){var r,a,n,i,l,s=this.sanitizeHTML(e.getValue())||0,c=e.getElement(),d=t&&t.max?t.max:100,u=t&&t.min?t.min:0,m=t&&t.legendAlign?t.legendAlign:"center";switch(a=parseFloat(s)<=d?parseFloat(s):d,a=parseFloat(a)>=u?parseFloat(a):u,r=(d-u)/100,a=Math.round((a-u)/r),_typeof(t.color)){case"string":n=t.color;break;case"function":n=t.color(s);break;case"object":if(Array.isArray(t.color)){var f=100/t.color.length,p=Math.floor(a/f);p=Math.min(p,t.color.length-1),p=Math.max(p,0),n=t.color[p];break}default:n="#2DC214"}switch(_typeof(t.legend)){case"string":i=t.legend;break;case"function":i=t.legend(s);break;case"boolean":i=s;break;default:i=!1}switch(_typeof(t.legendColor)){case"string":l=t.legendColor;break;case"function":l=t.legendColor(s);break;case"object":if(Array.isArray(t.legendColor)){var f=100/t.legendColor.length,p=Math.floor(a/f);p=Math.min(p,t.legendColor.length-1),p=Math.max(p,0),l=t.legendColor[p]}break;default:l="#000"}c.style.minWidth="30px",c.style.position="relative",c.setAttribute("aria-label",a);var h=document.createElement("div");if(h.style.display="inline-block",h.style.position="relative",h.style.width=a+"%",h.style.backgroundColor=n,h.style.height="100%",h.setAttribute("data-max",d),h.setAttribute("data-min",u),i){var g=document.createElement("div");g.style.position="absolute",g.style.top="4px",g.style.left=0,g.style.textAlign=m,g.style.width="100%",g.style.color=l,g.innerHTML=i}return o(function(){c.appendChild(h),i&&c.appendChild(g)}),""},color:function(e,t,o){return e.getElement().style.backgroundColor=this.sanitizeHTML(e.getValue()),""},buttonTick:function(e,t,o){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>'},buttonCross:function(e,t,o){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>'},rownum:function(e,t,o){return this.table.rowManager.activeRows.indexOf(e.getRow()._getSelf())+1},handle:function(e,t,o){return e.getElement().classList.add("tabulator-row-handle"),"<div class='tabulator-row-handle-box'><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div></div>"},responsiveCollapse:function(e,t,o){function r(e){var t=n.element;n.open=e,t&&(n.open?(a.classList.add("open"),t.style.display=""):(a.classList.remove("open"),t.style.display="none"))}var a=document.createElement("div"),n=e.getRow()._row.modules.responsiveLayout;return a.classList.add("tabulator-responsive-collapse-toggle"),a.innerHTML="<span class='tabulator-responsive-collapse-toggle-open'>+</span><span class='tabulator-responsive-collapse-toggle-close'>-</span>",e.getElement().classList.add("tabulator-row-handle"),a.addEventListener("click",function(e){e.stopImmediatePropagation(),r(!n.open)}),r(n.open),a},rowSelection:function(e){var t=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 r=e.getRow();o.addEventListener("change",function(e){r.toggleSelect()}),o.checked=r.isSelected(),this.table.modules.selectRow.registerRowSelectCheckbox(r,o)}else o.addEventListener("change",function(e){t.table.modules.selectRow.selectedRows.length?t.table.deselectRow():t.table.selectRow()}),this.table.modules.selectRow.registerHeaderSelectCheckbox(o);return o}},Tabulator.prototype.registerModule("format",Format);
\ No newline at end of file
index 687a245..ddfadb5 100644 (file)
@@ -1,4 +1,4 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 
 var FrozenColumns = function FrozenColumns(table) {
        this.table = table; //hold Tabulator object
index 9cf6fa6..30c8830 100644 (file)
@@ -1,2 +1,2 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 var FrozenColumns=function(t){this.table=t,this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightPadding=0,this.initializationMode="left",this.active=!1,this.scrollEndTimer=!1};FrozenColumns.prototype.reset=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},FrozenColumns.prototype.initializeColumn=function(t){var o={margin:0,edge:!1};t.definition.frozen?t.parent.isGroup?console.warn("Frozen Column Error - Grouped columns cannot be frozen"):t.isGroup?console.warn("Frozen Column Error - Column Groups cannot be frozen"):(o.position=this.initializationMode,"left"==this.initializationMode?this.leftColumns.push(t):this.rightColumns.unshift(t),this.active=!0,t.modules.frozen=o):this.initializationMode="right"},FrozenColumns.prototype.scrollHorizontal=function(){var t,o=this;this.active&&(clearTimeout(this.scrollEndTimer),this.scrollEndTimer=setTimeout(function(){o.layout()},100),t=this.table.rowManager.getVisibleRows(),this.calcMargins(),this.layoutColumnPosition(),this.layoutCalcRows(),t.forEach(function(t){"row"===t.type&&o.layoutRow(t)}),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},FrozenColumns.prototype.calcMargins=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},FrozenColumns.prototype.layoutCalcRows=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))},FrozenColumns.prototype.layoutColumnPosition=function(t){var o=this;this.leftColumns.forEach(function(e,n){e.modules.frozen.margin=o._calcSpace(o.leftColumns,n)+o.table.columnManager.scrollLeft+"px",n==o.leftColumns.length-1?e.modules.frozen.edge=!0:e.modules.frozen.edge=!1,o.layoutElement(e.getElement(),e),t&&e.cells.forEach(function(t){o.layoutElement(t.getElement(),e)})}),this.rightColumns.forEach(function(e,n){e.modules.frozen.margin=o.rightPadding-o._calcSpace(o.rightColumns,n+1)+"px",n==o.rightColumns.length-1?e.modules.frozen.edge=!0:e.modules.frozen.edge=!1,o.layoutElement(e.getElement(),e),t&&e.cells.forEach(function(t){o.layoutElement(t.getElement(),e)})})},FrozenColumns.prototype.layout=function(){var t=this;t.active&&(this.calcMargins(),t.table.rowManager.getDisplayRows().forEach(function(o){"row"===o.type&&t.layoutRow(o)}),this.layoutCalcRows(),this.layoutColumnPosition(!0),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},FrozenColumns.prototype.layoutRow=function(t){var o=this;t.getElement().style.paddingLeft=this.leftMargin,this.leftColumns.forEach(function(e){var n=t.getCell(e);n&&o.layoutElement(n.getElement(),e)}),this.rightColumns.forEach(function(e){var n=t.getCell(e);n&&o.layoutElement(n.getElement(),e)})},FrozenColumns.prototype.layoutElement=function(t,o){o.modules.frozen&&(t.style.position="absolute",t.style.left=o.modules.frozen.margin,t.classList.add("tabulator-frozen"),o.modules.frozen.edge&&t.classList.add("tabulator-frozen-"+o.modules.frozen.position))},FrozenColumns.prototype._calcSpace=function(t,o){for(var e=0,n=0;n<o;n++)t[n].visible&&(e+=t[n].getWidth());return e},Tabulator.prototype.registerModule("frozenColumns",FrozenColumns);
\ No newline at end of file
index 087bc84..afb333b 100644 (file)
@@ -1,4 +1,4 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 
 var FrozenRows = function FrozenRows(table) {
        this.table = table; //hold Tabulator object
index 7c6debc..d6aeeaf 100644 (file)
@@ -1,2 +1,2 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 var FrozenRows=function(e){this.table=e,this.topElement=document.createElement("div"),this.rows=[],this.displayIndex=0};FrozenRows.prototype.initialize=function(){this.rows=[],this.topElement.classList.add("tabulator-frozen-rows-holder"),this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling)},FrozenRows.prototype.setDisplayIndex=function(e){this.displayIndex=e},FrozenRows.prototype.getDisplayIndex=function(){return this.displayIndex},FrozenRows.prototype.isFrozen=function(){return!!this.rows.length},FrozenRows.prototype.getRows=function(e){var o=e.slice(0);return this.rows.forEach(function(e){var t=o.indexOf(e);t>-1&&o.splice(t,1)}),o},FrozenRows.prototype.freezeRow=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.table.rowManager.refreshActiveData("display"),this.styleRows())},FrozenRows.prototype.unfreezeRow=function(e){var o=this.rows.indexOf(e);if(e.modules.frozen){e.modules.frozen=!1;var t=e.getElement();t.parentNode.removeChild(t),this.table.rowManager.adjustTableSize(),this.rows.splice(o,1),this.table.rowManager.refreshActiveData("display"),this.rows.length&&this.styleRows()}else console.warn("Freeze Error - Row is already unfrozen")},FrozenRows.prototype.styleRows=function(e){var o=this;this.rows.forEach(function(e,t){o.table.rowManager.styleRow(e,t)})},Tabulator.prototype.registerModule("frozenRows",FrozenRows);
\ No newline at end of file
index 310ab00..354dad7 100644 (file)
@@ -1,4 +1,4 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 
 //public group object
 var GroupComponent = function GroupComponent(group) {
@@ -103,6 +103,9 @@ Group.prototype.wipe = function () {
 };
 
 Group.prototype.createElements = function () {
+       var arrow = document.createElement("div");
+       arrow.classList.add("tabulator-arrow");
+
        this.element = document.createElement("div");
        this.element.classList.add("tabulator-row");
        this.element.classList.add("tabulator-group");
@@ -110,7 +113,8 @@ Group.prototype.createElements = function () {
        this.element.setAttribute("role", "rowgroup");
 
        this.arrowElement = document.createElement("div");
-       this.arrowElement.classList.add("tabulator-arrow");
+       this.arrowElement.classList.add("tabulator-group-toggle");
+       this.arrowElement.appendChild(arrow);
 
        //setup movable rows
        if (this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists("moveRow")) {
@@ -139,19 +143,19 @@ Group.prototype.addBindings = function () {
        //handle group click events
        if (self.groupManager.table.options.groupClick) {
                self.element.addEventListener("click", function (e) {
-                       self.groupManager.table.options.groupClick(e, self.getComponent());
+                       self.groupManager.table.options.groupClick.call(self.groupManager.table, e, self.getComponent());
                });
        }
 
        if (self.groupManager.table.options.groupDblClick) {
                self.element.addEventListener("dblclick", function (e) {
-                       self.groupManager.table.options.groupDblClick(e, self.getComponent());
+                       self.groupManager.table.options.groupDblClick.call(self.groupManager.table, e, self.getComponent());
                });
        }
 
        if (self.groupManager.table.options.groupContext) {
                self.element.addEventListener("contextmenu", function (e) {
-                       self.groupManager.table.options.groupContext(e, self.getComponent());
+                       self.groupManager.table.options.groupContext.call(self.groupManager.table, e, self.getComponent());
                });
        }
 
@@ -965,16 +969,16 @@ GroupRows.prototype.createGroup = function (groupID, level, oldGroups) {
        this.groupList.push(group);
 };
 
-GroupRows.prototype.assignRowToGroup = function (row, oldGroups) {
-       var groupID = this.groupIDLookups[0].func(row.getData()),
-           groupKey = "0_" + groupID;
+// GroupRows.prototype.assignRowToGroup = function(row, oldGroups){
+//     var groupID = this.groupIDLookups[0].func(row.getData()),
+//     groupKey = "0_" + groupID;
 
-       if (!this.groups[groupKey]) {
-               this.createGroup(groupID, 0, oldGroups);
-       }
+//     if(!this.groups[groupKey]){
+//             this.createGroup(groupID, 0, oldGroups);
+//     }
 
-       this.groups[groupKey].addRow(row);
-};
+//     this.groups[groupKey].addRow(row);
+// };
 
 GroupRows.prototype.assignRowToExistingGroup = function (row, oldGroups) {
        var groupID = this.groupIDLookups[0].func(row.getData()),
index af2ccd1..df6d5c0 100644 (file)
@@ -1,2 +1,2 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
-var GroupComponent=function(t){this._group=t,this.type="GroupComponent"};GroupComponent.prototype.getKey=function(){return this._group.key},GroupComponent.prototype.getField=function(){return this._group.field},GroupComponent.prototype.getElement=function(){return this._group.element},GroupComponent.prototype.getRows=function(){return this._group.getRows(!0)},GroupComponent.prototype.getSubGroups=function(){return this._group.getSubGroups(!0)},GroupComponent.prototype.getParentGroup=function(){return!!this._group.parent&&this._group.parent.getComponent()},GroupComponent.prototype.getVisibility=function(){return this._group.visible},GroupComponent.prototype.show=function(){this._group.show()},GroupComponent.prototype.hide=function(){this._group.hide()},GroupComponent.prototype.toggle=function(){this._group.toggleVisibility()},GroupComponent.prototype._getSelf=function(){return this._group},GroupComponent.prototype.getTable=function(){return this._group.groupManager.table};var Group=function(t,o,e,r,s,i,n){this.groupManager=t,this.parent=o,this.key=r,this.level=e,this.field=s,this.hasSubGroups=e<t.groupIDLookups.length-1,this.addRow=this.hasSubGroups?this._addRowToGroup:this._addRow,this.type="group",this.old=n,this.rows=[],this.groups=[],this.groupList=[],this.generator=i,this.elementContents=!1,this.height=0,this.outerHeight=0,this.initialized=!1,this.calcs={},this.initialized=!1,this.modules={},this.arrowElement=!1,this.visible=n?n.visible:void 0!==t.startOpen[e]?t.startOpen[e]:t.startOpen[0],this.createElements(),this.addBindings(),this.createValueGroups()};Group.prototype.wipe=function(){this.groupList.length?this.groupList.forEach(function(t){t.wipe()}):(this.element=!1,this.arrowElement=!1,this.elementContents=!1)},Group.prototype.createElements=function(){this.element=document.createElement("div"),this.element.classList.add("tabulator-row"),this.element.classList.add("tabulator-group"),this.element.classList.add("tabulator-group-level-"+this.level),this.element.setAttribute("role","rowgroup"),this.arrowElement=document.createElement("div"),this.arrowElement.classList.add("tabulator-arrow"),!1!==this.groupManager.table.options.movableRows&&this.groupManager.table.modExists("moveRow")&&this.groupManager.table.modules.moveRow.initializeGroupHeader(this)},Group.prototype.createValueGroups=function(){var t=this,o=this.level+1;this.groupManager.allowedValues&&this.groupManager.allowedValues[o]&&this.groupManager.allowedValues[o].forEach(function(e){t._createGroup(e,o)})},Group.prototype.addBindings=function(){var t,o,e,r,s=this;s.groupManager.table.options.groupClick&&s.element.addEventListener("click",function(t){s.groupManager.table.options.groupClick(t,s.getComponent())}),s.groupManager.table.options.groupDblClick&&s.element.addEventListener("dblclick",function(t){s.groupManager.table.options.groupDblClick(t,s.getComponent())}),s.groupManager.table.options.groupContext&&s.element.addEventListener("contextmenu",function(t){s.groupManager.table.options.groupContext(t,s.getComponent())}),s.groupManager.table.options.groupTap&&(e=!1,s.element.addEventListener("touchstart",function(t){e=!0},{passive:!0}),s.element.addEventListener("touchend",function(t){e&&s.groupManager.table.options.groupTap(t,s.getComponent()),e=!1})),s.groupManager.table.options.groupDblTap&&(t=null,s.element.addEventListener("touchend",function(o){t?(clearTimeout(t),t=null,s.groupManager.table.options.groupDblTap(o,s.getComponent())):t=setTimeout(function(){clearTimeout(t),t=null},300)})),s.groupManager.table.options.groupTapHold&&(o=null,s.element.addEventListener("touchstart",function(t){clearTimeout(o),o=setTimeout(function(){clearTimeout(o),o=null,e=!1,s.groupManager.table.options.groupTapHold(t,s.getComponent())},1e3)},{passive:!0}),s.element.addEventListener("touchend",function(t){clearTimeout(o),o=null})),s.groupManager.table.options.groupToggleElement&&(r="arrow"==s.groupManager.table.options.groupToggleElement?s.arrowElement:s.element,r.addEventListener("click",function(t){t.stopPropagation(),t.stopImmediatePropagation(),s.toggleVisibility()}))},Group.prototype._createGroup=function(t,o){var e=o+"_"+t,r=new Group(this.groupManager,this,o,t,this.groupManager.groupIDLookups[o].field,this.groupManager.headerGenerator[o]||this.groupManager.headerGenerator[0],!!this.old&&this.old.groups[e]);this.groups[e]=r,this.groupList.push(r)},Group.prototype._addRowToGroup=function(t){var o=this.level+1;if(this.hasSubGroups){var e=this.groupManager.groupIDLookups[o].func(t.getData()),r=o+"_"+e;this.groupManager.allowedValues&&this.groupManager.allowedValues[o]?this.groups[r]&&this.groups[r].addRow(t):(this.groups[r]||this._createGroup(e,o),this.groups[r].addRow(t))}},Group.prototype._addRow=function(t){this.rows.push(t),t.modules.group=this},Group.prototype.insertRow=function(t,o,e){var r=this.conformRowData({});t.updateData(r);var s=this.rows.indexOf(o);s>-1?e?this.rows.splice(s+1,0,t):this.rows.splice(s,0,t):e?this.rows.push(t):this.rows.unshift(t),t.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)},Group.prototype.scrollHeader=function(t){this.arrowElement.style.marginLeft=t,this.groupList.forEach(function(o){o.scrollHeader(t)})},Group.prototype.getRowIndex=function(t){},Group.prototype.conformRowData=function(t){return this.field?t[this.field]=this.key:console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function"),this.parent&&(t=this.parent.conformRowData(t)),t},Group.prototype.removeRow=function(t){var o=this.rows.indexOf(t),e=t.getElement();o>-1&&this.rows.splice(o,1),this.groupManager.table.options.groupValues||this.rows.length?(e.parentNode&&e.parentNode.removeChild(e),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))},Group.prototype.removeGroup=function(t){var o,e=t.level+"_"+t.key;this.groups[e]&&(delete this.groups[e],o=this.groupList.indexOf(t),o>-1&&this.groupList.splice(o,1),this.groupList.length||(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this)))},Group.prototype.getHeadersAndRows=function(t){var o=[];return o.push(this),this._visSet(),this.visible?this.groupList.length?this.groupList.forEach(function(e){o=o.concat(e.getHeadersAndRows(t))}):(!t&&"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),o.push(this.calcs.top)),o=o.concat(this.rows),!t&&"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),o.push(this.calcs.bottom))):this.groupList.length||"table"==this.groupManager.table.options.columnCalcs||this.groupManager.table.modExists("columnCalcs")&&(!t&&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),o.push(this.calcs.top))),!t&&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),o.push(this.calcs.bottom)))),o},Group.prototype.getData=function(t,o){var e=[];return this._visSet(),(!t||t&&this.visible)&&this.rows.forEach(function(t){e.push(t.getData(o||"data"))}),e},Group.prototype.getRowCount=function(){var t=0;return this.groupList.length?this.groupList.forEach(function(o){t+=o.getRowCount()}):t=this.rows.length,t},Group.prototype.toggleVisibility=function(){this.visible?this.hide():this.show()},Group.prototype.hide=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(t){t.getHeadersAndRows().forEach(function(t){t.detachElement()})}):this.rows.forEach(function(t){var o=t.getElement();o.parentNode.removeChild(o)}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()),this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!1)},Group.prototype.show=function(){var t=this;if(t.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 o=t.getElement();this.groupList.length?this.groupList.forEach(function(t){t.getHeadersAndRows().forEach(function(t){var e=t.getElement();o.parentNode.insertBefore(e,o.nextSibling),t.initialize(),o=e})}):t.rows.forEach(function(t){var e=t.getElement();o.parentNode.insertBefore(e,o.nextSibling),t.initialize(),o=e}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()}this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!0)},Group.prototype._visSet=function(){var t=[];"function"==typeof this.visible&&(this.rows.forEach(function(o){t.push(o.getData())}),this.visible=this.visible(this.key,this.getRowCount(),t,this.getComponent()))},Group.prototype.getRowGroup=function(t){var o=!1;return this.groupList.length?this.groupList.forEach(function(e){var r=e.getRowGroup(t);r&&(o=r)}):this.rows.find(function(o){return o===t})&&(o=this),o},Group.prototype.getSubGroups=function(t){var o=[];return this.groupList.forEach(function(e){o.push(t?e.getComponent():e)}),o},Group.prototype.getRows=function(t){var o=[];return this.rows.forEach(function(e){o.push(t?e.getComponent():e)}),o},Group.prototype.generateGroupHeaderContents=function(){var t=[];for(this.rows.forEach(function(o){t.push(o.getData())}),this.elementContents=this.generator(this.key,this.getRowCount(),t,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)},Group.prototype.getElement=function(){this.addBindingsd=!1,this._visSet(),this.visible?this.element.classList.add("tabulator-group-visible"):this.element.classList.remove("tabulator-group-visible");for(var t=0;t<this.element.childNodes.length;++t)this.element.childNodes[t].parentNode.removeChild(this.element.childNodes[t]);return this.generateGroupHeaderContents(),this.element},Group.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},Group.prototype.normalizeHeight=function(){this.setHeight(this.element.clientHeight)},Group.prototype.initialize=function(t){this.initialized&&!t||(this.normalizeHeight(),this.initialized=!0)},Group.prototype.reinitialize=function(){this.initialized=!1,this.height=0,Tabulator.prototype.helpers.elVisible(this.element)&&this.initialize(!0)},Group.prototype.setHeight=function(t){this.height!=t&&(this.height=t,this.outerHeight=this.element.offsetHeight)},Group.prototype.getHeight=function(){return this.outerHeight},Group.prototype.getGroup=function(){return this},Group.prototype.reinitializeHeight=function(){},Group.prototype.calcHeight=function(){},Group.prototype.setCellHeight=function(){},Group.prototype.clearCellHeight=function(){},Group.prototype.getComponent=function(){return new GroupComponent(this)};var GroupRows=function(t){this.table=t,this.groupIDLookups=!1,this.startOpen=[function(){return!1}],this.headerGenerator=[function(){return""}],this.groupList=[],this.allowedValues=!1,this.groups={},this.displayIndex=0};GroupRows.prototype.initialize=function(){var t=this,o=t.table.options.groupBy,e=t.table.options.groupStartOpen,r=t.table.options.groupHeader;if(this.allowedValues=t.table.options.groupValues,Array.isArray(o)&&Array.isArray(r)&&o.length>r.length&&console.warn("Error creating group headers, groupHeader array is shorter than groupBy array"),t.headerGenerator=[function(){return""}],this.startOpen=[function(){return!1}],t.table.modules.localize.bind("groups|item",function(o,e){t.headerGenerator[0]=function(t,r,s){return(void 0===t?"":t)+"<span>("+r+" "+(1===r?o:e.groups.items)+")</span>"}}),this.groupIDLookups=[],Array.isArray(o)||o)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){var s=this.table.columnManager.getRealColumns();s.forEach(function(o){o.definition.topCalc&&t.table.modules.columnCalcs.initializeTopRow(),o.definition.bottomCalc&&t.table.modules.columnCalcs.initializeBottomRow()})}Array.isArray(o)||(o=[o]),o.forEach(function(o,e){var r,s;"function"==typeof o?r=o:(s=t.table.columnManager.getColumnByField(o),r=s?function(t){return s.getFieldValue(t)}:function(t){return t[o]}),t.groupIDLookups.push({field:"function"!=typeof o&&o,func:r,values:!!t.allowedValues&&t.allowedValues[e]})}),e&&(Array.isArray(e)||(e=[e]),e.forEach(function(t){t="function"==typeof t?t:function(){return!0}}),t.startOpen=e),r&&(t.headerGenerator=Array.isArray(r)?r:[r]),this.initialized=!0},GroupRows.prototype.setDisplayIndex=function(t){this.displayIndex=t},GroupRows.prototype.getDisplayIndex=function(){return this.displayIndex},GroupRows.prototype.getRows=function(t){return this.groupIDLookups.length?(this.table.options.dataGrouping.call(this.table),this.generateGroups(t),this.table.options.dataGrouped&&this.table.options.dataGrouped.call(this.table,this.getGroups(!0)),this.updateGroupRows()):t.slice(0)},GroupRows.prototype.getGroups=function(t){var o=[];return this.groupList.forEach(function(e){o.push(t?e.getComponent():e)}),o},GroupRows.prototype.wipe=function(){this.groupList.forEach(function(t){t.wipe()})},GroupRows.prototype.pullGroupListData=function(t){var o=this,e=[];return t.forEach(function(t){var r={};r.level=0,r.rowCount=0,r.headerContent="";var s=[];t.hasSubGroups?(s=o.pullGroupListData(t.groupList),r.level=t.level,r.rowCount=s.length-t.groupList.length,r.headerContent=t.generator(t.key,r.rowCount,t.rows,t),e.push(r),e=e.concat(s)):(r.level=t.level,r.headerContent=t.generator(t.key,t.rows.length,t.rows,t),r.rowCount=t.getRows().length,e.push(r),t.getRows().forEach(function(t){e.push(t.getData("data"))}))}),e},GroupRows.prototype.getGroupedData=function(){return this.pullGroupListData(this.groupList)},GroupRows.prototype.getRowGroup=function(t){var o=!1;return this.groupList.forEach(function(e){var r=e.getRowGroup(t);r&&(o=r)}),o},GroupRows.prototype.countGroups=function(){return this.groupList.length},GroupRows.prototype.generateGroups=function(t){var o=this,e=o.groups;o.groups={},o.groupList=[],this.allowedValues&&this.allowedValues[0]?(this.allowedValues[0].forEach(function(t){o.createGroup(t,0,e)}),t.forEach(function(t){o.assignRowToExistingGroup(t,e)})):t.forEach(function(t){o.assignRowToGroup(t,e)})},GroupRows.prototype.createGroup=function(t,o,e){var r,s=o+"_"+t;e=e||[],r=new Group(this,!1,o,t,this.groupIDLookups[0].field,this.headerGenerator[0],e[s]),this.groups[s]=r,this.groupList.push(r)},GroupRows.prototype.assignRowToGroup=function(t,o){var e=this.groupIDLookups[0].func(t.getData()),r="0_"+e;this.groups[r]||this.createGroup(e,0,o),this.groups[r].addRow(t)},GroupRows.prototype.assignRowToExistingGroup=function(t,o){var e=this.groupIDLookups[0].func(t.getData()),r="0_"+e;this.groups[r]&&this.groups[r].addRow(t)},GroupRows.prototype.assignRowToGroup=function(t,o){var e=this.groupIDLookups[0].func(t.getData()),r=!this.groups["0_"+e];return r&&this.createGroup(e,0,o),this.groups["0_"+e].addRow(t),!r},GroupRows.prototype.updateGroupRows=function(t){var o=this,e=[];if(o.groupList.forEach(function(t){e=e.concat(t.getHeadersAndRows())}),t){var r=o.table.rowManager.setDisplayRows(e,this.getDisplayIndex());!0!==r&&this.setDisplayIndex(r),o.table.rowManager.refreshActiveData("group",!0,!0)}return e},GroupRows.prototype.scrollHeaders=function(t){t+="px",this.groupList.forEach(function(o){o.scrollHeader(t)})},GroupRows.prototype.removeGroup=function(t){var o,e=t.level+"_"+t.key;this.groups[e]&&(delete this.groups[e],(o=this.groupList.indexOf(t))>-1&&this.groupList.splice(o,1))},Tabulator.prototype.registerModule("groupRows",GroupRows);
\ No newline at end of file
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
+var GroupComponent=function(t){this._group=t,this.type="GroupComponent"};GroupComponent.prototype.getKey=function(){return this._group.key},GroupComponent.prototype.getField=function(){return this._group.field},GroupComponent.prototype.getElement=function(){return this._group.element},GroupComponent.prototype.getRows=function(){return this._group.getRows(!0)},GroupComponent.prototype.getSubGroups=function(){return this._group.getSubGroups(!0)},GroupComponent.prototype.getParentGroup=function(){return!!this._group.parent&&this._group.parent.getComponent()},GroupComponent.prototype.getVisibility=function(){return this._group.visible},GroupComponent.prototype.show=function(){this._group.show()},GroupComponent.prototype.hide=function(){this._group.hide()},GroupComponent.prototype.toggle=function(){this._group.toggleVisibility()},GroupComponent.prototype._getSelf=function(){return this._group},GroupComponent.prototype.getTable=function(){return this._group.groupManager.table};var Group=function(t,o,e,r,i,s,n){this.groupManager=t,this.parent=o,this.key=r,this.level=e,this.field=i,this.hasSubGroups=e<t.groupIDLookups.length-1,this.addRow=this.hasSubGroups?this._addRowToGroup:this._addRow,this.type="group",this.old=n,this.rows=[],this.groups=[],this.groupList=[],this.generator=s,this.elementContents=!1,this.height=0,this.outerHeight=0,this.initialized=!1,this.calcs={},this.initialized=!1,this.modules={},this.arrowElement=!1,this.visible=n?n.visible:void 0!==t.startOpen[e]?t.startOpen[e]:t.startOpen[0],this.createElements(),this.addBindings(),this.createValueGroups()};Group.prototype.wipe=function(){this.groupList.length?this.groupList.forEach(function(t){t.wipe()}):(this.element=!1,this.arrowElement=!1,this.elementContents=!1)},Group.prototype.createElements=function(){var t=document.createElement("div");t.classList.add("tabulator-arrow"),this.element=document.createElement("div"),this.element.classList.add("tabulator-row"),this.element.classList.add("tabulator-group"),this.element.classList.add("tabulator-group-level-"+this.level),this.element.setAttribute("role","rowgroup"),this.arrowElement=document.createElement("div"),this.arrowElement.classList.add("tabulator-group-toggle"),this.arrowElement.appendChild(t),!1!==this.groupManager.table.options.movableRows&&this.groupManager.table.modExists("moveRow")&&this.groupManager.table.modules.moveRow.initializeGroupHeader(this)},Group.prototype.createValueGroups=function(){var t=this,o=this.level+1;this.groupManager.allowedValues&&this.groupManager.allowedValues[o]&&this.groupManager.allowedValues[o].forEach(function(e){t._createGroup(e,o)})},Group.prototype.addBindings=function(){var t,o,e,r,i=this;i.groupManager.table.options.groupClick&&i.element.addEventListener("click",function(t){i.groupManager.table.options.groupClick.call(i.groupManager.table,t,i.getComponent())}),i.groupManager.table.options.groupDblClick&&i.element.addEventListener("dblclick",function(t){i.groupManager.table.options.groupDblClick.call(i.groupManager.table,t,i.getComponent())}),i.groupManager.table.options.groupContext&&i.element.addEventListener("contextmenu",function(t){i.groupManager.table.options.groupContext.call(i.groupManager.table,t,i.getComponent())}),i.groupManager.table.options.groupTap&&(e=!1,i.element.addEventListener("touchstart",function(t){e=!0},{passive:!0}),i.element.addEventListener("touchend",function(t){e&&i.groupManager.table.options.groupTap(t,i.getComponent()),e=!1})),i.groupManager.table.options.groupDblTap&&(t=null,i.element.addEventListener("touchend",function(o){t?(clearTimeout(t),t=null,i.groupManager.table.options.groupDblTap(o,i.getComponent())):t=setTimeout(function(){clearTimeout(t),t=null},300)})),i.groupManager.table.options.groupTapHold&&(o=null,i.element.addEventListener("touchstart",function(t){clearTimeout(o),o=setTimeout(function(){clearTimeout(o),o=null,e=!1,i.groupManager.table.options.groupTapHold(t,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(t){clearTimeout(o),o=null})),i.groupManager.table.options.groupToggleElement&&(r="arrow"==i.groupManager.table.options.groupToggleElement?i.arrowElement:i.element,r.addEventListener("click",function(t){t.stopPropagation(),t.stopImmediatePropagation(),i.toggleVisibility()}))},Group.prototype._createGroup=function(t,o){var e=o+"_"+t,r=new Group(this.groupManager,this,o,t,this.groupManager.groupIDLookups[o].field,this.groupManager.headerGenerator[o]||this.groupManager.headerGenerator[0],!!this.old&&this.old.groups[e]);this.groups[e]=r,this.groupList.push(r)},Group.prototype._addRowToGroup=function(t){var o=this.level+1;if(this.hasSubGroups){var e=this.groupManager.groupIDLookups[o].func(t.getData()),r=o+"_"+e;this.groupManager.allowedValues&&this.groupManager.allowedValues[o]?this.groups[r]&&this.groups[r].addRow(t):(this.groups[r]||this._createGroup(e,o),this.groups[r].addRow(t))}},Group.prototype._addRow=function(t){this.rows.push(t),t.modules.group=this},Group.prototype.insertRow=function(t,o,e){var r=this.conformRowData({});t.updateData(r);var i=this.rows.indexOf(o);i>-1?e?this.rows.splice(i+1,0,t):this.rows.splice(i,0,t):e?this.rows.push(t):this.rows.unshift(t),t.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)},Group.prototype.scrollHeader=function(t){this.arrowElement.style.marginLeft=t,this.groupList.forEach(function(o){o.scrollHeader(t)})},Group.prototype.getRowIndex=function(t){},Group.prototype.conformRowData=function(t){return this.field?t[this.field]=this.key:console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function"),this.parent&&(t=this.parent.conformRowData(t)),t},Group.prototype.removeRow=function(t){var o=this.rows.indexOf(t),e=t.getElement();o>-1&&this.rows.splice(o,1),this.groupManager.table.options.groupValues||this.rows.length?(e.parentNode&&e.parentNode.removeChild(e),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))},Group.prototype.removeGroup=function(t){var o,e=t.level+"_"+t.key;this.groups[e]&&(delete this.groups[e],o=this.groupList.indexOf(t),o>-1&&this.groupList.splice(o,1),this.groupList.length||(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this)))},Group.prototype.getHeadersAndRows=function(t){var o=[];return o.push(this),this._visSet(),this.visible?this.groupList.length?this.groupList.forEach(function(e){o=o.concat(e.getHeadersAndRows(t))}):(!t&&"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),o.push(this.calcs.top)),o=o.concat(this.rows),!t&&"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),o.push(this.calcs.bottom))):this.groupList.length||"table"==this.groupManager.table.options.columnCalcs||this.groupManager.table.modExists("columnCalcs")&&(!t&&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),o.push(this.calcs.top))),!t&&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),o.push(this.calcs.bottom)))),o},Group.prototype.getData=function(t,o){var e=[];return this._visSet(),(!t||t&&this.visible)&&this.rows.forEach(function(t){e.push(t.getData(o||"data"))}),e},Group.prototype.getRowCount=function(){var t=0;return this.groupList.length?this.groupList.forEach(function(o){t+=o.getRowCount()}):t=this.rows.length,t},Group.prototype.toggleVisibility=function(){this.visible?this.hide():this.show()},Group.prototype.hide=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(t){t.getHeadersAndRows().forEach(function(t){t.detachElement()})}):this.rows.forEach(function(t){var o=t.getElement();o.parentNode.removeChild(o)}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()),this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!1)},Group.prototype.show=function(){var t=this;if(t.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 o=t.getElement();this.groupList.length?this.groupList.forEach(function(t){t.getHeadersAndRows().forEach(function(t){var e=t.getElement();o.parentNode.insertBefore(e,o.nextSibling),t.initialize(),o=e})}):t.rows.forEach(function(t){var e=t.getElement();o.parentNode.insertBefore(e,o.nextSibling),t.initialize(),o=e}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()}this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!0)},Group.prototype._visSet=function(){var t=[];"function"==typeof this.visible&&(this.rows.forEach(function(o){t.push(o.getData())}),this.visible=this.visible(this.key,this.getRowCount(),t,this.getComponent()))},Group.prototype.getRowGroup=function(t){var o=!1;return this.groupList.length?this.groupList.forEach(function(e){var r=e.getRowGroup(t);r&&(o=r)}):this.rows.find(function(o){return o===t})&&(o=this),o},Group.prototype.getSubGroups=function(t){var o=[];return this.groupList.forEach(function(e){o.push(t?e.getComponent():e)}),o},Group.prototype.getRows=function(t){var o=[];return this.rows.forEach(function(e){o.push(t?e.getComponent():e)}),o},Group.prototype.generateGroupHeaderContents=function(){var t=[];for(this.rows.forEach(function(o){t.push(o.getData())}),this.elementContents=this.generator(this.key,this.getRowCount(),t,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)},Group.prototype.getElement=function(){this.addBindingsd=!1,this._visSet(),this.visible?this.element.classList.add("tabulator-group-visible"):this.element.classList.remove("tabulator-group-visible");for(var t=0;t<this.element.childNodes.length;++t)this.element.childNodes[t].parentNode.removeChild(this.element.childNodes[t]);return this.generateGroupHeaderContents(),this.element},Group.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},Group.prototype.normalizeHeight=function(){this.setHeight(this.element.clientHeight)},Group.prototype.initialize=function(t){this.initialized&&!t||(this.normalizeHeight(),this.initialized=!0)},Group.prototype.reinitialize=function(){this.initialized=!1,this.height=0,Tabulator.prototype.helpers.elVisible(this.element)&&this.initialize(!0)},Group.prototype.setHeight=function(t){this.height!=t&&(this.height=t,this.outerHeight=this.element.offsetHeight)},Group.prototype.getHeight=function(){return this.outerHeight},Group.prototype.getGroup=function(){return this},Group.prototype.reinitializeHeight=function(){},Group.prototype.calcHeight=function(){},Group.prototype.setCellHeight=function(){},Group.prototype.clearCellHeight=function(){},Group.prototype.getComponent=function(){return new GroupComponent(this)};var GroupRows=function(t){this.table=t,this.groupIDLookups=!1,this.startOpen=[function(){return!1}],this.headerGenerator=[function(){return""}],this.groupList=[],this.allowedValues=!1,this.groups={},this.displayIndex=0};GroupRows.prototype.initialize=function(){var t=this,o=t.table.options.groupBy,e=t.table.options.groupStartOpen,r=t.table.options.groupHeader;if(this.allowedValues=t.table.options.groupValues,Array.isArray(o)&&Array.isArray(r)&&o.length>r.length&&console.warn("Error creating group headers, groupHeader array is shorter than groupBy array"),t.headerGenerator=[function(){return""}],this.startOpen=[function(){return!1}],t.table.modules.localize.bind("groups|item",function(o,e){t.headerGenerator[0]=function(t,r,i){return(void 0===t?"":t)+"<span>("+r+" "+(1===r?o:e.groups.items)+")</span>"}}),this.groupIDLookups=[],Array.isArray(o)||o)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){var i=this.table.columnManager.getRealColumns();i.forEach(function(o){o.definition.topCalc&&t.table.modules.columnCalcs.initializeTopRow(),o.definition.bottomCalc&&t.table.modules.columnCalcs.initializeBottomRow()})}Array.isArray(o)||(o=[o]),o.forEach(function(o,e){var r,i;"function"==typeof o?r=o:(i=t.table.columnManager.getColumnByField(o),r=i?function(t){return i.getFieldValue(t)}:function(t){return t[o]}),t.groupIDLookups.push({field:"function"!=typeof o&&o,func:r,values:!!t.allowedValues&&t.allowedValues[e]})}),e&&(Array.isArray(e)||(e=[e]),e.forEach(function(t){t="function"==typeof t?t:function(){return!0}}),t.startOpen=e),r&&(t.headerGenerator=Array.isArray(r)?r:[r]),this.initialized=!0},GroupRows.prototype.setDisplayIndex=function(t){this.displayIndex=t},GroupRows.prototype.getDisplayIndex=function(){return this.displayIndex},GroupRows.prototype.getRows=function(t){return this.groupIDLookups.length?(this.table.options.dataGrouping.call(this.table),this.generateGroups(t),this.table.options.dataGrouped&&this.table.options.dataGrouped.call(this.table,this.getGroups(!0)),this.updateGroupRows()):t.slice(0)},GroupRows.prototype.getGroups=function(t){var o=[];return this.groupList.forEach(function(e){o.push(t?e.getComponent():e)}),o},GroupRows.prototype.wipe=function(){this.groupList.forEach(function(t){t.wipe()})},GroupRows.prototype.pullGroupListData=function(t){var o=this,e=[];return t.forEach(function(t){var r={};r.level=0,r.rowCount=0,r.headerContent="";var i=[];t.hasSubGroups?(i=o.pullGroupListData(t.groupList),r.level=t.level,r.rowCount=i.length-t.groupList.length,r.headerContent=t.generator(t.key,r.rowCount,t.rows,t),e.push(r),e=e.concat(i)):(r.level=t.level,r.headerContent=t.generator(t.key,t.rows.length,t.rows,t),r.rowCount=t.getRows().length,e.push(r),t.getRows().forEach(function(t){e.push(t.getData("data"))}))}),e},GroupRows.prototype.getGroupedData=function(){return this.pullGroupListData(this.groupList)},GroupRows.prototype.getRowGroup=function(t){var o=!1;return this.groupList.forEach(function(e){var r=e.getRowGroup(t);r&&(o=r)}),o},GroupRows.prototype.countGroups=function(){return this.groupList.length},GroupRows.prototype.generateGroups=function(t){var o=this,e=o.groups;o.groups={},o.groupList=[],this.allowedValues&&this.allowedValues[0]?(this.allowedValues[0].forEach(function(t){o.createGroup(t,0,e)}),t.forEach(function(t){o.assignRowToExistingGroup(t,e)})):t.forEach(function(t){o.assignRowToGroup(t,e)})},GroupRows.prototype.createGroup=function(t,o,e){var r,i=o+"_"+t;e=e||[],r=new Group(this,!1,o,t,this.groupIDLookups[0].field,this.headerGenerator[0],e[i]),this.groups[i]=r,this.groupList.push(r)},GroupRows.prototype.assignRowToExistingGroup=function(t,o){var e=this.groupIDLookups[0].func(t.getData()),r="0_"+e;this.groups[r]&&this.groups[r].addRow(t)},GroupRows.prototype.assignRowToGroup=function(t,o){var e=this.groupIDLookups[0].func(t.getData()),r=!this.groups["0_"+e];return r&&this.createGroup(e,0,o),this.groups["0_"+e].addRow(t),!r},GroupRows.prototype.updateGroupRows=function(t){var o=this,e=[];if(o.groupList.forEach(function(t){e=e.concat(t.getHeadersAndRows())}),t){var r=o.table.rowManager.setDisplayRows(e,this.getDisplayIndex());!0!==r&&this.setDisplayIndex(r),o.table.rowManager.refreshActiveData("group",!0,!0)}return e},GroupRows.prototype.scrollHeaders=function(t){t+="px",this.groupList.forEach(function(o){o.scrollHeader(t)})},GroupRows.prototype.removeGroup=function(t){var o,e=t.level+"_"+t.key;this.groups[e]&&(delete this.groups[e],(o=this.groupList.indexOf(t))>-1&&this.groupList.splice(o,1))},Tabulator.prototype.registerModule("groupRows",GroupRows);
\ No newline at end of file
index c00a321..ffcb3c6 100644 (file)
@@ -1,4 +1,4 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 
 var History = function History(table) {
        this.table = table; //hold Tabulator object
index feb4d98..69ca9ce 100644 (file)
@@ -1,2 +1,2 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 var History=function(t){this.table=t,this.history=[],this.index=-1};History.prototype.clear=function(){this.history=[],this.index=-1},History.prototype.action=function(t,o,e){this.history=this.history.slice(0,this.index+1),this.history.push({type:t,component:o,data:e}),this.index++},History.prototype.getHistoryUndoSize=function(){return this.index+1},History.prototype.getHistoryRedoSize=function(){return this.history.length-(this.index+1)},History.prototype.undo=function(){if(this.index>-1){var t=this.history[this.index];return this.undoers[t.type].call(this,t),this.index--,this.table.options.historyUndo.call(this.table,t.type,t.component.getComponent(),t.data),!0}return console.warn("History Undo Error - No more history to undo"),!1},History.prototype.redo=function(){if(this.history.length-1>this.index){this.index++;var t=this.history[this.index];return this.redoers[t.type].call(this,t),this.table.options.historyRedo.call(this.table,t.type,t.component.getComponent(),t.data),!0}return console.warn("History Redo Error - No more history to redo"),!1},History.prototype.undoers={cellEdit:function(t){t.component.setValueProcessData(t.data.oldValue)},rowAdd:function(t){t.component.deleteActual()},rowDelete:function(t){var o=this.table.rowManager.addRowActual(t.data.data,t.data.pos,t.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(t.component,o)},rowMove:function(t){this.table.rowManager.moveRowActual(t.component,this.table.rowManager.rows[t.data.pos],!1),this.table.rowManager.redraw()}},History.prototype.redoers={cellEdit:function(t){t.component.setValueProcessData(t.data.newValue)},rowAdd:function(t){var o=this.table.rowManager.addRowActual(t.data.data,t.data.pos,t.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(t.component,o)},rowDelete:function(t){t.component.deleteActual()},rowMove:function(t){this.table.rowManager.moveRowActual(t.component,this.table.rowManager.rows[t.data.pos],!1),this.table.rowManager.redraw()}},History.prototype._rebindRow=function(t,o){this.history.forEach(function(e){if(e.component instanceof Row)e.component===t&&(e.component=o);else if(e.component instanceof Cell&&e.component.row===t){var i=e.component.column.getField();i&&(e.component=o.getCell(i))}})},Tabulator.prototype.registerModule("history",History);
\ No newline at end of file
index 82702a3..a80afe7 100644 (file)
@@ -1,6 +1,6 @@
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 
 var HtmlTableExport = function HtmlTableExport(table) {
        this.table = table; //hold Tabulator object
@@ -142,6 +142,7 @@ HtmlTableExport.prototype.generateHeaderElements = function () {
 
                row.forEach(function (column) {
                        var cellEl = document.createElement("th");
+                       var classNames = column.column.definition.cssClass ? column.column.definition.cssClass.split(" ") : [];
 
                        cellEl.colSpan = column.width;
                        cellEl.rowSpan = column.height;
@@ -152,6 +153,10 @@ HtmlTableExport.prototype.generateHeaderElements = function () {
                                cellEl.style.boxSizing = "border-box";
                        }
 
+                       classNames.forEach(function (className) {
+                               cellEl.classList.add(className);
+                       });
+
                        _this3.mapElementStyles(column.column.getElement(), cellEl, ["text-align", "border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
                        _this3.mapElementStyles(column.column.contentElement, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom"]);
 
@@ -264,11 +269,12 @@ HtmlTableExport.prototype.generateBodyElements = function (visible) {
                                        var value = column.getFieldValue(rowData);
 
                                        var cellWrapper = {
+                                               modules: {},
                                                getValue: function getValue() {
                                                        return value;
                                                },
                                                getField: function getField() {
-                                                       return column.defi;
+                                                       return column.definition.field;
                                                },
                                                getElement: function getElement() {
                                                        return cellEl;
@@ -288,6 +294,12 @@ HtmlTableExport.prototype.generateBodyElements = function (visible) {
                                                column: column
                                        };
 
+                                       var classNames = column.definition.cssClass ? column.definition.cssClass.split(" ") : [];
+
+                                       classNames.forEach(function (className) {
+                                               cellEl.classList.add(className);
+                                       });
+
                                        if (_this4.table.modExists("format")) {
                                                value = _this4.table.modules.format.formatValue(cellWrapper);
                                        } else {
index 90b25c7..bfb8a4b 100644 (file)
@@ -1,2 +1,2 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},HtmlTableExport=function(t){this.table=t,this.config={},this.cloneTableStyle=!0,this.colVisProp=""};HtmlTableExport.prototype.genereateTable=function(t,e,o,n){this.cloneTableStyle=e,this.config=t||{},this.colVisProp=n;var r=this.generateHeaderElements(),l=this.generateBodyElements(o),a=document.createElement("table");return a.classList.add("tabulator-print-table"),a.appendChild(r),a.appendChild(l),this.mapElementStyles(this.table.element,a,["border-top","border-left","border-right","border-bottom"]),a},HtmlTableExport.prototype.generateColumnGroupHeaders=function(){var t=this,e=[];return(!1!==this.config.columnGroups?this.table.columnManager.columns:this.table.columnManager.columnsByIndex).forEach(function(o){var n=t.processColumnGroup(o);n&&e.push(n)}),e},HtmlTableExport.prototype.processColumnGroup=function(t){var e=this,o=t.columns,n=0,r={title:t.definition.title,column:t,depth:1};if(o.length){if(r.subGroups=[],r.width=0,o.forEach(function(t){var o=e.processColumnGroup(t);o&&(r.width+=o.width,r.subGroups.push(o),o.depth>n&&(n=o.depth))}),r.depth+=n,!r.width)return!1}else{if(!this.columnVisCheck(t))return!1;r.width=1}return r},HtmlTableExport.prototype.groupHeadersToRows=function(t){function e(t,r){var l=n-r;void 0===o[r]&&(o[r]=[]),t.height=t.subGroups?1:l-t.depth+1,o[r].push(t),t.subGroups&&t.subGroups.forEach(function(t){e(t,r+1)})}var o=[],n=0;return t.forEach(function(t){t.depth>n&&(n=t.depth)}),t.forEach(function(t){e(t,0)}),o},HtmlTableExport.prototype.generateHeaderElements=function(){var t=this,e=document.createElement("thead");return this.groupHeadersToRows(this.generateColumnGroupHeaders()).forEach(function(o){var n=document.createElement("tr");t.mapElementStyles(t.table.columnManager.getHeadersElement(),e,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),o.forEach(function(e){var o=document.createElement("th");o.colSpan=e.width,o.rowSpan=e.height,o.innerHTML=e.column.definition.title,t.cloneTableStyle&&(o.style.boxSizing="border-box"),t.mapElementStyles(e.column.getElement(),o,["text-align","border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),t.mapElementStyles(e.column.contentElement,o,["padding-top","padding-left","padding-right","padding-bottom"]),e.column.visible?t.mapElementStyles(e.column.getElement(),o,["width"]):e.column.definition.width&&(o.style.width=e.column.definition.width+"px"),e.column.parent&&t.mapElementStyles(e.column.parent.groupElement,o,["border-top"]),n.appendChild(o)}),e.appendChild(n)}),e},HtmlTableExport.prototype.generateBodyElements=function(t){var e,o,n,r,l,a,i,d,u=this;this.cloneTableStyle&&window.getComputedStyle&&(e=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),o=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),n=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),r=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),a=this.table.element.getElementsByClassName("tabulator-group")[0],r&&(i=r.getElementsByClassName("tabulator-cell"),l=i[0],i[i.length-1]));var c=document.createElement("tbody"),s=t?this.table.rowManager.getVisibleRows(!0):this.table.rowManager.getDisplayRows(),p=[];return!1!==this.config.columnCalcs&&this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&s.unshift(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&s.push(this.table.modules.columnCalcs.botRow)),this.table.columnManager.columnsByIndex.forEach(function(t){u.columnVisCheck(t)&&p.push(t)}),s=s.filter(function(t){switch(t.type){case"group":return!1!==u.config.rowGroups;case"calc":return!1!==u.config.columnCalcs}return!0}),s.length>1e3&&console.warn("It may take a long time to render an HTML table with more than 1000 rows"),s.forEach(function(t,r){var i=t.getData(),s=document.createElement("tr");switch(s.classList.add("tabulator-print-table-row"),t.type){case"group":var m=document.createElement("td");m.colSpan=p.length,m.innerHTML=t.key,s.classList.add("tabulator-print-table-group"),u.mapElementStyles(a,s,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),u.mapElementStyles(a,m,["padding-top","padding-left","padding-right","padding-bottom"]),s.appendChild(m);break;case"calc":s.classList.add("tabulator-print-table-calcs");case"row":p.forEach(function(e){var o=document.createElement("td"),n=e.getFieldValue(i),r={getValue:function(){return n},getField:function(){return e.defi},getElement:function(){return o},getColumn:function(){return e.getComponent()},getData:function(){return i},getRow:function(){return t.getComponent()},getComponent:function(){return r},column:e};if(u.table.modExists("format"))n=u.table.modules.format.formatValue(r);else switch(void 0===n?"undefined":_typeof(n)){case"object":n=JSON.stringify(n);break;case"undefined":case"null":n="";break;default:n=n}n instanceof Node?o.appendChild(n):o.innerHTML=n,l&&u.mapElementStyles(l,o,["padding-top","padding-left","padding-right","padding-bottom","border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","text-align"]),s.appendChild(o)}),d="calc"==t.type?n:r%2&&o?o:e,u.mapElementStyles(d,s,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"])}c.appendChild(s)}),c},HtmlTableExport.prototype.columnVisCheck=function(t){return!1!==t.definition[this.colVisProp]&&(t.visible||!t.visible&&t.definition[this.colVisProp])},HtmlTableExport.prototype.getHtml=function(t,e,o){var n=document.createElement("div");return n.appendChild(this.genereateTable(o||this.table.options.htmlOutputConfig,e,t,"htmlOutput")),n.innerHTML},HtmlTableExport.prototype.mapElementStyles=function(t,e,o){if(this.cloneTableStyle&&t&&e){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 r=window.getComputedStyle(t);o.forEach(function(t){e.style[n[t]]=r.getPropertyValue(t)})}}},Tabulator.prototype.registerModule("htmlTableExport",HtmlTableExport);
\ No newline at end of file
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},HtmlTableExport=function(t){this.table=t,this.config={},this.cloneTableStyle=!0,this.colVisProp=""};HtmlTableExport.prototype.genereateTable=function(t,e,o,n){this.cloneTableStyle=e,this.config=t||{},this.colVisProp=n;var r=this.generateHeaderElements(),l=this.generateBodyElements(o),a=document.createElement("table");return a.classList.add("tabulator-print-table"),a.appendChild(r),a.appendChild(l),this.mapElementStyles(this.table.element,a,["border-top","border-left","border-right","border-bottom"]),a},HtmlTableExport.prototype.generateColumnGroupHeaders=function(){var t=this,e=[];return(!1!==this.config.columnGroups?this.table.columnManager.columns:this.table.columnManager.columnsByIndex).forEach(function(o){var n=t.processColumnGroup(o);n&&e.push(n)}),e},HtmlTableExport.prototype.processColumnGroup=function(t){var e=this,o=t.columns,n=0,r={title:t.definition.title,column:t,depth:1};if(o.length){if(r.subGroups=[],r.width=0,o.forEach(function(t){var o=e.processColumnGroup(t);o&&(r.width+=o.width,r.subGroups.push(o),o.depth>n&&(n=o.depth))}),r.depth+=n,!r.width)return!1}else{if(!this.columnVisCheck(t))return!1;r.width=1}return r},HtmlTableExport.prototype.groupHeadersToRows=function(t){function e(t,r){var l=n-r;void 0===o[r]&&(o[r]=[]),t.height=t.subGroups?1:l-t.depth+1,o[r].push(t),t.subGroups&&t.subGroups.forEach(function(t){e(t,r+1)})}var o=[],n=0;return t.forEach(function(t){t.depth>n&&(n=t.depth)}),t.forEach(function(t){e(t,0)}),o},HtmlTableExport.prototype.generateHeaderElements=function(){var t=this,e=document.createElement("thead");return this.groupHeadersToRows(this.generateColumnGroupHeaders()).forEach(function(o){var n=document.createElement("tr");t.mapElementStyles(t.table.columnManager.getHeadersElement(),e,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),o.forEach(function(e){var o=document.createElement("th"),r=e.column.definition.cssClass?e.column.definition.cssClass.split(" "):[];o.colSpan=e.width,o.rowSpan=e.height,o.innerHTML=e.column.definition.title,t.cloneTableStyle&&(o.style.boxSizing="border-box"),r.forEach(function(t){o.classList.add(t)}),t.mapElementStyles(e.column.getElement(),o,["text-align","border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),t.mapElementStyles(e.column.contentElement,o,["padding-top","padding-left","padding-right","padding-bottom"]),e.column.visible?t.mapElementStyles(e.column.getElement(),o,["width"]):e.column.definition.width&&(o.style.width=e.column.definition.width+"px"),e.column.parent&&t.mapElementStyles(e.column.parent.groupElement,o,["border-top"]),n.appendChild(o)}),e.appendChild(n)}),e},HtmlTableExport.prototype.generateBodyElements=function(t){var e,o,n,r,l,a,i,s,d=this;this.cloneTableStyle&&window.getComputedStyle&&(e=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),o=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),n=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),r=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),a=this.table.element.getElementsByClassName("tabulator-group")[0],r&&(i=r.getElementsByClassName("tabulator-cell"),l=i[0],i[i.length-1]));var c=document.createElement("tbody"),u=t?this.table.rowManager.getVisibleRows(!0):this.table.rowManager.getDisplayRows(),p=[];return!1!==this.config.columnCalcs&&this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&u.unshift(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&u.push(this.table.modules.columnCalcs.botRow)),this.table.columnManager.columnsByIndex.forEach(function(t){d.columnVisCheck(t)&&p.push(t)}),u=u.filter(function(t){switch(t.type){case"group":return!1!==d.config.rowGroups;case"calc":return!1!==d.config.columnCalcs}return!0}),u.length>1e3&&console.warn("It may take a long time to render an HTML table with more than 1000 rows"),u.forEach(function(t,r){var i=t.getData(),u=document.createElement("tr");switch(u.classList.add("tabulator-print-table-row"),t.type){case"group":var m=document.createElement("td");m.colSpan=p.length,m.innerHTML=t.key,u.classList.add("tabulator-print-table-group"),d.mapElementStyles(a,u,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),d.mapElementStyles(a,m,["padding-top","padding-left","padding-right","padding-bottom"]),u.appendChild(m);break;case"calc":u.classList.add("tabulator-print-table-calcs");case"row":p.forEach(function(e){var o=document.createElement("td"),n=e.getFieldValue(i),r={modules:{},getValue:function(){return n},getField:function(){return e.definition.field},getElement:function(){return o},getColumn:function(){return e.getComponent()},getData:function(){return i},getRow:function(){return t.getComponent()},getComponent:function(){return r},column:e};if((e.definition.cssClass?e.definition.cssClass.split(" "):[]).forEach(function(t){o.classList.add(t)}),d.table.modExists("format"))n=d.table.modules.format.formatValue(r);else switch(void 0===n?"undefined":_typeof(n)){case"object":n=JSON.stringify(n);break;case"undefined":case"null":n="";break;default:n=n}n instanceof Node?o.appendChild(n):o.innerHTML=n,l&&d.mapElementStyles(l,o,["padding-top","padding-left","padding-right","padding-bottom","border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","text-align"]),u.appendChild(o)}),s="calc"==t.type?n:r%2&&o?o:e,d.mapElementStyles(s,u,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"])}c.appendChild(u)}),c},HtmlTableExport.prototype.columnVisCheck=function(t){return!1!==t.definition[this.colVisProp]&&(t.visible||!t.visible&&t.definition[this.colVisProp])},HtmlTableExport.prototype.getHtml=function(t,e,o){var n=document.createElement("div");return n.appendChild(this.genereateTable(o||this.table.options.htmlOutputConfig,e,t,"htmlOutput")),n.innerHTML},HtmlTableExport.prototype.mapElementStyles=function(t,e,o){if(this.cloneTableStyle&&t&&e){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 r=window.getComputedStyle(t);o.forEach(function(t){e.style[n[t]]=r.getPropertyValue(t)})}}},Tabulator.prototype.registerModule("htmlTableExport",HtmlTableExport);
\ No newline at end of file
index 08d6ed9..68f259a 100644 (file)
@@ -1,6 +1,6 @@
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 
 var HtmlTableImport = function HtmlTableImport(table) {
        this.table = table; //hold Tabulator object
index adeaa25..a234585 100644 (file)
@@ -1,2 +1,2 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},HtmlTableImport=function(t){this.table=t,this.fieldIndex=[],this.hasIndex=!1};HtmlTableImport.prototype.parseTable=function(){var t=this,e=t.table.element,o=t.table.options,a=(o.columns,e.getElementsByTagName("th")),n=e.getElementsByTagName("tbody")[0],r=[];t.hasIndex=!1,t.table.options.htmlImporting.call(this.table),n=n?n.getElementsByTagName("tr"):[],t._extractOptions(e,o),a.length?t._extractHeaders(a,n):t._generateBlankHeaders(a,n);for(var l=0;l<n.length;l++){var i=n[l],s=i.getElementsByTagName("td"),p={};t.hasIndex||(p[o.index]=l);for(var m=0;m<s.length;m++){var d=s[m];void 0!==this.fieldIndex[m]&&(p[this.fieldIndex[m]]=d.innerHTML)}r.push(p)}var f=document.createElement("div"),u=e.attributes;for(var m in u)"object"==_typeof(u[m])&&f.setAttribute(u[m].name,u[m].value);e.parentNode.replaceChild(f,e),o.data=r,t.table.options.htmlImported.call(this.table),this.table.element=f},HtmlTableImport.prototype._extractOptions=function(t,e,o){var a=t.attributes,n=o?Object.assign([],o):Object.keys(e),r={};n.forEach(function(t){r[t.toLowerCase()]=t});for(var l in a){var i,s=a[l];s&&"object"==(void 0===s?"undefined":_typeof(s))&&s.name&&0===s.name.indexOf("tabulator-")&&(i=s.name.replace("tabulator-",""),void 0!==r[i]&&(e[r[i]]=this._attribValue(s.value)))}},HtmlTableImport.prototype._attribValue=function(t){return"true"===t||"false"!==t&&t},HtmlTableImport.prototype._findCol=function(t){return this.table.options.columns.find(function(e){return e.title===t})||!1},HtmlTableImport.prototype._extractHeaders=function(t,e){for(var o=0;o<t.length;o++){var a,n,r=t[o],l=!1,i=this._findCol(r.textContent);i?l=!0:i={title:r.textContent.trim()},i.field||(i.field=r.textContent.trim().toLowerCase().replace(" ","_")),a=r.getAttribute("width"),a&&!i.width&&(i.width=a),n=r.attributes,this._extractOptions(r,i,Column.prototype.defaultOptionList);for(var s in n){var p,m=n[s];m&&"object"==(void 0===m?"undefined":_typeof(m))&&m.name&&0===m.name.indexOf("tabulator-")&&(p=m.name.replace("tabulator-",""),i[p]=this._attribValue(m.value))}this.fieldIndex[o]=i.field,i.field==this.table.options.index&&(this.hasIndex=!0),l||this.table.options.columns.push(i)}},HtmlTableImport.prototype._generateBlankHeaders=function(t,e){for(var o=0;o<t.length;o++){var a=t[o],n={title:"",field:"col"+o};this.fieldIndex[o]=n.field;var r=a.getAttribute("width");r&&(n.width=r),this.table.options.columns.push(n)}},Tabulator.prototype.registerModule("htmlTableImport",HtmlTableImport);
\ No newline at end of file
index 60ab402..963ccad 100644 (file)
@@ -1,6 +1,6 @@
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 
 var Keybindings = function Keybindings(table) {
        this.table = table; //hold Tabulator object
index 4f681fb..90e42b6 100644 (file)
@@ -1,2 +1,2 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Keybindings=function(t){this.table=t,this.watchKeys=null,this.pressedKeys=null,this.keyupBinding=!1,this.keydownBinding=!1};Keybindings.prototype.initialize=function(){var t=this.table.options.keybindings,e={};if(this.watchKeys={},this.pressedKeys=[],!1!==t){for(var i in this.bindings)e[i]=this.bindings[i];if(Object.keys(t).length)for(var n in t)e[n]=t[n];this.mapBindings(e),this.bindEvents()}},Keybindings.prototype.mapBindings=function(t){var e=this,i=this;for(var n in t)!function(n){e.actions[n]?t[n]&&("object"!==_typeof(t[n])&&(t[n]=[t[n]]),t[n].forEach(function(t){i.mapBinding(n,t)})):console.warn("Key Binding Error - no such action:",n)}(n)},Keybindings.prototype.mapBinding=function(t,e){var i=this,n={action:this.actions[t],keys:[],ctrl:!1,shift:!1};e.toString().toLowerCase().split(" ").join("").split("+").forEach(function(t){switch(t){case"ctrl":n.ctrl=!0;break;case"shift":n.shift=!0;break;default:t=parseInt(t),n.keys.push(t),i.watchKeys[t]||(i.watchKeys[t]=[]),i.watchKeys[t].push(n)}})},Keybindings.prototype.bindEvents=function(){var t=this;this.keyupBinding=function(e){var i=e.keyCode,n=t.watchKeys[i];n&&(t.pressedKeys.push(i),n.forEach(function(i){t.checkBinding(e,i)}))},this.keydownBinding=function(e){var i=e.keyCode;if(t.watchKeys[i]){var n=t.pressedKeys.indexOf(i);n>-1&&t.pressedKeys.splice(n,1)}},this.table.element.addEventListener("keydown",this.keyupBinding),this.table.element.addEventListener("keyup",this.keydownBinding)},Keybindings.prototype.clearBindings=function(){this.keyupBinding&&this.table.element.removeEventListener("keydown",this.keyupBinding),this.keydownBinding&&this.table.element.removeEventListener("keyup",this.keydownBinding)},Keybindings.prototype.checkBinding=function(t,e){var i=this,n=!0;return t.ctrlKey==e.ctrl&&t.shiftKey==e.shift&&(e.keys.forEach(function(t){-1==i.pressedKeys.indexOf(t)&&(n=!1)}),n&&e.action.call(i,t),!0)},Keybindings.prototype.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"},Keybindings.prototype.actions={keyBlock:function(t){t.stopPropagation(),t.preventDefault()},scrollPageUp:function(t){var e=this.table.rowManager,i=e.scrollTop-e.height;e.element.scrollHeight;t.preventDefault(),e.displayRowsCount&&(i>=0?e.element.scrollTop=i:e.scrollToRow(e.getDisplayRows()[0])),this.table.element.focus()},scrollPageDown:function(t){var e=this.table.rowManager,i=e.scrollTop+e.height,n=e.element.scrollHeight;t.preventDefault(),e.displayRowsCount&&(i<=n?e.element.scrollTop=i:e.scrollToRow(e.getDisplayRows()[e.displayRowsCount-1])),this.table.element.focus()},scrollToStart:function(t){var e=this.table.rowManager;t.preventDefault(),e.displayRowsCount&&e.scrollToRow(e.getDisplayRows()[0]),this.table.element.focus()},scrollToEnd:function(t){var e=this.table.rowManager;t.preventDefault(),e.displayRowsCount&&e.scrollToRow(e.getDisplayRows()[e.displayRowsCount-1]),this.table.element.focus()},navPrev:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().prev())},navNext:function(t){var e,i=!1,n=this.table.options.tabEndNewRow;this.table.modExists("edit")&&(i=this.table.modules.edit.currentCell)&&(t.preventDefault(),e=i.nav(),e.next()||n&&(n=!0===n?this.table.addRow({}):"function"==typeof n?this.table.addRow(n(i.row.getComponent())):this.table.addRow(n),n.then(function(){e.next()})))},navLeft:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().left())},navRight:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().right())},navUp:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().up())},navDown:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().down())},undo:function(t){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(t.preventDefault(),this.table.modules.history.undo()))},redo:function(t){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(t.preventDefault(),this.table.modules.history.redo()))},copyToClipboard:function(t){this.table.modules.edit.currentCell||this.table.modExists("clipboard",!0)&&this.table.modules.clipboard.copy(this.table.options.selectable&&"highlight"!=this.table.options.selectable?"selected":"active",null,null,null,!0)}},Tabulator.prototype.registerModule("keybindings",Keybindings);
\ No newline at end of file
index b0366cb..1bd27ef 100644 (file)
@@ -1,4 +1,4 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 
 var MoveColumns = function MoveColumns(table) {
        this.table = table; //hold Tabulator object
index 07c57c4..1695705 100644 (file)
@@ -1,2 +1,2 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 var MoveColumns=function(e){this.table=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)};MoveColumns.prototype.createPlaceholderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.classList.add("tabulator-col-placeholder"),e},MoveColumns.prototype.initializeColumn=function(e){var t,o=this,n={};e.modules.frozen||(t=e.getElement(),n.mousemove=function(n){e.parent===o.moving.parent&&((o.touchMove?n.touches[0].pageX:n.pageX)-Tabulator.prototype.helpers.elOffset(t).left+o.table.columnManager.element.scrollLeft>e.getWidth()/2?o.toCol===e&&o.toColAfter||(t.parentNode.insertBefore(o.placeholderElement,t.nextSibling),o.moveColumn(e,!0)):(o.toCol!==e||o.toColAfter)&&(t.parentNode.insertBefore(o.placeholderElement,t),o.moveColumn(e,!1)))}.bind(o),t.addEventListener("mousedown",function(t){o.touchMove=!1,1===t.which&&(o.checkTimeout=setTimeout(function(){o.startMove(t,e)},o.checkPeriod))}),t.addEventListener("mouseup",function(e){1===e.which&&o.checkTimeout&&clearTimeout(o.checkTimeout)}),o.bindTouchEvents(e)),e.modules.moveColumn=n},MoveColumns.prototype.bindTouchEvents=function(e){var t,o,n,l,i,s,m,r=this,u=e.getElement(),h=!1;u.addEventListener("touchstart",function(u){r.checkTimeout=setTimeout(function(){r.touchMove=!0,t=e,o=e.nextColumn(),l=o?o.getWidth()/2:0,n=e.prevColumn(),i=n?n.getWidth()/2:0,s=0,m=0,h=!1,r.startMove(u,e)},r.checkPeriod)},{passive:!0}),u.addEventListener("touchmove",function(u){var a,c;r.moving&&(r.moveHover(u),h||(h=u.touches[0].pageX),a=u.touches[0].pageX-h,a>0?o&&a-s>l&&(c=o)!==e&&(h=u.touches[0].pageX,c.getElement().parentNode.insertBefore(r.placeholderElement,c.getElement().nextSibling),r.moveColumn(c,!0)):n&&-a-m>i&&(c=n)!==e&&(h=u.touches[0].pageX,c.getElement().parentNode.insertBefore(r.placeholderElement,c.getElement()),r.moveColumn(c,!1)),c&&(t=c,o=c.nextColumn(),s=l,l=o?o.getWidth()/2:0,n=c.prevColumn(),m=i,i=n?n.getWidth()/2:0))},{passive:!0}),u.addEventListener("touchend",function(e){r.checkTimeout&&clearTimeout(r.checkTimeout),r.moving&&r.endMove(e)})},MoveColumns.prototype.startMove=function(e,t){var o=t.getElement();this.moving=t,this.startX=(this.touchMove?e.touches[0].pageX:e.pageX)-Tabulator.prototype.helpers.elOffset(o).left,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",o.parentNode.insertBefore(this.placeholderElement,o),o.parentNode.removeChild(o),this.hoverElement=o.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)},MoveColumns.prototype._bindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(e){e.modules.moveColumn.mousemove&&e.getElement().addEventListener("mousemove",e.modules.moveColumn.mousemove)})},MoveColumns.prototype._unbindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(e){e.modules.moveColumn.mousemove&&e.getElement().removeEventListener("mousemove",e.modules.moveColumn.mousemove)})},MoveColumns.prototype.moveColumn=function(e,t){var o=this.moving.getCells();this.toCol=e,this.toColAfter=t,t?e.getCells().forEach(function(e,t){var n=e.getElement();n.parentNode.insertBefore(o[t].getElement(),n.nextSibling)}):e.getCells().forEach(function(e,t){var n=e.getElement();n.parentNode.insertBefore(o[t].getElement(),n)})},MoveColumns.prototype.endMove=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)))},MoveColumns.prototype.moveHover=function(e){var t,o=this,n=o.table.columnManager.getElement(),l=n.scrollLeft,i=(o.touchMove?e.touches[0].pageX:e.pageX)-Tabulator.prototype.helpers.elOffset(n).left+l;o.hoverElement.style.left=i-o.startX+"px",i-l<o.autoScrollMargin&&(o.autoScrollTimeout||(o.autoScrollTimeout=setTimeout(function(){t=Math.max(0,l-5),o.table.rowManager.getElement().scrollLeft=t,o.autoScrollTimeout=!1},1))),l+n.clientWidth-i<o.autoScrollMargin&&(o.autoScrollTimeout||(o.autoScrollTimeout=setTimeout(function(){t=Math.min(n.clientWidth,l+5),o.table.rowManager.getElement().scrollLeft=t,o.autoScrollTimeout=!1},1)))},Tabulator.prototype.registerModule("moveColumn",MoveColumns);
\ No newline at end of file
index c7e3207..24332ee 100644 (file)
@@ -1,6 +1,6 @@
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 
 var MoveRows = function MoveRows(table) {
 
index bb6ea65..07dcb91 100644 (file)
@@ -1,2 +1,2 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 var _typeof="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},MoveRows=function(e){this.table=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.connections=[],this.connectedTable=!1,this.connectedRow=!1};MoveRows.prototype.createPlaceholderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-row"),e.classList.add("tabulator-row-placeholder"),e},MoveRows.prototype.initialize=function(e){this.connection=this.table.options.movableRowsConnectedTables},MoveRows.prototype.setHandle=function(e){this.hasHandle=e},MoveRows.prototype.initializeGroupHeader=function(e){var t=this,o={};o.mouseup=function(e){t.tableRowDrop(e,row)}.bind(t),o.mousemove=function(o){if(o.pageY-Tabulator.prototype.helpers.elOffset(e.element).top+t.table.rowManager.element.scrollTop>e.getHeight()/2){if(t.toRow!==e||!t.toRowAfter){var n=e.getElement();n.parentNode.insertBefore(t.placeholderElement,n.nextSibling),t.moveRow(e,!0)}}else if(t.toRow!==e||t.toRowAfter){var n=e.getElement();n.previousSibling&&(n.parentNode.insertBefore(t.placeholderElement,n),t.moveRow(e,!1))}}.bind(t),e.modules.moveRow=o},MoveRows.prototype.initializeRow=function(e){var t,o=this,n={};n.mouseup=function(t){o.tableRowDrop(t,e)}.bind(o),n.mousemove=function(t){if(t.pageY-Tabulator.prototype.helpers.elOffset(e.element).top+o.table.rowManager.element.scrollTop>e.getHeight()/2){if(o.toRow!==e||!o.toRowAfter){var n=e.getElement();n.parentNode.insertBefore(o.placeholderElement,n.nextSibling),o.moveRow(e,!0)}}else if(o.toRow!==e||o.toRowAfter){var n=e.getElement();n.parentNode.insertBefore(o.placeholderElement,n),o.moveRow(e,!1)}}.bind(o),this.hasHandle||(t=e.getElement(),t.addEventListener("mousedown",function(t){1===t.which&&(o.checkTimeout=setTimeout(function(){o.startMove(t,e)},o.checkPeriod))}),t.addEventListener("mouseup",function(e){1===e.which&&o.checkTimeout&&clearTimeout(o.checkTimeout)}),this.bindTouchEvents(e,e.getElement())),e.modules.moveRow=n},MoveRows.prototype.initializeCell=function(e){var t=this,o=e.getElement();o.addEventListener("mousedown",function(o){1===o.which&&(t.checkTimeout=setTimeout(function(){t.startMove(o,e.row)},t.checkPeriod))}),o.addEventListener("mouseup",function(e){1===e.which&&t.checkTimeout&&clearTimeout(t.checkTimeout)}),this.bindTouchEvents(e.row,e.getElement())},MoveRows.prototype.bindTouchEvents=function(e,t){var o,n,i,s,l,r,a,c=this,h=!1;t.addEventListener("touchstart",function(t){c.checkTimeout=setTimeout(function(){c.touchMove=!0,o=e,n=e.nextRow(),s=n?n.getHeight()/2:0,i=e.prevRow(),l=i?i.getHeight()/2:0,r=0,a=0,h=!1,c.startMove(t,e)},c.checkPeriod)},{passive:!0}),this.moving,this.toRow,this.toRowAfter,t.addEventListener("touchmove",function(t){var m,v;c.moving&&(t.preventDefault(),c.moveHover(t),h||(h=t.touches[0].pageY),m=t.touches[0].pageY-h,m>0?n&&m-r>s&&(v=n)!==e&&(h=t.touches[0].pageY,v.getElement().parentNode.insertBefore(c.placeholderElement,v.getElement().nextSibling),c.moveRow(v,!0)):i&&-m-a>l&&(v=i)!==e&&(h=t.touches[0].pageY,v.getElement().parentNode.insertBefore(c.placeholderElement,v.getElement()),c.moveRow(v,!1)),v&&(o=v,n=v.nextRow(),r=s,s=n?n.getHeight()/2:0,i=v.prevRow(),a=l,l=i?i.getHeight()/2:0))}),t.addEventListener("touchend",function(e){c.checkTimeout&&clearTimeout(c.checkTimeout),c.moving&&(c.endMove(e),c.touchMove=!1)})},MoveRows.prototype._bindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(e){"row"!==e.type&&"group"!==e.type||!e.modules.moveRow.mousemove||e.getElement().addEventListener("mousemove",e.modules.moveRow.mousemove)})},MoveRows.prototype._unbindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(e){"row"!==e.type&&"group"!==e.type||!e.modules.moveRow.mousemove||e.getElement().removeEventListener("mousemove",e.modules.moveRow.mousemove)})},MoveRows.prototype.startMove=function(e,t){var o=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)):(o.parentNode.insertBefore(this.placeholderElement,o),o.parentNode.removeChild(o)),this.hoverElement=o.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)},MoveRows.prototype.setStartPosition=function(e,t){var o,n,i=this.touchMove?e.touches[0].pageX:e.pageX,s=this.touchMove?e.touches[0].pageY:e.pageY;o=t.getElement(),this.connection?(n=o.getBoundingClientRect(),this.startX=n.left-i+window.pageXOffset,this.startY=n.top-s+window.pageYOffset):this.startY=s-o.getBoundingClientRect().top},MoveRows.prototype.endMove=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()))},MoveRows.prototype.moveRow=function(e,t){this.toRow=e,this.toRowAfter=t},MoveRows.prototype.moveHover=function(e){this.connection?this.moveHoverConnections.call(this,e):this.moveHoverTable.call(this,e)},MoveRows.prototype.moveHoverTable=function(e){var t=this.table.rowManager.getElement(),o=t.scrollTop,n=(this.touchMove?e.touches[0].pageY:e.pageY)-t.getBoundingClientRect().top+o;this.hoverElement.style.top=n-this.startY+"px"},MoveRows.prototype.moveHoverConnections=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"},MoveRows.prototype.connectToTables=function(e){var t=this.table.modules.comms.getConnections(this.connection);this.table.options.movableRowsSendingStart.call(this.table,t),this.table.modules.comms.send(this.connection,"moveRow","connect",{row:e})},MoveRows.prototype.disconnectFromTables=function(){var e=this.table.modules.comms.getConnections(this.connection);this.table.options.movableRowsSendingStop.call(this.table,e),this.table.modules.comms.send(this.connection,"moveRow","disconnect")},MoveRows.prototype.connect=function(e,t){var o=this;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"),o.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().addEventListener("mouseup",e.modules.moveRow.mouseup)}),o.tableRowDropEvent=o.tableRowDrop.bind(o),o.table.element.addEventListener("mouseup",o.tableRowDropEvent),this.table.options.movableRowsReceivingStart.call(this.table,t,e),!0)},MoveRows.prototype.disconnect=function(e){var t=this;e===this.connectedTable?(this.connectedTable=!1,this.connectedRow=!1,this.table.element.classList.remove("tabulator-movingrow-receiving"),t.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().removeEventListener("mouseup",e.modules.moveRow.mouseup)}),t.table.element.removeEventListener("mouseup",t.tableRowDropEvent),this.table.options.movableRowsReceivingStop.call(this.table,e)):console.warn("Move Row Error - trying to disconnect from non connected table")},MoveRows.prototype.dropComplete=function(e,t,o){var n=!1;if(o){switch(_typeof(this.table.options.movableRowsSender)){case"string":n=this.senders[this.table.options.movableRowsSender];break;case"function":n=this.table.options.movableRowsSender}n?n.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.table.options.movableRowsSent.call(this.table,this.moving.getComponent(),t?t.getComponent():void 0,e)}else this.table.options.movableRowsSentFailed.call(this.table,this.moving.getComponent(),t?t.getComponent():void 0,e);this.endMove()},MoveRows.prototype.tableRowDrop=function(e,t){var o=!1,n=!1;switch(e.stopImmediatePropagation(),_typeof(this.table.options.movableRowsReceiver)){case"string":o=this.receivers[this.table.options.movableRowsReceiver];break;case"function":o=this.table.options.movableRowsReceiver}o?n=o.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),n?this.table.options.movableRowsReceived.call(this.table,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):this.table.options.movableRowsReceivedFailed.call(this.table,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable),this.table.modules.comms.send(this.connectedTable,"moveRow","dropcomplete",{row:t,success:n})},MoveRows.prototype.receivers={insert:function(e,t,o){return this.table.addRow(e.getData(),void 0,t),!0},add:function(e,t,o){return this.table.addRow(e.getData()),!0},update:function(e,t,o){return!!t&&(t.update(e.getData()),!0)},replace:function(e,t,o){return!!t&&(this.table.addRow(e.getData(),void 0,t),t.delete(),!0)}},MoveRows.prototype.senders={delete:function(e,t,o){e.delete()}},MoveRows.prototype.commsReceived=function(e,t,o){switch(t){case"connect":return this.connect(e,o.row);case"disconnect":return this.disconnect(e);case"dropcomplete":return this.dropComplete(e,o.row,o.success)}},Tabulator.prototype.registerModule("moveRow",MoveRows);
\ No newline at end of file
index ef90ea8..fe2d58e 100644 (file)
@@ -1,6 +1,6 @@
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 
 var Mutator = function Mutator(table) {
        this.table = table; //hold Tabulator object
@@ -59,7 +59,7 @@ Mutator.prototype.lookupMutator = function (value) {
 };
 
 //apply mutator to row
-Mutator.prototype.transformRow = function (data, type, update) {
+Mutator.prototype.transformRow = function (data, type, updatedData) {
        var self = this,
            key = "mutator" + (type.charAt(0).toUpperCase() + type.slice(1)),
            value;
@@ -72,10 +72,10 @@ Mutator.prototype.transformRow = function (data, type, update) {
                        if (column.modules.mutate) {
                                mutator = column.modules.mutate[key] || column.modules.mutate.mutator || false;
 
-                               if (mutator) {
-                                       value = column.getFieldValue(data);
+                               if (mutator && updatedData) {
+                                       value = column.getFieldValue(updatedData);
 
-                                       if (!update || update && typeof value !== "undefined") {
+                                       if (typeof value !== "undefined") {
                                                component = column.getComponent();
                                                params = typeof mutator.params === "function" ? mutator.params(value, data, type, component) : mutator.params;
                                                column.setFieldValue(data, mutator.mutator(value, data, type, params, component));
@@ -90,10 +90,13 @@ Mutator.prototype.transformRow = function (data, type, update) {
 
 //apply mutator to new cell value
 Mutator.prototype.transformCell = function (cell, value) {
-       var mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false;
+       var mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false,
+           tempData = {};
 
        if (mutator) {
-               return mutator.mutator(value, cell.row.getData(), "edit", mutator.params, cell.getComponent());
+               tempData = Object.assign(tempData, cell.row.getData());
+               cell.column.setFieldValue(tempData, value);
+               return mutator.mutator(value, tempData, "edit", mutator.params, cell.getComponent());
        } else {
                return value;
        }
index 1534f29..c4c7f5d 100644 (file)
@@ -1,2 +1,2 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Mutator=function(t){this.table=t,this.allowedTypes=["","data","edit","clipboard"],this.enabled=!0};Mutator.prototype.initializeColumn=function(t){var o=this,e=!1,a={};this.allowedTypes.forEach(function(r){var u,n="mutator"+(r.charAt(0).toUpperCase()+r.slice(1));t.definition[n]&&(u=o.lookupMutator(t.definition[n]))&&(e=!0,a[n]={mutator:u,params:t.definition[n+"Params"]||{}})}),e&&(t.modules.mutate=a)},Mutator.prototype.lookupMutator=function(t){var o=!1;switch(void 0===t?"undefined":_typeof(t)){case"string":this.mutators[t]?o=this.mutators[t]:console.warn("Mutator Error - No such mutator found, ignoring: ",t);break;case"function":o=t}return o},Mutator.prototype.transformRow=function(t,o,e){var a,r=this,u="mutator"+(o.charAt(0).toUpperCase()+o.slice(1));return this.enabled&&r.table.columnManager.traverse(function(r){var n,i,s;r.modules.mutate&&(n=r.modules.mutate[u]||r.modules.mutate.mutator||!1)&&(a=r.getFieldValue(t),(!e||e&&void 0!==a)&&(s=r.getComponent(),i="function"==typeof n.params?n.params(a,t,o,s):n.params,r.setFieldValue(t,n.mutator(a,t,o,i,s))))}),t},Mutator.prototype.transformCell=function(t,o){var e=t.column.modules.mutate.mutatorEdit||t.column.modules.mutate.mutator||!1;return e?e.mutator(o,t.row.getData(),"edit",e.params,t.getComponent()):o},Mutator.prototype.enable=function(){this.enabled=!0},Mutator.prototype.disable=function(){this.enabled=!1},Mutator.prototype.mutators={},Tabulator.prototype.registerModule("mutator",Mutator);
\ No newline at end of file
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Mutator=function(t){this.table=t,this.allowedTypes=["","data","edit","clipboard"],this.enabled=!0};Mutator.prototype.initializeColumn=function(t){var o=this,e=!1,a={};this.allowedTypes.forEach(function(r){var u,n="mutator"+(r.charAt(0).toUpperCase()+r.slice(1));t.definition[n]&&(u=o.lookupMutator(t.definition[n]))&&(e=!0,a[n]={mutator:u,params:t.definition[n+"Params"]||{}})}),e&&(t.modules.mutate=a)},Mutator.prototype.lookupMutator=function(t){var o=!1;switch(void 0===t?"undefined":_typeof(t)){case"string":this.mutators[t]?o=this.mutators[t]:console.warn("Mutator Error - No such mutator found, ignoring: ",t);break;case"function":o=t}return o},Mutator.prototype.transformRow=function(t,o,e){var a,r=this,u="mutator"+(o.charAt(0).toUpperCase()+o.slice(1));return this.enabled&&r.table.columnManager.traverse(function(r){var n,i,s;r.modules.mutate&&(n=r.modules.mutate[u]||r.modules.mutate.mutator||!1)&&e&&void 0!==(a=r.getFieldValue(e))&&(s=r.getComponent(),i="function"==typeof n.params?n.params(a,t,o,s):n.params,r.setFieldValue(t,n.mutator(a,t,o,i,s)))}),t},Mutator.prototype.transformCell=function(t,o){var e=t.column.modules.mutate.mutatorEdit||t.column.modules.mutate.mutator||!1,a={};return e?(a=Object.assign(a,t.row.getData()),t.column.setFieldValue(a,o),e.mutator(o,a,"edit",e.params,t.getComponent())):o},Mutator.prototype.enable=function(){this.enabled=!0},Mutator.prototype.disable=function(){this.enabled=!1},Mutator.prototype.mutators={},Tabulator.prototype.registerModule("mutator",Mutator);
\ No newline at end of file
index a3af23a..c34c64b 100644 (file)
@@ -1,4 +1,4 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 
 var Page = function Page(table) {
 
@@ -202,7 +202,9 @@ Page.prototype.initialize = function (hidden) {
 
        //set default values
        self.mode = self.table.options.pagination;
+
        self.size = self.table.options.paginationSize || Math.floor(self.table.rowManager.getElement().clientHeight / 24);
+       // self.page = self.table.options.paginationInitialPage || 1;
        self.count = self.table.options.paginationButtonCount;
 
        self.generatePageSizeSelectList();
@@ -260,6 +262,8 @@ Page.prototype.setMaxPage = function (max) {
 Page.prototype.setPage = function (page) {
        var _this2 = this;
 
+       var self = this;
+
        return new Promise(function (resolve, reject) {
 
                page = parseInt(page);
@@ -271,6 +275,10 @@ Page.prototype.setPage = function (page) {
                        }).catch(function () {
                                reject();
                        });
+
+                       if (self.table.options.persistence && self.table.modExists("persistence", true) && self.table.modules.persistence.config.page) {
+                               self.table.modules.persistence.save("page");
+                       }
                } else {
                        console.warn("Pagination Error - Requested page is out of range of 1 - " + _this2.max + ":", page);
                        reject();
@@ -312,6 +320,10 @@ Page.prototype.setPageSize = function (size) {
                // this.pageSizeSelect.value = size;
                this.generatePageSizeSelectList();
        }
+
+       if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.page) {
+               this.table.modules.persistence.save("page");
+       }
 };
 
 //setup the pagination buttons
index ab6e069..8166ea8 100644 (file)
@@ -1,2 +1,2 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
-var Page=function(e){this.table=e,this.mode="local",this.progressiveLoad=!1,this.size=0,this.page=1,this.count=5,this.max=1,this.displayIndex=0,this.pageSizes=[],this.createElements()};Page.prototype.createElements=function(){var e;this.element=document.createElement("span"),this.element.classList.add("tabulator-paginator"),this.pagesElement=document.createElement("span"),this.pagesElement.classList.add("tabulator-pages"),e=document.createElement("button"),e.classList.add("tabulator-page"),e.setAttribute("type","button"),e.setAttribute("role","button"),e.setAttribute("aria-label",""),e.setAttribute("title",""),this.firstBut=e.cloneNode(!0),this.firstBut.setAttribute("data-page","first"),this.prevBut=e.cloneNode(!0),this.prevBut.setAttribute("data-page","prev"),this.nextBut=e.cloneNode(!0),this.nextBut.setAttribute("data-page","next"),this.lastBut=e.cloneNode(!0),this.lastBut.setAttribute("data-page","last"),this.table.options.paginationSizeSelector&&(this.pageSizeSelect=document.createElement("select"),this.pageSizeSelect.classList.add("tabulator-page-size"))},Page.prototype.generatePageSizeSelectList=function(){var e=this,t=[];if(this.pageSizeSelect){if(Array.isArray(this.table.options.paginationSizeSelector))t=this.table.options.paginationSizeSelector,this.pageSizes=t,-1==this.pageSizes.indexOf(this.size)&&t.unshift(this.size);else if(-1==this.pageSizes.indexOf(this.size)){t=[];for(var a=1;a<5;a++)t.push(this.size*a);this.pageSizes=t}else t=this.pageSizes;for(;this.pageSizeSelect.firstChild;)this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);t.forEach(function(t){var a=document.createElement("option");a.value=t,a.innerHTML=t,e.pageSizeSelect.appendChild(a)}),this.pageSizeSelect.value=this.size}},Page.prototype.initialize=function(e){var t,a=this;for(var i in a.table.options.paginationDataSent)a.paginationDataSentNames[i]=a.table.options.paginationDataSent[i];for(var n in a.table.options.paginationDataReceived)a.paginationDataReceivedNames[n]=a.table.options.paginationDataReceived[n];a.table.modules.localize.bind("pagination|first",function(e){a.firstBut.innerHTML=e}),a.table.modules.localize.bind("pagination|first_title",function(e){a.firstBut.setAttribute("aria-label",e),a.firstBut.setAttribute("title",e)}),a.table.modules.localize.bind("pagination|prev",function(e){a.prevBut.innerHTML=e}),a.table.modules.localize.bind("pagination|prev_title",function(e){a.prevBut.setAttribute("aria-label",e),a.prevBut.setAttribute("title",e)}),a.table.modules.localize.bind("pagination|next",function(e){a.nextBut.innerHTML=e}),a.table.modules.localize.bind("pagination|next_title",function(e){a.nextBut.setAttribute("aria-label",e),a.nextBut.setAttribute("title",e)}),a.table.modules.localize.bind("pagination|last",function(e){a.lastBut.innerHTML=e}),a.table.modules.localize.bind("pagination|last_title",function(e){a.lastBut.setAttribute("aria-label",e),a.lastBut.setAttribute("title",e)}),a.firstBut.addEventListener("click",function(){a.setPage(1)}),a.prevBut.addEventListener("click",function(){a.previousPage()}),a.nextBut.addEventListener("click",function(){a.nextPage().then(function(){}).catch(function(){})}),a.lastBut.addEventListener("click",function(){a.setPage(a.max)}),a.table.options.paginationElement&&(a.element=a.table.options.paginationElement),this.pageSizeSelect&&(t=document.createElement("label"),a.table.modules.localize.bind("pagination|page_size",function(e){a.pageSizeSelect.setAttribute("aria-label",e),a.pageSizeSelect.setAttribute("title",e),t.innerHTML=e}),a.element.appendChild(t),a.element.appendChild(a.pageSizeSelect),a.pageSizeSelect.addEventListener("change",function(e){a.setPageSize(a.pageSizeSelect.value),a.setPage(1).then(function(){}).catch(function(){})})),a.element.appendChild(a.firstBut),a.element.appendChild(a.prevBut),a.element.appendChild(a.pagesElement),a.element.appendChild(a.nextBut),a.element.appendChild(a.lastBut),a.table.options.paginationElement||e||a.table.footerManager.append(a.element,a),a.mode=a.table.options.pagination,a.size=a.table.options.paginationSize||Math.floor(a.table.rowManager.getElement().clientHeight/24),a.count=a.table.options.paginationButtonCount,a.generatePageSizeSelectList()},Page.prototype.initializeProgressive=function(e){this.initialize(!0),this.mode="progressive_"+e,this.progressiveLoad=!0},Page.prototype.setDisplayIndex=function(e){this.displayIndex=e},Page.prototype.getDisplayIndex=function(){return this.displayIndex},Page.prototype.setMaxRows=function(e){this.max=e?Math.ceil(e/this.size):1,this.page>this.max&&(this.page=this.max)},Page.prototype.reset=function(e){return("local"==this.mode||e)&&(this.page=1),!0},Page.prototype.setMaxPage=function(e){e=parseInt(e),this.max=e||1,this.page>this.max&&(this.page=this.max,this.trigger())},Page.prototype.setPage=function(e){var t=this;return new Promise(function(a,i){e=parseInt(e),e>0&&e<=t.max?(t.page=e,t.trigger().then(function(){a()}).catch(function(){i()})):(console.warn("Pagination Error - Requested page is out of range of 1 - "+t.max+":",e),i())})},Page.prototype.setPageToRow=function(e){var t=this;return new Promise(function(a,i){var n=t.table.rowManager.getDisplayRows(t.displayIndex-1),s=n.indexOf(e);if(s>-1){var o=Math.ceil((s+1)/t.size);t.setPage(o).then(function(){a()}).catch(function(){i()})}else console.warn("Pagination Error - Requested row is not visible"),i()})},Page.prototype.setPageSize=function(e){e=parseInt(e),e>0&&(this.size=e),this.pageSizeSelect&&this.generatePageSizeSelectList()},Page.prototype._setPageButtons=function(){for(var e=this,t=Math.floor((this.count-1)/2),a=Math.ceil((this.count-1)/2),i=this.max-this.page+t+1<this.count?this.max-this.count+1:Math.max(this.page-t,1),n=this.page<=a?Math.min(this.count,this.max):Math.min(this.page+a,this.max);e.pagesElement.firstChild;)e.pagesElement.removeChild(e.pagesElement.firstChild);1==e.page?(e.firstBut.disabled=!0,e.prevBut.disabled=!0):(e.firstBut.disabled=!1,e.prevBut.disabled=!1),e.page==e.max?(e.lastBut.disabled=!0,e.nextBut.disabled=!0):(e.lastBut.disabled=!1,e.nextBut.disabled=!1);for(var s=i;s<=n;s++)s>0&&s<=e.max&&e.pagesElement.appendChild(e._generatePageButton(s));this.footerRedraw()},Page.prototype._generatePageButton=function(e){var t=this,a=document.createElement("button");return a.classList.add("tabulator-page"),e==t.page&&a.classList.add("active"),a.setAttribute("type","button"),a.setAttribute("role","button"),a.setAttribute("aria-label","Show Page "+e),a.setAttribute("title","Show Page "+e),a.setAttribute("data-page",e),a.textContent=e,a.addEventListener("click",function(a){t.setPage(e)}),a},Page.prototype.previousPage=function(){var e=this;return new Promise(function(t,a){e.page>1?(e.page--,e.trigger().then(function(){t()}).catch(function(){a()})):(console.warn("Pagination Error - Previous page would be less than page 1:",0),a())})},Page.prototype.nextPage=function(){var e=this;return new Promise(function(t,a){e.page<e.max?(e.page++,e.trigger().then(function(){t()}).catch(function(){a()})):(e.progressiveLoad||console.warn("Pagination Error - Next page would be greater than maximum page of "+e.max+":",e.max+1),a())})},Page.prototype.getPage=function(){return this.page},Page.prototype.getPageMax=function(){return this.max},Page.prototype.getPageSize=function(e){return this.size},Page.prototype.getMode=function(){return this.mode},Page.prototype.getRows=function(e){var t,a,i;if("local"==this.mode){t=[],a=this.size*(this.page-1),i=a+parseInt(this.size),this._setPageButtons();for(var n=a;n<i;n++)e[n]&&t.push(e[n]);return t}return this._setPageButtons(),e.slice(0)},Page.prototype.trigger=function(){var e,t=this;return new Promise(function(a,i){switch(t.mode){case"local":e=t.table.rowManager.scrollLeft,t.table.rowManager.refreshActiveData("page"),t.table.rowManager.scrollHorizontal(e),t.table.options.pageLoaded.call(t.table,t.getPage()),a();break;case"remote":case"progressive_load":case"progressive_scroll":t.table.modules.ajax.blockActiveRequest(),t._getRemotePage().then(function(){a()}).catch(function(){i()});break;default:console.warn("Pagination Error - no such pagination mode:",t.mode),i()}})},Page.prototype._getRemotePage=function(){var e,t,a=this,i=this;return new Promise(function(n,s){if(i.table.modExists("ajax",!0)||s(),e=Tabulator.prototype.helpers.deepClone(i.table.modules.ajax.getParams()||{}),t=i.table.modules.ajax.getParams(),t[a.paginationDataSentNames.page]=i.page,a.size&&(t[a.paginationDataSentNames.size]=a.size),a.table.options.ajaxSorting&&a.table.modExists("sort")){var o=i.table.modules.sort.getSort();o.forEach(function(e){delete e.column}),t[a.paginationDataSentNames.sorters]=o}if(a.table.options.ajaxFiltering&&a.table.modExists("filter")){var r=i.table.modules.filter.getFilters(!0,!0);t[a.paginationDataSentNames.filters]=r}i.table.modules.ajax.setParams(t),i.table.modules.ajax.sendRequest(a.progressiveLoad).then(function(e){i._parseRemoteData(e),n()}).catch(function(e){s()}),i.table.modules.ajax.setParams(e)})},Page.prototype._parseRemoteData=function(e){var t,e,a,i=this;if(void 0===e[this.paginationDataReceivedNames.last_page]&&console.warn("Remote Pagination Error - Server response missing '"+this.paginationDataReceivedNames.last_page+"' property"),e[this.paginationDataReceivedNames.data])if(this.max=parseInt(e[this.paginationDataReceivedNames.last_page])||1,this.progressiveLoad)switch(this.mode){case"progressive_load":this.table.rowManager.addRows(e[this.paginationDataReceivedNames.data]),this.page<this.max&&setTimeout(function(){i.nextPage().then(function(){}).catch(function(){})},i.table.options.ajaxProgressiveLoadDelay);break;case"progressive_scroll":e=this.table.rowManager.getData().concat(e[this.paginationDataReceivedNames.data]),this.table.rowManager.setData(e,!0),a=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.element.clientHeight,i.table.rowManager.element.scrollHeight<=i.table.rowManager.element.clientHeight+a&&i.nextPage().then(function(){}).catch(function(){})}else t=this.table.rowManager.scrollLeft,this.table.rowManager.setData(e[this.paginationDataReceivedNames.data]),this.table.rowManager.scrollHorizontal(t),this.table.columnManager.scrollHorizontal(t),this.table.options.pageLoaded.call(this.table,this.getPage());else console.warn("Remote Pagination Error - Server response missing '"+this.paginationDataReceivedNames.data+"' property")},Page.prototype.footerRedraw=function(){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"))},Page.prototype.paginationDataSentNames={page:"page",size:"size",sorters:"sorters",filters:"filters"},Page.prototype.paginationDataReceivedNames={current_page:"current_page",last_page:"last_page",data:"data"},Tabulator.prototype.registerModule("page",Page);
\ No newline at end of file
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
+var Page=function(e){this.table=e,this.mode="local",this.progressiveLoad=!1,this.size=0,this.page=1,this.count=5,this.max=1,this.displayIndex=0,this.pageSizes=[],this.createElements()};Page.prototype.createElements=function(){var e;this.element=document.createElement("span"),this.element.classList.add("tabulator-paginator"),this.pagesElement=document.createElement("span"),this.pagesElement.classList.add("tabulator-pages"),e=document.createElement("button"),e.classList.add("tabulator-page"),e.setAttribute("type","button"),e.setAttribute("role","button"),e.setAttribute("aria-label",""),e.setAttribute("title",""),this.firstBut=e.cloneNode(!0),this.firstBut.setAttribute("data-page","first"),this.prevBut=e.cloneNode(!0),this.prevBut.setAttribute("data-page","prev"),this.nextBut=e.cloneNode(!0),this.nextBut.setAttribute("data-page","next"),this.lastBut=e.cloneNode(!0),this.lastBut.setAttribute("data-page","last"),this.table.options.paginationSizeSelector&&(this.pageSizeSelect=document.createElement("select"),this.pageSizeSelect.classList.add("tabulator-page-size"))},Page.prototype.generatePageSizeSelectList=function(){var e=this,t=[];if(this.pageSizeSelect){if(Array.isArray(this.table.options.paginationSizeSelector))t=this.table.options.paginationSizeSelector,this.pageSizes=t,-1==this.pageSizes.indexOf(this.size)&&t.unshift(this.size);else if(-1==this.pageSizes.indexOf(this.size)){t=[];for(var a=1;a<5;a++)t.push(this.size*a);this.pageSizes=t}else t=this.pageSizes;for(;this.pageSizeSelect.firstChild;)this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);t.forEach(function(t){var a=document.createElement("option");a.value=t,a.innerHTML=t,e.pageSizeSelect.appendChild(a)}),this.pageSizeSelect.value=this.size}},Page.prototype.initialize=function(e){var t,a=this;for(var i in a.table.options.paginationDataSent)a.paginationDataSentNames[i]=a.table.options.paginationDataSent[i];for(var n in a.table.options.paginationDataReceived)a.paginationDataReceivedNames[n]=a.table.options.paginationDataReceived[n];a.table.modules.localize.bind("pagination|first",function(e){a.firstBut.innerHTML=e}),a.table.modules.localize.bind("pagination|first_title",function(e){a.firstBut.setAttribute("aria-label",e),a.firstBut.setAttribute("title",e)}),a.table.modules.localize.bind("pagination|prev",function(e){a.prevBut.innerHTML=e}),a.table.modules.localize.bind("pagination|prev_title",function(e){a.prevBut.setAttribute("aria-label",e),a.prevBut.setAttribute("title",e)}),a.table.modules.localize.bind("pagination|next",function(e){a.nextBut.innerHTML=e}),a.table.modules.localize.bind("pagination|next_title",function(e){a.nextBut.setAttribute("aria-label",e),a.nextBut.setAttribute("title",e)}),a.table.modules.localize.bind("pagination|last",function(e){a.lastBut.innerHTML=e}),a.table.modules.localize.bind("pagination|last_title",function(e){a.lastBut.setAttribute("aria-label",e),a.lastBut.setAttribute("title",e)}),a.firstBut.addEventListener("click",function(){a.setPage(1)}),a.prevBut.addEventListener("click",function(){a.previousPage()}),a.nextBut.addEventListener("click",function(){a.nextPage().then(function(){}).catch(function(){})}),a.lastBut.addEventListener("click",function(){a.setPage(a.max)}),a.table.options.paginationElement&&(a.element=a.table.options.paginationElement),this.pageSizeSelect&&(t=document.createElement("label"),a.table.modules.localize.bind("pagination|page_size",function(e){a.pageSizeSelect.setAttribute("aria-label",e),a.pageSizeSelect.setAttribute("title",e),t.innerHTML=e}),a.element.appendChild(t),a.element.appendChild(a.pageSizeSelect),a.pageSizeSelect.addEventListener("change",function(e){a.setPageSize(a.pageSizeSelect.value),a.setPage(1).then(function(){}).catch(function(){})})),a.element.appendChild(a.firstBut),a.element.appendChild(a.prevBut),a.element.appendChild(a.pagesElement),a.element.appendChild(a.nextBut),a.element.appendChild(a.lastBut),a.table.options.paginationElement||e||a.table.footerManager.append(a.element,a),a.mode=a.table.options.pagination,a.size=a.table.options.paginationSize||Math.floor(a.table.rowManager.getElement().clientHeight/24),a.count=a.table.options.paginationButtonCount,a.generatePageSizeSelectList()},Page.prototype.initializeProgressive=function(e){this.initialize(!0),this.mode="progressive_"+e,this.progressiveLoad=!0},Page.prototype.setDisplayIndex=function(e){this.displayIndex=e},Page.prototype.getDisplayIndex=function(){return this.displayIndex},Page.prototype.setMaxRows=function(e){this.max=e?Math.ceil(e/this.size):1,this.page>this.max&&(this.page=this.max)},Page.prototype.reset=function(e){return("local"==this.mode||e)&&(this.page=1),!0},Page.prototype.setMaxPage=function(e){e=parseInt(e),this.max=e||1,this.page>this.max&&(this.page=this.max,this.trigger())},Page.prototype.setPage=function(e){var t=this,a=this;return new Promise(function(i,n){e=parseInt(e),e>0&&e<=t.max?(t.page=e,t.trigger().then(function(){i()}).catch(function(){n()}),a.table.options.persistence&&a.table.modExists("persistence",!0)&&a.table.modules.persistence.config.page&&a.table.modules.persistence.save("page")):(console.warn("Pagination Error - Requested page is out of range of 1 - "+t.max+":",e),n())})},Page.prototype.setPageToRow=function(e){var t=this;return new Promise(function(a,i){var n=t.table.rowManager.getDisplayRows(t.displayIndex-1),s=n.indexOf(e);if(s>-1){var o=Math.ceil((s+1)/t.size);t.setPage(o).then(function(){a()}).catch(function(){i()})}else console.warn("Pagination Error - Requested row is not visible"),i()})},Page.prototype.setPageSize=function(e){e=parseInt(e),e>0&&(this.size=e),this.pageSizeSelect&&this.generatePageSizeSelectList(),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.page&&this.table.modules.persistence.save("page")},Page.prototype._setPageButtons=function(){for(var e=this,t=Math.floor((this.count-1)/2),a=Math.ceil((this.count-1)/2),i=this.max-this.page+t+1<this.count?this.max-this.count+1:Math.max(this.page-t,1),n=this.page<=a?Math.min(this.count,this.max):Math.min(this.page+a,this.max);e.pagesElement.firstChild;)e.pagesElement.removeChild(e.pagesElement.firstChild);1==e.page?(e.firstBut.disabled=!0,e.prevBut.disabled=!0):(e.firstBut.disabled=!1,e.prevBut.disabled=!1),e.page==e.max?(e.lastBut.disabled=!0,e.nextBut.disabled=!0):(e.lastBut.disabled=!1,e.nextBut.disabled=!1);for(var s=i;s<=n;s++)s>0&&s<=e.max&&e.pagesElement.appendChild(e._generatePageButton(s));this.footerRedraw()},Page.prototype._generatePageButton=function(e){var t=this,a=document.createElement("button");return a.classList.add("tabulator-page"),e==t.page&&a.classList.add("active"),a.setAttribute("type","button"),a.setAttribute("role","button"),a.setAttribute("aria-label","Show Page "+e),a.setAttribute("title","Show Page "+e),a.setAttribute("data-page",e),a.textContent=e,a.addEventListener("click",function(a){t.setPage(e)}),a},Page.prototype.previousPage=function(){var e=this;return new Promise(function(t,a){e.page>1?(e.page--,e.trigger().then(function(){t()}).catch(function(){a()})):(console.warn("Pagination Error - Previous page would be less than page 1:",0),a())})},Page.prototype.nextPage=function(){var e=this;return new Promise(function(t,a){e.page<e.max?(e.page++,e.trigger().then(function(){t()}).catch(function(){a()})):(e.progressiveLoad||console.warn("Pagination Error - Next page would be greater than maximum page of "+e.max+":",e.max+1),a())})},Page.prototype.getPage=function(){return this.page},Page.prototype.getPageMax=function(){return this.max},Page.prototype.getPageSize=function(e){return this.size},Page.prototype.getMode=function(){return this.mode},Page.prototype.getRows=function(e){var t,a,i;if("local"==this.mode){t=[],a=this.size*(this.page-1),i=a+parseInt(this.size),this._setPageButtons();for(var n=a;n<i;n++)e[n]&&t.push(e[n]);return t}return this._setPageButtons(),e.slice(0)},Page.prototype.trigger=function(){var e,t=this;return new Promise(function(a,i){switch(t.mode){case"local":e=t.table.rowManager.scrollLeft,t.table.rowManager.refreshActiveData("page"),t.table.rowManager.scrollHorizontal(e),t.table.options.pageLoaded.call(t.table,t.getPage()),a();break;case"remote":case"progressive_load":case"progressive_scroll":t.table.modules.ajax.blockActiveRequest(),t._getRemotePage().then(function(){a()}).catch(function(){i()});break;default:console.warn("Pagination Error - no such pagination mode:",t.mode),i()}})},Page.prototype._getRemotePage=function(){var e,t,a=this,i=this;return new Promise(function(n,s){if(i.table.modExists("ajax",!0)||s(),e=Tabulator.prototype.helpers.deepClone(i.table.modules.ajax.getParams()||{}),t=i.table.modules.ajax.getParams(),t[a.paginationDataSentNames.page]=i.page,a.size&&(t[a.paginationDataSentNames.size]=a.size),a.table.options.ajaxSorting&&a.table.modExists("sort")){var o=i.table.modules.sort.getSort();o.forEach(function(e){delete e.column}),t[a.paginationDataSentNames.sorters]=o}if(a.table.options.ajaxFiltering&&a.table.modExists("filter")){var r=i.table.modules.filter.getFilters(!0,!0);t[a.paginationDataSentNames.filters]=r}i.table.modules.ajax.setParams(t),i.table.modules.ajax.sendRequest(a.progressiveLoad).then(function(e){i._parseRemoteData(e),n()}).catch(function(e){s()}),i.table.modules.ajax.setParams(e)})},Page.prototype._parseRemoteData=function(e){var t,e,a,i=this;if(void 0===e[this.paginationDataReceivedNames.last_page]&&console.warn("Remote Pagination Error - Server response missing '"+this.paginationDataReceivedNames.last_page+"' property"),e[this.paginationDataReceivedNames.data])if(this.max=parseInt(e[this.paginationDataReceivedNames.last_page])||1,this.progressiveLoad)switch(this.mode){case"progressive_load":this.table.rowManager.addRows(e[this.paginationDataReceivedNames.data]),this.page<this.max&&setTimeout(function(){i.nextPage().then(function(){}).catch(function(){})},i.table.options.ajaxProgressiveLoadDelay);break;case"progressive_scroll":e=this.table.rowManager.getData().concat(e[this.paginationDataReceivedNames.data]),this.table.rowManager.setData(e,!0),a=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.element.clientHeight,i.table.rowManager.element.scrollHeight<=i.table.rowManager.element.clientHeight+a&&i.nextPage().then(function(){}).catch(function(){})}else t=this.table.rowManager.scrollLeft,this.table.rowManager.setData(e[this.paginationDataReceivedNames.data]),this.table.rowManager.scrollHorizontal(t),this.table.columnManager.scrollHorizontal(t),this.table.options.pageLoaded.call(this.table,this.getPage());else console.warn("Remote Pagination Error - Server response missing '"+this.paginationDataReceivedNames.data+"' property")},Page.prototype.footerRedraw=function(){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"))},Page.prototype.paginationDataSentNames={page:"page",size:"size",sorters:"sorters",filters:"filters"},Page.prototype.paginationDataReceivedNames={current_page:"current_page",last_page:"last_page",data:"data"},Tabulator.prototype.registerModule("page",Page);
\ No newline at end of file
index 4c904e3..25fa980 100644 (file)
@@ -1,10 +1,14 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 
 var Persistence = function Persistence(table) {
        this.table = table; //hold Tabulator object
        this.mode = "";
        this.id = "";
-       this.persistProps = ["field", "width", "visible"];
+       // this.persistProps = ["field", "width", "visible"];
+       this.defWatcherBlock = false;
+       this.config = {};
+       this.readFunc = false;
+       this.writeFunc = false;
 };
 
 // Test for whether localStorage is available for use.
@@ -21,18 +25,139 @@ Persistence.prototype.localStorageTest = function () {
 };
 
 //setup parameters
-Persistence.prototype.initialize = function (mode, id) {
+Persistence.prototype.initialize = function () {
        //determine persistent layout storage type
 
+       var mode = this.table.options.persistenceMode,
+           id = this.table.options.persistenceID,
+           retreivedData;
+
        this.mode = mode !== true ? mode : this.localStorageTest() ? "local" : "cookie";
 
+       if (this.table.options.persistenceReaderFunc) {
+               if (typeof this.table.options.persistenceReaderFunc === "function") {
+                       this.readFunc = this.table.options.persistenceReaderFunc;
+               } else {
+                       if (this.readers[this.table.options.persistenceReaderFunc]) {
+                               this.readFunc = this.readers[this.table.options.persistenceReaderFunc];
+                       } else {
+                               console.warn("Persistence Read Error - invalid reader set", this.table.options.persistenceReaderFunc);
+                       }
+               }
+       } else {
+               if (this.readers[this.mode]) {
+                       this.readFunc = this.readers[this.mode];
+               } else {
+                       console.warn("Persistence Read Error - invalid reader set", this.mode);
+               }
+       }
+
+       if (this.table.options.persistenceWriterFunc) {
+               if (typeof this.table.options.persistenceWriterFunc === "function") {
+                       this.writeFunc = this.table.options.persistenceWriterFunc;
+               } else {
+                       if (this.readers[this.table.options.persistenceWriterFunc]) {
+                               this.writeFunc = this.readers[this.table.options.persistenceWriterFunc];
+                       } else {
+                               console.warn("Persistence Write Error - invalid reader set", this.table.options.persistenceWriterFunc);
+                       }
+               }
+       } else {
+               if (this.writers[this.mode]) {
+                       this.writeFunc = this.writers[this.mode];
+               } else {
+                       console.warn("Persistence Write Error - invalid writer set", this.mode);
+               }
+       }
+
        //set storage tag
        this.id = "tabulator-" + (id || this.table.element.getAttribute("id") || "");
+
+       this.config = {
+               sort: this.table.options.persistence === true || this.table.options.persistence.sort,
+               filter: this.table.options.persistence === true || this.table.options.persistence.filter,
+               group: this.table.options.persistence === true || this.table.options.persistence.group,
+               page: this.table.options.persistence === true || this.table.options.persistence.page,
+               columns: this.table.options.persistence === true ? ["title", "width", "visible"] : this.table.options.persistence.columns
+       };
+
+       //load pagination data if needed
+       if (this.config.page) {
+               retreivedData = this.retreiveData("page");
+
+               if (retreivedData) {
+                       if (typeof retreivedData.paginationSize !== "undefined" && (this.config.page === true || this.config.page.size)) {
+                               this.table.options.paginationSize = retreivedData.paginationSize;
+                       }
+
+                       if (typeof retreivedData.paginationInitialPage !== "undefined" && (this.config.page === true || this.config.page.page)) {
+                               this.table.options.paginationInitialPage = retreivedData.paginationInitialPage;
+                       }
+               }
+       }
+
+       //load group data if needed
+       if (this.config.group) {
+               retreivedData = this.retreiveData("group");
+
+               if (retreivedData) {
+                       if (typeof retreivedData.groupBy !== "undefined" && (this.config.group === true || this.config.group.groupBy)) {
+                               this.table.options.groupBy = retreivedData.groupBy;
+                       }
+                       if (typeof retreivedData.groupStartOpen !== "undefined" && (this.config.group === true || this.config.group.groupStartOpen)) {
+                               this.table.options.groupStartOpen = retreivedData.groupStartOpen;
+                       }
+                       if (typeof retreivedData.groupHeader !== "undefined" && (this.config.group === true || this.config.group.groupHeader)) {
+                               this.table.options.groupHeader = retreivedData.groupHeader;
+                       }
+               }
+       }
+};
+
+Persistence.prototype.initializeColumn = function (column) {
+       var self = this,
+           def,
+           keys;
+
+       if (this.config.columns) {
+               this.defWatcherBlock = true;
+
+               def = column.getDefinition();
+
+               keys = this.config.columns === true ? Object.keys(def) : this.config.columns;
+
+               keys.forEach(function (key) {
+                       var props = Object.getOwnPropertyDescriptor(def, key);
+                       var value = def[key];
+                       if (props) {
+                               Object.defineProperty(def, key, {
+                                       set: function set(newValue) {
+                                               value = newValue;
+
+                                               if (!self.defWatcherBlock) {
+                                                       self.save("columns");
+                                               }
+
+                                               if (props.set) {
+                                                       props.set(newValue);
+                                               }
+                                       },
+                                       get: function get() {
+                                               if (props.get) {
+                                                       props.get();
+                                               }
+                                               return value;
+                                       }
+                               });
+                       }
+               });
+
+               this.defWatcherBlock = false;
+       }
 };
 
 //load saved definitions
 Persistence.prototype.load = function (type, current) {
-
        var data = this.retreiveData(type);
 
        if (current) {
@@ -44,40 +169,7 @@ Persistence.prototype.load = function (type, current) {
 
 //retreive data from memory
 Persistence.prototype.retreiveData = function (type) {
-       var data = "",
-           id = this.id + (type === "columns" ? "" : "-" + type);
-
-       switch (this.mode) {
-               case "local":
-                       data = localStorage.getItem(id);
-                       break;
-
-               case "cookie":
-
-                       //find cookie
-                       var cookie = document.cookie,
-                           cookiePos = cookie.indexOf(id + "="),
-                           end = void 0;
-
-                       //if cookie exists, decode and load column data into tabulator
-                       if (cookiePos > -1) {
-                               cookie = cookie.substr(cookiePos);
-
-                               end = cookie.indexOf(";");
-
-                               if (end > -1) {
-                                       cookie = cookie.substr(0, end);
-                               }
-
-                               data = cookie.replace(id + "=", "");
-                       }
-                       break;
-
-               default:
-                       console.warn("Persistence Load Error - invalid mode selected", this.mode);
-       }
-
-       return data ? JSON.parse(data) : false;
+       return this.readFunc ? this.readFunc(this.id, type) : false;
 };
 
 //merge old and new column definitions
@@ -90,12 +182,23 @@ Persistence.prototype.mergeDefinition = function (oldCols, newCols) {
 
        newCols.forEach(function (column, to) {
 
-               var from = self._findColumn(oldCols, column);
+               var from = self._findColumn(oldCols, column),
+                   keys;
 
                if (from) {
 
-                       from.width = column.width;
-                       from.visible = column.visible;
+                       if (self.config.columns === true) {
+                               keys = Object.keys(from);
+                               keys.push("width");
+                       } else {
+                               keys = self.config.columns;
+                       }
+
+                       keys.forEach(function (key) {
+                               if (typeof column[key] !== "undefined") {
+                                       from[key] = column[key];
+                               }
+                       });
 
                        if (from.columns) {
                                from.columns = self.mergeDefinition(from.columns, column.columns);
@@ -104,6 +207,7 @@ Persistence.prototype.mergeDefinition = function (oldCols, newCols) {
                        output.push(from);
                }
        });
+
        oldCols.forEach(function (column, i) {
                var from = self._findColumn(newCols, column);
                if (!from) {
@@ -155,11 +259,19 @@ Persistence.prototype.save = function (type) {
                case "sort":
                        data = this.validateSorters(this.table.modules.sort.getSort());
                        break;
-       }
 
-       var id = this.id + (type === "columns" ? "" : "-" + type);
+               case "group":
+                       data = this.getGroupConfig();
+                       break;
+
+               case "page":
+                       data = this.getPageConfig();
+                       break;
+       }
 
-       this.saveData(id, data);
+       if (this.writeFunc) {
+               this.writeFunc(this.id, type, data);
+       }
 };
 
 //ensure sorters contain no function data
@@ -172,51 +284,127 @@ Persistence.prototype.validateSorters = function (data) {
        return data;
 };
 
-//save data to chosed medium
-Persistence.prototype.saveData = function (id, data) {
+Persistence.prototype.getGroupConfig = function () {
+       if (this.config.group) {
+               if (this.config.group === true || this.config.group.groupBy) {
+                       data.groupBy = this.table.options.groupBy;
+               }
 
-       data = JSON.stringify(data);
+               if (this.config.group === true || this.config.group.groupStartOpen) {
+                       data.groupStartOpen = this.table.options.groupStartOpen;
+               }
 
-       switch (this.mode) {
-               case "local":
-                       localStorage.setItem(id, data);
-                       break;
+               if (this.config.group === true || this.config.group.groupHeader) {
+                       data.groupHeader = this.table.options.groupHeader;
+               }
+       }
+
+       return data;
+};
 
-               case "cookie":
-                       var expireDate = new Date();
-                       expireDate.setDate(expireDate.getDate() + 10000);
+Persistence.prototype.getPageConfig = function () {
+       var data = {};
 
-                       //save cookie
-                       document.cookie = id + "=" + data + "; expires=" + expireDate.toUTCString();
-                       break;
+       if (this.config.page) {
+               if (this.config.page === true || this.config.page.size) {
+                       data.paginationSize = this.table.modules.page.getPageSize();
+               }
 
-               default:
-                       console.warn("Persistence Save Error - invalid mode selected", this.mode);
+               if (this.config.page === true || this.config.page.page) {
+                       data.paginationInitialPage = this.table.modules.page.getPage();
+               }
        }
+
+       return data;
 };
 
-//build permission list
+//parse columns for data to store
 Persistence.prototype.parseColumns = function (columns) {
        var self = this,
            definitions = [];
 
        columns.forEach(function (column) {
-               var def = {};
+               var defStore = {},
+                   colDef = column.getDefinition(),
+                   keys;
 
                if (column.isGroup) {
-                       def.title = column.getDefinition().title;
-                       def.columns = self.parseColumns(column.getColumns());
+                       defStore.title = colDef.title;
+                       defStore.columns = self.parseColumns(column.getColumns());
                } else {
-                       def.title = column.getDefinition().title;
-                       def.field = column.getField();
-                       def.width = column.getWidth();
-                       def.visible = column.visible;
+                       defStore.field = column.getField();
+
+                       if (self.config.columns === true) {
+                               keys = Object.keys(colDef);
+                               keys.push("width");
+                       } else {
+                               keys = self.config.columns;
+                       }
+
+                       keys.forEach(function (key) {
+
+                               switch (key) {
+                                       case "width":
+                                               defStore.width = column.getWidth();
+                                               break;
+                                       case "visible":
+                                               defStore.visible = column.visible;
+                                               break;
+
+                                       default:
+                                               defStore[key] = colDef[key];
+                               }
+                       });
                }
 
-               definitions.push(def);
+               definitions.push(defStore);
        });
 
        return definitions;
 };
 
+// read peristence information from storage
+Persistence.prototype.readers = {
+       local: function local(id, type) {
+               var data = localStorage.getItem(id + "-" + type);
+
+               return data ? JSON.parse(data) : false;
+       },
+       cookie: function cookie(id, type) {
+               var cookie = document.cookie,
+                   key = id + "-" + type,
+                   cookiePos = cookie.indexOf(key + "="),
+                   end;
+
+               //if cookie exists, decode and load column data into tabulator
+               if (cookiePos > -1) {
+                       cookie = cookie.substr(cookiePos);
+
+                       end = cookie.indexOf(";");
+
+                       if (end > -1) {
+                               cookie = cookie.substr(0, end);
+                       }
+
+                       data = cookie.replace(key + "=", "");
+               }
+
+               return data ? JSON.parse(data) : false;
+       }
+};
+
+//write persistence information to storage
+Persistence.prototype.writers = {
+       local: function local(id, type, data) {
+               localStorage.setItem(id + "-" + type, JSON.stringify(data));
+       },
+       cookie: function cookie(id, type, data) {
+               var expireDate = new Date();
+
+               expireDate.setDate(expireDate.getDate() + 10000);
+
+               document.cookie = id + "_" + type + "=" + JSON.stringify(data) + "; expires=" + expireDate.toUTCString();
+       }
+};
+
 Tabulator.prototype.registerModule("persistence", Persistence);
\ No newline at end of file
index 10efece..9d1f640 100644 (file)
@@ -1,2 +1,2 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
-var Persistence=function(e){this.table=e,this.mode="",this.id="",this.persistProps=["field","width","visible"]};Persistence.prototype.localStorageTest=function(){var e="_tabulator_test";try{return window.localStorage.setItem(e,e),window.localStorage.removeItem(e),!0}catch(e){return!1}},Persistence.prototype.initialize=function(e,t){this.mode=!0!==e?e:this.localStorageTest()?"local":"cookie",this.id="tabulator-"+(t||this.table.element.getAttribute("id")||"")},Persistence.prototype.load=function(e,t){var i=this.retreiveData(e);return t&&(i=i?this.mergeDefinition(t,i):t),i},Persistence.prototype.retreiveData=function(e){var t="",i=this.id+("columns"===e?"":"-"+e);switch(this.mode){case"local":t=localStorage.getItem(i);break;case"cookie":var o=document.cookie,s=o.indexOf(i+"="),r=void 0;s>-1&&(o=o.substr(s),r=o.indexOf(";"),r>-1&&(o=o.substr(0,r)),t=o.replace(i+"=",""));break;default:console.warn("Persistence Load Error - invalid mode selected",this.mode)}return!!t&&JSON.parse(t)},Persistence.prototype.mergeDefinition=function(e,t){var i=this,o=[];return t=t||[],t.forEach(function(t,s){var r=i._findColumn(e,t);r&&(r.width=t.width,r.visible=t.visible,r.columns&&(r.columns=i.mergeDefinition(r.columns,t.columns)),o.push(r))}),e.forEach(function(e,s){i._findColumn(t,e)||(o.length>s?o.splice(s,0,e):o.push(e))}),o},Persistence.prototype._findColumn=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}})},Persistence.prototype.save=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())}var i=this.id+("columns"===e?"":"-"+e);this.saveData(i,t)},Persistence.prototype.validateSorters=function(e){return e.forEach(function(e){e.column=e.field,delete e.field}),e},Persistence.prototype.saveData=function(e,t){switch(t=JSON.stringify(t),this.mode){case"local":localStorage.setItem(e,t);break;case"cookie":var i=new Date;i.setDate(i.getDate()+1e4),document.cookie=e+"="+t+"; expires="+i.toUTCString();break;default:console.warn("Persistence Save Error - invalid mode selected",this.mode)}},Persistence.prototype.parseColumns=function(e){var t=this,i=[];return e.forEach(function(e){var o={};e.isGroup?(o.title=e.getDefinition().title,o.columns=t.parseColumns(e.getColumns())):(o.title=e.getDefinition().title,o.field=e.getField(),o.width=e.getWidth(),o.visible=e.visible),i.push(o)}),i},Tabulator.prototype.registerModule("persistence",Persistence);
\ No newline at end of file
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
+var Persistence=function(e){this.table=e,this.mode="",this.id="",this.defWatcherBlock=!1,this.config={},this.readFunc=!1,this.writeFunc=!1};Persistence.prototype.localStorageTest=function(){var e="_tabulator_test";try{return window.localStorage.setItem(e,e),window.localStorage.removeItem(e),!0}catch(e){return!1}},Persistence.prototype.initialize=function(){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:this.readers[this.table.options.persistenceReaderFunc]?this.readFunc=this.readers[this.table.options.persistenceReaderFunc]:console.warn("Persistence Read Error - invalid reader set",this.table.options.persistenceReaderFunc):this.readers[this.mode]?this.readFunc=this.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:this.readers[this.table.options.persistenceWriterFunc]?this.writeFunc=this.readers[this.table.options.persistenceWriterFunc]:console.warn("Persistence Write Error - invalid reader set",this.table.options.persistenceWriterFunc):this.writers[this.mode]?this.writeFunc=this.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))},Persistence.prototype.initializeColumn=function(e){var t,i,s=this;this.config.columns&&(this.defWatcherBlock=!0,t=e.getDefinition(),i=!0===this.config.columns?Object.keys(t):this.config.columns,i.forEach(function(e){var i=Object.getOwnPropertyDescriptor(t,e),o=t[e];i&&Object.defineProperty(t,e,{set:function(e){o=e,s.defWatcherBlock||s.save("columns"),i.set&&i.set(e)},get:function(){return i.get&&i.get(),o}})}),this.defWatcherBlock=!1)},Persistence.prototype.load=function(e,t){var i=this.retreiveData(e);return t&&(i=i?this.mergeDefinition(t,i):t),i},Persistence.prototype.retreiveData=function(e){return!!this.readFunc&&this.readFunc(this.id,e)},Persistence.prototype.mergeDefinition=function(e,t){var i=this,s=[];return t=t||[],t.forEach(function(t,o){var r,n=i._findColumn(e,t);n&&(!0===i.config.columns?(r=Object.keys(n),r.push("width")):r=i.config.columns,r.forEach(function(e){void 0!==t[e]&&(n[e]=t[e])}),n.columns&&(n.columns=i.mergeDefinition(n.columns,t.columns)),s.push(n))}),e.forEach(function(e,o){i._findColumn(t,e)||(s.length>o?s.splice(o,0,e):s.push(e))}),s},Persistence.prototype._findColumn=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}})},Persistence.prototype.save=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)},Persistence.prototype.validateSorters=function(e){return e.forEach(function(e){e.column=e.field,delete e.field}),e},Persistence.prototype.getGroupConfig=function(){return this.config.group&&((!0===this.config.group||this.config.group.groupBy)&&(data.groupBy=this.table.options.groupBy),(!0===this.config.group||this.config.group.groupStartOpen)&&(data.groupStartOpen=this.table.options.groupStartOpen),(!0===this.config.group||this.config.group.groupHeader)&&(data.groupHeader=this.table.options.groupHeader)),data},Persistence.prototype.getPageConfig=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},Persistence.prototype.parseColumns=function(e){var t=this,i=[];return e.forEach(function(e){var s,o={},r=e.getDefinition();e.isGroup?(o.title=r.title,o.columns=t.parseColumns(e.getColumns())):(o.field=e.getField(),!0===t.config.columns?(s=Object.keys(r),s.push("width")):s=t.config.columns,s.forEach(function(t){switch(t){case"width":o.width=e.getWidth();break;case"visible":o.visible=e.visible;break;default:o[t]=r[t]}})),i.push(o)}),i},Persistence.prototype.readers={local:function(e,t){var i=localStorage.getItem(e+"-"+t);return!!i&&JSON.parse(i)},cookie:function(e,t){var i,s=document.cookie,o=e+"-"+t,r=s.indexOf(o+"=");return r>-1&&(s=s.substr(r),i=s.indexOf(";"),i>-1&&(s=s.substr(0,i)),data=s.replace(o+"=","")),!!data&&JSON.parse(data)}},Persistence.prototype.writers={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()}},Tabulator.prototype.registerModule("persistence",Persistence);
\ No newline at end of file
index 799a5ed..2ee3165 100644 (file)
@@ -1,4 +1,4 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 
 var Print = function Print(table) {
        this.table = table; //hold Tabulator object
index 24a5cb1..f4cae5d 100644 (file)
@@ -1,2 +1,2 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 var Print=function(t){this.table=t,this.element=!1,this.manualBlock=!1};Print.prototype.initialize=function(){window.addEventListener("beforeprint",this.replaceTable.bind(this)),window.addEventListener("afterprint",this.cleanup.bind(this))},Print.prototype.replaceTable=function(){this.manualBlock||(this.element=document.createElement("div"),this.element.classList.add("tabulator-print-table"),this.element.appendChild(this.table.modules.htmlTableExport.genereateTable(this.table.options.printConfig,this.table.options.printCopyStyle,this.table.options.printVisibleRows,"print")),this.table.element.style.display="none",this.table.element.parentNode.insertBefore(this.element,this.table.element))},Print.prototype.cleanup=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="")},Print.prototype.printFullscreen=function(t,e,i){var n,l,o=window.scrollX,s=window.scrollY,a=document.createElement("div"),r=document.createElement("div"),p=this.table.modules.htmlTableExport.genereateTable(void 0!==i?i:this.table.options.printConfig,void 0!==e?e:this.table.options.printCopyStyle,t,"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"),n="function"==typeof this.table.options.printHeader?this.table.options.printHeader.call(this.table):this.table.options.printHeader,"string"==typeof n?a.innerHTML=n:a.appendChild(n),this.element.appendChild(a)),this.element.appendChild(p),this.table.options.printFooter&&(r.classList.add("tabulator-print-footer"),l="function"==typeof this.table.options.printFooter?this.table.options.printFooter.call(this.table):this.table.options.printFooter,"string"==typeof l?r.innerHTML=l:r.appendChild(l),this.element.appendChild(r)),document.body.classList.add("tabulator-print-fullscreen-hide"),document.body.appendChild(this.element),this.table.options.printFormatter&&this.table.options.printFormatter(this.element,p),window.print(),this.cleanup(),window.scrollTo(o,s),this.manualBlock=!1},Tabulator.prototype.registerModule("print",Print);
\ No newline at end of file
index c403d2d..a075fca 100644 (file)
@@ -1,4 +1,4 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 
 var ReactiveData = function ReactiveData(table) {
        this.table = table; //hold Tabulator object
index 4697757..5597938 100644 (file)
@@ -1,2 +1,2 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 var ReactiveData=function(e){this.table=e,this.data=!1,this.blocked=!1,this.origFuncs={},this.currentVersion=0};ReactiveData.prototype.watchData=function(e){var t,a=this;this.currentVersion++,t=this.currentVersion,a.unwatchData(),a.data=e,a.origFuncs.push=e.push,Object.defineProperty(a.data,"push",{enumerable:!1,configurable:!0,value:function(){var r=Array.from(arguments);return a.blocked||t!==a.currentVersion||r.forEach(function(e){a.table.rowManager.addRowActual(e,!1)}),a.origFuncs.push.apply(e,arguments)}}),a.origFuncs.unshift=e.unshift,Object.defineProperty(a.data,"unshift",{enumerable:!1,configurable:!0,value:function(){var r=Array.from(arguments);return a.blocked||t!==a.currentVersion||r.forEach(function(e){a.table.rowManager.addRowActual(e,!0)}),a.origFuncs.unshift.apply(e,arguments)}}),a.origFuncs.shift=e.shift,Object.defineProperty(a.data,"shift",{enumerable:!1,configurable:!0,value:function(){var r;return a.blocked||t!==a.currentVersion||a.data.length&&(r=a.table.rowManager.getRowFromDataObject(a.data[0]))&&r.deleteActual(),a.origFuncs.shift.call(e)}}),a.origFuncs.pop=e.pop,Object.defineProperty(a.data,"pop",{enumerable:!1,configurable:!0,value:function(){var r;return a.blocked||t!==a.currentVersion||a.data.length&&(r=a.table.rowManager.getRowFromDataObject(a.data[a.data.length-1]))&&r.deleteActual(),a.origFuncs.pop.call(e)}}),a.origFuncs.splice=e.splice,Object.defineProperty(a.data,"splice",{enumerable:!1,configurable:!0,value:function(){var r,o=Array.from(arguments),n=o[0]<0?e.length+o[0]:o[0],c=o[1],i=!!o[2]&&o.slice(2);if(!a.blocked&&t===a.currentVersion){if(i&&(r=!!e[n]&&a.table.rowManager.getRowFromDataObject(e[n]),r?i.forEach(function(e){a.table.rowManager.addRowActual(e,!0,r,!0)}):(i=i.slice().reverse(),i.forEach(function(e){a.table.rowManager.addRowActual(e,!0,!1,!0)}))),0!==c){var u=e.slice(n,void 0===o[1]?o[1]:n+c);u.forEach(function(e,t){var r=a.table.rowManager.getRowFromDataObject(e);r&&r.deleteActual(t!==u.length-1)})}(i||0!==c)&&a.table.rowManager.reRenderInPosition()}return a.origFuncs.splice.apply(e,arguments)}})},ReactiveData.prototype.unwatchData=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})},ReactiveData.prototype.watchRow=function(e){var t=e.getData();this.blocked=!0;for(var a in t)this.watchKey(e,t,a);this.blocked=!1},ReactiveData.prototype.watchKey=function(e,t,a){var r=this,o=Object.getOwnPropertyDescriptor(t,a),n=t[a],c=this.currentVersion;Object.defineProperty(t,a,{set:function(t){if(n=t,!r.blocked&&c===r.currentVersion){var i={};i[a]=t,e.updateData(i)}o.set&&o.set(t)},get:function(){return o.get&&o.get(),n}})},ReactiveData.prototype.unwatchRow=function(e){var t=e.getData();for(var a in t)Object.defineProperty(t,a,{value:t[a]})},ReactiveData.prototype.block=function(){this.blocked=!0},ReactiveData.prototype.unblock=function(){this.blocked=!1},Tabulator.prototype.registerModule("reactiveData",ReactiveData);
\ No newline at end of file
index f8929c4..4db760f 100644 (file)
@@ -1,4 +1,4 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 
 var ResizeColumns = function ResizeColumns(table) {
        this.table = table; //hold Tabulator object
@@ -49,6 +49,7 @@ ResizeColumns.prototype.initializeColumn = function (type, column, element) {
                        var col = column.getLastColumn();
 
                        if (col && self._checkResizability(col)) {
+                               e.stopPropagation();
                                col.reinitializeWidth(true);
                        }
                });
@@ -87,6 +88,7 @@ ResizeColumns.prototype.initializeColumn = function (type, column, element) {
                                prevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;
 
                                if (prevColumn && self._checkResizability(prevColumn)) {
+                                       e.stopPropagation();
                                        prevColumn.reinitializeWidth(true);
                                }
                        }
@@ -135,7 +137,7 @@ ResizeColumns.prototype._mouseDown = function (e, column, handle) {
 
                self.table.element.classList.remove("tabulator-block-select");
 
-               if (self.table.options.persistentLayout && self.table.modExists("persistence", true)) {
+               if (self.table.options.persistence && self.table.modExists("persistence", true) && self.table.modules.persistence.config.columns) {
                        self.table.modules.persistence.save("columns");
                }
 
index a7b2701..bc83e22 100644 (file)
@@ -1,2 +1,2 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
-var ResizeColumns=function(e){this.table=e,this.startColumn=!1,this.startX=!1,this.startWidth=!1,this.handle=null,this.prevHandle=null};ResizeColumns.prototype.initializeColumn=function(e,t,n){var i=this,o=!1,s=this.table.options.resizableColumns;if("header"===e&&(o="textarea"==t.definition.formatter||t.definition.variableHeight,t.modules.resize={variableHeight:o}),!0===s||s==e){var a=document.createElement("div");a.className="tabulator-col-resize-handle";var l=document.createElement("div");l.className="tabulator-col-resize-handle prev",a.addEventListener("click",function(e){e.stopPropagation()});var r=function(e){var n=t.getLastColumn();n&&i._checkResizability(n)&&(i.startColumn=t,i._mouseDown(e,n,a))};a.addEventListener("mousedown",r),a.addEventListener("touchstart",r,{passive:!0}),a.addEventListener("dblclick",function(e){var n=t.getLastColumn();n&&i._checkResizability(n)&&n.reinitializeWidth(!0)}),l.addEventListener("click",function(e){e.stopPropagation()});var d=function(e){var n,o,s;(n=t.getFirstColumn())&&(o=i.table.columnManager.findColumnIndex(n),(s=o>0&&i.table.columnManager.getColumnByIndex(o-1))&&i._checkResizability(s)&&(i.startColumn=t,i._mouseDown(e,s,l)))};l.addEventListener("mousedown",d),l.addEventListener("touchstart",d,{passive:!0}),l.addEventListener("dblclick",function(e){var n,o,s;(n=t.getFirstColumn())&&(o=i.table.columnManager.findColumnIndex(n),(s=o>0&&i.table.columnManager.getColumnByIndex(o-1))&&i._checkResizability(s)&&s.reinitializeWidth(!0))}),n.appendChild(a),n.appendChild(l)}},ResizeColumns.prototype._checkResizability=function(e){return void 0!==e.definition.resizable?e.definition.resizable:this.table.options.resizableColumns},ResizeColumns.prototype._mouseDown=function(e,t,n){function i(e){t.setWidth(s.startWidth+((void 0===e.screenX?e.touches[0].screenX:e.screenX)-s.startX)),!s.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights()}function o(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",o),document.body.removeEventListener("mousemove",i),n.removeEventListener("touchmove",i),n.removeEventListener("touchend",o),s.table.element.classList.remove("tabulator-block-select"),s.table.options.persistentLayout&&s.table.modExists("persistence",!0)&&s.table.modules.persistence.save("columns"),s.table.options.columnResized.call(s.table,t.getComponent())}var s=this;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",i),document.body.addEventListener("mouseup",o),n.addEventListener("touchmove",i,{passive:!0}),n.addEventListener("touchend",o)},Tabulator.prototype.registerModule("resizeColumns",ResizeColumns);
\ No newline at end of file
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
+var ResizeColumns=function(e){this.table=e,this.startColumn=!1,this.startX=!1,this.startWidth=!1,this.handle=null,this.prevHandle=null};ResizeColumns.prototype.initializeColumn=function(e,t,n){var o=this,i=!1,s=this.table.options.resizableColumns;if("header"===e&&(i="textarea"==t.definition.formatter||t.definition.variableHeight,t.modules.resize={variableHeight:i}),!0===s||s==e){var a=document.createElement("div");a.className="tabulator-col-resize-handle";var l=document.createElement("div");l.className="tabulator-col-resize-handle prev",a.addEventListener("click",function(e){e.stopPropagation()});var r=function(e){var n=t.getLastColumn();n&&o._checkResizability(n)&&(o.startColumn=t,o._mouseDown(e,n,a))};a.addEventListener("mousedown",r),a.addEventListener("touchstart",r,{passive:!0}),a.addEventListener("dblclick",function(e){var n=t.getLastColumn();n&&o._checkResizability(n)&&(e.stopPropagation(),n.reinitializeWidth(!0))}),l.addEventListener("click",function(e){e.stopPropagation()});var d=function(e){var n,i,s;(n=t.getFirstColumn())&&(i=o.table.columnManager.findColumnIndex(n),(s=i>0&&o.table.columnManager.getColumnByIndex(i-1))&&o._checkResizability(s)&&(o.startColumn=t,o._mouseDown(e,s,l)))};l.addEventListener("mousedown",d),l.addEventListener("touchstart",d,{passive:!0}),l.addEventListener("dblclick",function(e){var n,i,s;(n=t.getFirstColumn())&&(i=o.table.columnManager.findColumnIndex(n),(s=i>0&&o.table.columnManager.getColumnByIndex(i-1))&&o._checkResizability(s)&&(e.stopPropagation(),s.reinitializeWidth(!0)))}),n.appendChild(a),n.appendChild(l)}},ResizeColumns.prototype._checkResizability=function(e){return void 0!==e.definition.resizable?e.definition.resizable:this.table.options.resizableColumns},ResizeColumns.prototype._mouseDown=function(e,t,n){function o(e){t.setWidth(s.startWidth+((void 0===e.screenX?e.touches[0].screenX:e.screenX)-s.startX)),!s.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights()}function i(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",i),document.body.removeEventListener("mousemove",o),n.removeEventListener("touchmove",o),n.removeEventListener("touchend",i),s.table.element.classList.remove("tabulator-block-select"),s.table.options.persistence&&s.table.modExists("persistence",!0)&&s.table.modules.persistence.config.columns&&s.table.modules.persistence.save("columns"),s.table.options.columnResized.call(s.table,t.getComponent())}var s=this;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",i),n.addEventListener("touchmove",o,{passive:!0}),n.addEventListener("touchend",i)},Tabulator.prototype.registerModule("resizeColumns",ResizeColumns);
\ No newline at end of file
index cb4a2b8..1c57097 100644 (file)
@@ -1,4 +1,4 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 
 var ResizeRows = function ResizeRows(table) {
        this.table = table; //hold Tabulator object
@@ -28,8 +28,8 @@ ResizeRows.prototype.initializeRow = function (row) {
                self._mouseDown(e, row, handle);
        };
 
-       handle.addEventListener("mousedown", handleDown, { passive: true });
-       handle.addEventListener("touchstart", handleDown);
+       handle.addEventListener("mousedown", handleDown);
+       handle.addEventListener("touchstart", handleDown, { passive: true });
 
        prevHandle.addEventListener("click", function (e) {
                e.stopPropagation();
index e5d08f8..cca5b88 100644 (file)
@@ -1,2 +1,2 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
-var ResizeRows=function(e){this.table=e,this.startColumn=!1,this.startY=!1,this.startHeight=!1,this.handle=null,this.prevHandle=null};ResizeRows.prototype.initializeRow=function(e){var t=this,o=e.getElement(),s=document.createElement("div");s.className="tabulator-row-resize-handle";var n=document.createElement("div");n.className="tabulator-row-resize-handle prev",s.addEventListener("click",function(e){e.stopPropagation()});var a=function(o){t.startRow=e,t._mouseDown(o,e,s)};s.addEventListener("mousedown",a,{passive:!0}),s.addEventListener("touchstart",a),n.addEventListener("click",function(e){e.stopPropagation()});var r=function(o){var s=t.table.rowManager.prevDisplayRow(e);s&&(t.startRow=s,t._mouseDown(o,s,n))};n.addEventListener("mousedown",r),n.addEventListener("touchstart",r,{passive:!0}),o.appendChild(s),o.appendChild(n)},ResizeRows.prototype._mouseDown=function(e,t,o){function s(e){t.setHeight(a.startHeight+((void 0===e.screenY?e.touches[0].screenY:e.screenY)-a.startY))}function n(e){document.body.removeEventListener("mouseup",s),document.body.removeEventListener("mousemove",s),o.removeEventListener("touchmove",s),o.removeEventListener("touchend",n),a.table.element.classList.remove("tabulator-block-select"),a.table.options.rowResized.call(this.table,t.getComponent())}var a=this;a.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),a.startY=void 0===e.screenY?e.touches[0].screenY:e.screenY,a.startHeight=t.getHeight(),document.body.addEventListener("mousemove",s),document.body.addEventListener("mouseup",n),o.addEventListener("touchmove",s,{passive:!0}),o.addEventListener("touchend",n)},Tabulator.prototype.registerModule("resizeRows",ResizeRows);
\ No newline at end of file
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
+var ResizeRows=function(e){this.table=e,this.startColumn=!1,this.startY=!1,this.startHeight=!1,this.handle=null,this.prevHandle=null};ResizeRows.prototype.initializeRow=function(e){var t=this,o=e.getElement(),s=document.createElement("div");s.className="tabulator-row-resize-handle";var n=document.createElement("div");n.className="tabulator-row-resize-handle prev",s.addEventListener("click",function(e){e.stopPropagation()});var a=function(o){t.startRow=e,t._mouseDown(o,e,s)};s.addEventListener("mousedown",a),s.addEventListener("touchstart",a,{passive:!0}),n.addEventListener("click",function(e){e.stopPropagation()});var r=function(o){var s=t.table.rowManager.prevDisplayRow(e);s&&(t.startRow=s,t._mouseDown(o,s,n))};n.addEventListener("mousedown",r),n.addEventListener("touchstart",r,{passive:!0}),o.appendChild(s),o.appendChild(n)},ResizeRows.prototype._mouseDown=function(e,t,o){function s(e){t.setHeight(a.startHeight+((void 0===e.screenY?e.touches[0].screenY:e.screenY)-a.startY))}function n(e){document.body.removeEventListener("mouseup",s),document.body.removeEventListener("mousemove",s),o.removeEventListener("touchmove",s),o.removeEventListener("touchend",n),a.table.element.classList.remove("tabulator-block-select"),a.table.options.rowResized.call(this.table,t.getComponent())}var a=this;a.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),a.startY=void 0===e.screenY?e.touches[0].screenY:e.screenY,a.startHeight=t.getHeight(),document.body.addEventListener("mousemove",s),document.body.addEventListener("mouseup",n),o.addEventListener("touchmove",s,{passive:!0}),o.addEventListener("touchend",n)},Tabulator.prototype.registerModule("resizeRows",ResizeRows);
\ No newline at end of file
index 75f7294..ed1022e 100644 (file)
@@ -1,4 +1,4 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 
 var ResizeTable = function ResizeTable(table) {
        this.table = table; //hold Tabulator object
@@ -12,13 +12,17 @@ ResizeTable.prototype.initialize = function (row) {
 
        if (typeof ResizeObserver !== "undefined" && table.rowManager.getRenderMode() === "virtual") {
                this.observer = new ResizeObserver(function (entry) {
-                       table.redraw();
+                       if (!table.browserMobile || browserMobile && !table.modules.edit.currentCell) {
+                               table.redraw();
+                       }
                });
 
                this.observer.observe(table.element);
        } else {
                this.binding = function () {
-                       table.redraw();
+                       if (!table.browserMobile || browserMobile && !table.modules.edit.currentCell) {
+                               table.redraw();
+                       }
                };
 
                window.addEventListener("resize", this.binding);
index 8db36ed..afde94d 100644 (file)
@@ -1,2 +1,2 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
-var ResizeTable=function(e){this.table=e,this.binding=!1,this.observer=!1};ResizeTable.prototype.initialize=function(e){var i=this.table;"undefined"!=typeof ResizeObserver&&"virtual"===i.rowManager.getRenderMode()?(this.observer=new ResizeObserver(function(e){i.redraw()}),this.observer.observe(i.element)):(this.binding=function(){i.redraw()},window.addEventListener("resize",this.binding))},ResizeTable.prototype.clearBindings=function(e){this.binding&&window.removeEventListener("resize",this.binding),this.observer&&this.observer.unobserve(this.table.element)},Tabulator.prototype.registerModule("resizeTable",ResizeTable);
\ No newline at end of file
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
+var ResizeTable=function(e){this.table=e,this.binding=!1,this.observer=!1};ResizeTable.prototype.initialize=function(e){var i=this.table;"undefined"!=typeof ResizeObserver&&"virtual"===i.rowManager.getRenderMode()?(this.observer=new ResizeObserver(function(e){(!i.browserMobile||browserMobile&&!i.modules.edit.currentCell)&&i.redraw()}),this.observer.observe(i.element)):(this.binding=function(){(!i.browserMobile||browserMobile&&!i.modules.edit.currentCell)&&i.redraw()},window.addEventListener("resize",this.binding))},ResizeTable.prototype.clearBindings=function(e){this.binding&&window.removeEventListener("resize",this.binding),this.observer&&this.observer.unobserve(this.table.element)},Tabulator.prototype.registerModule("resizeTable",ResizeTable);
\ No newline at end of file
index 7b800ef..ad1c685 100644 (file)
@@ -1,4 +1,4 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 
 var ResponsiveLayout = function ResponsiveLayout(table) {
        this.table = table; //hold Tabulator object
@@ -8,6 +8,7 @@ var ResponsiveLayout = function ResponsiveLayout(table) {
        this.index = 0;
        this.collapseFormatter = [];
        this.collapseStartOpen = true;
+       this.collapseHandleColumn = false;
 };
 
 //generate resposive columns list
@@ -46,6 +47,35 @@ ResponsiveLayout.prototype.initialize = function () {
        if (this.mode === "collapse") {
                this.generateCollapsedContent();
        }
+
+       //assign collapse column
+       for (var _iterator = this.table.columnManager.columnsByIndex, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
+               var _ref;
+
+               if (_isArray) {
+                       if (_i >= _iterator.length) break;
+                       _ref = _iterator[_i++];
+               } else {
+                       _i = _iterator.next();
+                       if (_i.done) break;
+                       _ref = _i.value;
+               }
+
+               var col = _ref;
+
+               if (col.definition.formatter == "responsiveCollapse") {
+                       this.collapseHandleColumn = col;
+                       break;
+               }
+       }
+
+       if (this.collapseHandleColumn) {
+               if (this.hiddenColumns.length) {
+                       this.collapseHandleColumn.show();
+               } else {
+                       this.collapseHandleColumn.hide();
+               }
+       }
 };
 
 //define layout information
@@ -55,23 +85,29 @@ ResponsiveLayout.prototype.initializeColumn = function (column) {
        column.modules.responsive = { order: typeof def.responsive === "undefined" ? 1 : def.responsive, visible: def.visible === false ? false : true };
 };
 
-ResponsiveLayout.prototype.layoutRow = function (row) {
-       var rowEl = row.getElement(),
-           el = document.createElement("div");
+ResponsiveLayout.prototype.initializeRow = function (row) {
+       var el;
 
-       el.classList.add("tabulator-responsive-collapse");
+       if (row.type !== "calc") {
+               el = document.createElement("div");
+               el.classList.add("tabulator-responsive-collapse");
 
-       if (!rowEl.classList.contains("tabulator-calcs")) {
                row.modules.responsiveLayout = {
-                       element: el
+                       element: el,
+                       open: this.collapseStartOpen
                };
 
                if (!this.collapseStartOpen) {
                        el.style.display = 'none';
                }
+       }
+};
 
-               rowEl.appendChild(el);
+ResponsiveLayout.prototype.layoutRow = function (row) {
+       var rowEl = row.getElement();
 
+       if (row.modules.responsiveLayout) {
+               rowEl.appendChild(row.modules.responsiveLayout.element);
                this.generateCollapsedRowContent(row);
        }
 };
@@ -86,11 +122,17 @@ ResponsiveLayout.prototype.updateColumnVisibility = function (column, visible) {
 };
 
 ResponsiveLayout.prototype.hideColumn = function (column) {
+       var colCount = this.hiddenColumns.length;
+
        column.hide(false, true);
 
        if (this.mode === "collapse") {
                this.hiddenColumns.unshift(column);
                this.generateCollapsedContent();
+
+               if (this.collapseHandleColumn && !colCount) {
+                       this.collapseHandleColumn.show();
+               }
        }
 };
 
@@ -109,6 +151,10 @@ ResponsiveLayout.prototype.showColumn = function (column) {
                }
 
                this.generateCollapsedContent();
+
+               if (this.collapseHandleColumn && !this.hiddenColumns.length) {
+                       this.collapseHandleColumn.hide();
+               }
        }
 };
 
index 0ee2860..efcad6b 100644 (file)
@@ -1,2 +1,2 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
-var ResponsiveLayout=function(e){this.table=e,this.columns=[],this.hiddenColumns=[],this.mode="",this.index=0,this.collapseFormatter=[],this.collapseStartOpen=!0};ResponsiveLayout.prototype.initialize=function(){var e=this,t=[];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(o,n){o.modules.responsive&&o.modules.responsive.order&&o.modules.responsive.visible&&(o.modules.responsive.index=n,t.push(o),o.visible||"collapse"!==e.mode||e.hiddenColumns.push(o))}),t=t.reverse(),t=t.sort(function(e,t){return t.modules.responsive.order-e.modules.responsive.order||t.modules.responsive.index-e.modules.responsive.index}),this.columns=t,"collapse"===this.mode&&this.generateCollapsedContent()},ResponsiveLayout.prototype.initializeColumn=function(e){var t=e.getDefinition();e.modules.responsive={order:void 0===t.responsive?1:t.responsive,visible:!1!==t.visible}},ResponsiveLayout.prototype.layoutRow=function(e){var t=e.getElement(),o=document.createElement("div");o.classList.add("tabulator-responsive-collapse"),t.classList.contains("tabulator-calcs")||(e.modules.responsiveLayout={element:o},this.collapseStartOpen||(o.style.display="none"),t.appendChild(o),this.generateCollapsedRowContent(e))},ResponsiveLayout.prototype.updateColumnVisibility=function(e,t){e.modules.responsive&&(e.modules.responsive.visible=t,this.initialize())},ResponsiveLayout.prototype.hideColumn=function(e){e.hide(!1,!0),"collapse"===this.mode&&(this.hiddenColumns.unshift(e),this.generateCollapsedContent())},ResponsiveLayout.prototype.showColumn=function(e){var t;e.show(!1,!0),e.setWidth(e.getWidth()),"collapse"===this.mode&&(t=this.hiddenColumns.indexOf(e),t>-1&&this.hiddenColumns.splice(t,1),this.generateCollapsedContent())},ResponsiveLayout.prototype.update=function(){for(var e=this,t=!0;t;){var o="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)-o;if(n<0){var s=e.columns[e.index];s?(e.hideColumn(s),e.index++):t=!1}else{var i=e.columns[e.index-1];i&&n>0&&n>=i.getWidth()?(e.showColumn(i),e.index--):t=!1}e.table.rowManager.activeRowsCount||e.table.rowManager.renderEmptyScroll()}},ResponsiveLayout.prototype.generateCollapsedContent=function(){var e=this;this.table.rowManager.getDisplayRows().forEach(function(t){e.generateCollapsedRowContent(t)})},ResponsiveLayout.prototype.generateCollapsedRowContent=function(e){var t,o;if(e.modules.responsiveLayout){for(t=e.modules.responsiveLayout.element;t.firstChild;)t.removeChild(t.firstChild);o=this.collapseFormatter(this.generateCollapsedRowData(e)),o&&t.appendChild(o)}},ResponsiveLayout.prototype.generateCollapsedRowData=function(e){var t,o=this,n=e.getData(),s=[];return this.hiddenColumns.forEach(function(i){var a=i.getFieldValue(n);i.definition.title&&i.field&&(i.modules.format&&o.table.options.responsiveLayoutCollapseUseFormatters?(t={value:!1,data:{},getValue:function(){return a},getData:function(){return n},getElement:function(){return document.createElement("div")},getRow:function(){return e.getComponent()},getColumn:function(){return i.getComponent()}},s.push({title:i.definition.title,value:i.modules.format.formatter.call(o.table.modules.format,t,i.modules.format.params)})):s.push({title:i.definition.title,value:a}))}),s},ResponsiveLayout.prototype.formatCollapsedData=function(e){var t=document.createElement("table"),o="";return e.forEach(function(e){var t=document.createElement("div");e.value instanceof Node&&(t.appendChild(e.value),e.value=t.innerHTML),o+="<tr><td><strong>"+e.title+"</strong></td><td>"+e.value+"</td></tr>"}),t.innerHTML=o,Object.keys(e).length?t:""},Tabulator.prototype.registerModule("responsiveLayout",ResponsiveLayout);
\ No newline at end of file
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
+var ResponsiveLayout=function(e){this.table=e,this.columns=[],this.hiddenColumns=[],this.mode="",this.index=0,this.collapseFormatter=[],this.collapseStartOpen=!0,this.collapseHandleColumn=!1};ResponsiveLayout.prototype.initialize=function(){var e=this,t=[];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(o,n){o.modules.responsive&&o.modules.responsive.order&&o.modules.responsive.visible&&(o.modules.responsive.index=n,t.push(o),o.visible||"collapse"!==e.mode||e.hiddenColumns.push(o))}),t=t.reverse(),t=t.sort(function(e,t){return t.modules.responsive.order-e.modules.responsive.order||t.modules.responsive.index-e.modules.responsive.index}),this.columns=t,"collapse"===this.mode&&this.generateCollapsedContent();for(var o=this.table.columnManager.columnsByIndex,n=Array.isArray(o),s=0,o=n?o:o[Symbol.iterator]();;){var i;if(n){if(s>=o.length)break;i=o[s++]}else{if(s=o.next(),s.done)break;i=s.value}var l=i;if("responsiveCollapse"==l.definition.formatter){this.collapseHandleColumn=l;break}}this.collapseHandleColumn&&(this.hiddenColumns.length?this.collapseHandleColumn.show():this.collapseHandleColumn.hide())},ResponsiveLayout.prototype.initializeColumn=function(e){var t=e.getDefinition();e.modules.responsive={order:void 0===t.responsive?1:t.responsive,visible:!1!==t.visible}},ResponsiveLayout.prototype.initializeRow=function(e){var t;"calc"!==e.type&&(t=document.createElement("div"),t.classList.add("tabulator-responsive-collapse"),e.modules.responsiveLayout={element:t,open:this.collapseStartOpen},this.collapseStartOpen||(t.style.display="none"))},ResponsiveLayout.prototype.layoutRow=function(e){var t=e.getElement();e.modules.responsiveLayout&&(t.appendChild(e.modules.responsiveLayout.element),this.generateCollapsedRowContent(e))},ResponsiveLayout.prototype.updateColumnVisibility=function(e,t){e.modules.responsive&&(e.modules.responsive.visible=t,this.initialize())},ResponsiveLayout.prototype.hideColumn=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())},ResponsiveLayout.prototype.showColumn=function(e){var t;e.show(!1,!0),e.setWidth(e.getWidth()),"collapse"===this.mode&&(t=this.hiddenColumns.indexOf(e),t>-1&&this.hiddenColumns.splice(t,1),this.generateCollapsedContent(),this.collapseHandleColumn&&!this.hiddenColumns.length&&this.collapseHandleColumn.hide())},ResponsiveLayout.prototype.update=function(){for(var e=this,t=!0;t;){var o="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)-o;if(n<0){var s=e.columns[e.index];s?(e.hideColumn(s),e.index++):t=!1}else{var i=e.columns[e.index-1];i&&n>0&&n>=i.getWidth()?(e.showColumn(i),e.index--):t=!1}e.table.rowManager.activeRowsCount||e.table.rowManager.renderEmptyScroll()}},ResponsiveLayout.prototype.generateCollapsedContent=function(){var e=this;this.table.rowManager.getDisplayRows().forEach(function(t){e.generateCollapsedRowContent(t)})},ResponsiveLayout.prototype.generateCollapsedRowContent=function(e){var t,o;if(e.modules.responsiveLayout){for(t=e.modules.responsiveLayout.element;t.firstChild;)t.removeChild(t.firstChild);o=this.collapseFormatter(this.generateCollapsedRowData(e)),o&&t.appendChild(o)}},ResponsiveLayout.prototype.generateCollapsedRowData=function(e){var t,o=this,n=e.getData(),s=[];return this.hiddenColumns.forEach(function(i){var l=i.getFieldValue(n);i.definition.title&&i.field&&(i.modules.format&&o.table.options.responsiveLayoutCollapseUseFormatters?(t={value:!1,data:{},getValue:function(){return l},getData:function(){return n},getElement:function(){return document.createElement("div")},getRow:function(){return e.getComponent()},getColumn:function(){return i.getComponent()}},s.push({title:i.definition.title,value:i.modules.format.formatter.call(o.table.modules.format,t,i.modules.format.params)})):s.push({title:i.definition.title,value:l}))}),s},ResponsiveLayout.prototype.formatCollapsedData=function(e){var t=document.createElement("table"),o="";return e.forEach(function(e){var t=document.createElement("div");e.value instanceof Node&&(t.appendChild(e.value),e.value=t.innerHTML),o+="<tr><td><strong>"+e.title+"</strong></td><td>"+e.value+"</td></tr>"}),t.innerHTML=o,Object.keys(e).length?t:""},Tabulator.prototype.registerModule("responsiveLayout",ResponsiveLayout);
\ No newline at end of file
index 42c5b89..5d5773a 100644 (file)
@@ -1,6 +1,6 @@
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 
 var SelectRow = function SelectRow(table) {
        this.table = table; //hold Tabulator object
@@ -46,10 +46,8 @@ SelectRow.prototype.initializeRow = function (row) {
                if (self.table.options.selectable && self.table.options.selectable != "highlight") {
                        if (self.table.options.selectableRangeMode === "click") {
                                element.addEventListener("click", function (e) {
-
-                                       self.table._clearSelection();
-
                                        if (e.shiftKey) {
+                                               self.table._clearSelection();
                                                self.lastClickedRow = self.lastClickedRow || row;
 
                                                var lastClickedRowIdx = self.table.rowManager.getDisplayRowIndex(self.lastClickedRow);
@@ -86,6 +84,7 @@ SelectRow.prototype.initializeRow = function (row) {
 
                                                        self.selectRows(toggledRows);
                                                }
+                                               self.table._clearSelection();
                                        } else if (e.ctrlKey || e.metaKey) {
                                                self.toggleRow(row);
                                                self.lastClickedRow = row;
@@ -94,8 +93,6 @@ SelectRow.prototype.initializeRow = function (row) {
                                                self.selectRows(row);
                                                self.lastClickedRow = row;
                                        }
-
-                                       self.table._clearSelection();
                                });
                        } else {
                                element.addEventListener("click", function (e) {
@@ -163,36 +160,43 @@ SelectRow.prototype.toggleRow = function (row) {
 
 //select a number of rows
 SelectRow.prototype.selectRows = function (rows) {
-       var self = this;
+       var _this = this;
+
+       var rowMatch;
 
        switch (typeof rows === "undefined" ? "undefined" : _typeof(rows)) {
                case "undefined":
-                       self.table.rowManager.rows.forEach(function (row) {
-                               self._selectRow(row, true, true);
+                       this.table.rowManager.rows.forEach(function (row) {
+                               _this._selectRow(row, true, true);
                        });
 
-                       self._rowSelectionChanged();
+                       this._rowSelectionChanged();
                        break;
 
-               case "boolean":
-                       if (rows === true) {
-                               self.table.rowManager.activeRows.forEach(function (row) {
-                                       self._selectRow(row, true, true);
-                               });
+               case "string":
 
-                               self._rowSelectionChanged();
+                       rowMatch = self.table.rowManager.findRow(rows);
+
+                       if (rowMatch) {
+                               this._selectRow(rowMatch, true, true);
+                       } else {
+                               this.table.rowManager.getRows(rows).forEach(function (row) {
+                                       _this._selectRow(row, true, true);
+                               });
                        }
+
+                       this._rowSelectionChanged();
                        break;
 
                default:
                        if (Array.isArray(rows)) {
                                rows.forEach(function (row) {
-                                       self._selectRow(row, true, true);
+                                       _this._selectRow(row, true, true);
                                });
 
-                               self._rowSelectionChanged();
+                               this._rowSelectionChanged();
                        } else {
-                               self._selectRow(rows, false, true);
+                               this._selectRow(rows, false, true);
                        }
                        break;
        }
index 3c0eb5e..1e33854 100644 (file)
@@ -1,2 +1,2 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
-var _typeof="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},SelectRow=function(e){this.table=e,this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],this.headerCheckboxElement=null};SelectRow.prototype.clearSelectionData=function(e){this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],e||this._rowSelectionChanged()},SelectRow.prototype.initializeRow=function(e){var t=this,o=e.getElement(),l=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())?(o.classList.add("tabulator-selectable"),o.classList.remove("tabulator-unselectable"),t.table.options.selectable&&"highlight"!=t.table.options.selectable&&("click"===t.table.options.selectableRangeMode?o.addEventListener("click",function(o){if(t.table._clearSelection(),o.shiftKey){t.lastClickedRow=t.lastClickedRow||e;var l=t.table.rowManager.getDisplayRowIndex(t.lastClickedRow),s=t.table.rowManager.getDisplayRowIndex(e),c=l<=s?l:s,n=l>=s?l:s,i=t.table.rowManager.getDisplayRows().slice(0),a=i.splice(c,n-c+1);o.ctrlKey||o.metaKey?(a.forEach(function(o){o!==t.lastClickedRow&&(!0===t.table.options.selectable||t.isRowSelected(e)?t.toggleRow(o):t.selectedRows.length<t.table.options.selectable&&t.toggleRow(o))}),t.lastClickedRow=e):(t.deselectRows(),!0!==t.table.options.selectable&&a.length>t.table.options.selectable&&(a=a.slice(0,t.table.options.selectable)),t.selectRows(a))}else o.ctrlKey||o.metaKey?(t.toggleRow(e),t.lastClickedRow=e):(t.deselectRows(),t.selectRows(e),t.lastClickedRow=e);t.table._clearSelection()}):(o.addEventListener("click",function(o){t.table.modExists("edit")&&t.table.modules.edit.getCurrentCell()||t.table._clearSelection(),t.selecting||t.toggleRow(e)}),o.addEventListener("mousedown",function(o){if(o.shiftKey)return t.table._clearSelection(),t.selecting=!0,t.selectPrev=[],document.body.addEventListener("mouseup",l),document.body.addEventListener("keyup",l),t.toggleRow(e),!1}),o.addEventListener("mouseenter",function(o){t.selecting&&(t.table._clearSelection(),t.toggleRow(e),t.selectPrev[1]==e&&t.toggleRow(t.selectPrev[0]))}),o.addEventListener("mouseout",function(o){t.selecting&&(t.table._clearSelection(),t.selectPrev.unshift(e))})))):(o.classList.add("tabulator-unselectable"),o.classList.remove("tabulator-selectable"))},SelectRow.prototype.toggleRow=function(e){this.table.options.selectableCheck.call(this.table,e.getComponent())&&(e.modules.select&&e.modules.select.selected?this._deselectRow(e):this._selectRow(e))},SelectRow.prototype.selectRows=function(e){var t=this;switch(void 0===e?"undefined":_typeof(e)){case"undefined":t.table.rowManager.rows.forEach(function(e){t._selectRow(e,!0,!0)}),t._rowSelectionChanged();break;case"boolean":!0===e&&(t.table.rowManager.activeRows.forEach(function(e){t._selectRow(e,!0,!0)}),t._rowSelectionChanged());break;default:Array.isArray(e)?(e.forEach(function(e){t._selectRow(e,!0,!0)}),t._rowSelectionChanged()):t._selectRow(e,!1,!0)}},SelectRow.prototype._selectRow=function(e,t,o){if(!isNaN(this.table.options.selectable)&&!0!==this.table.options.selectable&&!o&&this.selectedRows.length>=this.table.options.selectable){if(!this.table.options.selectableRollingSelection)return!1;this._deselectRow(this.selectedRows[0])}var l=this.table.rowManager.findRow(e);l?-1==this.selectedRows.indexOf(l)&&(l.modules.select||(l.modules.select={}),l.modules.select.selected=!0,l.modules.select.checkboxEl&&(l.modules.select.checkboxEl.checked=!0),l.getElement().classList.add("tabulator-selected"),this.selectedRows.push(l),t||(this.table.options.rowSelected.call(this.table,l.getComponent()),this._rowSelectionChanged())):t||console.warn("Selection Error - No such row found, ignoring selection:"+e)},SelectRow.prototype.isRowSelected=function(e){return-1!==this.selectedRows.indexOf(e)},SelectRow.prototype.deselectRows=function(e){var t,o=this;if(void 0===e){t=o.selectedRows.length;for(var l=0;l<t;l++)o._deselectRow(o.selectedRows[0],!0);o._rowSelectionChanged()}else Array.isArray(e)?(e.forEach(function(e){o._deselectRow(e,!0)}),o._rowSelectionChanged()):o._deselectRow(e)},SelectRow.prototype._deselectRow=function(e,t){var o,l=this,s=l.table.rowManager.findRow(e);s?(o=l.selectedRows.findIndex(function(e){return e==s}))>-1&&(s.modules.select||(s.modules.select={}),s.modules.select.selected=!1,s.modules.select.checkboxEl&&(s.modules.select.checkboxEl.checked=!1),s.getElement().classList.remove("tabulator-selected"),l.selectedRows.splice(o,1),t||(l.table.options.rowDeselected.call(this.table,s.getComponent()),l._rowSelectionChanged())):t||console.warn("Deselection Error - No such row found, ignoring selection:"+e)},SelectRow.prototype.getSelectedData=function(){var e=[];return this.selectedRows.forEach(function(t){e.push(t.getData())}),e},SelectRow.prototype.getSelectedRows=function(){var e=[];return this.selectedRows.forEach(function(t){e.push(t.getComponent())}),e},SelectRow.prototype._rowSelectionChanged=function(){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)),this.table.options.rowSelectionChanged.call(this.table,this.getSelectedData(),this.getSelectedRows())},SelectRow.prototype.registerRowSelectCheckbox=function(e,t){e._row.modules.select||(e._row.modules.select={}),e._row.modules.select.checkboxEl=t},SelectRow.prototype.registerHeaderSelectCheckbox=function(e){this.headerCheckboxElement=e},Tabulator.prototype.registerModule("selectRow",SelectRow);
\ No newline at end of file
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
+var _typeof="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},SelectRow=function(e){this.table=e,this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],this.headerCheckboxElement=null};SelectRow.prototype.clearSelectionData=function(e){this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],e||this._rowSelectionChanged()},SelectRow.prototype.initializeRow=function(e){var t=this,o=e.getElement(),l=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())?(o.classList.add("tabulator-selectable"),o.classList.remove("tabulator-unselectable"),t.table.options.selectable&&"highlight"!=t.table.options.selectable&&("click"===t.table.options.selectableRangeMode?o.addEventListener("click",function(o){if(o.shiftKey){t.table._clearSelection(),t.lastClickedRow=t.lastClickedRow||e;var l=t.table.rowManager.getDisplayRowIndex(t.lastClickedRow),s=t.table.rowManager.getDisplayRowIndex(e),c=l<=s?l:s,n=l>=s?l:s,i=t.table.rowManager.getDisplayRows().slice(0),a=i.splice(c,n-c+1);o.ctrlKey||o.metaKey?(a.forEach(function(o){o!==t.lastClickedRow&&(!0===t.table.options.selectable||t.isRowSelected(e)?t.toggleRow(o):t.selectedRows.length<t.table.options.selectable&&t.toggleRow(o))}),t.lastClickedRow=e):(t.deselectRows(),!0!==t.table.options.selectable&&a.length>t.table.options.selectable&&(a=a.slice(0,t.table.options.selectable)),t.selectRows(a)),t.table._clearSelection()}else o.ctrlKey||o.metaKey?(t.toggleRow(e),t.lastClickedRow=e):(t.deselectRows(),t.selectRows(e),t.lastClickedRow=e)}):(o.addEventListener("click",function(o){t.table.modExists("edit")&&t.table.modules.edit.getCurrentCell()||t.table._clearSelection(),t.selecting||t.toggleRow(e)}),o.addEventListener("mousedown",function(o){if(o.shiftKey)return t.table._clearSelection(),t.selecting=!0,t.selectPrev=[],document.body.addEventListener("mouseup",l),document.body.addEventListener("keyup",l),t.toggleRow(e),!1}),o.addEventListener("mouseenter",function(o){t.selecting&&(t.table._clearSelection(),t.toggleRow(e),t.selectPrev[1]==e&&t.toggleRow(t.selectPrev[0]))}),o.addEventListener("mouseout",function(o){t.selecting&&(t.table._clearSelection(),t.selectPrev.unshift(e))})))):(o.classList.add("tabulator-unselectable"),o.classList.remove("tabulator-selectable"))},SelectRow.prototype.toggleRow=function(e){this.table.options.selectableCheck.call(this.table,e.getComponent())&&(e.modules.select&&e.modules.select.selected?this._deselectRow(e):this._selectRow(e))},SelectRow.prototype.selectRows=function(e){var t,o=this;switch(void 0===e?"undefined":_typeof(e)){case"undefined":this.table.rowManager.rows.forEach(function(e){o._selectRow(e,!0,!0)}),this._rowSelectionChanged();break;case"string":t=self.table.rowManager.findRow(e),t?this._selectRow(t,!0,!0):this.table.rowManager.getRows(e).forEach(function(e){o._selectRow(e,!0,!0)}),this._rowSelectionChanged();break;default:Array.isArray(e)?(e.forEach(function(e){o._selectRow(e,!0,!0)}),this._rowSelectionChanged()):this._selectRow(e,!1,!0)}},SelectRow.prototype._selectRow=function(e,t,o){if(!isNaN(this.table.options.selectable)&&!0!==this.table.options.selectable&&!o&&this.selectedRows.length>=this.table.options.selectable){if(!this.table.options.selectableRollingSelection)return!1;this._deselectRow(this.selectedRows[0])}var l=this.table.rowManager.findRow(e);l?-1==this.selectedRows.indexOf(l)&&(l.modules.select||(l.modules.select={}),l.modules.select.selected=!0,l.modules.select.checkboxEl&&(l.modules.select.checkboxEl.checked=!0),l.getElement().classList.add("tabulator-selected"),this.selectedRows.push(l),t||(this.table.options.rowSelected.call(this.table,l.getComponent()),this._rowSelectionChanged())):t||console.warn("Selection Error - No such row found, ignoring selection:"+e)},SelectRow.prototype.isRowSelected=function(e){return-1!==this.selectedRows.indexOf(e)},SelectRow.prototype.deselectRows=function(e){var t,o=this;if(void 0===e){t=o.selectedRows.length;for(var l=0;l<t;l++)o._deselectRow(o.selectedRows[0],!0);o._rowSelectionChanged()}else Array.isArray(e)?(e.forEach(function(e){o._deselectRow(e,!0)}),o._rowSelectionChanged()):o._deselectRow(e)},SelectRow.prototype._deselectRow=function(e,t){var o,l=this,s=l.table.rowManager.findRow(e);s?(o=l.selectedRows.findIndex(function(e){return e==s}))>-1&&(s.modules.select||(s.modules.select={}),s.modules.select.selected=!1,s.modules.select.checkboxEl&&(s.modules.select.checkboxEl.checked=!1),s.getElement().classList.remove("tabulator-selected"),l.selectedRows.splice(o,1),t||(l.table.options.rowDeselected.call(this.table,s.getComponent()),l._rowSelectionChanged())):t||console.warn("Deselection Error - No such row found, ignoring selection:"+e)},SelectRow.prototype.getSelectedData=function(){var e=[];return this.selectedRows.forEach(function(t){e.push(t.getData())}),e},SelectRow.prototype.getSelectedRows=function(){var e=[];return this.selectedRows.forEach(function(t){e.push(t.getComponent())}),e},SelectRow.prototype._rowSelectionChanged=function(){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)),this.table.options.rowSelectionChanged.call(this.table,this.getSelectedData(),this.getSelectedRows())},SelectRow.prototype.registerRowSelectCheckbox=function(e,t){e._row.modules.select||(e._row.modules.select={}),e._row.modules.select.checkboxEl=t},SelectRow.prototype.registerHeaderSelectCheckbox=function(e){this.headerCheckboxElement=e},Tabulator.prototype.registerModule("selectRow",SelectRow);
\ No newline at end of file
index a2507d0..f4716e4 100644 (file)
@@ -1,6 +1,6 @@
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 
 var Sort = function Sort(table) {
        this.table = table; //hold Tabulator object
@@ -164,7 +164,7 @@ Sort.prototype.setSort = function (sortList, dir) {
 
        self.sortList = newSortList;
 
-       if (this.table.options.persistentSort && this.table.modExists("persistence", true)) {
+       if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.sort) {
                this.table.modules.persistence.save("sort");
        }
 };
@@ -251,7 +251,7 @@ Sort.prototype.sort = function (data) {
        }
 
        if (self.table.options.dataSorted) {
-               self.table.options.dataSorted.call(self.table, self.getSort(), self.table.rowManager.getComponents(true));
+               self.table.options.dataSorted.call(self.table, self.getSort(), self.table.rowManager.getComponents("active"));
        }
 };
 
index eb36968..2baf787 100644 (file)
@@ -1,2 +1,2 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Sort=function(t){this.table=t,this.sortList=[],this.changed=!1};Sort.prototype.initializeColumn=function(t,e){var o,r,n=this,i=!1;switch(_typeof(t.definition.sorter)){case"string":n.sorters[t.definition.sorter]?i=n.sorters[t.definition.sorter]:console.warn("Sort Error - No such sorter found: ",t.definition.sorter);break;case"function":i=t.definition.sorter}t.modules.sort={sorter:i,dir:"none",params:t.definition.sorterParams||{},startingDir:t.definition.headerSortStartingDir||"asc",tristate:void 0!==t.definition.headerSortTristate?t.definition.headerSortTristate:this.table.options.headerSortTristate},(void 0===t.definition.headerSort?!1!==this.table.options.headerSort:!1!==t.definition.headerSort)&&(o=t.getElement(),o.classList.add("tabulator-sortable"),r=document.createElement("div"),r.classList.add("tabulator-arrow"),e.appendChild(r),o.addEventListener("click",function(e){var o="",r=[],i=!1;if(t.modules.sort){if(t.modules.sort.tristate)o="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":o="desc";break;case"desc":o="asc";break;default:o=t.modules.sort.startingDir}n.table.options.columnHeaderSortMulti&&(e.shiftKey||e.ctrlKey)?(r=n.getSort(),i=r.findIndex(function(e){return e.field===t.getField()}),i>-1?(r[i].dir=o,i!=r.length-1&&(i=r.splice(i,1)[0],"none"!=o&&r.push(i))):"none"!=o&&r.push({column:t,dir:o}),n.setSort(r)):"none"==o?n.clear():n.setSort(t,o),n.table.rowManager.sorterRefresh(!n.sortList.length)}}))},Sort.prototype.hasChanged=function(){var t=this.changed;return this.changed=!1,t},Sort.prototype.getSort=function(){var t=this,e=[];return t.sortList.forEach(function(t){t.column&&e.push({column:t.column.getComponent(),field:t.column.getField(),dir:t.dir})}),e},Sort.prototype.setSort=function(t,e){var o=this,r=[];Array.isArray(t)||(t=[{column:t,dir:e}]),t.forEach(function(t){var e;e=o.table.columnManager.findColumn(t.column),e?(t.column=e,r.push(t),o.changed=!0):console.warn("Sort Warning - Sort field does not exist and is being ignored: ",t.column)}),o.sortList=r,this.table.options.persistentSort&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("sort")},Sort.prototype.clear=function(){this.setSort([])},Sort.prototype.findSorter=function(t){var e,o=this.table.rowManager.activeRows[0],r="string";if(o&&(o=o.getData(),t.getField()))switch(e=t.getFieldValue(o),void 0===e?"undefined":_typeof(e)){case"undefined":r="string";break;case"boolean":r="boolean";break;default:isNaN(e)||""===e?e.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)&&(r="alphanum"):r="number"}return this.sorters[r]},Sort.prototype.sort=function(t){var e,o=this;e=this.table.options.sortOrderReverse?o.sortList.slice().reverse():o.sortList,o.table.options.dataSorting&&o.table.options.dataSorting.call(o.table,o.getSort()),o.clearColumnHeaders(),o.table.options.ajaxSorting?e.forEach(function(t,e){o.setColumnHeader(t.column,t.dir)}):e.forEach(function(r,n){r.column&&r.column.modules.sort&&(r.column.modules.sort.sorter||(r.column.modules.sort.sorter=o.findSorter(r.column)),o._sortItem(t,r.column,r.dir,e,n)),o.setColumnHeader(r.column,r.dir)}),o.table.options.dataSorted&&o.table.options.dataSorted.call(o.table,o.getSort(),o.table.rowManager.getComponents(!0))},Sort.prototype.clearColumnHeaders=function(){this.table.columnManager.getRealColumns().forEach(function(t){t.modules.sort&&(t.modules.sort.dir="none",t.getElement().setAttribute("aria-sort","none"))})},Sort.prototype.setColumnHeader=function(t,e){t.modules.sort.dir=e,t.getElement().setAttribute("aria-sort",e)},Sort.prototype._sortItem=function(t,e,o,r,n){var i=this,s="function"==typeof e.modules.sort.params?e.modules.sort.params(e.getComponent(),o):e.modules.sort.params;t.sort(function(t,a){var l=i._sortRow(t,a,e,o,s);if(0===l&&n)for(var u=n-1;u>=0&&0===(l=i._sortRow(t,a,r[u].column,r[u].dir,s));u--);return l})},Sort.prototype._sortRow=function(t,e,o,r,n){var i,s,a="asc"==r?t:e,l="asc"==r?e:t;return t=o.getFieldValue(a.getData()),e=o.getFieldValue(l.getData()),t=void 0!==t?t:"",e=void 0!==e?e:"",i=a.getComponent(),s=l.getComponent(),o.modules.sort.sorter.call(this,t,e,i,s,o.getComponent(),r,n)},Sort.prototype.sorters={number:function(t,e,o,r,n,i,s){var a=s.alignEmptyValues,l=s.decimalSeparator||".",u=s.thousandSeparator||",",c=0;if(t=parseFloat(String(t).split(u).join("").split(l).join(".")),e=parseFloat(String(e).split(u).join("").split(l).join(".")),isNaN(t))c=isNaN(e)?0:-1;else{if(!isNaN(e))return t-e;c=1}return("top"===a&&"desc"===i||"bottom"===a&&"asc"===i)&&(c*=-1),c},string:function(t,e,o,r,n,i,s){var a,l=s.alignEmptyValues,u=0;if(t){if(e){switch(_typeof(s.locale)){case"boolean":s.locale&&(a=this.table.modules.localize.getLocale());break;case"string":a=s.locale}return String(t).toLowerCase().localeCompare(String(e).toLowerCase(),a)}u=1}else u=e?-1:0;return("top"===l&&"desc"===i||"bottom"===l&&"asc"===i)&&(u*=-1),u},date:function(t,e,o,r,n,i,s){return s.format||(s.format="DD/MM/YYYY"),this.sorters.datetime.call(this,t,e,o,r,n,i,s)},time:function(t,e,o,r,n,i,s){return s.format||(s.format="hh:mm"),this.sorters.datetime.call(this,t,e,o,r,n,i,s)},datetime:function(t,e,o,r,n,i,s){var a=s.format||"DD/MM/YYYY hh:mm:ss",l=s.alignEmptyValues,u=0;if("undefined"!=typeof moment){if(t=moment(t,a),e=moment(e,a),t.isValid()){if(e.isValid())return t-e;u=1}else u=e.isValid()?-1:0;return("top"===l&&"desc"===i||"bottom"===l&&"asc"===i)&&(u*=-1),u}console.error("Sort Error - 'datetime' sorter is dependant on moment.js")},boolean:function(t,e,o,r,n,i,s){return(!0===t||"true"===t||"True"===t||1===t?1:0)-(!0===e||"true"===e||"True"===e||1===e?1:0)},array:function(t,e,o,r,n,i,s){function a(t){switch(c){case"length":return t.length;case"sum":return t.reduce(function(t,e){return t+e});case"max":return Math.max.apply(null,t);case"min":return Math.min.apply(null,t);case"avg":return t.reduce(function(t,e){return t+e})/t.length}}var l=0,u=0,c=s.type||"length",d=s.alignEmptyValues,m=0;if(Array.isArray(t)){if(Array.isArray(e))return l=t?a(t):0,u=e?a(e):0,l-u;d=1}else d=Array.isArray(e)?-1:0;return("top"===d&&"desc"===i||"bottom"===d&&"asc"===i)&&(m*=-1),m},exists:function(t,e,o,r,n,i,s){return(void 0===t?0:1)-(void 0===e?0:1)},alphanum:function(t,e,o,r,n,i,s){var a,l,u,c,d,m=0,f=/(\d+)|(\D+)/g,p=/\d/,h=s.alignEmptyValues,g=0;if(t||0===t){if(e||0===e){if(isFinite(t)&&isFinite(e))return t-e;if(a=String(t).toLowerCase(),l=String(e).toLowerCase(),a===l)return 0;if(!p.test(a)||!p.test(l))return a>l?1:-1;for(a=a.match(f),l=l.match(f),d=a.length>l.length?l.length:a.length;m<d;)if(u=a[m],c=l[m++],u!==c)return isFinite(u)&&isFinite(c)?("0"===u.charAt(0)&&(u="."+u),"0"===c.charAt(0)&&(c="."+c),u-c):u>c?1:-1;return a.length>l.length}g=1}else g=e||0===e?-1:0;return("top"===h&&"desc"===i||"bottom"===h&&"asc"===i)&&(g*=-1),g}},Tabulator.prototype.registerModule("sort",Sort);
\ No newline at end of file
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Sort=function(t){this.table=t,this.sortList=[],this.changed=!1};Sort.prototype.initializeColumn=function(t,e){var o,r,n=this,i=!1;switch(_typeof(t.definition.sorter)){case"string":n.sorters[t.definition.sorter]?i=n.sorters[t.definition.sorter]:console.warn("Sort Error - No such sorter found: ",t.definition.sorter);break;case"function":i=t.definition.sorter}t.modules.sort={sorter:i,dir:"none",params:t.definition.sorterParams||{},startingDir:t.definition.headerSortStartingDir||"asc",tristate:void 0!==t.definition.headerSortTristate?t.definition.headerSortTristate:this.table.options.headerSortTristate},(void 0===t.definition.headerSort?!1!==this.table.options.headerSort:!1!==t.definition.headerSort)&&(o=t.getElement(),o.classList.add("tabulator-sortable"),r=document.createElement("div"),r.classList.add("tabulator-arrow"),e.appendChild(r),o.addEventListener("click",function(e){var o="",r=[],i=!1;if(t.modules.sort){if(t.modules.sort.tristate)o="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":o="desc";break;case"desc":o="asc";break;default:o=t.modules.sort.startingDir}n.table.options.columnHeaderSortMulti&&(e.shiftKey||e.ctrlKey)?(r=n.getSort(),i=r.findIndex(function(e){return e.field===t.getField()}),i>-1?(r[i].dir=o,i!=r.length-1&&(i=r.splice(i,1)[0],"none"!=o&&r.push(i))):"none"!=o&&r.push({column:t,dir:o}),n.setSort(r)):"none"==o?n.clear():n.setSort(t,o),n.table.rowManager.sorterRefresh(!n.sortList.length)}}))},Sort.prototype.hasChanged=function(){var t=this.changed;return this.changed=!1,t},Sort.prototype.getSort=function(){var t=this,e=[];return t.sortList.forEach(function(t){t.column&&e.push({column:t.column.getComponent(),field:t.column.getField(),dir:t.dir})}),e},Sort.prototype.setSort=function(t,e){var o=this,r=[];Array.isArray(t)||(t=[{column:t,dir:e}]),t.forEach(function(t){var e;e=o.table.columnManager.findColumn(t.column),e?(t.column=e,r.push(t),o.changed=!0):console.warn("Sort Warning - Sort field does not exist and is being ignored: ",t.column)}),o.sortList=r,this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.sort&&this.table.modules.persistence.save("sort")},Sort.prototype.clear=function(){this.setSort([])},Sort.prototype.findSorter=function(t){var e,o=this.table.rowManager.activeRows[0],r="string";if(o&&(o=o.getData(),t.getField()))switch(e=t.getFieldValue(o),void 0===e?"undefined":_typeof(e)){case"undefined":r="string";break;case"boolean":r="boolean";break;default:isNaN(e)||""===e?e.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)&&(r="alphanum"):r="number"}return this.sorters[r]},Sort.prototype.sort=function(t){var e,o=this;e=this.table.options.sortOrderReverse?o.sortList.slice().reverse():o.sortList,o.table.options.dataSorting&&o.table.options.dataSorting.call(o.table,o.getSort()),o.clearColumnHeaders(),o.table.options.ajaxSorting?e.forEach(function(t,e){o.setColumnHeader(t.column,t.dir)}):e.forEach(function(r,n){r.column&&r.column.modules.sort&&(r.column.modules.sort.sorter||(r.column.modules.sort.sorter=o.findSorter(r.column)),o._sortItem(t,r.column,r.dir,e,n)),o.setColumnHeader(r.column,r.dir)}),o.table.options.dataSorted&&o.table.options.dataSorted.call(o.table,o.getSort(),o.table.rowManager.getComponents("active"))},Sort.prototype.clearColumnHeaders=function(){this.table.columnManager.getRealColumns().forEach(function(t){t.modules.sort&&(t.modules.sort.dir="none",t.getElement().setAttribute("aria-sort","none"))})},Sort.prototype.setColumnHeader=function(t,e){t.modules.sort.dir=e,t.getElement().setAttribute("aria-sort",e)},Sort.prototype._sortItem=function(t,e,o,r,n){var i=this,s="function"==typeof e.modules.sort.params?e.modules.sort.params(e.getComponent(),o):e.modules.sort.params;t.sort(function(t,a){var l=i._sortRow(t,a,e,o,s);if(0===l&&n)for(var u=n-1;u>=0&&0===(l=i._sortRow(t,a,r[u].column,r[u].dir,s));u--);return l})},Sort.prototype._sortRow=function(t,e,o,r,n){var i,s,a="asc"==r?t:e,l="asc"==r?e:t;return t=o.getFieldValue(a.getData()),e=o.getFieldValue(l.getData()),t=void 0!==t?t:"",e=void 0!==e?e:"",i=a.getComponent(),s=l.getComponent(),o.modules.sort.sorter.call(this,t,e,i,s,o.getComponent(),r,n)},Sort.prototype.sorters={number:function(t,e,o,r,n,i,s){var a=s.alignEmptyValues,l=s.decimalSeparator||".",u=s.thousandSeparator||",",c=0;if(t=parseFloat(String(t).split(u).join("").split(l).join(".")),e=parseFloat(String(e).split(u).join("").split(l).join(".")),isNaN(t))c=isNaN(e)?0:-1;else{if(!isNaN(e))return t-e;c=1}return("top"===a&&"desc"===i||"bottom"===a&&"asc"===i)&&(c*=-1),c},string:function(t,e,o,r,n,i,s){var a,l=s.alignEmptyValues,u=0;if(t){if(e){switch(_typeof(s.locale)){case"boolean":s.locale&&(a=this.table.modules.localize.getLocale());break;case"string":a=s.locale}return String(t).toLowerCase().localeCompare(String(e).toLowerCase(),a)}u=1}else u=e?-1:0;return("top"===l&&"desc"===i||"bottom"===l&&"asc"===i)&&(u*=-1),u},date:function(t,e,o,r,n,i,s){return s.format||(s.format="DD/MM/YYYY"),this.sorters.datetime.call(this,t,e,o,r,n,i,s)},time:function(t,e,o,r,n,i,s){return s.format||(s.format="hh:mm"),this.sorters.datetime.call(this,t,e,o,r,n,i,s)},datetime:function(t,e,o,r,n,i,s){var a=s.format||"DD/MM/YYYY hh:mm:ss",l=s.alignEmptyValues,u=0;if("undefined"!=typeof moment){if(t=moment(t,a),e=moment(e,a),t.isValid()){if(e.isValid())return t-e;u=1}else u=e.isValid()?-1:0;return("top"===l&&"desc"===i||"bottom"===l&&"asc"===i)&&(u*=-1),u}console.error("Sort Error - 'datetime' sorter is dependant on moment.js")},boolean:function(t,e,o,r,n,i,s){return(!0===t||"true"===t||"True"===t||1===t?1:0)-(!0===e||"true"===e||"True"===e||1===e?1:0)},array:function(t,e,o,r,n,i,s){function a(t){switch(c){case"length":return t.length;case"sum":return t.reduce(function(t,e){return t+e});case"max":return Math.max.apply(null,t);case"min":return Math.min.apply(null,t);case"avg":return t.reduce(function(t,e){return t+e})/t.length}}var l=0,u=0,c=s.type||"length",d=s.alignEmptyValues,m=0;if(Array.isArray(t)){if(Array.isArray(e))return l=t?a(t):0,u=e?a(e):0,l-u;d=1}else d=Array.isArray(e)?-1:0;return("top"===d&&"desc"===i||"bottom"===d&&"asc"===i)&&(m*=-1),m},exists:function(t,e,o,r,n,i,s){return(void 0===t?0:1)-(void 0===e?0:1)},alphanum:function(t,e,o,r,n,i,s){var a,l,u,c,d,m=0,f=/(\d+)|(\D+)/g,p=/\d/,h=s.alignEmptyValues,g=0;if(t||0===t){if(e||0===e){if(isFinite(t)&&isFinite(e))return t-e;if(a=String(t).toLowerCase(),l=String(e).toLowerCase(),a===l)return 0;if(!p.test(a)||!p.test(l))return a>l?1:-1;for(a=a.match(f),l=l.match(f),d=a.length>l.length?l.length:a.length;m<d;)if(u=a[m],c=l[m++],u!==c)return isFinite(u)&&isFinite(c)?("0"===u.charAt(0)&&(u="."+u),"0"===c.charAt(0)&&(c="."+c),u-c):u>c?1:-1;return a.length>l.length}g=1}else g=e||0===e?-1:0;return("top"===h&&"desc"===i||"bottom"===h&&"asc"===i)&&(g*=-1),g}},Tabulator.prototype.registerModule("sort",Sort);
\ No newline at end of file
index 3bf46d1..9175079 100644 (file)
@@ -1,6 +1,6 @@
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 
 var Validate = function Validate(table) {
        this.table = table;
@@ -48,8 +48,6 @@ Validate.prototype._extractValidator = function (value) {
                                type = value;
                        }
 
-                       console.log("v", value, type, params);
-
                        return this._buildValidator(type, params);
                        break;
 
index 259a30f..f450540 100644 (file)
@@ -1,2 +1,2 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Validate=function(t){this.table=t};Validate.prototype.initializeColumn=function(t){var n,i=this,o=[];t.definition.validator&&(Array.isArray(t.definition.validator)?t.definition.validator.forEach(function(t){(n=i._extractValidator(t))&&o.push(n)}):(n=this._extractValidator(t.definition.validator))&&o.push(n),t.modules.validate=!!o.length&&o)},Validate.prototype._extractValidator=function(t){var n,i,o;switch(void 0===t?"undefined":_typeof(t)){case"string":return o=t.indexOf(":"),o>-1?(n=t.substring(0,o),i=t.substring(o+1)):n=t,console.log("v",t,n,i),this._buildValidator(n,i);case"function":return this._buildValidator(t);case"object":return this._buildValidator(t.type,t.parameters)}},Validate.prototype._buildValidator=function(t,n){var i="function"==typeof t?t:this.validators[t];return i?{type:"function"==typeof t?"function":t,func:i,params:n}:(console.warn("Validator Setup Error - No matching validator found:",t),!1)},Validate.prototype.validate=function(t,n,i){var o=this,r=[];return t&&t.forEach(function(t){t.func.call(o,n,i,t.params)||r.push({type:t.type,parameters:t.params})}),!r.length||r},Validate.prototype.validators={integer:function(t,n,i){return""===n||null===n||void 0===n||"number"==typeof(n=Number(n))&&isFinite(n)&&Math.floor(n)===n},float:function(t,n,i){return""===n||null===n||void 0===n||"number"==typeof(n=Number(n))&&isFinite(n)&&n%1!=0},numeric:function(t,n,i){return""===n||null===n||void 0===n||!isNaN(n)},string:function(t,n,i){return""===n||null===n||void 0===n||isNaN(n)},max:function(t,n,i){return""===n||null===n||void 0===n||parseFloat(n)<=i},min:function(t,n,i){return""===n||null===n||void 0===n||parseFloat(n)>=i},minLength:function(t,n,i){return""===n||null===n||void 0===n||String(n).length>=i},maxLength:function(t,n,i){return""===n||null===n||void 0===n||String(n).length<=i},in:function(t,n,i){return""===n||null===n||void 0===n||("string"==typeof i&&(i=i.split("|")),""===n||i.indexOf(n)>-1)},regex:function(t,n,i){return""===n||null===n||void 0===n||new RegExp(i).test(n)},unique:function(t,n,i){if(""===n||null===n||void 0===n)return!0;var o=!0,r=t.getData(),e=t.getColumn()._getSelf();return this.table.rowManager.rows.forEach(function(t){var i=t.getData();i!==r&&n==e.getFieldValue(i)&&(o=!1)}),o},required:function(t,n,i){return""!==n&&null!==n&&void 0!==n}},Tabulator.prototype.registerModule("validate",Validate);
\ No newline at end of file
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Validate=function(t){this.table=t};Validate.prototype.initializeColumn=function(t){var n,i=this,r=[];t.definition.validator&&(Array.isArray(t.definition.validator)?t.definition.validator.forEach(function(t){(n=i._extractValidator(t))&&r.push(n)}):(n=this._extractValidator(t.definition.validator))&&r.push(n),t.modules.validate=!!r.length&&r)},Validate.prototype._extractValidator=function(t){var n,i,r;switch(void 0===t?"undefined":_typeof(t)){case"string":return r=t.indexOf(":"),r>-1?(n=t.substring(0,r),i=t.substring(r+1)):n=t,this._buildValidator(n,i);case"function":return this._buildValidator(t);case"object":return this._buildValidator(t.type,t.parameters)}},Validate.prototype._buildValidator=function(t,n){var i="function"==typeof t?t:this.validators[t];return i?{type:"function"==typeof t?"function":t,func:i,params:n}:(console.warn("Validator Setup Error - No matching validator found:",t),!1)},Validate.prototype.validate=function(t,n,i){var r=this,o=[];return t&&t.forEach(function(t){t.func.call(r,n,i,t.params)||o.push({type:t.type,parameters:t.params})}),!o.length||o},Validate.prototype.validators={integer:function(t,n,i){return""===n||null===n||void 0===n||"number"==typeof(n=Number(n))&&isFinite(n)&&Math.floor(n)===n},float:function(t,n,i){return""===n||null===n||void 0===n||"number"==typeof(n=Number(n))&&isFinite(n)&&n%1!=0},numeric:function(t,n,i){return""===n||null===n||void 0===n||!isNaN(n)},string:function(t,n,i){return""===n||null===n||void 0===n||isNaN(n)},max:function(t,n,i){return""===n||null===n||void 0===n||parseFloat(n)<=i},min:function(t,n,i){return""===n||null===n||void 0===n||parseFloat(n)>=i},minLength:function(t,n,i){return""===n||null===n||void 0===n||String(n).length>=i},maxLength:function(t,n,i){return""===n||null===n||void 0===n||String(n).length<=i},in:function(t,n,i){return""===n||null===n||void 0===n||("string"==typeof i&&(i=i.split("|")),""===n||i.indexOf(n)>-1)},regex:function(t,n,i){return""===n||null===n||void 0===n||new RegExp(i).test(n)},unique:function(t,n,i){if(""===n||null===n||void 0===n)return!0;var r=!0,o=t.getData(),e=t.getColumn()._getSelf();return this.table.rowManager.rows.forEach(function(t){var i=t.getData();i!==o&&n==e.getFieldValue(i)&&(r=!1)}),r},required:function(t,n,i){return""!==n&&null!==n&&void 0!==n}},Tabulator.prototype.registerModule("validate",Validate);
\ No newline at end of file
index e86fd3a..e8f7179 100644 (file)
@@ -1,6 +1,6 @@
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 
 ;(function (global, factory) {
        if ((typeof exports === 'undefined' ? 'undefined' : _typeof(exports)) === 'object' && typeof module !== 'undefined') {
@@ -483,6 +483,8 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                                this.headersElement.appendChild(column.getElement());
                        }
+
+                       column.columnRendered();
                }
 
                return column;
@@ -535,7 +537,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                self.columns.forEach(function (column) {
 
-                       column.verticalAlign(self.table.options.columnVertAlign, minHeight);
+                       column.verticalAlign(self.table.options.columnHeaderVertAlign, minHeight);
                });
 
                self.rowManager.adjustTableSize();
@@ -766,7 +768,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        this.table.options.columnMoved.call(this.table, from.getComponent(), this.table.columnManager.getComponents());
                }
 
-               if (this.table.options.persistentLayout && this.table.modExists("persistence", true)) {
+               if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.columns) {
 
                        this.table.modules.persistence.save("columns");
                }
@@ -957,31 +959,37 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        ColumnManager.prototype.addColumn = function (definition, before, nextToColumn) {
+               var _this3 = this;
 
-               var column = this._addColumn(definition, before, nextToColumn);
+               return new Promise(function (resolve, reject) {
 
-               this._reIndexColumns();
+                       var column = _this3._addColumn(definition, before, nextToColumn);
 
-               if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+                       _this3._reIndexColumns();
 
-                       this.table.modules.responsiveLayout.initialize();
-               }
+                       if (_this3.table.options.responsiveLayout && _this3.table.modExists("responsiveLayout", true)) {
 
-               if (this.table.modExists("columnCalcs")) {
+                               _this3.table.modules.responsiveLayout.initialize();
+                       }
 
-                       this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
-               }
+                       if (_this3.table.modExists("columnCalcs")) {
 
-               this.redraw();
+                               _this3.table.modules.columnCalcs.recalc(_this3.table.rowManager.activeRows);
+                       }
 
-               if (this.table.modules.layout.getMode() != "fitColumns") {
+                       _this3.redraw();
 
-                       column.reinitializeWidth();
-               }
+                       if (_this3.table.modules.layout.getMode() != "fitColumns") {
 
-               this._verticalAlignHeaders();
+                               column.reinitializeWidth();
+                       }
 
-               this.table.rowManager.reinitialize();
+                       _this3._verticalAlignHeaders();
+
+                       _this3.table.rowManager.reinitialize();
+
+                       resolve(column);
+               });
        };
 
        //remove column from system
@@ -1045,7 +1053,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        this.table.rowManager.reinitialize();
                }
 
-               if (this.table.modules.layout.getMode() == "fitColumns") {
+               if (["fitColumns", "fitDataStretch"].indexOf(this.table.modules.layout.getMode()) > -1) {
 
                        this.table.modules.layout.layout();
                } else {
@@ -1074,7 +1082,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                if (force) {
 
-                       if (this.table.options.persistentLayout && this.table.modExists("persistence", true)) {
+                       if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.columns) {
 
                                this.table.modules.persistence.save("columns");
                        }
@@ -1170,7 +1178,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        ColumnComponent.prototype.delete = function () {
 
-               this._column.delete();
+               return this._column.delete();
        };
 
        ColumnComponent.prototype.getSubColumns = function () {
@@ -1259,6 +1267,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                return prevCol ? prevCol.getComponent() : false;
        };
 
+       ColumnComponent.prototype.updateDefinition = function (updates) {
+
+               return this._column.updateDefinition(updates);
+       };
+
        var Column = function Column(def, parent) {
 
                var self = this;
@@ -1298,6 +1311,8 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                this.setFieldValue = "";
 
+               this.titleFormatterRendered = false;
+
                this.setField(this.definition.field);
 
                if (this.table.options.invalidOptionWarnings) {
@@ -1375,6 +1390,8 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                }
 
                this._buildHeader();
+
+               this.bindModuleColumns();
        };
 
        Column.prototype.createElement = function () {
@@ -1400,13 +1417,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Column.prototype.checkDefinition = function () {
-               var _this3 = this;
+               var _this4 = this;
 
                Object.keys(this.definition).forEach(function (key) {
 
-                       if (_this3.defaultOptionList.indexOf(key) === -1) {
+                       if (_this4.defaultOptionList.indexOf(key) === -1) {
 
-                               console.warn("Invalid column definition option in '" + (_this3.field || _this3.definition.title) + "' column:", key);
+                               console.warn("Invalid column definition option in '" + (_this4.field || _this4.definition.title) + "' column:", key);
                        }
                });
        };
@@ -1580,6 +1597,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        self.table.modules.columnCalcs.initializeColumn(self);
                }
 
+               //handle persistence
+
+               if (self.table.modExists("persistence") && self.table.modules.persistence.config.columns) {
+
+                       self.table.modules.persistence.initializeColumn(self);
+               }
+
                //update header tooltip on mouse enter
 
                self.element.addEventListener("mouseenter", function (e) {
@@ -1954,13 +1978,19 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Column.prototype._formatColumnHeaderTitle = function (el, title) {
+               var _this5 = this;
 
-               var formatter, contents, params, mockCell;
+               var formatter, contents, params, mockCell, onRendered;
 
                if (this.definition.titleFormatter && this.table.modExists("format")) {
 
                        formatter = this.table.modules.format.getFormatter(this.definition.titleFormatter);
 
+                       onRendered = function onRendered(callback) {
+
+                               _this5.titleFormatterRendered = callback;
+                       };
+
                        mockCell = {
 
                                getValue: function getValue() {
@@ -1979,7 +2009,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        params = typeof params === "function" ? params() : params;
 
-                       contents = formatter.call(this.table.modules.format, mockCell, params);
+                       contents = formatter.call(this.table.modules.format, mockCell, params, onRendered);
 
                        switch (typeof contents === 'undefined' ? 'undefined' : _typeof(contents)) {
 
@@ -2019,6 +2049,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        //build header element for column group
 
        Column.prototype._buildGroupHeader = function () {
+               var _this6 = this;
 
                this.element.classList.add("tabulator-col-group");
 
@@ -2026,6 +2057,18 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                this.element.setAttribute("aria-title", this.definition.title);
 
+               //asign additional css classes to column header
+
+               if (this.definition.cssClass) {
+
+                       var classeNames = this.definition.cssClass.split(" ");
+
+                       classeNames.forEach(function (className) {
+
+                               _this6.element.classList.add(className);
+                       });
+               }
+
                this.element.appendChild(this.groupElement);
        };
 
@@ -2167,6 +2210,16 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                });
        };
 
+       Column.prototype.bindModuleColumns = function () {
+
+               //check if rownum formatter is being used on a column
+
+               if (this.definition.formatter == "rownum") {
+
+                       this.table.rowManager.rowNumColumn = this;
+               }
+       };
+
        //// Retreive Column Information ////
 
 
@@ -2328,7 +2381,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        this.table.columnManager._verticalAlignHeaders();
 
-                       if (this.table.options.persistentLayout && this.table.modExists("responsiveLayout", true)) {
+                       if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.columns) {
 
                                this.table.modules.persistence.save("columns");
                        }
@@ -2372,7 +2425,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                cell.hide();
                        });
 
-                       if (this.table.options.persistentLayout && this.table.modExists("persistence", true)) {
+                       if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.columns) {
 
                                this.table.modules.persistence.save("columns");
                        }
@@ -2513,25 +2566,39 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Column.prototype.delete = function () {
+               var _this7 = this;
 
-               if (this.isGroup) {
+               return new Promise(function (resolve, reject) {
 
-                       this.columns.forEach(function (column) {
+                       if (_this7.isGroup) {
 
-                               column.delete();
-                       });
-               }
+                               _this7.columns.forEach(function (column) {
 
-               var cellCount = this.cells.length;
+                                       column.delete();
+                               });
+                       }
 
-               for (var i = 0; i < cellCount; i++) {
+                       var cellCount = _this7.cells.length;
 
-                       this.cells[0].delete();
-               }
+                       for (var i = 0; i < cellCount; i++) {
+
+                               _this7.cells[0].delete();
+                       }
 
-               this.element.parentNode.removeChild(this.element);
+                       _this7.element.parentNode.removeChild(_this7.element);
 
-               this.table.columnManager.deregisterColumn(this);
+                       _this7.table.columnManager.deregisterColumn(_this7);
+
+                       resolve();
+               });
+       };
+
+       Column.prototype.columnRendered = function () {
+
+               if (this.titleFormatterRendered) {
+
+                       this.titleFormatterRendered();
+               }
        };
 
        //////////////// Cell Management /////////////////
@@ -2643,6 +2710,46 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                }
        };
 
+       Column.prototype.updateDefinition = function (updates) {
+               var _this8 = this;
+
+               return new Promise(function (resolve, reject) {
+
+                       var definition;
+
+                       if (!_this8.isGroup) {
+
+                               definition = Object.assign({}, _this8.getDefinition());
+
+                               definition = Object.assign(definition, updates);
+
+                               _this8.table.columnManager.addColumn(definition, false, _this8).then(function (column) {
+
+                                       if (definition.field == _this8.field) {
+
+                                               _this8.field = false; //cleair field name to prevent deletion of duplicate column from arrays
+                                       }
+
+                                       _this8.delete().then(function () {
+
+                                               resolve(column.getComponent());
+                                       }).catch(function (err) {
+
+                                               reject(err);
+                                       });
+                               }).catch(function (err) {
+
+                                       reject(err);
+                               });
+                       } else {
+
+                               console.warn("Column Update Error - The updateDefintion function is only available on columns, not column groups");
+
+                               reject("Column Update Error - The updateDefintion function is only available on columns, not column groups");
+                       }
+               });
+       };
+
        Column.prototype.deleteCell = function (cell) {
 
                var index = this.cells.indexOf(cell);
@@ -2731,6 +2838,16 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                this.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed
 
                this.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed
+
+
+               this.rowNumColumn = false; //hold column component for row number column
+
+
+               this.redrawBlock = false; //prevent redraws to allow multiple data manipulations becore continuing
+
+               this.redrawBlockRestoreConfig = false; //store latest redraw function calls for when redraw is needed
+
+               this.redrawBlockRederInPosition = false; //store latest redraw function calls for when redraw is needed
        };
 
        //////////////// Setup Functions /////////////////
@@ -2823,6 +2940,8 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                                        self.table.modules.columnCalcs.scrollHorizontal(left);
                                }
+
+                               self.table.options.scrollHorizontal(left);
                        }
 
                        self.scrollLeft = left;
@@ -2850,6 +2969,8 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                                                self.table.modules.ajax.nextPage(self.element.scrollHeight - self.element.clientHeight - top);
                                        }
+
+                                       self.table.options.scrollVertical(top);
                                } else {
 
                                        self.scrollTop = top;
@@ -2931,7 +3052,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        RowManager.prototype.scrollToRow = function (row, position, ifVisible) {
-               var _this4 = this;
+               var _this9 = this;
 
                var rowIndex = this.getDisplayRows().indexOf(row),
                    rowEl = row.getElement(),
@@ -2944,29 +3065,29 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                                if (typeof position === "undefined") {
 
-                                       position = _this4.table.options.scrollToRowPosition;
+                                       position = _this9.table.options.scrollToRowPosition;
                                }
 
                                if (typeof ifVisible === "undefined") {
 
-                                       ifVisible = _this4.table.options.scrollToRowIfVisible;
+                                       ifVisible = _this9.table.options.scrollToRowIfVisible;
                                }
 
                                if (position === "nearest") {
 
-                                       switch (_this4.renderMode) {
+                                       switch (_this9.renderMode) {
 
                                                case "classic":
 
                                                        rowTop = Tabulator.prototype.helpers.elOffset(rowEl).top;
 
-                                                       position = Math.abs(_this4.element.scrollTop - rowTop) > Math.abs(_this4.element.scrollTop + _this4.element.clientHeight - rowTop) ? "bottom" : "top";
+                                                       position = Math.abs(_this9.element.scrollTop - rowTop) > Math.abs(_this9.element.scrollTop + _this9.element.clientHeight - rowTop) ? "bottom" : "top";
 
                                                        break;
 
                                                case "virtual":
 
-                                                       position = Math.abs(_this4.vDomTop - rowIndex) > Math.abs(_this4.vDomBottom - rowIndex) ? "bottom" : "top";
+                                                       position = Math.abs(_this9.vDomTop - rowIndex) > Math.abs(_this9.vDomBottom - rowIndex) ? "bottom" : "top";
 
                                                        break;
 
@@ -2979,9 +3100,9 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                                        if (Tabulator.prototype.helpers.elVisible(rowEl)) {
 
-                                               offset = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this4.element).top;
+                                               offset = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this9.element).top;
 
-                                               if (offset > 0 && offset < _this4.element.clientHeight - rowEl.offsetHeight) {
+                                               if (offset > 0 && offset < _this9.element.clientHeight - rowEl.offsetHeight) {
 
                                                        return false;
                                                }
@@ -2990,17 +3111,17 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                                //scroll to row
 
-                               switch (_this4.renderMode) {
+                               switch (_this9.renderMode) {
 
                                        case "classic":
 
-                                               _this4.element.scrollTop = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this4.element).top + _this4.element.scrollTop;
+                                               _this9.element.scrollTop = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this9.element).top + _this9.element.scrollTop;
 
                                                break;
 
                                        case "virtual":
 
-                                               _this4._virtualRenderFill(rowIndex, true);
+                                               _this9._virtualRenderFill(rowIndex, true);
 
                                                break;
 
@@ -3014,24 +3135,24 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                                        case "center":
 
-                                               if (_this4.element.scrollHeight - _this4.element.scrollTop == _this4.element.clientHeight) {
+                                               if (_this9.element.scrollHeight - _this9.element.scrollTop == _this9.element.clientHeight) {
 
-                                                       _this4.element.scrollTop = _this4.element.scrollTop + (rowEl.offsetTop - _this4.element.scrollTop) - (_this4.element.scrollHeight - rowEl.offsetTop) / 2;
+                                                       _this9.element.scrollTop = _this9.element.scrollTop + (rowEl.offsetTop - _this9.element.scrollTop) - (_this9.element.scrollHeight - rowEl.offsetTop) / 2;
                                                } else {
 
-                                                       _this4.element.scrollTop = _this4.element.scrollTop - _this4.element.clientHeight / 2;
+                                                       _this9.element.scrollTop = _this9.element.scrollTop - _this9.element.clientHeight / 2;
                                                }
 
                                                break;
 
                                        case "bottom":
 
-                                               if (_this4.element.scrollHeight - _this4.element.scrollTop == _this4.element.clientHeight) {
+                                               if (_this9.element.scrollHeight - _this9.element.scrollTop == _this9.element.clientHeight) {
 
-                                                       _this4.element.scrollTop = _this4.element.scrollTop - (_this4.element.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;
+                                                       _this9.element.scrollTop = _this9.element.scrollTop - (_this9.element.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;
                                                } else {
 
-                                                       _this4.element.scrollTop = _this4.element.scrollTop - _this4.element.clientHeight + rowEl.offsetHeight;
+                                                       _this9.element.scrollTop = _this9.element.scrollTop - _this9.element.clientHeight + rowEl.offsetHeight;
                                                }
 
                                                break;
@@ -3052,34 +3173,34 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
 
        RowManager.prototype.setData = function (data, renderInPosition) {
-               var _this5 = this;
+               var _this10 = this;
 
                var self = this;
 
                return new Promise(function (resolve, reject) {
 
-                       if (renderInPosition && _this5.getDisplayRows().length) {
+                       if (renderInPosition && _this10.getDisplayRows().length) {
 
                                if (self.table.options.pagination) {
 
                                        self._setDataActual(data, true);
                                } else {
 
-                                       _this5.reRenderInPosition(function () {
+                                       _this10.reRenderInPosition(function () {
 
                                                self._setDataActual(data);
                                        });
                                }
                        } else {
 
-                               if (_this5.table.options.autoColumns) {
+                               if (_this10.table.options.autoColumns) {
 
-                                       _this5.table.columnManager.generateColumnsFromRowData(data);
+                                       _this10.table.columnManager.generateColumnsFromRowData(data);
                                }
 
-                               _this5.resetScroll();
+                               _this10.resetScroll();
 
-                               _this5._setDataActual(data);
+                               _this10._setDataActual(data);
                        }
 
                        resolve();
@@ -3214,7 +3335,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        //add multiple rows
 
        RowManager.prototype.addRows = function (data, pos, index) {
-               var _this6 = this;
+               var _this11 = this;
 
                var self = this,
                    length = 0,
@@ -3222,7 +3343,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                return new Promise(function (resolve, reject) {
 
-                       pos = _this6.findAddRowPos(pos);
+                       pos = _this11.findAddRowPos(pos);
 
                        if (!Array.isArray(data)) {
 
@@ -3243,22 +3364,22 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                rows.push(row);
                        });
 
-                       if (_this6.table.options.groupBy && _this6.table.modExists("groupRows")) {
+                       if (_this11.table.options.groupBy && _this11.table.modExists("groupRows")) {
 
-                               _this6.table.modules.groupRows.updateGroupRows(true);
-                       } else if (_this6.table.options.pagination && _this6.table.modExists("page")) {
+                               _this11.table.modules.groupRows.updateGroupRows(true);
+                       } else if (_this11.table.options.pagination && _this11.table.modExists("page")) {
 
-                               _this6.refreshActiveData(false, false, true);
+                               _this11.refreshActiveData(false, false, true);
                        } else {
 
-                               _this6.reRenderInPosition();
+                               _this11.reRenderInPosition();
                        }
 
                        //recalc column calculations if present
 
-                       if (_this6.table.modExists("columnCalcs")) {
+                       if (_this11.table.modExists("columnCalcs")) {
 
-                               _this6.table.modules.columnCalcs.recalc(_this6.table.rowManager.activeRows);
+                               _this11.table.modules.columnCalcs.recalc(_this11.table.rowManager.activeRows);
                        }
 
                        resolve(rows);
@@ -3590,10 +3711,8 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        RowManager.prototype.getData = function (active, transform) {
 
-               var self = this,
-                   output = [];
-
-               var rows = active ? self.activeRows : self.rows;
+               var output = [],
+                   rows = this.getRows(active);
 
                rows.forEach(function (row) {
 
@@ -3605,10 +3724,8 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        RowManager.prototype.getComponents = function (active) {
 
-               var self = this,
-                   output = [];
-
-               var rows = active ? self.activeRows : self.rows;
+               var output = [],
+                   rows = this.getRows(active);
 
                rows.forEach(function (row) {
 
@@ -3620,7 +3737,9 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        RowManager.prototype.getDataCount = function (active) {
 
-               return active ? this.activeRows.length : this.rows.length;
+               var rows = this.getRows(active);
+
+               return rows.length;
        };
 
        RowManager.prototype._genRemoteRequest = function () {
@@ -3748,204 +3867,240 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        //set active data set
 
        RowManager.prototype.refreshActiveData = function (stage, skipStage, renderInPosition) {
+               var _this12 = this;
 
                var self = this,
                    table = this.table,
+                   cascadeOrder = ["all", "filter", "sort", "display", "freeze", "group", "tree", "page"],
                    displayIndex;
 
-               if (self.table.modExists("edit")) {
+               if (this.redrawBlock) {
 
-                       self.table.modules.edit.cancelEdit();
-               }
+                       if (!this.redrawBlockRestoreConfig || cascadeOrder.indexOf(stage) < cascadeOrder.indexOf(this.redrawBlockRestoreConfig.stage)) {
 
-               if (!stage) {
+                               this.redrawBlockRestoreConfig = {
 
-                       stage = "all";
-               }
+                                       stage: stage,
 
-               if (table.options.selectable && !table.options.selectablePersistence && table.modExists("selectRow")) {
+                                       skipStage: skipStage,
 
-                       table.modules.selectRow.deselectRows();
-               }
+                                       renderInPosition: renderInPosition
 
-               //cascade through data refresh stages
+                               };
+                       }
 
-               switch (stage) {
+                       return;
+               } else {
 
-                       case "all":
+                       if (self.table.modExists("edit")) {
 
-                       case "filter":
+                               self.table.modules.edit.cancelEdit();
+                       }
 
-                               if (!skipStage) {
+                       if (!stage) {
 
-                                       if (table.modExists("filter")) {
+                               stage = "all";
+                       }
 
-                                               self.setActiveRows(table.modules.filter.filter(self.rows));
-                                       } else {
+                       if (table.options.selectable && !table.options.selectablePersistence && table.modExists("selectRow")) {
 
-                                               self.setActiveRows(self.rows.slice(0));
-                                       }
-                               } else {
+                               table.modules.selectRow.deselectRows();
+                       }
 
-                                       skipStage = false;
-                               }
+                       //cascade through data refresh stages
 
-                       case "sort":
+                       switch (stage) {
 
-                               if (!skipStage) {
+                               case "all":
 
-                                       if (table.modExists("sort")) {
+                               case "filter":
 
-                                               table.modules.sort.sort(this.activeRows);
-                                       }
-                               } else {
+                                       if (!skipStage) {
 
-                                       skipStage = false;
-                               }
+                                               if (table.modExists("filter")) {
 
-                       //generic stage to allow for pipeline trigger after the data manipulation stage
+                                                       self.setActiveRows(table.modules.filter.filter(self.rows));
+                                               } else {
 
-                       case "display":
+                                                       self.setActiveRows(self.rows.slice(0));
+                                               }
+                                       } else {
 
-                               this.resetDisplayRows();
+                                               skipStage = false;
+                                       }
 
-                       case "freeze":
+                               case "sort":
 
-                               if (!skipStage) {
+                                       if (!skipStage) {
 
-                                       if (this.table.modExists("frozenRows")) {
+                                               if (table.modExists("sort")) {
+
+                                                       table.modules.sort.sort(this.activeRows);
+                                               }
+                                       } else {
 
-                                               if (table.modules.frozenRows.isFrozen()) {
+                                               skipStage = false;
+                                       }
 
-                                                       if (!table.modules.frozenRows.getDisplayIndex()) {
+                                       //regenerate row numbers for row number formatter if in use
 
-                                                               table.modules.frozenRows.setDisplayIndex(this.getNextDisplayIndex());
-                                                       }
+                                       if (this.rowNumColumn) {
 
-                                                       displayIndex = table.modules.frozenRows.getDisplayIndex();
+                                               this.activeRows.forEach(function (row) {
 
-                                                       displayIndex = self.setDisplayRows(table.modules.frozenRows.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
+                                                       var cell = row.getCell(_this12.rowNumColumn);
 
-                                                       if (displayIndex !== true) {
+                                                       if (cell) {
 
-                                                               table.modules.frozenRows.setDisplayIndex(displayIndex);
+                                                               cell._generateContents();
                                                        }
-                                               }
+                                               });
                                        }
-                               } else {
 
-                                       skipStage = false;
-                               }
+                               //generic stage to allow for pipeline trigger after the data manipulation stage
 
-                       case "group":
+                               case "display":
 
-                               if (!skipStage) {
+                                       this.resetDisplayRows();
 
-                                       if (table.options.groupBy && table.modExists("groupRows")) {
+                               case "freeze":
 
-                                               if (!table.modules.groupRows.getDisplayIndex()) {
+                                       if (!skipStage) {
 
-                                                       table.modules.groupRows.setDisplayIndex(this.getNextDisplayIndex());
-                                               }
+                                               if (this.table.modExists("frozenRows")) {
 
-                                               displayIndex = table.modules.groupRows.getDisplayIndex();
+                                                       if (table.modules.frozenRows.isFrozen()) {
 
-                                               displayIndex = self.setDisplayRows(table.modules.groupRows.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
+                                                               if (!table.modules.frozenRows.getDisplayIndex()) {
+
+                                                                       table.modules.frozenRows.setDisplayIndex(this.getNextDisplayIndex());
+                                                               }
 
-                                               if (displayIndex !== true) {
+                                                               displayIndex = table.modules.frozenRows.getDisplayIndex();
 
-                                                       table.modules.groupRows.setDisplayIndex(displayIndex);
+                                                               displayIndex = self.setDisplayRows(table.modules.frozenRows.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
+
+                                                               if (displayIndex !== true) {
+
+                                                                       table.modules.frozenRows.setDisplayIndex(displayIndex);
+                                                               }
+                                                       }
                                                }
-                                       }
-                               } else {
+                                       } else {
 
-                                       skipStage = false;
-                               }
+                                               skipStage = false;
+                                       }
 
-                       case "tree":
+                               case "group":
 
-                               if (!skipStage) {
+                                       if (!skipStage) {
 
-                                       if (table.options.dataTree && table.modExists("dataTree")) {
+                                               if (table.options.groupBy && table.modExists("groupRows")) {
 
-                                               if (!table.modules.dataTree.getDisplayIndex()) {
+                                                       if (!table.modules.groupRows.getDisplayIndex()) {
 
-                                                       table.modules.dataTree.setDisplayIndex(this.getNextDisplayIndex());
-                                               }
+                                                               table.modules.groupRows.setDisplayIndex(this.getNextDisplayIndex());
+                                                       }
 
-                                               displayIndex = table.modules.dataTree.getDisplayIndex();
+                                                       displayIndex = table.modules.groupRows.getDisplayIndex();
 
-                                               displayIndex = self.setDisplayRows(table.modules.dataTree.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
+                                                       displayIndex = self.setDisplayRows(table.modules.groupRows.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
 
-                                               if (displayIndex !== true) {
+                                                       if (displayIndex !== true) {
 
-                                                       table.modules.dataTree.setDisplayIndex(displayIndex);
+                                                               table.modules.groupRows.setDisplayIndex(displayIndex);
+                                                       }
                                                }
+                                       } else {
+
+                                               skipStage = false;
                                        }
-                               } else {
 
-                                       skipStage = false;
-                               }
+                               case "tree":
 
-                               if (table.options.pagination && table.modExists("page") && !renderInPosition) {
+                                       if (!skipStage) {
 
-                                       if (table.modules.page.getMode() == "local") {
+                                               if (table.options.dataTree && table.modExists("dataTree")) {
 
-                                               table.modules.page.reset();
-                                       }
-                               }
+                                                       if (!table.modules.dataTree.getDisplayIndex()) {
 
-                       case "page":
+                                                               table.modules.dataTree.setDisplayIndex(this.getNextDisplayIndex());
+                                                       }
 
-                               if (!skipStage) {
+                                                       displayIndex = table.modules.dataTree.getDisplayIndex();
 
-                                       if (table.options.pagination && table.modExists("page")) {
+                                                       displayIndex = self.setDisplayRows(table.modules.dataTree.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
 
-                                               if (!table.modules.page.getDisplayIndex()) {
+                                                       if (displayIndex !== true) {
 
-                                                       table.modules.page.setDisplayIndex(this.getNextDisplayIndex());
+                                                               table.modules.dataTree.setDisplayIndex(displayIndex);
+                                                       }
                                                }
+                                       } else {
 
-                                               displayIndex = table.modules.page.getDisplayIndex();
+                                               skipStage = false;
+                                       }
+
+                                       if (table.options.pagination && table.modExists("page") && !renderInPosition) {
 
                                                if (table.modules.page.getMode() == "local") {
 
-                                                       table.modules.page.setMaxRows(this.getDisplayRows(displayIndex - 1).length);
+                                                       table.modules.page.reset();
                                                }
+                                       }
+
+                               case "page":
+
+                                       if (!skipStage) {
+
+                                               if (table.options.pagination && table.modExists("page")) {
+
+                                                       if (!table.modules.page.getDisplayIndex()) {
 
-                                               displayIndex = self.setDisplayRows(table.modules.page.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
+                                                               table.modules.page.setDisplayIndex(this.getNextDisplayIndex());
+                                                       }
+
+                                                       displayIndex = table.modules.page.getDisplayIndex();
 
-                                               if (displayIndex !== true) {
+                                                       if (table.modules.page.getMode() == "local") {
+
+                                                               table.modules.page.setMaxRows(this.getDisplayRows(displayIndex - 1).length);
+                                                       }
+
+                                                       displayIndex = self.setDisplayRows(table.modules.page.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
+
+                                                       if (displayIndex !== true) {
 
-                                                       table.modules.page.setDisplayIndex(displayIndex);
+                                                               table.modules.page.setDisplayIndex(displayIndex);
+                                                       }
                                                }
-                                       }
-                               } else {
+                                       } else {
 
-                                       skipStage = false;
-                               }
+                                               skipStage = false;
+                                       }
 
-               }
+                       }
 
-               if (Tabulator.prototype.helpers.elVisible(self.element)) {
+                       if (Tabulator.prototype.helpers.elVisible(self.element)) {
 
-                       if (renderInPosition) {
+                               if (renderInPosition) {
 
-                               self.reRenderInPosition();
-                       } else {
+                                       self.reRenderInPosition();
+                               } else {
 
-                               self.renderTable();
+                                       self.renderTable();
 
-                               if (table.options.layoutColumnsOnNewData) {
+                                       if (table.options.layoutColumnsOnNewData) {
 
-                                       self.table.columnManager.redraw(true);
+                                               self.table.columnManager.redraw(true);
+                                       }
                                }
                        }
-               }
 
-               if (table.modExists("columnCalcs")) {
+                       if (table.modExists("columnCalcs")) {
 
-                       table.modules.columnCalcs.recalc(this.activeRows);
+                               table.modules.columnCalcs.recalc(this.activeRows);
+                       }
                }
        };
 
@@ -4049,6 +4204,14 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                                } else {
 
                                                        topFound = true;
+
+                                                       if (bottomEdge - rows[i].getElement().offsetTop >= 0) {
+
+                                                               bottomRow = i;
+                                                       } else {
+
+                                                               break;
+                                                       }
                                                }
                                        } else {
 
@@ -4083,9 +4246,31 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        //return only actual rows (not group headers etc)
 
-       RowManager.prototype.getRows = function () {
+       RowManager.prototype.getRows = function (active) {
+
+               var rows;
+
+               switch (active) {
+
+                       case "active":
+
+                               rows = this.activeRows;
+
+                               break;
+
+                       case "visible":
+
+                               rows = this.getVisibleRows(true);
 
-               return this.rows;
+                               break;
+
+                       default:
+
+                               rows = this.rows;
+
+               }
+
+               return rows;
        };
 
        ///////////////// Table Rendering /////////////////
@@ -4097,42 +4282,54 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                if (this.getRenderMode() == "virtual") {
 
-                       var scrollTop = this.element.scrollTop;
+                       if (this.redrawBlock) {
 
-                       var topRow = false;
+                               if (callback) {
 
-                       var topOffset = false;
+                                       callback();
+                               } else {
 
-                       var left = this.scrollLeft;
+                                       this.redrawBlockRederInPosition = true;
+                               }
+                       } else {
 
-                       var rows = this.getDisplayRows();
+                               var scrollTop = this.element.scrollTop;
 
-                       for (var i = this.vDomTop; i <= this.vDomBottom; i++) {
+                               var topRow = false;
 
-                               if (rows[i]) {
+                               var topOffset = false;
 
-                                       var diff = scrollTop - rows[i].getElement().offsetTop;
+                               var left = this.scrollLeft;
 
-                                       if (topOffset === false || Math.abs(diff) < topOffset) {
+                               var rows = this.getDisplayRows();
 
-                                               topOffset = diff;
+                               for (var i = this.vDomTop; i <= this.vDomBottom; i++) {
 
-                                               topRow = i;
-                                       } else {
+                                       if (rows[i]) {
 
-                                               break;
+                                               var diff = scrollTop - rows[i].getElement().offsetTop;
+
+                                               if (topOffset === false || Math.abs(diff) < topOffset) {
+
+                                                       topOffset = diff;
+
+                                                       topRow = i;
+                                               } else {
+
+                                                       break;
+                                               }
                                        }
                                }
-                       }
 
-                       if (callback) {
+                               if (callback) {
 
-                               callback();
-                       }
+                                       callback();
+                               }
 
-                       this._virtualRenderFill(topRow === false ? this.displayRowsCount - 1 : topRow, true, topOffset || 0);
+                               this._virtualRenderFill(topRow === false ? this.displayRowsCount - 1 : topRow, true, topOffset || 0);
 
-                       this.scrollHorizontal(left);
+                               this.scrollHorizontal(left);
+                       }
                } else {
 
                        this.renderTable();
@@ -4790,6 +4987,37 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                });
        };
 
+       //prevent table from being redrawn
+
+       RowManager.prototype.blockRedraw = function () {
+
+               this.redrawBlock = true;
+
+               this.redrawBlockRestoreConfig = false;
+       };
+
+       //restore table redrawing
+
+       RowManager.prototype.restoreRedraw = function () {
+
+               this.redrawBlock = false;
+
+               if (this.redrawBlockRestoreConfig) {
+
+                       this.refreshActiveData(this.redrawBlockRestoreConfig.stage, this.redrawBlockRestoreConfig.skipStage, this.redrawBlockRestoreConfig.renderInPosition);
+
+                       this.redrawBlockRestoreConfig = false;
+               } else {
+
+                       if (this.redrawBlockRederInPosition) {
+
+                               this.reRenderInPosition();
+                       }
+               }
+
+               this.redrawBlockRederInPosition = false;
+       };
+
        //redraw table
 
        RowManager.prototype.redraw = function (force) {
@@ -5045,6 +5273,8 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        var Row = function Row(data, parent) {
+               var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "row";
+
 
                this.table = parent.table;
 
@@ -5052,7 +5282,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                this.data = {};
 
-               this.type = "row"; //type of element
+               this.type = type; //type of element
 
                this.element = this.createElement();
 
@@ -5130,6 +5360,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        self.table.modules.dataTree.initializeRow(this);
                }
 
+               //setup column colapse container
+
+               if (self.table.options.responsiveLayout === "collapse" && self.table.modExists("responsiveLayout")) {
+
+                       self.table.modules.responsiveLayout.initializeRow(this);
+               }
+
                //handle row click events
 
                if (self.table.options.rowClick) {
@@ -5317,7 +5554,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                self.table.modules.dataTree.layoutRow(this);
                        }
 
-                       //setup movable rows
+                       //setup column colapse container
 
                        if (self.table.options.responsiveLayout === "collapse" && self.table.modExists("responsiveLayout")) {
 
@@ -5497,7 +5734,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                if (this.table.modExists("mutator")) {
 
-                       data = this.table.modules.mutator.transformRow(data, "data");
+                       data = this.table.modules.mutator.transformRow(data, "data", data);
                }
 
                this.data = data;
@@ -5511,10 +5748,10 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        //update the rows data
 
        Row.prototype.updateData = function (data) {
-               var _this7 = this;
+               var _this13 = this;
 
-               var self = this,
-                   visible = Tabulator.prototype.helpers.elVisible(this.element);
+               var visible = Tabulator.prototype.helpers.elVisible(this.element),
+                   tempData = {};
 
                return new Promise(function (resolve, reject) {
 
@@ -5523,39 +5760,43 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                data = JSON.parse(data);
                        }
 
-                       if (_this7.table.options.reactiveData && _this7.table.modExists("reactiveData", true)) {
+                       if (_this13.table.options.reactiveData && _this13.table.modExists("reactiveData", true)) {
 
-                               _this7.table.modules.reactiveData.block();
+                               _this13.table.modules.reactiveData.block();
                        }
 
                        //mutate incomming data if needed
 
-                       if (self.table.modExists("mutator")) {
+                       if (_this13.table.modExists("mutator")) {
 
-                               data = self.table.modules.mutator.transformRow(data, "data", true);
+                               tempData = Object.assign(tempData, _this13.data);
+
+                               tempData = Object.assign(tempData, data);
+
+                               data = _this13.table.modules.mutator.transformRow(tempData, "data", data);
                        }
 
                        //set data
 
                        for (var attrname in data) {
 
-                               self.data[attrname] = data[attrname];
+                               _this13.data[attrname] = data[attrname];
                        }
 
-                       if (_this7.table.options.reactiveData && _this7.table.modExists("reactiveData", true)) {
+                       if (_this13.table.options.reactiveData && _this13.table.modExists("reactiveData", true)) {
 
-                               _this7.table.modules.reactiveData.unblock();
+                               _this13.table.modules.reactiveData.unblock();
                        }
 
                        //update affected cells only
 
                        for (var attrname in data) {
 
-                               var columns = _this7.table.columnManager.getColumnsByFieldRoot(attrname);
+                               var columns = _this13.table.columnManager.getColumnsByFieldRoot(attrname);
 
                                columns.forEach(function (column) {
 
-                                       var cell = _this7.getCell(column.getField());
+                                       var cell = _this13.getCell(column.getField());
 
                                        if (cell) {
 
@@ -5578,34 +5819,34 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        if (visible) {
 
-                               self.normalizeHeight();
+                               _this13.normalizeHeight();
 
-                               if (self.table.options.rowFormatter) {
+                               if (_this13.table.options.rowFormatter) {
 
-                                       self.table.options.rowFormatter(self.getComponent());
+                                       _this13.table.options.rowFormatter(_this13.getComponent());
                                }
                        } else {
 
-                               _this7.initialized = false;
+                               _this13.initialized = false;
 
-                               _this7.height = 0;
+                               _this13.height = 0;
 
-                               _this7.heightStyled = "";
+                               _this13.heightStyled = "";
                        }
 
-                       if (self.table.options.dataTree !== false && self.table.modExists("dataTree") && _this7.table.modules.dataTree.redrawNeeded(data)) {
+                       if (_this13.table.options.dataTree !== false && _this13.table.modExists("dataTree") && _this13.table.modules.dataTree.redrawNeeded(data)) {
 
-                               _this7.table.modules.dataTree.initializeRow(_this7);
+                               _this13.table.modules.dataTree.initializeRow(_this13);
 
-                               _this7.table.modules.dataTree.layoutRow(_this7);
+                               _this13.table.modules.dataTree.layoutRow(_this13);
 
-                               _this7.table.rowManager.refreshActiveData("tree", false, true);
+                               _this13.table.rowManager.refreshActiveData("tree", false, true);
                        }
 
-                       //self.reinitialize();
+                       //this.reinitialize();
 
 
-                       self.table.options.rowUpdated.call(_this7.table, self.getComponent());
+                       _this13.table.options.rowUpdated.call(_this13.table, _this13.getComponent());
 
                        resolve();
                });
@@ -5750,19 +5991,19 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
 
        Row.prototype.delete = function () {
-               var _this8 = this;
+               var _this14 = this;
 
                return new Promise(function (resolve, reject) {
 
                        var index, rows;
 
-                       if (_this8.table.options.history && _this8.table.modExists("history")) {
+                       if (_this14.table.options.history && _this14.table.modExists("history")) {
 
-                               if (_this8.table.options.groupBy && _this8.table.modExists("groupRows")) {
+                               if (_this14.table.options.groupBy && _this14.table.modExists("groupRows")) {
 
-                                       rows = _this8.getGroup().rows;
+                                       rows = _this14.getGroup().rows;
 
-                                       index = rows.indexOf(_this8);
+                                       index = rows.indexOf(_this14);
 
                                        if (index) {
 
@@ -5770,18 +6011,18 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                        }
                                } else {
 
-                                       index = _this8.table.rowManager.getRowIndex(_this8);
+                                       index = _this14.table.rowManager.getRowIndex(_this14);
 
                                        if (index) {
 
-                                               index = _this8.table.rowManager.rows[index - 1];
+                                               index = _this14.table.rowManager.rows[index - 1];
                                        }
                                }
 
-                               _this8.table.modules.history.action("rowDelete", _this8, { data: _this8.getData(), pos: !index, index: index });
+                               _this14.table.modules.history.action("rowDelete", _this14, { data: _this14.getData(), pos: !index, index: index });
                        }
 
-                       _this8.deleteActual();
+                       _this14.deleteActual();
 
                        resolve();
                });
@@ -5979,6 +6220,8 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                this.oldValue = null;
 
+               this.modules = {};
+
                this.height = null;
 
                this.width = null;
@@ -6682,7 +6925,10 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        Cell.prototype.delete = function () {
 
-               this.element.parentNode.removeChild(this.element);
+               if (!this.table.rowManager.redrawBlock) {
+
+                       this.element.parentNode.removeChild(this.element);
+               }
 
                this.element = false;
 
@@ -6966,6 +7212,8 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                this.browserSlow = false; //handle reduced functionality for slower browsers
 
+               this.browserMobile = false; //check if running on moble, prevent resize cancelling edit on keyboard appearence
+
 
                this.modules = {}; //hold all modules bound to this table
 
@@ -6993,7 +7241,9 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                columnMinWidth: 40, //minimum global width for a column
 
-               columnVertAlign: "top", //vertical alignment of column headers
+               columnHeaderVertAlign: "top", //vertical alignment of column headers
+
+               columnVertAlign: false, // DEPRECATED - Left to allow warning
 
 
                resizableColumns: true, //resizable columns
@@ -7161,16 +7411,22 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                virtualDomBuffer: 0, // set virtual DOM buffer size
 
 
-               persistentLayout: false, //store column layout in memory
+               persistentLayout: false, //DEPRICATED - REMOVE in 5.0
 
-               persistentSort: false, //store sorting in memory
+               persistentSort: false, //DEPRICATED - REMOVE in 5.0
 
-               persistentFilter: false, //store filters in memory
+               persistentFilter: false, //DEPRICATED - REMOVE in 5.0
 
                persistenceID: "", //key for persistent storage
 
                persistenceMode: true, //mode for storing persistence information
 
+               persistenceReaderFunc: false, //function for handling persistence data reading
+
+               persistenceWriterFunc: false, //function for handling persistence data writing
+
+
+               persistence: false,
 
                responsiveLayout: false, //responsive layout flags
 
@@ -7185,6 +7441,8 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                paginationSize: false, //set number of rows to a page
 
+               paginationInitialPage: 1, //initail page to show on load
+
                paginationButtonCount: 5, // set count of page button
 
                paginationSizeSelector: false, //add pagination size selector element
@@ -7448,7 +7706,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                historyUndo: function historyUndo() {},
 
-               historyRedo: function historyRedo() {}
+               historyRedo: function historyRedo() {},
+
+               //scroll callbacks
+
+               scrollHorizontal: function scrollHorizontal() {},
+
+               scrollVertical: function scrollVertical() {}
 
        };
 
@@ -7520,7 +7784,55 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        //convert depricated functionality to new functions
 
-       Tabulator.prototype._mapDepricatedFunctionality = function () {};
+       Tabulator.prototype._mapDepricatedFunctionality = function () {
+
+               //map depricated persistance setup options
+
+               if (this.options.persistentLayout || this.options.persistentSort || this.options.persistentFilter) {
+
+                       if (!this.options.persistence) {
+
+                               this.options.persistence = {};
+                       }
+               }
+
+               if (this.options.persistentLayout) {
+
+                       console.warn("persistentLayout option is deprecated, you should now use the persistence option");
+
+                       if (this.options.persistence !== true && typeof this.options.persistence.columns === "undefined") {
+
+                               this.options.persistence.columns = true;
+                       }
+               }
+
+               if (this.options.persistentSort) {
+
+                       console.warn("persistentSort option is deprecated, you should now use the persistence option");
+
+                       if (this.options.persistence !== true && typeof this.options.persistence.sort === "undefined") {
+
+                               this.options.persistence.sort = true;
+                       }
+               }
+
+               if (this.options.persistentFilter) {
+
+                       console.warn("persistentFilter option is deprecated, you should now use the persistence option");
+
+                       if (this.options.persistence !== true && typeof this.options.persistence.filter === "undefined") {
+
+                               this.options.persistence.filter = true;
+                       }
+               }
+
+               if (this.options.columnVertAlign) {
+
+                       console.warn("columnVertAlign option is deprecated, you should now use the columnHeaderVertAlign option");
+
+                       this.options.columnHeaderVertAlign = this.options.columnVertAlign;
+               }
+       };
 
        Tabulator.prototype._clearSelection = function () {
 
@@ -7594,7 +7906,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        //build tabulator element
 
        Tabulator.prototype._buildElement = function () {
-               var _this9 = this;
+               var _this15 = this;
 
                var element = this.element,
                    mod = this.modules,
@@ -7672,12 +7984,12 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        this.footerManager.activate();
                }
 
-               if ((options.persistentLayout || options.persistentSort || options.persistentFilter) && this.modExists("persistence", true)) {
+               if (options.persistence && this.modExists("persistence", true)) {
 
-                       mod.persistence.initialize(options.persistenceMode, options.persistenceID);
+                       mod.persistence.initialize();
                }
 
-               if (options.persistentLayout && this.modExists("persistence", true)) {
+               if (options.persistence && this.modExists("persistence", true) && mod.persistence.config.columns) {
 
                        options.columns = mod.persistence.load("columns", options.columns);
                }
@@ -7709,11 +8021,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        this.modules.frozenRows.initialize();
                }
 
-               if ((options.persistentSort || options.initialSort) && this.modExists("sort", true)) {
+               if ((options.persistence && this.modExists("persistence", true) && mod.persistence.config.sort || options.initialSort) && this.modExists("sort", true)) {
 
                        var sorters = [];
 
-                       if (options.persistentSort && this.modExists("persistence", true)) {
+                       if (options.persistence && this.modExists("persistence", true) && mod.persistence.config.sort) {
 
                                sorters = mod.persistence.load("sort");
 
@@ -7729,11 +8041,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        mod.sort.setSort(sorters);
                }
 
-               if ((options.persistentFilter || options.initialFilter) && this.modExists("filter", true)) {
+               if ((options.persistence && this.modExists("persistence", true) && mod.persistence.config.filter || options.initialFilter) && this.modExists("filter", true)) {
 
                        var filters = [];
 
-                       if (options.persistentFilter && this.modExists("persistence", true)) {
+                       if (options.persistence && this.modExists("persistence", true) && mod.persistence.config.filter) {
 
                                filters = mod.persistence.load("filter");
 
@@ -7753,7 +8065,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        options.initialHeaderFilter.forEach(function (item) {
 
-                               var column = _this9.columnManager.findColumn(item.field);
+                               var column = _this15.columnManager.findColumn(item.field);
 
                                if (column) {
 
@@ -7827,17 +8139,30 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                                        if ((self.options.ajaxURL || self.options.ajaxURLGenerator) && self.modExists("ajax")) {
 
-                                               self.modules.ajax.loadData().then(function () {}).catch(function () {});
+                                               self.modules.ajax.loadData().then(function () {}).catch(function () {
+
+                                                       if (self.options.paginationInitialPage) {
+
+                                                               self.modules.page.setPage(self.options.paginationInitialPage);
+                                                       }
+                                               });
+
+                                               return;
                                        } else {
 
                                                self.rowManager.setData(self.options.data);
                                        }
                                }
+
+                               if (self.options.paginationInitialPage) {
+
+                                       self.modules.page.setPage(self.options.paginationInitialPage);
+                               }
                        } else {
 
                                if (self.options.ajaxURL) {
 
-                                       self.modules.page.setPage(1).then(function () {}).catch(function () {});
+                                       self.modules.page.setPage(self.options.paginationInitialPage).then(function () {}).catch(function () {});
                                } else {
 
                                        self.rowManager.setData([]);
@@ -7909,7 +8234,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        Tabulator.prototype._detectBrowser = function () {
 
-               var ua = navigator.userAgent;
+               var ua = navigator.userAgent || navigator.vendor || window.opera;
 
                if (ua.indexOf("Trident") > -1) {
 
@@ -7932,15 +8257,31 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        this.browserSlow = false;
                }
+
+               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(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));
        };
 
        ////////////////// Data Handling //////////////////
 
 
-       //loca data from local file
+       //block table redrawing
+
+       Tabulator.prototype.blockRedraw = function () {
+
+               return this.rowManager.blockRedraw();
+       };
+
+       //restore table redrawing
+
+       Tabulator.prototype.restoreRedraw = function () {
+
+               return this.rowManager.restoreRedraw();
+       };
+
+       //local data from local file
 
        Tabulator.prototype.setDataFromLocalFile = function (extensions) {
-               var _this10 = this;
+               var _this16 = this;
 
                return new Promise(function (resolve, reject) {
 
@@ -7972,7 +8313,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                                return;
                                        }
 
-                                       _this10._setData(data).then(function (data) {
+                                       _this16._setData(data).then(function (data) {
 
                                                resolve(data);
                                        }).catch(function (err) {
@@ -8093,6 +8434,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        Tabulator.prototype.getData = function (active) {
 
+               if (active === true) {
+
+                       console.warn("passing a boolean to the getData function is deprecated, you should now pass the string 'active'");
+
+                       active = "active";
+               }
+
                return this.rowManager.getData(active);
        };
 
@@ -8100,6 +8448,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        Tabulator.prototype.getDataCount = function (active) {
 
+               if (active === true) {
+
+                       console.warn("passing a boolean to the getDataCount function is deprecated, you should now pass the string 'active'");
+
+                       active = "active";
+               }
+
                return this.rowManager.getDataCount(active);
        };
 
@@ -8168,7 +8523,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        //update table data
 
        Tabulator.prototype.updateData = function (data) {
-               var _this11 = this;
+               var _this17 = this;
 
                var self = this;
 
@@ -8176,9 +8531,9 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                return new Promise(function (resolve, reject) {
 
-                       if (_this11.modExists("ajax")) {
+                       if (_this17.modExists("ajax")) {
 
-                               _this11.modules.ajax.blockActiveRequest();
+                               _this17.modules.ajax.blockActiveRequest();
                        }
 
                        if (typeof data === "string") {
@@ -8217,13 +8572,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Tabulator.prototype.addData = function (data, pos, index) {
-               var _this12 = this;
+               var _this18 = this;
 
                return new Promise(function (resolve, reject) {
 
-                       if (_this12.modExists("ajax")) {
+                       if (_this18.modExists("ajax")) {
 
-                               _this12.modules.ajax.blockActiveRequest();
+                               _this18.modules.ajax.blockActiveRequest();
                        }
 
                        if (typeof data === "string") {
@@ -8233,7 +8588,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        if (data) {
 
-                               _this12.rowManager.addRows(data, pos, index).then(function (rows) {
+                               _this18.rowManager.addRows(data, pos, index).then(function (rows) {
 
                                        var output = [];
 
@@ -8256,7 +8611,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        //update table data
 
        Tabulator.prototype.updateOrAddData = function (data) {
-               var _this13 = this;
+               var _this19 = this;
 
                var self = this,
                    rows = [],
@@ -8264,9 +8619,9 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                return new Promise(function (resolve, reject) {
 
-                       if (_this13.modExists("ajax")) {
+                       if (_this19.modExists("ajax")) {
 
-                               _this13.modules.ajax.blockActiveRequest();
+                               _this19.modules.ajax.blockActiveRequest();
                        }
 
                        if (typeof data === "string") {
@@ -8356,34 +8711,67 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        //delete row from table
 
        Tabulator.prototype.deleteRow = function (index) {
-               var _this14 = this;
+               var _this20 = this;
 
                return new Promise(function (resolve, reject) {
 
-                       var row = _this14.rowManager.findRow(index);
+                       var count = 0,
+                           successCount = 0,
+                           self = _this20;
 
-                       if (row) {
+                       function doneCheck() {
 
-                               row.delete().then(function () {
+                               count++;
 
-                                       resolve();
-                               }).catch(function (err) {
+                               if (count == index.length) {
 
-                                       reject(err);
-                               });
-                       } else {
+                                       if (successCount) {
+
+                                               self.rowManager.reRenderInPosition();
+
+                                               resolve();
+                                       }
+                               }
+                       }
 
-                               console.warn("Delete Error - No matching row found:", index);
+                       if (!Array.isArray(index)) {
 
-                               reject("Delete Error - No matching row found");
+                               index = [index];
                        }
+
+                       index.forEach(function (item) {
+
+                               var row = _this20.rowManager.findRow(item, true);
+
+                               if (row) {
+
+                                       row.delete().then(function () {
+
+                                               successCount++;
+
+                                               doneCheck();
+                                       }).catch(function (err) {
+
+                                               doneCheck();
+
+                                               reject(err);
+                                       });
+                               } else {
+
+                                       console.warn("Delete Error - No matching row found:", item);
+
+                                       reject("Delete Error - No matching row found");
+
+                                       doneCheck();
+                               }
+                       });
                });
        };
 
        //add row to table
 
        Tabulator.prototype.addRow = function (data, pos, index) {
-               var _this15 = this;
+               var _this21 = this;
 
                return new Promise(function (resolve, reject) {
 
@@ -8392,13 +8780,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                data = JSON.parse(data);
                        }
 
-                       _this15.rowManager.addRows(data, pos, index).then(function (rows) {
+                       _this21.rowManager.addRows(data, pos, index).then(function (rows) {
 
                                //recalc column calculations if present
 
-                               if (_this15.modExists("columnCalcs")) {
+                               if (_this21.modExists("columnCalcs")) {
 
-                                       _this15.modules.columnCalcs.recalc(_this15.rowManager.activeRows);
+                                       _this21.modules.columnCalcs.recalc(_this21.rowManager.activeRows);
                                }
 
                                resolve(rows[0].getComponent());
@@ -8409,11 +8797,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        //update a row if it exitsts otherwise create it
 
        Tabulator.prototype.updateOrAddRow = function (index, data) {
-               var _this16 = this;
+               var _this22 = this;
 
                return new Promise(function (resolve, reject) {
 
-                       var row = _this16.rowManager.findRow(index);
+                       var row = _this22.rowManager.findRow(index);
 
                        if (typeof data === "string") {
 
@@ -8426,9 +8814,9 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                                        //recalc column calculations if present
 
-                                       if (_this16.modExists("columnCalcs")) {
+                                       if (_this22.modExists("columnCalcs")) {
 
-                                               _this16.modules.columnCalcs.recalc(_this16.rowManager.activeRows);
+                                               _this22.modules.columnCalcs.recalc(_this22.rowManager.activeRows);
                                        }
 
                                        resolve(row.getComponent());
@@ -8438,13 +8826,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                });
                        } else {
 
-                               row = _this16.rowManager.addRows(data).then(function (rows) {
+                               row = _this22.rowManager.addRows(data).then(function (rows) {
 
                                        //recalc column calculations if present
 
-                                       if (_this16.modExists("columnCalcs")) {
+                                       if (_this22.modExists("columnCalcs")) {
 
-                                               _this16.modules.columnCalcs.recalc(_this16.rowManager.activeRows);
+                                               _this22.modules.columnCalcs.recalc(_this22.rowManager.activeRows);
                                        }
 
                                        resolve(rows[0].getComponent());
@@ -8459,11 +8847,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        //update row data
 
        Tabulator.prototype.updateRow = function (index, data) {
-               var _this17 = this;
+               var _this23 = this;
 
                return new Promise(function (resolve, reject) {
 
-                       var row = _this17.rowManager.findRow(index);
+                       var row = _this23.rowManager.findRow(index);
 
                        if (typeof data === "string") {
 
@@ -8491,15 +8879,15 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        //scroll to row in DOM
 
        Tabulator.prototype.scrollToRow = function (index, position, ifVisible) {
-               var _this18 = this;
+               var _this24 = this;
 
                return new Promise(function (resolve, reject) {
 
-                       var row = _this18.rowManager.findRow(index);
+                       var row = _this24.rowManager.findRow(index);
 
                        if (row) {
 
-                               _this18.rowManager.scrollToRow(row, position, ifVisible).then(function () {
+                               _this24.rowManager.scrollToRow(row, position, ifVisible).then(function () {
 
                                        resolve();
                                }).catch(function (err) {
@@ -8530,6 +8918,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        Tabulator.prototype.getRows = function (active) {
 
+               if (active === true) {
+
+                       console.warn("passing a boolean to the getRows function is deprecated, you should now pass the string 'active'");
+
+                       active = "active";
+               }
+
                return this.rowManager.getComponents(active);
        };
 
@@ -8649,51 +9044,96 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        console.warn("Column Hide Error - No matching column found:", field);
 
-                       return false;
-               }
-       };
+                       return false;
+               }
+       };
+
+       Tabulator.prototype.toggleColumn = function (field) {
+
+               var column = this.columnManager.findColumn(field);
+
+               if (column) {
+
+                       if (column.visible) {
+
+                               column.hide();
+                       } else {
+
+                               column.show();
+                       }
+               } else {
+
+                       console.warn("Column Visibility Toggle Error - No matching column found:", field);
+
+                       return false;
+               }
+       };
+
+       Tabulator.prototype.addColumn = function (definition, before, field) {
+               var _this25 = this;
+
+               return new Promise(function (resolve, reject) {
+
+                       var column = _this25.columnManager.findColumn(field);
+
+                       _this25.columnManager.addColumn(definition, before, column).then(function (column) {
+
+                               resolve(column.getComponent());
+                       }).catch(function (err) {
+
+                               reject(err);
+                       });
+               });
+       };
+
+       Tabulator.prototype.deleteColumn = function (field) {
+               var _this26 = this;
+
+               return new Promise(function (resolve, reject) {
 
-       Tabulator.prototype.toggleColumn = function (field) {
+                       var column = _this26.columnManager.findColumn(field);
 
-               var column = this.columnManager.findColumn(field);
+                       if (column) {
 
-               if (column) {
+                               column.delete().then(function () {
 
-                       if (column.visible) {
+                                       resolve();
+                               }).catch(function (err) {
 
-                               column.hide();
+                                       reject(err);
+                               });
                        } else {
 
-                               column.show();
-                       }
-               } else {
-
-                       console.warn("Column Visibility Toggle Error - No matching column found:", field);
+                               console.warn("Column Delete Error - No matching column found:", field);
 
-                       return false;
-               }
+                               reject();
+                       }
+               });
        };
 
-       Tabulator.prototype.addColumn = function (definition, before, field) {
+       Tabulator.prototype.updateColumnDefinition = function (field, definition) {
+               var _this27 = this;
 
-               var column = this.columnManager.findColumn(field);
+               return new Promise(function (resolve, reject) {
 
-               this.columnManager.addColumn(definition, before, column);
-       };
+                       var column = _this27.columnManager.findColumn(field);
 
-       Tabulator.prototype.deleteColumn = function (field) {
+                       if (column) {
 
-               var column = this.columnManager.findColumn(field);
+                               column.updateDefinition().then(function (col) {
 
-               if (column) {
+                                       resolve(col);
+                               }).catch(function (err) {
 
-                       column.delete();
-               } else {
+                                       reject(err);
+                               });
+                       } else {
 
-                       console.warn("Column Delete Error - No matching column found:", field);
+                               console.warn("Column Update Error - No matching column found:", field);
 
-                       return false;
-               }
+                               reject();
+                       }
+               });
        };
 
        Tabulator.prototype.moveColumn = function (from, to, after) {
@@ -8720,15 +9160,15 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        //scroll to column in DOM
 
        Tabulator.prototype.scrollToColumn = function (field, position, ifVisible) {
-               var _this19 = this;
+               var _this28 = this;
 
                return new Promise(function (resolve, reject) {
 
-                       var column = _this19.columnManager.findColumn(field);
+                       var column = _this28.columnManager.findColumn(field);
 
                        if (column) {
 
-                               _this19.columnManager.scrollToColumn(column, position, ifVisible).then(function () {
+                               _this28.columnManager.scrollToColumn(column, position, ifVisible).then(function () {
 
                                        resolve();
                                }).catch(function (err) {
@@ -8944,6 +9384,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                if (this.modExists("selectRow", true)) {
 
+                       if (rows === true) {
+
+                               console.warn("passing a boolean to the selectRowselectRow function is deprecated, you should now pass the string 'active'");
+
+                               rows = "active";
+                       }
+
                        this.modules.selectRow.selectRows(rows);
                }
        };
@@ -9008,17 +9455,17 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Tabulator.prototype.setPageToRow = function (row) {
-               var _this20 = this;
+               var _this29 = this;
 
                return new Promise(function (resolve, reject) {
 
-                       if (_this20.options.pagination && _this20.modExists("page")) {
+                       if (_this29.options.pagination && _this29.modExists("page")) {
 
-                               row = _this20.rowManager.findRow(row);
+                               row = _this29.rowManager.findRow(row);
 
                                if (row) {
 
-                                       _this20.modules.page.setPageToRow(row).then(function () {
+                                       _this29.modules.page.setPageToRow(row).then(function () {
 
                                                resolve();
                                        }).catch(function () {
@@ -9113,6 +9560,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        this.modules.groupRows.initialize();
 
                        this.rowManager.refreshActiveData("display");
+
+                       if (this.options.persistence && this.modExists("persistence", true) && this.modules.persistence.config.group) {
+
+                               this.modules.persistence.save("group");
+                       }
                } else {
 
                        return false;
@@ -9130,6 +9582,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        if (this.options.groupBy) {
 
                                this.rowManager.refreshActiveData("group");
+
+                               if (this.options.persistence && this.modExists("persistence", true) && this.modules.persistence.config.group) {
+
+                                       this.modules.persistence.save("group");
+                               }
                        } else {
 
                                console.warn("Grouping Update - cant refresh view, no groups have been set");
@@ -9151,6 +9608,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        if (this.options.groupBy) {
 
                                this.rowManager.refreshActiveData("group");
+
+                               if (this.options.persistence && this.modExists("persistence", true) && this.modules.persistence.config.group) {
+
+                                       this.modules.persistence.save("group");
+                               }
                        } else {
 
                                console.warn("Grouping Update - cant refresh view, no groups have been set");
@@ -9357,19 +9819,19 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        /////////////// Download Management //////////////
 
 
-       Tabulator.prototype.download = function (type, filename, options) {
+       Tabulator.prototype.download = function (type, filename, options, active) {
 
                if (this.modExists("download", true)) {
 
-                       this.modules.download.download(type, filename, options);
+                       this.modules.download.download(type, filename, options, active);
                }
        };
 
-       Tabulator.prototype.downloadToTab = function (type, filename, options) {
+       Tabulator.prototype.downloadToTab = function (type, filename, options, active) {
 
                if (this.modExists("download", true)) {
 
-                       this.modules.download.download(type, filename, options, true);
+                       this.modules.download.download(type, filename, options, active, true);
                }
        };
 
@@ -9522,7 +9984,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        }
                },
 
-               lookupTable: function lookupTable(query) {
+               lookupTable: function lookupTable(query, silent) {
 
                        var results = [],
                            matches,
@@ -9560,7 +10022,10 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                });
                        } else {
 
-                               console.warn("Table Connection Error - Invalid Selector", query);
+                               if (!silent) {
+
+                                       console.warn("Table Connection Error - Invalid Selector", query);
+                               }
                        }
 
                        return results;
@@ -9576,6 +10041,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        };
 
+       Tabulator.prototype.findTable = function (query) {
+
+               var results = Tabulator.prototype.comms.lookupTable(query, true);
+
+               return Array.isArray(results) && !results.length ? false : results;
+       };
+
        var Layout = function Layout(table) {
 
                this.table = table;
@@ -9635,7 +10107,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        }
                },
 
-               //resize columns to fit data the contain
+               //resize columns to fit data the contain and stretch row to fill table
 
 
                "fitDataFill": function fitDataFill(columns) {
@@ -9651,6 +10123,62 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        }
                },
 
+               //resize columns to fit data the contain and stretch last column to fill table
+
+
+               "fitDataStretch": function fitDataStretch(columns) {
+                       var _this30 = this;
+
+                       var colsWidth = 0,
+                           tableWidth = this.table.rowManager.element.clientWidth,
+                           gap = 0,
+                           lastCol = false;
+
+                       columns.forEach(function (column, i) {
+
+                               if (!column.widthFixed) {
+
+                                       column.reinitializeWidth();
+                               }
+
+                               if (_this30.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible) {
+
+                                       lastCol = column;
+                               }
+
+                               if (column.visible) {
+
+                                       colsWidth += column.getWidth();
+                               }
+                       });
+
+                       if (lastCol) {
+
+                               gap = tableWidth - colsWidth + lastCol.getWidth();
+
+                               if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+                                       lastCol.setWidth(0);
+
+                                       this.table.modules.responsiveLayout.update();
+                               }
+
+                               if (gap > 0) {
+
+                                       lastCol.setWidth(gap);
+                               } else {
+
+                                       column.reinitializeWidth();
+                               }
+                       } else {
+
+                               if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+                                       this.table.modules.responsiveLayout.update();
+                               }
+                       }
+               },
+
                //resize columns to fit
 
 
@@ -10503,11 +11031,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Ajax.prototype._loadDataStandard = function (inPosition) {
-               var _this21 = this;
+               var _this31 = this;
 
                return new Promise(function (resolve, reject) {
-                       _this21.sendRequest(inPosition).then(function (data) {
-                               _this21.table.rowManager.setData(data, inPosition).then(function () {
+                       _this31.sendRequest(inPosition).then(function (data) {
+                               _this31.table.rowManager.setData(data, inPosition).then(function () {
                                        resolve();
                                }).catch(function (e) {
                                        reject(e);
@@ -10552,7 +11080,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        //send ajax request
        Ajax.prototype.sendRequest = function (silent) {
-               var _this22 = this;
+               var _this32 = this;
 
                var self = this,
                    url = self.url,
@@ -10566,7 +11094,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                self._loadDefaultConfig();
 
                return new Promise(function (resolve, reject) {
-                       if (self.table.options.ajaxRequesting.call(_this22.table, self.url, self.params) !== false) {
+                       if (self.table.options.ajaxRequesting.call(_this32.table, self.url, self.params) !== false) {
 
                                self.loading = true;
 
@@ -10574,7 +11102,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                        self.showLoader();
                                }
 
-                               _this22.loaderPromise(url, self.config, self.params).then(function (data) {
+                               _this32.loaderPromise(url, self.config, self.params).then(function (data) {
                                        if (requestNo === self.requestOrder) {
                                                if (self.table.options.ajaxResponse) {
                                                        data = self.table.options.ajaxResponse.call(self.table, self.url, self.params, data);
@@ -10663,7 +11191,8 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        if (params && Object.keys(params).length) {
                                if (!config.method || config.method.toLowerCase() == "get") {
                                        config.method = "get";
-                                       url += "?" + this.serializeParams(params);
+
+                                       url += (url.includes("?") ? "&" : "?") + this.serializeParams(params);
                                }
                        }
                }
@@ -11018,14 +11547,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        self.table.modules.mutator.disable();
                }
 
-               row = new Row(rowData, this);
+               row = new Row(rowData, this, "calc");
 
                if (self.table.modExists("mutator")) {
                        self.table.modules.mutator.enable();
                }
 
                row.getElement().classList.add("tabulator-calcs", "tabulator-calcs-" + pos);
-               row.type = "calc";
 
                row.generateCells = function () {
 
@@ -11545,12 +12073,12 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Clipboard.prototype.generateColumnGroupHeaders = function (columns) {
-               var _this23 = this;
+               var _this33 = this;
 
                var output = [];
 
                this.table.columnManager.columns.forEach(function (column) {
-                       var colData = _this23.processColumnGroup(column);
+                       var colData = _this33.processColumnGroup(column);
 
                        if (colData) {
                                output.push(colData);
@@ -11561,7 +12089,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Clipboard.prototype.processColumnGroup = function (column) {
-               var _this24 = this;
+               var _this34 = this;
 
                var subGroups = column.columns;
 
@@ -11576,7 +12104,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        groupData.width = 0;
 
                        subGroups.forEach(function (subGroup) {
-                               var subGroupData = _this24.processColumnGroup(subGroup);
+                               var subGroupData = _this34.processColumnGroup(subGroup);
 
                                if (subGroupData) {
                                        groupData.width += subGroupData.width;
@@ -11680,20 +12208,20 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Clipboard.prototype.buildComplexRows = function (config) {
-               var _this25 = this;
+               var _this35 = this;
 
                var output = [],
                    groups = this.table.modules.groupRows.getGroups();
 
                groups.forEach(function (group) {
-                       output.push(_this25.processGroupData(group));
+                       output.push(_this35.processGroupData(group));
                });
 
                return output;
        };
 
        Clipboard.prototype.processGroupData = function (group) {
-               var _this26 = this;
+               var _this36 = this;
 
                var subGroups = group.getSubGroups();
 
@@ -11706,7 +12234,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        groupData.subGroups = [];
 
                        subGroups.forEach(function (subGroup) {
-                               groupData.subGroups.push(_this26.processGroupData(subGroup));
+                               groupData.subGroups.push(_this36.processGroupData(subGroup));
                        });
                } else {
                        groupData.rows = group.getRows(true);
@@ -11732,22 +12260,24 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Clipboard.prototype.buildOutput = function (rows, config, params) {
-               var _this27 = this;
+               var _this37 = this;
 
                var output = [],
                    calcs,
-                   columns = [];
+                   columns = [],
+                   columnsByIndex = [];
+
+               this.table.columnManager.columnsByIndex.forEach(function (column) {
+                       if (column.definition.clipboard || column.visible && column.definition.clipboard !== false) {
+                               columnsByIndex.push(column);
+                       }
+               });
 
                if (config.columnHeaders == "groups") {
                        columns = this.generateColumnGroupHeaders(this.table.columnManager.columns);
-
                        output = output.concat(this.groupHeadersToRows(columns));
                } else {
-                       this.table.columnManager.columnsByIndex.forEach(function (column) {
-                               if (column.definition.clipboard || column.visible && column.definition.clipboard !== false) {
-                                       columns.push(column);
-                               }
-                       });
+                       columns = columnsByIndex;
 
                        output.push(this.generateSimpleHeaders(columns));
                }
@@ -11764,17 +12294,17 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                //generate unstyled content
                if (config.rowGroups) {
                        rows.forEach(function (row) {
-                               output = output.concat(_this27.parseRowGroupData(row, columns, config, params, calcs || {}));
+                               output = output.concat(_this37.parseRowGroupData(row, columnsByIndex, config, params, calcs || {}));
                        });
                } else {
                        if (config.columnCalcs) {
-                               output = output.concat(this.getCalcRow(calcs, columns, "top"));
+                               output = output.concat(this.getCalcRow(calcs, columnsByIndex, "top"));
                        }
 
-                       output = output.concat(this.rowsToData(rows, columns, config, params));
+                       output = output.concat(this.rowsToData(rows, columnsByIndex, config, params));
 
                        if (config.columnCalcs) {
-                               output = output.concat(this.getCalcRow(calcs, columns, "bottom"));
+                               output = output.concat(this.getCalcRow(calcs, columnsByIndex, "bottom"));
                        }
                }
 
@@ -11782,7 +12312,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Clipboard.prototype.parseRowGroupData = function (group, columns, config, params, calcObj) {
-               var _this28 = this;
+               var _this38 = this;
 
                var groupData = [];
 
@@ -11790,7 +12320,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                if (group.subGroups) {
                        group.subGroups.forEach(function (subGroup) {
-                               groupData = groupData.concat(_this28.parseRowGroupData(subGroup, config, params, calcObj[group.key] ? calcObj[group.key].groups || {} : {}));
+                               groupData = groupData.concat(_this38.parseRowGroupData(subGroup, config, params, calcObj[group.key] ? calcObj[group.key].groups || {} : {}));
                        });
                } else {
                        if (config.columnCalcs) {
@@ -11877,6 +12407,8 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                function parseColumnGroup(column, level) {
 
+                       var actualColumns = [];
+
                        if (typeof headers[level] === "undefined") {
                                headers[level] = [];
                        }
@@ -11891,8 +12423,12 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        if (column.subGroups) {
                                column.subGroups.forEach(function (subGroup) {
-                                       parseColumnGroup(subGroup, level + 1);
+                                       actualColumns = actualColumns.concat(parseColumnGroup(subGroup, level + 1));
                                });
+
+                               return actualColumns;
+                       } else {
+                               return [column.column];
                        }
                }
 
@@ -11924,10 +12460,15 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                //create headers if needed
                if (config.columnHeaders) {
                        if (config.columnHeaders == "groups") {
+
+                               var actualColumns = [];
+
                                columns.forEach(function (column) {
-                                       parseColumnGroup(column, 0);
+                                       actualColumns = actualColumns.concat(parseColumnGroup(column, 0));
                                });
 
+                               columns = actualColumns;
+
                                padVerticalColumnheaders();
                                generateHeaders(headers);
                        } else {
@@ -12131,7 +12672,18 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        if (config.rowGroups) {
                                rows = this.buildComplexRows(config);
                        } else {
-                               rows = this.table.rowManager.getComponents(true);
+                               rows = this.table.rowManager.getComponents("active");
+                       }
+
+                       return this.buildOutput(rows, config, params);
+               },
+               visible: function visible(config, params) {
+                       var rows;
+
+                       if (config.rowGroups) {
+                               rows = this.buildComplexRows(config);
+                       } else {
+                               rows = this.table.rowManager.getComponents("visible");
                        }
 
                        return this.buildOutput(rows, config, params);
@@ -12146,6 +12698,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        var output = [];
 
                        data.forEach(function (row) {
+                               var newRow = [];
                                row.forEach(function (value) {
                                        if (typeof value == "undefined") {
                                                value = "";
@@ -12157,9 +12710,10 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                                value = value.split('"').join('""');
                                                value = '"' + value + '"';
                                        }
+                                       newRow.push(value);
                                });
 
-                               output.push(row.join("\t"));
+                               output.push(newRow.join("\t"));
                        });
 
                        return output.join("\n");
@@ -12385,7 +12939,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        DataTree.prototype.generateControlElement = function (row, el) {
-               var _this29 = this;
+               var _this39 = this;
 
                var config = row.modules.dataTree,
                    el = el || row.getCells()[0].getElement(),
@@ -12397,13 +12951,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                config.controlEl = this.collapseEl.cloneNode(true);
                                config.controlEl.addEventListener("click", function (e) {
                                        e.stopPropagation();
-                                       _this29.collapseRow(row);
+                                       _this39.collapseRow(row);
                                });
                        } else {
                                config.controlEl = this.expandEl.cloneNode(true);
                                config.controlEl.addEventListener("click", function (e) {
                                        e.stopPropagation();
-                                       _this29.expandRow(row);
+                                       _this39.expandRow(row);
                                });
                        }
 
@@ -12428,7 +12982,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        DataTree.prototype.getRows = function (rows) {
-               var _this30 = this;
+               var _this40 = this;
 
                var output = [];
 
@@ -12442,7 +12996,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                config = row.modules.dataTree.children;
 
                                if (!config.index && config.children !== false) {
-                                       children = _this30.getChildren(row);
+                                       children = _this40.getChildren(row);
 
                                        children.forEach(function (child) {
                                                output.push(child);
@@ -12455,7 +13009,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        DataTree.prototype.getChildren = function (row) {
-               var _this31 = this;
+               var _this41 = this;
 
                var config = row.modules.dataTree,
                    children = [],
@@ -12479,7 +13033,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        children.forEach(function (child) {
                                output.push(child);
 
-                               var subChildren = _this31.getChildren(child);
+                               var subChildren = _this41.getChildren(child);
 
                                subChildren.forEach(function (sub) {
                                        output.push(sub);
@@ -12491,7 +13045,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        DataTree.prototype.generateChildren = function (row) {
-               var _this32 = this;
+               var _this42 = this;
 
                var children = [];
 
@@ -12502,11 +13056,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                }
 
                childArray.forEach(function (childData) {
-                       var childRow = new Row(childData || {}, _this32.table.rowManager);
+                       var childRow = new Row(childData || {}, _this42.table.rowManager);
                        childRow.modules.dataTree.index = row.modules.dataTree.index + 1;
                        childRow.modules.dataTree.parent = row;
                        if (childRow.modules.dataTree.children) {
-                               childRow.modules.dataTree.open = _this32.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);
+                               childRow.modules.dataTree.open = _this42.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);
                        }
                        children.push(childRow);
                });
@@ -12604,7 +13158,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        //trigger file download
-       Download.prototype.download = function (type, filename, options, interceptCallback) {
+       Download.prototype.download = function (type, filename, options, active, interceptCallback) {
                var self = this,
                    downloadFunc = false;
                this.processConfig();
@@ -12634,7 +13188,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                this.processColumns();
 
                if (downloadFunc) {
-                       downloadFunc.call(this, self.processDefinitions(), self.processData(), options || {}, buildLink, this.config);
+                       downloadFunc.call(this, self.processDefinitions(), self.processData(active || "active"), options || {}, buildLink, this.config);
                }
        };
 
@@ -12704,7 +13258,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Download.prototype.processColumnGroup = function (column) {
-               var _this33 = this;
+               var _this43 = this;
 
                var subGroups = column.columns,
                    maxDepth = 0;
@@ -12720,7 +13274,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        groupData.width = 0;
 
                        subGroups.forEach(function (subGroup) {
-                               var subGroupData = _this33.processColumnGroup(subGroup);
+                               var subGroupData = _this43.processColumnGroup(subGroup);
 
                                if (subGroupData.depth > maxDepth) {
                                        maxDepth = subGroupData.depth;
@@ -12763,22 +13317,39 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                return def;
        };
 
-       Download.prototype.processData = function () {
-               var _this34 = this;
+       Download.prototype.processData = function (active) {
+               var _this44 = this;
 
                var self = this,
                    data = [],
                    groups = [],
+                   rows = false,
                    calcs = {};
 
                if (this.config.rowGroups) {
-                       groups = this.table.modules.groupRows.getGroups();
+
+                       if (active == "visible") {
+
+                               rows = self.table.rowManager.getRows(active);
+
+                               rows.forEach(function (row) {
+                                       if (row.type == "row") {
+                                               var group = row.getGroup();
+
+                                               if (groups.indexOf(group) === -1) {
+                                                       groups.push(group);
+                                               }
+                                       }
+                               });
+                       } else {
+                               groups = this.table.modules.groupRows.getGroups();
+                       }
 
                        groups.forEach(function (group) {
-                               data.push(_this34.processGroupData(group));
+                               data.push(_this44.processGroupData(group, rows));
                        });
                } else {
-                       data = self.table.rowManager.getData(true, "download");
+                       data = self.table.rowManager.getData(active, "download");
                }
 
                if (this.config.columnCalcs) {
@@ -12798,8 +13369,8 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                return data;
        };
 
-       Download.prototype.processGroupData = function (group) {
-               var _this35 = this;
+       Download.prototype.processGroupData = function (group, visRows) {
+               var _this45 = this;
 
                var subGroups = group.getSubGroups();
 
@@ -12812,10 +13383,20 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        groupData.subGroups = [];
 
                        subGroups.forEach(function (subGroup) {
-                               groupData.subGroups.push(_this35.processGroupData(subGroup));
+                               groupData.subGroups.push(_this45.processGroupData(subGroup, visRows));
                        });
                } else {
-                       groupData.rows = group.getData(true, "download");
+                       if (visRows) {
+                               groupData.rows = [];
+
+                               group.rows.forEach(function (row) {
+                                       if (visRows.indexOf(row) > -1) {
+                                               groupData.rows.push(row.getData("download"));
+                                       }
+                               });
+                       } else {
+                               groupData.rows = group.getData(true, "download");
+                       }
                }
 
                return groupData;
@@ -13228,13 +13809,16 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                xlsx: function xlsx(columns, data, options, setFileContents, config) {
                        var self = this,
                            sheetName = options.sheetName || "Sheet1",
-                           workbook = { SheetNames: [], Sheets: {} },
+                           workbook = XLSX.utils.book_new(),
                            calcs = {},
                            groupRowIndexs = [],
                            groupColumnIndexs = [],
                            calcRowIndexs = [],
                            output;
 
+                       workbook.SheetNames = [];
+                       workbook.Sheets = {};
+
                        if (config.columnCalcs) {
                                calcs = data.calcs;
                                data = data.data;
@@ -13474,6 +14058,10 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                workbook.Sheets[sheetName] = generateSheet();
                        }
 
+                       if (options.documentProcessing) {
+                               workbook = options.documentProcessing(workbook);
+                       }
+
                        //convert workbook to binary array
                        function s2ab(s) {
                                var buf = new ArrayBuffer(s.length);
@@ -13486,6 +14074,12 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        output = XLSX.write(workbook, { bookType: 'xlsx', bookSST: true, type: 'binary' });
 
                        setFileContents(s2ab(output), "application/octet-stream");
+               },
+
+               html: function html(columns, data, options, setFileContents, config) {
+                       if (this.table.modExists("htmlTableExport", true)) {
+                               setFileContents(this.table.modules.htmlTableExport.getHtml(true, options.style, config), "text/html");
+                       }
                }
 
        };
@@ -13621,9 +14215,9 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                });
        };
 
-       Edit.prototype.focusCellNoEvent = function (cell) {
+       Edit.prototype.focusCellNoEvent = function (cell, block) {
                this.recursionBlock = true;
-               if (this.table.browser !== "ie") {
+               if (!(block && this.table.browser === "ie")) {
                        cell.getElement().focus();
                }
                this.recursionBlock = false;
@@ -13673,7 +14267,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                } else {
                                        self.invalidEdit = true;
                                        element.classList.add("tabulator-validation-fail");
-                                       self.focusCellNoEvent(cell);
+                                       self.focusCellNoEvent(cell, true);
                                        rendered();
                                        self.table.options.validationFailed.call(self.table, cell.getComponent(), value, valid);
 
@@ -13855,6 +14449,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                textarea: function textarea(cell, onRendered, success, cancel, editorParams) {
                        var self = this,
                            cellValue = cell.getValue(),
+                           vertNav = editorParams.verticalNavigation || "hybrid",
                            value = String(cellValue !== null && typeof cellValue !== "undefined" ? cellValue : ""),
                            count = (value.match(/(?:\r\n|\r|\n)/g) || []).length + 1,
                            input = document.createElement("textarea"),
@@ -13922,8 +14517,28 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        });
 
                        input.addEventListener("keydown", function (e) {
-                               if (e.keyCode == 27) {
-                                       cancel();
+
+                               switch (e.keyCode) {
+                                       case 27:
+                                               cancel();
+                                               break;
+
+                                       case 38:
+                                               //up arrow
+                                               if (vertNav == "editor" || vertNav == "hybrid" && input.selectionStart) {
+                                                       e.stopImmediatePropagation();
+                                                       e.stopPropagation();
+                                               }
+
+                                               break;
+
+                                       case 40:
+                                               //down arrow
+                                               if (vertNav == "editor" || vertNav == "hybrid" && input.selectionStart !== input.value.length) {
+                                                       e.stopImmediatePropagation();
+                                                       e.stopPropagation();
+                                               }
+                                               break;
                                }
                        });
 
@@ -13934,6 +14549,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                number: function number(cell, onRendered, success, cancel, editorParams) {
 
                        var cellValue = cell.getValue(),
+                           vertNav = editorParams.verticalNavigation || "editor",
                            input = document.createElement("input");
 
                        input.setAttribute("type", "number");
@@ -14010,6 +14626,15 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                        case 27:
                                                cancel();
                                                break;
+
+                                       case 38: //up arrow
+                                       case 40:
+                                               //down arrow
+                                               if (vertNav == "editor") {
+                                                       e.stopImmediatePropagation();
+                                                       e.stopPropagation();
+                                               }
+                                               break;
                                }
                        });
 
@@ -14102,6 +14727,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        var self = this,
                            cellEl = cell.getElement(),
                            initialValue = cell.getValue(),
+                           vertNav = editorParams.verticalNavigation || "editor",
                            initialDisplayValue = typeof initialValue !== "undefined" || initialValue === null ? initialValue : typeof editorParams.defaultValue !== "undefined" ? editorParams.defaultValue : "",
                            input = document.createElement("input"),
                            listEl = document.createElement("div"),
@@ -14367,13 +14993,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        input.value = typeof initialValue !== "undefined" || initialValue === null ? initialValue : "";
 
-                       if (editorParams.values === true) {
-                               parseItems(getUniqueColumnValues(), initialValue);
-                       } else if (typeof editorParams.values === "string") {
-                               parseItems(getUniqueColumnValues(editorParams.values), initialValue);
-                       } else {
-                               parseItems(editorParams.values || [], initialValue);
-                       }
+                       // if(editorParams.values === true){
+                       //      parseItems(getUniqueColumnValues(), initialValue);
+                       // }else if(typeof editorParams.values === "string"){
+                       //      parseItems(getUniqueColumnValues(editorParams.values), initialValue);
+                       // }else{
+                       //      parseItems(editorParams.values || [], initialValue);
+                       // }
 
                        //allow key based navigation
                        input.addEventListener("keydown", function (e) {
@@ -14382,30 +15008,34 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                switch (e.keyCode) {
                                        case 38:
                                                //up arrow
-                                               e.stopImmediatePropagation();
-                                               e.stopPropagation();
-                                               e.preventDefault();
-
                                                index = dataItems.indexOf(currentItem);
 
-                                               if (index > 0) {
-                                                       setCurrentItem(dataItems[index - 1]);
+                                               if (vertNav == "editor" || vertNav == "hybrid" && index) {
+                                                       e.stopImmediatePropagation();
+                                                       e.stopPropagation();
+                                                       e.preventDefault();
+
+                                                       if (index > 0) {
+                                                               setCurrentItem(dataItems[index - 1]);
+                                                       }
                                                }
                                                break;
 
                                        case 40:
                                                //down arrow
-                                               e.stopImmediatePropagation();
-                                               e.stopPropagation();
-                                               e.preventDefault();
-
                                                index = dataItems.indexOf(currentItem);
 
-                                               if (index < dataItems.length - 1) {
-                                                       if (index == -1) {
-                                                               setCurrentItem(dataItems[0]);
-                                                       } else {
-                                                               setCurrentItem(dataItems[index + 1]);
+                                               if (vertNav == "editor" || vertNav == "hybrid" && index < dataItems.length - 1) {
+                                                       e.stopImmediatePropagation();
+                                                       e.stopPropagation();
+                                                       e.preventDefault();
+
+                                                       if (index < dataItems.length - 1) {
+                                                               if (index == -1) {
+                                                                       setCurrentItem(dataItems[0]);
+                                                               } else {
+                                                                       setCurrentItem(dataItems[index + 1]);
+                                                               }
                                                        }
                                                }
                                                break;
@@ -14457,6 +15087,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        var self = this,
                            cellEl = cell.getElement(),
                            initialValue = cell.getValue(),
+                           vertNav = editorParams.verticalNavigation || "editor",
                            initialDisplayValue = typeof initialValue !== "undefined" || initialValue === null ? initialValue : typeof editorParams.defaultValue !== "undefined" ? editorParams.defaultValue : "",
                            input = document.createElement("input"),
                            listEl = document.createElement("div"),
@@ -14749,32 +15380,38 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                switch (e.keyCode) {
                                        case 38:
                                                //up arrow
-                                               e.stopImmediatePropagation();
-                                               e.stopPropagation();
-                                               e.preventDefault();
-
                                                index = displayItems.indexOf(currentItem);
 
-                                               if (index > 0) {
-                                                       setCurrentItem(displayItems[index - 1]);
-                                               } else {
-                                                       setCurrentItem(false);
+                                               if (vertNav == "editor" || vertNav == "hybrid" && index) {
+                                                       e.stopImmediatePropagation();
+                                                       e.stopPropagation();
+                                                       e.preventDefault();
+
+                                                       if (index > 0) {
+                                                               setCurrentItem(displayItems[index - 1]);
+                                                       } else {
+                                                               setCurrentItem(false);
+                                                       }
                                                }
                                                break;
 
                                        case 40:
                                                //down arrow
-                                               e.stopImmediatePropagation();
-                                               e.stopPropagation();
-                                               e.preventDefault();
 
                                                index = displayItems.indexOf(currentItem);
 
-                                               if (index < displayItems.length - 1) {
-                                                       if (index == -1) {
-                                                               setCurrentItem(displayItems[0]);
-                                                       } else {
-                                                               setCurrentItem(displayItems[index + 1]);
+                                               if (vertNav == "editor" || vertNav == "hybrid" && index < displayItems.length - 1) {
+
+                                                       e.stopImmediatePropagation();
+                                                       e.stopPropagation();
+                                                       e.preventDefault();
+
+                                                       if (index < displayItems.length - 1) {
+                                                               if (index == -1) {
+                                                                       setCurrentItem(displayItems[0]);
+                                                               } else {
+                                                                       setCurrentItem(displayItems[index + 1]);
+                                                               }
                                                        }
                                                }
                                                break;
@@ -15222,7 +15859,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                this.filterList = []; //hold filter list
                this.headerFilters = {}; //hold column filters
-               this.headerFilterElements = []; //hold header filter elements for manipulation
                this.headerFilterColumns = []; //hold columns that use header filters
 
                this.changed = false; //has filtering changed since last render
@@ -15324,8 +15960,8 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                this.generateHeaderFilterElement(column);
        };
 
-       Filter.prototype.generateHeaderFilterElement = function (column, initialValue) {
-               var _this36 = this;
+       Filter.prototype.generateHeaderFilterElement = function (column, initialValue, reinitialize) {
+               var _this46 = this;
 
                var self = this,
                    success = column.modules.filter.success,
@@ -15342,18 +15978,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                function cancel() {}
 
                if (column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode) {
-                       var oldFilterElement = column.modules.filter.headerElement.parentNode;
-                       var oldFilterElementIndex = self.headerFilterElements.indexOf(oldFilterElement);
-                       if (oldFilterElementIndex >= 0) {
-                               self.headerFilterElements.splice(oldFilterElementIndex, 1);
-                       }
-
-                       var oldColumnIndex = self.headerFilterColumns.indexOf(oldColumnIndex);
-                       if (oldColumnIndex >= 0) {
-                               self.headerFilterColumns.splice(oldColumnIndex, 1);
-                       }
-
-                       column.contentElement.removeChild(oldFilterElement);
+                       column.contentElement.removeChild(column.modules.filter.headerElement.parentNode);
                }
 
                if (field) {
@@ -15461,11 +16086,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                });
 
                                editorElement.addEventListener("focus", function (e) {
-                                       var left = _this36.table.columnManager.element.scrollLeft;
+                                       var left = _this46.table.columnManager.element.scrollLeft;
 
-                                       if (left !== _this36.table.rowManager.element.scrollLeft) {
-                                               _this36.table.rowManager.scrollHorizontal(left);
-                                               _this36.table.columnManager.scrollHorizontal(left);
+                                       if (left !== _this46.table.rowManager.element.scrollLeft) {
+                                               _this46.table.rowManager.scrollHorizontal(left);
+                                               _this46.table.columnManager.scrollHorizontal(left);
                                        }
                                });
 
@@ -15518,8 +16143,9 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                                column.contentElement.appendChild(filterElement);
 
-                               self.headerFilterElements.push(editorElement);
-                               self.headerFilterColumns.push(column);
+                               if (!reinitialize) {
+                                       self.headerFilterColumns.push(column);
+                               }
                        }
                } else {
                        console.warn("Filter Error - Cannot add header filter, column has no field set:", column.definition.title);
@@ -15528,15 +16154,19 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        //hide all header filter elements (used to ensure correct column widths in "fitData" layout mode)
        Filter.prototype.hideHeaderFilterElements = function () {
-               this.headerFilterElements.forEach(function (element) {
-                       element.style.display = 'none';
+               this.headerFilterColumns.forEach(function (column) {
+                       if (column.modules.filter && column.modules.filter.headerElement) {
+                               column.modules.filter.headerElement.style.display = 'none';
+                       }
                });
        };
 
        //show all header filter elements (used to ensure correct column widths in "fitData" layout mode)
        Filter.prototype.showHeaderFilterElements = function () {
-               this.headerFilterElements.forEach(function (element) {
-                       element.style.display = '';
+               this.headerFilterColumns.forEach(function (column) {
+                       if (column.modules.filter && column.modules.filter.headerElement) {
+                               column.modules.filter.headerElement.style.display = '';
+                       }
                });
        };
 
@@ -15553,7 +16183,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        Filter.prototype.setHeaderFilterValue = function (column, value) {
                if (column) {
                        if (column.modules.filter && column.modules.filter.headerElement) {
-                               this.generateHeaderFilterElement(column, value);
+                               this.generateHeaderFilterElement(column, value, true);
                                column.modules.filter.success(value);
                        } else {
                                console.warn("Column Filter Error - No header filter set on column:", column.getField());
@@ -15564,7 +16194,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        Filter.prototype.reloadHeaderFilter = function (column) {
                if (column) {
                        if (column.modules.filter && column.modules.filter.headerElement) {
-                               this.generateHeaderFilterElement(column, column.modules.filter.value);
+                               this.generateHeaderFilterElement(column, column.modules.filter.value, true);
                        } else {
                                console.warn("Column Filter Error - No header filter set on column:", column.getField());
                        }
@@ -15610,7 +16240,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        }
                });
 
-               if (this.table.options.persistentFilter && this.table.modExists("persistence", true)) {
+               if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.filter) {
                        this.table.modules.persistence.save("filter");
                }
        };
@@ -15692,7 +16322,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        //filter to Object
        Filter.prototype.filtersToArray = function (filterList, ajax) {
-               var _this37 = this;
+               var _this47 = this;
 
                var output = [];
 
@@ -15700,7 +16330,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        var item;
 
                        if (Array.isArray(filter)) {
-                               output.push(_this37.filtersToArray(filter, ajax));
+                               output.push(_this47.filtersToArray(filter, ajax));
                        } else {
                                item = { field: filter.field, type: filter.type, value: filter.value };
 
@@ -15758,7 +16388,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        }
                });
 
-               if (this.table.options.persistentFilter && this.table.modExists("persistence", true)) {
+               if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.filter) {
                        this.table.modules.persistence.save("filter");
                }
        };
@@ -15773,7 +16403,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                this.changed = true;
 
-               if (this.table.options.persistentFilter && this.table.modExists("persistence", true)) {
+               if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.filter) {
                        this.table.modules.persistence.save("filter");
                }
        };
@@ -16010,8 +16640,8 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Format.prototype.cellRendered = function (cell) {
-               if (cell.column.modules.format.renderedCallback) {
-                       cell.column.modules.format.renderedCallback();
+               if (cell.modules.format && cell.modules.format.renderedCallback) {
+                       cell.modules.format.renderedCallback();
                }
        };
 
@@ -16021,7 +16651,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                    params = typeof cell.column.modules.format.params === "function" ? cell.column.modules.format.params(component) : cell.column.modules.format.params;
 
                function onRendered(callback) {
-                       cell.column.modules.format.renderedCallback = callback;
+                       if (!cell.modules.format) {
+                               cell.modules.format = {};
+                       }
+
+                       cell.modules.format.renderedCallback = callback;
                }
 
                return cell.column.modules.format.formatter.call(this, component, params, onRendered);
@@ -16133,6 +16767,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                link: function link(cell, formatterParams, onRendered) {
                        var value = cell.getValue(),
                            urlPrefix = formatterParams.urlPrefix || "",
+                           download = formatterParams.download,
                            label = value,
                            el = document.createElement("a"),
                            data;
@@ -16178,6 +16813,17 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                        el.setAttribute("target", formatterParams.target);
                                }
 
+                               if (formatterParams.download) {
+
+                                       if (typeof download == "function") {
+                                               download = download(cell);
+                                       } else {
+                                               download = download === true ? "" : download;
+                                       }
+
+                                       el.setAttribute("download", download);
+                               }
+
                                el.innerHTML = this.emptyToSpace(this.sanitizeHTML(label));
 
                                return el;
@@ -16483,7 +17129,36 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        element.setAttribute("aria-label", percentValue);
 
-                       return "<div style='position:relative; height:100%;'  data-max='" + max + "' data-min='" + min + "'><div style='position:relative; height:100%; width:calc(" + percentValue + "%); background-color:" + color + "; display:inline-block;'></div></div>" + (legend ? "<div style='position:absolute; top:4px; left:0; text-align:" + legendAlign + "; width:100%; color:" + legendColor + ";'>" + legend + "</div>" : "");
+                       var barEl = document.createElement("div");
+                       barEl.style.display = "inline-block";
+                       barEl.style.position = "relative";
+                       barEl.style.width = percentValue + "%";
+                       barEl.style.backgroundColor = color;
+                       barEl.style.height = "100%";
+
+                       barEl.setAttribute('data-max', max);
+                       barEl.setAttribute('data-min', min);
+
+                       if (legend) {
+                               var legendEl = document.createElement("div");
+                               legendEl.style.position = "absolute";
+                               legendEl.style.top = "4px";
+                               legendEl.style.left = 0;
+                               legendEl.style.textAlign = legendAlign;
+                               legendEl.style.width = "100%";
+                               legendEl.style.color = legendColor;
+                               legendEl.innerHTML = legend;
+                       }
+
+                       onRendered(function () {
+                               element.appendChild(barEl);
+
+                               if (legend) {
+                                       element.appendChild(legendEl);
+                               }
+                       });
+
+                       return "";
                },
 
                //background color
@@ -16516,47 +17191,43 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                responsiveCollapse: function responsiveCollapse(cell, formatterParams, onRendered) {
                        var self = this,
                            open = false,
-                           el = document.createElement("div");
-
-                       function toggleList(isOpen) {
-                               var collapse = cell.getRow().getElement().getElementsByClassName("tabulator-responsive-collapse")[0];
-
-                               open = isOpen;
-
-                               if (open) {
-                                       el.classList.add("open");
-                                       if (collapse) {
-                                               collapse.style.display = '';
-                                       }
-                               } else {
-                                       el.classList.remove("open");
-                                       if (collapse) {
-                                               collapse.style.display = 'none';
-                                       }
-                               }
-                       }
+                           el = document.createElement("div"),
+                           config = cell.getRow()._row.modules.responsiveLayout;
 
                        el.classList.add("tabulator-responsive-collapse-toggle");
                        el.innerHTML = "<span class='tabulator-responsive-collapse-toggle-open'>+</span><span class='tabulator-responsive-collapse-toggle-close'>-</span>";
 
                        cell.getElement().classList.add("tabulator-row-handle");
 
-                       if (self.table.options.responsiveLayoutCollapseStartOpen) {
-                               open = true;
+                       function toggleList(isOpen) {
+                               var collapseEl = config.element;
+
+                               config.open = isOpen;
+
+                               if (collapseEl) {
+
+                                       if (config.open) {
+                                               el.classList.add("open");
+                                               collapseEl.style.display = '';
+                                       } else {
+                                               el.classList.remove("open");
+                                               collapseEl.style.display = 'none';
+                                       }
+                               }
                        }
 
                        el.addEventListener("click", function (e) {
                                e.stopImmediatePropagation();
-                               toggleList(!open);
+                               toggleList(!config.open);
                        });
 
-                       toggleList(open);
+                       toggleList(config.open);
 
                        return el;
                },
 
                rowSelection: function rowSelection(cell) {
-                       var _this38 = this;
+                       var _this48 = this;
 
                        var checkbox = document.createElement("input");
 
@@ -16579,10 +17250,10 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                        this.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);
                                } else {
                                        checkbox.addEventListener("change", function (e) {
-                                               if (_this38.table.modules.selectRow.selectedRows.length) {
-                                                       _this38.table.deselectRow();
+                                               if (_this48.table.modules.selectRow.selectedRows.length) {
+                                                       _this48.table.deselectRow();
                                                } else {
-                                                       _this38.table.selectRow();
+                                                       _this48.table.selectRow();
                                                }
                                        });
 
@@ -16654,7 +17325,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        //quick layout to smooth horizontal scrolling
        FrozenColumns.prototype.scrollHorizontal = function () {
-               var _this39 = this;
+               var _this49 = this;
 
                var rows;
 
@@ -16663,7 +17334,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        //layout all rows after scroll is complete
                        this.scrollEndTimer = setTimeout(function () {
-                               _this39.layout();
+                               _this49.layout();
                        }, 100);
 
                        rows = this.table.rowManager.getVisibleRows();
@@ -16676,7 +17347,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        rows.forEach(function (row) {
                                if (row.type === "row") {
-                                       _this39.layoutRow(row);
+                                       _this49.layoutRow(row);
                                }
                        });
 
@@ -16710,40 +17381,40 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        //calculate column positions and layout headers
        FrozenColumns.prototype.layoutColumnPosition = function (allCells) {
-               var _this40 = this;
+               var _this50 = this;
 
                this.leftColumns.forEach(function (column, i) {
-                       column.modules.frozen.margin = _this40._calcSpace(_this40.leftColumns, i) + _this40.table.columnManager.scrollLeft + "px";
+                       column.modules.frozen.margin = _this50._calcSpace(_this50.leftColumns, i) + _this50.table.columnManager.scrollLeft + "px";
 
-                       if (i == _this40.leftColumns.length - 1) {
+                       if (i == _this50.leftColumns.length - 1) {
                                column.modules.frozen.edge = true;
                        } else {
                                column.modules.frozen.edge = false;
                        }
 
-                       _this40.layoutElement(column.getElement(), column);
+                       _this50.layoutElement(column.getElement(), column);
 
                        if (allCells) {
                                column.cells.forEach(function (cell) {
-                                       _this40.layoutElement(cell.getElement(), column);
+                                       _this50.layoutElement(cell.getElement(), column);
                                });
                        }
                });
 
                this.rightColumns.forEach(function (column, i) {
-                       column.modules.frozen.margin = _this40.rightPadding - _this40._calcSpace(_this40.rightColumns, i + 1) + "px";
+                       column.modules.frozen.margin = _this50.rightPadding - _this50._calcSpace(_this50.rightColumns, i + 1) + "px";
 
-                       if (i == _this40.rightColumns.length - 1) {
+                       if (i == _this50.rightColumns.length - 1) {
                                column.modules.frozen.edge = true;
                        } else {
                                column.modules.frozen.edge = false;
                        }
 
-                       _this40.layoutElement(column.getElement(), column);
+                       _this50.layoutElement(column.getElement(), column);
 
                        if (allCells) {
                                column.cells.forEach(function (cell) {
-                                       _this40.layoutElement(cell.getElement(), column);
+                                       _this50.layoutElement(cell.getElement(), column);
                                });
                        }
                });
@@ -16785,7 +17456,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        FrozenColumns.prototype.layoutRow = function (row) {
-               var _this41 = this;
+               var _this51 = this;
 
                var rowEl = row.getElement();
 
@@ -16796,7 +17467,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        var cell = row.getCell(column);
 
                        if (cell) {
-                               _this41.layoutElement(cell.getElement(), column);
+                               _this51.layoutElement(cell.getElement(), column);
                        }
                });
 
@@ -16804,7 +17475,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        var cell = row.getCell(column);
 
                        if (cell) {
-                               _this41.layoutElement(cell.getElement(), column);
+                               _this51.layoutElement(cell.getElement(), column);
                        }
                });
        };
@@ -17036,6 +17707,9 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Group.prototype.createElements = function () {
+               var arrow = document.createElement("div");
+               arrow.classList.add("tabulator-arrow");
+
                this.element = document.createElement("div");
                this.element.classList.add("tabulator-row");
                this.element.classList.add("tabulator-group");
@@ -17043,7 +17717,8 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                this.element.setAttribute("role", "rowgroup");
 
                this.arrowElement = document.createElement("div");
-               this.arrowElement.classList.add("tabulator-arrow");
+               this.arrowElement.classList.add("tabulator-group-toggle");
+               this.arrowElement.appendChild(arrow);
 
                //setup movable rows
                if (this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists("moveRow")) {
@@ -17052,12 +17727,12 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Group.prototype.createValueGroups = function () {
-               var _this42 = this;
+               var _this52 = this;
 
                var level = this.level + 1;
                if (this.groupManager.allowedValues && this.groupManager.allowedValues[level]) {
                        this.groupManager.allowedValues[level].forEach(function (value) {
-                               _this42._createGroup(value, level);
+                               _this52._createGroup(value, level);
                        });
                }
        };
@@ -17072,19 +17747,19 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                //handle group click events
                if (self.groupManager.table.options.groupClick) {
                        self.element.addEventListener("click", function (e) {
-                               self.groupManager.table.options.groupClick(e, self.getComponent());
+                               self.groupManager.table.options.groupClick.call(self.groupManager.table, e, self.getComponent());
                        });
                }
 
                if (self.groupManager.table.options.groupDblClick) {
                        self.element.addEventListener("dblclick", function (e) {
-                               self.groupManager.table.options.groupDblClick(e, self.getComponent());
+                               self.groupManager.table.options.groupDblClick.call(self.groupManager.table, e, self.getComponent());
                        });
                }
 
                if (self.groupManager.table.options.groupContext) {
                        self.element.addEventListener("contextmenu", function (e) {
-                               self.groupManager.table.options.groupContext(e, self.getComponent());
+                               self.groupManager.table.options.groupContext.call(self.groupManager.table, e, self.getComponent());
                        });
                }
 
@@ -17898,16 +18573,16 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                this.groupList.push(group);
        };
 
-       GroupRows.prototype.assignRowToGroup = function (row, oldGroups) {
-               var groupID = this.groupIDLookups[0].func(row.getData()),
-                   groupKey = "0_" + groupID;
+       // GroupRows.prototype.assignRowToGroup = function(row, oldGroups){
+       //      var groupID = this.groupIDLookups[0].func(row.getData()),
+       //      groupKey = "0_" + groupID;
 
-               if (!this.groups[groupKey]) {
-                       this.createGroup(groupID, 0, oldGroups);
-               }
+       //      if(!this.groups[groupKey]){
+       //              this.createGroup(groupID, 0, oldGroups);
+       //      }
 
-               this.groups[groupKey].addRow(row);
-       };
+       //      this.groups[groupKey].addRow(row);
+       // };
 
        GroupRows.prototype.assignRowToExistingGroup = function (row, oldGroups) {
                var groupID = this.groupIDLookups[0].func(row.getData()),
@@ -18343,14 +19018,14 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        HtmlTableExport.prototype.generateColumnGroupHeaders = function () {
-               var _this43 = this;
+               var _this53 = this;
 
                var output = [];
 
                var columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;
 
                columns.forEach(function (column) {
-                       var colData = _this43.processColumnGroup(column);
+                       var colData = _this53.processColumnGroup(column);
 
                        if (colData) {
                                output.push(colData);
@@ -18361,7 +19036,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        HtmlTableExport.prototype.processColumnGroup = function (column) {
-               var _this44 = this;
+               var _this54 = this;
 
                var subGroups = column.columns,
                    maxDepth = 0;
@@ -18377,7 +19052,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        groupData.width = 0;
 
                        subGroups.forEach(function (subGroup) {
-                               var subGroupData = _this44.processColumnGroup(subGroup);
+                               var subGroupData = _this54.processColumnGroup(subGroup);
 
                                if (subGroupData) {
                                        groupData.width += subGroupData.width;
@@ -18444,7 +19119,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        HtmlTableExport.prototype.generateHeaderElements = function () {
-               var _this45 = this;
+               var _this55 = this;
 
                var headerEl = document.createElement("thead");
 
@@ -18453,25 +19128,30 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                rows.forEach(function (row) {
                        var rowEl = document.createElement("tr");
 
-                       _this45.mapElementStyles(_this45.table.columnManager.getHeadersElement(), headerEl, ["border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
+                       _this55.mapElementStyles(_this55.table.columnManager.getHeadersElement(), headerEl, ["border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
 
                        row.forEach(function (column) {
                                var cellEl = document.createElement("th");
+                               var classNames = column.column.definition.cssClass ? column.column.definition.cssClass.split(" ") : [];
 
                                cellEl.colSpan = column.width;
                                cellEl.rowSpan = column.height;
 
                                cellEl.innerHTML = column.column.definition.title;
 
-                               if (_this45.cloneTableStyle) {
+                               if (_this55.cloneTableStyle) {
                                        cellEl.style.boxSizing = "border-box";
                                }
 
-                               _this45.mapElementStyles(column.column.getElement(), cellEl, ["text-align", "border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
-                               _this45.mapElementStyles(column.column.contentElement, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom"]);
+                               classNames.forEach(function (className) {
+                                       cellEl.classList.add(className);
+                               });
+
+                               _this55.mapElementStyles(column.column.getElement(), cellEl, ["text-align", "border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
+                               _this55.mapElementStyles(column.column.contentElement, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom"]);
 
                                if (column.column.visible) {
-                                       _this45.mapElementStyles(column.column.getElement(), cellEl, ["width"]);
+                                       _this55.mapElementStyles(column.column.getElement(), cellEl, ["width"]);
                                } else {
                                        if (column.column.definition.width) {
                                                cellEl.style.width = column.column.definition.width + "px";
@@ -18479,7 +19159,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                }
 
                                if (column.column.parent) {
-                                       _this45.mapElementStyles(column.column.parent.groupElement, cellEl, ["border-top"]);
+                                       _this55.mapElementStyles(column.column.parent.groupElement, cellEl, ["border-top"]);
                                }
 
                                rowEl.appendChild(cellEl);
@@ -18492,7 +19172,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        HtmlTableExport.prototype.generateBodyElements = function (visible) {
-               var _this46 = this;
+               var _this56 = this;
 
                var oddRow, evenRow, calcRow, firstRow, firstCell, firstGroup, lastCell, styleCells, styleRow;
 
@@ -18527,7 +19207,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                }
 
                this.table.columnManager.columnsByIndex.forEach(function (column) {
-                       if (_this46.columnVisCheck(column)) {
+                       if (_this56.columnVisCheck(column)) {
                                columns.push(column);
                        }
                });
@@ -18535,11 +19215,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                rows = rows.filter(function (row) {
                        switch (row.type) {
                                case "group":
-                                       return _this46.config.rowGroups !== false;
+                                       return _this56.config.rowGroups !== false;
                                        break;
 
                                case "calc":
-                                       return _this46.config.columnCalcs !== false;
+                                       return _this56.config.columnCalcs !== false;
                                        break;
                        }
 
@@ -18564,8 +19244,8 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                                        rowEl.classList.add("tabulator-print-table-group");
 
-                                       _this46.mapElementStyles(firstGroup, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]);
-                                       _this46.mapElementStyles(firstGroup, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom"]);
+                                       _this56.mapElementStyles(firstGroup, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]);
+                                       _this56.mapElementStyles(firstGroup, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom"]);
                                        rowEl.appendChild(cellEl);
                                        break;
 
@@ -18579,11 +19259,12 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                                var value = column.getFieldValue(rowData);
 
                                                var cellWrapper = {
+                                                       modules: {},
                                                        getValue: function getValue() {
                                                                return value;
                                                        },
                                                        getField: function getField() {
-                                                               return column.defi;
+                                                               return column.definition.field;
                                                        },
                                                        getElement: function getElement() {
                                                                return cellEl;
@@ -18603,8 +19284,14 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                                        column: column
                                                };
 
-                                               if (_this46.table.modExists("format")) {
-                                                       value = _this46.table.modules.format.formatValue(cellWrapper);
+                                               var classNames = column.definition.cssClass ? column.definition.cssClass.split(" ") : [];
+
+                                               classNames.forEach(function (className) {
+                                                       cellEl.classList.add(className);
+                                               });
+
+                                               if (_this56.table.modExists("format")) {
+                                                       value = _this56.table.modules.format.formatValue(cellWrapper);
                                                } else {
                                                        switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
                                                                case "object":
@@ -18628,7 +19315,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                                }
 
                                                if (firstCell) {
-                                                       _this46.mapElementStyles(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", "text-align"]);
+                                                       _this56.mapElementStyles(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", "text-align"]);
                                                }
 
                                                rowEl.appendChild(cellEl);
@@ -18636,7 +19323,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                                        styleRow = row.type == "calc" ? calcRow : i % 2 && evenRow ? evenRow : oddRow;
 
-                                       _this46.mapElementStyles(styleRow, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]);
+                                       _this56.mapElementStyles(styleRow, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]);
                                        break;
                        }
 
@@ -18725,13 +19412,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Keybindings.prototype.mapBindings = function (bindings) {
-               var _this47 = this;
+               var _this57 = this;
 
                var self = this;
 
                var _loop2 = function _loop2(key) {
 
-                       if (_this47.actions[key]) {
+                       if (_this57.actions[key]) {
 
                                if (bindings[key]) {
 
@@ -19990,7 +20677,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        //apply mutator to row
-       Mutator.prototype.transformRow = function (data, type, update) {
+       Mutator.prototype.transformRow = function (data, type, updatedData) {
                var self = this,
                    key = "mutator" + (type.charAt(0).toUpperCase() + type.slice(1)),
                    value;
@@ -20003,10 +20690,10 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                if (column.modules.mutate) {
                                        mutator = column.modules.mutate[key] || column.modules.mutate.mutator || false;
 
-                                       if (mutator) {
-                                               value = column.getFieldValue(data);
+                                       if (mutator && updatedData) {
+                                               value = column.getFieldValue(updatedData);
 
-                                               if (!update || update && typeof value !== "undefined") {
+                                               if (typeof value !== "undefined") {
                                                        component = column.getComponent();
                                                        params = typeof mutator.params === "function" ? mutator.params(value, data, type, component) : mutator.params;
                                                        column.setFieldValue(data, mutator.mutator(value, data, type, params, component));
@@ -20021,10 +20708,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        //apply mutator to new cell value
        Mutator.prototype.transformCell = function (cell, value) {
-               var mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false;
+               var mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false,
+                   tempData = {};
 
                if (mutator) {
-                       return mutator.mutator(value, cell.row.getData(), "edit", mutator.params, cell.getComponent());
+                       tempData = Object.assign(tempData, cell.row.getData());
+                       cell.column.setFieldValue(tempData, value);
+                       return mutator.mutator(value, tempData, "edit", mutator.params, cell.getComponent());
                } else {
                        return value;
                }
@@ -20097,7 +20787,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Page.prototype.generatePageSizeSelectList = function () {
-               var _this48 = this;
+               var _this58 = this;
 
                var pageSizes = [];
 
@@ -20132,7 +20822,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                itemEl.value = item;
                                itemEl.innerHTML = item;
 
-                               _this48.pageSizeSelect.appendChild(itemEl);
+                               _this58.pageSizeSelect.appendChild(itemEl);
                        });
 
                        this.pageSizeSelect.value = this.size;
@@ -20244,7 +20934,9 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                //set default values
                self.mode = self.table.options.pagination;
+
                self.size = self.table.options.paginationSize || Math.floor(self.table.rowManager.getElement().clientHeight / 24);
+               // self.page = self.table.options.paginationInitialPage || 1;
                self.count = self.table.options.paginationButtonCount;
 
                self.generatePageSizeSelectList();
@@ -20300,38 +20992,44 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        //set current page number
        Page.prototype.setPage = function (page) {
-               var _this49 = this;
+               var _this59 = this;
+
+               var self = this;
 
                return new Promise(function (resolve, reject) {
 
                        page = parseInt(page);
 
-                       if (page > 0 && page <= _this49.max) {
-                               _this49.page = page;
-                               _this49.trigger().then(function () {
+                       if (page > 0 && page <= _this59.max) {
+                               _this59.page = page;
+                               _this59.trigger().then(function () {
                                        resolve();
                                }).catch(function () {
                                        reject();
                                });
+
+                               if (self.table.options.persistence && self.table.modExists("persistence", true) && self.table.modules.persistence.config.page) {
+                                       self.table.modules.persistence.save("page");
+                               }
                        } else {
-                               console.warn("Pagination Error - Requested page is out of range of 1 - " + _this49.max + ":", page);
+                               console.warn("Pagination Error - Requested page is out of range of 1 - " + _this59.max + ":", page);
                                reject();
                        }
                });
        };
 
        Page.prototype.setPageToRow = function (row) {
-               var _this50 = this;
+               var _this60 = this;
 
                return new Promise(function (resolve, reject) {
 
-                       var rows = _this50.table.rowManager.getDisplayRows(_this50.displayIndex - 1);
+                       var rows = _this60.table.rowManager.getDisplayRows(_this60.displayIndex - 1);
                        var index = rows.indexOf(row);
 
                        if (index > -1) {
-                               var page = Math.ceil((index + 1) / _this50.size);
+                               var page = Math.ceil((index + 1) / _this60.size);
 
-                               _this50.setPage(page).then(function () {
+                               _this60.setPage(page).then(function () {
                                        resolve();
                                }).catch(function () {
                                        reject();
@@ -20354,6 +21052,10 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        // this.pageSizeSelect.value = size;
                        this.generatePageSizeSelectList();
                }
+
+               if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.page) {
+                       this.table.modules.persistence.save("page");
+               }
        };
 
        //setup the pagination buttons
@@ -20417,12 +21119,12 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        //previous page
        Page.prototype.previousPage = function () {
-               var _this51 = this;
+               var _this61 = this;
 
                return new Promise(function (resolve, reject) {
-                       if (_this51.page > 1) {
-                               _this51.page--;
-                               _this51.trigger().then(function () {
+                       if (_this61.page > 1) {
+                               _this61.page--;
+                               _this61.trigger().then(function () {
                                        resolve();
                                }).catch(function () {
                                        reject();
@@ -20436,19 +21138,19 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        //next page
        Page.prototype.nextPage = function () {
-               var _this52 = this;
+               var _this62 = this;
 
                return new Promise(function (resolve, reject) {
-                       if (_this52.page < _this52.max) {
-                               _this52.page++;
-                               _this52.trigger().then(function () {
+                       if (_this62.page < _this62.max) {
+                               _this62.page++;
+                               _this62.trigger().then(function () {
                                        resolve();
                                }).catch(function () {
                                        reject();
                                });
                        } else {
-                               if (!_this52.progressiveLoad) {
-                                       console.warn("Pagination Error - Next page would be greater than maximum page of " + _this52.max + ":", _this52.max + 1);
+                               if (!_this62.progressiveLoad) {
+                                       console.warn("Pagination Error - Next page would be greater than maximum page of " + _this62.max + ":", _this62.max + 1);
                                }
                                reject();
                        }
@@ -20500,28 +21202,28 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Page.prototype.trigger = function () {
-               var _this53 = this;
+               var _this63 = this;
 
                var left;
 
                return new Promise(function (resolve, reject) {
 
-                       switch (_this53.mode) {
+                       switch (_this63.mode) {
                                case "local":
-                                       left = _this53.table.rowManager.scrollLeft;
+                                       left = _this63.table.rowManager.scrollLeft;
 
-                                       _this53.table.rowManager.refreshActiveData("page");
-                                       _this53.table.rowManager.scrollHorizontal(left);
+                                       _this63.table.rowManager.refreshActiveData("page");
+                                       _this63.table.rowManager.scrollHorizontal(left);
 
-                                       _this53.table.options.pageLoaded.call(_this53.table, _this53.getPage());
+                                       _this63.table.options.pageLoaded.call(_this63.table, _this63.getPage());
                                        resolve();
                                        break;
 
                                case "remote":
                                case "progressive_load":
                                case "progressive_scroll":
-                                       _this53.table.modules.ajax.blockActiveRequest();
-                                       _this53._getRemotePage().then(function () {
+                                       _this63.table.modules.ajax.blockActiveRequest();
+                                       _this63._getRemotePage().then(function () {
                                                resolve();
                                        }).catch(function () {
                                                reject();
@@ -20529,14 +21231,14 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                        break;
 
                                default:
-                                       console.warn("Pagination Error - no such pagination mode:", _this53.mode);
+                                       console.warn("Pagination Error - no such pagination mode:", _this63.mode);
                                        reject();
                        }
                });
        };
 
        Page.prototype._getRemotePage = function () {
-               var _this54 = this;
+               var _this64 = this;
 
                var self = this,
                    oldParams,
@@ -20553,33 +21255,33 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        pageParams = self.table.modules.ajax.getParams();
 
                        //configure request params
-                       pageParams[_this54.paginationDataSentNames.page] = self.page;
+                       pageParams[_this64.paginationDataSentNames.page] = self.page;
 
                        //set page size if defined
-                       if (_this54.size) {
-                               pageParams[_this54.paginationDataSentNames.size] = _this54.size;
+                       if (_this64.size) {
+                               pageParams[_this64.paginationDataSentNames.size] = _this64.size;
                        }
 
                        //set sort data if defined
-                       if (_this54.table.options.ajaxSorting && _this54.table.modExists("sort")) {
+                       if (_this64.table.options.ajaxSorting && _this64.table.modExists("sort")) {
                                var sorters = self.table.modules.sort.getSort();
 
                                sorters.forEach(function (item) {
                                        delete item.column;
                                });
 
-                               pageParams[_this54.paginationDataSentNames.sorters] = sorters;
+                               pageParams[_this64.paginationDataSentNames.sorters] = sorters;
                        }
 
                        //set filter data if defined
-                       if (_this54.table.options.ajaxFiltering && _this54.table.modExists("filter")) {
+                       if (_this64.table.options.ajaxFiltering && _this64.table.modExists("filter")) {
                                var filters = self.table.modules.filter.getFilters(true, true);
-                               pageParams[_this54.paginationDataSentNames.filters] = filters;
+                               pageParams[_this64.paginationDataSentNames.filters] = filters;
                        }
 
                        self.table.modules.ajax.setParams(pageParams);
 
-                       self.table.modules.ajax.sendRequest(_this54.progressiveLoad).then(function (data) {
+                       self.table.modules.ajax.sendRequest(_this64.progressiveLoad).then(function (data) {
                                self._parseRemoteData(data);
                                resolve();
                        }).catch(function (e) {
@@ -20681,7 +21383,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                this.table = table; //hold Tabulator object
                this.mode = "";
                this.id = "";
-               this.persistProps = ["field", "width", "visible"];
+               // this.persistProps = ["field", "width", "visible"];
+               this.defWatcherBlock = false;
+               this.config = {};
+               this.readFunc = false;
+               this.writeFunc = false;
        };
 
        // Test for whether localStorage is available for use.
@@ -20698,63 +21404,151 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        //setup parameters
-       Persistence.prototype.initialize = function (mode, id) {
+       Persistence.prototype.initialize = function () {
                //determine persistent layout storage type
 
+               var mode = this.table.options.persistenceMode,
+                   id = this.table.options.persistenceID,
+                   retreivedData;
+
                this.mode = mode !== true ? mode : this.localStorageTest() ? "local" : "cookie";
 
+               if (this.table.options.persistenceReaderFunc) {
+                       if (typeof this.table.options.persistenceReaderFunc === "function") {
+                               this.readFunc = this.table.options.persistenceReaderFunc;
+                       } else {
+                               if (this.readers[this.table.options.persistenceReaderFunc]) {
+                                       this.readFunc = this.readers[this.table.options.persistenceReaderFunc];
+                               } else {
+                                       console.warn("Persistence Read Error - invalid reader set", this.table.options.persistenceReaderFunc);
+                               }
+                       }
+               } else {
+                       if (this.readers[this.mode]) {
+                               this.readFunc = this.readers[this.mode];
+                       } else {
+                               console.warn("Persistence Read Error - invalid reader set", this.mode);
+                       }
+               }
+
+               if (this.table.options.persistenceWriterFunc) {
+                       if (typeof this.table.options.persistenceWriterFunc === "function") {
+                               this.writeFunc = this.table.options.persistenceWriterFunc;
+                       } else {
+                               if (this.readers[this.table.options.persistenceWriterFunc]) {
+                                       this.writeFunc = this.readers[this.table.options.persistenceWriterFunc];
+                               } else {
+                                       console.warn("Persistence Write Error - invalid reader set", this.table.options.persistenceWriterFunc);
+                               }
+                       }
+               } else {
+                       if (this.writers[this.mode]) {
+                               this.writeFunc = this.writers[this.mode];
+                       } else {
+                               console.warn("Persistence Write Error - invalid writer set", this.mode);
+                       }
+               }
+
                //set storage tag
                this.id = "tabulator-" + (id || this.table.element.getAttribute("id") || "");
-       };
 
-       //load saved definitions
-       Persistence.prototype.load = function (type, current) {
+               this.config = {
+                       sort: this.table.options.persistence === true || this.table.options.persistence.sort,
+                       filter: this.table.options.persistence === true || this.table.options.persistence.filter,
+                       group: this.table.options.persistence === true || this.table.options.persistence.group,
+                       page: this.table.options.persistence === true || this.table.options.persistence.page,
+                       columns: this.table.options.persistence === true ? ["title", "width", "visible"] : this.table.options.persistence.columns
+               };
 
-               var data = this.retreiveData(type);
+               //load pagination data if needed
+               if (this.config.page) {
+                       retreivedData = this.retreiveData("page");
 
-               if (current) {
-                       data = data ? this.mergeDefinition(current, data) : current;
+                       if (retreivedData) {
+                               if (typeof retreivedData.paginationSize !== "undefined" && (this.config.page === true || this.config.page.size)) {
+                                       this.table.options.paginationSize = retreivedData.paginationSize;
+                               }
+
+                               if (typeof retreivedData.paginationInitialPage !== "undefined" && (this.config.page === true || this.config.page.page)) {
+                                       this.table.options.paginationInitialPage = retreivedData.paginationInitialPage;
+                               }
+                       }
                }
 
-               return data;
-       };
+               //load group data if needed
+               if (this.config.group) {
+                       retreivedData = this.retreiveData("group");
 
-       //retreive data from memory
-       Persistence.prototype.retreiveData = function (type) {
-               var data = "",
-                   id = this.id + (type === "columns" ? "" : "-" + type);
+                       if (retreivedData) {
+                               if (typeof retreivedData.groupBy !== "undefined" && (this.config.group === true || this.config.group.groupBy)) {
+                                       this.table.options.groupBy = retreivedData.groupBy;
+                               }
+                               if (typeof retreivedData.groupStartOpen !== "undefined" && (this.config.group === true || this.config.group.groupStartOpen)) {
+                                       this.table.options.groupStartOpen = retreivedData.groupStartOpen;
+                               }
+                               if (typeof retreivedData.groupHeader !== "undefined" && (this.config.group === true || this.config.group.groupHeader)) {
+                                       this.table.options.groupHeader = retreivedData.groupHeader;
+                               }
+                       }
+               }
+       };
 
-               switch (this.mode) {
-                       case "local":
-                               data = localStorage.getItem(id);
-                               break;
+       Persistence.prototype.initializeColumn = function (column) {
+               var self = this,
+                   def,
+                   keys;
 
-                       case "cookie":
+               if (this.config.columns) {
+                       this.defWatcherBlock = true;
 
-                               //find cookie
-                               var cookie = document.cookie,
-                                   cookiePos = cookie.indexOf(id + "="),
-                                   end = void 0;
+                       def = column.getDefinition();
 
-                               //if cookie exists, decode and load column data into tabulator
-                               if (cookiePos > -1) {
-                                       cookie = cookie.substr(cookiePos);
+                       keys = this.config.columns === true ? Object.keys(def) : this.config.columns;
 
-                                       end = cookie.indexOf(";");
+                       keys.forEach(function (key) {
+                               var props = Object.getOwnPropertyDescriptor(def, key);
+                               var value = def[key];
+                               if (props) {
+                                       Object.defineProperty(def, key, {
+                                               set: function set(newValue) {
+                                                       value = newValue;
 
-                                       if (end > -1) {
-                                               cookie = cookie.substr(0, end);
-                                       }
+                                                       if (!self.defWatcherBlock) {
+                                                               self.save("columns");
+                                                       }
 
-                                       data = cookie.replace(id + "=", "");
+                                                       if (props.set) {
+                                                               props.set(newValue);
+                                                       }
+                                               },
+                                               get: function get() {
+                                                       if (props.get) {
+                                                               props.get();
+                                                       }
+                                                       return value;
+                                               }
+                                       });
                                }
-                               break;
+                       });
 
-                       default:
-                               console.warn("Persistence Load Error - invalid mode selected", this.mode);
+                       this.defWatcherBlock = false;
+               }
+       };
+
+       //load saved definitions
+       Persistence.prototype.load = function (type, current) {
+               var data = this.retreiveData(type);
+
+               if (current) {
+                       data = data ? this.mergeDefinition(current, data) : current;
                }
 
-               return data ? JSON.parse(data) : false;
+               return data;
+       };
+
+       //retreive data from memory
+       Persistence.prototype.retreiveData = function (type) {
+               return this.readFunc ? this.readFunc(this.id, type) : false;
        };
 
        //merge old and new column definitions
@@ -20767,12 +21561,23 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                newCols.forEach(function (column, to) {
 
-                       var from = self._findColumn(oldCols, column);
+                       var from = self._findColumn(oldCols, column),
+                           keys;
 
                        if (from) {
 
-                               from.width = column.width;
-                               from.visible = column.visible;
+                               if (self.config.columns === true) {
+                                       keys = Object.keys(from);
+                                       keys.push("width");
+                               } else {
+                                       keys = self.config.columns;
+                               }
+
+                               keys.forEach(function (key) {
+                                       if (typeof column[key] !== "undefined") {
+                                               from[key] = column[key];
+                                       }
+                               });
 
                                if (from.columns) {
                                        from.columns = self.mergeDefinition(from.columns, column.columns);
@@ -20781,6 +21586,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                output.push(from);
                        }
                });
+
                oldCols.forEach(function (column, i) {
                        var from = self._findColumn(newCols, column);
                        if (!from) {
@@ -20832,11 +21638,19 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        case "sort":
                                data = this.validateSorters(this.table.modules.sort.getSort());
                                break;
-               }
 
-               var id = this.id + (type === "columns" ? "" : "-" + type);
+                       case "group":
+                               data = this.getGroupConfig();
+                               break;
+
+                       case "page":
+                               data = this.getPageConfig();
+                               break;
+               }
 
-               this.saveData(id, data);
+               if (this.writeFunc) {
+                       this.writeFunc(this.id, type, data);
+               }
        };
 
        //ensure sorters contain no function data
@@ -20849,53 +21663,129 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                return data;
        };
 
-       //save data to chosed medium
-       Persistence.prototype.saveData = function (id, data) {
+       Persistence.prototype.getGroupConfig = function () {
+               if (this.config.group) {
+                       if (this.config.group === true || this.config.group.groupBy) {
+                               data.groupBy = this.table.options.groupBy;
+                       }
 
-               data = JSON.stringify(data);
+                       if (this.config.group === true || this.config.group.groupStartOpen) {
+                               data.groupStartOpen = this.table.options.groupStartOpen;
+                       }
 
-               switch (this.mode) {
-                       case "local":
-                               localStorage.setItem(id, data);
-                               break;
+                       if (this.config.group === true || this.config.group.groupHeader) {
+                               data.groupHeader = this.table.options.groupHeader;
+                       }
+               }
+
+               return data;
+       };
 
-                       case "cookie":
-                               var expireDate = new Date();
-                               expireDate.setDate(expireDate.getDate() + 10000);
+       Persistence.prototype.getPageConfig = function () {
+               var data = {};
 
-                               //save cookie
-                               document.cookie = id + "=" + data + "; expires=" + expireDate.toUTCString();
-                               break;
+               if (this.config.page) {
+                       if (this.config.page === true || this.config.page.size) {
+                               data.paginationSize = this.table.modules.page.getPageSize();
+                       }
 
-                       default:
-                               console.warn("Persistence Save Error - invalid mode selected", this.mode);
+                       if (this.config.page === true || this.config.page.page) {
+                               data.paginationInitialPage = this.table.modules.page.getPage();
+                       }
                }
+
+               return data;
        };
 
-       //build permission list
+       //parse columns for data to store
        Persistence.prototype.parseColumns = function (columns) {
                var self = this,
                    definitions = [];
 
                columns.forEach(function (column) {
-                       var def = {};
+                       var defStore = {},
+                           colDef = column.getDefinition(),
+                           keys;
 
                        if (column.isGroup) {
-                               def.title = column.getDefinition().title;
-                               def.columns = self.parseColumns(column.getColumns());
+                               defStore.title = colDef.title;
+                               defStore.columns = self.parseColumns(column.getColumns());
                        } else {
-                               def.title = column.getDefinition().title;
-                               def.field = column.getField();
-                               def.width = column.getWidth();
-                               def.visible = column.visible;
+                               defStore.field = column.getField();
+
+                               if (self.config.columns === true) {
+                                       keys = Object.keys(colDef);
+                                       keys.push("width");
+                               } else {
+                                       keys = self.config.columns;
+                               }
+
+                               keys.forEach(function (key) {
+
+                                       switch (key) {
+                                               case "width":
+                                                       defStore.width = column.getWidth();
+                                                       break;
+                                               case "visible":
+                                                       defStore.visible = column.visible;
+                                                       break;
+
+                                               default:
+                                                       defStore[key] = colDef[key];
+                                       }
+                               });
                        }
 
-                       definitions.push(def);
+                       definitions.push(defStore);
                });
 
                return definitions;
        };
 
+       // read peristence information from storage
+       Persistence.prototype.readers = {
+               local: function local(id, type) {
+                       var data = localStorage.getItem(id + "-" + type);
+
+                       return data ? JSON.parse(data) : false;
+               },
+               cookie: function cookie(id, type) {
+                       var cookie = document.cookie,
+                           key = id + "-" + type,
+                           cookiePos = cookie.indexOf(key + "="),
+                           end;
+
+                       //if cookie exists, decode and load column data into tabulator
+                       if (cookiePos > -1) {
+                               cookie = cookie.substr(cookiePos);
+
+                               end = cookie.indexOf(";");
+
+                               if (end > -1) {
+                                       cookie = cookie.substr(0, end);
+                               }
+
+                               data = cookie.replace(key + "=", "");
+                       }
+
+                       return data ? JSON.parse(data) : false;
+               }
+       };
+
+       //write persistence information to storage
+       Persistence.prototype.writers = {
+               local: function local(id, type, data) {
+                       localStorage.setItem(id + "-" + type, JSON.stringify(data));
+               },
+               cookie: function cookie(id, type, data) {
+                       var expireDate = new Date();
+
+                       expireDate.setDate(expireDate.getDate() + 10000);
+
+                       document.cookie = id + "_" + type + "=" + JSON.stringify(data) + "; expires=" + expireDate.toUTCString();
+               }
+       };
+
        Tabulator.prototype.registerModule("persistence", Persistence);
 
        var Print = function Print(table) {
@@ -21275,6 +22165,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                var col = column.getLastColumn();
 
                                if (col && self._checkResizability(col)) {
+                                       e.stopPropagation();
                                        col.reinitializeWidth(true);
                                }
                        });
@@ -21313,6 +22204,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                        prevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;
 
                                        if (prevColumn && self._checkResizability(prevColumn)) {
+                                               e.stopPropagation();
                                                prevColumn.reinitializeWidth(true);
                                        }
                                }
@@ -21361,7 +22253,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        self.table.element.classList.remove("tabulator-block-select");
 
-                       if (self.table.options.persistentLayout && self.table.modExists("persistence", true)) {
+                       if (self.table.options.persistence && self.table.modExists("persistence", true) && self.table.modules.persistence.config.columns) {
                                self.table.modules.persistence.save("columns");
                        }
 
@@ -21413,8 +22305,8 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        self._mouseDown(e, row, handle);
                };
 
-               handle.addEventListener("mousedown", handleDown, { passive: true });
-               handle.addEventListener("touchstart", handleDown);
+               handle.addEventListener("mousedown", handleDown);
+               handle.addEventListener("touchstart", handleDown, { passive: true });
 
                prevHandle.addEventListener("click", function (e) {
                        e.stopPropagation();
@@ -21493,13 +22385,17 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                if (typeof ResizeObserver !== "undefined" && table.rowManager.getRenderMode() === "virtual") {
                        this.observer = new ResizeObserver(function (entry) {
-                               table.redraw();
+                               if (!table.browserMobile || browserMobile && !table.modules.edit.currentCell) {
+                                       table.redraw();
+                               }
                        });
 
                        this.observer.observe(table.element);
                } else {
                        this.binding = function () {
-                               table.redraw();
+                               if (!table.browserMobile || browserMobile && !table.modules.edit.currentCell) {
+                                       table.redraw();
+                               }
                        };
 
                        window.addEventListener("resize", this.binding);
@@ -21525,6 +22421,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                this.index = 0;
                this.collapseFormatter = [];
                this.collapseStartOpen = true;
+               this.collapseHandleColumn = false;
        };
 
        //generate resposive columns list
@@ -21563,6 +22460,35 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                if (this.mode === "collapse") {
                        this.generateCollapsedContent();
                }
+
+               //assign collapse column
+               for (var _iterator = this.table.columnManager.columnsByIndex, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
+                       var _ref;
+
+                       if (_isArray) {
+                               if (_i >= _iterator.length) break;
+                               _ref = _iterator[_i++];
+                       } else {
+                               _i = _iterator.next();
+                               if (_i.done) break;
+                               _ref = _i.value;
+                       }
+
+                       var col = _ref;
+
+                       if (col.definition.formatter == "responsiveCollapse") {
+                               this.collapseHandleColumn = col;
+                               break;
+                       }
+               }
+
+               if (this.collapseHandleColumn) {
+                       if (this.hiddenColumns.length) {
+                               this.collapseHandleColumn.show();
+                       } else {
+                               this.collapseHandleColumn.hide();
+                       }
+               }
        };
 
        //define layout information
@@ -21572,23 +22498,29 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                column.modules.responsive = { order: typeof def.responsive === "undefined" ? 1 : def.responsive, visible: def.visible === false ? false : true };
        };
 
-       ResponsiveLayout.prototype.layoutRow = function (row) {
-               var rowEl = row.getElement(),
-                   el = document.createElement("div");
+       ResponsiveLayout.prototype.initializeRow = function (row) {
+               var el;
 
-               el.classList.add("tabulator-responsive-collapse");
+               if (row.type !== "calc") {
+                       el = document.createElement("div");
+                       el.classList.add("tabulator-responsive-collapse");
 
-               if (!rowEl.classList.contains("tabulator-calcs")) {
                        row.modules.responsiveLayout = {
-                               element: el
+                               element: el,
+                               open: this.collapseStartOpen
                        };
 
                        if (!this.collapseStartOpen) {
                                el.style.display = 'none';
                        }
+               }
+       };
 
-                       rowEl.appendChild(el);
+       ResponsiveLayout.prototype.layoutRow = function (row) {
+               var rowEl = row.getElement();
 
+               if (row.modules.responsiveLayout) {
+                       rowEl.appendChild(row.modules.responsiveLayout.element);
                        this.generateCollapsedRowContent(row);
                }
        };
@@ -21603,11 +22535,17 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        ResponsiveLayout.prototype.hideColumn = function (column) {
+               var colCount = this.hiddenColumns.length;
+
                column.hide(false, true);
 
                if (this.mode === "collapse") {
                        this.hiddenColumns.unshift(column);
                        this.generateCollapsedContent();
+
+                       if (this.collapseHandleColumn && !colCount) {
+                               this.collapseHandleColumn.show();
+                       }
                }
        };
 
@@ -21626,6 +22564,10 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        }
 
                        this.generateCollapsedContent();
+
+                       if (this.collapseHandleColumn && !this.hiddenColumns.length) {
+                               this.collapseHandleColumn.hide();
+                       }
                }
        };
 
@@ -21642,10 +22584,10 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        if (diff < 0) {
                                //table is too wide
-                               var column = self.columns[self.index];
+                               var _column = self.columns[self.index];
 
-                               if (column) {
-                                       self.hideColumn(column);
+                               if (_column) {
+                                       self.hideColumn(_column);
                                        self.index++;
                                } else {
                                        working = false;
@@ -21653,12 +22595,12 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        } else {
 
                                //table has spare space
-                               var _column = self.columns[self.index - 1];
+                               var _column2 = self.columns[self.index - 1];
 
-                               if (_column) {
+                               if (_column2) {
                                        if (diff > 0) {
-                                               if (diff >= _column.getWidth()) {
-                                                       self.showColumn(_column);
+                                               if (diff >= _column2.getWidth()) {
+                                                       self.showColumn(_column2);
                                                        self.index--;
                                                } else {
                                                        working = false;
@@ -21815,10 +22757,8 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        if (self.table.options.selectable && self.table.options.selectable != "highlight") {
                                if (self.table.options.selectableRangeMode === "click") {
                                        element.addEventListener("click", function (e) {
-
-                                               self.table._clearSelection();
-
                                                if (e.shiftKey) {
+                                                       self.table._clearSelection();
                                                        self.lastClickedRow = self.lastClickedRow || row;
 
                                                        var lastClickedRowIdx = self.table.rowManager.getDisplayRowIndex(self.lastClickedRow);
@@ -21855,6 +22795,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                                                                self.selectRows(toggledRows);
                                                        }
+                                                       self.table._clearSelection();
                                                } else if (e.ctrlKey || e.metaKey) {
                                                        self.toggleRow(row);
                                                        self.lastClickedRow = row;
@@ -21863,8 +22804,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                                        self.selectRows(row);
                                                        self.lastClickedRow = row;
                                                }
-
-                                               self.table._clearSelection();
                                        });
                                } else {
                                        element.addEventListener("click", function (e) {
@@ -21932,36 +22871,43 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        //select a number of rows
        SelectRow.prototype.selectRows = function (rows) {
-               var self = this;
+               var _this65 = this;
+
+               var rowMatch;
 
                switch (typeof rows === 'undefined' ? 'undefined' : _typeof(rows)) {
                        case "undefined":
-                               self.table.rowManager.rows.forEach(function (row) {
-                                       self._selectRow(row, true, true);
+                               this.table.rowManager.rows.forEach(function (row) {
+                                       _this65._selectRow(row, true, true);
                                });
 
-                               self._rowSelectionChanged();
+                               this._rowSelectionChanged();
                                break;
 
-                       case "boolean":
-                               if (rows === true) {
-                                       self.table.rowManager.activeRows.forEach(function (row) {
-                                               self._selectRow(row, true, true);
-                                       });
+                       case "string":
 
-                                       self._rowSelectionChanged();
+                               rowMatch = self.table.rowManager.findRow(rows);
+
+                               if (rowMatch) {
+                                       this._selectRow(rowMatch, true, true);
+                               } else {
+                                       this.table.rowManager.getRows(rows).forEach(function (row) {
+                                               _this65._selectRow(row, true, true);
+                                       });
                                }
+
+                               this._rowSelectionChanged();
                                break;
 
                        default:
                                if (Array.isArray(rows)) {
                                        rows.forEach(function (row) {
-                                               self._selectRow(row, true, true);
+                                               _this65._selectRow(row, true, true);
                                        });
 
-                                       self._rowSelectionChanged();
+                                       this._rowSelectionChanged();
                                } else {
-                                       self._selectRow(rows, false, true);
+                                       this._selectRow(rows, false, true);
                                }
                                break;
                }
@@ -22291,7 +23237,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                self.sortList = newSortList;
 
-               if (this.table.options.persistentSort && this.table.modExists("persistence", true)) {
+               if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.sort) {
                        this.table.modules.persistence.save("sort");
                }
        };
@@ -22378,7 +23324,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                }
 
                if (self.table.options.dataSorted) {
-                       self.table.options.dataSorted.call(self.table, self.getSort(), self.table.rowManager.getComponents(true));
+                       self.table.options.dataSorted.call(self.table, self.getSort(), self.table.rowManager.getComponents("active"));
                }
        };
 
@@ -22732,8 +23678,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                        type = value;
                                }
 
-                               console.log("v", value, type, params);
-
                                return this._buildValidator(type, params);
                                break;
 
index a969f72..623efb1 100644 (file)
@@ -1,11 +1,11 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};!function(t,e){"object"===("undefined"==typeof exports?"undefined":_typeof(exports))&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.Tabulator=e()}(this,function(){"use strict";Array.prototype.findIndex||Object.defineProperty(Array.prototype,"findIndex",{value:function(t){if(null==this)throw new TypeError('"this" is null or not defined');var e=Object(this),o=e.length>>>0;if("function"!=typeof t)throw new TypeError("predicate must be a function");for(var i=arguments[1],n=0;n<o;){var s=e[n];if(t.call(i,s,n,e))return n;n++}return-1}}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(t){if(null==this)throw new TypeError('"this" is null or not defined');var e=Object(this),o=e.length>>>0;if("function"!=typeof t)throw new TypeError("predicate must be a function");for(var i=arguments[1],n=0;n<o;){var s=e[n];if(t.call(i,s,n,e))return s;n++}}});var t=function(t){this.table=t,this.blockHozScrollEvent=!1,this.headersElement=this.createHeadersElement(),this.element=this.createHeaderElement(),this.rowManager=null,this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.scrollLeft=0,this.element.insertBefore(this.headersElement,this.element.firstChild)};t.prototype.createHeadersElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-headers"),t},t.prototype.createHeaderElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-header"),this.table.options.headerVisible||t.classList.add("tabulator-header-hidden"),t},t.prototype.initialize=function(){},t.prototype.setRowManager=function(t){this.rowManager=t},t.prototype.getElement=function(){return this.element},t.prototype.getHeadersElement=function(){return this.headersElement},t.prototype.scrollHorizontal=function(t){var e=0,o=this.element.scrollWidth-this.table.element.clientWidth;this.element.scrollLeft=t,t>o?(e=t-o,this.element.style.marginLeft=-e+"px"):this.element.style.marginLeft=0,this.scrollLeft=t,this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.scrollHorizontal()},t.prototype.generateColumnsFromRowData=function(t){var e,o,i=[];if(t&&t.length){e=t[0];for(var n in e){var s={field:n,title:n},r=e[n];switch(void 0===r?"undefined":_typeof(r)){case"undefined":o="string";break;case"boolean":o="boolean";break;case"object":o=Array.isArray(r)?"array":"string";break;default:o=isNaN(r)||""===r?r.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)?"alphanum":"string":"number"}s.sorter=o,i.push(s)}this.table.options.columns=i,this.setColumns(this.table.options.columns)}},t.prototype.setColumns=function(t,e){for(var o=this;o.headersElement.firstChild;)o.headersElement.removeChild(o.headersElement.firstChild);o.columns=[],o.columnsByIndex=[],o.columnsByField={},o.table.modExists("frozenColumns")&&o.table.modules.frozenColumns.reset(),t.forEach(function(t,e){o._addColumn(t)}),o._reIndexColumns(),o.table.options.responsiveLayout&&o.table.modExists("responsiveLayout",!0)&&o.table.modules.responsiveLayout.initialize(),o.redraw(!0)},t.prototype._addColumn=function(t,e,o){var n=new i(t,this),s=n.getElement(),r=o?this.findColumnIndex(o):o;if(o&&r>-1){var a=this.columns.indexOf(o.getTopColumn()),l=o.getElement();e?(this.columns.splice(a,0,n),l.parentNode.insertBefore(s,l)):(this.columns.splice(a+1,0,n),l.parentNode.insertBefore(s,l.nextSibling))}else e?(this.columns.unshift(n),this.headersElement.insertBefore(n.getElement(),this.headersElement.firstChild)):(this.columns.push(n),this.headersElement.appendChild(n.getElement()));return n},t.prototype.registerColumnField=function(t){t.definition.field&&(this.columnsByField[t.definition.field]=t)},t.prototype.registerColumnPosition=function(t){this.columnsByIndex.push(t)},t.prototype._reIndexColumns=function(){this.columnsByIndex=[],this.columns.forEach(function(t){t.reRegisterPosition()})},t.prototype._verticalAlignHeaders=function(){var t=this,e=0;t.columns.forEach(function(t){var o;t.clearVerticalAlign(),(o=t.getHeight())>e&&(e=o)}),t.columns.forEach(function(o){o.verticalAlign(t.table.options.columnVertAlign,e)}),t.rowManager.adjustTableSize()},t.prototype.findColumn=function(t){var e=this;if("object"!=(void 0===t?"undefined":_typeof(t)))return this.columnsByField[t]||!1;if(t instanceof i)return t;if(t instanceof o)return t._getSelf()||!1;if("undefined"!=typeof HTMLElement&&t instanceof HTMLElement){return e.columns.find(function(e){return e.element===t})||!1}return!1},t.prototype.getColumnByField=function(t){return this.columnsByField[t]},t.prototype.getColumnsByFieldRoot=function(t){var e=this,o=[];return Object.keys(this.columnsByField).forEach(function(i){i.split(".")[0]===t&&o.push(e.columnsByField[i])}),o},t.prototype.getColumnByIndex=function(t){return this.columnsByIndex[t]},t.prototype.getFirstVisibileColumn=function(t){var t=this.columnsByIndex.findIndex(function(t){return t.visible});return t>-1&&this.columnsByIndex[t]},t.prototype.getColumns=function(){return this.columns},t.prototype.findColumnIndex=function(t){return this.columnsByIndex.findIndex(function(e){return t===e})},t.prototype.getRealColumns=function(){return this.columnsByIndex},t.prototype.traverse=function(t){this.columnsByIndex.forEach(function(e,o){t(e,o)})},t.prototype.getDefinitions=function(t){var e=this,o=[];return e.columnsByIndex.forEach(function(e){(!t||t&&e.visible)&&o.push(e.getDefinition())}),o},t.prototype.getDefinitionTree=function(){var t=this,e=[];return t.columns.forEach(function(t){e.push(t.getDefinition(!0))}),e},t.prototype.getComponents=function(t){var e=this,o=[];return(t?e.columns:e.columnsByIndex).forEach(function(t){o.push(t.getComponent())}),o},t.prototype.getWidth=function(){var t=0;return this.columnsByIndex.forEach(function(e){e.visible&&(t+=e.getWidth())}),t},t.prototype.moveColumn=function(t,e,o){this.moveColumnActual(t,e,o),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),e.element.parentNode.insertBefore(t.element,e.element),o&&e.element.parentNode.insertBefore(e.element,t.element),this._verticalAlignHeaders(),this.table.rowManager.reinitialize()},t.prototype.moveColumnActual=function(t,e,o){this._moveColumnInArray(this.columns,t,e,o),this._moveColumnInArray(this.columnsByIndex,t,e,o,!0),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.options.columnMoved&&this.table.options.columnMoved.call(this.table,t.getComponent(),this.table.columnManager.getComponents()),this.table.options.persistentLayout&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("columns")},t.prototype._moveColumnInArray=function(t,e,o,i,n){var s,r=t.indexOf(e);r>-1&&(t.splice(r,1),s=t.indexOf(o),s>-1?i&&(s+=1):s=r,t.splice(s,0,e),n&&this.table.rowManager.rows.forEach(function(t){if(t.cells.length){var e=t.cells.splice(r,1)[0];t.cells.splice(s,0,e)}}))},t.prototype.scrollToColumn=function(t,e,o){var i=this,n=0,s=0,r=0,a=t.getElement();return new Promise(function(l,c){if(void 0===e&&(e=i.table.options.scrollToColumnPosition),void 0===o&&(o=i.table.options.scrollToColumnIfVisible),t.visible){switch(e){case"middle":case"center":r=-i.element.clientWidth/2;break;case"right":r=a.clientWidth-i.headersElement.clientWidth}if(!o&&(s=a.offsetLeft)>0&&s+a.offsetWidth<i.element.clientWidth)return!1;n=a.offsetLeft+i.element.scrollLeft+r,n=Math.max(Math.min(n,i.table.rowManager.element.scrollWidth-i.table.rowManager.element.clientWidth),0),i.table.rowManager.scrollHorizontal(n),i.scrollHorizontal(n),l()}else console.warn("Scroll Error - Column not visible"),c("Scroll Error - Column not visible")})},t.prototype.generateCells=function(t){var e=this,o=[];return e.columnsByIndex.forEach(function(e){o.push(e.generateCell(t))}),o},t.prototype.getFlexBaseWidth=function(){var t=this,e=t.table.element.clientWidth,o=0;return t.rowManager.element.scrollHeight>t.rowManager.element.clientHeight&&(e-=t.rowManager.element.offsetWidth-t.rowManager.element.clientWidth),this.columnsByIndex.forEach(function(i){var n,s,r;i.visible&&(n=i.definition.width||0,s=void 0===i.minWidth?t.table.options.columnMinWidth:parseInt(i.minWidth),r="string"==typeof n?n.indexOf("%")>-1?e/100*parseInt(n):parseInt(n):n,o+=r>s?r:s)}),o},t.prototype.addColumn=function(t,e,o){var i=this._addColumn(t,e,o);this._reIndexColumns(),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),this.redraw(),"fitColumns"!=this.table.modules.layout.getMode()&&i.reinitializeWidth(),this._verticalAlignHeaders(),this.table.rowManager.reinitialize()},t.prototype.deregisterColumn=function(t){var e,o=t.getField();o&&delete this.columnsByField[o],e=this.columnsByIndex.indexOf(t),e>-1&&this.columnsByIndex.splice(e,1),e=this.columns.indexOf(t),e>-1&&this.columns.splice(e,1),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.redraw()},t.prototype.redraw=function(t){t&&(u.prototype.helpers.elVisible(this.element)&&this._verticalAlignHeaders(),this.table.rowManager.resetScroll(),this.table.rowManager.reinitialize()),"fitColumns"==this.table.modules.layout.getMode()?this.table.modules.layout.layout():t?this.table.modules.layout.layout():this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),t&&(this.table.options.persistentLayout&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("columns"),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.redraw()),this.table.footerManager.redraw()};var o=function(t){this._column=t,this.type="ColumnComponent"};o.prototype.getElement=function(){return this._column.getElement()},o.prototype.getDefinition=function(){return this._column.getDefinition()},o.prototype.getField=function(){return this._column.getField()},o.prototype.getCells=function(){var t=[];return this._column.cells.forEach(function(e){t.push(e.getComponent())}),t},o.prototype.getVisibility=function(){return this._column.visible},o.prototype.show=function(){this._column.isGroup?this._column.columns.forEach(function(t){t.show()}):this._column.show()},o.prototype.hide=function(){this._column.isGroup?this._column.columns.forEach(function(t){t.hide()}):this._column.hide()},o.prototype.toggle=function(){this._column.visible?this.hide():this.show()},o.prototype.delete=function(){this._column.delete()},o.prototype.getSubColumns=function(){var t=[];return this._column.columns.length&&this._column.columns.forEach(function(e){t.push(e.getComponent())}),t},o.prototype.getParentColumn=function(){return this._column.parent instanceof i&&this._column.parent.getComponent()},o.prototype._getSelf=function(){return this._column},o.prototype.scrollTo=function(){return this._column.table.columnManager.scrollToColumn(this._column)},o.prototype.getTable=function(){return this._column.table},o.prototype.headerFilterFocus=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterFocus(this._column)},o.prototype.reloadHeaderFilter=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.reloadHeaderFilter(this._column)},o.prototype.setHeaderFilterValue=function(t){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterValue(this._column,t)},o.prototype.move=function(t,e){var o=this._column.table.columnManager.findColumn(t);o?this._column.table.columnManager.moveColumn(this._column,o,e):console.warn("Move Error - No matching column found:",o)},o.prototype.getNextColumn=function(){var t=this._column.nextColumn();return!!t&&t.getComponent()},o.prototype.getPrevColumn=function(){var t=this._column.prevColumn();return!!t&&t.getComponent()};var i=function t(e,o){var i=this;this.table=o.table,this.definition=e,this.parent=o,this.type="column",this.columns=[],this.cells=[],this.element=this.createElement(),this.contentElement=!1,this.groupElement=this.createGroupElement(),this.isGroup=!1,this.tooltip=!1,this.hozAlign="",this.field="",this.fieldStructure="",this.getFieldValue="",this.setFieldValue="",this.setField(this.definition.field),this.table.options.invalidOptionWarnings&&this.checkDefinition(),this.modules={},this.cellEvents={cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1},this.width=null,this.widthStyled="",this.minWidth=null,this.minWidthStyled="",this.widthFixed=!1,this.visible=!0,this._mapDepricatedFunctionality(),e.columns?(this.isGroup=!0,e.columns.forEach(function(e,o){var n=new t(e,i);i.attachColumn(n)}),i.checkColumnVisibility()):o.registerColumnField(this),e.rowHandle&&!1!==this.table.options.movableRows&&this.table.modExists("moveRow")&&this.table.modules.moveRow.setHandle(!0),this._buildHeader()};i.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-col"),t.setAttribute("role","columnheader"),t.setAttribute("aria-sort","none"),t},i.prototype.createGroupElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-col-group-cols"),t},i.prototype.checkDefinition=function(){var t=this;Object.keys(this.definition).forEach(function(e){-1===t.defaultOptionList.indexOf(e)&&console.warn("Invalid column definition option in '"+(t.field||t.definition.title)+"' column:",e)})},i.prototype.setField=function(t){this.field=t,this.fieldStructure=t?this.table.options.nestedFieldSeparator?t.split(this.table.options.nestedFieldSeparator):[t]:[],this.getFieldValue=this.fieldStructure.length>1?this._getNestedData:this._getFlatData,this.setFieldValue=this.fieldStructure.length>1?this._setNesteData:this._setFlatData},i.prototype.registerColumnPosition=function(t){this.parent.registerColumnPosition(t)},i.prototype.registerColumnField=function(t){this.parent.registerColumnField(t)},i.prototype.reRegisterPosition=function(){this.isGroup?this.columns.forEach(function(t){t.reRegisterPosition()}):this.registerColumnPosition(this)},i.prototype._mapDepricatedFunctionality=function(){void 0!==this.definition.hideInHtml&&(this.definition.htmlOutput=!this.definition.hideInHtml,console.warn("hideInHtml column definition property is deprecated, you should now use htmlOutput"))},i.prototype.setTooltip=function(){var t=this,e=t.definition,o=e.headerTooltip||!1===e.tooltip?e.headerTooltip:t.table.options.tooltipsHeader;o?!0===o?e.field?t.table.modules.localize.bind("columns|"+e.field,function(o){t.element.setAttribute("title",o||e.title)}):t.element.setAttribute("title",e.title):("function"==typeof o&&!1===(o=o(t.getComponent()))&&(o=""),t.element.setAttribute("title",o)):t.element.setAttribute("title","")},i.prototype._buildHeader=function(){for(var t=this,e=t.definition;t.element.firstChild;)t.element.removeChild(t.element.firstChild);e.headerVertical&&(t.element.classList.add("tabulator-col-vertical"),"flip"===e.headerVertical&&t.element.classList.add("tabulator-col-vertical-flip")),t.contentElement=t._bindEvents(),t.contentElement=t._buildColumnHeaderContent(),t.element.appendChild(t.contentElement),t.isGroup?t._buildGroupHeader():t._buildColumnHeader(),t.setTooltip(),t.table.options.resizableColumns&&t.table.modExists("resizeColumns")&&t.table.modules.resizeColumns.initializeColumn("header",t,t.element),e.headerFilter&&t.table.modExists("filter")&&t.table.modExists("edit")&&(void 0!==e.headerFilterPlaceholder&&e.field&&t.table.modules.localize.setHeaderFilterColumnPlaceholder(e.field,e.headerFilterPlaceholder),t.table.modules.filter.initializeColumn(t)),t.table.modExists("frozenColumns")&&t.table.modules.frozenColumns.initializeColumn(t),t.table.options.movableColumns&&!t.isGroup&&t.table.modExists("moveColumn")&&t.table.modules.moveColumn.initializeColumn(t),(e.topCalc||e.bottomCalc)&&t.table.modExists("columnCalcs")&&t.table.modules.columnCalcs.initializeColumn(t),t.element.addEventListener("mouseenter",function(e){t.setTooltip()})},i.prototype._bindEvents=function(){var t,e,o,i=this,n=i.definition;"function"==typeof n.headerClick&&i.element.addEventListener("click",function(t){n.headerClick(t,i.getComponent())}),"function"==typeof n.headerDblClick&&i.element.addEventListener("dblclick",function(t){n.headerDblClick(t,i.getComponent())}),"function"==typeof n.headerContext&&i.element.addEventListener("contextmenu",function(t){n.headerContext(t,i.getComponent())}),"function"==typeof n.headerTap&&(o=!1,i.element.addEventListener("touchstart",function(t){o=!0},{passive:!0}),i.element.addEventListener("touchend",function(t){o&&n.headerTap(t,i.getComponent()),o=!1})),"function"==typeof n.headerDblTap&&(t=null,i.element.addEventListener("touchend",function(e){t?(clearTimeout(t),t=null,n.headerDblTap(e,i.getComponent())):t=setTimeout(function(){clearTimeout(t),t=null},300)})),"function"==typeof n.headerTapHold&&(e=null,i.element.addEventListener("touchstart",function(t){clearTimeout(e),e=setTimeout(function(){clearTimeout(e),e=null,o=!1,n.headerTapHold(t,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(t){clearTimeout(e),e=null})),"function"==typeof n.cellClick&&(i.cellEvents.cellClick=n.cellClick),"function"==typeof n.cellDblClick&&(i.cellEvents.cellDblClick=n.cellDblClick),"function"==typeof n.cellContext&&(i.cellEvents.cellContext=n.cellContext),"function"==typeof n.cellMouseEnter&&(i.cellEvents.cellMouseEnter=n.cellMouseEnter),"function"==typeof n.cellMouseLeave&&(i.cellEvents.cellMouseLeave=n.cellMouseLeave),"function"==typeof n.cellMouseOver&&(i.cellEvents.cellMouseOver=n.cellMouseOver),"function"==typeof n.cellMouseOut&&(i.cellEvents.cellMouseOut=n.cellMouseOut),"function"==typeof n.cellMouseMove&&(i.cellEvents.cellMouseMove=n.cellMouseMove),"function"==typeof n.cellTap&&(i.cellEvents.cellTap=n.cellTap),"function"==typeof n.cellDblTap&&(i.cellEvents.cellDblTap=n.cellDblTap),"function"==typeof n.cellTapHold&&(i.cellEvents.cellTapHold=n.cellTapHold),"function"==typeof n.cellEdited&&(i.cellEvents.cellEdited=n.cellEdited),"function"==typeof n.cellEditing&&(i.cellEvents.cellEditing=n.cellEditing),"function"==typeof n.cellEditCancelled&&(i.cellEvents.cellEditCancelled=n.cellEditCancelled)},i.prototype._buildColumnHeader=function(){var t=this,e=t.definition,o=t.table;if(o.modExists("sort")&&o.modules.sort.initializeColumn(t,t.contentElement),o.modExists("format")&&o.modules.format.initializeColumn(t),void 0!==e.editor&&o.modExists("edit")&&o.modules.edit.initializeColumn(t),void 0!==e.validator&&o.modExists("validate")&&o.modules.validate.initializeColumn(t),o.modExists("mutator")&&o.modules.mutator.initializeColumn(t),o.modExists("accessor")&&o.modules.accessor.initializeColumn(t),_typeof(o.options.responsiveLayout)&&o.modExists("responsiveLayout")&&o.modules.responsiveLayout.initializeColumn(t),void 0!==e.visible&&(e.visible?t.show(!0):t.hide(!0)),e.cssClass){e.cssClass.split(" ").forEach(function(e){t.element.classList.add(e)})}e.field&&this.element.setAttribute("tabulator-field",e.field),t.setMinWidth(void 0===e.minWidth?t.table.options.columnMinWidth:parseInt(e.minWidth)),t.reinitializeWidth(),t.tooltip=t.definition.tooltip||!1===t.definition.tooltip?t.definition.tooltip:t.table.options.tooltips,t.hozAlign=void 0===t.definition.align?"":t.definition.align},i.prototype._buildColumnHeaderContent=function(){var t=this,e=(t.definition,t.table,document.createElement("div"));return e.classList.add("tabulator-col-content"),e.appendChild(t._buildColumnHeaderTitle()),e},i.prototype._buildColumnHeaderTitle=function(){var t=this,e=t.definition,o=t.table,i=document.createElement("div");if(i.classList.add("tabulator-col-title"),e.editableTitle){var n=document.createElement("input");n.classList.add("tabulator-title-editor"),n.addEventListener("click",function(t){t.stopPropagation(),n.focus()}),n.addEventListener("change",function(){e.title=n.value,o.options.columnTitleChanged.call(t.table,t.getComponent())}),i.appendChild(n),e.field?o.modules.localize.bind("columns|"+e.field,function(t){n.value=t||e.title||"&nbsp;"}):n.value=e.title||"&nbsp;"}else e.field?o.modules.localize.bind("columns|"+e.field,function(o){t._formatColumnHeaderTitle(i,o||e.title||"&nbsp;")}):t._formatColumnHeaderTitle(i,e.title||"&nbsp;");return i},i.prototype._formatColumnHeaderTitle=function(t,e){var o,i,n,s;if(this.definition.titleFormatter&&this.table.modExists("format"))switch(o=this.table.modules.format.getFormatter(this.definition.titleFormatter),s={getValue:function(){return e},getElement:function(){return t}},n=this.definition.titleFormatterParams||{},n="function"==typeof n?n():n,i=o.call(this.table.modules.format,s,n),void 0===i?"undefined":_typeof(i)){case"object":i instanceof Node?t.appendChild(i):(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:",i));break;case"undefined":case"null":t.innerHTML="";break;default:t.innerHTML=i}else t.innerHTML=e},i.prototype._buildGroupHeader=function(){this.element.classList.add("tabulator-col-group"),this.element.setAttribute("role","columngroup"),this.element.setAttribute("aria-title",this.definition.title),this.element.appendChild(this.groupElement)},i.prototype._getFlatData=function(t){return t[this.field]},i.prototype._getNestedData=function(t){for(var e,o=t,i=this.fieldStructure,n=i.length,s=0;s<n&&(o=o[i[s]],e=o,o);s++);return e},i.prototype._setFlatData=function(t,e){this.field&&(t[this.field]=e)},i.prototype._setNesteData=function(t,e){for(var o=t,i=this.fieldStructure,n=i.length,s=0;s<n;s++)s==n-1?o[i[s]]=e:(o[i[s]]||(o[i[s]]={}),o=o[i[s]])},i.prototype.attachColumn=function(t){var e=this;e.groupElement?(e.columns.push(t),e.groupElement.appendChild(t.getElement())):console.warn("Column Warning - Column being attached to another column instead of column group")},i.prototype.verticalAlign=function(t,e){var o=this.parent.isGroup?this.parent.getGroupElement().clientHeight:e||this.parent.getHeadersElement().clientHeight;this.element.style.height=o+"px",this.isGroup&&(this.groupElement.style.minHeight=o-this.contentElement.offsetHeight+"px"),this.isGroup||"top"===t||(this.element.style.paddingTop="bottom"===t?this.element.clientHeight-this.contentElement.offsetHeight+"px":(this.element.clientHeight-this.contentElement.offsetHeight)/2+"px"),this.columns.forEach(function(e){e.verticalAlign(t)})},i.prototype.clearVerticalAlign=function(){this.element.style.paddingTop="",this.element.style.height="",this.element.style.minHeight="",this.groupElement.style.minHeight="",this.columns.forEach(function(t){t.clearVerticalAlign()})},i.prototype.getElement=function(){return this.element},i.prototype.getGroupElement=function(){return this.groupElement},i.prototype.getField=function(){return this.field},i.prototype.getFirstColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[0].getFirstColumn():this},i.prototype.getLastColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[this.columns.length-1].getLastColumn():this},i.prototype.getColumns=function(){return this.columns},i.prototype.getCells=function(){return this.cells},i.prototype.getTopColumn=function(){return this.parent.isGroup?this.parent.getTopColumn():this},i.prototype.getDefinition=function(t){var e=[];return this.isGroup&&t&&(this.columns.forEach(function(t){e.push(t.getDefinition(!0))}),this.definition.columns=e),this.definition},i.prototype.checkColumnVisibility=function(){var t=!1;this.columns.forEach(function(e){e.visible&&(t=!0)}),t?(this.show(),this.parent.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1)):this.hide()},i.prototype.show=function(t,e){this.visible||(this.visible=!0,this.element.style.display="",this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(t){t.show()}),this.isGroup||null!==this.width||this.reinitializeWidth(),this.table.columnManager._verticalAlignHeaders(),this.table.options.persistentLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.persistence.save("columns"),!e&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),t||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!0),this.parent.isGroup&&this.parent.matchChildWidths())},i.prototype.hide=function(t,e){this.visible&&(this.visible=!1,this.element.style.display="none",this.table.columnManager._verticalAlignHeaders(),this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(t){t.hide()}),this.table.options.persistentLayout&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("columns"),!e&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),t||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1),this.parent.isGroup&&this.parent.matchChildWidths())},i.prototype.matchChildWidths=function(){var t=0;this.contentElement&&this.columns.length&&(this.columns.forEach(function(e){e.visible&&(t+=e.getWidth())}),this.contentElement.style.maxWidth=t-1+"px")},i.prototype.setWidth=function(t){this.widthFixed=!0,this.setWidthActual(t)},i.prototype.setWidthActual=function(t){isNaN(t)&&(t=Math.floor(this.table.element.clientWidth/100*parseInt(t))),t=Math.max(this.minWidth,t),this.width=t,this.widthStyled=t?t+"px":"",this.element.style.width=this.widthStyled,this.isGroup||this.cells.forEach(function(t){t.setWidth()}),this.parent.isGroup&&this.parent.matchChildWidths(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()},i.prototype.checkCellHeights=function(){var t=[];this.cells.forEach(function(e){e.row.heightInitialized&&(null!==e.row.getElement().offsetParent?(t.push(e.row),e.row.clearCellHeight()):e.row.heightInitialized=!1)}),t.forEach(function(t){t.calcHeight()}),t.forEach(function(t){t.setCellHeight()})},i.prototype.getWidth=function(){return this.width},i.prototype.getHeight=function(){return this.element.offsetHeight},i.prototype.setMinWidth=function(t){this.minWidth=t,this.minWidthStyled=t?t+"px":"",this.element.style.minWidth=this.minWidthStyled,this.cells.forEach(function(t){t.setMinWidth()})},i.prototype.delete=function(){this.isGroup&&this.columns.forEach(function(t){t.delete()});for(var t=this.cells.length,e=0;e<t;e++)this.cells[0].delete();this.element.parentNode.removeChild(this.element),this.table.columnManager.deregisterColumn(this)},i.prototype.generateCell=function(t){var e=this,o=new l(e,t);return this.cells.push(o),o},i.prototype.nextColumn=function(){var t=this.table.columnManager.findColumnIndex(this);return t>-1&&this._nextVisibleColumn(t+1)},i.prototype._nextVisibleColumn=function(t){var e=this.table.columnManager.getColumnByIndex(t);return!e||e.visible?e:this._nextVisibleColumn(t+1)},i.prototype.prevColumn=function(){var t=this.table.columnManager.findColumnIndex(this);return t>-1&&this._prevVisibleColumn(t-1)},i.prototype._prevVisibleColumn=function(t){var e=this.table.columnManager.getColumnByIndex(t);return!e||e.visible?e:this._prevVisibleColumn(t-1)},i.prototype.reinitializeWidth=function(t){this.widthFixed=!1,void 0===this.definition.width||t||this.setWidth(this.definition.width),this.table.modExists("filter")&&this.table.modules.filter.hideHeaderFilterElements(),this.fitToData(),this.table.modExists("filter")&&this.table.modules.filter.showHeaderFilterElements()},i.prototype.fitToData=function(){var t=this;this.widthFixed||(this.element.style.width="",t.cells.forEach(function(t){t.clearWidth()}));var e=this.element.offsetWidth;t.width&&this.widthFixed||(t.cells.forEach(function(t){var o=t.getWidth();o>e&&(e=o)}),e&&t.setWidthActual(e+1))},i.prototype.deleteCell=function(t){var e=this.cells.indexOf(t);e>-1&&this.cells.splice(e,1)},i.prototype.defaultOptionList=["title","field","columns","visible","align","width","minWidth","widthGrow","widthShrink","resizable","frozen","responsive","tooltip","cssClass","rowHandle","hideInHtml","print","htmlOutput","sorter","sorterParams","formatter","formatterParams","variableHeight","editable","editor","editorParams","validator","mutator","mutatorParams","mutatorData","mutatorDataParams","mutatorEdit","mutatorEditParams","mutatorClipboard","mutatorClipboardParams","accessor","accessorParams","accessorData","accessorDataParams","accessorDownload","accessorDownloadParams","accessorClipboard","accessorClipboardParams","clipboard","download","downloadTitle","topCalc","topCalcParams","topCalcFormatter","topCalcFormatterParams","bottomCalc","bottomCalcParams","bottomCalcFormatter","bottomCalcFormatterParams","cellClick","cellDblClick","cellContext","cellTap","cellDblTap","cellTapHold","cellMouseEnter","cellMouseLeave","cellMouseOver","cellMouseOut","cellMouseMove","cellEditing","cellEdited","cellEditCancelled","headerSort","headerSortStartingDir","headerSortTristate","headerClick","headerDblClick","headerContext","headerTap","headerDblTap","headerTapHold","headerTooltip","headerVertical","editableTitle","titleFormatter","titleFormatterParams","headerFilter","headerFilterPlaceholder","headerFilterParams","headerFilterEmptyCheck","headerFilterFunc","headerFilterFuncParams","headerFilterLiveFilter","print"],i.prototype.getComponent=function(){return new o(this)};var n=function(t){this.table=t,this.element=this.createHolderElement(),this.tableElement=this.createTableElement(),this.columnManager=null,this.height=0,this.firstRender=!1,this.renderMode="classic",this.rows=[],this.activeRows=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0,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=[]};n.prototype.createHolderElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-tableHolder"),t.setAttribute("tabindex",0),t},n.prototype.createTableElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-table"),t},n.prototype.getElement=function(){return this.element},n.prototype.getTableElement=function(){return this.tableElement},n.prototype.getRowPosition=function(t,e){return e?this.activeRows.indexOf(t):this.rows.indexOf(t)},n.prototype.setColumnManager=function(t){this.columnManager=t},n.prototype.initialize=function(){var t=this;t.setRenderMode(),t.element.appendChild(t.tableElement),t.firstRender=!0,t.element.addEventListener("scroll",function(){var e=t.element.scrollLeft;t.scrollLeft!=e&&(t.columnManager.scrollHorizontal(e),t.table.options.groupBy&&t.table.modules.groupRows.scrollHeaders(e),t.table.modExists("columnCalcs")&&t.table.modules.columnCalcs.scrollHorizontal(e)),t.scrollLeft=e}),
-"virtual"===this.renderMode&&t.element.addEventListener("scroll",function(){var e=t.element.scrollTop,o=t.scrollTop>e;t.scrollTop!=e?(t.scrollTop=e,t.scrollVertical(o),"scroll"==t.table.options.ajaxProgressiveLoad&&t.table.modules.ajax.nextPage(t.element.scrollHeight-t.element.clientHeight-e)):t.scrollTop=e})},n.prototype.findRow=function(t){var e=this;if("object"!=(void 0===t?"undefined":_typeof(t))){if(void 0===t||null===t)return!1;return e.rows.find(function(o){return o.data[e.table.options.index]==t})||!1}if(t instanceof r)return t;if(t instanceof s)return t._getSelf()||!1;if("undefined"!=typeof HTMLElement&&t instanceof HTMLElement){return e.rows.find(function(e){return e.element===t})||!1}return!1},n.prototype.getRowFromDataObject=function(t){return this.rows.find(function(e){return e.data===t})||!1},n.prototype.getRowFromPosition=function(t,e){return e?this.activeRows[t]:this.rows[t]},n.prototype.scrollToRow=function(t,e,o){var i,n=this,s=this.getDisplayRows().indexOf(t),r=t.getElement(),a=0;return new Promise(function(t,l){if(s>-1){if(void 0===e&&(e=n.table.options.scrollToRowPosition),void 0===o&&(o=n.table.options.scrollToRowIfVisible),"nearest"===e)switch(n.renderMode){case"classic":i=u.prototype.helpers.elOffset(r).top,e=Math.abs(n.element.scrollTop-i)>Math.abs(n.element.scrollTop+n.element.clientHeight-i)?"bottom":"top";break;case"virtual":e=Math.abs(n.vDomTop-s)>Math.abs(n.vDomBottom-s)?"bottom":"top"}if(!o&&u.prototype.helpers.elVisible(r)&&(a=u.prototype.helpers.elOffset(r).top-u.prototype.helpers.elOffset(n.element).top)>0&&a<n.element.clientHeight-r.offsetHeight)return!1;switch(n.renderMode){case"classic":n.element.scrollTop=u.prototype.helpers.elOffset(r).top-u.prototype.helpers.elOffset(n.element).top+n.element.scrollTop;break;case"virtual":n._virtualRenderFill(s,!0)}switch(e){case"middle":case"center":n.element.scrollHeight-n.element.scrollTop==n.element.clientHeight?n.element.scrollTop=n.element.scrollTop+(r.offsetTop-n.element.scrollTop)-(n.element.scrollHeight-r.offsetTop)/2:n.element.scrollTop=n.element.scrollTop-n.element.clientHeight/2;break;case"bottom":n.element.scrollHeight-n.element.scrollTop==n.element.clientHeight?n.element.scrollTop=n.element.scrollTop-(n.element.scrollHeight-r.offsetTop)+r.offsetHeight:n.element.scrollTop=n.element.scrollTop-n.element.clientHeight+r.offsetHeight}t()}else console.warn("Scroll Error - Row not visible"),l("Scroll Error - Row not visible")})},n.prototype.setData=function(t,e){var o=this,i=this;return new Promise(function(n,s){e&&o.getDisplayRows().length?i.table.options.pagination?i._setDataActual(t,!0):o.reRenderInPosition(function(){i._setDataActual(t)}):(o.table.options.autoColumns&&o.table.columnManager.generateColumnsFromRowData(t),o.resetScroll(),o._setDataActual(t)),n()})},n.prototype._setDataActual=function(t,e){var o=this;o.table.options.dataLoading.call(this.table,t),this._wipeElements(),this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.clear(),Array.isArray(t)?(this.table.modExists("selectRow")&&this.table.modules.selectRow.clearSelectionData(),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchData(t),t.forEach(function(t,e){if(t&&"object"===(void 0===t?"undefined":_typeof(t))){var i=new r(t,o);o.rows.push(i)}else console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:",t)}),o.table.options.dataLoaded.call(this.table,t),o.refreshActiveData(!1,!1,e)):console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ",void 0===t?"undefined":_typeof(t),"\nData:     ",t)},n.prototype._wipeElements=function(){this.rows.forEach(function(t){t.wipe()}),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.wipe(),this.rows=[]},n.prototype.deleteRow=function(t,e){var o=this.rows.indexOf(t),i=this.activeRows.indexOf(t);i>-1&&this.activeRows.splice(i,1),o>-1&&this.rows.splice(o,1),this.setActiveRows(this.activeRows),this.displayRowIterator(function(e){var o=e.indexOf(t);o>-1&&e.splice(o,1)}),e||this.reRenderInPosition(),this.table.options.rowDeleted.call(this.table,t.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.groupRows.updateGroupRows(!0):this.table.options.pagination&&this.table.modExists("page")?this.refreshActiveData(!1,!1,!0):this.table.options.pagination&&this.table.modExists("page")&&this.refreshActiveData("page")},n.prototype.addRow=function(t,e,o,i){var n=this.addRowActual(t,e,o,i);return this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowAdd",n,{data:t,pos:e,index:o}),n},n.prototype.addRows=function(t,e,o){var i=this,n=this,s=0,r=[];return new Promise(function(a,l){e=i.findAddRowPos(e),Array.isArray(t)||(t=[t]),s=t.length-1,(void 0===o&&e||void 0!==o&&!e)&&t.reverse(),t.forEach(function(t,i){var s=n.addRow(t,e,o,!0);r.push(s)}),i.table.options.groupBy&&i.table.modExists("groupRows")?i.table.modules.groupRows.updateGroupRows(!0):i.table.options.pagination&&i.table.modExists("page")?i.refreshActiveData(!1,!1,!0):i.reRenderInPosition(),i.table.modExists("columnCalcs")&&i.table.modules.columnCalcs.recalc(i.table.rowManager.activeRows),a(r)})},n.prototype.findAddRowPos=function(t){return void 0===t&&(t=this.table.options.addRowPos),"pos"===t&&(t=!0),"bottom"===t&&(t=!1),t},n.prototype.addRowActual=function(t,e,o,i){var n,s=t instanceof r?t:new r(t||{},this),a=this.findAddRowPos(e);if(!o&&this.table.options.pagination&&"page"==this.table.options.paginationAddRow&&(n=this.getDisplayRows(),a?n.length?o=n[0]:this.activeRows.length&&(o=this.activeRows[this.activeRows.length-1],a=!1):n.length&&(o=n[n.length-1],a=!(n.length<this.table.modules.page.getPageSize()))),o&&(o=this.findRow(o)),this.table.options.groupBy&&this.table.modExists("groupRows")){this.table.modules.groupRows.assignRowToGroup(s);var l=s.getGroup().rows;l.length>1&&(!o||o&&-1==l.indexOf(o)?a?l[0]!==s&&(o=l[0],this._moveRowInArray(s.getGroup().rows,s,o,!a)):l[l.length-1]!==s&&(o=l[l.length-1],this._moveRowInArray(s.getGroup().rows,s,o,!a)):this._moveRowInArray(s.getGroup().rows,s,o,!a))}if(o){var c=this.rows.indexOf(o),u=this.activeRows.indexOf(o);this.displayRowIterator(function(t){var e=t.indexOf(o);e>-1&&t.splice(a?e:e+1,0,s)}),u>-1&&this.activeRows.splice(a?u:u+1,0,s),c>-1&&this.rows.splice(a?c:c+1,0,s)}else a?(this.displayRowIterator(function(t){t.unshift(s)}),this.activeRows.unshift(s),this.rows.unshift(s)):(this.displayRowIterator(function(t){t.push(s)}),this.activeRows.push(s),this.rows.push(s));return this.setActiveRows(this.activeRows),this.table.options.rowAdded.call(this.table,s.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),i||this.reRenderInPosition(),s},n.prototype.moveRow=function(t,e,o){this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowMove",t,{pos:this.getRowPosition(t),to:e,after:o}),this.moveRowActual(t,e,o),this.table.options.rowMoved.call(this.table,t.getComponent())},n.prototype.moveRowActual=function(t,e,o){var i=this;if(this._moveRowInArray(this.rows,t,e,o),this._moveRowInArray(this.activeRows,t,e,o),this.displayRowIterator(function(n){i._moveRowInArray(n,t,e,o)}),this.table.options.groupBy&&this.table.modExists("groupRows")){var n=e.getGroup(),s=t.getGroup();n===s?this._moveRowInArray(n.rows,t,e,o):(s&&s.removeRow(t),n.insertRow(t,e,o))}},n.prototype._moveRowInArray=function(t,e,o,i){var n,s,r,a;if(e!==o&&(n=t.indexOf(e),n>-1&&(t.splice(n,1),s=t.indexOf(o),s>-1?i?t.splice(s+1,0,e):t.splice(s,0,e):t.splice(n,0,e)),t===this.getDisplayRows())){r=n<s?n:s,a=s>n?s:n+1;for(var l=r;l<=a;l++)t[l]&&this.styleRow(t[l],l)}},n.prototype.clearData=function(){this.setData([])},n.prototype.getRowIndex=function(t){return this.findRowIndex(t,this.rows)},n.prototype.getDisplayRowIndex=function(t){var e=this.getDisplayRows().indexOf(t);return e>-1&&e},n.prototype.nextDisplayRow=function(t,e){var o=this.getDisplayRowIndex(t),i=!1;return!1!==o&&o<this.displayRowsCount-1&&(i=this.getDisplayRows()[o+1]),!i||i instanceof r&&"row"==i.type?i:this.nextDisplayRow(i,e)},n.prototype.prevDisplayRow=function(t,e){var o=this.getDisplayRowIndex(t),i=!1;return o&&(i=this.getDisplayRows()[o-1]),!i||i instanceof r&&"row"==i.type?i:this.prevDisplayRow(i,e)},n.prototype.findRowIndex=function(t,e){var o;return!!((t=this.findRow(t))&&(o=e.indexOf(t))>-1)&&o},n.prototype.getData=function(t,e){var o=this,i=[];return(t?o.activeRows:o.rows).forEach(function(t){i.push(t.getData(e||"data"))}),i},n.prototype.getComponents=function(t){var e=this,o=[];return(t?e.activeRows:e.rows).forEach(function(t){o.push(t.getComponent())}),o},n.prototype.getDataCount=function(t){return t?this.activeRows.length:this.rows.length},n.prototype._genRemoteRequest=function(){var t=this,e=t.table,o=e.options,i={};if(e.modExists("page")){if(o.ajaxSorting){var n=t.table.modules.sort.getSort();n.forEach(function(t){delete t.column}),i[t.table.modules.page.paginationDataSentNames.sorters]=n}if(o.ajaxFiltering){var s=t.table.modules.filter.getFilters(!0,!0);i[t.table.modules.page.paginationDataSentNames.filters]=s}t.table.modules.ajax.setParams(i,!0)}e.modules.ajax.sendRequest().then(function(e){t.setData(e)}).catch(function(t){})},n.prototype.filterRefresh=function(){var t=this.table,e=t.options,o=this.scrollLeft;e.ajaxFiltering?"remote"==e.pagination&&t.modExists("page")?(t.modules.page.reset(!0),t.modules.page.setPage(1).then(function(){}).catch(function(){})):e.ajaxProgressiveLoad?t.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData("filter"),this.scrollHorizontal(o)},n.prototype.sorterRefresh=function(t){var e=this.table,o=this.table.options,i=this.scrollLeft;o.ajaxSorting?("remote"==o.pagination||o.progressiveLoad)&&e.modExists("page")?(e.modules.page.reset(!0),e.modules.page.setPage(1).then(function(){}).catch(function(){})):o.ajaxProgressiveLoad?e.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData(t?"filter":"sort"),this.scrollHorizontal(i)},n.prototype.scrollHorizontal=function(t){this.scrollLeft=t,this.element.scrollLeft=t,this.table.options.groupBy&&this.table.modules.groupRows.scrollHeaders(t),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.scrollHorizontal(t)},n.prototype.refreshActiveData=function(t,e,o){var i,n=this,s=this.table;switch(n.table.modExists("edit")&&n.table.modules.edit.cancelEdit(),t||(t="all"),s.options.selectable&&!s.options.selectablePersistence&&s.modExists("selectRow")&&s.modules.selectRow.deselectRows(),t){case"all":case"filter":e?e=!1:s.modExists("filter")?n.setActiveRows(s.modules.filter.filter(n.rows)):n.setActiveRows(n.rows.slice(0));case"sort":e?e=!1:s.modExists("sort")&&s.modules.sort.sort(this.activeRows);case"display":this.resetDisplayRows();case"freeze":e?e=!1:this.table.modExists("frozenRows")&&s.modules.frozenRows.isFrozen()&&(s.modules.frozenRows.getDisplayIndex()||s.modules.frozenRows.setDisplayIndex(this.getNextDisplayIndex()),i=s.modules.frozenRows.getDisplayIndex(),!0!==(i=n.setDisplayRows(s.modules.frozenRows.getRows(this.getDisplayRows(i-1)),i))&&s.modules.frozenRows.setDisplayIndex(i));case"group":e?e=!1:s.options.groupBy&&s.modExists("groupRows")&&(s.modules.groupRows.getDisplayIndex()||s.modules.groupRows.setDisplayIndex(this.getNextDisplayIndex()),i=s.modules.groupRows.getDisplayIndex(),!0!==(i=n.setDisplayRows(s.modules.groupRows.getRows(this.getDisplayRows(i-1)),i))&&s.modules.groupRows.setDisplayIndex(i));case"tree":e?e=!1:s.options.dataTree&&s.modExists("dataTree")&&(s.modules.dataTree.getDisplayIndex()||s.modules.dataTree.setDisplayIndex(this.getNextDisplayIndex()),i=s.modules.dataTree.getDisplayIndex(),!0!==(i=n.setDisplayRows(s.modules.dataTree.getRows(this.getDisplayRows(i-1)),i))&&s.modules.dataTree.setDisplayIndex(i)),s.options.pagination&&s.modExists("page")&&!o&&"local"==s.modules.page.getMode()&&s.modules.page.reset();case"page":e?e=!1:s.options.pagination&&s.modExists("page")&&(s.modules.page.getDisplayIndex()||s.modules.page.setDisplayIndex(this.getNextDisplayIndex()),i=s.modules.page.getDisplayIndex(),"local"==s.modules.page.getMode()&&s.modules.page.setMaxRows(this.getDisplayRows(i-1).length),!0!==(i=n.setDisplayRows(s.modules.page.getRows(this.getDisplayRows(i-1)),i))&&s.modules.page.setDisplayIndex(i))}u.prototype.helpers.elVisible(n.element)&&(o?n.reRenderInPosition():(n.renderTable(),s.options.layoutColumnsOnNewData&&n.table.columnManager.redraw(!0))),s.modExists("columnCalcs")&&s.modules.columnCalcs.recalc(this.activeRows)},n.prototype.setActiveRows=function(t){this.activeRows=t,this.activeRowsCount=this.activeRows.length},n.prototype.resetDisplayRows=function(){this.displayRows=[],this.displayRows.push(this.activeRows.slice(0)),this.displayRowsCount=this.displayRows[0].length,this.table.modExists("frozenRows")&&this.table.modules.frozenRows.setDisplayIndex(0),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.setDisplayIndex(0),this.table.options.pagination&&this.table.modExists("page")&&this.table.modules.page.setDisplayIndex(0)},n.prototype.getNextDisplayIndex=function(){return this.displayRows.length},n.prototype.setDisplayRows=function(t,e){var o=!0;return e&&void 0!==this.displayRows[e]?(this.displayRows[e]=t,o=!0):(this.displayRows.push(t),o=e=this.displayRows.length-1),e==this.displayRows.length-1&&(this.displayRowsCount=this.displayRows[this.displayRows.length-1].length),o},n.prototype.getDisplayRows=function(t){return void 0===t?this.displayRows.length?this.displayRows[this.displayRows.length-1]:[]:this.displayRows[t]||[]},n.prototype.getVisibleRows=function(t){var e=this.element.scrollTop,o=this.element.clientHeight+e,i=!1,n=0,s=0,r=this.getDisplayRows();if(t){this.getDisplayRows();for(var a=this.vDomTop;a<=this.vDomBottom;a++)if(r[a])if(i){if(!(o-r[a].getElement().offsetTop>=0))break;s=a}else e-r[a].getElement().offsetTop>=0?n=a:i=!0}else n=this.vDomTop,s=this.vDomBottom;return r.slice(n,s+1)},n.prototype.displayRowIterator=function(t){this.displayRows.forEach(t),this.displayRowsCount=this.displayRows[this.displayRows.length-1].length},n.prototype.getRows=function(){return this.rows},n.prototype.reRenderInPosition=function(t){if("virtual"==this.getRenderMode()){for(var e=this.element.scrollTop,o=!1,i=!1,n=this.scrollLeft,s=this.getDisplayRows(),r=this.vDomTop;r<=this.vDomBottom;r++)if(s[r]){var a=e-s[r].getElement().offsetTop;if(!(!1===i||Math.abs(a)<i))break;i=a,o=r}t&&t(),this._virtualRenderFill(!1===o?this.displayRowsCount-1:o,!0,i||0),this.scrollHorizontal(n)}else this.renderTable(),t&&t()},n.prototype.setRenderMode=function(){(this.table.element.clientHeight||this.table.options.height)&&this.table.options.virtualDom?this.renderMode="virtual":this.renderMode="classic"},n.prototype.getRenderMode=function(){return this.renderMode},n.prototype.renderTable=function(){var t=this;switch(t.table.options.renderStarted.call(this.table),t.element.scrollTop=0,t.renderMode){case"classic":t._simpleRender();break;case"virtual":t._virtualRenderFill()}t.firstRender&&(t.displayRowsCount?(t.firstRender=!1,t.table.modules.layout.layout()):t.renderEmptyScroll()),t.table.modExists("frozenColumns")&&t.table.modules.frozenColumns.layout(),t.displayRowsCount||t.table.options.placeholder&&(this.renderMode&&t.table.options.placeholder.setAttribute("tabulator-render-mode",this.renderMode),t.getElement().appendChild(t.table.options.placeholder)),t.table.options.renderComplete.call(this.table)},n.prototype._simpleRender=function(){this._clearVirtualDom(),this.displayRowsCount?this.checkClassicModeGroupHeaderWidth():this.renderEmptyScroll()},n.prototype.checkClassicModeGroupHeaderWidth=function(){var t=this,e=this.tableElement,o=!0;t.getDisplayRows().forEach(function(i,n){t.styleRow(i,n),e.appendChild(i.getElement()),i.initialize(!0),"group"!==i.type&&(o=!1)}),e.style.minWidth=o?t.table.columnManager.getWidth()+"px":""},n.prototype.renderEmptyScroll=function(){this.tableElement.style.minWidth=this.table.columnManager.getWidth()+"px",this.tableElement.style.minHeight="1px",this.tableElement.style.visibility="hidden"},n.prototype._clearVirtualDom=function(){var t=this.tableElement;for(this.table.options.placeholder&&this.table.options.placeholder.parentNode&&this.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);t.firstChild;)t.removeChild(t.firstChild);t.style.paddingTop="",t.style.paddingBottom="",t.style.minWidth="",t.style.minHeight="",t.style.visibility="",this.scrollTop=0,this.scrollLeft=0,this.vDomTop=0,this.vDomBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0},n.prototype.styleRow=function(t,e){var o=t.getElement();e%2?(o.classList.add("tabulator-row-even"),o.classList.remove("tabulator-row-odd")):(o.classList.add("tabulator-row-odd"),o.classList.remove("tabulator-row-even"))},n.prototype._virtualRenderFill=function(t,e,o){var i=this,n=i.tableElement,s=i.element,r=0,a=0,l=0,c=0,d=!0,h=i.getDisplayRows();if(t=t||0,o=o||0,t){for(;n.firstChild;)n.removeChild(n.firstChild);var p=(i.displayRowsCount-t+1)*i.vDomRowHeight;p<i.height&&(t-=Math.ceil((i.height-p)/i.vDomRowHeight))<0&&(t=0),r=Math.min(Math.max(Math.floor(i.vDomWindowBuffer/i.vDomRowHeight),i.vDomWindowMinMarginRows),t),t-=r}else i._clearVirtualDom();if(i.displayRowsCount&&u.prototype.helpers.elVisible(i.element)){for(i.vDomTop=t,i.vDomBottom=t-1;(a<=i.height+i.vDomWindowBuffer||c<i.vDomWindowMinTotalRows)&&i.vDomBottom<i.displayRowsCount-1;){var m=i.vDomBottom+1,f=h[m],g=0;i.styleRow(f,m),n.appendChild(f.getElement()),f.initialized?f.heightInitialized||f.normalizeHeight(!0):f.initialize(!0),g=f.getHeight(),c<r?l+=g:a+=g,g>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*g),"group"!==f.type&&(d=!1),i.vDomBottom++,c++}t?(i.vDomTopPad=e?i.vDomRowHeight*this.vDomTop+o:i.scrollTop-l,i.vDomBottomPad=i.vDomBottom==i.displayRowsCount-1?0:Math.max(i.vDomScrollHeight-i.vDomTopPad-a-l,0)):(this.vDomTopPad=0,i.vDomRowHeight=Math.floor((a+l)/c),i.vDomBottomPad=i.vDomRowHeight*(i.displayRowsCount-i.vDomBottom-1),i.vDomScrollHeight=l+a+i.vDomBottomPad-i.height),n.style.paddingTop=i.vDomTopPad+"px",n.style.paddingBottom=i.vDomBottomPad+"px",e&&(this.scrollTop=i.vDomTopPad+l+o-(this.element.scrollWidth>this.element.clientWidth?this.element.offsetHeight-this.element.clientHeight:0)),this.scrollTop=Math.min(this.scrollTop,this.element.scrollHeight-this.height),this.element.scrollWidth>this.element.offsetWidth&&e&&(this.scrollTop+=this.element.offsetHeight-this.element.clientHeight),this.vDomScrollPosTop=this.scrollTop,this.vDomScrollPosBottom=this.scrollTop,s.scrollTop=this.scrollTop,n.style.minWidth=d?i.table.columnManager.getWidth()+"px":"",i.table.options.groupBy&&"fitDataFill"!=i.table.modules.layout.getMode()&&i.displayRowsCount==i.table.modules.groupRows.countGroups()&&(i.tableElement.style.minWidth=i.table.columnManager.getWidth())}else this.renderEmptyScroll()},n.prototype.scrollVertical=function(t){var e=this.scrollTop-this.vDomScrollPosTop,o=this.scrollTop-this.vDomScrollPosBottom,i=2*this.vDomWindowBuffer;if(-e>i||o>i){var n=this.scrollLeft;this._virtualRenderFill(Math.floor(this.element.scrollTop/this.element.scrollHeight*this.displayRowsCount)),this.scrollHorizontal(n)}else t?(e<0&&this._addTopRow(-e),o<0&&this.vDomScrollHeight-this.scrollTop>this.vDomWindowBuffer&&this._removeBottomRow(-o)):(e>=0&&this.scrollTop>this.vDomWindowBuffer&&this._removeTopRow(e),o>=0&&this._addBottomRow(o))},n.prototype._addTopRow=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=this.tableElement,i=this.getDisplayRows();if(this.vDomTop){var n=this.vDomTop-1,s=i[n],r=s.getHeight()||this.vDomRowHeight;t>=r&&(this.styleRow(s,n),o.insertBefore(s.getElement(),o.firstChild),s.initialized&&s.heightInitialized||(this.vDomTopNewRows.push(s),s.heightInitialized||s.clearCellHeight()),s.initialize(),this.vDomTopPad-=r,this.vDomTopPad<0&&(this.vDomTopPad=n*this.vDomRowHeight),n||(this.vDomTopPad=0),o.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop-=r,this.vDomTop--),t=-(this.scrollTop-this.vDomScrollPosTop),s.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*s.getHeight()),e<this.vDomMaxRenderChain&&this.vDomTop&&t>=(i[this.vDomTop-1].getHeight()||this.vDomRowHeight)?this._addTopRow(t,e+1):this._quickNormalizeRowHeight(this.vDomTopNewRows)}},n.prototype._removeTopRow=function(t){var e=this.tableElement,o=this.getDisplayRows()[this.vDomTop],i=o.getHeight()||this.vDomRowHeight;if(t>=i){var n=o.getElement();n.parentNode.removeChild(n),this.vDomTopPad+=i,e.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop+=this.vDomTop?i:i+this.vDomWindowBuffer,this.vDomTop++,t=this.scrollTop-this.vDomScrollPosTop,this._removeTopRow(t)}},n.prototype._addBottomRow=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=this.tableElement,i=this.getDisplayRows();if(this.vDomBottom<this.displayRowsCount-1){var n=this.vDomBottom+1,s=i[n],r=s.getHeight()||this.vDomRowHeight;t>=r&&(this.styleRow(s,n),o.appendChild(s.getElement()),s.initialized&&s.heightInitialized||(this.vDomBottomNewRows.push(s),s.heightInitialized||s.clearCellHeight()),s.initialize(),this.vDomBottomPad-=r,(this.vDomBottomPad<0||n==this.displayRowsCount-1)&&(this.vDomBottomPad=0),o.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom+=r,this.vDomBottom++),t=this.scrollTop-this.vDomScrollPosBottom,s.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*s.getHeight()),e<this.vDomMaxRenderChain&&this.vDomBottom<this.displayRowsCount-1&&t>=(i[this.vDomBottom+1].getHeight()||this.vDomRowHeight)?this._addBottomRow(t,e+1):this._quickNormalizeRowHeight(this.vDomBottomNewRows)}},n.prototype._removeBottomRow=function(t){var e=this.tableElement,o=this.getDisplayRows()[this.vDomBottom],i=o.getHeight()||this.vDomRowHeight;if(t>=i){var n=o.getElement();n.parentNode&&n.parentNode.removeChild(n),this.vDomBottomPad+=i,this.vDomBottomPad<0&&(this.vDomBottomPad=0),e.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom-=i,this.vDomBottom--,t=-(this.scrollTop-this.vDomScrollPosBottom),this._removeBottomRow(t)}},n.prototype._quickNormalizeRowHeight=function(t){t.forEach(function(t){t.calcHeight()}),t.forEach(function(t){t.setCellHeight()}),t.length=0},n.prototype.normalizeHeight=function(){this.activeRows.forEach(function(t){t.normalizeHeight()})},n.prototype.adjustTableSize=function(){if("virtual"===this.renderMode){this.height=this.element.clientHeight,this.vDomWindowBuffer=this.table.options.virtualDomBuffer||this.height;var t=this.columnManager.getElement().offsetHeight+(this.table.footerManager&&!this.table.footerManager.external?this.table.footerManager.getElement().offsetHeight:0);this.element.style.minHeight="calc(100% - "+t+"px)",this.element.style.height="calc(100% - "+t+"px)",this.element.style.maxHeight="calc(100% - "+t+"px)"}},n.prototype.reinitialize=function(){this.rows.forEach(function(t){t.reinitialize()})},n.prototype.redraw=function(t){var e=this.scrollLeft;this.adjustTableSize(),this.table.tableWidth=this.table.element.clientWidth,t?this.renderTable():("classic"==this.renderMode?this.table.options.groupBy?this.refreshActiveData("group",!1,!1):this._simpleRender():(this.reRenderInPosition(),this.scrollHorizontal(e)),this.displayRowsCount||this.table.options.placeholder&&this.getElement().appendChild(this.table.options.placeholder))},n.prototype.resetScroll=function(){if(this.element.scrollLeft=0,this.element.scrollTop=0,"ie"===this.table.browser){var t=document.createEvent("Event");t.initEvent("scroll",!1,!0),this.element.dispatchEvent(t)}else this.element.dispatchEvent(new Event("scroll"))};var s=function(t){this._row=t};s.prototype.getData=function(t){return this._row.getData(t)},s.prototype.getElement=function(){return this._row.getElement()},s.prototype.getCells=function(){var t=[];return this._row.getCells().forEach(function(e){t.push(e.getComponent())}),t},s.prototype.getCell=function(t){var e=this._row.getCell(t);return!!e&&e.getComponent()},s.prototype.getIndex=function(){return this._row.getData("data")[this._row.table.options.index]},s.prototype.getPosition=function(t){return this._row.table.rowManager.getRowPosition(this._row,t)},s.prototype.delete=function(){return this._row.delete()},s.prototype.scrollTo=function(){return this._row.table.rowManager.scrollToRow(this._row)},s.prototype.pageTo=function(){if(this._row.table.modExists("page",!0))return this._row.table.modules.page.setPageToRow(this._row)},s.prototype.move=function(t,e){this._row.moveToRow(t,e)},s.prototype.update=function(t){return this._row.updateData(t)},s.prototype.normalizeHeight=function(){this._row.normalizeHeight(!0)},s.prototype.select=function(){this._row.table.modules.selectRow.selectRows(this._row)},s.prototype.deselect=function(){this._row.table.modules.selectRow.deselectRows(this._row)},s.prototype.toggleSelect=function(){this._row.table.modules.selectRow.toggleRow(this._row)},s.prototype.isSelected=function(){return this._row.table.modules.selectRow.isRowSelected(this._row)},s.prototype._getSelf=function(){return this._row},s.prototype.freeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.freezeRow(this._row)},s.prototype.unfreeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.unfreezeRow(this._row)},s.prototype.treeCollapse=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.collapseRow(this._row)},s.prototype.treeExpand=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.expandRow(this._row)},s.prototype.treeToggle=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.toggleRow(this._row)},s.prototype.getTreeParent=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeParent(this._row)},s.prototype.getTreeChildren=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeChildren(this._row)},s.prototype.reformat=function(){return this._row.reinitialize()},s.prototype.getGroup=function(){return this._row.getGroup().getComponent()},s.prototype.getTable=function(){return this._row.table},s.prototype.getNextRow=function(){var t=this._row.nextRow();return t?t.getComponent():t},s.prototype.getPrevRow=function(){var t=this._row.prevRow();return t?t.getComponent():t};var r=function(t,e){this.table=e.table,this.parent=e,this.data={},this.type="row",this.element=this.createElement(),this.modules={},this.cells=[],this.height=0,this.heightStyled="",this.manualHeight=!1,this.outerHeight=0,this.initialized=!1,this.heightInitialized=!1,this.setData(t),this.generateElement()};r.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-row"),t.setAttribute("role","row"),t},r.prototype.getElement=function(){return this.element},r.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},r.prototype.generateElement=function(){var t,e,o,i=this;!1!==i.table.options.selectable&&i.table.modExists("selectRow")&&i.table.modules.selectRow.initializeRow(this),!1!==i.table.options.movableRows&&i.table.modExists("moveRow")&&i.table.modules.moveRow.initializeRow(this),!1!==i.table.options.dataTree&&i.table.modExists("dataTree")&&i.table.modules.dataTree.initializeRow(this),i.table.options.rowClick&&i.element.addEventListener("click",function(t){i.table.options.rowClick(t,i.getComponent())}),i.table.options.rowDblClick&&i.element.addEventListener("dblclick",function(t){i.table.options.rowDblClick(t,i.getComponent())}),i.table.options.rowContext&&i.element.addEventListener("contextmenu",function(t){i.table.options.rowContext(t,i.getComponent())}),i.table.options.rowMouseEnter&&i.element.addEventListener("mouseenter",function(t){i.table.options.rowMouseEnter(t,i.getComponent())}),i.table.options.rowMouseLeave&&i.element.addEventListener("mouseleave",function(t){i.table.options.rowMouseLeave(t,i.getComponent())}),i.table.options.rowMouseOver&&i.element.addEventListener("mouseover",function(t){i.table.options.rowMouseOver(t,i.getComponent())}),i.table.options.rowMouseOut&&i.element.addEventListener("mouseout",function(t){i.table.options.rowMouseOut(t,i.getComponent())}),i.table.options.rowMouseMove&&i.element.addEventListener("mousemove",function(t){i.table.options.rowMouseMove(t,i.getComponent())}),i.table.options.rowTap&&(o=!1,i.element.addEventListener("touchstart",function(t){o=!0},{passive:!0}),i.element.addEventListener("touchend",function(t){o&&i.table.options.rowTap(t,i.getComponent()),o=!1})),i.table.options.rowDblTap&&(t=null,i.element.addEventListener("touchend",function(e){t?(clearTimeout(t),t=null,i.table.options.rowDblTap(e,i.getComponent())):t=setTimeout(function(){clearTimeout(t),t=null},300)})),i.table.options.rowTapHold&&(e=null,i.element.addEventListener("touchstart",function(t){clearTimeout(e),e=setTimeout(function(){clearTimeout(e),e=null,o=!1,i.table.options.rowTapHold(t,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(t){clearTimeout(e),e=null}))},r.prototype.generateCells=function(){this.cells=this.table.columnManager.generateCells(this)},r.prototype.initialize=function(t){var e=this;if(!e.initialized||t){for(e.deleteCells();e.element.firstChild;)e.element.removeChild(e.element.firstChild);this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutRow(this),this.generateCells(),e.cells.forEach(function(t){e.element.appendChild(t.getElement()),t.cellRendered()}),t&&e.normalizeHeight(),e.table.options.dataTree&&e.table.modExists("dataTree")&&e.table.modules.dataTree.layoutRow(this),"collapse"===e.table.options.responsiveLayout&&e.table.modExists("responsiveLayout")&&e.table.modules.responsiveLayout.layoutRow(this),e.table.options.rowFormatter&&e.table.options.rowFormatter(e.getComponent()),e.table.options.resizableRows&&e.table.modExists("resizeRows")&&e.table.modules.resizeRows.initializeRow(e),e.initialized=!0}},r.prototype.reinitializeHeight=function(){this.heightInitialized=!1,null!==this.element.offsetParent&&this.normalizeHeight(!0)},r.prototype.reinitialize=function(){this.initialized=!1,this.heightInitialized=!1,this.manualHeight||(this.height=0,this.heightStyled=""),null!==this.element.offsetParent&&this.initialize(!0)},r.prototype.calcHeight=function(t){var e=0,o=this.table.options.resizableRows?this.element.clientHeight:0;this.cells.forEach(function(t){var o=t.getHeight();o>e&&(e=o)}),this.height=t?Math.max(e,o):this.manualHeight?this.height:Math.max(e,o),this.heightStyled=this.height?this.height+"px":"",this.outerHeight=this.element.offsetHeight},r.prototype.setCellHeight=function(){this.cells.forEach(function(t){t.setHeight()}),this.heightInitialized=!0},r.prototype.clearCellHeight=function(){this.cells.forEach(function(t){t.clearHeight()})},r.prototype.normalizeHeight=function(t){t&&this.clearCellHeight(),this.calcHeight(t),this.setCellHeight()},r.prototype.setHeight=function(t,e){(this.height!=t||e)&&(this.manualHeight=!0,this.height=t,this.heightStyled=t?t+"px":"",this.setCellHeight(),this.outerHeight=this.element.offsetHeight)},r.prototype.getHeight=function(){return this.outerHeight},r.prototype.getWidth=function(){return this.element.offsetWidth},r.prototype.deleteCell=function(t){var e=this.cells.indexOf(t);e>-1&&this.cells.splice(e,1)},r.prototype.setData=function(t){this.table.modExists("mutator")&&(t=this.table.modules.mutator.transformRow(t,"data")),this.data=t,
-this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchRow(this)},r.prototype.updateData=function(t){var e=this,o=this,i=u.prototype.helpers.elVisible(this.element);return new Promise(function(n,s){"string"==typeof t&&(t=JSON.parse(t)),e.table.options.reactiveData&&e.table.modExists("reactiveData",!0)&&e.table.modules.reactiveData.block(),o.table.modExists("mutator")&&(t=o.table.modules.mutator.transformRow(t,"data",!0));for(var r in t)o.data[r]=t[r];e.table.options.reactiveData&&e.table.modExists("reactiveData",!0)&&e.table.modules.reactiveData.unblock();for(var r in t){e.table.columnManager.getColumnsByFieldRoot(r).forEach(function(o){var n=e.getCell(o.getField());if(n){var s=o.getFieldValue(t);n.getValue()!=s&&(n.setValueProcessData(s),i&&n.cellRendered())}})}i?(o.normalizeHeight(),o.table.options.rowFormatter&&o.table.options.rowFormatter(o.getComponent())):(e.initialized=!1,e.height=0,e.heightStyled=""),!1!==o.table.options.dataTree&&o.table.modExists("dataTree")&&e.table.modules.dataTree.redrawNeeded(t)&&(e.table.modules.dataTree.initializeRow(e),e.table.modules.dataTree.layoutRow(e),e.table.rowManager.refreshActiveData("tree",!1,!0)),o.table.options.rowUpdated.call(e.table,o.getComponent()),n()})},r.prototype.getData=function(t){var e=this;return t?e.table.modExists("accessor")?e.table.modules.accessor.transformRow(e.data,t):void 0:this.data},r.prototype.getCell=function(t){return t=this.table.columnManager.findColumn(t),this.cells.find(function(e){return e.column===t})},r.prototype.getCellIndex=function(t){return this.cells.findIndex(function(e){return e===t})},r.prototype.findNextEditableCell=function(t){var e=!1;if(t<this.cells.length-1)for(var o=t+1;o<this.cells.length;o++){var i=this.cells[o];if(i.column.modules.edit&&u.prototype.helpers.elVisible(i.getElement())){var n=!0;if("function"==typeof i.column.modules.edit.check&&(n=i.column.modules.edit.check(i.getComponent())),n){e=i;break}}}return e},r.prototype.findPrevEditableCell=function(t){var e=!1;if(t>0)for(var o=t-1;o>=0;o--){var i=this.cells[o],n=!0;if(i.column.modules.edit&&u.prototype.helpers.elVisible(i.getElement())&&("function"==typeof i.column.modules.edit.check&&(n=i.column.modules.edit.check(i.getComponent())),n)){e=i;break}}return e},r.prototype.getCells=function(){return this.cells},r.prototype.nextRow=function(){return this.table.rowManager.nextDisplayRow(this,!0)||!1},r.prototype.prevRow=function(){return this.table.rowManager.prevDisplayRow(this,!0)||!1},r.prototype.moveToRow=function(t,e){var o=this.table.rowManager.findRow(t);o?(this.table.rowManager.moveRowActual(this,o,!e),this.table.rowManager.refreshActiveData("display",!1,!0)):console.warn("Move Error - No matching row found:",t)},r.prototype.delete=function(){var t=this;return new Promise(function(e,o){var i,n;t.table.options.history&&t.table.modExists("history")&&(t.table.options.groupBy&&t.table.modExists("groupRows")?(n=t.getGroup().rows,(i=n.indexOf(t))&&(i=n[i-1])):(i=t.table.rowManager.getRowIndex(t))&&(i=t.table.rowManager.rows[i-1]),t.table.modules.history.action("rowDelete",t,{data:t.getData(),pos:!i,index:i})),t.deleteActual(),e()})},r.prototype.deleteActual=function(t){this.table.rowManager.getRowIndex(this);this.table.modExists("selectRow")&&this.table.modules.selectRow._deselectRow(this,!0),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0),this.modules.group&&this.modules.group.removeRow(this),this.table.rowManager.deleteRow(this,t),this.deleteCells(),this.initialized=!1,this.heightInitialized=!1,this.table.modExists("columnCalcs")&&(this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.columnCalcs.recalcRowGroup(this):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows))},r.prototype.deleteCells=function(){for(var t=this.cells.length,e=0;e<t;e++)this.cells[0].delete()},r.prototype.wipe=function(){for(this.deleteCells();this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element=!1,this.modules={},this.element.parentNode&&this.element.parentNode.removeChild(this.element)},r.prototype.getGroup=function(){return this.modules.group||!1},r.prototype.getComponent=function(){return new s(this)};var a=function(t){this._cell=t};a.prototype.getValue=function(){return this._cell.getValue()},a.prototype.getOldValue=function(){return this._cell.getOldValue()},a.prototype.getElement=function(){return this._cell.getElement()},a.prototype.getRow=function(){return this._cell.row.getComponent()},a.prototype.getData=function(){return this._cell.row.getData()},a.prototype.getField=function(){return this._cell.column.getField()},a.prototype.getColumn=function(){return this._cell.column.getComponent()},a.prototype.setValue=function(t,e){void 0===e&&(e=!0),this._cell.setValue(t,e)},a.prototype.restoreOldValue=function(){this._cell.setValueActual(this._cell.getOldValue())},a.prototype.edit=function(t){return this._cell.edit(t)},a.prototype.cancelEdit=function(){this._cell.cancelEdit()},a.prototype.nav=function(){return this._cell.nav()},a.prototype.checkHeight=function(){this._cell.checkHeight()},a.prototype.getTable=function(){return this._cell.table},a.prototype._getSelf=function(){return this._cell};var l=function(t,e){this.table=t.table,this.column=t,this.row=e,this.element=null,this.value=null,this.oldValue=null,this.height=null,this.width=null,this.minWidth=null,this.build()};l.prototype.build=function(){this.generateElement(),this.setWidth(),this._configureCell(),this.setValueActual(this.column.getFieldValue(this.row.data))},l.prototype.generateElement=function(){this.element=document.createElement("div"),this.element.className="tabulator-cell",this.element.setAttribute("role","gridcell"),this.element=this.element},l.prototype._configureCell=function(){var t=this,e=t.column.cellEvents,o=t.element,i=this.column.getField();if(o.style.textAlign=t.column.hozAlign,i&&o.setAttribute("tabulator-field",i),t.column.definition.cssClass){t.column.definition.cssClass.split(" ").forEach(function(t){o.classList.add(t)})}"hover"===this.table.options.tooltipGenerationMode&&o.addEventListener("mouseenter",function(e){t._generateTooltip()}),t._bindClickEvents(e),t._bindTouchEvents(e),t._bindMouseEvents(e),t.column.modules.edit&&t.table.modules.edit.bindEditor(t),t.column.definition.rowHandle&&!1!==t.table.options.movableRows&&t.table.modExists("moveRow")&&t.table.modules.moveRow.initializeCell(t),t.column.visible||t.hide()},l.prototype._bindClickEvents=function(t){var e=this,o=e.element;(t.cellClick||e.table.options.cellClick)&&o.addEventListener("click",function(o){var i=e.getComponent();t.cellClick&&t.cellClick.call(e.table,o,i),e.table.options.cellClick&&e.table.options.cellClick.call(e.table,o,i)}),t.cellDblClick||this.table.options.cellDblClick?o.addEventListener("dblclick",function(o){var i=e.getComponent();t.cellDblClick&&t.cellDblClick.call(e.table,o,i),e.table.options.cellDblClick&&e.table.options.cellDblClick.call(e.table,o,i)}):o.addEventListener("dblclick",function(t){t.preventDefault();try{if(document.selection){var o=document.body.createTextRange();o.moveToElementText(e.element),o.select()}else if(window.getSelection){var o=document.createRange();o.selectNode(e.element),window.getSelection().removeAllRanges(),window.getSelection().addRange(o)}}catch(t){}}),(t.cellContext||this.table.options.cellContext)&&o.addEventListener("contextmenu",function(o){var i=e.getComponent();t.cellContext&&t.cellContext.call(e.table,o,i),e.table.options.cellContext&&e.table.options.cellContext.call(e.table,o,i)})},l.prototype._bindMouseEvents=function(t){var e=this,o=e.element;(t.cellMouseEnter||e.table.options.cellMouseEnter)&&o.addEventListener("mouseenter",function(o){var i=e.getComponent();t.cellMouseEnter&&t.cellMouseEnter.call(e.table,o,i),e.table.options.cellMouseEnter&&e.table.options.cellMouseEnter.call(e.table,o,i)}),(t.cellMouseLeave||e.table.options.cellMouseLeave)&&o.addEventListener("mouseleave",function(o){var i=e.getComponent();t.cellMouseLeave&&t.cellMouseLeave.call(e.table,o,i),e.table.options.cellMouseLeave&&e.table.options.cellMouseLeave.call(e.table,o,i)}),(t.cellMouseOver||e.table.options.cellMouseOver)&&o.addEventListener("mouseover",function(o){var i=e.getComponent();t.cellMouseOver&&t.cellMouseOver.call(e.table,o,i),e.table.options.cellMouseOver&&e.table.options.cellMouseOver.call(e.table,o,i)}),(t.cellMouseOut||e.table.options.cellMouseOut)&&o.addEventListener("mouseout",function(o){var i=e.getComponent();t.cellMouseOut&&t.cellMouseOut.call(e.table,o,i),e.table.options.cellMouseOut&&e.table.options.cellMouseOut.call(e.table,o,i)}),(t.cellMouseMove||e.table.options.cellMouseMove)&&o.addEventListener("mousemove",function(o){var i=e.getComponent();t.cellMouseMove&&t.cellMouseMove.call(e.table,o,i),e.table.options.cellMouseMove&&e.table.options.cellMouseMove.call(e.table,o,i)})},l.prototype._bindTouchEvents=function(t){var e,o,i,n=this,s=n.element;(t.cellTap||this.table.options.cellTap)&&(i=!1,s.addEventListener("touchstart",function(t){i=!0},{passive:!0}),s.addEventListener("touchend",function(e){if(i){var o=n.getComponent();t.cellTap&&t.cellTap.call(n.table,e,o),n.table.options.cellTap&&n.table.options.cellTap.call(n.table,e,o)}i=!1})),(t.cellDblTap||this.table.options.cellDblTap)&&(e=null,s.addEventListener("touchend",function(o){if(e){clearTimeout(e),e=null;var i=n.getComponent();t.cellDblTap&&t.cellDblTap.call(n.table,o,i),n.table.options.cellDblTap&&n.table.options.cellDblTap.call(n.table,o,i)}else e=setTimeout(function(){clearTimeout(e),e=null},300)})),(t.cellTapHold||this.table.options.cellTapHold)&&(o=null,s.addEventListener("touchstart",function(e){clearTimeout(o),o=setTimeout(function(){clearTimeout(o),o=null,i=!1;var s=n.getComponent();t.cellTapHold&&t.cellTapHold.call(n.table,e,s),n.table.options.cellTapHold&&n.table.options.cellTapHold.call(n.table,e,s)},1e3)},{passive:!0}),s.addEventListener("touchend",function(t){clearTimeout(o),o=null}))},l.prototype._generateContents=function(){var t;switch(t=this.table.modExists("format")?this.table.modules.format.formatValue(this):this.element.innerHTML=this.value,void 0===t?"undefined":_typeof(t)){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}},l.prototype.cellRendered=function(){this.table.modExists("format")&&this.table.modules.format.cellRendered&&this.table.modules.format.cellRendered(this)},l.prototype._generateTooltip=function(){var t=this.column.tooltip;t?(!0===t?t=this.value:"function"==typeof t&&!1===(t=t(this.getComponent()))&&(t=""),void 0===t&&(t=""),this.element.setAttribute("title",t)):this.element.setAttribute("title","")},l.prototype.getElement=function(){return this.element},l.prototype.getValue=function(){return this.value},l.prototype.getOldValue=function(){return this.oldValue},l.prototype.setValue=function(t,e){var o,i=this.setValueProcessData(t,e);i&&(this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("cellEdit",this,{oldValue:this.oldValue,newValue:this.value}),o=this.getComponent(),this.column.cellEvents.cellEdited&&this.column.cellEvents.cellEdited.call(this.table,o),this.table.options.cellEdited.call(this.table,o),this.table.options.dataEdited.call(this.table,this.table.rowManager.getData()))},l.prototype.setValueProcessData=function(t,e){var o=!1;return this.value!=t&&(o=!0,e&&this.column.modules.mutate&&(t=this.table.modules.mutator.transformCell(this,t))),this.setValueActual(t),o&&this.table.modExists("columnCalcs")&&(this.column.definition.topCalc||this.column.definition.bottomCalc)&&(this.table.options.groupBy&&this.table.modExists("groupRows")?("table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs||this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),"table"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.recalcRowGroup(this.row)):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows)),o},l.prototype.setValueActual=function(t){this.oldValue=this.value,this.value=t,this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.block(),this.column.setFieldValue(this.row.data,t),this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.unblock(),this._generateContents(),this._generateTooltip(),this.table.options.resizableColumns&&this.table.modExists("resizeColumns")&&this.table.modules.resizeColumns.initializeColumn("cell",this.column,this.element),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutElement(this.element,this.column)},l.prototype.setWidth=function(){this.width=this.column.width,this.element.style.width=this.column.widthStyled},l.prototype.clearWidth=function(){this.width="",this.element.style.width=""},l.prototype.getWidth=function(){return this.width||this.element.offsetWidth},l.prototype.setMinWidth=function(){this.minWidth=this.column.minWidth,this.element.style.minWidth=this.column.minWidthStyled},l.prototype.checkHeight=function(){this.row.reinitializeHeight()},l.prototype.clearHeight=function(){this.element.style.height="",this.height=null},l.prototype.setHeight=function(){this.height=this.row.height,this.element.style.height=this.row.heightStyled},l.prototype.getHeight=function(){return this.height||this.element.offsetHeight},l.prototype.show=function(){this.element.style.display=""},l.prototype.hide=function(){this.element.style.display="none"},l.prototype.edit=function(t){if(this.table.modExists("edit",!0))return this.table.modules.edit.editCell(this,t)},l.prototype.cancelEdit=function(){if(this.table.modExists("edit",!0)){var t=this.table.modules.edit.getCurrentCell();t&&t._getSelf()===this?this.table.modules.edit.cancelEdit():console.warn("Cancel Editor Error - This cell is not currently being edited ")}},l.prototype.delete=function(){this.element.parentNode.removeChild(this.element),this.element=!1,this.column.deleteCell(this),this.row.deleteCell(this),this.calcs={}},l.prototype.nav=function(){var t=this,e=!1,o=this.row.getCellIndex(this);return{next:function(){var e,o=this.right();return!!o||!(!(e=t.table.rowManager.nextDisplayRow(t.row,!0))||!(o=e.findNextEditableCell(-1)))&&(o.edit(),!0)},prev:function(){var e,o=this.left();return!!o||!(!(e=t.table.rowManager.prevDisplayRow(t.row,!0))||!(o=e.findPrevEditableCell(e.cells.length)))&&(o.edit(),!0)},left:function(){return!!(e=t.row.findPrevEditableCell(o))&&(e.edit(),!0)},right:function(){return!!(e=t.row.findNextEditableCell(o))&&(e.edit(),!0)},up:function(){var e=t.table.rowManager.prevDisplayRow(t.row,!0);e&&e.cells[o].edit()},down:function(){var e=t.table.rowManager.nextDisplayRow(t.row,!0);e&&e.cells[o].edit()}}},l.prototype.getIndex=function(){this.row.getCellIndex(this)},l.prototype.getComponent=function(){return new a(this)};var c=function(t){this.table=t,this.active=!1,this.element=this.createElement(),this.external=!1,this.links=[],this._initialize()};c.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-footer"),t},c.prototype._initialize=function(t){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}},c.prototype.getElement=function(){return this.element},c.prototype.append=function(t,e){this.activate(e),this.element.appendChild(t),this.table.rowManager.adjustTableSize()},c.prototype.prepend=function(t,e){this.activate(e),this.element.insertBefore(t,this.element.firstChild),this.table.rowManager.adjustTableSize()},c.prototype.remove=function(t){t.parentNode.removeChild(t),this.deactivate()},c.prototype.deactivate=function(t){this.element.firstChild&&!t||(this.external||this.element.parentNode.removeChild(this.element),this.active=!1)},c.prototype.activate=function(t){this.active||(this.active=!0,this.external||(this.table.element.appendChild(this.getElement()),this.table.element.style.display="")),t&&this.links.push(t)},c.prototype.redraw=function(){this.links.forEach(function(t){t.footerRedraw()})};var u=function t(e,o){this.options={},this.columnManager=null,this.rowManager=null,this.footerManager=null,this.browser="",this.browserSlow=!1,this.modules={},this.initializeElement(e),this.initializeOptions(o||{}),this._create(),t.prototype.comms.register(this)};u.prototype.defaultOptions={height:!1,layout:"fitData",layoutColumnsOnNewData:!1,columnMinWidth:40,columnVertAlign:"top",resizableColumns:!0,resizableRows:!1,autoResize:!0,columns:[],data:[],autoColumns:!1,reactiveData:!1,nestedFieldSeparator:".",tooltips:!1,tooltipsHeader:!1,tooltipGenerationMode:"load",initialSort:!1,initialFilter:!1,initialHeaderFilter:!1,columnHeaderSortMulti:!0,sortOrderReverse:!1,headerSort:!0,headerSortTristate:!1,footerElement:!1,index:"id",keybindings:[],tabEndNewRow:!1,invalidOptionWarnings:!0,clipboard:!1,clipboardCopyStyled:!0,clipboardCopySelector:"active",clipboardCopyFormatter:"table",clipboardPasteParser:"table",clipboardPasteAction:"insert",clipboardCopyConfig:!1,clipboardCopied:function(){},clipboardPasted:function(){},clipboardPasteError:function(){},downloadDataFormatter:!1,downloadReady:function(t,e){return e},downloadComplete:!1,downloadConfig:!1,dataTree:!1,dataTreeElementColumn:!1,dataTreeBranchElement:!0,dataTreeChildIndent:9,dataTreeChildField:"_children",dataTreeCollapseElement:!1,dataTreeExpandElement:!1,dataTreeStartExpanded:!1,dataTreeRowExpanded:function(){},dataTreeRowCollapsed:function(){},printAsHtml:!1,printFormatter:!1,printHeader:!1,printFooter:!1,printCopyStyle:!0,printVisibleRows:!0,printConfig:{},addRowPos:"bottom",selectable:"highlight",selectableRangeMode:"drag",selectableRollingSelection:!0,selectablePersistence:!0,selectableCheck:function(t,e){return!0},headerFilterPlaceholder:!1,headerVisible:!0,history:!1,locale:!1,langs:{},virtualDom:!0,virtualDomBuffer:0,persistentLayout:!1,persistentSort:!1,persistentFilter:!1,persistenceID:"",persistenceMode:!0,responsiveLayout:!1,responsiveLayoutCollapseStartOpen:!0,responsiveLayoutCollapseUseFormatters:!0,responsiveLayoutCollapseFormatter:!1,pagination:!1,paginationSize:!1,paginationButtonCount:5,paginationSizeSelector:!1,paginationElement:!1,paginationDataSent:{},paginationDataReceived:{},paginationAddRow:"page",ajaxURL:!1,ajaxURLGenerator:!1,ajaxParams:{},ajaxConfig:"get",ajaxContentType:"form",ajaxRequestFunc:!1,ajaxLoader:!0,ajaxLoaderLoading:!1,ajaxLoaderError:!1,ajaxFiltering:!1,ajaxSorting:!1,ajaxProgressiveLoad:!1,ajaxProgressiveLoadDelay:0,ajaxProgressiveLoadScrollMargin:0,groupBy:!1,groupStartOpen:!0,groupValues:!1,groupHeader:!1,htmlOutputConfig:!1,movableColumns:!1,movableRows:!1,movableRowsConnectedTables:!1,movableRowsSender:!1,movableRowsReceiver:"insert",movableRowsSendingStart:function(){},movableRowsSent:function(){},movableRowsSentFailed:function(){},movableRowsSendingStop:function(){},movableRowsReceivingStart:function(){},movableRowsReceived:function(){},movableRowsReceivedFailed:function(){},movableRowsReceivingStop:function(){},scrollToRowPosition:"top",scrollToRowIfVisible:!0,scrollToColumnPosition:"left",scrollToColumnIfVisible:!0,rowFormatter:!1,placeholder:!1,tableBuilding:function(){},tableBuilt:function(){},renderStarted:function(){},renderComplete:function(){},rowClick:!1,rowDblClick:!1,rowContext:!1,rowTap:!1,rowDblTap:!1,rowTapHold:!1,rowMouseEnter:!1,rowMouseLeave:!1,rowMouseOver:!1,rowMouseOut:!1,rowMouseMove:!1,rowAdded:function(){},rowDeleted:function(){},rowMoved:function(){},rowUpdated:function(){},rowSelectionChanged:function(){},rowSelected:function(){},rowDeselected:function(){},rowResized:function(){},cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1,cellEditing:function(){},cellEdited:function(){},cellEditCancelled:function(){},columnMoved:!1,columnResized:function(){},columnTitleChanged:function(){},columnVisibilityChanged:function(){},htmlImporting:function(){},htmlImported:function(){},dataLoading:function(){},dataLoaded:function(){},dataEdited:function(){},ajaxRequesting:function(){},ajaxResponse:!1,ajaxError:function(){},dataFiltering:!1,dataFiltered:!1,dataSorting:function(){},dataSorted:function(){},groupToggleElement:"arrow",groupClosedShowCalcs:!1,dataGrouping:function(){},dataGrouped:!1,groupVisibilityChanged:function(){},groupClick:!1,groupDblClick:!1,groupContext:!1,groupTap:!1,groupDblTap:!1,groupTapHold:!1,columnCalcs:!0,pageLoaded:function(){},localized:function(){},validationFailed:function(){},historyUndo:function(){},historyRedo:function(){}},u.prototype.initializeOptions=function(t){if(!1!==t.invalidOptionWarnings)for(var e in t)void 0===this.defaultOptions[e]&&console.warn("Invalid table constructor option:",e);for(var e in this.defaultOptions)e in t?this.options[e]=t[e]:Array.isArray(this.defaultOptions[e])?this.options[e]=[]:"object"===_typeof(this.defaultOptions[e])?this.options[e]={}:this.options[e]=this.defaultOptions[e]},u.prototype.initializeElement=function(t){return"undefined"!=typeof HTMLElement&&t instanceof HTMLElement?(this.element=t,!0):"string"==typeof t?(this.element=document.querySelector(t),!!this.element||(console.error("Tabulator Creation Error - no element found matching selector: ",t),!1)):(console.error("Tabulator Creation Error - Invalid element provided:",t),!1)},u.prototype._mapDepricatedFunctionality=function(){},u.prototype._clearSelection=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")},u.prototype._create=function(){this._clearObjectPointers(),this._mapDepricatedFunctionality(),this.bindModules(),"TABLE"===this.element.tagName&&this.modExists("htmlTableImport",!0)&&this.modules.htmlTableImport.parseTable(),this.columnManager=new t(this),this.rowManager=new n(this),this.footerManager=new c(this),this.columnManager.setRowManager(this.rowManager),this.rowManager.setColumnManager(this.columnManager),this._buildElement(),this._loadInitialData()},u.prototype._clearObjectPointers=function(){this.options.columns=this.options.columns.slice(0),this.options.reactiveData||(this.options.data=this.options.data.slice(0))},u.prototype._buildElement=function(){var t=this,e=this.element,o=this.modules,i=this.options;for(i.tableBuilding.call(this),e.classList.add("tabulator"),e.setAttribute("role","grid");e.firstChild;)e.removeChild(e.firstChild);i.height&&(i.height=isNaN(i.height)?i.height:i.height+"px",e.style.height=i.height),this.columnManager.initialize(),this.rowManager.initialize(),this._detectBrowser(),this.modExists("layout",!0)&&o.layout.initialize(i.layout),!1!==i.headerFilterPlaceholder&&o.localize.setHeaderFilterPlaceholder(i.headerFilterPlaceholder);for(var n in i.langs)o.localize.installLang(n,i.langs[n]);if(o.localize.setLocale(i.locale),"string"==typeof i.placeholder){var s=document.createElement("div");s.classList.add("tabulator-placeholder");var r=document.createElement("span");r.innerHTML=i.placeholder,s.appendChild(r),i.placeholder=s}if(e.appendChild(this.columnManager.getElement()),e.appendChild(this.rowManager.getElement()),i.footerElement&&this.footerManager.activate(),(i.persistentLayout||i.persistentSort||i.persistentFilter)&&this.modExists("persistence",!0)&&o.persistence.initialize(i.persistenceMode,i.persistenceID),i.persistentLayout&&this.modExists("persistence",!0)&&(i.columns=o.persistence.load("columns",i.columns)),i.movableRows&&this.modExists("moveRow")&&o.moveRow.initialize(),i.autoColumns&&this.options.data&&this.columnManager.generateColumnsFromRowData(this.options.data),this.modExists("columnCalcs")&&o.columnCalcs.initialize(),this.columnManager.setColumns(i.columns),i.dataTree&&this.modExists("dataTree",!0)&&o.dataTree.initialize(),this.modExists("frozenRows")&&this.modules.frozenRows.initialize(),(i.persistentSort||i.initialSort)&&this.modExists("sort",!0)){var a=[];i.persistentSort&&this.modExists("persistence",!0)?!1===(a=o.persistence.load("sort"))&&i.initialSort&&(a=i.initialSort):i.initialSort&&(a=i.initialSort),o.sort.setSort(a)}if((i.persistentFilter||i.initialFilter)&&this.modExists("filter",!0)){var l=[];i.persistentFilter&&this.modExists("persistence",!0)?!1===(l=o.persistence.load("filter"))&&i.initialFilter&&(l=i.initialFilter):i.initialFilter&&(l=i.initialFilter),o.filter.setFilter(l)}i.initialHeaderFilter&&this.modExists("filter",!0)&&i.initialHeaderFilter.forEach(function(e){var i=t.columnManager.findColumn(e.field);if(!i)return console.warn("Column Filter Error - No matching column found:",e.field),!1;o.filter.setHeaderFilterValue(i,e.value)}),this.modExists("ajax")&&o.ajax.initialize(),i.pagination&&this.modExists("page",!0)&&o.page.initialize(),i.groupBy&&this.modExists("groupRows",!0)&&o.groupRows.initialize(),this.modExists("keybindings")&&o.keybindings.initialize(),this.modExists("selectRow")&&o.selectRow.clearSelectionData(!0),i.autoResize&&this.modExists("resizeTable")&&o.resizeTable.initialize(),this.modExists("clipboard")&&o.clipboard.initialize(),i.printAsHtml&&this.modExists("print")&&o.print.initialize(),i.tableBuilt.call(this)},u.prototype._loadInitialData=function(){var t=this;t.options.pagination&&t.modExists("page")?(t.modules.page.reset(!0),"local"==t.options.pagination?t.options.data.length?t.rowManager.setData(t.options.data):(t.options.ajaxURL||t.options.ajaxURLGenerator)&&t.modExists("ajax")?t.modules.ajax.loadData().then(function(){}).catch(function(){}):t.rowManager.setData(t.options.data):t.options.ajaxURL?t.modules.page.setPage(1).then(function(){}).catch(function(){}):t.rowManager.setData([])):t.options.data.length?t.rowManager.setData(t.options.data):(t.options.ajaxURL||t.options.ajaxURLGenerator)&&t.modExists("ajax")?t.modules.ajax.loadData().then(function(){}).catch(function(){}):t.rowManager.setData(t.options.data)},u.prototype.destroy=function(){var t=this.element;for(u.prototype.comms.deregister(this),this.options.reactiveData&&this.modExists("reactiveData",!0)&&this.modules.reactiveData.unwatchData(),this.rowManager.rows.forEach(function(t){t.wipe()}),this.rowManager.rows=[],this.rowManager.activeRows=[],this.rowManager.displayRows=[],this.options.autoResize&&this.modExists("resizeTable")&&this.modules.resizeTable.clearBindings(),this.modExists("keybindings")&&this.modules.keybindings.clearBindings();t.firstChild;)t.removeChild(t.firstChild);t.classList.remove("tabulator")},u.prototype._detectBrowser=function(){var t=navigator.userAgent;t.indexOf("Trident")>-1?(this.browser="ie",this.browserSlow=!0):t.indexOf("Edge")>-1?(this.browser="edge",this.browserSlow=!0):t.indexOf("Firefox")>-1?(this.browser="firefox",this.browserSlow=!1):(this.browser="other",this.browserSlow=!1)},u.prototype.setDataFromLocalFile=function(t){var e=this;return new Promise(function(o,i){var n=document.createElement("input");n.type="file",n.accept=t||".json,application/json",n.addEventListener("change",function(t){var s,r=n.files[0],a=new FileReader;a.readAsText(r),a.onload=function(t){try{s=JSON.parse(a.result)}catch(t){return console.warn("File Load Error - File contents is invalid JSON",t),void i(t)}e._setData(s).then(function(t){o(t)}).catch(function(t){o(t)})},a.onerror=function(t){console.warn("File Load Error - Unable to read file"),i()}}),n.click()})},u.prototype.setData=function(t,e,o){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(t,e,o)},u.prototype._setData=function(t,e,o,i){var n=this;return"string"!=typeof t?t?n.rowManager.setData(t,i):n.modExists("ajax")&&(n.modules.ajax.getUrl||n.options.ajaxURLGenerator)?"remote"==n.options.pagination&&n.modExists("page",!0)?(n.modules.page.reset(!0),n.modules.page.setPage(1)):n.modules.ajax.loadData(i):n.rowManager.setData([],i):0==t.indexOf("{")||0==t.indexOf("[")?n.rowManager.setData(JSON.parse(t),i):n.modExists("ajax",!0)?(e&&n.modules.ajax.setParams(e),o&&n.modules.ajax.setConfig(o),n.modules.ajax.setUrl(t),"remote"==n.options.pagination&&n.modExists("page",!0)?(n.modules.page.reset(!0),n.modules.page.setPage(1)):n.modules.ajax.loadData(i)):void 0},u.prototype.clearData=function(){this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this.rowManager.clearData()},u.prototype.getData=function(t){return this.rowManager.getData(t)},u.prototype.getDataCount=function(t){return this.rowManager.getDataCount(t)},u.prototype.searchRows=function(t,e,o){if(this.modExists("filter",!0))return this.modules.filter.search("rows",t,e,o)},u.prototype.searchData=function(t,e,o){if(this.modExists("filter",!0))return this.modules.filter.search("data",t,e,o)},u.prototype.getHtml=function(t,e,o){if(this.modExists("htmlTableExport",!0))return this.modules.htmlTableExport.getHtml(t,e,o)},u.prototype.print=function(t,e,o){if(this.modExists("print",!0))return this.modules.print.printFullscreen(t,e,o)},u.prototype.getAjaxUrl=function(){if(this.modExists("ajax",!0))return this.modules.ajax.getUrl()},u.prototype.replaceData=function(t,e,o){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(t,e,o,!0)},u.prototype.updateData=function(t){var e=this,o=this,i=0;return new Promise(function(n,s){e.modExists("ajax")&&e.modules.ajax.blockActiveRequest(),"string"==typeof t&&(t=JSON.parse(t)),t?t.forEach(function(t){var e=o.rowManager.findRow(t[o.options.index]);e&&(i++,e.updateData(t).then(function(){--i||n()}))}):(console.warn("Update Error - No data provided"),s("Update Error - No data provided"))})},u.prototype.addData=function(t,e,o){var i=this;return new Promise(function(n,s){i.modExists("ajax")&&i.modules.ajax.blockActiveRequest(),"string"==typeof t&&(t=JSON.parse(t)),t?i.rowManager.addRows(t,e,o).then(function(t){var e=[];t.forEach(function(t){e.push(t.getComponent())}),n(e)}):(console.warn("Update Error - No data provided"),s("Update Error - No data provided"))})},u.prototype.updateOrAddData=function(t){var e=this,o=this,i=[],n=0;return new Promise(function(s,r){e.modExists("ajax")&&e.modules.ajax.blockActiveRequest(),"string"==typeof t&&(t=JSON.parse(t)),t?t.forEach(function(t){var e=o.rowManager.findRow(t[o.options.index]);n++,e?e.updateData(t).then(function(){n--,i.push(e.getComponent()),n||s(i)}):o.rowManager.addRows(t).then(function(t){n--,i.push(t[0].getComponent()),n||s(i)})}):(console.warn("Update Error - No data provided"),r("Update Error - No data provided"))})},u.prototype.getRow=function(t){var e=this.rowManager.findRow(t);return e?e.getComponent():(console.warn("Find Error - No matching row found:",t),!1)},u.prototype.getRowFromPosition=function(t,e){var o=this.rowManager.getRowFromPosition(t,e);return o?o.getComponent():(console.warn("Find Error - No matching row found:",t),!1)},u.prototype.deleteRow=function(t){var e=this;return new Promise(function(o,i){var n=e.rowManager.findRow(t);n?n.delete().then(function(){o()}).catch(function(t){i(t)}):(console.warn("Delete Error - No matching row found:",t),i("Delete Error - No matching row found"))})},u.prototype.addRow=function(t,e,o){var i=this;return new Promise(function(n,s){"string"==typeof t&&(t=JSON.parse(t)),
-i.rowManager.addRows(t,e,o).then(function(t){i.modExists("columnCalcs")&&i.modules.columnCalcs.recalc(i.rowManager.activeRows),n(t[0].getComponent())})})},u.prototype.updateOrAddRow=function(t,e){var o=this;return new Promise(function(i,n){var s=o.rowManager.findRow(t);"string"==typeof e&&(e=JSON.parse(e)),s?s.updateData(e).then(function(){o.modExists("columnCalcs")&&o.modules.columnCalcs.recalc(o.rowManager.activeRows),i(s.getComponent())}).catch(function(t){n(t)}):s=o.rowManager.addRows(e).then(function(t){o.modExists("columnCalcs")&&o.modules.columnCalcs.recalc(o.rowManager.activeRows),i(t[0].getComponent())}).catch(function(t){n(t)})})},u.prototype.updateRow=function(t,e){var o=this;return new Promise(function(i,n){var s=o.rowManager.findRow(t);"string"==typeof e&&(e=JSON.parse(e)),s?s.updateData(e).then(function(){i(s.getComponent())}).catch(function(t){n(t)}):(console.warn("Update Error - No matching row found:",t),n("Update Error - No matching row found"))})},u.prototype.scrollToRow=function(t,e,o){var i=this;return new Promise(function(n,s){var r=i.rowManager.findRow(t);r?i.rowManager.scrollToRow(r,e,o).then(function(){n()}).catch(function(t){s(t)}):(console.warn("Scroll Error - No matching row found:",t),s("Scroll Error - No matching row found"))})},u.prototype.moveRow=function(t,e,o){var i=this.rowManager.findRow(t);i?i.moveToRow(e,o):console.warn("Move Error - No matching row found:",t)},u.prototype.getRows=function(t){return this.rowManager.getComponents(t)},u.prototype.getRowPosition=function(t,e){var o=this.rowManager.findRow(t);return o?this.rowManager.getRowPosition(o,e):(console.warn("Position Error - No matching row found:",t),!1)},u.prototype.copyToClipboard=function(t,e,o,i){this.modExists("clipboard",!0)&&this.modules.clipboard.copy(t,e,o,i)},u.prototype.setColumns=function(t){this.columnManager.setColumns(t)},u.prototype.getColumns=function(t){return this.columnManager.getComponents(t)},u.prototype.getColumn=function(t){var e=this.columnManager.findColumn(t);return e?e.getComponent():(console.warn("Find Error - No matching column found:",t),!1)},u.prototype.getColumnDefinitions=function(){return this.columnManager.getDefinitionTree()},u.prototype.getColumnLayout=function(){if(this.modExists("persistence",!0))return this.modules.persistence.parseColumns(this.columnManager.getColumns())},u.prototype.setColumnLayout=function(t){return!!this.modExists("persistence",!0)&&(this.columnManager.setColumns(this.modules.persistence.mergeDefinition(this.options.columns,t)),!0)},u.prototype.showColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Show Error - No matching column found:",t),!1;e.show(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},u.prototype.hideColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Hide Error - No matching column found:",t),!1;e.hide(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},u.prototype.toggleColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Visibility Toggle Error - No matching column found:",t),!1;e.visible?e.hide():e.show()},u.prototype.addColumn=function(t,e,o){var i=this.columnManager.findColumn(o);this.columnManager.addColumn(t,e,i)},u.prototype.deleteColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Delete Error - No matching column found:",t),!1;e.delete()},u.prototype.moveColumn=function(t,e,o){var i=this.columnManager.findColumn(t),n=this.columnManager.findColumn(e);i?n?this.columnManager.moveColumn(i,n,o):console.warn("Move Error - No matching column found:",n):console.warn("Move Error - No matching column found:",t)},u.prototype.scrollToColumn=function(t,e,o){var i=this;return new Promise(function(n,s){var r=i.columnManager.findColumn(t);r?i.columnManager.scrollToColumn(r,e,o).then(function(){n()}).catch(function(t){s(t)}):(console.warn("Scroll Error - No matching column found:",t),s("Scroll Error - No matching column found"))})},u.prototype.setLocale=function(t){this.modules.localize.setLocale(t)},u.prototype.getLocale=function(){return this.modules.localize.getLocale()},u.prototype.getLang=function(t){return this.modules.localize.getLang(t)},u.prototype.redraw=function(t){this.columnManager.redraw(t),this.rowManager.redraw(t)},u.prototype.setHeight=function(t){"classic"!==this.rowManager.renderMode?(this.options.height=isNaN(t)?t:t+"px",this.element.style.height=this.options.height,this.rowManager.redraw()):console.warn("setHeight function is not available in classic render mode")},u.prototype.setSort=function(t,e){this.modExists("sort",!0)&&(this.modules.sort.setSort(t,e),this.rowManager.sorterRefresh())},u.prototype.getSorters=function(){if(this.modExists("sort",!0))return this.modules.sort.getSort()},u.prototype.clearSort=function(){this.modExists("sort",!0)&&(this.modules.sort.clear(),this.rowManager.sorterRefresh())},u.prototype.setFilter=function(t,e,o){this.modExists("filter",!0)&&(this.modules.filter.setFilter(t,e,o),this.rowManager.filterRefresh())},u.prototype.addFilter=function(t,e,o){this.modExists("filter",!0)&&(this.modules.filter.addFilter(t,e,o),this.rowManager.filterRefresh())},u.prototype.getFilters=function(t){if(this.modExists("filter",!0))return this.modules.filter.getFilters(t)},u.prototype.setHeaderFilterFocus=function(t){if(this.modExists("filter",!0)){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Filter Focus Error - No matching column found:",t),!1;this.modules.filter.setHeaderFilterFocus(e)}},u.prototype.setHeaderFilterValue=function(t,e){if(this.modExists("filter",!0)){var o=this.columnManager.findColumn(t);if(!o)return console.warn("Column Filter Error - No matching column found:",t),!1;this.modules.filter.setHeaderFilterValue(o,e)}},u.prototype.getHeaderFilters=function(){if(this.modExists("filter",!0))return this.modules.filter.getHeaderFilters()},u.prototype.removeFilter=function(t,e,o){this.modExists("filter",!0)&&(this.modules.filter.removeFilter(t,e,o),this.rowManager.filterRefresh())},u.prototype.clearFilter=function(t){this.modExists("filter",!0)&&(this.modules.filter.clearFilter(t),this.rowManager.filterRefresh())},u.prototype.clearHeaderFilter=function(){this.modExists("filter",!0)&&(this.modules.filter.clearHeaderFilter(),this.rowManager.filterRefresh())},u.prototype.selectRow=function(t){this.modExists("selectRow",!0)&&this.modules.selectRow.selectRows(t)},u.prototype.deselectRow=function(t){this.modExists("selectRow",!0)&&this.modules.selectRow.deselectRows(t)},u.prototype.toggleSelectRow=function(t){this.modExists("selectRow",!0)&&this.modules.selectRow.toggleRow(t)},u.prototype.getSelectedRows=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedRows()},u.prototype.getSelectedData=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedData()},u.prototype.setMaxPage=function(t){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setMaxPage(t)},u.prototype.setPage=function(t){return this.options.pagination&&this.modExists("page")?this.modules.page.setPage(t):new Promise(function(t,e){e()})},u.prototype.setPageToRow=function(t){var e=this;return new Promise(function(o,i){e.options.pagination&&e.modExists("page")?(t=e.rowManager.findRow(t),t?e.modules.page.setPageToRow(t).then(function(){o()}).catch(function(){i()}):i()):i()})},u.prototype.setPageSize=function(t){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setPageSize(t),this.modules.page.setPage(1).then(function(){}).catch(function(){})},u.prototype.getPageSize=function(){if(this.options.pagination&&this.modExists("page",!0))return this.modules.page.getPageSize()},u.prototype.previousPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.previousPage()},u.prototype.nextPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.nextPage()},u.prototype.getPage=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPage()},u.prototype.getPageMax=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPageMax()},u.prototype.setGroupBy=function(t){if(!this.modExists("groupRows",!0))return!1;this.options.groupBy=t,this.modules.groupRows.initialize(),this.rowManager.refreshActiveData("display")},u.prototype.setGroupStartOpen=function(t){if(!this.modExists("groupRows",!0))return!1;this.options.groupStartOpen=t,this.modules.groupRows.initialize(),this.options.groupBy?this.rowManager.refreshActiveData("group"):console.warn("Grouping Update - cant refresh view, no groups have been set")},u.prototype.setGroupHeader=function(t){if(!this.modExists("groupRows",!0))return!1;this.options.groupHeader=t,this.modules.groupRows.initialize(),this.options.groupBy?this.rowManager.refreshActiveData("group"):console.warn("Grouping Update - cant refresh view, no groups have been set")},u.prototype.getGroups=function(t){return!!this.modExists("groupRows",!0)&&this.modules.groupRows.getGroups(!0)},u.prototype.getGroupedData=function(){if(this.modExists("groupRows",!0))return this.options.groupBy?this.modules.groupRows.getGroupedData():this.getData()},u.prototype.getCalcResults=function(){return!!this.modExists("columnCalcs",!0)&&this.modules.columnCalcs.getResults()},u.prototype.navigatePrev=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&t.nav().prev()},u.prototype.navigateNext=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&t.nav().next()},u.prototype.navigateLeft=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().left())},u.prototype.navigateRight=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().right())},u.prototype.navigateUp=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().up())},u.prototype.navigateDown=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().down())},u.prototype.undo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.undo()},u.prototype.redo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.redo()},u.prototype.getHistoryUndoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryUndoSize()},u.prototype.getHistoryRedoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryRedoSize()},u.prototype.download=function(t,e,o){this.modExists("download",!0)&&this.modules.download.download(t,e,o)},u.prototype.downloadToTab=function(t,e,o){this.modExists("download",!0)&&this.modules.download.download(t,e,o,!0)},u.prototype.tableComms=function(t,e,o,i){this.modules.comms.receive(t,e,o,i)},u.prototype.moduleBindings={},u.prototype.extendModule=function(t,e,o){if(u.prototype.moduleBindings[t]){var i=u.prototype.moduleBindings[t].prototype[e];if(i)if("object"==(void 0===o?"undefined":_typeof(o)))for(var n in o)i[n]=o[n];else console.warn("Module Error - Invalid value type, it must be an object");else console.warn("Module Error - property does not exist:",e)}else console.warn("Module Error - module does not exist:",t)},u.prototype.registerModule=function(t,e){u.prototype.moduleBindings[t]=e},u.prototype.bindModules=function(){this.modules={};for(var t in u.prototype.moduleBindings)this.modules[t]=new u.prototype.moduleBindings[t](this)},u.prototype.modExists=function(t,e){return!!this.modules[t]||(e&&console.error("Tabulator Module Not Installed: "+t),!1)},u.prototype.helpers={elVisible:function(t){return!(t.offsetWidth<=0&&t.offsetHeight<=0)},elOffset:function(t){var e=t.getBoundingClientRect();return{top:e.top+window.pageYOffset-document.documentElement.clientTop,left:e.left+window.pageXOffset-document.documentElement.clientLeft}},deepClone:function(t){var e=Array.isArray(t)?[]:{};for(var o in t)null!=t[o]&&"object"===_typeof(t[o])?t[o]instanceof Date?e[o]=new Date(t[o]):e[o]=this.deepClone(t[o]):e[o]=t[o];return e}},u.prototype.comms={tables:[],register:function(t){u.prototype.comms.tables.push(t)},deregister:function(t){var e=u.prototype.comms.tables.indexOf(t);e>-1&&u.prototype.comms.tables.splice(e,1)},lookupTable:function(t){var e,o,i=[];if("string"==typeof t){if(e=document.querySelectorAll(t),e.length)for(var n=0;n<e.length;n++)(o=u.prototype.comms.matchElement(e[n]))&&i.push(o)}else"undefined"!=typeof HTMLElement&&t instanceof HTMLElement||t instanceof u?(o=u.prototype.comms.matchElement(t))&&i.push(o):Array.isArray(t)?t.forEach(function(t){i=i.concat(u.prototype.comms.lookupTable(t))}):console.warn("Table Connection Error - Invalid Selector",t);return i},matchElement:function(t){return u.prototype.comms.tables.find(function(e){return t instanceof u?e===t:e.element===t})}};var d=function(t){this.table=t,this.mode=null};d.prototype.initialize=function(t){this.modes[t]?this.mode=t:(console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : "+t),this.mode="fitData"),this.table.element.setAttribute("tabulator-layout",this.mode)},d.prototype.getMode=function(){return this.mode},d.prototype.layout=function(){this.modes[this.mode].call(this,this.table.columnManager.columnsByIndex)},d.prototype.modes={fitData:function(t){t.forEach(function(t){t.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataFill:function(t){t.forEach(function(t){t.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitColumns:function(t){function e(t){return"string"==typeof t?t.indexOf("%")>-1?n/100*parseInt(t):parseInt(t):t}function o(t,i,n,s){function r(t){return n*(t.column.definition.widthGrow||1)}function a(t){return e(t.width)-n*(t.column.definition.widthShrink||0)}var l=[],c=0,u=0,d=0,h=0,p=0,m=[];return t.forEach(function(t,e){var o=s?a(t):r(t);t.column.minWidth>=o?l.push(t):(m.push(t),p+=s?t.column.definition.widthShrink||1:t.column.definition.widthGrow||1)}),l.length?(l.forEach(function(t){c+=s?t.width-t.column.minWidth:t.column.minWidth,t.width=t.column.minWidth}),u=i-c,d=p?Math.floor(u/p):u,h=u-d*p,h+=o(m,u,d,s)):(h=p?i-Math.floor(i/p)*p:i,m.forEach(function(t){t.width=s?a(t):r(t)})),h}var i=this,n=i.table.element.clientWidth,s=0,r=0,a=0,l=0,c=[],u=[],d=0,h=0,p=0;this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.rowManager.element.scrollHeight>this.table.rowManager.element.clientHeight&&(n-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),t.forEach(function(t){var o,i,n;t.visible&&(o=t.definition.width,i=parseInt(t.minWidth),o?(n=e(o),s+=n>i?n:i,t.definition.widthShrink&&(u.push({column:t,width:n>i?n:i}),d+=t.definition.widthShrink)):(c.push({column:t,width:0}),a+=t.definition.widthGrow||1))}),r=n-s,l=Math.floor(r/a);var p=o(c,r,l,!1);c.length&&p>0&&(c[c.length-1].width+=+p),c.forEach(function(t){r-=t.width}),h=Math.abs(p)+r,h>0&&d&&(p=o(u,h,Math.floor(h/d),!0)),u.length&&(u[u.length-1].width-=p),c.forEach(function(t){t.column.setWidth(t.width)}),u.forEach(function(t){t.column.setWidth(t.width)})}},u.prototype.registerModule("layout",d);var h=function(t){this.table=t,this.locale="default",this.lang=!1,this.bindings={}};h.prototype.setHeaderFilterPlaceholder=function(t){this.langs.default.headerFilters.default=t},h.prototype.setHeaderFilterColumnPlaceholder=function(t,e){this.langs.default.headerFilters.columns[t]=e,this.lang&&!this.lang.headerFilters.columns[t]&&(this.lang.headerFilters.columns[t]=e)},h.prototype.installLang=function(t,e){this.langs[t]?this._setLangProp(this.langs[t],e):this.langs[t]=e},h.prototype._setLangProp=function(t,e){for(var o in e)t[o]&&"object"==_typeof(t[o])?this._setLangProp(t[o],e[o]):t[o]=e[o]},h.prototype.setLocale=function(t){function e(t,o){for(var i in t)"object"==_typeof(t[i])?(o[i]||(o[i]={}),e(t[i],o[i])):o[i]=t[i]}var o=this;if(t=t||"default",!0===t&&navigator.language&&(t=navigator.language.toLowerCase()),t&&!o.langs[t]){var i=t.split("-")[0];o.langs[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")}o.locale=t,o.lang=u.prototype.helpers.deepClone(o.langs.default||{}),"default"!=t&&e(o.langs[t],o.lang),o.table.options.localized.call(o.table,o.locale,o.lang),o._executeBindings()},h.prototype.getLocale=function(t){return self.locale},h.prototype.getLang=function(t){return t?this.langs[t]:this.lang},h.prototype.getText=function(t,e){var t=e?t+"|"+e:t,o=t.split("|");return this._getLangElement(o,this.locale)||""},h.prototype._getLangElement=function(t,e){var o=this,i=o.lang;return t.forEach(function(t){var e;i&&(e=i[t],i=void 0!==e&&e)}),i},h.prototype.bind=function(t,e){this.bindings[t]||(this.bindings[t]=[]),this.bindings[t].push(e),e(this.getText(t),this.lang)},h.prototype._executeBindings=function(){var t=this;for(var e in t.bindings)!function(e){t.bindings[e].forEach(function(o){o(t.getText(e),t.lang)})}(e)},h.prototype.langs={default:{groups:{item:"item",items:"items"},columns:{},ajax:{loading:"Loading",error:"Error"},pagination:{page_size:"Page Size",first:"First",first_title:"First Page",last:"Last",last_title:"Last Page",prev:"Prev",prev_title:"Prev Page",next:"Next",next_title:"Next Page"},headerFilters:{default:"filter column...",columns:{}}}},u.prototype.registerModule("localize",h);var p=function(t){this.table=t};p.prototype.getConnections=function(t){var e,o=this,i=[];return e=u.prototype.comms.lookupTable(t),e.forEach(function(t){o.table!==t&&i.push(t)}),i},p.prototype.send=function(t,e,o,i){var n=this,s=this.getConnections(t);s.forEach(function(t){t.tableComms(n.table.element,e,o,i)}),!s.length&&t&&console.warn("Table Connection Error - No tables matching selector found",t)},p.prototype.receive=function(t,e,o,i){if(this.table.modExists(e))return this.table.modules[e].commsReceived(t,o,i);console.warn("Inter-table Comms Error - no such module:",e)},u.prototype.registerModule("comms",p);var m=function(t){this.table=t,this.allowedTypes=["","data","download","clipboard"]};m.prototype.initializeColumn=function(t){var e=this,o=!1,i={};this.allowedTypes.forEach(function(n){var s,r="accessor"+(n.charAt(0).toUpperCase()+n.slice(1));t.definition[r]&&(s=e.lookupAccessor(t.definition[r]))&&(o=!0,i[r]={accessor:s,params:t.definition[r+"Params"]||{}})}),o&&(t.modules.accessor=i)},m.prototype.lookupAccessor=function(t){var e=!1;switch(void 0===t?"undefined":_typeof(t)){case"string":this.accessors[t]?e=this.accessors[t]:console.warn("Accessor Error - No such accessor found, ignoring: ",t);break;case"function":e=t}return e},m.prototype.transformRow=function(t,e){var o=this,i="accessor"+(e.charAt(0).toUpperCase()+e.slice(1)),n=u.prototype.helpers.deepClone(t||{});return o.table.columnManager.traverse(function(t){var o,s,r,a;t.modules.accessor&&(s=t.modules.accessor[i]||t.modules.accessor.accessor||!1)&&"undefined"!=(o=t.getFieldValue(n))&&(a=t.getComponent(),r="function"==typeof s.params?s.params(o,n,e,a):s.params,t.setFieldValue(n,s.accessor(o,n,e,r,a)))}),n},m.prototype.accessors={},u.prototype.registerModule("accessor",m);var f=function(t){this.table=t,this.config=!1,this.url="",this.urlGenerator=!1,this.params=!1,this.loaderElement=this.createLoaderElement(),this.msgElement=this.createMsgElement(),this.loadingElement=!1,this.errorElement=!1,this.loaderPromise=!1,this.progressiveLoad=!1,this.loading=!1,this.requestOrder=0};f.prototype.initialize=function(){var t;this.loaderElement.appendChild(this.msgElement),this.table.options.ajaxLoaderLoading&&("string"==typeof this.table.options.ajaxLoaderLoading?(t=document.createElement("template"),t.innerHTML=this.table.options.ajaxLoaderLoading.trim(),this.loadingElement=t.content.firstChild):this.loadingElement=this.table.options.ajaxLoaderLoading),this.loaderPromise=this.table.options.ajaxRequestFunc||this.defaultLoaderPromise,this.urlGenerator=this.table.options.ajaxURLGenerator||this.defaultURLGenerator,this.table.options.ajaxLoaderError&&("string"==typeof this.table.options.ajaxLoaderError?(t=document.createElement("template"),t.innerHTML=this.table.options.ajaxLoaderError.trim(),this.errorElement=t.content.firstChild):this.errorElement=this.table.options.ajaxLoaderError),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.table.options.ajaxProgressiveLoad&&(this.table.options.pagination?(this.progressiveLoad=!1,console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time")):this.table.modExists("page")?(this.progressiveLoad=this.table.options.ajaxProgressiveLoad,this.table.modules.page.initializeProgressive(this.progressiveLoad)):console.error("Pagination plugin is required for progressive ajax loading"))},f.prototype.createLoaderElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-loader"),t},f.prototype.createMsgElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-loader-msg"),t.setAttribute("role","alert"),t},f.prototype.setParams=function(t,e){if(e){this.params=this.params||{};for(var o in t)this.params[o]=t[o]}else this.params=t},f.prototype.getParams=function(){return this.params||{}},f.prototype.setConfig=function(t){if(this._loadDefaultConfig(),"string"==typeof t)this.config.method=t;else for(var e in t)this.config[e]=t[e]},f.prototype._loadDefaultConfig=function(t){var e=this;if(!e.config||t){e.config={};for(var o in e.defaultConfig)e.config[o]=e.defaultConfig[o]}},f.prototype.setUrl=function(t){this.url=t},f.prototype.getUrl=function(){return this.url},f.prototype.loadData=function(t){return this.progressiveLoad?this._loadDataProgressive():this._loadDataStandard(t)},f.prototype.nextPage=function(t){var e;this.loading||(e=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.getElement().clientHeight,t<e&&this.table.modules.page.nextPage().then(function(){}).catch(function(){}))},f.prototype.blockActiveRequest=function(){this.requestOrder++},f.prototype._loadDataProgressive=function(){return this.table.rowManager.setData([]),this.table.modules.page.setPage(1)},f.prototype._loadDataStandard=function(t){var e=this;return new Promise(function(o,i){e.sendRequest(t).then(function(n){e.table.rowManager.setData(n,t).then(function(){o()}).catch(function(t){i(t)})}).catch(function(t){i(t)})})},f.prototype.generateParamsList=function(t,e){var o=this,i=[];if(e=e||"",Array.isArray(t))t.forEach(function(t,n){i=i.concat(o.generateParamsList(t,e?e+"["+n+"]":n))});else if("object"===(void 0===t?"undefined":_typeof(t)))for(var n in t)i=i.concat(o.generateParamsList(t[n],e?e+"["+n+"]":n));else i.push({key:e,value:t});return i},f.prototype.serializeParams=function(t){var e=this.generateParamsList(t),o=[];return e.forEach(function(t){o.push(encodeURIComponent(t.key)+"="+encodeURIComponent(t.value))}),o.join("&")},f.prototype.sendRequest=function(t){var e,o=this,i=this,n=i.url;return i.requestOrder++,e=i.requestOrder,i._loadDefaultConfig(),new Promise(function(s,r){!1!==i.table.options.ajaxRequesting.call(o.table,i.url,i.params)?(i.loading=!0,t||i.showLoader(),o.loaderPromise(n,i.config,i.params).then(function(t){e===i.requestOrder?(i.table.options.ajaxResponse&&(t=i.table.options.ajaxResponse.call(i.table,i.url,i.params,t)),s(t)):console.warn("Ajax Response Blocked - An active ajax request was blocked by an attempt to change table data while the request was being made"),i.hideLoader(),i.loading=!1}).catch(function(t){console.error("Ajax Load Error: ",t),i.table.options.ajaxError.call(i.table,t),i.showError(),setTimeout(function(){i.hideLoader()},3e3),i.loading=!1,r()})):r()})},f.prototype.showLoader=function(){if("function"==typeof this.table.options.ajaxLoader?this.table.options.ajaxLoader():this.table.options.ajaxLoader){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.table.modules.localize.getText("ajax|loading"),this.table.element.appendChild(this.loaderElement)}},f.prototype.showError=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.table.modules.localize.getText("ajax|error"),this.table.element.appendChild(this.loaderElement)},f.prototype.hideLoader=function(){this.loaderElement.parentNode&&this.loaderElement.parentNode.removeChild(this.loaderElement)},f.prototype.defaultConfig={method:"GET"},f.prototype.defaultURLGenerator=function(t,e,o){return t&&o&&Object.keys(o).length&&(e.method&&"get"!=e.method.toLowerCase()||(e.method="get",t+="?"+this.serializeParams(o))),t},f.prototype.defaultLoaderPromise=function(t,e,o){var i,n=this;return new Promise(function(s,r){if(t=n.urlGenerator(t,e,o),"GET"!=e.method.toUpperCase())if(i="object"===_typeof(n.table.options.ajaxContentType)?n.table.options.ajaxContentType:n.contentTypeFormatters[n.table.options.ajaxContentType]){for(var a in i.headers)e.headers||(e.headers={}),void 0===e.headers[a]&&(e.headers[a]=i.headers[a]);e.body=i.body.call(n,t,e,o)}else console.warn("Ajax Error - Invalid ajaxContentType value:",n.table.options.ajaxContentType);t?(void 0===e.headers&&(e.headers={}),void 0===e.headers.Accept&&(e.headers.Accept="application/json"),void 0===e.headers["X-Requested-With"]&&(e.headers["X-Requested-With"]="XMLHttpRequest"),void 0===e.mode&&(e.mode="cors"),"cors"==e.mode?(void 0===e.headers["Access-Control-Allow-Origin"]&&(e.headers["Access-Control-Allow-Origin"]=window.location.origin),void 0===e.credentials&&(e.credentials="same-origin")):void 0===e.credentials&&(e.credentials="include"),fetch(t,e).then(function(t){t.ok?t.json().then(function(t){s(t)}).catch(function(t){r(t),console.warn("Ajax Load Error - Invalid JSON returned",t)}):(console.error("Ajax Load Error - Connection Error: "+t.status,t.statusText),r(t))}).catch(function(t){console.error("Ajax Load Error - Connection Error: ",t),r(t)})):(console.warn("Ajax Load Error - No URL Set"),s([]))})},f.prototype.contentTypeFormatters={json:{headers:{"Content-Type":"application/json"},body:function(t,e,o){return JSON.stringify(o)}},form:{headers:{},body:function(t,e,o){var i=this.generateParamsList(o),n=new FormData;return i.forEach(function(t){n.append(t.key,t.value)}),n}}},u.prototype.registerModule("ajax",f);var g=function(t){this.table=t,this.topCalcs=[],this.botCalcs=[],this.genColumn=!1,this.topElement=this.createElement(),this.botElement=this.createElement(),this.topRow=!1,this.botRow=!1,this.topInitialized=!1,this.botInitialized=!1,this.initialize()};g.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-calcs-holder"),t},g.prototype.initialize=function(){this.genColumn=new i({field:"value"},this)},g.prototype.registerColumnField=function(){},g.prototype.initializeColumn=function(t){var e=t.definition,o={topCalcParams:e.topCalcParams||{},botCalcParams:e.bottomCalcParams||{}};if(e.topCalc){switch(_typeof(e.topCalc)){case"string":this.calculations[e.topCalc]?o.topCalc=this.calculations[e.topCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",e.topCalc);break;case"function":o.topCalc=e.topCalc}o.topCalc&&(t.modules.columnCalcs=o,this.topCalcs.push(t),"group"!=this.table.options.columnCalcs&&this.initializeTopRow())}if(e.bottomCalc){switch(_typeof(e.bottomCalc)){case"string":this.calculations[e.bottomCalc]?o.botCalc=this.calculations[e.bottomCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",e.bottomCalc);break;case"function":o.botCalc=e.bottomCalc}o.botCalc&&(t.modules.columnCalcs=o,this.botCalcs.push(t),"group"!=this.table.options.columnCalcs&&this.initializeBottomRow())}},g.prototype.removeCalcs=function(){var t=!1;this.topInitialized&&(this.topInitialized=!1,this.topElement.parentNode.removeChild(this.topElement),t=!0),this.botInitialized&&(this.botInitialized=!1,this.table.footerManager.remove(this.botElement),t=!0),t&&this.table.rowManager.adjustTableSize()},g.prototype.initializeTopRow=function(){this.topInitialized||(this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling),this.topInitialized=!0)},g.prototype.initializeBottomRow=function(){this.botInitialized||(this.table.footerManager.prepend(this.botElement),this.botInitialized=!0)},g.prototype.scrollHorizontal=function(t){this.table.columnManager.getElement().scrollWidth,this.table.element.clientWidth;this.botInitialized&&(this.botRow.getElement().style.marginLeft=-t+"px")},g.prototype.recalc=function(t){var e;if(this.topInitialized||this.botInitialized){if(this.rowsToData(t),this.topInitialized){for(this.topRow&&this.topRow.deleteCells(),e=this.generateRow("top",this.rowsToData(t)),this.topRow=e;this.topElement.firstChild;)this.topElement.removeChild(this.topElement.firstChild);this.topElement.appendChild(e.getElement()),e.initialize(!0)}if(this.botInitialized){for(this.botRow&&this.botRow.deleteCells(),e=this.generateRow("bottom",this.rowsToData(t)),this.botRow=e;this.botElement.firstChild;)this.botElement.removeChild(this.botElement.firstChild);this.botElement.appendChild(e.getElement()),e.initialize(!0)}this.table.rowManager.adjustTableSize(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()}},g.prototype.recalcRowGroup=function(t){this.recalcGroup(this.table.modules.groupRows.getRowGroup(t))},g.prototype.recalcGroup=function(t){var e,o;t&&t.calcs&&(t.calcs.bottom&&(e=this.rowsToData(t.rows),o=this.generateRowData("bottom",e),t.calcs.bottom.updateData(o),t.calcs.bottom.reinitialize()),t.calcs.top&&(e=this.rowsToData(t.rows),o=this.generateRowData("top",e),t.calcs.top.updateData(o),t.calcs.top.reinitialize()))},g.prototype.generateTopRow=function(t){return this.generateRow("top",this.rowsToData(t))},g.prototype.generateBottomRow=function(t){return this.generateRow("bottom",this.rowsToData(t))},g.prototype.rowsToData=function(t){var e=[];return t.forEach(function(t){e.push(t.getData())}),e},g.prototype.generateRow=function(t,e){var o,i=this,n=this.generateRowData(t,e);return i.table.modExists("mutator")&&i.table.modules.mutator.disable(),o=new r(n,this),i.table.modExists("mutator")&&i.table.modules.mutator.enable(),o.getElement().classList.add("tabulator-calcs","tabulator-calcs-"+t),o.type="calc",o.generateCells=function(){var e=[];i.table.columnManager.columnsByIndex.forEach(function(n){i.genColumn.setField(n.getField()),i.genColumn.hozAlign=n.hozAlign,n.definition[t+"CalcFormatter"]&&i.table.modExists("format")?i.genColumn.modules.format={formatter:i.table.modules.format.getFormatter(n.definition[t+"CalcFormatter"]),params:n.definition[t+"CalcFormatterParams"]
-}:i.genColumn.modules.format={formatter:i.table.modules.format.getFormatter("plaintext"),params:{}},i.genColumn.definition.cssClass=n.definition.cssClass;var s=new l(i.genColumn,o);s.column=n,s.setWidth(),n.cells.push(s),e.push(s),n.visible||s.hide()}),this.cells=e},o},g.prototype.generateRowData=function(t,e){var o,i,n={},s="top"==t?this.topCalcs:this.botCalcs,r="top"==t?"topCalc":"botCalc";return s.forEach(function(t){var s=[];t.modules.columnCalcs&&t.modules.columnCalcs[r]&&(e.forEach(function(e){s.push(t.getFieldValue(e))}),i=r+"Params",o="function"==typeof t.modules.columnCalcs[i]?t.modules.columnCalcs[i](s,e):t.modules.columnCalcs[i],t.setFieldValue(n,t.modules.columnCalcs[r](s,e,o)))}),n},g.prototype.hasTopCalcs=function(){return!!this.topCalcs.length},g.prototype.hasBottomCalcs=function(){return!!this.botCalcs.length},g.prototype.redraw=function(){this.topRow&&this.topRow.normalizeHeight(!0),this.botRow&&this.botRow.normalizeHeight(!0)},g.prototype.getResults=function(){var t,e=this,o={};return this.table.options.groupBy&&this.table.modExists("groupRows")?(t=this.table.modules.groupRows.getGroups(!0),t.forEach(function(t){o[t.getKey()]=e.getGroupResults(t)})):o={top:this.topRow?this.topRow.getData():{},bottom:this.botRow?this.botRow.getData():{}},o},g.prototype.getGroupResults=function(t){var e=this,o=t._getSelf(),i=t.getSubGroups(),n={};return i.forEach(function(t){n[t.getKey()]=e.getGroupResults(t)}),{top:o.calcs.top?o.calcs.top.getData():{},bottom:o.calcs.bottom?o.calcs.bottom.getData():{},groups:n}},g.prototype.calculations={avg:function(t,e,o){var i=0,n=void 0!==o.precision?o.precision:2;return t.length&&(i=t.reduce(function(t,e){return e=Number(e),t+e}),i/=t.length,i=!1!==n?i.toFixed(n):i),parseFloat(i).toString()},max:function(t,e,o){var i=null,n=void 0!==o.precision&&o.precision;return t.forEach(function(t){((t=Number(t))>i||null===i)&&(i=t)}),null!==i?!1!==n?i.toFixed(n):i:""},min:function(t,e,o){var i=null,n=void 0!==o.precision&&o.precision;return t.forEach(function(t){((t=Number(t))<i||null===i)&&(i=t)}),null!==i?!1!==n?i.toFixed(n):i:""},sum:function(t,e,o){var i=0,n=void 0!==o.precision&&o.precision;return t.length&&t.forEach(function(t){t=Number(t),i+=isNaN(t)?0:Number(t)}),!1!==n?i.toFixed(n):i},concat:function(t,e,o){var i=0;return t.length&&(i=t.reduce(function(t,e){return String(t)+String(e)})),i},count:function(t,e,o){var i=0;return t.length&&t.forEach(function(t){t&&i++}),i}},u.prototype.registerModule("columnCalcs",g);var b=function(t){this.table=t,this.mode=!0,this.copySelector=!1,this.copySelectorParams={},this.copyFormatter=!1,this.copyFormatterParams={},this.pasteParser=function(){},this.pasteAction=function(){},this.htmlElement=!1,this.config={},this.blocked=!0};b.prototype.initialize=function(){var t=this;this.mode=this.table.options.clipboard,!0!==this.mode&&"copy"!==this.mode||this.table.element.addEventListener("copy",function(e){var o;t.processConfig(),t.blocked||(e.preventDefault(),o=t.generateContent(),window.clipboardData&&window.clipboardData.setData?window.clipboardData.setData("Text",o):e.clipboardData&&e.clipboardData.setData?(e.clipboardData.setData("text/plain",o),t.htmlElement&&e.clipboardData.setData("text/html",t.htmlElement.outerHTML)):e.originalEvent&&e.originalEvent.clipboardData.setData&&(e.originalEvent.clipboardData.setData("text/plain",o),t.htmlElement&&e.originalEvent.clipboardData.setData("text/html",t.htmlElement.outerHTML)),t.table.options.clipboardCopied.call(this.table,o),t.reset())}),!0!==this.mode&&"paste"!==this.mode||this.table.element.addEventListener("paste",function(e){t.paste(e)}),this.setPasteParser(this.table.options.clipboardPasteParser),this.setPasteAction(this.table.options.clipboardPasteAction)},b.prototype.processConfig=function(){var t={columnHeaders:"groups",rowGroups:!0,columnCalcs:!0};if(void 0!==this.table.options.clipboardCopyHeader&&(t.columnHeaders=this.table.options.clipboardCopyHeader,console.warn("DEPRECATION WARNING - clipboardCopyHeader option has been deprecated, please use the columnHeaders property on the clipboardCopyConfig option")),this.table.options.clipboardCopyConfig)for(var e in this.table.options.clipboardCopyConfig)t[e]=this.table.options.clipboardCopyConfig[e];t.rowGroups&&this.table.options.groupBy&&this.table.modExists("groupRows")&&(this.config.rowGroups=!0),t.columnHeaders?"groups"!==t.columnHeaders&&!0!==t||this.table.columnManager.columns.length==this.table.columnManager.columnsByIndex.length?this.config.columnHeaders="columns":this.config.columnHeaders="groups":this.config.columnHeaders=!1,t.columnCalcs&&this.table.modExists("columnCalcs")&&(this.config.columnCalcs=!0)},b.prototype.reset=function(){this.blocked=!1,this.originalSelectionText=""},b.prototype.setPasteAction=function(t){switch(void 0===t?"undefined":_typeof(t)){case"string":this.pasteAction=this.pasteActions[t],this.pasteAction||console.warn("Clipboard Error - No such paste action found:",t);break;case"function":this.pasteAction=t}},b.prototype.setPasteParser=function(t){switch(void 0===t?"undefined":_typeof(t)){case"string":this.pasteParser=this.pasteParsers[t],this.pasteParser||console.warn("Clipboard Error - No such paste parser found:",t);break;case"function":this.pasteParser=t}},b.prototype.paste=function(t){var e,o,i;this.checkPaseOrigin(t)&&(e=this.getPasteData(t),o=this.pasteParser.call(this,e),o?(t.preventDefault(),this.table.modExists("mutator")&&(o=this.mutateData(o)),i=this.pasteAction.call(this,o),this.table.options.clipboardPasted.call(this.table,e,o,i)):this.table.options.clipboardPasteError.call(this.table,e))},b.prototype.mutateData=function(t){var e=this,o=[];return Array.isArray(t)?t.forEach(function(t){o.push(e.table.modules.mutator.transformRow(t,"clipboard"))}):o=t,o},b.prototype.checkPaseOrigin=function(t){var e=!0;return("DIV"!=t.target.tagName||this.table.modules.edit.currentCell)&&(e=!1),e},b.prototype.getPasteData=function(t){var e;return window.clipboardData&&window.clipboardData.getData?e=window.clipboardData.getData("Text"):t.clipboardData&&t.clipboardData.getData?e=t.clipboardData.getData("text/plain"):t.originalEvent&&t.originalEvent.clipboardData.getData&&(e=t.originalEvent.clipboardData.getData("text/plain")),e},b.prototype.copy=function(t,e,o,i,n){var s,r,a;this.blocked=!1,!0!==this.mode&&"copy"!==this.mode||(void 0!==window.getSelection&&void 0!==document.createRange?(s=document.createRange(),s.selectNodeContents(this.table.element),r=window.getSelection(),r.toString()&&n&&(t="userSelection",o="raw",e=r.toString()),r.removeAllRanges(),r.addRange(s)):void 0!==document.selection&&void 0!==document.body.createTextRange&&(a=document.body.createTextRange(),a.moveToElementText(this.table.element),a.select()),this.setSelector(t),this.copySelectorParams=void 0!==e&&null!=e?e:this.config.columnHeaders,this.setFormatter(o),this.copyFormatterParams=void 0!==i&&null!=i?i:{},document.execCommand("copy"),r&&r.removeAllRanges())},b.prototype.setSelector=function(t){switch(t=t||this.table.options.clipboardCopySelector,void 0===t?"undefined":_typeof(t)){case"string":this.copySelectors[t]?this.copySelector=this.copySelectors[t]:console.warn("Clipboard Error - No such selector found:",t);break;case"function":this.copySelector=t}},b.prototype.setFormatter=function(t){switch(t=t||this.table.options.clipboardCopyFormatter,void 0===t?"undefined":_typeof(t)){case"string":this.copyFormatters[t]?this.copyFormatter=this.copyFormatters[t]:console.warn("Clipboard Error - No such formatter found:",t);break;case"function":this.copyFormatter=t}},b.prototype.generateContent=function(){var t;return this.htmlElement=!1,t=this.copySelector.call(this,this.config,this.copySelectorParams),this.copyFormatter.call(this,t,this.config,this.copyFormatterParams)},b.prototype.generateSimpleHeaders=function(t){var e=[];return t.forEach(function(t){e.push(t.definition.title)}),e},b.prototype.generateColumnGroupHeaders=function(t){var e=this,o=[];return this.table.columnManager.columns.forEach(function(t){var i=e.processColumnGroup(t);i&&o.push(i)}),o},b.prototype.processColumnGroup=function(t){var e=this,o=t.columns,i={type:"group",title:t.definition.title,column:t};if(o.length){if(i.subGroups=[],i.width=0,o.forEach(function(t){var o=e.processColumnGroup(t);o&&(i.width+=o.width,i.subGroups.push(o))}),!i.width)return!1}else{if(!t.field||!(t.definition.clipboard||t.visible&&!1!==t.definition.clipboard))return!1;i.width=1}return i},b.prototype.groupHeadersToRows=function(t){function e(t,n){void 0===i[n]&&(i[n]=[]),i[n].push(t.title),t.subGroups?t.subGroups.forEach(function(t){e(t,n+1)}):o()}function o(){var t=0;i.forEach(function(e){var o=e.length;o>t&&(t=o)}),i.forEach(function(e){var o=e.length;if(o<t)for(var i=o;i<t;i++)e.push("")})}var i=[];return t.forEach(function(t){e(t,0)}),i},b.prototype.rowsToData=function(t,e,o,i){var n=[];return t.forEach(function(t){var o=[],i=t instanceof s?t.getData("clipboard"):t;e.forEach(function(t){var e=t.getFieldValue(i);switch(void 0===e?"undefined":_typeof(e)){case"object":e=JSON.stringify(e);break;case"undefined":case"null":e="";break;default:e=e}o.push(e)}),n.push(o)}),n},b.prototype.buildComplexRows=function(t){var e=this,o=[];return this.table.modules.groupRows.getGroups().forEach(function(t){o.push(e.processGroupData(t))}),o},b.prototype.processGroupData=function(t){var e=this,o=t.getSubGroups(),i={type:"group",key:t.key};return o.length?(i.subGroups=[],o.forEach(function(t){i.subGroups.push(e.processGroupData(t))})):i.rows=t.getRows(!0),i},b.prototype.getCalcRow=function(t,e,o,i){var n=t[o];return n&&(i&&(n=n[i]),Object.keys(n).length)?this.rowsToData([n],e):[]},b.prototype.buildOutput=function(t,e,o){var i,n=this,s=[],r=[];return"groups"==e.columnHeaders?(r=this.generateColumnGroupHeaders(this.table.columnManager.columns),s=s.concat(this.groupHeadersToRows(r))):(this.table.columnManager.columnsByIndex.forEach(function(t){(t.definition.clipboard||t.visible&&!1!==t.definition.clipboard)&&r.push(t)}),s.push(this.generateSimpleHeaders(r))),this.config.columnCalcs&&(i=this.table.getCalcResults()),this.table.options.clipboardCopyStyled&&this.generateHTML(t,r,i,e,o),e.rowGroups?t.forEach(function(t){s=s.concat(n.parseRowGroupData(t,r,e,o,i||{}))}):(e.columnCalcs&&(s=s.concat(this.getCalcRow(i,r,"top"))),s=s.concat(this.rowsToData(t,r,e,o)),e.columnCalcs&&(s=s.concat(this.getCalcRow(i,r,"bottom")))),s},b.prototype.parseRowGroupData=function(t,e,o,i,n){var s=this,r=[];return r.push([t.key]),t.subGroups?t.subGroups.forEach(function(e){r=r.concat(s.parseRowGroupData(e,o,i,n[t.key]?n[t.key].groups||{}:{}))}):(o.columnCalcs&&(r=r.concat(this.getCalcRow(n,e,t.key,"top"))),r=r.concat(this.rowsToData(t.rows,e,o,i)),o.columnCalcs&&(r=r.concat(this.getCalcRow(n,e,t.key,"bottom")))),r},b.prototype.generateHTML=function(t,e,o,i,n){function r(t,e){void 0===y[e]&&(y[e]=[]),y[e].push({title:t.title,width:t.width,height:1,children:!!t.subGroups,element:t.column.getElement()}),t.subGroups&&t.subGroups.forEach(function(t){r(t,e+1)})}function a(t,e,o){var i=t[e];i&&(o&&(i=i[o]),Object.keys(i).length&&l([i]))}function l(t){t.forEach(function(t,o){var i,n=document.createElement("tr"),r=m,a=!1;t instanceof s?i=t.getData("clipboard"):(i=t,a=!0),e.forEach(function(t,o){var s=document.createElement("td"),r=t.getFieldValue(i);switch(void 0===r?"undefined":_typeof(r)){case"object":r=JSON.stringify(r);break;case"undefined":case"null":r="";break;default:r=r}s.innerHTML=r,t.definition.align&&(s.style.textAlign=t.definition.align),e.length,f&&v.mapElementStyles(f,s,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size"]),n.appendChild(s)}),a?r=p:(o%2||!d||(r=d),o%2&&h&&(r=h)),r&&v.mapElementStyles(r,n,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),u.appendChild(n)})}function c(t,o){var n=document.createElement("tr"),s=document.createElement("td");s.colSpan=e.length,s.innerHTML=t.key,n.appendChild(s),u.appendChild(n),v.mapElementStyles(g,n,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),t.subGroups?t.subGroups.forEach(function(e){c(e,o[t.key]?o[t.key].groups||{}:{})}):(i.columnCalcs&&a(o,t.key,"top"),l(t.rows),i.columnCalcs&&a(o,t.key,"bottom"))}var u,d,h,p,m,f,g,b,v=this,y=[];this.htmlElement=document.createElement("table"),v.mapElementStyles(this.table.element,this.htmlElement,["border-top","border-left","border-right","border-bottom"]),i.columnHeaders&&("groups"==i.columnHeaders?(e.forEach(function(t){r(t,0)}),function(){y.forEach(function(t,e){t.forEach(function(t){t.children||(t.height=y.length-e)})})}(),function(t){var e=document.createElement("thead");t.forEach(function(t){var o=document.createElement("tr");t.forEach(function(t){var e=document.createElement("th");t.width>1&&(e.colSpan=t.width),t.height>1&&(e.rowSpan=t.height),e.innerHTML=t.title,v.mapElementStyles(t.element,e,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),o.appendChild(e)}),v.mapElementStyles(v.table.columnManager.getHeadersElement(),o,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),e.appendChild(o)}),v.htmlElement.appendChild(e)}(y)):function(){var t=document.createElement("tr");e.forEach(function(e){var o=document.createElement("th");o.innerHTML=e.definition.title,v.mapElementStyles(e.getElement(),o,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),t.appendChild(o)}),v.mapElementStyles(v.table.columnManager.getHeadersElement(),t,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),v.htmlElement.appendChild(document.createElement("thead").appendChild(t))}()),u=document.createElement("tbody"),window.getComputedStyle&&(d=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),h=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),p=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),m=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),g=this.table.element.getElementsByClassName("tabulator-group")[0],m&&(b=m.getElementsByClassName("tabulator-cell"),f=b[0],b[b.length-1])),i.rowGroups?t.forEach(function(t){c(t,o||{})}):(i.columnCalcs&&a(o,"top"),l(t),i.columnCalcs&&a(o,"bottom")),this.htmlElement.appendChild(u)},b.prototype.mapElementStyles=function(t,e,o){var i={"background-color":"backgroundColor",color:"fontColor","font-weight":"fontWeight","font-family":"fontFamily","font-size":"fontSize","border-top":"borderTop","border-left":"borderLeft","border-right":"borderRight","border-bottom":"borderBottom"};if(window.getComputedStyle){var n=window.getComputedStyle(t);o.forEach(function(t){e.style[i[t]]=n.getPropertyValue(t)})}},b.prototype.copySelectors={userSelection:function(t,e){return e},selected:function(t,e){var o=[];return this.table.modExists("selectRow",!0)&&(o=this.table.modules.selectRow.getSelectedRows()),t.rowGroups&&console.warn("Clipboard Warning - select coptSelector does not support row groups"),this.buildOutput(o,t,e)},table:function(t,e){return t.rowGroups&&console.warn("Clipboard Warning - table coptSelector does not support row groups"),this.buildOutput(this.table.rowManager.getComponents(),t,e)},active:function(t,e){var o;return o=t.rowGroups?this.buildComplexRows(t):this.table.rowManager.getComponents(!0),this.buildOutput(o,t,e)}},b.prototype.copyFormatters={raw:function(t,e){return t},table:function(t,e){var o=[];return t.forEach(function(t){t.forEach(function(t){void 0===t&&(t=""),t=void 0===t||null===t?"":t.toString(),t.match(/\r|\n/)&&(t=t.split('"').join('""'),t='"'+t+'"')}),o.push(t.join("\t"))}),o.join("\n")}},b.prototype.pasteParsers={table:function(t){var e=[],o=!0,i=this.table.columnManager.columns,n=[],s=[];return t=t.split("\n"),t.forEach(function(t){e.push(t.split("\t"))}),!(!e.length||1===e.length&&e[0].length<2)&&(!0,e[0].forEach(function(t){var e=i.find(function(e){return t&&e.definition.title&&t.trim()&&e.definition.title.trim()===t.trim()});e?n.push(e):o=!1}),o||(o=!0,n=[],e[0].forEach(function(t){var e=i.find(function(e){return t&&e.field&&t.trim()&&e.field.trim()===t.trim()});e?n.push(e):o=!1}),o||(n=this.table.columnManager.columnsByIndex)),o&&e.shift(),e.forEach(function(t){var e={};t.forEach(function(t,o){n[o]&&(e[n[o].field]=t)}),s.push(e)}),s)}},b.prototype.pasteActions={replace:function(t){return this.table.setData(t)},update:function(t){return this.table.updateOrAddData(t)},insert:function(t){return this.table.addData(t)}},u.prototype.registerModule("clipboard",b);var v=function(t){this.table=t,this.indent=10,this.field="",this.collapseEl=null,this.expandEl=null,this.branchEl=null,this.elementField=!1,this.startOpen=function(){},this.displayIndex=0};v.prototype.initialize=function(){var t=null,e=this.table.columnManager.getFirstVisibileColumn(),o=this.table.options;switch(this.field=o.dataTreeChildField,this.indent=o.dataTreeChildIndent,this.elementField=o.dataTreeElementColumn||!!e&&e.field,o.dataTreeBranchElement&&(!0===o.dataTreeBranchElement?(this.branchEl=document.createElement("div"),this.branchEl.classList.add("tabulator-data-tree-branch")):"string"==typeof o.dataTreeBranchElement?(t=document.createElement("div"),t.innerHTML=o.dataTreeBranchElement,this.branchEl=t.firstChild):this.branchEl=o.dataTreeBranchElement),o.dataTreeCollapseElement?"string"==typeof o.dataTreeCollapseElement?(t=document.createElement("div"),t.innerHTML=o.dataTreeCollapseElement,this.collapseEl=t.firstChild):this.collapseEl=o.dataTreeCollapseElement:(this.collapseEl=document.createElement("div"),this.collapseEl.classList.add("tabulator-data-tree-control"),this.collapseEl.tabIndex=0,this.collapseEl.innerHTML="<div class='tabulator-data-tree-control-collapse'></div>"),o.dataTreeExpandElement?"string"==typeof o.dataTreeExpandElement?(t=document.createElement("div"),t.innerHTML=o.dataTreeExpandElement,this.expandEl=t.firstChild):this.expandEl=o.dataTreeExpandElement:(this.expandEl=document.createElement("div"),this.expandEl.classList.add("tabulator-data-tree-control"),this.expandEl.tabIndex=0,this.expandEl.innerHTML="<div class='tabulator-data-tree-control-expand'></div>"),_typeof(o.dataTreeStartExpanded)){case"boolean":this.startOpen=function(t,e){return o.dataTreeStartExpanded};break;case"function":this.startOpen=o.dataTreeStartExpanded;break;default:this.startOpen=function(t,e){return o.dataTreeStartExpanded[e]}}},v.prototype.initializeRow=function(t){var e=t.getData()[this.field],o=Array.isArray(e),i=o||!o&&"object"===(void 0===e?"undefined":_typeof(e))&&null!==e;t.modules.dataTree={index:0,open:!!i&&this.startOpen(t.getComponent(),0),controlEl:!1,branchEl:!1,parent:!1,children:i}},v.prototype.layoutRow=function(t){var e=this.elementField?t.getCell(this.elementField):t.getCells()[0],o=e.getElement(),i=t.modules.dataTree;i.branchEl&&i.branchEl.parentNode.removeChild(i.branchEl),this.generateControlElement(t,o),i.index&&(this.branchEl?(i.branchEl=this.branchEl.cloneNode(!0),o.insertBefore(i.branchEl,o.firstChild),i.branchEl.style.marginLeft=(i.branchEl.offsetWidth+i.branchEl.style.marginRight)*(i.index-1)+i.index*this.indent+"px"):o.style.paddingLeft=parseInt(window.getComputedStyle(o,null).getPropertyValue("padding-left"))+i.index*this.indent+"px")},v.prototype.generateControlElement=function(t,e){var o=this,i=t.modules.dataTree,e=e||t.getCells()[0].getElement(),n=i.controlEl;!1!==i.children&&(i.open?(i.controlEl=this.collapseEl.cloneNode(!0),i.controlEl.addEventListener("click",function(e){e.stopPropagation(),o.collapseRow(t)})):(i.controlEl=this.expandEl.cloneNode(!0),i.controlEl.addEventListener("click",function(e){e.stopPropagation(),o.expandRow(t)})),i.controlEl.addEventListener("mousedown",function(t){t.stopPropagation()}),n&&n.parentNode===e?n.parentNode.replaceChild(i.controlEl,n):e.insertBefore(i.controlEl,e.firstChild))},v.prototype.setDisplayIndex=function(t){this.displayIndex=t},v.prototype.getDisplayIndex=function(){return this.displayIndex},v.prototype.getRows=function(t){var e=this,o=[];return t.forEach(function(t,i){var n,s;o.push(t),t instanceof r&&(n=t.modules.dataTree.children,n.index||!1===n.children||(s=e.getChildren(t),s.forEach(function(t){o.push(t)})))}),o},v.prototype.getChildren=function(t){var e=this,o=t.modules.dataTree,i=[],n=[];return!1!==o.children&&o.open&&(Array.isArray(o.children)||(o.children=this.generateChildren(t)),i=this.table.modExists("filter")?this.table.modules.filter.filter(o.children):o.children,this.table.modExists("sort")&&this.table.modules.sort.sort(i),i.forEach(function(t){n.push(t),e.getChildren(t).forEach(function(t){n.push(t)})})),n},v.prototype.generateChildren=function(t){var e=this,o=[],i=t.getData()[this.field];return Array.isArray(i)||(i=[i]),i.forEach(function(i){var n=new r(i||{},e.table.rowManager);n.modules.dataTree.index=t.modules.dataTree.index+1,n.modules.dataTree.parent=t,n.modules.dataTree.children&&(n.modules.dataTree.open=e.startOpen(n.getComponent(),n.modules.dataTree.index)),o.push(n)}),o},v.prototype.expandRow=function(t,e){var o=t.modules.dataTree;!1!==o.children&&(o.open=!0,t.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowExpanded(t.getComponent(),t.modules.dataTree.index))},v.prototype.collapseRow=function(t){var e=t.modules.dataTree;!1!==e.children&&(e.open=!1,t.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowCollapsed(t.getComponent(),t.modules.dataTree.index))},v.prototype.toggleRow=function(t){var e=t.modules.dataTree;!1!==e.children&&(e.open?this.collapseRow(t):this.expandRow(t))},v.prototype.getTreeParent=function(t){return!!t.modules.dataTree.parent&&t.modules.dataTree.parent.getComponent()},v.prototype.getTreeChildren=function(t){var e=t.modules.dataTree,o=[];return e.children&&(Array.isArray(e.children)||(e.children=this.generateChildren(t)),e.children.forEach(function(t){t instanceof r&&o.push(t.getComponent())})),o},v.prototype.checkForRestyle=function(t){t.row.cells.indexOf(t)||!1!==t.row.modules.dataTree.children&&t.row.reinitialize()},v.prototype.getChildField=function(){return this.field},v.prototype.redrawNeeded=function(t){return!!this.field&&void 0!==t[this.field]||!!this.elementField&&void 0!==t[this.elementField]},u.prototype.registerModule("dataTree",v);var y=function(t){this.table=t,this.fields={},this.columnsByIndex=[],this.columnsByField={},this.config={}};y.prototype.download=function(t,e,o,i){function n(o,n){i?!0===i?s.triggerDownload(o,n,t,e,!0):i(o):s.triggerDownload(o,n,t,e)}var s=this,r=!1;this.processConfig(),"function"==typeof t?r=t:s.downloaders[t]?r=s.downloaders[t]:console.warn("Download Error - No such download type found: ",t),this.processColumns(),r&&r.call(this,s.processDefinitions(),s.processData(),o||{},n,this.config)},y.prototype.processConfig=function(){var t={columnGroups:!0,rowGroups:!0,columnCalcs:!0};if(this.table.options.downloadConfig)for(var e in this.table.options.downloadConfig)t[e]=this.table.options.downloadConfig[e];t.rowGroups&&this.table.options.groupBy&&this.table.modExists("groupRows")&&(this.config.rowGroups=!0),t.columnGroups&&this.table.columnManager.columns.length!=this.table.columnManager.columnsByIndex.length&&(this.config.columnGroups=!0),t.columnCalcs&&this.table.modExists("columnCalcs")&&(this.config.columnCalcs=!0)},y.prototype.processColumns=function(){var t=this;t.columnsByIndex=[],t.columnsByField={},t.table.columnManager.columnsByIndex.forEach(function(e){e.field&&!1!==e.definition.download&&(e.visible||!e.visible&&e.definition.download)&&(t.columnsByIndex.push(e),t.columnsByField[e.field]=e)})},y.prototype.processDefinitions=function(){var t=this,e=[];return this.config.columnGroups?t.table.columnManager.columns.forEach(function(o){var i=t.processColumnGroup(o);i&&e.push(i)}):t.columnsByIndex.forEach(function(o){!1!==o.download&&e.push(t.processDefinition(o))}),e},y.prototype.processColumnGroup=function(t){var e=this,o=t.columns,i=0,n=this.processDefinition(t),s={type:"group",title:n.title,depth:1};if(o.length){if(s.subGroups=[],s.width=0,o.forEach(function(t){var o=e.processColumnGroup(t);o.depth>i&&(i=o.depth),o&&(s.width+=o.width,s.subGroups.push(o))}),s.depth+=i,!s.width)return!1}else{if(!t.field||!1===t.definition.download||!(t.visible||!t.visible&&t.definition.download))return!1;s.width=1,s.definition=n}return s},y.prototype.processDefinition=function(t){var e={};for(var o in t.definition)e[o]=t.definition[o];return void 0!==t.definition.downloadTitle&&(e.title=t.definition.downloadTitle),e},y.prototype.processData=function(){var t=this,e=this,o=[],i=[],n={};return this.config.rowGroups?(i=this.table.modules.groupRows.getGroups(),i.forEach(function(e){o.push(t.processGroupData(e))})):o=e.table.rowManager.getData(!0,"download"),this.config.columnCalcs&&(n=this.table.getCalcResults(),o={calcs:n,data:o}),"function"==typeof e.table.options.downloadDataFormatter&&(o=e.table.options.downloadDataFormatter(o)),o},y.prototype.processGroupData=function(t){var e=this,o=t.getSubGroups(),i={type:"group",key:t.key};return o.length?(i.subGroups=[],o.forEach(function(t){i.subGroups.push(e.processGroupData(t))})):i.rows=t.getData(!0,"download"),i},y.prototype.triggerDownload=function(t,e,o,i,n){var s=document.createElement("a"),r=new Blob([t],{type:e}),i=i||"Tabulator."+("function"==typeof o?"txt":o);(r=this.table.options.downloadReady.call(this.table,t,r))&&(n?window.open(window.URL.createObjectURL(r)):navigator.msSaveOrOpenBlob?navigator.msSaveOrOpenBlob(r,i):(s.setAttribute("href",window.URL.createObjectURL(r)),s.setAttribute("download",i),s.style.display="none",document.body.appendChild(s),s.click(),document.body.removeChild(s)),this.table.options.downloadComplete&&this.table.options.downloadComplete())},y.prototype.getFieldValue=function(t,e){var o=this.columnsByField[t];return!!o&&o.getFieldValue(e)},y.prototype.commsReceived=function(t,e,o){switch(e){case"intercept":this.download(o.type,"",o.options,o.intercept)}},y.prototype.downloaders={csv:function(t,e,o,i,n){function s(t,e){t.subGroups?t.subGroups.forEach(function(t){s(t,e+1)}):(d.push('"'+String(t.title).split('"').join('""')+'"'),h.push(t.definition.field))}function r(t){t.forEach(function(t){var e=[];h.forEach(function(o){var i=u.getFieldValue(o,t);switch(void 0===i?"undefined":_typeof(i)){case"object":i=JSON.stringify(i);break;case"undefined":case"null":i="";break;default:i=i}e.push('"'+String(i).split('"').join('""')+'"')}),l.push(e.join(p))})}function a(t){t.subGroups?t.subGroups.forEach(function(t){a(t)}):r(t.rows)}var l,c,u=this,d=[],h=[],p=o&&o.delimiter?o.delimiter:",";n.columnGroups?(console.warn("Download Warning - CSV downloader cannot process column groups"),t.forEach(function(t){s(t,0)})):function(){t.forEach(function(t){d.push('"'+String(t.title).split('"').join('""')+'"'),h.push(t.field)})}(),l=[d.join(p)],n.columnCalcs&&(console.warn("Download Warning - CSV downloader cannot process column calculations"),e=e.data),n.rowGroups?(console.warn("Download Warning - CSV downloader cannot process row groups"),e.forEach(function(t){a(t)})):r(e),c=l.join("\n"),o.bom&&(c="\ufeff"+c),i(c,"text/csv")},json:function(t,e,o,i,n){var s;n.columnCalcs&&(console.warn("Download Warning - CSV downloader cannot process column calculations"),e=e.data),s=JSON.stringify(e,null,"\t"),i(s,"application/json")},pdf:function(t,e,o,i,n){function s(t,e){var o=t.width,i=1,n={content:t.title||""};if(t.subGroups?(t.subGroups.forEach(function(t){s(t,e+1)}),i=1):(h.push(t.definition.field),i=g-e),n.rowSpan=i,p[e].push(n),o--,i>1)for(var r=e+1;r<g;r++)p[r].push("");for(var r=0;r<o;r++)p[e].push("")}function r(t){switch(void 0===t?"undefined":_typeof(t)){case"object":t=JSON.stringify(t);break;case"undefined":case"null":t="";break;default:t=t}return t}function a(t){t.forEach(function(t){m.push(l(t))})}function l(t,e){var o=[];return h.forEach(function(i){var n=d.getFieldValue(i,t);n=r(n),e?o.push({content:n,styles:e}):o.push(n)}),o}function c(t,e){var o=[];o.push({content:r(t.key),colSpan:h.length,styles:v}),m.push(o),t.subGroups?t.subGroups.forEach(function(o){c(o,e[t.key]?e[t.key].groups||{}:{})}):(n.columnCalcs&&u(e,t.key,"top"),a(t.rows),n.columnCalcs&&u(e,t.key,"bottom"))}function u(t,e,o){var i=t[e];i&&(o&&(i=i[o]),Object.keys(i).length&&m.push(l(i,y)))}var d=this,h=[],p=[],m=[],f={},g=1,b={},v=o.rowGroupStyles||{fontStyle:"bold",fontSize:12,cellPadding:6,fillColor:220},y=o.rowCalcStyles||{fontStyle:"bold",fontSize:10,cellPadding:4,fillColor:232},w=o.jsPDF||{},E=o&&o.title?o.title:"";if(n.columnCalcs&&(f=e.calcs,e=e.data),w.orientation||(w.orientation=o.orientation||"landscape"),w.unit||(w.unit="pt"),n.columnGroups){t.forEach(function(t){t.depth>g&&(g=t.depth)});for(var C=0;C<g;C++)p.push([]);t.forEach(function(t){s(t,0)})}else!function(){t.forEach(function(t){t.field&&(p.push(t.title||""),h.push(t.field))}),p=[p]}();n.rowGroups?e.forEach(function(t){c(t,f)}):(n.columnCalcs&&u(f,"top"),a(e),n.columnCalcs&&u(f,"bottom"));var x=new jsPDF(w);o&&o.autoTable&&(b="function"==typeof o.autoTable?o.autoTable(x)||{}:o.autoTable),E&&(b.addPageContent=function(t){x.text(E,40,30)}),b.head=p,b.body=m,x.autoTable(b),o&&o.documentProcessing&&o.documentProcessing(x),i(x.output("arraybuffer"),"application/pdf")},xlsx:function(t,e,o,i,n){function s(){function o(t,e){void 0===f[e]&&(f[e]=[]),void 0===h[e]&&(h[e]=[]),t.width>1&&h[e].push({type:"hoz",start:f[e].length,end:f[e].length+t.width-1}),f[e].push(t.title),t.subGroups?t.subGroups.forEach(function(t){o(t,e+1)}):(g.push(t.definition.field),i(g.length),h[e].push({type:"vert",start:g.length-1}))}function i(){var t=0;f.forEach(function(e){var o=e.length;o>t&&(t=o)}),f.forEach(function(e){var o=e.length;if(o<t)for(var i=o;i<t;i++)e.push("")})}function s(){var t=[];return d.forEach(function(e){t.push({s:{r:e,c:0},e:{r:e,c:g.length-1}})}),h.forEach(function(e,o){e.forEach(function(e){"hoz"===e.type?t.push({s:{r:o,c:e.start},e:{r:o,c:e.end}}):o!=f.length-1&&t.push({s:{r:o,c:e.start},e:{r:f.length-1,c:e.start}})})}),t}function r(t){t.forEach(function(t){b.push(l(t))})}function l(t){var e=[];return g.forEach(function(o){var i=a.getFieldValue(o,t);e.push(i instanceof Date||"object"!==(void 0===i?"undefined":_typeof(i))?i:JSON.stringify(i))}),e}function c(t,e,o){var i=t[e];i&&(o&&(i=i[o]),Object.keys(i).length&&(p.push(b.length),b.push(l(i))))}function m(t,e){var o=[];o.push(t.key),d.push(b.length),b.push(o),t.subGroups?t.subGroups.forEach(function(o){m(o,e[t.key]?e[t.key].groups||{}:{})}):(n.columnCalcs&&c(e,t.key,"top"),r(t.rows),n.columnCalcs&&c(e,t.key,"bottom"))}var f=[],g=[],b=[];return n.columnGroups?(t.forEach(function(t){o(t,0)}),f.forEach(function(t){b.push(t)})):function(){t.forEach(function(t){f.push(t.title),g.push(t.field)}),b.push(f)}(),n.rowGroups?e.forEach(function(t){m(t,u)}):(n.columnCalcs&&c(u,"top"),r(e),n.columnCalcs&&c(u,"bottom")),function(){var t={},e={s:{c:0,r:0},e:{c:g.length,r:b.length}};XLSX.utils.sheet_add_aoa(t,b),t["!ref"]=XLSX.utils.encode_range(e);var o=s();return o.length&&(t["!merges"]=o),t}()}var r,a=this,l=o.sheetName||"Sheet1",c={SheetNames:[],Sheets:{}},u={},d=[],h=[],p=[];if(n.columnCalcs&&(u=e.calcs,e=e.data),o.sheetOnly)return void i(s());if(o.sheets)for(var m in o.sheets)!0===o.sheets[m]?(c.SheetNames.push(m),c.Sheets[m]=s()):(c.SheetNames.push(m),this.table.modules.comms.send(o.sheets[m],"download","intercept",{type:"xlsx",options:{sheetOnly:!0},intercept:function(t){c.Sheets[m]=t}}));else c.SheetNames.push(l),c.Sheets[l]=s();r=XLSX.write(c,{bookType:"xlsx",bookSST:!0,type:"binary"}),i(function(t){
-for(var e=new ArrayBuffer(t.length),o=new Uint8Array(e),i=0;i!=t.length;++i)o[i]=255&t.charCodeAt(i);return e}(r),"application/octet-stream")}},u.prototype.registerModule("download",y);var w=function(t){this.table=t,this.currentCell=!1,this.mouseClick=!1,this.recursionBlock=!1,this.invalidEdit=!1};w.prototype.initializeColumn=function(t){var e=this,o={editor:!1,blocked:!1,check:t.definition.editable,params:t.definition.editorParams||{}};switch(_typeof(t.definition.editor)){case"string":"tick"===t.definition.editor&&(t.definition.editor="tickCross",console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor")),e.editors[t.definition.editor]?o.editor=e.editors[t.definition.editor]:console.warn("Editor Error - No such editor found: ",t.definition.editor);break;case"function":o.editor=t.definition.editor;break;case"boolean":!0===t.definition.editor&&("function"!=typeof t.definition.formatter?("tick"===t.definition.formatter&&(t.definition.formatter="tickCross",console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor")),e.editors[t.definition.formatter]?o.editor=e.editors[t.definition.formatter]:o.editor=e.editors.input):console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ",t.definition.formatter))}o.editor&&(t.modules.edit=o)},w.prototype.getCurrentCell=function(){return!!this.currentCell&&this.currentCell.getComponent()},w.prototype.clearEditor=function(){var t,e=this.currentCell;if(this.invalidEdit=!1,e){for(this.currentCell=!1,t=e.getElement(),t.classList.remove("tabulator-validation-fail"),t.classList.remove("tabulator-editing");t.firstChild;)t.removeChild(t.firstChild);e.row.getElement().classList.remove("tabulator-row-editing")}},w.prototype.cancelEdit=function(){if(this.currentCell){var t=this.currentCell,e=this.currentCell.getComponent();this.clearEditor(),t.setValueActual(t.getValue()),t.column.cellEvents.cellEditCancelled&&t.column.cellEvents.cellEditCancelled.call(this.table,e),this.table.options.cellEditCancelled.call(this.table,e)}},w.prototype.bindEditor=function(t){var e=this,o=t.getElement();o.setAttribute("tabindex",0),o.addEventListener("click",function(t){o.classList.contains("tabulator-editing")||o.focus()}),o.addEventListener("mousedown",function(t){e.mouseClick=!0}),o.addEventListener("focus",function(o){e.recursionBlock||e.edit(t,o,!1)})},w.prototype.focusCellNoEvent=function(t){this.recursionBlock=!0,"ie"!==this.table.browser&&t.getElement().focus(),this.recursionBlock=!1},w.prototype.editCell=function(t,e){this.focusCellNoEvent(t),this.edit(t,!1,e)},w.prototype.edit=function(t,e,o){function i(e){if(c.currentCell===t){var o=!0;return t.column.modules.validate&&c.table.modExists("validate")&&(o=c.table.modules.validate.validate(t.column.modules.validate,t.getComponent(),e)),!0===o?(c.clearEditor(),t.setValue(e,!0),c.table.options.dataTree&&c.table.modExists("dataTree")&&c.table.modules.dataTree.checkForRestyle(t),!0):(c.invalidEdit=!0,h.classList.add("tabulator-validation-fail"),c.focusCellNoEvent(t),d(),c.table.options.validationFailed.call(c.table,t.getComponent(),e,o),!1)}}function n(){c.currentCell===t&&(c.cancelEdit(),c.table.options.dataTree&&c.table.modExists("dataTree")&&c.table.modules.dataTree.checkForRestyle(t))}function s(t){d=t}var r,a,l,c=this,u=!0,d=function(){},h=t.getElement();if(this.currentCell)return void(this.invalidEdit||this.cancelEdit());if(t.column.modules.edit.blocked)return this.mouseClick=!1,h.blur(),!1;switch(e&&e.stopPropagation(),_typeof(t.column.modules.edit.check)){case"function":u=t.column.modules.edit.check(t.getComponent());break;case"boolean":u=t.column.modules.edit.check}if(u||o){if(c.cancelEdit(),c.currentCell=t,a=t.getComponent(),this.mouseClick&&(this.mouseClick=!1,t.column.cellEvents.cellClick&&t.column.cellEvents.cellClick.call(this.table,e,a)),t.column.cellEvents.cellEditing&&t.column.cellEvents.cellEditing.call(this.table,a),c.table.options.cellEditing.call(this.table,a),l="function"==typeof t.column.modules.edit.params?t.column.modules.edit.params(a):t.column.modules.edit.params,!1===(r=t.column.modules.edit.editor.call(c,a,s,i,n,l)))return h.blur(),!1;if(!(r instanceof Node))return console.warn("Edit Error - Editor should return an instance of Node, the editor returned:",r),h.blur(),!1;for(h.classList.add("tabulator-editing"),t.row.getElement().classList.add("tabulator-row-editing");h.firstChild;)h.removeChild(h.firstChild);h.appendChild(r),d();for(var p=h.children,m=0;m<p.length;m++)p[m].addEventListener("click",function(t){t.stopPropagation()});return!0}return this.mouseClick=!1,h.blur(),!1},w.prototype.editors={input:function(t,e,o,i,n){function s(t){(null===r||void 0===r)&&""!==a.value||a.value!=r?o(a.value)&&(r=a.value):i()}var r=t.getValue(),a=document.createElement("input");if(a.setAttribute("type",n.search?"search":"text"),a.style.padding="4px",a.style.width="100%",a.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var l in n.elementAttributes)"+"==l.charAt(0)?(l=l.slice(1),a.setAttribute(l,a.getAttribute(l)+n.elementAttributes["+"+l])):a.setAttribute(l,n.elementAttributes[l]);return a.value=void 0!==r?r:"",e(function(){a.focus(),a.style.height="100%"}),a.addEventListener("change",s),a.addEventListener("blur",s),a.addEventListener("keydown",function(t){switch(t.keyCode){case 13:s(t);break;case 27:i()}}),a},textarea:function(t,e,o,i,n){function s(e){(null===r||void 0===r)&&""!==l.value||l.value!=r?(o(l.value)&&(r=l.value),setTimeout(function(){t.getRow().normalizeHeight()},300)):i()}var r=t.getValue(),a=String(null!==r&&void 0!==r?r:""),l=(a.match(/(?:\r\n|\r|\n)/g),document.createElement("textarea")),c=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",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var u in n.elementAttributes)"+"==u.charAt(0)?(u=u.slice(1),l.setAttribute(u,l.getAttribute(u)+n.elementAttributes["+"+u])):l.setAttribute(u,n.elementAttributes[u]);return l.value=a,e(function(){l.focus(),l.style.height="100%"}),l.addEventListener("change",s),l.addEventListener("blur",s),l.addEventListener("keyup",function(){l.style.height="";var e=l.scrollHeight;l.style.height=e+"px",e!=c&&(c=e,t.getRow().normalizeHeight())}),l.addEventListener("keydown",function(t){27==t.keyCode&&i()}),l},number:function(t,e,o,i,n){function s(){var t=a.value;isNaN(t)||""===t||(t=Number(t)),t!=r?o(t)&&(r=t):i()}var r=t.getValue(),a=document.createElement("input");if(a.setAttribute("type","number"),void 0!==n.max&&a.setAttribute("max",n.max),void 0!==n.min&&a.setAttribute("min",n.min),void 0!==n.step&&a.setAttribute("step",n.step),a.style.padding="4px",a.style.width="100%",a.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var l in n.elementAttributes)"+"==l.charAt(0)?(l=l.slice(1),a.setAttribute(l,a.getAttribute(l)+n.elementAttributes["+"+l])):a.setAttribute(l,n.elementAttributes[l]);a.value=r;var c=function(t){s()};return e(function(){a.removeEventListener("blur",c),a.focus(),a.style.height="100%",a.addEventListener("blur",c)}),a.addEventListener("keydown",function(t){switch(t.keyCode){case 13:s();break;case 27:i()}}),a},range:function(t,e,o,i,n){function s(){var t=a.value;isNaN(t)||""===t||(t=Number(t)),t!=r?o(t)&&(r=t):i()}var r=t.getValue(),a=document.createElement("input");if(a.setAttribute("type","range"),void 0!==n.max&&a.setAttribute("max",n.max),void 0!==n.min&&a.setAttribute("min",n.min),void 0!==n.step&&a.setAttribute("step",n.step),a.style.padding="4px",a.style.width="100%",a.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var l in n.elementAttributes)"+"==l.charAt(0)?(l=l.slice(1),a.setAttribute(l,a.getAttribute(l)+n.elementAttributes["+"+l])):a.setAttribute(l,n.elementAttributes[l]);return a.value=r,e(function(){a.focus(),a.style.height="100%"}),a.addEventListener("blur",function(t){s()}),a.addEventListener("keydown",function(t){switch(t.keyCode){case 13:case 9:s();break;case 27:i()}}),a},select:function(t,e,o,i,n){function s(e){var o,i={},s=f.table.getData();return o=e?f.table.columnManager.getColumnByField(e):t.getColumn()._getSelf(),o?(s.forEach(function(t){var e=o.getFieldValue(t);null!==e&&void 0!==e&&""!==e&&(i[e]=!0)}),i=n.sortValuesList?"asc"==n.sortValuesList?Object.keys(i).sort():Object.keys(i).sort().reverse():Object.keys(i)):console.warn("unable to find matching column to create select lookup list:",e),i}function r(e,o){function i(t){var t={label:n.listItemFormatter?n.listItemFormatter(t.value,t.label):t.label,value:t.value,element:!1};return t.value!==o&&(isNaN(parseFloat(t.value))||isNaN(parseFloat(t.value))||parseFloat(t.value)!==parseFloat(o))||l(t),s.push(t),r.push(t),t}var s=[],r=[];if("function"==typeof e&&(e=e(t)),Array.isArray(e))e.forEach(function(t){var e;"object"===(void 0===t?"undefined":_typeof(t))?t.options?(e={label:t.label,group:!0,element:!1},r.push(e),t.options.forEach(function(t){i(t)})):i(t):(e={label:n.listItemFormatter?n.listItemFormatter(t,t):t,value:t,element:!1},e.value!==o&&(isNaN(parseFloat(e.value))||isNaN(parseFloat(e.value))||parseFloat(e.value)!==parseFloat(o))||l(e),s.push(e),r.push(e))});else for(var c in e){var u={label:n.listItemFormatter?n.listItemFormatter(c,e[c]):e[c],value:c,element:!1};u.value!==o&&(isNaN(parseFloat(u.value))||isNaN(parseFloat(u.value))||parseFloat(u.value)!==parseFloat(o))||l(u),s.push(u),r.push(u)}E=s,C=r,a()}function a(){for(;w.firstChild;)w.removeChild(w.firstChild);C.forEach(function(t){var e=t.element;e||(t.group?(e=document.createElement("div"),e.classList.add("tabulator-edit-select-list-group"),e.tabIndex=0,e.innerHTML=""===t.label?"&nbsp;":t.label):(e=document.createElement("div"),e.classList.add("tabulator-edit-select-list-item"),e.tabIndex=0,e.innerHTML=""===t.label?"&nbsp;":t.label,e.addEventListener("click",function(){l(t),c()}),t===x&&e.classList.add("active")),e.addEventListener("mousedown",function(){R=!1,setTimeout(function(){R=!0},10)}),t.element=e),w.appendChild(e)})}function l(t){x&&x.element&&x.element.classList.remove("active"),x=t,y.value="&nbsp;"===t.label?"":t.label,t.element&&t.element.classList.add("active")}function c(){p(),b!==x.value?(b=x.value,o(x.value)):i()}function d(){p(),i()}function h(){if(!w.parentNode){!0===n.values?r(s(),v):"string"==typeof n.values?r(s(n.values),v):r(n.values||[],v);var t=u.prototype.helpers.elOffset(g);w.style.minWidth=g.offsetWidth+"px",w.style.top=t.top+g.offsetHeight+"px",w.style.left=t.left+"px",document.body.appendChild(w)}}function p(){w.parentNode&&w.parentNode.removeChild(w),m()}function m(){f.table.rowManager.element.removeEventListener("scroll",d)}var f=this,g=t.getElement(),b=t.getValue(),v=void 0!==b||null===b?b:void 0!==n.defaultValue?n.defaultValue:"",y=document.createElement("input"),w=document.createElement("div"),E=[],C=[],x={},R=!0;if(this.table.rowManager.element.addEventListener("scroll",d),(Array.isArray(n)||!Array.isArray(n)&&"object"===(void 0===n?"undefined":_typeof(n))&&!n.values)&&(console.warn("DEPRECATION WANRING - 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}),y.setAttribute("type","text"),y.style.padding="4px",y.style.width="100%",y.style.boxSizing="border-box",y.style.cursor="default",y.readOnly=0!=this.currentCell,n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var M in n.elementAttributes)"+"==M.charAt(0)?(M=M.slice(1),y.setAttribute(M,y.getAttribute(M)+n.elementAttributes["+"+M])):y.setAttribute(M,n.elementAttributes[M]);return y.value=void 0!==b||null===b?b:"",!0===n.values?r(s(),b):"string"==typeof n.values?r(s(n.values),b):r(n.values||[],b),y.addEventListener("keydown",function(t){var e;switch(t.keyCode){case 38:t.stopImmediatePropagation(),t.stopPropagation(),t.preventDefault(),e=E.indexOf(x),e>0&&l(E[e-1]);break;case 40:t.stopImmediatePropagation(),t.stopPropagation(),t.preventDefault(),e=E.indexOf(x),e<E.length-1&&l(-1==e?E[0]:E[e+1]);break;case 37:case 39:t.stopImmediatePropagation(),t.stopPropagation(),t.preventDefault();break;case 13:c();break;case 27:d()}}),y.addEventListener("blur",function(t){R&&d()}),y.addEventListener("focus",function(t){h()}),w=document.createElement("div"),w.classList.add("tabulator-edit-select-list"),e(function(){y.style.height="100%",y.focus()}),y},autocomplete:function(t,e,o,i,n){function s(e){var o,i={},s=g.table.getData();return o=e?g.table.columnManager.getColumnByField(e):t.getColumn()._getSelf(),o?(s.forEach(function(t){var e=o.getFieldValue(t);null!==e&&void 0!==e&&""!==e&&(i[e]=!0)}),i=n.sortValuesList?"asc"==n.sortValuesList?Object.keys(i).sort():Object.keys(i).sort().reverse():Object.keys(i)):console.warn("unable to find matching column to create autocomplete lookup list:",e),i}function r(t,e){var o=[];if(Array.isArray(t))t.forEach(function(t){var i={title:n.listItemFormatter?n.listItemFormatter(t,t):t,value:t,element:!1};i.value!==e&&(isNaN(parseFloat(i.value))||isNaN(parseFloat(i.value))||parseFloat(i.value)!==parseFloat(e))||c(i),o.push(i)});else for(var i in t){var s={title:n.listItemFormatter?n.listItemFormatter(i,t[i]):t[i],value:i,element:!1};s.value!==e&&(isNaN(parseFloat(s.value))||isNaN(parseFloat(s.value))||parseFloat(s.value)!==parseFloat(e))||c(s),o.push(s)}n.searchFunc&&o.forEach(function(t){t.search={title:t.title,value:t.value}}),C=o}function a(t,e){var o=[],i=[],s=[];n.searchFunc?(C.forEach(function(t){i.push(t.search)}),s=n.searchFunc(t,i),s.forEach(function(t){var e=C.find(function(e){return e.search===t});e&&o.push(e)})):""===t?n.showListOnEmpty&&C.forEach(function(t){o.push(t)}):C.forEach(function(e){null===e.value&&void 0===e.value||(String(e.value).toLowerCase().indexOf(String(t).toLowerCase())>-1||String(e.title).toLowerCase().indexOf(String(t).toLowerCase())>-1)&&o.push(e)}),x=o,l(e)}function l(t){for(var e=!1;E.firstChild;)E.removeChild(E.firstChild);x.forEach(function(o){var i=o.element;i||(i=document.createElement("div"),i.classList.add("tabulator-edit-select-list-item"),i.tabIndex=0,i.innerHTML=o.title,i.addEventListener("click",function(){c(o),d()}),i.addEventListener("mousedown",function(){L=!1,setTimeout(function(){L=!0},10)}),o.element=i,t&&o.value==v&&(w.value=o.title,o.element.classList.add("active"),e=!0),o===M&&(o.element.classList.add("active"),e=!0)),E.appendChild(i)}),e||c(!1)}function c(t,e){M&&M.element&&M.element.classList.remove("active"),M=t,t&&t.element&&t.element.classList.add("active")}function d(){m(),M?v!==M.value?(v=M.value,w.value=M.title,o(M.value)):i():n.freetext?(v=w.value,o(w.value)):n.allowEmpty&&""===w.value?(v=w.value,o(w.value)):i()}function h(){m(),i()}function p(){if(!E.parentNode){for(;E.firstChild;)E.removeChild(E.firstChild);R=!0===n.values?s():"string"==typeof n.values?s(n.values):n.values||[],r(R,v);var t=u.prototype.helpers.elOffset(b);E.style.minWidth=b.offsetWidth+"px",E.style.top=t.top+b.offsetHeight+"px",E.style.left=t.left+"px",document.body.appendChild(E)}}function m(){E.parentNode&&E.parentNode.removeChild(E),f()}function f(){g.table.rowManager.element.removeEventListener("scroll",h)}var g=this,b=t.getElement(),v=t.getValue(),y=void 0!==v||null===v?v:void 0!==n.defaultValue?n.defaultValue:"",w=document.createElement("input"),E=document.createElement("div"),C=[],x=[],R=[],M={},L=!0;if(this.table.rowManager.element.addEventListener("scroll",h),w.setAttribute("type","search"),w.style.padding="4px",w.style.width="100%",w.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var D in n.elementAttributes)"+"==D.charAt(0)?(D=D.slice(1),w.setAttribute(D,w.getAttribute(D)+n.elementAttributes["+"+D])):w.setAttribute(D,n.elementAttributes[D]);return w.addEventListener("keydown",function(t){var e;switch(t.keyCode){case 38:t.stopImmediatePropagation(),t.stopPropagation(),t.preventDefault(),e=x.indexOf(M),c(e>0?x[e-1]:!1);break;case 40:t.stopImmediatePropagation(),t.stopPropagation(),t.preventDefault(),e=x.indexOf(M),e<x.length-1&&c(-1==e?x[0]:x[e+1]);break;case 37:case 39:t.stopImmediatePropagation(),t.stopPropagation(),t.preventDefault();break;case 13:d();break;case 27:h();break;case 36:case 35:t.stopImmediatePropagation()}}),w.addEventListener("keyup",function(t){switch(t.keyCode){case 38:case 37:case 39:case 40:case 13:case 27:break;default:a(w.value)}}),w.addEventListener("search",function(t){a(w.value)}),w.addEventListener("blur",function(t){L&&d()}),w.addEventListener("focus",function(t){var e=y;p(),w.value=e,a(e,!0)}),E=document.createElement("div"),E.classList.add("tabulator-edit-select-list"),e(function(){w.style.height="100%",w.focus()}),w},star:function(t,e,o,i,n){function s(t){h.forEach(function(e,o){o<t?("ie"==a.table.browser?e.setAttribute("class","tabulator-star-active"):e.classList.replace("tabulator-star-inactive","tabulator-star-active"),e.innerHTML='<polygon fill="#488CE9" stroke="#014AAE" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>'):("ie"==a.table.browser?e.setAttribute("class","tabulator-star-inactive"):e.classList.replace("tabulator-star-active","tabulator-star-inactive"),e.innerHTML='<polygon fill="#010155" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>')})}function r(t){c=t,s(t)}var a=this,l=t.getElement(),c=t.getValue(),u=l.getElementsByTagName("svg").length||5,d=l.getElementsByTagName("svg")[0]?l.getElementsByTagName("svg")[0].getAttribute("width"):14,h=[],p=document.createElement("div"),m=document.createElementNS("http://www.w3.org/2000/svg","svg");if(l.style.whiteSpace="nowrap",l.style.overflow="hidden",l.style.textOverflow="ellipsis",p.style.verticalAlign="middle",p.style.display="inline-block",p.style.padding="4px",m.setAttribute("width",d),m.setAttribute("height",d),m.setAttribute("viewBox","0 0 512 512"),m.setAttribute("xml:space","preserve"),m.style.padding="0 1px",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var f in n.elementAttributes)"+"==f.charAt(0)?(f=f.slice(1),p.setAttribute(f,p.getAttribute(f)+n.elementAttributes["+"+f])):p.setAttribute(f,n.elementAttributes[f]);for(var g=1;g<=u;g++)!function(t){var e=document.createElement("span"),i=m.cloneNode(!0);h.push(i),e.addEventListener("mouseenter",function(e){e.stopPropagation(),e.stopImmediatePropagation(),s(t)}),e.addEventListener("mousemove",function(t){t.stopPropagation(),t.stopImmediatePropagation()}),e.addEventListener("click",function(e){e.stopPropagation(),e.stopImmediatePropagation(),o(t)}),e.appendChild(i),p.appendChild(e)}(g);return c=Math.min(parseInt(c),u),s(c),p.addEventListener("mousemove",function(t){s(0)}),p.addEventListener("click",function(t){o(0)}),l.addEventListener("blur",function(t){i()}),l.addEventListener("keydown",function(t){switch(t.keyCode){case 39:r(c+1);break;case 37:r(c-1);break;case 13:o(c);break;case 27:i()}}),p},progress:function(t,e,o,i,n){function s(){var t=d*Math.round(m.offsetWidth/(l.clientWidth/100))+u;o(t),l.setAttribute("aria-valuenow",t),l.setAttribute("aria-label",h)}var r,a,l=t.getElement(),c=void 0===n.max?l.getElementsByTagName("div")[0].getAttribute("max")||100:n.max,u=void 0===n.min?l.getElementsByTagName("div")[0].getAttribute("min")||0:n.min,d=(c-u)/100,h=t.getValue()||0,p=document.createElement("div"),m=document.createElement("div");if(p.style.position="absolute",p.style.right="0",p.style.top="0",p.style.bottom="0",p.style.width="5px",p.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%",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var f in n.elementAttributes)"+"==f.charAt(0)?(f=f.slice(1),m.setAttribute(f,m.getAttribute(f)+n.elementAttributes["+"+f])):m.setAttribute(f,n.elementAttributes[f]);return l.style.padding="4px 4px",h=Math.min(parseFloat(h),c),h=Math.max(parseFloat(h),u),h=Math.round((h-u)/d),m.style.width=h+"%",l.setAttribute("aria-valuemin",u),l.setAttribute("aria-valuemax",c),m.appendChild(p),p.addEventListener("mousedown",function(t){r=t.screenX,a=m.offsetWidth}),p.addEventListener("mouseover",function(){p.style.cursor="ew-resize"}),l.addEventListener("mousemove",function(t){r&&(m.style.width=a+t.screenX-r+"px")}),l.addEventListener("mouseup",function(t){r&&(t.stopPropagation(),t.stopImmediatePropagation(),r=!1,a=!1,s())}),l.addEventListener("keydown",function(t){switch(t.keyCode){case 39:m.style.width=m.clientWidth+l.clientWidth/100+"px";break;case 37:m.style.width=m.clientWidth-l.clientWidth/100+"px";break;case 13:s();break;case 27:i()}}),l.addEventListener("blur",function(){i()}),m},tickCross:function(t,e,o,i,n){function s(t){return l?t?u?c:a.checked:a.checked&&!u?(a.checked=!1,a.indeterminate=!0,u=!0,c):(u=!1,a.checked):a.checked}var r=t.getValue(),a=document.createElement("input"),l=n.tristate,c=void 0===n.indeterminateValue?null:n.indeterminateValue,u=!1;if(a.setAttribute("type","checkbox"),a.style.marginTop="5px",a.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var d in n.elementAttributes)"+"==d.charAt(0)?(d=d.slice(1),a.setAttribute(d,a.getAttribute(d)+n.elementAttributes["+"+d])):a.setAttribute(d,n.elementAttributes[d]);return a.value=r,!l||void 0!==r&&r!==c&&""!==r||(u=!0,a.indeterminate=!0),"firefox"!=this.table.browser&&e(function(){a.focus()}),a.checked=!0===r||"true"===r||"True"===r||1===r,a.addEventListener("change",function(t){o(s())}),a.addEventListener("blur",function(t){o(s(!0))}),a.addEventListener("keydown",function(t){13==t.keyCode&&o(s()),27==t.keyCode&&i()}),a}},u.prototype.registerModule("edit",w);var E=function(t){this.table=t,this.filterList=[],this.headerFilters={},this.headerFilterElements=[],this.headerFilterColumns=[],this.changed=!1};E.prototype.initializeColumn=function(t,e){function o(e){var o,s="input"==t.modules.filter.tagType&&"text"==t.modules.filter.attrType||"textarea"==t.modules.filter.tagType?"partial":"match",r="";if(void 0===t.modules.filter.prevSuccess||t.modules.filter.prevSuccess!==e){if(t.modules.filter.prevSuccess=e,t.modules.filter.emptyFunc(e))delete i.headerFilters[n];else{switch(t.modules.filter.value=e,_typeof(t.definition.headerFilterFunc)){case"string":i.filters[t.definition.headerFilterFunc]?(r=t.definition.headerFilterFunc,o=function(o){var n=t.definition.headerFilterFuncParams||{},s=t.getFieldValue(o);return n="function"==typeof n?n(e,s,o):n,i.filters[t.definition.headerFilterFunc](e,s,o,n)}):console.warn("Header Filter Error - Matching filter function not found: ",t.definition.headerFilterFunc);break;case"function":o=function(o){var i=t.definition.headerFilterFuncParams||{},n=t.getFieldValue(o);return i="function"==typeof i?i(e,n,o):i,t.definition.headerFilterFunc(e,n,o,i)},r=o}if(!o)switch(s){case"partial":o=function(o){var i=t.getFieldValue(o);return void 0!==i&&null!==i&&String(i).toLowerCase().indexOf(String(e).toLowerCase())>-1},r="like";break;default:o=function(o){return t.getFieldValue(o)==e},r="="}i.headerFilters[n]={value:e,func:o,type:r}}i.changed=!0,i.table.rowManager.filterRefresh()}return!0}var i=this,n=t.getField();t.modules.filter={success:o,attrType:!1,tagType:!1,emptyFunc:!1},this.generateHeaderFilterElement(t)},E.prototype.generateHeaderFilterElement=function(t,e){function o(){}var i,n,s,r,a,l,c,u=this,d=this,h=t.modules.filter.success,p=t.getField();if(t.modules.filter.headerElement&&t.modules.filter.headerElement.parentNode){var m=t.modules.filter.headerElement.parentNode,f=d.headerFilterElements.indexOf(m);f>=0&&d.headerFilterElements.splice(f,1);var g=d.headerFilterColumns.indexOf(g);g>=0&&d.headerFilterColumns.splice(g,1),t.contentElement.removeChild(m)}if(p){switch(t.modules.filter.emptyFunc=t.definition.headerFilterEmptyCheck||function(t){return!t&&"0"!==t},i=document.createElement("div"),i.classList.add("tabulator-header-filter"),_typeof(t.definition.headerFilter)){case"string":d.table.modules.edit.editors[t.definition.headerFilter]?(n=d.table.modules.edit.editors[t.definition.headerFilter],"tick"!==t.definition.headerFilter&&"tickCross"!==t.definition.headerFilter||t.definition.headerFilterEmptyCheck||(t.modules.filter.emptyFunc=function(t){return!0!==t&&!1!==t})):console.warn("Filter Error - Cannot build header filter, No such editor found: ",t.definition.editor);break;case"function":n=t.definition.headerFilter;break;case"boolean":t.modules.edit&&t.modules.edit.editor?n=t.modules.edit.editor:t.definition.formatter&&d.table.modules.edit.editors[t.definition.formatter]?(n=d.table.modules.edit.editors[t.definition.formatter],"tick"!==t.definition.formatter&&"tickCross"!==t.definition.formatter||t.definition.headerFilterEmptyCheck||(t.modules.filter.emptyFunc=function(t){return!0!==t&&!1!==t})):n=d.table.modules.edit.editors.input}if(n){if(r={getValue:function(){return void 0!==e?e:""},getField:function(){return t.definition.field},getElement:function(){return i},getColumn:function(){return t.getComponent()},getRow:function(){return{normalizeHeight:function(){}}}},c=t.definition.headerFilterParams||{},c="function"==typeof c?c.call(d.table):c,!(s=n.call(this.table.modules.edit,r,function(){},h,o,c)))return void console.warn("Filter Error - Cannot add filter to "+p+" column, editor returned a value of false");if(!(s instanceof Node))return void console.warn("Filter Error - Cannot add filter to "+p+" column, editor should return an instance of Node, the editor returned:",s);p?d.table.modules.localize.bind("headerFilters|columns|"+t.definition.field,function(t){s.setAttribute("placeholder",void 0!==t&&t?t:d.table.modules.localize.getText("headerFilters|default"))}):d.table.modules.localize.bind("headerFilters|default",function(t){s.setAttribute("placeholder",void 0!==d.column.definition.headerFilterPlaceholder&&d.column.definition.headerFilterPlaceholder?d.column.definition.headerFilterPlaceholder:t)}),s.addEventListener("click",function(t){t.stopPropagation(),s.focus()}),s.addEventListener("focus",function(t){var e=u.table.columnManager.element.scrollLeft;e!==u.table.rowManager.element.scrollLeft&&(u.table.rowManager.scrollHorizontal(e),u.table.columnManager.scrollHorizontal(e))}),a=!1,l=function(t){a&&clearTimeout(a),a=setTimeout(function(){h(s.value)},300)},t.modules.filter.headerElement=s,t.modules.filter.attrType=s.hasAttribute("type")?s.getAttribute("type").toLowerCase():"",t.modules.filter.tagType=s.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)&&(s.addEventListener("keyup",l),s.addEventListener("search",l),"number"==t.modules.filter.attrType&&s.addEventListener("change",function(t){h(s.value)}),"text"==t.modules.filter.attrType&&"ie"!==this.table.browser&&s.setAttribute("type","search")),"input"!=t.modules.filter.tagType&&"select"!=t.modules.filter.tagType&&"textarea"!=t.modules.filter.tagType||s.addEventListener("mousedown",function(t){t.stopPropagation()})),i.appendChild(s),t.contentElement.appendChild(i),d.headerFilterElements.push(s),d.headerFilterColumns.push(t)}}else console.warn("Filter Error - Cannot add header filter, column has no field set:",t.definition.title)},E.prototype.hideHeaderFilterElements=function(){this.headerFilterElements.forEach(function(t){t.style.display="none"})},E.prototype.showHeaderFilterElements=function(){this.headerFilterElements.forEach(function(t){t.style.display=""})},E.prototype.setHeaderFilterFocus=function(t){t.modules.filter&&t.modules.filter.headerElement?t.modules.filter.headerElement.focus():console.warn("Column Filter Focus Error - No header filter set on column:",t.getField())},E.prototype.setHeaderFilterValue=function(t,e){t&&(t.modules.filter&&t.modules.filter.headerElement?(this.generateHeaderFilterElement(t,e),t.modules.filter.success(e)):console.warn("Column Filter Error - No header filter set on column:",t.getField()))},E.prototype.reloadHeaderFilter=function(t){t&&(t.modules.filter&&t.modules.filter.headerElement?this.generateHeaderFilterElement(t,t.modules.filter.value):console.warn("Column Filter Error - No header filter set on column:",t.getField()))},E.prototype.hasChanged=function(){var t=this.changed;return this.changed=!1,t},E.prototype.setFilter=function(t,e,o){var i=this;i.filterList=[],Array.isArray(t)||(t=[{field:t,type:e,value:o}]),i.addFilter(t)},E.prototype.addFilter=function(t,e,o){var i=this;Array.isArray(t)||(t=[{field:t,type:e,value:o}]),t.forEach(function(t){(t=i.findFilter(t))&&(i.filterList.push(t),i.changed=!0)}),this.table.options.persistentFilter&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("filter")},E.prototype.findFilter=function(t){var e,o=this;if(Array.isArray(t))return this.findSubFilters(t);var i=!1;return"function"==typeof t.field?i=function(e){return t.field(e,t.type||{})}:o.filters[t.type]?(e=o.table.columnManager.getColumnByField(t.field),i=e?function(i){return o.filters[t.type](t.value,e.getFieldValue(i))}:function(e){return o.filters[t.type](t.value,e[t.field])}):console.warn("Filter Error - No such filter type found, ignoring: ",t.type),t.func=i,!!t.func&&t},E.prototype.findSubFilters=function(t){var e=this,o=[];return t.forEach(function(t){(t=e.findFilter(t))&&o.push(t)}),!!o.length&&o},E.prototype.getFilters=function(t,e){var o=[];return t&&(o=this.getHeaderFilters()),e&&o.forEach(function(t){"function"==typeof t.type&&(t.type="function")}),o=o.concat(this.filtersToArray(this.filterList,e))},E.prototype.filtersToArray=function(t,e){var o=this,i=[];return t.forEach(function(t){var n;Array.isArray(t)?i.push(o.filtersToArray(t,e)):(n={field:t.field,type:t.type,value:t.value},e&&"function"==typeof n.type&&(n.type="function"),i.push(n))}),i},E.prototype.getHeaderFilters=function(){var t=[];for(var e in this.headerFilters)t.push({field:e,type:this.headerFilters[e].type,value:this.headerFilters[e].value});return t},E.prototype.removeFilter=function(t,e,o){var i=this;Array.isArray(t)||(t=[{field:t,type:e,value:o}]),t.forEach(function(t){var e=-1;e="object"==_typeof(t.field)?i.filterList.findIndex(function(e){return t===e}):i.filterList.findIndex(function(e){return t.field===e.field&&t.type===e.type&&t.value===e.value}),e>-1?(i.filterList.splice(e,1),i.changed=!0):console.warn("Filter Error - No matching filter type found, ignoring: ",t.type)}),this.table.options.persistentFilter&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("filter")},E.prototype.clearFilter=function(t){this.filterList=[],t&&this.clearHeaderFilter(),this.changed=!0,this.table.options.persistentFilter&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("filter")},E.prototype.clearHeaderFilter=function(){var t=this;this.headerFilters={},this.headerFilterColumns.forEach(function(e){e.modules.filter.value=null,e.modules.filter.prevSuccess=void 0,t.reloadHeaderFilter(e)}),this.changed=!0},E.prototype.search=function(t,e,o,i){var n=this,s=[],r=[];return Array.isArray(e)||(e=[{field:e,type:o,value:i}]),e.forEach(function(t){(t=n.findFilter(t))&&r.push(t)}),this.table.rowManager.rows.forEach(function(e){var o=!0;r.forEach(function(t){n.filterRecurse(t,e.getData())||(o=!1)}),o&&s.push("data"===t?e.getData("data"):e.getComponent())}),s},E.prototype.filter=function(t,e){
-var o=this,i=[],n=[];return o.table.options.dataFiltering&&o.table.options.dataFiltering.call(o.table,o.getFilters()),o.table.options.ajaxFiltering||!o.filterList.length&&!Object.keys(o.headerFilters).length?i=t.slice(0):t.forEach(function(t){o.filterRow(t)&&i.push(t)}),o.table.options.dataFiltered&&(i.forEach(function(t){n.push(t.getComponent())}),o.table.options.dataFiltered.call(o.table,o.getFilters(),n)),i},E.prototype.filterRow=function(t,e){var o=this,i=!0,n=t.getData();o.filterList.forEach(function(t){o.filterRecurse(t,n)||(i=!1)});for(var s in o.headerFilters)o.headerFilters[s].func(n)||(i=!1);return i},E.prototype.filterRecurse=function(t,e){var o=this,i=!1;return Array.isArray(t)?t.forEach(function(t){o.filterRecurse(t,e)&&(i=!0)}):i=t.func(e),i},E.prototype.filters={"=":function(t,e,o,i){return e==t},"<":function(t,e,o,i){return e<t},"<=":function(t,e,o,i){return e<=t},">":function(t,e,o,i){return e>t},">=":function(t,e,o,i){return e>=t},"!=":function(t,e,o,i){return e!=t},regex:function(t,e,o,i){return"string"==typeof t&&(t=new RegExp(t)),t.test(e)},like:function(t,e,o,i){return null===t||void 0===t?e===t:void 0!==e&&null!==e&&String(e).toLowerCase().indexOf(t.toLowerCase())>-1},in:function(t,e,o,i){return Array.isArray(t)?t.indexOf(e)>-1:(console.warn("Filter Error - filter value is not an array:",t),!1)}},u.prototype.registerModule("filter",E);var C=function(t){this.table=t};C.prototype.initializeColumn=function(t){var e=this,o={params:t.definition.formatterParams||{}};switch(_typeof(t.definition.formatter)){case"string":"tick"===t.definition.formatter&&(t.definition.formatter="tickCross",void 0===o.params.crossElement&&(o.params.crossElement=!1),console.warn("DEPRECATION WARNING - the tick formatter has been deprecated, please use the tickCross formatter with the crossElement param set to false")),e.formatters[t.definition.formatter]?o.formatter=e.formatters[t.definition.formatter]:(console.warn("Formatter Error - No such formatter found: ",t.definition.formatter),o.formatter=e.formatters.plaintext);break;case"function":o.formatter=t.definition.formatter;break;default:o.formatter=e.formatters.plaintext}t.modules.format=o},C.prototype.cellRendered=function(t){t.column.modules.format.renderedCallback&&t.column.modules.format.renderedCallback()},C.prototype.formatValue=function(t){function e(e){t.column.modules.format.renderedCallback=e}var o=t.getComponent(),i="function"==typeof t.column.modules.format.params?t.column.modules.format.params(o):t.column.modules.format.params;return t.column.modules.format.formatter.call(this,o,i,e)},C.prototype.sanitizeHTML=function(t){if(t){var e={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;","`":"&#x60;","=":"&#x3D;"};return String(t).replace(/[&<>"'`=\/]/g,function(t){return e[t]})}return t},C.prototype.emptyToSpace=function(t){return null===t||void 0===t?"&nbsp;":t},C.prototype.getFormatter=function(t){var t;switch(void 0===t?"undefined":_typeof(t)){case"string":this.formatters[t]?t=this.formatters[t]:(console.warn("Formatter Error - No such formatter found: ",t),t=this.formatters.plaintext);break;case"function":t=t;break;default:t=this.formatters.plaintext}return t},C.prototype.formatters={plaintext:function(t,e,o){return this.emptyToSpace(this.sanitizeHTML(t.getValue()))},html:function(t,e,o){return t.getValue()},textarea:function(t,e,o){return t.getElement().style.whiteSpace="pre-wrap",this.emptyToSpace(this.sanitizeHTML(t.getValue()))},money:function(t,e,o){var i,n,s,r,a=parseFloat(t.getValue()),l=e.decimal||".",c=e.thousand||",",u=e.symbol||"",d=!!e.symbolAfter,h=void 0!==e.precision?e.precision:2;if(isNaN(a))return this.emptyToSpace(this.sanitizeHTML(t.getValue()));for(i=!1!==h?a.toFixed(h):a,i=String(i).split("."),n=i[0],s=i.length>1?l+i[1]:"",r=/(\d+)(\d{3})/;r.test(n);)n=n.replace(r,"$1"+c+"$2");return d?n+s+u:u+n+s},link:function(t,e,o){var i,n=t.getValue(),s=e.urlPrefix||"",r=n,a=document.createElement("a");if(e.labelField&&(i=t.getData(),r=i[e.labelField]),e.label)switch(_typeof(e.label)){case"string":r=e.label;break;case"function":r=e.label(t)}if(r){if(e.urlField&&(i=t.getData(),n=i[e.urlField]),e.url)switch(_typeof(e.url)){case"string":n=e.url;break;case"function":n=e.url(t)}return a.setAttribute("href",s+n),e.target&&a.setAttribute("target",e.target),a.innerHTML=this.emptyToSpace(this.sanitizeHTML(r)),a}return"&nbsp;"},image:function(t,e,o){var i=document.createElement("img");switch(i.setAttribute("src",t.getValue()),_typeof(e.height)){case"number":i.style.height=e.height+"px";break;case"string":i.style.height=e.height}switch(_typeof(e.width)){case"number":i.style.width=e.width+"px";break;case"string":i.style.width=e.width}return i.addEventListener("load",function(){t.getRow().normalizeHeight()}),i},tickCross:function(t,e,o){var i=t.getValue(),n=t.getElement(),s=e.allowEmpty,r=e.allowTruthy,a=void 0!==e.tickElement?e.tickElement:'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>',l=void 0!==e.crossElement?e.crossElement:'<svg enable-background="new 0 0 24 24" height="14" width="14"  viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';return r&&i||!0===i||"true"===i||"True"===i||1===i||"1"===i?(n.setAttribute("aria-checked",!0),a||""):!s||"null"!==i&&""!==i&&null!==i&&void 0!==i?(n.setAttribute("aria-checked",!1),l||""):(n.setAttribute("aria-checked","mixed"),"")},datetime:function(t,e,o){var i=e.inputFormat||"YYYY-MM-DD hh:mm:ss",n=e.outputFormat||"DD/MM/YYYY hh:mm:ss",s=void 0!==e.invalidPlaceholder?e.invalidPlaceholder:"",r=t.getValue(),a=moment(r,i);return a.isValid()?a.format(n):!0===s?r:"function"==typeof s?s(r):s},datetimediff:function(t,e,o){var i=e.inputFormat||"YYYY-MM-DD hh:mm:ss",n=void 0!==e.invalidPlaceholder?e.invalidPlaceholder:"",s=void 0!==e.suffix&&e.suffix,r=void 0!==e.unit?e.unit:void 0,a=void 0!==e.humanize&&e.humanize,l=void 0!==e.date?e.date:moment(),c=t.getValue(),u=moment(c,i);return u.isValid()?a?moment.duration(u.diff(l)).humanize(s):u.diff(l,r)+(s?" "+s:""):!0===n?c:"function"==typeof n?n(c):n},lookup:function(t,e,o){var i=t.getValue();return void 0===e[i]?(console.warn("Missing display value for "+i),i):e[i]},star:function(t,e,o){var i=t.getValue(),n=t.getElement(),s=e&&e.stars?e.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",i=i&&!isNaN(i)?parseInt(i):0,i=Math.max(0,Math.min(i,s));for(var l=1;l<=s;l++){var c=a.cloneNode(!0);c.innerHTML=l<=i?'<polygon fill="#FFEA00" stroke="#C1AB60" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>':'<polygon fill="#D2D2D2" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>',r.appendChild(c)}return n.style.whiteSpace="nowrap",n.style.overflow="hidden",n.style.textOverflow="ellipsis",n.setAttribute("aria-label",i),r},traffic:function(t,e,o){var i,n,s=this.sanitizeHTML(t.getValue())||0,r=document.createElement("span"),a=e&&e.max?e.max:100,l=e&&e.min?e.min:0,c=e&&void 0!==e.color?e.color:["red","orange","green"],u="#666666";if(!isNaN(s)&&void 0!==t.getValue()){switch(r.classList.add("tabulator-traffic-light"),n=parseFloat(s)<=a?parseFloat(s):a,n=parseFloat(n)>=l?parseFloat(n):l,i=(a-l)/100,n=Math.round((n-l)/i),void 0===c?"undefined":_typeof(c)){case"string":u=c;break;case"function":u=c(s);break;case"object":if(Array.isArray(c)){var d=100/c.length,h=Math.floor(n/d);h=Math.min(h,c.length-1),h=Math.max(h,0),u=c[h];break}}return r.style.backgroundColor=u,r}},progress:function(t,e,o){var i,n,s,r,a,l=this.sanitizeHTML(t.getValue())||0,c=t.getElement(),u=e&&e.max?e.max:100,d=e&&e.min?e.min:0,h=e&&e.legendAlign?e.legendAlign:"center";switch(n=parseFloat(l)<=u?parseFloat(l):u,n=parseFloat(n)>=d?parseFloat(n):d,i=(u-d)/100,n=Math.round((n-d)/i),_typeof(e.color)){case"string":s=e.color;break;case"function":s=e.color(l);break;case"object":if(Array.isArray(e.color)){var p=100/e.color.length,m=Math.floor(n/p);m=Math.min(m,e.color.length-1),m=Math.max(m,0),s=e.color[m];break}default:s="#2DC214"}switch(_typeof(e.legend)){case"string":r=e.legend;break;case"function":r=e.legend(l);break;case"boolean":r=l;break;default:r=!1}switch(_typeof(e.legendColor)){case"string":a=e.legendColor;break;case"function":a=e.legendColor(l);break;case"object":if(Array.isArray(e.legendColor)){var p=100/e.legendColor.length,m=Math.floor(n/p);m=Math.min(m,e.legendColor.length-1),m=Math.max(m,0),a=e.legendColor[m]}break;default:a="#000"}return c.style.minWidth="30px",c.style.position="relative",c.setAttribute("aria-label",n),"<div style='position:relative; height:100%;'  data-max='"+u+"' data-min='"+d+"'><div style='position:relative; height:100%; width:calc("+n+"%); background-color:"+s+"; display:inline-block;'></div></div>"+(r?"<div style='position:absolute; top:4px; left:0; text-align:"+h+"; width:100%; color:"+a+";'>"+r+"</div>":"")},color:function(t,e,o){return t.getElement().style.backgroundColor=this.sanitizeHTML(t.getValue()),""},buttonTick:function(t,e,o){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>'},buttonCross:function(t,e,o){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>'},rownum:function(t,e,o){return this.table.rowManager.activeRows.indexOf(t.getRow()._getSelf())+1},handle:function(t,e,o){return t.getElement().classList.add("tabulator-row-handle"),"<div class='tabulator-row-handle-box'><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div></div>"},responsiveCollapse:function(t,e,o){function i(e){var o=t.getRow().getElement().getElementsByClassName("tabulator-responsive-collapse")[0];s=e,s?(r.classList.add("open"),o&&(o.style.display="")):(r.classList.remove("open"),o&&(o.style.display="none"))}var n=this,s=!1,r=document.createElement("div");return r.classList.add("tabulator-responsive-collapse-toggle"),r.innerHTML="<span class='tabulator-responsive-collapse-toggle-open'>+</span><span class='tabulator-responsive-collapse-toggle-close'>-</span>",t.getElement().classList.add("tabulator-row-handle"),n.table.options.responsiveLayoutCollapseStartOpen&&(s=!0),r.addEventListener("click",function(t){t.stopImmediatePropagation(),i(!s)}),i(s),r},rowSelection:function(t){var e=this,o=document.createElement("input");if(o.type="checkbox",this.table.modExists("selectRow",!0))if(o.addEventListener("click",function(t){t.stopPropagation()}),"function"==typeof t.getRow){var i=t.getRow();o.addEventListener("change",function(t){i.toggleSelect()}),o.checked=i.isSelected(),this.table.modules.selectRow.registerRowSelectCheckbox(i,o)}else o.addEventListener("change",function(t){e.table.modules.selectRow.selectedRows.length?e.table.deselectRow():e.table.selectRow()}),this.table.modules.selectRow.registerHeaderSelectCheckbox(o);return o}},u.prototype.registerModule("format",C);var x=function(t){this.table=t,this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightPadding=0,this.initializationMode="left",this.active=!1,this.scrollEndTimer=!1};x.prototype.reset=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},x.prototype.initializeColumn=function(t){var e={margin:0,edge:!1};t.definition.frozen?t.parent.isGroup?console.warn("Frozen Column Error - Grouped columns cannot be frozen"):t.isGroup?console.warn("Frozen Column Error - Column Groups cannot be frozen"):(e.position=this.initializationMode,"left"==this.initializationMode?this.leftColumns.push(t):this.rightColumns.unshift(t),this.active=!0,t.modules.frozen=e):this.initializationMode="right"},x.prototype.scrollHorizontal=function(){var t,e=this;this.active&&(clearTimeout(this.scrollEndTimer),this.scrollEndTimer=setTimeout(function(){e.layout()},100),t=this.table.rowManager.getVisibleRows(),this.calcMargins(),this.layoutColumnPosition(),this.layoutCalcRows(),t.forEach(function(t){"row"===t.type&&e.layoutRow(t)}),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},x.prototype.calcMargins=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},x.prototype.layoutCalcRows=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))},x.prototype.layoutColumnPosition=function(t){var e=this;this.leftColumns.forEach(function(o,i){o.modules.frozen.margin=e._calcSpace(e.leftColumns,i)+e.table.columnManager.scrollLeft+"px",i==e.leftColumns.length-1?o.modules.frozen.edge=!0:o.modules.frozen.edge=!1,e.layoutElement(o.getElement(),o),t&&o.cells.forEach(function(t){e.layoutElement(t.getElement(),o)})}),this.rightColumns.forEach(function(o,i){o.modules.frozen.margin=e.rightPadding-e._calcSpace(e.rightColumns,i+1)+"px",i==e.rightColumns.length-1?o.modules.frozen.edge=!0:o.modules.frozen.edge=!1,e.layoutElement(o.getElement(),o),t&&o.cells.forEach(function(t){e.layoutElement(t.getElement(),o)})})},x.prototype.layout=function(){var t=this;t.active&&(this.calcMargins(),t.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&t.layoutRow(e)}),this.layoutCalcRows(),this.layoutColumnPosition(!0),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},x.prototype.layoutRow=function(t){var e=this;t.getElement().style.paddingLeft=this.leftMargin,this.leftColumns.forEach(function(o){var i=t.getCell(o);i&&e.layoutElement(i.getElement(),o)}),this.rightColumns.forEach(function(o){var i=t.getCell(o);i&&e.layoutElement(i.getElement(),o)})},x.prototype.layoutElement=function(t,e){e.modules.frozen&&(t.style.position="absolute",t.style.left=e.modules.frozen.margin,t.classList.add("tabulator-frozen"),e.modules.frozen.edge&&t.classList.add("tabulator-frozen-"+e.modules.frozen.position))},x.prototype._calcSpace=function(t,e){for(var o=0,i=0;i<e;i++)t[i].visible&&(o+=t[i].getWidth());return o},u.prototype.registerModule("frozenColumns",x);var R=function(t){this.table=t,this.topElement=document.createElement("div"),this.rows=[],this.displayIndex=0};R.prototype.initialize=function(){this.rows=[],this.topElement.classList.add("tabulator-frozen-rows-holder"),this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling)},R.prototype.setDisplayIndex=function(t){this.displayIndex=t},R.prototype.getDisplayIndex=function(){return this.displayIndex},R.prototype.isFrozen=function(){return!!this.rows.length},R.prototype.getRows=function(t){var e=t.slice(0);return this.rows.forEach(function(t){var o=e.indexOf(t);o>-1&&e.splice(o,1)}),e},R.prototype.freezeRow=function(t){t.modules.frozen?console.warn("Freeze Error - Row is already frozen"):(t.modules.frozen=!0,this.topElement.appendChild(t.getElement()),t.initialize(),t.normalizeHeight(),this.table.rowManager.adjustTableSize(),this.rows.push(t),this.table.rowManager.refreshActiveData("display"),this.styleRows())},R.prototype.unfreezeRow=function(t){var e=this.rows.indexOf(t);if(t.modules.frozen){t.modules.frozen=!1;var o=t.getElement();o.parentNode.removeChild(o),this.table.rowManager.adjustTableSize(),this.rows.splice(e,1),this.table.rowManager.refreshActiveData("display"),this.rows.length&&this.styleRows()}else console.warn("Freeze Error - Row is already unfrozen")},R.prototype.styleRows=function(t){var e=this;this.rows.forEach(function(t,o){e.table.rowManager.styleRow(t,o)})},u.prototype.registerModule("frozenRows",R);var M=function(t){this._group=t,this.type="GroupComponent"};M.prototype.getKey=function(){return this._group.key},M.prototype.getField=function(){return this._group.field},M.prototype.getElement=function(){return this._group.element},M.prototype.getRows=function(){return this._group.getRows(!0)},M.prototype.getSubGroups=function(){return this._group.getSubGroups(!0)},M.prototype.getParentGroup=function(){return!!this._group.parent&&this._group.parent.getComponent()},M.prototype.getVisibility=function(){return this._group.visible},M.prototype.show=function(){this._group.show()},M.prototype.hide=function(){this._group.hide()},M.prototype.toggle=function(){this._group.toggleVisibility()},M.prototype._getSelf=function(){return this._group},M.prototype.getTable=function(){return this._group.groupManager.table};var L=function(t,e,o,i,n,s,r){this.groupManager=t,this.parent=e,this.key=i,this.level=o,this.field=n,this.hasSubGroups=o<t.groupIDLookups.length-1,this.addRow=this.hasSubGroups?this._addRowToGroup:this._addRow,this.type="group",this.old=r,this.rows=[],this.groups=[],this.groupList=[],this.generator=s,this.elementContents=!1,this.height=0,this.outerHeight=0,this.initialized=!1,this.calcs={},this.initialized=!1,this.modules={},this.arrowElement=!1,this.visible=r?r.visible:void 0!==t.startOpen[o]?t.startOpen[o]:t.startOpen[0],this.createElements(),this.addBindings(),this.createValueGroups()};L.prototype.wipe=function(){this.groupList.length?this.groupList.forEach(function(t){t.wipe()}):(this.element=!1,this.arrowElement=!1,this.elementContents=!1)},L.prototype.createElements=function(){this.element=document.createElement("div"),this.element.classList.add("tabulator-row"),this.element.classList.add("tabulator-group"),this.element.classList.add("tabulator-group-level-"+this.level),this.element.setAttribute("role","rowgroup"),this.arrowElement=document.createElement("div"),this.arrowElement.classList.add("tabulator-arrow"),!1!==this.groupManager.table.options.movableRows&&this.groupManager.table.modExists("moveRow")&&this.groupManager.table.modules.moveRow.initializeGroupHeader(this)},L.prototype.createValueGroups=function(){var t=this,e=this.level+1;this.groupManager.allowedValues&&this.groupManager.allowedValues[e]&&this.groupManager.allowedValues[e].forEach(function(o){t._createGroup(o,e)})},L.prototype.addBindings=function(){var t,e,o,i,n=this;n.groupManager.table.options.groupClick&&n.element.addEventListener("click",function(t){n.groupManager.table.options.groupClick(t,n.getComponent())}),n.groupManager.table.options.groupDblClick&&n.element.addEventListener("dblclick",function(t){n.groupManager.table.options.groupDblClick(t,n.getComponent())}),n.groupManager.table.options.groupContext&&n.element.addEventListener("contextmenu",function(t){n.groupManager.table.options.groupContext(t,n.getComponent())}),n.groupManager.table.options.groupTap&&(o=!1,n.element.addEventListener("touchstart",function(t){o=!0},{passive:!0}),n.element.addEventListener("touchend",function(t){o&&n.groupManager.table.options.groupTap(t,n.getComponent()),o=!1})),n.groupManager.table.options.groupDblTap&&(t=null,n.element.addEventListener("touchend",function(e){t?(clearTimeout(t),t=null,n.groupManager.table.options.groupDblTap(e,n.getComponent())):t=setTimeout(function(){clearTimeout(t),t=null},300)})),n.groupManager.table.options.groupTapHold&&(e=null,n.element.addEventListener("touchstart",function(t){clearTimeout(e),e=setTimeout(function(){clearTimeout(e),e=null,o=!1,n.groupManager.table.options.groupTapHold(t,n.getComponent())},1e3)},{passive:!0}),n.element.addEventListener("touchend",function(t){clearTimeout(e),e=null})),n.groupManager.table.options.groupToggleElement&&(i="arrow"==n.groupManager.table.options.groupToggleElement?n.arrowElement:n.element,i.addEventListener("click",function(t){t.stopPropagation(),t.stopImmediatePropagation(),n.toggleVisibility()}))},L.prototype._createGroup=function(t,e){var o=e+"_"+t,i=new L(this.groupManager,this,e,t,this.groupManager.groupIDLookups[e].field,this.groupManager.headerGenerator[e]||this.groupManager.headerGenerator[0],!!this.old&&this.old.groups[o]);this.groups[o]=i,this.groupList.push(i)},L.prototype._addRowToGroup=function(t){var e=this.level+1;if(this.hasSubGroups){var o=this.groupManager.groupIDLookups[e].func(t.getData()),i=e+"_"+o;this.groupManager.allowedValues&&this.groupManager.allowedValues[e]?this.groups[i]&&this.groups[i].addRow(t):(this.groups[i]||this._createGroup(o,e),this.groups[i].addRow(t))}},L.prototype._addRow=function(t){this.rows.push(t),t.modules.group=this},L.prototype.insertRow=function(t,e,o){var i=this.conformRowData({});t.updateData(i);var n=this.rows.indexOf(e);n>-1?o?this.rows.splice(n+1,0,t):this.rows.splice(n,0,t):o?this.rows.push(t):this.rows.unshift(t),t.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)},L.prototype.scrollHeader=function(t){this.arrowElement.style.marginLeft=t,this.groupList.forEach(function(e){e.scrollHeader(t)})},L.prototype.getRowIndex=function(t){},L.prototype.conformRowData=function(t){return this.field?t[this.field]=this.key:console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function"),this.parent&&(t=this.parent.conformRowData(t)),t},L.prototype.removeRow=function(t){var e=this.rows.indexOf(t),o=t.getElement();e>-1&&this.rows.splice(e,1),this.groupManager.table.options.groupValues||this.rows.length?(o.parentNode&&o.parentNode.removeChild(o),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))},L.prototype.removeGroup=function(t){var e,o=t.level+"_"+t.key;this.groups[o]&&(delete this.groups[o],e=this.groupList.indexOf(t),e>-1&&this.groupList.splice(e,1),this.groupList.length||(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this)))},L.prototype.getHeadersAndRows=function(t){var e=[];return e.push(this),this._visSet(),this.visible?this.groupList.length?this.groupList.forEach(function(o){e=e.concat(o.getHeadersAndRows(t))}):(!t&&"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),e.push(this.calcs.top)),e=e.concat(this.rows),!t&&"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),e.push(this.calcs.bottom))):this.groupList.length||"table"==this.groupManager.table.options.columnCalcs||this.groupManager.table.modExists("columnCalcs")&&(!t&&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),e.push(this.calcs.top))),!t&&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),e.push(this.calcs.bottom)))),e},L.prototype.getData=function(t,e){var o=[];return this._visSet(),(!t||t&&this.visible)&&this.rows.forEach(function(t){o.push(t.getData(e||"data"))}),o},L.prototype.getRowCount=function(){var t=0;return this.groupList.length?this.groupList.forEach(function(e){t+=e.getRowCount()}):t=this.rows.length,t},L.prototype.toggleVisibility=function(){this.visible?this.hide():this.show()},L.prototype.hide=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(t){t.getHeadersAndRows().forEach(function(t){t.detachElement()})}):this.rows.forEach(function(t){var e=t.getElement();e.parentNode.removeChild(e)}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()),this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!1)},L.prototype.show=function(){var t=this;if(t.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=t.getElement();this.groupList.length?this.groupList.forEach(function(t){t.getHeadersAndRows().forEach(function(t){var o=t.getElement();e.parentNode.insertBefore(o,e.nextSibling),t.initialize(),e=o})}):t.rows.forEach(function(t){var o=t.getElement();e.parentNode.insertBefore(o,e.nextSibling),t.initialize(),e=o}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()}this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!0)},L.prototype._visSet=function(){var t=[];"function"==typeof this.visible&&(this.rows.forEach(function(e){t.push(e.getData())}),this.visible=this.visible(this.key,this.getRowCount(),t,this.getComponent()))},L.prototype.getRowGroup=function(t){var e=!1;return this.groupList.length?this.groupList.forEach(function(o){var i=o.getRowGroup(t);i&&(e=i)}):this.rows.find(function(e){return e===t})&&(e=this),e},L.prototype.getSubGroups=function(t){var e=[];return this.groupList.forEach(function(o){e.push(t?o.getComponent():o)}),e},L.prototype.getRows=function(t){var e=[];return this.rows.forEach(function(o){e.push(t?o.getComponent():o)}),e},L.prototype.generateGroupHeaderContents=function(){var t=[];for(this.rows.forEach(function(e){t.push(e.getData())}),this.elementContents=this.generator(this.key,this.getRowCount(),t,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)},L.prototype.getElement=function(){this.addBindingsd=!1,this._visSet(),this.visible?this.element.classList.add("tabulator-group-visible"):this.element.classList.remove("tabulator-group-visible");for(var t=0;t<this.element.childNodes.length;++t)this.element.childNodes[t].parentNode.removeChild(this.element.childNodes[t]);return this.generateGroupHeaderContents(),this.element},L.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},L.prototype.normalizeHeight=function(){this.setHeight(this.element.clientHeight)},L.prototype.initialize=function(t){this.initialized&&!t||(this.normalizeHeight(),this.initialized=!0)},L.prototype.reinitialize=function(){this.initialized=!1,this.height=0,u.prototype.helpers.elVisible(this.element)&&this.initialize(!0)},L.prototype.setHeight=function(t){this.height!=t&&(this.height=t,this.outerHeight=this.element.offsetHeight)},L.prototype.getHeight=function(){return this.outerHeight},L.prototype.getGroup=function(){return this},L.prototype.reinitializeHeight=function(){},L.prototype.calcHeight=function(){},L.prototype.setCellHeight=function(){},L.prototype.clearCellHeight=function(){},L.prototype.getComponent=function(){return new M(this)};var D=function(t){this.table=t,this.groupIDLookups=!1,this.startOpen=[function(){return!1}],this.headerGenerator=[function(){return""}],this.groupList=[],this.allowedValues=!1,this.groups={},this.displayIndex=0};D.prototype.initialize=function(){var t=this,e=t.table.options.groupBy,o=t.table.options.groupStartOpen,i=t.table.options.groupHeader;if(this.allowedValues=t.table.options.groupValues,Array.isArray(e)&&Array.isArray(i)&&e.length>i.length&&console.warn("Error creating group headers, groupHeader array is shorter than groupBy array"),t.headerGenerator=[function(){return""}],this.startOpen=[function(){return!1}],t.table.modules.localize.bind("groups|item",function(e,o){t.headerGenerator[0]=function(t,i,n){
-return(void 0===t?"":t)+"<span>("+i+" "+(1===i?e:o.groups.items)+")</span>"}}),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){var n=this.table.columnManager.getRealColumns();n.forEach(function(e){e.definition.topCalc&&t.table.modules.columnCalcs.initializeTopRow(),e.definition.bottomCalc&&t.table.modules.columnCalcs.initializeBottomRow()})}Array.isArray(e)||(e=[e]),e.forEach(function(e,o){var i,n;"function"==typeof e?i=e:(n=t.table.columnManager.getColumnByField(e),i=n?function(t){return n.getFieldValue(t)}:function(t){return t[e]}),t.groupIDLookups.push({field:"function"!=typeof e&&e,func:i,values:!!t.allowedValues&&t.allowedValues[o]})}),o&&(Array.isArray(o)||(o=[o]),o.forEach(function(t){t="function"==typeof t?t:function(){return!0}}),t.startOpen=o),i&&(t.headerGenerator=Array.isArray(i)?i:[i]),this.initialized=!0},D.prototype.setDisplayIndex=function(t){this.displayIndex=t},D.prototype.getDisplayIndex=function(){return this.displayIndex},D.prototype.getRows=function(t){return this.groupIDLookups.length?(this.table.options.dataGrouping.call(this.table),this.generateGroups(t),this.table.options.dataGrouped&&this.table.options.dataGrouped.call(this.table,this.getGroups(!0)),this.updateGroupRows()):t.slice(0)},D.prototype.getGroups=function(t){var e=[];return this.groupList.forEach(function(o){e.push(t?o.getComponent():o)}),e},D.prototype.wipe=function(){this.groupList.forEach(function(t){t.wipe()})},D.prototype.pullGroupListData=function(t){var e=this,o=[];return t.forEach(function(t){var i={};i.level=0,i.rowCount=0,i.headerContent="";var n=[];t.hasSubGroups?(n=e.pullGroupListData(t.groupList),i.level=t.level,i.rowCount=n.length-t.groupList.length,i.headerContent=t.generator(t.key,i.rowCount,t.rows,t),o.push(i),o=o.concat(n)):(i.level=t.level,i.headerContent=t.generator(t.key,t.rows.length,t.rows,t),i.rowCount=t.getRows().length,o.push(i),t.getRows().forEach(function(t){o.push(t.getData("data"))}))}),o},D.prototype.getGroupedData=function(){return this.pullGroupListData(this.groupList)},D.prototype.getRowGroup=function(t){var e=!1;return this.groupList.forEach(function(o){var i=o.getRowGroup(t);i&&(e=i)}),e},D.prototype.countGroups=function(){return this.groupList.length},D.prototype.generateGroups=function(t){var e=this,o=e.groups;e.groups={},e.groupList=[],this.allowedValues&&this.allowedValues[0]?(this.allowedValues[0].forEach(function(t){e.createGroup(t,0,o)}),t.forEach(function(t){e.assignRowToExistingGroup(t,o)})):t.forEach(function(t){e.assignRowToGroup(t,o)})},D.prototype.createGroup=function(t,e,o){var i,n=e+"_"+t;o=o||[],i=new L(this,!1,e,t,this.groupIDLookups[0].field,this.headerGenerator[0],o[n]),this.groups[n]=i,this.groupList.push(i)},D.prototype.assignRowToGroup=function(t,e){var o=this.groupIDLookups[0].func(t.getData()),i="0_"+o;this.groups[i]||this.createGroup(o,0,e),this.groups[i].addRow(t)},D.prototype.assignRowToExistingGroup=function(t,e){var o=this.groupIDLookups[0].func(t.getData()),i="0_"+o;this.groups[i]&&this.groups[i].addRow(t)},D.prototype.assignRowToGroup=function(t,e){var o=this.groupIDLookups[0].func(t.getData()),i=!this.groups["0_"+o];return i&&this.createGroup(o,0,e),this.groups["0_"+o].addRow(t),!i},D.prototype.updateGroupRows=function(t){var e=this,o=[];if(e.groupList.forEach(function(t){o=o.concat(t.getHeadersAndRows())}),t){var i=e.table.rowManager.setDisplayRows(o,this.getDisplayIndex());!0!==i&&this.setDisplayIndex(i),e.table.rowManager.refreshActiveData("group",!0,!0)}return o},D.prototype.scrollHeaders=function(t){t+="px",this.groupList.forEach(function(e){e.scrollHeader(t)})},D.prototype.removeGroup=function(t){var e,o=t.level+"_"+t.key;this.groups[o]&&(delete this.groups[o],(e=this.groupList.indexOf(t))>-1&&this.groupList.splice(e,1))},u.prototype.registerModule("groupRows",D);var T=function(t){this.table=t,this.history=[],this.index=-1};T.prototype.clear=function(){this.history=[],this.index=-1},T.prototype.action=function(t,e,o){this.history=this.history.slice(0,this.index+1),this.history.push({type:t,component:e,data:o}),this.index++},T.prototype.getHistoryUndoSize=function(){return this.index+1},T.prototype.getHistoryRedoSize=function(){return this.history.length-(this.index+1)},T.prototype.undo=function(){if(this.index>-1){var t=this.history[this.index];return this.undoers[t.type].call(this,t),this.index--,this.table.options.historyUndo.call(this.table,t.type,t.component.getComponent(),t.data),!0}return console.warn("History Undo Error - No more history to undo"),!1},T.prototype.redo=function(){if(this.history.length-1>this.index){this.index++;var t=this.history[this.index];return this.redoers[t.type].call(this,t),this.table.options.historyRedo.call(this.table,t.type,t.component.getComponent(),t.data),!0}return console.warn("History Redo Error - No more history to redo"),!1},T.prototype.undoers={cellEdit:function(t){t.component.setValueProcessData(t.data.oldValue)},rowAdd:function(t){t.component.deleteActual()},rowDelete:function(t){var e=this.table.rowManager.addRowActual(t.data.data,t.data.pos,t.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(t.component,e)},rowMove:function(t){this.table.rowManager.moveRowActual(t.component,this.table.rowManager.rows[t.data.pos],!1),this.table.rowManager.redraw()}},T.prototype.redoers={cellEdit:function(t){t.component.setValueProcessData(t.data.newValue)},rowAdd:function(t){var e=this.table.rowManager.addRowActual(t.data.data,t.data.pos,t.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(t.component,e)},rowDelete:function(t){t.component.deleteActual()},rowMove:function(t){this.table.rowManager.moveRowActual(t.component,this.table.rowManager.rows[t.data.pos],!1),this.table.rowManager.redraw()}},T.prototype._rebindRow=function(t,e){this.history.forEach(function(o){if(o.component instanceof r)o.component===t&&(o.component=e);else if(o.component instanceof l&&o.component.row===t){var i=o.component.column.getField();i&&(o.component=e.getCell(i))}})},u.prototype.registerModule("history",T);var k=function(t){this.table=t,this.fieldIndex=[],this.hasIndex=!1};k.prototype.parseTable=function(){var t=this,e=t.table.element,o=t.table.options,i=(o.columns,e.getElementsByTagName("th")),n=e.getElementsByTagName("tbody")[0],s=[];t.hasIndex=!1,t.table.options.htmlImporting.call(this.table),n=n?n.getElementsByTagName("tr"):[],t._extractOptions(e,o),i.length?t._extractHeaders(i,n):t._generateBlankHeaders(i,n);for(var r=0;r<n.length;r++){var a=n[r],l=a.getElementsByTagName("td"),c={};t.hasIndex||(c[o.index]=r);for(var u=0;u<l.length;u++){var d=l[u];void 0!==this.fieldIndex[u]&&(c[this.fieldIndex[u]]=d.innerHTML)}s.push(c)}var h=document.createElement("div"),p=e.attributes;for(var u in p)"object"==_typeof(p[u])&&h.setAttribute(p[u].name,p[u].value);e.parentNode.replaceChild(h,e),o.data=s,t.table.options.htmlImported.call(this.table),this.table.element=h},k.prototype._extractOptions=function(t,e,o){var i=t.attributes,n=o?Object.assign([],o):Object.keys(e),s={};n.forEach(function(t){s[t.toLowerCase()]=t});for(var r in i){var a,l=i[r];l&&"object"==(void 0===l?"undefined":_typeof(l))&&l.name&&0===l.name.indexOf("tabulator-")&&(a=l.name.replace("tabulator-",""),void 0!==s[a]&&(e[s[a]]=this._attribValue(l.value)))}},k.prototype._attribValue=function(t){return"true"===t||"false"!==t&&t},k.prototype._findCol=function(t){return this.table.options.columns.find(function(e){return e.title===t})||!1},k.prototype._extractHeaders=function(t,e){for(var o=0;o<t.length;o++){var n,s,r=t[o],a=!1,l=this._findCol(r.textContent);l?a=!0:l={title:r.textContent.trim()},l.field||(l.field=r.textContent.trim().toLowerCase().replace(" ","_")),n=r.getAttribute("width"),n&&!l.width&&(l.width=n),s=r.attributes,this._extractOptions(r,l,i.prototype.defaultOptionList);for(var c in s){var u,d=s[c];d&&"object"==(void 0===d?"undefined":_typeof(d))&&d.name&&0===d.name.indexOf("tabulator-")&&(u=d.name.replace("tabulator-",""),l[u]=this._attribValue(d.value))}this.fieldIndex[o]=l.field,l.field==this.table.options.index&&(this.hasIndex=!0),a||this.table.options.columns.push(l)}},k.prototype._generateBlankHeaders=function(t,e){for(var o=0;o<t.length;o++){var i=t[o],n={title:"",field:"col"+o};this.fieldIndex[o]=n.field;var s=i.getAttribute("width");s&&(n.width=s),this.table.options.columns.push(n)}},u.prototype.registerModule("htmlTableImport",k);var S=function(t){this.table=t,this.config={},this.cloneTableStyle=!0,this.colVisProp=""};S.prototype.genereateTable=function(t,e,o,i){this.cloneTableStyle=e,this.config=t||{},this.colVisProp=i;var n=this.generateHeaderElements(),s=this.generateBodyElements(o),r=document.createElement("table");return r.classList.add("tabulator-print-table"),r.appendChild(n),r.appendChild(s),this.mapElementStyles(this.table.element,r,["border-top","border-left","border-right","border-bottom"]),r},S.prototype.generateColumnGroupHeaders=function(){var t=this,e=[];return(!1!==this.config.columnGroups?this.table.columnManager.columns:this.table.columnManager.columnsByIndex).forEach(function(o){var i=t.processColumnGroup(o);i&&e.push(i)}),e},S.prototype.processColumnGroup=function(t){var e=this,o=t.columns,i=0,n={title:t.definition.title,column:t,depth:1};if(o.length){if(n.subGroups=[],n.width=0,o.forEach(function(t){var o=e.processColumnGroup(t);o&&(n.width+=o.width,n.subGroups.push(o),o.depth>i&&(i=o.depth))}),n.depth+=i,!n.width)return!1}else{if(!this.columnVisCheck(t))return!1;n.width=1}return n},S.prototype.groupHeadersToRows=function(t){function e(t,n){var s=i-n;void 0===o[n]&&(o[n]=[]),t.height=t.subGroups?1:s-t.depth+1,o[n].push(t),t.subGroups&&t.subGroups.forEach(function(t){e(t,n+1)})}var o=[],i=0;return t.forEach(function(t){t.depth>i&&(i=t.depth)}),t.forEach(function(t){e(t,0)}),o},S.prototype.generateHeaderElements=function(){var t=this,e=document.createElement("thead");return this.groupHeadersToRows(this.generateColumnGroupHeaders()).forEach(function(o){var i=document.createElement("tr");t.mapElementStyles(t.table.columnManager.getHeadersElement(),e,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),o.forEach(function(e){var o=document.createElement("th");o.colSpan=e.width,o.rowSpan=e.height,o.innerHTML=e.column.definition.title,t.cloneTableStyle&&(o.style.boxSizing="border-box"),t.mapElementStyles(e.column.getElement(),o,["text-align","border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),t.mapElementStyles(e.column.contentElement,o,["padding-top","padding-left","padding-right","padding-bottom"]),e.column.visible?t.mapElementStyles(e.column.getElement(),o,["width"]):e.column.definition.width&&(o.style.width=e.column.definition.width+"px"),e.column.parent&&t.mapElementStyles(e.column.parent.groupElement,o,["border-top"]),i.appendChild(o)}),e.appendChild(i)}),e},S.prototype.generateBodyElements=function(t){var e,o,i,n,s,r,a,l,c=this;this.cloneTableStyle&&window.getComputedStyle&&(e=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),o=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),i=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),n=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),r=this.table.element.getElementsByClassName("tabulator-group")[0],n&&(a=n.getElementsByClassName("tabulator-cell"),s=a[0],a[a.length-1]));var u=document.createElement("tbody"),d=t?this.table.rowManager.getVisibleRows(!0):this.table.rowManager.getDisplayRows(),h=[];return!1!==this.config.columnCalcs&&this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&d.unshift(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&d.push(this.table.modules.columnCalcs.botRow)),this.table.columnManager.columnsByIndex.forEach(function(t){c.columnVisCheck(t)&&h.push(t)}),d=d.filter(function(t){switch(t.type){case"group":return!1!==c.config.rowGroups;case"calc":return!1!==c.config.columnCalcs}return!0}),d.length>1e3&&console.warn("It may take a long time to render an HTML table with more than 1000 rows"),d.forEach(function(t,n){var a=t.getData(),d=document.createElement("tr");switch(d.classList.add("tabulator-print-table-row"),t.type){case"group":var p=document.createElement("td");p.colSpan=h.length,p.innerHTML=t.key,d.classList.add("tabulator-print-table-group"),c.mapElementStyles(r,d,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),c.mapElementStyles(r,p,["padding-top","padding-left","padding-right","padding-bottom"]),d.appendChild(p);break;case"calc":d.classList.add("tabulator-print-table-calcs");case"row":h.forEach(function(e){var o=document.createElement("td"),i=e.getFieldValue(a),n={getValue:function(){return i},getField:function(){return e.defi},getElement:function(){return o},getColumn:function(){return e.getComponent()},getData:function(){return a},getRow:function(){return t.getComponent()},getComponent:function(){return n},column:e};if(c.table.modExists("format"))i=c.table.modules.format.formatValue(n);else switch(void 0===i?"undefined":_typeof(i)){case"object":i=JSON.stringify(i);break;case"undefined":case"null":i="";break;default:i=i}i instanceof Node?o.appendChild(i):o.innerHTML=i,s&&c.mapElementStyles(s,o,["padding-top","padding-left","padding-right","padding-bottom","border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","text-align"]),d.appendChild(o)}),l="calc"==t.type?i:n%2&&o?o:e,c.mapElementStyles(l,d,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"])}u.appendChild(d)}),u},S.prototype.columnVisCheck=function(t){return!1!==t.definition[this.colVisProp]&&(t.visible||!t.visible&&t.definition[this.colVisProp])},S.prototype.getHtml=function(t,e,o){var i=document.createElement("div");return i.appendChild(this.genereateTable(o||this.table.options.htmlOutputConfig,e,t,"htmlOutput")),i.innerHTML},S.prototype.mapElementStyles=function(t,e,o){if(this.cloneTableStyle&&t&&e){var i={"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 n=window.getComputedStyle(t);o.forEach(function(t){e.style[i[t]]=n.getPropertyValue(t)})}}},u.prototype.registerModule("htmlTableExport",S);var F=function(t){this.table=t,this.watchKeys=null,this.pressedKeys=null,this.keyupBinding=!1,this.keydownBinding=!1};F.prototype.initialize=function(){var t=this.table.options.keybindings,e={};if(this.watchKeys={},this.pressedKeys=[],!1!==t){for(var o in this.bindings)e[o]=this.bindings[o];if(Object.keys(t).length)for(var i in t)e[i]=t[i];this.mapBindings(e),this.bindEvents()}},F.prototype.mapBindings=function(t){var e=this,o=this;for(var i in t)!function(i){e.actions[i]?t[i]&&("object"!==_typeof(t[i])&&(t[i]=[t[i]]),t[i].forEach(function(t){o.mapBinding(i,t)})):console.warn("Key Binding Error - no such action:",i)}(i)},F.prototype.mapBinding=function(t,e){var o=this,i={action:this.actions[t],keys:[],ctrl:!1,shift:!1};e.toString().toLowerCase().split(" ").join("").split("+").forEach(function(t){switch(t){case"ctrl":i.ctrl=!0;break;case"shift":i.shift=!0;break;default:t=parseInt(t),i.keys.push(t),o.watchKeys[t]||(o.watchKeys[t]=[]),o.watchKeys[t].push(i)}})},F.prototype.bindEvents=function(){var t=this;this.keyupBinding=function(e){var o=e.keyCode,i=t.watchKeys[o];i&&(t.pressedKeys.push(o),i.forEach(function(o){t.checkBinding(e,o)}))},this.keydownBinding=function(e){var o=e.keyCode;if(t.watchKeys[o]){var i=t.pressedKeys.indexOf(o);i>-1&&t.pressedKeys.splice(i,1)}},this.table.element.addEventListener("keydown",this.keyupBinding),this.table.element.addEventListener("keyup",this.keydownBinding)},F.prototype.clearBindings=function(){this.keyupBinding&&this.table.element.removeEventListener("keydown",this.keyupBinding),this.keydownBinding&&this.table.element.removeEventListener("keyup",this.keydownBinding)},F.prototype.checkBinding=function(t,e){var o=this,i=!0;return t.ctrlKey==e.ctrl&&t.shiftKey==e.shift&&(e.keys.forEach(function(t){-1==o.pressedKeys.indexOf(t)&&(i=!1)}),i&&e.action.call(o,t),!0)},F.prototype.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"},F.prototype.actions={keyBlock:function(t){t.stopPropagation(),t.preventDefault()},scrollPageUp:function(t){var e=this.table.rowManager,o=e.scrollTop-e.height;e.element.scrollHeight;t.preventDefault(),e.displayRowsCount&&(o>=0?e.element.scrollTop=o:e.scrollToRow(e.getDisplayRows()[0])),this.table.element.focus()},scrollPageDown:function(t){var e=this.table.rowManager,o=e.scrollTop+e.height,i=e.element.scrollHeight;t.preventDefault(),e.displayRowsCount&&(o<=i?e.element.scrollTop=o:e.scrollToRow(e.getDisplayRows()[e.displayRowsCount-1])),this.table.element.focus()},scrollToStart:function(t){var e=this.table.rowManager;t.preventDefault(),e.displayRowsCount&&e.scrollToRow(e.getDisplayRows()[0]),this.table.element.focus()},scrollToEnd:function(t){var e=this.table.rowManager;t.preventDefault(),e.displayRowsCount&&e.scrollToRow(e.getDisplayRows()[e.displayRowsCount-1]),this.table.element.focus()},navPrev:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().prev())},navNext:function(t){var e,o=!1,i=this.table.options.tabEndNewRow;this.table.modExists("edit")&&(o=this.table.modules.edit.currentCell)&&(t.preventDefault(),e=o.nav(),e.next()||i&&(i=!0===i?this.table.addRow({}):"function"==typeof i?this.table.addRow(i(o.row.getComponent())):this.table.addRow(i),i.then(function(){e.next()})))},navLeft:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().left())},navRight:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().right())},navUp:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().up())},navDown:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().down())},undo:function(t){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(t.preventDefault(),this.table.modules.history.undo()))},redo:function(t){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(t.preventDefault(),this.table.modules.history.redo()))},copyToClipboard:function(t){this.table.modules.edit.currentCell||this.table.modExists("clipboard",!0)&&this.table.modules.clipboard.copy(this.table.options.selectable&&"highlight"!=this.table.options.selectable?"selected":"active",null,null,null,!0)}},u.prototype.registerModule("keybindings",F);var z=function(t){this.table=t,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)};z.prototype.createPlaceholderElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-col"),t.classList.add("tabulator-col-placeholder"),t},z.prototype.initializeColumn=function(t){var e,o=this,i={};t.modules.frozen||(e=t.getElement(),i.mousemove=function(i){t.parent===o.moving.parent&&((o.touchMove?i.touches[0].pageX:i.pageX)-u.prototype.helpers.elOffset(e).left+o.table.columnManager.element.scrollLeft>t.getWidth()/2?o.toCol===t&&o.toColAfter||(e.parentNode.insertBefore(o.placeholderElement,e.nextSibling),o.moveColumn(t,!0)):(o.toCol!==t||o.toColAfter)&&(e.parentNode.insertBefore(o.placeholderElement,e),o.moveColumn(t,!1)))}.bind(o),e.addEventListener("mousedown",function(e){o.touchMove=!1,1===e.which&&(o.checkTimeout=setTimeout(function(){o.startMove(e,t)},o.checkPeriod))}),e.addEventListener("mouseup",function(t){1===t.which&&o.checkTimeout&&clearTimeout(o.checkTimeout)}),o.bindTouchEvents(t)),t.modules.moveColumn=i},z.prototype.bindTouchEvents=function(t){var e,o,i,n,s,r,a,l=this,c=t.getElement(),u=!1;c.addEventListener("touchstart",function(c){l.checkTimeout=setTimeout(function(){l.touchMove=!0,e=t,o=t.nextColumn(),n=o?o.getWidth()/2:0,i=t.prevColumn(),s=i?i.getWidth()/2:0,r=0,a=0,u=!1,l.startMove(c,t)},l.checkPeriod)},{passive:!0}),c.addEventListener("touchmove",function(c){var d,h;l.moving&&(l.moveHover(c),u||(u=c.touches[0].pageX),d=c.touches[0].pageX-u,d>0?o&&d-r>n&&(h=o)!==t&&(u=c.touches[0].pageX,h.getElement().parentNode.insertBefore(l.placeholderElement,h.getElement().nextSibling),l.moveColumn(h,!0)):i&&-d-a>s&&(h=i)!==t&&(u=c.touches[0].pageX,h.getElement().parentNode.insertBefore(l.placeholderElement,h.getElement()),l.moveColumn(h,!1)),h&&(e=h,o=h.nextColumn(),r=n,n=o?o.getWidth()/2:0,i=h.prevColumn(),a=s,s=i?i.getWidth()/2:0))},{passive:!0}),c.addEventListener("touchend",function(t){l.checkTimeout&&clearTimeout(l.checkTimeout),l.moving&&l.endMove(t)})},z.prototype.startMove=function(t,e){var o=e.getElement();this.moving=e,this.startX=(this.touchMove?t.touches[0].pageX:t.pageX)-u.prototype.helpers.elOffset(o).left,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=e.getWidth()+"px",this.placeholderElement.style.height=e.getHeight()+"px",o.parentNode.insertBefore(this.placeholderElement,o),o.parentNode.removeChild(o),this.hoverElement=o.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(t)},z.prototype._bindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(t){t.modules.moveColumn.mousemove&&t.getElement().addEventListener("mousemove",t.modules.moveColumn.mousemove)})},z.prototype._unbindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(t){t.modules.moveColumn.mousemove&&t.getElement().removeEventListener("mousemove",t.modules.moveColumn.mousemove)})},z.prototype.moveColumn=function(t,e){var o=this.moving.getCells();this.toCol=t,this.toColAfter=e,e?t.getCells().forEach(function(t,e){var i=t.getElement();i.parentNode.insertBefore(o[e].getElement(),i.nextSibling)}):t.getCells().forEach(function(t,e){var i=t.getElement();i.parentNode.insertBefore(o[e].getElement(),i)})},z.prototype.endMove=function(t){(1===t.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)))},z.prototype.moveHover=function(t){var e,o=this,i=o.table.columnManager.getElement(),n=i.scrollLeft,s=(o.touchMove?t.touches[0].pageX:t.pageX)-u.prototype.helpers.elOffset(i).left+n;o.hoverElement.style.left=s-o.startX+"px",s-n<o.autoScrollMargin&&(o.autoScrollTimeout||(o.autoScrollTimeout=setTimeout(function(){e=Math.max(0,n-5),o.table.rowManager.getElement().scrollLeft=e,o.autoScrollTimeout=!1},1))),n+i.clientWidth-s<o.autoScrollMargin&&(o.autoScrollTimeout||(o.autoScrollTimeout=setTimeout(function(){e=Math.min(i.clientWidth,n+5),o.table.rowManager.getElement().scrollLeft=e,o.autoScrollTimeout=!1},1)))},u.prototype.registerModule("moveColumn",z);var _=function(t){this.table=t,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.connections=[],this.connectedTable=!1,this.connectedRow=!1};_.prototype.createPlaceholderElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-row"),t.classList.add("tabulator-row-placeholder"),t},_.prototype.initialize=function(t){this.connection=this.table.options.movableRowsConnectedTables},_.prototype.setHandle=function(t){this.hasHandle=t},_.prototype.initializeGroupHeader=function(t){var e=this,o={};o.mouseup=function(t){e.tableRowDrop(t,row)}.bind(e),o.mousemove=function(o){if(o.pageY-u.prototype.helpers.elOffset(t.element).top+e.table.rowManager.element.scrollTop>t.getHeight()/2){if(e.toRow!==t||!e.toRowAfter){var i=t.getElement();i.parentNode.insertBefore(e.placeholderElement,i.nextSibling),e.moveRow(t,!0)}}else if(e.toRow!==t||e.toRowAfter){var i=t.getElement();i.previousSibling&&(i.parentNode.insertBefore(e.placeholderElement,i),e.moveRow(t,!1))}}.bind(e),t.modules.moveRow=o},_.prototype.initializeRow=function(t){var e,o=this,i={};i.mouseup=function(e){o.tableRowDrop(e,t)}.bind(o),i.mousemove=function(e){if(e.pageY-u.prototype.helpers.elOffset(t.element).top+o.table.rowManager.element.scrollTop>t.getHeight()/2){if(o.toRow!==t||!o.toRowAfter){var i=t.getElement();i.parentNode.insertBefore(o.placeholderElement,i.nextSibling),o.moveRow(t,!0)}}else if(o.toRow!==t||o.toRowAfter){var i=t.getElement();i.parentNode.insertBefore(o.placeholderElement,i),o.moveRow(t,!1)}}.bind(o),this.hasHandle||(e=t.getElement(),e.addEventListener("mousedown",function(e){1===e.which&&(o.checkTimeout=setTimeout(function(){o.startMove(e,t)},o.checkPeriod))}),e.addEventListener("mouseup",function(t){1===t.which&&o.checkTimeout&&clearTimeout(o.checkTimeout)}),this.bindTouchEvents(t,t.getElement())),t.modules.moveRow=i},_.prototype.initializeCell=function(t){var e=this,o=t.getElement();o.addEventListener("mousedown",function(o){1===o.which&&(e.checkTimeout=setTimeout(function(){e.startMove(o,t.row)},e.checkPeriod))}),o.addEventListener("mouseup",function(t){1===t.which&&e.checkTimeout&&clearTimeout(e.checkTimeout)}),this.bindTouchEvents(t.row,t.getElement())},_.prototype.bindTouchEvents=function(t,e){var o,i,n,s,r,a,l,c=this,u=!1;e.addEventListener("touchstart",function(e){c.checkTimeout=setTimeout(function(){c.touchMove=!0,o=t,i=t.nextRow(),s=i?i.getHeight()/2:0,n=t.prevRow(),r=n?n.getHeight()/2:0,a=0,l=0,u=!1,c.startMove(e,t)},c.checkPeriod)},{passive:!0}),this.moving,this.toRow,this.toRowAfter,e.addEventListener("touchmove",function(e){var d,h;c.moving&&(e.preventDefault(),c.moveHover(e),u||(u=e.touches[0].pageY),d=e.touches[0].pageY-u,d>0?i&&d-a>s&&(h=i)!==t&&(u=e.touches[0].pageY,h.getElement().parentNode.insertBefore(c.placeholderElement,h.getElement().nextSibling),c.moveRow(h,!0)):n&&-d-l>r&&(h=n)!==t&&(u=e.touches[0].pageY,h.getElement().parentNode.insertBefore(c.placeholderElement,h.getElement()),c.moveRow(h,!1)),h&&(o=h,i=h.nextRow(),a=s,s=i?i.getHeight()/2:0,n=h.prevRow(),l=r,r=n?n.getHeight()/2:0))}),e.addEventListener("touchend",function(t){c.checkTimeout&&clearTimeout(c.checkTimeout),c.moving&&(c.endMove(t),c.touchMove=!1)})},_.prototype._bindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(t){"row"!==t.type&&"group"!==t.type||!t.modules.moveRow.mousemove||t.getElement().addEventListener("mousemove",t.modules.moveRow.mousemove)})},_.prototype._unbindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(t){"row"!==t.type&&"group"!==t.type||!t.modules.moveRow.mousemove||t.getElement().removeEventListener("mousemove",t.modules.moveRow.mousemove)})},_.prototype.startMove=function(t,e){var o=e.getElement();this.setStartPosition(t,e),this.moving=e,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=e.getWidth()+"px",this.placeholderElement.style.height=e.getHeight()+"px",this.connection?(this.table.element.classList.add("tabulator-movingrow-sending"),this.connectToTables(e)):(o.parentNode.insertBefore(this.placeholderElement,o),o.parentNode.removeChild(o)),this.hoverElement=o.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(t)},_.prototype.setStartPosition=function(t,e){var o,i,n=this.touchMove?t.touches[0].pageX:t.pageX,s=this.touchMove?t.touches[0].pageY:t.pageY;o=e.getElement(),this.connection?(i=o.getBoundingClientRect(),this.startX=i.left-n+window.pageXOffset,this.startY=i.top-s+window.pageYOffset):this.startY=s-o.getBoundingClientRect().top},_.prototype.endMove=function(t){t&&1!==t.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()))},_.prototype.moveRow=function(t,e){this.toRow=t,this.toRowAfter=e},_.prototype.moveHover=function(t){this.connection?this.moveHoverConnections.call(this,t):this.moveHoverTable.call(this,t)},_.prototype.moveHoverTable=function(t){var e=this.table.rowManager.getElement(),o=e.scrollTop,i=(this.touchMove?t.touches[0].pageY:t.pageY)-e.getBoundingClientRect().top+o;this.hoverElement.style.top=i-this.startY+"px"},_.prototype.moveHoverConnections=function(t){this.hoverElement.style.left=this.startX+(this.touchMove?t.touches[0].pageX:t.pageX)+"px",this.hoverElement.style.top=this.startY+(this.touchMove?t.touches[0].pageY:t.pageY)+"px"},
-_.prototype.connectToTables=function(t){var e=this.table.modules.comms.getConnections(this.connection);this.table.options.movableRowsSendingStart.call(this.table,e),this.table.modules.comms.send(this.connection,"moveRow","connect",{row:t})},_.prototype.disconnectFromTables=function(){var t=this.table.modules.comms.getConnections(this.connection);this.table.options.movableRowsSendingStop.call(this.table,t),this.table.modules.comms.send(this.connection,"moveRow","disconnect")},_.prototype.connect=function(t,e){var o=this;return this.connectedTable?(console.warn("Move Row Error - Table cannot accept connection, already connected to table:",this.connectedTable),!1):(this.connectedTable=t,this.connectedRow=e,this.table.element.classList.add("tabulator-movingrow-receiving"),o.table.rowManager.getDisplayRows().forEach(function(t){"row"===t.type&&t.modules.moveRow&&t.modules.moveRow.mouseup&&t.getElement().addEventListener("mouseup",t.modules.moveRow.mouseup)}),o.tableRowDropEvent=o.tableRowDrop.bind(o),o.table.element.addEventListener("mouseup",o.tableRowDropEvent),this.table.options.movableRowsReceivingStart.call(this.table,e,t),!0)},_.prototype.disconnect=function(t){var e=this;t===this.connectedTable?(this.connectedTable=!1,this.connectedRow=!1,this.table.element.classList.remove("tabulator-movingrow-receiving"),e.table.rowManager.getDisplayRows().forEach(function(t){"row"===t.type&&t.modules.moveRow&&t.modules.moveRow.mouseup&&t.getElement().removeEventListener("mouseup",t.modules.moveRow.mouseup)}),e.table.element.removeEventListener("mouseup",e.tableRowDropEvent),this.table.options.movableRowsReceivingStop.call(this.table,t)):console.warn("Move Row Error - trying to disconnect from non connected table")},_.prototype.dropComplete=function(t,e,o){var i=!1;if(o){switch(_typeof(this.table.options.movableRowsSender)){case"string":i=this.senders[this.table.options.movableRowsSender];break;case"function":i=this.table.options.movableRowsSender}i?i.call(this,this.moving.getComponent(),e?e.getComponent():void 0,t):this.table.options.movableRowsSender&&console.warn("Mover Row Error - no matching sender found:",this.table.options.movableRowsSender),this.table.options.movableRowsSent.call(this.table,this.moving.getComponent(),e?e.getComponent():void 0,t)}else this.table.options.movableRowsSentFailed.call(this.table,this.moving.getComponent(),e?e.getComponent():void 0,t);this.endMove()},_.prototype.tableRowDrop=function(t,e){var o=!1,i=!1;switch(t.stopImmediatePropagation(),_typeof(this.table.options.movableRowsReceiver)){case"string":o=this.receivers[this.table.options.movableRowsReceiver];break;case"function":o=this.table.options.movableRowsReceiver}o?i=o.call(this,this.connectedRow.getComponent(),e?e.getComponent():void 0,this.connectedTable):console.warn("Mover Row Error - no matching receiver found:",this.table.options.movableRowsReceiver),i?this.table.options.movableRowsReceived.call(this.table,this.connectedRow.getComponent(),e?e.getComponent():void 0,this.connectedTable):this.table.options.movableRowsReceivedFailed.call(this.table,this.connectedRow.getComponent(),e?e.getComponent():void 0,this.connectedTable),this.table.modules.comms.send(this.connectedTable,"moveRow","dropcomplete",{row:e,success:i})},_.prototype.receivers={insert:function(t,e,o){return this.table.addRow(t.getData(),void 0,e),!0},add:function(t,e,o){return this.table.addRow(t.getData()),!0},update:function(t,e,o){return!!e&&(e.update(t.getData()),!0)},replace:function(t,e,o){return!!e&&(this.table.addRow(t.getData(),void 0,e),e.delete(),!0)}},_.prototype.senders={delete:function(t,e,o){t.delete()}},_.prototype.commsReceived=function(t,e,o){switch(e){case"connect":return this.connect(t,o.row);case"disconnect":return this.disconnect(t);case"dropcomplete":return this.dropComplete(t,o.row,o.success)}},u.prototype.registerModule("moveRow",_);var H=function(t){this.table=t,this.allowedTypes=["","data","edit","clipboard"],this.enabled=!0};H.prototype.initializeColumn=function(t){var e=this,o=!1,i={};this.allowedTypes.forEach(function(n){var s,r="mutator"+(n.charAt(0).toUpperCase()+n.slice(1));t.definition[r]&&(s=e.lookupMutator(t.definition[r]))&&(o=!0,i[r]={mutator:s,params:t.definition[r+"Params"]||{}})}),o&&(t.modules.mutate=i)},H.prototype.lookupMutator=function(t){var e=!1;switch(void 0===t?"undefined":_typeof(t)){case"string":this.mutators[t]?e=this.mutators[t]:console.warn("Mutator Error - No such mutator found, ignoring: ",t);break;case"function":e=t}return e},H.prototype.transformRow=function(t,e,o){var i,n=this,s="mutator"+(e.charAt(0).toUpperCase()+e.slice(1));return this.enabled&&n.table.columnManager.traverse(function(n){var r,a,l;n.modules.mutate&&(r=n.modules.mutate[s]||n.modules.mutate.mutator||!1)&&(i=n.getFieldValue(t),(!o||o&&void 0!==i)&&(l=n.getComponent(),a="function"==typeof r.params?r.params(i,t,e,l):r.params,n.setFieldValue(t,r.mutator(i,t,e,a,l))))}),t},H.prototype.transformCell=function(t,e){var o=t.column.modules.mutate.mutatorEdit||t.column.modules.mutate.mutator||!1;return o?o.mutator(e,t.row.getData(),"edit",o.params,t.getComponent()):e},H.prototype.enable=function(){this.enabled=!0},H.prototype.disable=function(){this.enabled=!1},H.prototype.mutators={},u.prototype.registerModule("mutator",H);var A=function(t){this.table=t,this.mode="local",this.progressiveLoad=!1,this.size=0,this.page=1,this.count=5,this.max=1,this.displayIndex=0,this.pageSizes=[],this.createElements()};A.prototype.createElements=function(){var t;this.element=document.createElement("span"),this.element.classList.add("tabulator-paginator"),this.pagesElement=document.createElement("span"),this.pagesElement.classList.add("tabulator-pages"),t=document.createElement("button"),t.classList.add("tabulator-page"),t.setAttribute("type","button"),t.setAttribute("role","button"),t.setAttribute("aria-label",""),t.setAttribute("title",""),this.firstBut=t.cloneNode(!0),this.firstBut.setAttribute("data-page","first"),this.prevBut=t.cloneNode(!0),this.prevBut.setAttribute("data-page","prev"),this.nextBut=t.cloneNode(!0),this.nextBut.setAttribute("data-page","next"),this.lastBut=t.cloneNode(!0),this.lastBut.setAttribute("data-page","last"),this.table.options.paginationSizeSelector&&(this.pageSizeSelect=document.createElement("select"),this.pageSizeSelect.classList.add("tabulator-page-size"))},A.prototype.generatePageSizeSelectList=function(){var t=this,e=[];if(this.pageSizeSelect){if(Array.isArray(this.table.options.paginationSizeSelector))e=this.table.options.paginationSizeSelector,this.pageSizes=e,-1==this.pageSizes.indexOf(this.size)&&e.unshift(this.size);else if(-1==this.pageSizes.indexOf(this.size)){e=[];for(var o=1;o<5;o++)e.push(this.size*o);this.pageSizes=e}else e=this.pageSizes;for(;this.pageSizeSelect.firstChild;)this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);e.forEach(function(e){var o=document.createElement("option");o.value=e,o.innerHTML=e,t.pageSizeSelect.appendChild(o)}),this.pageSizeSelect.value=this.size}},A.prototype.initialize=function(t){var e,o=this;for(var i in o.table.options.paginationDataSent)o.paginationDataSentNames[i]=o.table.options.paginationDataSent[i];for(var n in o.table.options.paginationDataReceived)o.paginationDataReceivedNames[n]=o.table.options.paginationDataReceived[n];o.table.modules.localize.bind("pagination|first",function(t){o.firstBut.innerHTML=t}),o.table.modules.localize.bind("pagination|first_title",function(t){o.firstBut.setAttribute("aria-label",t),o.firstBut.setAttribute("title",t)}),o.table.modules.localize.bind("pagination|prev",function(t){o.prevBut.innerHTML=t}),o.table.modules.localize.bind("pagination|prev_title",function(t){o.prevBut.setAttribute("aria-label",t),o.prevBut.setAttribute("title",t)}),o.table.modules.localize.bind("pagination|next",function(t){o.nextBut.innerHTML=t}),o.table.modules.localize.bind("pagination|next_title",function(t){o.nextBut.setAttribute("aria-label",t),o.nextBut.setAttribute("title",t)}),o.table.modules.localize.bind("pagination|last",function(t){o.lastBut.innerHTML=t}),o.table.modules.localize.bind("pagination|last_title",function(t){o.lastBut.setAttribute("aria-label",t),o.lastBut.setAttribute("title",t)}),o.firstBut.addEventListener("click",function(){o.setPage(1)}),o.prevBut.addEventListener("click",function(){o.previousPage()}),o.nextBut.addEventListener("click",function(){o.nextPage().then(function(){}).catch(function(){})}),o.lastBut.addEventListener("click",function(){o.setPage(o.max)}),o.table.options.paginationElement&&(o.element=o.table.options.paginationElement),this.pageSizeSelect&&(e=document.createElement("label"),o.table.modules.localize.bind("pagination|page_size",function(t){o.pageSizeSelect.setAttribute("aria-label",t),o.pageSizeSelect.setAttribute("title",t),e.innerHTML=t}),o.element.appendChild(e),o.element.appendChild(o.pageSizeSelect),o.pageSizeSelect.addEventListener("change",function(t){o.setPageSize(o.pageSizeSelect.value),o.setPage(1).then(function(){}).catch(function(){})})),o.element.appendChild(o.firstBut),o.element.appendChild(o.prevBut),o.element.appendChild(o.pagesElement),o.element.appendChild(o.nextBut),o.element.appendChild(o.lastBut),o.table.options.paginationElement||t||o.table.footerManager.append(o.element,o),o.mode=o.table.options.pagination,o.size=o.table.options.paginationSize||Math.floor(o.table.rowManager.getElement().clientHeight/24),o.count=o.table.options.paginationButtonCount,o.generatePageSizeSelectList()},A.prototype.initializeProgressive=function(t){this.initialize(!0),this.mode="progressive_"+t,this.progressiveLoad=!0},A.prototype.setDisplayIndex=function(t){this.displayIndex=t},A.prototype.getDisplayIndex=function(){return this.displayIndex},A.prototype.setMaxRows=function(t){this.max=t?Math.ceil(t/this.size):1,this.page>this.max&&(this.page=this.max)},A.prototype.reset=function(t){return("local"==this.mode||t)&&(this.page=1),!0},A.prototype.setMaxPage=function(t){t=parseInt(t),this.max=t||1,this.page>this.max&&(this.page=this.max,this.trigger())},A.prototype.setPage=function(t){var e=this;return new Promise(function(o,i){t=parseInt(t),t>0&&t<=e.max?(e.page=t,e.trigger().then(function(){o()}).catch(function(){i()})):(console.warn("Pagination Error - Requested page is out of range of 1 - "+e.max+":",t),i())})},A.prototype.setPageToRow=function(t){var e=this;return new Promise(function(o,i){var n=e.table.rowManager.getDisplayRows(e.displayIndex-1),s=n.indexOf(t);if(s>-1){var r=Math.ceil((s+1)/e.size);e.setPage(r).then(function(){o()}).catch(function(){i()})}else console.warn("Pagination Error - Requested row is not visible"),i()})},A.prototype.setPageSize=function(t){t=parseInt(t),t>0&&(this.size=t),this.pageSizeSelect&&this.generatePageSizeSelectList()},A.prototype._setPageButtons=function(){for(var t=this,e=Math.floor((this.count-1)/2),o=Math.ceil((this.count-1)/2),i=this.max-this.page+e+1<this.count?this.max-this.count+1:Math.max(this.page-e,1),n=this.page<=o?Math.min(this.count,this.max):Math.min(this.page+o,this.max);t.pagesElement.firstChild;)t.pagesElement.removeChild(t.pagesElement.firstChild);1==t.page?(t.firstBut.disabled=!0,t.prevBut.disabled=!0):(t.firstBut.disabled=!1,t.prevBut.disabled=!1),t.page==t.max?(t.lastBut.disabled=!0,t.nextBut.disabled=!0):(t.lastBut.disabled=!1,t.nextBut.disabled=!1);for(var s=i;s<=n;s++)s>0&&s<=t.max&&t.pagesElement.appendChild(t._generatePageButton(s));this.footerRedraw()},A.prototype._generatePageButton=function(t){var e=this,o=document.createElement("button");return o.classList.add("tabulator-page"),t==e.page&&o.classList.add("active"),o.setAttribute("type","button"),o.setAttribute("role","button"),o.setAttribute("aria-label","Show Page "+t),o.setAttribute("title","Show Page "+t),o.setAttribute("data-page",t),o.textContent=t,o.addEventListener("click",function(o){e.setPage(t)}),o},A.prototype.previousPage=function(){var t=this;return new Promise(function(e,o){t.page>1?(t.page--,t.trigger().then(function(){e()}).catch(function(){o()})):(console.warn("Pagination Error - Previous page would be less than page 1:",0),o())})},A.prototype.nextPage=function(){var t=this;return new Promise(function(e,o){t.page<t.max?(t.page++,t.trigger().then(function(){e()}).catch(function(){o()})):(t.progressiveLoad||console.warn("Pagination Error - Next page would be greater than maximum page of "+t.max+":",t.max+1),o())})},A.prototype.getPage=function(){return this.page},A.prototype.getPageMax=function(){return this.max},A.prototype.getPageSize=function(t){return this.size},A.prototype.getMode=function(){return this.mode},A.prototype.getRows=function(t){var e,o,i;if("local"==this.mode){e=[],o=this.size*(this.page-1),i=o+parseInt(this.size),this._setPageButtons();for(var n=o;n<i;n++)t[n]&&e.push(t[n]);return e}return this._setPageButtons(),t.slice(0)},A.prototype.trigger=function(){var t,e=this;return new Promise(function(o,i){switch(e.mode){case"local":t=e.table.rowManager.scrollLeft,e.table.rowManager.refreshActiveData("page"),e.table.rowManager.scrollHorizontal(t),e.table.options.pageLoaded.call(e.table,e.getPage()),o();break;case"remote":case"progressive_load":case"progressive_scroll":e.table.modules.ajax.blockActiveRequest(),e._getRemotePage().then(function(){o()}).catch(function(){i()});break;default:console.warn("Pagination Error - no such pagination mode:",e.mode),i()}})},A.prototype._getRemotePage=function(){var t,e,o=this,i=this;return new Promise(function(n,s){if(i.table.modExists("ajax",!0)||s(),t=u.prototype.helpers.deepClone(i.table.modules.ajax.getParams()||{}),e=i.table.modules.ajax.getParams(),e[o.paginationDataSentNames.page]=i.page,o.size&&(e[o.paginationDataSentNames.size]=o.size),o.table.options.ajaxSorting&&o.table.modExists("sort")){var r=i.table.modules.sort.getSort();r.forEach(function(t){delete t.column}),e[o.paginationDataSentNames.sorters]=r}if(o.table.options.ajaxFiltering&&o.table.modExists("filter")){var a=i.table.modules.filter.getFilters(!0,!0);e[o.paginationDataSentNames.filters]=a}i.table.modules.ajax.setParams(e),i.table.modules.ajax.sendRequest(o.progressiveLoad).then(function(t){i._parseRemoteData(t),n()}).catch(function(t){s()}),i.table.modules.ajax.setParams(t)})},A.prototype._parseRemoteData=function(t){var e,t,o,i=this;if(void 0===t[this.paginationDataReceivedNames.last_page]&&console.warn("Remote Pagination Error - Server response missing '"+this.paginationDataReceivedNames.last_page+"' property"),t[this.paginationDataReceivedNames.data])if(this.max=parseInt(t[this.paginationDataReceivedNames.last_page])||1,this.progressiveLoad)switch(this.mode){case"progressive_load":this.table.rowManager.addRows(t[this.paginationDataReceivedNames.data]),this.page<this.max&&setTimeout(function(){i.nextPage().then(function(){}).catch(function(){})},i.table.options.ajaxProgressiveLoadDelay);break;case"progressive_scroll":t=this.table.rowManager.getData().concat(t[this.paginationDataReceivedNames.data]),this.table.rowManager.setData(t,!0),o=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.element.clientHeight,i.table.rowManager.element.scrollHeight<=i.table.rowManager.element.clientHeight+o&&i.nextPage().then(function(){}).catch(function(){})}else e=this.table.rowManager.scrollLeft,this.table.rowManager.setData(t[this.paginationDataReceivedNames.data]),this.table.rowManager.scrollHorizontal(e),this.table.columnManager.scrollHorizontal(e),this.table.options.pageLoaded.call(this.table,this.getPage());else console.warn("Remote Pagination Error - Server response missing '"+this.paginationDataReceivedNames.data+"' property")},A.prototype.footerRedraw=function(){var t=this.table.footerManager.element;Math.ceil(t.clientWidth)-t.scrollWidth<0?this.pagesElement.style.display="none":(this.pagesElement.style.display="",Math.ceil(t.clientWidth)-t.scrollWidth<0&&(this.pagesElement.style.display="none"))},A.prototype.paginationDataSentNames={page:"page",size:"size",sorters:"sorters",filters:"filters"},A.prototype.paginationDataReceivedNames={current_page:"current_page",last_page:"last_page",data:"data"},u.prototype.registerModule("page",A);var P=function(t){this.table=t,this.mode="",this.id="",this.persistProps=["field","width","visible"]};P.prototype.localStorageTest=function(){var t="_tabulator_test";try{return window.localStorage.setItem(t,t),window.localStorage.removeItem(t),!0}catch(t){return!1}},P.prototype.initialize=function(t,e){this.mode=!0!==t?t:this.localStorageTest()?"local":"cookie",this.id="tabulator-"+(e||this.table.element.getAttribute("id")||"")},P.prototype.load=function(t,e){var o=this.retreiveData(t);return e&&(o=o?this.mergeDefinition(e,o):e),o},P.prototype.retreiveData=function(t){var e="",o=this.id+("columns"===t?"":"-"+t);switch(this.mode){case"local":e=localStorage.getItem(o);break;case"cookie":var i=document.cookie,n=i.indexOf(o+"="),s=void 0;n>-1&&(i=i.substr(n),s=i.indexOf(";"),s>-1&&(i=i.substr(0,s)),e=i.replace(o+"=",""));break;default:console.warn("Persistence Load Error - invalid mode selected",this.mode)}return!!e&&JSON.parse(e)},P.prototype.mergeDefinition=function(t,e){var o=this,i=[];return e=e||[],e.forEach(function(e,n){var s=o._findColumn(t,e);s&&(s.width=e.width,s.visible=e.visible,s.columns&&(s.columns=o.mergeDefinition(s.columns,e.columns)),i.push(s))}),t.forEach(function(t,n){o._findColumn(e,t)||(i.length>n?i.splice(n,0,t):i.push(t))}),i},P.prototype._findColumn=function(t,e){var o=e.columns?"group":e.field?"field":"object";return t.find(function(t){switch(o){case"group":return t.title===e.title&&t.columns.length===e.columns.length;case"field":return t.field===e.field;case"object":return t===e}})},P.prototype.save=function(t){var e={};switch(t){case"columns":e=this.parseColumns(this.table.columnManager.getColumns());break;case"filter":e=this.table.modules.filter.getFilters();break;case"sort":e=this.validateSorters(this.table.modules.sort.getSort())}var o=this.id+("columns"===t?"":"-"+t);this.saveData(o,e)},P.prototype.validateSorters=function(t){return t.forEach(function(t){t.column=t.field,delete t.field}),t},P.prototype.saveData=function(t,e){switch(e=JSON.stringify(e),this.mode){case"local":localStorage.setItem(t,e);break;case"cookie":var o=new Date;o.setDate(o.getDate()+1e4),document.cookie=t+"="+e+"; expires="+o.toUTCString();break;default:console.warn("Persistence Save Error - invalid mode selected",this.mode)}},P.prototype.parseColumns=function(t){var e=this,o=[];return t.forEach(function(t){var i={};t.isGroup?(i.title=t.getDefinition().title,i.columns=e.parseColumns(t.getColumns())):(i.title=t.getDefinition().title,i.field=t.getField(),i.width=t.getWidth(),i.visible=t.visible),o.push(i)}),o},u.prototype.registerModule("persistence",P);var B=function(t){this.table=t,this.element=!1,this.manualBlock=!1};B.prototype.initialize=function(){window.addEventListener("beforeprint",this.replaceTable.bind(this)),window.addEventListener("afterprint",this.cleanup.bind(this))},B.prototype.replaceTable=function(){this.manualBlock||(this.element=document.createElement("div"),this.element.classList.add("tabulator-print-table"),this.element.appendChild(this.table.modules.htmlTableExport.genereateTable(this.table.options.printConfig,this.table.options.printCopyStyle,this.table.options.printVisibleRows,"print")),this.table.element.style.display="none",this.table.element.parentNode.insertBefore(this.element,this.table.element))},B.prototype.cleanup=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="")},B.prototype.printFullscreen=function(t,e,o){var i,n,s=window.scrollX,r=window.scrollY,a=document.createElement("div"),l=document.createElement("div"),c=this.table.modules.htmlTableExport.genereateTable(void 0!==o?o:this.table.options.printConfig,void 0!==e?e:this.table.options.printCopyStyle,t,"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"),i="function"==typeof this.table.options.printHeader?this.table.options.printHeader.call(this.table):this.table.options.printHeader,"string"==typeof i?a.innerHTML=i:a.appendChild(i),this.element.appendChild(a)),this.element.appendChild(c),this.table.options.printFooter&&(l.classList.add("tabulator-print-footer"),n="function"==typeof this.table.options.printFooter?this.table.options.printFooter.call(this.table):this.table.options.printFooter,"string"==typeof n?l.innerHTML=n:l.appendChild(n),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,c),window.print(),this.cleanup(),window.scrollTo(s,r),this.manualBlock=!1},u.prototype.registerModule("print",B);var N=function(t){this.table=t,this.data=!1,this.blocked=!1,this.origFuncs={},this.currentVersion=0};N.prototype.watchData=function(t){var e,o=this;this.currentVersion++,e=this.currentVersion,o.unwatchData(),o.data=t,o.origFuncs.push=t.push,Object.defineProperty(o.data,"push",{enumerable:!1,configurable:!0,value:function(){var i=Array.from(arguments);return o.blocked||e!==o.currentVersion||i.forEach(function(t){o.table.rowManager.addRowActual(t,!1)}),o.origFuncs.push.apply(t,arguments)}}),o.origFuncs.unshift=t.unshift,Object.defineProperty(o.data,"unshift",{enumerable:!1,configurable:!0,value:function(){var i=Array.from(arguments);return o.blocked||e!==o.currentVersion||i.forEach(function(t){o.table.rowManager.addRowActual(t,!0)}),o.origFuncs.unshift.apply(t,arguments)}}),o.origFuncs.shift=t.shift,Object.defineProperty(o.data,"shift",{enumerable:!1,configurable:!0,value:function(){var i;return o.blocked||e!==o.currentVersion||o.data.length&&(i=o.table.rowManager.getRowFromDataObject(o.data[0]))&&i.deleteActual(),o.origFuncs.shift.call(t)}}),o.origFuncs.pop=t.pop,Object.defineProperty(o.data,"pop",{enumerable:!1,configurable:!0,value:function(){var i;return o.blocked||e!==o.currentVersion||o.data.length&&(i=o.table.rowManager.getRowFromDataObject(o.data[o.data.length-1]))&&i.deleteActual(),o.origFuncs.pop.call(t)}}),o.origFuncs.splice=t.splice,Object.defineProperty(o.data,"splice",{enumerable:!1,configurable:!0,value:function(){var i,n=Array.from(arguments),s=n[0]<0?t.length+n[0]:n[0],r=n[1],a=!!n[2]&&n.slice(2);if(!o.blocked&&e===o.currentVersion){if(a&&(i=!!t[s]&&o.table.rowManager.getRowFromDataObject(t[s]),i?a.forEach(function(t){o.table.rowManager.addRowActual(t,!0,i,!0)}):(a=a.slice().reverse(),a.forEach(function(t){o.table.rowManager.addRowActual(t,!0,!1,!0)}))),0!==r){var l=t.slice(s,void 0===n[1]?n[1]:s+r);l.forEach(function(t,e){var i=o.table.rowManager.getRowFromDataObject(t);i&&i.deleteActual(e!==l.length-1)})}(a||0!==r)&&o.table.rowManager.reRenderInPosition()}return o.origFuncs.splice.apply(t,arguments)}})},N.prototype.unwatchData=function(){if(!1!==this.data)for(var t in this.origFuncs)Object.defineProperty(this.data,t,{enumerable:!0,configurable:!0,writable:!0,value:this.origFuncs.key})},N.prototype.watchRow=function(t){var e=t.getData();this.blocked=!0;for(var o in e)this.watchKey(t,e,o);this.blocked=!1},N.prototype.watchKey=function(t,e,o){var i=this,n=Object.getOwnPropertyDescriptor(e,o),s=e[o],r=this.currentVersion;Object.defineProperty(e,o,{set:function(e){if(s=e,!i.blocked&&r===i.currentVersion){var a={};a[o]=e,t.updateData(a)}n.set&&n.set(e)},get:function(){return n.get&&n.get(),s}})},N.prototype.unwatchRow=function(t){var e=t.getData();for(var o in e)Object.defineProperty(e,o,{value:e[o]})},N.prototype.block=function(){this.blocked=!0},N.prototype.unblock=function(){this.blocked=!1},u.prototype.registerModule("reactiveData",N);var I=function(t){this.table=t,this.startColumn=!1,this.startX=!1,this.startWidth=!1,this.handle=null,this.prevHandle=null};I.prototype.initializeColumn=function(t,e,o){var i=this,n=!1,s=this.table.options.resizableColumns;if("header"===t&&(n="textarea"==e.definition.formatter||e.definition.variableHeight,e.modules.resize={variableHeight:n}),!0===s||s==t){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(t){t.stopPropagation()});var l=function(t){var o=e.getLastColumn();o&&i._checkResizability(o)&&(i.startColumn=e,i._mouseDown(t,o,r))};r.addEventListener("mousedown",l),r.addEventListener("touchstart",l,{passive:!0}),r.addEventListener("dblclick",function(t){var o=e.getLastColumn();o&&i._checkResizability(o)&&o.reinitializeWidth(!0)}),a.addEventListener("click",function(t){t.stopPropagation()});var c=function(t){var o,n,s;(o=e.getFirstColumn())&&(n=i.table.columnManager.findColumnIndex(o),(s=n>0&&i.table.columnManager.getColumnByIndex(n-1))&&i._checkResizability(s)&&(i.startColumn=e,i._mouseDown(t,s,a)))};a.addEventListener("mousedown",c),a.addEventListener("touchstart",c,{passive:!0}),a.addEventListener("dblclick",function(t){var o,n,s;(o=e.getFirstColumn())&&(n=i.table.columnManager.findColumnIndex(o),(s=n>0&&i.table.columnManager.getColumnByIndex(n-1))&&i._checkResizability(s)&&s.reinitializeWidth(!0))}),o.appendChild(r),o.appendChild(a)}},I.prototype._checkResizability=function(t){return void 0!==t.definition.resizable?t.definition.resizable:this.table.options.resizableColumns},I.prototype._mouseDown=function(t,e,o){function i(t){e.setWidth(s.startWidth+((void 0===t.screenX?t.touches[0].screenX:t.screenX)-s.startX)),!s.table.browserSlow&&e.modules.resize&&e.modules.resize.variableHeight&&e.checkCellHeights()}function n(t){s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!1),s.table.browserSlow&&e.modules.resize&&e.modules.resize.variableHeight&&e.checkCellHeights(),document.body.removeEventListener("mouseup",n),document.body.removeEventListener("mousemove",i),o.removeEventListener("touchmove",i),o.removeEventListener("touchend",n),s.table.element.classList.remove("tabulator-block-select"),s.table.options.persistentLayout&&s.table.modExists("persistence",!0)&&s.table.modules.persistence.save("columns"),s.table.options.columnResized.call(s.table,e.getComponent())}var s=this;s.table.element.classList.add("tabulator-block-select"),t.stopPropagation(),s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!0),s.startX=void 0===t.screenX?t.touches[0].screenX:t.screenX,s.startWidth=e.getWidth(),document.body.addEventListener("mousemove",i),document.body.addEventListener("mouseup",n),o.addEventListener("touchmove",i,{passive:!0}),o.addEventListener("touchend",n)},u.prototype.registerModule("resizeColumns",I);var O=function(t){this.table=t,this.startColumn=!1,this.startY=!1,this.startHeight=!1,this.handle=null,this.prevHandle=null};O.prototype.initializeRow=function(t){var e=this,o=t.getElement(),i=document.createElement("div");i.className="tabulator-row-resize-handle";var n=document.createElement("div");n.className="tabulator-row-resize-handle prev",i.addEventListener("click",function(t){t.stopPropagation()});var s=function(o){e.startRow=t,e._mouseDown(o,t,i)};i.addEventListener("mousedown",s,{passive:!0}),i.addEventListener("touchstart",s),n.addEventListener("click",function(t){t.stopPropagation()});var r=function(o){var i=e.table.rowManager.prevDisplayRow(t);i&&(e.startRow=i,e._mouseDown(o,i,n))};n.addEventListener("mousedown",r),n.addEventListener("touchstart",r,{passive:!0}),o.appendChild(i),o.appendChild(n)},O.prototype._mouseDown=function(t,e,o){function i(t){e.setHeight(s.startHeight+((void 0===t.screenY?t.touches[0].screenY:t.screenY)-s.startY))}function n(t){document.body.removeEventListener("mouseup",i),document.body.removeEventListener("mousemove",i),o.removeEventListener("touchmove",i),o.removeEventListener("touchend",n),s.table.element.classList.remove("tabulator-block-select"),s.table.options.rowResized.call(this.table,e.getComponent())}var s=this;s.table.element.classList.add("tabulator-block-select"),t.stopPropagation(),s.startY=void 0===t.screenY?t.touches[0].screenY:t.screenY,s.startHeight=e.getHeight(),document.body.addEventListener("mousemove",i),document.body.addEventListener("mouseup",n),o.addEventListener("touchmove",i,{passive:!0}),o.addEventListener("touchend",n)},u.prototype.registerModule("resizeRows",O);var G=function(t){this.table=t,this.binding=!1,this.observer=!1};G.prototype.initialize=function(t){var e=this.table;"undefined"!=typeof ResizeObserver&&"virtual"===e.rowManager.getRenderMode()?(this.observer=new ResizeObserver(function(t){e.redraw()}),this.observer.observe(e.element)):(this.binding=function(){e.redraw()},window.addEventListener("resize",this.binding))},G.prototype.clearBindings=function(t){this.binding&&window.removeEventListener("resize",this.binding),this.observer&&this.observer.unobserve(this.table.element)},u.prototype.registerModule("resizeTable",G);var j=function(t){this.table=t,this.columns=[],this.hiddenColumns=[],this.mode="",this.index=0,this.collapseFormatter=[],this.collapseStartOpen=!0};j.prototype.initialize=function(){var t=this,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(o,i){o.modules.responsive&&o.modules.responsive.order&&o.modules.responsive.visible&&(o.modules.responsive.index=i,e.push(o),o.visible||"collapse"!==t.mode||t.hiddenColumns.push(o))}),e=e.reverse(),e=e.sort(function(t,e){return e.modules.responsive.order-t.modules.responsive.order||e.modules.responsive.index-t.modules.responsive.index}),this.columns=e,"collapse"===this.mode&&this.generateCollapsedContent()},j.prototype.initializeColumn=function(t){var e=t.getDefinition();t.modules.responsive={order:void 0===e.responsive?1:e.responsive,visible:!1!==e.visible}},j.prototype.layoutRow=function(t){var e=t.getElement(),o=document.createElement("div");o.classList.add("tabulator-responsive-collapse"),e.classList.contains("tabulator-calcs")||(t.modules.responsiveLayout={element:o},this.collapseStartOpen||(o.style.display="none"),e.appendChild(o),this.generateCollapsedRowContent(t))},j.prototype.updateColumnVisibility=function(t,e){t.modules.responsive&&(t.modules.responsive.visible=e,this.initialize())},j.prototype.hideColumn=function(t){t.hide(!1,!0),"collapse"===this.mode&&(this.hiddenColumns.unshift(t),this.generateCollapsedContent())},j.prototype.showColumn=function(t){var e;t.show(!1,!0),t.setWidth(t.getWidth()),"collapse"===this.mode&&(e=this.hiddenColumns.indexOf(t),e>-1&&this.hiddenColumns.splice(e,1),this.generateCollapsedContent())},j.prototype.update=function(){for(var t=this,e=!0;e;){var o="fitColumns"==t.table.modules.layout.getMode()?t.table.columnManager.getFlexBaseWidth():t.table.columnManager.getWidth(),i=(t.table.options.headerVisible?t.table.columnManager.element.clientWidth:t.table.element.clientWidth)-o;if(i<0){var n=t.columns[t.index];n?(t.hideColumn(n),t.index++):e=!1}else{var s=t.columns[t.index-1];s&&i>0&&i>=s.getWidth()?(t.showColumn(s),t.index--):e=!1}t.table.rowManager.activeRowsCount||t.table.rowManager.renderEmptyScroll()}},j.prototype.generateCollapsedContent=function(){var t=this;this.table.rowManager.getDisplayRows().forEach(function(e){t.generateCollapsedRowContent(e)})},j.prototype.generateCollapsedRowContent=function(t){var e,o;if(t.modules.responsiveLayout){for(e=t.modules.responsiveLayout.element;e.firstChild;)e.removeChild(e.firstChild);o=this.collapseFormatter(this.generateCollapsedRowData(t)),o&&e.appendChild(o)}},j.prototype.generateCollapsedRowData=function(t){var e,o=this,i=t.getData(),n=[];return this.hiddenColumns.forEach(function(s){var r=s.getFieldValue(i)
-;s.definition.title&&s.field&&(s.modules.format&&o.table.options.responsiveLayoutCollapseUseFormatters?(e={value:!1,data:{},getValue:function(){return r},getData:function(){return i},getElement:function(){return document.createElement("div")},getRow:function(){return t.getComponent()},getColumn:function(){return s.getComponent()}},n.push({title:s.definition.title,value:s.modules.format.formatter.call(o.table.modules.format,e,s.modules.format.params)})):n.push({title:s.definition.title,value:r}))}),n},j.prototype.formatCollapsedData=function(t){var e=document.createElement("table"),o="";return t.forEach(function(t){var e=document.createElement("div");t.value instanceof Node&&(e.appendChild(t.value),t.value=e.innerHTML),o+="<tr><td><strong>"+t.title+"</strong></td><td>"+t.value+"</td></tr>"}),e.innerHTML=o,Object.keys(t).length?e:""},u.prototype.registerModule("responsiveLayout",j);var V=function(t){this.table=t,this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],this.headerCheckboxElement=null};V.prototype.clearSelectionData=function(t){this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],t||this._rowSelectionChanged()},V.prototype.initializeRow=function(t){var e=this,o=t.getElement(),i=function t(){setTimeout(function(){e.selecting=!1},50),document.body.removeEventListener("mouseup",t)};t.modules.select={selected:!1},e.table.options.selectableCheck.call(this.table,t.getComponent())?(o.classList.add("tabulator-selectable"),o.classList.remove("tabulator-unselectable"),e.table.options.selectable&&"highlight"!=e.table.options.selectable&&("click"===e.table.options.selectableRangeMode?o.addEventListener("click",function(o){if(e.table._clearSelection(),o.shiftKey){e.lastClickedRow=e.lastClickedRow||t;var i=e.table.rowManager.getDisplayRowIndex(e.lastClickedRow),n=e.table.rowManager.getDisplayRowIndex(t),s=i<=n?i:n,r=i>=n?i:n,a=e.table.rowManager.getDisplayRows().slice(0),l=a.splice(s,r-s+1);o.ctrlKey||o.metaKey?(l.forEach(function(o){o!==e.lastClickedRow&&(!0===e.table.options.selectable||e.isRowSelected(t)?e.toggleRow(o):e.selectedRows.length<e.table.options.selectable&&e.toggleRow(o))}),e.lastClickedRow=t):(e.deselectRows(),!0!==e.table.options.selectable&&l.length>e.table.options.selectable&&(l=l.slice(0,e.table.options.selectable)),e.selectRows(l))}else o.ctrlKey||o.metaKey?(e.toggleRow(t),e.lastClickedRow=t):(e.deselectRows(),e.selectRows(t),e.lastClickedRow=t);e.table._clearSelection()}):(o.addEventListener("click",function(o){e.table.modExists("edit")&&e.table.modules.edit.getCurrentCell()||e.table._clearSelection(),e.selecting||e.toggleRow(t)}),o.addEventListener("mousedown",function(o){if(o.shiftKey)return e.table._clearSelection(),e.selecting=!0,e.selectPrev=[],document.body.addEventListener("mouseup",i),document.body.addEventListener("keyup",i),e.toggleRow(t),!1}),o.addEventListener("mouseenter",function(o){e.selecting&&(e.table._clearSelection(),e.toggleRow(t),e.selectPrev[1]==t&&e.toggleRow(e.selectPrev[0]))}),o.addEventListener("mouseout",function(o){e.selecting&&(e.table._clearSelection(),e.selectPrev.unshift(t))})))):(o.classList.add("tabulator-unselectable"),o.classList.remove("tabulator-selectable"))},V.prototype.toggleRow=function(t){this.table.options.selectableCheck.call(this.table,t.getComponent())&&(t.modules.select&&t.modules.select.selected?this._deselectRow(t):this._selectRow(t))},V.prototype.selectRows=function(t){var e=this;switch(void 0===t?"undefined":_typeof(t)){case"undefined":e.table.rowManager.rows.forEach(function(t){e._selectRow(t,!0,!0)}),e._rowSelectionChanged();break;case"boolean":!0===t&&(e.table.rowManager.activeRows.forEach(function(t){e._selectRow(t,!0,!0)}),e._rowSelectionChanged());break;default:Array.isArray(t)?(t.forEach(function(t){e._selectRow(t,!0,!0)}),e._rowSelectionChanged()):e._selectRow(t,!1,!0)}},V.prototype._selectRow=function(t,e,o){if(!isNaN(this.table.options.selectable)&&!0!==this.table.options.selectable&&!o&&this.selectedRows.length>=this.table.options.selectable){if(!this.table.options.selectableRollingSelection)return!1;this._deselectRow(this.selectedRows[0])}var i=this.table.rowManager.findRow(t);i?-1==this.selectedRows.indexOf(i)&&(i.modules.select||(i.modules.select={}),i.modules.select.selected=!0,i.modules.select.checkboxEl&&(i.modules.select.checkboxEl.checked=!0),i.getElement().classList.add("tabulator-selected"),this.selectedRows.push(i),e||(this.table.options.rowSelected.call(this.table,i.getComponent()),this._rowSelectionChanged())):e||console.warn("Selection Error - No such row found, ignoring selection:"+t)},V.prototype.isRowSelected=function(t){return-1!==this.selectedRows.indexOf(t)},V.prototype.deselectRows=function(t){var e,o=this;if(void 0===t){e=o.selectedRows.length;for(var i=0;i<e;i++)o._deselectRow(o.selectedRows[0],!0);o._rowSelectionChanged()}else Array.isArray(t)?(t.forEach(function(t){o._deselectRow(t,!0)}),o._rowSelectionChanged()):o._deselectRow(t)},V.prototype._deselectRow=function(t,e){var o,i=this,n=i.table.rowManager.findRow(t);n?(o=i.selectedRows.findIndex(function(t){return t==n}))>-1&&(n.modules.select||(n.modules.select={}),n.modules.select.selected=!1,n.modules.select.checkboxEl&&(n.modules.select.checkboxEl.checked=!1),n.getElement().classList.remove("tabulator-selected"),i.selectedRows.splice(o,1),e||(i.table.options.rowDeselected.call(this.table,n.getComponent()),i._rowSelectionChanged())):e||console.warn("Deselection Error - No such row found, ignoring selection:"+t)},V.prototype.getSelectedData=function(){var t=[];return this.selectedRows.forEach(function(e){t.push(e.getData())}),t},V.prototype.getSelectedRows=function(){var t=[];return this.selectedRows.forEach(function(e){t.push(e.getComponent())}),t},V.prototype._rowSelectionChanged=function(){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)),this.table.options.rowSelectionChanged.call(this.table,this.getSelectedData(),this.getSelectedRows())},V.prototype.registerRowSelectCheckbox=function(t,e){t._row.modules.select||(t._row.modules.select={}),t._row.modules.select.checkboxEl=e},V.prototype.registerHeaderSelectCheckbox=function(t){this.headerCheckboxElement=t},u.prototype.registerModule("selectRow",V);var W=function(t){this.table=t,this.sortList=[],this.changed=!1};W.prototype.initializeColumn=function(t,e){var o,i,n=this,s=!1;switch(_typeof(t.definition.sorter)){case"string":n.sorters[t.definition.sorter]?s=n.sorters[t.definition.sorter]:console.warn("Sort Error - No such sorter found: ",t.definition.sorter);break;case"function":s=t.definition.sorter}t.modules.sort={sorter:s,dir:"none",params:t.definition.sorterParams||{},startingDir:t.definition.headerSortStartingDir||"asc",tristate:void 0!==t.definition.headerSortTristate?t.definition.headerSortTristate:this.table.options.headerSortTristate},(void 0===t.definition.headerSort?!1!==this.table.options.headerSort:!1!==t.definition.headerSort)&&(o=t.getElement(),o.classList.add("tabulator-sortable"),i=document.createElement("div"),i.classList.add("tabulator-arrow"),e.appendChild(i),o.addEventListener("click",function(e){var o="",i=[],s=!1;if(t.modules.sort){if(t.modules.sort.tristate)o="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":o="desc";break;case"desc":o="asc";break;default:o=t.modules.sort.startingDir}n.table.options.columnHeaderSortMulti&&(e.shiftKey||e.ctrlKey)?(i=n.getSort(),s=i.findIndex(function(e){return e.field===t.getField()}),s>-1?(i[s].dir=o,s!=i.length-1&&(s=i.splice(s,1)[0],"none"!=o&&i.push(s))):"none"!=o&&i.push({column:t,dir:o}),n.setSort(i)):"none"==o?n.clear():n.setSort(t,o),n.table.rowManager.sorterRefresh(!n.sortList.length)}}))},W.prototype.hasChanged=function(){var t=this.changed;return this.changed=!1,t},W.prototype.getSort=function(){var t=this,e=[];return t.sortList.forEach(function(t){t.column&&e.push({column:t.column.getComponent(),field:t.column.getField(),dir:t.dir})}),e},W.prototype.setSort=function(t,e){var o=this,i=[];Array.isArray(t)||(t=[{column:t,dir:e}]),t.forEach(function(t){var e;e=o.table.columnManager.findColumn(t.column),e?(t.column=e,i.push(t),o.changed=!0):console.warn("Sort Warning - Sort field does not exist and is being ignored: ",t.column)}),o.sortList=i,this.table.options.persistentSort&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("sort")},W.prototype.clear=function(){this.setSort([])},W.prototype.findSorter=function(t){var e,o=this.table.rowManager.activeRows[0],i="string";if(o&&(o=o.getData(),t.getField()))switch(e=t.getFieldValue(o),void 0===e?"undefined":_typeof(e)){case"undefined":i="string";break;case"boolean":i="boolean";break;default:isNaN(e)||""===e?e.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)&&(i="alphanum"):i="number"}return this.sorters[i]},W.prototype.sort=function(t){var e,o=this;e=this.table.options.sortOrderReverse?o.sortList.slice().reverse():o.sortList,o.table.options.dataSorting&&o.table.options.dataSorting.call(o.table,o.getSort()),o.clearColumnHeaders(),o.table.options.ajaxSorting?e.forEach(function(t,e){o.setColumnHeader(t.column,t.dir)}):e.forEach(function(i,n){i.column&&i.column.modules.sort&&(i.column.modules.sort.sorter||(i.column.modules.sort.sorter=o.findSorter(i.column)),o._sortItem(t,i.column,i.dir,e,n)),o.setColumnHeader(i.column,i.dir)}),o.table.options.dataSorted&&o.table.options.dataSorted.call(o.table,o.getSort(),o.table.rowManager.getComponents(!0))},W.prototype.clearColumnHeaders=function(){this.table.columnManager.getRealColumns().forEach(function(t){t.modules.sort&&(t.modules.sort.dir="none",t.getElement().setAttribute("aria-sort","none"))})},W.prototype.setColumnHeader=function(t,e){t.modules.sort.dir=e,t.getElement().setAttribute("aria-sort",e)},W.prototype._sortItem=function(t,e,o,i,n){var s=this,r="function"==typeof e.modules.sort.params?e.modules.sort.params(e.getComponent(),o):e.modules.sort.params;t.sort(function(t,a){var l=s._sortRow(t,a,e,o,r);if(0===l&&n)for(var c=n-1;c>=0&&0===(l=s._sortRow(t,a,i[c].column,i[c].dir,r));c--);return l})},W.prototype._sortRow=function(t,e,o,i,n){var s,r,a="asc"==i?t:e,l="asc"==i?e:t;return t=o.getFieldValue(a.getData()),e=o.getFieldValue(l.getData()),t=void 0!==t?t:"",e=void 0!==e?e:"",s=a.getComponent(),r=l.getComponent(),o.modules.sort.sorter.call(this,t,e,s,r,o.getComponent(),i,n)},W.prototype.sorters={number:function(t,e,o,i,n,s,r){var a=r.alignEmptyValues,l=r.decimalSeparator||".",c=r.thousandSeparator||",",u=0;if(t=parseFloat(String(t).split(c).join("").split(l).join(".")),e=parseFloat(String(e).split(c).join("").split(l).join(".")),isNaN(t))u=isNaN(e)?0:-1;else{if(!isNaN(e))return t-e;u=1}return("top"===a&&"desc"===s||"bottom"===a&&"asc"===s)&&(u*=-1),u},string:function(t,e,o,i,n,s,r){var a,l=r.alignEmptyValues,c=0;if(t){if(e){switch(_typeof(r.locale)){case"boolean":r.locale&&(a=this.table.modules.localize.getLocale());break;case"string":a=r.locale}return String(t).toLowerCase().localeCompare(String(e).toLowerCase(),a)}c=1}else c=e?-1:0;return("top"===l&&"desc"===s||"bottom"===l&&"asc"===s)&&(c*=-1),c},date:function(t,e,o,i,n,s,r){return r.format||(r.format="DD/MM/YYYY"),this.sorters.datetime.call(this,t,e,o,i,n,s,r)},time:function(t,e,o,i,n,s,r){return r.format||(r.format="hh:mm"),this.sorters.datetime.call(this,t,e,o,i,n,s,r)},datetime:function(t,e,o,i,n,s,r){var a=r.format||"DD/MM/YYYY hh:mm:ss",l=r.alignEmptyValues,c=0;if("undefined"!=typeof moment){if(t=moment(t,a),e=moment(e,a),t.isValid()){if(e.isValid())return t-e;c=1}else c=e.isValid()?-1:0;return("top"===l&&"desc"===s||"bottom"===l&&"asc"===s)&&(c*=-1),c}console.error("Sort Error - 'datetime' sorter is dependant on moment.js")},boolean:function(t,e,o,i,n,s,r){return(!0===t||"true"===t||"True"===t||1===t?1:0)-(!0===e||"true"===e||"True"===e||1===e?1:0)},array:function(t,e,o,i,n,s,r){function a(t){switch(u){case"length":return t.length;case"sum":return t.reduce(function(t,e){return t+e});case"max":return Math.max.apply(null,t);case"min":return Math.min.apply(null,t);case"avg":return t.reduce(function(t,e){return t+e})/t.length}}var l=0,c=0,u=r.type||"length",d=r.alignEmptyValues,h=0;if(Array.isArray(t)){if(Array.isArray(e))return l=t?a(t):0,c=e?a(e):0,l-c;d=1}else d=Array.isArray(e)?-1:0;return("top"===d&&"desc"===s||"bottom"===d&&"asc"===s)&&(h*=-1),h},exists:function(t,e,o,i,n,s,r){return(void 0===t?0:1)-(void 0===e?0:1)},alphanum:function(t,e,o,i,n,s,r){var a,l,c,u,d,h=0,p=/(\d+)|(\D+)/g,m=/\d/,f=r.alignEmptyValues,g=0;if(t||0===t){if(e||0===e){if(isFinite(t)&&isFinite(e))return t-e;if(a=String(t).toLowerCase(),l=String(e).toLowerCase(),a===l)return 0;if(!m.test(a)||!m.test(l))return a>l?1:-1;for(a=a.match(p),l=l.match(p),d=a.length>l.length?l.length:a.length;h<d;)if(c=a[h],u=l[h++],c!==u)return isFinite(c)&&isFinite(u)?("0"===c.charAt(0)&&(c="."+c),"0"===u.charAt(0)&&(u="."+u),c-u):c>u?1:-1;return a.length>l.length}g=1}else g=e||0===e?-1:0;return("top"===f&&"desc"===s||"bottom"===f&&"asc"===s)&&(g*=-1),g}},u.prototype.registerModule("sort",W);var U=function(t){this.table=t};return U.prototype.initializeColumn=function(t){var e,o=this,i=[];t.definition.validator&&(Array.isArray(t.definition.validator)?t.definition.validator.forEach(function(t){(e=o._extractValidator(t))&&i.push(e)}):(e=this._extractValidator(t.definition.validator))&&i.push(e),t.modules.validate=!!i.length&&i)},U.prototype._extractValidator=function(t){var e,o,i;switch(void 0===t?"undefined":_typeof(t)){case"string":return i=t.indexOf(":"),i>-1?(e=t.substring(0,i),o=t.substring(i+1)):e=t,console.log("v",t,e,o),this._buildValidator(e,o);case"function":return this._buildValidator(t);case"object":return this._buildValidator(t.type,t.parameters)}},U.prototype._buildValidator=function(t,e){var o="function"==typeof t?t:this.validators[t];return o?{type:"function"==typeof t?"function":t,func:o,params:e}:(console.warn("Validator Setup Error - No matching validator found:",t),!1)},U.prototype.validate=function(t,e,o){var i=this,n=[];return t&&t.forEach(function(t){t.func.call(i,e,o,t.params)||n.push({type:t.type,parameters:t.params})}),!n.length||n},U.prototype.validators={integer:function(t,e,o){return""===e||null===e||void 0===e||"number"==typeof(e=Number(e))&&isFinite(e)&&Math.floor(e)===e},float:function(t,e,o){return""===e||null===e||void 0===e||"number"==typeof(e=Number(e))&&isFinite(e)&&e%1!=0},numeric:function(t,e,o){return""===e||null===e||void 0===e||!isNaN(e)},string:function(t,e,o){return""===e||null===e||void 0===e||isNaN(e)},max:function(t,e,o){return""===e||null===e||void 0===e||parseFloat(e)<=o},min:function(t,e,o){return""===e||null===e||void 0===e||parseFloat(e)>=o},minLength:function(t,e,o){return""===e||null===e||void 0===e||String(e).length>=o},maxLength:function(t,e,o){return""===e||null===e||void 0===e||String(e).length<=o},in:function(t,e,o){return""===e||null===e||void 0===e||("string"==typeof o&&(o=o.split("|")),""===e||o.indexOf(e)>-1)},regex:function(t,e,o){return""===e||null===e||void 0===e||new RegExp(o).test(e)},unique:function(t,e,o){if(""===e||null===e||void 0===e)return!0;var i=!0,n=t.getData(),s=t.getColumn()._getSelf();return this.table.rowManager.rows.forEach(function(t){var o=t.getData();o!==n&&e==s.getFieldValue(o)&&(i=!1)}),i},required:function(t,e,o){return""!==e&&null!==e&&void 0!==e}},u.prototype.registerModule("validate",U),u});
\ No newline at end of file
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};!function(t,e){"object"===("undefined"==typeof exports?"undefined":_typeof(exports))&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.Tabulator=e()}(this,function(){"use strict";Array.prototype.findIndex||Object.defineProperty(Array.prototype,"findIndex",{value:function(t){if(null==this)throw new TypeError('"this" is null or not defined');var e=Object(this),o=e.length>>>0;if("function"!=typeof t)throw new TypeError("predicate must be a function");for(var i=arguments[1],n=0;n<o;){var s=e[n];if(t.call(i,s,n,e))return n;n++}return-1}}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(t){if(null==this)throw new TypeError('"this" is null or not defined');var e=Object(this),o=e.length>>>0;if("function"!=typeof t)throw new TypeError("predicate must be a function");for(var i=arguments[1],n=0;n<o;){var s=e[n];if(t.call(i,s,n,e))return s;n++}}});var t=function(t){this.table=t,this.blockHozScrollEvent=!1,this.headersElement=this.createHeadersElement(),this.element=this.createHeaderElement(),this.rowManager=null,this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.scrollLeft=0,this.element.insertBefore(this.headersElement,this.element.firstChild)};t.prototype.createHeadersElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-headers"),t},t.prototype.createHeaderElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-header"),this.table.options.headerVisible||t.classList.add("tabulator-header-hidden"),t},t.prototype.initialize=function(){},t.prototype.setRowManager=function(t){this.rowManager=t},t.prototype.getElement=function(){return this.element},t.prototype.getHeadersElement=function(){return this.headersElement},t.prototype.scrollHorizontal=function(t){var e=0,o=this.element.scrollWidth-this.table.element.clientWidth;this.element.scrollLeft=t,t>o?(e=t-o,this.element.style.marginLeft=-e+"px"):this.element.style.marginLeft=0,this.scrollLeft=t,this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.scrollHorizontal()},t.prototype.generateColumnsFromRowData=function(t){var e,o,i=[];if(t&&t.length){e=t[0];for(var n in e){var s={field:n,title:n},r=e[n];switch(void 0===r?"undefined":_typeof(r)){case"undefined":o="string";break;case"boolean":o="boolean";break;case"object":o=Array.isArray(r)?"array":"string";break;default:o=isNaN(r)||""===r?r.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)?"alphanum":"string":"number"}s.sorter=o,i.push(s)}this.table.options.columns=i,this.setColumns(this.table.options.columns)}},t.prototype.setColumns=function(t,e){for(var o=this;o.headersElement.firstChild;)o.headersElement.removeChild(o.headersElement.firstChild);o.columns=[],o.columnsByIndex=[],o.columnsByField={},o.table.modExists("frozenColumns")&&o.table.modules.frozenColumns.reset(),t.forEach(function(t,e){o._addColumn(t)}),o._reIndexColumns(),o.table.options.responsiveLayout&&o.table.modExists("responsiveLayout",!0)&&o.table.modules.responsiveLayout.initialize(),o.redraw(!0)},t.prototype._addColumn=function(t,e,o){var n=new i(t,this),s=n.getElement(),r=o?this.findColumnIndex(o):o;if(o&&r>-1){var a=this.columns.indexOf(o.getTopColumn()),l=o.getElement();e?(this.columns.splice(a,0,n),l.parentNode.insertBefore(s,l)):(this.columns.splice(a+1,0,n),l.parentNode.insertBefore(s,l.nextSibling))}else e?(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},t.prototype.registerColumnField=function(t){t.definition.field&&(this.columnsByField[t.definition.field]=t)},t.prototype.registerColumnPosition=function(t){this.columnsByIndex.push(t)},t.prototype._reIndexColumns=function(){this.columnsByIndex=[],this.columns.forEach(function(t){t.reRegisterPosition()})},t.prototype._verticalAlignHeaders=function(){var t=this,e=0;t.columns.forEach(function(t){var o;t.clearVerticalAlign(),(o=t.getHeight())>e&&(e=o)}),t.columns.forEach(function(o){o.verticalAlign(t.table.options.columnHeaderVertAlign,e)}),t.rowManager.adjustTableSize()},t.prototype.findColumn=function(t){var e=this;if("object"!=(void 0===t?"undefined":_typeof(t)))return this.columnsByField[t]||!1;if(t instanceof i)return t;if(t instanceof o)return t._getSelf()||!1;if("undefined"!=typeof HTMLElement&&t instanceof HTMLElement){return e.columns.find(function(e){return e.element===t})||!1}return!1},t.prototype.getColumnByField=function(t){return this.columnsByField[t]},t.prototype.getColumnsByFieldRoot=function(t){var e=this,o=[];return Object.keys(this.columnsByField).forEach(function(i){i.split(".")[0]===t&&o.push(e.columnsByField[i])}),o},t.prototype.getColumnByIndex=function(t){return this.columnsByIndex[t]},t.prototype.getFirstVisibileColumn=function(t){var t=this.columnsByIndex.findIndex(function(t){return t.visible});return t>-1&&this.columnsByIndex[t]},t.prototype.getColumns=function(){return this.columns},t.prototype.findColumnIndex=function(t){return this.columnsByIndex.findIndex(function(e){return t===e})},t.prototype.getRealColumns=function(){return this.columnsByIndex},t.prototype.traverse=function(t){this.columnsByIndex.forEach(function(e,o){t(e,o)})},t.prototype.getDefinitions=function(t){var e=this,o=[];return e.columnsByIndex.forEach(function(e){(!t||t&&e.visible)&&o.push(e.getDefinition())}),o},t.prototype.getDefinitionTree=function(){var t=this,e=[];return t.columns.forEach(function(t){e.push(t.getDefinition(!0))}),e},t.prototype.getComponents=function(t){var e=this,o=[];return(t?e.columns:e.columnsByIndex).forEach(function(t){o.push(t.getComponent())}),o},t.prototype.getWidth=function(){var t=0;return this.columnsByIndex.forEach(function(e){e.visible&&(t+=e.getWidth())}),t},t.prototype.moveColumn=function(t,e,o){this.moveColumnActual(t,e,o),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),e.element.parentNode.insertBefore(t.element,e.element),o&&e.element.parentNode.insertBefore(e.element,t.element),this._verticalAlignHeaders(),this.table.rowManager.reinitialize()},t.prototype.moveColumnActual=function(t,e,o){this._moveColumnInArray(this.columns,t,e,o),this._moveColumnInArray(this.columnsByIndex,t,e,o,!0),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.options.columnMoved&&this.table.options.columnMoved.call(this.table,t.getComponent(),this.table.columnManager.getComponents()),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns")},t.prototype._moveColumnInArray=function(t,e,o,i,n){var s,r=t.indexOf(e);r>-1&&(t.splice(r,1),s=t.indexOf(o),s>-1?i&&(s+=1):s=r,t.splice(s,0,e),n&&this.table.rowManager.rows.forEach(function(t){if(t.cells.length){var e=t.cells.splice(r,1)[0];t.cells.splice(s,0,e)}}))},t.prototype.scrollToColumn=function(t,e,o){var i=this,n=0,s=0,r=0,a=t.getElement();return new Promise(function(l,c){if(void 0===e&&(e=i.table.options.scrollToColumnPosition),void 0===o&&(o=i.table.options.scrollToColumnIfVisible),t.visible){switch(e){case"middle":case"center":r=-i.element.clientWidth/2;break;case"right":r=a.clientWidth-i.headersElement.clientWidth}if(!o&&(s=a.offsetLeft)>0&&s+a.offsetWidth<i.element.clientWidth)return!1;n=a.offsetLeft+i.element.scrollLeft+r,n=Math.max(Math.min(n,i.table.rowManager.element.scrollWidth-i.table.rowManager.element.clientWidth),0),i.table.rowManager.scrollHorizontal(n),i.scrollHorizontal(n),l()}else console.warn("Scroll Error - Column not visible"),c("Scroll Error - Column not visible")})},t.prototype.generateCells=function(t){var e=this,o=[];return e.columnsByIndex.forEach(function(e){o.push(e.generateCell(t))}),o},t.prototype.getFlexBaseWidth=function(){var t=this,e=t.table.element.clientWidth,o=0;return t.rowManager.element.scrollHeight>t.rowManager.element.clientHeight&&(e-=t.rowManager.element.offsetWidth-t.rowManager.element.clientWidth),this.columnsByIndex.forEach(function(i){var n,s,r;i.visible&&(n=i.definition.width||0,s=void 0===i.minWidth?t.table.options.columnMinWidth:parseInt(i.minWidth),r="string"==typeof n?n.indexOf("%")>-1?e/100*parseInt(n):parseInt(n):n,o+=r>s?r:s)}),o},t.prototype.addColumn=function(t,e,o){var i=this;return new Promise(function(n,s){var r=i._addColumn(t,e,o);i._reIndexColumns(),i.table.options.responsiveLayout&&i.table.modExists("responsiveLayout",!0)&&i.table.modules.responsiveLayout.initialize(),i.table.modExists("columnCalcs")&&i.table.modules.columnCalcs.recalc(i.table.rowManager.activeRows),i.redraw(),"fitColumns"!=i.table.modules.layout.getMode()&&r.reinitializeWidth(),i._verticalAlignHeaders(),i.table.rowManager.reinitialize(),n(r)})},t.prototype.deregisterColumn=function(t){var e,o=t.getField();o&&delete this.columnsByField[o],e=this.columnsByIndex.indexOf(t),e>-1&&this.columnsByIndex.splice(e,1),e=this.columns.indexOf(t),e>-1&&this.columns.splice(e,1),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.redraw()},t.prototype.redraw=function(t){t&&(u.prototype.helpers.elVisible(this.element)&&this._verticalAlignHeaders(),this.table.rowManager.resetScroll(),this.table.rowManager.reinitialize()),["fitColumns","fitDataStretch"].indexOf(this.table.modules.layout.getMode())>-1?this.table.modules.layout.layout():t?this.table.modules.layout.layout():this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),t&&(this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns"),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.redraw()),this.table.footerManager.redraw()};var o=function(t){this._column=t,this.type="ColumnComponent"};o.prototype.getElement=function(){return this._column.getElement()},o.prototype.getDefinition=function(){return this._column.getDefinition()},o.prototype.getField=function(){return this._column.getField()},o.prototype.getCells=function(){var t=[];return this._column.cells.forEach(function(e){t.push(e.getComponent())}),t},o.prototype.getVisibility=function(){return this._column.visible},o.prototype.show=function(){this._column.isGroup?this._column.columns.forEach(function(t){t.show()}):this._column.show()},o.prototype.hide=function(){this._column.isGroup?this._column.columns.forEach(function(t){t.hide()}):this._column.hide()},o.prototype.toggle=function(){this._column.visible?this.hide():this.show()},o.prototype.delete=function(){return this._column.delete()},o.prototype.getSubColumns=function(){var t=[];return this._column.columns.length&&this._column.columns.forEach(function(e){t.push(e.getComponent())}),t},o.prototype.getParentColumn=function(){return this._column.parent instanceof i&&this._column.parent.getComponent()},o.prototype._getSelf=function(){return this._column},o.prototype.scrollTo=function(){return this._column.table.columnManager.scrollToColumn(this._column)},o.prototype.getTable=function(){return this._column.table},o.prototype.headerFilterFocus=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterFocus(this._column)},o.prototype.reloadHeaderFilter=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.reloadHeaderFilter(this._column)},o.prototype.setHeaderFilterValue=function(t){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterValue(this._column,t)},o.prototype.move=function(t,e){var o=this._column.table.columnManager.findColumn(t);o?this._column.table.columnManager.moveColumn(this._column,o,e):console.warn("Move Error - No matching column found:",o)},o.prototype.getNextColumn=function(){var t=this._column.nextColumn();return!!t&&t.getComponent()},o.prototype.getPrevColumn=function(){var t=this._column.prevColumn();return!!t&&t.getComponent()},o.prototype.updateDefinition=function(t){return this._column.updateDefinition(t)};var i=function t(e,o){var i=this;this.table=o.table,this.definition=e,this.parent=o,this.type="column",this.columns=[],this.cells=[],this.element=this.createElement(),this.contentElement=!1,this.groupElement=this.createGroupElement(),this.isGroup=!1,this.tooltip=!1,this.hozAlign="",this.field="",this.fieldStructure="",this.getFieldValue="",this.setFieldValue="",this.titleFormatterRendered=!1,this.setField(this.definition.field),this.table.options.invalidOptionWarnings&&this.checkDefinition(),this.modules={},this.cellEvents={cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1},this.width=null,this.widthStyled="",this.minWidth=null,this.minWidthStyled="",this.widthFixed=!1,this.visible=!0,this._mapDepricatedFunctionality(),e.columns?(this.isGroup=!0,e.columns.forEach(function(e,o){var n=new t(e,i);i.attachColumn(n)}),i.checkColumnVisibility()):o.registerColumnField(this),e.rowHandle&&!1!==this.table.options.movableRows&&this.table.modExists("moveRow")&&this.table.modules.moveRow.setHandle(!0),this._buildHeader(),this.bindModuleColumns()};i.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-col"),t.setAttribute("role","columnheader"),t.setAttribute("aria-sort","none"),t},i.prototype.createGroupElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-col-group-cols"),t},i.prototype.checkDefinition=function(){var t=this;Object.keys(this.definition).forEach(function(e){-1===t.defaultOptionList.indexOf(e)&&console.warn("Invalid column definition option in '"+(t.field||t.definition.title)+"' column:",e)})},i.prototype.setField=function(t){this.field=t,this.fieldStructure=t?this.table.options.nestedFieldSeparator?t.split(this.table.options.nestedFieldSeparator):[t]:[],this.getFieldValue=this.fieldStructure.length>1?this._getNestedData:this._getFlatData,this.setFieldValue=this.fieldStructure.length>1?this._setNesteData:this._setFlatData},i.prototype.registerColumnPosition=function(t){this.parent.registerColumnPosition(t)},i.prototype.registerColumnField=function(t){this.parent.registerColumnField(t)},i.prototype.reRegisterPosition=function(){this.isGroup?this.columns.forEach(function(t){t.reRegisterPosition()}):this.registerColumnPosition(this)},i.prototype._mapDepricatedFunctionality=function(){void 0!==this.definition.hideInHtml&&(this.definition.htmlOutput=!this.definition.hideInHtml,console.warn("hideInHtml column definition property is deprecated, you should now use htmlOutput"))},i.prototype.setTooltip=function(){var t=this,e=t.definition,o=e.headerTooltip||!1===e.tooltip?e.headerTooltip:t.table.options.tooltipsHeader;o?!0===o?e.field?t.table.modules.localize.bind("columns|"+e.field,function(o){t.element.setAttribute("title",o||e.title)}):t.element.setAttribute("title",e.title):("function"==typeof o&&!1===(o=o(t.getComponent()))&&(o=""),t.element.setAttribute("title",o)):t.element.setAttribute("title","")},i.prototype._buildHeader=function(){for(var t=this,e=t.definition;t.element.firstChild;)t.element.removeChild(t.element.firstChild);e.headerVertical&&(t.element.classList.add("tabulator-col-vertical"),"flip"===e.headerVertical&&t.element.classList.add("tabulator-col-vertical-flip")),t.contentElement=t._bindEvents(),t.contentElement=t._buildColumnHeaderContent(),t.element.appendChild(t.contentElement),t.isGroup?t._buildGroupHeader():t._buildColumnHeader(),t.setTooltip(),t.table.options.resizableColumns&&t.table.modExists("resizeColumns")&&t.table.modules.resizeColumns.initializeColumn("header",t,t.element),e.headerFilter&&t.table.modExists("filter")&&t.table.modExists("edit")&&(void 0!==e.headerFilterPlaceholder&&e.field&&t.table.modules.localize.setHeaderFilterColumnPlaceholder(e.field,e.headerFilterPlaceholder),t.table.modules.filter.initializeColumn(t)),t.table.modExists("frozenColumns")&&t.table.modules.frozenColumns.initializeColumn(t),t.table.options.movableColumns&&!t.isGroup&&t.table.modExists("moveColumn")&&t.table.modules.moveColumn.initializeColumn(t),(e.topCalc||e.bottomCalc)&&t.table.modExists("columnCalcs")&&t.table.modules.columnCalcs.initializeColumn(t),t.table.modExists("persistence")&&t.table.modules.persistence.config.columns&&t.table.modules.persistence.initializeColumn(t),t.element.addEventListener("mouseenter",function(e){t.setTooltip()})},i.prototype._bindEvents=function(){var t,e,o,i=this,n=i.definition;"function"==typeof n.headerClick&&i.element.addEventListener("click",function(t){n.headerClick(t,i.getComponent())}),"function"==typeof n.headerDblClick&&i.element.addEventListener("dblclick",function(t){n.headerDblClick(t,i.getComponent())}),"function"==typeof n.headerContext&&i.element.addEventListener("contextmenu",function(t){n.headerContext(t,i.getComponent())}),"function"==typeof n.headerTap&&(o=!1,i.element.addEventListener("touchstart",function(t){o=!0},{passive:!0}),i.element.addEventListener("touchend",function(t){o&&n.headerTap(t,i.getComponent()),o=!1})),"function"==typeof n.headerDblTap&&(t=null,i.element.addEventListener("touchend",function(e){t?(clearTimeout(t),t=null,n.headerDblTap(e,i.getComponent())):t=setTimeout(function(){clearTimeout(t),t=null},300)})),"function"==typeof n.headerTapHold&&(e=null,i.element.addEventListener("touchstart",function(t){clearTimeout(e),e=setTimeout(function(){clearTimeout(e),e=null,o=!1,n.headerTapHold(t,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(t){clearTimeout(e),e=null})),"function"==typeof n.cellClick&&(i.cellEvents.cellClick=n.cellClick),"function"==typeof n.cellDblClick&&(i.cellEvents.cellDblClick=n.cellDblClick),"function"==typeof n.cellContext&&(i.cellEvents.cellContext=n.cellContext),"function"==typeof n.cellMouseEnter&&(i.cellEvents.cellMouseEnter=n.cellMouseEnter),"function"==typeof n.cellMouseLeave&&(i.cellEvents.cellMouseLeave=n.cellMouseLeave),"function"==typeof n.cellMouseOver&&(i.cellEvents.cellMouseOver=n.cellMouseOver),"function"==typeof n.cellMouseOut&&(i.cellEvents.cellMouseOut=n.cellMouseOut),"function"==typeof n.cellMouseMove&&(i.cellEvents.cellMouseMove=n.cellMouseMove),"function"==typeof n.cellTap&&(i.cellEvents.cellTap=n.cellTap),"function"==typeof n.cellDblTap&&(i.cellEvents.cellDblTap=n.cellDblTap),"function"==typeof n.cellTapHold&&(i.cellEvents.cellTapHold=n.cellTapHold),"function"==typeof n.cellEdited&&(i.cellEvents.cellEdited=n.cellEdited),"function"==typeof n.cellEditing&&(i.cellEvents.cellEditing=n.cellEditing),"function"==typeof n.cellEditCancelled&&(i.cellEvents.cellEditCancelled=n.cellEditCancelled)},i.prototype._buildColumnHeader=function(){var t=this,e=t.definition,o=t.table;if(o.modExists("sort")&&o.modules.sort.initializeColumn(t,t.contentElement),o.modExists("format")&&o.modules.format.initializeColumn(t),void 0!==e.editor&&o.modExists("edit")&&o.modules.edit.initializeColumn(t),void 0!==e.validator&&o.modExists("validate")&&o.modules.validate.initializeColumn(t),o.modExists("mutator")&&o.modules.mutator.initializeColumn(t),o.modExists("accessor")&&o.modules.accessor.initializeColumn(t),_typeof(o.options.responsiveLayout)&&o.modExists("responsiveLayout")&&o.modules.responsiveLayout.initializeColumn(t),void 0!==e.visible&&(e.visible?t.show(!0):t.hide(!0)),e.cssClass){e.cssClass.split(" ").forEach(function(e){t.element.classList.add(e)})}e.field&&this.element.setAttribute("tabulator-field",e.field),t.setMinWidth(void 0===e.minWidth?t.table.options.columnMinWidth:parseInt(e.minWidth)),t.reinitializeWidth(),t.tooltip=t.definition.tooltip||!1===t.definition.tooltip?t.definition.tooltip:t.table.options.tooltips,t.hozAlign=void 0===t.definition.align?"":t.definition.align},i.prototype._buildColumnHeaderContent=function(){var t=this,e=(t.definition,t.table,document.createElement("div"));return e.classList.add("tabulator-col-content"),e.appendChild(t._buildColumnHeaderTitle()),e},i.prototype._buildColumnHeaderTitle=function(){var t=this,e=t.definition,o=t.table,i=document.createElement("div");if(i.classList.add("tabulator-col-title"),e.editableTitle){var n=document.createElement("input");n.classList.add("tabulator-title-editor"),n.addEventListener("click",function(t){t.stopPropagation(),n.focus()}),n.addEventListener("change",function(){e.title=n.value,o.options.columnTitleChanged.call(t.table,t.getComponent())}),i.appendChild(n),e.field?o.modules.localize.bind("columns|"+e.field,function(t){n.value=t||e.title||"&nbsp;"}):n.value=e.title||"&nbsp;"}else e.field?o.modules.localize.bind("columns|"+e.field,function(o){t._formatColumnHeaderTitle(i,o||e.title||"&nbsp;")}):t._formatColumnHeaderTitle(i,e.title||"&nbsp;");return i},i.prototype._formatColumnHeaderTitle=function(t,e){var o,i,n,s,r,a=this;if(this.definition.titleFormatter&&this.table.modExists("format"))switch(o=this.table.modules.format.getFormatter(this.definition.titleFormatter),r=function(t){a.titleFormatterRendered=t},s={getValue:function(){return e},getElement:function(){return t}},n=this.definition.titleFormatterParams||{},n="function"==typeof n?n():n,i=o.call(this.table.modules.format,s,n,r),void 0===i?"undefined":_typeof(i)){case"object":i instanceof Node?t.appendChild(i):(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:",i));break;case"undefined":case"null":t.innerHTML="";break;default:t.innerHTML=i}else t.innerHTML=e},i.prototype._buildGroupHeader=function(){var t=this;if(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(e){t.element.classList.add(e)})}this.element.appendChild(this.groupElement)},i.prototype._getFlatData=function(t){return t[this.field]},i.prototype._getNestedData=function(t){for(var e,o=t,i=this.fieldStructure,n=i.length,s=0;s<n&&(o=o[i[s]],e=o,o);s++);return e},i.prototype._setFlatData=function(t,e){this.field&&(t[this.field]=e)},i.prototype._setNesteData=function(t,e){for(var o=t,i=this.fieldStructure,n=i.length,s=0;s<n;s++)s==n-1?o[i[s]]=e:(o[i[s]]||(o[i[s]]={}),o=o[i[s]])},i.prototype.attachColumn=function(t){var e=this;e.groupElement?(e.columns.push(t),e.groupElement.appendChild(t.getElement())):console.warn("Column Warning - Column being attached to another column instead of column group")},i.prototype.verticalAlign=function(t,e){var o=this.parent.isGroup?this.parent.getGroupElement().clientHeight:e||this.parent.getHeadersElement().clientHeight;this.element.style.height=o+"px",this.isGroup&&(this.groupElement.style.minHeight=o-this.contentElement.offsetHeight+"px"),this.isGroup||"top"===t||(this.element.style.paddingTop="bottom"===t?this.element.clientHeight-this.contentElement.offsetHeight+"px":(this.element.clientHeight-this.contentElement.offsetHeight)/2+"px"),this.columns.forEach(function(e){e.verticalAlign(t)})},i.prototype.clearVerticalAlign=function(){this.element.style.paddingTop="",this.element.style.height="",this.element.style.minHeight="",this.groupElement.style.minHeight="",this.columns.forEach(function(t){t.clearVerticalAlign()})},i.prototype.bindModuleColumns=function(){"rownum"==this.definition.formatter&&(this.table.rowManager.rowNumColumn=this)},i.prototype.getElement=function(){return this.element},i.prototype.getGroupElement=function(){return this.groupElement},i.prototype.getField=function(){return this.field},i.prototype.getFirstColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[0].getFirstColumn():this},i.prototype.getLastColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[this.columns.length-1].getLastColumn():this},i.prototype.getColumns=function(){return this.columns},i.prototype.getCells=function(){return this.cells},i.prototype.getTopColumn=function(){return this.parent.isGroup?this.parent.getTopColumn():this},i.prototype.getDefinition=function(t){var e=[];return this.isGroup&&t&&(this.columns.forEach(function(t){e.push(t.getDefinition(!0))}),this.definition.columns=e),this.definition},i.prototype.checkColumnVisibility=function(){var t=!1;this.columns.forEach(function(e){e.visible&&(t=!0)}),t?(this.show(),this.parent.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1)):this.hide()},i.prototype.show=function(t,e){this.visible||(this.visible=!0,this.element.style.display="",this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(t){t.show()}),this.isGroup||null!==this.width||this.reinitializeWidth(),this.table.columnManager._verticalAlignHeaders(),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns"),!e&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),t||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!0),this.parent.isGroup&&this.parent.matchChildWidths())},i.prototype.hide=function(t,e){this.visible&&(this.visible=!1,this.element.style.display="none",this.table.columnManager._verticalAlignHeaders(),this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(t){t.hide()}),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns"),!e&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),t||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1),this.parent.isGroup&&this.parent.matchChildWidths())},i.prototype.matchChildWidths=function(){var t=0;this.contentElement&&this.columns.length&&(this.columns.forEach(function(e){e.visible&&(t+=e.getWidth())}),this.contentElement.style.maxWidth=t-1+"px")},i.prototype.setWidth=function(t){this.widthFixed=!0,this.setWidthActual(t)},i.prototype.setWidthActual=function(t){isNaN(t)&&(t=Math.floor(this.table.element.clientWidth/100*parseInt(t))),t=Math.max(this.minWidth,t),this.width=t,this.widthStyled=t?t+"px":"",this.element.style.width=this.widthStyled,this.isGroup||this.cells.forEach(function(t){t.setWidth()}),this.parent.isGroup&&this.parent.matchChildWidths(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()},i.prototype.checkCellHeights=function(){var t=[];this.cells.forEach(function(e){e.row.heightInitialized&&(null!==e.row.getElement().offsetParent?(t.push(e.row),e.row.clearCellHeight()):e.row.heightInitialized=!1)}),t.forEach(function(t){t.calcHeight()}),t.forEach(function(t){t.setCellHeight()})},i.prototype.getWidth=function(){return this.width},i.prototype.getHeight=function(){return this.element.offsetHeight},i.prototype.setMinWidth=function(t){this.minWidth=t,this.minWidthStyled=t?t+"px":"",this.element.style.minWidth=this.minWidthStyled,this.cells.forEach(function(t){t.setMinWidth()})},i.prototype.delete=function(){var t=this;return new Promise(function(e,o){t.isGroup&&t.columns.forEach(function(t){t.delete()});for(var i=t.cells.length,n=0;n<i;n++)t.cells[0].delete();t.element.parentNode.removeChild(t.element),t.table.columnManager.deregisterColumn(t),e()})},i.prototype.columnRendered=function(){this.titleFormatterRendered&&this.titleFormatterRendered()},i.prototype.generateCell=function(t){var e=this,o=new l(e,t);return this.cells.push(o),o},i.prototype.nextColumn=function(){var t=this.table.columnManager.findColumnIndex(this);return t>-1&&this._nextVisibleColumn(t+1)},i.prototype._nextVisibleColumn=function(t){var e=this.table.columnManager.getColumnByIndex(t);return!e||e.visible?e:this._nextVisibleColumn(t+1)},i.prototype.prevColumn=function(){var t=this.table.columnManager.findColumnIndex(this);return t>-1&&this._prevVisibleColumn(t-1)},i.prototype._prevVisibleColumn=function(t){var e=this.table.columnManager.getColumnByIndex(t);return!e||e.visible?e:this._prevVisibleColumn(t-1)},i.prototype.reinitializeWidth=function(t){this.widthFixed=!1,void 0===this.definition.width||t||this.setWidth(this.definition.width),this.table.modExists("filter")&&this.table.modules.filter.hideHeaderFilterElements(),this.fitToData(),this.table.modExists("filter")&&this.table.modules.filter.showHeaderFilterElements()},i.prototype.fitToData=function(){var t=this;this.widthFixed||(this.element.style.width="",t.cells.forEach(function(t){t.clearWidth()}));var e=this.element.offsetWidth;t.width&&this.widthFixed||(t.cells.forEach(function(t){var o=t.getWidth();o>e&&(e=o)}),e&&t.setWidthActual(e+1))},i.prototype.updateDefinition=function(t){var e=this;return new Promise(function(o,i){var n;e.isGroup?(console.warn("Column Update Error - The updateDefintion function is only available on columns, not column groups"),i("Column Update Error - The updateDefintion function is only available on columns, not column groups")):(n=Object.assign({},e.getDefinition()),n=Object.assign(n,t),e.table.columnManager.addColumn(n,!1,e).then(function(t){n.field==e.field&&(e.field=!1),e.delete().then(function(){o(t.getComponent())}).catch(function(t){i(t)})}).catch(function(t){i(t)}))})},i.prototype.deleteCell=function(t){var e=this.cells.indexOf(t);e>-1&&this.cells.splice(e,1)},i.prototype.defaultOptionList=["title","field","columns","visible","align","width","minWidth","widthGrow","widthShrink","resizable","frozen","responsive","tooltip","cssClass","rowHandle","hideInHtml","print","htmlOutput","sorter","sorterParams","formatter","formatterParams","variableHeight","editable","editor","editorParams","validator","mutator","mutatorParams","mutatorData","mutatorDataParams","mutatorEdit","mutatorEditParams","mutatorClipboard","mutatorClipboardParams","accessor","accessorParams","accessorData","accessorDataParams","accessorDownload","accessorDownloadParams","accessorClipboard","accessorClipboardParams","clipboard","download","downloadTitle","topCalc","topCalcParams","topCalcFormatter","topCalcFormatterParams","bottomCalc","bottomCalcParams","bottomCalcFormatter","bottomCalcFormatterParams","cellClick","cellDblClick","cellContext","cellTap","cellDblTap","cellTapHold","cellMouseEnter","cellMouseLeave","cellMouseOver","cellMouseOut","cellMouseMove","cellEditing","cellEdited","cellEditCancelled","headerSort","headerSortStartingDir","headerSortTristate","headerClick","headerDblClick","headerContext","headerTap","headerDblTap","headerTapHold","headerTooltip","headerVertical","editableTitle","titleFormatter","titleFormatterParams","headerFilter","headerFilterPlaceholder","headerFilterParams","headerFilterEmptyCheck","headerFilterFunc","headerFilterFuncParams","headerFilterLiveFilter","print"],i.prototype.getComponent=function(){return new o(this)};var n=function(t){this.table=t,this.element=this.createHolderElement(),this.tableElement=this.createTableElement(),this.columnManager=null,this.height=0,this.firstRender=!1,
+this.renderMode="classic",this.rows=[],this.activeRows=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0,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=[],this.rowNumColumn=!1,this.redrawBlock=!1,this.redrawBlockRestoreConfig=!1,this.redrawBlockRederInPosition=!1};n.prototype.createHolderElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-tableHolder"),t.setAttribute("tabindex",0),t},n.prototype.createTableElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-table"),t},n.prototype.getElement=function(){return this.element},n.prototype.getTableElement=function(){return this.tableElement},n.prototype.getRowPosition=function(t,e){return e?this.activeRows.indexOf(t):this.rows.indexOf(t)},n.prototype.setColumnManager=function(t){this.columnManager=t},n.prototype.initialize=function(){var t=this;t.setRenderMode(),t.element.appendChild(t.tableElement),t.firstRender=!0,t.element.addEventListener("scroll",function(){var e=t.element.scrollLeft;t.scrollLeft!=e&&(t.columnManager.scrollHorizontal(e),t.table.options.groupBy&&t.table.modules.groupRows.scrollHeaders(e),t.table.modExists("columnCalcs")&&t.table.modules.columnCalcs.scrollHorizontal(e),t.table.options.scrollHorizontal(e)),t.scrollLeft=e}),"virtual"===this.renderMode&&t.element.addEventListener("scroll",function(){var e=t.element.scrollTop,o=t.scrollTop>e;t.scrollTop!=e?(t.scrollTop=e,t.scrollVertical(o),"scroll"==t.table.options.ajaxProgressiveLoad&&t.table.modules.ajax.nextPage(t.element.scrollHeight-t.element.clientHeight-e),t.table.options.scrollVertical(e)):t.scrollTop=e})},n.prototype.findRow=function(t){var e=this;if("object"!=(void 0===t?"undefined":_typeof(t))){if(void 0===t||null===t)return!1;return e.rows.find(function(o){return o.data[e.table.options.index]==t})||!1}if(t instanceof r)return t;if(t instanceof s)return t._getSelf()||!1;if("undefined"!=typeof HTMLElement&&t instanceof HTMLElement){return e.rows.find(function(e){return e.element===t})||!1}return!1},n.prototype.getRowFromDataObject=function(t){return this.rows.find(function(e){return e.data===t})||!1},n.prototype.getRowFromPosition=function(t,e){return e?this.activeRows[t]:this.rows[t]},n.prototype.scrollToRow=function(t,e,o){var i,n=this,s=this.getDisplayRows().indexOf(t),r=t.getElement(),a=0;return new Promise(function(t,l){if(s>-1){if(void 0===e&&(e=n.table.options.scrollToRowPosition),void 0===o&&(o=n.table.options.scrollToRowIfVisible),"nearest"===e)switch(n.renderMode){case"classic":i=u.prototype.helpers.elOffset(r).top,e=Math.abs(n.element.scrollTop-i)>Math.abs(n.element.scrollTop+n.element.clientHeight-i)?"bottom":"top";break;case"virtual":e=Math.abs(n.vDomTop-s)>Math.abs(n.vDomBottom-s)?"bottom":"top"}if(!o&&u.prototype.helpers.elVisible(r)&&(a=u.prototype.helpers.elOffset(r).top-u.prototype.helpers.elOffset(n.element).top)>0&&a<n.element.clientHeight-r.offsetHeight)return!1;switch(n.renderMode){case"classic":n.element.scrollTop=u.prototype.helpers.elOffset(r).top-u.prototype.helpers.elOffset(n.element).top+n.element.scrollTop;break;case"virtual":n._virtualRenderFill(s,!0)}switch(e){case"middle":case"center":n.element.scrollHeight-n.element.scrollTop==n.element.clientHeight?n.element.scrollTop=n.element.scrollTop+(r.offsetTop-n.element.scrollTop)-(n.element.scrollHeight-r.offsetTop)/2:n.element.scrollTop=n.element.scrollTop-n.element.clientHeight/2;break;case"bottom":n.element.scrollHeight-n.element.scrollTop==n.element.clientHeight?n.element.scrollTop=n.element.scrollTop-(n.element.scrollHeight-r.offsetTop)+r.offsetHeight:n.element.scrollTop=n.element.scrollTop-n.element.clientHeight+r.offsetHeight}t()}else console.warn("Scroll Error - Row not visible"),l("Scroll Error - Row not visible")})},n.prototype.setData=function(t,e){var o=this,i=this;return new Promise(function(n,s){e&&o.getDisplayRows().length?i.table.options.pagination?i._setDataActual(t,!0):o.reRenderInPosition(function(){i._setDataActual(t)}):(o.table.options.autoColumns&&o.table.columnManager.generateColumnsFromRowData(t),o.resetScroll(),o._setDataActual(t)),n()})},n.prototype._setDataActual=function(t,e){var o=this;o.table.options.dataLoading.call(this.table,t),this._wipeElements(),this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.clear(),Array.isArray(t)?(this.table.modExists("selectRow")&&this.table.modules.selectRow.clearSelectionData(),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchData(t),t.forEach(function(t,e){if(t&&"object"===(void 0===t?"undefined":_typeof(t))){var i=new r(t,o);o.rows.push(i)}else console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:",t)}),o.table.options.dataLoaded.call(this.table,t),o.refreshActiveData(!1,!1,e)):console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ",void 0===t?"undefined":_typeof(t),"\nData:     ",t)},n.prototype._wipeElements=function(){this.rows.forEach(function(t){t.wipe()}),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.wipe(),this.rows=[]},n.prototype.deleteRow=function(t,e){var o=this.rows.indexOf(t),i=this.activeRows.indexOf(t);i>-1&&this.activeRows.splice(i,1),o>-1&&this.rows.splice(o,1),this.setActiveRows(this.activeRows),this.displayRowIterator(function(e){var o=e.indexOf(t);o>-1&&e.splice(o,1)}),e||this.reRenderInPosition(),this.table.options.rowDeleted.call(this.table,t.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.groupRows.updateGroupRows(!0):this.table.options.pagination&&this.table.modExists("page")?this.refreshActiveData(!1,!1,!0):this.table.options.pagination&&this.table.modExists("page")&&this.refreshActiveData("page")},n.prototype.addRow=function(t,e,o,i){var n=this.addRowActual(t,e,o,i);return this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowAdd",n,{data:t,pos:e,index:o}),n},n.prototype.addRows=function(t,e,o){var i=this,n=this,s=0,r=[];return new Promise(function(a,l){e=i.findAddRowPos(e),Array.isArray(t)||(t=[t]),s=t.length-1,(void 0===o&&e||void 0!==o&&!e)&&t.reverse(),t.forEach(function(t,i){var s=n.addRow(t,e,o,!0);r.push(s)}),i.table.options.groupBy&&i.table.modExists("groupRows")?i.table.modules.groupRows.updateGroupRows(!0):i.table.options.pagination&&i.table.modExists("page")?i.refreshActiveData(!1,!1,!0):i.reRenderInPosition(),i.table.modExists("columnCalcs")&&i.table.modules.columnCalcs.recalc(i.table.rowManager.activeRows),a(r)})},n.prototype.findAddRowPos=function(t){return void 0===t&&(t=this.table.options.addRowPos),"pos"===t&&(t=!0),"bottom"===t&&(t=!1),t},n.prototype.addRowActual=function(t,e,o,i){var n,s=t instanceof r?t:new r(t||{},this),a=this.findAddRowPos(e);if(!o&&this.table.options.pagination&&"page"==this.table.options.paginationAddRow&&(n=this.getDisplayRows(),a?n.length?o=n[0]:this.activeRows.length&&(o=this.activeRows[this.activeRows.length-1],a=!1):n.length&&(o=n[n.length-1],a=!(n.length<this.table.modules.page.getPageSize()))),o&&(o=this.findRow(o)),this.table.options.groupBy&&this.table.modExists("groupRows")){this.table.modules.groupRows.assignRowToGroup(s);var l=s.getGroup().rows;l.length>1&&(!o||o&&-1==l.indexOf(o)?a?l[0]!==s&&(o=l[0],this._moveRowInArray(s.getGroup().rows,s,o,!a)):l[l.length-1]!==s&&(o=l[l.length-1],this._moveRowInArray(s.getGroup().rows,s,o,!a)):this._moveRowInArray(s.getGroup().rows,s,o,!a))}if(o){var c=this.rows.indexOf(o),u=this.activeRows.indexOf(o);this.displayRowIterator(function(t){var e=t.indexOf(o);e>-1&&t.splice(a?e:e+1,0,s)}),u>-1&&this.activeRows.splice(a?u:u+1,0,s),c>-1&&this.rows.splice(a?c:c+1,0,s)}else a?(this.displayRowIterator(function(t){t.unshift(s)}),this.activeRows.unshift(s),this.rows.unshift(s)):(this.displayRowIterator(function(t){t.push(s)}),this.activeRows.push(s),this.rows.push(s));return this.setActiveRows(this.activeRows),this.table.options.rowAdded.call(this.table,s.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),i||this.reRenderInPosition(),s},n.prototype.moveRow=function(t,e,o){this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowMove",t,{pos:this.getRowPosition(t),to:e,after:o}),this.moveRowActual(t,e,o),this.table.options.rowMoved.call(this.table,t.getComponent())},n.prototype.moveRowActual=function(t,e,o){var i=this;if(this._moveRowInArray(this.rows,t,e,o),this._moveRowInArray(this.activeRows,t,e,o),this.displayRowIterator(function(n){i._moveRowInArray(n,t,e,o)}),this.table.options.groupBy&&this.table.modExists("groupRows")){var n=e.getGroup(),s=t.getGroup();n===s?this._moveRowInArray(n.rows,t,e,o):(s&&s.removeRow(t),n.insertRow(t,e,o))}},n.prototype._moveRowInArray=function(t,e,o,i){var n,s,r,a;if(e!==o&&(n=t.indexOf(e),n>-1&&(t.splice(n,1),s=t.indexOf(o),s>-1?i?t.splice(s+1,0,e):t.splice(s,0,e):t.splice(n,0,e)),t===this.getDisplayRows())){r=n<s?n:s,a=s>n?s:n+1;for(var l=r;l<=a;l++)t[l]&&this.styleRow(t[l],l)}},n.prototype.clearData=function(){this.setData([])},n.prototype.getRowIndex=function(t){return this.findRowIndex(t,this.rows)},n.prototype.getDisplayRowIndex=function(t){var e=this.getDisplayRows().indexOf(t);return e>-1&&e},n.prototype.nextDisplayRow=function(t,e){var o=this.getDisplayRowIndex(t),i=!1;return!1!==o&&o<this.displayRowsCount-1&&(i=this.getDisplayRows()[o+1]),!i||i instanceof r&&"row"==i.type?i:this.nextDisplayRow(i,e)},n.prototype.prevDisplayRow=function(t,e){var o=this.getDisplayRowIndex(t),i=!1;return o&&(i=this.getDisplayRows()[o-1]),!i||i instanceof r&&"row"==i.type?i:this.prevDisplayRow(i,e)},n.prototype.findRowIndex=function(t,e){var o;return!!((t=this.findRow(t))&&(o=e.indexOf(t))>-1)&&o},n.prototype.getData=function(t,e){var o=[];return this.getRows(t).forEach(function(t){o.push(t.getData(e||"data"))}),o},n.prototype.getComponents=function(t){var e=[];return this.getRows(t).forEach(function(t){e.push(t.getComponent())}),e},n.prototype.getDataCount=function(t){return this.getRows(t).length},n.prototype._genRemoteRequest=function(){var t=this,e=t.table,o=e.options,i={};if(e.modExists("page")){if(o.ajaxSorting){var n=t.table.modules.sort.getSort();n.forEach(function(t){delete t.column}),i[t.table.modules.page.paginationDataSentNames.sorters]=n}if(o.ajaxFiltering){var s=t.table.modules.filter.getFilters(!0,!0);i[t.table.modules.page.paginationDataSentNames.filters]=s}t.table.modules.ajax.setParams(i,!0)}e.modules.ajax.sendRequest().then(function(e){t.setData(e)}).catch(function(t){})},n.prototype.filterRefresh=function(){var t=this.table,e=t.options,o=this.scrollLeft;e.ajaxFiltering?"remote"==e.pagination&&t.modExists("page")?(t.modules.page.reset(!0),t.modules.page.setPage(1).then(function(){}).catch(function(){})):e.ajaxProgressiveLoad?t.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData("filter"),this.scrollHorizontal(o)},n.prototype.sorterRefresh=function(t){var e=this.table,o=this.table.options,i=this.scrollLeft;o.ajaxSorting?("remote"==o.pagination||o.progressiveLoad)&&e.modExists("page")?(e.modules.page.reset(!0),e.modules.page.setPage(1).then(function(){}).catch(function(){})):o.ajaxProgressiveLoad?e.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData(t?"filter":"sort"),this.scrollHorizontal(i)},n.prototype.scrollHorizontal=function(t){this.scrollLeft=t,this.element.scrollLeft=t,this.table.options.groupBy&&this.table.modules.groupRows.scrollHeaders(t),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.scrollHorizontal(t)},n.prototype.refreshActiveData=function(t,e,o){var i,n=this,s=this,r=this.table,a=["all","filter","sort","display","freeze","group","tree","page"];if(this.redrawBlock)return void((!this.redrawBlockRestoreConfig||a.indexOf(t)<a.indexOf(this.redrawBlockRestoreConfig.stage))&&(this.redrawBlockRestoreConfig={stage:t,skipStage:e,renderInPosition:o}));switch(s.table.modExists("edit")&&s.table.modules.edit.cancelEdit(),t||(t="all"),r.options.selectable&&!r.options.selectablePersistence&&r.modExists("selectRow")&&r.modules.selectRow.deselectRows(),t){case"all":case"filter":e?e=!1:r.modExists("filter")?s.setActiveRows(r.modules.filter.filter(s.rows)):s.setActiveRows(s.rows.slice(0));case"sort":e?e=!1:r.modExists("sort")&&r.modules.sort.sort(this.activeRows),this.rowNumColumn&&this.activeRows.forEach(function(t){var e=t.getCell(n.rowNumColumn);e&&e._generateContents()});case"display":this.resetDisplayRows();case"freeze":e?e=!1:this.table.modExists("frozenRows")&&r.modules.frozenRows.isFrozen()&&(r.modules.frozenRows.getDisplayIndex()||r.modules.frozenRows.setDisplayIndex(this.getNextDisplayIndex()),i=r.modules.frozenRows.getDisplayIndex(),!0!==(i=s.setDisplayRows(r.modules.frozenRows.getRows(this.getDisplayRows(i-1)),i))&&r.modules.frozenRows.setDisplayIndex(i));case"group":e?e=!1:r.options.groupBy&&r.modExists("groupRows")&&(r.modules.groupRows.getDisplayIndex()||r.modules.groupRows.setDisplayIndex(this.getNextDisplayIndex()),i=r.modules.groupRows.getDisplayIndex(),!0!==(i=s.setDisplayRows(r.modules.groupRows.getRows(this.getDisplayRows(i-1)),i))&&r.modules.groupRows.setDisplayIndex(i));case"tree":e?e=!1:r.options.dataTree&&r.modExists("dataTree")&&(r.modules.dataTree.getDisplayIndex()||r.modules.dataTree.setDisplayIndex(this.getNextDisplayIndex()),i=r.modules.dataTree.getDisplayIndex(),!0!==(i=s.setDisplayRows(r.modules.dataTree.getRows(this.getDisplayRows(i-1)),i))&&r.modules.dataTree.setDisplayIndex(i)),r.options.pagination&&r.modExists("page")&&!o&&"local"==r.modules.page.getMode()&&r.modules.page.reset();case"page":e?e=!1:r.options.pagination&&r.modExists("page")&&(r.modules.page.getDisplayIndex()||r.modules.page.setDisplayIndex(this.getNextDisplayIndex()),i=r.modules.page.getDisplayIndex(),"local"==r.modules.page.getMode()&&r.modules.page.setMaxRows(this.getDisplayRows(i-1).length),!0!==(i=s.setDisplayRows(r.modules.page.getRows(this.getDisplayRows(i-1)),i))&&r.modules.page.setDisplayIndex(i))}u.prototype.helpers.elVisible(s.element)&&(o?s.reRenderInPosition():(s.renderTable(),r.options.layoutColumnsOnNewData&&s.table.columnManager.redraw(!0))),r.modExists("columnCalcs")&&r.modules.columnCalcs.recalc(this.activeRows)},n.prototype.setActiveRows=function(t){this.activeRows=t,this.activeRowsCount=this.activeRows.length},n.prototype.resetDisplayRows=function(){this.displayRows=[],this.displayRows.push(this.activeRows.slice(0)),this.displayRowsCount=this.displayRows[0].length,this.table.modExists("frozenRows")&&this.table.modules.frozenRows.setDisplayIndex(0),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.setDisplayIndex(0),this.table.options.pagination&&this.table.modExists("page")&&this.table.modules.page.setDisplayIndex(0)},n.prototype.getNextDisplayIndex=function(){return this.displayRows.length},n.prototype.setDisplayRows=function(t,e){var o=!0;return e&&void 0!==this.displayRows[e]?(this.displayRows[e]=t,o=!0):(this.displayRows.push(t),o=e=this.displayRows.length-1),e==this.displayRows.length-1&&(this.displayRowsCount=this.displayRows[this.displayRows.length-1].length),o},n.prototype.getDisplayRows=function(t){return void 0===t?this.displayRows.length?this.displayRows[this.displayRows.length-1]:[]:this.displayRows[t]||[]},n.prototype.getVisibleRows=function(t){var e=this.element.scrollTop,o=this.element.clientHeight+e,i=!1,n=0,s=0,r=this.getDisplayRows();if(t){this.getDisplayRows();for(var a=this.vDomTop;a<=this.vDomBottom;a++)if(r[a])if(i){if(!(o-r[a].getElement().offsetTop>=0))break;s=a}else if(e-r[a].getElement().offsetTop>=0)n=a;else{if(i=!0,!(o-r[a].getElement().offsetTop>=0))break;s=a}}else n=this.vDomTop,s=this.vDomBottom;return r.slice(n,s+1)},n.prototype.displayRowIterator=function(t){this.displayRows.forEach(t),this.displayRowsCount=this.displayRows[this.displayRows.length-1].length},n.prototype.getRows=function(t){var e;switch(t){case"active":e=this.activeRows;break;case"visible":e=this.getVisibleRows(!0);break;default:e=this.rows}return e},n.prototype.reRenderInPosition=function(t){if("virtual"==this.getRenderMode())if(this.redrawBlock)t?t():this.redrawBlockRederInPosition=!0;else{for(var e=this.element.scrollTop,o=!1,i=!1,n=this.scrollLeft,s=this.getDisplayRows(),r=this.vDomTop;r<=this.vDomBottom;r++)if(s[r]){var a=e-s[r].getElement().offsetTop;if(!(!1===i||Math.abs(a)<i))break;i=a,o=r}t&&t(),this._virtualRenderFill(!1===o?this.displayRowsCount-1:o,!0,i||0),this.scrollHorizontal(n)}else this.renderTable(),t&&t()},n.prototype.setRenderMode=function(){(this.table.element.clientHeight||this.table.options.height)&&this.table.options.virtualDom?this.renderMode="virtual":this.renderMode="classic"},n.prototype.getRenderMode=function(){return this.renderMode},n.prototype.renderTable=function(){var t=this;switch(t.table.options.renderStarted.call(this.table),t.element.scrollTop=0,t.renderMode){case"classic":t._simpleRender();break;case"virtual":t._virtualRenderFill()}t.firstRender&&(t.displayRowsCount?(t.firstRender=!1,t.table.modules.layout.layout()):t.renderEmptyScroll()),t.table.modExists("frozenColumns")&&t.table.modules.frozenColumns.layout(),t.displayRowsCount||t.table.options.placeholder&&(this.renderMode&&t.table.options.placeholder.setAttribute("tabulator-render-mode",this.renderMode),t.getElement().appendChild(t.table.options.placeholder)),t.table.options.renderComplete.call(this.table)},n.prototype._simpleRender=function(){this._clearVirtualDom(),this.displayRowsCount?this.checkClassicModeGroupHeaderWidth():this.renderEmptyScroll()},n.prototype.checkClassicModeGroupHeaderWidth=function(){var t=this,e=this.tableElement,o=!0;t.getDisplayRows().forEach(function(i,n){t.styleRow(i,n),e.appendChild(i.getElement()),i.initialize(!0),"group"!==i.type&&(o=!1)}),e.style.minWidth=o?t.table.columnManager.getWidth()+"px":""},n.prototype.renderEmptyScroll=function(){this.tableElement.style.minWidth=this.table.columnManager.getWidth()+"px",this.tableElement.style.minHeight="1px",this.tableElement.style.visibility="hidden"},n.prototype._clearVirtualDom=function(){var t=this.tableElement;for(this.table.options.placeholder&&this.table.options.placeholder.parentNode&&this.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);t.firstChild;)t.removeChild(t.firstChild);t.style.paddingTop="",t.style.paddingBottom="",t.style.minWidth="",t.style.minHeight="",t.style.visibility="",this.scrollTop=0,this.scrollLeft=0,this.vDomTop=0,this.vDomBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0},n.prototype.styleRow=function(t,e){var o=t.getElement();e%2?(o.classList.add("tabulator-row-even"),o.classList.remove("tabulator-row-odd")):(o.classList.add("tabulator-row-odd"),o.classList.remove("tabulator-row-even"))},n.prototype._virtualRenderFill=function(t,e,o){var i=this,n=i.tableElement,s=i.element,r=0,a=0,l=0,c=0,d=!0,h=i.getDisplayRows();if(t=t||0,o=o||0,t){for(;n.firstChild;)n.removeChild(n.firstChild);var p=(i.displayRowsCount-t+1)*i.vDomRowHeight;p<i.height&&(t-=Math.ceil((i.height-p)/i.vDomRowHeight))<0&&(t=0),r=Math.min(Math.max(Math.floor(i.vDomWindowBuffer/i.vDomRowHeight),i.vDomWindowMinMarginRows),t),t-=r}else i._clearVirtualDom();if(i.displayRowsCount&&u.prototype.helpers.elVisible(i.element)){for(i.vDomTop=t,i.vDomBottom=t-1;(a<=i.height+i.vDomWindowBuffer||c<i.vDomWindowMinTotalRows)&&i.vDomBottom<i.displayRowsCount-1;){var m=i.vDomBottom+1,f=h[m],g=0;i.styleRow(f,m),n.appendChild(f.getElement()),f.initialized?f.heightInitialized||f.normalizeHeight(!0):f.initialize(!0),g=f.getHeight(),c<r?l+=g:a+=g,g>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*g),"group"!==f.type&&(d=!1),i.vDomBottom++,c++}t?(i.vDomTopPad=e?i.vDomRowHeight*this.vDomTop+o:i.scrollTop-l,i.vDomBottomPad=i.vDomBottom==i.displayRowsCount-1?0:Math.max(i.vDomScrollHeight-i.vDomTopPad-a-l,0)):(this.vDomTopPad=0,i.vDomRowHeight=Math.floor((a+l)/c),i.vDomBottomPad=i.vDomRowHeight*(i.displayRowsCount-i.vDomBottom-1),i.vDomScrollHeight=l+a+i.vDomBottomPad-i.height),n.style.paddingTop=i.vDomTopPad+"px",n.style.paddingBottom=i.vDomBottomPad+"px",e&&(this.scrollTop=i.vDomTopPad+l+o-(this.element.scrollWidth>this.element.clientWidth?this.element.offsetHeight-this.element.clientHeight:0)),this.scrollTop=Math.min(this.scrollTop,this.element.scrollHeight-this.height),this.element.scrollWidth>this.element.offsetWidth&&e&&(this.scrollTop+=this.element.offsetHeight-this.element.clientHeight),this.vDomScrollPosTop=this.scrollTop,this.vDomScrollPosBottom=this.scrollTop,s.scrollTop=this.scrollTop,n.style.minWidth=d?i.table.columnManager.getWidth()+"px":"",i.table.options.groupBy&&"fitDataFill"!=i.table.modules.layout.getMode()&&i.displayRowsCount==i.table.modules.groupRows.countGroups()&&(i.tableElement.style.minWidth=i.table.columnManager.getWidth())}else this.renderEmptyScroll()},n.prototype.scrollVertical=function(t){var e=this.scrollTop-this.vDomScrollPosTop,o=this.scrollTop-this.vDomScrollPosBottom,i=2*this.vDomWindowBuffer;if(-e>i||o>i){var n=this.scrollLeft;this._virtualRenderFill(Math.floor(this.element.scrollTop/this.element.scrollHeight*this.displayRowsCount)),this.scrollHorizontal(n)}else t?(e<0&&this._addTopRow(-e),o<0&&this.vDomScrollHeight-this.scrollTop>this.vDomWindowBuffer&&this._removeBottomRow(-o)):(e>=0&&this.scrollTop>this.vDomWindowBuffer&&this._removeTopRow(e),o>=0&&this._addBottomRow(o))},n.prototype._addTopRow=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=this.tableElement,i=this.getDisplayRows();if(this.vDomTop){var n=this.vDomTop-1,s=i[n],r=s.getHeight()||this.vDomRowHeight;t>=r&&(this.styleRow(s,n),o.insertBefore(s.getElement(),o.firstChild),s.initialized&&s.heightInitialized||(this.vDomTopNewRows.push(s),s.heightInitialized||s.clearCellHeight()),s.initialize(),this.vDomTopPad-=r,this.vDomTopPad<0&&(this.vDomTopPad=n*this.vDomRowHeight),n||(this.vDomTopPad=0),o.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop-=r,this.vDomTop--),t=-(this.scrollTop-this.vDomScrollPosTop),s.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*s.getHeight()),e<this.vDomMaxRenderChain&&this.vDomTop&&t>=(i[this.vDomTop-1].getHeight()||this.vDomRowHeight)?this._addTopRow(t,e+1):this._quickNormalizeRowHeight(this.vDomTopNewRows)}},n.prototype._removeTopRow=function(t){var e=this.tableElement,o=this.getDisplayRows()[this.vDomTop],i=o.getHeight()||this.vDomRowHeight;if(t>=i){var n=o.getElement();n.parentNode.removeChild(n),this.vDomTopPad+=i,e.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop+=this.vDomTop?i:i+this.vDomWindowBuffer,this.vDomTop++,t=this.scrollTop-this.vDomScrollPosTop,this._removeTopRow(t)}},n.prototype._addBottomRow=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=this.tableElement,i=this.getDisplayRows();if(this.vDomBottom<this.displayRowsCount-1){var n=this.vDomBottom+1,s=i[n],r=s.getHeight()||this.vDomRowHeight;t>=r&&(this.styleRow(s,n),o.appendChild(s.getElement()),s.initialized&&s.heightInitialized||(this.vDomBottomNewRows.push(s),s.heightInitialized||s.clearCellHeight()),s.initialize(),this.vDomBottomPad-=r,(this.vDomBottomPad<0||n==this.displayRowsCount-1)&&(this.vDomBottomPad=0),o.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom+=r,this.vDomBottom++),t=this.scrollTop-this.vDomScrollPosBottom,s.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*s.getHeight()),e<this.vDomMaxRenderChain&&this.vDomBottom<this.displayRowsCount-1&&t>=(i[this.vDomBottom+1].getHeight()||this.vDomRowHeight)?this._addBottomRow(t,e+1):this._quickNormalizeRowHeight(this.vDomBottomNewRows)}},n.prototype._removeBottomRow=function(t){var e=this.tableElement,o=this.getDisplayRows()[this.vDomBottom],i=o.getHeight()||this.vDomRowHeight;if(t>=i){var n=o.getElement();n.parentNode&&n.parentNode.removeChild(n),this.vDomBottomPad+=i,this.vDomBottomPad<0&&(this.vDomBottomPad=0),e.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom-=i,this.vDomBottom--,t=-(this.scrollTop-this.vDomScrollPosBottom),this._removeBottomRow(t)}},n.prototype._quickNormalizeRowHeight=function(t){t.forEach(function(t){t.calcHeight()}),t.forEach(function(t){t.setCellHeight()}),t.length=0},n.prototype.normalizeHeight=function(){this.activeRows.forEach(function(t){t.normalizeHeight()})},n.prototype.adjustTableSize=function(){if("virtual"===this.renderMode){this.height=this.element.clientHeight,this.vDomWindowBuffer=this.table.options.virtualDomBuffer||this.height;var t=this.columnManager.getElement().offsetHeight+(this.table.footerManager&&!this.table.footerManager.external?this.table.footerManager.getElement().offsetHeight:0);this.element.style.minHeight="calc(100% - "+t+"px)",this.element.style.height="calc(100% - "+t+"px)",this.element.style.maxHeight="calc(100% - "+t+"px)"}},n.prototype.reinitialize=function(){this.rows.forEach(function(t){t.reinitialize()})},n.prototype.blockRedraw=function(){this.redrawBlock=!0,this.redrawBlockRestoreConfig=!1},n.prototype.restoreRedraw=function(){this.redrawBlock=!1,this.redrawBlockRestoreConfig?(this.refreshActiveData(this.redrawBlockRestoreConfig.stage,this.redrawBlockRestoreConfig.skipStage,this.redrawBlockRestoreConfig.renderInPosition),this.redrawBlockRestoreConfig=!1):this.redrawBlockRederInPosition&&this.reRenderInPosition(),this.redrawBlockRederInPosition=!1},n.prototype.redraw=function(t){var e=this.scrollLeft;this.adjustTableSize(),this.table.tableWidth=this.table.element.clientWidth,t?this.renderTable():("classic"==this.renderMode?this.table.options.groupBy?this.refreshActiveData("group",!1,!1):this._simpleRender():(this.reRenderInPosition(),this.scrollHorizontal(e)),this.displayRowsCount||this.table.options.placeholder&&this.getElement().appendChild(this.table.options.placeholder))},n.prototype.resetScroll=function(){if(this.element.scrollLeft=0,this.element.scrollTop=0,"ie"===this.table.browser){var t=document.createEvent("Event");t.initEvent("scroll",!1,!0),this.element.dispatchEvent(t)}else this.element.dispatchEvent(new Event("scroll"))};var s=function(t){this._row=t};s.prototype.getData=function(t){return this._row.getData(t)},s.prototype.getElement=function(){return this._row.getElement()},s.prototype.getCells=function(){var t=[];return this._row.getCells().forEach(function(e){t.push(e.getComponent())}),t},s.prototype.getCell=function(t){var e=this._row.getCell(t);return!!e&&e.getComponent()},s.prototype.getIndex=function(){return this._row.getData("data")[this._row.table.options.index]},s.prototype.getPosition=function(t){return this._row.table.rowManager.getRowPosition(this._row,t)},s.prototype.delete=function(){return this._row.delete()},s.prototype.scrollTo=function(){return this._row.table.rowManager.scrollToRow(this._row)},s.prototype.pageTo=function(){if(this._row.table.modExists("page",!0))return this._row.table.modules.page.setPageToRow(this._row)},s.prototype.move=function(t,e){this._row.moveToRow(t,e)},s.prototype.update=function(t){return this._row.updateData(t)},s.prototype.normalizeHeight=function(){this._row.normalizeHeight(!0)},s.prototype.select=function(){this._row.table.modules.selectRow.selectRows(this._row)},s.prototype.deselect=function(){this._row.table.modules.selectRow.deselectRows(this._row)},s.prototype.toggleSelect=function(){this._row.table.modules.selectRow.toggleRow(this._row)},s.prototype.isSelected=function(){return this._row.table.modules.selectRow.isRowSelected(this._row)},s.prototype._getSelf=function(){return this._row},s.prototype.freeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.freezeRow(this._row)},s.prototype.unfreeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.unfreezeRow(this._row)},s.prototype.treeCollapse=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.collapseRow(this._row)},s.prototype.treeExpand=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.expandRow(this._row)},s.prototype.treeToggle=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.toggleRow(this._row)},s.prototype.getTreeParent=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeParent(this._row)},s.prototype.getTreeChildren=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeChildren(this._row)},s.prototype.reformat=function(){return this._row.reinitialize()},s.prototype.getGroup=function(){return this._row.getGroup().getComponent()},s.prototype.getTable=function(){return this._row.table},s.prototype.getNextRow=function(){var t=this._row.nextRow();return t?t.getComponent():t},s.prototype.getPrevRow=function(){var t=this._row.prevRow();return t?t.getComponent():t};var r=function(t,e){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"row";this.table=e.table,this.parent=e,this.data={},this.type=o,this.element=this.createElement(),this.modules={},this.cells=[],this.height=0,this.heightStyled="",this.manualHeight=!1,this.outerHeight=0,this.initialized=!1,this.heightInitialized=!1,this.setData(t),this.generateElement()};r.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-row"),t.setAttribute("role","row"),t},r.prototype.getElement=function(){return this.element},r.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},r.prototype.generateElement=function(){var t,e,o,i=this;!1!==i.table.options.selectable&&i.table.modExists("selectRow")&&i.table.modules.selectRow.initializeRow(this),!1!==i.table.options.movableRows&&i.table.modExists("moveRow")&&i.table.modules.moveRow.initializeRow(this),!1!==i.table.options.dataTree&&i.table.modExists("dataTree")&&i.table.modules.dataTree.initializeRow(this),"collapse"===i.table.options.responsiveLayout&&i.table.modExists("responsiveLayout")&&i.table.modules.responsiveLayout.initializeRow(this),i.table.options.rowClick&&i.element.addEventListener("click",function(t){i.table.options.rowClick(t,i.getComponent())}),i.table.options.rowDblClick&&i.element.addEventListener("dblclick",function(t){i.table.options.rowDblClick(t,i.getComponent())}),i.table.options.rowContext&&i.element.addEventListener("contextmenu",function(t){i.table.options.rowContext(t,i.getComponent())}),i.table.options.rowMouseEnter&&i.element.addEventListener("mouseenter",function(t){i.table.options.rowMouseEnter(t,i.getComponent())}),i.table.options.rowMouseLeave&&i.element.addEventListener("mouseleave",function(t){i.table.options.rowMouseLeave(t,i.getComponent())}),i.table.options.rowMouseOver&&i.element.addEventListener("mouseover",function(t){i.table.options.rowMouseOver(t,i.getComponent())}),i.table.options.rowMouseOut&&i.element.addEventListener("mouseout",function(t){i.table.options.rowMouseOut(t,i.getComponent())}),i.table.options.rowMouseMove&&i.element.addEventListener("mousemove",function(t){i.table.options.rowMouseMove(t,i.getComponent())}),i.table.options.rowTap&&(o=!1,i.element.addEventListener("touchstart",function(t){o=!0},{passive:!0}),i.element.addEventListener("touchend",function(t){o&&i.table.options.rowTap(t,i.getComponent()),o=!1})),i.table.options.rowDblTap&&(t=null,i.element.addEventListener("touchend",function(e){t?(clearTimeout(t),t=null,
+i.table.options.rowDblTap(e,i.getComponent())):t=setTimeout(function(){clearTimeout(t),t=null},300)})),i.table.options.rowTapHold&&(e=null,i.element.addEventListener("touchstart",function(t){clearTimeout(e),e=setTimeout(function(){clearTimeout(e),e=null,o=!1,i.table.options.rowTapHold(t,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(t){clearTimeout(e),e=null}))},r.prototype.generateCells=function(){this.cells=this.table.columnManager.generateCells(this)},r.prototype.initialize=function(t){var e=this;if(!e.initialized||t){for(e.deleteCells();e.element.firstChild;)e.element.removeChild(e.element.firstChild);this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutRow(this),this.generateCells(),e.cells.forEach(function(t){e.element.appendChild(t.getElement()),t.cellRendered()}),t&&e.normalizeHeight(),e.table.options.dataTree&&e.table.modExists("dataTree")&&e.table.modules.dataTree.layoutRow(this),"collapse"===e.table.options.responsiveLayout&&e.table.modExists("responsiveLayout")&&e.table.modules.responsiveLayout.layoutRow(this),e.table.options.rowFormatter&&e.table.options.rowFormatter(e.getComponent()),e.table.options.resizableRows&&e.table.modExists("resizeRows")&&e.table.modules.resizeRows.initializeRow(e),e.initialized=!0}},r.prototype.reinitializeHeight=function(){this.heightInitialized=!1,null!==this.element.offsetParent&&this.normalizeHeight(!0)},r.prototype.reinitialize=function(){this.initialized=!1,this.heightInitialized=!1,this.manualHeight||(this.height=0,this.heightStyled=""),null!==this.element.offsetParent&&this.initialize(!0)},r.prototype.calcHeight=function(t){var e=0,o=this.table.options.resizableRows?this.element.clientHeight:0;this.cells.forEach(function(t){var o=t.getHeight();o>e&&(e=o)}),this.height=t?Math.max(e,o):this.manualHeight?this.height:Math.max(e,o),this.heightStyled=this.height?this.height+"px":"",this.outerHeight=this.element.offsetHeight},r.prototype.setCellHeight=function(){this.cells.forEach(function(t){t.setHeight()}),this.heightInitialized=!0},r.prototype.clearCellHeight=function(){this.cells.forEach(function(t){t.clearHeight()})},r.prototype.normalizeHeight=function(t){t&&this.clearCellHeight(),this.calcHeight(t),this.setCellHeight()},r.prototype.setHeight=function(t,e){(this.height!=t||e)&&(this.manualHeight=!0,this.height=t,this.heightStyled=t?t+"px":"",this.setCellHeight(),this.outerHeight=this.element.offsetHeight)},r.prototype.getHeight=function(){return this.outerHeight},r.prototype.getWidth=function(){return this.element.offsetWidth},r.prototype.deleteCell=function(t){var e=this.cells.indexOf(t);e>-1&&this.cells.splice(e,1)},r.prototype.setData=function(t){this.table.modExists("mutator")&&(t=this.table.modules.mutator.transformRow(t,"data",t)),this.data=t,this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchRow(this)},r.prototype.updateData=function(t){var e=this,o=u.prototype.helpers.elVisible(this.element),i={};return new Promise(function(n,s){"string"==typeof t&&(t=JSON.parse(t)),e.table.options.reactiveData&&e.table.modExists("reactiveData",!0)&&e.table.modules.reactiveData.block(),e.table.modExists("mutator")&&(i=Object.assign(i,e.data),i=Object.assign(i,t),t=e.table.modules.mutator.transformRow(i,"data",t));for(var r in t)e.data[r]=t[r];e.table.options.reactiveData&&e.table.modExists("reactiveData",!0)&&e.table.modules.reactiveData.unblock();for(var r in t){e.table.columnManager.getColumnsByFieldRoot(r).forEach(function(i){var n=e.getCell(i.getField());if(n){var s=i.getFieldValue(t);n.getValue()!=s&&(n.setValueProcessData(s),o&&n.cellRendered())}})}o?(e.normalizeHeight(),e.table.options.rowFormatter&&e.table.options.rowFormatter(e.getComponent())):(e.initialized=!1,e.height=0,e.heightStyled=""),!1!==e.table.options.dataTree&&e.table.modExists("dataTree")&&e.table.modules.dataTree.redrawNeeded(t)&&(e.table.modules.dataTree.initializeRow(e),e.table.modules.dataTree.layoutRow(e),e.table.rowManager.refreshActiveData("tree",!1,!0)),e.table.options.rowUpdated.call(e.table,e.getComponent()),n()})},r.prototype.getData=function(t){var e=this;return t?e.table.modExists("accessor")?e.table.modules.accessor.transformRow(e.data,t):void 0:this.data},r.prototype.getCell=function(t){return t=this.table.columnManager.findColumn(t),this.cells.find(function(e){return e.column===t})},r.prototype.getCellIndex=function(t){return this.cells.findIndex(function(e){return e===t})},r.prototype.findNextEditableCell=function(t){var e=!1;if(t<this.cells.length-1)for(var o=t+1;o<this.cells.length;o++){var i=this.cells[o];if(i.column.modules.edit&&u.prototype.helpers.elVisible(i.getElement())){var n=!0;if("function"==typeof i.column.modules.edit.check&&(n=i.column.modules.edit.check(i.getComponent())),n){e=i;break}}}return e},r.prototype.findPrevEditableCell=function(t){var e=!1;if(t>0)for(var o=t-1;o>=0;o--){var i=this.cells[o],n=!0;if(i.column.modules.edit&&u.prototype.helpers.elVisible(i.getElement())&&("function"==typeof i.column.modules.edit.check&&(n=i.column.modules.edit.check(i.getComponent())),n)){e=i;break}}return e},r.prototype.getCells=function(){return this.cells},r.prototype.nextRow=function(){return this.table.rowManager.nextDisplayRow(this,!0)||!1},r.prototype.prevRow=function(){return this.table.rowManager.prevDisplayRow(this,!0)||!1},r.prototype.moveToRow=function(t,e){var o=this.table.rowManager.findRow(t);o?(this.table.rowManager.moveRowActual(this,o,!e),this.table.rowManager.refreshActiveData("display",!1,!0)):console.warn("Move Error - No matching row found:",t)},r.prototype.delete=function(){var t=this;return new Promise(function(e,o){var i,n;t.table.options.history&&t.table.modExists("history")&&(t.table.options.groupBy&&t.table.modExists("groupRows")?(n=t.getGroup().rows,(i=n.indexOf(t))&&(i=n[i-1])):(i=t.table.rowManager.getRowIndex(t))&&(i=t.table.rowManager.rows[i-1]),t.table.modules.history.action("rowDelete",t,{data:t.getData(),pos:!i,index:i})),t.deleteActual(),e()})},r.prototype.deleteActual=function(t){this.table.rowManager.getRowIndex(this);this.table.modExists("selectRow")&&this.table.modules.selectRow._deselectRow(this,!0),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0),this.modules.group&&this.modules.group.removeRow(this),this.table.rowManager.deleteRow(this,t),this.deleteCells(),this.initialized=!1,this.heightInitialized=!1,this.table.modExists("columnCalcs")&&(this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.columnCalcs.recalcRowGroup(this):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows))},r.prototype.deleteCells=function(){for(var t=this.cells.length,e=0;e<t;e++)this.cells[0].delete()},r.prototype.wipe=function(){for(this.deleteCells();this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element=!1,this.modules={},this.element.parentNode&&this.element.parentNode.removeChild(this.element)},r.prototype.getGroup=function(){return this.modules.group||!1},r.prototype.getComponent=function(){return new s(this)};var a=function(t){this._cell=t};a.prototype.getValue=function(){return this._cell.getValue()},a.prototype.getOldValue=function(){return this._cell.getOldValue()},a.prototype.getElement=function(){return this._cell.getElement()},a.prototype.getRow=function(){return this._cell.row.getComponent()},a.prototype.getData=function(){return this._cell.row.getData()},a.prototype.getField=function(){return this._cell.column.getField()},a.prototype.getColumn=function(){return this._cell.column.getComponent()},a.prototype.setValue=function(t,e){void 0===e&&(e=!0),this._cell.setValue(t,e)},a.prototype.restoreOldValue=function(){this._cell.setValueActual(this._cell.getOldValue())},a.prototype.edit=function(t){return this._cell.edit(t)},a.prototype.cancelEdit=function(){this._cell.cancelEdit()},a.prototype.nav=function(){return this._cell.nav()},a.prototype.checkHeight=function(){this._cell.checkHeight()},a.prototype.getTable=function(){return this._cell.table},a.prototype._getSelf=function(){return this._cell};var l=function(t,e){this.table=t.table,this.column=t,this.row=e,this.element=null,this.value=null,this.oldValue=null,this.modules={},this.height=null,this.width=null,this.minWidth=null,this.build()};l.prototype.build=function(){this.generateElement(),this.setWidth(),this._configureCell(),this.setValueActual(this.column.getFieldValue(this.row.data))},l.prototype.generateElement=function(){this.element=document.createElement("div"),this.element.className="tabulator-cell",this.element.setAttribute("role","gridcell"),this.element=this.element},l.prototype._configureCell=function(){var t=this,e=t.column.cellEvents,o=t.element,i=this.column.getField();if(o.style.textAlign=t.column.hozAlign,i&&o.setAttribute("tabulator-field",i),t.column.definition.cssClass){t.column.definition.cssClass.split(" ").forEach(function(t){o.classList.add(t)})}"hover"===this.table.options.tooltipGenerationMode&&o.addEventListener("mouseenter",function(e){t._generateTooltip()}),t._bindClickEvents(e),t._bindTouchEvents(e),t._bindMouseEvents(e),t.column.modules.edit&&t.table.modules.edit.bindEditor(t),t.column.definition.rowHandle&&!1!==t.table.options.movableRows&&t.table.modExists("moveRow")&&t.table.modules.moveRow.initializeCell(t),t.column.visible||t.hide()},l.prototype._bindClickEvents=function(t){var e=this,o=e.element;(t.cellClick||e.table.options.cellClick)&&o.addEventListener("click",function(o){var i=e.getComponent();t.cellClick&&t.cellClick.call(e.table,o,i),e.table.options.cellClick&&e.table.options.cellClick.call(e.table,o,i)}),t.cellDblClick||this.table.options.cellDblClick?o.addEventListener("dblclick",function(o){var i=e.getComponent();t.cellDblClick&&t.cellDblClick.call(e.table,o,i),e.table.options.cellDblClick&&e.table.options.cellDblClick.call(e.table,o,i)}):o.addEventListener("dblclick",function(t){t.preventDefault();try{if(document.selection){var o=document.body.createTextRange();o.moveToElementText(e.element),o.select()}else if(window.getSelection){var o=document.createRange();o.selectNode(e.element),window.getSelection().removeAllRanges(),window.getSelection().addRange(o)}}catch(t){}}),(t.cellContext||this.table.options.cellContext)&&o.addEventListener("contextmenu",function(o){var i=e.getComponent();t.cellContext&&t.cellContext.call(e.table,o,i),e.table.options.cellContext&&e.table.options.cellContext.call(e.table,o,i)})},l.prototype._bindMouseEvents=function(t){var e=this,o=e.element;(t.cellMouseEnter||e.table.options.cellMouseEnter)&&o.addEventListener("mouseenter",function(o){var i=e.getComponent();t.cellMouseEnter&&t.cellMouseEnter.call(e.table,o,i),e.table.options.cellMouseEnter&&e.table.options.cellMouseEnter.call(e.table,o,i)}),(t.cellMouseLeave||e.table.options.cellMouseLeave)&&o.addEventListener("mouseleave",function(o){var i=e.getComponent();t.cellMouseLeave&&t.cellMouseLeave.call(e.table,o,i),e.table.options.cellMouseLeave&&e.table.options.cellMouseLeave.call(e.table,o,i)}),(t.cellMouseOver||e.table.options.cellMouseOver)&&o.addEventListener("mouseover",function(o){var i=e.getComponent();t.cellMouseOver&&t.cellMouseOver.call(e.table,o,i),e.table.options.cellMouseOver&&e.table.options.cellMouseOver.call(e.table,o,i)}),(t.cellMouseOut||e.table.options.cellMouseOut)&&o.addEventListener("mouseout",function(o){var i=e.getComponent();t.cellMouseOut&&t.cellMouseOut.call(e.table,o,i),e.table.options.cellMouseOut&&e.table.options.cellMouseOut.call(e.table,o,i)}),(t.cellMouseMove||e.table.options.cellMouseMove)&&o.addEventListener("mousemove",function(o){var i=e.getComponent();t.cellMouseMove&&t.cellMouseMove.call(e.table,o,i),e.table.options.cellMouseMove&&e.table.options.cellMouseMove.call(e.table,o,i)})},l.prototype._bindTouchEvents=function(t){var e,o,i,n=this,s=n.element;(t.cellTap||this.table.options.cellTap)&&(i=!1,s.addEventListener("touchstart",function(t){i=!0},{passive:!0}),s.addEventListener("touchend",function(e){if(i){var o=n.getComponent();t.cellTap&&t.cellTap.call(n.table,e,o),n.table.options.cellTap&&n.table.options.cellTap.call(n.table,e,o)}i=!1})),(t.cellDblTap||this.table.options.cellDblTap)&&(e=null,s.addEventListener("touchend",function(o){if(e){clearTimeout(e),e=null;var i=n.getComponent();t.cellDblTap&&t.cellDblTap.call(n.table,o,i),n.table.options.cellDblTap&&n.table.options.cellDblTap.call(n.table,o,i)}else e=setTimeout(function(){clearTimeout(e),e=null},300)})),(t.cellTapHold||this.table.options.cellTapHold)&&(o=null,s.addEventListener("touchstart",function(e){clearTimeout(o),o=setTimeout(function(){clearTimeout(o),o=null,i=!1;var s=n.getComponent();t.cellTapHold&&t.cellTapHold.call(n.table,e,s),n.table.options.cellTapHold&&n.table.options.cellTapHold.call(n.table,e,s)},1e3)},{passive:!0}),s.addEventListener("touchend",function(t){clearTimeout(o),o=null}))},l.prototype._generateContents=function(){var t;switch(t=this.table.modExists("format")?this.table.modules.format.formatValue(this):this.element.innerHTML=this.value,void 0===t?"undefined":_typeof(t)){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}},l.prototype.cellRendered=function(){this.table.modExists("format")&&this.table.modules.format.cellRendered&&this.table.modules.format.cellRendered(this)},l.prototype._generateTooltip=function(){var t=this.column.tooltip;t?(!0===t?t=this.value:"function"==typeof t&&!1===(t=t(this.getComponent()))&&(t=""),void 0===t&&(t=""),this.element.setAttribute("title",t)):this.element.setAttribute("title","")},l.prototype.getElement=function(){return this.element},l.prototype.getValue=function(){return this.value},l.prototype.getOldValue=function(){return this.oldValue},l.prototype.setValue=function(t,e){var o,i=this.setValueProcessData(t,e);i&&(this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("cellEdit",this,{oldValue:this.oldValue,newValue:this.value}),o=this.getComponent(),this.column.cellEvents.cellEdited&&this.column.cellEvents.cellEdited.call(this.table,o),this.table.options.cellEdited.call(this.table,o),this.table.options.dataEdited.call(this.table,this.table.rowManager.getData()))},l.prototype.setValueProcessData=function(t,e){var o=!1;return this.value!=t&&(o=!0,e&&this.column.modules.mutate&&(t=this.table.modules.mutator.transformCell(this,t))),this.setValueActual(t),o&&this.table.modExists("columnCalcs")&&(this.column.definition.topCalc||this.column.definition.bottomCalc)&&(this.table.options.groupBy&&this.table.modExists("groupRows")?("table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs||this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),"table"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.recalcRowGroup(this.row)):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows)),o},l.prototype.setValueActual=function(t){this.oldValue=this.value,this.value=t,this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.block(),this.column.setFieldValue(this.row.data,t),this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.unblock(),this._generateContents(),this._generateTooltip(),this.table.options.resizableColumns&&this.table.modExists("resizeColumns")&&this.table.modules.resizeColumns.initializeColumn("cell",this.column,this.element),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutElement(this.element,this.column)},l.prototype.setWidth=function(){this.width=this.column.width,this.element.style.width=this.column.widthStyled},l.prototype.clearWidth=function(){this.width="",this.element.style.width=""},l.prototype.getWidth=function(){return this.width||this.element.offsetWidth},l.prototype.setMinWidth=function(){this.minWidth=this.column.minWidth,this.element.style.minWidth=this.column.minWidthStyled},l.prototype.checkHeight=function(){this.row.reinitializeHeight()},l.prototype.clearHeight=function(){this.element.style.height="",this.height=null},l.prototype.setHeight=function(){this.height=this.row.height,this.element.style.height=this.row.heightStyled},l.prototype.getHeight=function(){return this.height||this.element.offsetHeight},l.prototype.show=function(){this.element.style.display=""},l.prototype.hide=function(){this.element.style.display="none"},l.prototype.edit=function(t){if(this.table.modExists("edit",!0))return this.table.modules.edit.editCell(this,t)},l.prototype.cancelEdit=function(){if(this.table.modExists("edit",!0)){var t=this.table.modules.edit.getCurrentCell();t&&t._getSelf()===this?this.table.modules.edit.cancelEdit():console.warn("Cancel Editor Error - This cell is not currently being edited ")}},l.prototype.delete=function(){this.table.rowManager.redrawBlock||this.element.parentNode.removeChild(this.element),this.element=!1,this.column.deleteCell(this),this.row.deleteCell(this),this.calcs={}},l.prototype.nav=function(){var t=this,e=!1,o=this.row.getCellIndex(this);return{next:function(){var e,o=this.right();return!!o||!(!(e=t.table.rowManager.nextDisplayRow(t.row,!0))||!(o=e.findNextEditableCell(-1)))&&(o.edit(),!0)},prev:function(){var e,o=this.left();return!!o||!(!(e=t.table.rowManager.prevDisplayRow(t.row,!0))||!(o=e.findPrevEditableCell(e.cells.length)))&&(o.edit(),!0)},left:function(){return!!(e=t.row.findPrevEditableCell(o))&&(e.edit(),!0)},right:function(){return!!(e=t.row.findNextEditableCell(o))&&(e.edit(),!0)},up:function(){var e=t.table.rowManager.prevDisplayRow(t.row,!0);e&&e.cells[o].edit()},down:function(){var e=t.table.rowManager.nextDisplayRow(t.row,!0);e&&e.cells[o].edit()}}},l.prototype.getIndex=function(){this.row.getCellIndex(this)},l.prototype.getComponent=function(){return new a(this)};var c=function(t){this.table=t,this.active=!1,this.element=this.createElement(),this.external=!1,this.links=[],this._initialize()};c.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-footer"),t},c.prototype._initialize=function(t){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}},c.prototype.getElement=function(){return this.element},c.prototype.append=function(t,e){this.activate(e),this.element.appendChild(t),this.table.rowManager.adjustTableSize()},c.prototype.prepend=function(t,e){this.activate(e),this.element.insertBefore(t,this.element.firstChild),this.table.rowManager.adjustTableSize()},c.prototype.remove=function(t){t.parentNode.removeChild(t),this.deactivate()},c.prototype.deactivate=function(t){this.element.firstChild&&!t||(this.external||this.element.parentNode.removeChild(this.element),this.active=!1)},c.prototype.activate=function(t){this.active||(this.active=!0,this.external||(this.table.element.appendChild(this.getElement()),this.table.element.style.display="")),t&&this.links.push(t)},c.prototype.redraw=function(){this.links.forEach(function(t){t.footerRedraw()})};var u=function t(e,o){this.options={},this.columnManager=null,this.rowManager=null,this.footerManager=null,this.browser="",this.browserSlow=!1,this.browserMobile=!1,this.modules={},this.initializeElement(e),this.initializeOptions(o||{}),this._create(),t.prototype.comms.register(this)};u.prototype.defaultOptions={height:!1,layout:"fitData",layoutColumnsOnNewData:!1,columnMinWidth:40,columnHeaderVertAlign:"top",columnVertAlign:!1,resizableColumns:!0,resizableRows:!1,autoResize:!0,columns:[],data:[],autoColumns:!1,reactiveData:!1,nestedFieldSeparator:".",tooltips:!1,tooltipsHeader:!1,tooltipGenerationMode:"load",initialSort:!1,initialFilter:!1,initialHeaderFilter:!1,columnHeaderSortMulti:!0,sortOrderReverse:!1,headerSort:!0,headerSortTristate:!1,footerElement:!1,index:"id",keybindings:[],tabEndNewRow:!1,invalidOptionWarnings:!0,clipboard:!1,clipboardCopyStyled:!0,clipboardCopySelector:"active",clipboardCopyFormatter:"table",clipboardPasteParser:"table",clipboardPasteAction:"insert",clipboardCopyConfig:!1,clipboardCopied:function(){},clipboardPasted:function(){},clipboardPasteError:function(){},downloadDataFormatter:!1,downloadReady:function(t,e){return e},downloadComplete:!1,downloadConfig:!1,dataTree:!1,dataTreeElementColumn:!1,dataTreeBranchElement:!0,dataTreeChildIndent:9,dataTreeChildField:"_children",dataTreeCollapseElement:!1,dataTreeExpandElement:!1,dataTreeStartExpanded:!1,dataTreeRowExpanded:function(){},dataTreeRowCollapsed:function(){},printAsHtml:!1,printFormatter:!1,printHeader:!1,printFooter:!1,printCopyStyle:!0,printVisibleRows:!0,printConfig:{},addRowPos:"bottom",selectable:"highlight",selectableRangeMode:"drag",selectableRollingSelection:!0,selectablePersistence:!0,selectableCheck:function(t,e){return!0},headerFilterPlaceholder:!1,headerVisible:!0,history:!1,locale:!1,langs:{},virtualDom:!0,virtualDomBuffer:0,persistentLayout:!1,persistentSort:!1,persistentFilter:!1,persistenceID:"",persistenceMode:!0,persistenceReaderFunc:!1,persistenceWriterFunc:!1,persistence:!1,responsiveLayout:!1,responsiveLayoutCollapseStartOpen:!0,responsiveLayoutCollapseUseFormatters:!0,responsiveLayoutCollapseFormatter:!1,pagination:!1,paginationSize:!1,paginationInitialPage:1,paginationButtonCount:5,paginationSizeSelector:!1,paginationElement:!1,paginationDataSent:{},paginationDataReceived:{},paginationAddRow:"page",ajaxURL:!1,ajaxURLGenerator:!1,ajaxParams:{},ajaxConfig:"get",ajaxContentType:"form",ajaxRequestFunc:!1,ajaxLoader:!0,ajaxLoaderLoading:!1,ajaxLoaderError:!1,ajaxFiltering:!1,ajaxSorting:!1,ajaxProgressiveLoad:!1,ajaxProgressiveLoadDelay:0,ajaxProgressiveLoadScrollMargin:0,groupBy:!1,groupStartOpen:!0,groupValues:!1,groupHeader:!1,htmlOutputConfig:!1,movableColumns:!1,movableRows:!1,movableRowsConnectedTables:!1,movableRowsSender:!1,movableRowsReceiver:"insert",movableRowsSendingStart:function(){},movableRowsSent:function(){},movableRowsSentFailed:function(){},movableRowsSendingStop:function(){},movableRowsReceivingStart:function(){},movableRowsReceived:function(){},movableRowsReceivedFailed:function(){},movableRowsReceivingStop:function(){},scrollToRowPosition:"top",scrollToRowIfVisible:!0,scrollToColumnPosition:"left",scrollToColumnIfVisible:!0,rowFormatter:!1,placeholder:!1,tableBuilding:function(){},tableBuilt:function(){},renderStarted:function(){},renderComplete:function(){},rowClick:!1,rowDblClick:!1,rowContext:!1,rowTap:!1,rowDblTap:!1,rowTapHold:!1,rowMouseEnter:!1,rowMouseLeave:!1,rowMouseOver:!1,rowMouseOut:!1,rowMouseMove:!1,rowAdded:function(){},rowDeleted:function(){},rowMoved:function(){},rowUpdated:function(){},rowSelectionChanged:function(){},rowSelected:function(){},rowDeselected:function(){},rowResized:function(){},cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1,cellEditing:function(){},cellEdited:function(){},cellEditCancelled:function(){},columnMoved:!1,columnResized:function(){},columnTitleChanged:function(){},columnVisibilityChanged:function(){},htmlImporting:function(){},htmlImported:function(){},dataLoading:function(){},dataLoaded:function(){},dataEdited:function(){},ajaxRequesting:function(){},ajaxResponse:!1,ajaxError:function(){},dataFiltering:!1,dataFiltered:!1,dataSorting:function(){},dataSorted:function(){},groupToggleElement:"arrow",groupClosedShowCalcs:!1,dataGrouping:function(){},dataGrouped:!1,groupVisibilityChanged:function(){},groupClick:!1,groupDblClick:!1,groupContext:!1,groupTap:!1,groupDblTap:!1,groupTapHold:!1,columnCalcs:!0,pageLoaded:function(){},localized:function(){},validationFailed:function(){},historyUndo:function(){},historyRedo:function(){},scrollHorizontal:function(){},scrollVertical:function(){}},u.prototype.initializeOptions=function(t){if(!1!==t.invalidOptionWarnings)for(var e in t)void 0===this.defaultOptions[e]&&console.warn("Invalid table constructor option:",e);for(var e in this.defaultOptions)e in t?this.options[e]=t[e]:Array.isArray(this.defaultOptions[e])?this.options[e]=[]:"object"===_typeof(this.defaultOptions[e])?this.options[e]={}:this.options[e]=this.defaultOptions[e]},u.prototype.initializeElement=function(t){return"undefined"!=typeof HTMLElement&&t instanceof HTMLElement?(this.element=t,!0):"string"==typeof t?(this.element=document.querySelector(t),!!this.element||(console.error("Tabulator Creation Error - no element found matching selector: ",t),!1)):(console.error("Tabulator Creation Error - Invalid element provided:",t),!1)},u.prototype._mapDepricatedFunctionality=function(){(this.options.persistentLayout||this.options.persistentSort||this.options.persistentFilter)&&(this.options.persistence||(this.options.persistence={})),this.options.persistentLayout&&(console.warn("persistentLayout option is deprecated, you should now use the persistence option"),!0!==this.options.persistence&&void 0===this.options.persistence.columns&&(this.options.persistence.columns=!0)),this.options.persistentSort&&(console.warn("persistentSort option is deprecated, you should now use the persistence option"),!0!==this.options.persistence&&void 0===this.options.persistence.sort&&(this.options.persistence.sort=!0)),this.options.persistentFilter&&(console.warn("persistentFilter option is deprecated, you should now use the persistence option"),!0!==this.options.persistence&&void 0===this.options.persistence.filter&&(this.options.persistence.filter=!0)),this.options.columnVertAlign&&(console.warn("columnVertAlign option is deprecated, you should now use the columnHeaderVertAlign option"),this.options.columnHeaderVertAlign=this.options.columnVertAlign)},u.prototype._clearSelection=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")},u.prototype._create=function(){this._clearObjectPointers(),this._mapDepricatedFunctionality(),this.bindModules(),"TABLE"===this.element.tagName&&this.modExists("htmlTableImport",!0)&&this.modules.htmlTableImport.parseTable(),this.columnManager=new t(this),this.rowManager=new n(this),this.footerManager=new c(this),this.columnManager.setRowManager(this.rowManager),this.rowManager.setColumnManager(this.columnManager),this._buildElement(),this._loadInitialData()},u.prototype._clearObjectPointers=function(){this.options.columns=this.options.columns.slice(0),this.options.reactiveData||(this.options.data=this.options.data.slice(0))},u.prototype._buildElement=function(){var t=this,e=this.element,o=this.modules,i=this.options;for(i.tableBuilding.call(this),e.classList.add("tabulator"),e.setAttribute("role","grid");e.firstChild;)e.removeChild(e.firstChild);i.height&&(i.height=isNaN(i.height)?i.height:i.height+"px",e.style.height=i.height),this.columnManager.initialize(),this.rowManager.initialize(),this._detectBrowser(),this.modExists("layout",!0)&&o.layout.initialize(i.layout),!1!==i.headerFilterPlaceholder&&o.localize.setHeaderFilterPlaceholder(i.headerFilterPlaceholder);for(var n in i.langs)o.localize.installLang(n,i.langs[n]);if(o.localize.setLocale(i.locale),"string"==typeof i.placeholder){var s=document.createElement("div");s.classList.add("tabulator-placeholder");var r=document.createElement("span");r.innerHTML=i.placeholder,s.appendChild(r),i.placeholder=s}if(e.appendChild(this.columnManager.getElement()),e.appendChild(this.rowManager.getElement()),i.footerElement&&this.footerManager.activate(),i.persistence&&this.modExists("persistence",!0)&&o.persistence.initialize(),i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.columns&&(i.columns=o.persistence.load("columns",i.columns)),i.movableRows&&this.modExists("moveRow")&&o.moveRow.initialize(),i.autoColumns&&this.options.data&&this.columnManager.generateColumnsFromRowData(this.options.data),this.modExists("columnCalcs")&&o.columnCalcs.initialize(),this.columnManager.setColumns(i.columns),i.dataTree&&this.modExists("dataTree",!0)&&o.dataTree.initialize(),this.modExists("frozenRows")&&this.modules.frozenRows.initialize(),(i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.sort||i.initialSort)&&this.modExists("sort",!0)){var a=[];i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.sort?!1===(a=o.persistence.load("sort"))&&i.initialSort&&(a=i.initialSort):i.initialSort&&(a=i.initialSort),o.sort.setSort(a)}if((i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.filter||i.initialFilter)&&this.modExists("filter",!0)){var l=[];i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.filter?!1===(l=o.persistence.load("filter"))&&i.initialFilter&&(l=i.initialFilter):i.initialFilter&&(l=i.initialFilter),o.filter.setFilter(l)}i.initialHeaderFilter&&this.modExists("filter",!0)&&i.initialHeaderFilter.forEach(function(e){var i=t.columnManager.findColumn(e.field);if(!i)return console.warn("Column Filter Error - No matching column found:",e.field),!1;o.filter.setHeaderFilterValue(i,e.value)}),this.modExists("ajax")&&o.ajax.initialize(),i.pagination&&this.modExists("page",!0)&&o.page.initialize(),i.groupBy&&this.modExists("groupRows",!0)&&o.groupRows.initialize(),this.modExists("keybindings")&&o.keybindings.initialize(),this.modExists("selectRow")&&o.selectRow.clearSelectionData(!0),i.autoResize&&this.modExists("resizeTable")&&o.resizeTable.initialize(),this.modExists("clipboard")&&o.clipboard.initialize(),i.printAsHtml&&this.modExists("print")&&o.print.initialize(),i.tableBuilt.call(this)},u.prototype._loadInitialData=function(){var t=this;if(t.options.pagination&&t.modExists("page"))if(t.modules.page.reset(!0),"local"==t.options.pagination){if(t.options.data.length)t.rowManager.setData(t.options.data);else{if((t.options.ajaxURL||t.options.ajaxURLGenerator)&&t.modExists("ajax"))return void t.modules.ajax.loadData().then(function(){}).catch(function(){t.options.paginationInitialPage&&t.modules.page.setPage(t.options.paginationInitialPage)});t.rowManager.setData(t.options.data)}t.options.paginationInitialPage&&t.modules.page.setPage(t.options.paginationInitialPage)}else t.options.ajaxURL?t.modules.page.setPage(t.options.paginationInitialPage).then(function(){}).catch(function(){}):t.rowManager.setData([]);else t.options.data.length?t.rowManager.setData(t.options.data):(t.options.ajaxURL||t.options.ajaxURLGenerator)&&t.modExists("ajax")?t.modules.ajax.loadData().then(function(){}).catch(function(){}):t.rowManager.setData(t.options.data)},u.prototype.destroy=function(){var t=this.element;for(u.prototype.comms.deregister(this),this.options.reactiveData&&this.modExists("reactiveData",!0)&&this.modules.reactiveData.unwatchData(),this.rowManager.rows.forEach(function(t){t.wipe()}),this.rowManager.rows=[],this.rowManager.activeRows=[],this.rowManager.displayRows=[],this.options.autoResize&&this.modExists("resizeTable")&&this.modules.resizeTable.clearBindings(),this.modExists("keybindings")&&this.modules.keybindings.clearBindings();t.firstChild;)t.removeChild(t.firstChild);t.classList.remove("tabulator")},u.prototype._detectBrowser=function(){var t=navigator.userAgent||navigator.vendor||window.opera;t.indexOf("Trident")>-1?(this.browser="ie",
+this.browserSlow=!0):t.indexOf("Edge")>-1?(this.browser="edge",this.browserSlow=!0):t.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(t)||/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(t.substr(0,4))},u.prototype.blockRedraw=function(){return this.rowManager.blockRedraw()},u.prototype.restoreRedraw=function(){return this.rowManager.restoreRedraw()},u.prototype.setDataFromLocalFile=function(t){var e=this;return new Promise(function(o,i){var n=document.createElement("input");n.type="file",n.accept=t||".json,application/json",n.addEventListener("change",function(t){var s,r=n.files[0],a=new FileReader;a.readAsText(r),a.onload=function(t){try{s=JSON.parse(a.result)}catch(t){return console.warn("File Load Error - File contents is invalid JSON",t),void i(t)}e._setData(s).then(function(t){o(t)}).catch(function(t){o(t)})},a.onerror=function(t){console.warn("File Load Error - Unable to read file"),i()}}),n.click()})},u.prototype.setData=function(t,e,o){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(t,e,o)},u.prototype._setData=function(t,e,o,i){var n=this;return"string"!=typeof t?t?n.rowManager.setData(t,i):n.modExists("ajax")&&(n.modules.ajax.getUrl||n.options.ajaxURLGenerator)?"remote"==n.options.pagination&&n.modExists("page",!0)?(n.modules.page.reset(!0),n.modules.page.setPage(1)):n.modules.ajax.loadData(i):n.rowManager.setData([],i):0==t.indexOf("{")||0==t.indexOf("[")?n.rowManager.setData(JSON.parse(t),i):n.modExists("ajax",!0)?(e&&n.modules.ajax.setParams(e),o&&n.modules.ajax.setConfig(o),n.modules.ajax.setUrl(t),"remote"==n.options.pagination&&n.modExists("page",!0)?(n.modules.page.reset(!0),n.modules.page.setPage(1)):n.modules.ajax.loadData(i)):void 0},u.prototype.clearData=function(){this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this.rowManager.clearData()},u.prototype.getData=function(t){return!0===t&&(console.warn("passing a boolean to the getData function is deprecated, you should now pass the string 'active'"),t="active"),this.rowManager.getData(t)},u.prototype.getDataCount=function(t){return!0===t&&(console.warn("passing a boolean to the getDataCount function is deprecated, you should now pass the string 'active'"),t="active"),this.rowManager.getDataCount(t)},u.prototype.searchRows=function(t,e,o){if(this.modExists("filter",!0))return this.modules.filter.search("rows",t,e,o)},u.prototype.searchData=function(t,e,o){if(this.modExists("filter",!0))return this.modules.filter.search("data",t,e,o)},u.prototype.getHtml=function(t,e,o){if(this.modExists("htmlTableExport",!0))return this.modules.htmlTableExport.getHtml(t,e,o)},u.prototype.print=function(t,e,o){if(this.modExists("print",!0))return this.modules.print.printFullscreen(t,e,o)},u.prototype.getAjaxUrl=function(){if(this.modExists("ajax",!0))return this.modules.ajax.getUrl()},u.prototype.replaceData=function(t,e,o){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(t,e,o,!0)},u.prototype.updateData=function(t){var e=this,o=this,i=0;return new Promise(function(n,s){e.modExists("ajax")&&e.modules.ajax.blockActiveRequest(),"string"==typeof t&&(t=JSON.parse(t)),t?t.forEach(function(t){var e=o.rowManager.findRow(t[o.options.index]);e&&(i++,e.updateData(t).then(function(){--i||n()}))}):(console.warn("Update Error - No data provided"),s("Update Error - No data provided"))})},u.prototype.addData=function(t,e,o){var i=this;return new Promise(function(n,s){i.modExists("ajax")&&i.modules.ajax.blockActiveRequest(),"string"==typeof t&&(t=JSON.parse(t)),t?i.rowManager.addRows(t,e,o).then(function(t){var e=[];t.forEach(function(t){e.push(t.getComponent())}),n(e)}):(console.warn("Update Error - No data provided"),s("Update Error - No data provided"))})},u.prototype.updateOrAddData=function(t){var e=this,o=this,i=[],n=0;return new Promise(function(s,r){e.modExists("ajax")&&e.modules.ajax.blockActiveRequest(),"string"==typeof t&&(t=JSON.parse(t)),t?t.forEach(function(t){var e=o.rowManager.findRow(t[o.options.index]);n++,e?e.updateData(t).then(function(){n--,i.push(e.getComponent()),n||s(i)}):o.rowManager.addRows(t).then(function(t){n--,i.push(t[0].getComponent()),n||s(i)})}):(console.warn("Update Error - No data provided"),r("Update Error - No data provided"))})},u.prototype.getRow=function(t){var e=this.rowManager.findRow(t);return e?e.getComponent():(console.warn("Find Error - No matching row found:",t),!1)},u.prototype.getRowFromPosition=function(t,e){var o=this.rowManager.getRowFromPosition(t,e);return o?o.getComponent():(console.warn("Find Error - No matching row found:",t),!1)},u.prototype.deleteRow=function(t){var e=this;return new Promise(function(o,i){function n(){++s==t.length&&r&&(a.rowManager.reRenderInPosition(),o())}var s=0,r=0,a=e;Array.isArray(t)||(t=[t]),t.forEach(function(t){var o=e.rowManager.findRow(t,!0);o?o.delete().then(function(){r++,n()}).catch(function(t){n(),i(t)}):(console.warn("Delete Error - No matching row found:",t),i("Delete Error - No matching row found"),n())})})},u.prototype.addRow=function(t,e,o){var i=this;return new Promise(function(n,s){"string"==typeof t&&(t=JSON.parse(t)),i.rowManager.addRows(t,e,o).then(function(t){i.modExists("columnCalcs")&&i.modules.columnCalcs.recalc(i.rowManager.activeRows),n(t[0].getComponent())})})},u.prototype.updateOrAddRow=function(t,e){var o=this;return new Promise(function(i,n){var s=o.rowManager.findRow(t);"string"==typeof e&&(e=JSON.parse(e)),s?s.updateData(e).then(function(){o.modExists("columnCalcs")&&o.modules.columnCalcs.recalc(o.rowManager.activeRows),i(s.getComponent())}).catch(function(t){n(t)}):s=o.rowManager.addRows(e).then(function(t){o.modExists("columnCalcs")&&o.modules.columnCalcs.recalc(o.rowManager.activeRows),i(t[0].getComponent())}).catch(function(t){n(t)})})},u.prototype.updateRow=function(t,e){var o=this;return new Promise(function(i,n){var s=o.rowManager.findRow(t);"string"==typeof e&&(e=JSON.parse(e)),s?s.updateData(e).then(function(){i(s.getComponent())}).catch(function(t){n(t)}):(console.warn("Update Error - No matching row found:",t),n("Update Error - No matching row found"))})},u.prototype.scrollToRow=function(t,e,o){var i=this;return new Promise(function(n,s){var r=i.rowManager.findRow(t);r?i.rowManager.scrollToRow(r,e,o).then(function(){n()}).catch(function(t){s(t)}):(console.warn("Scroll Error - No matching row found:",t),s("Scroll Error - No matching row found"))})},u.prototype.moveRow=function(t,e,o){var i=this.rowManager.findRow(t);i?i.moveToRow(e,o):console.warn("Move Error - No matching row found:",t)},u.prototype.getRows=function(t){return!0===t&&(console.warn("passing a boolean to the getRows function is deprecated, you should now pass the string 'active'"),t="active"),this.rowManager.getComponents(t)},u.prototype.getRowPosition=function(t,e){var o=this.rowManager.findRow(t);return o?this.rowManager.getRowPosition(o,e):(console.warn("Position Error - No matching row found:",t),!1)},u.prototype.copyToClipboard=function(t,e,o,i){this.modExists("clipboard",!0)&&this.modules.clipboard.copy(t,e,o,i)},u.prototype.setColumns=function(t){this.columnManager.setColumns(t)},u.prototype.getColumns=function(t){return this.columnManager.getComponents(t)},u.prototype.getColumn=function(t){var e=this.columnManager.findColumn(t);return e?e.getComponent():(console.warn("Find Error - No matching column found:",t),!1)},u.prototype.getColumnDefinitions=function(){return this.columnManager.getDefinitionTree()},u.prototype.getColumnLayout=function(){if(this.modExists("persistence",!0))return this.modules.persistence.parseColumns(this.columnManager.getColumns())},u.prototype.setColumnLayout=function(t){return!!this.modExists("persistence",!0)&&(this.columnManager.setColumns(this.modules.persistence.mergeDefinition(this.options.columns,t)),!0)},u.prototype.showColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Show Error - No matching column found:",t),!1;e.show(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},u.prototype.hideColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Hide Error - No matching column found:",t),!1;e.hide(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},u.prototype.toggleColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Visibility Toggle Error - No matching column found:",t),!1;e.visible?e.hide():e.show()},u.prototype.addColumn=function(t,e,o){var i=this;return new Promise(function(n,s){var r=i.columnManager.findColumn(o);i.columnManager.addColumn(t,e,r).then(function(t){n(t.getComponent())}).catch(function(t){s(t)})})},u.prototype.deleteColumn=function(t){var e=this;return new Promise(function(o,i){var n=e.columnManager.findColumn(t);n?n.delete().then(function(){o()}).catch(function(t){i(t)}):(console.warn("Column Delete Error - No matching column found:",t),i())})},u.prototype.updateColumnDefinition=function(t,e){var o=this;return new Promise(function(e,i){var n=o.columnManager.findColumn(t);n?n.updateDefinition().then(function(t){e(t)}).catch(function(t){i(t)}):(console.warn("Column Update Error - No matching column found:",t),i())})},u.prototype.moveColumn=function(t,e,o){var i=this.columnManager.findColumn(t),n=this.columnManager.findColumn(e);i?n?this.columnManager.moveColumn(i,n,o):console.warn("Move Error - No matching column found:",n):console.warn("Move Error - No matching column found:",t)},u.prototype.scrollToColumn=function(t,e,o){var i=this;return new Promise(function(n,s){var r=i.columnManager.findColumn(t);r?i.columnManager.scrollToColumn(r,e,o).then(function(){n()}).catch(function(t){s(t)}):(console.warn("Scroll Error - No matching column found:",t),s("Scroll Error - No matching column found"))})},u.prototype.setLocale=function(t){this.modules.localize.setLocale(t)},u.prototype.getLocale=function(){return this.modules.localize.getLocale()},u.prototype.getLang=function(t){return this.modules.localize.getLang(t)},u.prototype.redraw=function(t){this.columnManager.redraw(t),this.rowManager.redraw(t)},u.prototype.setHeight=function(t){"classic"!==this.rowManager.renderMode?(this.options.height=isNaN(t)?t:t+"px",this.element.style.height=this.options.height,this.rowManager.redraw()):console.warn("setHeight function is not available in classic render mode")},u.prototype.setSort=function(t,e){this.modExists("sort",!0)&&(this.modules.sort.setSort(t,e),this.rowManager.sorterRefresh())},u.prototype.getSorters=function(){if(this.modExists("sort",!0))return this.modules.sort.getSort()},u.prototype.clearSort=function(){this.modExists("sort",!0)&&(this.modules.sort.clear(),this.rowManager.sorterRefresh())},u.prototype.setFilter=function(t,e,o){this.modExists("filter",!0)&&(this.modules.filter.setFilter(t,e,o),this.rowManager.filterRefresh())},u.prototype.addFilter=function(t,e,o){this.modExists("filter",!0)&&(this.modules.filter.addFilter(t,e,o),this.rowManager.filterRefresh())},u.prototype.getFilters=function(t){if(this.modExists("filter",!0))return this.modules.filter.getFilters(t)},u.prototype.setHeaderFilterFocus=function(t){if(this.modExists("filter",!0)){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Filter Focus Error - No matching column found:",t),!1;this.modules.filter.setHeaderFilterFocus(e)}},u.prototype.setHeaderFilterValue=function(t,e){if(this.modExists("filter",!0)){var o=this.columnManager.findColumn(t);if(!o)return console.warn("Column Filter Error - No matching column found:",t),!1;this.modules.filter.setHeaderFilterValue(o,e)}},u.prototype.getHeaderFilters=function(){if(this.modExists("filter",!0))return this.modules.filter.getHeaderFilters()},u.prototype.removeFilter=function(t,e,o){this.modExists("filter",!0)&&(this.modules.filter.removeFilter(t,e,o),this.rowManager.filterRefresh())},u.prototype.clearFilter=function(t){this.modExists("filter",!0)&&(this.modules.filter.clearFilter(t),this.rowManager.filterRefresh())},u.prototype.clearHeaderFilter=function(){this.modExists("filter",!0)&&(this.modules.filter.clearHeaderFilter(),this.rowManager.filterRefresh())},u.prototype.selectRow=function(t){this.modExists("selectRow",!0)&&(!0===t&&(console.warn("passing a boolean to the selectRowselectRow function is deprecated, you should now pass the string 'active'"),t="active"),this.modules.selectRow.selectRows(t))},u.prototype.deselectRow=function(t){this.modExists("selectRow",!0)&&this.modules.selectRow.deselectRows(t)},u.prototype.toggleSelectRow=function(t){this.modExists("selectRow",!0)&&this.modules.selectRow.toggleRow(t)},u.prototype.getSelectedRows=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedRows()},u.prototype.getSelectedData=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedData()},u.prototype.setMaxPage=function(t){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setMaxPage(t)},u.prototype.setPage=function(t){return this.options.pagination&&this.modExists("page")?this.modules.page.setPage(t):new Promise(function(t,e){e()})},u.prototype.setPageToRow=function(t){var e=this;return new Promise(function(o,i){e.options.pagination&&e.modExists("page")?(t=e.rowManager.findRow(t),t?e.modules.page.setPageToRow(t).then(function(){o()}).catch(function(){i()}):i()):i()})},u.prototype.setPageSize=function(t){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setPageSize(t),this.modules.page.setPage(1).then(function(){}).catch(function(){})},u.prototype.getPageSize=function(){if(this.options.pagination&&this.modExists("page",!0))return this.modules.page.getPageSize()},u.prototype.previousPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.previousPage()},u.prototype.nextPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.nextPage()},u.prototype.getPage=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPage()},u.prototype.getPageMax=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPageMax()},u.prototype.setGroupBy=function(t){if(!this.modExists("groupRows",!0))return!1;this.options.groupBy=t,this.modules.groupRows.initialize(),this.rowManager.refreshActiveData("display"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")},u.prototype.setGroupStartOpen=function(t){if(!this.modExists("groupRows",!0))return!1;this.options.groupStartOpen=t,this.modules.groupRows.initialize(),this.options.groupBy?(this.rowManager.refreshActiveData("group"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")):console.warn("Grouping Update - cant refresh view, no groups have been set")},u.prototype.setGroupHeader=function(t){if(!this.modExists("groupRows",!0))return!1;this.options.groupHeader=t,this.modules.groupRows.initialize(),this.options.groupBy?(this.rowManager.refreshActiveData("group"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")):console.warn("Grouping Update - cant refresh view, no groups have been set")},u.prototype.getGroups=function(t){return!!this.modExists("groupRows",!0)&&this.modules.groupRows.getGroups(!0)},u.prototype.getGroupedData=function(){if(this.modExists("groupRows",!0))return this.options.groupBy?this.modules.groupRows.getGroupedData():this.getData()},u.prototype.getCalcResults=function(){return!!this.modExists("columnCalcs",!0)&&this.modules.columnCalcs.getResults()},u.prototype.navigatePrev=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&t.nav().prev()},u.prototype.navigateNext=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&t.nav().next()},u.prototype.navigateLeft=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().left())},u.prototype.navigateRight=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().right())},u.prototype.navigateUp=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().up())},u.prototype.navigateDown=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().down())},u.prototype.undo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.undo()},u.prototype.redo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.redo()},u.prototype.getHistoryUndoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryUndoSize()},u.prototype.getHistoryRedoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryRedoSize()},u.prototype.download=function(t,e,o,i){this.modExists("download",!0)&&this.modules.download.download(t,e,o,i)},u.prototype.downloadToTab=function(t,e,o,i){this.modExists("download",!0)&&this.modules.download.download(t,e,o,i,!0)},u.prototype.tableComms=function(t,e,o,i){this.modules.comms.receive(t,e,o,i)},u.prototype.moduleBindings={},u.prototype.extendModule=function(t,e,o){if(u.prototype.moduleBindings[t]){var i=u.prototype.moduleBindings[t].prototype[e];if(i)if("object"==(void 0===o?"undefined":_typeof(o)))for(var n in o)i[n]=o[n];else console.warn("Module Error - Invalid value type, it must be an object");else console.warn("Module Error - property does not exist:",e)}else console.warn("Module Error - module does not exist:",t)},u.prototype.registerModule=function(t,e){u.prototype.moduleBindings[t]=e},u.prototype.bindModules=function(){this.modules={};for(var t in u.prototype.moduleBindings)this.modules[t]=new u.prototype.moduleBindings[t](this)},u.prototype.modExists=function(t,e){return!!this.modules[t]||(e&&console.error("Tabulator Module Not Installed: "+t),!1)},u.prototype.helpers={elVisible:function(t){return!(t.offsetWidth<=0&&t.offsetHeight<=0)},elOffset:function(t){var e=t.getBoundingClientRect();return{top:e.top+window.pageYOffset-document.documentElement.clientTop,left:e.left+window.pageXOffset-document.documentElement.clientLeft}},deepClone:function(t){var e=Array.isArray(t)?[]:{};for(var o in t)null!=t[o]&&"object"===_typeof(t[o])?t[o]instanceof Date?e[o]=new Date(t[o]):e[o]=this.deepClone(t[o]):e[o]=t[o];return e}},u.prototype.comms={tables:[],register:function(t){u.prototype.comms.tables.push(t)},deregister:function(t){var e=u.prototype.comms.tables.indexOf(t);e>-1&&u.prototype.comms.tables.splice(e,1)},lookupTable:function(t,e){var o,i,n=[];if("string"==typeof t){if(o=document.querySelectorAll(t),o.length)for(var s=0;s<o.length;s++)(i=u.prototype.comms.matchElement(o[s]))&&n.push(i)}else"undefined"!=typeof HTMLElement&&t instanceof HTMLElement||t instanceof u?(i=u.prototype.comms.matchElement(t))&&n.push(i):Array.isArray(t)?t.forEach(function(t){n=n.concat(u.prototype.comms.lookupTable(t))}):e||console.warn("Table Connection Error - Invalid Selector",t);return n},matchElement:function(t){return u.prototype.comms.tables.find(function(e){return t instanceof u?e===t:e.element===t})}},u.prototype.findTable=function(t){var e=u.prototype.comms.lookupTable(t,!0);return!(Array.isArray(e)&&!e.length)&&e};var d=function(t){this.table=t,this.mode=null};d.prototype.initialize=function(t){this.modes[t]?this.mode=t:(console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : "+t),this.mode="fitData"),this.table.element.setAttribute("tabulator-layout",this.mode)},d.prototype.getMode=function(){return this.mode},d.prototype.layout=function(){this.modes[this.mode].call(this,this.table.columnManager.columnsByIndex)},d.prototype.modes={fitData:function(t){t.forEach(function(t){t.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataFill:function(t){t.forEach(function(t){t.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataStretch:function(t){var e=this,o=0,i=this.table.rowManager.element.clientWidth,n=0,s=!1;t.forEach(function(t,i){t.widthFixed||t.reinitializeWidth(),(e.table.options.responsiveLayout?t.modules.responsive.visible:t.visible)&&(s=t),t.visible&&(o+=t.getWidth())}),s?(n=i-o+s.getWidth(),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&(s.setWidth(0),this.table.modules.responsiveLayout.update()),n>0?s.setWidth(n):column.reinitializeWidth()):this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitColumns:function(t){function e(t){return"string"==typeof t?t.indexOf("%")>-1?n/100*parseInt(t):parseInt(t):t}function o(t,i,n,s){function r(t){return n*(t.column.definition.widthGrow||1)}function a(t){return e(t.width)-n*(t.column.definition.widthShrink||0)}var l=[],c=0,u=0,d=0,h=0,p=0,m=[];return t.forEach(function(t,e){var o=s?a(t):r(t);t.column.minWidth>=o?l.push(t):(m.push(t),p+=s?t.column.definition.widthShrink||1:t.column.definition.widthGrow||1)}),l.length?(l.forEach(function(t){c+=s?t.width-t.column.minWidth:t.column.minWidth,t.width=t.column.minWidth}),u=i-c,d=p?Math.floor(u/p):u,h=u-d*p,h+=o(m,u,d,s)):(h=p?i-Math.floor(i/p)*p:i,m.forEach(function(t){t.width=s?a(t):r(t)})),h}var i=this,n=i.table.element.clientWidth,s=0,r=0,a=0,l=0,c=[],u=[],d=0,h=0,p=0;this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.rowManager.element.scrollHeight>this.table.rowManager.element.clientHeight&&(n-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),t.forEach(function(t){var o,i,n;t.visible&&(o=t.definition.width,i=parseInt(t.minWidth),o?(n=e(o),s+=n>i?n:i,t.definition.widthShrink&&(u.push({column:t,width:n>i?n:i}),d+=t.definition.widthShrink)):(c.push({column:t,width:0}),a+=t.definition.widthGrow||1))}),r=n-s,l=Math.floor(r/a);var p=o(c,r,l,!1);c.length&&p>0&&(c[c.length-1].width+=+p),c.forEach(function(t){r-=t.width}),h=Math.abs(p)+r,h>0&&d&&(p=o(u,h,Math.floor(h/d),!0)),u.length&&(u[u.length-1].width-=p),c.forEach(function(t){t.column.setWidth(t.width)}),u.forEach(function(t){t.column.setWidth(t.width)})}},u.prototype.registerModule("layout",d);var h=function(t){this.table=t,this.locale="default",this.lang=!1,this.bindings={}};h.prototype.setHeaderFilterPlaceholder=function(t){this.langs.default.headerFilters.default=t},h.prototype.setHeaderFilterColumnPlaceholder=function(t,e){this.langs.default.headerFilters.columns[t]=e,this.lang&&!this.lang.headerFilters.columns[t]&&(this.lang.headerFilters.columns[t]=e)},h.prototype.installLang=function(t,e){this.langs[t]?this._setLangProp(this.langs[t],e):this.langs[t]=e},h.prototype._setLangProp=function(t,e){for(var o in e)t[o]&&"object"==_typeof(t[o])?this._setLangProp(t[o],e[o]):t[o]=e[o]},h.prototype.setLocale=function(t){function e(t,o){for(var i in t)"object"==_typeof(t[i])?(o[i]||(o[i]={}),e(t[i],o[i])):o[i]=t[i]}var o=this;if(t=t||"default",!0===t&&navigator.language&&(t=navigator.language.toLowerCase()),t&&!o.langs[t]){var i=t.split("-")[0];o.langs[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")}o.locale=t,o.lang=u.prototype.helpers.deepClone(o.langs.default||{}),"default"!=t&&e(o.langs[t],o.lang),o.table.options.localized.call(o.table,o.locale,o.lang),o._executeBindings()},h.prototype.getLocale=function(t){return self.locale},h.prototype.getLang=function(t){return t?this.langs[t]:this.lang},h.prototype.getText=function(t,e){var t=e?t+"|"+e:t,o=t.split("|");return this._getLangElement(o,this.locale)||""},h.prototype._getLangElement=function(t,e){var o=this,i=o.lang;return t.forEach(function(t){var e;i&&(e=i[t],i=void 0!==e&&e)}),i},h.prototype.bind=function(t,e){this.bindings[t]||(this.bindings[t]=[]),this.bindings[t].push(e),e(this.getText(t),this.lang)},h.prototype._executeBindings=function(){var t=this;for(var e in t.bindings)!function(e){t.bindings[e].forEach(function(o){o(t.getText(e),t.lang)})}(e)},h.prototype.langs={default:{groups:{item:"item",items:"items"},columns:{},ajax:{loading:"Loading",error:"Error"},pagination:{page_size:"Page Size",first:"First",first_title:"First Page",last:"Last",last_title:"Last Page",prev:"Prev",prev_title:"Prev Page",next:"Next",next_title:"Next Page"},headerFilters:{default:"filter column...",columns:{}}}},u.prototype.registerModule("localize",h);var p=function(t){this.table=t};p.prototype.getConnections=function(t){var e,o=this,i=[];return e=u.prototype.comms.lookupTable(t),e.forEach(function(t){o.table!==t&&i.push(t)}),i},p.prototype.send=function(t,e,o,i){var n=this,s=this.getConnections(t);s.forEach(function(t){t.tableComms(n.table.element,e,o,i)}),!s.length&&t&&console.warn("Table Connection Error - No tables matching selector found",t)},p.prototype.receive=function(t,e,o,i){if(this.table.modExists(e))return this.table.modules[e].commsReceived(t,o,i);console.warn("Inter-table Comms Error - no such module:",e)},u.prototype.registerModule("comms",p);var m=function(t){this.table=t,this.allowedTypes=["","data","download","clipboard"]};m.prototype.initializeColumn=function(t){var e=this,o=!1,i={};this.allowedTypes.forEach(function(n){var s,r="accessor"+(n.charAt(0).toUpperCase()+n.slice(1));t.definition[r]&&(s=e.lookupAccessor(t.definition[r]))&&(o=!0,i[r]={accessor:s,params:t.definition[r+"Params"]||{}})}),o&&(t.modules.accessor=i)},m.prototype.lookupAccessor=function(t){var e=!1;switch(void 0===t?"undefined":_typeof(t)){case"string":this.accessors[t]?e=this.accessors[t]:console.warn("Accessor Error - No such accessor found, ignoring: ",t);break;case"function":e=t}return e},m.prototype.transformRow=function(t,e){var o=this,i="accessor"+(e.charAt(0).toUpperCase()+e.slice(1)),n=u.prototype.helpers.deepClone(t||{});return o.table.columnManager.traverse(function(t){var o,s,r,a;t.modules.accessor&&(s=t.modules.accessor[i]||t.modules.accessor.accessor||!1)&&"undefined"!=(o=t.getFieldValue(n))&&(a=t.getComponent(),r="function"==typeof s.params?s.params(o,n,e,a):s.params,t.setFieldValue(n,s.accessor(o,n,e,r,a)))}),n},m.prototype.accessors={},u.prototype.registerModule("accessor",m);var f=function(t){this.table=t,this.config=!1,this.url="",this.urlGenerator=!1,this.params=!1,this.loaderElement=this.createLoaderElement(),this.msgElement=this.createMsgElement(),this.loadingElement=!1,this.errorElement=!1,this.loaderPromise=!1,this.progressiveLoad=!1,this.loading=!1,this.requestOrder=0};f.prototype.initialize=function(){var t;this.loaderElement.appendChild(this.msgElement),this.table.options.ajaxLoaderLoading&&("string"==typeof this.table.options.ajaxLoaderLoading?(t=document.createElement("template"),t.innerHTML=this.table.options.ajaxLoaderLoading.trim(),this.loadingElement=t.content.firstChild):this.loadingElement=this.table.options.ajaxLoaderLoading),this.loaderPromise=this.table.options.ajaxRequestFunc||this.defaultLoaderPromise,this.urlGenerator=this.table.options.ajaxURLGenerator||this.defaultURLGenerator,this.table.options.ajaxLoaderError&&("string"==typeof this.table.options.ajaxLoaderError?(t=document.createElement("template"),t.innerHTML=this.table.options.ajaxLoaderError.trim(),this.errorElement=t.content.firstChild):this.errorElement=this.table.options.ajaxLoaderError),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.table.options.ajaxProgressiveLoad&&(this.table.options.pagination?(this.progressiveLoad=!1,console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time")):this.table.modExists("page")?(this.progressiveLoad=this.table.options.ajaxProgressiveLoad,this.table.modules.page.initializeProgressive(this.progressiveLoad)):console.error("Pagination plugin is required for progressive ajax loading"))},f.prototype.createLoaderElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-loader"),t},f.prototype.createMsgElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-loader-msg"),t.setAttribute("role","alert"),t},f.prototype.setParams=function(t,e){if(e){this.params=this.params||{};for(var o in t)this.params[o]=t[o]}else this.params=t},f.prototype.getParams=function(){return this.params||{}},f.prototype.setConfig=function(t){if(this._loadDefaultConfig(),"string"==typeof t)this.config.method=t;else for(var e in t)this.config[e]=t[e]},f.prototype._loadDefaultConfig=function(t){var e=this;if(!e.config||t){e.config={};for(var o in e.defaultConfig)e.config[o]=e.defaultConfig[o]}},f.prototype.setUrl=function(t){this.url=t},f.prototype.getUrl=function(){return this.url},f.prototype.loadData=function(t){return this.progressiveLoad?this._loadDataProgressive():this._loadDataStandard(t)},f.prototype.nextPage=function(t){var e;this.loading||(e=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.getElement().clientHeight,t<e&&this.table.modules.page.nextPage().then(function(){}).catch(function(){}))},f.prototype.blockActiveRequest=function(){this.requestOrder++},f.prototype._loadDataProgressive=function(){
+return this.table.rowManager.setData([]),this.table.modules.page.setPage(1)},f.prototype._loadDataStandard=function(t){var e=this;return new Promise(function(o,i){e.sendRequest(t).then(function(n){e.table.rowManager.setData(n,t).then(function(){o()}).catch(function(t){i(t)})}).catch(function(t){i(t)})})},f.prototype.generateParamsList=function(t,e){var o=this,i=[];if(e=e||"",Array.isArray(t))t.forEach(function(t,n){i=i.concat(o.generateParamsList(t,e?e+"["+n+"]":n))});else if("object"===(void 0===t?"undefined":_typeof(t)))for(var n in t)i=i.concat(o.generateParamsList(t[n],e?e+"["+n+"]":n));else i.push({key:e,value:t});return i},f.prototype.serializeParams=function(t){var e=this.generateParamsList(t),o=[];return e.forEach(function(t){o.push(encodeURIComponent(t.key)+"="+encodeURIComponent(t.value))}),o.join("&")},f.prototype.sendRequest=function(t){var e,o=this,i=this,n=i.url;return i.requestOrder++,e=i.requestOrder,i._loadDefaultConfig(),new Promise(function(s,r){!1!==i.table.options.ajaxRequesting.call(o.table,i.url,i.params)?(i.loading=!0,t||i.showLoader(),o.loaderPromise(n,i.config,i.params).then(function(t){e===i.requestOrder?(i.table.options.ajaxResponse&&(t=i.table.options.ajaxResponse.call(i.table,i.url,i.params,t)),s(t)):console.warn("Ajax Response Blocked - An active ajax request was blocked by an attempt to change table data while the request was being made"),i.hideLoader(),i.loading=!1}).catch(function(t){console.error("Ajax Load Error: ",t),i.table.options.ajaxError.call(i.table,t),i.showError(),setTimeout(function(){i.hideLoader()},3e3),i.loading=!1,r()})):r()})},f.prototype.showLoader=function(){if("function"==typeof this.table.options.ajaxLoader?this.table.options.ajaxLoader():this.table.options.ajaxLoader){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.table.modules.localize.getText("ajax|loading"),this.table.element.appendChild(this.loaderElement)}},f.prototype.showError=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.table.modules.localize.getText("ajax|error"),this.table.element.appendChild(this.loaderElement)},f.prototype.hideLoader=function(){this.loaderElement.parentNode&&this.loaderElement.parentNode.removeChild(this.loaderElement)},f.prototype.defaultConfig={method:"GET"},f.prototype.defaultURLGenerator=function(t,e,o){return t&&o&&Object.keys(o).length&&(e.method&&"get"!=e.method.toLowerCase()||(e.method="get",t+=(t.includes("?")?"&":"?")+this.serializeParams(o))),t},f.prototype.defaultLoaderPromise=function(t,e,o){var i,n=this;return new Promise(function(s,r){if(t=n.urlGenerator(t,e,o),"GET"!=e.method.toUpperCase())if(i="object"===_typeof(n.table.options.ajaxContentType)?n.table.options.ajaxContentType:n.contentTypeFormatters[n.table.options.ajaxContentType]){for(var a in i.headers)e.headers||(e.headers={}),void 0===e.headers[a]&&(e.headers[a]=i.headers[a]);e.body=i.body.call(n,t,e,o)}else console.warn("Ajax Error - Invalid ajaxContentType value:",n.table.options.ajaxContentType);t?(void 0===e.headers&&(e.headers={}),void 0===e.headers.Accept&&(e.headers.Accept="application/json"),void 0===e.headers["X-Requested-With"]&&(e.headers["X-Requested-With"]="XMLHttpRequest"),void 0===e.mode&&(e.mode="cors"),"cors"==e.mode?(void 0===e.headers["Access-Control-Allow-Origin"]&&(e.headers["Access-Control-Allow-Origin"]=window.location.origin),void 0===e.credentials&&(e.credentials="same-origin")):void 0===e.credentials&&(e.credentials="include"),fetch(t,e).then(function(t){t.ok?t.json().then(function(t){s(t)}).catch(function(t){r(t),console.warn("Ajax Load Error - Invalid JSON returned",t)}):(console.error("Ajax Load Error - Connection Error: "+t.status,t.statusText),r(t))}).catch(function(t){console.error("Ajax Load Error - Connection Error: ",t),r(t)})):(console.warn("Ajax Load Error - No URL Set"),s([]))})},f.prototype.contentTypeFormatters={json:{headers:{"Content-Type":"application/json"},body:function(t,e,o){return JSON.stringify(o)}},form:{headers:{},body:function(t,e,o){var i=this.generateParamsList(o),n=new FormData;return i.forEach(function(t){n.append(t.key,t.value)}),n}}},u.prototype.registerModule("ajax",f);var g=function(t){this.table=t,this.topCalcs=[],this.botCalcs=[],this.genColumn=!1,this.topElement=this.createElement(),this.botElement=this.createElement(),this.topRow=!1,this.botRow=!1,this.topInitialized=!1,this.botInitialized=!1,this.initialize()};g.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-calcs-holder"),t},g.prototype.initialize=function(){this.genColumn=new i({field:"value"},this)},g.prototype.registerColumnField=function(){},g.prototype.initializeColumn=function(t){var e=t.definition,o={topCalcParams:e.topCalcParams||{},botCalcParams:e.bottomCalcParams||{}};if(e.topCalc){switch(_typeof(e.topCalc)){case"string":this.calculations[e.topCalc]?o.topCalc=this.calculations[e.topCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",e.topCalc);break;case"function":o.topCalc=e.topCalc}o.topCalc&&(t.modules.columnCalcs=o,this.topCalcs.push(t),"group"!=this.table.options.columnCalcs&&this.initializeTopRow())}if(e.bottomCalc){switch(_typeof(e.bottomCalc)){case"string":this.calculations[e.bottomCalc]?o.botCalc=this.calculations[e.bottomCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",e.bottomCalc);break;case"function":o.botCalc=e.bottomCalc}o.botCalc&&(t.modules.columnCalcs=o,this.botCalcs.push(t),"group"!=this.table.options.columnCalcs&&this.initializeBottomRow())}},g.prototype.removeCalcs=function(){var t=!1;this.topInitialized&&(this.topInitialized=!1,this.topElement.parentNode.removeChild(this.topElement),t=!0),this.botInitialized&&(this.botInitialized=!1,this.table.footerManager.remove(this.botElement),t=!0),t&&this.table.rowManager.adjustTableSize()},g.prototype.initializeTopRow=function(){this.topInitialized||(this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling),this.topInitialized=!0)},g.prototype.initializeBottomRow=function(){this.botInitialized||(this.table.footerManager.prepend(this.botElement),this.botInitialized=!0)},g.prototype.scrollHorizontal=function(t){this.table.columnManager.getElement().scrollWidth,this.table.element.clientWidth;this.botInitialized&&(this.botRow.getElement().style.marginLeft=-t+"px")},g.prototype.recalc=function(t){var e;if(this.topInitialized||this.botInitialized){if(this.rowsToData(t),this.topInitialized){for(this.topRow&&this.topRow.deleteCells(),e=this.generateRow("top",this.rowsToData(t)),this.topRow=e;this.topElement.firstChild;)this.topElement.removeChild(this.topElement.firstChild);this.topElement.appendChild(e.getElement()),e.initialize(!0)}if(this.botInitialized){for(this.botRow&&this.botRow.deleteCells(),e=this.generateRow("bottom",this.rowsToData(t)),this.botRow=e;this.botElement.firstChild;)this.botElement.removeChild(this.botElement.firstChild);this.botElement.appendChild(e.getElement()),e.initialize(!0)}this.table.rowManager.adjustTableSize(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()}},g.prototype.recalcRowGroup=function(t){this.recalcGroup(this.table.modules.groupRows.getRowGroup(t))},g.prototype.recalcGroup=function(t){var e,o;t&&t.calcs&&(t.calcs.bottom&&(e=this.rowsToData(t.rows),o=this.generateRowData("bottom",e),t.calcs.bottom.updateData(o),t.calcs.bottom.reinitialize()),t.calcs.top&&(e=this.rowsToData(t.rows),o=this.generateRowData("top",e),t.calcs.top.updateData(o),t.calcs.top.reinitialize()))},g.prototype.generateTopRow=function(t){return this.generateRow("top",this.rowsToData(t))},g.prototype.generateBottomRow=function(t){return this.generateRow("bottom",this.rowsToData(t))},g.prototype.rowsToData=function(t){var e=[];return t.forEach(function(t){e.push(t.getData())}),e},g.prototype.generateRow=function(t,e){var o,i=this,n=this.generateRowData(t,e);return i.table.modExists("mutator")&&i.table.modules.mutator.disable(),o=new r(n,this,"calc"),i.table.modExists("mutator")&&i.table.modules.mutator.enable(),o.getElement().classList.add("tabulator-calcs","tabulator-calcs-"+t),o.generateCells=function(){var e=[];i.table.columnManager.columnsByIndex.forEach(function(n){i.genColumn.setField(n.getField()),i.genColumn.hozAlign=n.hozAlign,n.definition[t+"CalcFormatter"]&&i.table.modExists("format")?i.genColumn.modules.format={formatter:i.table.modules.format.getFormatter(n.definition[t+"CalcFormatter"]),params:n.definition[t+"CalcFormatterParams"]}:i.genColumn.modules.format={formatter:i.table.modules.format.getFormatter("plaintext"),params:{}},i.genColumn.definition.cssClass=n.definition.cssClass;var s=new l(i.genColumn,o);s.column=n,s.setWidth(),n.cells.push(s),e.push(s),n.visible||s.hide()}),this.cells=e},o},g.prototype.generateRowData=function(t,e){var o,i,n={},s="top"==t?this.topCalcs:this.botCalcs,r="top"==t?"topCalc":"botCalc";return s.forEach(function(t){var s=[];t.modules.columnCalcs&&t.modules.columnCalcs[r]&&(e.forEach(function(e){s.push(t.getFieldValue(e))}),i=r+"Params",o="function"==typeof t.modules.columnCalcs[i]?t.modules.columnCalcs[i](s,e):t.modules.columnCalcs[i],t.setFieldValue(n,t.modules.columnCalcs[r](s,e,o)))}),n},g.prototype.hasTopCalcs=function(){return!!this.topCalcs.length},g.prototype.hasBottomCalcs=function(){return!!this.botCalcs.length},g.prototype.redraw=function(){this.topRow&&this.topRow.normalizeHeight(!0),this.botRow&&this.botRow.normalizeHeight(!0)},g.prototype.getResults=function(){var t,e=this,o={};return this.table.options.groupBy&&this.table.modExists("groupRows")?(t=this.table.modules.groupRows.getGroups(!0),t.forEach(function(t){o[t.getKey()]=e.getGroupResults(t)})):o={top:this.topRow?this.topRow.getData():{},bottom:this.botRow?this.botRow.getData():{}},o},g.prototype.getGroupResults=function(t){var e=this,o=t._getSelf(),i=t.getSubGroups(),n={};return i.forEach(function(t){n[t.getKey()]=e.getGroupResults(t)}),{top:o.calcs.top?o.calcs.top.getData():{},bottom:o.calcs.bottom?o.calcs.bottom.getData():{},groups:n}},g.prototype.calculations={avg:function(t,e,o){var i=0,n=void 0!==o.precision?o.precision:2;return t.length&&(i=t.reduce(function(t,e){return e=Number(e),t+e}),i/=t.length,i=!1!==n?i.toFixed(n):i),parseFloat(i).toString()},max:function(t,e,o){var i=null,n=void 0!==o.precision&&o.precision;return t.forEach(function(t){((t=Number(t))>i||null===i)&&(i=t)}),null!==i?!1!==n?i.toFixed(n):i:""},min:function(t,e,o){var i=null,n=void 0!==o.precision&&o.precision;return t.forEach(function(t){((t=Number(t))<i||null===i)&&(i=t)}),null!==i?!1!==n?i.toFixed(n):i:""},sum:function(t,e,o){var i=0,n=void 0!==o.precision&&o.precision;return t.length&&t.forEach(function(t){t=Number(t),i+=isNaN(t)?0:Number(t)}),!1!==n?i.toFixed(n):i},concat:function(t,e,o){var i=0;return t.length&&(i=t.reduce(function(t,e){return String(t)+String(e)})),i},count:function(t,e,o){var i=0;return t.length&&t.forEach(function(t){t&&i++}),i}},u.prototype.registerModule("columnCalcs",g);var b=function(t){this.table=t,this.mode=!0,this.copySelector=!1,this.copySelectorParams={},this.copyFormatter=!1,this.copyFormatterParams={},this.pasteParser=function(){},this.pasteAction=function(){},this.htmlElement=!1,this.config={},this.blocked=!0};b.prototype.initialize=function(){var t=this;this.mode=this.table.options.clipboard,!0!==this.mode&&"copy"!==this.mode||this.table.element.addEventListener("copy",function(e){var o;t.processConfig(),t.blocked||(e.preventDefault(),o=t.generateContent(),window.clipboardData&&window.clipboardData.setData?window.clipboardData.setData("Text",o):e.clipboardData&&e.clipboardData.setData?(e.clipboardData.setData("text/plain",o),t.htmlElement&&e.clipboardData.setData("text/html",t.htmlElement.outerHTML)):e.originalEvent&&e.originalEvent.clipboardData.setData&&(e.originalEvent.clipboardData.setData("text/plain",o),t.htmlElement&&e.originalEvent.clipboardData.setData("text/html",t.htmlElement.outerHTML)),t.table.options.clipboardCopied.call(this.table,o),t.reset())}),!0!==this.mode&&"paste"!==this.mode||this.table.element.addEventListener("paste",function(e){t.paste(e)}),this.setPasteParser(this.table.options.clipboardPasteParser),this.setPasteAction(this.table.options.clipboardPasteAction)},b.prototype.processConfig=function(){var t={columnHeaders:"groups",rowGroups:!0,columnCalcs:!0};if(void 0!==this.table.options.clipboardCopyHeader&&(t.columnHeaders=this.table.options.clipboardCopyHeader,console.warn("DEPRECATION WARNING - clipboardCopyHeader option has been deprecated, please use the columnHeaders property on the clipboardCopyConfig option")),this.table.options.clipboardCopyConfig)for(var e in this.table.options.clipboardCopyConfig)t[e]=this.table.options.clipboardCopyConfig[e];t.rowGroups&&this.table.options.groupBy&&this.table.modExists("groupRows")&&(this.config.rowGroups=!0),t.columnHeaders?"groups"!==t.columnHeaders&&!0!==t||this.table.columnManager.columns.length==this.table.columnManager.columnsByIndex.length?this.config.columnHeaders="columns":this.config.columnHeaders="groups":this.config.columnHeaders=!1,t.columnCalcs&&this.table.modExists("columnCalcs")&&(this.config.columnCalcs=!0)},b.prototype.reset=function(){this.blocked=!1,this.originalSelectionText=""},b.prototype.setPasteAction=function(t){switch(void 0===t?"undefined":_typeof(t)){case"string":this.pasteAction=this.pasteActions[t],this.pasteAction||console.warn("Clipboard Error - No such paste action found:",t);break;case"function":this.pasteAction=t}},b.prototype.setPasteParser=function(t){switch(void 0===t?"undefined":_typeof(t)){case"string":this.pasteParser=this.pasteParsers[t],this.pasteParser||console.warn("Clipboard Error - No such paste parser found:",t);break;case"function":this.pasteParser=t}},b.prototype.paste=function(t){var e,o,i;this.checkPaseOrigin(t)&&(e=this.getPasteData(t),o=this.pasteParser.call(this,e),o?(t.preventDefault(),this.table.modExists("mutator")&&(o=this.mutateData(o)),i=this.pasteAction.call(this,o),this.table.options.clipboardPasted.call(this.table,e,o,i)):this.table.options.clipboardPasteError.call(this.table,e))},b.prototype.mutateData=function(t){var e=this,o=[];return Array.isArray(t)?t.forEach(function(t){o.push(e.table.modules.mutator.transformRow(t,"clipboard"))}):o=t,o},b.prototype.checkPaseOrigin=function(t){var e=!0;return("DIV"!=t.target.tagName||this.table.modules.edit.currentCell)&&(e=!1),e},b.prototype.getPasteData=function(t){var e;return window.clipboardData&&window.clipboardData.getData?e=window.clipboardData.getData("Text"):t.clipboardData&&t.clipboardData.getData?e=t.clipboardData.getData("text/plain"):t.originalEvent&&t.originalEvent.clipboardData.getData&&(e=t.originalEvent.clipboardData.getData("text/plain")),e},b.prototype.copy=function(t,e,o,i,n){var s,r,a;this.blocked=!1,!0!==this.mode&&"copy"!==this.mode||(void 0!==window.getSelection&&void 0!==document.createRange?(s=document.createRange(),s.selectNodeContents(this.table.element),r=window.getSelection(),r.toString()&&n&&(t="userSelection",o="raw",e=r.toString()),r.removeAllRanges(),r.addRange(s)):void 0!==document.selection&&void 0!==document.body.createTextRange&&(a=document.body.createTextRange(),a.moveToElementText(this.table.element),a.select()),this.setSelector(t),this.copySelectorParams=void 0!==e&&null!=e?e:this.config.columnHeaders,this.setFormatter(o),this.copyFormatterParams=void 0!==i&&null!=i?i:{},document.execCommand("copy"),r&&r.removeAllRanges())},b.prototype.setSelector=function(t){switch(t=t||this.table.options.clipboardCopySelector,void 0===t?"undefined":_typeof(t)){case"string":this.copySelectors[t]?this.copySelector=this.copySelectors[t]:console.warn("Clipboard Error - No such selector found:",t);break;case"function":this.copySelector=t}},b.prototype.setFormatter=function(t){switch(t=t||this.table.options.clipboardCopyFormatter,void 0===t?"undefined":_typeof(t)){case"string":this.copyFormatters[t]?this.copyFormatter=this.copyFormatters[t]:console.warn("Clipboard Error - No such formatter found:",t);break;case"function":this.copyFormatter=t}},b.prototype.generateContent=function(){var t;return this.htmlElement=!1,t=this.copySelector.call(this,this.config,this.copySelectorParams),this.copyFormatter.call(this,t,this.config,this.copyFormatterParams)},b.prototype.generateSimpleHeaders=function(t){var e=[];return t.forEach(function(t){e.push(t.definition.title)}),e},b.prototype.generateColumnGroupHeaders=function(t){var e=this,o=[];return this.table.columnManager.columns.forEach(function(t){var i=e.processColumnGroup(t);i&&o.push(i)}),o},b.prototype.processColumnGroup=function(t){var e=this,o=t.columns,i={type:"group",title:t.definition.title,column:t};if(o.length){if(i.subGroups=[],i.width=0,o.forEach(function(t){var o=e.processColumnGroup(t);o&&(i.width+=o.width,i.subGroups.push(o))}),!i.width)return!1}else{if(!t.field||!(t.definition.clipboard||t.visible&&!1!==t.definition.clipboard))return!1;i.width=1}return i},b.prototype.groupHeadersToRows=function(t){function e(t,n){void 0===i[n]&&(i[n]=[]),i[n].push(t.title),t.subGroups?t.subGroups.forEach(function(t){e(t,n+1)}):o()}function o(){var t=0;i.forEach(function(e){var o=e.length;o>t&&(t=o)}),i.forEach(function(e){var o=e.length;if(o<t)for(var i=o;i<t;i++)e.push("")})}var i=[];return t.forEach(function(t){e(t,0)}),i},b.prototype.rowsToData=function(t,e,o,i){var n=[];return t.forEach(function(t){var o=[],i=t instanceof s?t.getData("clipboard"):t;e.forEach(function(t){var e=t.getFieldValue(i);switch(void 0===e?"undefined":_typeof(e)){case"object":e=JSON.stringify(e);break;case"undefined":case"null":e="";break;default:e=e}o.push(e)}),n.push(o)}),n},b.prototype.buildComplexRows=function(t){var e=this,o=[];return this.table.modules.groupRows.getGroups().forEach(function(t){o.push(e.processGroupData(t))}),o},b.prototype.processGroupData=function(t){var e=this,o=t.getSubGroups(),i={type:"group",key:t.key};return o.length?(i.subGroups=[],o.forEach(function(t){i.subGroups.push(e.processGroupData(t))})):i.rows=t.getRows(!0),i},b.prototype.getCalcRow=function(t,e,o,i){var n=t[o];return n&&(i&&(n=n[i]),Object.keys(n).length)?this.rowsToData([n],e):[]},b.prototype.buildOutput=function(t,e,o){var i,n=this,s=[],r=[],a=[];return this.table.columnManager.columnsByIndex.forEach(function(t){(t.definition.clipboard||t.visible&&!1!==t.definition.clipboard)&&a.push(t)}),"groups"==e.columnHeaders?(r=this.generateColumnGroupHeaders(this.table.columnManager.columns),s=s.concat(this.groupHeadersToRows(r))):(r=a,s.push(this.generateSimpleHeaders(r))),this.config.columnCalcs&&(i=this.table.getCalcResults()),this.table.options.clipboardCopyStyled&&this.generateHTML(t,r,i,e,o),e.rowGroups?t.forEach(function(t){s=s.concat(n.parseRowGroupData(t,a,e,o,i||{}))}):(e.columnCalcs&&(s=s.concat(this.getCalcRow(i,a,"top"))),s=s.concat(this.rowsToData(t,a,e,o)),e.columnCalcs&&(s=s.concat(this.getCalcRow(i,a,"bottom")))),s},b.prototype.parseRowGroupData=function(t,e,o,i,n){var s=this,r=[];return r.push([t.key]),t.subGroups?t.subGroups.forEach(function(e){r=r.concat(s.parseRowGroupData(e,o,i,n[t.key]?n[t.key].groups||{}:{}))}):(o.columnCalcs&&(r=r.concat(this.getCalcRow(n,e,t.key,"top"))),r=r.concat(this.rowsToData(t.rows,e,o,i)),o.columnCalcs&&(r=r.concat(this.getCalcRow(n,e,t.key,"bottom")))),r},b.prototype.generateHTML=function(t,e,o,i,n){function r(t,e){var o=[];return void 0===y[e]&&(y[e]=[]),y[e].push({title:t.title,width:t.width,height:1,children:!!t.subGroups,element:t.column.getElement()}),t.subGroups?(t.subGroups.forEach(function(t){o=o.concat(r(t,e+1))}),o):[t.column]}function a(t,e,o){var i=t[e];i&&(o&&(i=i[o]),Object.keys(i).length&&l([i]))}function l(t){t.forEach(function(t,o){var i,n=document.createElement("tr"),r=m,a=!1;t instanceof s?i=t.getData("clipboard"):(i=t,a=!0),e.forEach(function(t,o){var s=document.createElement("td"),r=t.getFieldValue(i);switch(void 0===r?"undefined":_typeof(r)){case"object":r=JSON.stringify(r);break;case"undefined":case"null":r="";break;default:r=r}s.innerHTML=r,t.definition.align&&(s.style.textAlign=t.definition.align),e.length,f&&v.mapElementStyles(f,s,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size"]),n.appendChild(s)}),a?r=p:(o%2||!d||(r=d),o%2&&h&&(r=h)),r&&v.mapElementStyles(r,n,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),u.appendChild(n)})}function c(t,o){var n=document.createElement("tr"),s=document.createElement("td");s.colSpan=e.length,s.innerHTML=t.key,n.appendChild(s),u.appendChild(n),v.mapElementStyles(g,n,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),t.subGroups?t.subGroups.forEach(function(e){c(e,o[t.key]?o[t.key].groups||{}:{})}):(i.columnCalcs&&a(o,t.key,"top"),l(t.rows),i.columnCalcs&&a(o,t.key,"bottom"))}var u,d,h,p,m,f,g,b,v=this,y=[];if(this.htmlElement=document.createElement("table"),v.mapElementStyles(this.table.element,this.htmlElement,["border-top","border-left","border-right","border-bottom"]),i.columnHeaders)if("groups"==i.columnHeaders){var w=[];e.forEach(function(t){w=w.concat(r(t,0))}),e=w,function(){y.forEach(function(t,e){t.forEach(function(t){t.children||(t.height=y.length-e)})})}(),function(t){var e=document.createElement("thead");t.forEach(function(t){var o=document.createElement("tr");t.forEach(function(t){var e=document.createElement("th");t.width>1&&(e.colSpan=t.width),t.height>1&&(e.rowSpan=t.height),e.innerHTML=t.title,v.mapElementStyles(t.element,e,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),o.appendChild(e)}),v.mapElementStyles(v.table.columnManager.getHeadersElement(),o,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),e.appendChild(o)}),v.htmlElement.appendChild(e)}(y)}else!function(){var t=document.createElement("tr");e.forEach(function(e){var o=document.createElement("th");o.innerHTML=e.definition.title,v.mapElementStyles(e.getElement(),o,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),t.appendChild(o)}),v.mapElementStyles(v.table.columnManager.getHeadersElement(),t,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),v.htmlElement.appendChild(document.createElement("thead").appendChild(t))}();u=document.createElement("tbody"),window.getComputedStyle&&(d=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),h=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),p=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),m=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),g=this.table.element.getElementsByClassName("tabulator-group")[0],m&&(b=m.getElementsByClassName("tabulator-cell"),f=b[0],b[b.length-1])),i.rowGroups?t.forEach(function(t){c(t,o||{})}):(i.columnCalcs&&a(o,"top"),l(t),i.columnCalcs&&a(o,"bottom")),this.htmlElement.appendChild(u)},b.prototype.mapElementStyles=function(t,e,o){var i={"background-color":"backgroundColor",color:"fontColor","font-weight":"fontWeight","font-family":"fontFamily","font-size":"fontSize","border-top":"borderTop","border-left":"borderLeft","border-right":"borderRight","border-bottom":"borderBottom"};if(window.getComputedStyle){var n=window.getComputedStyle(t);o.forEach(function(t){e.style[i[t]]=n.getPropertyValue(t)})}},b.prototype.copySelectors={userSelection:function(t,e){return e},selected:function(t,e){var o=[];return this.table.modExists("selectRow",!0)&&(o=this.table.modules.selectRow.getSelectedRows()),t.rowGroups&&console.warn("Clipboard Warning - select coptSelector does not support row groups"),this.buildOutput(o,t,e)},table:function(t,e){return t.rowGroups&&console.warn("Clipboard Warning - table coptSelector does not support row groups"),this.buildOutput(this.table.rowManager.getComponents(),t,e)},active:function(t,e){var o;return o=t.rowGroups?this.buildComplexRows(t):this.table.rowManager.getComponents("active"),this.buildOutput(o,t,e)},visible:function(t,e){var o;return o=t.rowGroups?this.buildComplexRows(t):this.table.rowManager.getComponents("visible"),this.buildOutput(o,t,e)}},b.prototype.copyFormatters={raw:function(t,e){return t},table:function(t,e){var o=[];return t.forEach(function(t){var e=[];t.forEach(function(t){void 0===t&&(t=""),t=void 0===t||null===t?"":t.toString(),t.match(/\r|\n/)&&(t=t.split('"').join('""'),t='"'+t+'"'),e.push(t)}),o.push(e.join("\t"))}),o.join("\n")}},b.prototype.pasteParsers={table:function(t){var e=[],o=!0,i=this.table.columnManager.columns,n=[],s=[];return t=t.split("\n"),t.forEach(function(t){e.push(t.split("\t"))}),!(!e.length||1===e.length&&e[0].length<2)&&(!0,e[0].forEach(function(t){var e=i.find(function(e){return t&&e.definition.title&&t.trim()&&e.definition.title.trim()===t.trim()});e?n.push(e):o=!1}),o||(o=!0,n=[],e[0].forEach(function(t){var e=i.find(function(e){return t&&e.field&&t.trim()&&e.field.trim()===t.trim()});e?n.push(e):o=!1}),o||(n=this.table.columnManager.columnsByIndex)),o&&e.shift(),e.forEach(function(t){var e={};t.forEach(function(t,o){n[o]&&(e[n[o].field]=t)}),s.push(e)}),s)}},b.prototype.pasteActions={replace:function(t){return this.table.setData(t)},update:function(t){return this.table.updateOrAddData(t)},insert:function(t){return this.table.addData(t)}},u.prototype.registerModule("clipboard",b);var v=function(t){this.table=t,this.indent=10,this.field="",this.collapseEl=null,this.expandEl=null,this.branchEl=null,this.elementField=!1,this.startOpen=function(){},this.displayIndex=0};v.prototype.initialize=function(){var t=null,e=this.table.columnManager.getFirstVisibileColumn(),o=this.table.options;switch(this.field=o.dataTreeChildField,this.indent=o.dataTreeChildIndent,this.elementField=o.dataTreeElementColumn||!!e&&e.field,o.dataTreeBranchElement&&(!0===o.dataTreeBranchElement?(this.branchEl=document.createElement("div"),this.branchEl.classList.add("tabulator-data-tree-branch")):"string"==typeof o.dataTreeBranchElement?(t=document.createElement("div"),t.innerHTML=o.dataTreeBranchElement,this.branchEl=t.firstChild):this.branchEl=o.dataTreeBranchElement),o.dataTreeCollapseElement?"string"==typeof o.dataTreeCollapseElement?(t=document.createElement("div"),t.innerHTML=o.dataTreeCollapseElement,this.collapseEl=t.firstChild):this.collapseEl=o.dataTreeCollapseElement:(this.collapseEl=document.createElement("div"),this.collapseEl.classList.add("tabulator-data-tree-control"),this.collapseEl.tabIndex=0,this.collapseEl.innerHTML="<div class='tabulator-data-tree-control-collapse'></div>"),o.dataTreeExpandElement?"string"==typeof o.dataTreeExpandElement?(t=document.createElement("div"),t.innerHTML=o.dataTreeExpandElement,this.expandEl=t.firstChild):this.expandEl=o.dataTreeExpandElement:(this.expandEl=document.createElement("div"),this.expandEl.classList.add("tabulator-data-tree-control"),this.expandEl.tabIndex=0,this.expandEl.innerHTML="<div class='tabulator-data-tree-control-expand'></div>"),_typeof(o.dataTreeStartExpanded)){case"boolean":this.startOpen=function(t,e){return o.dataTreeStartExpanded};break;case"function":this.startOpen=o.dataTreeStartExpanded;break;default:this.startOpen=function(t,e){return o.dataTreeStartExpanded[e]}}},v.prototype.initializeRow=function(t){var e=t.getData()[this.field],o=Array.isArray(e),i=o||!o&&"object"===(void 0===e?"undefined":_typeof(e))&&null!==e;t.modules.dataTree={index:0,open:!!i&&this.startOpen(t.getComponent(),0),controlEl:!1,branchEl:!1,parent:!1,children:i}},v.prototype.layoutRow=function(t){var e=this.elementField?t.getCell(this.elementField):t.getCells()[0],o=e.getElement(),i=t.modules.dataTree;i.branchEl&&i.branchEl.parentNode.removeChild(i.branchEl),this.generateControlElement(t,o),i.index&&(this.branchEl?(i.branchEl=this.branchEl.cloneNode(!0),o.insertBefore(i.branchEl,o.firstChild),i.branchEl.style.marginLeft=(i.branchEl.offsetWidth+i.branchEl.style.marginRight)*(i.index-1)+i.index*this.indent+"px"):o.style.paddingLeft=parseInt(window.getComputedStyle(o,null).getPropertyValue("padding-left"))+i.index*this.indent+"px")},v.prototype.generateControlElement=function(t,e){var o=this,i=t.modules.dataTree,e=e||t.getCells()[0].getElement(),n=i.controlEl;!1!==i.children&&(i.open?(i.controlEl=this.collapseEl.cloneNode(!0),i.controlEl.addEventListener("click",function(e){e.stopPropagation(),o.collapseRow(t)})):(i.controlEl=this.expandEl.cloneNode(!0),i.controlEl.addEventListener("click",function(e){e.stopPropagation(),o.expandRow(t)})),i.controlEl.addEventListener("mousedown",function(t){t.stopPropagation()}),n&&n.parentNode===e?n.parentNode.replaceChild(i.controlEl,n):e.insertBefore(i.controlEl,e.firstChild))},v.prototype.setDisplayIndex=function(t){this.displayIndex=t},v.prototype.getDisplayIndex=function(){return this.displayIndex},v.prototype.getRows=function(t){var e=this,o=[];return t.forEach(function(t,i){var n,s;o.push(t),t instanceof r&&(n=t.modules.dataTree.children,n.index||!1===n.children||(s=e.getChildren(t),s.forEach(function(t){o.push(t)})))}),o},v.prototype.getChildren=function(t){var e=this,o=t.modules.dataTree,i=[],n=[];return!1!==o.children&&o.open&&(Array.isArray(o.children)||(o.children=this.generateChildren(t)),i=this.table.modExists("filter")?this.table.modules.filter.filter(o.children):o.children,this.table.modExists("sort")&&this.table.modules.sort.sort(i),i.forEach(function(t){n.push(t),e.getChildren(t).forEach(function(t){n.push(t)})})),n},v.prototype.generateChildren=function(t){var e=this,o=[],i=t.getData()[this.field];return Array.isArray(i)||(i=[i]),i.forEach(function(i){var n=new r(i||{},e.table.rowManager);n.modules.dataTree.index=t.modules.dataTree.index+1,n.modules.dataTree.parent=t,n.modules.dataTree.children&&(n.modules.dataTree.open=e.startOpen(n.getComponent(),n.modules.dataTree.index)),o.push(n)}),o},v.prototype.expandRow=function(t,e){var o=t.modules.dataTree;!1!==o.children&&(o.open=!0,t.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowExpanded(t.getComponent(),t.modules.dataTree.index))},v.prototype.collapseRow=function(t){var e=t.modules.dataTree;!1!==e.children&&(e.open=!1,t.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowCollapsed(t.getComponent(),t.modules.dataTree.index))},v.prototype.toggleRow=function(t){var e=t.modules.dataTree;!1!==e.children&&(e.open?this.collapseRow(t):this.expandRow(t))},v.prototype.getTreeParent=function(t){return!!t.modules.dataTree.parent&&t.modules.dataTree.parent.getComponent()},v.prototype.getTreeChildren=function(t){var e=t.modules.dataTree,o=[];return e.children&&(Array.isArray(e.children)||(e.children=this.generateChildren(t)),e.children.forEach(function(t){t instanceof r&&o.push(t.getComponent())})),o},v.prototype.checkForRestyle=function(t){t.row.cells.indexOf(t)||!1!==t.row.modules.dataTree.children&&t.row.reinitialize()},v.prototype.getChildField=function(){return this.field},v.prototype.redrawNeeded=function(t){return!!this.field&&void 0!==t[this.field]||!!this.elementField&&void 0!==t[this.elementField]},u.prototype.registerModule("dataTree",v)
+;var y=function(t){this.table=t,this.fields={},this.columnsByIndex=[],this.columnsByField={},this.config={}};y.prototype.download=function(t,e,o,i,n){function s(o,i){n?!0===n?r.triggerDownload(o,i,t,e,!0):n(o):r.triggerDownload(o,i,t,e)}var r=this,a=!1;this.processConfig(),"function"==typeof t?a=t:r.downloaders[t]?a=r.downloaders[t]:console.warn("Download Error - No such download type found: ",t),this.processColumns(),a&&a.call(this,r.processDefinitions(),r.processData(i||"active"),o||{},s,this.config)},y.prototype.processConfig=function(){var t={columnGroups:!0,rowGroups:!0,columnCalcs:!0};if(this.table.options.downloadConfig)for(var e in this.table.options.downloadConfig)t[e]=this.table.options.downloadConfig[e];t.rowGroups&&this.table.options.groupBy&&this.table.modExists("groupRows")&&(this.config.rowGroups=!0),t.columnGroups&&this.table.columnManager.columns.length!=this.table.columnManager.columnsByIndex.length&&(this.config.columnGroups=!0),t.columnCalcs&&this.table.modExists("columnCalcs")&&(this.config.columnCalcs=!0)},y.prototype.processColumns=function(){var t=this;t.columnsByIndex=[],t.columnsByField={},t.table.columnManager.columnsByIndex.forEach(function(e){e.field&&!1!==e.definition.download&&(e.visible||!e.visible&&e.definition.download)&&(t.columnsByIndex.push(e),t.columnsByField[e.field]=e)})},y.prototype.processDefinitions=function(){var t=this,e=[];return this.config.columnGroups?t.table.columnManager.columns.forEach(function(o){var i=t.processColumnGroup(o);i&&e.push(i)}):t.columnsByIndex.forEach(function(o){!1!==o.download&&e.push(t.processDefinition(o))}),e},y.prototype.processColumnGroup=function(t){var e=this,o=t.columns,i=0,n=this.processDefinition(t),s={type:"group",title:n.title,depth:1};if(o.length){if(s.subGroups=[],s.width=0,o.forEach(function(t){var o=e.processColumnGroup(t);o.depth>i&&(i=o.depth),o&&(s.width+=o.width,s.subGroups.push(o))}),s.depth+=i,!s.width)return!1}else{if(!t.field||!1===t.definition.download||!(t.visible||!t.visible&&t.definition.download))return!1;s.width=1,s.definition=n}return s},y.prototype.processDefinition=function(t){var e={};for(var o in t.definition)e[o]=t.definition[o];return void 0!==t.definition.downloadTitle&&(e.title=t.definition.downloadTitle),e},y.prototype.processData=function(t){var e=this,o=this,i=[],n=[],s=!1,r={};return this.config.rowGroups?("visible"==t?(s=o.table.rowManager.getRows(t),s.forEach(function(t){if("row"==t.type){var e=t.getGroup();-1===n.indexOf(e)&&n.push(e)}})):n=this.table.modules.groupRows.getGroups(),n.forEach(function(t){i.push(e.processGroupData(t,s))})):i=o.table.rowManager.getData(t,"download"),this.config.columnCalcs&&(r=this.table.getCalcResults(),i={calcs:r,data:i}),"function"==typeof o.table.options.downloadDataFormatter&&(i=o.table.options.downloadDataFormatter(i)),i},y.prototype.processGroupData=function(t,e){var o=this,i=t.getSubGroups(),n={type:"group",key:t.key};return i.length?(n.subGroups=[],i.forEach(function(t){n.subGroups.push(o.processGroupData(t,e))})):e?(n.rows=[],t.rows.forEach(function(t){e.indexOf(t)>-1&&n.rows.push(t.getData("download"))})):n.rows=t.getData(!0,"download"),n},y.prototype.triggerDownload=function(t,e,o,i,n){var s=document.createElement("a"),r=new Blob([t],{type:e}),i=i||"Tabulator."+("function"==typeof o?"txt":o);(r=this.table.options.downloadReady.call(this.table,t,r))&&(n?window.open(window.URL.createObjectURL(r)):navigator.msSaveOrOpenBlob?navigator.msSaveOrOpenBlob(r,i):(s.setAttribute("href",window.URL.createObjectURL(r)),s.setAttribute("download",i),s.style.display="none",document.body.appendChild(s),s.click(),document.body.removeChild(s)),this.table.options.downloadComplete&&this.table.options.downloadComplete())},y.prototype.getFieldValue=function(t,e){var o=this.columnsByField[t];return!!o&&o.getFieldValue(e)},y.prototype.commsReceived=function(t,e,o){switch(e){case"intercept":this.download(o.type,"",o.options,o.intercept)}},y.prototype.downloaders={csv:function(t,e,o,i,n){function s(t,e){t.subGroups?t.subGroups.forEach(function(t){s(t,e+1)}):(d.push('"'+String(t.title).split('"').join('""')+'"'),h.push(t.definition.field))}function r(t){t.forEach(function(t){var e=[];h.forEach(function(o){var i=u.getFieldValue(o,t);switch(void 0===i?"undefined":_typeof(i)){case"object":i=JSON.stringify(i);break;case"undefined":case"null":i="";break;default:i=i}e.push('"'+String(i).split('"').join('""')+'"')}),l.push(e.join(p))})}function a(t){t.subGroups?t.subGroups.forEach(function(t){a(t)}):r(t.rows)}var l,c,u=this,d=[],h=[],p=o&&o.delimiter?o.delimiter:",";n.columnGroups?(console.warn("Download Warning - CSV downloader cannot process column groups"),t.forEach(function(t){s(t,0)})):function(){t.forEach(function(t){d.push('"'+String(t.title).split('"').join('""')+'"'),h.push(t.field)})}(),l=[d.join(p)],n.columnCalcs&&(console.warn("Download Warning - CSV downloader cannot process column calculations"),e=e.data),n.rowGroups?(console.warn("Download Warning - CSV downloader cannot process row groups"),e.forEach(function(t){a(t)})):r(e),c=l.join("\n"),o.bom&&(c="\ufeff"+c),i(c,"text/csv")},json:function(t,e,o,i,n){var s;n.columnCalcs&&(console.warn("Download Warning - CSV downloader cannot process column calculations"),e=e.data),s=JSON.stringify(e,null,"\t"),i(s,"application/json")},pdf:function(t,e,o,i,n){function s(t,e){var o=t.width,i=1,n={content:t.title||""};if(t.subGroups?(t.subGroups.forEach(function(t){s(t,e+1)}),i=1):(h.push(t.definition.field),i=g-e),n.rowSpan=i,p[e].push(n),o--,i>1)for(var r=e+1;r<g;r++)p[r].push("");for(var r=0;r<o;r++)p[e].push("")}function r(t){switch(void 0===t?"undefined":_typeof(t)){case"object":t=JSON.stringify(t);break;case"undefined":case"null":t="";break;default:t=t}return t}function a(t){t.forEach(function(t){m.push(l(t))})}function l(t,e){var o=[];return h.forEach(function(i){var n=d.getFieldValue(i,t);n=r(n),e?o.push({content:n,styles:e}):o.push(n)}),o}function c(t,e){var o=[];o.push({content:r(t.key),colSpan:h.length,styles:v}),m.push(o),t.subGroups?t.subGroups.forEach(function(o){c(o,e[t.key]?e[t.key].groups||{}:{})}):(n.columnCalcs&&u(e,t.key,"top"),a(t.rows),n.columnCalcs&&u(e,t.key,"bottom"))}function u(t,e,o){var i=t[e];i&&(o&&(i=i[o]),Object.keys(i).length&&m.push(l(i,y)))}var d=this,h=[],p=[],m=[],f={},g=1,b={},v=o.rowGroupStyles||{fontStyle:"bold",fontSize:12,cellPadding:6,fillColor:220},y=o.rowCalcStyles||{fontStyle:"bold",fontSize:10,cellPadding:4,fillColor:232},w=o.jsPDF||{},E=o&&o.title?o.title:"";if(n.columnCalcs&&(f=e.calcs,e=e.data),w.orientation||(w.orientation=o.orientation||"landscape"),w.unit||(w.unit="pt"),n.columnGroups){t.forEach(function(t){t.depth>g&&(g=t.depth)});for(var C=0;C<g;C++)p.push([]);t.forEach(function(t){s(t,0)})}else!function(){t.forEach(function(t){t.field&&(p.push(t.title||""),h.push(t.field))}),p=[p]}();n.rowGroups?e.forEach(function(t){c(t,f)}):(n.columnCalcs&&u(f,"top"),a(e),n.columnCalcs&&u(f,"bottom"));var R=new jsPDF(w);o&&o.autoTable&&(b="function"==typeof o.autoTable?o.autoTable(R)||{}:o.autoTable),E&&(b.addPageContent=function(t){R.text(E,40,30)}),b.head=p,b.body=m,R.autoTable(b),o&&o.documentProcessing&&o.documentProcessing(R),i(R.output("arraybuffer"),"application/pdf")},xlsx:function(t,e,o,i,n){function s(){function o(t,e){void 0===f[e]&&(f[e]=[]),void 0===h[e]&&(h[e]=[]),t.width>1&&h[e].push({type:"hoz",start:f[e].length,end:f[e].length+t.width-1}),f[e].push(t.title),t.subGroups?t.subGroups.forEach(function(t){o(t,e+1)}):(g.push(t.definition.field),i(g.length),h[e].push({type:"vert",start:g.length-1}))}function i(){var t=0;f.forEach(function(e){var o=e.length;o>t&&(t=o)}),f.forEach(function(e){var o=e.length;if(o<t)for(var i=o;i<t;i++)e.push("")})}function s(){var t=[];return d.forEach(function(e){t.push({s:{r:e,c:0},e:{r:e,c:g.length-1}})}),h.forEach(function(e,o){e.forEach(function(e){"hoz"===e.type?t.push({s:{r:o,c:e.start},e:{r:o,c:e.end}}):o!=f.length-1&&t.push({s:{r:o,c:e.start},e:{r:f.length-1,c:e.start}})})}),t}function r(t){t.forEach(function(t){b.push(l(t))})}function l(t){var e=[];return g.forEach(function(o){var i=a.getFieldValue(o,t);e.push(i instanceof Date||"object"!==(void 0===i?"undefined":_typeof(i))?i:JSON.stringify(i))}),e}function c(t,e,o){var i=t[e];i&&(o&&(i=i[o]),Object.keys(i).length&&(p.push(b.length),b.push(l(i))))}function m(t,e){var o=[];o.push(t.key),d.push(b.length),b.push(o),t.subGroups?t.subGroups.forEach(function(o){m(o,e[t.key]?e[t.key].groups||{}:{})}):(n.columnCalcs&&c(e,t.key,"top"),r(t.rows),n.columnCalcs&&c(e,t.key,"bottom"))}var f=[],g=[],b=[];return n.columnGroups?(t.forEach(function(t){o(t,0)}),f.forEach(function(t){b.push(t)})):function(){t.forEach(function(t){f.push(t.title),g.push(t.field)}),b.push(f)}(),n.rowGroups?e.forEach(function(t){m(t,u)}):(n.columnCalcs&&c(u,"top"),r(e),n.columnCalcs&&c(u,"bottom")),function(){var t={},e={s:{c:0,r:0},e:{c:g.length,r:b.length}};XLSX.utils.sheet_add_aoa(t,b),t["!ref"]=XLSX.utils.encode_range(e);var o=s();return o.length&&(t["!merges"]=o),t}()}var r,a=this,l=o.sheetName||"Sheet1",c=XLSX.utils.book_new(),u={},d=[],h=[],p=[];if(c.SheetNames=[],c.Sheets={},n.columnCalcs&&(u=e.calcs,e=e.data),o.sheetOnly)return void i(s());if(o.sheets)for(var m in o.sheets)!0===o.sheets[m]?(c.SheetNames.push(m),c.Sheets[m]=s()):(c.SheetNames.push(m),this.table.modules.comms.send(o.sheets[m],"download","intercept",{type:"xlsx",options:{sheetOnly:!0},intercept:function(t){c.Sheets[m]=t}}));else c.SheetNames.push(l),c.Sheets[l]=s();o.documentProcessing&&(c=o.documentProcessing(c)),r=XLSX.write(c,{bookType:"xlsx",bookSST:!0,type:"binary"}),i(function(t){for(var e=new ArrayBuffer(t.length),o=new Uint8Array(e),i=0;i!=t.length;++i)o[i]=255&t.charCodeAt(i);return e}(r),"application/octet-stream")},html:function(t,e,o,i,n){this.table.modExists("htmlTableExport",!0)&&i(this.table.modules.htmlTableExport.getHtml(!0,o.style,n),"text/html")}},u.prototype.registerModule("download",y);var w=function(t){this.table=t,this.currentCell=!1,this.mouseClick=!1,this.recursionBlock=!1,this.invalidEdit=!1};w.prototype.initializeColumn=function(t){var e=this,o={editor:!1,blocked:!1,check:t.definition.editable,params:t.definition.editorParams||{}};switch(_typeof(t.definition.editor)){case"string":"tick"===t.definition.editor&&(t.definition.editor="tickCross",console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor")),e.editors[t.definition.editor]?o.editor=e.editors[t.definition.editor]:console.warn("Editor Error - No such editor found: ",t.definition.editor);break;case"function":o.editor=t.definition.editor;break;case"boolean":!0===t.definition.editor&&("function"!=typeof t.definition.formatter?("tick"===t.definition.formatter&&(t.definition.formatter="tickCross",console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor")),e.editors[t.definition.formatter]?o.editor=e.editors[t.definition.formatter]:o.editor=e.editors.input):console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ",t.definition.formatter))}o.editor&&(t.modules.edit=o)},w.prototype.getCurrentCell=function(){return!!this.currentCell&&this.currentCell.getComponent()},w.prototype.clearEditor=function(){var t,e=this.currentCell;if(this.invalidEdit=!1,e){for(this.currentCell=!1,t=e.getElement(),t.classList.remove("tabulator-validation-fail"),t.classList.remove("tabulator-editing");t.firstChild;)t.removeChild(t.firstChild);e.row.getElement().classList.remove("tabulator-row-editing")}},w.prototype.cancelEdit=function(){if(this.currentCell){var t=this.currentCell,e=this.currentCell.getComponent();this.clearEditor(),t.setValueActual(t.getValue()),t.column.cellEvents.cellEditCancelled&&t.column.cellEvents.cellEditCancelled.call(this.table,e),this.table.options.cellEditCancelled.call(this.table,e)}},w.prototype.bindEditor=function(t){var e=this,o=t.getElement();o.setAttribute("tabindex",0),o.addEventListener("click",function(t){o.classList.contains("tabulator-editing")||o.focus()}),o.addEventListener("mousedown",function(t){e.mouseClick=!0}),o.addEventListener("focus",function(o){e.recursionBlock||e.edit(t,o,!1)})},w.prototype.focusCellNoEvent=function(t,e){this.recursionBlock=!0,e&&"ie"===this.table.browser||t.getElement().focus(),this.recursionBlock=!1},w.prototype.editCell=function(t,e){this.focusCellNoEvent(t),this.edit(t,!1,e)},w.prototype.edit=function(t,e,o){function i(e){if(c.currentCell===t){var o=!0;return t.column.modules.validate&&c.table.modExists("validate")&&(o=c.table.modules.validate.validate(t.column.modules.validate,t.getComponent(),e)),!0===o?(c.clearEditor(),t.setValue(e,!0),c.table.options.dataTree&&c.table.modExists("dataTree")&&c.table.modules.dataTree.checkForRestyle(t),!0):(c.invalidEdit=!0,h.classList.add("tabulator-validation-fail"),c.focusCellNoEvent(t,!0),d(),c.table.options.validationFailed.call(c.table,t.getComponent(),e,o),!1)}}function n(){c.currentCell===t&&(c.cancelEdit(),c.table.options.dataTree&&c.table.modExists("dataTree")&&c.table.modules.dataTree.checkForRestyle(t))}function s(t){d=t}var r,a,l,c=this,u=!0,d=function(){},h=t.getElement();if(this.currentCell)return void(this.invalidEdit||this.cancelEdit());if(t.column.modules.edit.blocked)return this.mouseClick=!1,h.blur(),!1;switch(e&&e.stopPropagation(),_typeof(t.column.modules.edit.check)){case"function":u=t.column.modules.edit.check(t.getComponent());break;case"boolean":u=t.column.modules.edit.check}if(u||o){if(c.cancelEdit(),c.currentCell=t,a=t.getComponent(),this.mouseClick&&(this.mouseClick=!1,t.column.cellEvents.cellClick&&t.column.cellEvents.cellClick.call(this.table,e,a)),t.column.cellEvents.cellEditing&&t.column.cellEvents.cellEditing.call(this.table,a),c.table.options.cellEditing.call(this.table,a),l="function"==typeof t.column.modules.edit.params?t.column.modules.edit.params(a):t.column.modules.edit.params,!1===(r=t.column.modules.edit.editor.call(c,a,s,i,n,l)))return h.blur(),!1;if(!(r instanceof Node))return console.warn("Edit Error - Editor should return an instance of Node, the editor returned:",r),h.blur(),!1;for(h.classList.add("tabulator-editing"),t.row.getElement().classList.add("tabulator-row-editing");h.firstChild;)h.removeChild(h.firstChild);h.appendChild(r),d();for(var p=h.children,m=0;m<p.length;m++)p[m].addEventListener("click",function(t){t.stopPropagation()});return!0}return this.mouseClick=!1,h.blur(),!1},w.prototype.editors={input:function(t,e,o,i,n){function s(t){(null===r||void 0===r)&&""!==a.value||a.value!=r?o(a.value)&&(r=a.value):i()}var r=t.getValue(),a=document.createElement("input");if(a.setAttribute("type",n.search?"search":"text"),a.style.padding="4px",a.style.width="100%",a.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var l in n.elementAttributes)"+"==l.charAt(0)?(l=l.slice(1),a.setAttribute(l,a.getAttribute(l)+n.elementAttributes["+"+l])):a.setAttribute(l,n.elementAttributes[l]);return a.value=void 0!==r?r:"",e(function(){a.focus(),a.style.height="100%"}),a.addEventListener("change",s),a.addEventListener("blur",s),a.addEventListener("keydown",function(t){switch(t.keyCode){case 13:s(t);break;case 27:i()}}),a},textarea:function(t,e,o,i,n){function s(e){(null===r||void 0===r)&&""!==c.value||c.value!=r?(o(c.value)&&(r=c.value),setTimeout(function(){t.getRow().normalizeHeight()},300)):i()}var r=t.getValue(),a=n.verticalNavigation||"hybrid",l=String(null!==r&&void 0!==r?r:""),c=(l.match(/(?:\r\n|\r|\n)/g),document.createElement("textarea")),u=0;if(c.style.display="block",c.style.padding="2px",c.style.height="100%",c.style.width="100%",c.style.boxSizing="border-box",c.style.whiteSpace="pre-wrap",c.style.resize="none",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var d in n.elementAttributes)"+"==d.charAt(0)?(d=d.slice(1),c.setAttribute(d,c.getAttribute(d)+n.elementAttributes["+"+d])):c.setAttribute(d,n.elementAttributes[d]);return c.value=l,e(function(){c.focus(),c.style.height="100%"}),c.addEventListener("change",s),c.addEventListener("blur",s),c.addEventListener("keyup",function(){c.style.height="";var e=c.scrollHeight;c.style.height=e+"px",e!=u&&(u=e,t.getRow().normalizeHeight())}),c.addEventListener("keydown",function(t){switch(t.keyCode){case 27:i();break;case 38:("editor"==a||"hybrid"==a&&c.selectionStart)&&(t.stopImmediatePropagation(),t.stopPropagation());break;case 40:("editor"==a||"hybrid"==a&&c.selectionStart!==c.value.length)&&(t.stopImmediatePropagation(),t.stopPropagation())}}),c},number:function(t,e,o,i,n){function s(){var t=l.value;isNaN(t)||""===t||(t=Number(t)),t!=r?o(t)&&(r=t):i()}var r=t.getValue(),a=n.verticalNavigation||"editor",l=document.createElement("input");if(l.setAttribute("type","number"),void 0!==n.max&&l.setAttribute("max",n.max),void 0!==n.min&&l.setAttribute("min",n.min),void 0!==n.step&&l.setAttribute("step",n.step),l.style.padding="4px",l.style.width="100%",l.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var c in n.elementAttributes)"+"==c.charAt(0)?(c=c.slice(1),l.setAttribute(c,l.getAttribute(c)+n.elementAttributes["+"+c])):l.setAttribute(c,n.elementAttributes[c]);l.value=r;var u=function(t){s()};return e(function(){l.removeEventListener("blur",u),l.focus(),l.style.height="100%",l.addEventListener("blur",u)}),l.addEventListener("keydown",function(t){switch(t.keyCode){case 13:s();break;case 27:i();break;case 38:case 40:"editor"==a&&(t.stopImmediatePropagation(),t.stopPropagation())}}),l},range:function(t,e,o,i,n){function s(){var t=a.value;isNaN(t)||""===t||(t=Number(t)),t!=r?o(t)&&(r=t):i()}var r=t.getValue(),a=document.createElement("input");if(a.setAttribute("type","range"),void 0!==n.max&&a.setAttribute("max",n.max),void 0!==n.min&&a.setAttribute("min",n.min),void 0!==n.step&&a.setAttribute("step",n.step),a.style.padding="4px",a.style.width="100%",a.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var l in n.elementAttributes)"+"==l.charAt(0)?(l=l.slice(1),a.setAttribute(l,a.getAttribute(l)+n.elementAttributes["+"+l])):a.setAttribute(l,n.elementAttributes[l]);return a.value=r,e(function(){a.focus(),a.style.height="100%"}),a.addEventListener("blur",function(t){s()}),a.addEventListener("keydown",function(t){switch(t.keyCode){case 13:case 9:s();break;case 27:i()}}),a},select:function(t,e,o,i,n){function s(e){var o,i={},s=f.table.getData();return o=e?f.table.columnManager.getColumnByField(e):t.getColumn()._getSelf(),o?(s.forEach(function(t){var e=o.getFieldValue(t);null!==e&&void 0!==e&&""!==e&&(i[e]=!0)}),i=n.sortValuesList?"asc"==n.sortValuesList?Object.keys(i).sort():Object.keys(i).sort().reverse():Object.keys(i)):console.warn("unable to find matching column to create select lookup list:",e),i}function r(e,o){function i(t){var t={label:n.listItemFormatter?n.listItemFormatter(t.value,t.label):t.label,value:t.value,element:!1};return t.value!==o&&(isNaN(parseFloat(t.value))||isNaN(parseFloat(t.value))||parseFloat(t.value)!==parseFloat(o))||l(t),s.push(t),r.push(t),t}var s=[],r=[];if("function"==typeof e&&(e=e(t)),Array.isArray(e))e.forEach(function(t){var e;"object"===(void 0===t?"undefined":_typeof(t))?t.options?(e={label:t.label,group:!0,element:!1},r.push(e),t.options.forEach(function(t){i(t)})):i(t):(e={label:n.listItemFormatter?n.listItemFormatter(t,t):t,value:t,element:!1},e.value!==o&&(isNaN(parseFloat(e.value))||isNaN(parseFloat(e.value))||parseFloat(e.value)!==parseFloat(o))||l(e),s.push(e),r.push(e))});else for(var c in e){var u={label:n.listItemFormatter?n.listItemFormatter(c,e[c]):e[c],value:c,element:!1};u.value!==o&&(isNaN(parseFloat(u.value))||isNaN(parseFloat(u.value))||parseFloat(u.value)!==parseFloat(o))||l(u),s.push(u),r.push(u)}C=s,R=r,a()}function a(){for(;E.firstChild;)E.removeChild(E.firstChild);R.forEach(function(t){var e=t.element;e||(t.group?(e=document.createElement("div"),e.classList.add("tabulator-edit-select-list-group"),e.tabIndex=0,e.innerHTML=""===t.label?"&nbsp;":t.label):(e=document.createElement("div"),e.classList.add("tabulator-edit-select-list-item"),e.tabIndex=0,e.innerHTML=""===t.label?"&nbsp;":t.label,e.addEventListener("click",function(){l(t),c()}),t===x&&e.classList.add("active")),e.addEventListener("mousedown",function(){M=!1,setTimeout(function(){M=!0},10)}),t.element=e),E.appendChild(e)})}function l(t){x&&x.element&&x.element.classList.remove("active"),x=t,w.value="&nbsp;"===t.label?"":t.label,t.element&&t.element.classList.add("active")}function c(){p(),b!==x.value?(b=x.value,o(x.value)):i()}function d(){p(),i()}function h(){if(!E.parentNode){!0===n.values?r(s(),y):"string"==typeof n.values?r(s(n.values),y):r(n.values||[],y);var t=u.prototype.helpers.elOffset(g);E.style.minWidth=g.offsetWidth+"px",E.style.top=t.top+g.offsetHeight+"px",E.style.left=t.left+"px",document.body.appendChild(E)}}function p(){E.parentNode&&E.parentNode.removeChild(E),m()}function m(){f.table.rowManager.element.removeEventListener("scroll",d)}var f=this,g=t.getElement(),b=t.getValue(),v=n.verticalNavigation||"editor",y=void 0!==b||null===b?b:void 0!==n.defaultValue?n.defaultValue:"",w=document.createElement("input"),E=document.createElement("div"),C=[],R=[],x={},M=!0;if(this.table.rowManager.element.addEventListener("scroll",d),(Array.isArray(n)||!Array.isArray(n)&&"object"===(void 0===n?"undefined":_typeof(n))&&!n.values)&&(console.warn("DEPRECATION WANRING - 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}),w.setAttribute("type","text"),w.style.padding="4px",w.style.width="100%",w.style.boxSizing="border-box",w.style.cursor="default",w.readOnly=0!=this.currentCell,n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var D in n.elementAttributes)"+"==D.charAt(0)?(D=D.slice(1),w.setAttribute(D,w.getAttribute(D)+n.elementAttributes["+"+D])):w.setAttribute(D,n.elementAttributes[D]);return w.value=void 0!==b||null===b?b:"",w.addEventListener("keydown",function(t){var e;switch(t.keyCode){case 38:e=C.indexOf(x),("editor"==v||"hybrid"==v&&e)&&(t.stopImmediatePropagation(),t.stopPropagation(),t.preventDefault(),e>0&&l(C[e-1]));break;case 40:e=C.indexOf(x),("editor"==v||"hybrid"==v&&e<C.length-1)&&(t.stopImmediatePropagation(),t.stopPropagation(),t.preventDefault(),e<C.length-1&&l(-1==e?C[0]:C[e+1]));break;case 37:case 39:t.stopImmediatePropagation(),t.stopPropagation(),t.preventDefault();break;case 13:c();break;case 27:d()}}),w.addEventListener("blur",function(t){M&&d()}),w.addEventListener("focus",function(t){h()}),E=document.createElement("div"),E.classList.add("tabulator-edit-select-list"),e(function(){w.style.height="100%",w.focus()}),w},autocomplete:function(t,e,o,i,n){function s(e){var o,i={},s=g.table.getData();return o=e?g.table.columnManager.getColumnByField(e):t.getColumn()._getSelf(),o?(s.forEach(function(t){var e=o.getFieldValue(t);null!==e&&void 0!==e&&""!==e&&(i[e]=!0)}),i=n.sortValuesList?"asc"==n.sortValuesList?Object.keys(i).sort():Object.keys(i).sort().reverse():Object.keys(i)):console.warn("unable to find matching column to create autocomplete lookup list:",e),i}function r(t,e){var o=[];if(Array.isArray(t))t.forEach(function(t){var i={title:n.listItemFormatter?n.listItemFormatter(t,t):t,value:t,element:!1};i.value!==e&&(isNaN(parseFloat(i.value))||isNaN(parseFloat(i.value))||parseFloat(i.value)!==parseFloat(e))||c(i),o.push(i)});else for(var i in t){var s={title:n.listItemFormatter?n.listItemFormatter(i,t[i]):t[i],value:i,element:!1};s.value!==e&&(isNaN(parseFloat(s.value))||isNaN(parseFloat(s.value))||parseFloat(s.value)!==parseFloat(e))||c(s),o.push(s)}n.searchFunc&&o.forEach(function(t){t.search={title:t.title,value:t.value}}),R=o}function a(t,e){var o=[],i=[],s=[];n.searchFunc?(R.forEach(function(t){i.push(t.search)}),s=n.searchFunc(t,i),s.forEach(function(t){var e=R.find(function(e){return e.search===t});e&&o.push(e)})):""===t?n.showListOnEmpty&&R.forEach(function(t){o.push(t)}):R.forEach(function(e){null===e.value&&void 0===e.value||(String(e.value).toLowerCase().indexOf(String(t).toLowerCase())>-1||String(e.title).toLowerCase().indexOf(String(t).toLowerCase())>-1)&&o.push(e)}),x=o,l(e)}function l(t){for(var e=!1;C.firstChild;)C.removeChild(C.firstChild);x.forEach(function(o){var i=o.element;i||(i=document.createElement("div"),i.classList.add("tabulator-edit-select-list-item"),i.tabIndex=0,i.innerHTML=o.title,i.addEventListener("click",function(){c(o),d()}),i.addEventListener("mousedown",function(){L=!1,setTimeout(function(){L=!0},10)}),o.element=i,t&&o.value==v&&(E.value=o.title,o.element.classList.add("active"),e=!0),o===D&&(o.element.classList.add("active"),e=!0)),C.appendChild(i)}),e||c(!1)}function c(t,e){D&&D.element&&D.element.classList.remove("active"),D=t,t&&t.element&&t.element.classList.add("active")}function d(){m(),D?v!==D.value?(v=D.value,E.value=D.title,o(D.value)):i():n.freetext?(v=E.value,o(E.value)):n.allowEmpty&&""===E.value?(v=E.value,o(E.value)):i()}function h(){m(),i()}function p(){if(!C.parentNode){for(;C.firstChild;)C.removeChild(C.firstChild);M=!0===n.values?s():"string"==typeof n.values?s(n.values):n.values||[],r(M,v);var t=u.prototype.helpers.elOffset(b);C.style.minWidth=b.offsetWidth+"px",C.style.top=t.top+b.offsetHeight+"px",C.style.left=t.left+"px",document.body.appendChild(C)}}function m(){C.parentNode&&C.parentNode.removeChild(C),f()}function f(){g.table.rowManager.element.removeEventListener("scroll",h)}var g=this,b=t.getElement(),v=t.getValue(),y=n.verticalNavigation||"editor",w=void 0!==v||null===v?v:void 0!==n.defaultValue?n.defaultValue:"",E=document.createElement("input"),C=document.createElement("div"),R=[],x=[],M=[],D={},L=!0;if(this.table.rowManager.element.addEventListener("scroll",h),E.setAttribute("type","search"),E.style.padding="4px",E.style.width="100%",E.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var T in n.elementAttributes)"+"==T.charAt(0)?(T=T.slice(1),E.setAttribute(T,E.getAttribute(T)+n.elementAttributes["+"+T])):E.setAttribute(T,n.elementAttributes[T]);return E.addEventListener("keydown",function(t){var e;switch(t.keyCode){case 38:e=x.indexOf(D),("editor"==y||"hybrid"==y&&e)&&(t.stopImmediatePropagation(),t.stopPropagation(),t.preventDefault(),c(e>0?x[e-1]:!1));break;case 40:e=x.indexOf(D),("editor"==y||"hybrid"==y&&e<x.length-1)&&(t.stopImmediatePropagation(),t.stopPropagation(),t.preventDefault(),e<x.length-1&&c(-1==e?x[0]:x[e+1]));break;case 37:case 39:t.stopImmediatePropagation(),t.stopPropagation(),t.preventDefault();break;case 13:d();break;case 27:h();break;case 36:case 35:t.stopImmediatePropagation()}}),E.addEventListener("keyup",function(t){switch(t.keyCode){case 38:case 37:case 39:case 40:case 13:case 27:break;default:a(E.value)}}),E.addEventListener("search",function(t){a(E.value)}),E.addEventListener("blur",function(t){L&&d()}),E.addEventListener("focus",function(t){var e=w;p(),E.value=e,a(e,!0)}),C=document.createElement("div"),C.classList.add("tabulator-edit-select-list"),e(function(){E.style.height="100%",E.focus()}),E},star:function(t,e,o,i,n){function s(t){h.forEach(function(e,o){o<t?("ie"==a.table.browser?e.setAttribute("class","tabulator-star-active"):e.classList.replace("tabulator-star-inactive","tabulator-star-active"),e.innerHTML='<polygon fill="#488CE9" stroke="#014AAE" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>'):("ie"==a.table.browser?e.setAttribute("class","tabulator-star-inactive"):e.classList.replace("tabulator-star-active","tabulator-star-inactive"),e.innerHTML='<polygon fill="#010155" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>')})}function r(t){c=t,s(t)}var a=this,l=t.getElement(),c=t.getValue(),u=l.getElementsByTagName("svg").length||5,d=l.getElementsByTagName("svg")[0]?l.getElementsByTagName("svg")[0].getAttribute("width"):14,h=[],p=document.createElement("div"),m=document.createElementNS("http://www.w3.org/2000/svg","svg");if(l.style.whiteSpace="nowrap",l.style.overflow="hidden",l.style.textOverflow="ellipsis",p.style.verticalAlign="middle",p.style.display="inline-block",p.style.padding="4px",m.setAttribute("width",d),m.setAttribute("height",d),m.setAttribute("viewBox","0 0 512 512"),m.setAttribute("xml:space","preserve"),m.style.padding="0 1px",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var f in n.elementAttributes)"+"==f.charAt(0)?(f=f.slice(1),p.setAttribute(f,p.getAttribute(f)+n.elementAttributes["+"+f])):p.setAttribute(f,n.elementAttributes[f]);for(var g=1;g<=u;g++)!function(t){var e=document.createElement("span"),i=m.cloneNode(!0);h.push(i),e.addEventListener("mouseenter",function(e){e.stopPropagation(),e.stopImmediatePropagation(),s(t)}),e.addEventListener("mousemove",function(t){t.stopPropagation(),t.stopImmediatePropagation()}),e.addEventListener("click",function(e){e.stopPropagation(),e.stopImmediatePropagation(),o(t)}),e.appendChild(i),p.appendChild(e)}(g);return c=Math.min(parseInt(c),u),s(c),p.addEventListener("mousemove",function(t){s(0)}),p.addEventListener("click",function(t){o(0)}),l.addEventListener("blur",function(t){i()}),l.addEventListener("keydown",function(t){switch(t.keyCode){case 39:r(c+1);break;case 37:r(c-1);break;case 13:o(c);break;case 27:i()}}),p},progress:function(t,e,o,i,n){function s(){var t=d*Math.round(m.offsetWidth/(l.clientWidth/100))+u;o(t),l.setAttribute("aria-valuenow",t),l.setAttribute("aria-label",h)}var r,a,l=t.getElement(),c=void 0===n.max?l.getElementsByTagName("div")[0].getAttribute("max")||100:n.max,u=void 0===n.min?l.getElementsByTagName("div")[0].getAttribute("min")||0:n.min,d=(c-u)/100,h=t.getValue()||0,p=document.createElement("div"),m=document.createElement("div");if(p.style.position="absolute",p.style.right="0",p.style.top="0",p.style.bottom="0",p.style.width="5px",p.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%",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var f in n.elementAttributes)"+"==f.charAt(0)?(f=f.slice(1),m.setAttribute(f,m.getAttribute(f)+n.elementAttributes["+"+f])):m.setAttribute(f,n.elementAttributes[f]);return l.style.padding="4px 4px",h=Math.min(parseFloat(h),c),h=Math.max(parseFloat(h),u),h=Math.round((h-u)/d),m.style.width=h+"%",l.setAttribute("aria-valuemin",u),l.setAttribute("aria-valuemax",c),m.appendChild(p),p.addEventListener("mousedown",function(t){r=t.screenX,a=m.offsetWidth}),p.addEventListener("mouseover",function(){p.style.cursor="ew-resize"}),l.addEventListener("mousemove",function(t){r&&(m.style.width=a+t.screenX-r+"px")}),l.addEventListener("mouseup",function(t){r&&(t.stopPropagation(),t.stopImmediatePropagation(),r=!1,a=!1,s())}),l.addEventListener("keydown",function(t){switch(t.keyCode){case 39:m.style.width=m.clientWidth+l.clientWidth/100+"px";break;case 37:m.style.width=m.clientWidth-l.clientWidth/100+"px";break;case 13:s();break;case 27:i()}}),l.addEventListener("blur",function(){i()}),m},tickCross:function(t,e,o,i,n){function s(t){return l?t?u?c:a.checked:a.checked&&!u?(a.checked=!1,a.indeterminate=!0,u=!0,c):(u=!1,a.checked):a.checked}var r=t.getValue(),a=document.createElement("input"),l=n.tristate,c=void 0===n.indeterminateValue?null:n.indeterminateValue,u=!1;if(a.setAttribute("type","checkbox"),a.style.marginTop="5px",a.style.boxSizing="border-box",
+n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var d in n.elementAttributes)"+"==d.charAt(0)?(d=d.slice(1),a.setAttribute(d,a.getAttribute(d)+n.elementAttributes["+"+d])):a.setAttribute(d,n.elementAttributes[d]);return a.value=r,!l||void 0!==r&&r!==c&&""!==r||(u=!0,a.indeterminate=!0),"firefox"!=this.table.browser&&e(function(){a.focus()}),a.checked=!0===r||"true"===r||"True"===r||1===r,a.addEventListener("change",function(t){o(s())}),a.addEventListener("blur",function(t){o(s(!0))}),a.addEventListener("keydown",function(t){13==t.keyCode&&o(s()),27==t.keyCode&&i()}),a}},u.prototype.registerModule("edit",w);var E=function(t){this.table=t,this.filterList=[],this.headerFilters={},this.headerFilterColumns=[],this.changed=!1};E.prototype.initializeColumn=function(t,e){function o(e){var o,s="input"==t.modules.filter.tagType&&"text"==t.modules.filter.attrType||"textarea"==t.modules.filter.tagType?"partial":"match",r="";if(void 0===t.modules.filter.prevSuccess||t.modules.filter.prevSuccess!==e){if(t.modules.filter.prevSuccess=e,t.modules.filter.emptyFunc(e))delete i.headerFilters[n];else{switch(t.modules.filter.value=e,_typeof(t.definition.headerFilterFunc)){case"string":i.filters[t.definition.headerFilterFunc]?(r=t.definition.headerFilterFunc,o=function(o){var n=t.definition.headerFilterFuncParams||{},s=t.getFieldValue(o);return n="function"==typeof n?n(e,s,o):n,i.filters[t.definition.headerFilterFunc](e,s,o,n)}):console.warn("Header Filter Error - Matching filter function not found: ",t.definition.headerFilterFunc);break;case"function":o=function(o){var i=t.definition.headerFilterFuncParams||{},n=t.getFieldValue(o);return i="function"==typeof i?i(e,n,o):i,t.definition.headerFilterFunc(e,n,o,i)},r=o}if(!o)switch(s){case"partial":o=function(o){var i=t.getFieldValue(o);return void 0!==i&&null!==i&&String(i).toLowerCase().indexOf(String(e).toLowerCase())>-1},r="like";break;default:o=function(o){return t.getFieldValue(o)==e},r="="}i.headerFilters[n]={value:e,func:o,type:r}}i.changed=!0,i.table.rowManager.filterRefresh()}return!0}var i=this,n=t.getField();t.modules.filter={success:o,attrType:!1,tagType:!1,emptyFunc:!1},this.generateHeaderFilterElement(t)},E.prototype.generateHeaderFilterElement=function(t,e,o){function i(){}var n,s,r,a,l,c,u,d=this,h=this,p=t.modules.filter.success,m=t.getField();if(t.modules.filter.headerElement&&t.modules.filter.headerElement.parentNode&&t.contentElement.removeChild(t.modules.filter.headerElement.parentNode),m){switch(t.modules.filter.emptyFunc=t.definition.headerFilterEmptyCheck||function(t){return!t&&"0"!==t},n=document.createElement("div"),n.classList.add("tabulator-header-filter"),_typeof(t.definition.headerFilter)){case"string":h.table.modules.edit.editors[t.definition.headerFilter]?(s=h.table.modules.edit.editors[t.definition.headerFilter],"tick"!==t.definition.headerFilter&&"tickCross"!==t.definition.headerFilter||t.definition.headerFilterEmptyCheck||(t.modules.filter.emptyFunc=function(t){return!0!==t&&!1!==t})):console.warn("Filter Error - Cannot build header filter, No such editor found: ",t.definition.editor);break;case"function":s=t.definition.headerFilter;break;case"boolean":t.modules.edit&&t.modules.edit.editor?s=t.modules.edit.editor:t.definition.formatter&&h.table.modules.edit.editors[t.definition.formatter]?(s=h.table.modules.edit.editors[t.definition.formatter],"tick"!==t.definition.formatter&&"tickCross"!==t.definition.formatter||t.definition.headerFilterEmptyCheck||(t.modules.filter.emptyFunc=function(t){return!0!==t&&!1!==t})):s=h.table.modules.edit.editors.input}if(s){if(a={getValue:function(){return void 0!==e?e:""},getField:function(){return t.definition.field},getElement:function(){return n},getColumn:function(){return t.getComponent()},getRow:function(){return{normalizeHeight:function(){}}}},u=t.definition.headerFilterParams||{},u="function"==typeof u?u.call(h.table):u,!(r=s.call(this.table.modules.edit,a,function(){},p,i,u)))return void console.warn("Filter Error - Cannot add filter to "+m+" column, editor returned a value of false");if(!(r instanceof Node))return void console.warn("Filter Error - Cannot add filter to "+m+" column, editor should return an instance of Node, the editor returned:",r);m?h.table.modules.localize.bind("headerFilters|columns|"+t.definition.field,function(t){r.setAttribute("placeholder",void 0!==t&&t?t:h.table.modules.localize.getText("headerFilters|default"))}):h.table.modules.localize.bind("headerFilters|default",function(t){r.setAttribute("placeholder",void 0!==h.column.definition.headerFilterPlaceholder&&h.column.definition.headerFilterPlaceholder?h.column.definition.headerFilterPlaceholder:t)}),r.addEventListener("click",function(t){t.stopPropagation(),r.focus()}),r.addEventListener("focus",function(t){var e=d.table.columnManager.element.scrollLeft;e!==d.table.rowManager.element.scrollLeft&&(d.table.rowManager.scrollHorizontal(e),d.table.columnManager.scrollHorizontal(e))}),l=!1,c=function(t){l&&clearTimeout(l),l=setTimeout(function(){p(r.value)},300)},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",c),r.addEventListener("search",c),"number"==t.modules.filter.attrType&&r.addEventListener("change",function(t){p(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(t){t.stopPropagation()})),n.appendChild(r),t.contentElement.appendChild(n),o||h.headerFilterColumns.push(t)}}else console.warn("Filter Error - Cannot add header filter, column has no field set:",t.definition.title)},E.prototype.hideHeaderFilterElements=function(){this.headerFilterColumns.forEach(function(t){t.modules.filter&&t.modules.filter.headerElement&&(t.modules.filter.headerElement.style.display="none")})},E.prototype.showHeaderFilterElements=function(){this.headerFilterColumns.forEach(function(t){t.modules.filter&&t.modules.filter.headerElement&&(t.modules.filter.headerElement.style.display="")})},E.prototype.setHeaderFilterFocus=function(t){t.modules.filter&&t.modules.filter.headerElement?t.modules.filter.headerElement.focus():console.warn("Column Filter Focus Error - No header filter set on column:",t.getField())},E.prototype.setHeaderFilterValue=function(t,e){t&&(t.modules.filter&&t.modules.filter.headerElement?(this.generateHeaderFilterElement(t,e,!0),t.modules.filter.success(e)):console.warn("Column Filter Error - No header filter set on column:",t.getField()))},E.prototype.reloadHeaderFilter=function(t){t&&(t.modules.filter&&t.modules.filter.headerElement?this.generateHeaderFilterElement(t,t.modules.filter.value,!0):console.warn("Column Filter Error - No header filter set on column:",t.getField()))},E.prototype.hasChanged=function(){var t=this.changed;return this.changed=!1,t},E.prototype.setFilter=function(t,e,o){var i=this;i.filterList=[],Array.isArray(t)||(t=[{field:t,type:e,value:o}]),i.addFilter(t)},E.prototype.addFilter=function(t,e,o){var i=this;Array.isArray(t)||(t=[{field:t,type:e,value:o}]),t.forEach(function(t){(t=i.findFilter(t))&&(i.filterList.push(t),i.changed=!0)}),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.filter&&this.table.modules.persistence.save("filter")},E.prototype.findFilter=function(t){var e,o=this;if(Array.isArray(t))return this.findSubFilters(t);var i=!1;return"function"==typeof t.field?i=function(e){return t.field(e,t.type||{})}:o.filters[t.type]?(e=o.table.columnManager.getColumnByField(t.field),i=e?function(i){return o.filters[t.type](t.value,e.getFieldValue(i))}:function(e){return o.filters[t.type](t.value,e[t.field])}):console.warn("Filter Error - No such filter type found, ignoring: ",t.type),t.func=i,!!t.func&&t},E.prototype.findSubFilters=function(t){var e=this,o=[];return t.forEach(function(t){(t=e.findFilter(t))&&o.push(t)}),!!o.length&&o},E.prototype.getFilters=function(t,e){var o=[];return t&&(o=this.getHeaderFilters()),e&&o.forEach(function(t){"function"==typeof t.type&&(t.type="function")}),o=o.concat(this.filtersToArray(this.filterList,e))},E.prototype.filtersToArray=function(t,e){var o=this,i=[];return t.forEach(function(t){var n;Array.isArray(t)?i.push(o.filtersToArray(t,e)):(n={field:t.field,type:t.type,value:t.value},e&&"function"==typeof n.type&&(n.type="function"),i.push(n))}),i},E.prototype.getHeaderFilters=function(){var t=[];for(var e in this.headerFilters)t.push({field:e,type:this.headerFilters[e].type,value:this.headerFilters[e].value});return t},E.prototype.removeFilter=function(t,e,o){var i=this;Array.isArray(t)||(t=[{field:t,type:e,value:o}]),t.forEach(function(t){var e=-1;e="object"==_typeof(t.field)?i.filterList.findIndex(function(e){return t===e}):i.filterList.findIndex(function(e){return t.field===e.field&&t.type===e.type&&t.value===e.value}),e>-1?(i.filterList.splice(e,1),i.changed=!0):console.warn("Filter Error - No matching filter type found, ignoring: ",t.type)}),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.filter&&this.table.modules.persistence.save("filter")},E.prototype.clearFilter=function(t){this.filterList=[],t&&this.clearHeaderFilter(),this.changed=!0,this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.filter&&this.table.modules.persistence.save("filter")},E.prototype.clearHeaderFilter=function(){var t=this;this.headerFilters={},this.headerFilterColumns.forEach(function(e){e.modules.filter.value=null,e.modules.filter.prevSuccess=void 0,t.reloadHeaderFilter(e)}),this.changed=!0},E.prototype.search=function(t,e,o,i){var n=this,s=[],r=[];return Array.isArray(e)||(e=[{field:e,type:o,value:i}]),e.forEach(function(t){(t=n.findFilter(t))&&r.push(t)}),this.table.rowManager.rows.forEach(function(e){var o=!0;r.forEach(function(t){n.filterRecurse(t,e.getData())||(o=!1)}),o&&s.push("data"===t?e.getData("data"):e.getComponent())}),s},E.prototype.filter=function(t,e){var o=this,i=[],n=[];return o.table.options.dataFiltering&&o.table.options.dataFiltering.call(o.table,o.getFilters()),o.table.options.ajaxFiltering||!o.filterList.length&&!Object.keys(o.headerFilters).length?i=t.slice(0):t.forEach(function(t){o.filterRow(t)&&i.push(t)}),o.table.options.dataFiltered&&(i.forEach(function(t){n.push(t.getComponent())}),o.table.options.dataFiltered.call(o.table,o.getFilters(),n)),i},E.prototype.filterRow=function(t,e){var o=this,i=!0,n=t.getData();o.filterList.forEach(function(t){o.filterRecurse(t,n)||(i=!1)});for(var s in o.headerFilters)o.headerFilters[s].func(n)||(i=!1);return i},E.prototype.filterRecurse=function(t,e){var o=this,i=!1;return Array.isArray(t)?t.forEach(function(t){o.filterRecurse(t,e)&&(i=!0)}):i=t.func(e),i},E.prototype.filters={"=":function(t,e,o,i){return e==t},"<":function(t,e,o,i){return e<t},"<=":function(t,e,o,i){return e<=t},">":function(t,e,o,i){return e>t},">=":function(t,e,o,i){return e>=t},"!=":function(t,e,o,i){return e!=t},regex:function(t,e,o,i){return"string"==typeof t&&(t=new RegExp(t)),t.test(e)},like:function(t,e,o,i){return null===t||void 0===t?e===t:void 0!==e&&null!==e&&String(e).toLowerCase().indexOf(t.toLowerCase())>-1},in:function(t,e,o,i){return Array.isArray(t)?t.indexOf(e)>-1:(console.warn("Filter Error - filter value is not an array:",t),!1)}},u.prototype.registerModule("filter",E);var C=function(t){this.table=t};C.prototype.initializeColumn=function(t){var e=this,o={params:t.definition.formatterParams||{}};switch(_typeof(t.definition.formatter)){case"string":"tick"===t.definition.formatter&&(t.definition.formatter="tickCross",void 0===o.params.crossElement&&(o.params.crossElement=!1),console.warn("DEPRECATION WARNING - the tick formatter has been deprecated, please use the tickCross formatter with the crossElement param set to false")),e.formatters[t.definition.formatter]?o.formatter=e.formatters[t.definition.formatter]:(console.warn("Formatter Error - No such formatter found: ",t.definition.formatter),o.formatter=e.formatters.plaintext);break;case"function":o.formatter=t.definition.formatter;break;default:o.formatter=e.formatters.plaintext}t.modules.format=o},C.prototype.cellRendered=function(t){t.modules.format&&t.modules.format.renderedCallback&&t.modules.format.renderedCallback()},C.prototype.formatValue=function(t){function e(e){t.modules.format||(t.modules.format={}),t.modules.format.renderedCallback=e}var o=t.getComponent(),i="function"==typeof t.column.modules.format.params?t.column.modules.format.params(o):t.column.modules.format.params;return t.column.modules.format.formatter.call(this,o,i,e)},C.prototype.sanitizeHTML=function(t){if(t){var e={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;","`":"&#x60;","=":"&#x3D;"};return String(t).replace(/[&<>"'`=\/]/g,function(t){return e[t]})}return t},C.prototype.emptyToSpace=function(t){return null===t||void 0===t?"&nbsp;":t},C.prototype.getFormatter=function(t){var t;switch(void 0===t?"undefined":_typeof(t)){case"string":this.formatters[t]?t=this.formatters[t]:(console.warn("Formatter Error - No such formatter found: ",t),t=this.formatters.plaintext);break;case"function":t=t;break;default:t=this.formatters.plaintext}return t},C.prototype.formatters={plaintext:function(t,e,o){return this.emptyToSpace(this.sanitizeHTML(t.getValue()))},html:function(t,e,o){return t.getValue()},textarea:function(t,e,o){return t.getElement().style.whiteSpace="pre-wrap",this.emptyToSpace(this.sanitizeHTML(t.getValue()))},money:function(t,e,o){var i,n,s,r,a=parseFloat(t.getValue()),l=e.decimal||".",c=e.thousand||",",u=e.symbol||"",d=!!e.symbolAfter,h=void 0!==e.precision?e.precision:2;if(isNaN(a))return this.emptyToSpace(this.sanitizeHTML(t.getValue()));for(i=!1!==h?a.toFixed(h):a,i=String(i).split("."),n=i[0],s=i.length>1?l+i[1]:"",r=/(\d+)(\d{3})/;r.test(n);)n=n.replace(r,"$1"+c+"$2");return d?n+s+u:u+n+s},link:function(t,e,o){var i,n=t.getValue(),s=e.urlPrefix||"",r=e.download,a=n,l=document.createElement("a");if(e.labelField&&(i=t.getData(),a=i[e.labelField]),e.label)switch(_typeof(e.label)){case"string":a=e.label;break;case"function":a=e.label(t)}if(a){if(e.urlField&&(i=t.getData(),n=i[e.urlField]),e.url)switch(_typeof(e.url)){case"string":n=e.url;break;case"function":n=e.url(t)}return l.setAttribute("href",s+n),e.target&&l.setAttribute("target",e.target),e.download&&(r="function"==typeof r?r(t):!0===r?"":r,l.setAttribute("download",r)),l.innerHTML=this.emptyToSpace(this.sanitizeHTML(a)),l}return"&nbsp;"},image:function(t,e,o){var i=document.createElement("img");switch(i.setAttribute("src",t.getValue()),_typeof(e.height)){case"number":i.style.height=e.height+"px";break;case"string":i.style.height=e.height}switch(_typeof(e.width)){case"number":i.style.width=e.width+"px";break;case"string":i.style.width=e.width}return i.addEventListener("load",function(){t.getRow().normalizeHeight()}),i},tickCross:function(t,e,o){var i=t.getValue(),n=t.getElement(),s=e.allowEmpty,r=e.allowTruthy,a=void 0!==e.tickElement?e.tickElement:'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>',l=void 0!==e.crossElement?e.crossElement:'<svg enable-background="new 0 0 24 24" height="14" width="14"  viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';return r&&i||!0===i||"true"===i||"True"===i||1===i||"1"===i?(n.setAttribute("aria-checked",!0),a||""):!s||"null"!==i&&""!==i&&null!==i&&void 0!==i?(n.setAttribute("aria-checked",!1),l||""):(n.setAttribute("aria-checked","mixed"),"")},datetime:function(t,e,o){var i=e.inputFormat||"YYYY-MM-DD hh:mm:ss",n=e.outputFormat||"DD/MM/YYYY hh:mm:ss",s=void 0!==e.invalidPlaceholder?e.invalidPlaceholder:"",r=t.getValue(),a=moment(r,i);return a.isValid()?a.format(n):!0===s?r:"function"==typeof s?s(r):s},datetimediff:function(t,e,o){var i=e.inputFormat||"YYYY-MM-DD hh:mm:ss",n=void 0!==e.invalidPlaceholder?e.invalidPlaceholder:"",s=void 0!==e.suffix&&e.suffix,r=void 0!==e.unit?e.unit:void 0,a=void 0!==e.humanize&&e.humanize,l=void 0!==e.date?e.date:moment(),c=t.getValue(),u=moment(c,i);return u.isValid()?a?moment.duration(u.diff(l)).humanize(s):u.diff(l,r)+(s?" "+s:""):!0===n?c:"function"==typeof n?n(c):n},lookup:function(t,e,o){var i=t.getValue();return void 0===e[i]?(console.warn("Missing display value for "+i),i):e[i]},star:function(t,e,o){var i=t.getValue(),n=t.getElement(),s=e&&e.stars?e.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",i=i&&!isNaN(i)?parseInt(i):0,i=Math.max(0,Math.min(i,s));for(var l=1;l<=s;l++){var c=a.cloneNode(!0);c.innerHTML=l<=i?'<polygon fill="#FFEA00" stroke="#C1AB60" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>':'<polygon fill="#D2D2D2" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>',r.appendChild(c)}return n.style.whiteSpace="nowrap",n.style.overflow="hidden",n.style.textOverflow="ellipsis",n.setAttribute("aria-label",i),r},traffic:function(t,e,o){var i,n,s=this.sanitizeHTML(t.getValue())||0,r=document.createElement("span"),a=e&&e.max?e.max:100,l=e&&e.min?e.min:0,c=e&&void 0!==e.color?e.color:["red","orange","green"],u="#666666";if(!isNaN(s)&&void 0!==t.getValue()){switch(r.classList.add("tabulator-traffic-light"),n=parseFloat(s)<=a?parseFloat(s):a,n=parseFloat(n)>=l?parseFloat(n):l,i=(a-l)/100,n=Math.round((n-l)/i),void 0===c?"undefined":_typeof(c)){case"string":u=c;break;case"function":u=c(s);break;case"object":if(Array.isArray(c)){var d=100/c.length,h=Math.floor(n/d);h=Math.min(h,c.length-1),h=Math.max(h,0),u=c[h];break}}return r.style.backgroundColor=u,r}},progress:function(t,e,o){var i,n,s,r,a,l=this.sanitizeHTML(t.getValue())||0,c=t.getElement(),u=e&&e.max?e.max:100,d=e&&e.min?e.min:0,h=e&&e.legendAlign?e.legendAlign:"center";switch(n=parseFloat(l)<=u?parseFloat(l):u,n=parseFloat(n)>=d?parseFloat(n):d,i=(u-d)/100,n=Math.round((n-d)/i),_typeof(e.color)){case"string":s=e.color;break;case"function":s=e.color(l);break;case"object":if(Array.isArray(e.color)){var p=100/e.color.length,m=Math.floor(n/p);m=Math.min(m,e.color.length-1),m=Math.max(m,0),s=e.color[m];break}default:s="#2DC214"}switch(_typeof(e.legend)){case"string":r=e.legend;break;case"function":r=e.legend(l);break;case"boolean":r=l;break;default:r=!1}switch(_typeof(e.legendColor)){case"string":a=e.legendColor;break;case"function":a=e.legendColor(l);break;case"object":if(Array.isArray(e.legendColor)){var p=100/e.legendColor.length,m=Math.floor(n/p);m=Math.min(m,e.legendColor.length-1),m=Math.max(m,0),a=e.legendColor[m]}break;default:a="#000"}c.style.minWidth="30px",c.style.position="relative",c.setAttribute("aria-label",n);var f=document.createElement("div");if(f.style.display="inline-block",f.style.position="relative",f.style.width=n+"%",f.style.backgroundColor=s,f.style.height="100%",f.setAttribute("data-max",u),f.setAttribute("data-min",d),r){var g=document.createElement("div");g.style.position="absolute",g.style.top="4px",g.style.left=0,g.style.textAlign=h,g.style.width="100%",g.style.color=a,g.innerHTML=r}return o(function(){c.appendChild(f),r&&c.appendChild(g)}),""},color:function(t,e,o){return t.getElement().style.backgroundColor=this.sanitizeHTML(t.getValue()),""},buttonTick:function(t,e,o){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>'},buttonCross:function(t,e,o){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>'},rownum:function(t,e,o){return this.table.rowManager.activeRows.indexOf(t.getRow()._getSelf())+1},handle:function(t,e,o){return t.getElement().classList.add("tabulator-row-handle"),"<div class='tabulator-row-handle-box'><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div></div>"},responsiveCollapse:function(t,e,o){function i(t){var e=s.element;s.open=t,e&&(s.open?(n.classList.add("open"),e.style.display=""):(n.classList.remove("open"),e.style.display="none"))}var n=document.createElement("div"),s=t.getRow()._row.modules.responsiveLayout;return n.classList.add("tabulator-responsive-collapse-toggle"),n.innerHTML="<span class='tabulator-responsive-collapse-toggle-open'>+</span><span class='tabulator-responsive-collapse-toggle-close'>-</span>",t.getElement().classList.add("tabulator-row-handle"),n.addEventListener("click",function(t){t.stopImmediatePropagation(),i(!s.open)}),i(s.open),n},rowSelection:function(t){var e=this,o=document.createElement("input");if(o.type="checkbox",this.table.modExists("selectRow",!0))if(o.addEventListener("click",function(t){t.stopPropagation()}),"function"==typeof t.getRow){var i=t.getRow();o.addEventListener("change",function(t){i.toggleSelect()}),o.checked=i.isSelected(),this.table.modules.selectRow.registerRowSelectCheckbox(i,o)}else o.addEventListener("change",function(t){e.table.modules.selectRow.selectedRows.length?e.table.deselectRow():e.table.selectRow()}),this.table.modules.selectRow.registerHeaderSelectCheckbox(o);return o}},u.prototype.registerModule("format",C);var R=function(t){this.table=t,this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightPadding=0,this.initializationMode="left",this.active=!1,this.scrollEndTimer=!1};R.prototype.reset=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},R.prototype.initializeColumn=function(t){var e={margin:0,edge:!1};t.definition.frozen?t.parent.isGroup?console.warn("Frozen Column Error - Grouped columns cannot be frozen"):t.isGroup?console.warn("Frozen Column Error - Column Groups cannot be frozen"):(e.position=this.initializationMode,"left"==this.initializationMode?this.leftColumns.push(t):this.rightColumns.unshift(t),this.active=!0,t.modules.frozen=e):this.initializationMode="right"},R.prototype.scrollHorizontal=function(){var t,e=this;this.active&&(clearTimeout(this.scrollEndTimer),this.scrollEndTimer=setTimeout(function(){e.layout()},100),t=this.table.rowManager.getVisibleRows(),this.calcMargins(),this.layoutColumnPosition(),this.layoutCalcRows(),t.forEach(function(t){"row"===t.type&&e.layoutRow(t)}),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},R.prototype.calcMargins=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},R.prototype.layoutCalcRows=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))},R.prototype.layoutColumnPosition=function(t){var e=this;this.leftColumns.forEach(function(o,i){o.modules.frozen.margin=e._calcSpace(e.leftColumns,i)+e.table.columnManager.scrollLeft+"px",i==e.leftColumns.length-1?o.modules.frozen.edge=!0:o.modules.frozen.edge=!1,e.layoutElement(o.getElement(),o),t&&o.cells.forEach(function(t){e.layoutElement(t.getElement(),o)})}),this.rightColumns.forEach(function(o,i){o.modules.frozen.margin=e.rightPadding-e._calcSpace(e.rightColumns,i+1)+"px",i==e.rightColumns.length-1?o.modules.frozen.edge=!0:o.modules.frozen.edge=!1,e.layoutElement(o.getElement(),o),t&&o.cells.forEach(function(t){e.layoutElement(t.getElement(),o)})})},R.prototype.layout=function(){var t=this;t.active&&(this.calcMargins(),t.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&t.layoutRow(e)}),this.layoutCalcRows(),this.layoutColumnPosition(!0),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},R.prototype.layoutRow=function(t){var e=this;t.getElement().style.paddingLeft=this.leftMargin,this.leftColumns.forEach(function(o){var i=t.getCell(o);i&&e.layoutElement(i.getElement(),o)}),this.rightColumns.forEach(function(o){var i=t.getCell(o);i&&e.layoutElement(i.getElement(),o)})},R.prototype.layoutElement=function(t,e){e.modules.frozen&&(t.style.position="absolute",t.style.left=e.modules.frozen.margin,t.classList.add("tabulator-frozen"),e.modules.frozen.edge&&t.classList.add("tabulator-frozen-"+e.modules.frozen.position))},R.prototype._calcSpace=function(t,e){for(var o=0,i=0;i<e;i++)t[i].visible&&(o+=t[i].getWidth());return o},u.prototype.registerModule("frozenColumns",R);var x=function(t){this.table=t,this.topElement=document.createElement("div"),this.rows=[],this.displayIndex=0};x.prototype.initialize=function(){this.rows=[],this.topElement.classList.add("tabulator-frozen-rows-holder"),this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling)},x.prototype.setDisplayIndex=function(t){this.displayIndex=t},x.prototype.getDisplayIndex=function(){return this.displayIndex},x.prototype.isFrozen=function(){return!!this.rows.length},x.prototype.getRows=function(t){var e=t.slice(0);return this.rows.forEach(function(t){var o=e.indexOf(t);o>-1&&e.splice(o,1)}),e},x.prototype.freezeRow=function(t){t.modules.frozen?console.warn("Freeze Error - Row is already frozen"):(t.modules.frozen=!0,this.topElement.appendChild(t.getElement()),t.initialize(),t.normalizeHeight(),this.table.rowManager.adjustTableSize(),this.rows.push(t),this.table.rowManager.refreshActiveData("display"),this.styleRows())},x.prototype.unfreezeRow=function(t){var e=this.rows.indexOf(t);if(t.modules.frozen){t.modules.frozen=!1;var o=t.getElement();o.parentNode.removeChild(o),this.table.rowManager.adjustTableSize(),this.rows.splice(e,1),this.table.rowManager.refreshActiveData("display"),this.rows.length&&this.styleRows()}else console.warn("Freeze Error - Row is already unfrozen")},x.prototype.styleRows=function(t){var e=this;this.rows.forEach(function(t,o){e.table.rowManager.styleRow(t,o)})},u.prototype.registerModule("frozenRows",x);var M=function(t){this._group=t,this.type="GroupComponent"};M.prototype.getKey=function(){return this._group.key},M.prototype.getField=function(){return this._group.field},M.prototype.getElement=function(){return this._group.element},M.prototype.getRows=function(){return this._group.getRows(!0)},M.prototype.getSubGroups=function(){return this._group.getSubGroups(!0)},M.prototype.getParentGroup=function(){return!!this._group.parent&&this._group.parent.getComponent()},M.prototype.getVisibility=function(){return this._group.visible},M.prototype.show=function(){this._group.show()},M.prototype.hide=function(){this._group.hide()},M.prototype.toggle=function(){this._group.toggleVisibility()},M.prototype._getSelf=function(){return this._group},M.prototype.getTable=function(){return this._group.groupManager.table};var D=function(t,e,o,i,n,s,r){this.groupManager=t,this.parent=e,this.key=i,this.level=o,this.field=n,this.hasSubGroups=o<t.groupIDLookups.length-1,this.addRow=this.hasSubGroups?this._addRowToGroup:this._addRow,this.type="group",this.old=r,this.rows=[],this.groups=[],this.groupList=[],this.generator=s,this.elementContents=!1,this.height=0,this.outerHeight=0,this.initialized=!1,this.calcs={},this.initialized=!1,this.modules={},this.arrowElement=!1,this.visible=r?r.visible:void 0!==t.startOpen[o]?t.startOpen[o]:t.startOpen[0],this.createElements(),this.addBindings(),this.createValueGroups()};D.prototype.wipe=function(){this.groupList.length?this.groupList.forEach(function(t){t.wipe()}):(this.element=!1,this.arrowElement=!1,this.elementContents=!1)},D.prototype.createElements=function(){var t=document.createElement("div");t.classList.add("tabulator-arrow"),this.element=document.createElement("div"),this.element.classList.add("tabulator-row"),this.element.classList.add("tabulator-group"),this.element.classList.add("tabulator-group-level-"+this.level),this.element.setAttribute("role","rowgroup"),this.arrowElement=document.createElement("div"),this.arrowElement.classList.add("tabulator-group-toggle"),this.arrowElement.appendChild(t),!1!==this.groupManager.table.options.movableRows&&this.groupManager.table.modExists("moveRow")&&this.groupManager.table.modules.moveRow.initializeGroupHeader(this)},D.prototype.createValueGroups=function(){var t=this,e=this.level+1;this.groupManager.allowedValues&&this.groupManager.allowedValues[e]&&this.groupManager.allowedValues[e].forEach(function(o){t._createGroup(o,e)})},
+D.prototype.addBindings=function(){var t,e,o,i,n=this;n.groupManager.table.options.groupClick&&n.element.addEventListener("click",function(t){n.groupManager.table.options.groupClick.call(n.groupManager.table,t,n.getComponent())}),n.groupManager.table.options.groupDblClick&&n.element.addEventListener("dblclick",function(t){n.groupManager.table.options.groupDblClick.call(n.groupManager.table,t,n.getComponent())}),n.groupManager.table.options.groupContext&&n.element.addEventListener("contextmenu",function(t){n.groupManager.table.options.groupContext.call(n.groupManager.table,t,n.getComponent())}),n.groupManager.table.options.groupTap&&(o=!1,n.element.addEventListener("touchstart",function(t){o=!0},{passive:!0}),n.element.addEventListener("touchend",function(t){o&&n.groupManager.table.options.groupTap(t,n.getComponent()),o=!1})),n.groupManager.table.options.groupDblTap&&(t=null,n.element.addEventListener("touchend",function(e){t?(clearTimeout(t),t=null,n.groupManager.table.options.groupDblTap(e,n.getComponent())):t=setTimeout(function(){clearTimeout(t),t=null},300)})),n.groupManager.table.options.groupTapHold&&(e=null,n.element.addEventListener("touchstart",function(t){clearTimeout(e),e=setTimeout(function(){clearTimeout(e),e=null,o=!1,n.groupManager.table.options.groupTapHold(t,n.getComponent())},1e3)},{passive:!0}),n.element.addEventListener("touchend",function(t){clearTimeout(e),e=null})),n.groupManager.table.options.groupToggleElement&&(i="arrow"==n.groupManager.table.options.groupToggleElement?n.arrowElement:n.element,i.addEventListener("click",function(t){t.stopPropagation(),t.stopImmediatePropagation(),n.toggleVisibility()}))},D.prototype._createGroup=function(t,e){var o=e+"_"+t,i=new D(this.groupManager,this,e,t,this.groupManager.groupIDLookups[e].field,this.groupManager.headerGenerator[e]||this.groupManager.headerGenerator[0],!!this.old&&this.old.groups[o]);this.groups[o]=i,this.groupList.push(i)},D.prototype._addRowToGroup=function(t){var e=this.level+1;if(this.hasSubGroups){var o=this.groupManager.groupIDLookups[e].func(t.getData()),i=e+"_"+o;this.groupManager.allowedValues&&this.groupManager.allowedValues[e]?this.groups[i]&&this.groups[i].addRow(t):(this.groups[i]||this._createGroup(o,e),this.groups[i].addRow(t))}},D.prototype._addRow=function(t){this.rows.push(t),t.modules.group=this},D.prototype.insertRow=function(t,e,o){var i=this.conformRowData({});t.updateData(i);var n=this.rows.indexOf(e);n>-1?o?this.rows.splice(n+1,0,t):this.rows.splice(n,0,t):o?this.rows.push(t):this.rows.unshift(t),t.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)},D.prototype.scrollHeader=function(t){this.arrowElement.style.marginLeft=t,this.groupList.forEach(function(e){e.scrollHeader(t)})},D.prototype.getRowIndex=function(t){},D.prototype.conformRowData=function(t){return this.field?t[this.field]=this.key:console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function"),this.parent&&(t=this.parent.conformRowData(t)),t},D.prototype.removeRow=function(t){var e=this.rows.indexOf(t),o=t.getElement();e>-1&&this.rows.splice(e,1),this.groupManager.table.options.groupValues||this.rows.length?(o.parentNode&&o.parentNode.removeChild(o),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))},D.prototype.removeGroup=function(t){var e,o=t.level+"_"+t.key;this.groups[o]&&(delete this.groups[o],e=this.groupList.indexOf(t),e>-1&&this.groupList.splice(e,1),this.groupList.length||(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this)))},D.prototype.getHeadersAndRows=function(t){var e=[];return e.push(this),this._visSet(),this.visible?this.groupList.length?this.groupList.forEach(function(o){e=e.concat(o.getHeadersAndRows(t))}):(!t&&"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),e.push(this.calcs.top)),e=e.concat(this.rows),!t&&"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),e.push(this.calcs.bottom))):this.groupList.length||"table"==this.groupManager.table.options.columnCalcs||this.groupManager.table.modExists("columnCalcs")&&(!t&&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),e.push(this.calcs.top))),!t&&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),e.push(this.calcs.bottom)))),e},D.prototype.getData=function(t,e){var o=[];return this._visSet(),(!t||t&&this.visible)&&this.rows.forEach(function(t){o.push(t.getData(e||"data"))}),o},D.prototype.getRowCount=function(){var t=0;return this.groupList.length?this.groupList.forEach(function(e){t+=e.getRowCount()}):t=this.rows.length,t},D.prototype.toggleVisibility=function(){this.visible?this.hide():this.show()},D.prototype.hide=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(t){t.getHeadersAndRows().forEach(function(t){t.detachElement()})}):this.rows.forEach(function(t){var e=t.getElement();e.parentNode.removeChild(e)}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()),this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!1)},D.prototype.show=function(){var t=this;if(t.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=t.getElement();this.groupList.length?this.groupList.forEach(function(t){t.getHeadersAndRows().forEach(function(t){var o=t.getElement();e.parentNode.insertBefore(o,e.nextSibling),t.initialize(),e=o})}):t.rows.forEach(function(t){var o=t.getElement();e.parentNode.insertBefore(o,e.nextSibling),t.initialize(),e=o}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()}this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!0)},D.prototype._visSet=function(){var t=[];"function"==typeof this.visible&&(this.rows.forEach(function(e){t.push(e.getData())}),this.visible=this.visible(this.key,this.getRowCount(),t,this.getComponent()))},D.prototype.getRowGroup=function(t){var e=!1;return this.groupList.length?this.groupList.forEach(function(o){var i=o.getRowGroup(t);i&&(e=i)}):this.rows.find(function(e){return e===t})&&(e=this),e},D.prototype.getSubGroups=function(t){var e=[];return this.groupList.forEach(function(o){e.push(t?o.getComponent():o)}),e},D.prototype.getRows=function(t){var e=[];return this.rows.forEach(function(o){e.push(t?o.getComponent():o)}),e},D.prototype.generateGroupHeaderContents=function(){var t=[];for(this.rows.forEach(function(e){t.push(e.getData())}),this.elementContents=this.generator(this.key,this.getRowCount(),t,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)},D.prototype.getElement=function(){this.addBindingsd=!1,this._visSet(),this.visible?this.element.classList.add("tabulator-group-visible"):this.element.classList.remove("tabulator-group-visible");for(var t=0;t<this.element.childNodes.length;++t)this.element.childNodes[t].parentNode.removeChild(this.element.childNodes[t]);return this.generateGroupHeaderContents(),this.element},D.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},D.prototype.normalizeHeight=function(){this.setHeight(this.element.clientHeight)},D.prototype.initialize=function(t){this.initialized&&!t||(this.normalizeHeight(),this.initialized=!0)},D.prototype.reinitialize=function(){this.initialized=!1,this.height=0,u.prototype.helpers.elVisible(this.element)&&this.initialize(!0)},D.prototype.setHeight=function(t){this.height!=t&&(this.height=t,this.outerHeight=this.element.offsetHeight)},D.prototype.getHeight=function(){return this.outerHeight},D.prototype.getGroup=function(){return this},D.prototype.reinitializeHeight=function(){},D.prototype.calcHeight=function(){},D.prototype.setCellHeight=function(){},D.prototype.clearCellHeight=function(){},D.prototype.getComponent=function(){return new M(this)};var L=function(t){this.table=t,this.groupIDLookups=!1,this.startOpen=[function(){return!1}],this.headerGenerator=[function(){return""}],this.groupList=[],this.allowedValues=!1,this.groups={},this.displayIndex=0};L.prototype.initialize=function(){var t=this,e=t.table.options.groupBy,o=t.table.options.groupStartOpen,i=t.table.options.groupHeader;if(this.allowedValues=t.table.options.groupValues,Array.isArray(e)&&Array.isArray(i)&&e.length>i.length&&console.warn("Error creating group headers, groupHeader array is shorter than groupBy array"),t.headerGenerator=[function(){return""}],this.startOpen=[function(){return!1}],t.table.modules.localize.bind("groups|item",function(e,o){t.headerGenerator[0]=function(t,i,n){return(void 0===t?"":t)+"<span>("+i+" "+(1===i?e:o.groups.items)+")</span>"}}),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){var n=this.table.columnManager.getRealColumns();n.forEach(function(e){e.definition.topCalc&&t.table.modules.columnCalcs.initializeTopRow(),e.definition.bottomCalc&&t.table.modules.columnCalcs.initializeBottomRow()})}Array.isArray(e)||(e=[e]),e.forEach(function(e,o){var i,n;"function"==typeof e?i=e:(n=t.table.columnManager.getColumnByField(e),i=n?function(t){return n.getFieldValue(t)}:function(t){return t[e]}),t.groupIDLookups.push({field:"function"!=typeof e&&e,func:i,values:!!t.allowedValues&&t.allowedValues[o]})}),o&&(Array.isArray(o)||(o=[o]),o.forEach(function(t){t="function"==typeof t?t:function(){return!0}}),t.startOpen=o),i&&(t.headerGenerator=Array.isArray(i)?i:[i]),this.initialized=!0},L.prototype.setDisplayIndex=function(t){this.displayIndex=t},L.prototype.getDisplayIndex=function(){return this.displayIndex},L.prototype.getRows=function(t){return this.groupIDLookups.length?(this.table.options.dataGrouping.call(this.table),this.generateGroups(t),this.table.options.dataGrouped&&this.table.options.dataGrouped.call(this.table,this.getGroups(!0)),this.updateGroupRows()):t.slice(0)},L.prototype.getGroups=function(t){var e=[];return this.groupList.forEach(function(o){e.push(t?o.getComponent():o)}),e},L.prototype.wipe=function(){this.groupList.forEach(function(t){t.wipe()})},L.prototype.pullGroupListData=function(t){var e=this,o=[];return t.forEach(function(t){var i={};i.level=0,i.rowCount=0,i.headerContent="";var n=[];t.hasSubGroups?(n=e.pullGroupListData(t.groupList),i.level=t.level,i.rowCount=n.length-t.groupList.length,i.headerContent=t.generator(t.key,i.rowCount,t.rows,t),o.push(i),o=o.concat(n)):(i.level=t.level,i.headerContent=t.generator(t.key,t.rows.length,t.rows,t),i.rowCount=t.getRows().length,o.push(i),t.getRows().forEach(function(t){o.push(t.getData("data"))}))}),o},L.prototype.getGroupedData=function(){return this.pullGroupListData(this.groupList)},L.prototype.getRowGroup=function(t){var e=!1;return this.groupList.forEach(function(o){var i=o.getRowGroup(t);i&&(e=i)}),e},L.prototype.countGroups=function(){return this.groupList.length},L.prototype.generateGroups=function(t){var e=this,o=e.groups;e.groups={},e.groupList=[],this.allowedValues&&this.allowedValues[0]?(this.allowedValues[0].forEach(function(t){e.createGroup(t,0,o)}),t.forEach(function(t){e.assignRowToExistingGroup(t,o)})):t.forEach(function(t){e.assignRowToGroup(t,o)})},L.prototype.createGroup=function(t,e,o){var i,n=e+"_"+t;o=o||[],i=new D(this,!1,e,t,this.groupIDLookups[0].field,this.headerGenerator[0],o[n]),this.groups[n]=i,this.groupList.push(i)},L.prototype.assignRowToExistingGroup=function(t,e){var o=this.groupIDLookups[0].func(t.getData()),i="0_"+o;this.groups[i]&&this.groups[i].addRow(t)},L.prototype.assignRowToGroup=function(t,e){var o=this.groupIDLookups[0].func(t.getData()),i=!this.groups["0_"+o];return i&&this.createGroup(o,0,e),this.groups["0_"+o].addRow(t),!i},L.prototype.updateGroupRows=function(t){var e=this,o=[];if(e.groupList.forEach(function(t){o=o.concat(t.getHeadersAndRows())}),t){var i=e.table.rowManager.setDisplayRows(o,this.getDisplayIndex());!0!==i&&this.setDisplayIndex(i),e.table.rowManager.refreshActiveData("group",!0,!0)}return o},L.prototype.scrollHeaders=function(t){t+="px",this.groupList.forEach(function(e){e.scrollHeader(t)})},L.prototype.removeGroup=function(t){var e,o=t.level+"_"+t.key;this.groups[o]&&(delete this.groups[o],(e=this.groupList.indexOf(t))>-1&&this.groupList.splice(e,1))},u.prototype.registerModule("groupRows",L);var T=function(t){this.table=t,this.history=[],this.index=-1};T.prototype.clear=function(){this.history=[],this.index=-1},T.prototype.action=function(t,e,o){this.history=this.history.slice(0,this.index+1),this.history.push({type:t,component:e,data:o}),this.index++},T.prototype.getHistoryUndoSize=function(){return this.index+1},T.prototype.getHistoryRedoSize=function(){return this.history.length-(this.index+1)},T.prototype.undo=function(){if(this.index>-1){var t=this.history[this.index];return this.undoers[t.type].call(this,t),this.index--,this.table.options.historyUndo.call(this.table,t.type,t.component.getComponent(),t.data),!0}return console.warn("History Undo Error - No more history to undo"),!1},T.prototype.redo=function(){if(this.history.length-1>this.index){this.index++;var t=this.history[this.index];return this.redoers[t.type].call(this,t),this.table.options.historyRedo.call(this.table,t.type,t.component.getComponent(),t.data),!0}return console.warn("History Redo Error - No more history to redo"),!1},T.prototype.undoers={cellEdit:function(t){t.component.setValueProcessData(t.data.oldValue)},rowAdd:function(t){t.component.deleteActual()},rowDelete:function(t){var e=this.table.rowManager.addRowActual(t.data.data,t.data.pos,t.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(t.component,e)},rowMove:function(t){this.table.rowManager.moveRowActual(t.component,this.table.rowManager.rows[t.data.pos],!1),this.table.rowManager.redraw()}},T.prototype.redoers={cellEdit:function(t){t.component.setValueProcessData(t.data.newValue)},rowAdd:function(t){var e=this.table.rowManager.addRowActual(t.data.data,t.data.pos,t.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(t.component,e)},rowDelete:function(t){t.component.deleteActual()},rowMove:function(t){this.table.rowManager.moveRowActual(t.component,this.table.rowManager.rows[t.data.pos],!1),this.table.rowManager.redraw()}},T.prototype._rebindRow=function(t,e){this.history.forEach(function(o){if(o.component instanceof r)o.component===t&&(o.component=e);else if(o.component instanceof l&&o.component.row===t){var i=o.component.column.getField();i&&(o.component=e.getCell(i))}})},u.prototype.registerModule("history",T);var k=function(t){this.table=t,this.fieldIndex=[],this.hasIndex=!1};k.prototype.parseTable=function(){var t=this,e=t.table.element,o=t.table.options,i=(o.columns,e.getElementsByTagName("th")),n=e.getElementsByTagName("tbody")[0],s=[];t.hasIndex=!1,t.table.options.htmlImporting.call(this.table),n=n?n.getElementsByTagName("tr"):[],t._extractOptions(e,o),i.length?t._extractHeaders(i,n):t._generateBlankHeaders(i,n);for(var r=0;r<n.length;r++){var a=n[r],l=a.getElementsByTagName("td"),c={};t.hasIndex||(c[o.index]=r);for(var u=0;u<l.length;u++){var d=l[u];void 0!==this.fieldIndex[u]&&(c[this.fieldIndex[u]]=d.innerHTML)}s.push(c)}var h=document.createElement("div"),p=e.attributes;for(var u in p)"object"==_typeof(p[u])&&h.setAttribute(p[u].name,p[u].value);e.parentNode.replaceChild(h,e),o.data=s,t.table.options.htmlImported.call(this.table),this.table.element=h},k.prototype._extractOptions=function(t,e,o){var i=t.attributes,n=o?Object.assign([],o):Object.keys(e),s={};n.forEach(function(t){s[t.toLowerCase()]=t});for(var r in i){var a,l=i[r];l&&"object"==(void 0===l?"undefined":_typeof(l))&&l.name&&0===l.name.indexOf("tabulator-")&&(a=l.name.replace("tabulator-",""),void 0!==s[a]&&(e[s[a]]=this._attribValue(l.value)))}},k.prototype._attribValue=function(t){return"true"===t||"false"!==t&&t},k.prototype._findCol=function(t){return this.table.options.columns.find(function(e){return e.title===t})||!1},k.prototype._extractHeaders=function(t,e){for(var o=0;o<t.length;o++){var n,s,r=t[o],a=!1,l=this._findCol(r.textContent);l?a=!0:l={title:r.textContent.trim()},l.field||(l.field=r.textContent.trim().toLowerCase().replace(" ","_")),n=r.getAttribute("width"),n&&!l.width&&(l.width=n),s=r.attributes,this._extractOptions(r,l,i.prototype.defaultOptionList);for(var c in s){var u,d=s[c];d&&"object"==(void 0===d?"undefined":_typeof(d))&&d.name&&0===d.name.indexOf("tabulator-")&&(u=d.name.replace("tabulator-",""),l[u]=this._attribValue(d.value))}this.fieldIndex[o]=l.field,l.field==this.table.options.index&&(this.hasIndex=!0),a||this.table.options.columns.push(l)}},k.prototype._generateBlankHeaders=function(t,e){for(var o=0;o<t.length;o++){var i=t[o],n={title:"",field:"col"+o};this.fieldIndex[o]=n.field;var s=i.getAttribute("width");s&&(n.width=s),this.table.options.columns.push(n)}},u.prototype.registerModule("htmlTableImport",k);var S=function(t){this.table=t,this.config={},this.cloneTableStyle=!0,this.colVisProp=""};S.prototype.genereateTable=function(t,e,o,i){this.cloneTableStyle=e,this.config=t||{},this.colVisProp=i;var n=this.generateHeaderElements(),s=this.generateBodyElements(o),r=document.createElement("table");return r.classList.add("tabulator-print-table"),r.appendChild(n),r.appendChild(s),this.mapElementStyles(this.table.element,r,["border-top","border-left","border-right","border-bottom"]),r},S.prototype.generateColumnGroupHeaders=function(){var t=this,e=[];return(!1!==this.config.columnGroups?this.table.columnManager.columns:this.table.columnManager.columnsByIndex).forEach(function(o){var i=t.processColumnGroup(o);i&&e.push(i)}),e},S.prototype.processColumnGroup=function(t){var e=this,o=t.columns,i=0,n={title:t.definition.title,column:t,depth:1};if(o.length){if(n.subGroups=[],n.width=0,o.forEach(function(t){var o=e.processColumnGroup(t);o&&(n.width+=o.width,n.subGroups.push(o),o.depth>i&&(i=o.depth))}),n.depth+=i,!n.width)return!1}else{if(!this.columnVisCheck(t))return!1;n.width=1}return n},S.prototype.groupHeadersToRows=function(t){function e(t,n){var s=i-n;void 0===o[n]&&(o[n]=[]),t.height=t.subGroups?1:s-t.depth+1,o[n].push(t),t.subGroups&&t.subGroups.forEach(function(t){e(t,n+1)})}var o=[],i=0;return t.forEach(function(t){t.depth>i&&(i=t.depth)}),t.forEach(function(t){e(t,0)}),o},S.prototype.generateHeaderElements=function(){var t=this,e=document.createElement("thead");return this.groupHeadersToRows(this.generateColumnGroupHeaders()).forEach(function(o){var i=document.createElement("tr");t.mapElementStyles(t.table.columnManager.getHeadersElement(),e,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),o.forEach(function(e){var o=document.createElement("th"),n=e.column.definition.cssClass?e.column.definition.cssClass.split(" "):[];o.colSpan=e.width,o.rowSpan=e.height,o.innerHTML=e.column.definition.title,t.cloneTableStyle&&(o.style.boxSizing="border-box"),n.forEach(function(t){o.classList.add(t)}),t.mapElementStyles(e.column.getElement(),o,["text-align","border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),t.mapElementStyles(e.column.contentElement,o,["padding-top","padding-left","padding-right","padding-bottom"]),e.column.visible?t.mapElementStyles(e.column.getElement(),o,["width"]):e.column.definition.width&&(o.style.width=e.column.definition.width+"px"),e.column.parent&&t.mapElementStyles(e.column.parent.groupElement,o,["border-top"]),i.appendChild(o)}),e.appendChild(i)}),e},S.prototype.generateBodyElements=function(t){var e,o,i,n,s,r,a,l,c=this;this.cloneTableStyle&&window.getComputedStyle&&(e=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),o=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),i=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),n=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),r=this.table.element.getElementsByClassName("tabulator-group")[0],n&&(a=n.getElementsByClassName("tabulator-cell"),s=a[0],a[a.length-1]));var u=document.createElement("tbody"),d=t?this.table.rowManager.getVisibleRows(!0):this.table.rowManager.getDisplayRows(),h=[];return!1!==this.config.columnCalcs&&this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&d.unshift(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&d.push(this.table.modules.columnCalcs.botRow)),this.table.columnManager.columnsByIndex.forEach(function(t){c.columnVisCheck(t)&&h.push(t)}),d=d.filter(function(t){switch(t.type){case"group":return!1!==c.config.rowGroups;case"calc":return!1!==c.config.columnCalcs}return!0}),d.length>1e3&&console.warn("It may take a long time to render an HTML table with more than 1000 rows"),d.forEach(function(t,n){var a=t.getData(),d=document.createElement("tr");switch(d.classList.add("tabulator-print-table-row"),t.type){case"group":var p=document.createElement("td");p.colSpan=h.length,p.innerHTML=t.key,d.classList.add("tabulator-print-table-group"),c.mapElementStyles(r,d,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),c.mapElementStyles(r,p,["padding-top","padding-left","padding-right","padding-bottom"]),d.appendChild(p);break;case"calc":d.classList.add("tabulator-print-table-calcs");case"row":h.forEach(function(e){var o=document.createElement("td"),i=e.getFieldValue(a),n={modules:{},getValue:function(){return i},getField:function(){return e.definition.field},getElement:function(){return o},getColumn:function(){return e.getComponent()},getData:function(){return a},getRow:function(){return t.getComponent()},getComponent:function(){return n},column:e};if((e.definition.cssClass?e.definition.cssClass.split(" "):[]).forEach(function(t){o.classList.add(t)}),c.table.modExists("format"))i=c.table.modules.format.formatValue(n);else switch(void 0===i?"undefined":_typeof(i)){case"object":i=JSON.stringify(i);break;case"undefined":case"null":i="";break;default:i=i}i instanceof Node?o.appendChild(i):o.innerHTML=i,s&&c.mapElementStyles(s,o,["padding-top","padding-left","padding-right","padding-bottom","border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","text-align"]),d.appendChild(o)}),l="calc"==t.type?i:n%2&&o?o:e,c.mapElementStyles(l,d,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"])}u.appendChild(d)}),u},S.prototype.columnVisCheck=function(t){return!1!==t.definition[this.colVisProp]&&(t.visible||!t.visible&&t.definition[this.colVisProp])},S.prototype.getHtml=function(t,e,o){var i=document.createElement("div");return i.appendChild(this.genereateTable(o||this.table.options.htmlOutputConfig,e,t,"htmlOutput")),i.innerHTML},S.prototype.mapElementStyles=function(t,e,o){if(this.cloneTableStyle&&t&&e){var i={"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 n=window.getComputedStyle(t);o.forEach(function(t){e.style[i[t]]=n.getPropertyValue(t)})}}},u.prototype.registerModule("htmlTableExport",S);var z=function(t){this.table=t,this.watchKeys=null,this.pressedKeys=null,this.keyupBinding=!1,this.keydownBinding=!1};z.prototype.initialize=function(){var t=this.table.options.keybindings,e={};if(this.watchKeys={},this.pressedKeys=[],!1!==t){for(var o in this.bindings)e[o]=this.bindings[o];if(Object.keys(t).length)for(var i in t)e[i]=t[i];this.mapBindings(e),this.bindEvents()}},z.prototype.mapBindings=function(t){var e=this,o=this;for(var i in t)!function(i){e.actions[i]?t[i]&&("object"!==_typeof(t[i])&&(t[i]=[t[i]]),t[i].forEach(function(t){o.mapBinding(i,t)})):console.warn("Key Binding Error - no such action:",i)}(i)},z.prototype.mapBinding=function(t,e){var o=this,i={action:this.actions[t],keys:[],ctrl:!1,shift:!1};e.toString().toLowerCase().split(" ").join("").split("+").forEach(function(t){switch(t){case"ctrl":i.ctrl=!0;break;case"shift":i.shift=!0;break;default:t=parseInt(t),i.keys.push(t),o.watchKeys[t]||(o.watchKeys[t]=[]),o.watchKeys[t].push(i)}})},z.prototype.bindEvents=function(){var t=this;this.keyupBinding=function(e){var o=e.keyCode,i=t.watchKeys[o];i&&(t.pressedKeys.push(o),i.forEach(function(o){t.checkBinding(e,o)}))},this.keydownBinding=function(e){var o=e.keyCode;if(t.watchKeys[o]){var i=t.pressedKeys.indexOf(o);i>-1&&t.pressedKeys.splice(i,1)}},this.table.element.addEventListener("keydown",this.keyupBinding),this.table.element.addEventListener("keyup",this.keydownBinding)},z.prototype.clearBindings=function(){this.keyupBinding&&this.table.element.removeEventListener("keydown",this.keyupBinding),this.keydownBinding&&this.table.element.removeEventListener("keyup",this.keydownBinding)},z.prototype.checkBinding=function(t,e){var o=this,i=!0;return t.ctrlKey==e.ctrl&&t.shiftKey==e.shift&&(e.keys.forEach(function(t){-1==o.pressedKeys.indexOf(t)&&(i=!1)}),i&&e.action.call(o,t),!0)},z.prototype.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"},z.prototype.actions={keyBlock:function(t){t.stopPropagation(),t.preventDefault()},scrollPageUp:function(t){var e=this.table.rowManager,o=e.scrollTop-e.height;e.element.scrollHeight;t.preventDefault(),e.displayRowsCount&&(o>=0?e.element.scrollTop=o:e.scrollToRow(e.getDisplayRows()[0])),this.table.element.focus()},scrollPageDown:function(t){var e=this.table.rowManager,o=e.scrollTop+e.height,i=e.element.scrollHeight;t.preventDefault(),e.displayRowsCount&&(o<=i?e.element.scrollTop=o:e.scrollToRow(e.getDisplayRows()[e.displayRowsCount-1])),this.table.element.focus()},scrollToStart:function(t){var e=this.table.rowManager;t.preventDefault(),e.displayRowsCount&&e.scrollToRow(e.getDisplayRows()[0]),this.table.element.focus()},scrollToEnd:function(t){var e=this.table.rowManager;t.preventDefault(),e.displayRowsCount&&e.scrollToRow(e.getDisplayRows()[e.displayRowsCount-1]),this.table.element.focus()},navPrev:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().prev())},navNext:function(t){var e,o=!1,i=this.table.options.tabEndNewRow;this.table.modExists("edit")&&(o=this.table.modules.edit.currentCell)&&(t.preventDefault(),e=o.nav(),e.next()||i&&(i=!0===i?this.table.addRow({}):"function"==typeof i?this.table.addRow(i(o.row.getComponent())):this.table.addRow(i),i.then(function(){e.next()})))},navLeft:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().left())},navRight:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().right())},navUp:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().up())},navDown:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().down())},undo:function(t){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(t.preventDefault(),this.table.modules.history.undo()))},redo:function(t){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(t.preventDefault(),this.table.modules.history.redo()))},copyToClipboard:function(t){this.table.modules.edit.currentCell||this.table.modExists("clipboard",!0)&&this.table.modules.clipboard.copy(this.table.options.selectable&&"highlight"!=this.table.options.selectable?"selected":"active",null,null,null,!0)}},u.prototype.registerModule("keybindings",z);var F=function(t){this.table=t,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)};F.prototype.createPlaceholderElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-col"),t.classList.add("tabulator-col-placeholder"),t},F.prototype.initializeColumn=function(t){var e,o=this,i={};t.modules.frozen||(e=t.getElement(),i.mousemove=function(i){t.parent===o.moving.parent&&((o.touchMove?i.touches[0].pageX:i.pageX)-u.prototype.helpers.elOffset(e).left+o.table.columnManager.element.scrollLeft>t.getWidth()/2?o.toCol===t&&o.toColAfter||(e.parentNode.insertBefore(o.placeholderElement,e.nextSibling),o.moveColumn(t,!0)):(o.toCol!==t||o.toColAfter)&&(e.parentNode.insertBefore(o.placeholderElement,e),o.moveColumn(t,!1)))}.bind(o),e.addEventListener("mousedown",function(e){o.touchMove=!1,1===e.which&&(o.checkTimeout=setTimeout(function(){o.startMove(e,t)},o.checkPeriod))}),
+e.addEventListener("mouseup",function(t){1===t.which&&o.checkTimeout&&clearTimeout(o.checkTimeout)}),o.bindTouchEvents(t)),t.modules.moveColumn=i},F.prototype.bindTouchEvents=function(t){var e,o,i,n,s,r,a,l=this,c=t.getElement(),u=!1;c.addEventListener("touchstart",function(c){l.checkTimeout=setTimeout(function(){l.touchMove=!0,e=t,o=t.nextColumn(),n=o?o.getWidth()/2:0,i=t.prevColumn(),s=i?i.getWidth()/2:0,r=0,a=0,u=!1,l.startMove(c,t)},l.checkPeriod)},{passive:!0}),c.addEventListener("touchmove",function(c){var d,h;l.moving&&(l.moveHover(c),u||(u=c.touches[0].pageX),d=c.touches[0].pageX-u,d>0?o&&d-r>n&&(h=o)!==t&&(u=c.touches[0].pageX,h.getElement().parentNode.insertBefore(l.placeholderElement,h.getElement().nextSibling),l.moveColumn(h,!0)):i&&-d-a>s&&(h=i)!==t&&(u=c.touches[0].pageX,h.getElement().parentNode.insertBefore(l.placeholderElement,h.getElement()),l.moveColumn(h,!1)),h&&(e=h,o=h.nextColumn(),r=n,n=o?o.getWidth()/2:0,i=h.prevColumn(),a=s,s=i?i.getWidth()/2:0))},{passive:!0}),c.addEventListener("touchend",function(t){l.checkTimeout&&clearTimeout(l.checkTimeout),l.moving&&l.endMove(t)})},F.prototype.startMove=function(t,e){var o=e.getElement();this.moving=e,this.startX=(this.touchMove?t.touches[0].pageX:t.pageX)-u.prototype.helpers.elOffset(o).left,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=e.getWidth()+"px",this.placeholderElement.style.height=e.getHeight()+"px",o.parentNode.insertBefore(this.placeholderElement,o),o.parentNode.removeChild(o),this.hoverElement=o.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(t)},F.prototype._bindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(t){t.modules.moveColumn.mousemove&&t.getElement().addEventListener("mousemove",t.modules.moveColumn.mousemove)})},F.prototype._unbindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(t){t.modules.moveColumn.mousemove&&t.getElement().removeEventListener("mousemove",t.modules.moveColumn.mousemove)})},F.prototype.moveColumn=function(t,e){var o=this.moving.getCells();this.toCol=t,this.toColAfter=e,e?t.getCells().forEach(function(t,e){var i=t.getElement();i.parentNode.insertBefore(o[e].getElement(),i.nextSibling)}):t.getCells().forEach(function(t,e){var i=t.getElement();i.parentNode.insertBefore(o[e].getElement(),i)})},F.prototype.endMove=function(t){(1===t.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)))},F.prototype.moveHover=function(t){var e,o=this,i=o.table.columnManager.getElement(),n=i.scrollLeft,s=(o.touchMove?t.touches[0].pageX:t.pageX)-u.prototype.helpers.elOffset(i).left+n;o.hoverElement.style.left=s-o.startX+"px",s-n<o.autoScrollMargin&&(o.autoScrollTimeout||(o.autoScrollTimeout=setTimeout(function(){e=Math.max(0,n-5),o.table.rowManager.getElement().scrollLeft=e,o.autoScrollTimeout=!1},1))),n+i.clientWidth-s<o.autoScrollMargin&&(o.autoScrollTimeout||(o.autoScrollTimeout=setTimeout(function(){e=Math.min(i.clientWidth,n+5),o.table.rowManager.getElement().scrollLeft=e,o.autoScrollTimeout=!1},1)))},u.prototype.registerModule("moveColumn",F);var H=function(t){this.table=t,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.connections=[],this.connectedTable=!1,this.connectedRow=!1};H.prototype.createPlaceholderElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-row"),t.classList.add("tabulator-row-placeholder"),t},H.prototype.initialize=function(t){this.connection=this.table.options.movableRowsConnectedTables},H.prototype.setHandle=function(t){this.hasHandle=t},H.prototype.initializeGroupHeader=function(t){var e=this,o={};o.mouseup=function(t){e.tableRowDrop(t,row)}.bind(e),o.mousemove=function(o){if(o.pageY-u.prototype.helpers.elOffset(t.element).top+e.table.rowManager.element.scrollTop>t.getHeight()/2){if(e.toRow!==t||!e.toRowAfter){var i=t.getElement();i.parentNode.insertBefore(e.placeholderElement,i.nextSibling),e.moveRow(t,!0)}}else if(e.toRow!==t||e.toRowAfter){var i=t.getElement();i.previousSibling&&(i.parentNode.insertBefore(e.placeholderElement,i),e.moveRow(t,!1))}}.bind(e),t.modules.moveRow=o},H.prototype.initializeRow=function(t){var e,o=this,i={};i.mouseup=function(e){o.tableRowDrop(e,t)}.bind(o),i.mousemove=function(e){if(e.pageY-u.prototype.helpers.elOffset(t.element).top+o.table.rowManager.element.scrollTop>t.getHeight()/2){if(o.toRow!==t||!o.toRowAfter){var i=t.getElement();i.parentNode.insertBefore(o.placeholderElement,i.nextSibling),o.moveRow(t,!0)}}else if(o.toRow!==t||o.toRowAfter){var i=t.getElement();i.parentNode.insertBefore(o.placeholderElement,i),o.moveRow(t,!1)}}.bind(o),this.hasHandle||(e=t.getElement(),e.addEventListener("mousedown",function(e){1===e.which&&(o.checkTimeout=setTimeout(function(){o.startMove(e,t)},o.checkPeriod))}),e.addEventListener("mouseup",function(t){1===t.which&&o.checkTimeout&&clearTimeout(o.checkTimeout)}),this.bindTouchEvents(t,t.getElement())),t.modules.moveRow=i},H.prototype.initializeCell=function(t){var e=this,o=t.getElement();o.addEventListener("mousedown",function(o){1===o.which&&(e.checkTimeout=setTimeout(function(){e.startMove(o,t.row)},e.checkPeriod))}),o.addEventListener("mouseup",function(t){1===t.which&&e.checkTimeout&&clearTimeout(e.checkTimeout)}),this.bindTouchEvents(t.row,t.getElement())},H.prototype.bindTouchEvents=function(t,e){var o,i,n,s,r,a,l,c=this,u=!1;e.addEventListener("touchstart",function(e){c.checkTimeout=setTimeout(function(){c.touchMove=!0,o=t,i=t.nextRow(),s=i?i.getHeight()/2:0,n=t.prevRow(),r=n?n.getHeight()/2:0,a=0,l=0,u=!1,c.startMove(e,t)},c.checkPeriod)},{passive:!0}),this.moving,this.toRow,this.toRowAfter,e.addEventListener("touchmove",function(e){var d,h;c.moving&&(e.preventDefault(),c.moveHover(e),u||(u=e.touches[0].pageY),d=e.touches[0].pageY-u,d>0?i&&d-a>s&&(h=i)!==t&&(u=e.touches[0].pageY,h.getElement().parentNode.insertBefore(c.placeholderElement,h.getElement().nextSibling),c.moveRow(h,!0)):n&&-d-l>r&&(h=n)!==t&&(u=e.touches[0].pageY,h.getElement().parentNode.insertBefore(c.placeholderElement,h.getElement()),c.moveRow(h,!1)),h&&(o=h,i=h.nextRow(),a=s,s=i?i.getHeight()/2:0,n=h.prevRow(),l=r,r=n?n.getHeight()/2:0))}),e.addEventListener("touchend",function(t){c.checkTimeout&&clearTimeout(c.checkTimeout),c.moving&&(c.endMove(t),c.touchMove=!1)})},H.prototype._bindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(t){"row"!==t.type&&"group"!==t.type||!t.modules.moveRow.mousemove||t.getElement().addEventListener("mousemove",t.modules.moveRow.mousemove)})},H.prototype._unbindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(t){"row"!==t.type&&"group"!==t.type||!t.modules.moveRow.mousemove||t.getElement().removeEventListener("mousemove",t.modules.moveRow.mousemove)})},H.prototype.startMove=function(t,e){var o=e.getElement();this.setStartPosition(t,e),this.moving=e,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=e.getWidth()+"px",this.placeholderElement.style.height=e.getHeight()+"px",this.connection?(this.table.element.classList.add("tabulator-movingrow-sending"),this.connectToTables(e)):(o.parentNode.insertBefore(this.placeholderElement,o),o.parentNode.removeChild(o)),this.hoverElement=o.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(t)},H.prototype.setStartPosition=function(t,e){var o,i,n=this.touchMove?t.touches[0].pageX:t.pageX,s=this.touchMove?t.touches[0].pageY:t.pageY;o=e.getElement(),this.connection?(i=o.getBoundingClientRect(),this.startX=i.left-n+window.pageXOffset,this.startY=i.top-s+window.pageYOffset):this.startY=s-o.getBoundingClientRect().top},H.prototype.endMove=function(t){t&&1!==t.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()))},H.prototype.moveRow=function(t,e){this.toRow=t,this.toRowAfter=e},H.prototype.moveHover=function(t){this.connection?this.moveHoverConnections.call(this,t):this.moveHoverTable.call(this,t)},H.prototype.moveHoverTable=function(t){var e=this.table.rowManager.getElement(),o=e.scrollTop,i=(this.touchMove?t.touches[0].pageY:t.pageY)-e.getBoundingClientRect().top+o;this.hoverElement.style.top=i-this.startY+"px"},H.prototype.moveHoverConnections=function(t){this.hoverElement.style.left=this.startX+(this.touchMove?t.touches[0].pageX:t.pageX)+"px",this.hoverElement.style.top=this.startY+(this.touchMove?t.touches[0].pageY:t.pageY)+"px"},H.prototype.connectToTables=function(t){var e=this.table.modules.comms.getConnections(this.connection);this.table.options.movableRowsSendingStart.call(this.table,e),this.table.modules.comms.send(this.connection,"moveRow","connect",{row:t})},H.prototype.disconnectFromTables=function(){var t=this.table.modules.comms.getConnections(this.connection);this.table.options.movableRowsSendingStop.call(this.table,t),this.table.modules.comms.send(this.connection,"moveRow","disconnect")},H.prototype.connect=function(t,e){var o=this;return this.connectedTable?(console.warn("Move Row Error - Table cannot accept connection, already connected to table:",this.connectedTable),!1):(this.connectedTable=t,this.connectedRow=e,this.table.element.classList.add("tabulator-movingrow-receiving"),o.table.rowManager.getDisplayRows().forEach(function(t){"row"===t.type&&t.modules.moveRow&&t.modules.moveRow.mouseup&&t.getElement().addEventListener("mouseup",t.modules.moveRow.mouseup)}),o.tableRowDropEvent=o.tableRowDrop.bind(o),o.table.element.addEventListener("mouseup",o.tableRowDropEvent),this.table.options.movableRowsReceivingStart.call(this.table,e,t),!0)},H.prototype.disconnect=function(t){var e=this;t===this.connectedTable?(this.connectedTable=!1,this.connectedRow=!1,this.table.element.classList.remove("tabulator-movingrow-receiving"),e.table.rowManager.getDisplayRows().forEach(function(t){"row"===t.type&&t.modules.moveRow&&t.modules.moveRow.mouseup&&t.getElement().removeEventListener("mouseup",t.modules.moveRow.mouseup)}),e.table.element.removeEventListener("mouseup",e.tableRowDropEvent),this.table.options.movableRowsReceivingStop.call(this.table,t)):console.warn("Move Row Error - trying to disconnect from non connected table")},H.prototype.dropComplete=function(t,e,o){var i=!1;if(o){switch(_typeof(this.table.options.movableRowsSender)){case"string":i=this.senders[this.table.options.movableRowsSender];break;case"function":i=this.table.options.movableRowsSender}i?i.call(this,this.moving.getComponent(),e?e.getComponent():void 0,t):this.table.options.movableRowsSender&&console.warn("Mover Row Error - no matching sender found:",this.table.options.movableRowsSender),this.table.options.movableRowsSent.call(this.table,this.moving.getComponent(),e?e.getComponent():void 0,t)}else this.table.options.movableRowsSentFailed.call(this.table,this.moving.getComponent(),e?e.getComponent():void 0,t);this.endMove()},H.prototype.tableRowDrop=function(t,e){var o=!1,i=!1;switch(t.stopImmediatePropagation(),_typeof(this.table.options.movableRowsReceiver)){case"string":o=this.receivers[this.table.options.movableRowsReceiver];break;case"function":o=this.table.options.movableRowsReceiver}o?i=o.call(this,this.connectedRow.getComponent(),e?e.getComponent():void 0,this.connectedTable):console.warn("Mover Row Error - no matching receiver found:",this.table.options.movableRowsReceiver),i?this.table.options.movableRowsReceived.call(this.table,this.connectedRow.getComponent(),e?e.getComponent():void 0,this.connectedTable):this.table.options.movableRowsReceivedFailed.call(this.table,this.connectedRow.getComponent(),e?e.getComponent():void 0,this.connectedTable),this.table.modules.comms.send(this.connectedTable,"moveRow","dropcomplete",{row:e,success:i})},H.prototype.receivers={insert:function(t,e,o){return this.table.addRow(t.getData(),void 0,e),!0},add:function(t,e,o){return this.table.addRow(t.getData()),!0},update:function(t,e,o){return!!e&&(e.update(t.getData()),!0)},replace:function(t,e,o){return!!e&&(this.table.addRow(t.getData(),void 0,e),e.delete(),!0)}},H.prototype.senders={delete:function(t,e,o){t.delete()}},H.prototype.commsReceived=function(t,e,o){switch(e){case"connect":return this.connect(t,o.row);case"disconnect":return this.disconnect(t);case"dropcomplete":return this.dropComplete(t,o.row,o.success)}},u.prototype.registerModule("moveRow",H);var _=function(t){this.table=t,this.allowedTypes=["","data","edit","clipboard"],this.enabled=!0};_.prototype.initializeColumn=function(t){var e=this,o=!1,i={};this.allowedTypes.forEach(function(n){var s,r="mutator"+(n.charAt(0).toUpperCase()+n.slice(1));t.definition[r]&&(s=e.lookupMutator(t.definition[r]))&&(o=!0,i[r]={mutator:s,params:t.definition[r+"Params"]||{}})}),o&&(t.modules.mutate=i)},_.prototype.lookupMutator=function(t){var e=!1;switch(void 0===t?"undefined":_typeof(t)){case"string":this.mutators[t]?e=this.mutators[t]:console.warn("Mutator Error - No such mutator found, ignoring: ",t);break;case"function":e=t}return e},_.prototype.transformRow=function(t,e,o){var i,n=this,s="mutator"+(e.charAt(0).toUpperCase()+e.slice(1));return this.enabled&&n.table.columnManager.traverse(function(n){var r,a,l;n.modules.mutate&&(r=n.modules.mutate[s]||n.modules.mutate.mutator||!1)&&o&&void 0!==(i=n.getFieldValue(o))&&(l=n.getComponent(),a="function"==typeof r.params?r.params(i,t,e,l):r.params,n.setFieldValue(t,r.mutator(i,t,e,a,l)))}),t},_.prototype.transformCell=function(t,e){var o=t.column.modules.mutate.mutatorEdit||t.column.modules.mutate.mutator||!1,i={};return o?(i=Object.assign(i,t.row.getData()),t.column.setFieldValue(i,e),o.mutator(e,i,"edit",o.params,t.getComponent())):e},_.prototype.enable=function(){this.enabled=!0},_.prototype.disable=function(){this.enabled=!1},_.prototype.mutators={},u.prototype.registerModule("mutator",_);var A=function(t){this.table=t,this.mode="local",this.progressiveLoad=!1,this.size=0,this.page=1,this.count=5,this.max=1,this.displayIndex=0,this.pageSizes=[],this.createElements()};A.prototype.createElements=function(){var t;this.element=document.createElement("span"),this.element.classList.add("tabulator-paginator"),this.pagesElement=document.createElement("span"),this.pagesElement.classList.add("tabulator-pages"),t=document.createElement("button"),t.classList.add("tabulator-page"),t.setAttribute("type","button"),t.setAttribute("role","button"),t.setAttribute("aria-label",""),t.setAttribute("title",""),this.firstBut=t.cloneNode(!0),this.firstBut.setAttribute("data-page","first"),this.prevBut=t.cloneNode(!0),this.prevBut.setAttribute("data-page","prev"),this.nextBut=t.cloneNode(!0),this.nextBut.setAttribute("data-page","next"),this.lastBut=t.cloneNode(!0),this.lastBut.setAttribute("data-page","last"),this.table.options.paginationSizeSelector&&(this.pageSizeSelect=document.createElement("select"),this.pageSizeSelect.classList.add("tabulator-page-size"))},A.prototype.generatePageSizeSelectList=function(){var t=this,e=[];if(this.pageSizeSelect){if(Array.isArray(this.table.options.paginationSizeSelector))e=this.table.options.paginationSizeSelector,this.pageSizes=e,-1==this.pageSizes.indexOf(this.size)&&e.unshift(this.size);else if(-1==this.pageSizes.indexOf(this.size)){e=[];for(var o=1;o<5;o++)e.push(this.size*o);this.pageSizes=e}else e=this.pageSizes;for(;this.pageSizeSelect.firstChild;)this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);e.forEach(function(e){var o=document.createElement("option");o.value=e,o.innerHTML=e,t.pageSizeSelect.appendChild(o)}),this.pageSizeSelect.value=this.size}},A.prototype.initialize=function(t){var e,o=this;for(var i in o.table.options.paginationDataSent)o.paginationDataSentNames[i]=o.table.options.paginationDataSent[i];for(var n in o.table.options.paginationDataReceived)o.paginationDataReceivedNames[n]=o.table.options.paginationDataReceived[n];o.table.modules.localize.bind("pagination|first",function(t){o.firstBut.innerHTML=t}),o.table.modules.localize.bind("pagination|first_title",function(t){o.firstBut.setAttribute("aria-label",t),o.firstBut.setAttribute("title",t)}),o.table.modules.localize.bind("pagination|prev",function(t){o.prevBut.innerHTML=t}),o.table.modules.localize.bind("pagination|prev_title",function(t){o.prevBut.setAttribute("aria-label",t),o.prevBut.setAttribute("title",t)}),o.table.modules.localize.bind("pagination|next",function(t){o.nextBut.innerHTML=t}),o.table.modules.localize.bind("pagination|next_title",function(t){o.nextBut.setAttribute("aria-label",t),o.nextBut.setAttribute("title",t)}),o.table.modules.localize.bind("pagination|last",function(t){o.lastBut.innerHTML=t}),o.table.modules.localize.bind("pagination|last_title",function(t){o.lastBut.setAttribute("aria-label",t),o.lastBut.setAttribute("title",t)}),o.firstBut.addEventListener("click",function(){o.setPage(1)}),o.prevBut.addEventListener("click",function(){o.previousPage()}),o.nextBut.addEventListener("click",function(){o.nextPage().then(function(){}).catch(function(){})}),o.lastBut.addEventListener("click",function(){o.setPage(o.max)}),o.table.options.paginationElement&&(o.element=o.table.options.paginationElement),this.pageSizeSelect&&(e=document.createElement("label"),o.table.modules.localize.bind("pagination|page_size",function(t){o.pageSizeSelect.setAttribute("aria-label",t),o.pageSizeSelect.setAttribute("title",t),e.innerHTML=t}),o.element.appendChild(e),o.element.appendChild(o.pageSizeSelect),o.pageSizeSelect.addEventListener("change",function(t){o.setPageSize(o.pageSizeSelect.value),o.setPage(1).then(function(){}).catch(function(){})})),o.element.appendChild(o.firstBut),o.element.appendChild(o.prevBut),o.element.appendChild(o.pagesElement),o.element.appendChild(o.nextBut),o.element.appendChild(o.lastBut),o.table.options.paginationElement||t||o.table.footerManager.append(o.element,o),o.mode=o.table.options.pagination,o.size=o.table.options.paginationSize||Math.floor(o.table.rowManager.getElement().clientHeight/24),o.count=o.table.options.paginationButtonCount,o.generatePageSizeSelectList()},A.prototype.initializeProgressive=function(t){this.initialize(!0),this.mode="progressive_"+t,this.progressiveLoad=!0},A.prototype.setDisplayIndex=function(t){this.displayIndex=t},A.prototype.getDisplayIndex=function(){return this.displayIndex},A.prototype.setMaxRows=function(t){this.max=t?Math.ceil(t/this.size):1,this.page>this.max&&(this.page=this.max)},A.prototype.reset=function(t){return("local"==this.mode||t)&&(this.page=1),!0},A.prototype.setMaxPage=function(t){t=parseInt(t),this.max=t||1,this.page>this.max&&(this.page=this.max,this.trigger())},A.prototype.setPage=function(t){var e=this,o=this;return new Promise(function(i,n){t=parseInt(t),t>0&&t<=e.max?(e.page=t,e.trigger().then(function(){i()}).catch(function(){n()}),o.table.options.persistence&&o.table.modExists("persistence",!0)&&o.table.modules.persistence.config.page&&o.table.modules.persistence.save("page")):(console.warn("Pagination Error - Requested page is out of range of 1 - "+e.max+":",t),n())})},A.prototype.setPageToRow=function(t){var e=this;return new Promise(function(o,i){var n=e.table.rowManager.getDisplayRows(e.displayIndex-1),s=n.indexOf(t);if(s>-1){var r=Math.ceil((s+1)/e.size);e.setPage(r).then(function(){o()}).catch(function(){i()})}else console.warn("Pagination Error - Requested row is not visible"),i()})},A.prototype.setPageSize=function(t){t=parseInt(t),t>0&&(this.size=t),this.pageSizeSelect&&this.generatePageSizeSelectList(),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.page&&this.table.modules.persistence.save("page")},A.prototype._setPageButtons=function(){for(var t=this,e=Math.floor((this.count-1)/2),o=Math.ceil((this.count-1)/2),i=this.max-this.page+e+1<this.count?this.max-this.count+1:Math.max(this.page-e,1),n=this.page<=o?Math.min(this.count,this.max):Math.min(this.page+o,this.max);t.pagesElement.firstChild;)t.pagesElement.removeChild(t.pagesElement.firstChild);1==t.page?(t.firstBut.disabled=!0,t.prevBut.disabled=!0):(t.firstBut.disabled=!1,t.prevBut.disabled=!1),t.page==t.max?(t.lastBut.disabled=!0,t.nextBut.disabled=!0):(t.lastBut.disabled=!1,t.nextBut.disabled=!1);for(var s=i;s<=n;s++)s>0&&s<=t.max&&t.pagesElement.appendChild(t._generatePageButton(s));this.footerRedraw()},A.prototype._generatePageButton=function(t){var e=this,o=document.createElement("button");return o.classList.add("tabulator-page"),t==e.page&&o.classList.add("active"),o.setAttribute("type","button"),o.setAttribute("role","button"),o.setAttribute("aria-label","Show Page "+t),o.setAttribute("title","Show Page "+t),o.setAttribute("data-page",t),o.textContent=t,o.addEventListener("click",function(o){e.setPage(t)}),o},A.prototype.previousPage=function(){var t=this;return new Promise(function(e,o){t.page>1?(t.page--,t.trigger().then(function(){e()}).catch(function(){o()})):(console.warn("Pagination Error - Previous page would be less than page 1:",0),o())})},A.prototype.nextPage=function(){var t=this;return new Promise(function(e,o){t.page<t.max?(t.page++,t.trigger().then(function(){e()}).catch(function(){o()})):(t.progressiveLoad||console.warn("Pagination Error - Next page would be greater than maximum page of "+t.max+":",t.max+1),o())})},A.prototype.getPage=function(){return this.page},A.prototype.getPageMax=function(){return this.max},A.prototype.getPageSize=function(t){return this.size},A.prototype.getMode=function(){return this.mode},A.prototype.getRows=function(t){var e,o,i;if("local"==this.mode){e=[],o=this.size*(this.page-1),i=o+parseInt(this.size),this._setPageButtons();for(var n=o;n<i;n++)t[n]&&e.push(t[n]);return e}return this._setPageButtons(),t.slice(0)},A.prototype.trigger=function(){var t,e=this;return new Promise(function(o,i){switch(e.mode){case"local":t=e.table.rowManager.scrollLeft,e.table.rowManager.refreshActiveData("page"),e.table.rowManager.scrollHorizontal(t),e.table.options.pageLoaded.call(e.table,e.getPage()),o();break;case"remote":case"progressive_load":case"progressive_scroll":e.table.modules.ajax.blockActiveRequest(),e._getRemotePage().then(function(){o()}).catch(function(){i()});break;default:console.warn("Pagination Error - no such pagination mode:",e.mode),i()}})},A.prototype._getRemotePage=function(){var t,e,o=this,i=this;return new Promise(function(n,s){if(i.table.modExists("ajax",!0)||s(),t=u.prototype.helpers.deepClone(i.table.modules.ajax.getParams()||{}),e=i.table.modules.ajax.getParams(),e[o.paginationDataSentNames.page]=i.page,o.size&&(e[o.paginationDataSentNames.size]=o.size),o.table.options.ajaxSorting&&o.table.modExists("sort")){var r=i.table.modules.sort.getSort();r.forEach(function(t){delete t.column}),e[o.paginationDataSentNames.sorters]=r}if(o.table.options.ajaxFiltering&&o.table.modExists("filter")){var a=i.table.modules.filter.getFilters(!0,!0);e[o.paginationDataSentNames.filters]=a}i.table.modules.ajax.setParams(e),i.table.modules.ajax.sendRequest(o.progressiveLoad).then(function(t){i._parseRemoteData(t),n()}).catch(function(t){s()}),i.table.modules.ajax.setParams(t)})},A.prototype._parseRemoteData=function(t){var e,t,o,i=this;if(void 0===t[this.paginationDataReceivedNames.last_page]&&console.warn("Remote Pagination Error - Server response missing '"+this.paginationDataReceivedNames.last_page+"' property"),t[this.paginationDataReceivedNames.data])if(this.max=parseInt(t[this.paginationDataReceivedNames.last_page])||1,this.progressiveLoad)switch(this.mode){case"progressive_load":this.table.rowManager.addRows(t[this.paginationDataReceivedNames.data]),this.page<this.max&&setTimeout(function(){i.nextPage().then(function(){}).catch(function(){})},i.table.options.ajaxProgressiveLoadDelay);break;case"progressive_scroll":t=this.table.rowManager.getData().concat(t[this.paginationDataReceivedNames.data]),this.table.rowManager.setData(t,!0),o=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.element.clientHeight,i.table.rowManager.element.scrollHeight<=i.table.rowManager.element.clientHeight+o&&i.nextPage().then(function(){}).catch(function(){})}else e=this.table.rowManager.scrollLeft,this.table.rowManager.setData(t[this.paginationDataReceivedNames.data]),this.table.rowManager.scrollHorizontal(e),this.table.columnManager.scrollHorizontal(e),this.table.options.pageLoaded.call(this.table,this.getPage());else console.warn("Remote Pagination Error - Server response missing '"+this.paginationDataReceivedNames.data+"' property")},A.prototype.footerRedraw=function(){var t=this.table.footerManager.element;Math.ceil(t.clientWidth)-t.scrollWidth<0?this.pagesElement.style.display="none":(this.pagesElement.style.display="",Math.ceil(t.clientWidth)-t.scrollWidth<0&&(this.pagesElement.style.display="none"))},A.prototype.paginationDataSentNames={page:"page",size:"size",sorters:"sorters",filters:"filters"},A.prototype.paginationDataReceivedNames={current_page:"current_page",last_page:"last_page",data:"data"},u.prototype.registerModule("page",A);var P=function(t){this.table=t,this.mode="",this.id="",this.defWatcherBlock=!1,this.config={},this.readFunc=!1,this.writeFunc=!1};P.prototype.localStorageTest=function(){var t="_tabulator_test";try{return window.localStorage.setItem(t,t),window.localStorage.removeItem(t),!0}catch(t){return!1}},P.prototype.initialize=function(){var t,e=this.table.options.persistenceMode,o=this.table.options.persistenceID;this.mode=!0!==e?e:this.localStorageTest()?"local":"cookie",this.table.options.persistenceReaderFunc?"function"==typeof this.table.options.persistenceReaderFunc?this.readFunc=this.table.options.persistenceReaderFunc:this.readers[this.table.options.persistenceReaderFunc]?this.readFunc=this.readers[this.table.options.persistenceReaderFunc]:console.warn("Persistence Read Error - invalid reader set",this.table.options.persistenceReaderFunc):this.readers[this.mode]?this.readFunc=this.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:this.readers[this.table.options.persistenceWriterFunc]?this.writeFunc=this.readers[this.table.options.persistenceWriterFunc]:console.warn("Persistence Write Error - invalid reader set",this.table.options.persistenceWriterFunc):this.writers[this.mode]?this.writeFunc=this.writers[this.mode]:console.warn("Persistence Write Error - invalid writer set",this.mode),this.id="tabulator-"+(o||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&&(t=this.retreiveData("page"))&&(void 0===t.paginationSize||!0!==this.config.page&&!this.config.page.size||(this.table.options.paginationSize=t.paginationSize),void 0===t.paginationInitialPage||!0!==this.config.page&&!this.config.page.page||(this.table.options.paginationInitialPage=t.paginationInitialPage)),this.config.group&&(t=this.retreiveData("group"))&&(void 0===t.groupBy||!0!==this.config.group&&!this.config.group.groupBy||(this.table.options.groupBy=t.groupBy),void 0===t.groupStartOpen||!0!==this.config.group&&!this.config.group.groupStartOpen||(this.table.options.groupStartOpen=t.groupStartOpen),void 0===t.groupHeader||!0!==this.config.group&&!this.config.group.groupHeader||(this.table.options.groupHeader=t.groupHeader))},P.prototype.initializeColumn=function(t){var e,o,i=this;this.config.columns&&(this.defWatcherBlock=!0,e=t.getDefinition(),o=!0===this.config.columns?Object.keys(e):this.config.columns,o.forEach(function(t){var o=Object.getOwnPropertyDescriptor(e,t),n=e[t];o&&Object.defineProperty(e,t,{set:function(t){n=t,i.defWatcherBlock||i.save("columns"),o.set&&o.set(t)},get:function(){return o.get&&o.get(),n}})}),this.defWatcherBlock=!1)},P.prototype.load=function(t,e){var o=this.retreiveData(t);return e&&(o=o?this.mergeDefinition(e,o):e),o},P.prototype.retreiveData=function(t){return!!this.readFunc&&this.readFunc(this.id,t)},P.prototype.mergeDefinition=function(t,e){var o=this,i=[];return e=e||[],e.forEach(function(e,n){var s,r=o._findColumn(t,e);r&&(!0===o.config.columns?(s=Object.keys(r),s.push("width")):s=o.config.columns,s.forEach(function(t){void 0!==e[t]&&(r[t]=e[t])}),r.columns&&(r.columns=o.mergeDefinition(r.columns,e.columns)),i.push(r))}),t.forEach(function(t,n){o._findColumn(e,t)||(i.length>n?i.splice(n,0,t):i.push(t))}),i},P.prototype._findColumn=function(t,e){var o=e.columns?"group":e.field?"field":"object";return t.find(function(t){switch(o){case"group":return t.title===e.title&&t.columns.length===e.columns.length;case"field":return t.field===e.field;case"object":return t===e}})},P.prototype.save=function(t){var e={};switch(t){case"columns":e=this.parseColumns(this.table.columnManager.getColumns());break;case"filter":e=this.table.modules.filter.getFilters();break;case"sort":e=this.validateSorters(this.table.modules.sort.getSort());break;case"group":e=this.getGroupConfig();break;case"page":e=this.getPageConfig()}this.writeFunc&&this.writeFunc(this.id,t,e)},P.prototype.validateSorters=function(t){return t.forEach(function(t){t.column=t.field,delete t.field}),t},P.prototype.getGroupConfig=function(){
+return this.config.group&&((!0===this.config.group||this.config.group.groupBy)&&(data.groupBy=this.table.options.groupBy),(!0===this.config.group||this.config.group.groupStartOpen)&&(data.groupStartOpen=this.table.options.groupStartOpen),(!0===this.config.group||this.config.group.groupHeader)&&(data.groupHeader=this.table.options.groupHeader)),data},P.prototype.getPageConfig=function(){var t={};return this.config.page&&((!0===this.config.page||this.config.page.size)&&(t.paginationSize=this.table.modules.page.getPageSize()),(!0===this.config.page||this.config.page.page)&&(t.paginationInitialPage=this.table.modules.page.getPage())),t},P.prototype.parseColumns=function(t){var e=this,o=[];return t.forEach(function(t){var i,n={},s=t.getDefinition();t.isGroup?(n.title=s.title,n.columns=e.parseColumns(t.getColumns())):(n.field=t.getField(),!0===e.config.columns?(i=Object.keys(s),i.push("width")):i=e.config.columns,i.forEach(function(e){switch(e){case"width":n.width=t.getWidth();break;case"visible":n.visible=t.visible;break;default:n[e]=s[e]}})),o.push(n)}),o},P.prototype.readers={local:function(t,e){var o=localStorage.getItem(t+"-"+e);return!!o&&JSON.parse(o)},cookie:function(t,e){var o,i=document.cookie,n=t+"-"+e,s=i.indexOf(n+"=");return s>-1&&(i=i.substr(s),o=i.indexOf(";"),o>-1&&(i=i.substr(0,o)),data=i.replace(n+"=","")),!!data&&JSON.parse(data)}},P.prototype.writers={local:function(t,e,o){localStorage.setItem(t+"-"+e,JSON.stringify(o))},cookie:function(t,e,o){var i=new Date;i.setDate(i.getDate()+1e4),document.cookie=t+"_"+e+"="+JSON.stringify(o)+"; expires="+i.toUTCString()}},u.prototype.registerModule("persistence",P);var B=function(t){this.table=t,this.element=!1,this.manualBlock=!1};B.prototype.initialize=function(){window.addEventListener("beforeprint",this.replaceTable.bind(this)),window.addEventListener("afterprint",this.cleanup.bind(this))},B.prototype.replaceTable=function(){this.manualBlock||(this.element=document.createElement("div"),this.element.classList.add("tabulator-print-table"),this.element.appendChild(this.table.modules.htmlTableExport.genereateTable(this.table.options.printConfig,this.table.options.printCopyStyle,this.table.options.printVisibleRows,"print")),this.table.element.style.display="none",this.table.element.parentNode.insertBefore(this.element,this.table.element))},B.prototype.cleanup=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="")},B.prototype.printFullscreen=function(t,e,o){var i,n,s=window.scrollX,r=window.scrollY,a=document.createElement("div"),l=document.createElement("div"),c=this.table.modules.htmlTableExport.genereateTable(void 0!==o?o:this.table.options.printConfig,void 0!==e?e:this.table.options.printCopyStyle,t,"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"),i="function"==typeof this.table.options.printHeader?this.table.options.printHeader.call(this.table):this.table.options.printHeader,"string"==typeof i?a.innerHTML=i:a.appendChild(i),this.element.appendChild(a)),this.element.appendChild(c),this.table.options.printFooter&&(l.classList.add("tabulator-print-footer"),n="function"==typeof this.table.options.printFooter?this.table.options.printFooter.call(this.table):this.table.options.printFooter,"string"==typeof n?l.innerHTML=n:l.appendChild(n),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,c),window.print(),this.cleanup(),window.scrollTo(s,r),this.manualBlock=!1},u.prototype.registerModule("print",B);var N=function(t){this.table=t,this.data=!1,this.blocked=!1,this.origFuncs={},this.currentVersion=0};N.prototype.watchData=function(t){var e,o=this;this.currentVersion++,e=this.currentVersion,o.unwatchData(),o.data=t,o.origFuncs.push=t.push,Object.defineProperty(o.data,"push",{enumerable:!1,configurable:!0,value:function(){var i=Array.from(arguments);return o.blocked||e!==o.currentVersion||i.forEach(function(t){o.table.rowManager.addRowActual(t,!1)}),o.origFuncs.push.apply(t,arguments)}}),o.origFuncs.unshift=t.unshift,Object.defineProperty(o.data,"unshift",{enumerable:!1,configurable:!0,value:function(){var i=Array.from(arguments);return o.blocked||e!==o.currentVersion||i.forEach(function(t){o.table.rowManager.addRowActual(t,!0)}),o.origFuncs.unshift.apply(t,arguments)}}),o.origFuncs.shift=t.shift,Object.defineProperty(o.data,"shift",{enumerable:!1,configurable:!0,value:function(){var i;return o.blocked||e!==o.currentVersion||o.data.length&&(i=o.table.rowManager.getRowFromDataObject(o.data[0]))&&i.deleteActual(),o.origFuncs.shift.call(t)}}),o.origFuncs.pop=t.pop,Object.defineProperty(o.data,"pop",{enumerable:!1,configurable:!0,value:function(){var i;return o.blocked||e!==o.currentVersion||o.data.length&&(i=o.table.rowManager.getRowFromDataObject(o.data[o.data.length-1]))&&i.deleteActual(),o.origFuncs.pop.call(t)}}),o.origFuncs.splice=t.splice,Object.defineProperty(o.data,"splice",{enumerable:!1,configurable:!0,value:function(){var i,n=Array.from(arguments),s=n[0]<0?t.length+n[0]:n[0],r=n[1],a=!!n[2]&&n.slice(2);if(!o.blocked&&e===o.currentVersion){if(a&&(i=!!t[s]&&o.table.rowManager.getRowFromDataObject(t[s]),i?a.forEach(function(t){o.table.rowManager.addRowActual(t,!0,i,!0)}):(a=a.slice().reverse(),a.forEach(function(t){o.table.rowManager.addRowActual(t,!0,!1,!0)}))),0!==r){var l=t.slice(s,void 0===n[1]?n[1]:s+r);l.forEach(function(t,e){var i=o.table.rowManager.getRowFromDataObject(t);i&&i.deleteActual(e!==l.length-1)})}(a||0!==r)&&o.table.rowManager.reRenderInPosition()}return o.origFuncs.splice.apply(t,arguments)}})},N.prototype.unwatchData=function(){if(!1!==this.data)for(var t in this.origFuncs)Object.defineProperty(this.data,t,{enumerable:!0,configurable:!0,writable:!0,value:this.origFuncs.key})},N.prototype.watchRow=function(t){var e=t.getData();this.blocked=!0;for(var o in e)this.watchKey(t,e,o);this.blocked=!1},N.prototype.watchKey=function(t,e,o){var i=this,n=Object.getOwnPropertyDescriptor(e,o),s=e[o],r=this.currentVersion;Object.defineProperty(e,o,{set:function(e){if(s=e,!i.blocked&&r===i.currentVersion){var a={};a[o]=e,t.updateData(a)}n.set&&n.set(e)},get:function(){return n.get&&n.get(),s}})},N.prototype.unwatchRow=function(t){var e=t.getData();for(var o in e)Object.defineProperty(e,o,{value:e[o]})},N.prototype.block=function(){this.blocked=!0},N.prototype.unblock=function(){this.blocked=!1},u.prototype.registerModule("reactiveData",N);var I=function(t){this.table=t,this.startColumn=!1,this.startX=!1,this.startWidth=!1,this.handle=null,this.prevHandle=null};I.prototype.initializeColumn=function(t,e,o){var i=this,n=!1,s=this.table.options.resizableColumns;if("header"===t&&(n="textarea"==e.definition.formatter||e.definition.variableHeight,e.modules.resize={variableHeight:n}),!0===s||s==t){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(t){t.stopPropagation()});var l=function(t){var o=e.getLastColumn();o&&i._checkResizability(o)&&(i.startColumn=e,i._mouseDown(t,o,r))};r.addEventListener("mousedown",l),r.addEventListener("touchstart",l,{passive:!0}),r.addEventListener("dblclick",function(t){var o=e.getLastColumn();o&&i._checkResizability(o)&&(t.stopPropagation(),o.reinitializeWidth(!0))}),a.addEventListener("click",function(t){t.stopPropagation()});var c=function(t){var o,n,s;(o=e.getFirstColumn())&&(n=i.table.columnManager.findColumnIndex(o),(s=n>0&&i.table.columnManager.getColumnByIndex(n-1))&&i._checkResizability(s)&&(i.startColumn=e,i._mouseDown(t,s,a)))};a.addEventListener("mousedown",c),a.addEventListener("touchstart",c,{passive:!0}),a.addEventListener("dblclick",function(t){var o,n,s;(o=e.getFirstColumn())&&(n=i.table.columnManager.findColumnIndex(o),(s=n>0&&i.table.columnManager.getColumnByIndex(n-1))&&i._checkResizability(s)&&(t.stopPropagation(),s.reinitializeWidth(!0)))}),o.appendChild(r),o.appendChild(a)}},I.prototype._checkResizability=function(t){return void 0!==t.definition.resizable?t.definition.resizable:this.table.options.resizableColumns},I.prototype._mouseDown=function(t,e,o){function i(t){e.setWidth(s.startWidth+((void 0===t.screenX?t.touches[0].screenX:t.screenX)-s.startX)),!s.table.browserSlow&&e.modules.resize&&e.modules.resize.variableHeight&&e.checkCellHeights()}function n(t){s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!1),s.table.browserSlow&&e.modules.resize&&e.modules.resize.variableHeight&&e.checkCellHeights(),document.body.removeEventListener("mouseup",n),document.body.removeEventListener("mousemove",i),o.removeEventListener("touchmove",i),o.removeEventListener("touchend",n),s.table.element.classList.remove("tabulator-block-select"),s.table.options.persistence&&s.table.modExists("persistence",!0)&&s.table.modules.persistence.config.columns&&s.table.modules.persistence.save("columns"),s.table.options.columnResized.call(s.table,e.getComponent())}var s=this;s.table.element.classList.add("tabulator-block-select"),t.stopPropagation(),s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!0),s.startX=void 0===t.screenX?t.touches[0].screenX:t.screenX,s.startWidth=e.getWidth(),document.body.addEventListener("mousemove",i),document.body.addEventListener("mouseup",n),o.addEventListener("touchmove",i,{passive:!0}),o.addEventListener("touchend",n)},u.prototype.registerModule("resizeColumns",I);var O=function(t){this.table=t,this.startColumn=!1,this.startY=!1,this.startHeight=!1,this.handle=null,this.prevHandle=null};O.prototype.initializeRow=function(t){var e=this,o=t.getElement(),i=document.createElement("div");i.className="tabulator-row-resize-handle";var n=document.createElement("div");n.className="tabulator-row-resize-handle prev",i.addEventListener("click",function(t){t.stopPropagation()});var s=function(o){e.startRow=t,e._mouseDown(o,t,i)};i.addEventListener("mousedown",s),i.addEventListener("touchstart",s,{passive:!0}),n.addEventListener("click",function(t){t.stopPropagation()});var r=function(o){var i=e.table.rowManager.prevDisplayRow(t);i&&(e.startRow=i,e._mouseDown(o,i,n))};n.addEventListener("mousedown",r),n.addEventListener("touchstart",r,{passive:!0}),o.appendChild(i),o.appendChild(n)},O.prototype._mouseDown=function(t,e,o){function i(t){e.setHeight(s.startHeight+((void 0===t.screenY?t.touches[0].screenY:t.screenY)-s.startY))}function n(t){document.body.removeEventListener("mouseup",i),document.body.removeEventListener("mousemove",i),o.removeEventListener("touchmove",i),o.removeEventListener("touchend",n),s.table.element.classList.remove("tabulator-block-select"),s.table.options.rowResized.call(this.table,e.getComponent())}var s=this;s.table.element.classList.add("tabulator-block-select"),t.stopPropagation(),s.startY=void 0===t.screenY?t.touches[0].screenY:t.screenY,s.startHeight=e.getHeight(),document.body.addEventListener("mousemove",i),document.body.addEventListener("mouseup",n),o.addEventListener("touchmove",i,{passive:!0}),o.addEventListener("touchend",n)},u.prototype.registerModule("resizeRows",O);var j=function(t){this.table=t,this.binding=!1,this.observer=!1};j.prototype.initialize=function(t){var e=this.table;"undefined"!=typeof ResizeObserver&&"virtual"===e.rowManager.getRenderMode()?(this.observer=new ResizeObserver(function(t){(!e.browserMobile||browserMobile&&!e.modules.edit.currentCell)&&e.redraw()}),this.observer.observe(e.element)):(this.binding=function(){(!e.browserMobile||browserMobile&&!e.modules.edit.currentCell)&&e.redraw()},window.addEventListener("resize",this.binding))},j.prototype.clearBindings=function(t){this.binding&&window.removeEventListener("resize",this.binding),this.observer&&this.observer.unobserve(this.table.element)},u.prototype.registerModule("resizeTable",j);var G=function(t){this.table=t,this.columns=[],this.hiddenColumns=[],this.mode="",this.index=0,this.collapseFormatter=[],this.collapseStartOpen=!0,this.collapseHandleColumn=!1};G.prototype.initialize=function(){var t=this,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(o,i){o.modules.responsive&&o.modules.responsive.order&&o.modules.responsive.visible&&(o.modules.responsive.index=i,e.push(o),o.visible||"collapse"!==t.mode||t.hiddenColumns.push(o))}),e=e.reverse(),e=e.sort(function(t,e){return e.modules.responsive.order-t.modules.responsive.order||e.modules.responsive.index-t.modules.responsive.index}),this.columns=e,"collapse"===this.mode&&this.generateCollapsedContent();for(var o=this.table.columnManager.columnsByIndex,i=Array.isArray(o),n=0,o=i?o:o[Symbol.iterator]();;){var s;if(i){if(n>=o.length)break;s=o[n++]}else{if(n=o.next(),n.done)break;s=n.value}var r=s;if("responsiveCollapse"==r.definition.formatter){this.collapseHandleColumn=r;break}}this.collapseHandleColumn&&(this.hiddenColumns.length?this.collapseHandleColumn.show():this.collapseHandleColumn.hide())},G.prototype.initializeColumn=function(t){var e=t.getDefinition();t.modules.responsive={order:void 0===e.responsive?1:e.responsive,visible:!1!==e.visible}},G.prototype.initializeRow=function(t){var e;"calc"!==t.type&&(e=document.createElement("div"),e.classList.add("tabulator-responsive-collapse"),t.modules.responsiveLayout={element:e,open:this.collapseStartOpen},this.collapseStartOpen||(e.style.display="none"))},G.prototype.layoutRow=function(t){var e=t.getElement();t.modules.responsiveLayout&&(e.appendChild(t.modules.responsiveLayout.element),this.generateCollapsedRowContent(t))},G.prototype.updateColumnVisibility=function(t,e){t.modules.responsive&&(t.modules.responsive.visible=e,this.initialize())},G.prototype.hideColumn=function(t){var e=this.hiddenColumns.length;t.hide(!1,!0),"collapse"===this.mode&&(this.hiddenColumns.unshift(t),this.generateCollapsedContent(),this.collapseHandleColumn&&!e&&this.collapseHandleColumn.show())},G.prototype.showColumn=function(t){var e;t.show(!1,!0),t.setWidth(t.getWidth()),"collapse"===this.mode&&(e=this.hiddenColumns.indexOf(t),e>-1&&this.hiddenColumns.splice(e,1),this.generateCollapsedContent(),this.collapseHandleColumn&&!this.hiddenColumns.length&&this.collapseHandleColumn.hide())},G.prototype.update=function(){for(var t=this,e=!0;e;){var o="fitColumns"==t.table.modules.layout.getMode()?t.table.columnManager.getFlexBaseWidth():t.table.columnManager.getWidth(),i=(t.table.options.headerVisible?t.table.columnManager.element.clientWidth:t.table.element.clientWidth)-o;if(i<0){var n=t.columns[t.index];n?(t.hideColumn(n),t.index++):e=!1}else{var s=t.columns[t.index-1];s&&i>0&&i>=s.getWidth()?(t.showColumn(s),t.index--):e=!1}t.table.rowManager.activeRowsCount||t.table.rowManager.renderEmptyScroll()}},G.prototype.generateCollapsedContent=function(){var t=this;this.table.rowManager.getDisplayRows().forEach(function(e){t.generateCollapsedRowContent(e)})},G.prototype.generateCollapsedRowContent=function(t){var e,o;if(t.modules.responsiveLayout){for(e=t.modules.responsiveLayout.element;e.firstChild;)e.removeChild(e.firstChild);o=this.collapseFormatter(this.generateCollapsedRowData(t)),o&&e.appendChild(o)}},G.prototype.generateCollapsedRowData=function(t){var e,o=this,i=t.getData(),n=[];return this.hiddenColumns.forEach(function(s){var r=s.getFieldValue(i);s.definition.title&&s.field&&(s.modules.format&&o.table.options.responsiveLayoutCollapseUseFormatters?(e={value:!1,data:{},getValue:function(){return r},getData:function(){return i},getElement:function(){return document.createElement("div")},getRow:function(){return t.getComponent()},getColumn:function(){return s.getComponent()}},n.push({title:s.definition.title,value:s.modules.format.formatter.call(o.table.modules.format,e,s.modules.format.params)})):n.push({title:s.definition.title,value:r}))}),n},G.prototype.formatCollapsedData=function(t){var e=document.createElement("table"),o="";return t.forEach(function(t){var e=document.createElement("div");t.value instanceof Node&&(e.appendChild(t.value),t.value=e.innerHTML),o+="<tr><td><strong>"+t.title+"</strong></td><td>"+t.value+"</td></tr>"}),e.innerHTML=o,Object.keys(t).length?e:""},u.prototype.registerModule("responsiveLayout",G);var V=function(t){this.table=t,this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],this.headerCheckboxElement=null};V.prototype.clearSelectionData=function(t){this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],t||this._rowSelectionChanged()},V.prototype.initializeRow=function(t){var e=this,o=t.getElement(),i=function t(){setTimeout(function(){e.selecting=!1},50),document.body.removeEventListener("mouseup",t)};t.modules.select={selected:!1},e.table.options.selectableCheck.call(this.table,t.getComponent())?(o.classList.add("tabulator-selectable"),o.classList.remove("tabulator-unselectable"),e.table.options.selectable&&"highlight"!=e.table.options.selectable&&("click"===e.table.options.selectableRangeMode?o.addEventListener("click",function(o){if(o.shiftKey){e.table._clearSelection(),e.lastClickedRow=e.lastClickedRow||t;var i=e.table.rowManager.getDisplayRowIndex(e.lastClickedRow),n=e.table.rowManager.getDisplayRowIndex(t),s=i<=n?i:n,r=i>=n?i:n,a=e.table.rowManager.getDisplayRows().slice(0),l=a.splice(s,r-s+1);o.ctrlKey||o.metaKey?(l.forEach(function(o){o!==e.lastClickedRow&&(!0===e.table.options.selectable||e.isRowSelected(t)?e.toggleRow(o):e.selectedRows.length<e.table.options.selectable&&e.toggleRow(o))}),e.lastClickedRow=t):(e.deselectRows(),!0!==e.table.options.selectable&&l.length>e.table.options.selectable&&(l=l.slice(0,e.table.options.selectable)),e.selectRows(l)),e.table._clearSelection()}else o.ctrlKey||o.metaKey?(e.toggleRow(t),e.lastClickedRow=t):(e.deselectRows(),e.selectRows(t),e.lastClickedRow=t)}):(o.addEventListener("click",function(o){e.table.modExists("edit")&&e.table.modules.edit.getCurrentCell()||e.table._clearSelection(),e.selecting||e.toggleRow(t)}),o.addEventListener("mousedown",function(o){if(o.shiftKey)return e.table._clearSelection(),e.selecting=!0,e.selectPrev=[],document.body.addEventListener("mouseup",i),document.body.addEventListener("keyup",i),e.toggleRow(t),!1}),o.addEventListener("mouseenter",function(o){e.selecting&&(e.table._clearSelection(),e.toggleRow(t),e.selectPrev[1]==t&&e.toggleRow(e.selectPrev[0]))}),o.addEventListener("mouseout",function(o){e.selecting&&(e.table._clearSelection(),e.selectPrev.unshift(t))})))):(o.classList.add("tabulator-unselectable"),o.classList.remove("tabulator-selectable"))},V.prototype.toggleRow=function(t){this.table.options.selectableCheck.call(this.table,t.getComponent())&&(t.modules.select&&t.modules.select.selected?this._deselectRow(t):this._selectRow(t))},V.prototype.selectRows=function(t){var e,o=this;switch(void 0===t?"undefined":_typeof(t)){case"undefined":this.table.rowManager.rows.forEach(function(t){o._selectRow(t,!0,!0)}),this._rowSelectionChanged();break;case"string":e=self.table.rowManager.findRow(t),e?this._selectRow(e,!0,!0):this.table.rowManager.getRows(t).forEach(function(t){o._selectRow(t,!0,!0)}),this._rowSelectionChanged();break;default:Array.isArray(t)?(t.forEach(function(t){o._selectRow(t,!0,!0)}),this._rowSelectionChanged()):this._selectRow(t,!1,!0)}},V.prototype._selectRow=function(t,e,o){if(!isNaN(this.table.options.selectable)&&!0!==this.table.options.selectable&&!o&&this.selectedRows.length>=this.table.options.selectable){if(!this.table.options.selectableRollingSelection)return!1;this._deselectRow(this.selectedRows[0])}var i=this.table.rowManager.findRow(t);i?-1==this.selectedRows.indexOf(i)&&(i.modules.select||(i.modules.select={}),i.modules.select.selected=!0,i.modules.select.checkboxEl&&(i.modules.select.checkboxEl.checked=!0),i.getElement().classList.add("tabulator-selected"),this.selectedRows.push(i),e||(this.table.options.rowSelected.call(this.table,i.getComponent()),this._rowSelectionChanged())):e||console.warn("Selection Error - No such row found, ignoring selection:"+t)},V.prototype.isRowSelected=function(t){return-1!==this.selectedRows.indexOf(t)},V.prototype.deselectRows=function(t){var e,o=this;if(void 0===t){e=o.selectedRows.length;for(var i=0;i<e;i++)o._deselectRow(o.selectedRows[0],!0);o._rowSelectionChanged()}else Array.isArray(t)?(t.forEach(function(t){o._deselectRow(t,!0)}),o._rowSelectionChanged()):o._deselectRow(t)},V.prototype._deselectRow=function(t,e){var o,i=this,n=i.table.rowManager.findRow(t);n?(o=i.selectedRows.findIndex(function(t){return t==n}))>-1&&(n.modules.select||(n.modules.select={}),n.modules.select.selected=!1,n.modules.select.checkboxEl&&(n.modules.select.checkboxEl.checked=!1),n.getElement().classList.remove("tabulator-selected"),i.selectedRows.splice(o,1),e||(i.table.options.rowDeselected.call(this.table,n.getComponent()),i._rowSelectionChanged())):e||console.warn("Deselection Error - No such row found, ignoring selection:"+t)},V.prototype.getSelectedData=function(){var t=[];return this.selectedRows.forEach(function(e){t.push(e.getData())}),t},V.prototype.getSelectedRows=function(){var t=[];return this.selectedRows.forEach(function(e){t.push(e.getComponent())}),t},V.prototype._rowSelectionChanged=function(){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)),this.table.options.rowSelectionChanged.call(this.table,this.getSelectedData(),this.getSelectedRows())},V.prototype.registerRowSelectCheckbox=function(t,e){t._row.modules.select||(t._row.modules.select={}),t._row.modules.select.checkboxEl=e},V.prototype.registerHeaderSelectCheckbox=function(t){this.headerCheckboxElement=t},u.prototype.registerModule("selectRow",V);var W=function(t){this.table=t,this.sortList=[],this.changed=!1};W.prototype.initializeColumn=function(t,e){var o,i,n=this,s=!1;switch(_typeof(t.definition.sorter)){case"string":n.sorters[t.definition.sorter]?s=n.sorters[t.definition.sorter]:console.warn("Sort Error - No such sorter found: ",t.definition.sorter);break;case"function":s=t.definition.sorter}t.modules.sort={sorter:s,dir:"none",params:t.definition.sorterParams||{},startingDir:t.definition.headerSortStartingDir||"asc",tristate:void 0!==t.definition.headerSortTristate?t.definition.headerSortTristate:this.table.options.headerSortTristate},(void 0===t.definition.headerSort?!1!==this.table.options.headerSort:!1!==t.definition.headerSort)&&(o=t.getElement(),o.classList.add("tabulator-sortable"),i=document.createElement("div"),i.classList.add("tabulator-arrow"),e.appendChild(i),o.addEventListener("click",function(e){var o="",i=[],s=!1;if(t.modules.sort){if(t.modules.sort.tristate)o="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":o="desc";break;case"desc":o="asc";break;default:o=t.modules.sort.startingDir}n.table.options.columnHeaderSortMulti&&(e.shiftKey||e.ctrlKey)?(i=n.getSort(),s=i.findIndex(function(e){return e.field===t.getField()}),s>-1?(i[s].dir=o,s!=i.length-1&&(s=i.splice(s,1)[0],"none"!=o&&i.push(s))):"none"!=o&&i.push({column:t,dir:o}),n.setSort(i)):"none"==o?n.clear():n.setSort(t,o),n.table.rowManager.sorterRefresh(!n.sortList.length)}}))},W.prototype.hasChanged=function(){var t=this.changed;return this.changed=!1,t},W.prototype.getSort=function(){var t=this,e=[];return t.sortList.forEach(function(t){t.column&&e.push({column:t.column.getComponent(),field:t.column.getField(),dir:t.dir})}),e},W.prototype.setSort=function(t,e){var o=this,i=[];Array.isArray(t)||(t=[{column:t,dir:e}]),t.forEach(function(t){var e;e=o.table.columnManager.findColumn(t.column),e?(t.column=e,i.push(t),o.changed=!0):console.warn("Sort Warning - Sort field does not exist and is being ignored: ",t.column)}),o.sortList=i,this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.sort&&this.table.modules.persistence.save("sort")},W.prototype.clear=function(){this.setSort([])},W.prototype.findSorter=function(t){var e,o=this.table.rowManager.activeRows[0],i="string";if(o&&(o=o.getData(),t.getField()))switch(e=t.getFieldValue(o),void 0===e?"undefined":_typeof(e)){case"undefined":i="string";break;case"boolean":i="boolean";break;default:isNaN(e)||""===e?e.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)&&(i="alphanum"):i="number"}return this.sorters[i]},W.prototype.sort=function(t){var e,o=this;e=this.table.options.sortOrderReverse?o.sortList.slice().reverse():o.sortList,o.table.options.dataSorting&&o.table.options.dataSorting.call(o.table,o.getSort()),o.clearColumnHeaders(),o.table.options.ajaxSorting?e.forEach(function(t,e){o.setColumnHeader(t.column,t.dir)}):e.forEach(function(i,n){i.column&&i.column.modules.sort&&(i.column.modules.sort.sorter||(i.column.modules.sort.sorter=o.findSorter(i.column)),o._sortItem(t,i.column,i.dir,e,n)),o.setColumnHeader(i.column,i.dir)}),o.table.options.dataSorted&&o.table.options.dataSorted.call(o.table,o.getSort(),o.table.rowManager.getComponents("active"))},W.prototype.clearColumnHeaders=function(){this.table.columnManager.getRealColumns().forEach(function(t){t.modules.sort&&(t.modules.sort.dir="none",t.getElement().setAttribute("aria-sort","none"))})},W.prototype.setColumnHeader=function(t,e){t.modules.sort.dir=e,t.getElement().setAttribute("aria-sort",e)},W.prototype._sortItem=function(t,e,o,i,n){var s=this,r="function"==typeof e.modules.sort.params?e.modules.sort.params(e.getComponent(),o):e.modules.sort.params;t.sort(function(t,a){var l=s._sortRow(t,a,e,o,r);if(0===l&&n)for(var c=n-1;c>=0&&0===(l=s._sortRow(t,a,i[c].column,i[c].dir,r));c--);return l})},W.prototype._sortRow=function(t,e,o,i,n){var s,r,a="asc"==i?t:e,l="asc"==i?e:t;return t=o.getFieldValue(a.getData()),e=o.getFieldValue(l.getData()),t=void 0!==t?t:"",e=void 0!==e?e:"",s=a.getComponent(),r=l.getComponent(),o.modules.sort.sorter.call(this,t,e,s,r,o.getComponent(),i,n)},W.prototype.sorters={number:function(t,e,o,i,n,s,r){var a=r.alignEmptyValues,l=r.decimalSeparator||".",c=r.thousandSeparator||",",u=0;if(t=parseFloat(String(t).split(c).join("").split(l).join(".")),e=parseFloat(String(e).split(c).join("").split(l).join(".")),isNaN(t))u=isNaN(e)?0:-1;else{if(!isNaN(e))return t-e;u=1}return("top"===a&&"desc"===s||"bottom"===a&&"asc"===s)&&(u*=-1),u},string:function(t,e,o,i,n,s,r){var a,l=r.alignEmptyValues,c=0;if(t){if(e){switch(_typeof(r.locale)){case"boolean":r.locale&&(a=this.table.modules.localize.getLocale());break;case"string":a=r.locale}return String(t).toLowerCase().localeCompare(String(e).toLowerCase(),a)}c=1}else c=e?-1:0;return("top"===l&&"desc"===s||"bottom"===l&&"asc"===s)&&(c*=-1),c},date:function(t,e,o,i,n,s,r){return r.format||(r.format="DD/MM/YYYY"),this.sorters.datetime.call(this,t,e,o,i,n,s,r)},time:function(t,e,o,i,n,s,r){return r.format||(r.format="hh:mm"),this.sorters.datetime.call(this,t,e,o,i,n,s,r)},datetime:function(t,e,o,i,n,s,r){var a=r.format||"DD/MM/YYYY hh:mm:ss",l=r.alignEmptyValues,c=0;if("undefined"!=typeof moment){if(t=moment(t,a),e=moment(e,a),t.isValid()){if(e.isValid())return t-e;c=1}else c=e.isValid()?-1:0;return("top"===l&&"desc"===s||"bottom"===l&&"asc"===s)&&(c*=-1),c}console.error("Sort Error - 'datetime' sorter is dependant on moment.js")},boolean:function(t,e,o,i,n,s,r){return(!0===t||"true"===t||"True"===t||1===t?1:0)-(!0===e||"true"===e||"True"===e||1===e?1:0)},array:function(t,e,o,i,n,s,r){function a(t){switch(u){case"length":return t.length;case"sum":return t.reduce(function(t,e){return t+e});case"max":return Math.max.apply(null,t);case"min":return Math.min.apply(null,t);case"avg":return t.reduce(function(t,e){return t+e})/t.length}}var l=0,c=0,u=r.type||"length",d=r.alignEmptyValues,h=0;if(Array.isArray(t)){if(Array.isArray(e))return l=t?a(t):0,c=e?a(e):0,l-c;d=1}else d=Array.isArray(e)?-1:0;return("top"===d&&"desc"===s||"bottom"===d&&"asc"===s)&&(h*=-1),h},exists:function(t,e,o,i,n,s,r){return(void 0===t?0:1)-(void 0===e?0:1)},alphanum:function(t,e,o,i,n,s,r){var a,l,c,u,d,h=0,p=/(\d+)|(\D+)/g,m=/\d/,f=r.alignEmptyValues,g=0;if(t||0===t){if(e||0===e){if(isFinite(t)&&isFinite(e))return t-e;if(a=String(t).toLowerCase(),l=String(e).toLowerCase(),a===l)return 0;if(!m.test(a)||!m.test(l))return a>l?1:-1;for(a=a.match(p),l=l.match(p),d=a.length>l.length?l.length:a.length;h<d;)if(c=a[h],u=l[h++],c!==u)return isFinite(c)&&isFinite(u)?("0"===c.charAt(0)&&(c="."+c),"0"===u.charAt(0)&&(u="."+u),c-u):c>u?1:-1;return a.length>l.length}g=1}else g=e||0===e?-1:0;return("top"===f&&"desc"===s||"bottom"===f&&"asc"===s)&&(g*=-1),g}},u.prototype.registerModule("sort",W);var U=function(t){this.table=t};return U.prototype.initializeColumn=function(t){var e,o=this,i=[];t.definition.validator&&(Array.isArray(t.definition.validator)?t.definition.validator.forEach(function(t){(e=o._extractValidator(t))&&i.push(e)}):(e=this._extractValidator(t.definition.validator))&&i.push(e),t.modules.validate=!!i.length&&i)},U.prototype._extractValidator=function(t){var e,o,i;switch(void 0===t?"undefined":_typeof(t)){case"string":return i=t.indexOf(":"),i>-1?(e=t.substring(0,i),o=t.substring(i+1)):e=t,this._buildValidator(e,o);case"function":return this._buildValidator(t);case"object":return this._buildValidator(t.type,t.parameters)}},U.prototype._buildValidator=function(t,e){var o="function"==typeof t?t:this.validators[t];return o?{type:"function"==typeof t?"function":t,func:o,params:e}:(console.warn("Validator Setup Error - No matching validator found:",t),!1)},U.prototype.validate=function(t,e,o){var i=this,n=[];return t&&t.forEach(function(t){t.func.call(i,e,o,t.params)||n.push({type:t.type,parameters:t.params})}),!n.length||n},U.prototype.validators={integer:function(t,e,o){return""===e||null===e||void 0===e||"number"==typeof(e=Number(e))&&isFinite(e)&&Math.floor(e)===e},float:function(t,e,o){return""===e||null===e||void 0===e||"number"==typeof(e=Number(e))&&isFinite(e)&&e%1!=0},numeric:function(t,e,o){return""===e||null===e||void 0===e||!isNaN(e)},string:function(t,e,o){return""===e||null===e||void 0===e||isNaN(e)},max:function(t,e,o){return""===e||null===e||void 0===e||parseFloat(e)<=o},min:function(t,e,o){return""===e||null===e||void 0===e||parseFloat(e)>=o},minLength:function(t,e,o){return""===e||null===e||void 0===e||String(e).length>=o},maxLength:function(t,e,o){return""===e||null===e||void 0===e||String(e).length<=o},in:function(t,e,o){return""===e||null===e||void 0===e||("string"==typeof o&&(o=o.split("|")),""===e||o.indexOf(e)>-1)},regex:function(t,e,o){return""===e||null===e||void 0===e||new RegExp(o).test(e)},unique:function(t,e,o){if(""===e||null===e||void 0===e)return!0;var i=!0,n=t.getData(),s=t.getColumn()._getSelf();return this.table.rowManager.rows.forEach(function(t){var o=t.getData();o!==n&&e==s.getFieldValue(o)&&(i=!1)}),i},required:function(t,e,o){return""!==e&&null!==e&&void 0!==e}},u.prototype.registerModule("validate",U),u});
\ No newline at end of file
index c679e82..5756eb1 100644 (file)
@@ -1,4 +1,4 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
 
 'use strict';
 
@@ -424,6 +424,8 @@ ColumnManager.prototype._addColumn = function (definition, before, nextToColumn)
 
                        this.headersElement.appendChild(column.getElement());
                }
+
+               column.columnRendered();
        }
 
        return column;
@@ -475,7 +477,7 @@ ColumnManager.prototype._verticalAlignHeaders = function () {
 
        self.columns.forEach(function (column) {
 
-               column.verticalAlign(self.table.options.columnVertAlign, minHeight);
+               column.verticalAlign(self.table.options.columnHeaderVertAlign, minHeight);
        });
 
        self.rowManager.adjustTableSize();
@@ -698,7 +700,7 @@ ColumnManager.prototype.moveColumnActual = function (from, to, after) {
                this.table.options.columnMoved.call(this.table, from.getComponent(), this.table.columnManager.getComponents());
        }
 
-       if (this.table.options.persistentLayout && this.table.modExists("persistence", true)) {
+       if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.columns) {
 
                this.table.modules.persistence.save("columns");
        }
@@ -884,31 +886,37 @@ ColumnManager.prototype.getFlexBaseWidth = function () {
 };
 
 ColumnManager.prototype.addColumn = function (definition, before, nextToColumn) {
+       var _this3 = this;
 
-       var column = this._addColumn(definition, before, nextToColumn);
+       return new Promise(function (resolve, reject) {
 
-       this._reIndexColumns();
+               var column = _this3._addColumn(definition, before, nextToColumn);
 
-       if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+               _this3._reIndexColumns();
 
-               this.table.modules.responsiveLayout.initialize();
-       }
+               if (_this3.table.options.responsiveLayout && _this3.table.modExists("responsiveLayout", true)) {
 
-       if (this.table.modExists("columnCalcs")) {
+                       _this3.table.modules.responsiveLayout.initialize();
+               }
 
-               this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
-       }
+               if (_this3.table.modExists("columnCalcs")) {
 
-       this.redraw();
+                       _this3.table.modules.columnCalcs.recalc(_this3.table.rowManager.activeRows);
+               }
 
-       if (this.table.modules.layout.getMode() != "fitColumns") {
+               _this3.redraw();
 
-               column.reinitializeWidth();
-       }
+               if (_this3.table.modules.layout.getMode() != "fitColumns") {
 
-       this._verticalAlignHeaders();
+                       column.reinitializeWidth();
+               }
 
-       this.table.rowManager.reinitialize();
+               _this3._verticalAlignHeaders();
+
+               _this3.table.rowManager.reinitialize();
+
+               resolve(column);
+       });
 };
 
 //remove column from system
@@ -967,7 +975,7 @@ ColumnManager.prototype.redraw = function (force) {
                this.table.rowManager.reinitialize();
        }
 
-       if (this.table.modules.layout.getMode() == "fitColumns") {
+       if (["fitColumns", "fitDataStretch"].indexOf(this.table.modules.layout.getMode()) > -1) {
 
                this.table.modules.layout.layout();
        } else {
@@ -996,7 +1004,7 @@ ColumnManager.prototype.redraw = function (force) {
 
        if (force) {
 
-               if (this.table.options.persistentLayout && this.table.modExists("persistence", true)) {
+               if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.columns) {
 
                        this.table.modules.persistence.save("columns");
                }
@@ -1071,7 +1079,7 @@ ColumnComponent.prototype.toggle = function () {
 };
 
 ColumnComponent.prototype.delete = function () {
-       this._column.delete();
+       return this._column.delete();
 };
 
 ColumnComponent.prototype.getSubColumns = function () {
@@ -1142,6 +1150,10 @@ ColumnComponent.prototype.getPrevColumn = function () {
        return prevCol ? prevCol.getComponent() : false;
 };
 
+ColumnComponent.prototype.updateDefinition = function (updates) {
+       return this._column.updateDefinition(updates);
+};
+
 var Column = function Column(def, parent) {
        var self = this;
 
@@ -1164,6 +1176,8 @@ var Column = function Column(def, parent) {
        this.getFieldValue = "";
        this.setFieldValue = "";
 
+       this.titleFormatterRendered = false;
+
        this.setField(this.definition.field);
 
        if (this.table.options.invalidOptionWarnings) {
@@ -1216,6 +1230,8 @@ var Column = function Column(def, parent) {
        }
 
        this._buildHeader();
+
+       this.bindModuleColumns();
 };
 
 Column.prototype.createElement = function () {
@@ -1237,11 +1253,11 @@ Column.prototype.createGroupElement = function () {
 };
 
 Column.prototype.checkDefinition = function () {
-       var _this3 = this;
+       var _this4 = this;
 
        Object.keys(this.definition).forEach(function (key) {
-               if (_this3.defaultOptionList.indexOf(key) === -1) {
-                       console.warn("Invalid column definition option in '" + (_this3.field || _this3.definition.title) + "' column:", key);
+               if (_this4.defaultOptionList.indexOf(key) === -1) {
+                       console.warn("Invalid column definition option in '" + (_this4.field || _this4.definition.title) + "' column:", key);
                }
        });
 };
@@ -1371,6 +1387,11 @@ Column.prototype._buildHeader = function () {
                self.table.modules.columnCalcs.initializeColumn(self);
        }
 
+       //handle persistence
+       if (self.table.modExists("persistence") && self.table.modules.persistence.config.columns) {
+               self.table.modules.persistence.initializeColumn(self);
+       }
+
        //update header tooltip on mouse enter
        self.element.addEventListener("mouseenter", function (e) {
                self.setTooltip();
@@ -1657,12 +1678,18 @@ Column.prototype._buildColumnHeaderTitle = function () {
 };
 
 Column.prototype._formatColumnHeaderTitle = function (el, title) {
-       var formatter, contents, params, mockCell;
+       var _this5 = this;
+
+       var formatter, contents, params, mockCell, onRendered;
 
        if (this.definition.titleFormatter && this.table.modExists("format")) {
 
                formatter = this.table.modules.format.getFormatter(this.definition.titleFormatter);
 
+               onRendered = function onRendered(callback) {
+                       _this5.titleFormatterRendered = callback;
+               };
+
                mockCell = {
                        getValue: function getValue() {
                                return title;
@@ -1676,7 +1703,7 @@ Column.prototype._formatColumnHeaderTitle = function (el, title) {
 
                params = typeof params === "function" ? params() : params;
 
-               contents = formatter.call(this.table.modules.format, mockCell, params);
+               contents = formatter.call(this.table.modules.format, mockCell, params, onRendered);
 
                switch (typeof contents === 'undefined' ? 'undefined' : _typeof(contents)) {
                        case "object":
@@ -1701,10 +1728,20 @@ Column.prototype._formatColumnHeaderTitle = function (el, title) {
 
 //build header element for column group
 Column.prototype._buildGroupHeader = function () {
+       var _this6 = this;
+
        this.element.classList.add("tabulator-col-group");
        this.element.setAttribute("role", "columngroup");
        this.element.setAttribute("aria-title", this.definition.title);
 
+       //asign additional css classes to column header
+       if (this.definition.cssClass) {
+               var classeNames = this.definition.cssClass.split(" ");
+               classeNames.forEach(function (className) {
+                       _this6.element.classList.add(className);
+               });
+       }
+
        this.element.appendChild(this.groupElement);
 };
 
@@ -1812,6 +1849,13 @@ Column.prototype.clearVerticalAlign = function () {
        });
 };
 
+Column.prototype.bindModuleColumns = function () {
+       //check if rownum formatter is being used on a column
+       if (this.definition.formatter == "rownum") {
+               this.table.rowManager.rowNumColumn = this;
+       }
+};
+
 //// Retreive Column Information ////
 
 //return column header element
@@ -1929,7 +1973,7 @@ Column.prototype.show = function (silent, responsiveToggle) {
 
                this.table.columnManager._verticalAlignHeaders();
 
-               if (this.table.options.persistentLayout && this.table.modExists("responsiveLayout", true)) {
+               if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.columns) {
                        this.table.modules.persistence.save("columns");
                }
 
@@ -1964,7 +2008,7 @@ Column.prototype.hide = function (silent, responsiveToggle) {
                        cell.hide();
                });
 
-               if (this.table.options.persistentLayout && this.table.modExists("persistence", true)) {
+               if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.columns) {
                        this.table.modules.persistence.save("columns");
                }
 
@@ -2073,21 +2117,34 @@ Column.prototype.setMinWidth = function (minWidth) {
 };
 
 Column.prototype.delete = function () {
-       if (this.isGroup) {
-               this.columns.forEach(function (column) {
-                       column.delete();
-               });
-       }
+       var _this7 = this;
 
-       var cellCount = this.cells.length;
+       return new Promise(function (resolve, reject) {
 
-       for (var i = 0; i < cellCount; i++) {
-               this.cells[0].delete();
-       }
+               if (_this7.isGroup) {
+                       _this7.columns.forEach(function (column) {
+                               column.delete();
+                       });
+               }
 
-       this.element.parentNode.removeChild(this.element);
+               var cellCount = _this7.cells.length;
+
+               for (var i = 0; i < cellCount; i++) {
+                       _this7.cells[0].delete();
+               }
+
+               _this7.element.parentNode.removeChild(_this7.element);
+
+               _this7.table.columnManager.deregisterColumn(_this7);
+
+               resolve();
+       });
+};
 
-       this.table.columnManager.deregisterColumn(this);
+Column.prototype.columnRendered = function () {
+       if (this.titleFormatterRendered) {
+               this.titleFormatterRendered();
+       }
 };
 
 //////////////// Cell Management /////////////////
@@ -2173,6 +2230,37 @@ Column.prototype.fitToData = function () {
        }
 };
 
+Column.prototype.updateDefinition = function (updates) {
+       var _this8 = this;
+
+       return new Promise(function (resolve, reject) {
+               var definition;
+
+               if (!_this8.isGroup) {
+                       definition = Object.assign({}, _this8.getDefinition());
+                       definition = Object.assign(definition, updates);
+
+                       _this8.table.columnManager.addColumn(definition, false, _this8).then(function (column) {
+
+                               if (definition.field == _this8.field) {
+                                       _this8.field = false; //cleair field name to prevent deletion of duplicate column from arrays
+                               }
+
+                               _this8.delete().then(function () {
+                                       resolve(column.getComponent());
+                               }).catch(function (err) {
+                                       reject(err);
+                               });
+                       }).catch(function (err) {
+                               reject(err);
+                       });
+               } else {
+                       console.warn("Column Update Error - The updateDefintion function is only available on columns, not column groups");
+                       reject("Column Update Error - The updateDefintion function is only available on columns, not column groups");
+               }
+       });
+};
+
 Column.prototype.deleteCell = function (cell) {
        var index = this.cells.indexOf(cell);
 
@@ -2231,6 +2319,12 @@ var RowManager = function RowManager(table) {
 
        this.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed
        this.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed
+
+       this.rowNumColumn = false; //hold column component for row number column
+
+       this.redrawBlock = false; //prevent redraws to allow multiple data manipulations becore continuing
+       this.redrawBlockRestoreConfig = false; //store latest redraw function calls for when redraw is needed
+       this.redrawBlockRederInPosition = false; //store latest redraw function calls for when redraw is needed
 };
 
 //////////////// Setup Functions /////////////////
@@ -2301,6 +2395,8 @@ RowManager.prototype.initialize = function () {
                        if (self.table.modExists("columnCalcs")) {
                                self.table.modules.columnCalcs.scrollHorizontal(left);
                        }
+
+                       self.table.options.scrollHorizontal(left);
                }
 
                self.scrollLeft = left;
@@ -2321,6 +2417,8 @@ RowManager.prototype.initialize = function () {
                                if (self.table.options.ajaxProgressiveLoad == "scroll") {
                                        self.table.modules.ajax.nextPage(self.element.scrollHeight - self.element.clientHeight - top);
                                }
+
+                               self.table.options.scrollVertical(top);
                        } else {
                                self.scrollTop = top;
                        }
@@ -2382,7 +2480,7 @@ RowManager.prototype.getRowFromPosition = function (position, active) {
 };
 
 RowManager.prototype.scrollToRow = function (row, position, ifVisible) {
-       var _this4 = this;
+       var _this9 = this;
 
        var rowIndex = this.getDisplayRows().indexOf(row),
            rowEl = row.getElement(),
@@ -2393,21 +2491,21 @@ RowManager.prototype.scrollToRow = function (row, position, ifVisible) {
                if (rowIndex > -1) {
 
                        if (typeof position === "undefined") {
-                               position = _this4.table.options.scrollToRowPosition;
+                               position = _this9.table.options.scrollToRowPosition;
                        }
 
                        if (typeof ifVisible === "undefined") {
-                               ifVisible = _this4.table.options.scrollToRowIfVisible;
+                               ifVisible = _this9.table.options.scrollToRowIfVisible;
                        }
 
                        if (position === "nearest") {
-                               switch (_this4.renderMode) {
+                               switch (_this9.renderMode) {
                                        case "classic":
                                                rowTop = Tabulator.prototype.helpers.elOffset(rowEl).top;
-                                               position = Math.abs(_this4.element.scrollTop - rowTop) > Math.abs(_this4.element.scrollTop + _this4.element.clientHeight - rowTop) ? "bottom" : "top";
+                                               position = Math.abs(_this9.element.scrollTop - rowTop) > Math.abs(_this9.element.scrollTop + _this9.element.clientHeight - rowTop) ? "bottom" : "top";
                                                break;
                                        case "virtual":
-                                               position = Math.abs(_this4.vDomTop - rowIndex) > Math.abs(_this4.vDomBottom - rowIndex) ? "bottom" : "top";
+                                               position = Math.abs(_this9.vDomTop - rowIndex) > Math.abs(_this9.vDomBottom - rowIndex) ? "bottom" : "top";
                                                break;
                                }
                        }
@@ -2415,21 +2513,21 @@ RowManager.prototype.scrollToRow = function (row, position, ifVisible) {
                        //check row visibility
                        if (!ifVisible) {
                                if (Tabulator.prototype.helpers.elVisible(rowEl)) {
-                                       offset = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this4.element).top;
+                                       offset = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this9.element).top;
 
-                                       if (offset > 0 && offset < _this4.element.clientHeight - rowEl.offsetHeight) {
+                                       if (offset > 0 && offset < _this9.element.clientHeight - rowEl.offsetHeight) {
                                                return false;
                                        }
                                }
                        }
 
                        //scroll to row
-                       switch (_this4.renderMode) {
+                       switch (_this9.renderMode) {
                                case "classic":
-                                       _this4.element.scrollTop = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this4.element).top + _this4.element.scrollTop;
+                                       _this9.element.scrollTop = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this9.element).top + _this9.element.scrollTop;
                                        break;
                                case "virtual":
-                                       _this4._virtualRenderFill(rowIndex, true);
+                                       _this9._virtualRenderFill(rowIndex, true);
                                        break;
                        }
 
@@ -2438,20 +2536,20 @@ RowManager.prototype.scrollToRow = function (row, position, ifVisible) {
                                case "middle":
                                case "center":
 
-                                       if (_this4.element.scrollHeight - _this4.element.scrollTop == _this4.element.clientHeight) {
-                                               _this4.element.scrollTop = _this4.element.scrollTop + (rowEl.offsetTop - _this4.element.scrollTop) - (_this4.element.scrollHeight - rowEl.offsetTop) / 2;
+                                       if (_this9.element.scrollHeight - _this9.element.scrollTop == _this9.element.clientHeight) {
+                                               _this9.element.scrollTop = _this9.element.scrollTop + (rowEl.offsetTop - _this9.element.scrollTop) - (_this9.element.scrollHeight - rowEl.offsetTop) / 2;
                                        } else {
-                                               _this4.element.scrollTop = _this4.element.scrollTop - _this4.element.clientHeight / 2;
+                                               _this9.element.scrollTop = _this9.element.scrollTop - _this9.element.clientHeight / 2;
                                        }
 
                                        break;
 
                                case "bottom":
 
-                                       if (_this4.element.scrollHeight - _this4.element.scrollTop == _this4.element.clientHeight) {
-                                               _this4.element.scrollTop = _this4.element.scrollTop - (_this4.element.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;
+                                       if (_this9.element.scrollHeight - _this9.element.scrollTop == _this9.element.clientHeight) {
+                                               _this9.element.scrollTop = _this9.element.scrollTop - (_this9.element.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;
                                        } else {
-                                               _this4.element.scrollTop = _this4.element.scrollTop - _this4.element.clientHeight + rowEl.offsetHeight;
+                                               _this9.element.scrollTop = _this9.element.scrollTop - _this9.element.clientHeight + rowEl.offsetHeight;
                                        }
 
                                        break;
@@ -2468,25 +2566,25 @@ RowManager.prototype.scrollToRow = function (row, position, ifVisible) {
 ////////////////// Data Handling //////////////////
 
 RowManager.prototype.setData = function (data, renderInPosition) {
-       var _this5 = this;
+       var _this10 = this;
 
        var self = this;
 
        return new Promise(function (resolve, reject) {
-               if (renderInPosition && _this5.getDisplayRows().length) {
+               if (renderInPosition && _this10.getDisplayRows().length) {
                        if (self.table.options.pagination) {
                                self._setDataActual(data, true);
                        } else {
-                               _this5.reRenderInPosition(function () {
+                               _this10.reRenderInPosition(function () {
                                        self._setDataActual(data);
                                });
                        }
                } else {
-                       if (_this5.table.options.autoColumns) {
-                               _this5.table.columnManager.generateColumnsFromRowData(data);
+                       if (_this10.table.options.autoColumns) {
+                               _this10.table.columnManager.generateColumnsFromRowData(data);
                        }
-                       _this5.resetScroll();
-                       _this5._setDataActual(data);
+                       _this10.resetScroll();
+                       _this10._setDataActual(data);
                }
 
                resolve();
@@ -2597,14 +2695,14 @@ RowManager.prototype.addRow = function (data, pos, index, blockRedraw) {
 
 //add multiple rows
 RowManager.prototype.addRows = function (data, pos, index) {
-       var _this6 = this;
+       var _this11 = this;
 
        var self = this,
            length = 0,
            rows = [];
 
        return new Promise(function (resolve, reject) {
-               pos = _this6.findAddRowPos(pos);
+               pos = _this11.findAddRowPos(pos);
 
                if (!Array.isArray(data)) {
                        data = [data];
@@ -2621,17 +2719,17 @@ RowManager.prototype.addRows = function (data, pos, index) {
                        rows.push(row);
                });
 
-               if (_this6.table.options.groupBy && _this6.table.modExists("groupRows")) {
-                       _this6.table.modules.groupRows.updateGroupRows(true);
-               } else if (_this6.table.options.pagination && _this6.table.modExists("page")) {
-                       _this6.refreshActiveData(false, false, true);
+               if (_this11.table.options.groupBy && _this11.table.modExists("groupRows")) {
+                       _this11.table.modules.groupRows.updateGroupRows(true);
+               } else if (_this11.table.options.pagination && _this11.table.modExists("page")) {
+                       _this11.refreshActiveData(false, false, true);
                } else {
-                       _this6.reRenderInPosition();
+                       _this11.reRenderInPosition();
                }
 
                //recalc column calculations if present
-               if (_this6.table.modExists("columnCalcs")) {
-                       _this6.table.modules.columnCalcs.recalc(_this6.table.rowManager.activeRows);
+               if (_this11.table.modExists("columnCalcs")) {
+                       _this11.table.modules.columnCalcs.recalc(_this11.table.rowManager.activeRows);
                }
 
                resolve(rows);
@@ -2895,10 +2993,8 @@ RowManager.prototype.findRowIndex = function (row, list) {
 };
 
 RowManager.prototype.getData = function (active, transform) {
-       var self = this,
-           output = [];
-
-       var rows = active ? self.activeRows : self.rows;
+       var output = [],
+           rows = this.getRows(active);
 
        rows.forEach(function (row) {
                output.push(row.getData(transform || "data"));
@@ -2908,10 +3004,8 @@ RowManager.prototype.getData = function (active, transform) {
 };
 
 RowManager.prototype.getComponents = function (active) {
-       var self = this,
-           output = [];
-
-       var rows = active ? self.activeRows : self.rows;
+       var output = [],
+           rows = this.getRows(active);
 
        rows.forEach(function (row) {
                output.push(row.getComponent());
@@ -2921,7 +3015,9 @@ RowManager.prototype.getComponents = function (active) {
 };
 
 RowManager.prototype.getDataCount = function (active) {
-       return active ? this.activeRows.length : this.rows.length;
+       var rows = this.getRows(active);
+
+       return rows.length;
 };
 
 RowManager.prototype._genRemoteRequest = function () {
@@ -3018,155 +3114,183 @@ RowManager.prototype.scrollHorizontal = function (left) {
 
 //set active data set
 RowManager.prototype.refreshActiveData = function (stage, skipStage, renderInPosition) {
+       var _this12 = this;
+
        var self = this,
            table = this.table,
+           cascadeOrder = ["all", "filter", "sort", "display", "freeze", "group", "tree", "page"],
            displayIndex;
 
-       if (self.table.modExists("edit")) {
-               self.table.modules.edit.cancelEdit();
-       }
+       if (this.redrawBlock) {
 
-       if (!stage) {
-               stage = "all";
-       }
+               if (!this.redrawBlockRestoreConfig || cascadeOrder.indexOf(stage) < cascadeOrder.indexOf(this.redrawBlockRestoreConfig.stage)) {
+                       this.redrawBlockRestoreConfig = {
+                               stage: stage,
+                               skipStage: skipStage,
+                               renderInPosition: renderInPosition
+                       };
+               }
 
-       if (table.options.selectable && !table.options.selectablePersistence && table.modExists("selectRow")) {
-               table.modules.selectRow.deselectRows();
-       }
+               return;
+       } else {
+
+               if (self.table.modExists("edit")) {
+                       self.table.modules.edit.cancelEdit();
+               }
 
-       //cascade through data refresh stages
-       switch (stage) {
-               case "all":
+               if (!stage) {
+                       stage = "all";
+               }
+
+               if (table.options.selectable && !table.options.selectablePersistence && table.modExists("selectRow")) {
+                       table.modules.selectRow.deselectRows();
+               }
 
-               case "filter":
-                       if (!skipStage) {
-                               if (table.modExists("filter")) {
-                                       self.setActiveRows(table.modules.filter.filter(self.rows));
+               //cascade through data refresh stages
+               switch (stage) {
+                       case "all":
+
+                       case "filter":
+                               if (!skipStage) {
+                                       if (table.modExists("filter")) {
+                                               self.setActiveRows(table.modules.filter.filter(self.rows));
+                                       } else {
+                                               self.setActiveRows(self.rows.slice(0));
+                                       }
                                } else {
-                                       self.setActiveRows(self.rows.slice(0));
+                                       skipStage = false;
                                }
-                       } else {
-                               skipStage = false;
-                       }
 
-               case "sort":
-                       if (!skipStage) {
-                               if (table.modExists("sort")) {
-                                       table.modules.sort.sort(this.activeRows);
+                       case "sort":
+                               if (!skipStage) {
+                                       if (table.modExists("sort")) {
+                                               table.modules.sort.sort(this.activeRows);
+                                       }
+                               } else {
+                                       skipStage = false;
                                }
-                       } else {
-                               skipStage = false;
-                       }
 
-               //generic stage to allow for pipeline trigger after the data manipulation stage
-               case "display":
-                       this.resetDisplayRows();
+                               //regenerate row numbers for row number formatter if in use
+                               if (this.rowNumColumn) {
+                                       this.activeRows.forEach(function (row) {
+                                               var cell = row.getCell(_this12.rowNumColumn);
 
-               case "freeze":
-                       if (!skipStage) {
-                               if (this.table.modExists("frozenRows")) {
-                                       if (table.modules.frozenRows.isFrozen()) {
-                                               if (!table.modules.frozenRows.getDisplayIndex()) {
-                                                       table.modules.frozenRows.setDisplayIndex(this.getNextDisplayIndex());
+                                               if (cell) {
+                                                       cell._generateContents();
                                                }
+                                       });
+                               }
 
-                                               displayIndex = table.modules.frozenRows.getDisplayIndex();
+                       //generic stage to allow for pipeline trigger after the data manipulation stage
+                       case "display":
+                               this.resetDisplayRows();
 
-                                               displayIndex = self.setDisplayRows(table.modules.frozenRows.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
+                       case "freeze":
+                               if (!skipStage) {
+                                       if (this.table.modExists("frozenRows")) {
+                                               if (table.modules.frozenRows.isFrozen()) {
+                                                       if (!table.modules.frozenRows.getDisplayIndex()) {
+                                                               table.modules.frozenRows.setDisplayIndex(this.getNextDisplayIndex());
+                                                       }
 
-                                               if (displayIndex !== true) {
-                                                       table.modules.frozenRows.setDisplayIndex(displayIndex);
+                                                       displayIndex = table.modules.frozenRows.getDisplayIndex();
+
+                                                       displayIndex = self.setDisplayRows(table.modules.frozenRows.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
+
+                                                       if (displayIndex !== true) {
+                                                               table.modules.frozenRows.setDisplayIndex(displayIndex);
+                                                       }
                                                }
                                        }
+                               } else {
+                                       skipStage = false;
                                }
-                       } else {
-                               skipStage = false;
-                       }
 
-               case "group":
-                       if (!skipStage) {
-                               if (table.options.groupBy && table.modExists("groupRows")) {
+                       case "group":
+                               if (!skipStage) {
+                                       if (table.options.groupBy && table.modExists("groupRows")) {
 
-                                       if (!table.modules.groupRows.getDisplayIndex()) {
-                                               table.modules.groupRows.setDisplayIndex(this.getNextDisplayIndex());
-                                       }
+                                               if (!table.modules.groupRows.getDisplayIndex()) {
+                                                       table.modules.groupRows.setDisplayIndex(this.getNextDisplayIndex());
+                                               }
 
-                                       displayIndex = table.modules.groupRows.getDisplayIndex();
+                                               displayIndex = table.modules.groupRows.getDisplayIndex();
 
-                                       displayIndex = self.setDisplayRows(table.modules.groupRows.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
+                                               displayIndex = self.setDisplayRows(table.modules.groupRows.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
 
-                                       if (displayIndex !== true) {
-                                               table.modules.groupRows.setDisplayIndex(displayIndex);
+                                               if (displayIndex !== true) {
+                                                       table.modules.groupRows.setDisplayIndex(displayIndex);
+                                               }
                                        }
+                               } else {
+                                       skipStage = false;
                                }
-                       } else {
-                               skipStage = false;
-                       }
 
-               case "tree":
+                       case "tree":
 
-                       if (!skipStage) {
-                               if (table.options.dataTree && table.modExists("dataTree")) {
-                                       if (!table.modules.dataTree.getDisplayIndex()) {
-                                               table.modules.dataTree.setDisplayIndex(this.getNextDisplayIndex());
-                                       }
+                               if (!skipStage) {
+                                       if (table.options.dataTree && table.modExists("dataTree")) {
+                                               if (!table.modules.dataTree.getDisplayIndex()) {
+                                                       table.modules.dataTree.setDisplayIndex(this.getNextDisplayIndex());
+                                               }
 
-                                       displayIndex = table.modules.dataTree.getDisplayIndex();
+                                               displayIndex = table.modules.dataTree.getDisplayIndex();
 
-                                       displayIndex = self.setDisplayRows(table.modules.dataTree.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
+                                               displayIndex = self.setDisplayRows(table.modules.dataTree.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
 
-                                       if (displayIndex !== true) {
-                                               table.modules.dataTree.setDisplayIndex(displayIndex);
+                                               if (displayIndex !== true) {
+                                                       table.modules.dataTree.setDisplayIndex(displayIndex);
+                                               }
                                        }
+                               } else {
+                                       skipStage = false;
                                }
-                       } else {
-                               skipStage = false;
-                       }
 
-                       if (table.options.pagination && table.modExists("page") && !renderInPosition) {
-                               if (table.modules.page.getMode() == "local") {
-                                       table.modules.page.reset();
+                               if (table.options.pagination && table.modExists("page") && !renderInPosition) {
+                                       if (table.modules.page.getMode() == "local") {
+                                               table.modules.page.reset();
+                                       }
                                }
-                       }
 
-               case "page":
-                       if (!skipStage) {
-                               if (table.options.pagination && table.modExists("page")) {
+                       case "page":
+                               if (!skipStage) {
+                                       if (table.options.pagination && table.modExists("page")) {
 
-                                       if (!table.modules.page.getDisplayIndex()) {
-                                               table.modules.page.setDisplayIndex(this.getNextDisplayIndex());
-                                       }
+                                               if (!table.modules.page.getDisplayIndex()) {
+                                                       table.modules.page.setDisplayIndex(this.getNextDisplayIndex());
+                                               }
 
-                                       displayIndex = table.modules.page.getDisplayIndex();
+                                               displayIndex = table.modules.page.getDisplayIndex();
 
-                                       if (table.modules.page.getMode() == "local") {
-                                               table.modules.page.setMaxRows(this.getDisplayRows(displayIndex - 1).length);
-                                       }
+                                               if (table.modules.page.getMode() == "local") {
+                                                       table.modules.page.setMaxRows(this.getDisplayRows(displayIndex - 1).length);
+                                               }
 
-                                       displayIndex = self.setDisplayRows(table.modules.page.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
+                                               displayIndex = self.setDisplayRows(table.modules.page.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
 
-                                       if (displayIndex !== true) {
-                                               table.modules.page.setDisplayIndex(displayIndex);
+                                               if (displayIndex !== true) {
+                                                       table.modules.page.setDisplayIndex(displayIndex);
+                                               }
                                        }
+                               } else {
+                                       skipStage = false;
                                }
-                       } else {
-                               skipStage = false;
-                       }
-       }
+               }
 
-       if (Tabulator.prototype.helpers.elVisible(self.element)) {
-               if (renderInPosition) {
-                       self.reRenderInPosition();
-               } else {
-                       self.renderTable();
-                       if (table.options.layoutColumnsOnNewData) {
-                               self.table.columnManager.redraw(true);
+               if (Tabulator.prototype.helpers.elVisible(self.element)) {
+                       if (renderInPosition) {
+                               self.reRenderInPosition();
+                       } else {
+                               self.renderTable();
+                               if (table.options.layoutColumnsOnNewData) {
+                                       self.table.columnManager.redraw(true);
+                               }
                        }
                }
-       }
 
-       if (table.modExists("columnCalcs")) {
-               table.modules.columnCalcs.recalc(this.activeRows);
+               if (table.modExists("columnCalcs")) {
+                       table.modules.columnCalcs.recalc(this.activeRows);
+               }
        }
 };
 
@@ -3239,15 +3363,19 @@ RowManager.prototype.getVisibleRows = function (viewable) {
        if (viewable) {
 
                this.getDisplayRows();
-
                for (var i = this.vDomTop; i <= this.vDomBottom; i++) {
-
                        if (rows[i]) {
                                if (!topFound) {
                                        if (topEdge - rows[i].getElement().offsetTop >= 0) {
                                                topRow = i;
                                        } else {
                                                topFound = true;
+
+                                               if (bottomEdge - rows[i].getElement().offsetTop >= 0) {
+                                                       bottomRow = i;
+                                               } else {
+                                                       break;
+                                               }
                                        }
                                } else {
                                        if (bottomEdge - rows[i].getElement().offsetTop >= 0) {
@@ -3274,8 +3402,23 @@ RowManager.prototype.displayRowIterator = function (callback) {
 };
 
 //return only actual rows (not group headers etc)
-RowManager.prototype.getRows = function () {
-       return this.rows;
+RowManager.prototype.getRows = function (active) {
+       var rows;
+
+       switch (active) {
+               case "active":
+                       rows = this.activeRows;
+                       break;
+
+               case "visible":
+                       rows = this.getVisibleRows(true);
+                       break;
+
+               default:
+                       rows = this.rows;
+       }
+
+       return rows;
 };
 
 ///////////////// Table Rendering /////////////////
@@ -3284,35 +3427,43 @@ RowManager.prototype.getRows = function () {
 RowManager.prototype.reRenderInPosition = function (callback) {
        if (this.getRenderMode() == "virtual") {
 
-               var scrollTop = this.element.scrollTop;
-               var topRow = false;
-               var topOffset = false;
+               if (this.redrawBlock) {
+                       if (callback) {
+                               callback();
+                       } else {
+                               this.redrawBlockRederInPosition = true;
+                       }
+               } else {
+                       var scrollTop = this.element.scrollTop;
+                       var topRow = false;
+                       var topOffset = false;
 
-               var left = this.scrollLeft;
+                       var left = this.scrollLeft;
 
-               var rows = this.getDisplayRows();
+                       var rows = this.getDisplayRows();
 
-               for (var i = this.vDomTop; i <= this.vDomBottom; i++) {
+                       for (var i = this.vDomTop; i <= this.vDomBottom; i++) {
 
-                       if (rows[i]) {
-                               var diff = scrollTop - rows[i].getElement().offsetTop;
+                               if (rows[i]) {
+                                       var diff = scrollTop - rows[i].getElement().offsetTop;
 
-                               if (topOffset === false || Math.abs(diff) < topOffset) {
-                                       topOffset = diff;
-                                       topRow = i;
-                               } else {
-                                       break;
+                                       if (topOffset === false || Math.abs(diff) < topOffset) {
+                                               topOffset = diff;
+                                               topRow = i;
+                                       } else {
+                                               break;
+                                       }
                                }
                        }
-               }
 
-               if (callback) {
-                       callback();
-               }
+                       if (callback) {
+                               callback();
+                       }
 
-               this._virtualRenderFill(topRow === false ? this.displayRowsCount - 1 : topRow, true, topOffset || 0);
+                       this._virtualRenderFill(topRow === false ? this.displayRowsCount - 1 : topRow, true, topOffset || 0);
 
-               this.scrollHorizontal(left);
+                       this.scrollHorizontal(left);
+               }
        } else {
                this.renderTable();
 
@@ -3814,6 +3965,29 @@ RowManager.prototype.reinitialize = function () {
        });
 };
 
+//prevent table from being redrawn
+RowManager.prototype.blockRedraw = function () {
+       this.redrawBlock = true;
+       this.redrawBlockRestoreConfig = false;
+};
+
+//restore table redrawing
+RowManager.prototype.restoreRedraw = function () {
+       this.redrawBlock = false;
+
+       if (this.redrawBlockRestoreConfig) {
+               this.refreshActiveData(this.redrawBlockRestoreConfig.stage, this.redrawBlockRestoreConfig.skipStage, this.redrawBlockRestoreConfig.renderInPosition);
+
+               this.redrawBlockRestoreConfig = false;
+       } else {
+               if (this.redrawBlockRederInPosition) {
+                       this.reRenderInPosition();
+               }
+       }
+
+       this.redrawBlockRederInPosition = false;
+};
+
 //redraw table
 RowManager.prototype.redraw = function (force) {
        var pos = 0,
@@ -4010,10 +4184,12 @@ RowComponent.prototype.getPrevRow = function () {
 };
 
 var Row = function Row(data, parent) {
+       var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "row";
+
        this.table = parent.table;
        this.parent = parent;
        this.data = {};
-       this.type = "row"; //type of element
+       this.type = type; //type of element
        this.element = this.createElement();
        this.modules = {}; //hold module variables;
        this.cells = [];
@@ -4068,6 +4244,11 @@ Row.prototype.generateElement = function () {
                self.table.modules.dataTree.initializeRow(this);
        }
 
+       //setup column colapse container
+       if (self.table.options.responsiveLayout === "collapse" && self.table.modExists("responsiveLayout")) {
+               self.table.modules.responsiveLayout.initializeRow(this);
+       }
+
        //handle row click events
        if (self.table.options.rowClick) {
                self.element.addEventListener("click", function (e) {
@@ -4213,7 +4394,7 @@ Row.prototype.initialize = function (force) {
                        self.table.modules.dataTree.layoutRow(this);
                }
 
-               //setup movable rows
+               //setup column colapse container
                if (self.table.options.responsiveLayout === "collapse" && self.table.modExists("responsiveLayout")) {
                        self.table.modules.responsiveLayout.layoutRow(this);
                }
@@ -4349,7 +4530,7 @@ Row.prototype.deleteCell = function (cell) {
 
 Row.prototype.setData = function (data) {
        if (this.table.modExists("mutator")) {
-               data = this.table.modules.mutator.transformRow(data, "data");
+               data = this.table.modules.mutator.transformRow(data, "data", data);
        }
 
        this.data = data;
@@ -4361,10 +4542,10 @@ Row.prototype.setData = function (data) {
 
 //update the rows data
 Row.prototype.updateData = function (data) {
-       var _this7 = this;
+       var _this13 = this;
 
-       var self = this,
-           visible = Tabulator.prototype.helpers.elVisible(this.element);
+       var visible = Tabulator.prototype.helpers.elVisible(this.element),
+           tempData = {};
 
        return new Promise(function (resolve, reject) {
 
@@ -4372,31 +4553,35 @@ Row.prototype.updateData = function (data) {
                        data = JSON.parse(data);
                }
 
-               if (_this7.table.options.reactiveData && _this7.table.modExists("reactiveData", true)) {
-                       _this7.table.modules.reactiveData.block();
+               if (_this13.table.options.reactiveData && _this13.table.modExists("reactiveData", true)) {
+                       _this13.table.modules.reactiveData.block();
                }
 
                //mutate incomming data if needed
-               if (self.table.modExists("mutator")) {
-                       data = self.table.modules.mutator.transformRow(data, "data", true);
+               if (_this13.table.modExists("mutator")) {
+
+                       tempData = Object.assign(tempData, _this13.data);
+                       tempData = Object.assign(tempData, data);
+
+                       data = _this13.table.modules.mutator.transformRow(tempData, "data", data);
                }
 
                //set data
                for (var attrname in data) {
-                       self.data[attrname] = data[attrname];
+                       _this13.data[attrname] = data[attrname];
                }
 
-               if (_this7.table.options.reactiveData && _this7.table.modExists("reactiveData", true)) {
-                       _this7.table.modules.reactiveData.unblock();
+               if (_this13.table.options.reactiveData && _this13.table.modExists("reactiveData", true)) {
+                       _this13.table.modules.reactiveData.unblock();
                }
 
                //update affected cells only
                for (var attrname in data) {
 
-                       var columns = _this7.table.columnManager.getColumnsByFieldRoot(attrname);
+                       var columns = _this13.table.columnManager.getColumnsByFieldRoot(attrname);
 
                        columns.forEach(function (column) {
-                               var cell = _this7.getCell(column.getField());
+                               var cell = _this13.getCell(column.getField());
 
                                if (cell) {
                                        var value = column.getFieldValue(data);
@@ -4413,26 +4598,26 @@ Row.prototype.updateData = function (data) {
 
                //Partial reinitialization if visible
                if (visible) {
-                       self.normalizeHeight();
+                       _this13.normalizeHeight();
 
-                       if (self.table.options.rowFormatter) {
-                               self.table.options.rowFormatter(self.getComponent());
+                       if (_this13.table.options.rowFormatter) {
+                               _this13.table.options.rowFormatter(_this13.getComponent());
                        }
                } else {
-                       _this7.initialized = false;
-                       _this7.height = 0;
-                       _this7.heightStyled = "";
+                       _this13.initialized = false;
+                       _this13.height = 0;
+                       _this13.heightStyled = "";
                }
 
-               if (self.table.options.dataTree !== false && self.table.modExists("dataTree") && _this7.table.modules.dataTree.redrawNeeded(data)) {
-                       _this7.table.modules.dataTree.initializeRow(_this7);
-                       _this7.table.modules.dataTree.layoutRow(_this7);
-                       _this7.table.rowManager.refreshActiveData("tree", false, true);
+               if (_this13.table.options.dataTree !== false && _this13.table.modExists("dataTree") && _this13.table.modules.dataTree.redrawNeeded(data)) {
+                       _this13.table.modules.dataTree.initializeRow(_this13);
+                       _this13.table.modules.dataTree.layoutRow(_this13);
+                       _this13.table.rowManager.refreshActiveData("tree", false, true);
                }
 
-               //self.reinitialize();
+               //this.reinitialize();
 
-               self.table.options.rowUpdated.call(_this7.table, self.getComponent());
+               _this13.table.options.rowUpdated.call(_this13.table, _this13.getComponent());
 
                resolve();
        });
@@ -4545,32 +4730,32 @@ Row.prototype.moveToRow = function (to, before) {
 ///////////////////// Actions  /////////////////////
 
 Row.prototype.delete = function () {
-       var _this8 = this;
+       var _this14 = this;
 
        return new Promise(function (resolve, reject) {
                var index, rows;
 
-               if (_this8.table.options.history && _this8.table.modExists("history")) {
+               if (_this14.table.options.history && _this14.table.modExists("history")) {
 
-                       if (_this8.table.options.groupBy && _this8.table.modExists("groupRows")) {
-                               rows = _this8.getGroup().rows;
-                               index = rows.indexOf(_this8);
+                       if (_this14.table.options.groupBy && _this14.table.modExists("groupRows")) {
+                               rows = _this14.getGroup().rows;
+                               index = rows.indexOf(_this14);
 
                                if (index) {
                                        index = rows[index - 1];
                                }
                        } else {
-                               index = _this8.table.rowManager.getRowIndex(_this8);
+                               index = _this14.table.rowManager.getRowIndex(_this14);
 
                                if (index) {
-                                       index = _this8.table.rowManager.rows[index - 1];
+                                       index = _this14.table.rowManager.rows[index - 1];
                                }
                        }
 
-                       _this8.table.modules.history.action("rowDelete", _this8, { data: _this8.getData(), pos: !index, index: index });
+                       _this14.table.modules.history.action("rowDelete", _this14, { data: _this14.getData(), pos: !index, index: index });
                }
 
-               _this8.deleteActual();
+               _this14.deleteActual();
 
                resolve();
        });
@@ -4722,6 +4907,7 @@ var Cell = function Cell(column, row) {
        this.element = null;
        this.value = null;
        this.oldValue = null;
+       this.modules = {};
 
        this.height = null;
        this.width = null;
@@ -5260,7 +5446,9 @@ Cell.prototype.cancelEdit = function () {
 };
 
 Cell.prototype.delete = function () {
-       this.element.parentNode.removeChild(this.element);
+       if (!this.table.rowManager.redrawBlock) {
+               this.element.parentNode.removeChild(this.element);
+       }
        this.element = false;
        this.column.deleteCell(this);
        this.row.deleteCell(this);
@@ -5466,6 +5654,7 @@ var Tabulator = function Tabulator(element, options) {
        this.footerManager = null; //holder Footer Manager
        this.browser = ""; //hold current browser type
        this.browserSlow = false; //handle reduced functionality for slower browsers
+       this.browserMobile = false; //check if running on moble, prevent resize cancelling edit on keyboard appearence
 
        this.modules = {}; //hold all modules bound to this table
 
@@ -5485,7 +5674,8 @@ Tabulator.prototype.defaultOptions = {
        layoutColumnsOnNewData: false, //update column widths on setData
 
        columnMinWidth: 40, //minimum global width for a column
-       columnVertAlign: "top", //vertical alignment of column headers
+       columnHeaderVertAlign: "top", //vertical alignment of column headers
+       columnVertAlign: false, // DEPRECATED - Left to allow warning
 
        resizableColumns: true, //resizable columns
        resizableRows: false, //resizable rows
@@ -5586,11 +5776,15 @@ Tabulator.prototype.defaultOptions = {
        virtualDom: true, //enable DOM virtualization
        virtualDomBuffer: 0, // set virtual DOM buffer size
 
-       persistentLayout: false, //store column layout in memory
-       persistentSort: false, //store sorting in memory
-       persistentFilter: false, //store filters in memory
+       persistentLayout: false, //DEPRICATED - REMOVE in 5.0
+       persistentSort: false, //DEPRICATED - REMOVE in 5.0
+       persistentFilter: false, //DEPRICATED - REMOVE in 5.0
        persistenceID: "", //key for persistent storage
        persistenceMode: true, //mode for storing persistence information
+       persistenceReaderFunc: false, //function for handling persistence data reading
+       persistenceWriterFunc: false, //function for handling persistence data writing
+
+       persistence: false,
 
        responsiveLayout: false, //responsive layout flags
        responsiveLayoutCollapseStartOpen: true, //start showing collapsed data
@@ -5599,6 +5793,7 @@ Tabulator.prototype.defaultOptions = {
 
        pagination: false, //set pagination type
        paginationSize: false, //set number of rows to a page
+       paginationInitialPage: 1, //initail page to show on load
        paginationButtonCount: 5, // set count of page button
        paginationSizeSelector: false, //add pagination size selector element
        paginationElement: false, //element to hold pagination numbers
@@ -5754,7 +5949,11 @@ Tabulator.prototype.defaultOptions = {
 
        //history callbacks
        historyUndo: function historyUndo() {},
-       historyRedo: function historyRedo() {}
+       historyRedo: function historyRedo() {},
+
+       //scroll callbacks
+       scrollHorizontal: function scrollHorizontal() {},
+       scrollVertical: function scrollVertical() {}
 
 };
 
@@ -5806,7 +6005,45 @@ Tabulator.prototype.initializeElement = function (element) {
 };
 
 //convert depricated functionality to new functions
-Tabulator.prototype._mapDepricatedFunctionality = function () {};
+Tabulator.prototype._mapDepricatedFunctionality = function () {
+
+       //map depricated persistance setup options
+       if (this.options.persistentLayout || this.options.persistentSort || this.options.persistentFilter) {
+               if (!this.options.persistence) {
+                       this.options.persistence = {};
+               }
+       }
+
+       if (this.options.persistentLayout) {
+               console.warn("persistentLayout option is deprecated, you should now use the persistence option");
+
+               if (this.options.persistence !== true && typeof this.options.persistence.columns === "undefined") {
+                       this.options.persistence.columns = true;
+               }
+       }
+
+       if (this.options.persistentSort) {
+               console.warn("persistentSort option is deprecated, you should now use the persistence option");
+
+               if (this.options.persistence !== true && typeof this.options.persistence.sort === "undefined") {
+                       this.options.persistence.sort = true;
+               }
+       }
+
+       if (this.options.persistentFilter) {
+               console.warn("persistentFilter option is deprecated, you should now use the persistence option");
+
+               if (this.options.persistence !== true && typeof this.options.persistence.filter === "undefined") {
+                       this.options.persistence.filter = true;
+               }
+       }
+
+       if (this.options.columnVertAlign) {
+               console.warn("columnVertAlign option is deprecated, you should now use the columnHeaderVertAlign option");
+
+               this.options.columnHeaderVertAlign = this.options.columnVertAlign;
+       }
+};
 
 Tabulator.prototype._clearSelection = function () {
 
@@ -5865,7 +6102,7 @@ Tabulator.prototype._clearObjectPointers = function () {
 
 //build tabulator element
 Tabulator.prototype._buildElement = function () {
-       var _this9 = this;
+       var _this15 = this;
 
        var element = this.element,
            mod = this.modules,
@@ -5927,11 +6164,11 @@ Tabulator.prototype._buildElement = function () {
                this.footerManager.activate();
        }
 
-       if ((options.persistentLayout || options.persistentSort || options.persistentFilter) && this.modExists("persistence", true)) {
-               mod.persistence.initialize(options.persistenceMode, options.persistenceID);
+       if (options.persistence && this.modExists("persistence", true)) {
+               mod.persistence.initialize();
        }
 
-       if (options.persistentLayout && this.modExists("persistence", true)) {
+       if (options.persistence && this.modExists("persistence", true) && mod.persistence.config.columns) {
                options.columns = mod.persistence.load("columns", options.columns);
        }
 
@@ -5957,10 +6194,10 @@ Tabulator.prototype._buildElement = function () {
                this.modules.frozenRows.initialize();
        }
 
-       if ((options.persistentSort || options.initialSort) && this.modExists("sort", true)) {
+       if ((options.persistence && this.modExists("persistence", true) && mod.persistence.config.sort || options.initialSort) && this.modExists("sort", true)) {
                var sorters = [];
 
-               if (options.persistentSort && this.modExists("persistence", true)) {
+               if (options.persistence && this.modExists("persistence", true) && mod.persistence.config.sort) {
                        sorters = mod.persistence.load("sort");
 
                        if (sorters === false && options.initialSort) {
@@ -5973,10 +6210,10 @@ Tabulator.prototype._buildElement = function () {
                mod.sort.setSort(sorters);
        }
 
-       if ((options.persistentFilter || options.initialFilter) && this.modExists("filter", true)) {
+       if ((options.persistence && this.modExists("persistence", true) && mod.persistence.config.filter || options.initialFilter) && this.modExists("filter", true)) {
                var filters = [];
 
-               if (options.persistentFilter && this.modExists("persistence", true)) {
+               if (options.persistence && this.modExists("persistence", true) && mod.persistence.config.filter) {
                        filters = mod.persistence.load("filter");
 
                        if (filters === false && options.initialFilter) {
@@ -5992,7 +6229,7 @@ Tabulator.prototype._buildElement = function () {
        if (options.initialHeaderFilter && this.modExists("filter", true)) {
                options.initialHeaderFilter.forEach(function (item) {
 
-                       var column = _this9.columnManager.findColumn(item.field);
+                       var column = _this15.columnManager.findColumn(item.field);
 
                        if (column) {
                                mod.filter.setHeaderFilterValue(column, item.value);
@@ -6049,14 +6286,24 @@ Tabulator.prototype._loadInitialData = function () {
                                self.rowManager.setData(self.options.data);
                        } else {
                                if ((self.options.ajaxURL || self.options.ajaxURLGenerator) && self.modExists("ajax")) {
-                                       self.modules.ajax.loadData().then(function () {}).catch(function () {});
+                                       self.modules.ajax.loadData().then(function () {}).catch(function () {
+                                               if (self.options.paginationInitialPage) {
+                                                       self.modules.page.setPage(self.options.paginationInitialPage);
+                                               }
+                                       });
+
+                                       return;
                                } else {
                                        self.rowManager.setData(self.options.data);
                                }
                        }
+
+                       if (self.options.paginationInitialPage) {
+                               self.modules.page.setPage(self.options.paginationInitialPage);
+                       }
                } else {
                        if (self.options.ajaxURL) {
-                               self.modules.page.setPage(1).then(function () {}).catch(function () {});
+                               self.modules.page.setPage(self.options.paginationInitialPage).then(function () {}).catch(function () {});
                        } else {
                                self.rowManager.setData([]);
                        }
@@ -6109,7 +6356,7 @@ Tabulator.prototype.destroy = function () {
 };
 
 Tabulator.prototype._detectBrowser = function () {
-       var ua = navigator.userAgent;
+       var ua = navigator.userAgent || navigator.vendor || window.opera;
 
        if (ua.indexOf("Trident") > -1) {
                this.browser = "ie";
@@ -6124,13 +6371,25 @@ Tabulator.prototype._detectBrowser = function () {
                this.browser = "other";
                this.browserSlow = false;
        }
+
+       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(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));
 };
 
 ////////////////// Data Handling //////////////////
 
-//loca data from local file
+//block table redrawing
+Tabulator.prototype.blockRedraw = function () {
+       return this.rowManager.blockRedraw();
+};
+
+//restore table redrawing
+Tabulator.prototype.restoreRedraw = function () {
+       return this.rowManager.restoreRedraw();
+};
+
+//local data from local file
 Tabulator.prototype.setDataFromLocalFile = function (extensions) {
-       var _this10 = this;
+       var _this16 = this;
 
        return new Promise(function (resolve, reject) {
                var input = document.createElement("input");
@@ -6154,7 +6413,7 @@ Tabulator.prototype.setDataFromLocalFile = function (extensions) {
                                        return;
                                }
 
-                               _this10._setData(data).then(function (data) {
+                               _this16._setData(data).then(function (data) {
                                        resolve(data);
                                }).catch(function (err) {
                                        resolve(err);
@@ -6243,11 +6502,23 @@ Tabulator.prototype.clearData = function () {
 
 //get table data array
 Tabulator.prototype.getData = function (active) {
+
+       if (active === true) {
+               console.warn("passing a boolean to the getData function is deprecated, you should now pass the string 'active'");
+               active = "active";
+       }
+
        return this.rowManager.getData(active);
 };
 
 //get table data array count
 Tabulator.prototype.getDataCount = function (active) {
+
+       if (active === true) {
+               console.warn("passing a boolean to the getDataCount function is deprecated, you should now pass the string 'active'");
+               active = "active";
+       }
+
        return this.rowManager.getDataCount(active);
 };
 
@@ -6297,14 +6568,14 @@ Tabulator.prototype.replaceData = function (data, params, config) {
 
 //update table data
 Tabulator.prototype.updateData = function (data) {
-       var _this11 = this;
+       var _this17 = this;
 
        var self = this;
        var responses = 0;
 
        return new Promise(function (resolve, reject) {
-               if (_this11.modExists("ajax")) {
-                       _this11.modules.ajax.blockActiveRequest();
+               if (_this17.modExists("ajax")) {
+                       _this17.modules.ajax.blockActiveRequest();
                }
 
                if (typeof data === "string") {
@@ -6335,11 +6606,11 @@ Tabulator.prototype.updateData = function (data) {
 };
 
 Tabulator.prototype.addData = function (data, pos, index) {
-       var _this12 = this;
+       var _this18 = this;
 
        return new Promise(function (resolve, reject) {
-               if (_this12.modExists("ajax")) {
-                       _this12.modules.ajax.blockActiveRequest();
+               if (_this18.modExists("ajax")) {
+                       _this18.modules.ajax.blockActiveRequest();
                }
 
                if (typeof data === "string") {
@@ -6347,7 +6618,7 @@ Tabulator.prototype.addData = function (data, pos, index) {
                }
 
                if (data) {
-                       _this12.rowManager.addRows(data, pos, index).then(function (rows) {
+                       _this18.rowManager.addRows(data, pos, index).then(function (rows) {
                                var output = [];
 
                                rows.forEach(function (row) {
@@ -6365,15 +6636,15 @@ Tabulator.prototype.addData = function (data, pos, index) {
 
 //update table data
 Tabulator.prototype.updateOrAddData = function (data) {
-       var _this13 = this;
+       var _this19 = this;
 
        var self = this,
            rows = [],
            responses = 0;
 
        return new Promise(function (resolve, reject) {
-               if (_this13.modExists("ajax")) {
-                       _this13.modules.ajax.blockActiveRequest();
+               if (_this19.modExists("ajax")) {
+                       _this19.modules.ajax.blockActiveRequest();
                }
 
                if (typeof data === "string") {
@@ -6439,37 +6710,61 @@ Tabulator.prototype.getRowFromPosition = function (position, active) {
 
 //delete row from table
 Tabulator.prototype.deleteRow = function (index) {
-       var _this14 = this;
+       var _this20 = this;
 
        return new Promise(function (resolve, reject) {
-               var row = _this14.rowManager.findRow(index);
+               var count = 0,
+                   successCount = 0,
+                   self = _this20;
 
-               if (row) {
-                       row.delete().then(function () {
-                               resolve();
-                       }).catch(function (err) {
-                               reject(err);
-                       });
-               } else {
-                       console.warn("Delete Error - No matching row found:", index);
-                       reject("Delete Error - No matching row found");
+               function doneCheck() {
+                       count++;
+
+                       if (count == index.length) {
+                               if (successCount) {
+                                       self.rowManager.reRenderInPosition();
+                                       resolve();
+                               }
+                       }
+               }
+
+               if (!Array.isArray(index)) {
+                       index = [index];
                }
+
+               index.forEach(function (item) {
+                       var row = _this20.rowManager.findRow(item, true);
+
+                       if (row) {
+                               row.delete().then(function () {
+                                       successCount++;
+                                       doneCheck();
+                               }).catch(function (err) {
+                                       doneCheck();
+                                       reject(err);
+                               });
+                       } else {
+                               console.warn("Delete Error - No matching row found:", item);
+                               reject("Delete Error - No matching row found");
+                               doneCheck();
+                       }
+               });
        });
 };
 
 //add row to table
 Tabulator.prototype.addRow = function (data, pos, index) {
-       var _this15 = this;
+       var _this21 = this;
 
        return new Promise(function (resolve, reject) {
                if (typeof data === "string") {
                        data = JSON.parse(data);
                }
 
-               _this15.rowManager.addRows(data, pos, index).then(function (rows) {
+               _this21.rowManager.addRows(data, pos, index).then(function (rows) {
                        //recalc column calculations if present
-                       if (_this15.modExists("columnCalcs")) {
-                               _this15.modules.columnCalcs.recalc(_this15.rowManager.activeRows);
+                       if (_this21.modExists("columnCalcs")) {
+                               _this21.modules.columnCalcs.recalc(_this21.rowManager.activeRows);
                        }
 
                        resolve(rows[0].getComponent());
@@ -6479,10 +6774,10 @@ Tabulator.prototype.addRow = function (data, pos, index) {
 
 //update a row if it exitsts otherwise create it
 Tabulator.prototype.updateOrAddRow = function (index, data) {
-       var _this16 = this;
+       var _this22 = this;
 
        return new Promise(function (resolve, reject) {
-               var row = _this16.rowManager.findRow(index);
+               var row = _this22.rowManager.findRow(index);
 
                if (typeof data === "string") {
                        data = JSON.parse(data);
@@ -6491,8 +6786,8 @@ Tabulator.prototype.updateOrAddRow = function (index, data) {
                if (row) {
                        row.updateData(data).then(function () {
                                //recalc column calculations if present
-                               if (_this16.modExists("columnCalcs")) {
-                                       _this16.modules.columnCalcs.recalc(_this16.rowManager.activeRows);
+                               if (_this22.modExists("columnCalcs")) {
+                                       _this22.modules.columnCalcs.recalc(_this22.rowManager.activeRows);
                                }
 
                                resolve(row.getComponent());
@@ -6500,10 +6795,10 @@ Tabulator.prototype.updateOrAddRow = function (index, data) {
                                reject(err);
                        });
                } else {
-                       row = _this16.rowManager.addRows(data).then(function (rows) {
+                       row = _this22.rowManager.addRows(data).then(function (rows) {
                                //recalc column calculations if present
-                               if (_this16.modExists("columnCalcs")) {
-                                       _this16.modules.columnCalcs.recalc(_this16.rowManager.activeRows);
+                               if (_this22.modExists("columnCalcs")) {
+                                       _this22.modules.columnCalcs.recalc(_this22.rowManager.activeRows);
                                }
 
                                resolve(rows[0].getComponent());
@@ -6516,10 +6811,10 @@ Tabulator.prototype.updateOrAddRow = function (index, data) {
 
 //update row data
 Tabulator.prototype.updateRow = function (index, data) {
-       var _this17 = this;
+       var _this23 = this;
 
        return new Promise(function (resolve, reject) {
-               var row = _this17.rowManager.findRow(index);
+               var row = _this23.rowManager.findRow(index);
 
                if (typeof data === "string") {
                        data = JSON.parse(data);
@@ -6540,13 +6835,13 @@ Tabulator.prototype.updateRow = function (index, data) {
 
 //scroll to row in DOM
 Tabulator.prototype.scrollToRow = function (index, position, ifVisible) {
-       var _this18 = this;
+       var _this24 = this;
 
        return new Promise(function (resolve, reject) {
-               var row = _this18.rowManager.findRow(index);
+               var row = _this24.rowManager.findRow(index);
 
                if (row) {
-                       _this18.rowManager.scrollToRow(row, position, ifVisible).then(function () {
+                       _this24.rowManager.scrollToRow(row, position, ifVisible).then(function () {
                                resolve();
                        }).catch(function (err) {
                                reject(err);
@@ -6569,6 +6864,12 @@ Tabulator.prototype.moveRow = function (from, to, after) {
 };
 
 Tabulator.prototype.getRows = function (active) {
+
+       if (active === true) {
+               console.warn("passing a boolean to the getRows function is deprecated, you should now pass the string 'active'");
+               active = "active";
+       }
+
        return this.rowManager.getComponents(active);
 };
 
@@ -6676,20 +6977,55 @@ Tabulator.prototype.toggleColumn = function (field) {
 };
 
 Tabulator.prototype.addColumn = function (definition, before, field) {
-       var column = this.columnManager.findColumn(field);
+       var _this25 = this;
+
+       return new Promise(function (resolve, reject) {
+               var column = _this25.columnManager.findColumn(field);
 
-       this.columnManager.addColumn(definition, before, column);
+               _this25.columnManager.addColumn(definition, before, column).then(function (column) {
+                       resolve(column.getComponent());
+               }).catch(function (err) {
+                       reject(err);
+               });
+       });
 };
 
 Tabulator.prototype.deleteColumn = function (field) {
-       var column = this.columnManager.findColumn(field);
+       var _this26 = this;
 
-       if (column) {
-               column.delete();
-       } else {
-               console.warn("Column Delete Error - No matching column found:", field);
-               return false;
-       }
+       return new Promise(function (resolve, reject) {
+               var column = _this26.columnManager.findColumn(field);
+
+               if (column) {
+                       column.delete().then(function () {
+                               resolve();
+                       }).catch(function (err) {
+                               reject(err);
+                       });
+               } else {
+                       console.warn("Column Delete Error - No matching column found:", field);
+                       reject();
+               }
+       });
+};
+
+Tabulator.prototype.updateColumnDefinition = function (field, definition) {
+       var _this27 = this;
+
+       return new Promise(function (resolve, reject) {
+               var column = _this27.columnManager.findColumn(field);
+
+               if (column) {
+                       column.updateDefinition().then(function (col) {
+                               resolve(col);
+                       }).catch(function (err) {
+                               reject(err);
+                       });
+               } else {
+                       console.warn("Column Update Error - No matching column found:", field);
+                       reject();
+               }
+       });
 };
 
 Tabulator.prototype.moveColumn = function (from, to, after) {
@@ -6709,13 +7045,13 @@ Tabulator.prototype.moveColumn = function (from, to, after) {
 
 //scroll to column in DOM
 Tabulator.prototype.scrollToColumn = function (field, position, ifVisible) {
-       var _this19 = this;
+       var _this28 = this;
 
        return new Promise(function (resolve, reject) {
-               var column = _this19.columnManager.findColumn(field);
+               var column = _this28.columnManager.findColumn(field);
 
                if (column) {
-                       _this19.columnManager.scrollToColumn(column, position, ifVisible).then(function () {
+                       _this28.columnManager.scrollToColumn(column, position, ifVisible).then(function () {
                                resolve();
                        }).catch(function (err) {
                                reject(err);
@@ -6866,6 +7202,10 @@ Tabulator.prototype.clearHeaderFilter = function () {
 ///////////////////// Filtering ////////////////////
 Tabulator.prototype.selectRow = function (rows) {
        if (this.modExists("selectRow", true)) {
+               if (rows === true) {
+                       console.warn("passing a boolean to the selectRowselectRow function is deprecated, you should now pass the string 'active'");
+                       rows = "active";
+               }
                this.modules.selectRow.selectRows(rows);
        }
 };
@@ -6915,14 +7255,14 @@ Tabulator.prototype.setPage = function (page) {
 };
 
 Tabulator.prototype.setPageToRow = function (row) {
-       var _this20 = this;
+       var _this29 = this;
 
        return new Promise(function (resolve, reject) {
-               if (_this20.options.pagination && _this20.modExists("page")) {
-                       row = _this20.rowManager.findRow(row);
+               if (_this29.options.pagination && _this29.modExists("page")) {
+                       row = _this29.rowManager.findRow(row);
 
                        if (row) {
-                               _this20.modules.page.setPageToRow(row).then(function () {
+                               _this29.modules.page.setPageToRow(row).then(function () {
                                        resolve();
                                }).catch(function () {
                                        reject();
@@ -6990,6 +7330,10 @@ Tabulator.prototype.setGroupBy = function (groups) {
                this.options.groupBy = groups;
                this.modules.groupRows.initialize();
                this.rowManager.refreshActiveData("display");
+
+               if (this.options.persistence && this.modExists("persistence", true) && this.modules.persistence.config.group) {
+                       this.modules.persistence.save("group");
+               }
        } else {
                return false;
        }
@@ -7001,6 +7345,10 @@ Tabulator.prototype.setGroupStartOpen = function (values) {
                this.modules.groupRows.initialize();
                if (this.options.groupBy) {
                        this.rowManager.refreshActiveData("group");
+
+                       if (this.options.persistence && this.modExists("persistence", true) && this.modules.persistence.config.group) {
+                               this.modules.persistence.save("group");
+                       }
                } else {
                        console.warn("Grouping Update - cant refresh view, no groups have been set");
                }
@@ -7015,6 +7363,10 @@ Tabulator.prototype.setGroupHeader = function (values) {
                this.modules.groupRows.initialize();
                if (this.options.groupBy) {
                        this.rowManager.refreshActiveData("group");
+
+                       if (this.options.persistence && this.modExists("persistence", true) && this.modules.persistence.config.group) {
+                               this.modules.persistence.save("group");
+                       }
                } else {
                        console.warn("Grouping Update - cant refresh view, no groups have been set");
                }
@@ -7172,15 +7524,15 @@ Tabulator.prototype.getHistoryRedoSize = function () {
 
 /////////////// Download Management //////////////
 
-Tabulator.prototype.download = function (type, filename, options) {
+Tabulator.prototype.download = function (type, filename, options, active) {
        if (this.modExists("download", true)) {
-               this.modules.download.download(type, filename, options);
+               this.modules.download.download(type, filename, options, active);
        }
 };
 
-Tabulator.prototype.downloadToTab = function (type, filename, options) {
+Tabulator.prototype.downloadToTab = function (type, filename, options, active) {
        if (this.modExists("download", true)) {
-               this.modules.download.download(type, filename, options, true);
+               this.modules.download.download(type, filename, options, active, true);
        }
 };
 
@@ -7289,7 +7641,7 @@ Tabulator.prototype.comms = {
                        Tabulator.prototype.comms.tables.splice(index, 1);
                }
        },
-       lookupTable: function lookupTable(query) {
+       lookupTable: function lookupTable(query, silent) {
                var results = [],
                    matches,
                    match;
@@ -7317,7 +7669,9 @@ Tabulator.prototype.comms = {
                                results = results.concat(Tabulator.prototype.comms.lookupTable(item));
                        });
                } else {
-                       console.warn("Table Connection Error - Invalid Selector", query);
+                       if (!silent) {
+                               console.warn("Table Connection Error - Invalid Selector", query);
+                       }
                }
 
                return results;
@@ -7329,6 +7683,11 @@ Tabulator.prototype.comms = {
        }
 };
 
+Tabulator.prototype.findTable = function (query) {
+       var results = Tabulator.prototype.comms.lookupTable(query, true);
+       return Array.isArray(results) && !results.length ? false : results;
+};
+
 var Layout = function Layout(table) {
 
        this.table = table;
@@ -7384,7 +7743,7 @@ Layout.prototype.modes = {
                }
        },
 
-       //resize columns to fit data the contain
+       //resize columns to fit data the contain and stretch row to fill table
 
        "fitDataFill": function fitDataFill(columns) {
 
@@ -7399,6 +7758,61 @@ Layout.prototype.modes = {
                }
        },
 
+       //resize columns to fit data the contain and stretch last column to fill table
+
+       "fitDataStretch": function fitDataStretch(columns) {
+               var _this30 = this;
+
+               var colsWidth = 0,
+                   tableWidth = this.table.rowManager.element.clientWidth,
+                   gap = 0,
+                   lastCol = false;
+
+               columns.forEach(function (column, i) {
+
+                       if (!column.widthFixed) {
+
+                               column.reinitializeWidth();
+                       }
+
+                       if (_this30.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible) {
+
+                               lastCol = column;
+                       }
+
+                       if (column.visible) {
+
+                               colsWidth += column.getWidth();
+                       }
+               });
+
+               if (lastCol) {
+
+                       gap = tableWidth - colsWidth + lastCol.getWidth();
+
+                       if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+                               lastCol.setWidth(0);
+
+                               this.table.modules.responsiveLayout.update();
+                       }
+
+                       if (gap > 0) {
+
+                               lastCol.setWidth(gap);
+                       } else {
+
+                               column.reinitializeWidth();
+                       }
+               } else {
+
+                       if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+                               this.table.modules.responsiveLayout.update();
+                       }
+               }
+       },
+
        //resize columns to fit
 
        "fitColumns": function fitColumns(columns) {
index d62262c..b8b3c42 100644 (file)
@@ -1,5 +1,6 @@
-/* Tabulator v4.4.3 (c) Oliver Folkerd */
-"use strict";var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};Array.prototype.findIndex||Object.defineProperty(Array.prototype,"findIndex",{value:function(t){if(null==this)throw new TypeError('"this" is null or not defined');var e=Object(this),o=e.length>>>0;if("function"!=typeof t)throw new TypeError("predicate must be a function");for(var i=arguments[1],n=0;n<o;){var l=e[n];if(t.call(i,l,n,e))return n;n++}return-1}}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(t){if(null==this)throw new TypeError('"this" is null or not defined');var e=Object(this),o=e.length>>>0;if("function"!=typeof t)throw new TypeError("predicate must be a function");for(var i=arguments[1],n=0;n<o;){var l=e[n];if(t.call(i,l,n,e))return l;n++}}});var ColumnManager=function(t){this.table=t,this.blockHozScrollEvent=!1,this.headersElement=this.createHeadersElement(),this.element=this.createHeaderElement(),this.rowManager=null,this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.scrollLeft=0,this.element.insertBefore(this.headersElement,this.element.firstChild)};ColumnManager.prototype.createHeadersElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-headers"),t},ColumnManager.prototype.createHeaderElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-header"),this.table.options.headerVisible||t.classList.add("tabulator-header-hidden"),t},ColumnManager.prototype.initialize=function(){},ColumnManager.prototype.setRowManager=function(t){this.rowManager=t},ColumnManager.prototype.getElement=function(){return this.element},ColumnManager.prototype.getHeadersElement=function(){return this.headersElement},ColumnManager.prototype.scrollHorizontal=function(t){var e=0,o=this.element.scrollWidth-this.table.element.clientWidth;this.element.scrollLeft=t,t>o?(e=t-o,this.element.style.marginLeft=-e+"px"):this.element.style.marginLeft=0,this.scrollLeft=t,this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.scrollHorizontal()},ColumnManager.prototype.generateColumnsFromRowData=function(t){var e,o,i=[];if(t&&t.length){e=t[0];for(var n in e){var l={field:n,title:n},s=e[n];switch(void 0===s?"undefined":_typeof(s)){case"undefined":o="string";break;case"boolean":o="boolean";break;case"object":o=Array.isArray(s)?"array":"string";break;default:o=isNaN(s)||""===s?s.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)?"alphanum":"string":"number"}l.sorter=o,i.push(l)}this.table.options.columns=i,this.setColumns(this.table.options.columns)}},ColumnManager.prototype.setColumns=function(t,e){for(var o=this;o.headersElement.firstChild;)o.headersElement.removeChild(o.headersElement.firstChild);o.columns=[],o.columnsByIndex=[],o.columnsByField={},o.table.modExists("frozenColumns")&&o.table.modules.frozenColumns.reset(),t.forEach(function(t,e){o._addColumn(t)}),o._reIndexColumns(),o.table.options.responsiveLayout&&o.table.modExists("responsiveLayout",!0)&&o.table.modules.responsiveLayout.initialize(),o.redraw(!0)},ColumnManager.prototype._addColumn=function(t,e,o){var i=new Column(t,this),n=i.getElement(),l=o?this.findColumnIndex(o):o;if(o&&l>-1){var s=this.columns.indexOf(o.getTopColumn()),a=o.getElement();e?(this.columns.splice(s,0,i),a.parentNode.insertBefore(n,a)):(this.columns.splice(s+1,0,i),a.parentNode.insertBefore(n,a.nextSibling))}else e?(this.columns.unshift(i),this.headersElement.insertBefore(i.getElement(),this.headersElement.firstChild)):(this.columns.push(i),this.headersElement.appendChild(i.getElement()));return i},ColumnManager.prototype.registerColumnField=function(t){t.definition.field&&(this.columnsByField[t.definition.field]=t)},ColumnManager.prototype.registerColumnPosition=function(t){this.columnsByIndex.push(t)},ColumnManager.prototype._reIndexColumns=function(){this.columnsByIndex=[],this.columns.forEach(function(t){t.reRegisterPosition()})},ColumnManager.prototype._verticalAlignHeaders=function(){var t=this,e=0;t.columns.forEach(function(t){var o;t.clearVerticalAlign(),(o=t.getHeight())>e&&(e=o)}),t.columns.forEach(function(o){o.verticalAlign(t.table.options.columnVertAlign,e)}),t.rowManager.adjustTableSize()},ColumnManager.prototype.findColumn=function(t){var e=this;if("object"!=(void 0===t?"undefined":_typeof(t)))return this.columnsByField[t]||!1;if(t instanceof Column)return t;if(t instanceof ColumnComponent)return t._getSelf()||!1;if("undefined"!=typeof HTMLElement&&t instanceof HTMLElement){return e.columns.find(function(e){return e.element===t})||!1}return!1},ColumnManager.prototype.getColumnByField=function(t){return this.columnsByField[t]},ColumnManager.prototype.getColumnsByFieldRoot=function(t){var e=this,o=[];return Object.keys(this.columnsByField).forEach(function(i){i.split(".")[0]===t&&o.push(e.columnsByField[i])}),o},ColumnManager.prototype.getColumnByIndex=function(t){return this.columnsByIndex[t]},ColumnManager.prototype.getFirstVisibileColumn=function(t){var t=this.columnsByIndex.findIndex(function(t){return t.visible});return t>-1&&this.columnsByIndex[t]},ColumnManager.prototype.getColumns=function(){return this.columns},ColumnManager.prototype.findColumnIndex=function(t){return this.columnsByIndex.findIndex(function(e){return t===e})},ColumnManager.prototype.getRealColumns=function(){return this.columnsByIndex},ColumnManager.prototype.traverse=function(t){this.columnsByIndex.forEach(function(e,o){t(e,o)})},ColumnManager.prototype.getDefinitions=function(t){var e=this,o=[];return e.columnsByIndex.forEach(function(e){(!t||t&&e.visible)&&o.push(e.getDefinition())}),o},ColumnManager.prototype.getDefinitionTree=function(){var t=this,e=[];return t.columns.forEach(function(t){e.push(t.getDefinition(!0))}),e},ColumnManager.prototype.getComponents=function(t){var e=this,o=[];return(t?e.columns:e.columnsByIndex).forEach(function(t){o.push(t.getComponent())}),o},ColumnManager.prototype.getWidth=function(){var t=0;return this.columnsByIndex.forEach(function(e){e.visible&&(t+=e.getWidth())}),t},ColumnManager.prototype.moveColumn=function(t,e,o){this.moveColumnActual(t,e,o),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),e.element.parentNode.insertBefore(t.element,e.element),o&&e.element.parentNode.insertBefore(e.element,t.element),this._verticalAlignHeaders(),this.table.rowManager.reinitialize()},ColumnManager.prototype.moveColumnActual=function(t,e,o){this._moveColumnInArray(this.columns,t,e,o),this._moveColumnInArray(this.columnsByIndex,t,e,o,!0),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.options.columnMoved&&this.table.options.columnMoved.call(this.table,t.getComponent(),this.table.columnManager.getComponents()),this.table.options.persistentLayout&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("columns")},ColumnManager.prototype._moveColumnInArray=function(t,e,o,i,n){var l,s=t.indexOf(e);s>-1&&(t.splice(s,1),l=t.indexOf(o),l>-1?i&&(l+=1):l=s,t.splice(l,0,e),n&&this.table.rowManager.rows.forEach(function(t){if(t.cells.length){var e=t.cells.splice(s,1)[0];t.cells.splice(l,0,e)}}))},ColumnManager.prototype.scrollToColumn=function(t,e,o){var i=this,n=0,l=0,s=0,a=t.getElement();return new Promise(function(r,u){if(void 0===e&&(e=i.table.options.scrollToColumnPosition),void 0===o&&(o=i.table.options.scrollToColumnIfVisible),t.visible){switch(e){case"middle":case"center":s=-i.element.clientWidth/2;break;case"right":s=a.clientWidth-i.headersElement.clientWidth}if(!o&&(l=a.offsetLeft)>0&&l+a.offsetWidth<i.element.clientWidth)return!1;n=a.offsetLeft+i.element.scrollLeft+s,n=Math.max(Math.min(n,i.table.rowManager.element.scrollWidth-i.table.rowManager.element.clientWidth),0),i.table.rowManager.scrollHorizontal(n),i.scrollHorizontal(n),r()}else console.warn("Scroll Error - Column not visible"),u("Scroll Error - Column not visible")})},ColumnManager.prototype.generateCells=function(t){var e=this,o=[];return e.columnsByIndex.forEach(function(e){o.push(e.generateCell(t))}),o},ColumnManager.prototype.getFlexBaseWidth=function(){var t=this,e=t.table.element.clientWidth,o=0;return t.rowManager.element.scrollHeight>t.rowManager.element.clientHeight&&(e-=t.rowManager.element.offsetWidth-t.rowManager.element.clientWidth),this.columnsByIndex.forEach(function(i){var n,l,s;i.visible&&(n=i.definition.width||0,l=void 0===i.minWidth?t.table.options.columnMinWidth:parseInt(i.minWidth),s="string"==typeof n?n.indexOf("%")>-1?e/100*parseInt(n):parseInt(n):n,o+=s>l?s:l)}),o},ColumnManager.prototype.addColumn=function(t,e,o){var i=this._addColumn(t,e,o);this._reIndexColumns(),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),this.redraw(),"fitColumns"!=this.table.modules.layout.getMode()&&i.reinitializeWidth(),this._verticalAlignHeaders(),this.table.rowManager.reinitialize()},ColumnManager.prototype.deregisterColumn=function(t){var e,o=t.getField();o&&delete this.columnsByField[o],e=this.columnsByIndex.indexOf(t),e>-1&&this.columnsByIndex.splice(e,1),e=this.columns.indexOf(t),e>-1&&this.columns.splice(e,1),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.redraw()},ColumnManager.prototype.redraw=function(t){t&&(Tabulator.prototype.helpers.elVisible(this.element)&&this._verticalAlignHeaders(),this.table.rowManager.resetScroll(),this.table.rowManager.reinitialize()),"fitColumns"==this.table.modules.layout.getMode()?this.table.modules.layout.layout():t?this.table.modules.layout.layout():this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),t&&(this.table.options.persistentLayout&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("columns"),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.redraw()),this.table.footerManager.redraw()};var ColumnComponent=function(t){this._column=t,this.type="ColumnComponent"};ColumnComponent.prototype.getElement=function(){return this._column.getElement()},ColumnComponent.prototype.getDefinition=function(){return this._column.getDefinition()},ColumnComponent.prototype.getField=function(){return this._column.getField()},ColumnComponent.prototype.getCells=function(){var t=[];return this._column.cells.forEach(function(e){t.push(e.getComponent())}),t},ColumnComponent.prototype.getVisibility=function(){return this._column.visible},ColumnComponent.prototype.show=function(){this._column.isGroup?this._column.columns.forEach(function(t){t.show()}):this._column.show()},ColumnComponent.prototype.hide=function(){this._column.isGroup?this._column.columns.forEach(function(t){t.hide()}):this._column.hide()},ColumnComponent.prototype.toggle=function(){this._column.visible?this.hide():this.show()},ColumnComponent.prototype.delete=function(){this._column.delete()},ColumnComponent.prototype.getSubColumns=function(){var t=[];return this._column.columns.length&&this._column.columns.forEach(function(e){t.push(e.getComponent())}),t},ColumnComponent.prototype.getParentColumn=function(){return this._column.parent instanceof Column&&this._column.parent.getComponent()},ColumnComponent.prototype._getSelf=function(){return this._column},ColumnComponent.prototype.scrollTo=function(){return this._column.table.columnManager.scrollToColumn(this._column)},ColumnComponent.prototype.getTable=function(){return this._column.table},ColumnComponent.prototype.headerFilterFocus=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterFocus(this._column)},ColumnComponent.prototype.reloadHeaderFilter=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.reloadHeaderFilter(this._column)},ColumnComponent.prototype.setHeaderFilterValue=function(t){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterValue(this._column,t)},ColumnComponent.prototype.move=function(t,e){var o=this._column.table.columnManager.findColumn(t);o?this._column.table.columnManager.moveColumn(this._column,o,e):console.warn("Move Error - No matching column found:",o)},ColumnComponent.prototype.getNextColumn=function(){var t=this._column.nextColumn();return!!t&&t.getComponent()},ColumnComponent.prototype.getPrevColumn=function(){var t=this._column.prevColumn();return!!t&&t.getComponent()};var Column=function t(e,o){var i=this;this.table=o.table,this.definition=e,this.parent=o,this.type="column",this.columns=[],this.cells=[],this.element=this.createElement(),this.contentElement=!1,this.groupElement=this.createGroupElement(),this.isGroup=!1,this.tooltip=!1,this.hozAlign="",this.field="",this.fieldStructure="",this.getFieldValue="",this.setFieldValue="",this.setField(this.definition.field),this.table.options.invalidOptionWarnings&&this.checkDefinition(),this.modules={},this.cellEvents={cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1},this.width=null,this.widthStyled="",this.minWidth=null,this.minWidthStyled="",this.widthFixed=!1,this.visible=!0,this._mapDepricatedFunctionality(),e.columns?(this.isGroup=!0,e.columns.forEach(function(e,o){var n=new t(e,i);i.attachColumn(n)}),i.checkColumnVisibility()):o.registerColumnField(this),e.rowHandle&&!1!==this.table.options.movableRows&&this.table.modExists("moveRow")&&this.table.modules.moveRow.setHandle(!0),this._buildHeader()};Column.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-col"),t.setAttribute("role","columnheader"),t.setAttribute("aria-sort","none"),t},Column.prototype.createGroupElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-col-group-cols"),t},Column.prototype.checkDefinition=function(){var t=this;Object.keys(this.definition).forEach(function(e){-1===t.defaultOptionList.indexOf(e)&&console.warn("Invalid column definition option in '"+(t.field||t.definition.title)+"' column:",e)})},Column.prototype.setField=function(t){this.field=t,this.fieldStructure=t?this.table.options.nestedFieldSeparator?t.split(this.table.options.nestedFieldSeparator):[t]:[],this.getFieldValue=this.fieldStructure.length>1?this._getNestedData:this._getFlatData,this.setFieldValue=this.fieldStructure.length>1?this._setNesteData:this._setFlatData},Column.prototype.registerColumnPosition=function(t){this.parent.registerColumnPosition(t)},Column.prototype.registerColumnField=function(t){this.parent.registerColumnField(t)},Column.prototype.reRegisterPosition=function(){this.isGroup?this.columns.forEach(function(t){t.reRegisterPosition()}):this.registerColumnPosition(this)},Column.prototype._mapDepricatedFunctionality=function(){void 0!==this.definition.hideInHtml&&(this.definition.htmlOutput=!this.definition.hideInHtml,console.warn("hideInHtml column definition property is deprecated, you should now use htmlOutput"))},Column.prototype.setTooltip=function(){var t=this,e=t.definition,o=e.headerTooltip||!1===e.tooltip?e.headerTooltip:t.table.options.tooltipsHeader;o?!0===o?e.field?t.table.modules.localize.bind("columns|"+e.field,function(o){t.element.setAttribute("title",o||e.title)}):t.element.setAttribute("title",e.title):("function"==typeof o&&!1===(o=o(t.getComponent()))&&(o=""),t.element.setAttribute("title",o)):t.element.setAttribute("title","")},Column.prototype._buildHeader=function(){for(var t=this,e=t.definition;t.element.firstChild;)t.element.removeChild(t.element.firstChild);e.headerVertical&&(t.element.classList.add("tabulator-col-vertical"),"flip"===e.headerVertical&&t.element.classList.add("tabulator-col-vertical-flip")),t.contentElement=t._bindEvents(),t.contentElement=t._buildColumnHeaderContent(),t.element.appendChild(t.contentElement),t.isGroup?t._buildGroupHeader():t._buildColumnHeader(),t.setTooltip(),t.table.options.resizableColumns&&t.table.modExists("resizeColumns")&&t.table.modules.resizeColumns.initializeColumn("header",t,t.element),e.headerFilter&&t.table.modExists("filter")&&t.table.modExists("edit")&&(void 0!==e.headerFilterPlaceholder&&e.field&&t.table.modules.localize.setHeaderFilterColumnPlaceholder(e.field,e.headerFilterPlaceholder),t.table.modules.filter.initializeColumn(t)),t.table.modExists("frozenColumns")&&t.table.modules.frozenColumns.initializeColumn(t),t.table.options.movableColumns&&!t.isGroup&&t.table.modExists("moveColumn")&&t.table.modules.moveColumn.initializeColumn(t),(e.topCalc||e.bottomCalc)&&t.table.modExists("columnCalcs")&&t.table.modules.columnCalcs.initializeColumn(t),t.element.addEventListener("mouseenter",function(e){t.setTooltip()})},Column.prototype._bindEvents=function(){var t,e,o,i=this,n=i.definition;"function"==typeof n.headerClick&&i.element.addEventListener("click",function(t){n.headerClick(t,i.getComponent())}),"function"==typeof n.headerDblClick&&i.element.addEventListener("dblclick",function(t){n.headerDblClick(t,i.getComponent())}),"function"==typeof n.headerContext&&i.element.addEventListener("contextmenu",function(t){n.headerContext(t,i.getComponent())}),"function"==typeof n.headerTap&&(o=!1,i.element.addEventListener("touchstart",function(t){o=!0},{passive:!0}),i.element.addEventListener("touchend",function(t){o&&n.headerTap(t,i.getComponent()),o=!1})),"function"==typeof n.headerDblTap&&(t=null,i.element.addEventListener("touchend",function(e){t?(clearTimeout(t),t=null,n.headerDblTap(e,i.getComponent())):t=setTimeout(function(){clearTimeout(t),t=null},300)})),"function"==typeof n.headerTapHold&&(e=null,i.element.addEventListener("touchstart",function(t){clearTimeout(e),e=setTimeout(function(){clearTimeout(e),e=null,o=!1,n.headerTapHold(t,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(t){clearTimeout(e),e=null})),"function"==typeof n.cellClick&&(i.cellEvents.cellClick=n.cellClick),"function"==typeof n.cellDblClick&&(i.cellEvents.cellDblClick=n.cellDblClick),"function"==typeof n.cellContext&&(i.cellEvents.cellContext=n.cellContext),"function"==typeof n.cellMouseEnter&&(i.cellEvents.cellMouseEnter=n.cellMouseEnter),"function"==typeof n.cellMouseLeave&&(i.cellEvents.cellMouseLeave=n.cellMouseLeave),"function"==typeof n.cellMouseOver&&(i.cellEvents.cellMouseOver=n.cellMouseOver),"function"==typeof n.cellMouseOut&&(i.cellEvents.cellMouseOut=n.cellMouseOut),"function"==typeof n.cellMouseMove&&(i.cellEvents.cellMouseMove=n.cellMouseMove),"function"==typeof n.cellTap&&(i.cellEvents.cellTap=n.cellTap),"function"==typeof n.cellDblTap&&(i.cellEvents.cellDblTap=n.cellDblTap),"function"==typeof n.cellTapHold&&(i.cellEvents.cellTapHold=n.cellTapHold),"function"==typeof n.cellEdited&&(i.cellEvents.cellEdited=n.cellEdited),"function"==typeof n.cellEditing&&(i.cellEvents.cellEditing=n.cellEditing),"function"==typeof n.cellEditCancelled&&(i.cellEvents.cellEditCancelled=n.cellEditCancelled)},Column.prototype._buildColumnHeader=function(){var t=this,e=t.definition,o=t.table;if(o.modExists("sort")&&o.modules.sort.initializeColumn(t,t.contentElement),o.modExists("format")&&o.modules.format.initializeColumn(t),void 0!==e.editor&&o.modExists("edit")&&o.modules.edit.initializeColumn(t),void 0!==e.validator&&o.modExists("validate")&&o.modules.validate.initializeColumn(t),o.modExists("mutator")&&o.modules.mutator.initializeColumn(t),o.modExists("accessor")&&o.modules.accessor.initializeColumn(t),_typeof(o.options.responsiveLayout)&&o.modExists("responsiveLayout")&&o.modules.responsiveLayout.initializeColumn(t),void 0!==e.visible&&(e.visible?t.show(!0):t.hide(!0)),e.cssClass){e.cssClass.split(" ").forEach(function(e){t.element.classList.add(e)})}e.field&&this.element.setAttribute("tabulator-field",e.field),t.setMinWidth(void 0===e.minWidth?t.table.options.columnMinWidth:parseInt(e.minWidth)),t.reinitializeWidth(),t.tooltip=t.definition.tooltip||!1===t.definition.tooltip?t.definition.tooltip:t.table.options.tooltips,t.hozAlign=void 0===t.definition.align?"":t.definition.align},Column.prototype._buildColumnHeaderContent=function(){var t=this,e=(t.definition,t.table,document.createElement("div"));return e.classList.add("tabulator-col-content"),e.appendChild(t._buildColumnHeaderTitle()),e},Column.prototype._buildColumnHeaderTitle=function(){var t=this,e=t.definition,o=t.table,i=document.createElement("div");if(i.classList.add("tabulator-col-title"),e.editableTitle){var n=document.createElement("input");n.classList.add("tabulator-title-editor"),n.addEventListener("click",function(t){t.stopPropagation(),n.focus()}),n.addEventListener("change",function(){e.title=n.value,o.options.columnTitleChanged.call(t.table,t.getComponent())}),i.appendChild(n),e.field?o.modules.localize.bind("columns|"+e.field,function(t){n.value=t||e.title||"&nbsp;"}):n.value=e.title||"&nbsp;"}else e.field?o.modules.localize.bind("columns|"+e.field,function(o){t._formatColumnHeaderTitle(i,o||e.title||"&nbsp;")}):t._formatColumnHeaderTitle(i,e.title||"&nbsp;");return i},Column.prototype._formatColumnHeaderTitle=function(t,e){var o,i,n,l;if(this.definition.titleFormatter&&this.table.modExists("format"))switch(o=this.table.modules.format.getFormatter(this.definition.titleFormatter),l={getValue:function(){return e},getElement:function(){return t}},n=this.definition.titleFormatterParams||{},n="function"==typeof n?n():n,i=o.call(this.table.modules.format,l,n),void 0===i?"undefined":_typeof(i)){case"object":i instanceof Node?t.appendChild(i):(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:",i));break;case"undefined":case"null":t.innerHTML="";break;default:t.innerHTML=i}else t.innerHTML=e},Column.prototype._buildGroupHeader=function(){this.element.classList.add("tabulator-col-group"),this.element.setAttribute("role","columngroup"),this.element.setAttribute("aria-title",this.definition.title),this.element.appendChild(this.groupElement)},Column.prototype._getFlatData=function(t){return t[this.field]},Column.prototype._getNestedData=function(t){for(var e,o=t,i=this.fieldStructure,n=i.length,l=0;l<n&&(o=o[i[l]],e=o,o);l++);return e},Column.prototype._setFlatData=function(t,e){this.field&&(t[this.field]=e)},Column.prototype._setNesteData=function(t,e){for(var o=t,i=this.fieldStructure,n=i.length,l=0;l<n;l++)l==n-1?o[i[l]]=e:(o[i[l]]||(o[i[l]]={}),o=o[i[l]])},Column.prototype.attachColumn=function(t){var e=this;e.groupElement?(e.columns.push(t),e.groupElement.appendChild(t.getElement())):console.warn("Column Warning - Column being attached to another column instead of column group")},Column.prototype.verticalAlign=function(t,e){var o=this.parent.isGroup?this.parent.getGroupElement().clientHeight:e||this.parent.getHeadersElement().clientHeight;this.element.style.height=o+"px",this.isGroup&&(this.groupElement.style.minHeight=o-this.contentElement.offsetHeight+"px"),this.isGroup||"top"===t||(this.element.style.paddingTop="bottom"===t?this.element.clientHeight-this.contentElement.offsetHeight+"px":(this.element.clientHeight-this.contentElement.offsetHeight)/2+"px"),this.columns.forEach(function(e){e.verticalAlign(t)})},Column.prototype.clearVerticalAlign=function(){this.element.style.paddingTop="",this.element.style.height="",this.element.style.minHeight="",this.groupElement.style.minHeight="",this.columns.forEach(function(t){t.clearVerticalAlign()})},Column.prototype.getElement=function(){return this.element},Column.prototype.getGroupElement=function(){return this.groupElement},Column.prototype.getField=function(){return this.field},Column.prototype.getFirstColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[0].getFirstColumn():this},Column.prototype.getLastColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[this.columns.length-1].getLastColumn():this},Column.prototype.getColumns=function(){return this.columns},Column.prototype.getCells=function(){return this.cells},Column.prototype.getTopColumn=function(){return this.parent.isGroup?this.parent.getTopColumn():this},Column.prototype.getDefinition=function(t){var e=[];return this.isGroup&&t&&(this.columns.forEach(function(t){e.push(t.getDefinition(!0))}),this.definition.columns=e),this.definition},Column.prototype.checkColumnVisibility=function(){var t=!1;this.columns.forEach(function(e){e.visible&&(t=!0)}),t?(this.show(),this.parent.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1)):this.hide()},Column.prototype.show=function(t,e){this.visible||(this.visible=!0,this.element.style.display="",this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(t){t.show()}),this.isGroup||null!==this.width||this.reinitializeWidth(),this.table.columnManager._verticalAlignHeaders(),this.table.options.persistentLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.persistence.save("columns"),!e&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),t||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!0),this.parent.isGroup&&this.parent.matchChildWidths())},Column.prototype.hide=function(t,e){this.visible&&(this.visible=!1,this.element.style.display="none",this.table.columnManager._verticalAlignHeaders(),this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(t){t.hide()}),this.table.options.persistentLayout&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("columns"),!e&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),t||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1),this.parent.isGroup&&this.parent.matchChildWidths())},Column.prototype.matchChildWidths=function(){var t=0;this.contentElement&&this.columns.length&&(this.columns.forEach(function(e){e.visible&&(t+=e.getWidth())}),this.contentElement.style.maxWidth=t-1+"px")},Column.prototype.setWidth=function(t){this.widthFixed=!0,this.setWidthActual(t)},Column.prototype.setWidthActual=function(t){isNaN(t)&&(t=Math.floor(this.table.element.clientWidth/100*parseInt(t))),t=Math.max(this.minWidth,t),this.width=t,this.widthStyled=t?t+"px":"",this.element.style.width=this.widthStyled,this.isGroup||this.cells.forEach(function(t){t.setWidth()}),this.parent.isGroup&&this.parent.matchChildWidths(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()},Column.prototype.checkCellHeights=function(){var t=[];this.cells.forEach(function(e){e.row.heightInitialized&&(null!==e.row.getElement().offsetParent?(t.push(e.row),e.row.clearCellHeight()):e.row.heightInitialized=!1)}),t.forEach(function(t){t.calcHeight()}),t.forEach(function(t){t.setCellHeight()})},Column.prototype.getWidth=function(){return this.width},Column.prototype.getHeight=function(){return this.element.offsetHeight},Column.prototype.setMinWidth=function(t){this.minWidth=t,this.minWidthStyled=t?t+"px":"",this.element.style.minWidth=this.minWidthStyled,this.cells.forEach(function(t){t.setMinWidth()})},Column.prototype.delete=function(){this.isGroup&&this.columns.forEach(function(t){t.delete()});for(var t=this.cells.length,e=0;e<t;e++)this.cells[0].delete();this.element.parentNode.removeChild(this.element),this.table.columnManager.deregisterColumn(this)},Column.prototype.generateCell=function(t){var e=this,o=new Cell(e,t);return this.cells.push(o),o},Column.prototype.nextColumn=function(){var t=this.table.columnManager.findColumnIndex(this);return t>-1&&this._nextVisibleColumn(t+1)},Column.prototype._nextVisibleColumn=function(t){var e=this.table.columnManager.getColumnByIndex(t);return!e||e.visible?e:this._nextVisibleColumn(t+1)},Column.prototype.prevColumn=function(){var t=this.table.columnManager.findColumnIndex(this);return t>-1&&this._prevVisibleColumn(t-1)},Column.prototype._prevVisibleColumn=function(t){var e=this.table.columnManager.getColumnByIndex(t);return!e||e.visible?e:this._prevVisibleColumn(t-1)},Column.prototype.reinitializeWidth=function(t){this.widthFixed=!1,void 0===this.definition.width||t||this.setWidth(this.definition.width),this.table.modExists("filter")&&this.table.modules.filter.hideHeaderFilterElements(),this.fitToData(),this.table.modExists("filter")&&this.table.modules.filter.showHeaderFilterElements()},Column.prototype.fitToData=function(){var t=this;this.widthFixed||(this.element.style.width="",t.cells.forEach(function(t){t.clearWidth()}));var e=this.element.offsetWidth;t.width&&this.widthFixed||(t.cells.forEach(function(t){var o=t.getWidth();o>e&&(e=o)}),e&&t.setWidthActual(e+1))},Column.prototype.deleteCell=function(t){var e=this.cells.indexOf(t);e>-1&&this.cells.splice(e,1)},Column.prototype.defaultOptionList=["title","field","columns","visible","align","width","minWidth","widthGrow","widthShrink","resizable","frozen","responsive","tooltip","cssClass","rowHandle","hideInHtml","print","htmlOutput","sorter","sorterParams","formatter","formatterParams","variableHeight","editable","editor","editorParams","validator","mutator","mutatorParams","mutatorData","mutatorDataParams","mutatorEdit","mutatorEditParams","mutatorClipboard","mutatorClipboardParams","accessor","accessorParams","accessorData","accessorDataParams","accessorDownload","accessorDownloadParams","accessorClipboard","accessorClipboardParams","clipboard","download","downloadTitle","topCalc","topCalcParams","topCalcFormatter","topCalcFormatterParams","bottomCalc","bottomCalcParams","bottomCalcFormatter","bottomCalcFormatterParams","cellClick","cellDblClick","cellContext","cellTap","cellDblTap","cellTapHold","cellMouseEnter","cellMouseLeave","cellMouseOver","cellMouseOut","cellMouseMove","cellEditing","cellEdited","cellEditCancelled","headerSort","headerSortStartingDir","headerSortTristate","headerClick","headerDblClick","headerContext","headerTap","headerDblTap","headerTapHold","headerTooltip","headerVertical","editableTitle","titleFormatter","titleFormatterParams","headerFilter","headerFilterPlaceholder","headerFilterParams","headerFilterEmptyCheck","headerFilterFunc","headerFilterFuncParams","headerFilterLiveFilter","print"],Column.prototype.getComponent=function(){return new ColumnComponent(this)};var RowManager=function(t){this.table=t,this.element=this.createHolderElement(),this.tableElement=this.createTableElement(),this.columnManager=null,this.height=0,this.firstRender=!1,this.renderMode="classic",this.rows=[],this.activeRows=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0,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=[]};RowManager.prototype.createHolderElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-tableHolder"),t.setAttribute("tabindex",0),t},
-RowManager.prototype.createTableElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-table"),t},RowManager.prototype.getElement=function(){return this.element},RowManager.prototype.getTableElement=function(){return this.tableElement},RowManager.prototype.getRowPosition=function(t,e){return e?this.activeRows.indexOf(t):this.rows.indexOf(t)},RowManager.prototype.setColumnManager=function(t){this.columnManager=t},RowManager.prototype.initialize=function(){var t=this;t.setRenderMode(),t.element.appendChild(t.tableElement),t.firstRender=!0,t.element.addEventListener("scroll",function(){var e=t.element.scrollLeft;t.scrollLeft!=e&&(t.columnManager.scrollHorizontal(e),t.table.options.groupBy&&t.table.modules.groupRows.scrollHeaders(e),t.table.modExists("columnCalcs")&&t.table.modules.columnCalcs.scrollHorizontal(e)),t.scrollLeft=e}),"virtual"===this.renderMode&&t.element.addEventListener("scroll",function(){var e=t.element.scrollTop,o=t.scrollTop>e;t.scrollTop!=e?(t.scrollTop=e,t.scrollVertical(o),"scroll"==t.table.options.ajaxProgressiveLoad&&t.table.modules.ajax.nextPage(t.element.scrollHeight-t.element.clientHeight-e)):t.scrollTop=e})},RowManager.prototype.findRow=function(t){var e=this;if("object"!=(void 0===t?"undefined":_typeof(t))){if(void 0===t||null===t)return!1;return e.rows.find(function(o){return o.data[e.table.options.index]==t})||!1}if(t instanceof Row)return t;if(t instanceof RowComponent)return t._getSelf()||!1;if("undefined"!=typeof HTMLElement&&t instanceof HTMLElement){return e.rows.find(function(e){return e.element===t})||!1}return!1},RowManager.prototype.getRowFromDataObject=function(t){return this.rows.find(function(e){return e.data===t})||!1},RowManager.prototype.getRowFromPosition=function(t,e){return e?this.activeRows[t]:this.rows[t]},RowManager.prototype.scrollToRow=function(t,e,o){var i,n=this,l=this.getDisplayRows().indexOf(t),s=t.getElement(),a=0;return new Promise(function(t,r){if(l>-1){if(void 0===e&&(e=n.table.options.scrollToRowPosition),void 0===o&&(o=n.table.options.scrollToRowIfVisible),"nearest"===e)switch(n.renderMode){case"classic":i=Tabulator.prototype.helpers.elOffset(s).top,e=Math.abs(n.element.scrollTop-i)>Math.abs(n.element.scrollTop+n.element.clientHeight-i)?"bottom":"top";break;case"virtual":e=Math.abs(n.vDomTop-l)>Math.abs(n.vDomBottom-l)?"bottom":"top"}if(!o&&Tabulator.prototype.helpers.elVisible(s)&&(a=Tabulator.prototype.helpers.elOffset(s).top-Tabulator.prototype.helpers.elOffset(n.element).top)>0&&a<n.element.clientHeight-s.offsetHeight)return!1;switch(n.renderMode){case"classic":n.element.scrollTop=Tabulator.prototype.helpers.elOffset(s).top-Tabulator.prototype.helpers.elOffset(n.element).top+n.element.scrollTop;break;case"virtual":n._virtualRenderFill(l,!0)}switch(e){case"middle":case"center":n.element.scrollHeight-n.element.scrollTop==n.element.clientHeight?n.element.scrollTop=n.element.scrollTop+(s.offsetTop-n.element.scrollTop)-(n.element.scrollHeight-s.offsetTop)/2:n.element.scrollTop=n.element.scrollTop-n.element.clientHeight/2;break;case"bottom":n.element.scrollHeight-n.element.scrollTop==n.element.clientHeight?n.element.scrollTop=n.element.scrollTop-(n.element.scrollHeight-s.offsetTop)+s.offsetHeight:n.element.scrollTop=n.element.scrollTop-n.element.clientHeight+s.offsetHeight}t()}else console.warn("Scroll Error - Row not visible"),r("Scroll Error - Row not visible")})},RowManager.prototype.setData=function(t,e){var o=this,i=this;return new Promise(function(n,l){e&&o.getDisplayRows().length?i.table.options.pagination?i._setDataActual(t,!0):o.reRenderInPosition(function(){i._setDataActual(t)}):(o.table.options.autoColumns&&o.table.columnManager.generateColumnsFromRowData(t),o.resetScroll(),o._setDataActual(t)),n()})},RowManager.prototype._setDataActual=function(t,e){var o=this;o.table.options.dataLoading.call(this.table,t),this._wipeElements(),this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.clear(),Array.isArray(t)?(this.table.modExists("selectRow")&&this.table.modules.selectRow.clearSelectionData(),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchData(t),t.forEach(function(t,e){if(t&&"object"===(void 0===t?"undefined":_typeof(t))){var i=new Row(t,o);o.rows.push(i)}else console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:",t)}),o.table.options.dataLoaded.call(this.table,t),o.refreshActiveData(!1,!1,e)):console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ",void 0===t?"undefined":_typeof(t),"\nData:     ",t)},RowManager.prototype._wipeElements=function(){this.rows.forEach(function(t){t.wipe()}),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.wipe(),this.rows=[]},RowManager.prototype.deleteRow=function(t,e){var o=this.rows.indexOf(t),i=this.activeRows.indexOf(t);i>-1&&this.activeRows.splice(i,1),o>-1&&this.rows.splice(o,1),this.setActiveRows(this.activeRows),this.displayRowIterator(function(e){var o=e.indexOf(t);o>-1&&e.splice(o,1)}),e||this.reRenderInPosition(),this.table.options.rowDeleted.call(this.table,t.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.groupRows.updateGroupRows(!0):this.table.options.pagination&&this.table.modExists("page")?this.refreshActiveData(!1,!1,!0):this.table.options.pagination&&this.table.modExists("page")&&this.refreshActiveData("page")},RowManager.prototype.addRow=function(t,e,o,i){var n=this.addRowActual(t,e,o,i);return this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowAdd",n,{data:t,pos:e,index:o}),n},RowManager.prototype.addRows=function(t,e,o){var i=this,n=this,l=0,s=[];return new Promise(function(a,r){e=i.findAddRowPos(e),Array.isArray(t)||(t=[t]),l=t.length-1,(void 0===o&&e||void 0!==o&&!e)&&t.reverse(),t.forEach(function(t,i){var l=n.addRow(t,e,o,!0);s.push(l)}),i.table.options.groupBy&&i.table.modExists("groupRows")?i.table.modules.groupRows.updateGroupRows(!0):i.table.options.pagination&&i.table.modExists("page")?i.refreshActiveData(!1,!1,!0):i.reRenderInPosition(),i.table.modExists("columnCalcs")&&i.table.modules.columnCalcs.recalc(i.table.rowManager.activeRows),a(s)})},RowManager.prototype.findAddRowPos=function(t){return void 0===t&&(t=this.table.options.addRowPos),"pos"===t&&(t=!0),"bottom"===t&&(t=!1),t},RowManager.prototype.addRowActual=function(t,e,o,i){var n,l=t instanceof Row?t:new Row(t||{},this),s=this.findAddRowPos(e);if(!o&&this.table.options.pagination&&"page"==this.table.options.paginationAddRow&&(n=this.getDisplayRows(),s?n.length?o=n[0]:this.activeRows.length&&(o=this.activeRows[this.activeRows.length-1],s=!1):n.length&&(o=n[n.length-1],s=!(n.length<this.table.modules.page.getPageSize()))),o&&(o=this.findRow(o)),this.table.options.groupBy&&this.table.modExists("groupRows")){this.table.modules.groupRows.assignRowToGroup(l);var a=l.getGroup().rows;a.length>1&&(!o||o&&-1==a.indexOf(o)?s?a[0]!==l&&(o=a[0],this._moveRowInArray(l.getGroup().rows,l,o,!s)):a[a.length-1]!==l&&(o=a[a.length-1],this._moveRowInArray(l.getGroup().rows,l,o,!s)):this._moveRowInArray(l.getGroup().rows,l,o,!s))}if(o){var r=this.rows.indexOf(o),u=this.activeRows.indexOf(o);this.displayRowIterator(function(t){var e=t.indexOf(o);e>-1&&t.splice(s?e:e+1,0,l)}),u>-1&&this.activeRows.splice(s?u:u+1,0,l),r>-1&&this.rows.splice(s?r:r+1,0,l)}else s?(this.displayRowIterator(function(t){t.unshift(l)}),this.activeRows.unshift(l),this.rows.unshift(l)):(this.displayRowIterator(function(t){t.push(l)}),this.activeRows.push(l),this.rows.push(l));return this.setActiveRows(this.activeRows),this.table.options.rowAdded.call(this.table,l.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),i||this.reRenderInPosition(),l},RowManager.prototype.moveRow=function(t,e,o){this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowMove",t,{pos:this.getRowPosition(t),to:e,after:o}),this.moveRowActual(t,e,o),this.table.options.rowMoved.call(this.table,t.getComponent())},RowManager.prototype.moveRowActual=function(t,e,o){var i=this;if(this._moveRowInArray(this.rows,t,e,o),this._moveRowInArray(this.activeRows,t,e,o),this.displayRowIterator(function(n){i._moveRowInArray(n,t,e,o)}),this.table.options.groupBy&&this.table.modExists("groupRows")){var n=e.getGroup(),l=t.getGroup();n===l?this._moveRowInArray(n.rows,t,e,o):(l&&l.removeRow(t),n.insertRow(t,e,o))}},RowManager.prototype._moveRowInArray=function(t,e,o,i){var n,l,s,a;if(e!==o&&(n=t.indexOf(e),n>-1&&(t.splice(n,1),l=t.indexOf(o),l>-1?i?t.splice(l+1,0,e):t.splice(l,0,e):t.splice(n,0,e)),t===this.getDisplayRows())){s=n<l?n:l,a=l>n?l:n+1;for(var r=s;r<=a;r++)t[r]&&this.styleRow(t[r],r)}},RowManager.prototype.clearData=function(){this.setData([])},RowManager.prototype.getRowIndex=function(t){return this.findRowIndex(t,this.rows)},RowManager.prototype.getDisplayRowIndex=function(t){var e=this.getDisplayRows().indexOf(t);return e>-1&&e},RowManager.prototype.nextDisplayRow=function(t,e){var o=this.getDisplayRowIndex(t),i=!1;return!1!==o&&o<this.displayRowsCount-1&&(i=this.getDisplayRows()[o+1]),!i||i instanceof Row&&"row"==i.type?i:this.nextDisplayRow(i,e)},RowManager.prototype.prevDisplayRow=function(t,e){var o=this.getDisplayRowIndex(t),i=!1;return o&&(i=this.getDisplayRows()[o-1]),!i||i instanceof Row&&"row"==i.type?i:this.prevDisplayRow(i,e)},RowManager.prototype.findRowIndex=function(t,e){var o;return!!((t=this.findRow(t))&&(o=e.indexOf(t))>-1)&&o},RowManager.prototype.getData=function(t,e){var o=this,i=[];return(t?o.activeRows:o.rows).forEach(function(t){i.push(t.getData(e||"data"))}),i},RowManager.prototype.getComponents=function(t){var e=this,o=[];return(t?e.activeRows:e.rows).forEach(function(t){o.push(t.getComponent())}),o},RowManager.prototype.getDataCount=function(t){return t?this.activeRows.length:this.rows.length},RowManager.prototype._genRemoteRequest=function(){var t=this,e=t.table,o=e.options,i={};if(e.modExists("page")){if(o.ajaxSorting){var n=t.table.modules.sort.getSort();n.forEach(function(t){delete t.column}),i[t.table.modules.page.paginationDataSentNames.sorters]=n}if(o.ajaxFiltering){var l=t.table.modules.filter.getFilters(!0,!0);i[t.table.modules.page.paginationDataSentNames.filters]=l}t.table.modules.ajax.setParams(i,!0)}e.modules.ajax.sendRequest().then(function(e){t.setData(e)}).catch(function(t){})},RowManager.prototype.filterRefresh=function(){var t=this.table,e=t.options,o=this.scrollLeft;e.ajaxFiltering?"remote"==e.pagination&&t.modExists("page")?(t.modules.page.reset(!0),t.modules.page.setPage(1).then(function(){}).catch(function(){})):e.ajaxProgressiveLoad?t.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData("filter"),this.scrollHorizontal(o)},RowManager.prototype.sorterRefresh=function(t){var e=this.table,o=this.table.options,i=this.scrollLeft;o.ajaxSorting?("remote"==o.pagination||o.progressiveLoad)&&e.modExists("page")?(e.modules.page.reset(!0),e.modules.page.setPage(1).then(function(){}).catch(function(){})):o.ajaxProgressiveLoad?e.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData(t?"filter":"sort"),this.scrollHorizontal(i)},RowManager.prototype.scrollHorizontal=function(t){this.scrollLeft=t,this.element.scrollLeft=t,this.table.options.groupBy&&this.table.modules.groupRows.scrollHeaders(t),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.scrollHorizontal(t)},RowManager.prototype.refreshActiveData=function(t,e,o){var i,n=this,l=this.table;switch(n.table.modExists("edit")&&n.table.modules.edit.cancelEdit(),t||(t="all"),l.options.selectable&&!l.options.selectablePersistence&&l.modExists("selectRow")&&l.modules.selectRow.deselectRows(),t){case"all":case"filter":e?e=!1:l.modExists("filter")?n.setActiveRows(l.modules.filter.filter(n.rows)):n.setActiveRows(n.rows.slice(0));case"sort":e?e=!1:l.modExists("sort")&&l.modules.sort.sort(this.activeRows);case"display":this.resetDisplayRows();case"freeze":e?e=!1:this.table.modExists("frozenRows")&&l.modules.frozenRows.isFrozen()&&(l.modules.frozenRows.getDisplayIndex()||l.modules.frozenRows.setDisplayIndex(this.getNextDisplayIndex()),i=l.modules.frozenRows.getDisplayIndex(),!0!==(i=n.setDisplayRows(l.modules.frozenRows.getRows(this.getDisplayRows(i-1)),i))&&l.modules.frozenRows.setDisplayIndex(i));case"group":e?e=!1:l.options.groupBy&&l.modExists("groupRows")&&(l.modules.groupRows.getDisplayIndex()||l.modules.groupRows.setDisplayIndex(this.getNextDisplayIndex()),i=l.modules.groupRows.getDisplayIndex(),!0!==(i=n.setDisplayRows(l.modules.groupRows.getRows(this.getDisplayRows(i-1)),i))&&l.modules.groupRows.setDisplayIndex(i));case"tree":e?e=!1:l.options.dataTree&&l.modExists("dataTree")&&(l.modules.dataTree.getDisplayIndex()||l.modules.dataTree.setDisplayIndex(this.getNextDisplayIndex()),i=l.modules.dataTree.getDisplayIndex(),!0!==(i=n.setDisplayRows(l.modules.dataTree.getRows(this.getDisplayRows(i-1)),i))&&l.modules.dataTree.setDisplayIndex(i)),l.options.pagination&&l.modExists("page")&&!o&&"local"==l.modules.page.getMode()&&l.modules.page.reset();case"page":e?e=!1:l.options.pagination&&l.modExists("page")&&(l.modules.page.getDisplayIndex()||l.modules.page.setDisplayIndex(this.getNextDisplayIndex()),i=l.modules.page.getDisplayIndex(),"local"==l.modules.page.getMode()&&l.modules.page.setMaxRows(this.getDisplayRows(i-1).length),!0!==(i=n.setDisplayRows(l.modules.page.getRows(this.getDisplayRows(i-1)),i))&&l.modules.page.setDisplayIndex(i))}Tabulator.prototype.helpers.elVisible(n.element)&&(o?n.reRenderInPosition():(n.renderTable(),l.options.layoutColumnsOnNewData&&n.table.columnManager.redraw(!0))),l.modExists("columnCalcs")&&l.modules.columnCalcs.recalc(this.activeRows)},RowManager.prototype.setActiveRows=function(t){this.activeRows=t,this.activeRowsCount=this.activeRows.length},RowManager.prototype.resetDisplayRows=function(){this.displayRows=[],this.displayRows.push(this.activeRows.slice(0)),this.displayRowsCount=this.displayRows[0].length,this.table.modExists("frozenRows")&&this.table.modules.frozenRows.setDisplayIndex(0),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.setDisplayIndex(0),this.table.options.pagination&&this.table.modExists("page")&&this.table.modules.page.setDisplayIndex(0)},RowManager.prototype.getNextDisplayIndex=function(){return this.displayRows.length},RowManager.prototype.setDisplayRows=function(t,e){var o=!0;return e&&void 0!==this.displayRows[e]?(this.displayRows[e]=t,o=!0):(this.displayRows.push(t),o=e=this.displayRows.length-1),e==this.displayRows.length-1&&(this.displayRowsCount=this.displayRows[this.displayRows.length-1].length),o},RowManager.prototype.getDisplayRows=function(t){return void 0===t?this.displayRows.length?this.displayRows[this.displayRows.length-1]:[]:this.displayRows[t]||[]},RowManager.prototype.getVisibleRows=function(t){var e=this.element.scrollTop,o=this.element.clientHeight+e,i=!1,n=0,l=0,s=this.getDisplayRows();if(t){this.getDisplayRows();for(var a=this.vDomTop;a<=this.vDomBottom;a++)if(s[a])if(i){if(!(o-s[a].getElement().offsetTop>=0))break;l=a}else e-s[a].getElement().offsetTop>=0?n=a:i=!0}else n=this.vDomTop,l=this.vDomBottom;return s.slice(n,l+1)},RowManager.prototype.displayRowIterator=function(t){this.displayRows.forEach(t),this.displayRowsCount=this.displayRows[this.displayRows.length-1].length},RowManager.prototype.getRows=function(){return this.rows},RowManager.prototype.reRenderInPosition=function(t){if("virtual"==this.getRenderMode()){for(var e=this.element.scrollTop,o=!1,i=!1,n=this.scrollLeft,l=this.getDisplayRows(),s=this.vDomTop;s<=this.vDomBottom;s++)if(l[s]){var a=e-l[s].getElement().offsetTop;if(!(!1===i||Math.abs(a)<i))break;i=a,o=s}t&&t(),this._virtualRenderFill(!1===o?this.displayRowsCount-1:o,!0,i||0),this.scrollHorizontal(n)}else this.renderTable(),t&&t()},RowManager.prototype.setRenderMode=function(){(this.table.element.clientHeight||this.table.options.height)&&this.table.options.virtualDom?this.renderMode="virtual":this.renderMode="classic"},RowManager.prototype.getRenderMode=function(){return this.renderMode},RowManager.prototype.renderTable=function(){var t=this;switch(t.table.options.renderStarted.call(this.table),t.element.scrollTop=0,t.renderMode){case"classic":t._simpleRender();break;case"virtual":t._virtualRenderFill()}t.firstRender&&(t.displayRowsCount?(t.firstRender=!1,t.table.modules.layout.layout()):t.renderEmptyScroll()),t.table.modExists("frozenColumns")&&t.table.modules.frozenColumns.layout(),t.displayRowsCount||t.table.options.placeholder&&(this.renderMode&&t.table.options.placeholder.setAttribute("tabulator-render-mode",this.renderMode),t.getElement().appendChild(t.table.options.placeholder)),t.table.options.renderComplete.call(this.table)},RowManager.prototype._simpleRender=function(){this._clearVirtualDom(),this.displayRowsCount?this.checkClassicModeGroupHeaderWidth():this.renderEmptyScroll()},RowManager.prototype.checkClassicModeGroupHeaderWidth=function(){var t=this,e=this.tableElement,o=!0;t.getDisplayRows().forEach(function(i,n){t.styleRow(i,n),e.appendChild(i.getElement()),i.initialize(!0),"group"!==i.type&&(o=!1)}),e.style.minWidth=o?t.table.columnManager.getWidth()+"px":""},RowManager.prototype.renderEmptyScroll=function(){this.tableElement.style.minWidth=this.table.columnManager.getWidth()+"px",this.tableElement.style.minHeight="1px",this.tableElement.style.visibility="hidden"},RowManager.prototype._clearVirtualDom=function(){var t=this.tableElement;for(this.table.options.placeholder&&this.table.options.placeholder.parentNode&&this.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);t.firstChild;)t.removeChild(t.firstChild);t.style.paddingTop="",t.style.paddingBottom="",t.style.minWidth="",t.style.minHeight="",t.style.visibility="",this.scrollTop=0,this.scrollLeft=0,this.vDomTop=0,this.vDomBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0},RowManager.prototype.styleRow=function(t,e){var o=t.getElement();e%2?(o.classList.add("tabulator-row-even"),o.classList.remove("tabulator-row-odd")):(o.classList.add("tabulator-row-odd"),o.classList.remove("tabulator-row-even"))},RowManager.prototype._virtualRenderFill=function(t,e,o){var i=this,n=i.tableElement,l=i.element,s=0,a=0,r=0,u=0,c=!0,h=i.getDisplayRows();if(t=t||0,o=o||0,t){for(;n.firstChild;)n.removeChild(n.firstChild);var p=(i.displayRowsCount-t+1)*i.vDomRowHeight;p<i.height&&(t-=Math.ceil((i.height-p)/i.vDomRowHeight))<0&&(t=0),s=Math.min(Math.max(Math.floor(i.vDomWindowBuffer/i.vDomRowHeight),i.vDomWindowMinMarginRows),t),t-=s}else i._clearVirtualDom();if(i.displayRowsCount&&Tabulator.prototype.helpers.elVisible(i.element)){for(i.vDomTop=t,i.vDomBottom=t-1;(a<=i.height+i.vDomWindowBuffer||u<i.vDomWindowMinTotalRows)&&i.vDomBottom<i.displayRowsCount-1;){var d=i.vDomBottom+1,m=h[d],f=0;i.styleRow(m,d),n.appendChild(m.getElement()),m.initialized?m.heightInitialized||m.normalizeHeight(!0):m.initialize(!0),f=m.getHeight(),u<s?r+=f:a+=f,f>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*f),"group"!==m.type&&(c=!1),i.vDomBottom++,u++}t?(i.vDomTopPad=e?i.vDomRowHeight*this.vDomTop+o:i.scrollTop-r,i.vDomBottomPad=i.vDomBottom==i.displayRowsCount-1?0:Math.max(i.vDomScrollHeight-i.vDomTopPad-a-r,0)):(this.vDomTopPad=0,i.vDomRowHeight=Math.floor((a+r)/u),i.vDomBottomPad=i.vDomRowHeight*(i.displayRowsCount-i.vDomBottom-1),i.vDomScrollHeight=r+a+i.vDomBottomPad-i.height),n.style.paddingTop=i.vDomTopPad+"px",n.style.paddingBottom=i.vDomBottomPad+"px",e&&(this.scrollTop=i.vDomTopPad+r+o-(this.element.scrollWidth>this.element.clientWidth?this.element.offsetHeight-this.element.clientHeight:0)),this.scrollTop=Math.min(this.scrollTop,this.element.scrollHeight-this.height),this.element.scrollWidth>this.element.offsetWidth&&e&&(this.scrollTop+=this.element.offsetHeight-this.element.clientHeight),this.vDomScrollPosTop=this.scrollTop,this.vDomScrollPosBottom=this.scrollTop,l.scrollTop=this.scrollTop,n.style.minWidth=c?i.table.columnManager.getWidth()+"px":"",i.table.options.groupBy&&"fitDataFill"!=i.table.modules.layout.getMode()&&i.displayRowsCount==i.table.modules.groupRows.countGroups()&&(i.tableElement.style.minWidth=i.table.columnManager.getWidth())}else this.renderEmptyScroll()},RowManager.prototype.scrollVertical=function(t){var e=this.scrollTop-this.vDomScrollPosTop,o=this.scrollTop-this.vDomScrollPosBottom,i=2*this.vDomWindowBuffer;if(-e>i||o>i){var n=this.scrollLeft;this._virtualRenderFill(Math.floor(this.element.scrollTop/this.element.scrollHeight*this.displayRowsCount)),this.scrollHorizontal(n)}else t?(e<0&&this._addTopRow(-e),o<0&&this.vDomScrollHeight-this.scrollTop>this.vDomWindowBuffer&&this._removeBottomRow(-o)):(e>=0&&this.scrollTop>this.vDomWindowBuffer&&this._removeTopRow(e),o>=0&&this._addBottomRow(o))},RowManager.prototype._addTopRow=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=this.tableElement,i=this.getDisplayRows();if(this.vDomTop){var n=this.vDomTop-1,l=i[n],s=l.getHeight()||this.vDomRowHeight;t>=s&&(this.styleRow(l,n),o.insertBefore(l.getElement(),o.firstChild),l.initialized&&l.heightInitialized||(this.vDomTopNewRows.push(l),l.heightInitialized||l.clearCellHeight()),l.initialize(),this.vDomTopPad-=s,this.vDomTopPad<0&&(this.vDomTopPad=n*this.vDomRowHeight),n||(this.vDomTopPad=0),o.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop-=s,this.vDomTop--),t=-(this.scrollTop-this.vDomScrollPosTop),l.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*l.getHeight()),e<this.vDomMaxRenderChain&&this.vDomTop&&t>=(i[this.vDomTop-1].getHeight()||this.vDomRowHeight)?this._addTopRow(t,e+1):this._quickNormalizeRowHeight(this.vDomTopNewRows)}},RowManager.prototype._removeTopRow=function(t){var e=this.tableElement,o=this.getDisplayRows()[this.vDomTop],i=o.getHeight()||this.vDomRowHeight;if(t>=i){var n=o.getElement();n.parentNode.removeChild(n),this.vDomTopPad+=i,e.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop+=this.vDomTop?i:i+this.vDomWindowBuffer,this.vDomTop++,t=this.scrollTop-this.vDomScrollPosTop,this._removeTopRow(t)}},RowManager.prototype._addBottomRow=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=this.tableElement,i=this.getDisplayRows();if(this.vDomBottom<this.displayRowsCount-1){var n=this.vDomBottom+1,l=i[n],s=l.getHeight()||this.vDomRowHeight;t>=s&&(this.styleRow(l,n),o.appendChild(l.getElement()),l.initialized&&l.heightInitialized||(this.vDomBottomNewRows.push(l),l.heightInitialized||l.clearCellHeight()),l.initialize(),this.vDomBottomPad-=s,(this.vDomBottomPad<0||n==this.displayRowsCount-1)&&(this.vDomBottomPad=0),o.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom+=s,this.vDomBottom++),t=this.scrollTop-this.vDomScrollPosBottom,l.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*l.getHeight()),e<this.vDomMaxRenderChain&&this.vDomBottom<this.displayRowsCount-1&&t>=(i[this.vDomBottom+1].getHeight()||this.vDomRowHeight)?this._addBottomRow(t,e+1):this._quickNormalizeRowHeight(this.vDomBottomNewRows)}},RowManager.prototype._removeBottomRow=function(t){var e=this.tableElement,o=this.getDisplayRows()[this.vDomBottom],i=o.getHeight()||this.vDomRowHeight;if(t>=i){var n=o.getElement();n.parentNode&&n.parentNode.removeChild(n),this.vDomBottomPad+=i,this.vDomBottomPad<0&&(this.vDomBottomPad=0),e.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom-=i,this.vDomBottom--,t=-(this.scrollTop-this.vDomScrollPosBottom),this._removeBottomRow(t)}},RowManager.prototype._quickNormalizeRowHeight=function(t){t.forEach(function(t){t.calcHeight()}),t.forEach(function(t){t.setCellHeight()}),t.length=0},RowManager.prototype.normalizeHeight=function(){this.activeRows.forEach(function(t){t.normalizeHeight()})},RowManager.prototype.adjustTableSize=function(){if("virtual"===this.renderMode){this.height=this.element.clientHeight,this.vDomWindowBuffer=this.table.options.virtualDomBuffer||this.height;var t=this.columnManager.getElement().offsetHeight+(this.table.footerManager&&!this.table.footerManager.external?this.table.footerManager.getElement().offsetHeight:0);this.element.style.minHeight="calc(100% - "+t+"px)",this.element.style.height="calc(100% - "+t+"px)",this.element.style.maxHeight="calc(100% - "+t+"px)"}},RowManager.prototype.reinitialize=function(){this.rows.forEach(function(t){t.reinitialize()})},RowManager.prototype.redraw=function(t){var e=this.scrollLeft;this.adjustTableSize(),this.table.tableWidth=this.table.element.clientWidth,t?this.renderTable():("classic"==this.renderMode?this.table.options.groupBy?this.refreshActiveData("group",!1,!1):this._simpleRender():(this.reRenderInPosition(),this.scrollHorizontal(e)),this.displayRowsCount||this.table.options.placeholder&&this.getElement().appendChild(this.table.options.placeholder))},RowManager.prototype.resetScroll=function(){if(this.element.scrollLeft=0,this.element.scrollTop=0,"ie"===this.table.browser){var t=document.createEvent("Event");t.initEvent("scroll",!1,!0),this.element.dispatchEvent(t)}else this.element.dispatchEvent(new Event("scroll"))};var RowComponent=function(t){this._row=t};RowComponent.prototype.getData=function(t){return this._row.getData(t)},RowComponent.prototype.getElement=function(){return this._row.getElement()},RowComponent.prototype.getCells=function(){var t=[];return this._row.getCells().forEach(function(e){t.push(e.getComponent())}),t},RowComponent.prototype.getCell=function(t){var e=this._row.getCell(t);return!!e&&e.getComponent()},RowComponent.prototype.getIndex=function(){return this._row.getData("data")[this._row.table.options.index]},RowComponent.prototype.getPosition=function(t){return this._row.table.rowManager.getRowPosition(this._row,t)},RowComponent.prototype.delete=function(){return this._row.delete()},RowComponent.prototype.scrollTo=function(){return this._row.table.rowManager.scrollToRow(this._row)},RowComponent.prototype.pageTo=function(){if(this._row.table.modExists("page",!0))return this._row.table.modules.page.setPageToRow(this._row)},RowComponent.prototype.move=function(t,e){this._row.moveToRow(t,e)},RowComponent.prototype.update=function(t){return this._row.updateData(t)},RowComponent.prototype.normalizeHeight=function(){this._row.normalizeHeight(!0)},RowComponent.prototype.select=function(){this._row.table.modules.selectRow.selectRows(this._row)},RowComponent.prototype.deselect=function(){this._row.table.modules.selectRow.deselectRows(this._row)},RowComponent.prototype.toggleSelect=function(){this._row.table.modules.selectRow.toggleRow(this._row)},RowComponent.prototype.isSelected=function(){return this._row.table.modules.selectRow.isRowSelected(this._row)},RowComponent.prototype._getSelf=function(){return this._row},RowComponent.prototype.freeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.freezeRow(this._row)},RowComponent.prototype.unfreeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.unfreezeRow(this._row)},RowComponent.prototype.treeCollapse=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.collapseRow(this._row)},RowComponent.prototype.treeExpand=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.expandRow(this._row)},RowComponent.prototype.treeToggle=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.toggleRow(this._row)},RowComponent.prototype.getTreeParent=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeParent(this._row)},RowComponent.prototype.getTreeChildren=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeChildren(this._row)},RowComponent.prototype.reformat=function(){return this._row.reinitialize()},RowComponent.prototype.getGroup=function(){return this._row.getGroup().getComponent()},RowComponent.prototype.getTable=function(){return this._row.table},RowComponent.prototype.getNextRow=function(){var t=this._row.nextRow();return t?t.getComponent():t},RowComponent.prototype.getPrevRow=function(){var t=this._row.prevRow();return t?t.getComponent():t};var Row=function(t,e){this.table=e.table,this.parent=e,this.data={},this.type="row",this.element=this.createElement(),this.modules={},this.cells=[],this.height=0,this.heightStyled="",this.manualHeight=!1,this.outerHeight=0,this.initialized=!1,this.heightInitialized=!1,this.setData(t),this.generateElement()};Row.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-row"),t.setAttribute("role","row"),t},Row.prototype.getElement=function(){return this.element},Row.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},Row.prototype.generateElement=function(){var t,e,o,i=this;!1!==i.table.options.selectable&&i.table.modExists("selectRow")&&i.table.modules.selectRow.initializeRow(this),!1!==i.table.options.movableRows&&i.table.modExists("moveRow")&&i.table.modules.moveRow.initializeRow(this),!1!==i.table.options.dataTree&&i.table.modExists("dataTree")&&i.table.modules.dataTree.initializeRow(this),i.table.options.rowClick&&i.element.addEventListener("click",function(t){i.table.options.rowClick(t,i.getComponent())}),i.table.options.rowDblClick&&i.element.addEventListener("dblclick",function(t){i.table.options.rowDblClick(t,i.getComponent())}),i.table.options.rowContext&&i.element.addEventListener("contextmenu",function(t){i.table.options.rowContext(t,i.getComponent())}),i.table.options.rowMouseEnter&&i.element.addEventListener("mouseenter",function(t){i.table.options.rowMouseEnter(t,i.getComponent())}),i.table.options.rowMouseLeave&&i.element.addEventListener("mouseleave",function(t){i.table.options.rowMouseLeave(t,i.getComponent())}),i.table.options.rowMouseOver&&i.element.addEventListener("mouseover",function(t){i.table.options.rowMouseOver(t,i.getComponent())}),i.table.options.rowMouseOut&&i.element.addEventListener("mouseout",function(t){i.table.options.rowMouseOut(t,i.getComponent())}),i.table.options.rowMouseMove&&i.element.addEventListener("mousemove",function(t){i.table.options.rowMouseMove(t,i.getComponent())}),i.table.options.rowTap&&(o=!1,i.element.addEventListener("touchstart",function(t){o=!0},{passive:!0}),i.element.addEventListener("touchend",function(t){o&&i.table.options.rowTap(t,i.getComponent()),o=!1})),i.table.options.rowDblTap&&(t=null,i.element.addEventListener("touchend",function(e){t?(clearTimeout(t),t=null,i.table.options.rowDblTap(e,i.getComponent())):t=setTimeout(function(){clearTimeout(t),t=null},300)})),i.table.options.rowTapHold&&(e=null,i.element.addEventListener("touchstart",function(t){clearTimeout(e),e=setTimeout(function(){clearTimeout(e),e=null,o=!1,i.table.options.rowTapHold(t,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(t){clearTimeout(e),e=null}))},Row.prototype.generateCells=function(){this.cells=this.table.columnManager.generateCells(this)},Row.prototype.initialize=function(t){var e=this;if(!e.initialized||t){for(e.deleteCells();e.element.firstChild;)e.element.removeChild(e.element.firstChild);this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutRow(this),this.generateCells(),e.cells.forEach(function(t){e.element.appendChild(t.getElement()),t.cellRendered()}),t&&e.normalizeHeight(),e.table.options.dataTree&&e.table.modExists("dataTree")&&e.table.modules.dataTree.layoutRow(this),
-"collapse"===e.table.options.responsiveLayout&&e.table.modExists("responsiveLayout")&&e.table.modules.responsiveLayout.layoutRow(this),e.table.options.rowFormatter&&e.table.options.rowFormatter(e.getComponent()),e.table.options.resizableRows&&e.table.modExists("resizeRows")&&e.table.modules.resizeRows.initializeRow(e),e.initialized=!0}},Row.prototype.reinitializeHeight=function(){this.heightInitialized=!1,null!==this.element.offsetParent&&this.normalizeHeight(!0)},Row.prototype.reinitialize=function(){this.initialized=!1,this.heightInitialized=!1,this.manualHeight||(this.height=0,this.heightStyled=""),null!==this.element.offsetParent&&this.initialize(!0)},Row.prototype.calcHeight=function(t){var e=0,o=this.table.options.resizableRows?this.element.clientHeight:0;this.cells.forEach(function(t){var o=t.getHeight();o>e&&(e=o)}),this.height=t?Math.max(e,o):this.manualHeight?this.height:Math.max(e,o),this.heightStyled=this.height?this.height+"px":"",this.outerHeight=this.element.offsetHeight},Row.prototype.setCellHeight=function(){this.cells.forEach(function(t){t.setHeight()}),this.heightInitialized=!0},Row.prototype.clearCellHeight=function(){this.cells.forEach(function(t){t.clearHeight()})},Row.prototype.normalizeHeight=function(t){t&&this.clearCellHeight(),this.calcHeight(t),this.setCellHeight()},Row.prototype.setHeight=function(t,e){(this.height!=t||e)&&(this.manualHeight=!0,this.height=t,this.heightStyled=t?t+"px":"",this.setCellHeight(),this.outerHeight=this.element.offsetHeight)},Row.prototype.getHeight=function(){return this.outerHeight},Row.prototype.getWidth=function(){return this.element.offsetWidth},Row.prototype.deleteCell=function(t){var e=this.cells.indexOf(t);e>-1&&this.cells.splice(e,1)},Row.prototype.setData=function(t){this.table.modExists("mutator")&&(t=this.table.modules.mutator.transformRow(t,"data")),this.data=t,this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchRow(this)},Row.prototype.updateData=function(t){var e=this,o=this,i=Tabulator.prototype.helpers.elVisible(this.element);return new Promise(function(n,l){"string"==typeof t&&(t=JSON.parse(t)),e.table.options.reactiveData&&e.table.modExists("reactiveData",!0)&&e.table.modules.reactiveData.block(),o.table.modExists("mutator")&&(t=o.table.modules.mutator.transformRow(t,"data",!0));for(var s in t)o.data[s]=t[s];e.table.options.reactiveData&&e.table.modExists("reactiveData",!0)&&e.table.modules.reactiveData.unblock();for(var s in t){e.table.columnManager.getColumnsByFieldRoot(s).forEach(function(o){var n=e.getCell(o.getField());if(n){var l=o.getFieldValue(t);n.getValue()!=l&&(n.setValueProcessData(l),i&&n.cellRendered())}})}i?(o.normalizeHeight(),o.table.options.rowFormatter&&o.table.options.rowFormatter(o.getComponent())):(e.initialized=!1,e.height=0,e.heightStyled=""),!1!==o.table.options.dataTree&&o.table.modExists("dataTree")&&e.table.modules.dataTree.redrawNeeded(t)&&(e.table.modules.dataTree.initializeRow(e),e.table.modules.dataTree.layoutRow(e),e.table.rowManager.refreshActiveData("tree",!1,!0)),o.table.options.rowUpdated.call(e.table,o.getComponent()),n()})},Row.prototype.getData=function(t){var e=this;return t?e.table.modExists("accessor")?e.table.modules.accessor.transformRow(e.data,t):void 0:this.data},Row.prototype.getCell=function(t){return t=this.table.columnManager.findColumn(t),this.cells.find(function(e){return e.column===t})},Row.prototype.getCellIndex=function(t){return this.cells.findIndex(function(e){return e===t})},Row.prototype.findNextEditableCell=function(t){var e=!1;if(t<this.cells.length-1)for(var o=t+1;o<this.cells.length;o++){var i=this.cells[o];if(i.column.modules.edit&&Tabulator.prototype.helpers.elVisible(i.getElement())){var n=!0;if("function"==typeof i.column.modules.edit.check&&(n=i.column.modules.edit.check(i.getComponent())),n){e=i;break}}}return e},Row.prototype.findPrevEditableCell=function(t){var e=!1;if(t>0)for(var o=t-1;o>=0;o--){var i=this.cells[o],n=!0;if(i.column.modules.edit&&Tabulator.prototype.helpers.elVisible(i.getElement())&&("function"==typeof i.column.modules.edit.check&&(n=i.column.modules.edit.check(i.getComponent())),n)){e=i;break}}return e},Row.prototype.getCells=function(){return this.cells},Row.prototype.nextRow=function(){return this.table.rowManager.nextDisplayRow(this,!0)||!1},Row.prototype.prevRow=function(){return this.table.rowManager.prevDisplayRow(this,!0)||!1},Row.prototype.moveToRow=function(t,e){var o=this.table.rowManager.findRow(t);o?(this.table.rowManager.moveRowActual(this,o,!e),this.table.rowManager.refreshActiveData("display",!1,!0)):console.warn("Move Error - No matching row found:",t)},Row.prototype.delete=function(){var t=this;return new Promise(function(e,o){var i,n;t.table.options.history&&t.table.modExists("history")&&(t.table.options.groupBy&&t.table.modExists("groupRows")?(n=t.getGroup().rows,(i=n.indexOf(t))&&(i=n[i-1])):(i=t.table.rowManager.getRowIndex(t))&&(i=t.table.rowManager.rows[i-1]),t.table.modules.history.action("rowDelete",t,{data:t.getData(),pos:!i,index:i})),t.deleteActual(),e()})},Row.prototype.deleteActual=function(t){this.table.rowManager.getRowIndex(this);this.table.modExists("selectRow")&&this.table.modules.selectRow._deselectRow(this,!0),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0),this.modules.group&&this.modules.group.removeRow(this),this.table.rowManager.deleteRow(this,t),this.deleteCells(),this.initialized=!1,this.heightInitialized=!1,this.table.modExists("columnCalcs")&&(this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.columnCalcs.recalcRowGroup(this):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows))},Row.prototype.deleteCells=function(){for(var t=this.cells.length,e=0;e<t;e++)this.cells[0].delete()},Row.prototype.wipe=function(){for(this.deleteCells();this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element=!1,this.modules={},this.element.parentNode&&this.element.parentNode.removeChild(this.element)},Row.prototype.getGroup=function(){return this.modules.group||!1},Row.prototype.getComponent=function(){return new RowComponent(this)};var CellComponent=function(t){this._cell=t};CellComponent.prototype.getValue=function(){return this._cell.getValue()},CellComponent.prototype.getOldValue=function(){return this._cell.getOldValue()},CellComponent.prototype.getElement=function(){return this._cell.getElement()},CellComponent.prototype.getRow=function(){return this._cell.row.getComponent()},CellComponent.prototype.getData=function(){return this._cell.row.getData()},CellComponent.prototype.getField=function(){return this._cell.column.getField()},CellComponent.prototype.getColumn=function(){return this._cell.column.getComponent()},CellComponent.prototype.setValue=function(t,e){void 0===e&&(e=!0),this._cell.setValue(t,e)},CellComponent.prototype.restoreOldValue=function(){this._cell.setValueActual(this._cell.getOldValue())},CellComponent.prototype.edit=function(t){return this._cell.edit(t)},CellComponent.prototype.cancelEdit=function(){this._cell.cancelEdit()},CellComponent.prototype.nav=function(){return this._cell.nav()},CellComponent.prototype.checkHeight=function(){this._cell.checkHeight()},CellComponent.prototype.getTable=function(){return this._cell.table},CellComponent.prototype._getSelf=function(){return this._cell};var Cell=function(t,e){this.table=t.table,this.column=t,this.row=e,this.element=null,this.value=null,this.oldValue=null,this.height=null,this.width=null,this.minWidth=null,this.build()};Cell.prototype.build=function(){this.generateElement(),this.setWidth(),this._configureCell(),this.setValueActual(this.column.getFieldValue(this.row.data))},Cell.prototype.generateElement=function(){this.element=document.createElement("div"),this.element.className="tabulator-cell",this.element.setAttribute("role","gridcell"),this.element=this.element},Cell.prototype._configureCell=function(){var t=this,e=t.column.cellEvents,o=t.element,i=this.column.getField();if(o.style.textAlign=t.column.hozAlign,i&&o.setAttribute("tabulator-field",i),t.column.definition.cssClass){t.column.definition.cssClass.split(" ").forEach(function(t){o.classList.add(t)})}"hover"===this.table.options.tooltipGenerationMode&&o.addEventListener("mouseenter",function(e){t._generateTooltip()}),t._bindClickEvents(e),t._bindTouchEvents(e),t._bindMouseEvents(e),t.column.modules.edit&&t.table.modules.edit.bindEditor(t),t.column.definition.rowHandle&&!1!==t.table.options.movableRows&&t.table.modExists("moveRow")&&t.table.modules.moveRow.initializeCell(t),t.column.visible||t.hide()},Cell.prototype._bindClickEvents=function(t){var e=this,o=e.element;(t.cellClick||e.table.options.cellClick)&&o.addEventListener("click",function(o){var i=e.getComponent();t.cellClick&&t.cellClick.call(e.table,o,i),e.table.options.cellClick&&e.table.options.cellClick.call(e.table,o,i)}),t.cellDblClick||this.table.options.cellDblClick?o.addEventListener("dblclick",function(o){var i=e.getComponent();t.cellDblClick&&t.cellDblClick.call(e.table,o,i),e.table.options.cellDblClick&&e.table.options.cellDblClick.call(e.table,o,i)}):o.addEventListener("dblclick",function(t){t.preventDefault();try{if(document.selection){var o=document.body.createTextRange();o.moveToElementText(e.element),o.select()}else if(window.getSelection){var o=document.createRange();o.selectNode(e.element),window.getSelection().removeAllRanges(),window.getSelection().addRange(o)}}catch(t){}}),(t.cellContext||this.table.options.cellContext)&&o.addEventListener("contextmenu",function(o){var i=e.getComponent();t.cellContext&&t.cellContext.call(e.table,o,i),e.table.options.cellContext&&e.table.options.cellContext.call(e.table,o,i)})},Cell.prototype._bindMouseEvents=function(t){var e=this,o=e.element;(t.cellMouseEnter||e.table.options.cellMouseEnter)&&o.addEventListener("mouseenter",function(o){var i=e.getComponent();t.cellMouseEnter&&t.cellMouseEnter.call(e.table,o,i),e.table.options.cellMouseEnter&&e.table.options.cellMouseEnter.call(e.table,o,i)}),(t.cellMouseLeave||e.table.options.cellMouseLeave)&&o.addEventListener("mouseleave",function(o){var i=e.getComponent();t.cellMouseLeave&&t.cellMouseLeave.call(e.table,o,i),e.table.options.cellMouseLeave&&e.table.options.cellMouseLeave.call(e.table,o,i)}),(t.cellMouseOver||e.table.options.cellMouseOver)&&o.addEventListener("mouseover",function(o){var i=e.getComponent();t.cellMouseOver&&t.cellMouseOver.call(e.table,o,i),e.table.options.cellMouseOver&&e.table.options.cellMouseOver.call(e.table,o,i)}),(t.cellMouseOut||e.table.options.cellMouseOut)&&o.addEventListener("mouseout",function(o){var i=e.getComponent();t.cellMouseOut&&t.cellMouseOut.call(e.table,o,i),e.table.options.cellMouseOut&&e.table.options.cellMouseOut.call(e.table,o,i)}),(t.cellMouseMove||e.table.options.cellMouseMove)&&o.addEventListener("mousemove",function(o){var i=e.getComponent();t.cellMouseMove&&t.cellMouseMove.call(e.table,o,i),e.table.options.cellMouseMove&&e.table.options.cellMouseMove.call(e.table,o,i)})},Cell.prototype._bindTouchEvents=function(t){var e,o,i,n=this,l=n.element;(t.cellTap||this.table.options.cellTap)&&(i=!1,l.addEventListener("touchstart",function(t){i=!0},{passive:!0}),l.addEventListener("touchend",function(e){if(i){var o=n.getComponent();t.cellTap&&t.cellTap.call(n.table,e,o),n.table.options.cellTap&&n.table.options.cellTap.call(n.table,e,o)}i=!1})),(t.cellDblTap||this.table.options.cellDblTap)&&(e=null,l.addEventListener("touchend",function(o){if(e){clearTimeout(e),e=null;var i=n.getComponent();t.cellDblTap&&t.cellDblTap.call(n.table,o,i),n.table.options.cellDblTap&&n.table.options.cellDblTap.call(n.table,o,i)}else e=setTimeout(function(){clearTimeout(e),e=null},300)})),(t.cellTapHold||this.table.options.cellTapHold)&&(o=null,l.addEventListener("touchstart",function(e){clearTimeout(o),o=setTimeout(function(){clearTimeout(o),o=null,i=!1;var l=n.getComponent();t.cellTapHold&&t.cellTapHold.call(n.table,e,l),n.table.options.cellTapHold&&n.table.options.cellTapHold.call(n.table,e,l)},1e3)},{passive:!0}),l.addEventListener("touchend",function(t){clearTimeout(o),o=null}))},Cell.prototype._generateContents=function(){var t;switch(t=this.table.modExists("format")?this.table.modules.format.formatValue(this):this.element.innerHTML=this.value,void 0===t?"undefined":_typeof(t)){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}},Cell.prototype.cellRendered=function(){this.table.modExists("format")&&this.table.modules.format.cellRendered&&this.table.modules.format.cellRendered(this)},Cell.prototype._generateTooltip=function(){var t=this.column.tooltip;t?(!0===t?t=this.value:"function"==typeof t&&!1===(t=t(this.getComponent()))&&(t=""),void 0===t&&(t=""),this.element.setAttribute("title",t)):this.element.setAttribute("title","")},Cell.prototype.getElement=function(){return this.element},Cell.prototype.getValue=function(){return this.value},Cell.prototype.getOldValue=function(){return this.oldValue},Cell.prototype.setValue=function(t,e){var o,i=this.setValueProcessData(t,e);i&&(this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("cellEdit",this,{oldValue:this.oldValue,newValue:this.value}),o=this.getComponent(),this.column.cellEvents.cellEdited&&this.column.cellEvents.cellEdited.call(this.table,o),this.table.options.cellEdited.call(this.table,o),this.table.options.dataEdited.call(this.table,this.table.rowManager.getData()))},Cell.prototype.setValueProcessData=function(t,e){var o=!1;return this.value!=t&&(o=!0,e&&this.column.modules.mutate&&(t=this.table.modules.mutator.transformCell(this,t))),this.setValueActual(t),o&&this.table.modExists("columnCalcs")&&(this.column.definition.topCalc||this.column.definition.bottomCalc)&&(this.table.options.groupBy&&this.table.modExists("groupRows")?("table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs||this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),"table"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.recalcRowGroup(this.row)):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows)),o},Cell.prototype.setValueActual=function(t){this.oldValue=this.value,this.value=t,this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.block(),this.column.setFieldValue(this.row.data,t),this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.unblock(),this._generateContents(),this._generateTooltip(),this.table.options.resizableColumns&&this.table.modExists("resizeColumns")&&this.table.modules.resizeColumns.initializeColumn("cell",this.column,this.element),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutElement(this.element,this.column)},Cell.prototype.setWidth=function(){this.width=this.column.width,this.element.style.width=this.column.widthStyled},Cell.prototype.clearWidth=function(){this.width="",this.element.style.width=""},Cell.prototype.getWidth=function(){return this.width||this.element.offsetWidth},Cell.prototype.setMinWidth=function(){this.minWidth=this.column.minWidth,this.element.style.minWidth=this.column.minWidthStyled},Cell.prototype.checkHeight=function(){this.row.reinitializeHeight()},Cell.prototype.clearHeight=function(){this.element.style.height="",this.height=null},Cell.prototype.setHeight=function(){this.height=this.row.height,this.element.style.height=this.row.heightStyled},Cell.prototype.getHeight=function(){return this.height||this.element.offsetHeight},Cell.prototype.show=function(){this.element.style.display=""},Cell.prototype.hide=function(){this.element.style.display="none"},Cell.prototype.edit=function(t){if(this.table.modExists("edit",!0))return this.table.modules.edit.editCell(this,t)},Cell.prototype.cancelEdit=function(){if(this.table.modExists("edit",!0)){var t=this.table.modules.edit.getCurrentCell();t&&t._getSelf()===this?this.table.modules.edit.cancelEdit():console.warn("Cancel Editor Error - This cell is not currently being edited ")}},Cell.prototype.delete=function(){this.element.parentNode.removeChild(this.element),this.element=!1,this.column.deleteCell(this),this.row.deleteCell(this),this.calcs={}},Cell.prototype.nav=function(){var t=this,e=!1,o=this.row.getCellIndex(this);return{next:function(){var e,o=this.right();return!!o||!(!(e=t.table.rowManager.nextDisplayRow(t.row,!0))||!(o=e.findNextEditableCell(-1)))&&(o.edit(),!0)},prev:function(){var e,o=this.left();return!!o||!(!(e=t.table.rowManager.prevDisplayRow(t.row,!0))||!(o=e.findPrevEditableCell(e.cells.length)))&&(o.edit(),!0)},left:function(){return!!(e=t.row.findPrevEditableCell(o))&&(e.edit(),!0)},right:function(){return!!(e=t.row.findNextEditableCell(o))&&(e.edit(),!0)},up:function(){var e=t.table.rowManager.prevDisplayRow(t.row,!0);e&&e.cells[o].edit()},down:function(){var e=t.table.rowManager.nextDisplayRow(t.row,!0);e&&e.cells[o].edit()}}},Cell.prototype.getIndex=function(){this.row.getCellIndex(this)},Cell.prototype.getComponent=function(){return new CellComponent(this)};var FooterManager=function(t){this.table=t,this.active=!1,this.element=this.createElement(),this.external=!1,this.links=[],this._initialize()};FooterManager.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-footer"),t},FooterManager.prototype._initialize=function(t){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}},FooterManager.prototype.getElement=function(){return this.element},FooterManager.prototype.append=function(t,e){this.activate(e),this.element.appendChild(t),this.table.rowManager.adjustTableSize()},FooterManager.prototype.prepend=function(t,e){this.activate(e),this.element.insertBefore(t,this.element.firstChild),this.table.rowManager.adjustTableSize()},FooterManager.prototype.remove=function(t){t.parentNode.removeChild(t),this.deactivate()},FooterManager.prototype.deactivate=function(t){this.element.firstChild&&!t||(this.external||this.element.parentNode.removeChild(this.element),this.active=!1)},FooterManager.prototype.activate=function(t){this.active||(this.active=!0,this.external||(this.table.element.appendChild(this.getElement()),this.table.element.style.display="")),t&&this.links.push(t)},FooterManager.prototype.redraw=function(){this.links.forEach(function(t){t.footerRedraw()})};var Tabulator=function t(e,o){this.options={},this.columnManager=null,this.rowManager=null,this.footerManager=null,this.browser="",this.browserSlow=!1,this.modules={},this.initializeElement(e),this.initializeOptions(o||{}),this._create(),t.prototype.comms.register(this)};Tabulator.prototype.defaultOptions={height:!1,layout:"fitData",layoutColumnsOnNewData:!1,columnMinWidth:40,columnVertAlign:"top",resizableColumns:!0,resizableRows:!1,autoResize:!0,columns:[],data:[],autoColumns:!1,reactiveData:!1,nestedFieldSeparator:".",tooltips:!1,tooltipsHeader:!1,tooltipGenerationMode:"load",initialSort:!1,initialFilter:!1,initialHeaderFilter:!1,columnHeaderSortMulti:!0,sortOrderReverse:!1,headerSort:!0,headerSortTristate:!1,footerElement:!1,index:"id",keybindings:[],tabEndNewRow:!1,invalidOptionWarnings:!0,clipboard:!1,clipboardCopyStyled:!0,clipboardCopySelector:"active",clipboardCopyFormatter:"table",clipboardPasteParser:"table",clipboardPasteAction:"insert",clipboardCopyConfig:!1,clipboardCopied:function(){},clipboardPasted:function(){},clipboardPasteError:function(){},downloadDataFormatter:!1,downloadReady:function(t,e){return e},downloadComplete:!1,downloadConfig:!1,dataTree:!1,dataTreeElementColumn:!1,dataTreeBranchElement:!0,dataTreeChildIndent:9,dataTreeChildField:"_children",dataTreeCollapseElement:!1,dataTreeExpandElement:!1,dataTreeStartExpanded:!1,dataTreeRowExpanded:function(){},dataTreeRowCollapsed:function(){},printAsHtml:!1,printFormatter:!1,printHeader:!1,printFooter:!1,printCopyStyle:!0,printVisibleRows:!0,printConfig:{},addRowPos:"bottom",selectable:"highlight",selectableRangeMode:"drag",selectableRollingSelection:!0,selectablePersistence:!0,selectableCheck:function(t,e){return!0},headerFilterPlaceholder:!1,headerVisible:!0,history:!1,locale:!1,langs:{},virtualDom:!0,virtualDomBuffer:0,persistentLayout:!1,persistentSort:!1,persistentFilter:!1,persistenceID:"",persistenceMode:!0,responsiveLayout:!1,responsiveLayoutCollapseStartOpen:!0,responsiveLayoutCollapseUseFormatters:!0,responsiveLayoutCollapseFormatter:!1,pagination:!1,paginationSize:!1,paginationButtonCount:5,paginationSizeSelector:!1,paginationElement:!1,paginationDataSent:{},paginationDataReceived:{},paginationAddRow:"page",ajaxURL:!1,ajaxURLGenerator:!1,ajaxParams:{},ajaxConfig:"get",ajaxContentType:"form",ajaxRequestFunc:!1,ajaxLoader:!0,ajaxLoaderLoading:!1,ajaxLoaderError:!1,ajaxFiltering:!1,ajaxSorting:!1,ajaxProgressiveLoad:!1,ajaxProgressiveLoadDelay:0,ajaxProgressiveLoadScrollMargin:0,groupBy:!1,groupStartOpen:!0,groupValues:!1,groupHeader:!1,htmlOutputConfig:!1,movableColumns:!1,movableRows:!1,movableRowsConnectedTables:!1,movableRowsSender:!1,movableRowsReceiver:"insert",movableRowsSendingStart:function(){},movableRowsSent:function(){},movableRowsSentFailed:function(){},movableRowsSendingStop:function(){},movableRowsReceivingStart:function(){},movableRowsReceived:function(){},movableRowsReceivedFailed:function(){},movableRowsReceivingStop:function(){},scrollToRowPosition:"top",scrollToRowIfVisible:!0,scrollToColumnPosition:"left",scrollToColumnIfVisible:!0,rowFormatter:!1,placeholder:!1,tableBuilding:function(){},tableBuilt:function(){},renderStarted:function(){},renderComplete:function(){},rowClick:!1,rowDblClick:!1,rowContext:!1,rowTap:!1,rowDblTap:!1,rowTapHold:!1,rowMouseEnter:!1,rowMouseLeave:!1,rowMouseOver:!1,rowMouseOut:!1,rowMouseMove:!1,rowAdded:function(){},rowDeleted:function(){},rowMoved:function(){},rowUpdated:function(){},rowSelectionChanged:function(){},rowSelected:function(){},rowDeselected:function(){},rowResized:function(){},cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1,cellEditing:function(){},cellEdited:function(){},cellEditCancelled:function(){},columnMoved:!1,columnResized:function(){},columnTitleChanged:function(){},columnVisibilityChanged:function(){},htmlImporting:function(){},htmlImported:function(){},dataLoading:function(){},dataLoaded:function(){},dataEdited:function(){},ajaxRequesting:function(){},ajaxResponse:!1,ajaxError:function(){},dataFiltering:!1,dataFiltered:!1,dataSorting:function(){},dataSorted:function(){},groupToggleElement:"arrow",groupClosedShowCalcs:!1,dataGrouping:function(){},dataGrouped:!1,groupVisibilityChanged:function(){},groupClick:!1,groupDblClick:!1,groupContext:!1,groupTap:!1,groupDblTap:!1,groupTapHold:!1,columnCalcs:!0,pageLoaded:function(){},localized:function(){},validationFailed:function(){},historyUndo:function(){},historyRedo:function(){}},Tabulator.prototype.initializeOptions=function(t){if(!1!==t.invalidOptionWarnings)for(var e in t)void 0===this.defaultOptions[e]&&console.warn("Invalid table constructor option:",e);for(var e in this.defaultOptions)e in t?this.options[e]=t[e]:Array.isArray(this.defaultOptions[e])?this.options[e]=[]:"object"===_typeof(this.defaultOptions[e])?this.options[e]={}:this.options[e]=this.defaultOptions[e]},Tabulator.prototype.initializeElement=function(t){return"undefined"!=typeof HTMLElement&&t instanceof HTMLElement?(this.element=t,!0):"string"==typeof t?(this.element=document.querySelector(t),!!this.element||(console.error("Tabulator Creation Error - no element found matching selector: ",t),!1)):(console.error("Tabulator Creation Error - Invalid element provided:",t),!1)},Tabulator.prototype._mapDepricatedFunctionality=function(){},Tabulator.prototype._clearSelection=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")},Tabulator.prototype._create=function(){this._clearObjectPointers(),this._mapDepricatedFunctionality(),this.bindModules(),"TABLE"===this.element.tagName&&this.modExists("htmlTableImport",!0)&&this.modules.htmlTableImport.parseTable(),this.columnManager=new ColumnManager(this),this.rowManager=new RowManager(this),this.footerManager=new FooterManager(this),this.columnManager.setRowManager(this.rowManager),this.rowManager.setColumnManager(this.columnManager),this._buildElement(),this._loadInitialData()},Tabulator.prototype._clearObjectPointers=function(){this.options.columns=this.options.columns.slice(0),this.options.reactiveData||(this.options.data=this.options.data.slice(0))},Tabulator.prototype._buildElement=function(){var t=this,e=this.element,o=this.modules,i=this.options;for(i.tableBuilding.call(this),e.classList.add("tabulator"),e.setAttribute("role","grid");e.firstChild;)e.removeChild(e.firstChild);i.height&&(i.height=isNaN(i.height)?i.height:i.height+"px",e.style.height=i.height),this.columnManager.initialize(),this.rowManager.initialize(),this._detectBrowser(),this.modExists("layout",!0)&&o.layout.initialize(i.layout),!1!==i.headerFilterPlaceholder&&o.localize.setHeaderFilterPlaceholder(i.headerFilterPlaceholder);for(var n in i.langs)o.localize.installLang(n,i.langs[n]);if(o.localize.setLocale(i.locale),"string"==typeof i.placeholder){var l=document.createElement("div");l.classList.add("tabulator-placeholder");var s=document.createElement("span");s.innerHTML=i.placeholder,l.appendChild(s),i.placeholder=l}if(e.appendChild(this.columnManager.getElement()),e.appendChild(this.rowManager.getElement()),i.footerElement&&this.footerManager.activate(),(i.persistentLayout||i.persistentSort||i.persistentFilter)&&this.modExists("persistence",!0)&&o.persistence.initialize(i.persistenceMode,i.persistenceID),i.persistentLayout&&this.modExists("persistence",!0)&&(i.columns=o.persistence.load("columns",i.columns)),i.movableRows&&this.modExists("moveRow")&&o.moveRow.initialize(),i.autoColumns&&this.options.data&&this.columnManager.generateColumnsFromRowData(this.options.data),this.modExists("columnCalcs")&&o.columnCalcs.initialize(),this.columnManager.setColumns(i.columns),i.dataTree&&this.modExists("dataTree",!0)&&o.dataTree.initialize(),this.modExists("frozenRows")&&this.modules.frozenRows.initialize(),(i.persistentSort||i.initialSort)&&this.modExists("sort",!0)){var a=[];i.persistentSort&&this.modExists("persistence",!0)?!1===(a=o.persistence.load("sort"))&&i.initialSort&&(a=i.initialSort):i.initialSort&&(a=i.initialSort),o.sort.setSort(a)}if((i.persistentFilter||i.initialFilter)&&this.modExists("filter",!0)){var r=[];i.persistentFilter&&this.modExists("persistence",!0)?!1===(r=o.persistence.load("filter"))&&i.initialFilter&&(r=i.initialFilter):i.initialFilter&&(r=i.initialFilter),o.filter.setFilter(r)}i.initialHeaderFilter&&this.modExists("filter",!0)&&i.initialHeaderFilter.forEach(function(e){var i=t.columnManager.findColumn(e.field);if(!i)return console.warn("Column Filter Error - No matching column found:",e.field),!1;o.filter.setHeaderFilterValue(i,e.value)}),this.modExists("ajax")&&o.ajax.initialize(),i.pagination&&this.modExists("page",!0)&&o.page.initialize(),i.groupBy&&this.modExists("groupRows",!0)&&o.groupRows.initialize(),this.modExists("keybindings")&&o.keybindings.initialize(),this.modExists("selectRow")&&o.selectRow.clearSelectionData(!0),i.autoResize&&this.modExists("resizeTable")&&o.resizeTable.initialize(),this.modExists("clipboard")&&o.clipboard.initialize(),i.printAsHtml&&this.modExists("print")&&o.print.initialize(),i.tableBuilt.call(this)},Tabulator.prototype._loadInitialData=function(){var t=this;t.options.pagination&&t.modExists("page")?(t.modules.page.reset(!0),"local"==t.options.pagination?t.options.data.length?t.rowManager.setData(t.options.data):(t.options.ajaxURL||t.options.ajaxURLGenerator)&&t.modExists("ajax")?t.modules.ajax.loadData().then(function(){}).catch(function(){}):t.rowManager.setData(t.options.data):t.options.ajaxURL?t.modules.page.setPage(1).then(function(){}).catch(function(){}):t.rowManager.setData([])):t.options.data.length?t.rowManager.setData(t.options.data):(t.options.ajaxURL||t.options.ajaxURLGenerator)&&t.modExists("ajax")?t.modules.ajax.loadData().then(function(){}).catch(function(){}):t.rowManager.setData(t.options.data)},Tabulator.prototype.destroy=function(){var t=this.element;for(Tabulator.prototype.comms.deregister(this),this.options.reactiveData&&this.modExists("reactiveData",!0)&&this.modules.reactiveData.unwatchData(),this.rowManager.rows.forEach(function(t){t.wipe()}),this.rowManager.rows=[],this.rowManager.activeRows=[],this.rowManager.displayRows=[],this.options.autoResize&&this.modExists("resizeTable")&&this.modules.resizeTable.clearBindings(),this.modExists("keybindings")&&this.modules.keybindings.clearBindings();t.firstChild;)t.removeChild(t.firstChild);t.classList.remove("tabulator")},Tabulator.prototype._detectBrowser=function(){var t=navigator.userAgent;t.indexOf("Trident")>-1?(this.browser="ie",this.browserSlow=!0):t.indexOf("Edge")>-1?(this.browser="edge",this.browserSlow=!0):t.indexOf("Firefox")>-1?(this.browser="firefox",this.browserSlow=!1):(this.browser="other",this.browserSlow=!1)},Tabulator.prototype.setDataFromLocalFile=function(t){var e=this;return new Promise(function(o,i){var n=document.createElement("input");n.type="file",n.accept=t||".json,application/json",n.addEventListener("change",function(t){var l,s=n.files[0],a=new FileReader;a.readAsText(s),a.onload=function(t){try{l=JSON.parse(a.result)}catch(t){return console.warn("File Load Error - File contents is invalid JSON",t),void i(t)}e._setData(l).then(function(t){o(t)}).catch(function(t){o(t)})},a.onerror=function(t){console.warn("File Load Error - Unable to read file"),i()}}),n.click()})},Tabulator.prototype.setData=function(t,e,o){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(t,e,o)},Tabulator.prototype._setData=function(t,e,o,i){var n=this;return"string"!=typeof t?t?n.rowManager.setData(t,i):n.modExists("ajax")&&(n.modules.ajax.getUrl||n.options.ajaxURLGenerator)?"remote"==n.options.pagination&&n.modExists("page",!0)?(n.modules.page.reset(!0),n.modules.page.setPage(1)):n.modules.ajax.loadData(i):n.rowManager.setData([],i):0==t.indexOf("{")||0==t.indexOf("[")?n.rowManager.setData(JSON.parse(t),i):n.modExists("ajax",!0)?(e&&n.modules.ajax.setParams(e),o&&n.modules.ajax.setConfig(o),n.modules.ajax.setUrl(t),"remote"==n.options.pagination&&n.modExists("page",!0)?(n.modules.page.reset(!0),n.modules.page.setPage(1)):n.modules.ajax.loadData(i)):void 0},Tabulator.prototype.clearData=function(){this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this.rowManager.clearData()},Tabulator.prototype.getData=function(t){return this.rowManager.getData(t)},Tabulator.prototype.getDataCount=function(t){return this.rowManager.getDataCount(t)},Tabulator.prototype.searchRows=function(t,e,o){if(this.modExists("filter",!0))return this.modules.filter.search("rows",t,e,o)},Tabulator.prototype.searchData=function(t,e,o){
-if(this.modExists("filter",!0))return this.modules.filter.search("data",t,e,o)},Tabulator.prototype.getHtml=function(t,e,o){if(this.modExists("htmlTableExport",!0))return this.modules.htmlTableExport.getHtml(t,e,o)},Tabulator.prototype.print=function(t,e,o){if(this.modExists("print",!0))return this.modules.print.printFullscreen(t,e,o)},Tabulator.prototype.getAjaxUrl=function(){if(this.modExists("ajax",!0))return this.modules.ajax.getUrl()},Tabulator.prototype.replaceData=function(t,e,o){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(t,e,o,!0)},Tabulator.prototype.updateData=function(t){var e=this,o=this,i=0;return new Promise(function(n,l){e.modExists("ajax")&&e.modules.ajax.blockActiveRequest(),"string"==typeof t&&(t=JSON.parse(t)),t?t.forEach(function(t){var e=o.rowManager.findRow(t[o.options.index]);e&&(i++,e.updateData(t).then(function(){--i||n()}))}):(console.warn("Update Error - No data provided"),l("Update Error - No data provided"))})},Tabulator.prototype.addData=function(t,e,o){var i=this;return new Promise(function(n,l){i.modExists("ajax")&&i.modules.ajax.blockActiveRequest(),"string"==typeof t&&(t=JSON.parse(t)),t?i.rowManager.addRows(t,e,o).then(function(t){var e=[];t.forEach(function(t){e.push(t.getComponent())}),n(e)}):(console.warn("Update Error - No data provided"),l("Update Error - No data provided"))})},Tabulator.prototype.updateOrAddData=function(t){var e=this,o=this,i=[],n=0;return new Promise(function(l,s){e.modExists("ajax")&&e.modules.ajax.blockActiveRequest(),"string"==typeof t&&(t=JSON.parse(t)),t?t.forEach(function(t){var e=o.rowManager.findRow(t[o.options.index]);n++,e?e.updateData(t).then(function(){n--,i.push(e.getComponent()),n||l(i)}):o.rowManager.addRows(t).then(function(t){n--,i.push(t[0].getComponent()),n||l(i)})}):(console.warn("Update Error - No data provided"),s("Update Error - No data provided"))})},Tabulator.prototype.getRow=function(t){var e=this.rowManager.findRow(t);return e?e.getComponent():(console.warn("Find Error - No matching row found:",t),!1)},Tabulator.prototype.getRowFromPosition=function(t,e){var o=this.rowManager.getRowFromPosition(t,e);return o?o.getComponent():(console.warn("Find Error - No matching row found:",t),!1)},Tabulator.prototype.deleteRow=function(t){var e=this;return new Promise(function(o,i){var n=e.rowManager.findRow(t);n?n.delete().then(function(){o()}).catch(function(t){i(t)}):(console.warn("Delete Error - No matching row found:",t),i("Delete Error - No matching row found"))})},Tabulator.prototype.addRow=function(t,e,o){var i=this;return new Promise(function(n,l){"string"==typeof t&&(t=JSON.parse(t)),i.rowManager.addRows(t,e,o).then(function(t){i.modExists("columnCalcs")&&i.modules.columnCalcs.recalc(i.rowManager.activeRows),n(t[0].getComponent())})})},Tabulator.prototype.updateOrAddRow=function(t,e){var o=this;return new Promise(function(i,n){var l=o.rowManager.findRow(t);"string"==typeof e&&(e=JSON.parse(e)),l?l.updateData(e).then(function(){o.modExists("columnCalcs")&&o.modules.columnCalcs.recalc(o.rowManager.activeRows),i(l.getComponent())}).catch(function(t){n(t)}):l=o.rowManager.addRows(e).then(function(t){o.modExists("columnCalcs")&&o.modules.columnCalcs.recalc(o.rowManager.activeRows),i(t[0].getComponent())}).catch(function(t){n(t)})})},Tabulator.prototype.updateRow=function(t,e){var o=this;return new Promise(function(i,n){var l=o.rowManager.findRow(t);"string"==typeof e&&(e=JSON.parse(e)),l?l.updateData(e).then(function(){i(l.getComponent())}).catch(function(t){n(t)}):(console.warn("Update Error - No matching row found:",t),n("Update Error - No matching row found"))})},Tabulator.prototype.scrollToRow=function(t,e,o){var i=this;return new Promise(function(n,l){var s=i.rowManager.findRow(t);s?i.rowManager.scrollToRow(s,e,o).then(function(){n()}).catch(function(t){l(t)}):(console.warn("Scroll Error - No matching row found:",t),l("Scroll Error - No matching row found"))})},Tabulator.prototype.moveRow=function(t,e,o){var i=this.rowManager.findRow(t);i?i.moveToRow(e,o):console.warn("Move Error - No matching row found:",t)},Tabulator.prototype.getRows=function(t){return this.rowManager.getComponents(t)},Tabulator.prototype.getRowPosition=function(t,e){var o=this.rowManager.findRow(t);return o?this.rowManager.getRowPosition(o,e):(console.warn("Position Error - No matching row found:",t),!1)},Tabulator.prototype.copyToClipboard=function(t,e,o,i){this.modExists("clipboard",!0)&&this.modules.clipboard.copy(t,e,o,i)},Tabulator.prototype.setColumns=function(t){this.columnManager.setColumns(t)},Tabulator.prototype.getColumns=function(t){return this.columnManager.getComponents(t)},Tabulator.prototype.getColumn=function(t){var e=this.columnManager.findColumn(t);return e?e.getComponent():(console.warn("Find Error - No matching column found:",t),!1)},Tabulator.prototype.getColumnDefinitions=function(){return this.columnManager.getDefinitionTree()},Tabulator.prototype.getColumnLayout=function(){if(this.modExists("persistence",!0))return this.modules.persistence.parseColumns(this.columnManager.getColumns())},Tabulator.prototype.setColumnLayout=function(t){return!!this.modExists("persistence",!0)&&(this.columnManager.setColumns(this.modules.persistence.mergeDefinition(this.options.columns,t)),!0)},Tabulator.prototype.showColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Show Error - No matching column found:",t),!1;e.show(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},Tabulator.prototype.hideColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Hide Error - No matching column found:",t),!1;e.hide(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},Tabulator.prototype.toggleColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Visibility Toggle Error - No matching column found:",t),!1;e.visible?e.hide():e.show()},Tabulator.prototype.addColumn=function(t,e,o){var i=this.columnManager.findColumn(o);this.columnManager.addColumn(t,e,i)},Tabulator.prototype.deleteColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Delete Error - No matching column found:",t),!1;e.delete()},Tabulator.prototype.moveColumn=function(t,e,o){var i=this.columnManager.findColumn(t),n=this.columnManager.findColumn(e);i?n?this.columnManager.moveColumn(i,n,o):console.warn("Move Error - No matching column found:",n):console.warn("Move Error - No matching column found:",t)},Tabulator.prototype.scrollToColumn=function(t,e,o){var i=this;return new Promise(function(n,l){var s=i.columnManager.findColumn(t);s?i.columnManager.scrollToColumn(s,e,o).then(function(){n()}).catch(function(t){l(t)}):(console.warn("Scroll Error - No matching column found:",t),l("Scroll Error - No matching column found"))})},Tabulator.prototype.setLocale=function(t){this.modules.localize.setLocale(t)},Tabulator.prototype.getLocale=function(){return this.modules.localize.getLocale()},Tabulator.prototype.getLang=function(t){return this.modules.localize.getLang(t)},Tabulator.prototype.redraw=function(t){this.columnManager.redraw(t),this.rowManager.redraw(t)},Tabulator.prototype.setHeight=function(t){"classic"!==this.rowManager.renderMode?(this.options.height=isNaN(t)?t:t+"px",this.element.style.height=this.options.height,this.rowManager.redraw()):console.warn("setHeight function is not available in classic render mode")},Tabulator.prototype.setSort=function(t,e){this.modExists("sort",!0)&&(this.modules.sort.setSort(t,e),this.rowManager.sorterRefresh())},Tabulator.prototype.getSorters=function(){if(this.modExists("sort",!0))return this.modules.sort.getSort()},Tabulator.prototype.clearSort=function(){this.modExists("sort",!0)&&(this.modules.sort.clear(),this.rowManager.sorterRefresh())},Tabulator.prototype.setFilter=function(t,e,o){this.modExists("filter",!0)&&(this.modules.filter.setFilter(t,e,o),this.rowManager.filterRefresh())},Tabulator.prototype.addFilter=function(t,e,o){this.modExists("filter",!0)&&(this.modules.filter.addFilter(t,e,o),this.rowManager.filterRefresh())},Tabulator.prototype.getFilters=function(t){if(this.modExists("filter",!0))return this.modules.filter.getFilters(t)},Tabulator.prototype.setHeaderFilterFocus=function(t){if(this.modExists("filter",!0)){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Filter Focus Error - No matching column found:",t),!1;this.modules.filter.setHeaderFilterFocus(e)}},Tabulator.prototype.setHeaderFilterValue=function(t,e){if(this.modExists("filter",!0)){var o=this.columnManager.findColumn(t);if(!o)return console.warn("Column Filter Error - No matching column found:",t),!1;this.modules.filter.setHeaderFilterValue(o,e)}},Tabulator.prototype.getHeaderFilters=function(){if(this.modExists("filter",!0))return this.modules.filter.getHeaderFilters()},Tabulator.prototype.removeFilter=function(t,e,o){this.modExists("filter",!0)&&(this.modules.filter.removeFilter(t,e,o),this.rowManager.filterRefresh())},Tabulator.prototype.clearFilter=function(t){this.modExists("filter",!0)&&(this.modules.filter.clearFilter(t),this.rowManager.filterRefresh())},Tabulator.prototype.clearHeaderFilter=function(){this.modExists("filter",!0)&&(this.modules.filter.clearHeaderFilter(),this.rowManager.filterRefresh())},Tabulator.prototype.selectRow=function(t){this.modExists("selectRow",!0)&&this.modules.selectRow.selectRows(t)},Tabulator.prototype.deselectRow=function(t){this.modExists("selectRow",!0)&&this.modules.selectRow.deselectRows(t)},Tabulator.prototype.toggleSelectRow=function(t){this.modExists("selectRow",!0)&&this.modules.selectRow.toggleRow(t)},Tabulator.prototype.getSelectedRows=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedRows()},Tabulator.prototype.getSelectedData=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedData()},Tabulator.prototype.setMaxPage=function(t){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setMaxPage(t)},Tabulator.prototype.setPage=function(t){return this.options.pagination&&this.modExists("page")?this.modules.page.setPage(t):new Promise(function(t,e){e()})},Tabulator.prototype.setPageToRow=function(t){var e=this;return new Promise(function(o,i){e.options.pagination&&e.modExists("page")?(t=e.rowManager.findRow(t),t?e.modules.page.setPageToRow(t).then(function(){o()}).catch(function(){i()}):i()):i()})},Tabulator.prototype.setPageSize=function(t){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setPageSize(t),this.modules.page.setPage(1).then(function(){}).catch(function(){})},Tabulator.prototype.getPageSize=function(){if(this.options.pagination&&this.modExists("page",!0))return this.modules.page.getPageSize()},Tabulator.prototype.previousPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.previousPage()},Tabulator.prototype.nextPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.nextPage()},Tabulator.prototype.getPage=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPage()},Tabulator.prototype.getPageMax=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPageMax()},Tabulator.prototype.setGroupBy=function(t){if(!this.modExists("groupRows",!0))return!1;this.options.groupBy=t,this.modules.groupRows.initialize(),this.rowManager.refreshActiveData("display")},Tabulator.prototype.setGroupStartOpen=function(t){if(!this.modExists("groupRows",!0))return!1;this.options.groupStartOpen=t,this.modules.groupRows.initialize(),this.options.groupBy?this.rowManager.refreshActiveData("group"):console.warn("Grouping Update - cant refresh view, no groups have been set")},Tabulator.prototype.setGroupHeader=function(t){if(!this.modExists("groupRows",!0))return!1;this.options.groupHeader=t,this.modules.groupRows.initialize(),this.options.groupBy?this.rowManager.refreshActiveData("group"):console.warn("Grouping Update - cant refresh view, no groups have been set")},Tabulator.prototype.getGroups=function(t){return!!this.modExists("groupRows",!0)&&this.modules.groupRows.getGroups(!0)},Tabulator.prototype.getGroupedData=function(){if(this.modExists("groupRows",!0))return this.options.groupBy?this.modules.groupRows.getGroupedData():this.getData()},Tabulator.prototype.getCalcResults=function(){return!!this.modExists("columnCalcs",!0)&&this.modules.columnCalcs.getResults()},Tabulator.prototype.navigatePrev=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&t.nav().prev()},Tabulator.prototype.navigateNext=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&t.nav().next()},Tabulator.prototype.navigateLeft=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().left())},Tabulator.prototype.navigateRight=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().right())},Tabulator.prototype.navigateUp=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().up())},Tabulator.prototype.navigateDown=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().down())},Tabulator.prototype.undo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.undo()},Tabulator.prototype.redo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.redo()},Tabulator.prototype.getHistoryUndoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryUndoSize()},Tabulator.prototype.getHistoryRedoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryRedoSize()},Tabulator.prototype.download=function(t,e,o){this.modExists("download",!0)&&this.modules.download.download(t,e,o)},Tabulator.prototype.downloadToTab=function(t,e,o){this.modExists("download",!0)&&this.modules.download.download(t,e,o,!0)},Tabulator.prototype.tableComms=function(t,e,o,i){this.modules.comms.receive(t,e,o,i)},Tabulator.prototype.moduleBindings={},Tabulator.prototype.extendModule=function(t,e,o){if(Tabulator.prototype.moduleBindings[t]){var i=Tabulator.prototype.moduleBindings[t].prototype[e];if(i)if("object"==(void 0===o?"undefined":_typeof(o)))for(var n in o)i[n]=o[n];else console.warn("Module Error - Invalid value type, it must be an object");else console.warn("Module Error - property does not exist:",e)}else console.warn("Module Error - module does not exist:",t)},Tabulator.prototype.registerModule=function(t,e){Tabulator.prototype.moduleBindings[t]=e},Tabulator.prototype.bindModules=function(){this.modules={};for(var t in Tabulator.prototype.moduleBindings)this.modules[t]=new Tabulator.prototype.moduleBindings[t](this)},Tabulator.prototype.modExists=function(t,e){return!!this.modules[t]||(e&&console.error("Tabulator Module Not Installed: "+t),!1)},Tabulator.prototype.helpers={elVisible:function(t){return!(t.offsetWidth<=0&&t.offsetHeight<=0)},elOffset:function(t){var e=t.getBoundingClientRect();return{top:e.top+window.pageYOffset-document.documentElement.clientTop,left:e.left+window.pageXOffset-document.documentElement.clientLeft}},deepClone:function(t){var e=Array.isArray(t)?[]:{};for(var o in t)null!=t[o]&&"object"===_typeof(t[o])?t[o]instanceof Date?e[o]=new Date(t[o]):e[o]=this.deepClone(t[o]):e[o]=t[o];return e}},Tabulator.prototype.comms={tables:[],register:function(t){Tabulator.prototype.comms.tables.push(t)},deregister:function(t){var e=Tabulator.prototype.comms.tables.indexOf(t);e>-1&&Tabulator.prototype.comms.tables.splice(e,1)},lookupTable:function(t){var e,o,i=[];if("string"==typeof t){if(e=document.querySelectorAll(t),e.length)for(var n=0;n<e.length;n++)(o=Tabulator.prototype.comms.matchElement(e[n]))&&i.push(o)}else"undefined"!=typeof HTMLElement&&t instanceof HTMLElement||t instanceof Tabulator?(o=Tabulator.prototype.comms.matchElement(t))&&i.push(o):Array.isArray(t)?t.forEach(function(t){i=i.concat(Tabulator.prototype.comms.lookupTable(t))}):console.warn("Table Connection Error - Invalid Selector",t);return i},matchElement:function(t){return Tabulator.prototype.comms.tables.find(function(e){return t instanceof Tabulator?e===t:e.element===t})}};var Layout=function(t){this.table=t,this.mode=null};Layout.prototype.initialize=function(t){this.modes[t]?this.mode=t:(console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : "+t),this.mode="fitData"),this.table.element.setAttribute("tabulator-layout",this.mode)},Layout.prototype.getMode=function(){return this.mode},Layout.prototype.layout=function(){this.modes[this.mode].call(this,this.table.columnManager.columnsByIndex)},Layout.prototype.modes={fitData:function(t){t.forEach(function(t){t.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataFill:function(t){t.forEach(function(t){t.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitColumns:function(t){function e(t){return"string"==typeof t?t.indexOf("%")>-1?n/100*parseInt(t):parseInt(t):t}function o(t,i,n,l){function s(t){return n*(t.column.definition.widthGrow||1)}function a(t){return e(t.width)-n*(t.column.definition.widthShrink||0)}var r=[],u=0,c=0,h=0,p=0,d=0,m=[];return t.forEach(function(t,e){var o=l?a(t):s(t);t.column.minWidth>=o?r.push(t):(m.push(t),d+=l?t.column.definition.widthShrink||1:t.column.definition.widthGrow||1)}),r.length?(r.forEach(function(t){u+=l?t.width-t.column.minWidth:t.column.minWidth,t.width=t.column.minWidth}),c=i-u,h=d?Math.floor(c/d):c,p=c-h*d,p+=o(m,c,h,l)):(p=d?i-Math.floor(i/d)*d:i,m.forEach(function(t){t.width=l?a(t):s(t)})),p}var i=this,n=i.table.element.clientWidth,l=0,s=0,a=0,r=0,u=[],c=[],h=0,p=0,d=0;this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.rowManager.element.scrollHeight>this.table.rowManager.element.clientHeight&&(n-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),t.forEach(function(t){var o,i,n;t.visible&&(o=t.definition.width,i=parseInt(t.minWidth),o?(n=e(o),l+=n>i?n:i,t.definition.widthShrink&&(c.push({column:t,width:n>i?n:i}),h+=t.definition.widthShrink)):(u.push({column:t,width:0}),a+=t.definition.widthGrow||1))}),s=n-l,r=Math.floor(s/a);var d=o(u,s,r,!1);u.length&&d>0&&(u[u.length-1].width+=+d),u.forEach(function(t){s-=t.width}),p=Math.abs(d)+s,p>0&&h&&(d=o(c,p,Math.floor(p/h),!0)),c.length&&(c[c.length-1].width-=d),u.forEach(function(t){t.column.setWidth(t.width)}),c.forEach(function(t){t.column.setWidth(t.width)})}},Tabulator.prototype.registerModule("layout",Layout);var Localize=function(t){this.table=t,this.locale="default",this.lang=!1,this.bindings={}};Localize.prototype.setHeaderFilterPlaceholder=function(t){this.langs.default.headerFilters.default=t},Localize.prototype.setHeaderFilterColumnPlaceholder=function(t,e){this.langs.default.headerFilters.columns[t]=e,this.lang&&!this.lang.headerFilters.columns[t]&&(this.lang.headerFilters.columns[t]=e)},Localize.prototype.installLang=function(t,e){this.langs[t]?this._setLangProp(this.langs[t],e):this.langs[t]=e},Localize.prototype._setLangProp=function(t,e){for(var o in e)t[o]&&"object"==_typeof(t[o])?this._setLangProp(t[o],e[o]):t[o]=e[o]},Localize.prototype.setLocale=function(t){function e(t,o){for(var i in t)"object"==_typeof(t[i])?(o[i]||(o[i]={}),e(t[i],o[i])):o[i]=t[i]}var o=this;if(t=t||"default",!0===t&&navigator.language&&(t=navigator.language.toLowerCase()),t&&!o.langs[t]){var i=t.split("-")[0];o.langs[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")}o.locale=t,o.lang=Tabulator.prototype.helpers.deepClone(o.langs.default||{}),"default"!=t&&e(o.langs[t],o.lang),o.table.options.localized.call(o.table,o.locale,o.lang),o._executeBindings()},Localize.prototype.getLocale=function(t){return self.locale},Localize.prototype.getLang=function(t){return t?this.langs[t]:this.lang},Localize.prototype.getText=function(t,e){var t=e?t+"|"+e:t,o=t.split("|");return this._getLangElement(o,this.locale)||""},Localize.prototype._getLangElement=function(t,e){var o=this,i=o.lang;return t.forEach(function(t){var e;i&&(e=i[t],i=void 0!==e&&e)}),i},Localize.prototype.bind=function(t,e){this.bindings[t]||(this.bindings[t]=[]),this.bindings[t].push(e),e(this.getText(t),this.lang)},Localize.prototype._executeBindings=function(){var t=this;for(var e in t.bindings)!function(e){t.bindings[e].forEach(function(o){o(t.getText(e),t.lang)})}(e)},Localize.prototype.langs={default:{groups:{item:"item",items:"items"},columns:{},ajax:{loading:"Loading",error:"Error"},pagination:{page_size:"Page Size",first:"First",first_title:"First Page",last:"Last",last_title:"Last Page",prev:"Prev",prev_title:"Prev Page",next:"Next",next_title:"Next Page"},headerFilters:{default:"filter column...",columns:{}}}},Tabulator.prototype.registerModule("localize",Localize);var Comms=function(t){this.table=t};Comms.prototype.getConnections=function(t){var e,o=this,i=[];return e=Tabulator.prototype.comms.lookupTable(t),e.forEach(function(t){o.table!==t&&i.push(t)}),i},Comms.prototype.send=function(t,e,o,i){var n=this,l=this.getConnections(t);l.forEach(function(t){t.tableComms(n.table.element,e,o,i)}),!l.length&&t&&console.warn("Table Connection Error - No tables matching selector found",t)},Comms.prototype.receive=function(t,e,o,i){if(this.table.modExists(e))return this.table.modules[e].commsReceived(t,o,i);console.warn("Inter-table Comms Error - no such module:",e)},Tabulator.prototype.registerModule("comms",Comms);
\ No newline at end of file
+/* Tabulator v4.5.1 (c) Oliver Folkerd */
+"use strict";var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};Array.prototype.findIndex||Object.defineProperty(Array.prototype,"findIndex",{value:function(t){if(null==this)throw new TypeError('"this" is null or not defined');var e=Object(this),o=e.length>>>0;if("function"!=typeof t)throw new TypeError("predicate must be a function");for(var i=arguments[1],n=0;n<o;){var s=e[n];if(t.call(i,s,n,e))return n;n++}return-1}}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(t){if(null==this)throw new TypeError('"this" is null or not defined');var e=Object(this),o=e.length>>>0;if("function"!=typeof t)throw new TypeError("predicate must be a function");for(var i=arguments[1],n=0;n<o;){var s=e[n];if(t.call(i,s,n,e))return s;n++}}});var ColumnManager=function(t){this.table=t,this.blockHozScrollEvent=!1,this.headersElement=this.createHeadersElement(),this.element=this.createHeaderElement(),this.rowManager=null,this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.scrollLeft=0,this.element.insertBefore(this.headersElement,this.element.firstChild)};ColumnManager.prototype.createHeadersElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-headers"),t},ColumnManager.prototype.createHeaderElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-header"),this.table.options.headerVisible||t.classList.add("tabulator-header-hidden"),t},ColumnManager.prototype.initialize=function(){},ColumnManager.prototype.setRowManager=function(t){this.rowManager=t},ColumnManager.prototype.getElement=function(){return this.element},ColumnManager.prototype.getHeadersElement=function(){return this.headersElement},ColumnManager.prototype.scrollHorizontal=function(t){var e=0,o=this.element.scrollWidth-this.table.element.clientWidth;this.element.scrollLeft=t,t>o?(e=t-o,this.element.style.marginLeft=-e+"px"):this.element.style.marginLeft=0,this.scrollLeft=t,this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.scrollHorizontal()},ColumnManager.prototype.generateColumnsFromRowData=function(t){var e,o,i=[];if(t&&t.length){e=t[0];for(var n in e){var s={field:n,title:n},l=e[n];switch(void 0===l?"undefined":_typeof(l)){case"undefined":o="string";break;case"boolean":o="boolean";break;case"object":o=Array.isArray(l)?"array":"string";break;default:o=isNaN(l)||""===l?l.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)?"alphanum":"string":"number"}s.sorter=o,i.push(s)}this.table.options.columns=i,this.setColumns(this.table.options.columns)}},ColumnManager.prototype.setColumns=function(t,e){for(var o=this;o.headersElement.firstChild;)o.headersElement.removeChild(o.headersElement.firstChild);o.columns=[],o.columnsByIndex=[],o.columnsByField={},o.table.modExists("frozenColumns")&&o.table.modules.frozenColumns.reset(),t.forEach(function(t,e){o._addColumn(t)}),o._reIndexColumns(),o.table.options.responsiveLayout&&o.table.modExists("responsiveLayout",!0)&&o.table.modules.responsiveLayout.initialize(),o.redraw(!0)},ColumnManager.prototype._addColumn=function(t,e,o){var i=new Column(t,this),n=i.getElement(),s=o?this.findColumnIndex(o):o;if(o&&s>-1){var l=this.columns.indexOf(o.getTopColumn()),a=o.getElement();e?(this.columns.splice(l,0,i),a.parentNode.insertBefore(n,a)):(this.columns.splice(l+1,0,i),a.parentNode.insertBefore(n,a.nextSibling))}else e?(this.columns.unshift(i),this.headersElement.insertBefore(i.getElement(),this.headersElement.firstChild)):(this.columns.push(i),this.headersElement.appendChild(i.getElement())),i.columnRendered();return i},ColumnManager.prototype.registerColumnField=function(t){t.definition.field&&(this.columnsByField[t.definition.field]=t)},ColumnManager.prototype.registerColumnPosition=function(t){this.columnsByIndex.push(t)},ColumnManager.prototype._reIndexColumns=function(){this.columnsByIndex=[],this.columns.forEach(function(t){t.reRegisterPosition()})},ColumnManager.prototype._verticalAlignHeaders=function(){var t=this,e=0;t.columns.forEach(function(t){var o;t.clearVerticalAlign(),(o=t.getHeight())>e&&(e=o)}),t.columns.forEach(function(o){o.verticalAlign(t.table.options.columnHeaderVertAlign,e)}),t.rowManager.adjustTableSize()},ColumnManager.prototype.findColumn=function(t){var e=this;if("object"!=(void 0===t?"undefined":_typeof(t)))return this.columnsByField[t]||!1;if(t instanceof Column)return t;if(t instanceof ColumnComponent)return t._getSelf()||!1;if("undefined"!=typeof HTMLElement&&t instanceof HTMLElement){return e.columns.find(function(e){return e.element===t})||!1}return!1},ColumnManager.prototype.getColumnByField=function(t){return this.columnsByField[t]},ColumnManager.prototype.getColumnsByFieldRoot=function(t){var e=this,o=[];return Object.keys(this.columnsByField).forEach(function(i){i.split(".")[0]===t&&o.push(e.columnsByField[i])}),o},ColumnManager.prototype.getColumnByIndex=function(t){return this.columnsByIndex[t]},ColumnManager.prototype.getFirstVisibileColumn=function(t){var t=this.columnsByIndex.findIndex(function(t){return t.visible});return t>-1&&this.columnsByIndex[t]},ColumnManager.prototype.getColumns=function(){return this.columns},ColumnManager.prototype.findColumnIndex=function(t){return this.columnsByIndex.findIndex(function(e){return t===e})},ColumnManager.prototype.getRealColumns=function(){return this.columnsByIndex},ColumnManager.prototype.traverse=function(t){this.columnsByIndex.forEach(function(e,o){t(e,o)})},ColumnManager.prototype.getDefinitions=function(t){var e=this,o=[];return e.columnsByIndex.forEach(function(e){(!t||t&&e.visible)&&o.push(e.getDefinition())}),o},ColumnManager.prototype.getDefinitionTree=function(){var t=this,e=[];return t.columns.forEach(function(t){e.push(t.getDefinition(!0))}),e},ColumnManager.prototype.getComponents=function(t){var e=this,o=[];return(t?e.columns:e.columnsByIndex).forEach(function(t){o.push(t.getComponent())}),o},ColumnManager.prototype.getWidth=function(){var t=0;return this.columnsByIndex.forEach(function(e){e.visible&&(t+=e.getWidth())}),t},ColumnManager.prototype.moveColumn=function(t,e,o){this.moveColumnActual(t,e,o),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),e.element.parentNode.insertBefore(t.element,e.element),o&&e.element.parentNode.insertBefore(e.element,t.element),this._verticalAlignHeaders(),this.table.rowManager.reinitialize()},ColumnManager.prototype.moveColumnActual=function(t,e,o){this._moveColumnInArray(this.columns,t,e,o),this._moveColumnInArray(this.columnsByIndex,t,e,o,!0),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.options.columnMoved&&this.table.options.columnMoved.call(this.table,t.getComponent(),this.table.columnManager.getComponents()),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns")},ColumnManager.prototype._moveColumnInArray=function(t,e,o,i,n){var s,l=t.indexOf(e);l>-1&&(t.splice(l,1),s=t.indexOf(o),s>-1?i&&(s+=1):s=l,t.splice(s,0,e),n&&this.table.rowManager.rows.forEach(function(t){if(t.cells.length){var e=t.cells.splice(l,1)[0];t.cells.splice(s,0,e)}}))},ColumnManager.prototype.scrollToColumn=function(t,e,o){var i=this,n=0,s=0,l=0,a=t.getElement();return new Promise(function(r,u){if(void 0===e&&(e=i.table.options.scrollToColumnPosition),void 0===o&&(o=i.table.options.scrollToColumnIfVisible),t.visible){switch(e){case"middle":case"center":l=-i.element.clientWidth/2;break;case"right":l=a.clientWidth-i.headersElement.clientWidth}if(!o&&(s=a.offsetLeft)>0&&s+a.offsetWidth<i.element.clientWidth)return!1;n=a.offsetLeft+i.element.scrollLeft+l,n=Math.max(Math.min(n,i.table.rowManager.element.scrollWidth-i.table.rowManager.element.clientWidth),0),i.table.rowManager.scrollHorizontal(n),i.scrollHorizontal(n),r()}else console.warn("Scroll Error - Column not visible"),u("Scroll Error - Column not visible")})},ColumnManager.prototype.generateCells=function(t){var e=this,o=[];return e.columnsByIndex.forEach(function(e){o.push(e.generateCell(t))}),o},ColumnManager.prototype.getFlexBaseWidth=function(){var t=this,e=t.table.element.clientWidth,o=0;return t.rowManager.element.scrollHeight>t.rowManager.element.clientHeight&&(e-=t.rowManager.element.offsetWidth-t.rowManager.element.clientWidth),this.columnsByIndex.forEach(function(i){var n,s,l;i.visible&&(n=i.definition.width||0,s=void 0===i.minWidth?t.table.options.columnMinWidth:parseInt(i.minWidth),l="string"==typeof n?n.indexOf("%")>-1?e/100*parseInt(n):parseInt(n):n,o+=l>s?l:s)}),o},ColumnManager.prototype.addColumn=function(t,e,o){var i=this;return new Promise(function(n,s){var l=i._addColumn(t,e,o);i._reIndexColumns(),i.table.options.responsiveLayout&&i.table.modExists("responsiveLayout",!0)&&i.table.modules.responsiveLayout.initialize(),i.table.modExists("columnCalcs")&&i.table.modules.columnCalcs.recalc(i.table.rowManager.activeRows),i.redraw(),"fitColumns"!=i.table.modules.layout.getMode()&&l.reinitializeWidth(),i._verticalAlignHeaders(),i.table.rowManager.reinitialize(),n(l)})},ColumnManager.prototype.deregisterColumn=function(t){var e,o=t.getField();o&&delete this.columnsByField[o],e=this.columnsByIndex.indexOf(t),e>-1&&this.columnsByIndex.splice(e,1),e=this.columns.indexOf(t),e>-1&&this.columns.splice(e,1),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.redraw()},ColumnManager.prototype.redraw=function(t){t&&(Tabulator.prototype.helpers.elVisible(this.element)&&this._verticalAlignHeaders(),this.table.rowManager.resetScroll(),this.table.rowManager.reinitialize()),["fitColumns","fitDataStretch"].indexOf(this.table.modules.layout.getMode())>-1?this.table.modules.layout.layout():t?this.table.modules.layout.layout():this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),t&&(this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns"),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.redraw()),this.table.footerManager.redraw()};var ColumnComponent=function(t){this._column=t,this.type="ColumnComponent"};ColumnComponent.prototype.getElement=function(){return this._column.getElement()},ColumnComponent.prototype.getDefinition=function(){return this._column.getDefinition()},ColumnComponent.prototype.getField=function(){return this._column.getField()},ColumnComponent.prototype.getCells=function(){var t=[];return this._column.cells.forEach(function(e){t.push(e.getComponent())}),t},ColumnComponent.prototype.getVisibility=function(){return this._column.visible},ColumnComponent.prototype.show=function(){this._column.isGroup?this._column.columns.forEach(function(t){t.show()}):this._column.show()},ColumnComponent.prototype.hide=function(){this._column.isGroup?this._column.columns.forEach(function(t){t.hide()}):this._column.hide()},ColumnComponent.prototype.toggle=function(){this._column.visible?this.hide():this.show()},ColumnComponent.prototype.delete=function(){return this._column.delete()},ColumnComponent.prototype.getSubColumns=function(){var t=[];return this._column.columns.length&&this._column.columns.forEach(function(e){t.push(e.getComponent())}),t},ColumnComponent.prototype.getParentColumn=function(){return this._column.parent instanceof Column&&this._column.parent.getComponent()},ColumnComponent.prototype._getSelf=function(){return this._column},ColumnComponent.prototype.scrollTo=function(){return this._column.table.columnManager.scrollToColumn(this._column)},ColumnComponent.prototype.getTable=function(){return this._column.table},ColumnComponent.prototype.headerFilterFocus=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterFocus(this._column)},ColumnComponent.prototype.reloadHeaderFilter=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.reloadHeaderFilter(this._column)},ColumnComponent.prototype.setHeaderFilterValue=function(t){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterValue(this._column,t)},ColumnComponent.prototype.move=function(t,e){var o=this._column.table.columnManager.findColumn(t);o?this._column.table.columnManager.moveColumn(this._column,o,e):console.warn("Move Error - No matching column found:",o)},ColumnComponent.prototype.getNextColumn=function(){var t=this._column.nextColumn();return!!t&&t.getComponent()},ColumnComponent.prototype.getPrevColumn=function(){var t=this._column.prevColumn();return!!t&&t.getComponent()},ColumnComponent.prototype.updateDefinition=function(t){return this._column.updateDefinition(t)};var Column=function t(e,o){var i=this;this.table=o.table,this.definition=e,this.parent=o,this.type="column",this.columns=[],this.cells=[],this.element=this.createElement(),this.contentElement=!1,this.groupElement=this.createGroupElement(),this.isGroup=!1,this.tooltip=!1,this.hozAlign="",this.field="",this.fieldStructure="",this.getFieldValue="",this.setFieldValue="",this.titleFormatterRendered=!1,this.setField(this.definition.field),this.table.options.invalidOptionWarnings&&this.checkDefinition(),this.modules={},this.cellEvents={cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1},this.width=null,this.widthStyled="",this.minWidth=null,this.minWidthStyled="",this.widthFixed=!1,this.visible=!0,this._mapDepricatedFunctionality(),e.columns?(this.isGroup=!0,e.columns.forEach(function(e,o){var n=new t(e,i);i.attachColumn(n)}),i.checkColumnVisibility()):o.registerColumnField(this),e.rowHandle&&!1!==this.table.options.movableRows&&this.table.modExists("moveRow")&&this.table.modules.moveRow.setHandle(!0),this._buildHeader(),this.bindModuleColumns()};Column.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-col"),t.setAttribute("role","columnheader"),t.setAttribute("aria-sort","none"),t},Column.prototype.createGroupElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-col-group-cols"),t},Column.prototype.checkDefinition=function(){var t=this;Object.keys(this.definition).forEach(function(e){-1===t.defaultOptionList.indexOf(e)&&console.warn("Invalid column definition option in '"+(t.field||t.definition.title)+"' column:",e)})},Column.prototype.setField=function(t){this.field=t,this.fieldStructure=t?this.table.options.nestedFieldSeparator?t.split(this.table.options.nestedFieldSeparator):[t]:[],this.getFieldValue=this.fieldStructure.length>1?this._getNestedData:this._getFlatData,this.setFieldValue=this.fieldStructure.length>1?this._setNesteData:this._setFlatData},Column.prototype.registerColumnPosition=function(t){this.parent.registerColumnPosition(t)},Column.prototype.registerColumnField=function(t){this.parent.registerColumnField(t)},Column.prototype.reRegisterPosition=function(){this.isGroup?this.columns.forEach(function(t){t.reRegisterPosition()}):this.registerColumnPosition(this)},Column.prototype._mapDepricatedFunctionality=function(){void 0!==this.definition.hideInHtml&&(this.definition.htmlOutput=!this.definition.hideInHtml,console.warn("hideInHtml column definition property is deprecated, you should now use htmlOutput"))},Column.prototype.setTooltip=function(){var t=this,e=t.definition,o=e.headerTooltip||!1===e.tooltip?e.headerTooltip:t.table.options.tooltipsHeader;o?!0===o?e.field?t.table.modules.localize.bind("columns|"+e.field,function(o){t.element.setAttribute("title",o||e.title)}):t.element.setAttribute("title",e.title):("function"==typeof o&&!1===(o=o(t.getComponent()))&&(o=""),t.element.setAttribute("title",o)):t.element.setAttribute("title","")},Column.prototype._buildHeader=function(){for(var t=this,e=t.definition;t.element.firstChild;)t.element.removeChild(t.element.firstChild);e.headerVertical&&(t.element.classList.add("tabulator-col-vertical"),"flip"===e.headerVertical&&t.element.classList.add("tabulator-col-vertical-flip")),t.contentElement=t._bindEvents(),t.contentElement=t._buildColumnHeaderContent(),t.element.appendChild(t.contentElement),t.isGroup?t._buildGroupHeader():t._buildColumnHeader(),t.setTooltip(),t.table.options.resizableColumns&&t.table.modExists("resizeColumns")&&t.table.modules.resizeColumns.initializeColumn("header",t,t.element),e.headerFilter&&t.table.modExists("filter")&&t.table.modExists("edit")&&(void 0!==e.headerFilterPlaceholder&&e.field&&t.table.modules.localize.setHeaderFilterColumnPlaceholder(e.field,e.headerFilterPlaceholder),t.table.modules.filter.initializeColumn(t)),t.table.modExists("frozenColumns")&&t.table.modules.frozenColumns.initializeColumn(t),t.table.options.movableColumns&&!t.isGroup&&t.table.modExists("moveColumn")&&t.table.modules.moveColumn.initializeColumn(t),(e.topCalc||e.bottomCalc)&&t.table.modExists("columnCalcs")&&t.table.modules.columnCalcs.initializeColumn(t),t.table.modExists("persistence")&&t.table.modules.persistence.config.columns&&t.table.modules.persistence.initializeColumn(t),t.element.addEventListener("mouseenter",function(e){t.setTooltip()})},Column.prototype._bindEvents=function(){var t,e,o,i=this,n=i.definition;"function"==typeof n.headerClick&&i.element.addEventListener("click",function(t){n.headerClick(t,i.getComponent())}),"function"==typeof n.headerDblClick&&i.element.addEventListener("dblclick",function(t){n.headerDblClick(t,i.getComponent())}),"function"==typeof n.headerContext&&i.element.addEventListener("contextmenu",function(t){n.headerContext(t,i.getComponent())}),"function"==typeof n.headerTap&&(o=!1,i.element.addEventListener("touchstart",function(t){o=!0},{passive:!0}),i.element.addEventListener("touchend",function(t){o&&n.headerTap(t,i.getComponent()),o=!1})),"function"==typeof n.headerDblTap&&(t=null,i.element.addEventListener("touchend",function(e){t?(clearTimeout(t),t=null,n.headerDblTap(e,i.getComponent())):t=setTimeout(function(){clearTimeout(t),t=null},300)})),"function"==typeof n.headerTapHold&&(e=null,i.element.addEventListener("touchstart",function(t){clearTimeout(e),e=setTimeout(function(){clearTimeout(e),e=null,o=!1,n.headerTapHold(t,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(t){clearTimeout(e),e=null})),"function"==typeof n.cellClick&&(i.cellEvents.cellClick=n.cellClick),"function"==typeof n.cellDblClick&&(i.cellEvents.cellDblClick=n.cellDblClick),"function"==typeof n.cellContext&&(i.cellEvents.cellContext=n.cellContext),"function"==typeof n.cellMouseEnter&&(i.cellEvents.cellMouseEnter=n.cellMouseEnter),"function"==typeof n.cellMouseLeave&&(i.cellEvents.cellMouseLeave=n.cellMouseLeave),"function"==typeof n.cellMouseOver&&(i.cellEvents.cellMouseOver=n.cellMouseOver),"function"==typeof n.cellMouseOut&&(i.cellEvents.cellMouseOut=n.cellMouseOut),"function"==typeof n.cellMouseMove&&(i.cellEvents.cellMouseMove=n.cellMouseMove),"function"==typeof n.cellTap&&(i.cellEvents.cellTap=n.cellTap),"function"==typeof n.cellDblTap&&(i.cellEvents.cellDblTap=n.cellDblTap),"function"==typeof n.cellTapHold&&(i.cellEvents.cellTapHold=n.cellTapHold),"function"==typeof n.cellEdited&&(i.cellEvents.cellEdited=n.cellEdited),"function"==typeof n.cellEditing&&(i.cellEvents.cellEditing=n.cellEditing),"function"==typeof n.cellEditCancelled&&(i.cellEvents.cellEditCancelled=n.cellEditCancelled)},Column.prototype._buildColumnHeader=function(){var t=this,e=t.definition,o=t.table;if(o.modExists("sort")&&o.modules.sort.initializeColumn(t,t.contentElement),o.modExists("format")&&o.modules.format.initializeColumn(t),void 0!==e.editor&&o.modExists("edit")&&o.modules.edit.initializeColumn(t),void 0!==e.validator&&o.modExists("validate")&&o.modules.validate.initializeColumn(t),o.modExists("mutator")&&o.modules.mutator.initializeColumn(t),o.modExists("accessor")&&o.modules.accessor.initializeColumn(t),_typeof(o.options.responsiveLayout)&&o.modExists("responsiveLayout")&&o.modules.responsiveLayout.initializeColumn(t),void 0!==e.visible&&(e.visible?t.show(!0):t.hide(!0)),e.cssClass){e.cssClass.split(" ").forEach(function(e){t.element.classList.add(e)})}e.field&&this.element.setAttribute("tabulator-field",e.field),t.setMinWidth(void 0===e.minWidth?t.table.options.columnMinWidth:parseInt(e.minWidth)),t.reinitializeWidth(),t.tooltip=t.definition.tooltip||!1===t.definition.tooltip?t.definition.tooltip:t.table.options.tooltips,t.hozAlign=void 0===t.definition.align?"":t.definition.align},Column.prototype._buildColumnHeaderContent=function(){var t=this,e=(t.definition,t.table,document.createElement("div"));return e.classList.add("tabulator-col-content"),e.appendChild(t._buildColumnHeaderTitle()),e},Column.prototype._buildColumnHeaderTitle=function(){var t=this,e=t.definition,o=t.table,i=document.createElement("div");if(i.classList.add("tabulator-col-title"),e.editableTitle){var n=document.createElement("input");n.classList.add("tabulator-title-editor"),n.addEventListener("click",function(t){t.stopPropagation(),n.focus()}),n.addEventListener("change",function(){e.title=n.value,o.options.columnTitleChanged.call(t.table,t.getComponent())}),i.appendChild(n),e.field?o.modules.localize.bind("columns|"+e.field,function(t){n.value=t||e.title||"&nbsp;"}):n.value=e.title||"&nbsp;"}else e.field?o.modules.localize.bind("columns|"+e.field,function(o){t._formatColumnHeaderTitle(i,o||e.title||"&nbsp;")}):t._formatColumnHeaderTitle(i,e.title||"&nbsp;");return i},Column.prototype._formatColumnHeaderTitle=function(t,e){var o,i,n,s,l,a=this;if(this.definition.titleFormatter&&this.table.modExists("format"))switch(o=this.table.modules.format.getFormatter(this.definition.titleFormatter),l=function(t){a.titleFormatterRendered=t},s={getValue:function(){return e},getElement:function(){return t}},n=this.definition.titleFormatterParams||{},n="function"==typeof n?n():n,i=o.call(this.table.modules.format,s,n,l),void 0===i?"undefined":_typeof(i)){case"object":i instanceof Node?t.appendChild(i):(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:",i));break;case"undefined":case"null":t.innerHTML="";break;default:t.innerHTML=i}else t.innerHTML=e},Column.prototype._buildGroupHeader=function(){var t=this;if(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(e){t.element.classList.add(e)})}this.element.appendChild(this.groupElement)},Column.prototype._getFlatData=function(t){return t[this.field]},Column.prototype._getNestedData=function(t){for(var e,o=t,i=this.fieldStructure,n=i.length,s=0;s<n&&(o=o[i[s]],e=o,o);s++);return e},Column.prototype._setFlatData=function(t,e){this.field&&(t[this.field]=e)},Column.prototype._setNesteData=function(t,e){for(var o=t,i=this.fieldStructure,n=i.length,s=0;s<n;s++)s==n-1?o[i[s]]=e:(o[i[s]]||(o[i[s]]={}),o=o[i[s]])},Column.prototype.attachColumn=function(t){var e=this;e.groupElement?(e.columns.push(t),e.groupElement.appendChild(t.getElement())):console.warn("Column Warning - Column being attached to another column instead of column group")},Column.prototype.verticalAlign=function(t,e){var o=this.parent.isGroup?this.parent.getGroupElement().clientHeight:e||this.parent.getHeadersElement().clientHeight;this.element.style.height=o+"px",this.isGroup&&(this.groupElement.style.minHeight=o-this.contentElement.offsetHeight+"px"),this.isGroup||"top"===t||(this.element.style.paddingTop="bottom"===t?this.element.clientHeight-this.contentElement.offsetHeight+"px":(this.element.clientHeight-this.contentElement.offsetHeight)/2+"px"),this.columns.forEach(function(e){e.verticalAlign(t)})},Column.prototype.clearVerticalAlign=function(){this.element.style.paddingTop="",this.element.style.height="",this.element.style.minHeight="",this.groupElement.style.minHeight="",this.columns.forEach(function(t){t.clearVerticalAlign()})},Column.prototype.bindModuleColumns=function(){"rownum"==this.definition.formatter&&(this.table.rowManager.rowNumColumn=this)},Column.prototype.getElement=function(){return this.element},Column.prototype.getGroupElement=function(){return this.groupElement},Column.prototype.getField=function(){return this.field},Column.prototype.getFirstColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[0].getFirstColumn():this},Column.prototype.getLastColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[this.columns.length-1].getLastColumn():this},Column.prototype.getColumns=function(){return this.columns},Column.prototype.getCells=function(){return this.cells},Column.prototype.getTopColumn=function(){return this.parent.isGroup?this.parent.getTopColumn():this},Column.prototype.getDefinition=function(t){var e=[];return this.isGroup&&t&&(this.columns.forEach(function(t){e.push(t.getDefinition(!0))}),this.definition.columns=e),this.definition},Column.prototype.checkColumnVisibility=function(){var t=!1;this.columns.forEach(function(e){e.visible&&(t=!0)}),t?(this.show(),this.parent.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1)):this.hide()},Column.prototype.show=function(t,e){this.visible||(this.visible=!0,this.element.style.display="",this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(t){t.show()}),this.isGroup||null!==this.width||this.reinitializeWidth(),this.table.columnManager._verticalAlignHeaders(),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns"),!e&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),t||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!0),this.parent.isGroup&&this.parent.matchChildWidths())},Column.prototype.hide=function(t,e){this.visible&&(this.visible=!1,this.element.style.display="none",this.table.columnManager._verticalAlignHeaders(),this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(t){t.hide()}),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns"),!e&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),t||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1),this.parent.isGroup&&this.parent.matchChildWidths())},Column.prototype.matchChildWidths=function(){var t=0;this.contentElement&&this.columns.length&&(this.columns.forEach(function(e){e.visible&&(t+=e.getWidth())}),this.contentElement.style.maxWidth=t-1+"px")},Column.prototype.setWidth=function(t){this.widthFixed=!0,this.setWidthActual(t)},Column.prototype.setWidthActual=function(t){isNaN(t)&&(t=Math.floor(this.table.element.clientWidth/100*parseInt(t))),t=Math.max(this.minWidth,t),this.width=t,this.widthStyled=t?t+"px":"",this.element.style.width=this.widthStyled,this.isGroup||this.cells.forEach(function(t){t.setWidth()}),this.parent.isGroup&&this.parent.matchChildWidths(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()},Column.prototype.checkCellHeights=function(){var t=[];this.cells.forEach(function(e){e.row.heightInitialized&&(null!==e.row.getElement().offsetParent?(t.push(e.row),e.row.clearCellHeight()):e.row.heightInitialized=!1)}),t.forEach(function(t){t.calcHeight()}),t.forEach(function(t){t.setCellHeight()})},Column.prototype.getWidth=function(){return this.width},Column.prototype.getHeight=function(){return this.element.offsetHeight},Column.prototype.setMinWidth=function(t){this.minWidth=t,this.minWidthStyled=t?t+"px":"",this.element.style.minWidth=this.minWidthStyled,this.cells.forEach(function(t){t.setMinWidth()})},Column.prototype.delete=function(){var t=this;return new Promise(function(e,o){t.isGroup&&t.columns.forEach(function(t){t.delete()});for(var i=t.cells.length,n=0;n<i;n++)t.cells[0].delete();t.element.parentNode.removeChild(t.element),t.table.columnManager.deregisterColumn(t),e()})},Column.prototype.columnRendered=function(){this.titleFormatterRendered&&this.titleFormatterRendered()},Column.prototype.generateCell=function(t){var e=this,o=new Cell(e,t);return this.cells.push(o),o},Column.prototype.nextColumn=function(){var t=this.table.columnManager.findColumnIndex(this);return t>-1&&this._nextVisibleColumn(t+1)},Column.prototype._nextVisibleColumn=function(t){var e=this.table.columnManager.getColumnByIndex(t);return!e||e.visible?e:this._nextVisibleColumn(t+1)},Column.prototype.prevColumn=function(){var t=this.table.columnManager.findColumnIndex(this);return t>-1&&this._prevVisibleColumn(t-1)},Column.prototype._prevVisibleColumn=function(t){var e=this.table.columnManager.getColumnByIndex(t);return!e||e.visible?e:this._prevVisibleColumn(t-1)},Column.prototype.reinitializeWidth=function(t){this.widthFixed=!1,void 0===this.definition.width||t||this.setWidth(this.definition.width),this.table.modExists("filter")&&this.table.modules.filter.hideHeaderFilterElements(),this.fitToData(),this.table.modExists("filter")&&this.table.modules.filter.showHeaderFilterElements()},Column.prototype.fitToData=function(){var t=this;this.widthFixed||(this.element.style.width="",t.cells.forEach(function(t){t.clearWidth()}));var e=this.element.offsetWidth;t.width&&this.widthFixed||(t.cells.forEach(function(t){var o=t.getWidth();o>e&&(e=o)}),e&&t.setWidthActual(e+1))},Column.prototype.updateDefinition=function(t){var e=this;return new Promise(function(o,i){var n;e.isGroup?(console.warn("Column Update Error - The updateDefintion function is only available on columns, not column groups"),i("Column Update Error - The updateDefintion function is only available on columns, not column groups")):(n=Object.assign({},e.getDefinition()),n=Object.assign(n,t),e.table.columnManager.addColumn(n,!1,e).then(function(t){n.field==e.field&&(e.field=!1),e.delete().then(function(){o(t.getComponent())}).catch(function(t){i(t)})}).catch(function(t){i(t)}))})},Column.prototype.deleteCell=function(t){var e=this.cells.indexOf(t);e>-1&&this.cells.splice(e,1)},
+Column.prototype.defaultOptionList=["title","field","columns","visible","align","width","minWidth","widthGrow","widthShrink","resizable","frozen","responsive","tooltip","cssClass","rowHandle","hideInHtml","print","htmlOutput","sorter","sorterParams","formatter","formatterParams","variableHeight","editable","editor","editorParams","validator","mutator","mutatorParams","mutatorData","mutatorDataParams","mutatorEdit","mutatorEditParams","mutatorClipboard","mutatorClipboardParams","accessor","accessorParams","accessorData","accessorDataParams","accessorDownload","accessorDownloadParams","accessorClipboard","accessorClipboardParams","clipboard","download","downloadTitle","topCalc","topCalcParams","topCalcFormatter","topCalcFormatterParams","bottomCalc","bottomCalcParams","bottomCalcFormatter","bottomCalcFormatterParams","cellClick","cellDblClick","cellContext","cellTap","cellDblTap","cellTapHold","cellMouseEnter","cellMouseLeave","cellMouseOver","cellMouseOut","cellMouseMove","cellEditing","cellEdited","cellEditCancelled","headerSort","headerSortStartingDir","headerSortTristate","headerClick","headerDblClick","headerContext","headerTap","headerDblTap","headerTapHold","headerTooltip","headerVertical","editableTitle","titleFormatter","titleFormatterParams","headerFilter","headerFilterPlaceholder","headerFilterParams","headerFilterEmptyCheck","headerFilterFunc","headerFilterFuncParams","headerFilterLiveFilter","print"],Column.prototype.getComponent=function(){return new ColumnComponent(this)};var RowManager=function(t){this.table=t,this.element=this.createHolderElement(),this.tableElement=this.createTableElement(),this.columnManager=null,this.height=0,this.firstRender=!1,this.renderMode="classic",this.rows=[],this.activeRows=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0,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=[],this.rowNumColumn=!1,this.redrawBlock=!1,this.redrawBlockRestoreConfig=!1,this.redrawBlockRederInPosition=!1};RowManager.prototype.createHolderElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-tableHolder"),t.setAttribute("tabindex",0),t},RowManager.prototype.createTableElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-table"),t},RowManager.prototype.getElement=function(){return this.element},RowManager.prototype.getTableElement=function(){return this.tableElement},RowManager.prototype.getRowPosition=function(t,e){return e?this.activeRows.indexOf(t):this.rows.indexOf(t)},RowManager.prototype.setColumnManager=function(t){this.columnManager=t},RowManager.prototype.initialize=function(){var t=this;t.setRenderMode(),t.element.appendChild(t.tableElement),t.firstRender=!0,t.element.addEventListener("scroll",function(){var e=t.element.scrollLeft;t.scrollLeft!=e&&(t.columnManager.scrollHorizontal(e),t.table.options.groupBy&&t.table.modules.groupRows.scrollHeaders(e),t.table.modExists("columnCalcs")&&t.table.modules.columnCalcs.scrollHorizontal(e),t.table.options.scrollHorizontal(e)),t.scrollLeft=e}),"virtual"===this.renderMode&&t.element.addEventListener("scroll",function(){var e=t.element.scrollTop,o=t.scrollTop>e;t.scrollTop!=e?(t.scrollTop=e,t.scrollVertical(o),"scroll"==t.table.options.ajaxProgressiveLoad&&t.table.modules.ajax.nextPage(t.element.scrollHeight-t.element.clientHeight-e),t.table.options.scrollVertical(e)):t.scrollTop=e})},RowManager.prototype.findRow=function(t){var e=this;if("object"!=(void 0===t?"undefined":_typeof(t))){if(void 0===t||null===t)return!1;return e.rows.find(function(o){return o.data[e.table.options.index]==t})||!1}if(t instanceof Row)return t;if(t instanceof RowComponent)return t._getSelf()||!1;if("undefined"!=typeof HTMLElement&&t instanceof HTMLElement){return e.rows.find(function(e){return e.element===t})||!1}return!1},RowManager.prototype.getRowFromDataObject=function(t){return this.rows.find(function(e){return e.data===t})||!1},RowManager.prototype.getRowFromPosition=function(t,e){return e?this.activeRows[t]:this.rows[t]},RowManager.prototype.scrollToRow=function(t,e,o){var i,n=this,s=this.getDisplayRows().indexOf(t),l=t.getElement(),a=0;return new Promise(function(t,r){if(s>-1){if(void 0===e&&(e=n.table.options.scrollToRowPosition),void 0===o&&(o=n.table.options.scrollToRowIfVisible),"nearest"===e)switch(n.renderMode){case"classic":i=Tabulator.prototype.helpers.elOffset(l).top,e=Math.abs(n.element.scrollTop-i)>Math.abs(n.element.scrollTop+n.element.clientHeight-i)?"bottom":"top";break;case"virtual":e=Math.abs(n.vDomTop-s)>Math.abs(n.vDomBottom-s)?"bottom":"top"}if(!o&&Tabulator.prototype.helpers.elVisible(l)&&(a=Tabulator.prototype.helpers.elOffset(l).top-Tabulator.prototype.helpers.elOffset(n.element).top)>0&&a<n.element.clientHeight-l.offsetHeight)return!1;switch(n.renderMode){case"classic":n.element.scrollTop=Tabulator.prototype.helpers.elOffset(l).top-Tabulator.prototype.helpers.elOffset(n.element).top+n.element.scrollTop;break;case"virtual":n._virtualRenderFill(s,!0)}switch(e){case"middle":case"center":n.element.scrollHeight-n.element.scrollTop==n.element.clientHeight?n.element.scrollTop=n.element.scrollTop+(l.offsetTop-n.element.scrollTop)-(n.element.scrollHeight-l.offsetTop)/2:n.element.scrollTop=n.element.scrollTop-n.element.clientHeight/2;break;case"bottom":n.element.scrollHeight-n.element.scrollTop==n.element.clientHeight?n.element.scrollTop=n.element.scrollTop-(n.element.scrollHeight-l.offsetTop)+l.offsetHeight:n.element.scrollTop=n.element.scrollTop-n.element.clientHeight+l.offsetHeight}t()}else console.warn("Scroll Error - Row not visible"),r("Scroll Error - Row not visible")})},RowManager.prototype.setData=function(t,e){var o=this,i=this;return new Promise(function(n,s){e&&o.getDisplayRows().length?i.table.options.pagination?i._setDataActual(t,!0):o.reRenderInPosition(function(){i._setDataActual(t)}):(o.table.options.autoColumns&&o.table.columnManager.generateColumnsFromRowData(t),o.resetScroll(),o._setDataActual(t)),n()})},RowManager.prototype._setDataActual=function(t,e){var o=this;o.table.options.dataLoading.call(this.table,t),this._wipeElements(),this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.clear(),Array.isArray(t)?(this.table.modExists("selectRow")&&this.table.modules.selectRow.clearSelectionData(),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchData(t),t.forEach(function(t,e){if(t&&"object"===(void 0===t?"undefined":_typeof(t))){var i=new Row(t,o);o.rows.push(i)}else console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:",t)}),o.table.options.dataLoaded.call(this.table,t),o.refreshActiveData(!1,!1,e)):console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ",void 0===t?"undefined":_typeof(t),"\nData:     ",t)},RowManager.prototype._wipeElements=function(){this.rows.forEach(function(t){t.wipe()}),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.wipe(),this.rows=[]},RowManager.prototype.deleteRow=function(t,e){var o=this.rows.indexOf(t),i=this.activeRows.indexOf(t);i>-1&&this.activeRows.splice(i,1),o>-1&&this.rows.splice(o,1),this.setActiveRows(this.activeRows),this.displayRowIterator(function(e){var o=e.indexOf(t);o>-1&&e.splice(o,1)}),e||this.reRenderInPosition(),this.table.options.rowDeleted.call(this.table,t.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.groupRows.updateGroupRows(!0):this.table.options.pagination&&this.table.modExists("page")?this.refreshActiveData(!1,!1,!0):this.table.options.pagination&&this.table.modExists("page")&&this.refreshActiveData("page")},RowManager.prototype.addRow=function(t,e,o,i){var n=this.addRowActual(t,e,o,i);return this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowAdd",n,{data:t,pos:e,index:o}),n},RowManager.prototype.addRows=function(t,e,o){var i=this,n=this,s=0,l=[];return new Promise(function(a,r){e=i.findAddRowPos(e),Array.isArray(t)||(t=[t]),s=t.length-1,(void 0===o&&e||void 0!==o&&!e)&&t.reverse(),t.forEach(function(t,i){var s=n.addRow(t,e,o,!0);l.push(s)}),i.table.options.groupBy&&i.table.modExists("groupRows")?i.table.modules.groupRows.updateGroupRows(!0):i.table.options.pagination&&i.table.modExists("page")?i.refreshActiveData(!1,!1,!0):i.reRenderInPosition(),i.table.modExists("columnCalcs")&&i.table.modules.columnCalcs.recalc(i.table.rowManager.activeRows),a(l)})},RowManager.prototype.findAddRowPos=function(t){return void 0===t&&(t=this.table.options.addRowPos),"pos"===t&&(t=!0),"bottom"===t&&(t=!1),t},RowManager.prototype.addRowActual=function(t,e,o,i){var n,s=t instanceof Row?t:new Row(t||{},this),l=this.findAddRowPos(e);if(!o&&this.table.options.pagination&&"page"==this.table.options.paginationAddRow&&(n=this.getDisplayRows(),l?n.length?o=n[0]:this.activeRows.length&&(o=this.activeRows[this.activeRows.length-1],l=!1):n.length&&(o=n[n.length-1],l=!(n.length<this.table.modules.page.getPageSize()))),o&&(o=this.findRow(o)),this.table.options.groupBy&&this.table.modExists("groupRows")){this.table.modules.groupRows.assignRowToGroup(s);var a=s.getGroup().rows;a.length>1&&(!o||o&&-1==a.indexOf(o)?l?a[0]!==s&&(o=a[0],this._moveRowInArray(s.getGroup().rows,s,o,!l)):a[a.length-1]!==s&&(o=a[a.length-1],this._moveRowInArray(s.getGroup().rows,s,o,!l)):this._moveRowInArray(s.getGroup().rows,s,o,!l))}if(o){var r=this.rows.indexOf(o),u=this.activeRows.indexOf(o);this.displayRowIterator(function(t){var e=t.indexOf(o);e>-1&&t.splice(l?e:e+1,0,s)}),u>-1&&this.activeRows.splice(l?u:u+1,0,s),r>-1&&this.rows.splice(l?r:r+1,0,s)}else l?(this.displayRowIterator(function(t){t.unshift(s)}),this.activeRows.unshift(s),this.rows.unshift(s)):(this.displayRowIterator(function(t){t.push(s)}),this.activeRows.push(s),this.rows.push(s));return this.setActiveRows(this.activeRows),this.table.options.rowAdded.call(this.table,s.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),i||this.reRenderInPosition(),s},RowManager.prototype.moveRow=function(t,e,o){this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowMove",t,{pos:this.getRowPosition(t),to:e,after:o}),this.moveRowActual(t,e,o),this.table.options.rowMoved.call(this.table,t.getComponent())},RowManager.prototype.moveRowActual=function(t,e,o){var i=this;if(this._moveRowInArray(this.rows,t,e,o),this._moveRowInArray(this.activeRows,t,e,o),this.displayRowIterator(function(n){i._moveRowInArray(n,t,e,o)}),this.table.options.groupBy&&this.table.modExists("groupRows")){var n=e.getGroup(),s=t.getGroup();n===s?this._moveRowInArray(n.rows,t,e,o):(s&&s.removeRow(t),n.insertRow(t,e,o))}},RowManager.prototype._moveRowInArray=function(t,e,o,i){var n,s,l,a;if(e!==o&&(n=t.indexOf(e),n>-1&&(t.splice(n,1),s=t.indexOf(o),s>-1?i?t.splice(s+1,0,e):t.splice(s,0,e):t.splice(n,0,e)),t===this.getDisplayRows())){l=n<s?n:s,a=s>n?s:n+1;for(var r=l;r<=a;r++)t[r]&&this.styleRow(t[r],r)}},RowManager.prototype.clearData=function(){this.setData([])},RowManager.prototype.getRowIndex=function(t){return this.findRowIndex(t,this.rows)},RowManager.prototype.getDisplayRowIndex=function(t){var e=this.getDisplayRows().indexOf(t);return e>-1&&e},RowManager.prototype.nextDisplayRow=function(t,e){var o=this.getDisplayRowIndex(t),i=!1;return!1!==o&&o<this.displayRowsCount-1&&(i=this.getDisplayRows()[o+1]),!i||i instanceof Row&&"row"==i.type?i:this.nextDisplayRow(i,e)},RowManager.prototype.prevDisplayRow=function(t,e){var o=this.getDisplayRowIndex(t),i=!1;return o&&(i=this.getDisplayRows()[o-1]),!i||i instanceof Row&&"row"==i.type?i:this.prevDisplayRow(i,e)},RowManager.prototype.findRowIndex=function(t,e){var o;return!!((t=this.findRow(t))&&(o=e.indexOf(t))>-1)&&o},RowManager.prototype.getData=function(t,e){var o=[];return this.getRows(t).forEach(function(t){o.push(t.getData(e||"data"))}),o},RowManager.prototype.getComponents=function(t){var e=[];return this.getRows(t).forEach(function(t){e.push(t.getComponent())}),e},RowManager.prototype.getDataCount=function(t){return this.getRows(t).length},RowManager.prototype._genRemoteRequest=function(){var t=this,e=t.table,o=e.options,i={};if(e.modExists("page")){if(o.ajaxSorting){var n=t.table.modules.sort.getSort();n.forEach(function(t){delete t.column}),i[t.table.modules.page.paginationDataSentNames.sorters]=n}if(o.ajaxFiltering){var s=t.table.modules.filter.getFilters(!0,!0);i[t.table.modules.page.paginationDataSentNames.filters]=s}t.table.modules.ajax.setParams(i,!0)}e.modules.ajax.sendRequest().then(function(e){t.setData(e)}).catch(function(t){})},RowManager.prototype.filterRefresh=function(){var t=this.table,e=t.options,o=this.scrollLeft;e.ajaxFiltering?"remote"==e.pagination&&t.modExists("page")?(t.modules.page.reset(!0),t.modules.page.setPage(1).then(function(){}).catch(function(){})):e.ajaxProgressiveLoad?t.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData("filter"),this.scrollHorizontal(o)},RowManager.prototype.sorterRefresh=function(t){var e=this.table,o=this.table.options,i=this.scrollLeft;o.ajaxSorting?("remote"==o.pagination||o.progressiveLoad)&&e.modExists("page")?(e.modules.page.reset(!0),e.modules.page.setPage(1).then(function(){}).catch(function(){})):o.ajaxProgressiveLoad?e.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData(t?"filter":"sort"),this.scrollHorizontal(i)},RowManager.prototype.scrollHorizontal=function(t){this.scrollLeft=t,this.element.scrollLeft=t,this.table.options.groupBy&&this.table.modules.groupRows.scrollHeaders(t),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.scrollHorizontal(t)},RowManager.prototype.refreshActiveData=function(t,e,o){var i,n=this,s=this,l=this.table,a=["all","filter","sort","display","freeze","group","tree","page"];if(this.redrawBlock)return void((!this.redrawBlockRestoreConfig||a.indexOf(t)<a.indexOf(this.redrawBlockRestoreConfig.stage))&&(this.redrawBlockRestoreConfig={stage:t,skipStage:e,renderInPosition:o}));switch(s.table.modExists("edit")&&s.table.modules.edit.cancelEdit(),t||(t="all"),l.options.selectable&&!l.options.selectablePersistence&&l.modExists("selectRow")&&l.modules.selectRow.deselectRows(),t){case"all":case"filter":e?e=!1:l.modExists("filter")?s.setActiveRows(l.modules.filter.filter(s.rows)):s.setActiveRows(s.rows.slice(0));case"sort":e?e=!1:l.modExists("sort")&&l.modules.sort.sort(this.activeRows),this.rowNumColumn&&this.activeRows.forEach(function(t){var e=t.getCell(n.rowNumColumn);e&&e._generateContents()});case"display":this.resetDisplayRows();case"freeze":e?e=!1:this.table.modExists("frozenRows")&&l.modules.frozenRows.isFrozen()&&(l.modules.frozenRows.getDisplayIndex()||l.modules.frozenRows.setDisplayIndex(this.getNextDisplayIndex()),i=l.modules.frozenRows.getDisplayIndex(),!0!==(i=s.setDisplayRows(l.modules.frozenRows.getRows(this.getDisplayRows(i-1)),i))&&l.modules.frozenRows.setDisplayIndex(i));case"group":e?e=!1:l.options.groupBy&&l.modExists("groupRows")&&(l.modules.groupRows.getDisplayIndex()||l.modules.groupRows.setDisplayIndex(this.getNextDisplayIndex()),i=l.modules.groupRows.getDisplayIndex(),!0!==(i=s.setDisplayRows(l.modules.groupRows.getRows(this.getDisplayRows(i-1)),i))&&l.modules.groupRows.setDisplayIndex(i));case"tree":e?e=!1:l.options.dataTree&&l.modExists("dataTree")&&(l.modules.dataTree.getDisplayIndex()||l.modules.dataTree.setDisplayIndex(this.getNextDisplayIndex()),i=l.modules.dataTree.getDisplayIndex(),!0!==(i=s.setDisplayRows(l.modules.dataTree.getRows(this.getDisplayRows(i-1)),i))&&l.modules.dataTree.setDisplayIndex(i)),l.options.pagination&&l.modExists("page")&&!o&&"local"==l.modules.page.getMode()&&l.modules.page.reset();case"page":e?e=!1:l.options.pagination&&l.modExists("page")&&(l.modules.page.getDisplayIndex()||l.modules.page.setDisplayIndex(this.getNextDisplayIndex()),i=l.modules.page.getDisplayIndex(),"local"==l.modules.page.getMode()&&l.modules.page.setMaxRows(this.getDisplayRows(i-1).length),!0!==(i=s.setDisplayRows(l.modules.page.getRows(this.getDisplayRows(i-1)),i))&&l.modules.page.setDisplayIndex(i))}Tabulator.prototype.helpers.elVisible(s.element)&&(o?s.reRenderInPosition():(s.renderTable(),l.options.layoutColumnsOnNewData&&s.table.columnManager.redraw(!0))),l.modExists("columnCalcs")&&l.modules.columnCalcs.recalc(this.activeRows)},RowManager.prototype.setActiveRows=function(t){this.activeRows=t,this.activeRowsCount=this.activeRows.length},RowManager.prototype.resetDisplayRows=function(){this.displayRows=[],this.displayRows.push(this.activeRows.slice(0)),this.displayRowsCount=this.displayRows[0].length,this.table.modExists("frozenRows")&&this.table.modules.frozenRows.setDisplayIndex(0),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.setDisplayIndex(0),this.table.options.pagination&&this.table.modExists("page")&&this.table.modules.page.setDisplayIndex(0)},RowManager.prototype.getNextDisplayIndex=function(){return this.displayRows.length},RowManager.prototype.setDisplayRows=function(t,e){var o=!0;return e&&void 0!==this.displayRows[e]?(this.displayRows[e]=t,o=!0):(this.displayRows.push(t),o=e=this.displayRows.length-1),e==this.displayRows.length-1&&(this.displayRowsCount=this.displayRows[this.displayRows.length-1].length),o},RowManager.prototype.getDisplayRows=function(t){return void 0===t?this.displayRows.length?this.displayRows[this.displayRows.length-1]:[]:this.displayRows[t]||[]},RowManager.prototype.getVisibleRows=function(t){var e=this.element.scrollTop,o=this.element.clientHeight+e,i=!1,n=0,s=0,l=this.getDisplayRows();if(t){this.getDisplayRows();for(var a=this.vDomTop;a<=this.vDomBottom;a++)if(l[a])if(i){if(!(o-l[a].getElement().offsetTop>=0))break;s=a}else if(e-l[a].getElement().offsetTop>=0)n=a;else{if(i=!0,!(o-l[a].getElement().offsetTop>=0))break;s=a}}else n=this.vDomTop,s=this.vDomBottom;return l.slice(n,s+1)},RowManager.prototype.displayRowIterator=function(t){this.displayRows.forEach(t),this.displayRowsCount=this.displayRows[this.displayRows.length-1].length},RowManager.prototype.getRows=function(t){var e;switch(t){case"active":e=this.activeRows;break;case"visible":e=this.getVisibleRows(!0);break;default:e=this.rows}return e},RowManager.prototype.reRenderInPosition=function(t){if("virtual"==this.getRenderMode())if(this.redrawBlock)t?t():this.redrawBlockRederInPosition=!0;else{for(var e=this.element.scrollTop,o=!1,i=!1,n=this.scrollLeft,s=this.getDisplayRows(),l=this.vDomTop;l<=this.vDomBottom;l++)if(s[l]){var a=e-s[l].getElement().offsetTop;if(!(!1===i||Math.abs(a)<i))break;i=a,o=l}t&&t(),this._virtualRenderFill(!1===o?this.displayRowsCount-1:o,!0,i||0),this.scrollHorizontal(n)}else this.renderTable(),t&&t()},RowManager.prototype.setRenderMode=function(){(this.table.element.clientHeight||this.table.options.height)&&this.table.options.virtualDom?this.renderMode="virtual":this.renderMode="classic"},RowManager.prototype.getRenderMode=function(){return this.renderMode},RowManager.prototype.renderTable=function(){var t=this;switch(t.table.options.renderStarted.call(this.table),t.element.scrollTop=0,t.renderMode){case"classic":t._simpleRender();break;case"virtual":t._virtualRenderFill()}t.firstRender&&(t.displayRowsCount?(t.firstRender=!1,t.table.modules.layout.layout()):t.renderEmptyScroll()),t.table.modExists("frozenColumns")&&t.table.modules.frozenColumns.layout(),t.displayRowsCount||t.table.options.placeholder&&(this.renderMode&&t.table.options.placeholder.setAttribute("tabulator-render-mode",this.renderMode),t.getElement().appendChild(t.table.options.placeholder)),t.table.options.renderComplete.call(this.table)},RowManager.prototype._simpleRender=function(){this._clearVirtualDom(),this.displayRowsCount?this.checkClassicModeGroupHeaderWidth():this.renderEmptyScroll()},RowManager.prototype.checkClassicModeGroupHeaderWidth=function(){var t=this,e=this.tableElement,o=!0;t.getDisplayRows().forEach(function(i,n){t.styleRow(i,n),e.appendChild(i.getElement()),i.initialize(!0),"group"!==i.type&&(o=!1)}),e.style.minWidth=o?t.table.columnManager.getWidth()+"px":""},RowManager.prototype.renderEmptyScroll=function(){this.tableElement.style.minWidth=this.table.columnManager.getWidth()+"px",this.tableElement.style.minHeight="1px",this.tableElement.style.visibility="hidden"},RowManager.prototype._clearVirtualDom=function(){var t=this.tableElement;for(this.table.options.placeholder&&this.table.options.placeholder.parentNode&&this.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);t.firstChild;)t.removeChild(t.firstChild);t.style.paddingTop="",t.style.paddingBottom="",t.style.minWidth="",t.style.minHeight="",t.style.visibility="",this.scrollTop=0,this.scrollLeft=0,this.vDomTop=0,this.vDomBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0},RowManager.prototype.styleRow=function(t,e){var o=t.getElement();e%2?(o.classList.add("tabulator-row-even"),o.classList.remove("tabulator-row-odd")):(o.classList.add("tabulator-row-odd"),o.classList.remove("tabulator-row-even"))},RowManager.prototype._virtualRenderFill=function(t,e,o){var i=this,n=i.tableElement,s=i.element,l=0,a=0,r=0,u=0,c=!0,h=i.getDisplayRows();if(t=t||0,o=o||0,t){for(;n.firstChild;)n.removeChild(n.firstChild);var p=(i.displayRowsCount-t+1)*i.vDomRowHeight;p<i.height&&(t-=Math.ceil((i.height-p)/i.vDomRowHeight))<0&&(t=0),l=Math.min(Math.max(Math.floor(i.vDomWindowBuffer/i.vDomRowHeight),i.vDomWindowMinMarginRows),t),t-=l}else i._clearVirtualDom();if(i.displayRowsCount&&Tabulator.prototype.helpers.elVisible(i.element)){for(i.vDomTop=t,i.vDomBottom=t-1;(a<=i.height+i.vDomWindowBuffer||u<i.vDomWindowMinTotalRows)&&i.vDomBottom<i.displayRowsCount-1;){var d=i.vDomBottom+1,m=h[d],f=0;i.styleRow(m,d),n.appendChild(m.getElement()),m.initialized?m.heightInitialized||m.normalizeHeight(!0):m.initialize(!0),f=m.getHeight(),u<l?r+=f:a+=f,f>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*f),"group"!==m.type&&(c=!1),i.vDomBottom++,u++}t?(i.vDomTopPad=e?i.vDomRowHeight*this.vDomTop+o:i.scrollTop-r,i.vDomBottomPad=i.vDomBottom==i.displayRowsCount-1?0:Math.max(i.vDomScrollHeight-i.vDomTopPad-a-r,0)):(this.vDomTopPad=0,i.vDomRowHeight=Math.floor((a+r)/u),i.vDomBottomPad=i.vDomRowHeight*(i.displayRowsCount-i.vDomBottom-1),i.vDomScrollHeight=r+a+i.vDomBottomPad-i.height),n.style.paddingTop=i.vDomTopPad+"px",n.style.paddingBottom=i.vDomBottomPad+"px",e&&(this.scrollTop=i.vDomTopPad+r+o-(this.element.scrollWidth>this.element.clientWidth?this.element.offsetHeight-this.element.clientHeight:0)),this.scrollTop=Math.min(this.scrollTop,this.element.scrollHeight-this.height),this.element.scrollWidth>this.element.offsetWidth&&e&&(this.scrollTop+=this.element.offsetHeight-this.element.clientHeight),this.vDomScrollPosTop=this.scrollTop,this.vDomScrollPosBottom=this.scrollTop,s.scrollTop=this.scrollTop,n.style.minWidth=c?i.table.columnManager.getWidth()+"px":"",i.table.options.groupBy&&"fitDataFill"!=i.table.modules.layout.getMode()&&i.displayRowsCount==i.table.modules.groupRows.countGroups()&&(i.tableElement.style.minWidth=i.table.columnManager.getWidth())}else this.renderEmptyScroll()},RowManager.prototype.scrollVertical=function(t){var e=this.scrollTop-this.vDomScrollPosTop,o=this.scrollTop-this.vDomScrollPosBottom,i=2*this.vDomWindowBuffer;if(-e>i||o>i){var n=this.scrollLeft;this._virtualRenderFill(Math.floor(this.element.scrollTop/this.element.scrollHeight*this.displayRowsCount)),this.scrollHorizontal(n)}else t?(e<0&&this._addTopRow(-e),o<0&&this.vDomScrollHeight-this.scrollTop>this.vDomWindowBuffer&&this._removeBottomRow(-o)):(e>=0&&this.scrollTop>this.vDomWindowBuffer&&this._removeTopRow(e),o>=0&&this._addBottomRow(o))},RowManager.prototype._addTopRow=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=this.tableElement,i=this.getDisplayRows();if(this.vDomTop){var n=this.vDomTop-1,s=i[n],l=s.getHeight()||this.vDomRowHeight;t>=l&&(this.styleRow(s,n),o.insertBefore(s.getElement(),o.firstChild),s.initialized&&s.heightInitialized||(this.vDomTopNewRows.push(s),s.heightInitialized||s.clearCellHeight()),s.initialize(),this.vDomTopPad-=l,this.vDomTopPad<0&&(this.vDomTopPad=n*this.vDomRowHeight),n||(this.vDomTopPad=0),o.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop-=l,this.vDomTop--),t=-(this.scrollTop-this.vDomScrollPosTop),s.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*s.getHeight()),e<this.vDomMaxRenderChain&&this.vDomTop&&t>=(i[this.vDomTop-1].getHeight()||this.vDomRowHeight)?this._addTopRow(t,e+1):this._quickNormalizeRowHeight(this.vDomTopNewRows)}},RowManager.prototype._removeTopRow=function(t){var e=this.tableElement,o=this.getDisplayRows()[this.vDomTop],i=o.getHeight()||this.vDomRowHeight;if(t>=i){var n=o.getElement();n.parentNode.removeChild(n),this.vDomTopPad+=i,e.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop+=this.vDomTop?i:i+this.vDomWindowBuffer,this.vDomTop++,t=this.scrollTop-this.vDomScrollPosTop,this._removeTopRow(t)}},RowManager.prototype._addBottomRow=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=this.tableElement,i=this.getDisplayRows();if(this.vDomBottom<this.displayRowsCount-1){var n=this.vDomBottom+1,s=i[n],l=s.getHeight()||this.vDomRowHeight;t>=l&&(this.styleRow(s,n),o.appendChild(s.getElement()),s.initialized&&s.heightInitialized||(this.vDomBottomNewRows.push(s),s.heightInitialized||s.clearCellHeight()),s.initialize(),this.vDomBottomPad-=l,(this.vDomBottomPad<0||n==this.displayRowsCount-1)&&(this.vDomBottomPad=0),o.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom+=l,this.vDomBottom++),t=this.scrollTop-this.vDomScrollPosBottom,s.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*s.getHeight()),e<this.vDomMaxRenderChain&&this.vDomBottom<this.displayRowsCount-1&&t>=(i[this.vDomBottom+1].getHeight()||this.vDomRowHeight)?this._addBottomRow(t,e+1):this._quickNormalizeRowHeight(this.vDomBottomNewRows)}},RowManager.prototype._removeBottomRow=function(t){var e=this.tableElement,o=this.getDisplayRows()[this.vDomBottom],i=o.getHeight()||this.vDomRowHeight;if(t>=i){var n=o.getElement();n.parentNode&&n.parentNode.removeChild(n),this.vDomBottomPad+=i,this.vDomBottomPad<0&&(this.vDomBottomPad=0),e.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom-=i,this.vDomBottom--,t=-(this.scrollTop-this.vDomScrollPosBottom),this._removeBottomRow(t)}},RowManager.prototype._quickNormalizeRowHeight=function(t){t.forEach(function(t){t.calcHeight()}),t.forEach(function(t){t.setCellHeight()}),t.length=0},RowManager.prototype.normalizeHeight=function(){this.activeRows.forEach(function(t){t.normalizeHeight()})},RowManager.prototype.adjustTableSize=function(){if("virtual"===this.renderMode){this.height=this.element.clientHeight,this.vDomWindowBuffer=this.table.options.virtualDomBuffer||this.height;var t=this.columnManager.getElement().offsetHeight+(this.table.footerManager&&!this.table.footerManager.external?this.table.footerManager.getElement().offsetHeight:0);this.element.style.minHeight="calc(100% - "+t+"px)",this.element.style.height="calc(100% - "+t+"px)",this.element.style.maxHeight="calc(100% - "+t+"px)"}},RowManager.prototype.reinitialize=function(){this.rows.forEach(function(t){t.reinitialize()})},RowManager.prototype.blockRedraw=function(){this.redrawBlock=!0,this.redrawBlockRestoreConfig=!1},RowManager.prototype.restoreRedraw=function(){this.redrawBlock=!1,this.redrawBlockRestoreConfig?(this.refreshActiveData(this.redrawBlockRestoreConfig.stage,this.redrawBlockRestoreConfig.skipStage,this.redrawBlockRestoreConfig.renderInPosition),this.redrawBlockRestoreConfig=!1):this.redrawBlockRederInPosition&&this.reRenderInPosition(),this.redrawBlockRederInPosition=!1},RowManager.prototype.redraw=function(t){var e=this.scrollLeft;this.adjustTableSize(),this.table.tableWidth=this.table.element.clientWidth,t?this.renderTable():("classic"==this.renderMode?this.table.options.groupBy?this.refreshActiveData("group",!1,!1):this._simpleRender():(this.reRenderInPosition(),this.scrollHorizontal(e)),this.displayRowsCount||this.table.options.placeholder&&this.getElement().appendChild(this.table.options.placeholder))},RowManager.prototype.resetScroll=function(){if(this.element.scrollLeft=0,this.element.scrollTop=0,"ie"===this.table.browser){var t=document.createEvent("Event");t.initEvent("scroll",!1,!0),this.element.dispatchEvent(t)}else this.element.dispatchEvent(new Event("scroll"))};var RowComponent=function(t){this._row=t};RowComponent.prototype.getData=function(t){return this._row.getData(t)},RowComponent.prototype.getElement=function(){return this._row.getElement()},RowComponent.prototype.getCells=function(){var t=[];return this._row.getCells().forEach(function(e){t.push(e.getComponent())}),t},RowComponent.prototype.getCell=function(t){var e=this._row.getCell(t);return!!e&&e.getComponent()},RowComponent.prototype.getIndex=function(){return this._row.getData("data")[this._row.table.options.index]},RowComponent.prototype.getPosition=function(t){return this._row.table.rowManager.getRowPosition(this._row,t)},RowComponent.prototype.delete=function(){return this._row.delete()},RowComponent.prototype.scrollTo=function(){return this._row.table.rowManager.scrollToRow(this._row)},RowComponent.prototype.pageTo=function(){if(this._row.table.modExists("page",!0))return this._row.table.modules.page.setPageToRow(this._row)},RowComponent.prototype.move=function(t,e){this._row.moveToRow(t,e)},RowComponent.prototype.update=function(t){return this._row.updateData(t)},RowComponent.prototype.normalizeHeight=function(){this._row.normalizeHeight(!0)},RowComponent.prototype.select=function(){this._row.table.modules.selectRow.selectRows(this._row)},RowComponent.prototype.deselect=function(){this._row.table.modules.selectRow.deselectRows(this._row)},RowComponent.prototype.toggleSelect=function(){this._row.table.modules.selectRow.toggleRow(this._row)},RowComponent.prototype.isSelected=function(){return this._row.table.modules.selectRow.isRowSelected(this._row)},RowComponent.prototype._getSelf=function(){return this._row},RowComponent.prototype.freeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.freezeRow(this._row)},RowComponent.prototype.unfreeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.unfreezeRow(this._row)},RowComponent.prototype.treeCollapse=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.collapseRow(this._row)},RowComponent.prototype.treeExpand=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.expandRow(this._row)},RowComponent.prototype.treeToggle=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.toggleRow(this._row)},RowComponent.prototype.getTreeParent=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeParent(this._row)},RowComponent.prototype.getTreeChildren=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeChildren(this._row)},RowComponent.prototype.reformat=function(){return this._row.reinitialize()},RowComponent.prototype.getGroup=function(){return this._row.getGroup().getComponent()},RowComponent.prototype.getTable=function(){return this._row.table},RowComponent.prototype.getNextRow=function(){var t=this._row.nextRow();return t?t.getComponent():t},
+RowComponent.prototype.getPrevRow=function(){var t=this._row.prevRow();return t?t.getComponent():t};var Row=function(t,e){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"row";this.table=e.table,this.parent=e,this.data={},this.type=o,this.element=this.createElement(),this.modules={},this.cells=[],this.height=0,this.heightStyled="",this.manualHeight=!1,this.outerHeight=0,this.initialized=!1,this.heightInitialized=!1,this.setData(t),this.generateElement()};Row.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-row"),t.setAttribute("role","row"),t},Row.prototype.getElement=function(){return this.element},Row.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},Row.prototype.generateElement=function(){var t,e,o,i=this;!1!==i.table.options.selectable&&i.table.modExists("selectRow")&&i.table.modules.selectRow.initializeRow(this),!1!==i.table.options.movableRows&&i.table.modExists("moveRow")&&i.table.modules.moveRow.initializeRow(this),!1!==i.table.options.dataTree&&i.table.modExists("dataTree")&&i.table.modules.dataTree.initializeRow(this),"collapse"===i.table.options.responsiveLayout&&i.table.modExists("responsiveLayout")&&i.table.modules.responsiveLayout.initializeRow(this),i.table.options.rowClick&&i.element.addEventListener("click",function(t){i.table.options.rowClick(t,i.getComponent())}),i.table.options.rowDblClick&&i.element.addEventListener("dblclick",function(t){i.table.options.rowDblClick(t,i.getComponent())}),i.table.options.rowContext&&i.element.addEventListener("contextmenu",function(t){i.table.options.rowContext(t,i.getComponent())}),i.table.options.rowMouseEnter&&i.element.addEventListener("mouseenter",function(t){i.table.options.rowMouseEnter(t,i.getComponent())}),i.table.options.rowMouseLeave&&i.element.addEventListener("mouseleave",function(t){i.table.options.rowMouseLeave(t,i.getComponent())}),i.table.options.rowMouseOver&&i.element.addEventListener("mouseover",function(t){i.table.options.rowMouseOver(t,i.getComponent())}),i.table.options.rowMouseOut&&i.element.addEventListener("mouseout",function(t){i.table.options.rowMouseOut(t,i.getComponent())}),i.table.options.rowMouseMove&&i.element.addEventListener("mousemove",function(t){i.table.options.rowMouseMove(t,i.getComponent())}),i.table.options.rowTap&&(o=!1,i.element.addEventListener("touchstart",function(t){o=!0},{passive:!0}),i.element.addEventListener("touchend",function(t){o&&i.table.options.rowTap(t,i.getComponent()),o=!1})),i.table.options.rowDblTap&&(t=null,i.element.addEventListener("touchend",function(e){t?(clearTimeout(t),t=null,i.table.options.rowDblTap(e,i.getComponent())):t=setTimeout(function(){clearTimeout(t),t=null},300)})),i.table.options.rowTapHold&&(e=null,i.element.addEventListener("touchstart",function(t){clearTimeout(e),e=setTimeout(function(){clearTimeout(e),e=null,o=!1,i.table.options.rowTapHold(t,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(t){clearTimeout(e),e=null}))},Row.prototype.generateCells=function(){this.cells=this.table.columnManager.generateCells(this)},Row.prototype.initialize=function(t){var e=this;if(!e.initialized||t){for(e.deleteCells();e.element.firstChild;)e.element.removeChild(e.element.firstChild);this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutRow(this),this.generateCells(),e.cells.forEach(function(t){e.element.appendChild(t.getElement()),t.cellRendered()}),t&&e.normalizeHeight(),e.table.options.dataTree&&e.table.modExists("dataTree")&&e.table.modules.dataTree.layoutRow(this),"collapse"===e.table.options.responsiveLayout&&e.table.modExists("responsiveLayout")&&e.table.modules.responsiveLayout.layoutRow(this),e.table.options.rowFormatter&&e.table.options.rowFormatter(e.getComponent()),e.table.options.resizableRows&&e.table.modExists("resizeRows")&&e.table.modules.resizeRows.initializeRow(e),e.initialized=!0}},Row.prototype.reinitializeHeight=function(){this.heightInitialized=!1,null!==this.element.offsetParent&&this.normalizeHeight(!0)},Row.prototype.reinitialize=function(){this.initialized=!1,this.heightInitialized=!1,this.manualHeight||(this.height=0,this.heightStyled=""),null!==this.element.offsetParent&&this.initialize(!0)},Row.prototype.calcHeight=function(t){var e=0,o=this.table.options.resizableRows?this.element.clientHeight:0;this.cells.forEach(function(t){var o=t.getHeight();o>e&&(e=o)}),this.height=t?Math.max(e,o):this.manualHeight?this.height:Math.max(e,o),this.heightStyled=this.height?this.height+"px":"",this.outerHeight=this.element.offsetHeight},Row.prototype.setCellHeight=function(){this.cells.forEach(function(t){t.setHeight()}),this.heightInitialized=!0},Row.prototype.clearCellHeight=function(){this.cells.forEach(function(t){t.clearHeight()})},Row.prototype.normalizeHeight=function(t){t&&this.clearCellHeight(),this.calcHeight(t),this.setCellHeight()},Row.prototype.setHeight=function(t,e){(this.height!=t||e)&&(this.manualHeight=!0,this.height=t,this.heightStyled=t?t+"px":"",this.setCellHeight(),this.outerHeight=this.element.offsetHeight)},Row.prototype.getHeight=function(){return this.outerHeight},Row.prototype.getWidth=function(){return this.element.offsetWidth},Row.prototype.deleteCell=function(t){var e=this.cells.indexOf(t);e>-1&&this.cells.splice(e,1)},Row.prototype.setData=function(t){this.table.modExists("mutator")&&(t=this.table.modules.mutator.transformRow(t,"data",t)),this.data=t,this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchRow(this)},Row.prototype.updateData=function(t){var e=this,o=Tabulator.prototype.helpers.elVisible(this.element),i={};return new Promise(function(n,s){"string"==typeof t&&(t=JSON.parse(t)),e.table.options.reactiveData&&e.table.modExists("reactiveData",!0)&&e.table.modules.reactiveData.block(),e.table.modExists("mutator")&&(i=Object.assign(i,e.data),i=Object.assign(i,t),t=e.table.modules.mutator.transformRow(i,"data",t));for(var l in t)e.data[l]=t[l];e.table.options.reactiveData&&e.table.modExists("reactiveData",!0)&&e.table.modules.reactiveData.unblock();for(var l in t){e.table.columnManager.getColumnsByFieldRoot(l).forEach(function(i){var n=e.getCell(i.getField());if(n){var s=i.getFieldValue(t);n.getValue()!=s&&(n.setValueProcessData(s),o&&n.cellRendered())}})}o?(e.normalizeHeight(),e.table.options.rowFormatter&&e.table.options.rowFormatter(e.getComponent())):(e.initialized=!1,e.height=0,e.heightStyled=""),!1!==e.table.options.dataTree&&e.table.modExists("dataTree")&&e.table.modules.dataTree.redrawNeeded(t)&&(e.table.modules.dataTree.initializeRow(e),e.table.modules.dataTree.layoutRow(e),e.table.rowManager.refreshActiveData("tree",!1,!0)),e.table.options.rowUpdated.call(e.table,e.getComponent()),n()})},Row.prototype.getData=function(t){var e=this;return t?e.table.modExists("accessor")?e.table.modules.accessor.transformRow(e.data,t):void 0:this.data},Row.prototype.getCell=function(t){return t=this.table.columnManager.findColumn(t),this.cells.find(function(e){return e.column===t})},Row.prototype.getCellIndex=function(t){return this.cells.findIndex(function(e){return e===t})},Row.prototype.findNextEditableCell=function(t){var e=!1;if(t<this.cells.length-1)for(var o=t+1;o<this.cells.length;o++){var i=this.cells[o];if(i.column.modules.edit&&Tabulator.prototype.helpers.elVisible(i.getElement())){var n=!0;if("function"==typeof i.column.modules.edit.check&&(n=i.column.modules.edit.check(i.getComponent())),n){e=i;break}}}return e},Row.prototype.findPrevEditableCell=function(t){var e=!1;if(t>0)for(var o=t-1;o>=0;o--){var i=this.cells[o],n=!0;if(i.column.modules.edit&&Tabulator.prototype.helpers.elVisible(i.getElement())&&("function"==typeof i.column.modules.edit.check&&(n=i.column.modules.edit.check(i.getComponent())),n)){e=i;break}}return e},Row.prototype.getCells=function(){return this.cells},Row.prototype.nextRow=function(){return this.table.rowManager.nextDisplayRow(this,!0)||!1},Row.prototype.prevRow=function(){return this.table.rowManager.prevDisplayRow(this,!0)||!1},Row.prototype.moveToRow=function(t,e){var o=this.table.rowManager.findRow(t);o?(this.table.rowManager.moveRowActual(this,o,!e),this.table.rowManager.refreshActiveData("display",!1,!0)):console.warn("Move Error - No matching row found:",t)},Row.prototype.delete=function(){var t=this;return new Promise(function(e,o){var i,n;t.table.options.history&&t.table.modExists("history")&&(t.table.options.groupBy&&t.table.modExists("groupRows")?(n=t.getGroup().rows,(i=n.indexOf(t))&&(i=n[i-1])):(i=t.table.rowManager.getRowIndex(t))&&(i=t.table.rowManager.rows[i-1]),t.table.modules.history.action("rowDelete",t,{data:t.getData(),pos:!i,index:i})),t.deleteActual(),e()})},Row.prototype.deleteActual=function(t){this.table.rowManager.getRowIndex(this);this.table.modExists("selectRow")&&this.table.modules.selectRow._deselectRow(this,!0),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0),this.modules.group&&this.modules.group.removeRow(this),this.table.rowManager.deleteRow(this,t),this.deleteCells(),this.initialized=!1,this.heightInitialized=!1,this.table.modExists("columnCalcs")&&(this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.columnCalcs.recalcRowGroup(this):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows))},Row.prototype.deleteCells=function(){for(var t=this.cells.length,e=0;e<t;e++)this.cells[0].delete()},Row.prototype.wipe=function(){for(this.deleteCells();this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element=!1,this.modules={},this.element.parentNode&&this.element.parentNode.removeChild(this.element)},Row.prototype.getGroup=function(){return this.modules.group||!1},Row.prototype.getComponent=function(){return new RowComponent(this)};var CellComponent=function(t){this._cell=t};CellComponent.prototype.getValue=function(){return this._cell.getValue()},CellComponent.prototype.getOldValue=function(){return this._cell.getOldValue()},CellComponent.prototype.getElement=function(){return this._cell.getElement()},CellComponent.prototype.getRow=function(){return this._cell.row.getComponent()},CellComponent.prototype.getData=function(){return this._cell.row.getData()},CellComponent.prototype.getField=function(){return this._cell.column.getField()},CellComponent.prototype.getColumn=function(){return this._cell.column.getComponent()},CellComponent.prototype.setValue=function(t,e){void 0===e&&(e=!0),this._cell.setValue(t,e)},CellComponent.prototype.restoreOldValue=function(){this._cell.setValueActual(this._cell.getOldValue())},CellComponent.prototype.edit=function(t){return this._cell.edit(t)},CellComponent.prototype.cancelEdit=function(){this._cell.cancelEdit()},CellComponent.prototype.nav=function(){return this._cell.nav()},CellComponent.prototype.checkHeight=function(){this._cell.checkHeight()},CellComponent.prototype.getTable=function(){return this._cell.table},CellComponent.prototype._getSelf=function(){return this._cell};var Cell=function(t,e){this.table=t.table,this.column=t,this.row=e,this.element=null,this.value=null,this.oldValue=null,this.modules={},this.height=null,this.width=null,this.minWidth=null,this.build()};Cell.prototype.build=function(){this.generateElement(),this.setWidth(),this._configureCell(),this.setValueActual(this.column.getFieldValue(this.row.data))},Cell.prototype.generateElement=function(){this.element=document.createElement("div"),this.element.className="tabulator-cell",this.element.setAttribute("role","gridcell"),this.element=this.element},Cell.prototype._configureCell=function(){var t=this,e=t.column.cellEvents,o=t.element,i=this.column.getField();if(o.style.textAlign=t.column.hozAlign,i&&o.setAttribute("tabulator-field",i),t.column.definition.cssClass){t.column.definition.cssClass.split(" ").forEach(function(t){o.classList.add(t)})}"hover"===this.table.options.tooltipGenerationMode&&o.addEventListener("mouseenter",function(e){t._generateTooltip()}),t._bindClickEvents(e),t._bindTouchEvents(e),t._bindMouseEvents(e),t.column.modules.edit&&t.table.modules.edit.bindEditor(t),t.column.definition.rowHandle&&!1!==t.table.options.movableRows&&t.table.modExists("moveRow")&&t.table.modules.moveRow.initializeCell(t),t.column.visible||t.hide()},Cell.prototype._bindClickEvents=function(t){var e=this,o=e.element;(t.cellClick||e.table.options.cellClick)&&o.addEventListener("click",function(o){var i=e.getComponent();t.cellClick&&t.cellClick.call(e.table,o,i),e.table.options.cellClick&&e.table.options.cellClick.call(e.table,o,i)}),t.cellDblClick||this.table.options.cellDblClick?o.addEventListener("dblclick",function(o){var i=e.getComponent();t.cellDblClick&&t.cellDblClick.call(e.table,o,i),e.table.options.cellDblClick&&e.table.options.cellDblClick.call(e.table,o,i)}):o.addEventListener("dblclick",function(t){t.preventDefault();try{if(document.selection){var o=document.body.createTextRange();o.moveToElementText(e.element),o.select()}else if(window.getSelection){var o=document.createRange();o.selectNode(e.element),window.getSelection().removeAllRanges(),window.getSelection().addRange(o)}}catch(t){}}),(t.cellContext||this.table.options.cellContext)&&o.addEventListener("contextmenu",function(o){var i=e.getComponent();t.cellContext&&t.cellContext.call(e.table,o,i),e.table.options.cellContext&&e.table.options.cellContext.call(e.table,o,i)})},Cell.prototype._bindMouseEvents=function(t){var e=this,o=e.element;(t.cellMouseEnter||e.table.options.cellMouseEnter)&&o.addEventListener("mouseenter",function(o){var i=e.getComponent();t.cellMouseEnter&&t.cellMouseEnter.call(e.table,o,i),e.table.options.cellMouseEnter&&e.table.options.cellMouseEnter.call(e.table,o,i)}),(t.cellMouseLeave||e.table.options.cellMouseLeave)&&o.addEventListener("mouseleave",function(o){var i=e.getComponent();t.cellMouseLeave&&t.cellMouseLeave.call(e.table,o,i),e.table.options.cellMouseLeave&&e.table.options.cellMouseLeave.call(e.table,o,i)}),(t.cellMouseOver||e.table.options.cellMouseOver)&&o.addEventListener("mouseover",function(o){var i=e.getComponent();t.cellMouseOver&&t.cellMouseOver.call(e.table,o,i),e.table.options.cellMouseOver&&e.table.options.cellMouseOver.call(e.table,o,i)}),(t.cellMouseOut||e.table.options.cellMouseOut)&&o.addEventListener("mouseout",function(o){var i=e.getComponent();t.cellMouseOut&&t.cellMouseOut.call(e.table,o,i),e.table.options.cellMouseOut&&e.table.options.cellMouseOut.call(e.table,o,i)}),(t.cellMouseMove||e.table.options.cellMouseMove)&&o.addEventListener("mousemove",function(o){var i=e.getComponent();t.cellMouseMove&&t.cellMouseMove.call(e.table,o,i),e.table.options.cellMouseMove&&e.table.options.cellMouseMove.call(e.table,o,i)})},Cell.prototype._bindTouchEvents=function(t){var e,o,i,n=this,s=n.element;(t.cellTap||this.table.options.cellTap)&&(i=!1,s.addEventListener("touchstart",function(t){i=!0},{passive:!0}),s.addEventListener("touchend",function(e){if(i){var o=n.getComponent();t.cellTap&&t.cellTap.call(n.table,e,o),n.table.options.cellTap&&n.table.options.cellTap.call(n.table,e,o)}i=!1})),(t.cellDblTap||this.table.options.cellDblTap)&&(e=null,s.addEventListener("touchend",function(o){if(e){clearTimeout(e),e=null;var i=n.getComponent();t.cellDblTap&&t.cellDblTap.call(n.table,o,i),n.table.options.cellDblTap&&n.table.options.cellDblTap.call(n.table,o,i)}else e=setTimeout(function(){clearTimeout(e),e=null},300)})),(t.cellTapHold||this.table.options.cellTapHold)&&(o=null,s.addEventListener("touchstart",function(e){clearTimeout(o),o=setTimeout(function(){clearTimeout(o),o=null,i=!1;var s=n.getComponent();t.cellTapHold&&t.cellTapHold.call(n.table,e,s),n.table.options.cellTapHold&&n.table.options.cellTapHold.call(n.table,e,s)},1e3)},{passive:!0}),s.addEventListener("touchend",function(t){clearTimeout(o),o=null}))},Cell.prototype._generateContents=function(){var t;switch(t=this.table.modExists("format")?this.table.modules.format.formatValue(this):this.element.innerHTML=this.value,void 0===t?"undefined":_typeof(t)){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}},Cell.prototype.cellRendered=function(){this.table.modExists("format")&&this.table.modules.format.cellRendered&&this.table.modules.format.cellRendered(this)},Cell.prototype._generateTooltip=function(){var t=this.column.tooltip;t?(!0===t?t=this.value:"function"==typeof t&&!1===(t=t(this.getComponent()))&&(t=""),void 0===t&&(t=""),this.element.setAttribute("title",t)):this.element.setAttribute("title","")},Cell.prototype.getElement=function(){return this.element},Cell.prototype.getValue=function(){return this.value},Cell.prototype.getOldValue=function(){return this.oldValue},Cell.prototype.setValue=function(t,e){var o,i=this.setValueProcessData(t,e);i&&(this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("cellEdit",this,{oldValue:this.oldValue,newValue:this.value}),o=this.getComponent(),this.column.cellEvents.cellEdited&&this.column.cellEvents.cellEdited.call(this.table,o),this.table.options.cellEdited.call(this.table,o),this.table.options.dataEdited.call(this.table,this.table.rowManager.getData()))},Cell.prototype.setValueProcessData=function(t,e){var o=!1;return this.value!=t&&(o=!0,e&&this.column.modules.mutate&&(t=this.table.modules.mutator.transformCell(this,t))),this.setValueActual(t),o&&this.table.modExists("columnCalcs")&&(this.column.definition.topCalc||this.column.definition.bottomCalc)&&(this.table.options.groupBy&&this.table.modExists("groupRows")?("table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs||this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),"table"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.recalcRowGroup(this.row)):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows)),o},Cell.prototype.setValueActual=function(t){this.oldValue=this.value,this.value=t,this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.block(),this.column.setFieldValue(this.row.data,t),this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.unblock(),this._generateContents(),this._generateTooltip(),this.table.options.resizableColumns&&this.table.modExists("resizeColumns")&&this.table.modules.resizeColumns.initializeColumn("cell",this.column,this.element),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutElement(this.element,this.column)},Cell.prototype.setWidth=function(){this.width=this.column.width,this.element.style.width=this.column.widthStyled},Cell.prototype.clearWidth=function(){this.width="",this.element.style.width=""},Cell.prototype.getWidth=function(){return this.width||this.element.offsetWidth},Cell.prototype.setMinWidth=function(){this.minWidth=this.column.minWidth,this.element.style.minWidth=this.column.minWidthStyled},Cell.prototype.checkHeight=function(){this.row.reinitializeHeight()},Cell.prototype.clearHeight=function(){this.element.style.height="",this.height=null},Cell.prototype.setHeight=function(){this.height=this.row.height,this.element.style.height=this.row.heightStyled},Cell.prototype.getHeight=function(){return this.height||this.element.offsetHeight},Cell.prototype.show=function(){this.element.style.display=""},Cell.prototype.hide=function(){this.element.style.display="none"},Cell.prototype.edit=function(t){if(this.table.modExists("edit",!0))return this.table.modules.edit.editCell(this,t)},Cell.prototype.cancelEdit=function(){if(this.table.modExists("edit",!0)){var t=this.table.modules.edit.getCurrentCell();t&&t._getSelf()===this?this.table.modules.edit.cancelEdit():console.warn("Cancel Editor Error - This cell is not currently being edited ")}},Cell.prototype.delete=function(){this.table.rowManager.redrawBlock||this.element.parentNode.removeChild(this.element),this.element=!1,this.column.deleteCell(this),this.row.deleteCell(this),this.calcs={}},Cell.prototype.nav=function(){var t=this,e=!1,o=this.row.getCellIndex(this);return{next:function(){var e,o=this.right();return!!o||!(!(e=t.table.rowManager.nextDisplayRow(t.row,!0))||!(o=e.findNextEditableCell(-1)))&&(o.edit(),!0)},prev:function(){var e,o=this.left();return!!o||!(!(e=t.table.rowManager.prevDisplayRow(t.row,!0))||!(o=e.findPrevEditableCell(e.cells.length)))&&(o.edit(),!0)},left:function(){return!!(e=t.row.findPrevEditableCell(o))&&(e.edit(),!0)},right:function(){return!!(e=t.row.findNextEditableCell(o))&&(e.edit(),!0)},up:function(){var e=t.table.rowManager.prevDisplayRow(t.row,!0);e&&e.cells[o].edit()},down:function(){var e=t.table.rowManager.nextDisplayRow(t.row,!0);e&&e.cells[o].edit()}}},Cell.prototype.getIndex=function(){this.row.getCellIndex(this)},Cell.prototype.getComponent=function(){return new CellComponent(this)};var FooterManager=function(t){this.table=t,this.active=!1,this.element=this.createElement(),this.external=!1,this.links=[],this._initialize()};FooterManager.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-footer"),t},FooterManager.prototype._initialize=function(t){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}},FooterManager.prototype.getElement=function(){return this.element},FooterManager.prototype.append=function(t,e){this.activate(e),this.element.appendChild(t),this.table.rowManager.adjustTableSize()},FooterManager.prototype.prepend=function(t,e){this.activate(e),this.element.insertBefore(t,this.element.firstChild),this.table.rowManager.adjustTableSize()},FooterManager.prototype.remove=function(t){t.parentNode.removeChild(t),this.deactivate()},FooterManager.prototype.deactivate=function(t){this.element.firstChild&&!t||(this.external||this.element.parentNode.removeChild(this.element),this.active=!1)},FooterManager.prototype.activate=function(t){this.active||(this.active=!0,this.external||(this.table.element.appendChild(this.getElement()),this.table.element.style.display="")),t&&this.links.push(t)},FooterManager.prototype.redraw=function(){this.links.forEach(function(t){t.footerRedraw()})};var Tabulator=function t(e,o){this.options={},this.columnManager=null,this.rowManager=null,this.footerManager=null,this.browser="",this.browserSlow=!1,this.browserMobile=!1,this.modules={},this.initializeElement(e),this.initializeOptions(o||{}),this._create(),t.prototype.comms.register(this)};Tabulator.prototype.defaultOptions={height:!1,layout:"fitData",layoutColumnsOnNewData:!1,columnMinWidth:40,columnHeaderVertAlign:"top",columnVertAlign:!1,resizableColumns:!0,resizableRows:!1,autoResize:!0,columns:[],data:[],autoColumns:!1,reactiveData:!1,nestedFieldSeparator:".",tooltips:!1,tooltipsHeader:!1,tooltipGenerationMode:"load",initialSort:!1,initialFilter:!1,initialHeaderFilter:!1,columnHeaderSortMulti:!0,sortOrderReverse:!1,headerSort:!0,headerSortTristate:!1,footerElement:!1,index:"id",keybindings:[],tabEndNewRow:!1,invalidOptionWarnings:!0,clipboard:!1,clipboardCopyStyled:!0,clipboardCopySelector:"active",clipboardCopyFormatter:"table",clipboardPasteParser:"table",clipboardPasteAction:"insert",clipboardCopyConfig:!1,clipboardCopied:function(){},clipboardPasted:function(){},clipboardPasteError:function(){},downloadDataFormatter:!1,downloadReady:function(t,e){return e},downloadComplete:!1,downloadConfig:!1,dataTree:!1,dataTreeElementColumn:!1,dataTreeBranchElement:!0,dataTreeChildIndent:9,dataTreeChildField:"_children",dataTreeCollapseElement:!1,dataTreeExpandElement:!1,dataTreeStartExpanded:!1,dataTreeRowExpanded:function(){},dataTreeRowCollapsed:function(){},printAsHtml:!1,printFormatter:!1,printHeader:!1,printFooter:!1,printCopyStyle:!0,printVisibleRows:!0,printConfig:{},addRowPos:"bottom",selectable:"highlight",selectableRangeMode:"drag",selectableRollingSelection:!0,selectablePersistence:!0,selectableCheck:function(t,e){return!0},headerFilterPlaceholder:!1,headerVisible:!0,history:!1,locale:!1,langs:{},virtualDom:!0,virtualDomBuffer:0,persistentLayout:!1,persistentSort:!1,persistentFilter:!1,persistenceID:"",persistenceMode:!0,persistenceReaderFunc:!1,persistenceWriterFunc:!1,persistence:!1,responsiveLayout:!1,responsiveLayoutCollapseStartOpen:!0,responsiveLayoutCollapseUseFormatters:!0,responsiveLayoutCollapseFormatter:!1,pagination:!1,paginationSize:!1,paginationInitialPage:1,paginationButtonCount:5,paginationSizeSelector:!1,paginationElement:!1,paginationDataSent:{},paginationDataReceived:{},paginationAddRow:"page",ajaxURL:!1,ajaxURLGenerator:!1,ajaxParams:{},ajaxConfig:"get",ajaxContentType:"form",ajaxRequestFunc:!1,ajaxLoader:!0,ajaxLoaderLoading:!1,ajaxLoaderError:!1,ajaxFiltering:!1,ajaxSorting:!1,ajaxProgressiveLoad:!1,ajaxProgressiveLoadDelay:0,ajaxProgressiveLoadScrollMargin:0,groupBy:!1,groupStartOpen:!0,groupValues:!1,groupHeader:!1,htmlOutputConfig:!1,movableColumns:!1,movableRows:!1,movableRowsConnectedTables:!1,movableRowsSender:!1,movableRowsReceiver:"insert",movableRowsSendingStart:function(){},movableRowsSent:function(){},movableRowsSentFailed:function(){},movableRowsSendingStop:function(){},movableRowsReceivingStart:function(){},movableRowsReceived:function(){},movableRowsReceivedFailed:function(){},movableRowsReceivingStop:function(){},scrollToRowPosition:"top",scrollToRowIfVisible:!0,scrollToColumnPosition:"left",scrollToColumnIfVisible:!0,rowFormatter:!1,placeholder:!1,tableBuilding:function(){},tableBuilt:function(){},renderStarted:function(){},renderComplete:function(){},rowClick:!1,rowDblClick:!1,rowContext:!1,rowTap:!1,rowDblTap:!1,rowTapHold:!1,rowMouseEnter:!1,rowMouseLeave:!1,rowMouseOver:!1,rowMouseOut:!1,rowMouseMove:!1,rowAdded:function(){},rowDeleted:function(){},rowMoved:function(){},rowUpdated:function(){},rowSelectionChanged:function(){},rowSelected:function(){},rowDeselected:function(){},rowResized:function(){},cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1,cellEditing:function(){},cellEdited:function(){},cellEditCancelled:function(){},columnMoved:!1,columnResized:function(){},columnTitleChanged:function(){},columnVisibilityChanged:function(){},htmlImporting:function(){},htmlImported:function(){},dataLoading:function(){},dataLoaded:function(){},dataEdited:function(){},ajaxRequesting:function(){},ajaxResponse:!1,ajaxError:function(){},dataFiltering:!1,dataFiltered:!1,dataSorting:function(){},dataSorted:function(){},groupToggleElement:"arrow",groupClosedShowCalcs:!1,dataGrouping:function(){},dataGrouped:!1,groupVisibilityChanged:function(){},groupClick:!1,groupDblClick:!1,groupContext:!1,groupTap:!1,groupDblTap:!1,groupTapHold:!1,columnCalcs:!0,pageLoaded:function(){},localized:function(){},validationFailed:function(){},historyUndo:function(){},historyRedo:function(){},scrollHorizontal:function(){},scrollVertical:function(){}},Tabulator.prototype.initializeOptions=function(t){if(!1!==t.invalidOptionWarnings)for(var e in t)void 0===this.defaultOptions[e]&&console.warn("Invalid table constructor option:",e);for(var e in this.defaultOptions)e in t?this.options[e]=t[e]:Array.isArray(this.defaultOptions[e])?this.options[e]=[]:"object"===_typeof(this.defaultOptions[e])?this.options[e]={}:this.options[e]=this.defaultOptions[e]},Tabulator.prototype.initializeElement=function(t){return"undefined"!=typeof HTMLElement&&t instanceof HTMLElement?(this.element=t,!0):"string"==typeof t?(this.element=document.querySelector(t),!!this.element||(console.error("Tabulator Creation Error - no element found matching selector: ",t),!1)):(console.error("Tabulator Creation Error - Invalid element provided:",t),!1)},Tabulator.prototype._mapDepricatedFunctionality=function(){(this.options.persistentLayout||this.options.persistentSort||this.options.persistentFilter)&&(this.options.persistence||(this.options.persistence={})),this.options.persistentLayout&&(console.warn("persistentLayout option is deprecated, you should now use the persistence option"),!0!==this.options.persistence&&void 0===this.options.persistence.columns&&(this.options.persistence.columns=!0)),this.options.persistentSort&&(console.warn("persistentSort option is deprecated, you should now use the persistence option"),!0!==this.options.persistence&&void 0===this.options.persistence.sort&&(this.options.persistence.sort=!0)),this.options.persistentFilter&&(console.warn("persistentFilter option is deprecated, you should now use the persistence option"),!0!==this.options.persistence&&void 0===this.options.persistence.filter&&(this.options.persistence.filter=!0)),this.options.columnVertAlign&&(console.warn("columnVertAlign option is deprecated, you should now use the columnHeaderVertAlign option"),this.options.columnHeaderVertAlign=this.options.columnVertAlign)},Tabulator.prototype._clearSelection=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")},Tabulator.prototype._create=function(){this._clearObjectPointers(),this._mapDepricatedFunctionality(),this.bindModules(),"TABLE"===this.element.tagName&&this.modExists("htmlTableImport",!0)&&this.modules.htmlTableImport.parseTable(),this.columnManager=new ColumnManager(this),this.rowManager=new RowManager(this),this.footerManager=new FooterManager(this),this.columnManager.setRowManager(this.rowManager),this.rowManager.setColumnManager(this.columnManager),this._buildElement(),this._loadInitialData()},Tabulator.prototype._clearObjectPointers=function(){this.options.columns=this.options.columns.slice(0),this.options.reactiveData||(this.options.data=this.options.data.slice(0))},Tabulator.prototype._buildElement=function(){var t=this,e=this.element,o=this.modules,i=this.options;for(i.tableBuilding.call(this),e.classList.add("tabulator"),e.setAttribute("role","grid");e.firstChild;)e.removeChild(e.firstChild);i.height&&(i.height=isNaN(i.height)?i.height:i.height+"px",e.style.height=i.height),this.columnManager.initialize(),this.rowManager.initialize(),this._detectBrowser(),this.modExists("layout",!0)&&o.layout.initialize(i.layout),!1!==i.headerFilterPlaceholder&&o.localize.setHeaderFilterPlaceholder(i.headerFilterPlaceholder);for(var n in i.langs)o.localize.installLang(n,i.langs[n]);if(o.localize.setLocale(i.locale),"string"==typeof i.placeholder){var s=document.createElement("div");s.classList.add("tabulator-placeholder");var l=document.createElement("span");l.innerHTML=i.placeholder,s.appendChild(l),i.placeholder=s}if(e.appendChild(this.columnManager.getElement()),e.appendChild(this.rowManager.getElement()),i.footerElement&&this.footerManager.activate(),i.persistence&&this.modExists("persistence",!0)&&o.persistence.initialize(),i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.columns&&(i.columns=o.persistence.load("columns",i.columns)),i.movableRows&&this.modExists("moveRow")&&o.moveRow.initialize(),i.autoColumns&&this.options.data&&this.columnManager.generateColumnsFromRowData(this.options.data),this.modExists("columnCalcs")&&o.columnCalcs.initialize(),
+this.columnManager.setColumns(i.columns),i.dataTree&&this.modExists("dataTree",!0)&&o.dataTree.initialize(),this.modExists("frozenRows")&&this.modules.frozenRows.initialize(),(i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.sort||i.initialSort)&&this.modExists("sort",!0)){var a=[];i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.sort?!1===(a=o.persistence.load("sort"))&&i.initialSort&&(a=i.initialSort):i.initialSort&&(a=i.initialSort),o.sort.setSort(a)}if((i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.filter||i.initialFilter)&&this.modExists("filter",!0)){var r=[];i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.filter?!1===(r=o.persistence.load("filter"))&&i.initialFilter&&(r=i.initialFilter):i.initialFilter&&(r=i.initialFilter),o.filter.setFilter(r)}i.initialHeaderFilter&&this.modExists("filter",!0)&&i.initialHeaderFilter.forEach(function(e){var i=t.columnManager.findColumn(e.field);if(!i)return console.warn("Column Filter Error - No matching column found:",e.field),!1;o.filter.setHeaderFilterValue(i,e.value)}),this.modExists("ajax")&&o.ajax.initialize(),i.pagination&&this.modExists("page",!0)&&o.page.initialize(),i.groupBy&&this.modExists("groupRows",!0)&&o.groupRows.initialize(),this.modExists("keybindings")&&o.keybindings.initialize(),this.modExists("selectRow")&&o.selectRow.clearSelectionData(!0),i.autoResize&&this.modExists("resizeTable")&&o.resizeTable.initialize(),this.modExists("clipboard")&&o.clipboard.initialize(),i.printAsHtml&&this.modExists("print")&&o.print.initialize(),i.tableBuilt.call(this)},Tabulator.prototype._loadInitialData=function(){var t=this;if(t.options.pagination&&t.modExists("page"))if(t.modules.page.reset(!0),"local"==t.options.pagination){if(t.options.data.length)t.rowManager.setData(t.options.data);else{if((t.options.ajaxURL||t.options.ajaxURLGenerator)&&t.modExists("ajax"))return void t.modules.ajax.loadData().then(function(){}).catch(function(){t.options.paginationInitialPage&&t.modules.page.setPage(t.options.paginationInitialPage)});t.rowManager.setData(t.options.data)}t.options.paginationInitialPage&&t.modules.page.setPage(t.options.paginationInitialPage)}else t.options.ajaxURL?t.modules.page.setPage(t.options.paginationInitialPage).then(function(){}).catch(function(){}):t.rowManager.setData([]);else t.options.data.length?t.rowManager.setData(t.options.data):(t.options.ajaxURL||t.options.ajaxURLGenerator)&&t.modExists("ajax")?t.modules.ajax.loadData().then(function(){}).catch(function(){}):t.rowManager.setData(t.options.data)},Tabulator.prototype.destroy=function(){var t=this.element;for(Tabulator.prototype.comms.deregister(this),this.options.reactiveData&&this.modExists("reactiveData",!0)&&this.modules.reactiveData.unwatchData(),this.rowManager.rows.forEach(function(t){t.wipe()}),this.rowManager.rows=[],this.rowManager.activeRows=[],this.rowManager.displayRows=[],this.options.autoResize&&this.modExists("resizeTable")&&this.modules.resizeTable.clearBindings(),this.modExists("keybindings")&&this.modules.keybindings.clearBindings();t.firstChild;)t.removeChild(t.firstChild);t.classList.remove("tabulator")},Tabulator.prototype._detectBrowser=function(){var t=navigator.userAgent||navigator.vendor||window.opera;t.indexOf("Trident")>-1?(this.browser="ie",this.browserSlow=!0):t.indexOf("Edge")>-1?(this.browser="edge",this.browserSlow=!0):t.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(t)||/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(t.substr(0,4))},Tabulator.prototype.blockRedraw=function(){return this.rowManager.blockRedraw()},Tabulator.prototype.restoreRedraw=function(){return this.rowManager.restoreRedraw()},Tabulator.prototype.setDataFromLocalFile=function(t){var e=this;return new Promise(function(o,i){var n=document.createElement("input");n.type="file",n.accept=t||".json,application/json",n.addEventListener("change",function(t){var s,l=n.files[0],a=new FileReader;a.readAsText(l),a.onload=function(t){try{s=JSON.parse(a.result)}catch(t){return console.warn("File Load Error - File contents is invalid JSON",t),void i(t)}e._setData(s).then(function(t){o(t)}).catch(function(t){o(t)})},a.onerror=function(t){console.warn("File Load Error - Unable to read file"),i()}}),n.click()})},Tabulator.prototype.setData=function(t,e,o){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(t,e,o)},Tabulator.prototype._setData=function(t,e,o,i){var n=this;return"string"!=typeof t?t?n.rowManager.setData(t,i):n.modExists("ajax")&&(n.modules.ajax.getUrl||n.options.ajaxURLGenerator)?"remote"==n.options.pagination&&n.modExists("page",!0)?(n.modules.page.reset(!0),n.modules.page.setPage(1)):n.modules.ajax.loadData(i):n.rowManager.setData([],i):0==t.indexOf("{")||0==t.indexOf("[")?n.rowManager.setData(JSON.parse(t),i):n.modExists("ajax",!0)?(e&&n.modules.ajax.setParams(e),o&&n.modules.ajax.setConfig(o),n.modules.ajax.setUrl(t),"remote"==n.options.pagination&&n.modExists("page",!0)?(n.modules.page.reset(!0),n.modules.page.setPage(1)):n.modules.ajax.loadData(i)):void 0},Tabulator.prototype.clearData=function(){this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this.rowManager.clearData()},Tabulator.prototype.getData=function(t){return!0===t&&(console.warn("passing a boolean to the getData function is deprecated, you should now pass the string 'active'"),t="active"),this.rowManager.getData(t)},Tabulator.prototype.getDataCount=function(t){return!0===t&&(console.warn("passing a boolean to the getDataCount function is deprecated, you should now pass the string 'active'"),t="active"),this.rowManager.getDataCount(t)},Tabulator.prototype.searchRows=function(t,e,o){if(this.modExists("filter",!0))return this.modules.filter.search("rows",t,e,o)},Tabulator.prototype.searchData=function(t,e,o){if(this.modExists("filter",!0))return this.modules.filter.search("data",t,e,o)},Tabulator.prototype.getHtml=function(t,e,o){if(this.modExists("htmlTableExport",!0))return this.modules.htmlTableExport.getHtml(t,e,o)},Tabulator.prototype.print=function(t,e,o){if(this.modExists("print",!0))return this.modules.print.printFullscreen(t,e,o)},Tabulator.prototype.getAjaxUrl=function(){if(this.modExists("ajax",!0))return this.modules.ajax.getUrl()},Tabulator.prototype.replaceData=function(t,e,o){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(t,e,o,!0)},Tabulator.prototype.updateData=function(t){var e=this,o=this,i=0;return new Promise(function(n,s){e.modExists("ajax")&&e.modules.ajax.blockActiveRequest(),"string"==typeof t&&(t=JSON.parse(t)),t?t.forEach(function(t){var e=o.rowManager.findRow(t[o.options.index]);e&&(i++,e.updateData(t).then(function(){--i||n()}))}):(console.warn("Update Error - No data provided"),s("Update Error - No data provided"))})},Tabulator.prototype.addData=function(t,e,o){var i=this;return new Promise(function(n,s){i.modExists("ajax")&&i.modules.ajax.blockActiveRequest(),"string"==typeof t&&(t=JSON.parse(t)),t?i.rowManager.addRows(t,e,o).then(function(t){var e=[];t.forEach(function(t){e.push(t.getComponent())}),n(e)}):(console.warn("Update Error - No data provided"),s("Update Error - No data provided"))})},Tabulator.prototype.updateOrAddData=function(t){var e=this,o=this,i=[],n=0;return new Promise(function(s,l){e.modExists("ajax")&&e.modules.ajax.blockActiveRequest(),"string"==typeof t&&(t=JSON.parse(t)),t?t.forEach(function(t){var e=o.rowManager.findRow(t[o.options.index]);n++,e?e.updateData(t).then(function(){n--,i.push(e.getComponent()),n||s(i)}):o.rowManager.addRows(t).then(function(t){n--,i.push(t[0].getComponent()),n||s(i)})}):(console.warn("Update Error - No data provided"),l("Update Error - No data provided"))})},Tabulator.prototype.getRow=function(t){var e=this.rowManager.findRow(t);return e?e.getComponent():(console.warn("Find Error - No matching row found:",t),!1)},Tabulator.prototype.getRowFromPosition=function(t,e){var o=this.rowManager.getRowFromPosition(t,e);return o?o.getComponent():(console.warn("Find Error - No matching row found:",t),!1)},Tabulator.prototype.deleteRow=function(t){var e=this;return new Promise(function(o,i){function n(){++s==t.length&&l&&(a.rowManager.reRenderInPosition(),o())}var s=0,l=0,a=e;Array.isArray(t)||(t=[t]),t.forEach(function(t){var o=e.rowManager.findRow(t,!0);o?o.delete().then(function(){l++,n()}).catch(function(t){n(),i(t)}):(console.warn("Delete Error - No matching row found:",t),i("Delete Error - No matching row found"),n())})})},Tabulator.prototype.addRow=function(t,e,o){var i=this;return new Promise(function(n,s){"string"==typeof t&&(t=JSON.parse(t)),i.rowManager.addRows(t,e,o).then(function(t){i.modExists("columnCalcs")&&i.modules.columnCalcs.recalc(i.rowManager.activeRows),n(t[0].getComponent())})})},Tabulator.prototype.updateOrAddRow=function(t,e){var o=this;return new Promise(function(i,n){var s=o.rowManager.findRow(t);"string"==typeof e&&(e=JSON.parse(e)),s?s.updateData(e).then(function(){o.modExists("columnCalcs")&&o.modules.columnCalcs.recalc(o.rowManager.activeRows),i(s.getComponent())}).catch(function(t){n(t)}):s=o.rowManager.addRows(e).then(function(t){o.modExists("columnCalcs")&&o.modules.columnCalcs.recalc(o.rowManager.activeRows),i(t[0].getComponent())}).catch(function(t){n(t)})})},Tabulator.prototype.updateRow=function(t,e){var o=this;return new Promise(function(i,n){var s=o.rowManager.findRow(t);"string"==typeof e&&(e=JSON.parse(e)),s?s.updateData(e).then(function(){i(s.getComponent())}).catch(function(t){n(t)}):(console.warn("Update Error - No matching row found:",t),n("Update Error - No matching row found"))})},Tabulator.prototype.scrollToRow=function(t,e,o){var i=this;return new Promise(function(n,s){var l=i.rowManager.findRow(t);l?i.rowManager.scrollToRow(l,e,o).then(function(){n()}).catch(function(t){s(t)}):(console.warn("Scroll Error - No matching row found:",t),s("Scroll Error - No matching row found"))})},Tabulator.prototype.moveRow=function(t,e,o){var i=this.rowManager.findRow(t);i?i.moveToRow(e,o):console.warn("Move Error - No matching row found:",t)},Tabulator.prototype.getRows=function(t){return!0===t&&(console.warn("passing a boolean to the getRows function is deprecated, you should now pass the string 'active'"),t="active"),this.rowManager.getComponents(t)},Tabulator.prototype.getRowPosition=function(t,e){var o=this.rowManager.findRow(t);return o?this.rowManager.getRowPosition(o,e):(console.warn("Position Error - No matching row found:",t),!1)},Tabulator.prototype.copyToClipboard=function(t,e,o,i){this.modExists("clipboard",!0)&&this.modules.clipboard.copy(t,e,o,i)},Tabulator.prototype.setColumns=function(t){this.columnManager.setColumns(t)},Tabulator.prototype.getColumns=function(t){return this.columnManager.getComponents(t)},Tabulator.prototype.getColumn=function(t){var e=this.columnManager.findColumn(t);return e?e.getComponent():(console.warn("Find Error - No matching column found:",t),!1)},Tabulator.prototype.getColumnDefinitions=function(){return this.columnManager.getDefinitionTree()},Tabulator.prototype.getColumnLayout=function(){if(this.modExists("persistence",!0))return this.modules.persistence.parseColumns(this.columnManager.getColumns())},Tabulator.prototype.setColumnLayout=function(t){return!!this.modExists("persistence",!0)&&(this.columnManager.setColumns(this.modules.persistence.mergeDefinition(this.options.columns,t)),!0)},Tabulator.prototype.showColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Show Error - No matching column found:",t),!1;e.show(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},Tabulator.prototype.hideColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Hide Error - No matching column found:",t),!1;e.hide(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},Tabulator.prototype.toggleColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Visibility Toggle Error - No matching column found:",t),!1;e.visible?e.hide():e.show()},Tabulator.prototype.addColumn=function(t,e,o){var i=this;return new Promise(function(n,s){var l=i.columnManager.findColumn(o);i.columnManager.addColumn(t,e,l).then(function(t){n(t.getComponent())}).catch(function(t){s(t)})})},Tabulator.prototype.deleteColumn=function(t){var e=this;return new Promise(function(o,i){var n=e.columnManager.findColumn(t);n?n.delete().then(function(){o()}).catch(function(t){i(t)}):(console.warn("Column Delete Error - No matching column found:",t),i())})},Tabulator.prototype.updateColumnDefinition=function(t,e){var o=this;return new Promise(function(e,i){var n=o.columnManager.findColumn(t);n?n.updateDefinition().then(function(t){e(t)}).catch(function(t){i(t)}):(console.warn("Column Update Error - No matching column found:",t),i())})},Tabulator.prototype.moveColumn=function(t,e,o){var i=this.columnManager.findColumn(t),n=this.columnManager.findColumn(e);i?n?this.columnManager.moveColumn(i,n,o):console.warn("Move Error - No matching column found:",n):console.warn("Move Error - No matching column found:",t)},Tabulator.prototype.scrollToColumn=function(t,e,o){var i=this;return new Promise(function(n,s){var l=i.columnManager.findColumn(t);l?i.columnManager.scrollToColumn(l,e,o).then(function(){n()}).catch(function(t){s(t)}):(console.warn("Scroll Error - No matching column found:",t),s("Scroll Error - No matching column found"))})},Tabulator.prototype.setLocale=function(t){this.modules.localize.setLocale(t)},Tabulator.prototype.getLocale=function(){return this.modules.localize.getLocale()},Tabulator.prototype.getLang=function(t){return this.modules.localize.getLang(t)},Tabulator.prototype.redraw=function(t){this.columnManager.redraw(t),this.rowManager.redraw(t)},Tabulator.prototype.setHeight=function(t){"classic"!==this.rowManager.renderMode?(this.options.height=isNaN(t)?t:t+"px",this.element.style.height=this.options.height,this.rowManager.redraw()):console.warn("setHeight function is not available in classic render mode")},Tabulator.prototype.setSort=function(t,e){this.modExists("sort",!0)&&(this.modules.sort.setSort(t,e),this.rowManager.sorterRefresh())},Tabulator.prototype.getSorters=function(){if(this.modExists("sort",!0))return this.modules.sort.getSort()},Tabulator.prototype.clearSort=function(){this.modExists("sort",!0)&&(this.modules.sort.clear(),this.rowManager.sorterRefresh())},Tabulator.prototype.setFilter=function(t,e,o){this.modExists("filter",!0)&&(this.modules.filter.setFilter(t,e,o),this.rowManager.filterRefresh())},Tabulator.prototype.addFilter=function(t,e,o){this.modExists("filter",!0)&&(this.modules.filter.addFilter(t,e,o),this.rowManager.filterRefresh())},Tabulator.prototype.getFilters=function(t){if(this.modExists("filter",!0))return this.modules.filter.getFilters(t)},Tabulator.prototype.setHeaderFilterFocus=function(t){if(this.modExists("filter",!0)){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Filter Focus Error - No matching column found:",t),!1;this.modules.filter.setHeaderFilterFocus(e)}},Tabulator.prototype.setHeaderFilterValue=function(t,e){if(this.modExists("filter",!0)){var o=this.columnManager.findColumn(t);if(!o)return console.warn("Column Filter Error - No matching column found:",t),!1;this.modules.filter.setHeaderFilterValue(o,e)}},Tabulator.prototype.getHeaderFilters=function(){if(this.modExists("filter",!0))return this.modules.filter.getHeaderFilters()},Tabulator.prototype.removeFilter=function(t,e,o){this.modExists("filter",!0)&&(this.modules.filter.removeFilter(t,e,o),this.rowManager.filterRefresh())},Tabulator.prototype.clearFilter=function(t){this.modExists("filter",!0)&&(this.modules.filter.clearFilter(t),this.rowManager.filterRefresh())},Tabulator.prototype.clearHeaderFilter=function(){this.modExists("filter",!0)&&(this.modules.filter.clearHeaderFilter(),this.rowManager.filterRefresh())},Tabulator.prototype.selectRow=function(t){this.modExists("selectRow",!0)&&(!0===t&&(console.warn("passing a boolean to the selectRowselectRow function is deprecated, you should now pass the string 'active'"),t="active"),this.modules.selectRow.selectRows(t))},Tabulator.prototype.deselectRow=function(t){this.modExists("selectRow",!0)&&this.modules.selectRow.deselectRows(t)},Tabulator.prototype.toggleSelectRow=function(t){this.modExists("selectRow",!0)&&this.modules.selectRow.toggleRow(t)},Tabulator.prototype.getSelectedRows=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedRows()},Tabulator.prototype.getSelectedData=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedData()},Tabulator.prototype.setMaxPage=function(t){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setMaxPage(t)},Tabulator.prototype.setPage=function(t){return this.options.pagination&&this.modExists("page")?this.modules.page.setPage(t):new Promise(function(t,e){e()})},Tabulator.prototype.setPageToRow=function(t){var e=this;return new Promise(function(o,i){e.options.pagination&&e.modExists("page")?(t=e.rowManager.findRow(t),t?e.modules.page.setPageToRow(t).then(function(){o()}).catch(function(){i()}):i()):i()})},Tabulator.prototype.setPageSize=function(t){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setPageSize(t),this.modules.page.setPage(1).then(function(){}).catch(function(){})},Tabulator.prototype.getPageSize=function(){if(this.options.pagination&&this.modExists("page",!0))return this.modules.page.getPageSize()},Tabulator.prototype.previousPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.previousPage()},Tabulator.prototype.nextPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.nextPage()},Tabulator.prototype.getPage=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPage()},Tabulator.prototype.getPageMax=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPageMax()},Tabulator.prototype.setGroupBy=function(t){if(!this.modExists("groupRows",!0))return!1;this.options.groupBy=t,this.modules.groupRows.initialize(),this.rowManager.refreshActiveData("display"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")},Tabulator.prototype.setGroupStartOpen=function(t){if(!this.modExists("groupRows",!0))return!1;this.options.groupStartOpen=t,this.modules.groupRows.initialize(),this.options.groupBy?(this.rowManager.refreshActiveData("group"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")):console.warn("Grouping Update - cant refresh view, no groups have been set")},Tabulator.prototype.setGroupHeader=function(t){if(!this.modExists("groupRows",!0))return!1;this.options.groupHeader=t,this.modules.groupRows.initialize(),this.options.groupBy?(this.rowManager.refreshActiveData("group"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")):console.warn("Grouping Update - cant refresh view, no groups have been set")},Tabulator.prototype.getGroups=function(t){return!!this.modExists("groupRows",!0)&&this.modules.groupRows.getGroups(!0)},Tabulator.prototype.getGroupedData=function(){if(this.modExists("groupRows",!0))return this.options.groupBy?this.modules.groupRows.getGroupedData():this.getData()},Tabulator.prototype.getCalcResults=function(){return!!this.modExists("columnCalcs",!0)&&this.modules.columnCalcs.getResults()},Tabulator.prototype.navigatePrev=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&t.nav().prev()},Tabulator.prototype.navigateNext=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&t.nav().next()},Tabulator.prototype.navigateLeft=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().left())},Tabulator.prototype.navigateRight=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().right())},Tabulator.prototype.navigateUp=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().up())},Tabulator.prototype.navigateDown=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().down())},Tabulator.prototype.undo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.undo()},Tabulator.prototype.redo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.redo()},Tabulator.prototype.getHistoryUndoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryUndoSize()},Tabulator.prototype.getHistoryRedoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryRedoSize()},Tabulator.prototype.download=function(t,e,o,i){this.modExists("download",!0)&&this.modules.download.download(t,e,o,i)},Tabulator.prototype.downloadToTab=function(t,e,o,i){this.modExists("download",!0)&&this.modules.download.download(t,e,o,i,!0)},Tabulator.prototype.tableComms=function(t,e,o,i){this.modules.comms.receive(t,e,o,i)},Tabulator.prototype.moduleBindings={},Tabulator.prototype.extendModule=function(t,e,o){if(Tabulator.prototype.moduleBindings[t]){var i=Tabulator.prototype.moduleBindings[t].prototype[e];if(i)if("object"==(void 0===o?"undefined":_typeof(o)))for(var n in o)i[n]=o[n];else console.warn("Module Error - Invalid value type, it must be an object");else console.warn("Module Error - property does not exist:",e)}else console.warn("Module Error - module does not exist:",t)},Tabulator.prototype.registerModule=function(t,e){Tabulator.prototype.moduleBindings[t]=e},Tabulator.prototype.bindModules=function(){this.modules={};for(var t in Tabulator.prototype.moduleBindings)this.modules[t]=new Tabulator.prototype.moduleBindings[t](this)},Tabulator.prototype.modExists=function(t,e){return!!this.modules[t]||(e&&console.error("Tabulator Module Not Installed: "+t),!1)},Tabulator.prototype.helpers={elVisible:function(t){return!(t.offsetWidth<=0&&t.offsetHeight<=0)},elOffset:function(t){var e=t.getBoundingClientRect();return{top:e.top+window.pageYOffset-document.documentElement.clientTop,left:e.left+window.pageXOffset-document.documentElement.clientLeft}},deepClone:function(t){var e=Array.isArray(t)?[]:{};for(var o in t)null!=t[o]&&"object"===_typeof(t[o])?t[o]instanceof Date?e[o]=new Date(t[o]):e[o]=this.deepClone(t[o]):e[o]=t[o];return e}},Tabulator.prototype.comms={tables:[],register:function(t){Tabulator.prototype.comms.tables.push(t)},deregister:function(t){var e=Tabulator.prototype.comms.tables.indexOf(t);e>-1&&Tabulator.prototype.comms.tables.splice(e,1)},lookupTable:function(t,e){var o,i,n=[];if("string"==typeof t){if(o=document.querySelectorAll(t),o.length)for(var s=0;s<o.length;s++)(i=Tabulator.prototype.comms.matchElement(o[s]))&&n.push(i)}else"undefined"!=typeof HTMLElement&&t instanceof HTMLElement||t instanceof Tabulator?(i=Tabulator.prototype.comms.matchElement(t))&&n.push(i):Array.isArray(t)?t.forEach(function(t){n=n.concat(Tabulator.prototype.comms.lookupTable(t))}):e||console.warn("Table Connection Error - Invalid Selector",t);return n},matchElement:function(t){return Tabulator.prototype.comms.tables.find(function(e){return t instanceof Tabulator?e===t:e.element===t})}},Tabulator.prototype.findTable=function(t){var e=Tabulator.prototype.comms.lookupTable(t,!0);return!(Array.isArray(e)&&!e.length)&&e};var Layout=function(t){this.table=t,this.mode=null};Layout.prototype.initialize=function(t){this.modes[t]?this.mode=t:(console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : "+t),this.mode="fitData"),this.table.element.setAttribute("tabulator-layout",this.mode)},Layout.prototype.getMode=function(){return this.mode},Layout.prototype.layout=function(){this.modes[this.mode].call(this,this.table.columnManager.columnsByIndex)},Layout.prototype.modes={fitData:function(t){t.forEach(function(t){t.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataFill:function(t){t.forEach(function(t){t.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataStretch:function(t){var e=this,o=0,i=this.table.rowManager.element.clientWidth,n=0,s=!1;t.forEach(function(t,i){t.widthFixed||t.reinitializeWidth(),(e.table.options.responsiveLayout?t.modules.responsive.visible:t.visible)&&(s=t),t.visible&&(o+=t.getWidth())}),s?(n=i-o+s.getWidth(),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&(s.setWidth(0),this.table.modules.responsiveLayout.update()),n>0?s.setWidth(n):column.reinitializeWidth()):this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitColumns:function(t){function e(t){return"string"==typeof t?t.indexOf("%")>-1?n/100*parseInt(t):parseInt(t):t}function o(t,i,n,s){function l(t){return n*(t.column.definition.widthGrow||1)}function a(t){return e(t.width)-n*(t.column.definition.widthShrink||0)}var r=[],u=0,c=0,h=0,p=0,d=0,m=[];return t.forEach(function(t,e){var o=s?a(t):l(t);t.column.minWidth>=o?r.push(t):(m.push(t),d+=s?t.column.definition.widthShrink||1:t.column.definition.widthGrow||1)}),r.length?(r.forEach(function(t){u+=s?t.width-t.column.minWidth:t.column.minWidth,t.width=t.column.minWidth}),c=i-u,h=d?Math.floor(c/d):c,p=c-h*d,p+=o(m,c,h,s)):(p=d?i-Math.floor(i/d)*d:i,m.forEach(function(t){t.width=s?a(t):l(t)})),p}var i=this,n=i.table.element.clientWidth,s=0,l=0,a=0,r=0,u=[],c=[],h=0,p=0,d=0;this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.rowManager.element.scrollHeight>this.table.rowManager.element.clientHeight&&(n-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),t.forEach(function(t){var o,i,n;t.visible&&(o=t.definition.width,i=parseInt(t.minWidth),o?(n=e(o),s+=n>i?n:i,t.definition.widthShrink&&(c.push({column:t,width:n>i?n:i}),h+=t.definition.widthShrink)):(u.push({column:t,width:0}),a+=t.definition.widthGrow||1))}),l=n-s,r=Math.floor(l/a);var d=o(u,l,r,!1);u.length&&d>0&&(u[u.length-1].width+=+d),u.forEach(function(t){l-=t.width}),p=Math.abs(d)+l,p>0&&h&&(d=o(c,p,Math.floor(p/h),!0)),c.length&&(c[c.length-1].width-=d),u.forEach(function(t){t.column.setWidth(t.width)}),c.forEach(function(t){t.column.setWidth(t.width)})}},Tabulator.prototype.registerModule("layout",Layout);var Localize=function(t){this.table=t,this.locale="default",this.lang=!1,this.bindings={}};Localize.prototype.setHeaderFilterPlaceholder=function(t){this.langs.default.headerFilters.default=t},Localize.prototype.setHeaderFilterColumnPlaceholder=function(t,e){this.langs.default.headerFilters.columns[t]=e,this.lang&&!this.lang.headerFilters.columns[t]&&(this.lang.headerFilters.columns[t]=e)},Localize.prototype.installLang=function(t,e){this.langs[t]?this._setLangProp(this.langs[t],e):this.langs[t]=e},Localize.prototype._setLangProp=function(t,e){for(var o in e)t[o]&&"object"==_typeof(t[o])?this._setLangProp(t[o],e[o]):t[o]=e[o]},Localize.prototype.setLocale=function(t){function e(t,o){for(var i in t)"object"==_typeof(t[i])?(o[i]||(o[i]={}),e(t[i],o[i])):o[i]=t[i]}var o=this;if(t=t||"default",!0===t&&navigator.language&&(t=navigator.language.toLowerCase()),t&&!o.langs[t]){var i=t.split("-")[0];o.langs[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")}o.locale=t,o.lang=Tabulator.prototype.helpers.deepClone(o.langs.default||{}),"default"!=t&&e(o.langs[t],o.lang),o.table.options.localized.call(o.table,o.locale,o.lang),o._executeBindings()},Localize.prototype.getLocale=function(t){return self.locale},Localize.prototype.getLang=function(t){return t?this.langs[t]:this.lang},Localize.prototype.getText=function(t,e){var t=e?t+"|"+e:t,o=t.split("|");return this._getLangElement(o,this.locale)||""},Localize.prototype._getLangElement=function(t,e){var o=this,i=o.lang;return t.forEach(function(t){var e;i&&(e=i[t],i=void 0!==e&&e)}),i},Localize.prototype.bind=function(t,e){this.bindings[t]||(this.bindings[t]=[]),this.bindings[t].push(e),e(this.getText(t),this.lang)},Localize.prototype._executeBindings=function(){var t=this;for(var e in t.bindings)!function(e){t.bindings[e].forEach(function(o){o(t.getText(e),t.lang)})}(e)},Localize.prototype.langs={default:{groups:{item:"item",items:"items"},columns:{},ajax:{loading:"Loading",error:"Error"},pagination:{page_size:"Page Size",first:"First",first_title:"First Page",last:"Last",last_title:"Last Page",prev:"Prev",prev_title:"Prev Page",next:"Next",next_title:"Next Page"},headerFilters:{default:"filter column...",columns:{}}}},Tabulator.prototype.registerModule("localize",Localize);var Comms=function(t){this.table=t};Comms.prototype.getConnections=function(t){var e,o=this,i=[];return e=Tabulator.prototype.comms.lookupTable(t),e.forEach(function(t){o.table!==t&&i.push(t)}),i},Comms.prototype.send=function(t,e,o,i){var n=this,s=this.getConnections(t);s.forEach(function(t){t.tableComms(n.table.element,e,o,i)}),!s.length&&t&&console.warn("Table Connection Error - No tables matching selector found",t)},
+Comms.prototype.receive=function(t,e,o,i){if(this.table.modExists(e))return this.table.modules[e].commsReceived(t,o,i);console.warn("Inter-table Comms Error - no such module:",e)},Tabulator.prototype.registerModule("comms",Comms);
\ No newline at end of file
diff --git a/dev/db/schema.views.sql b/dev/db/schema.views.sql
new file mode 100644 (file)
index 0000000..90356e4
--- /dev/null
@@ -0,0 +1,228 @@
+CREATE OR REPLACE VIEW portanova.vw_staffplanned_dayweektotals
+AS SELECT stw2.calweek,
+    stw2.caldate AS dates,
+    stw2.id_staff,
+    max( CASE  WHEN stw2.isodow = 1 THEN to_char(stw2.timestart1, 'HH24:MI')
+            ELSE NULL
+        END) AS mon_start1,
+    max(
+        CASE
+            WHEN stw2.isodow = 1 THEN to_char(stw2.timeend1, 'HH24:MI')
+            ELSE NULL
+        END) AS mon_end1,
+    max(
+        CASE
+            WHEN stw2.isodow = 1 THEN to_char(stw2.timestart2, 'HH24:MI')
+            ELSE NULL
+        END) AS mon_start2,
+    max(
+        CASE
+            WHEN stw2.isodow = 1 THEN to_char(stw2.timeend2, 'HH24:MI')
+            ELSE NULL
+        END) AS mon_end2,
+    max(
+        CASE
+            WHEN stw2.isodow = 1 THEN to_char(stw2.timepause, 'HH24:MI')
+            ELSE NULL
+        END) AS mon_pause,
+    to_char(max(
+        CASE
+            WHEN stw2.isodow = 1 THEN stw2.time1 + stw2.time2 - stw2.timepause
+            ELSE NULL
+        END),'HH24:MI') AS mon_timetotal,
+    max(
+        CASE
+            WHEN stw2.isodow = 2 THEN to_char(stw2.timestart1, 'HH24:MI')
+            ELSE NULL
+        END) AS tue_start1,
+    max(
+        CASE
+            WHEN stw2.isodow = 2 THEN to_char(stw2.timeend1, 'HH24:MI')
+            ELSE NULL
+        END) AS tue_end1,
+    max(
+        CASE
+            WHEN stw2.isodow = 2 THEN to_char(stw2.timestart2, 'HH24:MI')
+            ELSE NULL
+        END) AS tue_start2,
+    max(
+        CASE
+            WHEN stw2.isodow = 2 THEN to_char(stw2.timeend2, 'HH24:MI')
+            ELSE NULL
+        END) AS tue_end2,
+    max(
+        CASE
+            WHEN stw2.isodow = 2 THEN to_char(stw2.timepause, 'HH24:MI')
+            ELSE NULL
+        END) AS tue_pause,
+    mto_char(max(
+        CASE
+            WHEN stw2.isodow = 2 THEN stw2.time1 + stw2.time2 - stw2.timepause
+            ELSE NULL
+        END),'HH24:MI') AS tue_timetotal,
+    max(
+        CASE
+            WHEN stw2.isodow = 3 THEN to_char(stw2.timestart1, 'HH24:MI')
+            ELSE NULL
+        END) AS wed_start1,
+    max(
+        CASE
+            WHEN stw2.isodow = 3 THEN to_char(stw2.timeend1, 'HH24:MI')
+            ELSE NULL
+        END) AS wed_end1,
+    max(
+        CASE
+            WHEN stw2.isodow = 3 THEN to_char(stw2.timestart2, 'HH24:MI')
+            ELSE NULL
+        END) AS wed_start2,
+    max(
+        CASE
+            WHEN stw2.isodow = 3 THEN to_char(stw2.timeend2, 'HH24:MI')
+            ELSE NULL
+        END) AS wed_end2,
+    max(
+        CASE
+            WHEN stw2.isodow = 3 THEN to_char(stw2.timepause, 'HH24:MI')
+            ELSE NULL
+        END) AS wed_pause,
+    to_char(max(
+        CASE
+            WHEN stw2.isodow = 3 THEN stw2.time1 + stw2.time2 - stw2.timepause
+            ELSE NULL
+        END),'HH24:MI') AS wed_timetotal,
+    max(
+        CASE
+            WHEN stw2.isodow = 4 THEN to_char(stw2.timestart1, 'HH24:MI')
+            ELSE NULL
+        END) AS thu_start1,
+    max(
+        CASE
+            WHEN stw2.isodow = 4 THEN to_char(stw2.timeend1, 'HH24:MI')
+            ELSE NULL
+        END) AS thu_end1,
+    max(
+        CASE
+            WHEN stw2.isodow = 4 THEN to_char(stw2.timestart2, 'HH24:MI')
+            ELSE NULL
+        END) AS thu_start2,
+    max(
+        CASE
+            WHEN stw2.isodow = 4 THEN to_char(stw2.timeend2, 'HH24:MI')
+            ELSE NULL
+        END) AS thu_end2,
+    max(
+        CASE
+            WHEN stw2.isodow = 4 THEN to_char(stw2.timepause, 'HH24:MI')
+            ELSE NULL
+        END) AS thu_pause,
+    to_char(max(
+        CASE
+            WHEN stw2.isodow = 4 THEN stw2.time1 + stw2.time2 - stw2.timepause
+            ELSE NULL
+        END),'HH24:MI') AS thu_timetotal,
+    max(
+        CASE
+            WHEN stw2.isodow = 5 THEN to_char(stw2.timestart1, 'HH24:MI')
+            ELSE NULL
+        END) AS fri_start1,
+    max(
+        CASE
+            WHEN stw2.isodow = 5 THEN to_char(stw2.timeend1, 'HH24:MI')
+            ELSE NULL
+        END) AS fri_end1,
+    max(
+        CASE
+            WHEN stw2.isodow = 5 THEN to_char(stw2.timestart2, 'HH24:MI')
+            ELSE NULL
+        END) AS fri_start2,
+    max(
+        CASE
+            WHEN stw2.isodow = 5 THEN to_char(stw2.timeend2, 'HH24:MI')
+            ELSE NULL
+        END) AS fri_end2,
+    max(
+        CASE
+            WHEN stw2.isodow = 5 THEN to_char(stw2.timepause, 'HH24:MI')
+            ELSE NULL
+        END) AS fri_pause,
+    to_char(max(
+        CASE
+            WHEN stw2.isodow = 5 THEN stw2.time1 + stw2.time2 - stw2.timepause
+            ELSE NULL
+        END),'HH24:MI') AS fri_timetotal,
+    max(
+        CASE
+            WHEN stw2.isodow = 6 THEN to_char(stw2.timestart1, 'HH24:MI')
+            ELSE NULL
+        END) AS sat_start1,
+    max(
+        CASE
+            WHEN stw2.isodow = 6 THEN to_char(stw2.timeend1, 'HH24:MI')
+            ELSE NULL
+        END) AS sat_end1,
+    max(
+        CASE
+            WHEN stw2.isodow = 6 THEN to_char(stw2.timestart2, 'HH24:MI')
+            ELSE NULL
+        END) AS sat_start2,
+    max(
+        CASE
+            WHEN stw2.isodow = 6 THEN to_char(stw2.timeend2, 'HH24:MI')
+            ELSE NULL
+        END) AS sat_end2,
+    max(
+        CASE
+            WHEN stw2.isodow = 6 THEN to_char(stw2.timepause, 'HH24:MI')
+            ELSE NULL
+        END) AS sat_pause,
+    to_char(max(
+        CASE
+            WHEN stw2.isodow = 6 THEN stw2.time1 + stw2.time2 - stw2.timepause
+            ELSE NULL
+        END),'HH24:MI') AS sat_timetotal,
+    max(
+        CASE
+            WHEN stw2.isodow = 7 THEN to_char(stw2.timestart1, 'HH24:MI')
+            ELSE NULL
+        END) AS sun_start1,
+    max(
+        CASE
+            WHEN stw2.isodow = 7 THEN to_char(stw2.timeend1, 'HH24:MI')
+            ELSE NULL
+        END) AS sun_end1,
+    max(
+        CASE
+            WHEN stw2.isodow = 7 THEN to_char(stw2.timestart2, 'HH24:MI')
+            ELSE NULL
+        END) AS sun_start2,
+    max(
+        CASE
+            WHEN stw2.isodow = 7 THEN to_char(stw2.timeend2, 'HH24:MI')
+            ELSE NULL
+        END) AS sun_end2,
+    max(
+        CASE
+            WHEN stw2.isodow = 7 THEN to_char(stw2.timepause, 'HH24:MI')
+            ELSE NULL
+        END) AS sun_pause,
+    to_char(max(
+        CASE
+            WHEN stw2.isodow = 7 THEN stw2.time1 + stw2.time2 - stw2.timepause
+            ELSE NULL
+        END),'HH24:MI') AS sun_timetotal,
+    sum(stw2.time1 + stw2.time2 - stw2.timepause) AS weektotal
+   FROM ( SELECT stw.daydate,
+            date_part('week'::text, staffworkplan.daydate) AS calweek,
+            date_trunc('week'::text, staffworkplan.daydate::timestamp with time zone)::date AS caldate,
+            date_part('isodow'::text, staffworkplan.daydate) AS isodow,
+            stw.id,
+            stw.id_staff,
+            stw.timestart1,
+            stw.timeend1,
+            case when stw.timestart1>stw.timeend1 then '24:00:00'::TIME-(stw.timestart1-stw.timeend1)::TIME else stw.timeend1-stw.timestart1 end as time1
+            stw.timestart2,
+            stw.timeend2,
+            case when stw.timestart2>stw.timeend2 then '24:00:00'::TIME-(stw.timestart2-stw.timeend2)::TIME else stw.timeend2-stw.timestart2 end as time2
+            stw.timepause
+           FROM portanova.staffworkplan stw) stw2
+  GROUP BY stw2.calweek, stw2.caldate, stw2.id_staff;
\ No newline at end of file