From e186ebd01b16617734dd04e4b04143b05b34a5ef Mon Sep 17 00:00:00 2001 From: Johannes Wilm Date: Mon, 13 Nov 2023 21:53:48 +0100 Subject: [PATCH] resolve issue with excluded columns during editing, fixes #341 --- docs/demos/15-editing/index.html | 1 + docs/demos/dist/module.js | 34 ++++++++++++------------ docs/demos/dist/module.js.map | 2 +- docs/demos/dist/umd.js | 2 +- src/editing/editor.ts | 45 ++++++++++++++++---------------- 5 files changed, 42 insertions(+), 42 deletions(-) diff --git a/docs/demos/15-editing/index.html b/docs/demos/15-editing/index.html index deb8403a..4142507d 100644 --- a/docs/demos/15-editing/index.html +++ b/docs/demos/15-editing/index.html @@ -759,6 +759,7 @@

Editing

editor = makeEditable(table, { contextMenu: true, hiddenColumns: true, + excludeColumns: [1], inline, menuItems: [ { diff --git a/docs/demos/dist/module.js b/docs/demos/dist/module.js index 2c9eb605..a56739d7 100644 --- a/docs/demos/dist/module.js +++ b/docs/demos/dist/module.js @@ -2834,8 +2834,8 @@ class Editor { this.saveCell(input.value); } else { - const inputs = Array.from(this.modalDOM.querySelectorAll(`input.${this.options.classes.input}[type=text]`)); - this.saveRow(inputs.map(input => input.value.trim()), this.data.row); + const values = Array.from(this.modalDOM.querySelectorAll(`input.${this.options.classes.input}[type=text]`)).map(input => input.value.trim()); + this.saveRow(values, this.data.row); } } } @@ -2847,8 +2847,8 @@ class Editor { this.saveCell(input.value); } else if (this.editingRow) { - const inputs = Array.from(this.dt.wrapperDOM.querySelectorAll(`input.${this.options.classes.input}[type=text]`)); - this.saveRow(inputs.map(input => input.value.trim()), this.data.row); + const values = Array.from(this.dt.wrapperDOM.querySelectorAll(`input.${this.options.classes.input}[type=text]`)).map(input => input.value.trim()); + this.saveRow(values, this.data.row); } } else if (event.key === "Escape") { @@ -3075,8 +3075,6 @@ class Editor { this.openModal(); // Grab the inputs const inputs = Array.from(form.querySelectorAll(`input.${this.options.classes.input}[type=text]`)); - // Remove save button - inputs.pop(); // Close / save modalDOM.addEventListener("click", (event) => { const target = event.target; @@ -3090,7 +3088,8 @@ class Editor { } else if (target.hasAttribute("data-editor-save")) { // save button // Save - this.saveRow(inputs.map((input) => input.value.trim()), this.data.row); + const values = inputs.map((input) => input.value.trim()); + this.saveRow(values, this.data.row); } }); } @@ -3104,20 +3103,19 @@ class Editor { // Store the old data for the emitter const oldData = row.map((cell) => cell.text ?? String(cell.data)); if (data) { - this.dt.data.data[this.data.rowIndex] = this.dt.data.data[this.data.rowIndex].map((oldCell, colIndex) => { - const columnSetting = this.dt.columns.settings[colIndex]; - if (columnSetting.hidden || this.options.excludeColumns.includes(colIndex)) { - return oldCell; + let valueCounter = 0; + this.dt.data.data[this.data.rowIndex] = row.map((oldItem, colIndex) => { + if (this.options.excludeColumns.includes(colIndex) || this.dt.columns.settings[colIndex].hidden) { + return oldItem; } const type = this.dt.columns.settings[colIndex].type || this.dt.options.type; - const value = data[columnToVisibleIndex(colIndex, this.dt.columns.settings)]; - const stringValue = value.trim(); + const value = data[valueCounter++]; let cell; if (type === "number") { - cell = { data: parseFloat(stringValue) }; + cell = { data: parseFloat(value) }; } else if (type === "boolean") { - if (["", "false", "0"].includes(stringValue)) { + if (["", "false", "0"].includes(value)) { cell = { data: false, text: "false", order: 0 }; @@ -3129,12 +3127,14 @@ class Editor { } } else if (type === "html") { - cell = { data: [ + cell = { + data: [ { nodeName: "#text", data: value } ], text: value, - order: value }; + order: value + }; } else if (type === "string") { cell = { data: value }; diff --git a/docs/demos/dist/module.js.map b/docs/demos/dist/module.js.map index 73bbadbb..557ccc8f 100644 --- a/docs/demos/dist/module.js.map +++ b/docs/demos/dist/module.js.map @@ -1 +1 @@ -{"version":3,"file":"module.js","sources":["../../../src/helpers.ts","../../../node_modules/diff-dom/dist/module.js","../../../src/virtual_dom.ts","../../../node_modules/dayjs/dayjs.min.js","../../../node_modules/dayjs/plugin/customParseFormat.js","../../../src/date.ts","../../../src/read_data.ts","../../../src/rows.ts","../../../src/column_settings.ts","../../../src/columns.ts","../../../src/templates.ts","../../../src/config.ts","../../../src/virtual_pager_dom.ts","../../../src/datatable.ts","../../../src/convert/csv.ts","../../../src/convert/json.ts","../../../src/export/csv.ts","../../../src/export/json.ts","../../../src/export/sql.ts","../../../src/export/txt.ts","../../../src/editing/config.ts","../../../src/editing/helpers.ts","../../../src/editing/editor.ts","../../../src/column_filter/config.ts","../../../src/column_filter/column_filter.ts"],"sourcesContent":["import {elementNodeType, columnSettingsType, textNodeType} from \"./types\"\n\n/**\n * Check is item is object\n */\nexport const isObject = (val: (string | number | boolean | object | null | undefined )) => Object.prototype.toString.call(val) === \"[object Object]\"\n\n/**\n * Check for valid JSON string\n */\nexport const isJson = (str: string) => {\n let t = !1\n try {\n t = JSON.parse(str)\n } catch (e) {\n return !1\n }\n return !(null === t || (!Array.isArray(t) && !isObject(t))) && t\n}\n\n/**\n * Create DOM element node\n */\nexport const createElement = (nodeName: string, attrs?: { [key: string]: string}) => {\n const dom = document.createElement(nodeName)\n if (attrs && \"object\" == typeof attrs) {\n for (const attr in attrs) {\n if (\"html\" === attr) {\n dom.innerHTML = attrs[attr]\n } else {\n dom.setAttribute(attr, attrs[attr])\n }\n }\n }\n return dom\n}\n\nexport const objToText = (obj: (elementNodeType| textNodeType)) => {\n if ([\"#text\", \"#comment\"].includes(obj.nodeName)) {\n return (obj as textNodeType).data\n }\n if (obj.childNodes) {\n return obj.childNodes.map((childNode: (elementNodeType | textNodeType)) => objToText(childNode)).join(\"\")\n }\n return \"\"\n}\n\n\nexport const escapeText = function(text: string) {\n return text\n .replace(/&/g, \"&\")\n .replace(//g, \">\")\n .replace(/\"/g, \""\")\n}\n\n\nexport const visibleToColumnIndex = function(visibleIndex: number, columns: columnSettingsType[]) {\n let counter = 0\n let columnIndex = 0\n while (counter < (visibleIndex+1)) {\n const columnSettings = columns[columnIndex]\n if (!columnSettings.hidden) {\n counter += 1\n }\n columnIndex += 1\n }\n return columnIndex-1\n}\n\nexport const columnToVisibleIndex = function(columnIndex: number, columns: columnSettingsType[]) {\n let visibleIndex = columnIndex\n let counter = 0\n while (counter < columnIndex) {\n const columnSettings = columns[counter]\n if (columnSettings.hidden) {\n visibleIndex -= 1\n }\n counter++\n }\n return visibleIndex\n}\n","function e(t,n,o){var s;return\"#text\"===t.nodeName?s=o.document.createTextNode(t.data):\"#comment\"===t.nodeName?s=o.document.createComment(t.data):(n?s=o.document.createElementNS(\"http://www.w3.org/2000/svg\",t.nodeName):\"svg\"===t.nodeName.toLowerCase()?(s=o.document.createElementNS(\"http://www.w3.org/2000/svg\",\"svg\"),n=!0):s=o.document.createElement(t.nodeName),t.attributes&&Object.entries(t.attributes).forEach((function(e){var t=e[0],n=e[1];return s.setAttribute(t,n)})),t.childNodes&&t.childNodes.forEach((function(t){return s.appendChild(e(t,n,o))})),o.valueDiffing&&(t.value&&(s instanceof HTMLButtonElement||s instanceof HTMLDataElement||s instanceof HTMLInputElement||s instanceof HTMLLIElement||s instanceof HTMLMeterElement||s instanceof HTMLOptionElement||s instanceof HTMLProgressElement||s instanceof HTMLParamElement)&&(s.value=t.value),t.checked&&s instanceof HTMLInputElement&&(s.checked=t.checked),t.selected&&s instanceof HTMLOptionElement&&(s.selected=t.selected))),s}var t=function(e,t){for(t=t.slice();t.length>0;){var n=t.splice(0,1)[0];e=e.childNodes[n]}return e};function n(n,o,s){var i,a,c,l=o[s._const.action],r=o[s._const.route];[s._const.addElement,s._const.addTextElement].includes(l)||(i=t(n,r));var u={diff:o,node:i};if(s.preDiffApply(u))return!0;switch(l){case s._const.addAttribute:if(!(i&&i instanceof Element))return!1;i.setAttribute(o[s._const.name],o[s._const.value]);break;case s._const.modifyAttribute:if(!(i&&i instanceof Element))return!1;i.setAttribute(o[s._const.name],o[s._const.newValue]),i instanceof HTMLInputElement&&\"value\"===o[s._const.name]&&(i.value=o[s._const.newValue]);break;case s._const.removeAttribute:if(!(i&&i instanceof Element))return!1;i.removeAttribute(o[s._const.name]);break;case s._const.modifyTextElement:if(!(i&&i instanceof Text))return!1;s.textDiff(i,i.data,o[s._const.oldValue],o[s._const.newValue]);break;case s._const.modifyValue:if(!i||void 0===i.value)return!1;i.value=o[s._const.newValue];break;case s._const.modifyComment:if(!(i&&i instanceof Comment))return!1;s.textDiff(i,i.data,o[s._const.oldValue],o[s._const.newValue]);break;case s._const.modifyChecked:if(!i||void 0===i.checked)return!1;i.checked=o[s._const.newValue];break;case s._const.modifySelected:if(!i||void 0===i.selected)return!1;i.selected=o[s._const.newValue];break;case s._const.replaceElement:i.parentNode.replaceChild(e(o[s._const.newValue],\"svg\"===o[s._const.newValue].nodeName.toLowerCase(),s),i);break;case s._const.relocateGroup:Array.apply(void 0,new Array(o[s._const.groupLength])).map((function(){return i.removeChild(i.childNodes[o[s._const.from]])})).forEach((function(e,t){0===t&&(c=i.childNodes[o[s._const.to]]),i.insertBefore(e,c||null)}));break;case s._const.removeElement:i.parentNode.removeChild(i);break;case s._const.addElement:var d=(h=r.slice()).splice(h.length-1,1)[0];if(!((i=t(n,h))instanceof Element))return!1;i.insertBefore(e(o[s._const.element],\"http://www.w3.org/2000/svg\"===i.namespaceURI,s),i.childNodes[d]||null);break;case s._const.removeTextElement:if(!i||3!==i.nodeType)return!1;i.parentNode.removeChild(i);break;case s._const.addTextElement:var h;d=(h=r.slice()).splice(h.length-1,1)[0];if(a=s.document.createTextNode(o[s._const.value]),!(i=t(n,h)).childNodes)return!1;i.insertBefore(a,i.childNodes[d]||null);break;default:console.log(\"unknown action\")}return s.postDiffApply({diff:u.diff,node:u.node,newNode:a}),!0}function o(e,t,n){var o=e[t];e[t]=e[n],e[n]=o}function s(e,t,s){(t=t.slice()).reverse(),t.forEach((function(t){!function(e,t,s){switch(t[s._const.action]){case s._const.addAttribute:t[s._const.action]=s._const.removeAttribute,n(e,t,s);break;case s._const.modifyAttribute:o(t,s._const.oldValue,s._const.newValue),n(e,t,s);break;case s._const.removeAttribute:t[s._const.action]=s._const.addAttribute,n(e,t,s);break;case s._const.modifyTextElement:case s._const.modifyValue:case s._const.modifyComment:case s._const.modifyChecked:case s._const.modifySelected:case s._const.replaceElement:o(t,s._const.oldValue,s._const.newValue),n(e,t,s);break;case s._const.relocateGroup:o(t,s._const.from,s._const.to),n(e,t,s);break;case s._const.removeElement:t[s._const.action]=s._const.addElement,n(e,t,s);break;case s._const.addElement:t[s._const.action]=s._const.removeElement,n(e,t,s);break;case s._const.removeTextElement:t[s._const.action]=s._const.addTextElement,n(e,t,s);break;case s._const.addTextElement:t[s._const.action]=s._const.removeTextElement,n(e,t,s);break;default:console.log(\"unknown action\")}}(e,t,s)}))}var i=function(e){var t=[];return t.push(e.nodeName),\"#text\"!==e.nodeName&&\"#comment\"!==e.nodeName&&e.attributes&&(e.attributes.class&&t.push(\"\".concat(e.nodeName,\".\").concat(e.attributes.class.replace(/ /g,\".\"))),e.attributes.id&&t.push(\"\".concat(e.nodeName,\"#\").concat(e.attributes.id))),t},a=function(e){var t={},n={};return e.forEach((function(e){i(e).forEach((function(e){var o=e in t;o||e in n?o&&(delete t[e],n[e]=!0):t[e]=!0}))})),t},c=function(e,t){var n=a(e),o=a(t),s={};return Object.keys(n).forEach((function(e){o[e]&&(s[e]=!0)})),s},l=function(e){return delete e.outerDone,delete e.innerDone,delete e.valueDone,!e.childNodes||e.childNodes.every(l)},r=function(e){if(Object.prototype.hasOwnProperty.call(e,\"data\"))return{nodeName:\"#text\"===e.nodeName?\"#text\":\"#comment\",data:e.data};var t={nodeName:e.nodeName};return Object.prototype.hasOwnProperty.call(e,\"attributes\")&&(t.attributes=e.attributes),Object.prototype.hasOwnProperty.call(e,\"checked\")&&(t.checked=e.checked),Object.prototype.hasOwnProperty.call(e,\"value\")&&(t.value=e.value),Object.prototype.hasOwnProperty.call(e,\"selected\")&&(t.selected=e.selected),Object.prototype.hasOwnProperty.call(e,\"childNodes\")&&(t.childNodes=e.childNodes.map((function(e){return r(e)}))),t},u=function(e,t){if(![\"nodeName\",\"value\",\"checked\",\"selected\",\"data\"].every((function(n){return e[n]===t[n]})))return!1;if(Object.prototype.hasOwnProperty.call(e,\"data\"))return!0;if(Boolean(e.attributes)!==Boolean(t.attributes))return!1;if(Boolean(e.childNodes)!==Boolean(t.childNodes))return!1;if(e.attributes){var n=Object.keys(e.attributes),o=Object.keys(t.attributes);if(n.length!==o.length)return!1;if(!n.every((function(n){return e.attributes[n]===t.attributes[n]})))return!1}if(e.childNodes){if(e.childNodes.length!==t.childNodes.length)return!1;if(!e.childNodes.every((function(e,n){return u(e,t.childNodes[n])})))return!1}return!0},d=function(e,t,n,o,s){if(void 0===s&&(s=!1),!e||!t)return!1;if(e.nodeName!==t.nodeName)return!1;if([\"#text\",\"#comment\"].includes(e.nodeName))return!!s||e.data===t.data;if(e.nodeName in n)return!0;if(e.attributes&&t.attributes){if(e.attributes.id){if(e.attributes.id!==t.attributes.id)return!1;if(\"\".concat(e.nodeName,\"#\").concat(e.attributes.id)in n)return!0}if(e.attributes.class&&e.attributes.class===t.attributes.class)if(\"\".concat(e.nodeName,\".\").concat(e.attributes.class.replace(/ /g,\".\"))in n)return!0}if(o)return!0;var i=e.childNodes?e.childNodes.slice().reverse():[],a=t.childNodes?t.childNodes.slice().reverse():[];if(i.length!==a.length)return!1;if(s)return i.every((function(e,t){return e.nodeName===a[t].nodeName}));var l=c(i,a);return i.every((function(e,t){return d(e,a[t],l,!0,!0)}))},h=function(e,t){return Array.apply(void 0,new Array(e)).map((function(){return t}))},f=function(e,t){for(var n=e.childNodes?e.childNodes:[],o=t.childNodes?t.childNodes:[],s=h(n.length,!1),a=h(o.length,!1),l=[],r=function(){return arguments[1]},u=!1,f=function(){var e=function(e,t,n,o){var s=0,a=[],l=e.length,r=t.length,u=Array.apply(void 0,new Array(l+1)).map((function(){return[]})),h=c(e,t),f=l===r;f&&e.some((function(e,n){var o=i(e),s=i(t[n]);return o.length!==s.length?(f=!1,!0):(o.some((function(e,t){if(e!==s[t])return f=!1,!0})),!f||void 0)}));for(var p=0;p=s&&(s=u[p+1][_+1],a=[p+1,_+1]))}return 0!==s&&{oldValue:a[0]-s,newValue:a[1]-s,length:s}}(n,o,s,a);e?(l.push(e),Array.apply(void 0,new Array(e.length)).map(r).forEach((function(t){return function(e,t,n,o){e[n.oldValue+o]=!0,t[n.newValue+o]=!0}(s,a,e,t)}))):u=!0};!u;)f();return e.subsets=l,e.subsetsAge=100,l},p=function(){function e(){this.list=[]}return e.prototype.add=function(e){var t;(t=this.list).push.apply(t,e)},e.prototype.forEach=function(e){this.list.forEach((function(t){return e(t)}))},e}(),m=function(){function e(e){void 0===e&&(e={});var t=this;Object.entries(e).forEach((function(e){var n=e[0],o=e[1];return t[n]=o}))}return e.prototype.toString=function(){return JSON.stringify(this)},e.prototype.setValue=function(e,t){return this[e]=t,this},e}();function _(e,t){var n,o,s=e;for(t=t.slice();t.length>0;)o=t.splice(0,1)[0],n=s,s=s.childNodes?s.childNodes[o]:void 0;return{node:s,parentNode:n,nodeIndex:o}}function V(e,t,n){return t.forEach((function(t){!function(e,t,n){var o,s,i,a;if(![n._const.addElement,n._const.addTextElement].includes(t[n._const.action])){var c=_(e,t[n._const.route]);s=c.node,i=c.parentNode,a=c.nodeIndex}var l,r,u=[],d={diff:t,node:s};if(n.preVirtualDiffApply(d))return!0;switch(t[n._const.action]){case n._const.addAttribute:s.attributes||(s.attributes={}),s.attributes[t[n._const.name]]=t[n._const.value],\"checked\"===t[n._const.name]?s.checked=!0:\"selected\"===t[n._const.name]?s.selected=!0:\"INPUT\"===s.nodeName&&\"value\"===t[n._const.name]&&(s.value=t[n._const.value]);break;case n._const.modifyAttribute:s.attributes[t[n._const.name]]=t[n._const.newValue];break;case n._const.removeAttribute:delete s.attributes[t[n._const.name]],0===Object.keys(s.attributes).length&&delete s.attributes,\"checked\"===t[n._const.name]?s.checked=!1:\"selected\"===t[n._const.name]?delete s.selected:\"INPUT\"===s.nodeName&&\"value\"===t[n._const.name]&&delete s.value;break;case n._const.modifyTextElement:s.data=t[n._const.newValue];break;case n._const.modifyValue:s.value=t[n._const.newValue];break;case n._const.modifyComment:s.data=t[n._const.newValue];break;case n._const.modifyChecked:s.checked=t[n._const.newValue];break;case n._const.modifySelected:s.selected=t[n._const.newValue];break;case n._const.replaceElement:l=t[n._const.newValue],i.childNodes[a]=l;break;case n._const.relocateGroup:s.childNodes.splice(t[n._const.from],t[n._const.groupLength]).reverse().forEach((function(e){return s.childNodes.splice(t[n._const.to],0,e)})),s.subsets&&s.subsets.forEach((function(e){if(t[n._const.from]t[n._const.from])e.oldValue-=t[n._const.groupLength],(o=e.oldValue+e.length-t[n._const.to])>0&&(u.push({oldValue:t[n._const.to]+t[n._const.groupLength],newValue:e.newValue+e.length-o,length:o}),e.length-=o);else if(t[n._const.from]>t[n._const.to]&&e.oldValue>t[n._const.to]&&e.oldValue0&&(u.push({oldValue:t[n._const.to]+t[n._const.groupLength],newValue:e.newValue+e.length-o,length:o}),e.length-=o)}else e.oldValue===t[n._const.from]&&(e.oldValue=t[n._const.to])}));break;case n._const.removeElement:i.childNodes.splice(a,1),i.subsets&&i.subsets.forEach((function(e){e.oldValue>a?e.oldValue-=1:e.oldValue===a?e.delete=!0:e.oldValuea&&(e.oldValue+e.length-1===a?e.length--:(u.push({newValue:e.newValue+a-e.oldValue,oldValue:a,length:e.length-a+e.oldValue-1}),e.length=a-e.oldValue))})),s=i;break;case n._const.addElement:var h=(r=t[n._const.route].slice()).splice(r.length-1,1)[0];s=null===(o=_(e,r))||void 0===o?void 0:o.node,l=t[n._const.element],s.childNodes||(s.childNodes=[]),h>=s.childNodes.length?s.childNodes.push(l):s.childNodes.splice(h,0,l),s.subsets&&s.subsets.forEach((function(e){if(e.oldValue>=h)e.oldValue+=1;else if(e.oldValueh){var t=e.oldValue+e.length-h;u.push({newValue:e.newValue+e.length-t,oldValue:h+1,length:t}),e.length-=t}}));break;case n._const.removeTextElement:i.childNodes.splice(a,1),\"TEXTAREA\"===i.nodeName&&delete i.value,i.subsets&&i.subsets.forEach((function(e){e.oldValue>a?e.oldValue-=1:e.oldValue===a?e.delete=!0:e.oldValuea&&(e.oldValue+e.length-1===a?e.length--:(u.push({newValue:e.newValue+a-e.oldValue,oldValue:a,length:e.length-a+e.oldValue-1}),e.length=a-e.oldValue))})),s=i;break;case n._const.addTextElement:var f=(r=t[n._const.route].slice()).splice(r.length-1,1)[0];(l={}).nodeName=\"#text\",l.data=t[n._const.value],(s=_(e,r).node).childNodes||(s.childNodes=[]),f>=s.childNodes.length?s.childNodes.push(l):s.childNodes.splice(f,0,l),\"TEXTAREA\"===s.nodeName&&(s.value=t[n._const.newValue]),s.subsets&&s.subsets.forEach((function(e){if(e.oldValue>=f&&(e.oldValue+=1),e.oldValuef){var t=e.oldValue+e.length-f;u.push({newValue:e.newValue+e.length-t,oldValue:f+1,length:t}),e.length-=t}}));break;default:console.log(\"unknown action\")}s.subsets&&(s.subsets=s.subsets.filter((function(e){return!e.delete&&e.oldValue!==e.newValue})),u.length&&(s.subsets=s.subsets.concat(u))),n.postVirtualDiffApply({node:d.node,diff:d.diff,newNode:l})}(e,t,n)})),!0}function g(e,t){void 0===t&&(t={});var n={nodeName:e.nodeName};if(e instanceof Text||e instanceof Comment)n.data=e.data;else{if(e.attributes&&e.attributes.length>0)n.attributes={},Array.prototype.slice.call(e.attributes).forEach((function(e){return n.attributes[e.name]=e.value}));if(e instanceof HTMLTextAreaElement)n.value=e.value;else if(e.childNodes&&e.childNodes.length>0){n.childNodes=[],Array.prototype.slice.call(e.childNodes).forEach((function(e){return n.childNodes.push(g(e,t))}))}t.valueDiffing&&(e instanceof HTMLInputElement&&[\"radio\",\"checkbox\"].includes(e.type.toLowerCase())&&void 0!==e.checked?n.checked=e.checked:(e instanceof HTMLButtonElement||e instanceof HTMLDataElement||e instanceof HTMLInputElement||e instanceof HTMLLIElement||e instanceof HTMLMeterElement||e instanceof HTMLOptionElement||e instanceof HTMLProgressElement||e instanceof HTMLParamElement)&&(n.value=e.value),e instanceof HTMLOptionElement&&(n.selected=e.selected))}return n}var v=/<\\s*\\/*[a-zA-Z:_][a-zA-Z0-9:_\\-.]*\\s*(?:\"[^\"]*\"['\"]*|'[^']*'['\"]*|[^'\"/>])*\\/*\\s*>|/g,N=Object.create?Object.create(null):{},b=/\\s([^'\"/\\s><]+?)[\\s/>]|([^\\s=]+)=\\s?(\".*?\"|'.*?')/g;function y(e){return e.replace(/</g,\"<\").replace(/>/g,\">\").replace(/&/g,\"&\")}var w={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,menuItem:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},E=function(e){var t={nodeName:\"\",attributes:{}},n=!1,o=e.match(/<\\/?([^\\s]+?)[/\\s>]/);if(o&&(t.nodeName=o[1].toUpperCase(),(w[o[1]]||\"/\"===e.charAt(e.length-2))&&(n=!0),t.nodeName.startsWith(\"!--\"))){var s=e.indexOf(\"--\\x3e\");return{type:\"comment\",node:{nodeName:\"#comment\",data:-1!==s?e.slice(4,s):\"\"},voidElement:n}}for(var i=new RegExp(b),a=null,c=!1;!c;)if(null===(a=i.exec(e)))c=!0;else if(a[0].trim())if(a[1]){var l=a[1].trim(),r=[l,\"\"];l.indexOf(\"=\")>-1&&(r=l.split(\"=\")),t.attributes[r[0]]=r[1],i.lastIndex--}else a[2]&&(t.attributes[a[2]]=a[3].trim().substring(1,a[3].length-1));return{type:\"tag\",node:t,voidElement:n}},k=function(e,t){void 0===t&&(t={components:N});var n,o=[],s=-1,i=[],a=!1;if(0!==e.indexOf(\"<\")){var c=e.indexOf(\"<\");o.push({nodeName:\"#text\",data:-1===c?e:e.substring(0,c)})}return e.replace(v,(function(c,l){if(a){if(c!==\"\"))return\"\";a=!1}var r=\"/\"!==c.charAt(1),u=c.startsWith(\"\\x3c!--\"),d=l+c.length,h=e.charAt(d);if(u){var f=E(c).node;if(s<0)return o.push(f),\"\";var p=i[s];return p&&f.nodeName&&(p.node.childNodes||(p.node.childNodes=[]),p.node.childNodes.push(f)),\"\"}if(r){n=E(c),s++,\"tag\"===n.type&&t.components[n.node.nodeName]&&(n.type=\"component\",a=!0),n.voidElement||a||!h||\"<\"===h||(n.node.childNodes||(n.node.childNodes=[]),n.node.childNodes.push({nodeName:\"#text\",data:y(e.slice(d,e.indexOf(\"<\",d)))})),0===s&&n.node.nodeName&&o.push(n.node);var m=i[s-1];m&&n.node.nodeName&&(m.node.childNodes||(m.node.childNodes=[]),m.node.childNodes.push(n.node)),i[s]=n}if((!r||n.voidElement)&&(s>-1&&(n.voidElement||n.node.nodeName===c.slice(2,-1).toUpperCase())&&--s>-1&&(n=i[s]),!a&&\"<\"!==h&&h)){var _=-1===s?o:i[s].node.childNodes||[],V=e.indexOf(\"<\",d),g=y(e.slice(d,-1===V?void 0:V));_.push({nodeName:\"#text\",data:g})}return\"\"})),o[0]},x=function(){function e(e,t,n){this.options=n,this.t1=\"undefined\"!=typeof Element&&e instanceof Element?g(e,this.options):\"string\"==typeof e?k(e,this.options):JSON.parse(JSON.stringify(e)),this.t2=\"undefined\"!=typeof Element&&t instanceof Element?g(t,this.options):\"string\"==typeof t?k(t,this.options):JSON.parse(JSON.stringify(t)),this.diffcount=0,this.foundAll=!1,this.debug&&(this.t1Orig=\"undefined\"!=typeof Element&&e instanceof Element?g(e,this.options):\"string\"==typeof e?k(e,this.options):JSON.parse(JSON.stringify(e)),this.t2Orig=\"undefined\"!=typeof Element&&t instanceof Element?g(t,this.options):\"string\"==typeof t?k(t,this.options):JSON.parse(JSON.stringify(t))),this.tracker=new p}return e.prototype.init=function(){return this.findDiffs(this.t1,this.t2)},e.prototype.findDiffs=function(e,t){var n;do{if(this.options.debug&&(this.diffcount+=1,this.diffcount>this.options.diffcap))throw new Error(\"surpassed diffcap:\".concat(JSON.stringify(this.t1Orig),\" -> \").concat(JSON.stringify(this.t2Orig)));0===(n=this.findNextDiff(e,t,[])).length&&(u(e,t)||(this.foundAll?console.error(\"Could not find remaining diffs!\"):(this.foundAll=!0,l(e),n=this.findNextDiff(e,t,[])))),n.length>0&&(this.foundAll=!1,this.tracker.add(n),V(e,n,this.options))}while(n.length>0);return this.tracker.list},e.prototype.findNextDiff=function(e,t,n){var o,s;if(this.options.maxDepth&&n.length>this.options.maxDepth)return[];if(!e.outerDone){if(o=this.findOuterDiff(e,t,n),this.options.filterOuterDiff&&(s=this.options.filterOuterDiff(e,t,o))&&(o=s),o.length>0)return e.outerDone=!0,o;e.outerDone=!0}if(Object.prototype.hasOwnProperty.call(e,\"data\"))return[];if(!e.innerDone){if((o=this.findInnerDiff(e,t,n)).length>0)return o;e.innerDone=!0}if(this.options.valueDiffing&&!e.valueDone){if((o=this.findValueDiff(e,t,n)).length>0)return e.valueDone=!0,o;e.valueDone=!0}return[]},e.prototype.findOuterDiff=function(e,t,n){var o,s,i,a,c,l,u=[];if(e.nodeName!==t.nodeName){if(!n.length)throw new Error(\"Top level nodes have to be of the same kind.\");return[(new m).setValue(this.options._const.action,this.options._const.replaceElement).setValue(this.options._const.oldValue,r(e)).setValue(this.options._const.newValue,r(t)).setValue(this.options._const.route,n)]}if(n.length&&this.options.diffcap0&&(c=this.attemptGroupRelocation(e,t,h,n,d)).length>0)return c}for(var p=0;ps.length)\"#text\"===_.nodeName?c.push((new m).setValue(this.options._const.action,this.options._const.removeTextElement).setValue(this.options._const.route,n.concat(l)).setValue(this.options._const.value,_.data)):c.push((new m).setValue(this.options._const.action,this.options._const.removeElement).setValue(this.options._const.element,r(_)).setValue(this.options._const.route,n.concat(l))),o.splice(p,1),p-=1,l-=1,a-=1;else if(o.lengthf+1&&\"#text\"===e.childNodes[f+1].nodeName;)if(f+=1,t.childNodes[N].data===e.childNodes[f].data){u=!0;break}if(!u)return v.push((new m).setValue(this.options._const.action,this.options._const.modifyTextElement).setValue(this.options._const.route,o.concat(N)).setValue(this.options._const.oldValue,l.data).setValue(this.options._const.newValue,t.childNodes[N].data)),v}}else v.push((new m).setValue(this.options._const.action,this.options._const.removeTextElement).setValue(this.options._const.route,o.concat(N)).setValue(this.options._const.value,l.data)),_.splice(N,1),g=Math.min(_.length,V.length),N-=1;else v.push((new m).setValue(this.options._const.action,this.options._const.removeElement).setValue(this.options._const.route,o.concat(N)).setValue(this.options._const.element,r(l))),_.splice(N,1),g=Math.min(_.length,V.length),N-=1;else if(!0===V[N])\"#text\"===(l=t.childNodes[N]).nodeName?(v.push((new m).setValue(this.options._const.action,this.options._const.addTextElement).setValue(this.options._const.route,o.concat(N)).setValue(this.options._const.value,l.data)),_.splice(N,0,!0),g=Math.min(_.length,V.length),b-=1):(v.push((new m).setValue(this.options._const.action,this.options._const.addElement).setValue(this.options._const.route,o.concat(N)).setValue(this.options._const.element,r(l))),_.splice(N,0,!0),g=Math.min(_.length,V.length),b-=1);else if(_[N]!==V[N]){if(v.length>0)return v;if(c=n[_[N]],(a=Math.min(c.newValue,e.childNodes.length-c.length))!==c.oldValue){i=!1;for(var y=0;y entering \".concat(e),t)},e.prototype.fout=function(e,t){this.log(\"│<──┘ generated return value\",t),this.padding=this.padding.substring(0,this.padding.length-this.pad.length)},e.prototype.format=function(e,t){return\"\".concat(function(e){for(var t=\"\".concat(e);t.length<4;)t=\"0\".concat(e);return t}(t),\"> \").concat(this.padding).concat(e)},e.prototype.log=function(){for(var e=arguments,t=[],n=0;n\":e instanceof Array?\"[\".concat(e.map(o).join(\",\"),\"]\"):e.toString()||e.valueOf()||\"\":\"\"},s=t.map(o).join(\", \");this.messages.push(this.format(s,this.tick++))},e.prototype.toString=function(){for(var e=\"└───\";e.length<=this.padding.length+this.pad.length;)e+=\"× \";var t=this.padding;return this.padding=\"\",e=this.format(e,this.tick),this.padding=t,\"\".concat(this.messages.join(\"\\n\"),\"\\n\").concat(e)},e}();export{T as DiffDOM,A as TraceLogger,g as nodeToObj,k as stringToObj};\n//# sourceMappingURL=module.js.map\n","import {stringToObj} from \"diff-dom\"\n\nimport {cellType, columnsStateType, columnSettingsType, DataTableOptions, headerCellType, elementNodeType, textNodeType, renderOptions} from \"./types\"\n\n\nexport const headingsToVirtualHeaderRowDOM = (\n headings,\n columnSettings,\n columnsState: columnsStateType,\n {\n classes,\n format,\n hiddenHeader,\n sortable,\n scrollY,\n type\n }: DataTableOptions,\n {\n noColumnWidths,\n unhideHeader\n }: renderOptions\n) => ({\n nodeName: \"TR\",\n\n childNodes: headings.map(\n (heading: headerCellType, index: number) : elementNodeType | void => {\n const column = columnSettings[index] || ({\n type,\n format,\n sortable: true,\n searchable: true\n } as columnSettingsType)\n if (column.hidden) {\n return\n }\n const attributes : { [key: string]: string} = {}\n if (column.sortable && sortable && (!scrollY.length || unhideHeader)) {\n if (column.filter) {\n attributes[\"data-filterable\"] = \"true\"\n } else {\n attributes[\"data-sortable\"] = \"true\"\n }\n }\n if (column.headerClass) {\n attributes.class = column.headerClass\n }\n if (columnsState.sort && columnsState.sort.column === index) {\n const directionClass = columnsState.sort.dir === \"asc\" ? classes.ascending : classes.descending\n attributes.class = attributes.class ? `${attributes.class} ${directionClass}` : directionClass\n attributes[\"aria-sort\"] = columnsState.sort.dir === \"asc\" ? \"ascending\" : \"descending\"\n } else if (columnsState.filters[index]) {\n attributes.class = attributes.class ? `${attributes.class} ${classes.filterActive}` : classes.filterActive\n }\n let style = \"\"\n if (columnsState.widths[index] && !noColumnWidths) {\n style += `width: ${columnsState.widths[index]}%;`\n }\n if (scrollY.length && !unhideHeader) {\n style += \"padding-bottom: 0;padding-top: 0;border: 0;\"\n }\n\n if (style.length) {\n attributes.style = style\n }\n\n const headerNodes : elementNodeType[] = heading.type === \"html\" ?\n heading.data as elementNodeType[] :\n [\n {\n nodeName: \"#text\",\n data: heading.text ?? String(heading.data)\n }\n ] as textNodeType[]\n return {\n nodeName: \"TH\",\n attributes,\n childNodes:\n ((hiddenHeader || scrollY.length) && !unhideHeader) ?\n [\n {nodeName: \"#text\",\n data: \"\"}\n ] :\n !column.sortable || !sortable ?\n headerNodes :\n [\n {\n nodeName: \"BUTTON\",\n attributes: {\n class: column.filter ? classes.filter : classes.sorter\n },\n childNodes: headerNodes\n }\n ]\n }\n }\n ).filter((column: (elementNodeType | void)) => column)\n})\n\nexport const dataToVirtualDOM = (tableAttributes: { [key: string]: string}, headings: headerCellType[], rows: {row: cellType[], index: number}[], columnSettings: columnSettingsType[], columnsState: columnsStateType, rowCursor: (number | false), {\n classes,\n hiddenHeader,\n header,\n footer,\n format,\n sortable,\n scrollY,\n type,\n rowRender,\n tabIndex\n}: DataTableOptions, {\n noColumnWidths,\n unhideHeader,\n renderHeader\n}: renderOptions) => {\n const table: elementNodeType = {\n nodeName: \"TABLE\",\n attributes: {...tableAttributes},\n childNodes: [\n {\n nodeName: \"TBODY\",\n childNodes: rows.map(\n ({\n row,\n index\n }: {row: cellType[], index: number}) => {\n const tr: elementNodeType = {\n nodeName: \"TR\",\n attributes: {\n \"data-index\": String(index)\n },\n childNodes: row.map(\n (cell: cellType, cIndex: number) => {\n const column = columnSettings[cIndex] || ({\n type,\n format,\n sortable: true,\n searchable: true\n } as columnSettingsType)\n if (column.hidden) {\n return\n }\n const td : elementNodeType = column.type === \"html\" ?\n {\n nodeName: \"TD\",\n childNodes: cell.data\n } as elementNodeType:\n {\n nodeName: \"TD\",\n childNodes: [\n {\n nodeName: \"#text\",\n data: cell.text ?? String(cell.data)\n }\n ]\n } as elementNodeType\n if (!header && !footer && columnsState.widths[cIndex] && !noColumnWidths) {\n td.attributes = {\n style: `width: ${columnsState.widths[cIndex]}%;`\n }\n }\n if (column.cellClass) {\n if (!td.attributes) {\n td.attributes = {}\n }\n td.attributes.class = column.cellClass\n }\n if (column.render) {\n const renderedCell : (string | elementNodeType | void) = column.render(cell.data, td, index, cIndex)\n if (renderedCell) {\n if (typeof renderedCell === \"string\") {\n // Convenience method to make it work similarly to what it did up to version 5.\n const node = stringToObj(`${renderedCell}`)\n\n if (node.childNodes.length !== 1 || ![\"#text\", \"#comment\"].includes(node.childNodes[0].nodeName)) {\n td.childNodes = node.childNodes\n } else {\n (td.childNodes[0] as textNodeType).data = renderedCell\n }\n\n } else {\n return renderedCell\n }\n }\n\n }\n return td\n }\n ).filter((column: (elementNodeType | void)) => column)\n }\n if (index===rowCursor) {\n tr.attributes.class = classes.cursor\n }\n if (rowRender) {\n const renderedRow : (elementNodeType | void) = rowRender(row, tr, index)\n if (renderedRow) {\n if (typeof renderedRow === \"string\") {\n // Convenience method to make it work similarly to what it did up to version 5.\n const node = stringToObj(`${renderedRow}`)\n if (node.childNodes && (node.childNodes.length !== 1 || ![\"#text\", \"#comment\"].includes(node.childNodes[0].nodeName))) {\n tr.childNodes = node.childNodes\n } else {\n (tr.childNodes[0] as textNodeType).data = renderedRow\n }\n\n } else {\n return renderedRow\n }\n }\n }\n return tr\n }\n )\n } as elementNodeType\n ]\n }\n\n table.attributes.class = table.attributes.class ? `${table.attributes.class} ${classes.table}` : classes.table\n\n if (header || footer || renderHeader) {\n const headerRow: elementNodeType = headingsToVirtualHeaderRowDOM(headings, columnSettings, columnsState, {classes,\n hiddenHeader,\n sortable,\n scrollY}, {noColumnWidths,\n unhideHeader})\n\n if (header || renderHeader) {\n const thead: elementNodeType = {\n nodeName: \"THEAD\",\n childNodes: [headerRow]\n }\n if ((scrollY.length || hiddenHeader) && !unhideHeader) {\n thead.attributes = {style: \"height: 0px;\"}\n }\n table.childNodes.unshift(thead)\n }\n if (footer) {\n const footerRow = header ? structuredClone(headerRow) : headerRow\n const tfoot: elementNodeType = {\n nodeName: \"TFOOT\",\n childNodes: [footerRow]\n }\n if ((scrollY.length || hiddenHeader) && !unhideHeader) {\n tfoot.attributes = {style: \"height: 0px;\"}\n }\n table.childNodes.push(tfoot)\n }\n\n }\n\n if (tabIndex !== false) {\n table.attributes.tabindex = String(tabIndex)\n }\n\n return table\n}\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",f=\"month\",h=\"quarter\",c=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},w=function(t,e){if(p(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},O=v;O.l=S,O.i=p,O.w=function(t,e){return w(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=S(t.locale,null,!0),this.parse(t)}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(O.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return O},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=w(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return w(t)68?1900:2e3)};var a=function(e){return function(t){this[e]=+t}},f=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if(\"Z\"===e)return 0;var t=e.match(/([+-]|\\d\\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:\"+\"===t[0]?-n:n}(e)}],h=function(e){var t=o[e];return t&&(t.indexOf?t:t.s.concat(t.f))},u=function(e,t){var n,r=o.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?\"pm\":\"PM\");return n},d={A:[i,function(e){this.afternoon=u(e,!1)}],a:[i,function(e){this.afternoon=u(e,!0)}],S:[/\\d/,function(e){this.milliseconds=100*+e}],SS:[n,function(e){this.milliseconds=10*+e}],SSS:[/\\d{3}/,function(e){this.milliseconds=+e}],s:[r,a(\"seconds\")],ss:[r,a(\"seconds\")],m:[r,a(\"minutes\")],mm:[r,a(\"minutes\")],H:[r,a(\"hours\")],h:[r,a(\"hours\")],HH:[r,a(\"hours\")],hh:[r,a(\"hours\")],D:[r,a(\"day\")],DD:[n,a(\"day\")],Do:[i,function(e){var t=o.ordinal,n=e.match(/\\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\\[|\\]/g,\"\")===e&&(this.day=r)}],M:[r,a(\"month\")],MM:[n,a(\"month\")],MMM:[i,function(e){var t=h(\"months\"),n=(h(\"monthsShort\")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[i,function(e){var t=h(\"months\").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\\d+/,a(\"year\")],YY:[n,function(e){this.year=s(e)}],YYYY:[/\\d{4}/,a(\"year\")],Z:f,ZZ:f};function c(n){var r,i;r=n,i=o&&o.formats;for(var s=(n=r.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),a=s.length,f=0;f-1)return new Date((\"X\"===t?1e3:1)*e);var r=c(t)(e),i=r.year,o=r.month,s=r.day,a=r.hours,f=r.minutes,h=r.seconds,u=r.milliseconds,d=r.zone,l=new Date,m=s||(i||o?1:l.getDate()),M=i||l.getFullYear(),Y=0;i&&!o||(Y=o>0?o-1:l.getMonth());var p=a||0,v=f||0,D=h||0,g=u||0;return d?new Date(Date.UTC(M,Y,m,p,v,D,g+60*d.offset*1e3)):n?new Date(Date.UTC(M,Y,m,p,v,D,g)):new Date(M,Y,m,p,v,D,g)}catch(e){return new Date(\"\")}}(t,a,r),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(a)&&(this.$d=new Date(\"\")),o={}}else if(a instanceof Array)for(var l=a.length,m=1;m<=l;m+=1){s[1]=a[m-1];var M=n.apply(this,s);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===l&&(this.$d=new Date(\"\"))}else i.call(this,e)}}}));","import dayjs from \"dayjs\"\nimport customParseFormat from \"dayjs/plugin/customParseFormat\"\n\ndayjs.extend(customParseFormat)\n\n/**\n * Use dayjs to parse cell contents for sorting\n */\nexport const parseDate = (content: string, format: string) => {\n let date: number | string\n\n // Converting to YYYYMMDD ensures we can accurately sort the column numerically\n\n if (format) {\n switch (format) {\n case \"ISO_8601\":\n // ISO8601 is already lexiographically sorted, so we can just sort it as a string.\n date = content\n break\n case \"RFC_2822\":\n date = dayjs(content.slice(5), \"DD MMM YYYY HH:mm:ss ZZ\").unix()\n break\n case \"MYSQL\":\n date = dayjs(content, \"YYYY-MM-DD hh:mm:ss\").unix()\n break\n case \"UNIX\":\n date = dayjs(content).unix()\n break\n // User defined format using the data-format attribute or columns[n].format option\n default:\n date = dayjs(content, format, true).valueOf()\n break\n }\n }\n return date\n}\n","import {stringToObj, nodeToObj} from \"diff-dom\"\nimport {parseDate} from \"./date\"\nimport {objToText} from \"./helpers\"\nimport {cellType, DataOption, headerCellType, inputCellType, inputHeaderCellType, nodeType, columnSettingsType} from \"./types\"\n\nexport const readDataCell = (cell: inputCellType, columnSettings : columnSettingsType) : cellType => {\n if (cell?.constructor === Object && Object.prototype.hasOwnProperty.call(cell, \"data\") && !Object.keys(cell).find(key => !([\"text\", \"order\", \"data\"].includes(key)))) {\n return (cell as cellType)\n }\n const cellData : cellType = {\n data: cell\n }\n switch (columnSettings.type) {\n case \"string\":\n if (!(typeof cell === \"string\")) {\n cellData.text = String(cellData.data)\n cellData.order = cellData.text\n }\n break\n case \"date\":\n if (columnSettings.format) {\n cellData.order = parseDate(String(cellData.data), columnSettings.format)\n }\n break\n case \"number\":\n cellData.text = String(cellData.data as number)\n cellData.data = parseInt(cellData.data as string, 10)\n break\n case \"html\": {\n const node = Array.isArray(cellData.data) ?\n {nodeName: \"TD\",\n childNodes: (cellData.data as nodeType[])} : // If it is an array, we assume it is an array of nodeType\n stringToObj(`${String(cellData.data)}`)\n cellData.data = node.childNodes || []\n const text = objToText(node)\n cellData.text = text\n cellData.order = text\n break\n }\n case \"boolean\":\n if (typeof cellData.data === \"string\") {\n cellData.data = cellData.data.toLowerCase().trim()\n }\n cellData.data = ![\"false\", false, null, undefined, 0].includes(cellData.data as (string | number | boolean | null | undefined))\n cellData.order = cellData.data ? 1 : 0\n cellData.text = String(cellData.data)\n break\n case \"other\":\n cellData.text = \"\"\n cellData.order = 0\n break\n default:\n cellData.text = JSON.stringify(cellData.data)\n break\n }\n\n return cellData\n}\n\nconst readDOMDataCell = (cell: HTMLElement, columnSettings : columnSettingsType) : cellType => {\n let cellData : cellType\n switch (columnSettings.type) {\n case \"string\":\n cellData = {\n data: cell.innerText\n }\n break\n case \"date\": {\n const data = cell.innerText\n cellData = {\n data,\n order: parseDate(data, columnSettings.format)\n }\n break\n }\n case \"number\":\n cellData = {\n data: parseInt(cell.innerText, 10),\n text: cell.innerText\n }\n break\n case \"boolean\": {\n const data = ![\"false\", \"0\", \"null\", \"undefined\"].includes(cell.innerText.toLowerCase().trim())\n cellData = {\n data,\n order: data ? 1 : 0,\n text: data ? \"1\" : \"0\"\n }\n break\n }\n default: { // \"html\", \"other\"\n const node = nodeToObj(cell, {valueDiffing: false})\n cellData = {\n data: node.childNodes || [],\n text: cell.innerText,\n order: cell.innerText\n }\n break\n }\n }\n\n return cellData\n}\n\n\nexport const readHeaderCell = (cell: inputHeaderCellType) : headerCellType => {\n if (\n cell instanceof Object &&\n cell.constructor === Object &&\n cell.hasOwnProperty(\"data\") &&\n (typeof cell.text === \"string\" || typeof cell.data === \"string\")\n ) {\n return cell\n }\n const cellData : headerCellType = {\n data: cell\n }\n if (typeof cell === \"string\") {\n if (cell.length) {\n const node = stringToObj(`${cell}`)\n if (node.childNodes && (node.childNodes.length !== 1 || node.childNodes[0].nodeName !== \"#text\")) {\n cellData.data = node.childNodes\n cellData.type = \"html\"\n const text = objToText(node)\n cellData.text = text\n }\n }\n\n } else if ([null, undefined].includes(cell)) {\n cellData.text = \"\"\n } else {\n cellData.text = JSON.stringify(cell)\n }\n return cellData\n}\n\nexport const readDOMHeaderCell = (cell: HTMLElement) : headerCellType => {\n const node = nodeToObj(cell, {valueDiffing: false})\n let cellData\n if (node.childNodes && (node.childNodes.length !== 1 || node.childNodes[0].nodeName !== \"#text\")) {\n cellData = {\n data: node.childNodes,\n type: \"html\",\n text: objToText(node)\n }\n } else {\n cellData = {\n data: cell.innerText,\n type: \"string\"\n }\n }\n return cellData\n\n}\n\nexport const readTableData = (dataOption: DataOption, dom: (HTMLTableElement | undefined)=undefined, columnSettings, defaultType, defaultFormat) => {\n\n const data = {\n data: [],\n headings: []\n }\n if (dataOption.headings) {\n data.headings = dataOption.headings.map((heading: inputHeaderCellType) => readHeaderCell(heading))\n } else if (dom?.tHead) {\n data.headings = Array.from(dom.tHead.querySelectorAll(\"th\")).map((th, index) => {\n const heading = readDOMHeaderCell(th)\n if (!columnSettings[index]) {\n columnSettings[index] = {\n type: defaultType,\n format: defaultFormat,\n searchable: true,\n sortable: true\n }\n }\n const settings = columnSettings[index]\n if (th.dataset.sortable?.trim().toLowerCase() === \"false\" || th.dataset.sort?.trim().toLowerCase() === \"false\") {\n settings.sortable = false\n }\n if (th.dataset.searchable?.trim().toLowerCase() === \"false\") {\n settings.searchable = false\n }\n if (th.dataset.hidden?.trim().toLowerCase() === \"true\" || th.getAttribute(\"hidden\")?.trim().toLowerCase() === \"true\") {\n settings.hidden = true\n }\n if ([\"number\", \"string\", \"html\", \"date\", \"boolean\", \"other\"].includes(th.dataset.type)) {\n settings.type = th.dataset.type\n if (settings.type === \"date\" && th.dataset.format) {\n settings.format = th.dataset.format\n }\n }\n return heading\n })\n } else if (dataOption.data?.length) {\n data.headings = dataOption.data[0].map((_cell: inputCellType) => readHeaderCell(\"\"))\n } else if (dom?.tBodies.length) {\n data.headings = Array.from(dom.tBodies[0].rows[0].cells).map((_cell: HTMLElement) => readHeaderCell(\"\"))\n }\n for (let i=0; i row.map((cell: inputCellType, index: number) => readDataCell(cell, columnSettings[index])))\n } else if (dom?.tBodies?.length) {\n data.data = Array.from(dom.tBodies[0].rows).map(\n row => Array.from(row.cells).map(\n (cell, index) => {\n const cellData = cell.dataset.content ?\n readDataCell(cell.dataset.content, columnSettings[index]) :\n readDOMDataCell(cell, columnSettings[index])\n if (cell.dataset.order) {\n cellData.order = isNaN(parseFloat(cell.dataset.order)) ? cell.dataset.order : parseFloat(cell.dataset.order)\n }\n return cellData\n\n }\n )\n )\n }\n\n if (data.data.length && data.data[0].length !== data.headings.length) {\n throw new Error(\n \"Data heading length mismatch.\"\n )\n }\n return data\n}\n","import {readDataCell} from \"./read_data\"\nimport {DataTable} from \"./datatable\"\nimport {cellType, inputCellType} from \"./types\"\n/**\n * Rows API\n */\nexport class Rows {\n cursor: (false | number)\n\n dt: DataTable\n\n constructor(dt: DataTable) {\n this.dt = dt\n\n this.cursor = false\n }\n\n setCursor(index: (false | number) = false) {\n if (index === this.cursor) {\n return\n }\n const oldCursor = this.cursor\n this.cursor = index\n this.dt._renderTable()\n if (index !== false && this.dt.options.scrollY) {\n const cursorDOM = this.dt.dom.querySelector(`tr.${this.dt.options.classes.cursor}`)\n if (cursorDOM) {\n cursorDOM.scrollIntoView({block: \"nearest\"})\n }\n }\n this.dt.emit(\"datatable.cursormove\", this.cursor, oldCursor)\n }\n\n /**\n * Add new row\n */\n add(data: cellType[]) {\n const row = data.map((cell: cellType, index: number) => {\n const columnSettings = this.dt.columns.settings[index]\n return readDataCell(cell, columnSettings)\n })\n this.dt.data.data.push(row)\n\n // We may have added data to an empty table\n if ( this.dt.data.data.length ) {\n this.dt.hasRows = true\n }\n this.dt.update(true)\n }\n\n /**\n * Remove row(s)\n */\n remove(select: number | number[]) {\n if (Array.isArray(select)) {\n this.dt.data.data = this.dt.data.data.filter((_row: cellType[], index: number) => !select.includes(index))\n // We may have emptied the table\n if ( !this.dt.data.data.length ) {\n this.dt.hasRows = false\n }\n this.dt.update(true)\n } else {\n return this.remove([select])\n }\n }\n\n\n /**\n * Find index of row by searching for a value in a column\n */\n findRowIndex(columnIndex: number, value: string | boolean | number) {\n // returns row index of first case-insensitive string match\n // inside the td innerText at specific column index\n return this.dt.data.data.findIndex(\n (row: cellType[]) => (row[columnIndex].text ?? String(row[columnIndex].data)).toLowerCase().includes(String(value).toLowerCase())\n )\n }\n\n /**\n * Find index, row, and column data by searching for a value in a column\n */\n findRow(columnIndex: number, value: string | boolean | number) {\n // get the row index\n const index = this.findRowIndex(columnIndex, value)\n // exit if not found\n if (index < 0) {\n return {\n index: -1,\n row: null,\n cols: []\n }\n }\n // get the row from data\n const row = this.dt.data.data[index]\n // return innerHTML of each td\n const cols = row.map((cell: cellType) => cell.data)\n // return everything\n return {\n index,\n row,\n cols\n }\n }\n\n /**\n * Update a row with new data\n */\n updateRow(select: number, data: inputCellType[]) {\n const row = data.map((cell: inputCellType, index: number) => {\n const columnSettings = this.dt.columns.settings[index]\n return readDataCell(cell, columnSettings)\n })\n this.dt.data.data.splice(select, 1, row)\n this.dt.update(true)\n }\n}\n","import {\n columnsStateType,\n filterStateType,\n columnSettingsType\n} from \"./types\"\n\nexport const readColumnSettings = (columnOptions = [], defaultType, defaultFormat) : [columnSettingsType[], columnsStateType] => {\n\n let columns: (columnSettingsType | undefined)[] = []\n let sort: (false | {column: number, dir: \"asc\" | \"desc\"}) = false\n const filters: (filterStateType | undefined )[] = []\n\n // Check for the columns option\n\n columnOptions.forEach(data => {\n\n // convert single column selection to array\n const columnSelectors = Array.isArray(data.select) ? data.select : [data.select]\n\n columnSelectors.forEach((selector: number) => {\n if (columns[selector]) {\n if (data.type) {\n columns[selector].type = data.type\n }\n } else {\n columns[selector] = {\n type: data.type || defaultType,\n sortable: true,\n searchable: true\n }\n }\n const column = columns[selector]\n\n\n if (data.render) {\n column.render = data.render\n }\n\n if (data.format) {\n column.format = data.format\n } else if (data.type === \"date\") {\n column.format = defaultFormat\n }\n\n if (data.cellClass) {\n column.cellClass = data.cellClass\n }\n\n if (data.headerClass) {\n column.headerClass = data.headerClass\n }\n\n if (data.locale) {\n column.locale = data.locale\n }\n\n if (data.sortable === false) {\n column.sortable = false\n } else {\n if (data.numeric) {\n column.numeric = data.numeric\n }\n if (data.caseFirst) {\n column.caseFirst = data.caseFirst\n }\n }\n\n if (data.searchable === false) {\n column.searchable = false\n } else {\n if (data.sensitivity) {\n column.sensitivity = data.sensitivity\n }\n }\n\n if (column.searchable || column.sortable) {\n if (typeof data.ignorePunctuation !== \"undefined\") {\n column.ignorePunctuation = data.ignorePunctuation\n }\n }\n\n if (data.hidden) {\n column.hidden = true\n }\n\n if (data.filter) {\n column.filter = data.filter\n }\n\n if (data.sortSequence) {\n column.sortSequence = data.sortSequence\n }\n\n if (data.sort) {\n if (data.filter) {\n filters[selector] = data.sort\n } else {\n // We only allow one. The last one will overwrite all other options\n sort = {column: selector,\n dir: data.sort}\n }\n }\n\n if (typeof data.searchItemSeparator !== \"undefined\") {\n column.searchItemSeparator = data.searchItemSeparator\n }\n\n })\n\n\n })\n\n columns = columns.map(column => column ?\n column :\n {type: defaultType,\n format: defaultType === \"date\" ? defaultFormat : undefined,\n sortable: true,\n searchable: true})\n\n const widths = [] // Width are determined later on by measuring on screen.\n\n return [\n columns, {filters,\n sort,\n widths}\n ]\n\n}\n","import {readDataCell, readHeaderCell} from \"./read_data\"\nimport {DataTable} from \"./datatable\"\nimport {cellType, columnsStateType, headerCellType, inputCellType, inputHeaderCellType, elementNodeType, columnSettingsType} from \"./types\"\nimport {readColumnSettings} from \"./column_settings\"\n\n\nexport class Columns {\n dt: DataTable\n\n settings: columnSettingsType[]\n\n _state: columnsStateType\n\n constructor(dt: DataTable) {\n this.dt = dt\n this.init()\n }\n\n init() {\n [this.settings, this._state] = readColumnSettings(this.dt.options.columns, this.dt.options.type, this.dt.options.format)\n }\n\n /**\n * Swap two columns\n */\n swap(columns: [number, number]) {\n if (columns.length === 2) {\n // Get the current column indexes\n const cols = this.dt.data.headings.map((_node: headerCellType, index: number) => index)\n\n const x = columns[0]\n const y = columns[1]\n const b = cols[y]\n cols[y] = cols[x]\n cols[x] = b\n\n return this.order(cols)\n }\n }\n\n /**\n * Reorder the columns\n */\n order(columns: number[]) {\n\n this.dt.data.headings = columns.map((index: number) => this.dt.data.headings[index])\n this.dt.data.data = this.dt.data.data.map(\n (row: cellType[]) => columns.map((index: number) => row[index])\n )\n this.settings = columns.map(\n (index: number) => this.settings[index]\n )\n\n // Update\n this.dt.update()\n }\n\n /**\n * Hide columns\n */\n hide(columns: number[]) {\n if (!columns.length) {\n return\n }\n columns.forEach((index: number) => {\n if (!this.settings[index]) {\n this.settings[index] = {\n type: \"string\"\n }\n }\n const column = this.settings[index]\n column.hidden = true\n })\n\n this.dt.update()\n }\n\n /**\n * Show columns\n */\n show(columns: number[]) {\n if (!columns.length) {\n return\n }\n columns.forEach((index: number) => {\n if (!this.settings[index]) {\n this.settings[index] = {\n type: \"string\",\n sortable: true\n }\n }\n const column = this.settings[index]\n delete column.hidden\n })\n\n this.dt.update()\n }\n\n /**\n * Check column(s) visibility\n */\n visible(columns: number | number[] | undefined) {\n\n if (columns === undefined) {\n columns = [...Array(this.dt.data.headings.length).keys()]\n }\n if (Array.isArray(columns)) {\n return columns.map(index => !this.settings[index]?.hidden)\n }\n return !this.settings[columns]?.hidden\n\n }\n\n /**\n * Add a new column\n */\n add(data: {data: inputCellType[], heading: inputHeaderCellType} & columnSettingsType) {\n const newColumnSelector = this.dt.data.headings.length\n this.dt.data.headings = this.dt.data.headings.concat([readHeaderCell(data.heading)])\n this.dt.data.data = this.dt.data.data.map(\n (row: cellType[], index: number) => row.concat([readDataCell(data.data[index], data)])\n )\n this.settings[newColumnSelector] = {\n type: data.type || \"string\",\n sortable: true,\n searchable: true\n }\n if (data.type || data.format || data.sortable || data.render || data.filter) {\n const column = this.settings[newColumnSelector]\n\n if (data.render) {\n column.render = data.render\n }\n\n if (data.format) {\n column.format = data.format\n }\n\n if (data.cellClass) {\n column.cellClass = data.cellClass\n }\n\n if (data.headerClass) {\n column.headerClass = data.headerClass\n }\n\n if (data.locale) {\n column.locale = data.locale\n }\n\n if (data.sortable === false) {\n column.sortable = false\n } else {\n if (data.numeric) {\n column.numeric = data.numeric\n }\n if (data.caseFirst) {\n column.caseFirst = data.caseFirst\n }\n }\n\n if (data.searchable === false) {\n column.searchable = false\n } else {\n if (data.sensitivity) {\n column.sensitivity = data.sensitivity\n }\n }\n\n if (column.searchable || column.sortable) {\n if (data.ignorePunctuation) {\n column.ignorePunctuation = data.ignorePunctuation\n }\n }\n\n if (data.hidden) {\n column.hidden = true\n }\n\n if (data.filter) {\n column.filter = data.filter\n }\n\n if (data.sortSequence) {\n column.sortSequence = data.sortSequence\n }\n }\n this.dt.update(true)\n }\n\n /**\n * Remove column(s)\n */\n remove(columns: number[]) {\n if (Array.isArray(columns)) {\n this.dt.data.headings = this.dt.data.headings.filter((_heading: headerCellType, index: number) => !columns.includes(index))\n this.dt.data.data = this.dt.data.data.map(\n (row: cellType[]) => row.filter((_cell: cellType, index: number) => !columns.includes(index))\n )\n this.dt.update(true)\n } else {\n return this.remove([columns])\n }\n }\n\n /**\n * Filter by column\n */\n filter(column: number, init = false) {\n\n if (!this.settings[column]?.filter?.length) {\n // There is no filter to apply.\n return\n }\n\n const currentFilter = this._state.filters[column]\n let newFilterState\n if (currentFilter) {\n let returnNext = false\n newFilterState = this.settings[column].filter.find((filter: (string | number | boolean | elementNodeType[] | object | ((arg: (string | number | boolean | elementNodeType[] | object)) => boolean))) => {\n if (returnNext) {\n return true\n }\n if (filter === currentFilter) {\n returnNext = true\n }\n return false\n })\n } else {\n const filter = this.settings[column].filter\n newFilterState = filter ? filter[0] : undefined\n }\n\n if (newFilterState) {\n this._state.filters[column] = newFilterState\n } else if (currentFilter) {\n this._state.filters[column] = undefined\n }\n this.dt._currentPage = 1\n this.dt.update()\n\n if (!init) {\n this.dt.emit(\"datatable.filter\", column, newFilterState)\n }\n }\n\n /**\n * Sort by column\n */\n sort(index: number, dir: (\"asc\" | \"desc\" | undefined) = undefined, init = false) {\n const column = this.settings[index]\n\n if (!init) {\n this.dt.emit(\"datatable.sorting\", index, dir)\n }\n\n if (!dir) {\n const currentDir = this._state.sort && this._state.sort.column === index ? this._state.sort?.dir : false\n const sortSequence = column?.sortSequence || [\"asc\", \"desc\"]\n if (!currentDir) {\n dir = sortSequence.length ? sortSequence[0] : \"asc\"\n } else {\n const currentDirIndex = sortSequence.indexOf(currentDir)\n if (currentDirIndex === -1) {\n dir = sortSequence[0] || \"asc\"\n } else if (currentDirIndex === sortSequence.length -1) {\n dir = sortSequence[0]\n } else {\n dir = sortSequence[currentDirIndex + 1]\n }\n }\n\n }\n\n const collator = [\"string\", \"html\"].includes(column.type) ?\n new Intl.Collator(column.locale || this.dt.options.locale, {\n usage: \"sort\",\n numeric: column.numeric || this.dt.options.numeric,\n caseFirst: column.caseFirst || this.dt.options.caseFirst,\n ignorePunctuation: column.ignorePunctuation|| this.dt.options.ignorePunctuation\n }) :\n false\n\n this.dt.data.data.sort((row1: cellType[], row2: cellType[]) => {\n let order1 = row1[index].order || row1[index].data,\n order2 = row2[index].order || row2[index].data\n if (dir === \"desc\") {\n const temp = order1\n order1 = order2\n order2 = temp\n }\n if (collator) {\n return collator.compare(String(order1), String(order2))\n }\n if (order1 < order2) {\n return -1\n } else if (order1 > order2) {\n return 1\n }\n return 0\n })\n\n this._state.sort = {column: index,\n dir}\n if (this.dt._searchQueries.length) {\n this.dt.multiSearch(this.dt._searchQueries)\n this.dt.emit(\"datatable.sort\", index, dir)\n } else if (!init) {\n this.dt._currentPage = 1\n this.dt.update()\n this.dt.emit(\"datatable.sort\", index, dir)\n }\n }\n\n /**\n * Measure the actual width of cell content by rendering the entire table with all contents.\n * Note: Destroys current DOM and therefore requires subsequent dt.update()\n */\n _measureWidths() {\n const activeHeadings = this.dt.data.headings.filter((heading: headerCellType, index: number) => !this.settings[index]?.hidden)\n if ((this.dt.options.scrollY.length || this.dt.options.fixedColumns) && activeHeadings?.length) {\n\n this._state.widths = []\n const renderOptions: {noPaging?: true, noColumnWidths?: true, unhideHeader?: true, renderHeader?: true} = {\n noPaging: true\n }\n // If we have headings we need only set the widths on them\n // otherwise we need a temp header and the widths need applying to all cells\n if (this.dt.options.header || this.dt.options.footer) {\n\n if (this.dt.options.scrollY.length) {\n renderOptions.unhideHeader = true\n }\n if (this.dt.headerDOM) {\n // Remove headerDOM for accurate measurements\n this.dt.headerDOM.parentElement.removeChild(this.dt.headerDOM)\n }\n\n // Reset widths\n renderOptions.noColumnWidths = true\n this.dt._renderTable(renderOptions)\n\n const activeDOMHeadings : HTMLTableCellElement[] = Array.from(this.dt.dom.querySelector(\"thead, tfoot\")?.firstElementChild?.querySelectorAll(\"th\") || [])\n let domCounter = 0\n const absoluteColumnWidths = this.dt.data.headings.map((_heading: headerCellType, index: number) => {\n if (this.settings[index]?.hidden) {\n return 0\n }\n const width = activeDOMHeadings[domCounter].offsetWidth\n domCounter += 1\n return width\n\n })\n const totalOffsetWidth = absoluteColumnWidths.reduce(\n (total, cellWidth) => total + cellWidth,\n 0\n )\n this._state.widths = absoluteColumnWidths.map(cellWidth => cellWidth / totalOffsetWidth * 100)\n\n } else {\n renderOptions.renderHeader = true\n this.dt._renderTable(renderOptions)\n\n const activeDOMHeadings: HTMLTableCellElement[] = Array.from(this.dt.dom.querySelector(\"thead, tfoot\")?.firstElementChild?.querySelectorAll(\"th\") || [])\n let domCounter = 0\n const absoluteColumnWidths = this.dt.data.headings.map((_heading: headerCellType, index: number) => {\n if (this.settings[index]?.hidden) {\n return 0\n }\n const width = activeDOMHeadings[domCounter].offsetWidth\n domCounter += 1\n return width\n\n })\n const totalOffsetWidth = absoluteColumnWidths.reduce(\n (total, cellWidth) => total + cellWidth,\n 0\n )\n this._state.widths = absoluteColumnWidths.map(cellWidth => cellWidth / totalOffsetWidth * 100)\n }\n // render table without options for measurements\n this.dt._renderTable()\n }\n }\n}\n","// Template for custom layouts\nexport const layoutTemplate = (options, dom) => `
\n ${\n options.paging && options.perPageSelect ?\n `
\n \n
` :\n \"\"\n}\n ${\n options.searchable ?\n `
\n \n
` :\n \"\"\n}\n
\n
\n
\n ${\n options.paging ?\n `
` :\n \"\"\n}\n \n
`\n","import {DataTableConfiguration} from \"./types\"\nimport {layoutTemplate} from \"./templates\"\n/**\n * Default configuration\n */\nexport const defaultConfig: DataTableConfiguration = {\n // for sorting\n sortable: true,\n locale: \"en\",\n numeric: true,\n caseFirst: \"false\",\n\n // for searching\n searchable: true,\n sensitivity: \"base\",\n ignorePunctuation: true,\n destroyable: true,\n searchItemSeparator: \"\", // If specified, splits the content of cells up using this separator before performing search.\n searchQuerySeparator: \" \",\n searchAnd: false,\n\n // data\n data: {},\n type: \"html\", // Default data type for columns.\n format: \"YYYY-MM-DD\",\n columns: [],\n\n // Pagination\n paging: true,\n perPage: 10,\n perPageSelect: [5, 10, 15, 20, 25],\n nextPrev: true,\n firstLast: false,\n prevText: \"‹\",\n nextText: \"›\",\n firstText: \"«\",\n lastText: \"»\",\n ellipsisText: \"…\",\n truncatePager: true,\n pagerDelta: 2,\n\n scrollY: \"\",\n\n fixedColumns: true,\n fixedHeight: false,\n\n footer: false,\n header: true,\n hiddenHeader: false,\n\n rowNavigation: false,\n tabIndex: false,\n\n // for overriding rendering\n pagerRender: false,\n rowRender: false,\n tableRender: false,\n diffDomOptions: {\n valueDiffing: false\n },\n\n // Customise the display text\n labels: {\n placeholder: \"Search...\", // The search input placeholder\n searchTitle: \"Search within table\", // The search input title\n perPage: \"entries per page\", // per-page dropdown label\n pageTitle: \"Page {page}\", // page label used in Aria-label\n noRows: \"No entries found\", // Message shown when there are no records to show\n noResults: \"No results match your search query\", // Message shown when there are no search results\n info: \"Showing {start} to {end} of {rows} entries\" //\n },\n\n // Customise the layout\n template: layoutTemplate,\n\n // Customize the class names used by datatable for different parts\n classes: { // Note: use single class names\n active: \"datatable-active\",\n ascending: \"datatable-ascending\",\n bottom: \"datatable-bottom\",\n container: \"datatable-container\",\n cursor: \"datatable-cursor\",\n descending: \"datatable-descending\",\n disabled: \"datatable-disabled\",\n dropdown: \"datatable-dropdown\",\n ellipsis: \"datatable-ellipsis\",\n filter: \"datatable-filter\",\n filterActive: \"datatable-filter-active\",\n empty: \"datatable-empty\",\n headercontainer: \"datatable-headercontainer\",\n hidden: \"datatable-hidden\",\n info: \"datatable-info\",\n input: \"datatable-input\",\n loading: \"datatable-loading\",\n pagination: \"datatable-pagination\",\n paginationList: \"datatable-pagination-list\",\n paginationListItem: \"datatable-pagination-list-item\",\n paginationListItemLink: \"datatable-pagination-list-item-link\",\n search: \"datatable-search\",\n selector: \"datatable-selector\",\n sorter: \"datatable-sorter\",\n table: \"datatable-table\",\n top: \"datatable-top\",\n wrapper: \"datatable-wrapper\"\n }\n}\n","import {DataTableConfiguration, elementNodeType} from \"./types\"\n\n/**\n * Pager truncation algorithm\n */\nconst truncate = (paginationListItems: elementNodeType[], currentPage: number, pagesLength: number, options: DataTableConfiguration) : elementNodeType[] => {\n const pagerDelta = options.pagerDelta\n const classes = options.classes\n const ellipsisText = options.ellipsisText\n\n const doublePagerDelta = 2 * pagerDelta\n let previousPage = currentPage - pagerDelta\n let nextPage = currentPage + pagerDelta\n\n if (currentPage < 4 - pagerDelta + doublePagerDelta) {\n nextPage = 3 + doublePagerDelta\n } else if (currentPage > pagesLength - (3 - pagerDelta + doublePagerDelta)) {\n previousPage = pagesLength - (2 + doublePagerDelta)\n }\n const paginationListItemsToModify: elementNodeType[] = []\n for (let k = 1; k <= pagesLength; k++) {\n if (1 == k || k == pagesLength || (k >= previousPage && k <= nextPage)) {\n const li = paginationListItems[k - 1]\n paginationListItemsToModify.push(li)\n }\n }\n let previousLi: elementNodeType\n const modifiedLis: elementNodeType[] = []\n paginationListItemsToModify.forEach(li => {\n const pageNumber = parseInt((li.childNodes[0] as elementNodeType).attributes[\"data-page\"], 10)\n if (previousLi) {\n const previousPageNumber = parseInt((previousLi.childNodes[0] as elementNodeType).attributes[\"data-page\"], 10)\n if (pageNumber - previousPageNumber == 2) {\n modifiedLis.push(paginationListItems[previousPageNumber])\n } else if (pageNumber - previousPageNumber != 1) {\n const newLi: elementNodeType = {\n nodeName: \"LI\",\n attributes: {\n class: `${classes.paginationListItem} ${classes.ellipsis} ${classes.disabled}`\n },\n childNodes: [\n {\n nodeName: \"BUTTON\",\n attributes: {\n class: classes.paginationListItemLink\n },\n childNodes: [\n {\n nodeName: \"#text\",\n data: ellipsisText\n }\n ]\n }\n ]\n }\n modifiedLis.push(newLi)\n }\n }\n modifiedLis.push(li)\n previousLi = li\n })\n\n return modifiedLis\n}\n\n\nconst paginationListItem = (page: number, label: string, options: DataTableConfiguration, state: {active?: boolean, hidden?: boolean} = {}) : elementNodeType => ({\n nodeName: \"LI\",\n attributes: {\n class:\n (state.active && !state.hidden) ?\n `${options.classes.paginationListItem} ${options.classes.active}` :\n state.hidden ?\n `${options.classes.paginationListItem} ${options.classes.hidden} ${options.classes.disabled}` :\n options.classes.paginationListItem\n },\n childNodes: [\n {\n nodeName: \"BUTTON\",\n attributes: {\n \"data-page\": String(page),\n class: options.classes.paginationListItemLink,\n \"aria-label\": options.labels.pageTitle.replace(\"{page}\", String(page))\n },\n childNodes: [\n {\n nodeName: \"#text\",\n data: label\n }\n ]\n }\n ]\n})\n\nexport const createVirtualPagerDOM = (onFirstPage: boolean, onLastPage: boolean, currentPage: number, totalPages: number, options) => {\n\n let pagerListItems : elementNodeType[] = []\n\n // first button\n if (options.firstLast) {\n pagerListItems.push(paginationListItem(1, options.firstText, options))\n }\n\n // prev button\n if (options.nextPrev) {\n const prev = onFirstPage ? 1 : currentPage - 1\n pagerListItems.push(paginationListItem(prev, options.prevText, options, {hidden: onFirstPage}))\n }\n\n let pages = [...Array(totalPages).keys()].map(index => paginationListItem(index+1, String(index+1), options, {active: (index === (currentPage-1))}))\n\n if (options.truncatePager) {\n // truncate the paginationListItems\n pages = truncate(\n pages,\n currentPage,\n totalPages,\n options\n )\n\n }\n\n // append the paginationListItems\n pagerListItems = pagerListItems.concat(pages)\n\n // next button\n if (options.nextPrev) {\n const next = onLastPage ? totalPages : currentPage + 1\n pagerListItems.push(paginationListItem(next, options.nextText, options, {hidden: onLastPage}))\n }\n\n // last button\n if (options.firstLast) {\n pagerListItems.push(paginationListItem(totalPages, options.lastText, options))\n }\n\n const pager : elementNodeType = {\n nodeName: \"UL\",\n attributes: {\n class: options.classes.paginationList\n },\n childNodes: pages.length > 1 ? pagerListItems : [] // Don't show single page\n }\n\n return pager\n\n}\n","import {\n isObject,\n createElement,\n visibleToColumnIndex\n} from \"./helpers\"\nimport {\n cellType,\n DataTableConfiguration,\n DataTableOptions,\n filterStateType,\n headerCellType,\n inputCellType,\n elementNodeType,\n renderOptions,\n TableDataType\n} from \"./types\"\nimport {DiffDOM, nodeToObj} from \"diff-dom\"\n\nimport {dataToVirtualDOM, headingsToVirtualHeaderRowDOM} from \"./virtual_dom\"\nimport {readTableData, readDataCell, readHeaderCell} from \"./read_data\"\nimport {Rows} from \"./rows\"\nimport {Columns} from \"./columns\"\nimport {defaultConfig} from \"./config\"\nimport {createVirtualPagerDOM} from \"./virtual_pager_dom\"\n\n\nexport class DataTable {\n\n columns: Columns\n\n containerDOM: HTMLDivElement\n\n _currentPage: number\n\n data: TableDataType\n\n _dd: DiffDOM\n\n dom: HTMLTableElement\n\n _events: { [key: string]: ((...args) => void)[]}\n\n hasHeadings: boolean\n\n hasRows: boolean\n\n headerDOM: HTMLDivElement\n\n _initialInnerHTML: string\n\n initialized: boolean\n\n _label: HTMLElement\n\n lastPage: number\n\n _listeners: { [key: string]: () => void}\n\n onFirstPage: boolean\n\n onLastPage: boolean\n\n options: DataTableConfiguration\n\n _pagerDOMs: HTMLElement[]\n\n _virtualPagerDOM: elementNodeType\n\n pages: {row: cellType[], index: number}[][]\n\n _rect: {width: number, height: number}\n\n rows: Rows\n\n _searchData: number[]\n\n _searchQueries: {terms: string[], columns: (number[] | undefined)}[]\n\n _tableAttributes: { [key: string]: string}\n\n totalPages: number\n\n _virtualDOM: elementNodeType\n\n _virtualHeaderDOM: elementNodeType\n\n wrapperDOM: HTMLElement\n\n constructor(table: HTMLTableElement | string, options: DataTableOptions = {}) {\n\n\n const dom = typeof table === \"string\" ?\n document.querySelector(table) :\n table\n\n if (dom instanceof HTMLTableElement) {\n this.dom = dom\n } else {\n this.dom = document.createElement(\"table\")\n dom.appendChild(this.dom)\n }\n\n const diffDomOptions = {\n ...defaultConfig.diffDomOptions,\n ...options.diffDomOptions\n }\n\n const labels = {\n ...defaultConfig.labels,\n ...options.labels\n }\n\n const classes = {\n ...defaultConfig.classes,\n ...options.classes\n }\n\n // user options\n this.options = {\n ...defaultConfig,\n ...options,\n diffDomOptions,\n labels,\n classes\n }\n\n this._initialInnerHTML = this.options.destroyable ? this.dom.innerHTML : \"\" // preserve in case of later destruction\n\n if (this.options.tabIndex) {\n this.dom.tabIndex = this.options.tabIndex\n } else if (this.options.rowNavigation && this.dom.tabIndex === -1) {\n this.dom.tabIndex = 0\n }\n\n this._listeners = {\n onResize: () => this._onResize()\n }\n\n this._dd = new DiffDOM(this.options.diffDomOptions || {})\n\n this.initialized = false\n this._events = {}\n\n this._currentPage = 0\n this.onFirstPage = true\n this.hasHeadings = false\n this.hasRows = false\n this._searchQueries = []\n\n this.init()\n }\n\n /**\n * Initialize the instance\n */\n init() {\n if (this.initialized || this.dom.classList.contains(this.options.classes.table)) {\n return false\n }\n\n this._virtualDOM = nodeToObj(this.dom, this.options.diffDomOptions || {})\n\n this._tableAttributes = {...this._virtualDOM.attributes}\n\n this.rows = new Rows(this)\n this.columns = new Columns(this)\n\n this.data = readTableData(this.options.data, this.dom, this.columns.settings, this.options.type, this.options.format)\n\n this._render()\n\n setTimeout(() => {\n this.emit(\"datatable.init\")\n this.initialized = true\n }, 10)\n }\n\n\n /**\n * Render the instance\n */\n _render() {\n\n // Build\n this.wrapperDOM = createElement(\"div\", {\n class: `${this.options.classes.wrapper} ${this.options.classes.loading}`\n })\n\n this.wrapperDOM.innerHTML = this.options.template(this.options, this.dom)\n\n const selector = this.wrapperDOM.querySelector(`select.${this.options.classes.selector}`)\n\n // Per Page Select\n if (selector && this.options.paging && this.options.perPageSelect) {\n\n // Create the options\n this.options.perPageSelect.forEach((choice: number | [string, number]) => {\n const [lab, val] = Array.isArray(choice) ? [choice[0], choice[1]] : [String(choice), choice]\n const selected = val === this.options.perPage\n const option = new Option(lab, String(val), selected, selected)\n selector.appendChild(option)\n })\n\n } else if (selector) {\n selector.parentElement.removeChild(selector)\n }\n\n this.containerDOM = this.wrapperDOM.querySelector(`.${this.options.classes.container}`)\n\n this._pagerDOMs = []\n Array.from(this.wrapperDOM.querySelectorAll(`.${this.options.classes.pagination}`)).forEach(el => {\n if (!(el instanceof HTMLElement)) {\n return\n }\n // We remove the inner part of the pager containers to ensure they are all the same.\n el.innerHTML = `
    `\n this._pagerDOMs.push(el.firstElementChild as HTMLElement)\n })\n\n this._virtualPagerDOM = {\n nodeName: \"UL\",\n attributes: {\n class: this.options.classes.paginationList\n }\n }\n\n\n this._label = this.wrapperDOM.querySelector(`.${this.options.classes.info}`)\n\n // Insert in to DOM tree\n this.dom.parentElement.replaceChild(this.wrapperDOM, this.dom)\n this.containerDOM.appendChild(this.dom)\n\n // Store the table dimensions\n this._rect = this.dom.getBoundingClientRect()\n\n // // Fix height\n this._fixHeight()\n //\n\n\n // Class names\n if (!this.options.header) {\n this.wrapperDOM.classList.add(\"no-header\")\n }\n\n if (!this.options.footer) {\n this.wrapperDOM.classList.add(\"no-footer\")\n }\n\n if (this.options.sortable) {\n this.wrapperDOM.classList.add(\"sortable\")\n }\n\n if (this.options.searchable) {\n this.wrapperDOM.classList.add(\"searchable\")\n }\n\n if (this.options.fixedHeight) {\n this.wrapperDOM.classList.add(\"fixed-height\")\n }\n\n if (this.options.fixedColumns) {\n this.wrapperDOM.classList.add(\"fixed-columns\")\n }\n\n this._bindEvents()\n\n if (this.columns._state.sort) {\n this.columns.sort(this.columns._state.sort.column, this.columns._state.sort.dir, true)\n }\n\n this.update(true)\n }\n\n _renderTable(renderOptions: renderOptions ={}) {\n let newVirtualDOM = dataToVirtualDOM(\n this._tableAttributes,\n this.data.headings,\n (this.options.paging || this._searchQueries.length || this.columns._state.filters.length) && this._currentPage && this.pages.length && !renderOptions.noPaging ?\n this.pages[this._currentPage - 1] :\n this.data.data.map((row, index) => ({\n row,\n index\n })),\n this.columns.settings,\n this.columns._state,\n this.rows.cursor,\n this.options,\n renderOptions\n )\n\n if (this.options.tableRender) {\n const renderedTableVirtualDOM : (elementNodeType | void) = this.options.tableRender(this.data, newVirtualDOM, \"main\")\n if (renderedTableVirtualDOM) {\n newVirtualDOM = renderedTableVirtualDOM\n }\n }\n const diff = this._dd.diff(this._virtualDOM, newVirtualDOM)\n this._dd.apply(this.dom, diff)\n this._virtualDOM = newVirtualDOM\n }\n\n /**\n * Render the page\n * @return {Void}\n */\n _renderPage(lastRowCursor=false) {\n if (this.hasRows && this.totalPages) {\n if (this._currentPage > this.totalPages) {\n this._currentPage = 1\n }\n\n // Use a fragment to limit touching the DOM\n this._renderTable()\n\n this.onFirstPage = this._currentPage === 1\n this.onLastPage = this._currentPage === this.lastPage\n } else {\n this.setMessage(this.options.labels.noRows)\n }\n\n // Update the info\n let current = 0\n\n let f = 0\n let t = 0\n let items\n\n if (this.totalPages) {\n current = this._currentPage - 1\n f = current * this.options.perPage\n t = f + this.pages[current].length\n f = f + 1\n items = this._searchQueries.length ? this._searchData.length : this.data.data.length\n }\n\n if (this._label && this.options.labels.info.length) {\n // CUSTOM LABELS\n const string = this.options.labels.info\n .replace(\"{start}\", String(f))\n .replace(\"{end}\", String(t))\n .replace(\"{page}\", String(this._currentPage))\n .replace(\"{pages}\", String(this.totalPages))\n .replace(\"{rows}\", String(items))\n\n this._label.innerHTML = items ? string : \"\"\n }\n\n if (this._currentPage == 1) {\n this._fixHeight()\n }\n\n if (this.options.rowNavigation && this._currentPage) {\n if (!this.rows.cursor || !this.pages[this._currentPage-1].find(\n row => row.index === this.rows.cursor)\n ) {\n const rows = this.pages[this._currentPage-1]\n if (rows.length) {\n if (lastRowCursor) {\n this.rows.setCursor(rows[rows.length-1].index)\n } else {\n this.rows.setCursor(rows[0].index)\n }\n }\n }\n }\n }\n\n /** Render the pager(s)\n *\n */\n _renderPagers() {\n if (!this.options.paging) {\n return\n }\n let newPagerVirtualDOM = createVirtualPagerDOM(this.onFirstPage, this.onLastPage, this._currentPage, this.totalPages, this.options)\n\n if (this.options.pagerRender) {\n const renderedPagerVirtualDOM : (elementNodeType | void) = this.options.pagerRender([this.onFirstPage, this.onLastPage, this._currentPage, this.totalPages], newPagerVirtualDOM)\n if (renderedPagerVirtualDOM) {\n newPagerVirtualDOM = renderedPagerVirtualDOM\n }\n }\n\n const diffs = this._dd.diff(this._virtualPagerDOM, newPagerVirtualDOM)\n // We may have more than one pager\n this._pagerDOMs.forEach((pagerDOM: HTMLElement) => {\n this._dd.apply(pagerDOM, diffs)\n })\n\n this._virtualPagerDOM = newPagerVirtualDOM\n }\n\n // Render header that is not in the same table element as the remainder\n // of the table. Used for tables with scrollY.\n _renderSeparateHeader() {\n const container = this.dom.parentElement\n if (!this.headerDOM) {\n this.headerDOM = document.createElement(\"div\")\n this._virtualHeaderDOM = {\n nodeName: \"DIV\"\n }\n\n }\n container.parentElement.insertBefore(this.headerDOM, container)\n let tableVirtualDOM : elementNodeType = {\n nodeName: \"TABLE\",\n attributes: this._tableAttributes,\n childNodes: [\n {\n nodeName: \"THEAD\",\n childNodes: [\n headingsToVirtualHeaderRowDOM(\n this.data.headings, this.columns.settings, this.columns._state, this.options, {unhideHeader: true})\n ]\n\n }\n\n ]\n }\n tableVirtualDOM.attributes.class = tableVirtualDOM.attributes.class ? `${tableVirtualDOM.attributes.class} ${this.options.classes.table}` : this.options.classes.table\n if (this.options.tableRender) {\n const renderedTableVirtualDOM : (elementNodeType | void) = this.options.tableRender(this.data, tableVirtualDOM, \"header\")\n if (renderedTableVirtualDOM) {\n tableVirtualDOM = renderedTableVirtualDOM\n }\n }\n\n const newVirtualHeaderDOM = {\n nodeName: \"DIV\",\n attributes: {\n class: this.options.classes.headercontainer\n },\n childNodes: [tableVirtualDOM]\n }\n\n const diff = this._dd.diff(this._virtualHeaderDOM, newVirtualHeaderDOM)\n this._dd.apply(this.headerDOM, diff)\n this._virtualHeaderDOM = newVirtualHeaderDOM\n\n // Compensate for scrollbars\n const paddingRight = this.headerDOM.firstElementChild.clientWidth - this.dom.clientWidth\n if (paddingRight) {\n const paddedVirtualHeaderDOM = structuredClone(this._virtualHeaderDOM)\n paddedVirtualHeaderDOM.attributes.style = `padding-right: ${paddingRight}px;`\n const diff = this._dd.diff(this._virtualHeaderDOM, paddedVirtualHeaderDOM)\n this._dd.apply(this.headerDOM, diff)\n this._virtualHeaderDOM = paddedVirtualHeaderDOM\n }\n\n if (container.scrollHeight > container.clientHeight) {\n // scrollbars on one page means scrollbars on all pages.\n container.style.overflowY = \"scroll\"\n }\n }\n\n /**\n * Bind event listeners\n * @return {[type]} [description]\n */\n _bindEvents() {\n // Per page selector\n if (this.options.perPageSelect) {\n const selector = this.wrapperDOM.querySelector(`select.${this.options.classes.selector}`)\n if (selector && selector instanceof HTMLSelectElement) {\n // Change per page\n selector.addEventListener(\"change\", () => {\n this.options.perPage = parseInt(selector.value, 10)\n this.update()\n\n this._fixHeight()\n\n this.emit(\"datatable.perpage\", this.options.perPage)\n }, false)\n }\n }\n\n // Search input\n if (this.options.searchable) {\n this.wrapperDOM.addEventListener(\"input\", (event: InputEvent) => {\n const target = event.target\n if (!(target instanceof HTMLInputElement) || !target.matches(`.${this.options.classes.input}`)) {\n return\n }\n event.preventDefault()\n\n const searches: { terms: string[], columns: (number[] | undefined) }[] = []\n const searchFields = Array.from(this.wrapperDOM.querySelectorAll(`.${this.options.classes.input}`)) as HTMLInputElement[]\n searchFields.filter(\n el => el.value.length\n ).forEach(\n el => {\n const andSearch = el.dataset.and || this.options.searchAnd\n const querySeparator = el.dataset.querySeparator || this.options.searchQuerySeparator\n const terms = querySeparator ? el.value.split(this.options.searchQuerySeparator) : [el.value]\n if (andSearch) {\n terms.forEach(term => {\n if (el.dataset.columns) {\n searches.push({\n terms: [term],\n columns: (JSON.parse(el.dataset.columns) as number[])\n })\n } else {\n searches.push({terms: [term],\n columns: undefined})\n }\n })\n } else {\n if (el.dataset.columns) {\n searches.push({\n terms,\n columns: (JSON.parse(el.dataset.columns) as number[])\n })\n } else {\n searches.push({terms,\n columns: undefined})\n }\n }\n\n }\n )\n if (searches.length === 1 && searches[0].terms.length === 1) {\n const search = searches[0]\n this.search(search.terms[0], search.columns)\n } else {\n this.multiSearch(searches)\n }\n })\n }\n\n // Pager(s) / sorting\n this.wrapperDOM.addEventListener(\"click\", (event: Event) => {\n const target = event.target as Element\n const hyperlink = target.closest(\"a, button\")\n if (!hyperlink) {\n return\n }\n\n if (hyperlink.hasAttribute(\"data-page\")) {\n this.page(parseInt(hyperlink.getAttribute(\"data-page\"), 10))\n event.preventDefault()\n } else if (\n hyperlink.classList.contains(this.options.classes.sorter)\n ) {\n const visibleIndex = Array.from(hyperlink.parentElement.parentElement.children).indexOf(hyperlink.parentElement)\n const columnIndex = visibleToColumnIndex(visibleIndex, this.columns.settings)\n this.columns.sort(columnIndex)\n event.preventDefault()\n } else if (\n hyperlink.classList.contains(this.options.classes.filter)\n ) {\n const visibleIndex = Array.from(hyperlink.parentElement.parentElement.children).indexOf(hyperlink.parentElement)\n const columnIndex = visibleToColumnIndex(visibleIndex, this.columns.settings)\n this.columns.filter(columnIndex)\n event.preventDefault()\n }\n }, false)\n\n if (this.options.rowNavigation) {\n this.dom.addEventListener(\"keydown\", (event: KeyboardEvent) => {\n if (event.key === \"ArrowUp\") {\n event.preventDefault()\n event.stopPropagation()\n let lastRow\n this.pages[this._currentPage-1].find((row: {row: cellType[], index: number}) => {\n if (row.index===this.rows.cursor) {\n return true\n }\n lastRow = row\n return false\n })\n if (lastRow) {\n this.rows.setCursor(lastRow.index)\n } else if (!this.onFirstPage) {\n this.page(this._currentPage-1, true)\n }\n } else if (event.key === \"ArrowDown\") {\n event.preventDefault()\n event.stopPropagation()\n let foundRow: boolean\n const nextRow = this.pages[this._currentPage-1].find((row: {row: cellType[], index: number}) => {\n if (foundRow) {\n return true\n }\n if (row.index===this.rows.cursor) {\n foundRow = true\n }\n return false\n })\n if (nextRow) {\n this.rows.setCursor(nextRow.index)\n } else if (!this.onLastPage) {\n this.page(this._currentPage+1)\n }\n } else if ([\"Enter\", \" \"].includes(event.key)) {\n this.emit(\"datatable.selectrow\", this.rows.cursor, event)\n }\n })\n this.dom.addEventListener(\"mousedown\", (event: Event) => {\n const target = event.target\n if (!(target instanceof Element)) {\n return\n }\n if (this.dom.matches(\":focus\")) {\n const row = Array.from(this.dom.querySelectorAll(\"body tr\")).find(row => row.contains(target))\n if (row && row instanceof HTMLElement) {\n this.emit(\"datatable.selectrow\", parseInt(row.dataset.index, 10), event)\n }\n }\n\n })\n } else {\n this.dom.addEventListener(\"mousedown\", (event: Event) => {\n const target = event.target\n if (!(target instanceof Element)) {\n return\n }\n const row = Array.from(this.dom.querySelectorAll(\"body tr\")).find(row => row.contains(target))\n if (row && row instanceof HTMLElement) {\n this.emit(\"datatable.selectrow\", parseInt(row.dataset.index, 10), event)\n }\n })\n }\n\n window.addEventListener(\"resize\", this._listeners.onResize)\n }\n\n /**\n * execute on resize\n */\n _onResize() {\n this._rect = this.containerDOM.getBoundingClientRect()\n if (!this._rect.width) {\n // No longer shown, likely no longer part of DOM. Give up.\n return\n }\n this.update(true)\n }\n\n /**\n * Destroy the instance\n * @return {void}\n */\n destroy() {\n if (!this.options.destroyable) {\n return\n }\n this.dom.innerHTML = this._initialInnerHTML\n\n // Remove the className\n this.dom.classList.remove(this.options.classes.table)\n\n // Remove the containers\n if (this.wrapperDOM.parentElement) {\n this.wrapperDOM.parentElement.replaceChild(this.dom, this.wrapperDOM)\n }\n\n this.initialized = false\n\n window.removeEventListener(\"resize\", this._listeners.onResize)\n }\n\n /**\n * Update the instance\n * @return {Void}\n */\n update(measureWidths = false) {\n if (measureWidths) {\n this.columns._measureWidths()\n this.hasRows = Boolean(this.data.data.length)\n this.hasHeadings = Boolean(this.data.headings.length)\n }\n this.wrapperDOM.classList.remove(this.options.classes.empty)\n\n this._paginate()\n this._renderPage()\n\n this._renderPagers()\n\n if (this.options.scrollY.length) {\n this._renderSeparateHeader()\n }\n\n this.emit(\"datatable.update\")\n }\n\n _paginate() {\n let rows = this.data.data.map((row, index) => ({\n row,\n index\n }))\n\n if (this._searchQueries.length) {\n rows = []\n\n this._searchData.forEach((index: number) => rows.push({index,\n row: this.data.data[index]}))\n }\n\n if (this.columns._state.filters.length) {\n this.columns._state.filters.forEach(\n (filterState: (filterStateType | undefined), column: number) => {\n if (!filterState) {\n return\n }\n rows = rows.filter(\n (row: {index: number, row: cellType[]}) => typeof filterState === \"function\" ? filterState(row.row[column].data) : (row.row[column].text ?? row.row[column].data) === filterState\n )\n }\n )\n }\n\n if (this.options.paging && this.options.perPage > 0) {\n // Check for hidden columns\n this.pages = rows\n .map((row: {row: cellType[], index: number}, i: number) => i % this.options.perPage === 0 ? rows.slice(i, i + this.options.perPage) : null)\n .filter((page: {row: cellType[], index: number}[]) => page)\n } else {\n this.pages = [rows]\n }\n\n this.totalPages = this.lastPage = this.pages.length\n\n if (!this._currentPage) {\n this._currentPage = 1\n }\n return this.totalPages\n }\n\n /**\n * Fix the container height\n */\n _fixHeight() {\n if (this.options.fixedHeight) {\n this.containerDOM.style.height = null\n this._rect = this.containerDOM.getBoundingClientRect()\n this.containerDOM.style.height = `${this._rect.height}px`\n }\n }\n\n /**\n * Perform a simple search of the data set\n */\n search(term: string, columns: (number[] | undefined ) = undefined) {\n\n if (!term.length) {\n this._currentPage = 1\n this._searchQueries = []\n this._searchData = []\n this.update()\n this.emit(\"datatable.search\", \"\", [])\n this.wrapperDOM.classList.remove(\"search-results\")\n return false\n }\n\n this.multiSearch([\n {terms: [term],\n columns: columns ? columns : undefined}\n ])\n\n this.emit(\"datatable.search\", term, this._searchData)\n\n }\n\n /**\n * Perform a search of the data set seraching for up to multiple strings in various columns\n */\n multiSearch(rawQueries : {terms: string[], columns: (number[] | undefined)}[]) {\n if (!this.hasRows) return false\n\n this._currentPage = 1\n this._searchData = []\n // Remove empty queries\n const queries = rawQueries.map(query => ({\n columns: query.columns,\n terms: query.terms.map(term => term.trim()).filter(term => term)\n })).filter(query => query.terms.length\n )\n\n this._searchQueries = queries\n\n if (!queries.length) {\n this.update()\n this.emit(\"datatable.multisearch\", queries, this._searchData)\n this.wrapperDOM.classList.remove(\"search-results\")\n return false\n }\n const queryWords = queries.map(query => this.columns.settings.map(\n (column, index) => {\n if (column.hidden || !column.searchable || (query.columns && !query.columns.includes(index))) {\n return false\n }\n let columnQueries = query.terms\n const sensitivity = column.sensitivity || this.options.sensitivity\n if ([\"base\", \"accent\"].includes(sensitivity)) {\n columnQueries = columnQueries.map(query => query.toLowerCase())\n }\n if ([\"base\", \"case\"].includes(sensitivity)) {\n columnQueries = columnQueries.map(query => query.normalize(\"NFD\").replace(/\\p{Diacritic}/gu, \"\"))\n }\n const ignorePunctuation = column.ignorePunctuation ?? this.options.ignorePunctuation\n if (ignorePunctuation) {\n columnQueries = columnQueries.map(query => query.replace(/[.,/#!$%^&*;:{}=-_`~()]/g, \"\"))\n }\n return columnQueries\n }\n ))\n this.data.data.forEach((row: cellType[], idx: number) => {\n const searchRow = row.map((cell, i) => {\n let content = (cell.text || String(cell.data)).trim()\n const column = this.columns.settings[i]\n if (content.length) {\n const sensitivity = column.sensitivity || this.options.sensitivity\n if ([\"base\", \"accent\"].includes(sensitivity)) {\n content = content.toLowerCase()\n }\n if ([\"base\", \"case\"].includes(sensitivity)) {\n content = content.normalize(\"NFD\").replace(/\\p{Diacritic}/gu, \"\")\n }\n const ignorePunctuation = column.ignorePunctuation ?? this.options.ignorePunctuation\n if (ignorePunctuation) {\n content = content.replace(/[.,/#!$%^&*;:{}=-_`~()]/g, \"\")\n }\n }\n const searchItemSeparator = column.searchItemSeparator || this.options.searchItemSeparator\n return searchItemSeparator ? content.split(searchItemSeparator) : [content]\n })\n if (\n queryWords.every(\n queries => queries.find(\n (query, index) => query ?\n query.find(queryWord => searchRow[index].find(searchItem => searchItem.includes(queryWord))) :\n false\n )\n )\n ) {\n this._searchData.push(idx)\n }\n\n })\n\n this.wrapperDOM.classList.add(\"search-results\")\n if (this._searchData.length) {\n this.update()\n } else {\n this.wrapperDOM.classList.remove(\"search-results\")\n\n this.setMessage(this.options.labels.noResults)\n }\n\n this.emit(\"datatable.multisearch\", queries, this._searchData)\n }\n\n /**\n * Change page\n */\n page(page: number, lastRowCursor = false) {\n // We don't want to load the current page again.\n if (page === this._currentPage) {\n return false\n }\n\n if (!isNaN(page)) {\n this._currentPage = page\n }\n\n if (page > this.pages.length || page < 0) {\n return false\n }\n\n this._renderPage(lastRowCursor)\n this._renderPagers()\n\n this.emit(\"datatable.page\", page)\n }\n\n /**\n * Add new row data\n */\n insert(data: (\n {headings?: string[], data?: inputCellType[][]} | { [key: string]: inputCellType}[])) {\n let rows: cellType[][] = []\n if (Array.isArray(data)) {\n const headings = this.data.headings.map((heading: headerCellType) => heading.text ?? String(heading.data))\n data.forEach((row, rIndex) => {\n const r: cellType[] = []\n Object.entries(row).forEach(([heading, cell]) => {\n\n const index = headings.indexOf(heading)\n\n if (index > -1) {\n r[index] = readDataCell(cell as inputCellType, this.columns.settings[index])\n } else if (!this.hasHeadings && !this.hasRows && rIndex === 0) {\n r[headings.length] = readDataCell(cell as inputCellType, this.columns.settings[headings.length])\n headings.push(heading)\n this.data.headings.push(readHeaderCell(heading))\n }\n })\n rows.push(r)\n })\n } else if (isObject(data)) {\n if (data.headings && !this.hasHeadings && !this.hasRows) {\n this.data = readTableData(data, undefined, this.columns.settings, this.options.type, this.options.format)\n } else if (data.data && Array.isArray(data.data)) {\n rows = data.data.map(row => row.map((cell, index) => readDataCell(cell as inputCellType, this.columns.settings[index])))\n }\n }\n if (rows.length) {\n rows.forEach((row: cellType[]) => this.data.data.push(row))\n }\n this.hasHeadings = Boolean(this.data.headings.length)\n\n if (this.columns._state.sort) {\n this.columns.sort(this.columns._state.sort.column, this.columns._state.sort.dir, true)\n }\n\n this.update(true)\n }\n\n /**\n * Refresh the instance\n */\n refresh() {\n if (this.options.searchable) {\n (Array.from(this.wrapperDOM.querySelectorAll(`.${this.options.classes.input}`)) as HTMLInputElement[]).forEach(\n el => {\n el.value = \"\"\n }\n )\n this._searchQueries = []\n }\n this._currentPage = 1\n this.onFirstPage = true\n this.update(true)\n\n this.emit(\"datatable.refresh\")\n }\n\n /**\n * Print the table\n */\n print() {\n const tableDOM = createElement(\"table\")\n const tableVirtualDOM = {nodeName: \"TABLE\"}\n let newTableVirtualDOM = dataToVirtualDOM(\n this._tableAttributes,\n this.data.headings,\n this.data.data.map((row, index) => ({\n row,\n index\n })),\n this.columns.settings,\n this.columns._state,\n false, // No row cursor\n this.options,\n {\n noColumnWidths: true,\n unhideHeader: true\n }\n )\n\n if (this.options.tableRender) {\n const renderedTableVirtualDOM : (elementNodeType | void) = this.options.tableRender(this.data, newTableVirtualDOM, \"print\")\n if (renderedTableVirtualDOM) {\n newTableVirtualDOM = renderedTableVirtualDOM\n }\n }\n\n const diff = this._dd.diff(tableVirtualDOM, newTableVirtualDOM)\n this._dd.apply(tableDOM, diff)\n\n // Open new window\n const w = window.open()\n\n // Append the table to the body\n w.document.body.appendChild(tableDOM)\n\n // Print\n w.print()\n }\n\n /**\n * Show a message in the table\n */\n setMessage(message: string) {\n const activeHeadings = this.data.headings.filter((heading: headerCellType, index: number) => !this.columns.settings[index]?.hidden)\n const colspan = activeHeadings.length || 1\n\n this.wrapperDOM.classList.add(this.options.classes.empty)\n\n if (this._label) {\n this._label.innerHTML = \"\"\n }\n this.totalPages = 0\n this._renderPagers()\n\n let newVirtualDOM : elementNodeType = {\n nodeName: \"TABLE\",\n attributes: this._tableAttributes,\n childNodes: [\n {\n nodeName: \"THEAD\",\n childNodes: [\n headingsToVirtualHeaderRowDOM(\n this.data.headings, this.columns.settings, this.columns._state, this.options, {})\n ]\n },\n {\n nodeName: \"TBODY\",\n childNodes: [\n {\n nodeName: \"TR\",\n childNodes: [\n {\n nodeName: \"TD\",\n attributes: {\n class: this.options.classes.empty,\n colspan: String(colspan)\n },\n childNodes: [\n {\n nodeName: \"#text\",\n data: message\n }\n ]\n }\n ]\n }\n ]\n }\n\n ]\n }\n\n newVirtualDOM.attributes.class = newVirtualDOM.attributes.class ? `${newVirtualDOM.attributes.class} ${this.options.classes.table}` : this.options.classes.table\n\n if (this.options.tableRender) {\n const renderedTableVirtualDOM : (elementNodeType | void) = this.options.tableRender(this.data, newVirtualDOM, \"message\")\n if (renderedTableVirtualDOM) {\n newVirtualDOM = renderedTableVirtualDOM\n }\n }\n\n const diff = this._dd.diff(this._virtualDOM, newVirtualDOM)\n this._dd.apply(this.dom, diff)\n this._virtualDOM = newVirtualDOM\n\n }\n\n /**\n * Add custom event listener\n */\n on(event: string, callback: () => void) {\n this._events[event] = this._events[event] || []\n this._events[event].push(callback)\n }\n\n /**\n * Remove custom event listener\n */\n off(event: string, callback: () => void) {\n if (event in this._events === false) return\n this._events[event].splice(this._events[event].indexOf(callback), 1)\n }\n\n /**\n * Fire custom event\n */\n emit(event: string, ...args) {\n if (event in this._events === false) return\n for (let i = 0; i < this._events[event].length; i++) {\n this._events[event][i](...args)\n }\n }\n}\n","import {\n isObject\n} from \"../helpers\"\n\ninterface csvConvertUserOptions {\n lineDelimiter?: string,\n columnDelimiter?: string\n removeDoubleQuotes?: boolean\n data: string,\n headings?: string[],\n}\n\n\n/**\n * Convert CSV data to fit the format used in the table.\n */\nexport const convertCSV = function(userOptions : csvConvertUserOptions) {\n let obj\n const defaults = {\n lineDelimiter: \"\\n\",\n columnDelimiter: \",\",\n removeDoubleQuotes: false\n }\n\n // Check for the options object\n if (!isObject(userOptions)) {\n return false\n }\n\n const options = {\n ...defaults,\n ...userOptions\n }\n\n if (options.data.length) {\n // Import CSV\n obj = {\n data: []\n }\n\n // Split the string into rows\n const rows : string[] = options.data.split(options.lineDelimiter)\n\n if (rows.length) {\n\n if (options.headings) {\n obj.headings = rows[0].split(options.columnDelimiter)\n if (options.removeDoubleQuotes) {\n obj.headings = obj.headings.map((e: string) => e.trim().replace(/(^\"|\"$)/g, \"\"))\n }\n rows.shift()\n }\n\n rows.forEach((row: string, i: number) => {\n obj.data[i] = []\n\n // Split the rows into values\n const values = row.split(options.columnDelimiter)\n\n if (values.length) {\n values.forEach((value: string) => {\n if (options.removeDoubleQuotes) {\n value = value.trim().replace(/(^\"|\"$)/g, \"\")\n }\n obj.data[i].push(value)\n })\n }\n })\n }\n\n if (obj) {\n return obj\n }\n }\n\n return false\n}\n","import {\n isJson,\n isObject\n} from \"../helpers\"\n\ninterface jsonConvertUserOptions {\n lineDelimiter?: string,\n columnDelimiter?: string\n removeDoubleQuotes?: boolean\n data: string,\n headings?: string[],\n}\n\n/**\n * Convert JSON data to fit the format used in the table.\n */\nexport const convertJSON = function(userOptions : jsonConvertUserOptions) {\n let obj\n const defaults = {\n data: \"\"\n }\n\n // Check for the options object\n if (!isObject(userOptions)) {\n return false\n }\n\n const options = {\n ...defaults,\n ...userOptions\n }\n\n if (options.data.length || isObject(options.data)) {\n // Import JSON\n const json = isJson(options.data) ? JSON.parse(options.data) : false\n\n // Valid JSON string\n if (json) {\n obj = {\n headings: [],\n data: []\n }\n\n json.forEach((data: { [key: string]: string | number | boolean | null | undefined}, i: number) => {\n obj.data[i] = []\n Object.entries(data).forEach(([column, value]) => {\n if (!obj.headings.includes(column)) {\n obj.headings.push(column)\n }\n obj.data[i].push(value)\n })\n })\n } else {\n console.warn(\"That's not valid JSON!\")\n }\n\n if (obj) {\n return obj\n }\n }\n\n return false\n}\n","import {\n isObject\n} from \"../helpers\"\nimport {DataTable} from \"../datatable\"\nimport {\n cellType,\n headerCellType\n} from \"../types\"\n\n/**\n * Export table to CSV\n */\n\ninterface csvUserOptions {\n download?: boolean,\n skipColumn?: number[],\n lineDelimiter?: string,\n columnDelimiter?: string,\n selection?: number | number[],\n filename?: string,\n}\n\n\nexport const exportCSV = function(dt: DataTable, userOptions: csvUserOptions = {}) {\n if (!dt.hasHeadings && !dt.hasRows) return false\n\n const defaults = {\n download: true,\n skipColumn: [],\n lineDelimiter: \"\\n\",\n columnDelimiter: \",\"\n }\n\n // Check for the options object\n if (!isObject(userOptions)) {\n return false\n }\n\n const options = {\n ...defaults,\n ...userOptions\n }\n const columnShown = (index: number) => !options.skipColumn.includes(index) && !dt.columns.settings[index]?.hidden\n let rows : (string | number | boolean | object | undefined | null)[][] = []\n const headers = dt.data.headings.filter((_heading: headerCellType, index: number) => columnShown(index)).map((header: headerCellType) => header.text ?? header.data)\n // Include headings\n rows[0] = headers\n\n // Selection or whole table\n if (options.selection) {\n // Page number\n if (Array.isArray(options.selection)) {\n // Array of page numbers\n for (let i = 0; i < options.selection.length; i++) {\n rows = rows.concat(dt.pages[options.selection[i] - 1].map((row: {row: cellType[], index: number}) => row.row.filter((_cell: cellType, index: number) => columnShown(index)).map((cell: cellType) => cell.text ?? cell.data)))\n }\n\n } else {\n rows = rows.concat(dt.pages[options.selection - 1].map((row: {row: cellType[], index: number}) => row.row.filter((_cell: cellType, index: number) => columnShown(index)).map((cell: cellType) => cell.text ?? cell.data)))\n }\n } else {\n rows = rows.concat(dt.data.data.map((row: cellType[]) => row.filter((_cell: cellType, index: number) => columnShown(index)).map((cell: cellType) => cell.text ?? cell.data)))\n }\n\n // Only proceed if we have data\n if (rows.length) {\n let str = \"\"\n rows.forEach(row => {\n row.forEach((cell: (string | number | boolean | object | undefined | null)) => {\n if (typeof cell === \"string\") {\n cell = cell.trim()\n cell = cell.replace(/\\s{2,}/g, \" \")\n cell = cell.replace(/\\n/g, \" \")\n cell = cell.replace(/\"/g, \"\\\"\\\"\")\n //have to manually encode \"#\" as encodeURI leaves it as is.\n cell = cell.replace(/#/g, \"%23\")\n if (cell.includes(\",\")) {\n cell = `\"${cell}\"`\n }\n }\n str += cell + options.columnDelimiter\n })\n // Remove trailing column delimiter\n str = str.trim().substring(0, str.length - 1)\n\n // Apply line delimiter\n str += options.lineDelimiter\n })\n\n // Remove trailing line delimiter\n str = str.trim().substring(0, str.length - 1)\n\n // Download\n if (options.download) {\n // Create a link to trigger the download\n const link = document.createElement(\"a\")\n link.href = encodeURI(`data:text/csv;charset=utf-8,${str}`)\n link.download = `${options.filename || \"datatable_export\"}.csv`\n\n // Append the link\n document.body.appendChild(link)\n\n // Trigger the download\n link.click()\n\n // Remove the link\n document.body.removeChild(link)\n }\n\n return str\n }\n\n return false\n}\n","import {\n isObject\n} from \"../helpers\"\nimport {DataTable} from \"../datatable\"\nimport {\n cellType,\n headerCellType,\n elementNodeType\n} from \"../types\"\n/**\n * Export table to JSON\n */\n\n interface jsonUserOptions {\n download?: boolean,\n skipColumn?: number[],\n replacer?: null | ((key, value) => string) | (string | number)[],\n space?: number,\n selection?: number | number[],\n filename?: string,\n }\n\n\nexport const exportJSON = function(dt: DataTable, userOptions: jsonUserOptions = {}) {\n if (!dt.hasHeadings && !dt.hasRows) return false\n\n\n const defaults = {\n download: true,\n skipColumn: [],\n replacer: null,\n space: 4\n }\n\n // Check for the options object\n if (!isObject(userOptions)) {\n return false\n }\n\n const options = {\n ...defaults,\n ...userOptions\n }\n\n const columnShown = (index: number) => !options.skipColumn.includes(index) && !dt.columns.settings[index]?.hidden\n\n let rows : (string | number | boolean | object | undefined | null)[][] = []\n // Selection or whole table\n if (options.selection) {\n // Page number\n if (Array.isArray(options.selection)) {\n // Array of page numbers\n for (let i = 0; i < options.selection.length; i++) {\n rows = rows.concat(dt.pages[options.selection[i] - 1].map((row: {row: cellType[], index: number}) => row.row.filter((_cell: cellType, index: number) => columnShown(index)).map((cell: cellType) => cell.data)))\n }\n } else {\n rows = rows.concat(dt.pages[options.selection - 1].map((row: {row: cellType[], index: number}) => row.row.filter((_cell: cellType, index: number) => columnShown(index)).map((cell: cellType) => cell.data)))\n }\n } else {\n rows = rows.concat(dt.data.data.map((row: cellType[]) => row.filter((_cell: cellType, index: number) => columnShown(index)).map((cell: cellType) => cell.data)))\n }\n\n const headers = dt.data.headings.filter((_heading: headerCellType, index: number) => columnShown(index)).map((header: headerCellType) => header.text ?? String(header.data))\n\n // Only proceed if we have data\n if (rows.length) {\n const arr: (void | { [key: string]: (string | number | boolean | undefined | null | elementNodeType[])})[] = []\n rows.forEach((row: (string | number | boolean | object | undefined | null)[], x: number) => {\n arr[x] = arr[x] || {}\n row.forEach((cell: (string | number | boolean | object | undefined | null), i: number) => {\n arr[x][headers[i]] = cell\n })\n })\n\n // Convert the array of objects to JSON string\n const str = JSON.stringify(arr, options.replacer, options.space)\n\n // Download\n if (options.download) {\n // Create a link to trigger the download\n\n const blob = new Blob(\n [str],\n {\n type: \"data:application/json;charset=utf-8\"\n }\n )\n const url = URL.createObjectURL(blob)\n\n\n const link = document.createElement(\"a\")\n link.href = url\n link.download = `${options.filename || \"datatable_export\"}.json`\n\n // Append the link\n document.body.appendChild(link)\n\n // Trigger the download\n link.click()\n\n // Remove the link\n document.body.removeChild(link)\n URL.revokeObjectURL(url)\n }\n\n return str\n }\n\n return false\n}\n","import {\n isObject\n} from \"../helpers\"\nimport {DataTable} from \"../datatable\"\nimport {\n cellType,\n headerCellType\n} from \"../types\"\n/**\n * Export table to SQL\n */\n\n interface sqlUserOptions {\n download?: boolean,\n skipColumn?: number[],\n tableName?: string,\n selection?: number | number[],\n filename?: string,\n }\n\nexport const exportSQL = function(dt: DataTable, userOptions : sqlUserOptions = {}) {\n if (!dt.hasHeadings && !dt.hasRows) return false\n\n const defaults = {\n download: true,\n skipColumn: [],\n tableName: \"myTable\"\n }\n\n // Check for the options object\n if (!isObject(userOptions)) {\n return false\n }\n\n const options = {\n ...defaults,\n ...userOptions\n }\n const columnShown = (index: number) => !options.skipColumn.includes(index) && !dt.columns.settings[index]?.hidden\n let rows : (string | number | boolean | object | undefined | null)[][] = []\n // Selection or whole table\n if (options.selection) {\n // Page number\n if (Array.isArray(options.selection)) {\n // Array of page numbers\n for (let i = 0; i < options.selection.length; i++) {\n rows = rows.concat(dt.pages[options.selection[i] - 1].map((row: {row: cellType[], index: number}) => row.row.filter((_cell: cellType, index: number) => columnShown(index)).map((cell: cellType) => cell.text ?? cell.data)))\n }\n\n } else {\n rows = rows.concat(dt.pages[options.selection - 1].map((row: {row: cellType[], index: number}) => row.row.filter((_cell: cellType, index: number) => columnShown(index)).map((cell: cellType) => cell.text ?? cell.data)))\n }\n } else {\n rows = rows.concat(dt.data.data.map((row: cellType[]) => row.filter((_cell: cellType, index: number) => columnShown(index)).map((cell: cellType) => cell.text ?? cell.data)))\n }\n\n const headers = dt.data.headings.filter((_heading: headerCellType, index: number) => columnShown(index)).map((header: headerCellType) => header.text ?? String(header.data))\n // Only proceed if we have data\n if (rows.length) {\n // Begin INSERT statement\n let str = `INSERT INTO \\`${options.tableName}\\` (`\n\n // Convert table headings to column names\n headers.forEach((header: string) => {\n str += `\\`${header}\\`,`\n })\n\n // Remove trailing comma\n str = str.trim().substring(0, str.length - 1)\n\n // Begin VALUES\n str += \") VALUES \"\n\n // Iterate rows and convert cell data to column values\n\n rows.forEach((row: (string | number | boolean | object | undefined | null)[]) => {\n str += \"(\"\n row.forEach((cell: (string | number | boolean | object | undefined | null)) => {\n if (typeof cell === \"string\") {\n str += `\"${cell}\",`\n } else {\n str += `${cell},`\n }\n })\n // Remove trailing comma\n str = str.trim().substring(0, str.length - 1)\n\n // end VALUES\n str += \"),\"\n\n })\n\n // Remove trailing comma\n str = str.trim().substring(0, str.length - 1)\n\n // Add trailing colon\n str += \";\"\n\n if (options.download) {\n str = `data:application/sql;charset=utf-8,${str}`\n }\n\n // Download\n if (options.download) {\n // Create a link to trigger the download\n const link = document.createElement(\"a\")\n link.href = encodeURI(str)\n link.download = `${options.filename || \"datatable_export\"}.sql`\n\n // Append the link\n document.body.appendChild(link)\n\n // Trigger the download\n link.click()\n\n // Remove the link\n document.body.removeChild(link)\n }\n\n return str\n }\n\n return false\n}\n","import {\n isObject\n} from \"../helpers\"\nimport {DataTable} from \"../datatable\"\nimport {\n cellType,\n headerCellType\n} from \"../types\"\n/**\n * Export table to TXT\n */\n interface txtUserOptions {\n download?: boolean,\n skipColumn?: number[],\n lineDelimiter?: string,\n columnDelimiter?: string,\n selection?: number | number[],\n filename?: string,\n }\n\n\nexport const exportTXT = function(dt: DataTable, userOptions : txtUserOptions = {}) {\n if (!dt.hasHeadings && !dt.hasRows) return false\n\n const defaults = {\n download: true,\n skipColumn: [],\n lineDelimiter: \"\\n\",\n columnDelimiter: \",\"\n }\n\n // Check for the options object\n if (!isObject(userOptions)) {\n return false\n }\n\n const options = {\n ...defaults,\n ...userOptions\n }\n\n const columnShown = (index: number) => !options.skipColumn.includes(index) && !dt.columns.settings[index]?.hidden\n\n let rows : (string | number | boolean | object | undefined | null)[][] = []\n const headers = dt.data.headings.filter((_heading: headerCellType, index: number) => columnShown(index)).map((header: headerCellType) => header.text ?? header.data)\n // Include headings\n rows[0] = headers\n\n // Selection or whole table\n if (options.selection) {\n // Page number\n if (Array.isArray(options.selection)) {\n // Array of page numbers\n for (let i = 0; i < options.selection.length; i++) {\n rows = rows.concat(dt.pages[options.selection[i] - 1].map((row: {row: cellType[], index: number}) => row.row.filter((_cell: cellType, index: number) => columnShown(index)).map((cell: cellType) => cell.data)))\n }\n } else {\n rows = rows.concat(dt.pages[options.selection - 1].map((row: {row: cellType[], index: number}) => row.row.filter((_cell: cellType, index: number) => columnShown(index)).map((cell: cellType) => cell.data)))\n }\n } else {\n rows = rows.concat(dt.data.data.map((row: cellType[]) => row.filter((_cell: cellType, index: number) => columnShown(index)).map((cell: cellType) => cell.data)))\n }\n\n // Only proceed if we have data\n if (rows.length) {\n let str = \"\"\n\n rows.forEach(row => {\n row.forEach((cell: (string | number | boolean | object | undefined | null)) => {\n if (typeof cell === \"string\") {\n cell = cell.trim()\n cell = cell.replace(/\\s{2,}/g, \" \")\n cell = cell.replace(/\\n/g, \" \")\n cell = cell.replace(/\"/g, \"\\\"\\\"\")\n //have to manually encode \"#\" as encodeURI leaves it as is.\n cell = cell.replace(/#/g, \"%23\")\n if (cell.includes(\",\")) {\n cell = `\"${cell}\"`\n }\n }\n str += cell + options.columnDelimiter\n })\n // Remove trailing column delimiter\n str = str.trim().substring(0, str.length - 1)\n\n // Apply line delimiter\n str += options.lineDelimiter\n\n })\n\n // Remove trailing line delimiter\n str = str.trim().substring(0, str.length - 1)\n\n if (options.download) {\n str = `data:text/csv;charset=utf-8,${str}`\n }\n // Download\n if (options.download) {\n // Create a link to trigger the download\n const link = document.createElement(\"a\")\n link.href = encodeURI(str)\n link.download = `${options.filename || \"datatable_export\"}.txt`\n\n // Append the link\n document.body.appendChild(link)\n\n // Trigger the download\n link.click()\n\n // Remove the link\n document.body.removeChild(link)\n }\n\n return str\n }\n\n return false\n}\n","/**\n* Default config\n* @type {Object}\n*/\nimport {Editor} from \"./editor\"\n\nexport const defaultConfig = {\n classes: {\n row: \"datatable-editor-row\",\n form: \"datatable-editor-form\",\n item: \"datatable-editor-item\",\n menu: \"datatable-editor-menu\",\n save: \"datatable-editor-save\",\n block: \"datatable-editor-block\",\n cancel: \"datatable-editor-cancel\",\n close: \"datatable-editor-close\",\n inner: \"datatable-editor-inner\",\n input: \"datatable-editor-input\",\n label: \"datatable-editor-label\",\n modal: \"datatable-editor-modal\",\n action: \"datatable-editor-action\",\n header: \"datatable-editor-header\",\n wrapper: \"datatable-editor-wrapper\",\n editable: \"datatable-editor-editable\",\n container: \"datatable-editor-container\",\n separator: \"datatable-editor-separator\"\n },\n\n labels: {\n closeX: \"x\",\n editCell: \"Edit Cell\",\n editRow: \"Edit Row\",\n removeRow: \"Remove Row\",\n reallyRemove: \"Are you sure?\",\n reallyCancel: \"Do you really want to cancel?\",\n save: \"Save\",\n cancel: \"Cancel\"\n },\n\n cancelModal: editor => confirm(editor.options.labels.reallyCancel),\n\n // edit inline instead of using a modal lay-over for editing content\n inline: true,\n\n // include hidden columns in the editor\n hiddenColumns: false,\n\n // enable the context menu\n contextMenu: true,\n\n // event to start editing\n clickEvent: \"dblclick\",\n\n // indexes of columns not to be edited\n excludeColumns: [],\n\n // set the context menu items\n menuItems: [\n {\n text: (editor: Editor) => editor.options.labels.editCell,\n action: (editor: Editor, _event: Event) => {\n if (!(editor.event.target instanceof Element)) {\n return\n }\n const cell = editor.event.target.closest(\"td\")\n return editor.editCell(cell)\n }\n },\n {\n text: (editor: Editor) => editor.options.labels.editRow,\n action: (editor: Editor, _event: Event) => {\n if (!(editor.event.target instanceof Element)) {\n return\n }\n const row = editor.event.target.closest(\"tr\")\n return editor.editRow(row)\n }\n },\n {\n separator: true\n },\n {\n text: (editor: Editor) => editor.options.labels.removeRow,\n action: (editor: Editor, _event: Event) => {\n if (!(editor.event.target instanceof Element)) {\n return\n }\n if (confirm(editor.options.labels.reallyRemove)) {\n const row = editor.event.target.closest(\"tr\")\n editor.removeRow(row)\n }\n }\n }\n ]\n}\n","// Source: https://www.freecodecamp.org/news/javascript-debounce-example/\n\nexport const debounce = function(func: () => void, timeout = 300) {\n let timer: number\n return (..._args: any[]) => {\n clearTimeout(timer)\n timer = window.setTimeout(() => func(), timeout)\n }\n}\n","import {\n createElement,\n escapeText,\n visibleToColumnIndex,\n columnToVisibleIndex\n} from \"../helpers\"\nimport {\n cellType,\n rowRenderType,\n elementNodeType\n} from \"../types\"\nimport {DataTable} from \"../datatable\"\nimport {parseDate} from \"../date\"\n\nimport {\n defaultConfig\n} from \"./config\"\nimport {\n debounce\n} from \"./helpers\"\nimport {menuItemType, dataType, EditorOptions} from \"./types\"\n\n\n/**\n * Main lib\n * @param {Object} dataTable Target dataTable\n * @param {Object} options User config\n */\nexport class Editor {\n menuOpen: boolean\n\n containerDOM: HTMLElement\n\n data: dataType\n\n disabled: boolean\n\n dt: DataTable\n\n editing: boolean\n\n editingCell: boolean\n\n editingRow: boolean\n\n event: Event\n\n events: { [key: string]: () => void}\n\n initialized: boolean\n\n limits: {x: number, y: number}\n\n menuDOM: HTMLElement\n\n modalDOM: HTMLElement | false\n\n options: EditorOptions\n\n originalRowRender: rowRenderType | false\n\n rect: {width: number, height: number}\n\n wrapperDOM: HTMLElement\n\n constructor(dataTable: DataTable, options = {}) {\n this.dt = dataTable\n this.options = {\n ...defaultConfig,\n ...options\n }\n }\n\n /**\n * Init instance\n * @return {Void}\n */\n init() {\n if (this.initialized) {\n return\n }\n this.dt.wrapperDOM.classList.add(this.options.classes.editable)\n if (this.options.inline) {\n this.originalRowRender = this.dt.options.rowRender\n this.dt.options.rowRender = (row, tr, index) => {\n let newTr = this.rowRender(row, tr, index)\n if (this.originalRowRender) {\n newTr = this.originalRowRender(row, newTr, index)\n }\n return newTr\n }\n }\n if (this.options.contextMenu) {\n this.containerDOM = createElement(\"div\", {\n id: this.options.classes.container\n })\n this.wrapperDOM = createElement(\"div\", {\n class: this.options.classes.wrapper\n })\n this.menuDOM = createElement(\"ul\", {\n class: this.options.classes.menu\n })\n if (this.options.menuItems && this.options.menuItems.length) {\n this.options.menuItems.forEach((item: menuItemType) => {\n const li = createElement(\"li\", {\n class: item.separator ? this.options.classes.separator : this.options.classes.item\n })\n if (!item.separator) {\n const a = createElement(\"a\", {\n class: this.options.classes.action,\n href: item.url || \"#\",\n html: typeof item.text === \"function\" ? item.text(this) : item.text\n })\n li.appendChild(a)\n if (item.action && typeof item.action === \"function\") {\n a.addEventListener(\"click\", (event: Event) => {\n event.preventDefault()\n item.action(this, event)\n })\n }\n }\n this.menuDOM.appendChild(li)\n })\n }\n this.wrapperDOM.appendChild(this.menuDOM)\n this.containerDOM.appendChild(this.wrapperDOM)\n this.updateMenu()\n }\n this.data = {}\n this.menuOpen = false\n this.editing = false\n this.editingRow = false\n this.editingCell = false\n this.bindEvents()\n setTimeout(() => {\n this.initialized = true\n this.dt.emit(\"editable.init\")\n }, 10)\n }\n\n /**\n * Bind events to DOM\n * @return {Void}\n */\n bindEvents() {\n this.events = {\n keydown: this.keydown.bind(this),\n click: this.click.bind(this)\n }\n // listen for click / double-click\n this.dt.dom.addEventListener(this.options.clickEvent, this.events.click)\n // listen for right-click\n document.addEventListener(\"keydown\", this.events.keydown)\n\n if (this.options.contextMenu) {\n this.events.context = this.context.bind(this)\n this.events.updateMenu = this.updateMenu.bind(this)\n this.events.dismissMenu = this.dismissMenu.bind(this)\n this.events.reset = debounce(() => this.events.updateMenu(), 50)\n\n // listen for right-click\n this.dt.dom.addEventListener(\"contextmenu\", this.events.context)\n // listen for click everywhere except the menu\n document.addEventListener(\"click\", this.events.dismissMenu)\n // Reset contextmenu on browser window changes\n window.addEventListener(\"resize\", this.events.reset)\n window.addEventListener(\"scroll\", this.events.reset)\n }\n }\n\n /**\n * contextmenu listener\n * @param {Object} event Event\n * @return {Void}\n */\n context(event: MouseEvent) {\n const target = event.target\n if (!(target instanceof Element)) {\n return\n }\n this.event = event\n\n const cell = target.closest(\"tbody td\")\n if (!this.disabled && cell) {\n event.preventDefault()\n // get the mouse position\n let x = event.pageX\n let y = event.pageY\n // check if we're near the right edge of window\n if (x > this.limits.x) {\n x -= this.rect.width\n }\n // check if we're near the bottom edge of window\n if (y > this.limits.y) {\n y -= this.rect.height\n }\n this.wrapperDOM.style.top = `${y}px`\n this.wrapperDOM.style.left = `${x}px`\n this.openMenu()\n this.updateMenu()\n }\n }\n\n /**\n * dblclick listener\n * @param {Object} event Event\n * @return {Void}\n */\n click(event: MouseEvent) {\n const target = event.target\n if (!(target instanceof Element)) {\n return\n }\n if (this.editing && this.data && this.editingCell) {\n const input = this.modalDOM ?\n (this.modalDOM.querySelector(`input.${this.options.classes.input}[type=text]`) as HTMLInputElement) :\n (this.dt.wrapperDOM.querySelector(`input.${this.options.classes.input}[type=text]`) as HTMLInputElement)\n this.saveCell(input.value)\n } else if (!this.editing) {\n const cell = target.closest(\"tbody td\") as HTMLTableCellElement\n if (cell) {\n this.editCell(cell)\n event.preventDefault()\n }\n }\n }\n\n /**\n * keydown listener\n * @param {Object} event Event\n * @return {Void}\n */\n keydown(event: KeyboardEvent) {\n if (this.modalDOM) {\n if (event.key === \"Escape\") { // close button\n if (this.options.cancelModal(this)) {\n this.closeModal()\n }\n } else if (event.key === \"Enter\") { // save button\n // Save\n if (this.editingCell) {\n const input = (this.modalDOM.querySelector(`input.${this.options.classes.input}[type=text]`) as HTMLInputElement)\n this.saveCell(input.value)\n } else {\n const inputs = (Array.from(this.modalDOM.querySelectorAll(`input.${this.options.classes.input}[type=text]`)) as HTMLInputElement[])\n this.saveRow(inputs.map(input => input.value.trim()), this.data.row)\n }\n\n\n }\n } else if (this.editing && this.data) {\n if (event.key === \"Enter\") {\n // Enter key saves\n if (this.editingCell) {\n const input = (this.dt.wrapperDOM.querySelector(`input.${this.options.classes.input}[type=text]`) as HTMLInputElement)\n this.saveCell(input.value)\n } else if (this.editingRow) {\n const inputs = (Array.from(this.dt.wrapperDOM.querySelectorAll(`input.${this.options.classes.input}[type=text]`)) as HTMLInputElement[])\n this.saveRow(inputs.map(input => input.value.trim()), this.data.row)\n }\n } else if (event.key === \"Escape\") {\n // Escape key reverts\n if (this.editingCell) {\n this.saveCell(this.data.content)\n } else if (this.editingRow) {\n this.saveRow(null, this.data.row)\n }\n }\n }\n }\n\n /**\n * Edit cell\n * @param {Object} td The HTMLTableCellElement\n * @return {Void}\n */\n editCell(td: HTMLTableCellElement) {\n const columnIndex = visibleToColumnIndex(td.cellIndex, this.dt.columns.settings)\n if (this.options.excludeColumns.includes(columnIndex)) {\n this.closeMenu()\n return\n }\n const rowIndex = parseInt(td.parentElement.dataset.index, 10)\n const row = this.dt.data.data[rowIndex]\n const cell = row[columnIndex]\n\n this.data = {\n cell,\n rowIndex,\n columnIndex,\n content: cell.text || String(cell.data)\n }\n this.editing = true\n this.editingCell = true\n if (this.options.inline) {\n this.dt.update()\n } else {\n this.editCellModal()\n }\n this.closeMenu()\n }\n\n editCellModal() {\n const cell = this.data.cell\n const columnIndex = this.data.columnIndex\n const label = this.dt.data.headings[columnIndex].text || String(this.dt.data.headings[columnIndex].data)\n const template = [\n `
    `,\n `
    `,\n `

    ${this.options.labels.editCell}

    `,\n ``,\n \"
    \",\n `
    `,\n `
    `,\n `
    `,\n ``,\n ``,\n \"
    \",\n `
    `,\n ``,\n ``,\n \"
    \",\n \"
    \",\n \"
    \",\n \"
    \"\n ].join(\"\")\n const modalDOM = createElement(\"div\", {\n class: this.options.classes.modal,\n html: template\n })\n this.modalDOM = modalDOM\n this.openModal()\n const input = (modalDOM.querySelector(`input.${this.options.classes.input}[type=text]`) as HTMLInputElement)\n input.focus()\n input.selectionStart = input.selectionEnd = input.value.length\n // Close / save\n modalDOM.addEventListener(\"click\", (event: Event) => {\n const target = event.target\n if (!(target instanceof Element)) {\n return\n }\n if (target.hasAttribute(\"data-editor-cancel\")) { // cancel button\n event.preventDefault()\n if (this.options.cancelModal(this)) {\n this.closeModal()\n }\n } else if (target.hasAttribute(\"data-editor-save\")) { // save button\n event.preventDefault()\n // Save\n this.saveCell(input.value)\n }\n })\n }\n\n /**\n * Save edited cell\n * @param {Object} row The HTMLTableCellElement\n * @param {String} value Cell content\n * @return {Void}\n */\n saveCell(value: string) {\n const oldData = this.data.content\n // Get the type of that column\n const type = this.dt.columns.settings[this.data.columnIndex].type || this.dt.options.type\n const stringValue = value.trim()\n let cell\n if (type === \"number\") {\n cell = {data: parseFloat(stringValue)}\n } else if (type === \"boolean\") {\n if ([\"\", \"false\", \"0\"].includes(stringValue)) {\n cell = {data: false,\n text: \"false\",\n order: 0}\n } else {\n cell = {data: true,\n text: \"true\",\n order: 1}\n }\n } else if (type === \"html\") {\n cell = {data: [\n {nodeName: \"#text\",\n data: value}\n ],\n text: value,\n order: value}\n } else if (type === \"string\") {\n cell = {data: value}\n } else if (type === \"date\") {\n const format = this.dt.columns.settings[this.data.columnIndex].format || this.dt.options.format\n cell = {data: value,\n order: parseDate(String(value), format)}\n } else {\n cell = {data: value}\n }\n // Set the cell content\n this.dt.data.data[this.data.rowIndex][this.data.columnIndex] = cell\n this.closeModal()\n const rowIndex = this.data.rowIndex\n const columnIndex = this.data.columnIndex\n this.data = {}\n this.dt.update(true)\n this.editing = false\n this.editingCell = false\n this.dt.emit(\"editable.save.cell\", value, oldData, rowIndex, columnIndex)\n }\n\n /**\n * Edit row\n * @param {Object} row The HTMLTableRowElement\n * @return {Void}\n */\n editRow(tr: HTMLElement) {\n if (!tr || tr.nodeName !== \"TR\" || this.editing) return\n const rowIndex = parseInt(tr.dataset.index, 10)\n const row = this.dt.data.data[rowIndex]\n this.data = {\n row,\n rowIndex\n }\n this.editing = true\n this.editingRow = true\n if (this.options.inline) {\n this.dt.update()\n } else {\n this.editRowModal()\n }\n this.closeMenu()\n }\n\n editRowModal() {\n const row = this.data.row\n\n const template = [\n `
    `,\n `
    `,\n `

    ${this.options.labels.editRow}

    `,\n ``,\n \"
    \",\n `
    `,\n `
    `,\n `
    `,\n ``,\n ``,\n \"
    \",\n \"
    \",\n \"
    \",\n \"
    \"\n ].join(\"\")\n const modalDOM = createElement(\"div\", {\n class: this.options.classes.modal,\n html: template\n })\n const inner = modalDOM.firstElementChild\n if (!inner) {\n return\n }\n const form = inner.lastElementChild?.firstElementChild\n if (!form) {\n return\n }\n // Add the inputs for each cell\n row.forEach((cell: cellType, i: number) => {\n const columnSettings = this.dt.columns.settings[i]\n if ((!columnSettings.hidden || (columnSettings.hidden && this.options.hiddenColumns)) && !this.options.excludeColumns.includes(i)) {\n const label = this.dt.data.headings[i].text || String(this.dt.data.headings[i].data)\n form.insertBefore(createElement(\"div\", {\n class: this.options.classes.row,\n html: [\n `
    `,\n ``,\n ``,\n \"
    \"\n ].join(\"\")\n }), form.lastElementChild)\n }\n })\n this.modalDOM = modalDOM\n this.openModal()\n // Grab the inputs\n const inputs = Array.from(form.querySelectorAll(`input.${this.options.classes.input}[type=text]`)) as HTMLInputElement[]\n // Remove save button\n inputs.pop()\n\n // Close / save\n modalDOM.addEventListener(\"click\", (event: MouseEvent) => {\n const target = event.target\n if (!(target instanceof Element)) {\n return\n }\n if (target.hasAttribute(\"data-editor-cancel\")) { // cancel button\n if (this.options.cancelModal(this)) {\n this.closeModal()\n }\n } else if (target.hasAttribute(\"data-editor-save\")) { // save button\n // Save\n this.saveRow(inputs.map((input: HTMLInputElement) => input.value.trim()), this.data.row)\n }\n })\n }\n\n /**\n * Save edited row\n * @param {Object} row The HTMLTableRowElement\n * @param {Array} data Cell data\n * @return {Void}\n */\n saveRow(data: string[], row: cellType[]) {\n // Store the old data for the emitter\n const oldData = row.map((cell: cellType) => cell.text ?? String(cell.data))\n if (data) {\n this.dt.data.data[this.data.rowIndex] = this.dt.data.data[this.data.rowIndex].map((oldCell, colIndex) => {\n const columnSetting = this.dt.columns.settings[colIndex]\n if (columnSetting.hidden || this.options.excludeColumns.includes(colIndex)) {\n return oldCell\n }\n const type = this.dt.columns.settings[colIndex].type || this.dt.options.type\n const value = data[columnToVisibleIndex(colIndex, this.dt.columns.settings)]\n const stringValue = value.trim()\n let cell\n if (type === \"number\") {\n cell = {data: parseFloat(stringValue)}\n } else if (type === \"boolean\") {\n if ([\"\", \"false\", \"0\"].includes(stringValue)) {\n cell = {data: false,\n text: \"false\",\n order: 0}\n } else {\n cell = {data: true,\n text: \"true\",\n order: 1}\n }\n } else if (type === \"html\") {\n cell = {data: [\n {nodeName: \"#text\",\n data: value}\n ],\n text: value,\n order: value}\n } else if (type === \"string\") {\n cell = {data: value}\n } else if (type === \"date\") {\n const format = this.dt.columns.settings[colIndex].format || this.dt.options.format\n cell = {data: value,\n order: parseDate(String(value), format)}\n } else {\n cell = {data: value}\n }\n return cell\n })\n }\n\n const updatedRow = this.dt.data.data[this.data.rowIndex]\n const newData = updatedRow.map(cell => cell.text ?? String(cell.data))\n\n this.data = {}\n this.dt.update(true)\n this.closeModal()\n this.editing = false\n this.dt.emit(\"editable.save.row\", newData, oldData, row)\n }\n\n /**\n * Open the row editor modal\n * @return {Void}\n */\n openModal() {\n if (this.modalDOM) {\n document.body.appendChild(this.modalDOM)\n }\n }\n\n /**\n * Close the row editor modal\n * @return {Void}\n */\n closeModal() {\n if (this.editing && this.modalDOM) {\n document.body.removeChild(this.modalDOM)\n this.modalDOM = this.editing = this.editingRow = this.editingCell = false\n }\n }\n\n /**\n * Remove a row\n * @param {Object} tr The HTMLTableRowElement\n * @return {Void}\n */\n removeRow(tr: HTMLElement) {\n if (!tr || tr.nodeName !== \"TR\" || this.editing) return\n const index = parseInt(tr.dataset.index, 10)\n this.dt.rows.remove(index)\n this.closeMenu()\n }\n\n /**\n * Update context menu position\n * @return {Void}\n */\n updateMenu() {\n const scrollX = window.scrollX || window.pageXOffset\n const scrollY = window.scrollY || window.pageYOffset\n this.rect = this.wrapperDOM.getBoundingClientRect()\n this.limits = {\n x: window.innerWidth + scrollX - this.rect.width,\n y: window.innerHeight + scrollY - this.rect.height\n }\n }\n\n /**\n * Dismiss the context menu\n * @param {Object} event Event\n * @return {Void}\n */\n dismissMenu(event: Event) {\n const target = event.target\n if (!(target instanceof Element) || this.wrapperDOM.contains(target)) {\n return\n }\n let valid = true\n if (this.editing) {\n valid = !(target.matches(`input.${this.options.classes.input}[type=text]`))\n }\n if (valid) {\n this.closeMenu()\n }\n }\n\n /**\n * Open the context menu\n * @return {Void}\n */\n openMenu() {\n if (this.editing && this.data && this.editingCell) {\n const input = this.modalDOM ?\n (this.modalDOM.querySelector(`input.${this.options.classes.input}[type=text]`) as HTMLInputElement) :\n (this.dt.wrapperDOM.querySelector(`input.${this.options.classes.input}[type=text]`) as HTMLInputElement)\n\n this.saveCell(input.value)\n }\n document.body.appendChild(this.containerDOM)\n this.menuOpen = true\n this.dt.emit(\"editable.context.open\")\n }\n\n /**\n * Close the context menu\n * @return {Void}\n */\n closeMenu() {\n if (this.menuOpen) {\n this.menuOpen = false\n document.body.removeChild(this.containerDOM)\n this.dt.emit(\"editable.context.close\")\n }\n }\n\n /**\n * Destroy the instance\n * @return {Void}\n */\n destroy() {\n this.dt.dom.removeEventListener(this.options.clickEvent, this.events.click)\n this.dt.dom.removeEventListener(\"contextmenu\", this.events.context)\n document.removeEventListener(\"click\", this.events.dismissMenu)\n document.removeEventListener(\"keydown\", this.events.keydown)\n window.removeEventListener(\"resize\", this.events.reset)\n window.removeEventListener(\"scroll\", this.events.reset)\n if (document.body.contains(this.containerDOM)) {\n document.body.removeChild(this.containerDOM)\n }\n if (this.options.inline) {\n this.dt.options.rowRender = this.originalRowRender\n }\n this.initialized = false\n }\n\n rowRender(row, tr, index) {\n if (!this.data || this.data.rowIndex !== index) {\n return tr\n }\n\n if (this.editingCell) {\n // cell editing\n const cell = tr.childNodes[columnToVisibleIndex(this.data.columnIndex, this.dt.columns.settings)]\n cell.childNodes = [\n {\n nodeName: \"INPUT\",\n attributes: {\n type: \"text\",\n value: this.data.content,\n class: this.options.classes.input\n }\n }\n ]\n } else {\n // row editing\n\n // Add the inputs for each cell\n tr.childNodes.forEach((cell: elementNodeType, i: number) => {\n const index = visibleToColumnIndex(i, this.dt.columns.settings)\n const dataCell = row[index]\n if (!this.options.excludeColumns.includes(index)) {\n const cell = tr.childNodes[i]\n cell.childNodes = [\n {\n nodeName: \"INPUT\",\n attributes: {\n type: \"text\",\n value: escapeText(dataCell.text || String(dataCell.data) || \"\"),\n class: this.options.classes.input\n }\n }\n ]\n }\n })\n\n }\n return tr\n\n }\n}\n\nexport const makeEditable = function(dataTable: DataTable, options = {}) {\n const editor = new Editor(dataTable, options)\n if (dataTable.initialized) {\n editor.init()\n } else {\n dataTable.on(\"datatable.init\", () => editor.init())\n }\n\n return editor\n}\n","/**\n* Default config\n* @type {Object}\n*/\n//import {ColumnFilter} from \"./column_filter\"\n\nexport const defaultConfig = {\n classes: {\n button: \"datatable-column-filter-button\",\n menu: \"datatable-column-filter-menu\",\n container: \"datatable-column-filter-container\",\n wrapper: \"datatable-column-filter-wrapper\"\n },\n labels: {\n button: \"Filter columns within the table\" // The filter button title\n },\n hiddenColumns: []\n}\n","import {DataTable} from \"../datatable\"\nimport {createElement} from \"../helpers\"\n\nimport {\n defaultConfig\n} from \"./config\"\n\nimport {ColumnFilterOptions} from \"./types\"\n\nclass ColumnFilter {\n\n addedButtonDOM: boolean\n\n menuOpen: boolean\n\n buttonDOM: HTMLElement\n\n dt: DataTable\n\n events: { [key: string]: () => void}\n\n initialized: boolean\n\n options: ColumnFilterOptions\n\n menuDOM: HTMLElement\n\n containerDOM: HTMLElement\n\n wrapperDOM: HTMLElement\n\n limits: {x: number, y: number}\n\n rect: {width: number, height: number}\n\n event: Event\n\n constructor(dataTable: DataTable, options = {}) {\n this.dt = dataTable\n this.options = {\n ...defaultConfig,\n ...options\n }\n }\n\n init() {\n\n if (this.initialized) {\n return\n }\n\n let buttonDOM : (HTMLElement | null) = this.dt.wrapperDOM.querySelector(`.${this.options.classes.button}`)\n if (!buttonDOM) {\n buttonDOM = createElement(\n \"button\",\n {\n class: this.options.classes.button,\n html: \"▦\"\n }\n )\n // filter button not part of template (could be default template. We add it to search.)\n const searchWrapper = this.dt.wrapperDOM.querySelector(`.${this.dt.options.classes.search}`)\n if (searchWrapper) {\n searchWrapper.appendChild(buttonDOM)\n } else {\n this.dt.wrapperDOM.appendChild(buttonDOM)\n }\n this.addedButtonDOM = true\n }\n this.buttonDOM = buttonDOM\n\n\n this.containerDOM = createElement(\"div\", {\n id: this.options.classes.container\n })\n this.wrapperDOM = createElement(\"div\", {\n class: this.options.classes.wrapper\n })\n this.menuDOM = createElement(\"ul\", {\n class: this.options.classes.menu,\n html: this.dt.data.headings.map(\n (heading, index) => {\n const settings = this.dt.columns.settings[index]\n if (this.options.hiddenColumns.includes(index)) {\n return \"\"\n }\n return `
  • \n \n \n
  • `\n }\n ).join(\"\")\n })\n this.wrapperDOM.appendChild(this.menuDOM)\n this.containerDOM.appendChild(this.wrapperDOM)\n this._measureSpace()\n\n this._bind()\n\n this.initialized = true\n\n }\n\n dismiss() {\n if (this.addedButtonDOM && this.buttonDOM.parentElement) {\n this.buttonDOM.parentElement.removeChild(this.buttonDOM)\n }\n document.removeEventListener(\"click\", this.events.click)\n }\n\n _bind() {\n this.events = {\n click: this._click.bind(this)\n }\n document.addEventListener(\"click\", this.events.click)\n }\n\n _openMenu() {\n document.body.appendChild(this.containerDOM)\n this._measureSpace()\n this.menuOpen = true\n this.dt.emit(\"columnFilter.menu.open\")\n }\n\n _closeMenu() {\n if (this.menuOpen) {\n this.menuOpen = false\n document.body.removeChild(this.containerDOM)\n this.dt.emit(\"columnFilter.menu.close\")\n }\n }\n\n _measureSpace() {\n const scrollX = window.scrollX || window.pageXOffset\n const scrollY = window.scrollY || window.pageYOffset\n this.rect = this.wrapperDOM.getBoundingClientRect()\n this.limits = {\n x: window.innerWidth + scrollX - this.rect.width,\n y: window.innerHeight + scrollY - this.rect.height\n }\n }\n\n _click(event: MouseEvent) {\n const target = event.target\n if (!(target instanceof Element)) {\n return\n }\n this.event = event\n\n if (this.buttonDOM.contains(target)) {\n event.preventDefault()\n if (this.menuOpen) {\n this._closeMenu()\n return\n }\n this._openMenu()\n // get the mouse position\n let x = event.pageX\n let y = event.pageY\n // check if we're near the right edge of window\n if (x > this.limits.x) {\n x -= this.rect.width\n }\n // check if we're near the bottom edge of window\n if (y > this.limits.y) {\n y -= this.rect.height\n }\n this.wrapperDOM.style.top = `${y}px`\n this.wrapperDOM.style.left = `${x}px`\n } else if (this.menuDOM.contains(target)) {\n const li = target.closest(`.${this.options.classes.menu} > li`) as HTMLElement\n if (!li) {\n return\n }\n const checkbox = li.querySelector(\"input[type=checkbox]\") as HTMLInputElement\n if (!checkbox.contains(target)) {\n checkbox.checked = !checkbox.checked\n }\n const column = Number(li.dataset.column)\n if (checkbox.checked) {\n this.dt.columns.show([column])\n } else {\n this.dt.columns.hide([column])\n }\n } else if (this.menuOpen) {\n this._closeMenu()\n }\n }\n\n}\n\n\nexport const addColumnFilter = function(dataTable: DataTable, options = {}) {\n const columnFilter = new ColumnFilter(dataTable, options)\n if (dataTable.initialized) {\n columnFilter.init()\n } else {\n dataTable.on(\"datatable.init\", () => columnFilter.init())\n }\n\n return columnFilter\n}\n"],"names":["stringToObj","this","nodeToObj","defaultConfig","DiffDOM"],"mappings":"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,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC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AC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,QAAQ,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAE,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IA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"} \ No newline at end of file +{"version":3,"file":"module.js","sources":["../../../src/helpers.ts","../../../node_modules/diff-dom/dist/module.js","../../../src/virtual_dom.ts","../../../node_modules/dayjs/dayjs.min.js","../../../node_modules/dayjs/plugin/customParseFormat.js","../../../src/date.ts","../../../src/read_data.ts","../../../src/rows.ts","../../../src/column_settings.ts","../../../src/columns.ts","../../../src/templates.ts","../../../src/config.ts","../../../src/virtual_pager_dom.ts","../../../src/datatable.ts","../../../src/convert/csv.ts","../../../src/convert/json.ts","../../../src/export/csv.ts","../../../src/export/json.ts","../../../src/export/sql.ts","../../../src/export/txt.ts","../../../src/editing/config.ts","../../../src/editing/helpers.ts","../../../src/editing/editor.ts","../../../src/column_filter/config.ts","../../../src/column_filter/column_filter.ts"],"sourcesContent":["import {elementNodeType, columnSettingsType, textNodeType} from \"./types\"\n\n/**\n * Check is item is object\n */\nexport const isObject = (val: (string | number | boolean | object | null | undefined )) => Object.prototype.toString.call(val) === \"[object Object]\"\n\n/**\n * Check for valid JSON string\n */\nexport const isJson = (str: string) => {\n let t = !1\n try {\n t = JSON.parse(str)\n } catch (e) {\n return !1\n }\n return !(null === t || (!Array.isArray(t) && !isObject(t))) && t\n}\n\n/**\n * Create DOM element node\n */\nexport const createElement = (nodeName: string, attrs?: { [key: string]: string}) => {\n const dom = document.createElement(nodeName)\n if (attrs && \"object\" == typeof attrs) {\n for (const attr in attrs) {\n if (\"html\" === attr) {\n dom.innerHTML = attrs[attr]\n } else {\n dom.setAttribute(attr, attrs[attr])\n }\n }\n }\n return dom\n}\n\nexport const objToText = (obj: (elementNodeType| textNodeType)) => {\n if ([\"#text\", \"#comment\"].includes(obj.nodeName)) {\n return (obj as textNodeType).data\n }\n if (obj.childNodes) {\n return obj.childNodes.map((childNode: (elementNodeType | textNodeType)) => objToText(childNode)).join(\"\")\n }\n return \"\"\n}\n\n\nexport const escapeText = function(text: string) {\n return text\n .replace(/&/g, \"&\")\n .replace(//g, \">\")\n .replace(/\"/g, \""\")\n}\n\n\nexport const visibleToColumnIndex = function(visibleIndex: number, columns: columnSettingsType[]) {\n let counter = 0\n let columnIndex = 0\n while (counter < (visibleIndex+1)) {\n const columnSettings = columns[columnIndex]\n if (!columnSettings.hidden) {\n counter += 1\n }\n columnIndex += 1\n }\n return columnIndex-1\n}\n\nexport const columnToVisibleIndex = function(columnIndex: number, columns: columnSettingsType[]) {\n let visibleIndex = columnIndex\n let counter = 0\n while (counter < columnIndex) {\n const columnSettings = columns[counter]\n if (columnSettings.hidden) {\n visibleIndex -= 1\n }\n counter++\n }\n return visibleIndex\n}\n","function e(t,n,o){var s;return\"#text\"===t.nodeName?s=o.document.createTextNode(t.data):\"#comment\"===t.nodeName?s=o.document.createComment(t.data):(n?s=o.document.createElementNS(\"http://www.w3.org/2000/svg\",t.nodeName):\"svg\"===t.nodeName.toLowerCase()?(s=o.document.createElementNS(\"http://www.w3.org/2000/svg\",\"svg\"),n=!0):s=o.document.createElement(t.nodeName),t.attributes&&Object.entries(t.attributes).forEach((function(e){var t=e[0],n=e[1];return s.setAttribute(t,n)})),t.childNodes&&t.childNodes.forEach((function(t){return s.appendChild(e(t,n,o))})),o.valueDiffing&&(t.value&&(s instanceof HTMLButtonElement||s instanceof HTMLDataElement||s instanceof HTMLInputElement||s instanceof HTMLLIElement||s instanceof HTMLMeterElement||s instanceof HTMLOptionElement||s instanceof HTMLProgressElement||s instanceof HTMLParamElement)&&(s.value=t.value),t.checked&&s instanceof HTMLInputElement&&(s.checked=t.checked),t.selected&&s instanceof HTMLOptionElement&&(s.selected=t.selected))),s}var t=function(e,t){for(t=t.slice();t.length>0;){var n=t.splice(0,1)[0];e=e.childNodes[n]}return e};function n(n,o,s){var i,a,c,l=o[s._const.action],r=o[s._const.route];[s._const.addElement,s._const.addTextElement].includes(l)||(i=t(n,r));var u={diff:o,node:i};if(s.preDiffApply(u))return!0;switch(l){case s._const.addAttribute:if(!(i&&i instanceof Element))return!1;i.setAttribute(o[s._const.name],o[s._const.value]);break;case s._const.modifyAttribute:if(!(i&&i instanceof Element))return!1;i.setAttribute(o[s._const.name],o[s._const.newValue]),i instanceof HTMLInputElement&&\"value\"===o[s._const.name]&&(i.value=o[s._const.newValue]);break;case s._const.removeAttribute:if(!(i&&i instanceof Element))return!1;i.removeAttribute(o[s._const.name]);break;case s._const.modifyTextElement:if(!(i&&i instanceof Text))return!1;s.textDiff(i,i.data,o[s._const.oldValue],o[s._const.newValue]);break;case s._const.modifyValue:if(!i||void 0===i.value)return!1;i.value=o[s._const.newValue];break;case s._const.modifyComment:if(!(i&&i instanceof Comment))return!1;s.textDiff(i,i.data,o[s._const.oldValue],o[s._const.newValue]);break;case s._const.modifyChecked:if(!i||void 0===i.checked)return!1;i.checked=o[s._const.newValue];break;case s._const.modifySelected:if(!i||void 0===i.selected)return!1;i.selected=o[s._const.newValue];break;case s._const.replaceElement:i.parentNode.replaceChild(e(o[s._const.newValue],\"svg\"===o[s._const.newValue].nodeName.toLowerCase(),s),i);break;case s._const.relocateGroup:Array.apply(void 0,new Array(o[s._const.groupLength])).map((function(){return i.removeChild(i.childNodes[o[s._const.from]])})).forEach((function(e,t){0===t&&(c=i.childNodes[o[s._const.to]]),i.insertBefore(e,c||null)}));break;case s._const.removeElement:i.parentNode.removeChild(i);break;case s._const.addElement:var d=(h=r.slice()).splice(h.length-1,1)[0];if(!((i=t(n,h))instanceof Element))return!1;i.insertBefore(e(o[s._const.element],\"http://www.w3.org/2000/svg\"===i.namespaceURI,s),i.childNodes[d]||null);break;case s._const.removeTextElement:if(!i||3!==i.nodeType)return!1;i.parentNode.removeChild(i);break;case s._const.addTextElement:var h;d=(h=r.slice()).splice(h.length-1,1)[0];if(a=s.document.createTextNode(o[s._const.value]),!(i=t(n,h)).childNodes)return!1;i.insertBefore(a,i.childNodes[d]||null);break;default:console.log(\"unknown action\")}return s.postDiffApply({diff:u.diff,node:u.node,newNode:a}),!0}function o(e,t,n){var o=e[t];e[t]=e[n],e[n]=o}function s(e,t,s){(t=t.slice()).reverse(),t.forEach((function(t){!function(e,t,s){switch(t[s._const.action]){case s._const.addAttribute:t[s._const.action]=s._const.removeAttribute,n(e,t,s);break;case s._const.modifyAttribute:o(t,s._const.oldValue,s._const.newValue),n(e,t,s);break;case s._const.removeAttribute:t[s._const.action]=s._const.addAttribute,n(e,t,s);break;case s._const.modifyTextElement:case s._const.modifyValue:case s._const.modifyComment:case s._const.modifyChecked:case s._const.modifySelected:case s._const.replaceElement:o(t,s._const.oldValue,s._const.newValue),n(e,t,s);break;case s._const.relocateGroup:o(t,s._const.from,s._const.to),n(e,t,s);break;case s._const.removeElement:t[s._const.action]=s._const.addElement,n(e,t,s);break;case s._const.addElement:t[s._const.action]=s._const.removeElement,n(e,t,s);break;case s._const.removeTextElement:t[s._const.action]=s._const.addTextElement,n(e,t,s);break;case s._const.addTextElement:t[s._const.action]=s._const.removeTextElement,n(e,t,s);break;default:console.log(\"unknown action\")}}(e,t,s)}))}var i=function(e){var t=[];return t.push(e.nodeName),\"#text\"!==e.nodeName&&\"#comment\"!==e.nodeName&&e.attributes&&(e.attributes.class&&t.push(\"\".concat(e.nodeName,\".\").concat(e.attributes.class.replace(/ /g,\".\"))),e.attributes.id&&t.push(\"\".concat(e.nodeName,\"#\").concat(e.attributes.id))),t},a=function(e){var t={},n={};return e.forEach((function(e){i(e).forEach((function(e){var o=e in t;o||e in n?o&&(delete t[e],n[e]=!0):t[e]=!0}))})),t},c=function(e,t){var n=a(e),o=a(t),s={};return Object.keys(n).forEach((function(e){o[e]&&(s[e]=!0)})),s},l=function(e){return delete e.outerDone,delete e.innerDone,delete e.valueDone,!e.childNodes||e.childNodes.every(l)},r=function(e){if(Object.prototype.hasOwnProperty.call(e,\"data\"))return{nodeName:\"#text\"===e.nodeName?\"#text\":\"#comment\",data:e.data};var t={nodeName:e.nodeName};return Object.prototype.hasOwnProperty.call(e,\"attributes\")&&(t.attributes=e.attributes),Object.prototype.hasOwnProperty.call(e,\"checked\")&&(t.checked=e.checked),Object.prototype.hasOwnProperty.call(e,\"value\")&&(t.value=e.value),Object.prototype.hasOwnProperty.call(e,\"selected\")&&(t.selected=e.selected),Object.prototype.hasOwnProperty.call(e,\"childNodes\")&&(t.childNodes=e.childNodes.map((function(e){return r(e)}))),t},u=function(e,t){if(![\"nodeName\",\"value\",\"checked\",\"selected\",\"data\"].every((function(n){return e[n]===t[n]})))return!1;if(Object.prototype.hasOwnProperty.call(e,\"data\"))return!0;if(Boolean(e.attributes)!==Boolean(t.attributes))return!1;if(Boolean(e.childNodes)!==Boolean(t.childNodes))return!1;if(e.attributes){var n=Object.keys(e.attributes),o=Object.keys(t.attributes);if(n.length!==o.length)return!1;if(!n.every((function(n){return e.attributes[n]===t.attributes[n]})))return!1}if(e.childNodes){if(e.childNodes.length!==t.childNodes.length)return!1;if(!e.childNodes.every((function(e,n){return u(e,t.childNodes[n])})))return!1}return!0},d=function(e,t,n,o,s){if(void 0===s&&(s=!1),!e||!t)return!1;if(e.nodeName!==t.nodeName)return!1;if([\"#text\",\"#comment\"].includes(e.nodeName))return!!s||e.data===t.data;if(e.nodeName in n)return!0;if(e.attributes&&t.attributes){if(e.attributes.id){if(e.attributes.id!==t.attributes.id)return!1;if(\"\".concat(e.nodeName,\"#\").concat(e.attributes.id)in n)return!0}if(e.attributes.class&&e.attributes.class===t.attributes.class)if(\"\".concat(e.nodeName,\".\").concat(e.attributes.class.replace(/ /g,\".\"))in n)return!0}if(o)return!0;var i=e.childNodes?e.childNodes.slice().reverse():[],a=t.childNodes?t.childNodes.slice().reverse():[];if(i.length!==a.length)return!1;if(s)return i.every((function(e,t){return e.nodeName===a[t].nodeName}));var l=c(i,a);return i.every((function(e,t){return d(e,a[t],l,!0,!0)}))},h=function(e,t){return Array.apply(void 0,new Array(e)).map((function(){return t}))},f=function(e,t){for(var n=e.childNodes?e.childNodes:[],o=t.childNodes?t.childNodes:[],s=h(n.length,!1),a=h(o.length,!1),l=[],r=function(){return arguments[1]},u=!1,f=function(){var e=function(e,t,n,o){var s=0,a=[],l=e.length,r=t.length,u=Array.apply(void 0,new Array(l+1)).map((function(){return[]})),h=c(e,t),f=l===r;f&&e.some((function(e,n){var o=i(e),s=i(t[n]);return o.length!==s.length?(f=!1,!0):(o.some((function(e,t){if(e!==s[t])return f=!1,!0})),!f||void 0)}));for(var p=0;p=s&&(s=u[p+1][_+1],a=[p+1,_+1]))}return 0!==s&&{oldValue:a[0]-s,newValue:a[1]-s,length:s}}(n,o,s,a);e?(l.push(e),Array.apply(void 0,new Array(e.length)).map(r).forEach((function(t){return function(e,t,n,o){e[n.oldValue+o]=!0,t[n.newValue+o]=!0}(s,a,e,t)}))):u=!0};!u;)f();return e.subsets=l,e.subsetsAge=100,l},p=function(){function e(){this.list=[]}return e.prototype.add=function(e){var t;(t=this.list).push.apply(t,e)},e.prototype.forEach=function(e){this.list.forEach((function(t){return e(t)}))},e}(),m=function(){function e(e){void 0===e&&(e={});var t=this;Object.entries(e).forEach((function(e){var n=e[0],o=e[1];return t[n]=o}))}return e.prototype.toString=function(){return JSON.stringify(this)},e.prototype.setValue=function(e,t){return this[e]=t,this},e}();function _(e,t){var n,o,s=e;for(t=t.slice();t.length>0;)o=t.splice(0,1)[0],n=s,s=s.childNodes?s.childNodes[o]:void 0;return{node:s,parentNode:n,nodeIndex:o}}function V(e,t,n){return t.forEach((function(t){!function(e,t,n){var o,s,i,a;if(![n._const.addElement,n._const.addTextElement].includes(t[n._const.action])){var c=_(e,t[n._const.route]);s=c.node,i=c.parentNode,a=c.nodeIndex}var l,r,u=[],d={diff:t,node:s};if(n.preVirtualDiffApply(d))return!0;switch(t[n._const.action]){case n._const.addAttribute:s.attributes||(s.attributes={}),s.attributes[t[n._const.name]]=t[n._const.value],\"checked\"===t[n._const.name]?s.checked=!0:\"selected\"===t[n._const.name]?s.selected=!0:\"INPUT\"===s.nodeName&&\"value\"===t[n._const.name]&&(s.value=t[n._const.value]);break;case n._const.modifyAttribute:s.attributes[t[n._const.name]]=t[n._const.newValue];break;case n._const.removeAttribute:delete s.attributes[t[n._const.name]],0===Object.keys(s.attributes).length&&delete s.attributes,\"checked\"===t[n._const.name]?s.checked=!1:\"selected\"===t[n._const.name]?delete s.selected:\"INPUT\"===s.nodeName&&\"value\"===t[n._const.name]&&delete s.value;break;case n._const.modifyTextElement:s.data=t[n._const.newValue];break;case n._const.modifyValue:s.value=t[n._const.newValue];break;case n._const.modifyComment:s.data=t[n._const.newValue];break;case n._const.modifyChecked:s.checked=t[n._const.newValue];break;case n._const.modifySelected:s.selected=t[n._const.newValue];break;case n._const.replaceElement:l=t[n._const.newValue],i.childNodes[a]=l;break;case n._const.relocateGroup:s.childNodes.splice(t[n._const.from],t[n._const.groupLength]).reverse().forEach((function(e){return s.childNodes.splice(t[n._const.to],0,e)})),s.subsets&&s.subsets.forEach((function(e){if(t[n._const.from]t[n._const.from])e.oldValue-=t[n._const.groupLength],(o=e.oldValue+e.length-t[n._const.to])>0&&(u.push({oldValue:t[n._const.to]+t[n._const.groupLength],newValue:e.newValue+e.length-o,length:o}),e.length-=o);else if(t[n._const.from]>t[n._const.to]&&e.oldValue>t[n._const.to]&&e.oldValue0&&(u.push({oldValue:t[n._const.to]+t[n._const.groupLength],newValue:e.newValue+e.length-o,length:o}),e.length-=o)}else e.oldValue===t[n._const.from]&&(e.oldValue=t[n._const.to])}));break;case n._const.removeElement:i.childNodes.splice(a,1),i.subsets&&i.subsets.forEach((function(e){e.oldValue>a?e.oldValue-=1:e.oldValue===a?e.delete=!0:e.oldValuea&&(e.oldValue+e.length-1===a?e.length--:(u.push({newValue:e.newValue+a-e.oldValue,oldValue:a,length:e.length-a+e.oldValue-1}),e.length=a-e.oldValue))})),s=i;break;case n._const.addElement:var h=(r=t[n._const.route].slice()).splice(r.length-1,1)[0];s=null===(o=_(e,r))||void 0===o?void 0:o.node,l=t[n._const.element],s.childNodes||(s.childNodes=[]),h>=s.childNodes.length?s.childNodes.push(l):s.childNodes.splice(h,0,l),s.subsets&&s.subsets.forEach((function(e){if(e.oldValue>=h)e.oldValue+=1;else if(e.oldValueh){var t=e.oldValue+e.length-h;u.push({newValue:e.newValue+e.length-t,oldValue:h+1,length:t}),e.length-=t}}));break;case n._const.removeTextElement:i.childNodes.splice(a,1),\"TEXTAREA\"===i.nodeName&&delete i.value,i.subsets&&i.subsets.forEach((function(e){e.oldValue>a?e.oldValue-=1:e.oldValue===a?e.delete=!0:e.oldValuea&&(e.oldValue+e.length-1===a?e.length--:(u.push({newValue:e.newValue+a-e.oldValue,oldValue:a,length:e.length-a+e.oldValue-1}),e.length=a-e.oldValue))})),s=i;break;case n._const.addTextElement:var f=(r=t[n._const.route].slice()).splice(r.length-1,1)[0];(l={}).nodeName=\"#text\",l.data=t[n._const.value],(s=_(e,r).node).childNodes||(s.childNodes=[]),f>=s.childNodes.length?s.childNodes.push(l):s.childNodes.splice(f,0,l),\"TEXTAREA\"===s.nodeName&&(s.value=t[n._const.newValue]),s.subsets&&s.subsets.forEach((function(e){if(e.oldValue>=f&&(e.oldValue+=1),e.oldValuef){var t=e.oldValue+e.length-f;u.push({newValue:e.newValue+e.length-t,oldValue:f+1,length:t}),e.length-=t}}));break;default:console.log(\"unknown action\")}s.subsets&&(s.subsets=s.subsets.filter((function(e){return!e.delete&&e.oldValue!==e.newValue})),u.length&&(s.subsets=s.subsets.concat(u))),n.postVirtualDiffApply({node:d.node,diff:d.diff,newNode:l})}(e,t,n)})),!0}function g(e,t){void 0===t&&(t={});var n={nodeName:e.nodeName};if(e instanceof Text||e instanceof Comment)n.data=e.data;else{if(e.attributes&&e.attributes.length>0)n.attributes={},Array.prototype.slice.call(e.attributes).forEach((function(e){return n.attributes[e.name]=e.value}));if(e instanceof HTMLTextAreaElement)n.value=e.value;else if(e.childNodes&&e.childNodes.length>0){n.childNodes=[],Array.prototype.slice.call(e.childNodes).forEach((function(e){return n.childNodes.push(g(e,t))}))}t.valueDiffing&&(e instanceof HTMLInputElement&&[\"radio\",\"checkbox\"].includes(e.type.toLowerCase())&&void 0!==e.checked?n.checked=e.checked:(e instanceof HTMLButtonElement||e instanceof HTMLDataElement||e instanceof HTMLInputElement||e instanceof HTMLLIElement||e instanceof HTMLMeterElement||e instanceof HTMLOptionElement||e instanceof HTMLProgressElement||e instanceof HTMLParamElement)&&(n.value=e.value),e instanceof HTMLOptionElement&&(n.selected=e.selected))}return n}var v=/<\\s*\\/*[a-zA-Z:_][a-zA-Z0-9:_\\-.]*\\s*(?:\"[^\"]*\"['\"]*|'[^']*'['\"]*|[^'\"/>])*\\/*\\s*>|/g,N=Object.create?Object.create(null):{},b=/\\s([^'\"/\\s><]+?)[\\s/>]|([^\\s=]+)=\\s?(\".*?\"|'.*?')/g;function y(e){return e.replace(/</g,\"<\").replace(/>/g,\">\").replace(/&/g,\"&\")}var w={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,menuItem:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},E=function(e){var t={nodeName:\"\",attributes:{}},n=!1,o=e.match(/<\\/?([^\\s]+?)[/\\s>]/);if(o&&(t.nodeName=o[1].toUpperCase(),(w[o[1]]||\"/\"===e.charAt(e.length-2))&&(n=!0),t.nodeName.startsWith(\"!--\"))){var s=e.indexOf(\"--\\x3e\");return{type:\"comment\",node:{nodeName:\"#comment\",data:-1!==s?e.slice(4,s):\"\"},voidElement:n}}for(var i=new RegExp(b),a=null,c=!1;!c;)if(null===(a=i.exec(e)))c=!0;else if(a[0].trim())if(a[1]){var l=a[1].trim(),r=[l,\"\"];l.indexOf(\"=\")>-1&&(r=l.split(\"=\")),t.attributes[r[0]]=r[1],i.lastIndex--}else a[2]&&(t.attributes[a[2]]=a[3].trim().substring(1,a[3].length-1));return{type:\"tag\",node:t,voidElement:n}},k=function(e,t){void 0===t&&(t={components:N});var n,o=[],s=-1,i=[],a=!1;if(0!==e.indexOf(\"<\")){var c=e.indexOf(\"<\");o.push({nodeName:\"#text\",data:-1===c?e:e.substring(0,c)})}return e.replace(v,(function(c,l){if(a){if(c!==\"\"))return\"\";a=!1}var r=\"/\"!==c.charAt(1),u=c.startsWith(\"\\x3c!--\"),d=l+c.length,h=e.charAt(d);if(u){var f=E(c).node;if(s<0)return o.push(f),\"\";var p=i[s];return p&&f.nodeName&&(p.node.childNodes||(p.node.childNodes=[]),p.node.childNodes.push(f)),\"\"}if(r){n=E(c),s++,\"tag\"===n.type&&t.components[n.node.nodeName]&&(n.type=\"component\",a=!0),n.voidElement||a||!h||\"<\"===h||(n.node.childNodes||(n.node.childNodes=[]),n.node.childNodes.push({nodeName:\"#text\",data:y(e.slice(d,e.indexOf(\"<\",d)))})),0===s&&n.node.nodeName&&o.push(n.node);var m=i[s-1];m&&n.node.nodeName&&(m.node.childNodes||(m.node.childNodes=[]),m.node.childNodes.push(n.node)),i[s]=n}if((!r||n.voidElement)&&(s>-1&&(n.voidElement||n.node.nodeName===c.slice(2,-1).toUpperCase())&&--s>-1&&(n=i[s]),!a&&\"<\"!==h&&h)){var _=-1===s?o:i[s].node.childNodes||[],V=e.indexOf(\"<\",d),g=y(e.slice(d,-1===V?void 0:V));_.push({nodeName:\"#text\",data:g})}return\"\"})),o[0]},x=function(){function e(e,t,n){this.options=n,this.t1=\"undefined\"!=typeof Element&&e instanceof Element?g(e,this.options):\"string\"==typeof e?k(e,this.options):JSON.parse(JSON.stringify(e)),this.t2=\"undefined\"!=typeof Element&&t instanceof Element?g(t,this.options):\"string\"==typeof t?k(t,this.options):JSON.parse(JSON.stringify(t)),this.diffcount=0,this.foundAll=!1,this.debug&&(this.t1Orig=\"undefined\"!=typeof Element&&e instanceof Element?g(e,this.options):\"string\"==typeof e?k(e,this.options):JSON.parse(JSON.stringify(e)),this.t2Orig=\"undefined\"!=typeof Element&&t instanceof Element?g(t,this.options):\"string\"==typeof t?k(t,this.options):JSON.parse(JSON.stringify(t))),this.tracker=new p}return e.prototype.init=function(){return this.findDiffs(this.t1,this.t2)},e.prototype.findDiffs=function(e,t){var n;do{if(this.options.debug&&(this.diffcount+=1,this.diffcount>this.options.diffcap))throw new Error(\"surpassed diffcap:\".concat(JSON.stringify(this.t1Orig),\" -> \").concat(JSON.stringify(this.t2Orig)));0===(n=this.findNextDiff(e,t,[])).length&&(u(e,t)||(this.foundAll?console.error(\"Could not find remaining diffs!\"):(this.foundAll=!0,l(e),n=this.findNextDiff(e,t,[])))),n.length>0&&(this.foundAll=!1,this.tracker.add(n),V(e,n,this.options))}while(n.length>0);return this.tracker.list},e.prototype.findNextDiff=function(e,t,n){var o,s;if(this.options.maxDepth&&n.length>this.options.maxDepth)return[];if(!e.outerDone){if(o=this.findOuterDiff(e,t,n),this.options.filterOuterDiff&&(s=this.options.filterOuterDiff(e,t,o))&&(o=s),o.length>0)return e.outerDone=!0,o;e.outerDone=!0}if(Object.prototype.hasOwnProperty.call(e,\"data\"))return[];if(!e.innerDone){if((o=this.findInnerDiff(e,t,n)).length>0)return o;e.innerDone=!0}if(this.options.valueDiffing&&!e.valueDone){if((o=this.findValueDiff(e,t,n)).length>0)return e.valueDone=!0,o;e.valueDone=!0}return[]},e.prototype.findOuterDiff=function(e,t,n){var o,s,i,a,c,l,u=[];if(e.nodeName!==t.nodeName){if(!n.length)throw new Error(\"Top level nodes have to be of the same kind.\");return[(new m).setValue(this.options._const.action,this.options._const.replaceElement).setValue(this.options._const.oldValue,r(e)).setValue(this.options._const.newValue,r(t)).setValue(this.options._const.route,n)]}if(n.length&&this.options.diffcap0&&(c=this.attemptGroupRelocation(e,t,h,n,d)).length>0)return c}for(var p=0;ps.length)\"#text\"===_.nodeName?c.push((new m).setValue(this.options._const.action,this.options._const.removeTextElement).setValue(this.options._const.route,n.concat(l)).setValue(this.options._const.value,_.data)):c.push((new m).setValue(this.options._const.action,this.options._const.removeElement).setValue(this.options._const.element,r(_)).setValue(this.options._const.route,n.concat(l))),o.splice(p,1),p-=1,l-=1,a-=1;else if(o.lengthf+1&&\"#text\"===e.childNodes[f+1].nodeName;)if(f+=1,t.childNodes[N].data===e.childNodes[f].data){u=!0;break}if(!u)return v.push((new m).setValue(this.options._const.action,this.options._const.modifyTextElement).setValue(this.options._const.route,o.concat(N)).setValue(this.options._const.oldValue,l.data).setValue(this.options._const.newValue,t.childNodes[N].data)),v}}else v.push((new m).setValue(this.options._const.action,this.options._const.removeTextElement).setValue(this.options._const.route,o.concat(N)).setValue(this.options._const.value,l.data)),_.splice(N,1),g=Math.min(_.length,V.length),N-=1;else v.push((new m).setValue(this.options._const.action,this.options._const.removeElement).setValue(this.options._const.route,o.concat(N)).setValue(this.options._const.element,r(l))),_.splice(N,1),g=Math.min(_.length,V.length),N-=1;else if(!0===V[N])\"#text\"===(l=t.childNodes[N]).nodeName?(v.push((new m).setValue(this.options._const.action,this.options._const.addTextElement).setValue(this.options._const.route,o.concat(N)).setValue(this.options._const.value,l.data)),_.splice(N,0,!0),g=Math.min(_.length,V.length),b-=1):(v.push((new m).setValue(this.options._const.action,this.options._const.addElement).setValue(this.options._const.route,o.concat(N)).setValue(this.options._const.element,r(l))),_.splice(N,0,!0),g=Math.min(_.length,V.length),b-=1);else if(_[N]!==V[N]){if(v.length>0)return v;if(c=n[_[N]],(a=Math.min(c.newValue,e.childNodes.length-c.length))!==c.oldValue){i=!1;for(var y=0;y entering \".concat(e),t)},e.prototype.fout=function(e,t){this.log(\"│<──┘ generated return value\",t),this.padding=this.padding.substring(0,this.padding.length-this.pad.length)},e.prototype.format=function(e,t){return\"\".concat(function(e){for(var t=\"\".concat(e);t.length<4;)t=\"0\".concat(e);return t}(t),\"> \").concat(this.padding).concat(e)},e.prototype.log=function(){for(var e=arguments,t=[],n=0;n\":e instanceof Array?\"[\".concat(e.map(o).join(\",\"),\"]\"):e.toString()||e.valueOf()||\"\":\"\"},s=t.map(o).join(\", \");this.messages.push(this.format(s,this.tick++))},e.prototype.toString=function(){for(var e=\"└───\";e.length<=this.padding.length+this.pad.length;)e+=\"× \";var t=this.padding;return this.padding=\"\",e=this.format(e,this.tick),this.padding=t,\"\".concat(this.messages.join(\"\\n\"),\"\\n\").concat(e)},e}();export{T as DiffDOM,A as TraceLogger,g as nodeToObj,k as stringToObj};\n//# sourceMappingURL=module.js.map\n","import {stringToObj} from \"diff-dom\"\n\nimport {cellType, columnsStateType, columnSettingsType, DataTableOptions, headerCellType, elementNodeType, textNodeType, renderOptions} from \"./types\"\n\n\nexport const headingsToVirtualHeaderRowDOM = (\n headings,\n columnSettings,\n columnsState: columnsStateType,\n {\n classes,\n format,\n hiddenHeader,\n sortable,\n scrollY,\n type\n }: DataTableOptions,\n {\n noColumnWidths,\n unhideHeader\n }: renderOptions\n) => ({\n nodeName: \"TR\",\n\n childNodes: headings.map(\n (heading: headerCellType, index: number) : elementNodeType | void => {\n const column = columnSettings[index] || ({\n type,\n format,\n sortable: true,\n searchable: true\n } as columnSettingsType)\n if (column.hidden) {\n return\n }\n const attributes : { [key: string]: string} = {}\n if (column.sortable && sortable && (!scrollY.length || unhideHeader)) {\n if (column.filter) {\n attributes[\"data-filterable\"] = \"true\"\n } else {\n attributes[\"data-sortable\"] = \"true\"\n }\n }\n if (column.headerClass) {\n attributes.class = column.headerClass\n }\n if (columnsState.sort && columnsState.sort.column === index) {\n const directionClass = columnsState.sort.dir === \"asc\" ? classes.ascending : classes.descending\n attributes.class = attributes.class ? `${attributes.class} ${directionClass}` : directionClass\n attributes[\"aria-sort\"] = columnsState.sort.dir === \"asc\" ? \"ascending\" : \"descending\"\n } else if (columnsState.filters[index]) {\n attributes.class = attributes.class ? `${attributes.class} ${classes.filterActive}` : classes.filterActive\n }\n let style = \"\"\n if (columnsState.widths[index] && !noColumnWidths) {\n style += `width: ${columnsState.widths[index]}%;`\n }\n if (scrollY.length && !unhideHeader) {\n style += \"padding-bottom: 0;padding-top: 0;border: 0;\"\n }\n\n if (style.length) {\n attributes.style = style\n }\n\n const headerNodes : elementNodeType[] = heading.type === \"html\" ?\n heading.data as elementNodeType[] :\n [\n {\n nodeName: \"#text\",\n data: heading.text ?? String(heading.data)\n }\n ] as textNodeType[]\n return {\n nodeName: \"TH\",\n attributes,\n childNodes:\n ((hiddenHeader || scrollY.length) && !unhideHeader) ?\n [\n {nodeName: \"#text\",\n data: \"\"}\n ] :\n !column.sortable || !sortable ?\n headerNodes :\n [\n {\n nodeName: \"BUTTON\",\n attributes: {\n class: column.filter ? classes.filter : classes.sorter\n },\n childNodes: headerNodes\n }\n ]\n }\n }\n ).filter((column: (elementNodeType | void)) => column)\n})\n\nexport const dataToVirtualDOM = (tableAttributes: { [key: string]: string}, headings: headerCellType[], rows: {row: cellType[], index: number}[], columnSettings: columnSettingsType[], columnsState: columnsStateType, rowCursor: (number | false), {\n classes,\n hiddenHeader,\n header,\n footer,\n format,\n sortable,\n scrollY,\n type,\n rowRender,\n tabIndex\n}: DataTableOptions, {\n noColumnWidths,\n unhideHeader,\n renderHeader\n}: renderOptions) => {\n const table: elementNodeType = {\n nodeName: \"TABLE\",\n attributes: {...tableAttributes},\n childNodes: [\n {\n nodeName: \"TBODY\",\n childNodes: rows.map(\n ({\n row,\n index\n }: {row: cellType[], index: number}) => {\n const tr: elementNodeType = {\n nodeName: \"TR\",\n attributes: {\n \"data-index\": String(index)\n },\n childNodes: row.map(\n (cell: cellType, cIndex: number) => {\n const column = columnSettings[cIndex] || ({\n type,\n format,\n sortable: true,\n searchable: true\n } as columnSettingsType)\n if (column.hidden) {\n return\n }\n const td : elementNodeType = column.type === \"html\" ?\n {\n nodeName: \"TD\",\n childNodes: cell.data\n } as elementNodeType:\n {\n nodeName: \"TD\",\n childNodes: [\n {\n nodeName: \"#text\",\n data: cell.text ?? String(cell.data)\n }\n ]\n } as elementNodeType\n if (!header && !footer && columnsState.widths[cIndex] && !noColumnWidths) {\n td.attributes = {\n style: `width: ${columnsState.widths[cIndex]}%;`\n }\n }\n if (column.cellClass) {\n if (!td.attributes) {\n td.attributes = {}\n }\n td.attributes.class = column.cellClass\n }\n if (column.render) {\n const renderedCell : (string | elementNodeType | void) = column.render(cell.data, td, index, cIndex)\n if (renderedCell) {\n if (typeof renderedCell === \"string\") {\n // Convenience method to make it work similarly to what it did up to version 5.\n const node = stringToObj(`${renderedCell}`)\n\n if (node.childNodes.length !== 1 || ![\"#text\", \"#comment\"].includes(node.childNodes[0].nodeName)) {\n td.childNodes = node.childNodes\n } else {\n (td.childNodes[0] as textNodeType).data = renderedCell\n }\n\n } else {\n return renderedCell\n }\n }\n\n }\n return td\n }\n ).filter((column: (elementNodeType | void)) => column)\n }\n if (index===rowCursor) {\n tr.attributes.class = classes.cursor\n }\n if (rowRender) {\n const renderedRow : (elementNodeType | void) = rowRender(row, tr, index)\n if (renderedRow) {\n if (typeof renderedRow === \"string\") {\n // Convenience method to make it work similarly to what it did up to version 5.\n const node = stringToObj(`${renderedRow}`)\n if (node.childNodes && (node.childNodes.length !== 1 || ![\"#text\", \"#comment\"].includes(node.childNodes[0].nodeName))) {\n tr.childNodes = node.childNodes\n } else {\n (tr.childNodes[0] as textNodeType).data = renderedRow\n }\n\n } else {\n return renderedRow\n }\n }\n }\n return tr\n }\n )\n } as elementNodeType\n ]\n }\n\n table.attributes.class = table.attributes.class ? `${table.attributes.class} ${classes.table}` : classes.table\n\n if (header || footer || renderHeader) {\n const headerRow: elementNodeType = headingsToVirtualHeaderRowDOM(headings, columnSettings, columnsState, {classes,\n hiddenHeader,\n sortable,\n scrollY}, {noColumnWidths,\n unhideHeader})\n\n if (header || renderHeader) {\n const thead: elementNodeType = {\n nodeName: \"THEAD\",\n childNodes: [headerRow]\n }\n if ((scrollY.length || hiddenHeader) && !unhideHeader) {\n thead.attributes = {style: \"height: 0px;\"}\n }\n table.childNodes.unshift(thead)\n }\n if (footer) {\n const footerRow = header ? structuredClone(headerRow) : headerRow\n const tfoot: elementNodeType = {\n nodeName: \"TFOOT\",\n childNodes: [footerRow]\n }\n if ((scrollY.length || hiddenHeader) && !unhideHeader) {\n tfoot.attributes = {style: \"height: 0px;\"}\n }\n table.childNodes.push(tfoot)\n }\n\n }\n\n if (tabIndex !== false) {\n table.attributes.tabindex = String(tabIndex)\n }\n\n return table\n}\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",f=\"month\",h=\"quarter\",c=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},w=function(t,e){if(p(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},O=v;O.l=S,O.i=p,O.w=function(t,e){return w(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=S(t.locale,null,!0),this.parse(t)}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(O.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return O},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=w(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return w(t)68?1900:2e3)};var a=function(e){return function(t){this[e]=+t}},f=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if(\"Z\"===e)return 0;var t=e.match(/([+-]|\\d\\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:\"+\"===t[0]?-n:n}(e)}],h=function(e){var t=o[e];return t&&(t.indexOf?t:t.s.concat(t.f))},u=function(e,t){var n,r=o.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?\"pm\":\"PM\");return n},d={A:[i,function(e){this.afternoon=u(e,!1)}],a:[i,function(e){this.afternoon=u(e,!0)}],S:[/\\d/,function(e){this.milliseconds=100*+e}],SS:[n,function(e){this.milliseconds=10*+e}],SSS:[/\\d{3}/,function(e){this.milliseconds=+e}],s:[r,a(\"seconds\")],ss:[r,a(\"seconds\")],m:[r,a(\"minutes\")],mm:[r,a(\"minutes\")],H:[r,a(\"hours\")],h:[r,a(\"hours\")],HH:[r,a(\"hours\")],hh:[r,a(\"hours\")],D:[r,a(\"day\")],DD:[n,a(\"day\")],Do:[i,function(e){var t=o.ordinal,n=e.match(/\\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\\[|\\]/g,\"\")===e&&(this.day=r)}],M:[r,a(\"month\")],MM:[n,a(\"month\")],MMM:[i,function(e){var t=h(\"months\"),n=(h(\"monthsShort\")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[i,function(e){var t=h(\"months\").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\\d+/,a(\"year\")],YY:[n,function(e){this.year=s(e)}],YYYY:[/\\d{4}/,a(\"year\")],Z:f,ZZ:f};function c(n){var r,i;r=n,i=o&&o.formats;for(var s=(n=r.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),a=s.length,f=0;f-1)return new Date((\"X\"===t?1e3:1)*e);var r=c(t)(e),i=r.year,o=r.month,s=r.day,a=r.hours,f=r.minutes,h=r.seconds,u=r.milliseconds,d=r.zone,l=new Date,m=s||(i||o?1:l.getDate()),M=i||l.getFullYear(),Y=0;i&&!o||(Y=o>0?o-1:l.getMonth());var p=a||0,v=f||0,D=h||0,g=u||0;return d?new Date(Date.UTC(M,Y,m,p,v,D,g+60*d.offset*1e3)):n?new Date(Date.UTC(M,Y,m,p,v,D,g)):new Date(M,Y,m,p,v,D,g)}catch(e){return new Date(\"\")}}(t,a,r),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(a)&&(this.$d=new Date(\"\")),o={}}else if(a instanceof Array)for(var l=a.length,m=1;m<=l;m+=1){s[1]=a[m-1];var M=n.apply(this,s);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===l&&(this.$d=new Date(\"\"))}else i.call(this,e)}}}));","import dayjs from \"dayjs\"\nimport customParseFormat from \"dayjs/plugin/customParseFormat\"\n\ndayjs.extend(customParseFormat)\n\n/**\n * Use dayjs to parse cell contents for sorting\n */\nexport const parseDate = (content: string, format: string) => {\n let date: number | string\n\n // Converting to YYYYMMDD ensures we can accurately sort the column numerically\n\n if (format) {\n switch (format) {\n case \"ISO_8601\":\n // ISO8601 is already lexiographically sorted, so we can just sort it as a string.\n date = content\n break\n case \"RFC_2822\":\n date = dayjs(content.slice(5), \"DD MMM YYYY HH:mm:ss ZZ\").unix()\n break\n case \"MYSQL\":\n date = dayjs(content, \"YYYY-MM-DD hh:mm:ss\").unix()\n break\n case \"UNIX\":\n date = dayjs(content).unix()\n break\n // User defined format using the data-format attribute or columns[n].format option\n default:\n date = dayjs(content, format, true).valueOf()\n break\n }\n }\n return date\n}\n","import {stringToObj, nodeToObj} from \"diff-dom\"\nimport {parseDate} from \"./date\"\nimport {objToText} from \"./helpers\"\nimport {cellType, DataOption, headerCellType, inputCellType, inputHeaderCellType, nodeType, columnSettingsType} from \"./types\"\n\nexport const readDataCell = (cell: inputCellType, columnSettings : columnSettingsType) : cellType => {\n if (cell?.constructor === Object && Object.prototype.hasOwnProperty.call(cell, \"data\") && !Object.keys(cell).find(key => !([\"text\", \"order\", \"data\"].includes(key)))) {\n return (cell as cellType)\n }\n const cellData : cellType = {\n data: cell\n }\n switch (columnSettings.type) {\n case \"string\":\n if (!(typeof cell === \"string\")) {\n cellData.text = String(cellData.data)\n cellData.order = cellData.text\n }\n break\n case \"date\":\n if (columnSettings.format) {\n cellData.order = parseDate(String(cellData.data), columnSettings.format)\n }\n break\n case \"number\":\n cellData.text = String(cellData.data as number)\n cellData.data = parseInt(cellData.data as string, 10)\n break\n case \"html\": {\n const node = Array.isArray(cellData.data) ?\n {nodeName: \"TD\",\n childNodes: (cellData.data as nodeType[])} : // If it is an array, we assume it is an array of nodeType\n stringToObj(`${String(cellData.data)}`)\n cellData.data = node.childNodes || []\n const text = objToText(node)\n cellData.text = text\n cellData.order = text\n break\n }\n case \"boolean\":\n if (typeof cellData.data === \"string\") {\n cellData.data = cellData.data.toLowerCase().trim()\n }\n cellData.data = ![\"false\", false, null, undefined, 0].includes(cellData.data as (string | number | boolean | null | undefined))\n cellData.order = cellData.data ? 1 : 0\n cellData.text = String(cellData.data)\n break\n case \"other\":\n cellData.text = \"\"\n cellData.order = 0\n break\n default:\n cellData.text = JSON.stringify(cellData.data)\n break\n }\n\n return cellData\n}\n\nconst readDOMDataCell = (cell: HTMLElement, columnSettings : columnSettingsType) : cellType => {\n let cellData : cellType\n switch (columnSettings.type) {\n case \"string\":\n cellData = {\n data: cell.innerText\n }\n break\n case \"date\": {\n const data = cell.innerText\n cellData = {\n data,\n order: parseDate(data, columnSettings.format)\n }\n break\n }\n case \"number\":\n cellData = {\n data: parseInt(cell.innerText, 10),\n text: cell.innerText\n }\n break\n case \"boolean\": {\n const data = ![\"false\", \"0\", \"null\", \"undefined\"].includes(cell.innerText.toLowerCase().trim())\n cellData = {\n data,\n order: data ? 1 : 0,\n text: data ? \"1\" : \"0\"\n }\n break\n }\n default: { // \"html\", \"other\"\n const node = nodeToObj(cell, {valueDiffing: false})\n cellData = {\n data: node.childNodes || [],\n text: cell.innerText,\n order: cell.innerText\n }\n break\n }\n }\n\n return cellData\n}\n\n\nexport const readHeaderCell = (cell: inputHeaderCellType) : headerCellType => {\n if (\n cell instanceof Object &&\n cell.constructor === Object &&\n cell.hasOwnProperty(\"data\") &&\n (typeof cell.text === \"string\" || typeof cell.data === \"string\")\n ) {\n return cell\n }\n const cellData : headerCellType = {\n data: cell\n }\n if (typeof cell === \"string\") {\n if (cell.length) {\n const node = stringToObj(`${cell}`)\n if (node.childNodes && (node.childNodes.length !== 1 || node.childNodes[0].nodeName !== \"#text\")) {\n cellData.data = node.childNodes\n cellData.type = \"html\"\n const text = objToText(node)\n cellData.text = text\n }\n }\n\n } else if ([null, undefined].includes(cell)) {\n cellData.text = \"\"\n } else {\n cellData.text = JSON.stringify(cell)\n }\n return cellData\n}\n\nexport const readDOMHeaderCell = (cell: HTMLElement) : headerCellType => {\n const node = nodeToObj(cell, {valueDiffing: false})\n let cellData\n if (node.childNodes && (node.childNodes.length !== 1 || node.childNodes[0].nodeName !== \"#text\")) {\n cellData = {\n data: node.childNodes,\n type: \"html\",\n text: objToText(node)\n }\n } else {\n cellData = {\n data: cell.innerText,\n type: \"string\"\n }\n }\n return cellData\n\n}\n\nexport const readTableData = (dataOption: DataOption, dom: (HTMLTableElement | undefined)=undefined, columnSettings, defaultType, defaultFormat) => {\n\n const data = {\n data: [],\n headings: []\n }\n if (dataOption.headings) {\n data.headings = dataOption.headings.map((heading: inputHeaderCellType) => readHeaderCell(heading))\n } else if (dom?.tHead) {\n data.headings = Array.from(dom.tHead.querySelectorAll(\"th\")).map((th, index) => {\n const heading = readDOMHeaderCell(th)\n if (!columnSettings[index]) {\n columnSettings[index] = {\n type: defaultType,\n format: defaultFormat,\n searchable: true,\n sortable: true\n }\n }\n const settings = columnSettings[index]\n if (th.dataset.sortable?.trim().toLowerCase() === \"false\" || th.dataset.sort?.trim().toLowerCase() === \"false\") {\n settings.sortable = false\n }\n if (th.dataset.searchable?.trim().toLowerCase() === \"false\") {\n settings.searchable = false\n }\n if (th.dataset.hidden?.trim().toLowerCase() === \"true\" || th.getAttribute(\"hidden\")?.trim().toLowerCase() === \"true\") {\n settings.hidden = true\n }\n if ([\"number\", \"string\", \"html\", \"date\", \"boolean\", \"other\"].includes(th.dataset.type)) {\n settings.type = th.dataset.type\n if (settings.type === \"date\" && th.dataset.format) {\n settings.format = th.dataset.format\n }\n }\n return heading\n })\n } else if (dataOption.data?.length) {\n data.headings = dataOption.data[0].map((_cell: inputCellType) => readHeaderCell(\"\"))\n } else if (dom?.tBodies.length) {\n data.headings = Array.from(dom.tBodies[0].rows[0].cells).map((_cell: HTMLElement) => readHeaderCell(\"\"))\n }\n for (let i=0; i row.map((cell: inputCellType, index: number) => readDataCell(cell, columnSettings[index])))\n } else if (dom?.tBodies?.length) {\n data.data = Array.from(dom.tBodies[0].rows).map(\n row => Array.from(row.cells).map(\n (cell, index) => {\n const cellData = cell.dataset.content ?\n readDataCell(cell.dataset.content, columnSettings[index]) :\n readDOMDataCell(cell, columnSettings[index])\n if (cell.dataset.order) {\n cellData.order = isNaN(parseFloat(cell.dataset.order)) ? cell.dataset.order : parseFloat(cell.dataset.order)\n }\n return cellData\n\n }\n )\n )\n }\n\n if (data.data.length && data.data[0].length !== data.headings.length) {\n throw new Error(\n \"Data heading length mismatch.\"\n )\n }\n return data\n}\n","import {readDataCell} from \"./read_data\"\nimport {DataTable} from \"./datatable\"\nimport {cellType, inputCellType} from \"./types\"\n/**\n * Rows API\n */\nexport class Rows {\n cursor: (false | number)\n\n dt: DataTable\n\n constructor(dt: DataTable) {\n this.dt = dt\n\n this.cursor = false\n }\n\n setCursor(index: (false | number) = false) {\n if (index === this.cursor) {\n return\n }\n const oldCursor = this.cursor\n this.cursor = index\n this.dt._renderTable()\n if (index !== false && this.dt.options.scrollY) {\n const cursorDOM = this.dt.dom.querySelector(`tr.${this.dt.options.classes.cursor}`)\n if (cursorDOM) {\n cursorDOM.scrollIntoView({block: \"nearest\"})\n }\n }\n this.dt.emit(\"datatable.cursormove\", this.cursor, oldCursor)\n }\n\n /**\n * Add new row\n */\n add(data: cellType[]) {\n const row = data.map((cell: cellType, index: number) => {\n const columnSettings = this.dt.columns.settings[index]\n return readDataCell(cell, columnSettings)\n })\n this.dt.data.data.push(row)\n\n // We may have added data to an empty table\n if ( this.dt.data.data.length ) {\n this.dt.hasRows = true\n }\n this.dt.update(true)\n }\n\n /**\n * Remove row(s)\n */\n remove(select: number | number[]) {\n if (Array.isArray(select)) {\n this.dt.data.data = this.dt.data.data.filter((_row: cellType[], index: number) => !select.includes(index))\n // We may have emptied the table\n if ( !this.dt.data.data.length ) {\n this.dt.hasRows = false\n }\n this.dt.update(true)\n } else {\n return this.remove([select])\n }\n }\n\n\n /**\n * Find index of row by searching for a value in a column\n */\n findRowIndex(columnIndex: number, value: string | boolean | number) {\n // returns row index of first case-insensitive string match\n // inside the td innerText at specific column index\n return this.dt.data.data.findIndex(\n (row: cellType[]) => (row[columnIndex].text ?? String(row[columnIndex].data)).toLowerCase().includes(String(value).toLowerCase())\n )\n }\n\n /**\n * Find index, row, and column data by searching for a value in a column\n */\n findRow(columnIndex: number, value: string | boolean | number) {\n // get the row index\n const index = this.findRowIndex(columnIndex, value)\n // exit if not found\n if (index < 0) {\n return {\n index: -1,\n row: null,\n cols: []\n }\n }\n // get the row from data\n const row = this.dt.data.data[index]\n // return innerHTML of each td\n const cols = row.map((cell: cellType) => cell.data)\n // return everything\n return {\n index,\n row,\n cols\n }\n }\n\n /**\n * Update a row with new data\n */\n updateRow(select: number, data: inputCellType[]) {\n const row = data.map((cell: inputCellType, index: number) => {\n const columnSettings = this.dt.columns.settings[index]\n return readDataCell(cell, columnSettings)\n })\n this.dt.data.data.splice(select, 1, row)\n this.dt.update(true)\n }\n}\n","import {\n columnsStateType,\n filterStateType,\n columnSettingsType\n} from \"./types\"\n\nexport const readColumnSettings = (columnOptions = [], defaultType, defaultFormat) : [columnSettingsType[], columnsStateType] => {\n\n let columns: (columnSettingsType | undefined)[] = []\n let sort: (false | {column: number, dir: \"asc\" | \"desc\"}) = false\n const filters: (filterStateType | undefined )[] = []\n\n // Check for the columns option\n\n columnOptions.forEach(data => {\n\n // convert single column selection to array\n const columnSelectors = Array.isArray(data.select) ? data.select : [data.select]\n\n columnSelectors.forEach((selector: number) => {\n if (columns[selector]) {\n if (data.type) {\n columns[selector].type = data.type\n }\n } else {\n columns[selector] = {\n type: data.type || defaultType,\n sortable: true,\n searchable: true\n }\n }\n const column = columns[selector]\n\n\n if (data.render) {\n column.render = data.render\n }\n\n if (data.format) {\n column.format = data.format\n } else if (data.type === \"date\") {\n column.format = defaultFormat\n }\n\n if (data.cellClass) {\n column.cellClass = data.cellClass\n }\n\n if (data.headerClass) {\n column.headerClass = data.headerClass\n }\n\n if (data.locale) {\n column.locale = data.locale\n }\n\n if (data.sortable === false) {\n column.sortable = false\n } else {\n if (data.numeric) {\n column.numeric = data.numeric\n }\n if (data.caseFirst) {\n column.caseFirst = data.caseFirst\n }\n }\n\n if (data.searchable === false) {\n column.searchable = false\n } else {\n if (data.sensitivity) {\n column.sensitivity = data.sensitivity\n }\n }\n\n if (column.searchable || column.sortable) {\n if (typeof data.ignorePunctuation !== \"undefined\") {\n column.ignorePunctuation = data.ignorePunctuation\n }\n }\n\n if (data.hidden) {\n column.hidden = true\n }\n\n if (data.filter) {\n column.filter = data.filter\n }\n\n if (data.sortSequence) {\n column.sortSequence = data.sortSequence\n }\n\n if (data.sort) {\n if (data.filter) {\n filters[selector] = data.sort\n } else {\n // We only allow one. The last one will overwrite all other options\n sort = {column: selector,\n dir: data.sort}\n }\n }\n\n if (typeof data.searchItemSeparator !== \"undefined\") {\n column.searchItemSeparator = data.searchItemSeparator\n }\n\n })\n\n\n })\n\n columns = columns.map(column => column ?\n column :\n {type: defaultType,\n format: defaultType === \"date\" ? defaultFormat : undefined,\n sortable: true,\n searchable: true})\n\n const widths = [] // Width are determined later on by measuring on screen.\n\n return [\n columns, {filters,\n sort,\n widths}\n ]\n\n}\n","import {readDataCell, readHeaderCell} from \"./read_data\"\nimport {DataTable} from \"./datatable\"\nimport {cellType, columnsStateType, headerCellType, inputCellType, inputHeaderCellType, elementNodeType, columnSettingsType} from \"./types\"\nimport {readColumnSettings} from \"./column_settings\"\n\n\nexport class Columns {\n dt: DataTable\n\n settings: columnSettingsType[]\n\n _state: columnsStateType\n\n constructor(dt: DataTable) {\n this.dt = dt\n this.init()\n }\n\n init() {\n [this.settings, this._state] = readColumnSettings(this.dt.options.columns, this.dt.options.type, this.dt.options.format)\n }\n\n /**\n * Swap two columns\n */\n swap(columns: [number, number]) {\n if (columns.length === 2) {\n // Get the current column indexes\n const cols = this.dt.data.headings.map((_node: headerCellType, index: number) => index)\n\n const x = columns[0]\n const y = columns[1]\n const b = cols[y]\n cols[y] = cols[x]\n cols[x] = b\n\n return this.order(cols)\n }\n }\n\n /**\n * Reorder the columns\n */\n order(columns: number[]) {\n\n this.dt.data.headings = columns.map((index: number) => this.dt.data.headings[index])\n this.dt.data.data = this.dt.data.data.map(\n (row: cellType[]) => columns.map((index: number) => row[index])\n )\n this.settings = columns.map(\n (index: number) => this.settings[index]\n )\n\n // Update\n this.dt.update()\n }\n\n /**\n * Hide columns\n */\n hide(columns: number[]) {\n if (!columns.length) {\n return\n }\n columns.forEach((index: number) => {\n if (!this.settings[index]) {\n this.settings[index] = {\n type: \"string\"\n }\n }\n const column = this.settings[index]\n column.hidden = true\n })\n\n this.dt.update()\n }\n\n /**\n * Show columns\n */\n show(columns: number[]) {\n if (!columns.length) {\n return\n }\n columns.forEach((index: number) => {\n if (!this.settings[index]) {\n this.settings[index] = {\n type: \"string\",\n sortable: true\n }\n }\n const column = this.settings[index]\n delete column.hidden\n })\n\n this.dt.update()\n }\n\n /**\n * Check column(s) visibility\n */\n visible(columns: number | number[] | undefined) {\n\n if (columns === undefined) {\n columns = [...Array(this.dt.data.headings.length).keys()]\n }\n if (Array.isArray(columns)) {\n return columns.map(index => !this.settings[index]?.hidden)\n }\n return !this.settings[columns]?.hidden\n\n }\n\n /**\n * Add a new column\n */\n add(data: {data: inputCellType[], heading: inputHeaderCellType} & columnSettingsType) {\n const newColumnSelector = this.dt.data.headings.length\n this.dt.data.headings = this.dt.data.headings.concat([readHeaderCell(data.heading)])\n this.dt.data.data = this.dt.data.data.map(\n (row: cellType[], index: number) => row.concat([readDataCell(data.data[index], data)])\n )\n this.settings[newColumnSelector] = {\n type: data.type || \"string\",\n sortable: true,\n searchable: true\n }\n if (data.type || data.format || data.sortable || data.render || data.filter) {\n const column = this.settings[newColumnSelector]\n\n if (data.render) {\n column.render = data.render\n }\n\n if (data.format) {\n column.format = data.format\n }\n\n if (data.cellClass) {\n column.cellClass = data.cellClass\n }\n\n if (data.headerClass) {\n column.headerClass = data.headerClass\n }\n\n if (data.locale) {\n column.locale = data.locale\n }\n\n if (data.sortable === false) {\n column.sortable = false\n } else {\n if (data.numeric) {\n column.numeric = data.numeric\n }\n if (data.caseFirst) {\n column.caseFirst = data.caseFirst\n }\n }\n\n if (data.searchable === false) {\n column.searchable = false\n } else {\n if (data.sensitivity) {\n column.sensitivity = data.sensitivity\n }\n }\n\n if (column.searchable || column.sortable) {\n if (data.ignorePunctuation) {\n column.ignorePunctuation = data.ignorePunctuation\n }\n }\n\n if (data.hidden) {\n column.hidden = true\n }\n\n if (data.filter) {\n column.filter = data.filter\n }\n\n if (data.sortSequence) {\n column.sortSequence = data.sortSequence\n }\n }\n this.dt.update(true)\n }\n\n /**\n * Remove column(s)\n */\n remove(columns: number[]) {\n if (Array.isArray(columns)) {\n this.dt.data.headings = this.dt.data.headings.filter((_heading: headerCellType, index: number) => !columns.includes(index))\n this.dt.data.data = this.dt.data.data.map(\n (row: cellType[]) => row.filter((_cell: cellType, index: number) => !columns.includes(index))\n )\n this.dt.update(true)\n } else {\n return this.remove([columns])\n }\n }\n\n /**\n * Filter by column\n */\n filter(column: number, init = false) {\n\n if (!this.settings[column]?.filter?.length) {\n // There is no filter to apply.\n return\n }\n\n const currentFilter = this._state.filters[column]\n let newFilterState\n if (currentFilter) {\n let returnNext = false\n newFilterState = this.settings[column].filter.find((filter: (string | number | boolean | elementNodeType[] | object | ((arg: (string | number | boolean | elementNodeType[] | object)) => boolean))) => {\n if (returnNext) {\n return true\n }\n if (filter === currentFilter) {\n returnNext = true\n }\n return false\n })\n } else {\n const filter = this.settings[column].filter\n newFilterState = filter ? filter[0] : undefined\n }\n\n if (newFilterState) {\n this._state.filters[column] = newFilterState\n } else if (currentFilter) {\n this._state.filters[column] = undefined\n }\n this.dt._currentPage = 1\n this.dt.update()\n\n if (!init) {\n this.dt.emit(\"datatable.filter\", column, newFilterState)\n }\n }\n\n /**\n * Sort by column\n */\n sort(index: number, dir: (\"asc\" | \"desc\" | undefined) = undefined, init = false) {\n const column = this.settings[index]\n\n if (!init) {\n this.dt.emit(\"datatable.sorting\", index, dir)\n }\n\n if (!dir) {\n const currentDir = this._state.sort && this._state.sort.column === index ? this._state.sort?.dir : false\n const sortSequence = column?.sortSequence || [\"asc\", \"desc\"]\n if (!currentDir) {\n dir = sortSequence.length ? sortSequence[0] : \"asc\"\n } else {\n const currentDirIndex = sortSequence.indexOf(currentDir)\n if (currentDirIndex === -1) {\n dir = sortSequence[0] || \"asc\"\n } else if (currentDirIndex === sortSequence.length -1) {\n dir = sortSequence[0]\n } else {\n dir = sortSequence[currentDirIndex + 1]\n }\n }\n\n }\n\n const collator = [\"string\", \"html\"].includes(column.type) ?\n new Intl.Collator(column.locale || this.dt.options.locale, {\n usage: \"sort\",\n numeric: column.numeric || this.dt.options.numeric,\n caseFirst: column.caseFirst || this.dt.options.caseFirst,\n ignorePunctuation: column.ignorePunctuation|| this.dt.options.ignorePunctuation\n }) :\n false\n\n this.dt.data.data.sort((row1: cellType[], row2: cellType[]) => {\n let order1 = row1[index].order || row1[index].data,\n order2 = row2[index].order || row2[index].data\n if (dir === \"desc\") {\n const temp = order1\n order1 = order2\n order2 = temp\n }\n if (collator) {\n return collator.compare(String(order1), String(order2))\n }\n if (order1 < order2) {\n return -1\n } else if (order1 > order2) {\n return 1\n }\n return 0\n })\n\n this._state.sort = {column: index,\n dir}\n if (this.dt._searchQueries.length) {\n this.dt.multiSearch(this.dt._searchQueries)\n this.dt.emit(\"datatable.sort\", index, dir)\n } else if (!init) {\n this.dt._currentPage = 1\n this.dt.update()\n this.dt.emit(\"datatable.sort\", index, dir)\n }\n }\n\n /**\n * Measure the actual width of cell content by rendering the entire table with all contents.\n * Note: Destroys current DOM and therefore requires subsequent dt.update()\n */\n _measureWidths() {\n const activeHeadings = this.dt.data.headings.filter((heading: headerCellType, index: number) => !this.settings[index]?.hidden)\n if ((this.dt.options.scrollY.length || this.dt.options.fixedColumns) && activeHeadings?.length) {\n\n this._state.widths = []\n const renderOptions: {noPaging?: true, noColumnWidths?: true, unhideHeader?: true, renderHeader?: true} = {\n noPaging: true\n }\n // If we have headings we need only set the widths on them\n // otherwise we need a temp header and the widths need applying to all cells\n if (this.dt.options.header || this.dt.options.footer) {\n\n if (this.dt.options.scrollY.length) {\n renderOptions.unhideHeader = true\n }\n if (this.dt.headerDOM) {\n // Remove headerDOM for accurate measurements\n this.dt.headerDOM.parentElement.removeChild(this.dt.headerDOM)\n }\n\n // Reset widths\n renderOptions.noColumnWidths = true\n this.dt._renderTable(renderOptions)\n\n const activeDOMHeadings : HTMLTableCellElement[] = Array.from(this.dt.dom.querySelector(\"thead, tfoot\")?.firstElementChild?.querySelectorAll(\"th\") || [])\n let domCounter = 0\n const absoluteColumnWidths = this.dt.data.headings.map((_heading: headerCellType, index: number) => {\n if (this.settings[index]?.hidden) {\n return 0\n }\n const width = activeDOMHeadings[domCounter].offsetWidth\n domCounter += 1\n return width\n\n })\n const totalOffsetWidth = absoluteColumnWidths.reduce(\n (total, cellWidth) => total + cellWidth,\n 0\n )\n this._state.widths = absoluteColumnWidths.map(cellWidth => cellWidth / totalOffsetWidth * 100)\n\n } else {\n renderOptions.renderHeader = true\n this.dt._renderTable(renderOptions)\n\n const activeDOMHeadings: HTMLTableCellElement[] = Array.from(this.dt.dom.querySelector(\"thead, tfoot\")?.firstElementChild?.querySelectorAll(\"th\") || [])\n let domCounter = 0\n const absoluteColumnWidths = this.dt.data.headings.map((_heading: headerCellType, index: number) => {\n if (this.settings[index]?.hidden) {\n return 0\n }\n const width = activeDOMHeadings[domCounter].offsetWidth\n domCounter += 1\n return width\n\n })\n const totalOffsetWidth = absoluteColumnWidths.reduce(\n (total, cellWidth) => total + cellWidth,\n 0\n )\n this._state.widths = absoluteColumnWidths.map(cellWidth => cellWidth / totalOffsetWidth * 100)\n }\n // render table without options for measurements\n this.dt._renderTable()\n }\n }\n}\n","// Template for custom layouts\nexport const layoutTemplate = (options, dom) => `
    \n ${\n options.paging && options.perPageSelect ?\n `
    \n \n
    ` :\n \"\"\n}\n ${\n options.searchable ?\n `
    \n \n
    ` :\n \"\"\n}\n
    \n
    \n
    \n ${\n options.paging ?\n `
    ` :\n \"\"\n}\n \n
    `\n","import {DataTableConfiguration} from \"./types\"\nimport {layoutTemplate} from \"./templates\"\n/**\n * Default configuration\n */\nexport const defaultConfig: DataTableConfiguration = {\n // for sorting\n sortable: true,\n locale: \"en\",\n numeric: true,\n caseFirst: \"false\",\n\n // for searching\n searchable: true,\n sensitivity: \"base\",\n ignorePunctuation: true,\n destroyable: true,\n searchItemSeparator: \"\", // If specified, splits the content of cells up using this separator before performing search.\n searchQuerySeparator: \" \",\n searchAnd: false,\n\n // data\n data: {},\n type: \"html\", // Default data type for columns.\n format: \"YYYY-MM-DD\",\n columns: [],\n\n // Pagination\n paging: true,\n perPage: 10,\n perPageSelect: [5, 10, 15, 20, 25],\n nextPrev: true,\n firstLast: false,\n prevText: \"‹\",\n nextText: \"›\",\n firstText: \"«\",\n lastText: \"»\",\n ellipsisText: \"…\",\n truncatePager: true,\n pagerDelta: 2,\n\n scrollY: \"\",\n\n fixedColumns: true,\n fixedHeight: false,\n\n footer: false,\n header: true,\n hiddenHeader: false,\n\n rowNavigation: false,\n tabIndex: false,\n\n // for overriding rendering\n pagerRender: false,\n rowRender: false,\n tableRender: false,\n diffDomOptions: {\n valueDiffing: false\n },\n\n // Customise the display text\n labels: {\n placeholder: \"Search...\", // The search input placeholder\n searchTitle: \"Search within table\", // The search input title\n perPage: \"entries per page\", // per-page dropdown label\n pageTitle: \"Page {page}\", // page label used in Aria-label\n noRows: \"No entries found\", // Message shown when there are no records to show\n noResults: \"No results match your search query\", // Message shown when there are no search results\n info: \"Showing {start} to {end} of {rows} entries\" //\n },\n\n // Customise the layout\n template: layoutTemplate,\n\n // Customize the class names used by datatable for different parts\n classes: { // Note: use single class names\n active: \"datatable-active\",\n ascending: \"datatable-ascending\",\n bottom: \"datatable-bottom\",\n container: \"datatable-container\",\n cursor: \"datatable-cursor\",\n descending: \"datatable-descending\",\n disabled: \"datatable-disabled\",\n dropdown: \"datatable-dropdown\",\n ellipsis: \"datatable-ellipsis\",\n filter: \"datatable-filter\",\n filterActive: \"datatable-filter-active\",\n empty: \"datatable-empty\",\n headercontainer: \"datatable-headercontainer\",\n hidden: \"datatable-hidden\",\n info: \"datatable-info\",\n input: \"datatable-input\",\n loading: \"datatable-loading\",\n pagination: \"datatable-pagination\",\n paginationList: \"datatable-pagination-list\",\n paginationListItem: \"datatable-pagination-list-item\",\n paginationListItemLink: \"datatable-pagination-list-item-link\",\n search: \"datatable-search\",\n selector: \"datatable-selector\",\n sorter: \"datatable-sorter\",\n table: \"datatable-table\",\n top: \"datatable-top\",\n wrapper: \"datatable-wrapper\"\n }\n}\n","import {DataTableConfiguration, elementNodeType} from \"./types\"\n\n/**\n * Pager truncation algorithm\n */\nconst truncate = (paginationListItems: elementNodeType[], currentPage: number, pagesLength: number, options: DataTableConfiguration) : elementNodeType[] => {\n const pagerDelta = options.pagerDelta\n const classes = options.classes\n const ellipsisText = options.ellipsisText\n\n const doublePagerDelta = 2 * pagerDelta\n let previousPage = currentPage - pagerDelta\n let nextPage = currentPage + pagerDelta\n\n if (currentPage < 4 - pagerDelta + doublePagerDelta) {\n nextPage = 3 + doublePagerDelta\n } else if (currentPage > pagesLength - (3 - pagerDelta + doublePagerDelta)) {\n previousPage = pagesLength - (2 + doublePagerDelta)\n }\n const paginationListItemsToModify: elementNodeType[] = []\n for (let k = 1; k <= pagesLength; k++) {\n if (1 == k || k == pagesLength || (k >= previousPage && k <= nextPage)) {\n const li = paginationListItems[k - 1]\n paginationListItemsToModify.push(li)\n }\n }\n let previousLi: elementNodeType\n const modifiedLis: elementNodeType[] = []\n paginationListItemsToModify.forEach(li => {\n const pageNumber = parseInt((li.childNodes[0] as elementNodeType).attributes[\"data-page\"], 10)\n if (previousLi) {\n const previousPageNumber = parseInt((previousLi.childNodes[0] as elementNodeType).attributes[\"data-page\"], 10)\n if (pageNumber - previousPageNumber == 2) {\n modifiedLis.push(paginationListItems[previousPageNumber])\n } else if (pageNumber - previousPageNumber != 1) {\n const newLi: elementNodeType = {\n nodeName: \"LI\",\n attributes: {\n class: `${classes.paginationListItem} ${classes.ellipsis} ${classes.disabled}`\n },\n childNodes: [\n {\n nodeName: \"BUTTON\",\n attributes: {\n class: classes.paginationListItemLink\n },\n childNodes: [\n {\n nodeName: \"#text\",\n data: ellipsisText\n }\n ]\n }\n ]\n }\n modifiedLis.push(newLi)\n }\n }\n modifiedLis.push(li)\n previousLi = li\n })\n\n return modifiedLis\n}\n\n\nconst paginationListItem = (page: number, label: string, options: DataTableConfiguration, state: {active?: boolean, hidden?: boolean} = {}) : elementNodeType => ({\n nodeName: \"LI\",\n attributes: {\n class:\n (state.active && !state.hidden) ?\n `${options.classes.paginationListItem} ${options.classes.active}` :\n state.hidden ?\n `${options.classes.paginationListItem} ${options.classes.hidden} ${options.classes.disabled}` :\n options.classes.paginationListItem\n },\n childNodes: [\n {\n nodeName: \"BUTTON\",\n attributes: {\n \"data-page\": String(page),\n class: options.classes.paginationListItemLink,\n \"aria-label\": options.labels.pageTitle.replace(\"{page}\", String(page))\n },\n childNodes: [\n {\n nodeName: \"#text\",\n data: label\n }\n ]\n }\n ]\n})\n\nexport const createVirtualPagerDOM = (onFirstPage: boolean, onLastPage: boolean, currentPage: number, totalPages: number, options) => {\n\n let pagerListItems : elementNodeType[] = []\n\n // first button\n if (options.firstLast) {\n pagerListItems.push(paginationListItem(1, options.firstText, options))\n }\n\n // prev button\n if (options.nextPrev) {\n const prev = onFirstPage ? 1 : currentPage - 1\n pagerListItems.push(paginationListItem(prev, options.prevText, options, {hidden: onFirstPage}))\n }\n\n let pages = [...Array(totalPages).keys()].map(index => paginationListItem(index+1, String(index+1), options, {active: (index === (currentPage-1))}))\n\n if (options.truncatePager) {\n // truncate the paginationListItems\n pages = truncate(\n pages,\n currentPage,\n totalPages,\n options\n )\n\n }\n\n // append the paginationListItems\n pagerListItems = pagerListItems.concat(pages)\n\n // next button\n if (options.nextPrev) {\n const next = onLastPage ? totalPages : currentPage + 1\n pagerListItems.push(paginationListItem(next, options.nextText, options, {hidden: onLastPage}))\n }\n\n // last button\n if (options.firstLast) {\n pagerListItems.push(paginationListItem(totalPages, options.lastText, options))\n }\n\n const pager : elementNodeType = {\n nodeName: \"UL\",\n attributes: {\n class: options.classes.paginationList\n },\n childNodes: pages.length > 1 ? pagerListItems : [] // Don't show single page\n }\n\n return pager\n\n}\n","import {\n isObject,\n createElement,\n visibleToColumnIndex\n} from \"./helpers\"\nimport {\n cellType,\n DataTableConfiguration,\n DataTableOptions,\n filterStateType,\n headerCellType,\n inputCellType,\n elementNodeType,\n renderOptions,\n TableDataType\n} from \"./types\"\nimport {DiffDOM, nodeToObj} from \"diff-dom\"\n\nimport {dataToVirtualDOM, headingsToVirtualHeaderRowDOM} from \"./virtual_dom\"\nimport {readTableData, readDataCell, readHeaderCell} from \"./read_data\"\nimport {Rows} from \"./rows\"\nimport {Columns} from \"./columns\"\nimport {defaultConfig} from \"./config\"\nimport {createVirtualPagerDOM} from \"./virtual_pager_dom\"\n\n\nexport class DataTable {\n\n columns: Columns\n\n containerDOM: HTMLDivElement\n\n _currentPage: number\n\n data: TableDataType\n\n _dd: DiffDOM\n\n dom: HTMLTableElement\n\n _events: { [key: string]: ((...args) => void)[]}\n\n hasHeadings: boolean\n\n hasRows: boolean\n\n headerDOM: HTMLDivElement\n\n _initialInnerHTML: string\n\n initialized: boolean\n\n _label: HTMLElement\n\n lastPage: number\n\n _listeners: { [key: string]: () => void}\n\n onFirstPage: boolean\n\n onLastPage: boolean\n\n options: DataTableConfiguration\n\n _pagerDOMs: HTMLElement[]\n\n _virtualPagerDOM: elementNodeType\n\n pages: {row: cellType[], index: number}[][]\n\n _rect: {width: number, height: number}\n\n rows: Rows\n\n _searchData: number[]\n\n _searchQueries: {terms: string[], columns: (number[] | undefined)}[]\n\n _tableAttributes: { [key: string]: string}\n\n totalPages: number\n\n _virtualDOM: elementNodeType\n\n _virtualHeaderDOM: elementNodeType\n\n wrapperDOM: HTMLElement\n\n constructor(table: HTMLTableElement | string, options: DataTableOptions = {}) {\n\n\n const dom = typeof table === \"string\" ?\n document.querySelector(table) :\n table\n\n if (dom instanceof HTMLTableElement) {\n this.dom = dom\n } else {\n this.dom = document.createElement(\"table\")\n dom.appendChild(this.dom)\n }\n\n const diffDomOptions = {\n ...defaultConfig.diffDomOptions,\n ...options.diffDomOptions\n }\n\n const labels = {\n ...defaultConfig.labels,\n ...options.labels\n }\n\n const classes = {\n ...defaultConfig.classes,\n ...options.classes\n }\n\n // user options\n this.options = {\n ...defaultConfig,\n ...options,\n diffDomOptions,\n labels,\n classes\n }\n\n this._initialInnerHTML = this.options.destroyable ? this.dom.innerHTML : \"\" // preserve in case of later destruction\n\n if (this.options.tabIndex) {\n this.dom.tabIndex = this.options.tabIndex\n } else if (this.options.rowNavigation && this.dom.tabIndex === -1) {\n this.dom.tabIndex = 0\n }\n\n this._listeners = {\n onResize: () => this._onResize()\n }\n\n this._dd = new DiffDOM(this.options.diffDomOptions || {})\n\n this.initialized = false\n this._events = {}\n\n this._currentPage = 0\n this.onFirstPage = true\n this.hasHeadings = false\n this.hasRows = false\n this._searchQueries = []\n\n this.init()\n }\n\n /**\n * Initialize the instance\n */\n init() {\n if (this.initialized || this.dom.classList.contains(this.options.classes.table)) {\n return false\n }\n\n this._virtualDOM = nodeToObj(this.dom, this.options.diffDomOptions || {})\n\n this._tableAttributes = {...this._virtualDOM.attributes}\n\n this.rows = new Rows(this)\n this.columns = new Columns(this)\n\n this.data = readTableData(this.options.data, this.dom, this.columns.settings, this.options.type, this.options.format)\n\n this._render()\n\n setTimeout(() => {\n this.emit(\"datatable.init\")\n this.initialized = true\n }, 10)\n }\n\n\n /**\n * Render the instance\n */\n _render() {\n\n // Build\n this.wrapperDOM = createElement(\"div\", {\n class: `${this.options.classes.wrapper} ${this.options.classes.loading}`\n })\n\n this.wrapperDOM.innerHTML = this.options.template(this.options, this.dom)\n\n const selector = this.wrapperDOM.querySelector(`select.${this.options.classes.selector}`)\n\n // Per Page Select\n if (selector && this.options.paging && this.options.perPageSelect) {\n\n // Create the options\n this.options.perPageSelect.forEach((choice: number | [string, number]) => {\n const [lab, val] = Array.isArray(choice) ? [choice[0], choice[1]] : [String(choice), choice]\n const selected = val === this.options.perPage\n const option = new Option(lab, String(val), selected, selected)\n selector.appendChild(option)\n })\n\n } else if (selector) {\n selector.parentElement.removeChild(selector)\n }\n\n this.containerDOM = this.wrapperDOM.querySelector(`.${this.options.classes.container}`)\n\n this._pagerDOMs = []\n Array.from(this.wrapperDOM.querySelectorAll(`.${this.options.classes.pagination}`)).forEach(el => {\n if (!(el instanceof HTMLElement)) {\n return\n }\n // We remove the inner part of the pager containers to ensure they are all the same.\n el.innerHTML = `
      `\n this._pagerDOMs.push(el.firstElementChild as HTMLElement)\n })\n\n this._virtualPagerDOM = {\n nodeName: \"UL\",\n attributes: {\n class: this.options.classes.paginationList\n }\n }\n\n\n this._label = this.wrapperDOM.querySelector(`.${this.options.classes.info}`)\n\n // Insert in to DOM tree\n this.dom.parentElement.replaceChild(this.wrapperDOM, this.dom)\n this.containerDOM.appendChild(this.dom)\n\n // Store the table dimensions\n this._rect = this.dom.getBoundingClientRect()\n\n // // Fix height\n this._fixHeight()\n //\n\n\n // Class names\n if (!this.options.header) {\n this.wrapperDOM.classList.add(\"no-header\")\n }\n\n if (!this.options.footer) {\n this.wrapperDOM.classList.add(\"no-footer\")\n }\n\n if (this.options.sortable) {\n this.wrapperDOM.classList.add(\"sortable\")\n }\n\n if (this.options.searchable) {\n this.wrapperDOM.classList.add(\"searchable\")\n }\n\n if (this.options.fixedHeight) {\n this.wrapperDOM.classList.add(\"fixed-height\")\n }\n\n if (this.options.fixedColumns) {\n this.wrapperDOM.classList.add(\"fixed-columns\")\n }\n\n this._bindEvents()\n\n if (this.columns._state.sort) {\n this.columns.sort(this.columns._state.sort.column, this.columns._state.sort.dir, true)\n }\n\n this.update(true)\n }\n\n _renderTable(renderOptions: renderOptions ={}) {\n let newVirtualDOM = dataToVirtualDOM(\n this._tableAttributes,\n this.data.headings,\n (this.options.paging || this._searchQueries.length || this.columns._state.filters.length) && this._currentPage && this.pages.length && !renderOptions.noPaging ?\n this.pages[this._currentPage - 1] :\n this.data.data.map((row, index) => ({\n row,\n index\n })),\n this.columns.settings,\n this.columns._state,\n this.rows.cursor,\n this.options,\n renderOptions\n )\n\n if (this.options.tableRender) {\n const renderedTableVirtualDOM : (elementNodeType | void) = this.options.tableRender(this.data, newVirtualDOM, \"main\")\n if (renderedTableVirtualDOM) {\n newVirtualDOM = renderedTableVirtualDOM\n }\n }\n const diff = this._dd.diff(this._virtualDOM, newVirtualDOM)\n this._dd.apply(this.dom, diff)\n this._virtualDOM = newVirtualDOM\n }\n\n /**\n * Render the page\n * @return {Void}\n */\n _renderPage(lastRowCursor=false) {\n if (this.hasRows && this.totalPages) {\n if (this._currentPage > this.totalPages) {\n this._currentPage = 1\n }\n\n // Use a fragment to limit touching the DOM\n this._renderTable()\n\n this.onFirstPage = this._currentPage === 1\n this.onLastPage = this._currentPage === this.lastPage\n } else {\n this.setMessage(this.options.labels.noRows)\n }\n\n // Update the info\n let current = 0\n\n let f = 0\n let t = 0\n let items\n\n if (this.totalPages) {\n current = this._currentPage - 1\n f = current * this.options.perPage\n t = f + this.pages[current].length\n f = f + 1\n items = this._searchQueries.length ? this._searchData.length : this.data.data.length\n }\n\n if (this._label && this.options.labels.info.length) {\n // CUSTOM LABELS\n const string = this.options.labels.info\n .replace(\"{start}\", String(f))\n .replace(\"{end}\", String(t))\n .replace(\"{page}\", String(this._currentPage))\n .replace(\"{pages}\", String(this.totalPages))\n .replace(\"{rows}\", String(items))\n\n this._label.innerHTML = items ? string : \"\"\n }\n\n if (this._currentPage == 1) {\n this._fixHeight()\n }\n\n if (this.options.rowNavigation && this._currentPage) {\n if (!this.rows.cursor || !this.pages[this._currentPage-1].find(\n row => row.index === this.rows.cursor)\n ) {\n const rows = this.pages[this._currentPage-1]\n if (rows.length) {\n if (lastRowCursor) {\n this.rows.setCursor(rows[rows.length-1].index)\n } else {\n this.rows.setCursor(rows[0].index)\n }\n }\n }\n }\n }\n\n /** Render the pager(s)\n *\n */\n _renderPagers() {\n if (!this.options.paging) {\n return\n }\n let newPagerVirtualDOM = createVirtualPagerDOM(this.onFirstPage, this.onLastPage, this._currentPage, this.totalPages, this.options)\n\n if (this.options.pagerRender) {\n const renderedPagerVirtualDOM : (elementNodeType | void) = this.options.pagerRender([this.onFirstPage, this.onLastPage, this._currentPage, this.totalPages], newPagerVirtualDOM)\n if (renderedPagerVirtualDOM) {\n newPagerVirtualDOM = renderedPagerVirtualDOM\n }\n }\n\n const diffs = this._dd.diff(this._virtualPagerDOM, newPagerVirtualDOM)\n // We may have more than one pager\n this._pagerDOMs.forEach((pagerDOM: HTMLElement) => {\n this._dd.apply(pagerDOM, diffs)\n })\n\n this._virtualPagerDOM = newPagerVirtualDOM\n }\n\n // Render header that is not in the same table element as the remainder\n // of the table. Used for tables with scrollY.\n _renderSeparateHeader() {\n const container = this.dom.parentElement\n if (!this.headerDOM) {\n this.headerDOM = document.createElement(\"div\")\n this._virtualHeaderDOM = {\n nodeName: \"DIV\"\n }\n\n }\n container.parentElement.insertBefore(this.headerDOM, container)\n let tableVirtualDOM : elementNodeType = {\n nodeName: \"TABLE\",\n attributes: this._tableAttributes,\n childNodes: [\n {\n nodeName: \"THEAD\",\n childNodes: [\n headingsToVirtualHeaderRowDOM(\n this.data.headings, this.columns.settings, this.columns._state, this.options, {unhideHeader: true})\n ]\n\n }\n\n ]\n }\n tableVirtualDOM.attributes.class = tableVirtualDOM.attributes.class ? `${tableVirtualDOM.attributes.class} ${this.options.classes.table}` : this.options.classes.table\n if (this.options.tableRender) {\n const renderedTableVirtualDOM : (elementNodeType | void) = this.options.tableRender(this.data, tableVirtualDOM, \"header\")\n if (renderedTableVirtualDOM) {\n tableVirtualDOM = renderedTableVirtualDOM\n }\n }\n\n const newVirtualHeaderDOM = {\n nodeName: \"DIV\",\n attributes: {\n class: this.options.classes.headercontainer\n },\n childNodes: [tableVirtualDOM]\n }\n\n const diff = this._dd.diff(this._virtualHeaderDOM, newVirtualHeaderDOM)\n this._dd.apply(this.headerDOM, diff)\n this._virtualHeaderDOM = newVirtualHeaderDOM\n\n // Compensate for scrollbars\n const paddingRight = this.headerDOM.firstElementChild.clientWidth - this.dom.clientWidth\n if (paddingRight) {\n const paddedVirtualHeaderDOM = structuredClone(this._virtualHeaderDOM)\n paddedVirtualHeaderDOM.attributes.style = `padding-right: ${paddingRight}px;`\n const diff = this._dd.diff(this._virtualHeaderDOM, paddedVirtualHeaderDOM)\n this._dd.apply(this.headerDOM, diff)\n this._virtualHeaderDOM = paddedVirtualHeaderDOM\n }\n\n if (container.scrollHeight > container.clientHeight) {\n // scrollbars on one page means scrollbars on all pages.\n container.style.overflowY = \"scroll\"\n }\n }\n\n /**\n * Bind event listeners\n * @return {[type]} [description]\n */\n _bindEvents() {\n // Per page selector\n if (this.options.perPageSelect) {\n const selector = this.wrapperDOM.querySelector(`select.${this.options.classes.selector}`)\n if (selector && selector instanceof HTMLSelectElement) {\n // Change per page\n selector.addEventListener(\"change\", () => {\n this.options.perPage = parseInt(selector.value, 10)\n this.update()\n\n this._fixHeight()\n\n this.emit(\"datatable.perpage\", this.options.perPage)\n }, false)\n }\n }\n\n // Search input\n if (this.options.searchable) {\n this.wrapperDOM.addEventListener(\"input\", (event: InputEvent) => {\n const target = event.target\n if (!(target instanceof HTMLInputElement) || !target.matches(`.${this.options.classes.input}`)) {\n return\n }\n event.preventDefault()\n\n const searches: { terms: string[], columns: (number[] | undefined) }[] = []\n const searchFields = Array.from(this.wrapperDOM.querySelectorAll(`.${this.options.classes.input}`)) as HTMLInputElement[]\n searchFields.filter(\n el => el.value.length\n ).forEach(\n el => {\n const andSearch = el.dataset.and || this.options.searchAnd\n const querySeparator = el.dataset.querySeparator || this.options.searchQuerySeparator\n const terms = querySeparator ? el.value.split(this.options.searchQuerySeparator) : [el.value]\n if (andSearch) {\n terms.forEach(term => {\n if (el.dataset.columns) {\n searches.push({\n terms: [term],\n columns: (JSON.parse(el.dataset.columns) as number[])\n })\n } else {\n searches.push({terms: [term],\n columns: undefined})\n }\n })\n } else {\n if (el.dataset.columns) {\n searches.push({\n terms,\n columns: (JSON.parse(el.dataset.columns) as number[])\n })\n } else {\n searches.push({terms,\n columns: undefined})\n }\n }\n\n }\n )\n if (searches.length === 1 && searches[0].terms.length === 1) {\n const search = searches[0]\n this.search(search.terms[0], search.columns)\n } else {\n this.multiSearch(searches)\n }\n })\n }\n\n // Pager(s) / sorting\n this.wrapperDOM.addEventListener(\"click\", (event: Event) => {\n const target = event.target as Element\n const hyperlink = target.closest(\"a, button\")\n if (!hyperlink) {\n return\n }\n\n if (hyperlink.hasAttribute(\"data-page\")) {\n this.page(parseInt(hyperlink.getAttribute(\"data-page\"), 10))\n event.preventDefault()\n } else if (\n hyperlink.classList.contains(this.options.classes.sorter)\n ) {\n const visibleIndex = Array.from(hyperlink.parentElement.parentElement.children).indexOf(hyperlink.parentElement)\n const columnIndex = visibleToColumnIndex(visibleIndex, this.columns.settings)\n this.columns.sort(columnIndex)\n event.preventDefault()\n } else if (\n hyperlink.classList.contains(this.options.classes.filter)\n ) {\n const visibleIndex = Array.from(hyperlink.parentElement.parentElement.children).indexOf(hyperlink.parentElement)\n const columnIndex = visibleToColumnIndex(visibleIndex, this.columns.settings)\n this.columns.filter(columnIndex)\n event.preventDefault()\n }\n }, false)\n\n if (this.options.rowNavigation) {\n this.dom.addEventListener(\"keydown\", (event: KeyboardEvent) => {\n if (event.key === \"ArrowUp\") {\n event.preventDefault()\n event.stopPropagation()\n let lastRow\n this.pages[this._currentPage-1].find((row: {row: cellType[], index: number}) => {\n if (row.index===this.rows.cursor) {\n return true\n }\n lastRow = row\n return false\n })\n if (lastRow) {\n this.rows.setCursor(lastRow.index)\n } else if (!this.onFirstPage) {\n this.page(this._currentPage-1, true)\n }\n } else if (event.key === \"ArrowDown\") {\n event.preventDefault()\n event.stopPropagation()\n let foundRow: boolean\n const nextRow = this.pages[this._currentPage-1].find((row: {row: cellType[], index: number}) => {\n if (foundRow) {\n return true\n }\n if (row.index===this.rows.cursor) {\n foundRow = true\n }\n return false\n })\n if (nextRow) {\n this.rows.setCursor(nextRow.index)\n } else if (!this.onLastPage) {\n this.page(this._currentPage+1)\n }\n } else if ([\"Enter\", \" \"].includes(event.key)) {\n this.emit(\"datatable.selectrow\", this.rows.cursor, event)\n }\n })\n this.dom.addEventListener(\"mousedown\", (event: Event) => {\n const target = event.target\n if (!(target instanceof Element)) {\n return\n }\n if (this.dom.matches(\":focus\")) {\n const row = Array.from(this.dom.querySelectorAll(\"body tr\")).find(row => row.contains(target))\n if (row && row instanceof HTMLElement) {\n this.emit(\"datatable.selectrow\", parseInt(row.dataset.index, 10), event)\n }\n }\n\n })\n } else {\n this.dom.addEventListener(\"mousedown\", (event: Event) => {\n const target = event.target\n if (!(target instanceof Element)) {\n return\n }\n const row = Array.from(this.dom.querySelectorAll(\"body tr\")).find(row => row.contains(target))\n if (row && row instanceof HTMLElement) {\n this.emit(\"datatable.selectrow\", parseInt(row.dataset.index, 10), event)\n }\n })\n }\n\n window.addEventListener(\"resize\", this._listeners.onResize)\n }\n\n /**\n * execute on resize\n */\n _onResize() {\n this._rect = this.containerDOM.getBoundingClientRect()\n if (!this._rect.width) {\n // No longer shown, likely no longer part of DOM. Give up.\n return\n }\n this.update(true)\n }\n\n /**\n * Destroy the instance\n * @return {void}\n */\n destroy() {\n if (!this.options.destroyable) {\n return\n }\n this.dom.innerHTML = this._initialInnerHTML\n\n // Remove the className\n this.dom.classList.remove(this.options.classes.table)\n\n // Remove the containers\n if (this.wrapperDOM.parentElement) {\n this.wrapperDOM.parentElement.replaceChild(this.dom, this.wrapperDOM)\n }\n\n this.initialized = false\n\n window.removeEventListener(\"resize\", this._listeners.onResize)\n }\n\n /**\n * Update the instance\n * @return {Void}\n */\n update(measureWidths = false) {\n if (measureWidths) {\n this.columns._measureWidths()\n this.hasRows = Boolean(this.data.data.length)\n this.hasHeadings = Boolean(this.data.headings.length)\n }\n this.wrapperDOM.classList.remove(this.options.classes.empty)\n\n this._paginate()\n this._renderPage()\n\n this._renderPagers()\n\n if (this.options.scrollY.length) {\n this._renderSeparateHeader()\n }\n\n this.emit(\"datatable.update\")\n }\n\n _paginate() {\n let rows = this.data.data.map((row, index) => ({\n row,\n index\n }))\n\n if (this._searchQueries.length) {\n rows = []\n\n this._searchData.forEach((index: number) => rows.push({index,\n row: this.data.data[index]}))\n }\n\n if (this.columns._state.filters.length) {\n this.columns._state.filters.forEach(\n (filterState: (filterStateType | undefined), column: number) => {\n if (!filterState) {\n return\n }\n rows = rows.filter(\n (row: {index: number, row: cellType[]}) => typeof filterState === \"function\" ? filterState(row.row[column].data) : (row.row[column].text ?? row.row[column].data) === filterState\n )\n }\n )\n }\n\n if (this.options.paging && this.options.perPage > 0) {\n // Check for hidden columns\n this.pages = rows\n .map((row: {row: cellType[], index: number}, i: number) => i % this.options.perPage === 0 ? rows.slice(i, i + this.options.perPage) : null)\n .filter((page: {row: cellType[], index: number}[]) => page)\n } else {\n this.pages = [rows]\n }\n\n this.totalPages = this.lastPage = this.pages.length\n\n if (!this._currentPage) {\n this._currentPage = 1\n }\n return this.totalPages\n }\n\n /**\n * Fix the container height\n */\n _fixHeight() {\n if (this.options.fixedHeight) {\n this.containerDOM.style.height = null\n this._rect = this.containerDOM.getBoundingClientRect()\n this.containerDOM.style.height = `${this._rect.height}px`\n }\n }\n\n /**\n * Perform a simple search of the data set\n */\n search(term: string, columns: (number[] | undefined ) = undefined) {\n\n if (!term.length) {\n this._currentPage = 1\n this._searchQueries = []\n this._searchData = []\n this.update()\n this.emit(\"datatable.search\", \"\", [])\n this.wrapperDOM.classList.remove(\"search-results\")\n return false\n }\n\n this.multiSearch([\n {terms: [term],\n columns: columns ? columns : undefined}\n ])\n\n this.emit(\"datatable.search\", term, this._searchData)\n\n }\n\n /**\n * Perform a search of the data set seraching for up to multiple strings in various columns\n */\n multiSearch(rawQueries : {terms: string[], columns: (number[] | undefined)}[]) {\n if (!this.hasRows) return false\n\n this._currentPage = 1\n this._searchData = []\n // Remove empty queries\n const queries = rawQueries.map(query => ({\n columns: query.columns,\n terms: query.terms.map(term => term.trim()).filter(term => term)\n })).filter(query => query.terms.length\n )\n\n this._searchQueries = queries\n\n if (!queries.length) {\n this.update()\n this.emit(\"datatable.multisearch\", queries, this._searchData)\n this.wrapperDOM.classList.remove(\"search-results\")\n return false\n }\n const queryWords = queries.map(query => this.columns.settings.map(\n (column, index) => {\n if (column.hidden || !column.searchable || (query.columns && !query.columns.includes(index))) {\n return false\n }\n let columnQueries = query.terms\n const sensitivity = column.sensitivity || this.options.sensitivity\n if ([\"base\", \"accent\"].includes(sensitivity)) {\n columnQueries = columnQueries.map(query => query.toLowerCase())\n }\n if ([\"base\", \"case\"].includes(sensitivity)) {\n columnQueries = columnQueries.map(query => query.normalize(\"NFD\").replace(/\\p{Diacritic}/gu, \"\"))\n }\n const ignorePunctuation = column.ignorePunctuation ?? this.options.ignorePunctuation\n if (ignorePunctuation) {\n columnQueries = columnQueries.map(query => query.replace(/[.,/#!$%^&*;:{}=-_`~()]/g, \"\"))\n }\n return columnQueries\n }\n ))\n this.data.data.forEach((row: cellType[], idx: number) => {\n const searchRow = row.map((cell, i) => {\n let content = (cell.text || String(cell.data)).trim()\n const column = this.columns.settings[i]\n if (content.length) {\n const sensitivity = column.sensitivity || this.options.sensitivity\n if ([\"base\", \"accent\"].includes(sensitivity)) {\n content = content.toLowerCase()\n }\n if ([\"base\", \"case\"].includes(sensitivity)) {\n content = content.normalize(\"NFD\").replace(/\\p{Diacritic}/gu, \"\")\n }\n const ignorePunctuation = column.ignorePunctuation ?? this.options.ignorePunctuation\n if (ignorePunctuation) {\n content = content.replace(/[.,/#!$%^&*;:{}=-_`~()]/g, \"\")\n }\n }\n const searchItemSeparator = column.searchItemSeparator || this.options.searchItemSeparator\n return searchItemSeparator ? content.split(searchItemSeparator) : [content]\n })\n if (\n queryWords.every(\n queries => queries.find(\n (query, index) => query ?\n query.find(queryWord => searchRow[index].find(searchItem => searchItem.includes(queryWord))) :\n false\n )\n )\n ) {\n this._searchData.push(idx)\n }\n\n })\n\n this.wrapperDOM.classList.add(\"search-results\")\n if (this._searchData.length) {\n this.update()\n } else {\n this.wrapperDOM.classList.remove(\"search-results\")\n\n this.setMessage(this.options.labels.noResults)\n }\n\n this.emit(\"datatable.multisearch\", queries, this._searchData)\n }\n\n /**\n * Change page\n */\n page(page: number, lastRowCursor = false) {\n // We don't want to load the current page again.\n if (page === this._currentPage) {\n return false\n }\n\n if (!isNaN(page)) {\n this._currentPage = page\n }\n\n if (page > this.pages.length || page < 0) {\n return false\n }\n\n this._renderPage(lastRowCursor)\n this._renderPagers()\n\n this.emit(\"datatable.page\", page)\n }\n\n /**\n * Add new row data\n */\n insert(data: (\n {headings?: string[], data?: inputCellType[][]} | { [key: string]: inputCellType}[])) {\n let rows: cellType[][] = []\n if (Array.isArray(data)) {\n const headings = this.data.headings.map((heading: headerCellType) => heading.text ?? String(heading.data))\n data.forEach((row, rIndex) => {\n const r: cellType[] = []\n Object.entries(row).forEach(([heading, cell]) => {\n\n const index = headings.indexOf(heading)\n\n if (index > -1) {\n r[index] = readDataCell(cell as inputCellType, this.columns.settings[index])\n } else if (!this.hasHeadings && !this.hasRows && rIndex === 0) {\n r[headings.length] = readDataCell(cell as inputCellType, this.columns.settings[headings.length])\n headings.push(heading)\n this.data.headings.push(readHeaderCell(heading))\n }\n })\n rows.push(r)\n })\n } else if (isObject(data)) {\n if (data.headings && !this.hasHeadings && !this.hasRows) {\n this.data = readTableData(data, undefined, this.columns.settings, this.options.type, this.options.format)\n } else if (data.data && Array.isArray(data.data)) {\n rows = data.data.map(row => row.map((cell, index) => readDataCell(cell as inputCellType, this.columns.settings[index])))\n }\n }\n if (rows.length) {\n rows.forEach((row: cellType[]) => this.data.data.push(row))\n }\n this.hasHeadings = Boolean(this.data.headings.length)\n\n if (this.columns._state.sort) {\n this.columns.sort(this.columns._state.sort.column, this.columns._state.sort.dir, true)\n }\n\n this.update(true)\n }\n\n /**\n * Refresh the instance\n */\n refresh() {\n if (this.options.searchable) {\n (Array.from(this.wrapperDOM.querySelectorAll(`.${this.options.classes.input}`)) as HTMLInputElement[]).forEach(\n el => {\n el.value = \"\"\n }\n )\n this._searchQueries = []\n }\n this._currentPage = 1\n this.onFirstPage = true\n this.update(true)\n\n this.emit(\"datatable.refresh\")\n }\n\n /**\n * Print the table\n */\n print() {\n const tableDOM = createElement(\"table\")\n const tableVirtualDOM = {nodeName: \"TABLE\"}\n let newTableVirtualDOM = dataToVirtualDOM(\n this._tableAttributes,\n this.data.headings,\n this.data.data.map((row, index) => ({\n row,\n index\n })),\n this.columns.settings,\n this.columns._state,\n false, // No row cursor\n this.options,\n {\n noColumnWidths: true,\n unhideHeader: true\n }\n )\n\n if (this.options.tableRender) {\n const renderedTableVirtualDOM : (elementNodeType | void) = this.options.tableRender(this.data, newTableVirtualDOM, \"print\")\n if (renderedTableVirtualDOM) {\n newTableVirtualDOM = renderedTableVirtualDOM\n }\n }\n\n const diff = this._dd.diff(tableVirtualDOM, newTableVirtualDOM)\n this._dd.apply(tableDOM, diff)\n\n // Open new window\n const w = window.open()\n\n // Append the table to the body\n w.document.body.appendChild(tableDOM)\n\n // Print\n w.print()\n }\n\n /**\n * Show a message in the table\n */\n setMessage(message: string) {\n const activeHeadings = this.data.headings.filter((heading: headerCellType, index: number) => !this.columns.settings[index]?.hidden)\n const colspan = activeHeadings.length || 1\n\n this.wrapperDOM.classList.add(this.options.classes.empty)\n\n if (this._label) {\n this._label.innerHTML = \"\"\n }\n this.totalPages = 0\n this._renderPagers()\n\n let newVirtualDOM : elementNodeType = {\n nodeName: \"TABLE\",\n attributes: this._tableAttributes,\n childNodes: [\n {\n nodeName: \"THEAD\",\n childNodes: [\n headingsToVirtualHeaderRowDOM(\n this.data.headings, this.columns.settings, this.columns._state, this.options, {})\n ]\n },\n {\n nodeName: \"TBODY\",\n childNodes: [\n {\n nodeName: \"TR\",\n childNodes: [\n {\n nodeName: \"TD\",\n attributes: {\n class: this.options.classes.empty,\n colspan: String(colspan)\n },\n childNodes: [\n {\n nodeName: \"#text\",\n data: message\n }\n ]\n }\n ]\n }\n ]\n }\n\n ]\n }\n\n newVirtualDOM.attributes.class = newVirtualDOM.attributes.class ? `${newVirtualDOM.attributes.class} ${this.options.classes.table}` : this.options.classes.table\n\n if (this.options.tableRender) {\n const renderedTableVirtualDOM : (elementNodeType | void) = this.options.tableRender(this.data, newVirtualDOM, \"message\")\n if (renderedTableVirtualDOM) {\n newVirtualDOM = renderedTableVirtualDOM\n }\n }\n\n const diff = this._dd.diff(this._virtualDOM, newVirtualDOM)\n this._dd.apply(this.dom, diff)\n this._virtualDOM = newVirtualDOM\n\n }\n\n /**\n * Add custom event listener\n */\n on(event: string, callback: () => void) {\n this._events[event] = this._events[event] || []\n this._events[event].push(callback)\n }\n\n /**\n * Remove custom event listener\n */\n off(event: string, callback: () => void) {\n if (event in this._events === false) return\n this._events[event].splice(this._events[event].indexOf(callback), 1)\n }\n\n /**\n * Fire custom event\n */\n emit(event: string, ...args) {\n if (event in this._events === false) return\n for (let i = 0; i < this._events[event].length; i++) {\n this._events[event][i](...args)\n }\n }\n}\n","import {\n isObject\n} from \"../helpers\"\n\ninterface csvConvertUserOptions {\n lineDelimiter?: string,\n columnDelimiter?: string\n removeDoubleQuotes?: boolean\n data: string,\n headings?: string[],\n}\n\n\n/**\n * Convert CSV data to fit the format used in the table.\n */\nexport const convertCSV = function(userOptions : csvConvertUserOptions) {\n let obj\n const defaults = {\n lineDelimiter: \"\\n\",\n columnDelimiter: \",\",\n removeDoubleQuotes: false\n }\n\n // Check for the options object\n if (!isObject(userOptions)) {\n return false\n }\n\n const options = {\n ...defaults,\n ...userOptions\n }\n\n if (options.data.length) {\n // Import CSV\n obj = {\n data: []\n }\n\n // Split the string into rows\n const rows : string[] = options.data.split(options.lineDelimiter)\n\n if (rows.length) {\n\n if (options.headings) {\n obj.headings = rows[0].split(options.columnDelimiter)\n if (options.removeDoubleQuotes) {\n obj.headings = obj.headings.map((e: string) => e.trim().replace(/(^\"|\"$)/g, \"\"))\n }\n rows.shift()\n }\n\n rows.forEach((row: string, i: number) => {\n obj.data[i] = []\n\n // Split the rows into values\n const values = row.split(options.columnDelimiter)\n\n if (values.length) {\n values.forEach((value: string) => {\n if (options.removeDoubleQuotes) {\n value = value.trim().replace(/(^\"|\"$)/g, \"\")\n }\n obj.data[i].push(value)\n })\n }\n })\n }\n\n if (obj) {\n return obj\n }\n }\n\n return false\n}\n","import {\n isJson,\n isObject\n} from \"../helpers\"\n\ninterface jsonConvertUserOptions {\n lineDelimiter?: string,\n columnDelimiter?: string\n removeDoubleQuotes?: boolean\n data: string,\n headings?: string[],\n}\n\n/**\n * Convert JSON data to fit the format used in the table.\n */\nexport const convertJSON = function(userOptions : jsonConvertUserOptions) {\n let obj\n const defaults = {\n data: \"\"\n }\n\n // Check for the options object\n if (!isObject(userOptions)) {\n return false\n }\n\n const options = {\n ...defaults,\n ...userOptions\n }\n\n if (options.data.length || isObject(options.data)) {\n // Import JSON\n const json = isJson(options.data) ? JSON.parse(options.data) : false\n\n // Valid JSON string\n if (json) {\n obj = {\n headings: [],\n data: []\n }\n\n json.forEach((data: { [key: string]: string | number | boolean | null | undefined}, i: number) => {\n obj.data[i] = []\n Object.entries(data).forEach(([column, value]) => {\n if (!obj.headings.includes(column)) {\n obj.headings.push(column)\n }\n obj.data[i].push(value)\n })\n })\n } else {\n console.warn(\"That's not valid JSON!\")\n }\n\n if (obj) {\n return obj\n }\n }\n\n return false\n}\n","import {\n isObject\n} from \"../helpers\"\nimport {DataTable} from \"../datatable\"\nimport {\n cellType,\n headerCellType\n} from \"../types\"\n\n/**\n * Export table to CSV\n */\n\ninterface csvUserOptions {\n download?: boolean,\n skipColumn?: number[],\n lineDelimiter?: string,\n columnDelimiter?: string,\n selection?: number | number[],\n filename?: string,\n}\n\n\nexport const exportCSV = function(dt: DataTable, userOptions: csvUserOptions = {}) {\n if (!dt.hasHeadings && !dt.hasRows) return false\n\n const defaults = {\n download: true,\n skipColumn: [],\n lineDelimiter: \"\\n\",\n columnDelimiter: \",\"\n }\n\n // Check for the options object\n if (!isObject(userOptions)) {\n return false\n }\n\n const options = {\n ...defaults,\n ...userOptions\n }\n const columnShown = (index: number) => !options.skipColumn.includes(index) && !dt.columns.settings[index]?.hidden\n let rows : (string | number | boolean | object | undefined | null)[][] = []\n const headers = dt.data.headings.filter((_heading: headerCellType, index: number) => columnShown(index)).map((header: headerCellType) => header.text ?? header.data)\n // Include headings\n rows[0] = headers\n\n // Selection or whole table\n if (options.selection) {\n // Page number\n if (Array.isArray(options.selection)) {\n // Array of page numbers\n for (let i = 0; i < options.selection.length; i++) {\n rows = rows.concat(dt.pages[options.selection[i] - 1].map((row: {row: cellType[], index: number}) => row.row.filter((_cell: cellType, index: number) => columnShown(index)).map((cell: cellType) => cell.text ?? cell.data)))\n }\n\n } else {\n rows = rows.concat(dt.pages[options.selection - 1].map((row: {row: cellType[], index: number}) => row.row.filter((_cell: cellType, index: number) => columnShown(index)).map((cell: cellType) => cell.text ?? cell.data)))\n }\n } else {\n rows = rows.concat(dt.data.data.map((row: cellType[]) => row.filter((_cell: cellType, index: number) => columnShown(index)).map((cell: cellType) => cell.text ?? cell.data)))\n }\n\n // Only proceed if we have data\n if (rows.length) {\n let str = \"\"\n rows.forEach(row => {\n row.forEach((cell: (string | number | boolean | object | undefined | null)) => {\n if (typeof cell === \"string\") {\n cell = cell.trim()\n cell = cell.replace(/\\s{2,}/g, \" \")\n cell = cell.replace(/\\n/g, \" \")\n cell = cell.replace(/\"/g, \"\\\"\\\"\")\n //have to manually encode \"#\" as encodeURI leaves it as is.\n cell = cell.replace(/#/g, \"%23\")\n if (cell.includes(\",\")) {\n cell = `\"${cell}\"`\n }\n }\n str += cell + options.columnDelimiter\n })\n // Remove trailing column delimiter\n str = str.trim().substring(0, str.length - 1)\n\n // Apply line delimiter\n str += options.lineDelimiter\n })\n\n // Remove trailing line delimiter\n str = str.trim().substring(0, str.length - 1)\n\n // Download\n if (options.download) {\n // Create a link to trigger the download\n const link = document.createElement(\"a\")\n link.href = encodeURI(`data:text/csv;charset=utf-8,${str}`)\n link.download = `${options.filename || \"datatable_export\"}.csv`\n\n // Append the link\n document.body.appendChild(link)\n\n // Trigger the download\n link.click()\n\n // Remove the link\n document.body.removeChild(link)\n }\n\n return str\n }\n\n return false\n}\n","import {\n isObject\n} from \"../helpers\"\nimport {DataTable} from \"../datatable\"\nimport {\n cellType,\n headerCellType,\n elementNodeType\n} from \"../types\"\n/**\n * Export table to JSON\n */\n\n interface jsonUserOptions {\n download?: boolean,\n skipColumn?: number[],\n replacer?: null | ((key, value) => string) | (string | number)[],\n space?: number,\n selection?: number | number[],\n filename?: string,\n }\n\n\nexport const exportJSON = function(dt: DataTable, userOptions: jsonUserOptions = {}) {\n if (!dt.hasHeadings && !dt.hasRows) return false\n\n\n const defaults = {\n download: true,\n skipColumn: [],\n replacer: null,\n space: 4\n }\n\n // Check for the options object\n if (!isObject(userOptions)) {\n return false\n }\n\n const options = {\n ...defaults,\n ...userOptions\n }\n\n const columnShown = (index: number) => !options.skipColumn.includes(index) && !dt.columns.settings[index]?.hidden\n\n let rows : (string | number | boolean | object | undefined | null)[][] = []\n // Selection or whole table\n if (options.selection) {\n // Page number\n if (Array.isArray(options.selection)) {\n // Array of page numbers\n for (let i = 0; i < options.selection.length; i++) {\n rows = rows.concat(dt.pages[options.selection[i] - 1].map((row: {row: cellType[], index: number}) => row.row.filter((_cell: cellType, index: number) => columnShown(index)).map((cell: cellType) => cell.data)))\n }\n } else {\n rows = rows.concat(dt.pages[options.selection - 1].map((row: {row: cellType[], index: number}) => row.row.filter((_cell: cellType, index: number) => columnShown(index)).map((cell: cellType) => cell.data)))\n }\n } else {\n rows = rows.concat(dt.data.data.map((row: cellType[]) => row.filter((_cell: cellType, index: number) => columnShown(index)).map((cell: cellType) => cell.data)))\n }\n\n const headers = dt.data.headings.filter((_heading: headerCellType, index: number) => columnShown(index)).map((header: headerCellType) => header.text ?? String(header.data))\n\n // Only proceed if we have data\n if (rows.length) {\n const arr: (void | { [key: string]: (string | number | boolean | undefined | null | elementNodeType[])})[] = []\n rows.forEach((row: (string | number | boolean | object | undefined | null)[], x: number) => {\n arr[x] = arr[x] || {}\n row.forEach((cell: (string | number | boolean | object | undefined | null), i: number) => {\n arr[x][headers[i]] = cell\n })\n })\n\n // Convert the array of objects to JSON string\n const str = JSON.stringify(arr, options.replacer, options.space)\n\n // Download\n if (options.download) {\n // Create a link to trigger the download\n\n const blob = new Blob(\n [str],\n {\n type: \"data:application/json;charset=utf-8\"\n }\n )\n const url = URL.createObjectURL(blob)\n\n\n const link = document.createElement(\"a\")\n link.href = url\n link.download = `${options.filename || \"datatable_export\"}.json`\n\n // Append the link\n document.body.appendChild(link)\n\n // Trigger the download\n link.click()\n\n // Remove the link\n document.body.removeChild(link)\n URL.revokeObjectURL(url)\n }\n\n return str\n }\n\n return false\n}\n","import {\n isObject\n} from \"../helpers\"\nimport {DataTable} from \"../datatable\"\nimport {\n cellType,\n headerCellType\n} from \"../types\"\n/**\n * Export table to SQL\n */\n\n interface sqlUserOptions {\n download?: boolean,\n skipColumn?: number[],\n tableName?: string,\n selection?: number | number[],\n filename?: string,\n }\n\nexport const exportSQL = function(dt: DataTable, userOptions : sqlUserOptions = {}) {\n if (!dt.hasHeadings && !dt.hasRows) return false\n\n const defaults = {\n download: true,\n skipColumn: [],\n tableName: \"myTable\"\n }\n\n // Check for the options object\n if (!isObject(userOptions)) {\n return false\n }\n\n const options = {\n ...defaults,\n ...userOptions\n }\n const columnShown = (index: number) => !options.skipColumn.includes(index) && !dt.columns.settings[index]?.hidden\n let rows : (string | number | boolean | object | undefined | null)[][] = []\n // Selection or whole table\n if (options.selection) {\n // Page number\n if (Array.isArray(options.selection)) {\n // Array of page numbers\n for (let i = 0; i < options.selection.length; i++) {\n rows = rows.concat(dt.pages[options.selection[i] - 1].map((row: {row: cellType[], index: number}) => row.row.filter((_cell: cellType, index: number) => columnShown(index)).map((cell: cellType) => cell.text ?? cell.data)))\n }\n\n } else {\n rows = rows.concat(dt.pages[options.selection - 1].map((row: {row: cellType[], index: number}) => row.row.filter((_cell: cellType, index: number) => columnShown(index)).map((cell: cellType) => cell.text ?? cell.data)))\n }\n } else {\n rows = rows.concat(dt.data.data.map((row: cellType[]) => row.filter((_cell: cellType, index: number) => columnShown(index)).map((cell: cellType) => cell.text ?? cell.data)))\n }\n\n const headers = dt.data.headings.filter((_heading: headerCellType, index: number) => columnShown(index)).map((header: headerCellType) => header.text ?? String(header.data))\n // Only proceed if we have data\n if (rows.length) {\n // Begin INSERT statement\n let str = `INSERT INTO \\`${options.tableName}\\` (`\n\n // Convert table headings to column names\n headers.forEach((header: string) => {\n str += `\\`${header}\\`,`\n })\n\n // Remove trailing comma\n str = str.trim().substring(0, str.length - 1)\n\n // Begin VALUES\n str += \") VALUES \"\n\n // Iterate rows and convert cell data to column values\n\n rows.forEach((row: (string | number | boolean | object | undefined | null)[]) => {\n str += \"(\"\n row.forEach((cell: (string | number | boolean | object | undefined | null)) => {\n if (typeof cell === \"string\") {\n str += `\"${cell}\",`\n } else {\n str += `${cell},`\n }\n })\n // Remove trailing comma\n str = str.trim().substring(0, str.length - 1)\n\n // end VALUES\n str += \"),\"\n\n })\n\n // Remove trailing comma\n str = str.trim().substring(0, str.length - 1)\n\n // Add trailing colon\n str += \";\"\n\n if (options.download) {\n str = `data:application/sql;charset=utf-8,${str}`\n }\n\n // Download\n if (options.download) {\n // Create a link to trigger the download\n const link = document.createElement(\"a\")\n link.href = encodeURI(str)\n link.download = `${options.filename || \"datatable_export\"}.sql`\n\n // Append the link\n document.body.appendChild(link)\n\n // Trigger the download\n link.click()\n\n // Remove the link\n document.body.removeChild(link)\n }\n\n return str\n }\n\n return false\n}\n","import {\n isObject\n} from \"../helpers\"\nimport {DataTable} from \"../datatable\"\nimport {\n cellType,\n headerCellType\n} from \"../types\"\n/**\n * Export table to TXT\n */\n interface txtUserOptions {\n download?: boolean,\n skipColumn?: number[],\n lineDelimiter?: string,\n columnDelimiter?: string,\n selection?: number | number[],\n filename?: string,\n }\n\n\nexport const exportTXT = function(dt: DataTable, userOptions : txtUserOptions = {}) {\n if (!dt.hasHeadings && !dt.hasRows) return false\n\n const defaults = {\n download: true,\n skipColumn: [],\n lineDelimiter: \"\\n\",\n columnDelimiter: \",\"\n }\n\n // Check for the options object\n if (!isObject(userOptions)) {\n return false\n }\n\n const options = {\n ...defaults,\n ...userOptions\n }\n\n const columnShown = (index: number) => !options.skipColumn.includes(index) && !dt.columns.settings[index]?.hidden\n\n let rows : (string | number | boolean | object | undefined | null)[][] = []\n const headers = dt.data.headings.filter((_heading: headerCellType, index: number) => columnShown(index)).map((header: headerCellType) => header.text ?? header.data)\n // Include headings\n rows[0] = headers\n\n // Selection or whole table\n if (options.selection) {\n // Page number\n if (Array.isArray(options.selection)) {\n // Array of page numbers\n for (let i = 0; i < options.selection.length; i++) {\n rows = rows.concat(dt.pages[options.selection[i] - 1].map((row: {row: cellType[], index: number}) => row.row.filter((_cell: cellType, index: number) => columnShown(index)).map((cell: cellType) => cell.data)))\n }\n } else {\n rows = rows.concat(dt.pages[options.selection - 1].map((row: {row: cellType[], index: number}) => row.row.filter((_cell: cellType, index: number) => columnShown(index)).map((cell: cellType) => cell.data)))\n }\n } else {\n rows = rows.concat(dt.data.data.map((row: cellType[]) => row.filter((_cell: cellType, index: number) => columnShown(index)).map((cell: cellType) => cell.data)))\n }\n\n // Only proceed if we have data\n if (rows.length) {\n let str = \"\"\n\n rows.forEach(row => {\n row.forEach((cell: (string | number | boolean | object | undefined | null)) => {\n if (typeof cell === \"string\") {\n cell = cell.trim()\n cell = cell.replace(/\\s{2,}/g, \" \")\n cell = cell.replace(/\\n/g, \" \")\n cell = cell.replace(/\"/g, \"\\\"\\\"\")\n //have to manually encode \"#\" as encodeURI leaves it as is.\n cell = cell.replace(/#/g, \"%23\")\n if (cell.includes(\",\")) {\n cell = `\"${cell}\"`\n }\n }\n str += cell + options.columnDelimiter\n })\n // Remove trailing column delimiter\n str = str.trim().substring(0, str.length - 1)\n\n // Apply line delimiter\n str += options.lineDelimiter\n\n })\n\n // Remove trailing line delimiter\n str = str.trim().substring(0, str.length - 1)\n\n if (options.download) {\n str = `data:text/csv;charset=utf-8,${str}`\n }\n // Download\n if (options.download) {\n // Create a link to trigger the download\n const link = document.createElement(\"a\")\n link.href = encodeURI(str)\n link.download = `${options.filename || \"datatable_export\"}.txt`\n\n // Append the link\n document.body.appendChild(link)\n\n // Trigger the download\n link.click()\n\n // Remove the link\n document.body.removeChild(link)\n }\n\n return str\n }\n\n return false\n}\n","/**\n* Default config\n* @type {Object}\n*/\nimport {Editor} from \"./editor\"\n\nexport const defaultConfig = {\n classes: {\n row: \"datatable-editor-row\",\n form: \"datatable-editor-form\",\n item: \"datatable-editor-item\",\n menu: \"datatable-editor-menu\",\n save: \"datatable-editor-save\",\n block: \"datatable-editor-block\",\n cancel: \"datatable-editor-cancel\",\n close: \"datatable-editor-close\",\n inner: \"datatable-editor-inner\",\n input: \"datatable-editor-input\",\n label: \"datatable-editor-label\",\n modal: \"datatable-editor-modal\",\n action: \"datatable-editor-action\",\n header: \"datatable-editor-header\",\n wrapper: \"datatable-editor-wrapper\",\n editable: \"datatable-editor-editable\",\n container: \"datatable-editor-container\",\n separator: \"datatable-editor-separator\"\n },\n\n labels: {\n closeX: \"x\",\n editCell: \"Edit Cell\",\n editRow: \"Edit Row\",\n removeRow: \"Remove Row\",\n reallyRemove: \"Are you sure?\",\n reallyCancel: \"Do you really want to cancel?\",\n save: \"Save\",\n cancel: \"Cancel\"\n },\n\n cancelModal: editor => confirm(editor.options.labels.reallyCancel),\n\n // edit inline instead of using a modal lay-over for editing content\n inline: true,\n\n // include hidden columns in the editor\n hiddenColumns: false,\n\n // enable the context menu\n contextMenu: true,\n\n // event to start editing\n clickEvent: \"dblclick\",\n\n // indexes of columns not to be edited\n excludeColumns: [],\n\n // set the context menu items\n menuItems: [\n {\n text: (editor: Editor) => editor.options.labels.editCell,\n action: (editor: Editor, _event: Event) => {\n if (!(editor.event.target instanceof Element)) {\n return\n }\n const cell = editor.event.target.closest(\"td\")\n return editor.editCell(cell)\n }\n },\n {\n text: (editor: Editor) => editor.options.labels.editRow,\n action: (editor: Editor, _event: Event) => {\n if (!(editor.event.target instanceof Element)) {\n return\n }\n const row = editor.event.target.closest(\"tr\")\n return editor.editRow(row)\n }\n },\n {\n separator: true\n },\n {\n text: (editor: Editor) => editor.options.labels.removeRow,\n action: (editor: Editor, _event: Event) => {\n if (!(editor.event.target instanceof Element)) {\n return\n }\n if (confirm(editor.options.labels.reallyRemove)) {\n const row = editor.event.target.closest(\"tr\")\n editor.removeRow(row)\n }\n }\n }\n ]\n}\n","// Source: https://www.freecodecamp.org/news/javascript-debounce-example/\n\nexport const debounce = function(func: () => void, timeout = 300) {\n let timer: number\n return (..._args: any[]) => {\n clearTimeout(timer)\n timer = window.setTimeout(() => func(), timeout)\n }\n}\n","import {\n createElement,\n escapeText,\n visibleToColumnIndex,\n columnToVisibleIndex\n} from \"../helpers\"\nimport {\n cellType,\n rowRenderType,\n elementNodeType\n} from \"../types\"\nimport {DataTable} from \"../datatable\"\nimport {parseDate} from \"../date\"\n\nimport {\n defaultConfig\n} from \"./config\"\nimport {\n debounce\n} from \"./helpers\"\nimport {menuItemType, dataType, EditorOptions} from \"./types\"\n\n\n/**\n * Main lib\n * @param {Object} dataTable Target dataTable\n * @param {Object} options User config\n */\nexport class Editor {\n menuOpen: boolean\n\n containerDOM: HTMLElement\n\n data: dataType\n\n disabled: boolean\n\n dt: DataTable\n\n editing: boolean\n\n editingCell: boolean\n\n editingRow: boolean\n\n event: Event\n\n events: { [key: string]: () => void}\n\n initialized: boolean\n\n limits: {x: number, y: number}\n\n menuDOM: HTMLElement\n\n modalDOM: HTMLElement | false\n\n options: EditorOptions\n\n originalRowRender: rowRenderType | false\n\n rect: {width: number, height: number}\n\n wrapperDOM: HTMLElement\n\n constructor(dataTable: DataTable, options = {}) {\n this.dt = dataTable\n this.options = {\n ...defaultConfig,\n ...options\n }\n }\n\n /**\n * Init instance\n * @return {Void}\n */\n init() {\n if (this.initialized) {\n return\n }\n this.dt.wrapperDOM.classList.add(this.options.classes.editable)\n if (this.options.inline) {\n this.originalRowRender = this.dt.options.rowRender\n this.dt.options.rowRender = (row, tr, index) => {\n let newTr = this.rowRender(row, tr, index)\n if (this.originalRowRender) {\n newTr = this.originalRowRender(row, newTr, index)\n }\n return newTr\n }\n }\n if (this.options.contextMenu) {\n this.containerDOM = createElement(\"div\", {\n id: this.options.classes.container\n })\n this.wrapperDOM = createElement(\"div\", {\n class: this.options.classes.wrapper\n })\n this.menuDOM = createElement(\"ul\", {\n class: this.options.classes.menu\n })\n if (this.options.menuItems && this.options.menuItems.length) {\n this.options.menuItems.forEach((item: menuItemType) => {\n const li = createElement(\"li\", {\n class: item.separator ? this.options.classes.separator : this.options.classes.item\n })\n if (!item.separator) {\n const a = createElement(\"a\", {\n class: this.options.classes.action,\n href: item.url || \"#\",\n html: typeof item.text === \"function\" ? item.text(this) : item.text\n })\n li.appendChild(a)\n if (item.action && typeof item.action === \"function\") {\n a.addEventListener(\"click\", (event: Event) => {\n event.preventDefault()\n item.action(this, event)\n })\n }\n }\n this.menuDOM.appendChild(li)\n })\n }\n this.wrapperDOM.appendChild(this.menuDOM)\n this.containerDOM.appendChild(this.wrapperDOM)\n this.updateMenu()\n }\n this.data = {}\n this.menuOpen = false\n this.editing = false\n this.editingRow = false\n this.editingCell = false\n this.bindEvents()\n setTimeout(() => {\n this.initialized = true\n this.dt.emit(\"editable.init\")\n }, 10)\n }\n\n /**\n * Bind events to DOM\n * @return {Void}\n */\n bindEvents() {\n this.events = {\n keydown: this.keydown.bind(this),\n click: this.click.bind(this)\n }\n // listen for click / double-click\n this.dt.dom.addEventListener(this.options.clickEvent, this.events.click)\n // listen for right-click\n document.addEventListener(\"keydown\", this.events.keydown)\n\n if (this.options.contextMenu) {\n this.events.context = this.context.bind(this)\n this.events.updateMenu = this.updateMenu.bind(this)\n this.events.dismissMenu = this.dismissMenu.bind(this)\n this.events.reset = debounce(() => this.events.updateMenu(), 50)\n\n // listen for right-click\n this.dt.dom.addEventListener(\"contextmenu\", this.events.context)\n // listen for click everywhere except the menu\n document.addEventListener(\"click\", this.events.dismissMenu)\n // Reset contextmenu on browser window changes\n window.addEventListener(\"resize\", this.events.reset)\n window.addEventListener(\"scroll\", this.events.reset)\n }\n }\n\n /**\n * contextmenu listener\n * @param {Object} event Event\n * @return {Void}\n */\n context(event: MouseEvent) {\n const target = event.target\n if (!(target instanceof Element)) {\n return\n }\n this.event = event\n\n const cell = target.closest(\"tbody td\")\n if (!this.disabled && cell) {\n event.preventDefault()\n // get the mouse position\n let x = event.pageX\n let y = event.pageY\n // check if we're near the right edge of window\n if (x > this.limits.x) {\n x -= this.rect.width\n }\n // check if we're near the bottom edge of window\n if (y > this.limits.y) {\n y -= this.rect.height\n }\n this.wrapperDOM.style.top = `${y}px`\n this.wrapperDOM.style.left = `${x}px`\n this.openMenu()\n this.updateMenu()\n }\n }\n\n /**\n * dblclick listener\n * @param {Object} event Event\n * @return {Void}\n */\n click(event: MouseEvent) {\n const target = event.target\n if (!(target instanceof Element)) {\n return\n }\n if (this.editing && this.data && this.editingCell) {\n const input = this.modalDOM ?\n (this.modalDOM.querySelector(`input.${this.options.classes.input}[type=text]`) as HTMLInputElement) :\n (this.dt.wrapperDOM.querySelector(`input.${this.options.classes.input}[type=text]`) as HTMLInputElement)\n this.saveCell(input.value)\n } else if (!this.editing) {\n const cell = target.closest(\"tbody td\") as HTMLTableCellElement\n if (cell) {\n this.editCell(cell)\n event.preventDefault()\n }\n }\n }\n\n /**\n * keydown listener\n * @param {Object} event Event\n * @return {Void}\n */\n keydown(event: KeyboardEvent) {\n if (this.modalDOM) {\n if (event.key === \"Escape\") { // close button\n if (this.options.cancelModal(this)) {\n this.closeModal()\n }\n } else if (event.key === \"Enter\") { // save button\n // Save\n if (this.editingCell) {\n const input = (this.modalDOM.querySelector(`input.${this.options.classes.input}[type=text]`) as HTMLInputElement)\n this.saveCell(input.value)\n } else {\n const values = (Array.from(this.modalDOM.querySelectorAll(`input.${this.options.classes.input}[type=text]`)) as HTMLInputElement[]).map(input => input.value.trim())\n this.saveRow(values, this.data.row)\n }\n }\n } else if (this.editing && this.data) {\n if (event.key === \"Enter\") {\n // Enter key saves\n if (this.editingCell) {\n const input = (this.dt.wrapperDOM.querySelector(`input.${this.options.classes.input}[type=text]`) as HTMLInputElement)\n this.saveCell(input.value)\n } else if (this.editingRow) {\n const values = (Array.from(this.dt.wrapperDOM.querySelectorAll(`input.${this.options.classes.input}[type=text]`)) as HTMLInputElement[]).map(input => input.value.trim())\n this.saveRow(values, this.data.row)\n }\n } else if (event.key === \"Escape\") {\n // Escape key reverts\n if (this.editingCell) {\n this.saveCell(this.data.content)\n } else if (this.editingRow) {\n this.saveRow(null, this.data.row)\n }\n }\n }\n }\n\n /**\n * Edit cell\n * @param {Object} td The HTMLTableCellElement\n * @return {Void}\n */\n editCell(td: HTMLTableCellElement) {\n const columnIndex = visibleToColumnIndex(td.cellIndex, this.dt.columns.settings)\n if (this.options.excludeColumns.includes(columnIndex)) {\n this.closeMenu()\n return\n }\n const rowIndex = parseInt(td.parentElement.dataset.index, 10)\n const row = this.dt.data.data[rowIndex]\n const cell = row[columnIndex]\n\n this.data = {\n cell,\n rowIndex,\n columnIndex,\n content: cell.text || String(cell.data)\n }\n this.editing = true\n this.editingCell = true\n if (this.options.inline) {\n this.dt.update()\n } else {\n this.editCellModal()\n }\n this.closeMenu()\n }\n\n editCellModal() {\n const cell = this.data.cell\n const columnIndex = this.data.columnIndex\n const label = this.dt.data.headings[columnIndex].text || String(this.dt.data.headings[columnIndex].data)\n const template = [\n `
      `,\n `
      `,\n `

      ${this.options.labels.editCell}

      `,\n ``,\n \"
      \",\n `
      `,\n `
      `,\n `
      `,\n ``,\n ``,\n \"
      \",\n `
      `,\n ``,\n ``,\n \"
      \",\n \"
      \",\n \"
      \",\n \"
      \"\n ].join(\"\")\n const modalDOM = createElement(\"div\", {\n class: this.options.classes.modal,\n html: template\n })\n this.modalDOM = modalDOM\n this.openModal()\n const input = (modalDOM.querySelector(`input.${this.options.classes.input}[type=text]`) as HTMLInputElement)\n input.focus()\n input.selectionStart = input.selectionEnd = input.value.length\n // Close / save\n modalDOM.addEventListener(\"click\", (event: Event) => {\n const target = event.target\n if (!(target instanceof Element)) {\n return\n }\n if (target.hasAttribute(\"data-editor-cancel\")) { // cancel button\n event.preventDefault()\n if (this.options.cancelModal(this)) {\n this.closeModal()\n }\n } else if (target.hasAttribute(\"data-editor-save\")) { // save button\n event.preventDefault()\n // Save\n this.saveCell(input.value)\n }\n })\n }\n\n /**\n * Save edited cell\n * @param {Object} row The HTMLTableCellElement\n * @param {String} value Cell content\n * @return {Void}\n */\n saveCell(value: string) {\n const oldData = this.data.content\n // Get the type of that column\n const type = this.dt.columns.settings[this.data.columnIndex].type || this.dt.options.type\n const stringValue = value.trim()\n let cell\n if (type === \"number\") {\n cell = {data: parseFloat(stringValue)}\n } else if (type === \"boolean\") {\n if ([\"\", \"false\", \"0\"].includes(stringValue)) {\n cell = {data: false,\n text: \"false\",\n order: 0}\n } else {\n cell = {data: true,\n text: \"true\",\n order: 1}\n }\n } else if (type === \"html\") {\n cell = {data: [\n {nodeName: \"#text\",\n data: value}\n ],\n text: value,\n order: value}\n } else if (type === \"string\") {\n cell = {data: value}\n } else if (type === \"date\") {\n const format = this.dt.columns.settings[this.data.columnIndex].format || this.dt.options.format\n cell = {data: value,\n order: parseDate(String(value), format)}\n } else {\n cell = {data: value}\n }\n // Set the cell content\n this.dt.data.data[this.data.rowIndex][this.data.columnIndex] = cell\n this.closeModal()\n const rowIndex = this.data.rowIndex\n const columnIndex = this.data.columnIndex\n this.data = {}\n this.dt.update(true)\n this.editing = false\n this.editingCell = false\n this.dt.emit(\"editable.save.cell\", value, oldData, rowIndex, columnIndex)\n }\n\n /**\n * Edit row\n * @param {Object} row The HTMLTableRowElement\n * @return {Void}\n */\n editRow(tr: HTMLElement) {\n if (!tr || tr.nodeName !== \"TR\" || this.editing) return\n const rowIndex = parseInt(tr.dataset.index, 10)\n const row = this.dt.data.data[rowIndex]\n this.data = {\n row,\n rowIndex\n }\n this.editing = true\n this.editingRow = true\n if (this.options.inline) {\n this.dt.update()\n } else {\n this.editRowModal()\n }\n this.closeMenu()\n }\n\n editRowModal() {\n const row = this.data.row\n\n const template = [\n `
      `,\n `
      `,\n `

      ${this.options.labels.editRow}

      `,\n ``,\n \"
      \",\n `
      `,\n `
      `,\n `
      `,\n ``,\n ``,\n \"
      \",\n \"
      \",\n \"
      \",\n \"
      \"\n ].join(\"\")\n const modalDOM = createElement(\"div\", {\n class: this.options.classes.modal,\n html: template\n })\n const inner = modalDOM.firstElementChild\n if (!inner) {\n return\n }\n const form = inner.lastElementChild?.firstElementChild\n if (!form) {\n return\n }\n // Add the inputs for each cell\n row.forEach((cell: cellType, i: number) => {\n const columnSettings = this.dt.columns.settings[i]\n if ((!columnSettings.hidden || (columnSettings.hidden && this.options.hiddenColumns)) && !this.options.excludeColumns.includes(i)) {\n const label = this.dt.data.headings[i].text || String(this.dt.data.headings[i].data)\n form.insertBefore(createElement(\"div\", {\n class: this.options.classes.row,\n html: [\n `
      `,\n ``,\n ``,\n \"
      \"\n ].join(\"\")\n }), form.lastElementChild)\n }\n })\n this.modalDOM = modalDOM\n this.openModal()\n // Grab the inputs\n const inputs = Array.from(form.querySelectorAll(`input.${this.options.classes.input}[type=text]`)) as HTMLInputElement[]\n\n // Close / save\n modalDOM.addEventListener(\"click\", (event: MouseEvent) => {\n const target = event.target\n if (!(target instanceof Element)) {\n return\n }\n if (target.hasAttribute(\"data-editor-cancel\")) { // cancel button\n if (this.options.cancelModal(this)) {\n this.closeModal()\n }\n } else if (target.hasAttribute(\"data-editor-save\")) { // save button\n // Save\n const values = inputs.map((input: HTMLInputElement) => input.value.trim())\n this.saveRow(values, this.data.row)\n }\n })\n }\n\n /**\n * Save edited row\n * @param {Object} row The HTMLTableRowElement\n * @param {Array} data Cell data\n * @return {Void}\n */\n saveRow(data: string[], row: cellType[]) {\n // Store the old data for the emitter\n const oldData = row.map((cell: cellType) => cell.text ?? String(cell.data))\n if (data) {\n let valueCounter = 0\n this.dt.data.data[this.data.rowIndex] = row.map((oldItem, colIndex) => {\n if (this.options.excludeColumns.includes(colIndex) || this.dt.columns.settings[colIndex].hidden) {\n return oldItem\n }\n const type = this.dt.columns.settings[colIndex].type || this.dt.options.type\n const value = data[valueCounter++]\n let cell\n if (type === \"number\") {\n cell = {data: parseFloat(value)}\n } else if (type === \"boolean\") {\n if ([\"\", \"false\", \"0\"].includes(value)) {\n cell = {data: false,\n text: \"false\",\n order: 0}\n } else {\n cell = {data: true,\n text: \"true\",\n order: 1}\n }\n } else if (type === \"html\") {\n cell = {\n data: [\n {nodeName: \"#text\",\n data: value}\n ],\n text: value,\n order: value\n }\n } else if (type === \"string\") {\n cell = {data: value}\n } else if (type === \"date\") {\n const format = this.dt.columns.settings[colIndex].format || this.dt.options.format\n cell = {data: value,\n order: parseDate(String(value), format)}\n } else {\n cell = {data: value}\n }\n return cell\n\n })\n }\n\n const updatedRow = this.dt.data.data[this.data.rowIndex]\n const newData = updatedRow.map(cell => cell.text ?? String(cell.data))\n\n this.data = {}\n this.dt.update(true)\n this.closeModal()\n this.editing = false\n this.dt.emit(\"editable.save.row\", newData, oldData, row)\n }\n\n /**\n * Open the row editor modal\n * @return {Void}\n */\n openModal() {\n if (this.modalDOM) {\n document.body.appendChild(this.modalDOM)\n }\n }\n\n /**\n * Close the row editor modal\n * @return {Void}\n */\n closeModal() {\n if (this.editing && this.modalDOM) {\n document.body.removeChild(this.modalDOM)\n this.modalDOM = this.editing = this.editingRow = this.editingCell = false\n }\n }\n\n /**\n * Remove a row\n * @param {Object} tr The HTMLTableRowElement\n * @return {Void}\n */\n removeRow(tr: HTMLElement) {\n if (!tr || tr.nodeName !== \"TR\" || this.editing) return\n const index = parseInt(tr.dataset.index, 10)\n this.dt.rows.remove(index)\n this.closeMenu()\n }\n\n /**\n * Update context menu position\n * @return {Void}\n */\n updateMenu() {\n const scrollX = window.scrollX || window.pageXOffset\n const scrollY = window.scrollY || window.pageYOffset\n this.rect = this.wrapperDOM.getBoundingClientRect()\n this.limits = {\n x: window.innerWidth + scrollX - this.rect.width,\n y: window.innerHeight + scrollY - this.rect.height\n }\n }\n\n /**\n * Dismiss the context menu\n * @param {Object} event Event\n * @return {Void}\n */\n dismissMenu(event: Event) {\n const target = event.target\n if (!(target instanceof Element) || this.wrapperDOM.contains(target)) {\n return\n }\n let valid = true\n if (this.editing) {\n valid = !(target.matches(`input.${this.options.classes.input}[type=text]`))\n }\n if (valid) {\n this.closeMenu()\n }\n }\n\n /**\n * Open the context menu\n * @return {Void}\n */\n openMenu() {\n if (this.editing && this.data && this.editingCell) {\n const input = this.modalDOM ?\n (this.modalDOM.querySelector(`input.${this.options.classes.input}[type=text]`) as HTMLInputElement) :\n (this.dt.wrapperDOM.querySelector(`input.${this.options.classes.input}[type=text]`) as HTMLInputElement)\n\n this.saveCell(input.value)\n }\n document.body.appendChild(this.containerDOM)\n this.menuOpen = true\n this.dt.emit(\"editable.context.open\")\n }\n\n /**\n * Close the context menu\n * @return {Void}\n */\n closeMenu() {\n if (this.menuOpen) {\n this.menuOpen = false\n document.body.removeChild(this.containerDOM)\n this.dt.emit(\"editable.context.close\")\n }\n }\n\n /**\n * Destroy the instance\n * @return {Void}\n */\n destroy() {\n this.dt.dom.removeEventListener(this.options.clickEvent, this.events.click)\n this.dt.dom.removeEventListener(\"contextmenu\", this.events.context)\n document.removeEventListener(\"click\", this.events.dismissMenu)\n document.removeEventListener(\"keydown\", this.events.keydown)\n window.removeEventListener(\"resize\", this.events.reset)\n window.removeEventListener(\"scroll\", this.events.reset)\n if (document.body.contains(this.containerDOM)) {\n document.body.removeChild(this.containerDOM)\n }\n if (this.options.inline) {\n this.dt.options.rowRender = this.originalRowRender\n }\n this.initialized = false\n }\n\n rowRender(row, tr, index) {\n if (!this.data || this.data.rowIndex !== index) {\n return tr\n }\n\n if (this.editingCell) {\n // cell editing\n const cell = tr.childNodes[columnToVisibleIndex(this.data.columnIndex, this.dt.columns.settings)]\n cell.childNodes = [\n {\n nodeName: \"INPUT\",\n attributes: {\n type: \"text\",\n value: this.data.content,\n class: this.options.classes.input\n }\n }\n ]\n } else {\n // row editing\n\n // Add the inputs for each cell\n tr.childNodes.forEach((cell: elementNodeType, i: number) => {\n const index = visibleToColumnIndex(i, this.dt.columns.settings)\n const dataCell = row[index]\n if (!this.options.excludeColumns.includes(index)) {\n const cell = tr.childNodes[i]\n cell.childNodes = [\n {\n nodeName: \"INPUT\",\n attributes: {\n type: \"text\",\n value: escapeText(dataCell.text || String(dataCell.data) || \"\"),\n class: this.options.classes.input\n }\n }\n ]\n }\n })\n\n }\n return tr\n\n }\n}\n\nexport const makeEditable = function(dataTable: DataTable, options = {}) {\n const editor = new Editor(dataTable, options)\n if (dataTable.initialized) {\n editor.init()\n } else {\n dataTable.on(\"datatable.init\", () => editor.init())\n }\n\n return editor\n}\n","/**\n* Default config\n* @type {Object}\n*/\n//import {ColumnFilter} from \"./column_filter\"\n\nexport const defaultConfig = {\n classes: {\n button: \"datatable-column-filter-button\",\n menu: \"datatable-column-filter-menu\",\n container: \"datatable-column-filter-container\",\n wrapper: \"datatable-column-filter-wrapper\"\n },\n labels: {\n button: \"Filter columns within the table\" // The filter button title\n },\n hiddenColumns: []\n}\n","import {DataTable} from \"../datatable\"\nimport {createElement} from \"../helpers\"\n\nimport {\n defaultConfig\n} from \"./config\"\n\nimport {ColumnFilterOptions} from \"./types\"\n\nclass ColumnFilter {\n\n addedButtonDOM: boolean\n\n menuOpen: boolean\n\n buttonDOM: HTMLElement\n\n dt: DataTable\n\n events: { [key: string]: () => void}\n\n initialized: boolean\n\n options: ColumnFilterOptions\n\n menuDOM: HTMLElement\n\n containerDOM: HTMLElement\n\n wrapperDOM: HTMLElement\n\n limits: {x: number, y: number}\n\n rect: {width: number, height: number}\n\n event: Event\n\n constructor(dataTable: DataTable, options = {}) {\n this.dt = dataTable\n this.options = {\n ...defaultConfig,\n ...options\n }\n }\n\n init() {\n\n if (this.initialized) {\n return\n }\n\n let buttonDOM : (HTMLElement | null) = this.dt.wrapperDOM.querySelector(`.${this.options.classes.button}`)\n if (!buttonDOM) {\n buttonDOM = createElement(\n \"button\",\n {\n class: this.options.classes.button,\n html: \"▦\"\n }\n )\n // filter button not part of template (could be default template. We add it to search.)\n const searchWrapper = this.dt.wrapperDOM.querySelector(`.${this.dt.options.classes.search}`)\n if (searchWrapper) {\n searchWrapper.appendChild(buttonDOM)\n } else {\n this.dt.wrapperDOM.appendChild(buttonDOM)\n }\n this.addedButtonDOM = true\n }\n this.buttonDOM = buttonDOM\n\n\n this.containerDOM = createElement(\"div\", {\n id: this.options.classes.container\n })\n this.wrapperDOM = createElement(\"div\", {\n class: this.options.classes.wrapper\n })\n this.menuDOM = createElement(\"ul\", {\n class: this.options.classes.menu,\n html: this.dt.data.headings.map(\n (heading, index) => {\n const settings = this.dt.columns.settings[index]\n if (this.options.hiddenColumns.includes(index)) {\n return \"\"\n }\n return `
    • \n \n \n
    • `\n }\n ).join(\"\")\n })\n this.wrapperDOM.appendChild(this.menuDOM)\n this.containerDOM.appendChild(this.wrapperDOM)\n this._measureSpace()\n\n this._bind()\n\n this.initialized = true\n\n }\n\n dismiss() {\n if (this.addedButtonDOM && this.buttonDOM.parentElement) {\n this.buttonDOM.parentElement.removeChild(this.buttonDOM)\n }\n document.removeEventListener(\"click\", this.events.click)\n }\n\n _bind() {\n this.events = {\n click: this._click.bind(this)\n }\n document.addEventListener(\"click\", this.events.click)\n }\n\n _openMenu() {\n document.body.appendChild(this.containerDOM)\n this._measureSpace()\n this.menuOpen = true\n this.dt.emit(\"columnFilter.menu.open\")\n }\n\n _closeMenu() {\n if (this.menuOpen) {\n this.menuOpen = false\n document.body.removeChild(this.containerDOM)\n this.dt.emit(\"columnFilter.menu.close\")\n }\n }\n\n _measureSpace() {\n const scrollX = window.scrollX || window.pageXOffset\n const scrollY = window.scrollY || window.pageYOffset\n this.rect = this.wrapperDOM.getBoundingClientRect()\n this.limits = {\n x: window.innerWidth + scrollX - this.rect.width,\n y: window.innerHeight + scrollY - this.rect.height\n }\n }\n\n _click(event: MouseEvent) {\n const target = event.target\n if (!(target instanceof Element)) {\n return\n }\n this.event = event\n\n if (this.buttonDOM.contains(target)) {\n event.preventDefault()\n if (this.menuOpen) {\n this._closeMenu()\n return\n }\n this._openMenu()\n // get the mouse position\n let x = event.pageX\n let y = event.pageY\n // check if we're near the right edge of window\n if (x > this.limits.x) {\n x -= this.rect.width\n }\n // check if we're near the bottom edge of window\n if (y > this.limits.y) {\n y -= this.rect.height\n }\n this.wrapperDOM.style.top = `${y}px`\n this.wrapperDOM.style.left = `${x}px`\n } else if (this.menuDOM.contains(target)) {\n const li = target.closest(`.${this.options.classes.menu} > li`) as HTMLElement\n if (!li) {\n return\n }\n const checkbox = li.querySelector(\"input[type=checkbox]\") as HTMLInputElement\n if (!checkbox.contains(target)) {\n checkbox.checked = !checkbox.checked\n }\n const column = Number(li.dataset.column)\n if (checkbox.checked) {\n this.dt.columns.show([column])\n } else {\n this.dt.columns.hide([column])\n }\n } else if (this.menuOpen) {\n this._closeMenu()\n }\n }\n\n}\n\n\nexport const addColumnFilter = function(dataTable: DataTable, options = {}) {\n const columnFilter = new ColumnFilter(dataTable, options)\n if (dataTable.initialized) {\n columnFilter.init()\n } else {\n dataTable.on(\"datatable.init\", () => columnFilter.init())\n }\n\n return columnFilter\n}\n"],"names":["stringToObj","this","nodeToObj","defaultConfig","DiffDOM"],"mappings":"AAEA;;AAEG;MACU,QAAQ,GAAG,CAAC,GAA6D,KAAK,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,kBAAiB;AAEpJ;;AAEG;AACU,MAAA,MAAM,GAAG,CAAC,GAAW,KAAI;AAClC,IAAA,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IACV,IAAI;AACA,QAAA,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AACtB,KAAA;AAAC,IAAA,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,CAAC,CAAA;AACZ,KAAA;IACD,OAAO,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;AACpE,EAAC;AAED;;AAEG;MACU,aAAa,GAAG,CAAC,QAAgB,EAAE,KAAgC,KAAI;IAChF,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;AAC5C,IAAA,IAAI,KAAK,IAAI,QAAQ,IAAI,OAAO,KAAK,EAAE;AACnC,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACtB,IAAI,MAAM,KAAK,IAAI,EAAE;AACjB,gBAAA,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;AAC9B,aAAA;AAAM,iBAAA;gBACH,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;AACtC,aAAA;AACJ,SAAA;AACJ,KAAA;AACD,IAAA,OAAO,GAAG,CAAA;AACd,EAAC;AAEM,MAAM,SAAS,GAAG,CAAC,GAAoC,KAAI;AAC9D,IAAA,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;QAC9C,OAAQ,GAAoB,CAAC,IAAI,CAAA;AACpC,KAAA;IACD,IAAI,GAAG,CAAC,UAAU,EAAE;QAChB,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAA2C,KAAK,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAC5G,KAAA;AACD,IAAA,OAAO,EAAE,CAAA;AACb,CAAC,CAAA;AAGM,MAAM,UAAU,GAAG,UAAS,IAAY,EAAA;AAC3C,IAAA,OAAO,IAAI;AACN,SAAA,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;AACtB,SAAA,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;AACrB,SAAA,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;AACrB,SAAA,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;AAChC,CAAC,CAAA;AAGM,MAAM,oBAAoB,GAAG,UAAS,YAAoB,EAAE,OAA6B,EAAA;IAC5F,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,IAAI,WAAW,GAAG,CAAC,CAAA;AACnB,IAAA,OAAO,OAAO,IAAI,YAAY,GAAC,CAAC,CAAC,EAAE;AAC/B,QAAA,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;AAC3C,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;YACxB,OAAO,IAAI,CAAC,CAAA;AACf,SAAA;QACD,WAAW,IAAI,CAAC,CAAA;AACnB,KAAA;IACD,OAAO,WAAW,GAAC,CAAC,CAAA;AACxB,CAAC,CAAA;AAEM,MAAM,oBAAoB,GAAG,UAAS,WAAmB,EAAE,OAA6B,EAAA;IAC3F,IAAI,YAAY,GAAG,WAAW,CAAA;IAC9B,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,OAAO,OAAO,GAAG,WAAW,EAAE;AAC1B,QAAA,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;QACvC,IAAI,cAAc,CAAC,MAAM,EAAE;YACvB,YAAY,IAAI,CAAC,CAAA;AACpB,SAAA;AACD,QAAA,OAAO,EAAE,CAAA;AACZ,KAAA;AACD,IAAA,OAAO,YAAY,CAAA;AACvB,CAAC;;ACjFD,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAM,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,4BAA4B,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,YAAY,iBAAiB,EAAE,CAAC,YAAY,eAAe,EAAE,CAAC,YAAY,gBAAgB,EAAE,CAAC,YAAY,aAAa,EAAE,CAAC,YAAY,gBAAgB,EAAE,CAAC,YAAY,iBAAiB,EAAE,CAAC,YAAY,mBAAmB,EAAE,CAAC,YAAY,gBAAgB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,YAAY,gBAAgB,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,YAAY,iBAAiB,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,YAAY,OAAO,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,YAAY,OAAO,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,gBAAgB,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,YAAY,OAAO,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,YAAY,IAAI,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,YAAY,OAAO,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAC,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,OAAO,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,4BAA4B,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,QAAQ,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAC,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,QAAQ,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,GAAE,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,QAAQ,EAAE,UAAU,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,GAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAM,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,OAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,OAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAM,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,OAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,OAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,OAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAE,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAE,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAM,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,UAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,QAAQ,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,QAAQ,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC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AC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,QAAQ,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAE,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IA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"} \ No newline at end of file diff --git a/docs/demos/dist/umd.js b/docs/demos/dist/umd.js index fae405dc..72d2a3fb 100644 --- a/docs/demos/dist/umd.js +++ b/docs/demos/dist/umd.js @@ -1,6 +1,6 @@ (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.simpleDatatables = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i"[object Object]"===Object.prototype.toString.call(t),e=e=>{let s=!1;try{s=JSON.parse(e)}catch(t){return!1}return!(null===s||!Array.isArray(s)&&!t(s))&&s},s=(t,e)=>{const s=document.createElement(t);if(e&&"object"==typeof e)for(const t in e)"html"===t?s.innerHTML=e[t]:s.setAttribute(t,e[t]);return s},i=t=>["#text","#comment"].includes(t.nodeName)?t.data:t.childNodes?t.childNodes.map((t=>i(t))).join(""):"",n=function(t){return t.replace(/&/g,"&").replace(//g,">").replace(/"/g,""")},a=function(t,e){let s=0,i=0;for(;s0;){var s=e.splice(0,1)[0];t=t.childNodes[s]}return t};function d(t,e,s){var i,n,a,o=e[s._const.action],d=e[s._const.route];[s._const.addElement,s._const.addTextElement].includes(o)||(i=l(t,d));var c={diff:e,node:i};if(s.preDiffApply(c))return!0;switch(o){case s._const.addAttribute:if(!(i&&i instanceof Element))return!1;i.setAttribute(e[s._const.name],e[s._const.value]);break;case s._const.modifyAttribute:if(!(i&&i instanceof Element))return!1;i.setAttribute(e[s._const.name],e[s._const.newValue]),i instanceof HTMLInputElement&&"value"===e[s._const.name]&&(i.value=e[s._const.newValue]);break;case s._const.removeAttribute:if(!(i&&i instanceof Element))return!1;i.removeAttribute(e[s._const.name]);break;case s._const.modifyTextElement:if(!(i&&i instanceof Text))return!1;s.textDiff(i,i.data,e[s._const.oldValue],e[s._const.newValue]);break;case s._const.modifyValue:if(!i||void 0===i.value)return!1;i.value=e[s._const.newValue];break;case s._const.modifyComment:if(!(i&&i instanceof Comment))return!1;s.textDiff(i,i.data,e[s._const.oldValue],e[s._const.newValue]);break;case s._const.modifyChecked:if(!i||void 0===i.checked)return!1;i.checked=e[s._const.newValue];break;case s._const.modifySelected:if(!i||void 0===i.selected)return!1;i.selected=e[s._const.newValue];break;case s._const.replaceElement:i.parentNode.replaceChild(r(e[s._const.newValue],"svg"===e[s._const.newValue].nodeName.toLowerCase(),s),i);break;case s._const.relocateGroup:Array.apply(void 0,new Array(e[s._const.groupLength])).map((function(){return i.removeChild(i.childNodes[e[s._const.from]])})).forEach((function(t,n){0===n&&(a=i.childNodes[e[s._const.to]]),i.insertBefore(t,a||null)}));break;case s._const.removeElement:i.parentNode.removeChild(i);break;case s._const.addElement:var h=(u=d.slice()).splice(u.length-1,1)[0];if(!((i=l(t,u))instanceof Element))return!1;i.insertBefore(r(e[s._const.element],"http://www.w3.org/2000/svg"===i.namespaceURI,s),i.childNodes[h]||null);break;case s._const.removeTextElement:if(!i||3!==i.nodeType)return!1;i.parentNode.removeChild(i);break;case s._const.addTextElement:var u;if(h=(u=d.slice()).splice(u.length-1,1)[0],n=s.document.createTextNode(e[s._const.value]),!(i=l(t,u)).childNodes)return!1;i.insertBefore(n,i.childNodes[h]||null);break;default:console.log("unknown action")}return s.postDiffApply({diff:c.diff,node:c.node,newNode:n}),!0}function c(t,e,s){var i=t[e];t[e]=t[s],t[s]=i}var h=function(t){var e=[];return e.push(t.nodeName),"#text"!==t.nodeName&&"#comment"!==t.nodeName&&t.attributes&&(t.attributes.class&&e.push("".concat(t.nodeName,".").concat(t.attributes.class.replace(/ /g,"."))),t.attributes.id&&e.push("".concat(t.nodeName,"#").concat(t.attributes.id))),e},u=function(t){var e={},s={};return t.forEach((function(t){h(t).forEach((function(t){var i=t in e;i||t in s?i&&(delete e[t],s[t]=!0):e[t]=!0}))})),e},p=function(t,e){var s=u(t),i=u(e),n={};return Object.keys(s).forEach((function(t){i[t]&&(n[t]=!0)})),n},f=function(t){return delete t.outerDone,delete t.innerDone,delete t.valueDone,!t.childNodes||t.childNodes.every(f)},m=function(t){if(Object.prototype.hasOwnProperty.call(t,"data"))return{nodeName:"#text"===t.nodeName?"#text":"#comment",data:t.data};var e={nodeName:t.nodeName};return Object.prototype.hasOwnProperty.call(t,"attributes")&&(e.attributes=t.attributes),Object.prototype.hasOwnProperty.call(t,"checked")&&(e.checked=t.checked),Object.prototype.hasOwnProperty.call(t,"value")&&(e.value=t.value),Object.prototype.hasOwnProperty.call(t,"selected")&&(e.selected=t.selected),Object.prototype.hasOwnProperty.call(t,"childNodes")&&(e.childNodes=t.childNodes.map((function(t){return m(t)}))),e},g=function(t,e){if(!["nodeName","value","checked","selected","data"].every((function(s){return t[s]===e[s]})))return!1;if(Object.prototype.hasOwnProperty.call(t,"data"))return!0;if(Boolean(t.attributes)!==Boolean(e.attributes))return!1;if(Boolean(t.childNodes)!==Boolean(e.childNodes))return!1;if(t.attributes){var s=Object.keys(t.attributes),i=Object.keys(e.attributes);if(s.length!==i.length)return!1;if(!s.every((function(s){return t.attributes[s]===e.attributes[s]})))return!1}if(t.childNodes){if(t.childNodes.length!==e.childNodes.length)return!1;if(!t.childNodes.every((function(t,s){return g(t,e.childNodes[s])})))return!1}return!0},b=function(t,e,s,i,n){if(void 0===n&&(n=!1),!t||!e)return!1;if(t.nodeName!==e.nodeName)return!1;if(["#text","#comment"].includes(t.nodeName))return!!n||t.data===e.data;if(t.nodeName in s)return!0;if(t.attributes&&e.attributes){if(t.attributes.id){if(t.attributes.id!==e.attributes.id)return!1;if("".concat(t.nodeName,"#").concat(t.attributes.id)in s)return!0}if(t.attributes.class&&t.attributes.class===e.attributes.class&&"".concat(t.nodeName,".").concat(t.attributes.class.replace(/ /g,"."))in s)return!0}if(i)return!0;var a=t.childNodes?t.childNodes.slice().reverse():[],o=e.childNodes?e.childNodes.slice().reverse():[];if(a.length!==o.length)return!1;if(n)return a.every((function(t,e){return t.nodeName===o[e].nodeName}));var r=p(a,o);return a.every((function(t,e){return b(t,o[e],r,!0,!0)}))},v=function(t,e){return Array.apply(void 0,new Array(t)).map((function(){return e}))},w=function(t,e){for(var s=t.childNodes?t.childNodes:[],i=e.childNodes?e.childNodes:[],n=v(s.length,!1),a=v(i.length,!1),o=[],r=function(){return arguments[1]},l=!1,d=function(){var t=function(t,e,s,i){var n=0,a=[],o=t.length,r=e.length,l=Array.apply(void 0,new Array(o+1)).map((function(){return[]})),d=p(t,e),c=o===r;c&&t.some((function(t,s){var i=h(t),n=h(e[s]);return i.length!==n.length?(c=!1,!0):(i.some((function(t,e){if(t!==n[e])return c=!1,!0})),!c||void 0)}));for(var u=0;u=n&&(n=l[u+1][m+1],a=[u+1,m+1]))}return 0!==n&&{oldValue:a[0]-n,newValue:a[1]-n,length:n}}(s,i,n,a);t?(o.push(t),Array.apply(void 0,new Array(t.length)).map(r).forEach((function(e){return function(t,e,s,i){t[s.oldValue+i]=!0,e[s.newValue+i]=!0}(n,a,t,e)}))):l=!0};!l;)d();return t.subsets=o,t.subsetsAge=100,o},_=function(){function t(){this.list=[]}return t.prototype.add=function(t){var e;(e=this.list).push.apply(e,t)},t.prototype.forEach=function(t){this.list.forEach((function(e){return t(e)}))},t}(),y=function(){function t(t){void 0===t&&(t={});var e=this;Object.entries(t).forEach((function(t){var s=t[0],i=t[1];return e[s]=i}))}return t.prototype.toString=function(){return JSON.stringify(this)},t.prototype.setValue=function(t,e){return this[t]=e,this},t}();function x(t,e){var s,i,n=t;for(e=e.slice();e.length>0;)i=e.splice(0,1)[0],s=n,n=n.childNodes?n.childNodes[i]:void 0;return{node:n,parentNode:s,nodeIndex:i}}function N(t,e,s){return e.forEach((function(e){!function(t,e,s){var i,n,a,o;if(![s._const.addElement,s._const.addTextElement].includes(e[s._const.action])){var r=x(t,e[s._const.route]);n=r.node,a=r.parentNode,o=r.nodeIndex}var l,d,c=[],h={diff:e,node:n};if(s.preVirtualDiffApply(h))return!0;switch(e[s._const.action]){case s._const.addAttribute:n.attributes||(n.attributes={}),n.attributes[e[s._const.name]]=e[s._const.value],"checked"===e[s._const.name]?n.checked=!0:"selected"===e[s._const.name]?n.selected=!0:"INPUT"===n.nodeName&&"value"===e[s._const.name]&&(n.value=e[s._const.value]);break;case s._const.modifyAttribute:n.attributes[e[s._const.name]]=e[s._const.newValue];break;case s._const.removeAttribute:delete n.attributes[e[s._const.name]],0===Object.keys(n.attributes).length&&delete n.attributes,"checked"===e[s._const.name]?n.checked=!1:"selected"===e[s._const.name]?delete n.selected:"INPUT"===n.nodeName&&"value"===e[s._const.name]&&delete n.value;break;case s._const.modifyTextElement:n.data=e[s._const.newValue];break;case s._const.modifyValue:n.value=e[s._const.newValue];break;case s._const.modifyComment:n.data=e[s._const.newValue];break;case s._const.modifyChecked:n.checked=e[s._const.newValue];break;case s._const.modifySelected:n.selected=e[s._const.newValue];break;case s._const.replaceElement:l=e[s._const.newValue],a.childNodes[o]=l;break;case s._const.relocateGroup:n.childNodes.splice(e[s._const.from],e[s._const.groupLength]).reverse().forEach((function(t){return n.childNodes.splice(e[s._const.to],0,t)})),n.subsets&&n.subsets.forEach((function(t){if(e[s._const.from]e[s._const.from])t.oldValue-=e[s._const.groupLength],(i=t.oldValue+t.length-e[s._const.to])>0&&(c.push({oldValue:e[s._const.to]+e[s._const.groupLength],newValue:t.newValue+t.length-i,length:i}),t.length-=i);else if(e[s._const.from]>e[s._const.to]&&t.oldValue>e[s._const.to]&&t.oldValue0&&(c.push({oldValue:e[s._const.to]+e[s._const.groupLength],newValue:t.newValue+t.length-i,length:i}),t.length-=i)}else t.oldValue===e[s._const.from]&&(t.oldValue=e[s._const.to])}));break;case s._const.removeElement:a.childNodes.splice(o,1),a.subsets&&a.subsets.forEach((function(t){t.oldValue>o?t.oldValue-=1:t.oldValue===o?t.delete=!0:t.oldValueo&&(t.oldValue+t.length-1===o?t.length--:(c.push({newValue:t.newValue+o-t.oldValue,oldValue:o,length:t.length-o+t.oldValue-1}),t.length=o-t.oldValue))})),n=a;break;case s._const.addElement:var u=(d=e[s._const.route].slice()).splice(d.length-1,1)[0];n=null===(i=x(t,d))||void 0===i?void 0:i.node,l=e[s._const.element],n.childNodes||(n.childNodes=[]),u>=n.childNodes.length?n.childNodes.push(l):n.childNodes.splice(u,0,l),n.subsets&&n.subsets.forEach((function(t){if(t.oldValue>=u)t.oldValue+=1;else if(t.oldValueu){var e=t.oldValue+t.length-u;c.push({newValue:t.newValue+t.length-e,oldValue:u+1,length:e}),t.length-=e}}));break;case s._const.removeTextElement:a.childNodes.splice(o,1),"TEXTAREA"===a.nodeName&&delete a.value,a.subsets&&a.subsets.forEach((function(t){t.oldValue>o?t.oldValue-=1:t.oldValue===o?t.delete=!0:t.oldValueo&&(t.oldValue+t.length-1===o?t.length--:(c.push({newValue:t.newValue+o-t.oldValue,oldValue:o,length:t.length-o+t.oldValue-1}),t.length=o-t.oldValue))})),n=a;break;case s._const.addTextElement:var p=(d=e[s._const.route].slice()).splice(d.length-1,1)[0];(l={}).nodeName="#text",l.data=e[s._const.value],(n=x(t,d).node).childNodes||(n.childNodes=[]),p>=n.childNodes.length?n.childNodes.push(l):n.childNodes.splice(p,0,l),"TEXTAREA"===n.nodeName&&(n.value=e[s._const.newValue]),n.subsets&&n.subsets.forEach((function(t){if(t.oldValue>=p&&(t.oldValue+=1),t.oldValuep){var e=t.oldValue+t.length-p;c.push({newValue:t.newValue+t.length-e,oldValue:p+1,length:e}),t.length-=e}}));break;default:console.log("unknown action")}n.subsets&&(n.subsets=n.subsets.filter((function(t){return!t.delete&&t.oldValue!==t.newValue})),c.length&&(n.subsets=n.subsets.concat(c))),s.postVirtualDiffApply({node:h.node,diff:h.diff,newNode:l})}(t,e,s)})),!0}function D(t,e){void 0===e&&(e={});var s={nodeName:t.nodeName};return t instanceof Text||t instanceof Comment?s.data=t.data:(t.attributes&&t.attributes.length>0&&(s.attributes={},Array.prototype.slice.call(t.attributes).forEach((function(t){return s.attributes[t.name]=t.value}))),t instanceof HTMLTextAreaElement?s.value=t.value:t.childNodes&&t.childNodes.length>0&&(s.childNodes=[],Array.prototype.slice.call(t.childNodes).forEach((function(t){return s.childNodes.push(D(t,e))}))),e.valueDiffing&&(t instanceof HTMLInputElement&&["radio","checkbox"].includes(t.type.toLowerCase())&&void 0!==t.checked?s.checked=t.checked:(t instanceof HTMLButtonElement||t instanceof HTMLDataElement||t instanceof HTMLInputElement||t instanceof HTMLLIElement||t instanceof HTMLMeterElement||t instanceof HTMLOptionElement||t instanceof HTMLProgressElement||t instanceof HTMLParamElement)&&(s.value=t.value),t instanceof HTMLOptionElement&&(s.selected=t.selected))),s}var M=/<\s*\/*[a-zA-Z:_][a-zA-Z0-9:_\-.]*\s*(?:"[^"]*"['"]*|'[^']*'['"]*|[^'"/>])*\/*\s*>|/g,O=Object.create?Object.create(null):{},E=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;function V(t){return t.replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&")}var $={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,menuItem:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},S=function(t){var e={nodeName:"",attributes:{}},s=!1,i=t.match(/<\/?([^\s]+?)[/\s>]/);if(i&&(e.nodeName=i[1].toUpperCase(),($[i[1]]||"/"===t.charAt(t.length-2))&&(s=!0),e.nodeName.startsWith("!--"))){var n=t.indexOf("--\x3e");return{type:"comment",node:{nodeName:"#comment",data:-1!==n?t.slice(4,n):""},voidElement:s}}for(var a=new RegExp(E),o=null,r=!1;!r;)if(null===(o=a.exec(t)))r=!0;else if(o[0].trim())if(o[1]){var l=o[1].trim(),d=[l,""];l.indexOf("=")>-1&&(d=l.split("=")),e.attributes[d[0]]=d[1],a.lastIndex--}else o[2]&&(e.attributes[o[2]]=o[3].trim().substring(1,o[3].length-1));return{type:"tag",node:e,voidElement:s}},C=function(t,e){void 0===e&&(e={components:O});var s,i=[],n=-1,a=[],o=!1;if(0!==t.indexOf("<")){var r=t.indexOf("<");i.push({nodeName:"#text",data:-1===r?t:t.substring(0,r)})}return t.replace(M,(function(r,l){if(o){if(r!==""))return"";o=!1}var d="/"!==r.charAt(1),c=r.startsWith("\x3c!--"),h=l+r.length,u=t.charAt(h);if(c){var p=S(r).node;if(n<0)return i.push(p),"";var f=a[n];return f&&p.nodeName&&(f.node.childNodes||(f.node.childNodes=[]),f.node.childNodes.push(p)),""}if(d){s=S(r),n++,"tag"===s.type&&e.components[s.node.nodeName]&&(s.type="component",o=!0),s.voidElement||o||!u||"<"===u||(s.node.childNodes||(s.node.childNodes=[]),s.node.childNodes.push({nodeName:"#text",data:V(t.slice(h,t.indexOf("<",h)))})),0===n&&s.node.nodeName&&i.push(s.node);var m=a[n-1];m&&s.node.nodeName&&(m.node.childNodes||(m.node.childNodes=[]),m.node.childNodes.push(s.node)),a[n]=s}if((!d||s.voidElement)&&(n>-1&&(s.voidElement||s.node.nodeName===r.slice(2,-1).toUpperCase())&&--n>-1&&(s=a[n]),!o&&"<"!==u&&u)){var g=-1===n?i:a[n].node.childNodes||[],b=t.indexOf("<",h),v=V(t.slice(h,-1===b?void 0:b));g.push({nodeName:"#text",data:v})}return""})),i[0]},k=function(){function t(t,e,s){this.options=s,this.t1="undefined"!=typeof Element&&t instanceof Element?D(t,this.options):"string"==typeof t?C(t,this.options):JSON.parse(JSON.stringify(t)),this.t2="undefined"!=typeof Element&&e instanceof Element?D(e,this.options):"string"==typeof e?C(e,this.options):JSON.parse(JSON.stringify(e)),this.diffcount=0,this.foundAll=!1,this.debug&&(this.t1Orig="undefined"!=typeof Element&&t instanceof Element?D(t,this.options):"string"==typeof t?C(t,this.options):JSON.parse(JSON.stringify(t)),this.t2Orig="undefined"!=typeof Element&&e instanceof Element?D(e,this.options):"string"==typeof e?C(e,this.options):JSON.parse(JSON.stringify(e))),this.tracker=new _}return t.prototype.init=function(){return this.findDiffs(this.t1,this.t2)},t.prototype.findDiffs=function(t,e){var s;do{if(this.options.debug&&(this.diffcount+=1,this.diffcount>this.options.diffcap))throw new Error("surpassed diffcap:".concat(JSON.stringify(this.t1Orig)," -> ").concat(JSON.stringify(this.t2Orig)));0===(s=this.findNextDiff(t,e,[])).length&&(g(t,e)||(this.foundAll?console.error("Could not find remaining diffs!"):(this.foundAll=!0,f(t),s=this.findNextDiff(t,e,[])))),s.length>0&&(this.foundAll=!1,this.tracker.add(s),N(t,s,this.options))}while(s.length>0);return this.tracker.list},t.prototype.findNextDiff=function(t,e,s){var i,n;if(this.options.maxDepth&&s.length>this.options.maxDepth)return[];if(!t.outerDone){if(i=this.findOuterDiff(t,e,s),this.options.filterOuterDiff&&(n=this.options.filterOuterDiff(t,e,i))&&(i=n),i.length>0)return t.outerDone=!0,i;t.outerDone=!0}if(Object.prototype.hasOwnProperty.call(t,"data"))return[];if(!t.innerDone){if((i=this.findInnerDiff(t,e,s)).length>0)return i;t.innerDone=!0}if(this.options.valueDiffing&&!t.valueDone){if((i=this.findValueDiff(t,e,s)).length>0)return t.valueDone=!0,i;t.valueDone=!0}return[]},t.prototype.findOuterDiff=function(t,e,s){var i,n,a,o,r,l,d=[];if(t.nodeName!==e.nodeName){if(!s.length)throw new Error("Top level nodes have to be of the same kind.");return[(new y).setValue(this.options._const.action,this.options._const.replaceElement).setValue(this.options._const.oldValue,m(t)).setValue(this.options._const.newValue,m(e)).setValue(this.options._const.route,s)]}if(s.length&&this.options.diffcap0&&(r=this.attemptGroupRelocation(t,e,c,s,d)).length>0)return r}for(var h=0;hn.length)"#text"===u.nodeName?r.push((new y).setValue(this.options._const.action,this.options._const.removeTextElement).setValue(this.options._const.route,s.concat(l)).setValue(this.options._const.value,u.data)):r.push((new y).setValue(this.options._const.action,this.options._const.removeElement).setValue(this.options._const.element,m(u)).setValue(this.options._const.route,s.concat(l))),i.splice(h,1),h-=1,l-=1,o-=1;else if(i.lengthc+1&&"#text"===t.childNodes[c+1].nodeName;)if(c+=1,e.childNodes[w].data===t.childNodes[c].data){d=!0;break}if(!d)return g.push((new y).setValue(this.options._const.action,this.options._const.modifyTextElement).setValue(this.options._const.route,i.concat(w)).setValue(this.options._const.oldValue,l.data).setValue(this.options._const.newValue,e.childNodes[w].data)),g}}else g.push((new y).setValue(this.options._const.action,this.options._const.removeTextElement).setValue(this.options._const.route,i.concat(w)).setValue(this.options._const.value,l.data)),u.splice(w,1),f=Math.min(u.length,p.length),w-=1;else g.push((new y).setValue(this.options._const.action,this.options._const.removeElement).setValue(this.options._const.route,i.concat(w)).setValue(this.options._const.element,m(l))),u.splice(w,1),f=Math.min(u.length,p.length),w-=1;else if(!0===p[w])"#text"===(l=e.childNodes[w]).nodeName?(g.push((new y).setValue(this.options._const.action,this.options._const.addTextElement).setValue(this.options._const.route,i.concat(w)).setValue(this.options._const.value,l.data)),u.splice(w,0,!0),f=Math.min(u.length,p.length),_-=1):(g.push((new y).setValue(this.options._const.action,this.options._const.addElement).setValue(this.options._const.route,i.concat(w)).setValue(this.options._const.element,m(l))),u.splice(w,0,!0),f=Math.min(u.length,p.length),_-=1);else if(u[w]!==p[w]){if(g.length>0)return g;if(r=s[u[w]],(o=Math.min(r.newValue,t.childNodes.length-r.length))!==r.oldValue){a=!1;for(var x=0;x({nodeName:"TR",childNodes:t.map(((t,h)=>{const u=e[h]||{type:l,format:n,sortable:!0,searchable:!0};if(u.hidden)return;const p={};if(u.sortable&&o&&(!r.length||c)&&(u.filter?p["data-filterable"]="true":p["data-sortable"]="true"),u.headerClass&&(p.class=u.headerClass),s.sort&&s.sort.column===h){const t="asc"===s.sort.dir?i.ascending:i.descending;p.class=p.class?`${p.class} ${t}`:t,p["aria-sort"]="asc"===s.sort.dir?"ascending":"descending"}else s.filters[h]&&(p.class=p.class?`${p.class} ${i.filterActive}`:i.filterActive);let f="";s.widths[h]&&!d&&(f+=`width: ${s.widths[h]}%;`),r.length&&!c&&(f+="padding-bottom: 0;padding-top: 0;border: 0;"),f.length&&(p.style=f);const m="html"===t.type?t.data:[{nodeName:"#text",data:t.text??String(t.data)}];return{nodeName:"TH",attributes:p,childNodes:!a&&!r.length||c?u.sortable&&o?[{nodeName:"BUTTON",attributes:{class:u.filter?i.filter:i.sorter},childNodes:m}]:m:[{nodeName:"#text",data:""}]}})).filter((t=>t))}),P=(t,e,s,i,n,a,{classes:o,hiddenHeader:r,header:l,footer:d,format:c,sortable:h,scrollY:u,type:p,rowRender:f,tabIndex:m},{noColumnWidths:g,unhideHeader:b,renderHeader:v})=>{const w={nodeName:"TABLE",attributes:{...t},childNodes:[{nodeName:"TBODY",childNodes:s.map((({row:t,index:e})=>{const s={nodeName:"TR",attributes:{"data-index":String(e)},childNodes:t.map(((t,s)=>{const a=i[s]||{type:p,format:c,sortable:!0,searchable:!0};if(a.hidden)return;const o="html"===a.type?{nodeName:"TD",childNodes:t.data}:{nodeName:"TD",childNodes:[{nodeName:"#text",data:t.text??String(t.data)}]};if(l||d||!n.widths[s]||g||(o.attributes={style:`width: ${n.widths[s]}%;`}),a.cellClass&&(o.attributes||(o.attributes={}),o.attributes.class=a.cellClass),a.render){const i=a.render(t.data,o,e,s);if(i){if("string"!=typeof i)return i;{const t=C(`${i}`);1===t.childNodes.length&&["#text","#comment"].includes(t.childNodes[0].nodeName)?o.childNodes[0].data=i:o.childNodes=t.childNodes}}}return o})).filter((t=>t))};if(e===a&&(s.attributes.class=o.cursor),f){const i=f(t,s,e);if(i){if("string"!=typeof i)return i;{const t=C(`${i}`);!t.childNodes||1===t.childNodes.length&&["#text","#comment"].includes(t.childNodes[0].nodeName)?s.childNodes[0].data=i:s.childNodes=t.childNodes}}}return s}))}]};if(w.attributes.class=w.attributes.class?`${w.attributes.class} ${o.table}`:o.table,l||d||v){const t=A(e,i,n,{classes:o,hiddenHeader:r,sortable:h,scrollY:u},{noColumnWidths:g,unhideHeader:b});if(l||v){const e={nodeName:"THEAD",childNodes:[t]};!u.length&&!r||b||(e.attributes={style:"height: 0px;"}),w.childNodes.unshift(e)}if(d){const e={nodeName:"TFOOT",childNodes:[l?structuredClone(t):t]};!u.length&&!r||b||(e.attributes={style:"height: 0px;"}),w.childNodes.push(e)}}return!1!==m&&(w.attributes.tabindex=String(m)),w};"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;var R={},H={get exports(){return R},set exports(t){R=t}};H.exports=function(){var t=1e3,e=6e4,s=36e5,i="millisecond",n="second",a="minute",o="hour",r="day",l="week",d="month",c="quarter",h="year",u="date",p="Invalid Date",f=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,m=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,g={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(t){var e=["th","st","nd","rd"],s=t%100;return"["+t+(e[(s-20)%10]||e[s]||e[0])+"]"}},b=function(t,e,s){var i=String(t);return!i||i.length>=e?t:""+Array(e+1-i.length).join(s)+t},v={s:b,z:function(t){var e=-t.utcOffset(),s=Math.abs(e),i=Math.floor(s/60),n=s%60;return(e<=0?"+":"-")+b(i,2,"0")+":"+b(n,2,"0")},m:function t(e,s){if(e.date()1)return t(o[0])}else{var r=e.name;_[r]=e,n=r}return!i&&n&&(w=n),n||!i&&w},N=function(t,e){if(y(t))return t.clone();var s="object"==typeof e?e:{};return s.date=t,s.args=arguments,new M(s)},D=v;D.l=x,D.i=y,D.w=function(t,e){return N(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var M=function(){function g(t){this.$L=x(t.locale,null,!0),this.parse(t)}var b=g.prototype;return b.parse=function(t){this.$d=function(t){var e=t.date,s=t.utc;if(null===e)return new Date(NaN);if(D.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var i=e.match(f);if(i){var n=i[2]-1||0,a=(i[7]||"0").substring(0,3);return s?new Date(Date.UTC(i[1],n,i[3]||1,i[4]||0,i[5]||0,i[6]||0,a)):new Date(i[1],n,i[3]||1,i[4]||0,i[5]||0,i[6]||0,a)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},b.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},b.$utils=function(){return D},b.isValid=function(){return!(this.$d.toString()===p)},b.isSame=function(t,e){var s=N(t);return this.startOf(e)<=s&&s<=this.endOf(e)},b.isAfter=function(t,e){return N(t)68?1900:2e3)},r=function(t){return function(e){this[t]=+e}},l=[/[+-]\d\d:?(\d\d)?|Z/,function(t){(this.zone||(this.zone={})).offset=function(t){if(!t)return 0;if("Z"===t)return 0;var e=t.match(/([+-]|\d\d)/g),s=60*e[1]+(+e[2]||0);return 0===s?0:"+"===e[0]?-s:s}(t)}],d=function(t){var e=a[t];return e&&(e.indexOf?e:e.s.concat(e.f))},c=function(t,e){var s,i=a.meridiem;if(i){for(var n=1;n<=24;n+=1)if(t.indexOf(i(n,0,e))>-1){s=n>12;break}}else s=t===(e?"pm":"PM");return s},h={A:[n,function(t){this.afternoon=c(t,!1)}],a:[n,function(t){this.afternoon=c(t,!0)}],S:[/\d/,function(t){this.milliseconds=100*+t}],SS:[s,function(t){this.milliseconds=10*+t}],SSS:[/\d{3}/,function(t){this.milliseconds=+t}],s:[i,r("seconds")],ss:[i,r("seconds")],m:[i,r("minutes")],mm:[i,r("minutes")],H:[i,r("hours")],h:[i,r("hours")],HH:[i,r("hours")],hh:[i,r("hours")],D:[i,r("day")],DD:[s,r("day")],Do:[n,function(t){var e=a.ordinal,s=t.match(/\d+/);if(this.day=s[0],e)for(var i=1;i<=31;i+=1)e(i).replace(/\[|\]/g,"")===t&&(this.day=i)}],M:[i,r("month")],MM:[s,r("month")],MMM:[n,function(t){var e=d("months"),s=(d("monthsShort")||e.map((function(t){return t.slice(0,3)}))).indexOf(t)+1;if(s<1)throw new Error;this.month=s%12||s}],MMMM:[n,function(t){var e=d("months").indexOf(t)+1;if(e<1)throw new Error;this.month=e%12||e}],Y:[/[+-]?\d+/,r("year")],YY:[s,function(t){this.year=o(t)}],YYYY:[/\d{4}/,r("year")],Z:l,ZZ:l};function u(s){var i,n;i=s,n=a&&a.formats;for(var o=(s=i.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(e,s,i){var a=i&&i.toUpperCase();return s||n[i]||t[i]||n[a].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(t,e,s){return e||s.slice(1)}))}))).match(e),r=o.length,l=0;l-1)return new Date(("X"===e?1e3:1)*t);var i=u(e)(t),n=i.year,a=i.month,o=i.day,r=i.hours,l=i.minutes,d=i.seconds,c=i.milliseconds,h=i.zone,p=new Date,f=o||(n||a?1:p.getDate()),m=n||p.getFullYear(),g=0;n&&!a||(g=a>0?a-1:p.getMonth());var b=r||0,v=l||0,w=d||0,_=c||0;return h?new Date(Date.UTC(m,g,f,b,v,w,_+60*h.offset*1e3)):s?new Date(Date.UTC(m,g,f,b,v,w,_)):new Date(m,g,f,b,v,w,_)}catch(t){return new Date("")}}(e,r,i),this.init(),h&&!0!==h&&(this.$L=this.locale(h).$L),c&&e!=this.format(r)&&(this.$d=new Date("")),a={}}else if(r instanceof Array)for(var p=r.length,f=1;f<=p;f+=1){o[1]=r[f-1];var m=s.apply(this,o);if(m.isValid()){this.$d=m.$d,this.$L=m.$L,this.init();break}f===p&&(this.$d=new Date(""))}else n.call(this,t)}}}();var q=Y;I.extend(q);const B=(t,e)=>{let s;if(e)switch(e){case"ISO_8601":s=t;break;case"RFC_2822":s=I(t.slice(5),"DD MMM YYYY HH:mm:ss ZZ").unix();break;case"MYSQL":s=I(t,"YYYY-MM-DD hh:mm:ss").unix();break;case"UNIX":s=I(t).unix();break;default:s=I(t,e,!0).valueOf()}return s},F=(t,e)=>{if(t?.constructor===Object&&Object.prototype.hasOwnProperty.call(t,"data")&&!Object.keys(t).find((t=>!["text","order","data"].includes(t))))return t;const s={data:t};switch(e.type){case"string":"string"!=typeof t&&(s.text=String(s.data),s.order=s.text);break;case"date":e.format&&(s.order=B(String(s.data),e.format));break;case"number":s.text=String(s.data),s.data=parseInt(s.data,10);break;case"html":{const t=Array.isArray(s.data)?{nodeName:"TD",childNodes:s.data}:C(`${String(s.data)}`);s.data=t.childNodes||[];const e=i(t);s.text=e,s.order=e;break}case"boolean":"string"==typeof s.data&&(s.data=s.data.toLowerCase().trim()),s.data=!["false",!1,null,void 0,0].includes(s.data),s.order=s.data?1:0,s.text=String(s.data);break;case"other":s.text="",s.order=0;break;default:s.text=JSON.stringify(s.data)}return s},z=t=>{if(t instanceof Object&&t.constructor===Object&&t.hasOwnProperty("data")&&("string"==typeof t.text||"string"==typeof t.data))return t;const e={data:t};if("string"==typeof t){if(t.length){const s=C(`${t}`);if(s.childNodes&&(1!==s.childNodes.length||"#text"!==s.childNodes[0].nodeName)){e.data=s.childNodes,e.type="html";const t=i(s);e.text=t}}}else[null,void 0].includes(t)?e.text="":e.text=JSON.stringify(t);return e},U=(t,e,s,n,a)=>{const o={data:[],headings:[]};t.headings?o.headings=t.headings.map((t=>z(t))):e?.tHead?o.headings=Array.from(e.tHead.querySelectorAll("th")).map(((t,e)=>{const o=(t=>{const e=D(t,{valueDiffing:!1});let s;return s=!e.childNodes||1===e.childNodes.length&&"#text"===e.childNodes[0].nodeName?{data:t.innerText,type:"string"}:{data:e.childNodes,type:"html",text:i(e)},s})(t);s[e]||(s[e]={type:n,format:a,searchable:!0,sortable:!0});const r=s[e];return"false"!==t.dataset.sortable?.trim().toLowerCase()&&"false"!==t.dataset.sort?.trim().toLowerCase()||(r.sortable=!1),"false"===t.dataset.searchable?.trim().toLowerCase()&&(r.searchable=!1),"true"!==t.dataset.hidden?.trim().toLowerCase()&&"true"!==t.getAttribute("hidden")?.trim().toLowerCase()||(r.hidden=!0),["number","string","html","date","boolean","other"].includes(t.dataset.type)&&(r.type=t.dataset.type,"date"===r.type&&t.dataset.format&&(r.format=t.dataset.format)),o})):t.data?.length?o.headings=t.data[0].map((t=>z(""))):e?.tBodies.length&&(o.headings=Array.from(e.tBodies[0].rows[0].cells).map((t=>z(""))));for(let t=0;tt.map(((t,e)=>F(t,s[e]))))):e?.tBodies?.length&&(o.data=Array.from(e.tBodies[0].rows).map((t=>Array.from(t.cells).map(((t,e)=>{const i=t.dataset.content?F(t.dataset.content,s[e]):((t,e)=>{let s;switch(e.type){case"string":s={data:t.innerText};break;case"date":{const i=t.innerText;s={data:i,order:B(i,e.format)};break}case"number":s={data:parseInt(t.innerText,10),text:t.innerText};break;case"boolean":{const e=!["false","0","null","undefined"].includes(t.innerText.toLowerCase().trim());s={data:e,order:e?1:0,text:e?"1":"0"};break}default:s={data:D(t,{valueDiffing:!1}).childNodes||[],text:t.innerText,order:t.innerText}}return s})(t,s[e]);return t.dataset.order&&(i.order=isNaN(parseFloat(t.dataset.order))?t.dataset.order:parseFloat(t.dataset.order)),i}))))),o.data.length&&o.data[0].length!==o.headings.length)throw new Error("Data heading length mismatch.");return o};class J{constructor(t){this.dt=t,this.cursor=!1}setCursor(t=!1){if(t===this.cursor)return;const e=this.cursor;if(this.cursor=t,this.dt._renderTable(),!1!==t&&this.dt.options.scrollY){const t=this.dt.dom.querySelector(`tr.${this.dt.options.classes.cursor}`);t&&t.scrollIntoView({block:"nearest"})}this.dt.emit("datatable.cursormove",this.cursor,e)}add(t){const e=t.map(((t,e)=>{const s=this.dt.columns.settings[e];return F(t,s)}));this.dt.data.data.push(e),this.dt.data.data.length&&(this.dt.hasRows=!0),this.dt.update(!0)}remove(t){if(!Array.isArray(t))return this.remove([t]);this.dt.data.data=this.dt.data.data.filter(((e,s)=>!t.includes(s))),this.dt.data.data.length||(this.dt.hasRows=!1),this.dt.update(!0)}findRowIndex(t,e){return this.dt.data.data.findIndex((s=>(s[t].text??String(s[t].data)).toLowerCase().includes(String(e).toLowerCase())))}findRow(t,e){const s=this.findRowIndex(t,e);if(s<0)return{index:-1,row:null,cols:[]};const i=this.dt.data.data[s],n=i.map((t=>t.data));return{index:s,row:i,cols:n}}updateRow(t,e){const s=e.map(((t,e)=>{const s=this.dt.columns.settings[e];return F(t,s)}));this.dt.data.data.splice(t,1,s),this.dt.update(!0)}}class W{constructor(t){this.dt=t,this.init()}init(){[this.settings,this._state]=((t=[],e,s)=>{let i=[],n=!1;const a=[];return t.forEach((t=>{(Array.isArray(t.select)?t.select:[t.select]).forEach((o=>{i[o]?t.type&&(i[o].type=t.type):i[o]={type:t.type||e,sortable:!0,searchable:!0};const r=i[o];t.render&&(r.render=t.render),t.format?r.format=t.format:"date"===t.type&&(r.format=s),t.cellClass&&(r.cellClass=t.cellClass),t.headerClass&&(r.headerClass=t.headerClass),t.locale&&(r.locale=t.locale),!1===t.sortable?r.sortable=!1:(t.numeric&&(r.numeric=t.numeric),t.caseFirst&&(r.caseFirst=t.caseFirst)),!1===t.searchable?r.searchable=!1:t.sensitivity&&(r.sensitivity=t.sensitivity),(r.searchable||r.sortable)&&void 0!==t.ignorePunctuation&&(r.ignorePunctuation=t.ignorePunctuation),t.hidden&&(r.hidden=!0),t.filter&&(r.filter=t.filter),t.sortSequence&&(r.sortSequence=t.sortSequence),t.sort&&(t.filter?a[o]=t.sort:n={column:o,dir:t.sort}),void 0!==t.searchItemSeparator&&(r.searchItemSeparator=t.searchItemSeparator)}))})),i=i.map((t=>t||{type:e,format:"date"===e?s:void 0,sortable:!0,searchable:!0})),[i,{filters:a,sort:n,widths:[]}]})(this.dt.options.columns,this.dt.options.type,this.dt.options.format)}swap(t){if(2===t.length){const e=this.dt.data.headings.map(((t,e)=>e)),s=t[0],i=t[1],n=e[i];return e[i]=e[s],e[s]=n,this.order(e)}}order(t){this.dt.data.headings=t.map((t=>this.dt.data.headings[t])),this.dt.data.data=this.dt.data.data.map((e=>t.map((t=>e[t])))),this.settings=t.map((t=>this.settings[t])),this.dt.update()}hide(t){t.length&&(t.forEach((t=>{this.settings[t]||(this.settings[t]={type:"string"});this.settings[t].hidden=!0})),this.dt.update())}show(t){t.length&&(t.forEach((t=>{this.settings[t]||(this.settings[t]={type:"string",sortable:!0});delete this.settings[t].hidden})),this.dt.update())}visible(t){return void 0===t&&(t=[...Array(this.dt.data.headings.length).keys()]),Array.isArray(t)?t.map((t=>!this.settings[t]?.hidden)):!this.settings[t]?.hidden}add(t){const e=this.dt.data.headings.length;if(this.dt.data.headings=this.dt.data.headings.concat([z(t.heading)]),this.dt.data.data=this.dt.data.data.map(((e,s)=>e.concat([F(t.data[s],t)]))),this.settings[e]={type:t.type||"string",sortable:!0,searchable:!0},t.type||t.format||t.sortable||t.render||t.filter){const s=this.settings[e];t.render&&(s.render=t.render),t.format&&(s.format=t.format),t.cellClass&&(s.cellClass=t.cellClass),t.headerClass&&(s.headerClass=t.headerClass),t.locale&&(s.locale=t.locale),!1===t.sortable?s.sortable=!1:(t.numeric&&(s.numeric=t.numeric),t.caseFirst&&(s.caseFirst=t.caseFirst)),!1===t.searchable?s.searchable=!1:t.sensitivity&&(s.sensitivity=t.sensitivity),(s.searchable||s.sortable)&&t.ignorePunctuation&&(s.ignorePunctuation=t.ignorePunctuation),t.hidden&&(s.hidden=!0),t.filter&&(s.filter=t.filter),t.sortSequence&&(s.sortSequence=t.sortSequence)}this.dt.update(!0)}remove(t){if(!Array.isArray(t))return this.remove([t]);this.dt.data.headings=this.dt.data.headings.filter(((e,s)=>!t.includes(s))),this.dt.data.data=this.dt.data.data.map((e=>e.filter(((e,s)=>!t.includes(s))))),this.dt.update(!0)}filter(t,e=!1){if(!this.settings[t]?.filter?.length)return;const s=this._state.filters[t];let i;if(s){let e=!1;i=this.settings[t].filter.find((t=>!!e||(t===s&&(e=!0),!1)))}else{const e=this.settings[t].filter;i=e?e[0]:void 0}i?this._state.filters[t]=i:s&&(this._state.filters[t]=void 0),this.dt._currentPage=1,this.dt.update(),e||this.dt.emit("datatable.filter",t,i)}sort(t,e,s=!1){const i=this.settings[t];if(s||this.dt.emit("datatable.sorting",t,e),!e){const s=!(!this._state.sort||this._state.sort.column!==t)&&this._state.sort?.dir,n=i?.sortSequence||["asc","desc"];if(s){const t=n.indexOf(s);e=-1===t?n[0]||"asc":t===n.length-1?n[0]:n[t+1]}else e=n.length?n[0]:"asc"}const n=!!["string","html"].includes(i.type)&&new Intl.Collator(i.locale||this.dt.options.locale,{usage:"sort",numeric:i.numeric||this.dt.options.numeric,caseFirst:i.caseFirst||this.dt.options.caseFirst,ignorePunctuation:i.ignorePunctuation||this.dt.options.ignorePunctuation});this.dt.data.data.sort(((s,i)=>{let a=s[t].order||s[t].data,o=i[t].order||i[t].data;if("desc"===e){const t=a;a=o,o=t}return n?n.compare(String(a),String(o)):ao?1:0})),this._state.sort={column:t,dir:e},this.dt._searchQueries.length?(this.dt.multiSearch(this.dt._searchQueries),this.dt.emit("datatable.sort",t,e)):s||(this.dt._currentPage=1,this.dt.update(),this.dt.emit("datatable.sort",t,e))}_measureWidths(){const t=this.dt.data.headings.filter(((t,e)=>!this.settings[e]?.hidden));if((this.dt.options.scrollY.length||this.dt.options.fixedColumns)&&t?.length){this._state.widths=[];const t={noPaging:!0};if(this.dt.options.header||this.dt.options.footer){this.dt.options.scrollY.length&&(t.unhideHeader=!0),this.dt.headerDOM&&this.dt.headerDOM.parentElement.removeChild(this.dt.headerDOM),t.noColumnWidths=!0,this.dt._renderTable(t);const e=Array.from(this.dt.dom.querySelector("thead, tfoot")?.firstElementChild?.querySelectorAll("th")||[]);let s=0;const i=this.dt.data.headings.map(((t,i)=>{if(this.settings[i]?.hidden)return 0;const n=e[s].offsetWidth;return s+=1,n})),n=i.reduce(((t,e)=>t+e),0);this._state.widths=i.map((t=>t/n*100))}else{t.renderHeader=!0,this.dt._renderTable(t);const e=Array.from(this.dt.dom.querySelector("thead, tfoot")?.firstElementChild?.querySelectorAll("th")||[]);let s=0;const i=this.dt.data.headings.map(((t,i)=>{if(this.settings[i]?.hidden)return 0;const n=e[s].offsetWidth;return s+=1,n})),n=i.reduce(((t,e)=>t+e),0);this._state.widths=i.map((t=>t/n*100))}this.dt._renderTable()}}}const Q={sortable:!0,locale:"en",numeric:!0,caseFirst:"false",searchable:!0,sensitivity:"base",ignorePunctuation:!0,destroyable:!0,searchItemSeparator:"",searchQuerySeparator:" ",searchAnd:!1,data:{},type:"html",format:"YYYY-MM-DD",columns:[],paging:!0,perPage:10,perPageSelect:[5,10,15,20,25],nextPrev:!0,firstLast:!1,prevText:"‹",nextText:"›",firstText:"«",lastText:"»",ellipsisText:"…",truncatePager:!0,pagerDelta:2,scrollY:"",fixedColumns:!0,fixedHeight:!1,footer:!1,header:!0,hiddenHeader:!1,rowNavigation:!1,tabIndex:!1,pagerRender:!1,rowRender:!1,tableRender:!1,diffDomOptions:{valueDiffing:!1},labels:{placeholder:"Search...",searchTitle:"Search within table",perPage:"entries per page",pageTitle:"Page {page}",noRows:"No entries found",noResults:"No results match your search query",info:"Showing {start} to {end} of {rows} entries"},template:(t,e)=>`
      \n ${t.paging&&t.perPageSelect?`
      \n \n
      `:""}\n ${t.searchable?`
      \n \n
      `:""}\n
      \n
      \n
      \n ${t.paging?`
      `:""}\n \n
      `,classes:{active:"datatable-active",ascending:"datatable-ascending",bottom:"datatable-bottom",container:"datatable-container",cursor:"datatable-cursor",descending:"datatable-descending",disabled:"datatable-disabled",dropdown:"datatable-dropdown",ellipsis:"datatable-ellipsis",filter:"datatable-filter",filterActive:"datatable-filter-active",empty:"datatable-empty",headercontainer:"datatable-headercontainer",hidden:"datatable-hidden",info:"datatable-info",input:"datatable-input",loading:"datatable-loading",pagination:"datatable-pagination",paginationList:"datatable-pagination-list",paginationListItem:"datatable-pagination-list-item",paginationListItemLink:"datatable-pagination-list-item-link",search:"datatable-search",selector:"datatable-selector",sorter:"datatable-sorter",table:"datatable-table",top:"datatable-top",wrapper:"datatable-wrapper"}},X=(t,e,s,i={})=>({nodeName:"LI",attributes:{class:i.active&&!i.hidden?`${s.classes.paginationListItem} ${s.classes.active}`:i.hidden?`${s.classes.paginationListItem} ${s.classes.hidden} ${s.classes.disabled}`:s.classes.paginationListItem},childNodes:[{nodeName:"BUTTON",attributes:{"data-page":String(t),class:s.classes.paginationListItemLink,"aria-label":s.labels.pageTitle.replace("{page}",String(t))},childNodes:[{nodeName:"#text",data:e}]}]}),Z=(t,e,s,i,n)=>{let a=[];if(n.firstLast&&a.push(X(1,n.firstText,n)),n.nextPrev){const e=t?1:s-1;a.push(X(e,n.prevText,n,{hidden:t}))}let o=[...Array(i).keys()].map((t=>X(t+1,String(t+1),n,{active:t===s-1})));if(n.truncatePager&&(o=((t,e,s,i)=>{const n=i.pagerDelta,a=i.classes,o=i.ellipsisText,r=2*n;let l=e-n,d=e+n;e<4-n+r?d=3+r:e>s-(3-n+r)&&(l=s-(2+r));const c=[];for(let e=1;e<=s;e++)if(1==e||e==s||e>=l&&e<=d){const s=t[e-1];c.push(s)}let h;const u=[];return c.forEach((e=>{const s=parseInt(e.childNodes[0].attributes["data-page"],10);if(h){const e=parseInt(h.childNodes[0].attributes["data-page"],10);if(s-e==2)u.push(t[e]);else if(s-e!=1){const t={nodeName:"LI",attributes:{class:`${a.paginationListItem} ${a.ellipsis} ${a.disabled}`},childNodes:[{nodeName:"BUTTON",attributes:{class:a.paginationListItemLink},childNodes:[{nodeName:"#text",data:o}]}]};u.push(t)}}u.push(e),h=e})),u})(o,s,i,n)),a=a.concat(o),n.nextPrev){const t=e?i:s+1;a.push(X(t,n.nextText,n,{hidden:e}))}n.firstLast&&a.push(X(i,n.lastText,n));return{nodeName:"UL",attributes:{class:n.classes.paginationList},childNodes:o.length>1?a:[]}};const G={classes:{row:"datatable-editor-row",form:"datatable-editor-form",item:"datatable-editor-item",menu:"datatable-editor-menu",save:"datatable-editor-save",block:"datatable-editor-block",cancel:"datatable-editor-cancel",close:"datatable-editor-close",inner:"datatable-editor-inner",input:"datatable-editor-input",label:"datatable-editor-label",modal:"datatable-editor-modal",action:"datatable-editor-action",header:"datatable-editor-header",wrapper:"datatable-editor-wrapper",editable:"datatable-editor-editable",container:"datatable-editor-container",separator:"datatable-editor-separator"},labels:{closeX:"x",editCell:"Edit Cell",editRow:"Edit Row",removeRow:"Remove Row",reallyRemove:"Are you sure?",reallyCancel:"Do you really want to cancel?",save:"Save",cancel:"Cancel"},cancelModal:t=>confirm(t.options.labels.reallyCancel),inline:!0,hiddenColumns:!1,contextMenu:!0,clickEvent:"dblclick",excludeColumns:[],menuItems:[{text:t=>t.options.labels.editCell,action:(t,e)=>{if(!(t.event.target instanceof Element))return;const s=t.event.target.closest("td");return t.editCell(s)}},{text:t=>t.options.labels.editRow,action:(t,e)=>{if(!(t.event.target instanceof Element))return;const s=t.event.target.closest("tr");return t.editRow(s)}},{separator:!0},{text:t=>t.options.labels.removeRow,action:(t,e)=>{if(t.event.target instanceof Element&&confirm(t.options.labels.reallyRemove)){const e=t.event.target.closest("tr");t.removeRow(e)}}}]};class K{constructor(t,e={}){this.dt=t,this.options={...G,...e}}init(){this.initialized||(this.dt.wrapperDOM.classList.add(this.options.classes.editable),this.options.inline&&(this.originalRowRender=this.dt.options.rowRender,this.dt.options.rowRender=(t,e,s)=>{let i=this.rowRender(t,e,s);return this.originalRowRender&&(i=this.originalRowRender(t,i,s)),i}),this.options.contextMenu&&(this.containerDOM=s("div",{id:this.options.classes.container}),this.wrapperDOM=s("div",{class:this.options.classes.wrapper}),this.menuDOM=s("ul",{class:this.options.classes.menu}),this.options.menuItems&&this.options.menuItems.length&&this.options.menuItems.forEach((t=>{const e=s("li",{class:t.separator?this.options.classes.separator:this.options.classes.item});if(!t.separator){const i=s("a",{class:this.options.classes.action,href:t.url||"#",html:"function"==typeof t.text?t.text(this):t.text});e.appendChild(i),t.action&&"function"==typeof t.action&&i.addEventListener("click",(e=>{e.preventDefault(),t.action(this,e)}))}this.menuDOM.appendChild(e)})),this.wrapperDOM.appendChild(this.menuDOM),this.containerDOM.appendChild(this.wrapperDOM),this.updateMenu()),this.data={},this.menuOpen=!1,this.editing=!1,this.editingRow=!1,this.editingCell=!1,this.bindEvents(),setTimeout((()=>{this.initialized=!0,this.dt.emit("editable.init")}),10))}bindEvents(){this.events={keydown:this.keydown.bind(this),click:this.click.bind(this)},this.dt.dom.addEventListener(this.options.clickEvent,this.events.click),document.addEventListener("keydown",this.events.keydown),this.options.contextMenu&&(this.events.context=this.context.bind(this),this.events.updateMenu=this.updateMenu.bind(this),this.events.dismissMenu=this.dismissMenu.bind(this),this.events.reset=function(t,e=300){let s;return(...i)=>{clearTimeout(s),s=window.setTimeout((()=>t()),e)}}((()=>this.events.updateMenu()),50),this.dt.dom.addEventListener("contextmenu",this.events.context),document.addEventListener("click",this.events.dismissMenu),window.addEventListener("resize",this.events.reset),window.addEventListener("scroll",this.events.reset))}context(t){const e=t.target;if(!(e instanceof Element))return;this.event=t;const s=e.closest("tbody td");if(!this.disabled&&s){t.preventDefault();let e=t.pageX,s=t.pageY;e>this.limits.x&&(e-=this.rect.width),s>this.limits.y&&(s-=this.rect.height),this.wrapperDOM.style.top=`${s}px`,this.wrapperDOM.style.left=`${e}px`,this.openMenu(),this.updateMenu()}}click(t){const e=t.target;if(e instanceof Element)if(this.editing&&this.data&&this.editingCell){const t=this.modalDOM?this.modalDOM.querySelector(`input.${this.options.classes.input}[type=text]`):this.dt.wrapperDOM.querySelector(`input.${this.options.classes.input}[type=text]`);this.saveCell(t.value)}else if(!this.editing){const s=e.closest("tbody td");s&&(this.editCell(s),t.preventDefault())}}keydown(t){if(this.modalDOM){if("Escape"===t.key)this.options.cancelModal(this)&&this.closeModal();else if("Enter"===t.key)if(this.editingCell){const t=this.modalDOM.querySelector(`input.${this.options.classes.input}[type=text]`);this.saveCell(t.value)}else{const t=Array.from(this.modalDOM.querySelectorAll(`input.${this.options.classes.input}[type=text]`));this.saveRow(t.map((t=>t.value.trim())),this.data.row)}}else if(this.editing&&this.data)if("Enter"===t.key){if(this.editingCell){const t=this.dt.wrapperDOM.querySelector(`input.${this.options.classes.input}[type=text]`);this.saveCell(t.value)}else if(this.editingRow){const t=Array.from(this.dt.wrapperDOM.querySelectorAll(`input.${this.options.classes.input}[type=text]`));this.saveRow(t.map((t=>t.value.trim())),this.data.row)}}else"Escape"===t.key&&(this.editingCell?this.saveCell(this.data.content):this.editingRow&&this.saveRow(null,this.data.row))}editCell(t){const e=a(t.cellIndex,this.dt.columns.settings);if(this.options.excludeColumns.includes(e))return void this.closeMenu();const s=parseInt(t.parentElement.dataset.index,10),i=this.dt.data.data[s][e];this.data={cell:i,rowIndex:s,columnIndex:e,content:i.text||String(i.data)},this.editing=!0,this.editingCell=!0,this.options.inline?this.dt.update():this.editCellModal(),this.closeMenu()}editCellModal(){const t=this.data.cell,e=this.data.columnIndex,i=this.dt.data.headings[e].text||String(this.dt.data.headings[e].data),a=[`
      `,`
      `,`

      ${this.options.labels.editCell}

      `,``,"
      ",`
      `,`
      `,`
      `,``,``,"
      ",`
      `,``,``,"
      ","
      ","
      ","
      "].join(""),o=s("div",{class:this.options.classes.modal,html:a});this.modalDOM=o,this.openModal();const r=o.querySelector(`input.${this.options.classes.input}[type=text]`);r.focus(),r.selectionStart=r.selectionEnd=r.value.length,o.addEventListener("click",(t=>{const e=t.target;e instanceof Element&&(e.hasAttribute("data-editor-cancel")?(t.preventDefault(),this.options.cancelModal(this)&&this.closeModal()):e.hasAttribute("data-editor-save")&&(t.preventDefault(),this.saveCell(r.value)))}))}saveCell(t){const e=this.data.content,s=this.dt.columns.settings[this.data.columnIndex].type||this.dt.options.type,i=t.trim();let n;if("number"===s)n={data:parseFloat(i)};else if("boolean"===s)n=["","false","0"].includes(i)?{data:!1,text:"false",order:0}:{data:!0,text:"true",order:1};else if("html"===s)n={data:[{nodeName:"#text",data:t}],text:t,order:t};else if("string"===s)n={data:t};else if("date"===s){const e=this.dt.columns.settings[this.data.columnIndex].format||this.dt.options.format;n={data:t,order:B(String(t),e)}}else n={data:t};this.dt.data.data[this.data.rowIndex][this.data.columnIndex]=n,this.closeModal();const a=this.data.rowIndex,o=this.data.columnIndex;this.data={},this.dt.update(!0),this.editing=!1,this.editingCell=!1,this.dt.emit("editable.save.cell",t,e,a,o)}editRow(t){if(!t||"TR"!==t.nodeName||this.editing)return;const e=parseInt(t.dataset.index,10),s=this.dt.data.data[e];this.data={row:s,rowIndex:e},this.editing=!0,this.editingRow=!0,this.options.inline?this.dt.update():this.editRowModal(),this.closeMenu()}editRowModal(){const t=this.data.row,e=[`
      `,`
      `,`

      ${this.options.labels.editRow}

      `,``,"
      ",`
      `,`
      `,`
      `,``,``,"
      ","
      ","
      ","
      "].join(""),i=s("div",{class:this.options.classes.modal,html:e}),a=i.firstElementChild;if(!a)return;const o=a.lastElementChild?.firstElementChild;if(!o)return;t.forEach(((t,e)=>{const i=this.dt.columns.settings[e];if((!i.hidden||i.hidden&&this.options.hiddenColumns)&&!this.options.excludeColumns.includes(e)){const i=this.dt.data.headings[e].text||String(this.dt.data.headings[e].data);o.insertBefore(s("div",{class:this.options.classes.row,html:[`
      `,``,``,"
      "].join("")}),o.lastElementChild)}})),this.modalDOM=i,this.openModal();const r=Array.from(o.querySelectorAll(`input.${this.options.classes.input}[type=text]`));r.pop(),i.addEventListener("click",(t=>{const e=t.target;e instanceof Element&&(e.hasAttribute("data-editor-cancel")?this.options.cancelModal(this)&&this.closeModal():e.hasAttribute("data-editor-save")&&this.saveRow(r.map((t=>t.value.trim())),this.data.row))}))}saveRow(t,e){const s=e.map((t=>t.text??String(t.data)));t&&(this.dt.data.data[this.data.rowIndex]=this.dt.data.data[this.data.rowIndex].map(((e,s)=>{if(this.dt.columns.settings[s].hidden||this.options.excludeColumns.includes(s))return e;const i=this.dt.columns.settings[s].type||this.dt.options.type,n=t[o(s,this.dt.columns.settings)],a=n.trim();let r;if("number"===i)r={data:parseFloat(a)};else if("boolean"===i)r=["","false","0"].includes(a)?{data:!1,text:"false",order:0}:{data:!0,text:"true",order:1};else if("html"===i)r={data:[{nodeName:"#text",data:n}],text:n,order:n};else if("string"===i)r={data:n};else if("date"===i){const t=this.dt.columns.settings[s].format||this.dt.options.format;r={data:n,order:B(String(n),t)}}else r={data:n};return r})));const i=this.dt.data.data[this.data.rowIndex].map((t=>t.text??String(t.data)));this.data={},this.dt.update(!0),this.closeModal(),this.editing=!1,this.dt.emit("editable.save.row",i,s,e)}openModal(){this.modalDOM&&document.body.appendChild(this.modalDOM)}closeModal(){this.editing&&this.modalDOM&&(document.body.removeChild(this.modalDOM),this.modalDOM=this.editing=this.editingRow=this.editingCell=!1)}removeRow(t){if(!t||"TR"!==t.nodeName||this.editing)return;const e=parseInt(t.dataset.index,10);this.dt.rows.remove(e),this.closeMenu()}updateMenu(){const t=window.scrollX||window.pageXOffset,e=window.scrollY||window.pageYOffset;this.rect=this.wrapperDOM.getBoundingClientRect(),this.limits={x:window.innerWidth+t-this.rect.width,y:window.innerHeight+e-this.rect.height}}dismissMenu(t){const e=t.target;if(!(e instanceof Element)||this.wrapperDOM.contains(e))return;let s=!0;this.editing&&(s=!e.matches(`input.${this.options.classes.input}[type=text]`)),s&&this.closeMenu()}openMenu(){if(this.editing&&this.data&&this.editingCell){const t=this.modalDOM?this.modalDOM.querySelector(`input.${this.options.classes.input}[type=text]`):this.dt.wrapperDOM.querySelector(`input.${this.options.classes.input}[type=text]`);this.saveCell(t.value)}document.body.appendChild(this.containerDOM),this.menuOpen=!0,this.dt.emit("editable.context.open")}closeMenu(){this.menuOpen&&(this.menuOpen=!1,document.body.removeChild(this.containerDOM),this.dt.emit("editable.context.close"))}destroy(){this.dt.dom.removeEventListener(this.options.clickEvent,this.events.click),this.dt.dom.removeEventListener("contextmenu",this.events.context),document.removeEventListener("click",this.events.dismissMenu),document.removeEventListener("keydown",this.events.keydown),window.removeEventListener("resize",this.events.reset),window.removeEventListener("scroll",this.events.reset),document.body.contains(this.containerDOM)&&document.body.removeChild(this.containerDOM),this.options.inline&&(this.dt.options.rowRender=this.originalRowRender),this.initialized=!1}rowRender(t,e,s){if(!this.data||this.data.rowIndex!==s)return e;if(this.editingCell){e.childNodes[o(this.data.columnIndex,this.dt.columns.settings)].childNodes=[{nodeName:"INPUT",attributes:{type:"text",value:this.data.content,class:this.options.classes.input}}]}else e.childNodes.forEach(((s,i)=>{const o=a(i,this.dt.columns.settings),r=t[o];if(!this.options.excludeColumns.includes(o)){e.childNodes[i].childNodes=[{nodeName:"INPUT",attributes:{type:"text",value:n(r.text||String(r.data)||""),class:this.options.classes.input}}]}}));return e}}const tt={classes:{button:"datatable-column-filter-button",menu:"datatable-column-filter-menu",container:"datatable-column-filter-container",wrapper:"datatable-column-filter-wrapper"},labels:{button:"Filter columns within the table"},hiddenColumns:[]};class et{constructor(t,e={}){this.dt=t,this.options={...tt,...e}}init(){if(this.initialized)return;let t=this.dt.wrapperDOM.querySelector(`.${this.options.classes.button}`);if(!t){t=s("button",{class:this.options.classes.button,html:"▦"});const e=this.dt.wrapperDOM.querySelector(`.${this.dt.options.classes.search}`);e?e.appendChild(t):this.dt.wrapperDOM.appendChild(t),this.addedButtonDOM=!0}this.buttonDOM=t,this.containerDOM=s("div",{id:this.options.classes.container}),this.wrapperDOM=s("div",{class:this.options.classes.wrapper}),this.menuDOM=s("ul",{class:this.options.classes.menu,html:this.dt.data.headings.map(((t,e)=>{const s=this.dt.columns.settings[e];return this.options.hiddenColumns.includes(e)?"":`
    • \n \n \n
    • `})).join("")}),this.wrapperDOM.appendChild(this.menuDOM),this.containerDOM.appendChild(this.wrapperDOM),this._measureSpace(),this._bind(),this.initialized=!0}dismiss(){this.addedButtonDOM&&this.buttonDOM.parentElement&&this.buttonDOM.parentElement.removeChild(this.buttonDOM),document.removeEventListener("click",this.events.click)}_bind(){this.events={click:this._click.bind(this)},document.addEventListener("click",this.events.click)}_openMenu(){document.body.appendChild(this.containerDOM),this._measureSpace(),this.menuOpen=!0,this.dt.emit("columnFilter.menu.open")}_closeMenu(){this.menuOpen&&(this.menuOpen=!1,document.body.removeChild(this.containerDOM),this.dt.emit("columnFilter.menu.close"))}_measureSpace(){const t=window.scrollX||window.pageXOffset,e=window.scrollY||window.pageYOffset;this.rect=this.wrapperDOM.getBoundingClientRect(),this.limits={x:window.innerWidth+t-this.rect.width,y:window.innerHeight+e-this.rect.height}}_click(t){const e=t.target;if(e instanceof Element)if(this.event=t,this.buttonDOM.contains(e)){if(t.preventDefault(),this.menuOpen)return void this._closeMenu();this._openMenu();let e=t.pageX,s=t.pageY;e>this.limits.x&&(e-=this.rect.width),s>this.limits.y&&(s-=this.rect.height),this.wrapperDOM.style.top=`${s}px`,this.wrapperDOM.style.left=`${e}px`}else if(this.menuDOM.contains(e)){const t=e.closest(`.${this.options.classes.menu} > li`);if(!t)return;const s=t.querySelector("input[type=checkbox]");s.contains(e)||(s.checked=!s.checked);const i=Number(t.dataset.column);s.checked?this.dt.columns.show([i]):this.dt.columns.hide([i])}else this.menuOpen&&this._closeMenu()}}exports.DataTable=class{constructor(t,e={}){const s="string"==typeof t?document.querySelector(t):t;s instanceof HTMLTableElement?this.dom=s:(this.dom=document.createElement("table"),s.appendChild(this.dom));const i={...Q.diffDomOptions,...e.diffDomOptions},n={...Q.labels,...e.labels},a={...Q.classes,...e.classes};this.options={...Q,...e,diffDomOptions:i,labels:n,classes:a},this._initialInnerHTML=this.options.destroyable?this.dom.innerHTML:"",this.options.tabIndex?this.dom.tabIndex=this.options.tabIndex:this.options.rowNavigation&&-1===this.dom.tabIndex&&(this.dom.tabIndex=0),this._listeners={onResize:()=>this._onResize()},this._dd=new T(this.options.diffDomOptions||{}),this.initialized=!1,this._events={},this._currentPage=0,this.onFirstPage=!0,this.hasHeadings=!1,this.hasRows=!1,this._searchQueries=[],this.init()}init(){if(this.initialized||this.dom.classList.contains(this.options.classes.table))return!1;this._virtualDOM=D(this.dom,this.options.diffDomOptions||{}),this._tableAttributes={...this._virtualDOM.attributes},this.rows=new J(this),this.columns=new W(this),this.data=U(this.options.data,this.dom,this.columns.settings,this.options.type,this.options.format),this._render(),setTimeout((()=>{this.emit("datatable.init"),this.initialized=!0}),10)}_render(){this.wrapperDOM=s("div",{class:`${this.options.classes.wrapper} ${this.options.classes.loading}`}),this.wrapperDOM.innerHTML=this.options.template(this.options,this.dom);const t=this.wrapperDOM.querySelector(`select.${this.options.classes.selector}`);t&&this.options.paging&&this.options.perPageSelect?this.options.perPageSelect.forEach((e=>{const[s,i]=Array.isArray(e)?[e[0],e[1]]:[String(e),e],n=i===this.options.perPage,a=new Option(s,String(i),n,n);t.appendChild(a)})):t&&t.parentElement.removeChild(t),this.containerDOM=this.wrapperDOM.querySelector(`.${this.options.classes.container}`),this._pagerDOMs=[],Array.from(this.wrapperDOM.querySelectorAll(`.${this.options.classes.pagination}`)).forEach((t=>{t instanceof HTMLElement&&(t.innerHTML=`
        `,this._pagerDOMs.push(t.firstElementChild))})),this._virtualPagerDOM={nodeName:"UL",attributes:{class:this.options.classes.paginationList}},this._label=this.wrapperDOM.querySelector(`.${this.options.classes.info}`),this.dom.parentElement.replaceChild(this.wrapperDOM,this.dom),this.containerDOM.appendChild(this.dom),this._rect=this.dom.getBoundingClientRect(),this._fixHeight(),this.options.header||this.wrapperDOM.classList.add("no-header"),this.options.footer||this.wrapperDOM.classList.add("no-footer"),this.options.sortable&&this.wrapperDOM.classList.add("sortable"),this.options.searchable&&this.wrapperDOM.classList.add("searchable"),this.options.fixedHeight&&this.wrapperDOM.classList.add("fixed-height"),this.options.fixedColumns&&this.wrapperDOM.classList.add("fixed-columns"),this._bindEvents(),this.columns._state.sort&&this.columns.sort(this.columns._state.sort.column,this.columns._state.sort.dir,!0),this.update(!0)}_renderTable(t={}){let e=P(this._tableAttributes,this.data.headings,(this.options.paging||this._searchQueries.length||this.columns._state.filters.length)&&this._currentPage&&this.pages.length&&!t.noPaging?this.pages[this._currentPage-1]:this.data.data.map(((t,e)=>({row:t,index:e}))),this.columns.settings,this.columns._state,this.rows.cursor,this.options,t);if(this.options.tableRender){const t=this.options.tableRender(this.data,e,"main");t&&(e=t)}const s=this._dd.diff(this._virtualDOM,e);this._dd.apply(this.dom,s),this._virtualDOM=e}_renderPage(t=!1){this.hasRows&&this.totalPages?(this._currentPage>this.totalPages&&(this._currentPage=1),this._renderTable(),this.onFirstPage=1===this._currentPage,this.onLastPage=this._currentPage===this.lastPage):this.setMessage(this.options.labels.noRows);let e,s=0,i=0,n=0;if(this.totalPages&&(s=this._currentPage-1,i=s*this.options.perPage,n=i+this.pages[s].length,i+=1,e=this._searchQueries.length?this._searchData.length:this.data.data.length),this._label&&this.options.labels.info.length){const t=this.options.labels.info.replace("{start}",String(i)).replace("{end}",String(n)).replace("{page}",String(this._currentPage)).replace("{pages}",String(this.totalPages)).replace("{rows}",String(e));this._label.innerHTML=e?t:""}if(1==this._currentPage&&this._fixHeight(),this.options.rowNavigation&&this._currentPage&&(!this.rows.cursor||!this.pages[this._currentPage-1].find((t=>t.index===this.rows.cursor)))){const e=this.pages[this._currentPage-1];e.length&&(t?this.rows.setCursor(e[e.length-1].index):this.rows.setCursor(e[0].index))}}_renderPagers(){if(!this.options.paging)return;let t=Z(this.onFirstPage,this.onLastPage,this._currentPage,this.totalPages,this.options);if(this.options.pagerRender){const e=this.options.pagerRender([this.onFirstPage,this.onLastPage,this._currentPage,this.totalPages],t);e&&(t=e)}const e=this._dd.diff(this._virtualPagerDOM,t);this._pagerDOMs.forEach((t=>{this._dd.apply(t,e)})),this._virtualPagerDOM=t}_renderSeparateHeader(){const t=this.dom.parentElement;this.headerDOM||(this.headerDOM=document.createElement("div"),this._virtualHeaderDOM={nodeName:"DIV"}),t.parentElement.insertBefore(this.headerDOM,t);let e={nodeName:"TABLE",attributes:this._tableAttributes,childNodes:[{nodeName:"THEAD",childNodes:[A(this.data.headings,this.columns.settings,this.columns._state,this.options,{unhideHeader:!0})]}]};if(e.attributes.class=e.attributes.class?`${e.attributes.class} ${this.options.classes.table}`:this.options.classes.table,this.options.tableRender){const t=this.options.tableRender(this.data,e,"header");t&&(e=t)}const s={nodeName:"DIV",attributes:{class:this.options.classes.headercontainer},childNodes:[e]},i=this._dd.diff(this._virtualHeaderDOM,s);this._dd.apply(this.headerDOM,i),this._virtualHeaderDOM=s;const n=this.headerDOM.firstElementChild.clientWidth-this.dom.clientWidth;if(n){const t=structuredClone(this._virtualHeaderDOM);t.attributes.style=`padding-right: ${n}px;`;const e=this._dd.diff(this._virtualHeaderDOM,t);this._dd.apply(this.headerDOM,e),this._virtualHeaderDOM=t}t.scrollHeight>t.clientHeight&&(t.style.overflowY="scroll")}_bindEvents(){if(this.options.perPageSelect){const t=this.wrapperDOM.querySelector(`select.${this.options.classes.selector}`);t&&t instanceof HTMLSelectElement&&t.addEventListener("change",(()=>{this.options.perPage=parseInt(t.value,10),this.update(),this._fixHeight(),this.emit("datatable.perpage",this.options.perPage)}),!1)}this.options.searchable&&this.wrapperDOM.addEventListener("input",(t=>{const e=t.target;if(!(e instanceof HTMLInputElement&&e.matches(`.${this.options.classes.input}`)))return;t.preventDefault();const s=[];if(Array.from(this.wrapperDOM.querySelectorAll(`.${this.options.classes.input}`)).filter((t=>t.value.length)).forEach((t=>{const e=t.dataset.and||this.options.searchAnd,i=t.dataset.querySeparator||this.options.searchQuerySeparator?t.value.split(this.options.searchQuerySeparator):[t.value];e?i.forEach((e=>{t.dataset.columns?s.push({terms:[e],columns:JSON.parse(t.dataset.columns)}):s.push({terms:[e],columns:void 0})})):t.dataset.columns?s.push({terms:i,columns:JSON.parse(t.dataset.columns)}):s.push({terms:i,columns:void 0})})),1===s.length&&1===s[0].terms.length){const t=s[0];this.search(t.terms[0],t.columns)}else this.multiSearch(s)})),this.wrapperDOM.addEventListener("click",(t=>{const e=t.target.closest("a, button");if(e)if(e.hasAttribute("data-page"))this.page(parseInt(e.getAttribute("data-page"),10)),t.preventDefault();else if(e.classList.contains(this.options.classes.sorter)){const s=Array.from(e.parentElement.parentElement.children).indexOf(e.parentElement),i=a(s,this.columns.settings);this.columns.sort(i),t.preventDefault()}else if(e.classList.contains(this.options.classes.filter)){const s=Array.from(e.parentElement.parentElement.children).indexOf(e.parentElement),i=a(s,this.columns.settings);this.columns.filter(i),t.preventDefault()}}),!1),this.options.rowNavigation?(this.dom.addEventListener("keydown",(t=>{if("ArrowUp"===t.key){let e;t.preventDefault(),t.stopPropagation(),this.pages[this._currentPage-1].find((t=>t.index===this.rows.cursor||(e=t,!1))),e?this.rows.setCursor(e.index):this.onFirstPage||this.page(this._currentPage-1,!0)}else if("ArrowDown"===t.key){let e;t.preventDefault(),t.stopPropagation();const s=this.pages[this._currentPage-1].find((t=>!!e||(t.index===this.rows.cursor&&(e=!0),!1)));s?this.rows.setCursor(s.index):this.onLastPage||this.page(this._currentPage+1)}else["Enter"," "].includes(t.key)&&this.emit("datatable.selectrow",this.rows.cursor,t)})),this.dom.addEventListener("mousedown",(t=>{const e=t.target;if(e instanceof Element&&this.dom.matches(":focus")){const s=Array.from(this.dom.querySelectorAll("body tr")).find((t=>t.contains(e)));s&&s instanceof HTMLElement&&this.emit("datatable.selectrow",parseInt(s.dataset.index,10),t)}}))):this.dom.addEventListener("mousedown",(t=>{const e=t.target;if(!(e instanceof Element))return;const s=Array.from(this.dom.querySelectorAll("body tr")).find((t=>t.contains(e)));s&&s instanceof HTMLElement&&this.emit("datatable.selectrow",parseInt(s.dataset.index,10),t)})),window.addEventListener("resize",this._listeners.onResize)}_onResize(){this._rect=this.containerDOM.getBoundingClientRect(),this._rect.width&&this.update(!0)}destroy(){this.options.destroyable&&(this.dom.innerHTML=this._initialInnerHTML,this.dom.classList.remove(this.options.classes.table),this.wrapperDOM.parentElement&&this.wrapperDOM.parentElement.replaceChild(this.dom,this.wrapperDOM),this.initialized=!1,window.removeEventListener("resize",this._listeners.onResize))}update(t=!1){t&&(this.columns._measureWidths(),this.hasRows=Boolean(this.data.data.length),this.hasHeadings=Boolean(this.data.headings.length)),this.wrapperDOM.classList.remove(this.options.classes.empty),this._paginate(),this._renderPage(),this._renderPagers(),this.options.scrollY.length&&this._renderSeparateHeader(),this.emit("datatable.update")}_paginate(){let t=this.data.data.map(((t,e)=>({row:t,index:e})));return this._searchQueries.length&&(t=[],this._searchData.forEach((e=>t.push({index:e,row:this.data.data[e]})))),this.columns._state.filters.length&&this.columns._state.filters.forEach(((e,s)=>{e&&(t=t.filter((t=>"function"==typeof e?e(t.row[s].data):(t.row[s].text??t.row[s].data)===e)))})),this.options.paging&&this.options.perPage>0?this.pages=t.map(((e,s)=>s%this.options.perPage==0?t.slice(s,s+this.options.perPage):null)).filter((t=>t)):this.pages=[t],this.totalPages=this.lastPage=this.pages.length,this._currentPage||(this._currentPage=1),this.totalPages}_fixHeight(){this.options.fixedHeight&&(this.containerDOM.style.height=null,this._rect=this.containerDOM.getBoundingClientRect(),this.containerDOM.style.height=`${this._rect.height}px`)}search(t,e){if(!t.length)return this._currentPage=1,this._searchQueries=[],this._searchData=[],this.update(),this.emit("datatable.search","",[]),this.wrapperDOM.classList.remove("search-results"),!1;this.multiSearch([{terms:[t],columns:e||void 0}]),this.emit("datatable.search",t,this._searchData)}multiSearch(t){if(!this.hasRows)return!1;this._currentPage=1,this._searchData=[];const e=t.map((t=>({columns:t.columns,terms:t.terms.map((t=>t.trim())).filter((t=>t))}))).filter((t=>t.terms.length));if(this._searchQueries=e,!e.length)return this.update(),this.emit("datatable.multisearch",e,this._searchData),this.wrapperDOM.classList.remove("search-results"),!1;const s=e.map((t=>this.columns.settings.map(((e,s)=>{if(e.hidden||!e.searchable||t.columns&&!t.columns.includes(s))return!1;let i=t.terms;const n=e.sensitivity||this.options.sensitivity;["base","accent"].includes(n)&&(i=i.map((t=>t.toLowerCase()))),["base","case"].includes(n)&&(i=i.map((t=>t.normalize("NFD").replace(/\p{Diacritic}/gu,""))));return(e.ignorePunctuation??this.options.ignorePunctuation)&&(i=i.map((t=>t.replace(/[.,/#!$%^&*;:{}=-_`~()]/g,"")))),i}))));this.data.data.forEach(((t,e)=>{const i=t.map(((t,e)=>{let s=(t.text||String(t.data)).trim();const i=this.columns.settings[e];if(s.length){const t=i.sensitivity||this.options.sensitivity;["base","accent"].includes(t)&&(s=s.toLowerCase()),["base","case"].includes(t)&&(s=s.normalize("NFD").replace(/\p{Diacritic}/gu,""));(i.ignorePunctuation??this.options.ignorePunctuation)&&(s=s.replace(/[.,/#!$%^&*;:{}=-_`~()]/g,""))}const n=i.searchItemSeparator||this.options.searchItemSeparator;return n?s.split(n):[s]}));s.every((t=>t.find(((t,e)=>!!t&&t.find((t=>i[e].find((e=>e.includes(t)))))))))&&this._searchData.push(e)})),this.wrapperDOM.classList.add("search-results"),this._searchData.length?this.update():(this.wrapperDOM.classList.remove("search-results"),this.setMessage(this.options.labels.noResults)),this.emit("datatable.multisearch",e,this._searchData)}page(t,e=!1){return t!==this._currentPage&&(isNaN(t)||(this._currentPage=t),!(t>this.pages.length||t<0)&&(this._renderPage(e),this._renderPagers(),void this.emit("datatable.page",t)))}insert(e){let s=[];if(Array.isArray(e)){const t=this.data.headings.map((t=>t.text??String(t.data)));e.forEach(((e,i)=>{const n=[];Object.entries(e).forEach((([e,s])=>{const a=t.indexOf(e);a>-1?n[a]=F(s,this.columns.settings[a]):this.hasHeadings||this.hasRows||0!==i||(n[t.length]=F(s,this.columns.settings[t.length]),t.push(e),this.data.headings.push(z(e)))})),s.push(n)}))}else t(e)&&(!e.headings||this.hasHeadings||this.hasRows?e.data&&Array.isArray(e.data)&&(s=e.data.map((t=>t.map(((t,e)=>F(t,this.columns.settings[e])))))):this.data=U(e,void 0,this.columns.settings,this.options.type,this.options.format));s.length&&s.forEach((t=>this.data.data.push(t))),this.hasHeadings=Boolean(this.data.headings.length),this.columns._state.sort&&this.columns.sort(this.columns._state.sort.column,this.columns._state.sort.dir,!0),this.update(!0)}refresh(){this.options.searchable&&(Array.from(this.wrapperDOM.querySelectorAll(`.${this.options.classes.input}`)).forEach((t=>{t.value=""})),this._searchQueries=[]),this._currentPage=1,this.onFirstPage=!0,this.update(!0),this.emit("datatable.refresh")}print(){const t=s("table");let e=P(this._tableAttributes,this.data.headings,this.data.data.map(((t,e)=>({row:t,index:e}))),this.columns.settings,this.columns._state,!1,this.options,{noColumnWidths:!0,unhideHeader:!0});if(this.options.tableRender){const t=this.options.tableRender(this.data,e,"print");t&&(e=t)}const i=this._dd.diff({nodeName:"TABLE"},e);this._dd.apply(t,i);const n=window.open();n.document.body.appendChild(t),n.print()}setMessage(t){const e=this.data.headings.filter(((t,e)=>!this.columns.settings[e]?.hidden)).length||1;this.wrapperDOM.classList.add(this.options.classes.empty),this._label&&(this._label.innerHTML=""),this.totalPages=0,this._renderPagers();let s={nodeName:"TABLE",attributes:this._tableAttributes,childNodes:[{nodeName:"THEAD",childNodes:[A(this.data.headings,this.columns.settings,this.columns._state,this.options,{})]},{nodeName:"TBODY",childNodes:[{nodeName:"TR",childNodes:[{nodeName:"TD",attributes:{class:this.options.classes.empty,colspan:String(e)},childNodes:[{nodeName:"#text",data:t}]}]}]}]};if(s.attributes.class=s.attributes.class?`${s.attributes.class} ${this.options.classes.table}`:this.options.classes.table,this.options.tableRender){const t=this.options.tableRender(this.data,s,"message");t&&(s=t)}const i=this._dd.diff(this._virtualDOM,s);this._dd.apply(this.dom,i),this._virtualDOM=s}on(t,e){this._events[t]=this._events[t]||[],this._events[t].push(e)}off(t,e){t in this._events!=!1&&this._events[t].splice(this._events[t].indexOf(e),1)}emit(t,...e){if(t in this._events!=!1)for(let s=0;ss.init())),s},exports.convertCSV=function(e){let s;if(!t(e))return!1;const i={lineDelimiter:"\n",columnDelimiter:",",removeDoubleQuotes:!1,...e};if(i.data.length){s={data:[]};const t=i.data.split(i.lineDelimiter);if(t.length&&(i.headings&&(s.headings=t[0].split(i.columnDelimiter),i.removeDoubleQuotes&&(s.headings=s.headings.map((t=>t.trim().replace(/(^"|"$)/g,"")))),t.shift()),t.forEach(((t,e)=>{s.data[e]=[];const n=t.split(i.columnDelimiter);n.length&&n.forEach((t=>{i.removeDoubleQuotes&&(t=t.trim().replace(/(^"|"$)/g,"")),s.data[e].push(t)}))}))),s)return s}return!1},exports.convertJSON=function(s){let i;if(!t(s))return!1;const n={data:"",...s};if(n.data.length||t(n.data)){const t=!!e(n.data)&&JSON.parse(n.data);if(t?(i={headings:[],data:[]},t.forEach(((t,e)=>{i.data[e]=[],Object.entries(t).forEach((([t,s])=>{i.headings.includes(t)||i.headings.push(t),i.data[e].push(s)}))}))):console.warn("That's not valid JSON!"),i)return i}return!1},exports.createElement=s,exports.exportCSV=function(e,s={}){if(!e.hasHeadings&&!e.hasRows)return!1;if(!t(s))return!1;const i={download:!0,skipColumn:[],lineDelimiter:"\n",columnDelimiter:",",...s},n=t=>!i.skipColumn.includes(t)&&!e.columns.settings[t]?.hidden;let a=[];const o=e.data.headings.filter(((t,e)=>n(e))).map((t=>t.text??t.data));if(a[0]=o,i.selection)if(Array.isArray(i.selection))for(let t=0;tt.row.filter(((t,e)=>n(e))).map((t=>t.text??t.data)))));else a=a.concat(e.pages[i.selection-1].map((t=>t.row.filter(((t,e)=>n(e))).map((t=>t.text??t.data)))));else a=a.concat(e.data.data.map((t=>t.filter(((t,e)=>n(e))).map((t=>t.text??t.data)))));if(a.length){let t="";if(a.forEach((e=>{e.forEach((e=>{"string"==typeof e&&(e=(e=(e=(e=(e=e.trim()).replace(/\s{2,}/g," ")).replace(/\n/g," ")).replace(/"/g,'""')).replace(/#/g,"%23")).includes(",")&&(e=`"${e}"`),t+=e+i.columnDelimiter})),t=t.trim().substring(0,t.length-1),t+=i.lineDelimiter})),t=t.trim().substring(0,t.length-1),i.download){const e=document.createElement("a");e.href=encodeURI(`data:text/csv;charset=utf-8,${t}`),e.download=`${i.filename||"datatable_export"}.csv`,document.body.appendChild(e),e.click(),document.body.removeChild(e)}return t}return!1},exports.exportJSON=function(e,s={}){if(!e.hasHeadings&&!e.hasRows)return!1;if(!t(s))return!1;const i={download:!0,skipColumn:[],replacer:null,space:4,...s},n=t=>!i.skipColumn.includes(t)&&!e.columns.settings[t]?.hidden;let a=[];if(i.selection)if(Array.isArray(i.selection))for(let t=0;tt.row.filter(((t,e)=>n(e))).map((t=>t.data)))));else a=a.concat(e.pages[i.selection-1].map((t=>t.row.filter(((t,e)=>n(e))).map((t=>t.data)))));else a=a.concat(e.data.data.map((t=>t.filter(((t,e)=>n(e))).map((t=>t.data)))));const o=e.data.headings.filter(((t,e)=>n(e))).map((t=>t.text??String(t.data)));if(a.length){const t=[];a.forEach(((e,s)=>{t[s]=t[s]||{},e.forEach(((e,i)=>{t[s][o[i]]=e}))}));const e=JSON.stringify(t,i.replacer,i.space);if(i.download){const t=new Blob([e],{type:"data:application/json;charset=utf-8"}),s=URL.createObjectURL(t),n=document.createElement("a");n.href=s,n.download=`${i.filename||"datatable_export"}.json`,document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(s)}return e}return!1},exports.exportSQL=function(e,s={}){if(!e.hasHeadings&&!e.hasRows)return!1;if(!t(s))return!1;const i={download:!0,skipColumn:[],tableName:"myTable",...s},n=t=>!i.skipColumn.includes(t)&&!e.columns.settings[t]?.hidden;let a=[];if(i.selection)if(Array.isArray(i.selection))for(let t=0;tt.row.filter(((t,e)=>n(e))).map((t=>t.text??t.data)))));else a=a.concat(e.pages[i.selection-1].map((t=>t.row.filter(((t,e)=>n(e))).map((t=>t.text??t.data)))));else a=a.concat(e.data.data.map((t=>t.filter(((t,e)=>n(e))).map((t=>t.text??t.data)))));const o=e.data.headings.filter(((t,e)=>n(e))).map((t=>t.text??String(t.data)));if(a.length){let t=`INSERT INTO \`${i.tableName}\` (`;if(o.forEach((e=>{t+=`\`${e}\`,`})),t=t.trim().substring(0,t.length-1),t+=") VALUES ",a.forEach((e=>{t+="(",e.forEach((e=>{t+="string"==typeof e?`"${e}",`:`${e},`})),t=t.trim().substring(0,t.length-1),t+="),"})),t=t.trim().substring(0,t.length-1),t+=";",i.download&&(t=`data:application/sql;charset=utf-8,${t}`),i.download){const e=document.createElement("a");e.href=encodeURI(t),e.download=`${i.filename||"datatable_export"}.sql`,document.body.appendChild(e),e.click(),document.body.removeChild(e)}return t}return!1},exports.exportTXT=function(e,s={}){if(!e.hasHeadings&&!e.hasRows)return!1;if(!t(s))return!1;const i={download:!0,skipColumn:[],lineDelimiter:"\n",columnDelimiter:",",...s},n=t=>!i.skipColumn.includes(t)&&!e.columns.settings[t]?.hidden;let a=[];const o=e.data.headings.filter(((t,e)=>n(e))).map((t=>t.text??t.data));if(a[0]=o,i.selection)if(Array.isArray(i.selection))for(let t=0;tt.row.filter(((t,e)=>n(e))).map((t=>t.data)))));else a=a.concat(e.pages[i.selection-1].map((t=>t.row.filter(((t,e)=>n(e))).map((t=>t.data)))));else a=a.concat(e.data.data.map((t=>t.filter(((t,e)=>n(e))).map((t=>t.data)))));if(a.length){let t="";if(a.forEach((e=>{e.forEach((e=>{"string"==typeof e&&(e=(e=(e=(e=(e=e.trim()).replace(/\s{2,}/g," ")).replace(/\n/g," ")).replace(/"/g,'""')).replace(/#/g,"%23")).includes(",")&&(e=`"${e}"`),t+=e+i.columnDelimiter})),t=t.trim().substring(0,t.length-1),t+=i.lineDelimiter})),t=t.trim().substring(0,t.length-1),i.download&&(t=`data:text/csv;charset=utf-8,${t}`),i.download){const e=document.createElement("a");e.href=encodeURI(t),e.download=`${i.filename||"datatable_export"}.txt`,document.body.appendChild(e),e.click(),document.body.removeChild(e)}return t}return!1},exports.isJson=e,exports.isObject=t,exports.makeEditable=function(t,e={}){const s=new K(t,e);return t.initialized?s.init():t.on("datatable.init",(()=>s.init())),s}; +"use strict";const t=t=>"[object Object]"===Object.prototype.toString.call(t),e=e=>{let s=!1;try{s=JSON.parse(e)}catch(t){return!1}return!(null===s||!Array.isArray(s)&&!t(s))&&s},s=(t,e)=>{const s=document.createElement(t);if(e&&"object"==typeof e)for(const t in e)"html"===t?s.innerHTML=e[t]:s.setAttribute(t,e[t]);return s},i=t=>["#text","#comment"].includes(t.nodeName)?t.data:t.childNodes?t.childNodes.map((t=>i(t))).join(""):"",n=function(t){return t.replace(/&/g,"&").replace(//g,">").replace(/"/g,""")},a=function(t,e){let s=0,i=0;for(;s0;){var s=e.splice(0,1)[0];t=t.childNodes[s]}return t};function l(t,e,s){var i,n,a,l=e[s._const.action],d=e[s._const.route];[s._const.addElement,s._const.addTextElement].includes(l)||(i=r(t,d));var c={diff:e,node:i};if(s.preDiffApply(c))return!0;switch(l){case s._const.addAttribute:if(!(i&&i instanceof Element))return!1;i.setAttribute(e[s._const.name],e[s._const.value]);break;case s._const.modifyAttribute:if(!(i&&i instanceof Element))return!1;i.setAttribute(e[s._const.name],e[s._const.newValue]),i instanceof HTMLInputElement&&"value"===e[s._const.name]&&(i.value=e[s._const.newValue]);break;case s._const.removeAttribute:if(!(i&&i instanceof Element))return!1;i.removeAttribute(e[s._const.name]);break;case s._const.modifyTextElement:if(!(i&&i instanceof Text))return!1;s.textDiff(i,i.data,e[s._const.oldValue],e[s._const.newValue]);break;case s._const.modifyValue:if(!i||void 0===i.value)return!1;i.value=e[s._const.newValue];break;case s._const.modifyComment:if(!(i&&i instanceof Comment))return!1;s.textDiff(i,i.data,e[s._const.oldValue],e[s._const.newValue]);break;case s._const.modifyChecked:if(!i||void 0===i.checked)return!1;i.checked=e[s._const.newValue];break;case s._const.modifySelected:if(!i||void 0===i.selected)return!1;i.selected=e[s._const.newValue];break;case s._const.replaceElement:i.parentNode.replaceChild(o(e[s._const.newValue],"svg"===e[s._const.newValue].nodeName.toLowerCase(),s),i);break;case s._const.relocateGroup:Array.apply(void 0,new Array(e[s._const.groupLength])).map((function(){return i.removeChild(i.childNodes[e[s._const.from]])})).forEach((function(t,n){0===n&&(a=i.childNodes[e[s._const.to]]),i.insertBefore(t,a||null)}));break;case s._const.removeElement:i.parentNode.removeChild(i);break;case s._const.addElement:var h=(u=d.slice()).splice(u.length-1,1)[0];if(!((i=r(t,u))instanceof Element))return!1;i.insertBefore(o(e[s._const.element],"http://www.w3.org/2000/svg"===i.namespaceURI,s),i.childNodes[h]||null);break;case s._const.removeTextElement:if(!i||3!==i.nodeType)return!1;i.parentNode.removeChild(i);break;case s._const.addTextElement:var u;if(h=(u=d.slice()).splice(u.length-1,1)[0],n=s.document.createTextNode(e[s._const.value]),!(i=r(t,u)).childNodes)return!1;i.insertBefore(n,i.childNodes[h]||null);break;default:console.log("unknown action")}return s.postDiffApply({diff:c.diff,node:c.node,newNode:n}),!0}function d(t,e,s){var i=t[e];t[e]=t[s],t[s]=i}var c=function(t){var e=[];return e.push(t.nodeName),"#text"!==t.nodeName&&"#comment"!==t.nodeName&&t.attributes&&(t.attributes.class&&e.push("".concat(t.nodeName,".").concat(t.attributes.class.replace(/ /g,"."))),t.attributes.id&&e.push("".concat(t.nodeName,"#").concat(t.attributes.id))),e},h=function(t){var e={},s={};return t.forEach((function(t){c(t).forEach((function(t){var i=t in e;i||t in s?i&&(delete e[t],s[t]=!0):e[t]=!0}))})),e},u=function(t,e){var s=h(t),i=h(e),n={};return Object.keys(s).forEach((function(t){i[t]&&(n[t]=!0)})),n},p=function(t){return delete t.outerDone,delete t.innerDone,delete t.valueDone,!t.childNodes||t.childNodes.every(p)},f=function(t){if(Object.prototype.hasOwnProperty.call(t,"data"))return{nodeName:"#text"===t.nodeName?"#text":"#comment",data:t.data};var e={nodeName:t.nodeName};return Object.prototype.hasOwnProperty.call(t,"attributes")&&(e.attributes=t.attributes),Object.prototype.hasOwnProperty.call(t,"checked")&&(e.checked=t.checked),Object.prototype.hasOwnProperty.call(t,"value")&&(e.value=t.value),Object.prototype.hasOwnProperty.call(t,"selected")&&(e.selected=t.selected),Object.prototype.hasOwnProperty.call(t,"childNodes")&&(e.childNodes=t.childNodes.map((function(t){return f(t)}))),e},m=function(t,e){if(!["nodeName","value","checked","selected","data"].every((function(s){return t[s]===e[s]})))return!1;if(Object.prototype.hasOwnProperty.call(t,"data"))return!0;if(Boolean(t.attributes)!==Boolean(e.attributes))return!1;if(Boolean(t.childNodes)!==Boolean(e.childNodes))return!1;if(t.attributes){var s=Object.keys(t.attributes),i=Object.keys(e.attributes);if(s.length!==i.length)return!1;if(!s.every((function(s){return t.attributes[s]===e.attributes[s]})))return!1}if(t.childNodes){if(t.childNodes.length!==e.childNodes.length)return!1;if(!t.childNodes.every((function(t,s){return m(t,e.childNodes[s])})))return!1}return!0},g=function(t,e,s,i,n){if(void 0===n&&(n=!1),!t||!e)return!1;if(t.nodeName!==e.nodeName)return!1;if(["#text","#comment"].includes(t.nodeName))return!!n||t.data===e.data;if(t.nodeName in s)return!0;if(t.attributes&&e.attributes){if(t.attributes.id){if(t.attributes.id!==e.attributes.id)return!1;if("".concat(t.nodeName,"#").concat(t.attributes.id)in s)return!0}if(t.attributes.class&&t.attributes.class===e.attributes.class&&"".concat(t.nodeName,".").concat(t.attributes.class.replace(/ /g,"."))in s)return!0}if(i)return!0;var a=t.childNodes?t.childNodes.slice().reverse():[],o=e.childNodes?e.childNodes.slice().reverse():[];if(a.length!==o.length)return!1;if(n)return a.every((function(t,e){return t.nodeName===o[e].nodeName}));var r=u(a,o);return a.every((function(t,e){return g(t,o[e],r,!0,!0)}))},b=function(t,e){return Array.apply(void 0,new Array(t)).map((function(){return e}))},v=function(t,e){for(var s=t.childNodes?t.childNodes:[],i=e.childNodes?e.childNodes:[],n=b(s.length,!1),a=b(i.length,!1),o=[],r=function(){return arguments[1]},l=!1,d=function(){var t=function(t,e,s,i){var n=0,a=[],o=t.length,r=e.length,l=Array.apply(void 0,new Array(o+1)).map((function(){return[]})),d=u(t,e),h=o===r;h&&t.some((function(t,s){var i=c(t),n=c(e[s]);return i.length!==n.length?(h=!1,!0):(i.some((function(t,e){if(t!==n[e])return h=!1,!0})),!h||void 0)}));for(var p=0;p=n&&(n=l[p+1][m+1],a=[p+1,m+1]))}return 0!==n&&{oldValue:a[0]-n,newValue:a[1]-n,length:n}}(s,i,n,a);t?(o.push(t),Array.apply(void 0,new Array(t.length)).map(r).forEach((function(e){return function(t,e,s,i){t[s.oldValue+i]=!0,e[s.newValue+i]=!0}(n,a,t,e)}))):l=!0};!l;)d();return t.subsets=o,t.subsetsAge=100,o},w=function(){function t(){this.list=[]}return t.prototype.add=function(t){var e;(e=this.list).push.apply(e,t)},t.prototype.forEach=function(t){this.list.forEach((function(e){return t(e)}))},t}(),_=function(){function t(t){void 0===t&&(t={});var e=this;Object.entries(t).forEach((function(t){var s=t[0],i=t[1];return e[s]=i}))}return t.prototype.toString=function(){return JSON.stringify(this)},t.prototype.setValue=function(t,e){return this[t]=e,this},t}();function y(t,e){var s,i,n=t;for(e=e.slice();e.length>0;)i=e.splice(0,1)[0],s=n,n=n.childNodes?n.childNodes[i]:void 0;return{node:n,parentNode:s,nodeIndex:i}}function x(t,e,s){return e.forEach((function(e){!function(t,e,s){var i,n,a,o;if(![s._const.addElement,s._const.addTextElement].includes(e[s._const.action])){var r=y(t,e[s._const.route]);n=r.node,a=r.parentNode,o=r.nodeIndex}var l,d,c=[],h={diff:e,node:n};if(s.preVirtualDiffApply(h))return!0;switch(e[s._const.action]){case s._const.addAttribute:n.attributes||(n.attributes={}),n.attributes[e[s._const.name]]=e[s._const.value],"checked"===e[s._const.name]?n.checked=!0:"selected"===e[s._const.name]?n.selected=!0:"INPUT"===n.nodeName&&"value"===e[s._const.name]&&(n.value=e[s._const.value]);break;case s._const.modifyAttribute:n.attributes[e[s._const.name]]=e[s._const.newValue];break;case s._const.removeAttribute:delete n.attributes[e[s._const.name]],0===Object.keys(n.attributes).length&&delete n.attributes,"checked"===e[s._const.name]?n.checked=!1:"selected"===e[s._const.name]?delete n.selected:"INPUT"===n.nodeName&&"value"===e[s._const.name]&&delete n.value;break;case s._const.modifyTextElement:n.data=e[s._const.newValue];break;case s._const.modifyValue:n.value=e[s._const.newValue];break;case s._const.modifyComment:n.data=e[s._const.newValue];break;case s._const.modifyChecked:n.checked=e[s._const.newValue];break;case s._const.modifySelected:n.selected=e[s._const.newValue];break;case s._const.replaceElement:l=e[s._const.newValue],a.childNodes[o]=l;break;case s._const.relocateGroup:n.childNodes.splice(e[s._const.from],e[s._const.groupLength]).reverse().forEach((function(t){return n.childNodes.splice(e[s._const.to],0,t)})),n.subsets&&n.subsets.forEach((function(t){if(e[s._const.from]e[s._const.from])t.oldValue-=e[s._const.groupLength],(i=t.oldValue+t.length-e[s._const.to])>0&&(c.push({oldValue:e[s._const.to]+e[s._const.groupLength],newValue:t.newValue+t.length-i,length:i}),t.length-=i);else if(e[s._const.from]>e[s._const.to]&&t.oldValue>e[s._const.to]&&t.oldValue0&&(c.push({oldValue:e[s._const.to]+e[s._const.groupLength],newValue:t.newValue+t.length-i,length:i}),t.length-=i)}else t.oldValue===e[s._const.from]&&(t.oldValue=e[s._const.to])}));break;case s._const.removeElement:a.childNodes.splice(o,1),a.subsets&&a.subsets.forEach((function(t){t.oldValue>o?t.oldValue-=1:t.oldValue===o?t.delete=!0:t.oldValueo&&(t.oldValue+t.length-1===o?t.length--:(c.push({newValue:t.newValue+o-t.oldValue,oldValue:o,length:t.length-o+t.oldValue-1}),t.length=o-t.oldValue))})),n=a;break;case s._const.addElement:var u=(d=e[s._const.route].slice()).splice(d.length-1,1)[0];n=null===(i=y(t,d))||void 0===i?void 0:i.node,l=e[s._const.element],n.childNodes||(n.childNodes=[]),u>=n.childNodes.length?n.childNodes.push(l):n.childNodes.splice(u,0,l),n.subsets&&n.subsets.forEach((function(t){if(t.oldValue>=u)t.oldValue+=1;else if(t.oldValueu){var e=t.oldValue+t.length-u;c.push({newValue:t.newValue+t.length-e,oldValue:u+1,length:e}),t.length-=e}}));break;case s._const.removeTextElement:a.childNodes.splice(o,1),"TEXTAREA"===a.nodeName&&delete a.value,a.subsets&&a.subsets.forEach((function(t){t.oldValue>o?t.oldValue-=1:t.oldValue===o?t.delete=!0:t.oldValueo&&(t.oldValue+t.length-1===o?t.length--:(c.push({newValue:t.newValue+o-t.oldValue,oldValue:o,length:t.length-o+t.oldValue-1}),t.length=o-t.oldValue))})),n=a;break;case s._const.addTextElement:var p=(d=e[s._const.route].slice()).splice(d.length-1,1)[0];(l={}).nodeName="#text",l.data=e[s._const.value],(n=y(t,d).node).childNodes||(n.childNodes=[]),p>=n.childNodes.length?n.childNodes.push(l):n.childNodes.splice(p,0,l),"TEXTAREA"===n.nodeName&&(n.value=e[s._const.newValue]),n.subsets&&n.subsets.forEach((function(t){if(t.oldValue>=p&&(t.oldValue+=1),t.oldValuep){var e=t.oldValue+t.length-p;c.push({newValue:t.newValue+t.length-e,oldValue:p+1,length:e}),t.length-=e}}));break;default:console.log("unknown action")}n.subsets&&(n.subsets=n.subsets.filter((function(t){return!t.delete&&t.oldValue!==t.newValue})),c.length&&(n.subsets=n.subsets.concat(c))),s.postVirtualDiffApply({node:h.node,diff:h.diff,newNode:l})}(t,e,s)})),!0}function N(t,e){void 0===e&&(e={});var s={nodeName:t.nodeName};return t instanceof Text||t instanceof Comment?s.data=t.data:(t.attributes&&t.attributes.length>0&&(s.attributes={},Array.prototype.slice.call(t.attributes).forEach((function(t){return s.attributes[t.name]=t.value}))),t instanceof HTMLTextAreaElement?s.value=t.value:t.childNodes&&t.childNodes.length>0&&(s.childNodes=[],Array.prototype.slice.call(t.childNodes).forEach((function(t){return s.childNodes.push(N(t,e))}))),e.valueDiffing&&(t instanceof HTMLInputElement&&["radio","checkbox"].includes(t.type.toLowerCase())&&void 0!==t.checked?s.checked=t.checked:(t instanceof HTMLButtonElement||t instanceof HTMLDataElement||t instanceof HTMLInputElement||t instanceof HTMLLIElement||t instanceof HTMLMeterElement||t instanceof HTMLOptionElement||t instanceof HTMLProgressElement||t instanceof HTMLParamElement)&&(s.value=t.value),t instanceof HTMLOptionElement&&(s.selected=t.selected))),s}var D=/<\s*\/*[a-zA-Z:_][a-zA-Z0-9:_\-.]*\s*(?:"[^"]*"['"]*|'[^']*'['"]*|[^'"/>])*\/*\s*>|/g,M=Object.create?Object.create(null):{},O=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;function E(t){return t.replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&")}var V={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,menuItem:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},$=function(t){var e={nodeName:"",attributes:{}},s=!1,i=t.match(/<\/?([^\s]+?)[/\s>]/);if(i&&(e.nodeName=i[1].toUpperCase(),(V[i[1]]||"/"===t.charAt(t.length-2))&&(s=!0),e.nodeName.startsWith("!--"))){var n=t.indexOf("--\x3e");return{type:"comment",node:{nodeName:"#comment",data:-1!==n?t.slice(4,n):""},voidElement:s}}for(var a=new RegExp(O),o=null,r=!1;!r;)if(null===(o=a.exec(t)))r=!0;else if(o[0].trim())if(o[1]){var l=o[1].trim(),d=[l,""];l.indexOf("=")>-1&&(d=l.split("=")),e.attributes[d[0]]=d[1],a.lastIndex--}else o[2]&&(e.attributes[o[2]]=o[3].trim().substring(1,o[3].length-1));return{type:"tag",node:e,voidElement:s}},S=function(t,e){void 0===e&&(e={components:M});var s,i=[],n=-1,a=[],o=!1;if(0!==t.indexOf("<")){var r=t.indexOf("<");i.push({nodeName:"#text",data:-1===r?t:t.substring(0,r)})}return t.replace(D,(function(r,l){if(o){if(r!==""))return"";o=!1}var d="/"!==r.charAt(1),c=r.startsWith("\x3c!--"),h=l+r.length,u=t.charAt(h);if(c){var p=$(r).node;if(n<0)return i.push(p),"";var f=a[n];return f&&p.nodeName&&(f.node.childNodes||(f.node.childNodes=[]),f.node.childNodes.push(p)),""}if(d){s=$(r),n++,"tag"===s.type&&e.components[s.node.nodeName]&&(s.type="component",o=!0),s.voidElement||o||!u||"<"===u||(s.node.childNodes||(s.node.childNodes=[]),s.node.childNodes.push({nodeName:"#text",data:E(t.slice(h,t.indexOf("<",h)))})),0===n&&s.node.nodeName&&i.push(s.node);var m=a[n-1];m&&s.node.nodeName&&(m.node.childNodes||(m.node.childNodes=[]),m.node.childNodes.push(s.node)),a[n]=s}if((!d||s.voidElement)&&(n>-1&&(s.voidElement||s.node.nodeName===r.slice(2,-1).toUpperCase())&&--n>-1&&(s=a[n]),!o&&"<"!==u&&u)){var g=-1===n?i:a[n].node.childNodes||[],b=t.indexOf("<",h),v=E(t.slice(h,-1===b?void 0:b));g.push({nodeName:"#text",data:v})}return""})),i[0]},C=function(){function t(t,e,s){this.options=s,this.t1="undefined"!=typeof Element&&t instanceof Element?N(t,this.options):"string"==typeof t?S(t,this.options):JSON.parse(JSON.stringify(t)),this.t2="undefined"!=typeof Element&&e instanceof Element?N(e,this.options):"string"==typeof e?S(e,this.options):JSON.parse(JSON.stringify(e)),this.diffcount=0,this.foundAll=!1,this.debug&&(this.t1Orig="undefined"!=typeof Element&&t instanceof Element?N(t,this.options):"string"==typeof t?S(t,this.options):JSON.parse(JSON.stringify(t)),this.t2Orig="undefined"!=typeof Element&&e instanceof Element?N(e,this.options):"string"==typeof e?S(e,this.options):JSON.parse(JSON.stringify(e))),this.tracker=new w}return t.prototype.init=function(){return this.findDiffs(this.t1,this.t2)},t.prototype.findDiffs=function(t,e){var s;do{if(this.options.debug&&(this.diffcount+=1,this.diffcount>this.options.diffcap))throw new Error("surpassed diffcap:".concat(JSON.stringify(this.t1Orig)," -> ").concat(JSON.stringify(this.t2Orig)));0===(s=this.findNextDiff(t,e,[])).length&&(m(t,e)||(this.foundAll?console.error("Could not find remaining diffs!"):(this.foundAll=!0,p(t),s=this.findNextDiff(t,e,[])))),s.length>0&&(this.foundAll=!1,this.tracker.add(s),x(t,s,this.options))}while(s.length>0);return this.tracker.list},t.prototype.findNextDiff=function(t,e,s){var i,n;if(this.options.maxDepth&&s.length>this.options.maxDepth)return[];if(!t.outerDone){if(i=this.findOuterDiff(t,e,s),this.options.filterOuterDiff&&(n=this.options.filterOuterDiff(t,e,i))&&(i=n),i.length>0)return t.outerDone=!0,i;t.outerDone=!0}if(Object.prototype.hasOwnProperty.call(t,"data"))return[];if(!t.innerDone){if((i=this.findInnerDiff(t,e,s)).length>0)return i;t.innerDone=!0}if(this.options.valueDiffing&&!t.valueDone){if((i=this.findValueDiff(t,e,s)).length>0)return t.valueDone=!0,i;t.valueDone=!0}return[]},t.prototype.findOuterDiff=function(t,e,s){var i,n,a,o,r,l,d=[];if(t.nodeName!==e.nodeName){if(!s.length)throw new Error("Top level nodes have to be of the same kind.");return[(new _).setValue(this.options._const.action,this.options._const.replaceElement).setValue(this.options._const.oldValue,f(t)).setValue(this.options._const.newValue,f(e)).setValue(this.options._const.route,s)]}if(s.length&&this.options.diffcap0&&(r=this.attemptGroupRelocation(t,e,c,s,d)).length>0)return r}for(var h=0;hn.length)"#text"===u.nodeName?r.push((new _).setValue(this.options._const.action,this.options._const.removeTextElement).setValue(this.options._const.route,s.concat(l)).setValue(this.options._const.value,u.data)):r.push((new _).setValue(this.options._const.action,this.options._const.removeElement).setValue(this.options._const.element,f(u)).setValue(this.options._const.route,s.concat(l))),i.splice(h,1),h-=1,l-=1,o-=1;else if(i.lengthc+1&&"#text"===t.childNodes[c+1].nodeName;)if(c+=1,e.childNodes[w].data===t.childNodes[c].data){d=!0;break}if(!d)return v.push((new _).setValue(this.options._const.action,this.options._const.modifyTextElement).setValue(this.options._const.route,i.concat(w)).setValue(this.options._const.oldValue,l.data).setValue(this.options._const.newValue,e.childNodes[w].data)),v}}else v.push((new _).setValue(this.options._const.action,this.options._const.removeTextElement).setValue(this.options._const.route,i.concat(w)).setValue(this.options._const.value,l.data)),u.splice(w,1),m=Math.min(u.length,p.length),w-=1;else v.push((new _).setValue(this.options._const.action,this.options._const.removeElement).setValue(this.options._const.route,i.concat(w)).setValue(this.options._const.element,f(l))),u.splice(w,1),m=Math.min(u.length,p.length),w-=1;else if(!0===p[w])"#text"===(l=e.childNodes[w]).nodeName?(v.push((new _).setValue(this.options._const.action,this.options._const.addTextElement).setValue(this.options._const.route,i.concat(w)).setValue(this.options._const.value,l.data)),u.splice(w,0,!0),m=Math.min(u.length,p.length),y-=1):(v.push((new _).setValue(this.options._const.action,this.options._const.addElement).setValue(this.options._const.route,i.concat(w)).setValue(this.options._const.element,f(l))),u.splice(w,0,!0),m=Math.min(u.length,p.length),y-=1);else if(u[w]!==p[w]){if(v.length>0)return v;if(r=s[u[w]],(o=Math.min(r.newValue,t.childNodes.length-r.length))!==r.oldValue){a=!1;for(var x=0;x({nodeName:"TR",childNodes:t.map(((t,h)=>{const u=e[h]||{type:l,format:n,sortable:!0,searchable:!0};if(u.hidden)return;const p={};if(u.sortable&&o&&(!r.length||c)&&(u.filter?p["data-filterable"]="true":p["data-sortable"]="true"),u.headerClass&&(p.class=u.headerClass),s.sort&&s.sort.column===h){const t="asc"===s.sort.dir?i.ascending:i.descending;p.class=p.class?`${p.class} ${t}`:t,p["aria-sort"]="asc"===s.sort.dir?"ascending":"descending"}else s.filters[h]&&(p.class=p.class?`${p.class} ${i.filterActive}`:i.filterActive);let f="";s.widths[h]&&!d&&(f+=`width: ${s.widths[h]}%;`),r.length&&!c&&(f+="padding-bottom: 0;padding-top: 0;border: 0;"),f.length&&(p.style=f);const m="html"===t.type?t.data:[{nodeName:"#text",data:t.text??String(t.data)}];return{nodeName:"TH",attributes:p,childNodes:!a&&!r.length||c?u.sortable&&o?[{nodeName:"BUTTON",attributes:{class:u.filter?i.filter:i.sorter},childNodes:m}]:m:[{nodeName:"#text",data:""}]}})).filter((t=>t))}),A=(t,e,s,i,n,a,{classes:o,hiddenHeader:r,header:l,footer:d,format:c,sortable:h,scrollY:u,type:p,rowRender:f,tabIndex:m},{noColumnWidths:g,unhideHeader:b,renderHeader:v})=>{const w={nodeName:"TABLE",attributes:{...t},childNodes:[{nodeName:"TBODY",childNodes:s.map((({row:t,index:e})=>{const s={nodeName:"TR",attributes:{"data-index":String(e)},childNodes:t.map(((t,s)=>{const a=i[s]||{type:p,format:c,sortable:!0,searchable:!0};if(a.hidden)return;const o="html"===a.type?{nodeName:"TD",childNodes:t.data}:{nodeName:"TD",childNodes:[{nodeName:"#text",data:t.text??String(t.data)}]};if(l||d||!n.widths[s]||g||(o.attributes={style:`width: ${n.widths[s]}%;`}),a.cellClass&&(o.attributes||(o.attributes={}),o.attributes.class=a.cellClass),a.render){const i=a.render(t.data,o,e,s);if(i){if("string"!=typeof i)return i;{const t=S(`${i}`);1===t.childNodes.length&&["#text","#comment"].includes(t.childNodes[0].nodeName)?o.childNodes[0].data=i:o.childNodes=t.childNodes}}}return o})).filter((t=>t))};if(e===a&&(s.attributes.class=o.cursor),f){const i=f(t,s,e);if(i){if("string"!=typeof i)return i;{const t=S(`${i}`);!t.childNodes||1===t.childNodes.length&&["#text","#comment"].includes(t.childNodes[0].nodeName)?s.childNodes[0].data=i:s.childNodes=t.childNodes}}}return s}))}]};if(w.attributes.class=w.attributes.class?`${w.attributes.class} ${o.table}`:o.table,l||d||v){const t=T(e,i,n,{classes:o,hiddenHeader:r,sortable:h,scrollY:u},{noColumnWidths:g,unhideHeader:b});if(l||v){const e={nodeName:"THEAD",childNodes:[t]};!u.length&&!r||b||(e.attributes={style:"height: 0px;"}),w.childNodes.unshift(e)}if(d){const e={nodeName:"TFOOT",childNodes:[l?structuredClone(t):t]};!u.length&&!r||b||(e.attributes={style:"height: 0px;"}),w.childNodes.push(e)}}return!1!==m&&(w.attributes.tabindex=String(m)),w};"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;var P={},R={get exports(){return P},set exports(t){P=t}};R.exports=function(){var t=1e3,e=6e4,s=36e5,i="millisecond",n="second",a="minute",o="hour",r="day",l="week",d="month",c="quarter",h="year",u="date",p="Invalid Date",f=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,m=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,g={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(t){var e=["th","st","nd","rd"],s=t%100;return"["+t+(e[(s-20)%10]||e[s]||e[0])+"]"}},b=function(t,e,s){var i=String(t);return!i||i.length>=e?t:""+Array(e+1-i.length).join(s)+t},v={s:b,z:function(t){var e=-t.utcOffset(),s=Math.abs(e),i=Math.floor(s/60),n=s%60;return(e<=0?"+":"-")+b(i,2,"0")+":"+b(n,2,"0")},m:function t(e,s){if(e.date()1)return t(o[0])}else{var r=e.name;_[r]=e,n=r}return!i&&n&&(w=n),n||!i&&w},N=function(t,e){if(y(t))return t.clone();var s="object"==typeof e?e:{};return s.date=t,s.args=arguments,new M(s)},D=v;D.l=x,D.i=y,D.w=function(t,e){return N(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var M=function(){function g(t){this.$L=x(t.locale,null,!0),this.parse(t)}var b=g.prototype;return b.parse=function(t){this.$d=function(t){var e=t.date,s=t.utc;if(null===e)return new Date(NaN);if(D.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var i=e.match(f);if(i){var n=i[2]-1||0,a=(i[7]||"0").substring(0,3);return s?new Date(Date.UTC(i[1],n,i[3]||1,i[4]||0,i[5]||0,i[6]||0,a)):new Date(i[1],n,i[3]||1,i[4]||0,i[5]||0,i[6]||0,a)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},b.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},b.$utils=function(){return D},b.isValid=function(){return!(this.$d.toString()===p)},b.isSame=function(t,e){var s=N(t);return this.startOf(e)<=s&&s<=this.endOf(e)},b.isAfter=function(t,e){return N(t)68?1900:2e3)},r=function(t){return function(e){this[t]=+e}},l=[/[+-]\d\d:?(\d\d)?|Z/,function(t){(this.zone||(this.zone={})).offset=function(t){if(!t)return 0;if("Z"===t)return 0;var e=t.match(/([+-]|\d\d)/g),s=60*e[1]+(+e[2]||0);return 0===s?0:"+"===e[0]?-s:s}(t)}],d=function(t){var e=a[t];return e&&(e.indexOf?e:e.s.concat(e.f))},c=function(t,e){var s,i=a.meridiem;if(i){for(var n=1;n<=24;n+=1)if(t.indexOf(i(n,0,e))>-1){s=n>12;break}}else s=t===(e?"pm":"PM");return s},h={A:[n,function(t){this.afternoon=c(t,!1)}],a:[n,function(t){this.afternoon=c(t,!0)}],S:[/\d/,function(t){this.milliseconds=100*+t}],SS:[s,function(t){this.milliseconds=10*+t}],SSS:[/\d{3}/,function(t){this.milliseconds=+t}],s:[i,r("seconds")],ss:[i,r("seconds")],m:[i,r("minutes")],mm:[i,r("minutes")],H:[i,r("hours")],h:[i,r("hours")],HH:[i,r("hours")],hh:[i,r("hours")],D:[i,r("day")],DD:[s,r("day")],Do:[n,function(t){var e=a.ordinal,s=t.match(/\d+/);if(this.day=s[0],e)for(var i=1;i<=31;i+=1)e(i).replace(/\[|\]/g,"")===t&&(this.day=i)}],M:[i,r("month")],MM:[s,r("month")],MMM:[n,function(t){var e=d("months"),s=(d("monthsShort")||e.map((function(t){return t.slice(0,3)}))).indexOf(t)+1;if(s<1)throw new Error;this.month=s%12||s}],MMMM:[n,function(t){var e=d("months").indexOf(t)+1;if(e<1)throw new Error;this.month=e%12||e}],Y:[/[+-]?\d+/,r("year")],YY:[s,function(t){this.year=o(t)}],YYYY:[/\d{4}/,r("year")],Z:l,ZZ:l};function u(s){var i,n;i=s,n=a&&a.formats;for(var o=(s=i.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(e,s,i){var a=i&&i.toUpperCase();return s||n[i]||t[i]||n[a].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(t,e,s){return e||s.slice(1)}))}))).match(e),r=o.length,l=0;l-1)return new Date(("X"===e?1e3:1)*t);var i=u(e)(t),n=i.year,a=i.month,o=i.day,r=i.hours,l=i.minutes,d=i.seconds,c=i.milliseconds,h=i.zone,p=new Date,f=o||(n||a?1:p.getDate()),m=n||p.getFullYear(),g=0;n&&!a||(g=a>0?a-1:p.getMonth());var b=r||0,v=l||0,w=d||0,_=c||0;return h?new Date(Date.UTC(m,g,f,b,v,w,_+60*h.offset*1e3)):s?new Date(Date.UTC(m,g,f,b,v,w,_)):new Date(m,g,f,b,v,w,_)}catch(t){return new Date("")}}(e,r,i),this.init(),h&&!0!==h&&(this.$L=this.locale(h).$L),c&&e!=this.format(r)&&(this.$d=new Date("")),a={}}else if(r instanceof Array)for(var p=r.length,f=1;f<=p;f+=1){o[1]=r[f-1];var m=s.apply(this,o);if(m.isValid()){this.$d=m.$d,this.$L=m.$L,this.init();break}f===p&&(this.$d=new Date(""))}else n.call(this,t)}}}();var j=I;H.extend(j);const q=(t,e)=>{let s;if(e)switch(e){case"ISO_8601":s=t;break;case"RFC_2822":s=H(t.slice(5),"DD MMM YYYY HH:mm:ss ZZ").unix();break;case"MYSQL":s=H(t,"YYYY-MM-DD hh:mm:ss").unix();break;case"UNIX":s=H(t).unix();break;default:s=H(t,e,!0).valueOf()}return s},B=(t,e)=>{if(t?.constructor===Object&&Object.prototype.hasOwnProperty.call(t,"data")&&!Object.keys(t).find((t=>!["text","order","data"].includes(t))))return t;const s={data:t};switch(e.type){case"string":"string"!=typeof t&&(s.text=String(s.data),s.order=s.text);break;case"date":e.format&&(s.order=q(String(s.data),e.format));break;case"number":s.text=String(s.data),s.data=parseInt(s.data,10);break;case"html":{const t=Array.isArray(s.data)?{nodeName:"TD",childNodes:s.data}:S(`${String(s.data)}`);s.data=t.childNodes||[];const e=i(t);s.text=e,s.order=e;break}case"boolean":"string"==typeof s.data&&(s.data=s.data.toLowerCase().trim()),s.data=!["false",!1,null,void 0,0].includes(s.data),s.order=s.data?1:0,s.text=String(s.data);break;case"other":s.text="",s.order=0;break;default:s.text=JSON.stringify(s.data)}return s},F=t=>{if(t instanceof Object&&t.constructor===Object&&t.hasOwnProperty("data")&&("string"==typeof t.text||"string"==typeof t.data))return t;const e={data:t};if("string"==typeof t){if(t.length){const s=S(`${t}`);if(s.childNodes&&(1!==s.childNodes.length||"#text"!==s.childNodes[0].nodeName)){e.data=s.childNodes,e.type="html";const t=i(s);e.text=t}}}else[null,void 0].includes(t)?e.text="":e.text=JSON.stringify(t);return e},z=(t,e,s,n,a)=>{const o={data:[],headings:[]};t.headings?o.headings=t.headings.map((t=>F(t))):e?.tHead?o.headings=Array.from(e.tHead.querySelectorAll("th")).map(((t,e)=>{const o=(t=>{const e=N(t,{valueDiffing:!1});let s;return s=!e.childNodes||1===e.childNodes.length&&"#text"===e.childNodes[0].nodeName?{data:t.innerText,type:"string"}:{data:e.childNodes,type:"html",text:i(e)},s})(t);s[e]||(s[e]={type:n,format:a,searchable:!0,sortable:!0});const r=s[e];return"false"!==t.dataset.sortable?.trim().toLowerCase()&&"false"!==t.dataset.sort?.trim().toLowerCase()||(r.sortable=!1),"false"===t.dataset.searchable?.trim().toLowerCase()&&(r.searchable=!1),"true"!==t.dataset.hidden?.trim().toLowerCase()&&"true"!==t.getAttribute("hidden")?.trim().toLowerCase()||(r.hidden=!0),["number","string","html","date","boolean","other"].includes(t.dataset.type)&&(r.type=t.dataset.type,"date"===r.type&&t.dataset.format&&(r.format=t.dataset.format)),o})):t.data?.length?o.headings=t.data[0].map((t=>F(""))):e?.tBodies.length&&(o.headings=Array.from(e.tBodies[0].rows[0].cells).map((t=>F(""))));for(let t=0;tt.map(((t,e)=>B(t,s[e]))))):e?.tBodies?.length&&(o.data=Array.from(e.tBodies[0].rows).map((t=>Array.from(t.cells).map(((t,e)=>{const i=t.dataset.content?B(t.dataset.content,s[e]):((t,e)=>{let s;switch(e.type){case"string":s={data:t.innerText};break;case"date":{const i=t.innerText;s={data:i,order:q(i,e.format)};break}case"number":s={data:parseInt(t.innerText,10),text:t.innerText};break;case"boolean":{const e=!["false","0","null","undefined"].includes(t.innerText.toLowerCase().trim());s={data:e,order:e?1:0,text:e?"1":"0"};break}default:s={data:N(t,{valueDiffing:!1}).childNodes||[],text:t.innerText,order:t.innerText}}return s})(t,s[e]);return t.dataset.order&&(i.order=isNaN(parseFloat(t.dataset.order))?t.dataset.order:parseFloat(t.dataset.order)),i}))))),o.data.length&&o.data[0].length!==o.headings.length)throw new Error("Data heading length mismatch.");return o};class U{constructor(t){this.dt=t,this.cursor=!1}setCursor(t=!1){if(t===this.cursor)return;const e=this.cursor;if(this.cursor=t,this.dt._renderTable(),!1!==t&&this.dt.options.scrollY){const t=this.dt.dom.querySelector(`tr.${this.dt.options.classes.cursor}`);t&&t.scrollIntoView({block:"nearest"})}this.dt.emit("datatable.cursormove",this.cursor,e)}add(t){const e=t.map(((t,e)=>{const s=this.dt.columns.settings[e];return B(t,s)}));this.dt.data.data.push(e),this.dt.data.data.length&&(this.dt.hasRows=!0),this.dt.update(!0)}remove(t){if(!Array.isArray(t))return this.remove([t]);this.dt.data.data=this.dt.data.data.filter(((e,s)=>!t.includes(s))),this.dt.data.data.length||(this.dt.hasRows=!1),this.dt.update(!0)}findRowIndex(t,e){return this.dt.data.data.findIndex((s=>(s[t].text??String(s[t].data)).toLowerCase().includes(String(e).toLowerCase())))}findRow(t,e){const s=this.findRowIndex(t,e);if(s<0)return{index:-1,row:null,cols:[]};const i=this.dt.data.data[s],n=i.map((t=>t.data));return{index:s,row:i,cols:n}}updateRow(t,e){const s=e.map(((t,e)=>{const s=this.dt.columns.settings[e];return B(t,s)}));this.dt.data.data.splice(t,1,s),this.dt.update(!0)}}class J{constructor(t){this.dt=t,this.init()}init(){[this.settings,this._state]=((t=[],e,s)=>{let i=[],n=!1;const a=[];return t.forEach((t=>{(Array.isArray(t.select)?t.select:[t.select]).forEach((o=>{i[o]?t.type&&(i[o].type=t.type):i[o]={type:t.type||e,sortable:!0,searchable:!0};const r=i[o];t.render&&(r.render=t.render),t.format?r.format=t.format:"date"===t.type&&(r.format=s),t.cellClass&&(r.cellClass=t.cellClass),t.headerClass&&(r.headerClass=t.headerClass),t.locale&&(r.locale=t.locale),!1===t.sortable?r.sortable=!1:(t.numeric&&(r.numeric=t.numeric),t.caseFirst&&(r.caseFirst=t.caseFirst)),!1===t.searchable?r.searchable=!1:t.sensitivity&&(r.sensitivity=t.sensitivity),(r.searchable||r.sortable)&&void 0!==t.ignorePunctuation&&(r.ignorePunctuation=t.ignorePunctuation),t.hidden&&(r.hidden=!0),t.filter&&(r.filter=t.filter),t.sortSequence&&(r.sortSequence=t.sortSequence),t.sort&&(t.filter?a[o]=t.sort:n={column:o,dir:t.sort}),void 0!==t.searchItemSeparator&&(r.searchItemSeparator=t.searchItemSeparator)}))})),i=i.map((t=>t||{type:e,format:"date"===e?s:void 0,sortable:!0,searchable:!0})),[i,{filters:a,sort:n,widths:[]}]})(this.dt.options.columns,this.dt.options.type,this.dt.options.format)}swap(t){if(2===t.length){const e=this.dt.data.headings.map(((t,e)=>e)),s=t[0],i=t[1],n=e[i];return e[i]=e[s],e[s]=n,this.order(e)}}order(t){this.dt.data.headings=t.map((t=>this.dt.data.headings[t])),this.dt.data.data=this.dt.data.data.map((e=>t.map((t=>e[t])))),this.settings=t.map((t=>this.settings[t])),this.dt.update()}hide(t){t.length&&(t.forEach((t=>{this.settings[t]||(this.settings[t]={type:"string"});this.settings[t].hidden=!0})),this.dt.update())}show(t){t.length&&(t.forEach((t=>{this.settings[t]||(this.settings[t]={type:"string",sortable:!0});delete this.settings[t].hidden})),this.dt.update())}visible(t){return void 0===t&&(t=[...Array(this.dt.data.headings.length).keys()]),Array.isArray(t)?t.map((t=>!this.settings[t]?.hidden)):!this.settings[t]?.hidden}add(t){const e=this.dt.data.headings.length;if(this.dt.data.headings=this.dt.data.headings.concat([F(t.heading)]),this.dt.data.data=this.dt.data.data.map(((e,s)=>e.concat([B(t.data[s],t)]))),this.settings[e]={type:t.type||"string",sortable:!0,searchable:!0},t.type||t.format||t.sortable||t.render||t.filter){const s=this.settings[e];t.render&&(s.render=t.render),t.format&&(s.format=t.format),t.cellClass&&(s.cellClass=t.cellClass),t.headerClass&&(s.headerClass=t.headerClass),t.locale&&(s.locale=t.locale),!1===t.sortable?s.sortable=!1:(t.numeric&&(s.numeric=t.numeric),t.caseFirst&&(s.caseFirst=t.caseFirst)),!1===t.searchable?s.searchable=!1:t.sensitivity&&(s.sensitivity=t.sensitivity),(s.searchable||s.sortable)&&t.ignorePunctuation&&(s.ignorePunctuation=t.ignorePunctuation),t.hidden&&(s.hidden=!0),t.filter&&(s.filter=t.filter),t.sortSequence&&(s.sortSequence=t.sortSequence)}this.dt.update(!0)}remove(t){if(!Array.isArray(t))return this.remove([t]);this.dt.data.headings=this.dt.data.headings.filter(((e,s)=>!t.includes(s))),this.dt.data.data=this.dt.data.data.map((e=>e.filter(((e,s)=>!t.includes(s))))),this.dt.update(!0)}filter(t,e=!1){if(!this.settings[t]?.filter?.length)return;const s=this._state.filters[t];let i;if(s){let e=!1;i=this.settings[t].filter.find((t=>!!e||(t===s&&(e=!0),!1)))}else{const e=this.settings[t].filter;i=e?e[0]:void 0}i?this._state.filters[t]=i:s&&(this._state.filters[t]=void 0),this.dt._currentPage=1,this.dt.update(),e||this.dt.emit("datatable.filter",t,i)}sort(t,e,s=!1){const i=this.settings[t];if(s||this.dt.emit("datatable.sorting",t,e),!e){const s=!(!this._state.sort||this._state.sort.column!==t)&&this._state.sort?.dir,n=i?.sortSequence||["asc","desc"];if(s){const t=n.indexOf(s);e=-1===t?n[0]||"asc":t===n.length-1?n[0]:n[t+1]}else e=n.length?n[0]:"asc"}const n=!!["string","html"].includes(i.type)&&new Intl.Collator(i.locale||this.dt.options.locale,{usage:"sort",numeric:i.numeric||this.dt.options.numeric,caseFirst:i.caseFirst||this.dt.options.caseFirst,ignorePunctuation:i.ignorePunctuation||this.dt.options.ignorePunctuation});this.dt.data.data.sort(((s,i)=>{let a=s[t].order||s[t].data,o=i[t].order||i[t].data;if("desc"===e){const t=a;a=o,o=t}return n?n.compare(String(a),String(o)):ao?1:0})),this._state.sort={column:t,dir:e},this.dt._searchQueries.length?(this.dt.multiSearch(this.dt._searchQueries),this.dt.emit("datatable.sort",t,e)):s||(this.dt._currentPage=1,this.dt.update(),this.dt.emit("datatable.sort",t,e))}_measureWidths(){const t=this.dt.data.headings.filter(((t,e)=>!this.settings[e]?.hidden));if((this.dt.options.scrollY.length||this.dt.options.fixedColumns)&&t?.length){this._state.widths=[];const t={noPaging:!0};if(this.dt.options.header||this.dt.options.footer){this.dt.options.scrollY.length&&(t.unhideHeader=!0),this.dt.headerDOM&&this.dt.headerDOM.parentElement.removeChild(this.dt.headerDOM),t.noColumnWidths=!0,this.dt._renderTable(t);const e=Array.from(this.dt.dom.querySelector("thead, tfoot")?.firstElementChild?.querySelectorAll("th")||[]);let s=0;const i=this.dt.data.headings.map(((t,i)=>{if(this.settings[i]?.hidden)return 0;const n=e[s].offsetWidth;return s+=1,n})),n=i.reduce(((t,e)=>t+e),0);this._state.widths=i.map((t=>t/n*100))}else{t.renderHeader=!0,this.dt._renderTable(t);const e=Array.from(this.dt.dom.querySelector("thead, tfoot")?.firstElementChild?.querySelectorAll("th")||[]);let s=0;const i=this.dt.data.headings.map(((t,i)=>{if(this.settings[i]?.hidden)return 0;const n=e[s].offsetWidth;return s+=1,n})),n=i.reduce(((t,e)=>t+e),0);this._state.widths=i.map((t=>t/n*100))}this.dt._renderTable()}}}const W={sortable:!0,locale:"en",numeric:!0,caseFirst:"false",searchable:!0,sensitivity:"base",ignorePunctuation:!0,destroyable:!0,searchItemSeparator:"",searchQuerySeparator:" ",searchAnd:!1,data:{},type:"html",format:"YYYY-MM-DD",columns:[],paging:!0,perPage:10,perPageSelect:[5,10,15,20,25],nextPrev:!0,firstLast:!1,prevText:"‹",nextText:"›",firstText:"«",lastText:"»",ellipsisText:"…",truncatePager:!0,pagerDelta:2,scrollY:"",fixedColumns:!0,fixedHeight:!1,footer:!1,header:!0,hiddenHeader:!1,rowNavigation:!1,tabIndex:!1,pagerRender:!1,rowRender:!1,tableRender:!1,diffDomOptions:{valueDiffing:!1},labels:{placeholder:"Search...",searchTitle:"Search within table",perPage:"entries per page",pageTitle:"Page {page}",noRows:"No entries found",noResults:"No results match your search query",info:"Showing {start} to {end} of {rows} entries"},template:(t,e)=>`
        \n ${t.paging&&t.perPageSelect?`
        \n \n
        `:""}\n ${t.searchable?`
        \n \n
        `:""}\n
        \n
        \n
        \n ${t.paging?`
        `:""}\n \n
        `,classes:{active:"datatable-active",ascending:"datatable-ascending",bottom:"datatable-bottom",container:"datatable-container",cursor:"datatable-cursor",descending:"datatable-descending",disabled:"datatable-disabled",dropdown:"datatable-dropdown",ellipsis:"datatable-ellipsis",filter:"datatable-filter",filterActive:"datatable-filter-active",empty:"datatable-empty",headercontainer:"datatable-headercontainer",hidden:"datatable-hidden",info:"datatable-info",input:"datatable-input",loading:"datatable-loading",pagination:"datatable-pagination",paginationList:"datatable-pagination-list",paginationListItem:"datatable-pagination-list-item",paginationListItemLink:"datatable-pagination-list-item-link",search:"datatable-search",selector:"datatable-selector",sorter:"datatable-sorter",table:"datatable-table",top:"datatable-top",wrapper:"datatable-wrapper"}},Q=(t,e,s,i={})=>({nodeName:"LI",attributes:{class:i.active&&!i.hidden?`${s.classes.paginationListItem} ${s.classes.active}`:i.hidden?`${s.classes.paginationListItem} ${s.classes.hidden} ${s.classes.disabled}`:s.classes.paginationListItem},childNodes:[{nodeName:"BUTTON",attributes:{"data-page":String(t),class:s.classes.paginationListItemLink,"aria-label":s.labels.pageTitle.replace("{page}",String(t))},childNodes:[{nodeName:"#text",data:e}]}]}),X=(t,e,s,i,n)=>{let a=[];if(n.firstLast&&a.push(Q(1,n.firstText,n)),n.nextPrev){const e=t?1:s-1;a.push(Q(e,n.prevText,n,{hidden:t}))}let o=[...Array(i).keys()].map((t=>Q(t+1,String(t+1),n,{active:t===s-1})));if(n.truncatePager&&(o=((t,e,s,i)=>{const n=i.pagerDelta,a=i.classes,o=i.ellipsisText,r=2*n;let l=e-n,d=e+n;e<4-n+r?d=3+r:e>s-(3-n+r)&&(l=s-(2+r));const c=[];for(let e=1;e<=s;e++)if(1==e||e==s||e>=l&&e<=d){const s=t[e-1];c.push(s)}let h;const u=[];return c.forEach((e=>{const s=parseInt(e.childNodes[0].attributes["data-page"],10);if(h){const e=parseInt(h.childNodes[0].attributes["data-page"],10);if(s-e==2)u.push(t[e]);else if(s-e!=1){const t={nodeName:"LI",attributes:{class:`${a.paginationListItem} ${a.ellipsis} ${a.disabled}`},childNodes:[{nodeName:"BUTTON",attributes:{class:a.paginationListItemLink},childNodes:[{nodeName:"#text",data:o}]}]};u.push(t)}}u.push(e),h=e})),u})(o,s,i,n)),a=a.concat(o),n.nextPrev){const t=e?i:s+1;a.push(Q(t,n.nextText,n,{hidden:e}))}n.firstLast&&a.push(Q(i,n.lastText,n));return{nodeName:"UL",attributes:{class:n.classes.paginationList},childNodes:o.length>1?a:[]}};const Z={classes:{row:"datatable-editor-row",form:"datatable-editor-form",item:"datatable-editor-item",menu:"datatable-editor-menu",save:"datatable-editor-save",block:"datatable-editor-block",cancel:"datatable-editor-cancel",close:"datatable-editor-close",inner:"datatable-editor-inner",input:"datatable-editor-input",label:"datatable-editor-label",modal:"datatable-editor-modal",action:"datatable-editor-action",header:"datatable-editor-header",wrapper:"datatable-editor-wrapper",editable:"datatable-editor-editable",container:"datatable-editor-container",separator:"datatable-editor-separator"},labels:{closeX:"x",editCell:"Edit Cell",editRow:"Edit Row",removeRow:"Remove Row",reallyRemove:"Are you sure?",reallyCancel:"Do you really want to cancel?",save:"Save",cancel:"Cancel"},cancelModal:t=>confirm(t.options.labels.reallyCancel),inline:!0,hiddenColumns:!1,contextMenu:!0,clickEvent:"dblclick",excludeColumns:[],menuItems:[{text:t=>t.options.labels.editCell,action:(t,e)=>{if(!(t.event.target instanceof Element))return;const s=t.event.target.closest("td");return t.editCell(s)}},{text:t=>t.options.labels.editRow,action:(t,e)=>{if(!(t.event.target instanceof Element))return;const s=t.event.target.closest("tr");return t.editRow(s)}},{separator:!0},{text:t=>t.options.labels.removeRow,action:(t,e)=>{if(t.event.target instanceof Element&&confirm(t.options.labels.reallyRemove)){const e=t.event.target.closest("tr");t.removeRow(e)}}}]};class G{constructor(t,e={}){this.dt=t,this.options={...Z,...e}}init(){this.initialized||(this.dt.wrapperDOM.classList.add(this.options.classes.editable),this.options.inline&&(this.originalRowRender=this.dt.options.rowRender,this.dt.options.rowRender=(t,e,s)=>{let i=this.rowRender(t,e,s);return this.originalRowRender&&(i=this.originalRowRender(t,i,s)),i}),this.options.contextMenu&&(this.containerDOM=s("div",{id:this.options.classes.container}),this.wrapperDOM=s("div",{class:this.options.classes.wrapper}),this.menuDOM=s("ul",{class:this.options.classes.menu}),this.options.menuItems&&this.options.menuItems.length&&this.options.menuItems.forEach((t=>{const e=s("li",{class:t.separator?this.options.classes.separator:this.options.classes.item});if(!t.separator){const i=s("a",{class:this.options.classes.action,href:t.url||"#",html:"function"==typeof t.text?t.text(this):t.text});e.appendChild(i),t.action&&"function"==typeof t.action&&i.addEventListener("click",(e=>{e.preventDefault(),t.action(this,e)}))}this.menuDOM.appendChild(e)})),this.wrapperDOM.appendChild(this.menuDOM),this.containerDOM.appendChild(this.wrapperDOM),this.updateMenu()),this.data={},this.menuOpen=!1,this.editing=!1,this.editingRow=!1,this.editingCell=!1,this.bindEvents(),setTimeout((()=>{this.initialized=!0,this.dt.emit("editable.init")}),10))}bindEvents(){this.events={keydown:this.keydown.bind(this),click:this.click.bind(this)},this.dt.dom.addEventListener(this.options.clickEvent,this.events.click),document.addEventListener("keydown",this.events.keydown),this.options.contextMenu&&(this.events.context=this.context.bind(this),this.events.updateMenu=this.updateMenu.bind(this),this.events.dismissMenu=this.dismissMenu.bind(this),this.events.reset=function(t,e=300){let s;return(...i)=>{clearTimeout(s),s=window.setTimeout((()=>t()),e)}}((()=>this.events.updateMenu()),50),this.dt.dom.addEventListener("contextmenu",this.events.context),document.addEventListener("click",this.events.dismissMenu),window.addEventListener("resize",this.events.reset),window.addEventListener("scroll",this.events.reset))}context(t){const e=t.target;if(!(e instanceof Element))return;this.event=t;const s=e.closest("tbody td");if(!this.disabled&&s){t.preventDefault();let e=t.pageX,s=t.pageY;e>this.limits.x&&(e-=this.rect.width),s>this.limits.y&&(s-=this.rect.height),this.wrapperDOM.style.top=`${s}px`,this.wrapperDOM.style.left=`${e}px`,this.openMenu(),this.updateMenu()}}click(t){const e=t.target;if(e instanceof Element)if(this.editing&&this.data&&this.editingCell){const t=this.modalDOM?this.modalDOM.querySelector(`input.${this.options.classes.input}[type=text]`):this.dt.wrapperDOM.querySelector(`input.${this.options.classes.input}[type=text]`);this.saveCell(t.value)}else if(!this.editing){const s=e.closest("tbody td");s&&(this.editCell(s),t.preventDefault())}}keydown(t){if(this.modalDOM){if("Escape"===t.key)this.options.cancelModal(this)&&this.closeModal();else if("Enter"===t.key)if(this.editingCell){const t=this.modalDOM.querySelector(`input.${this.options.classes.input}[type=text]`);this.saveCell(t.value)}else{const t=Array.from(this.modalDOM.querySelectorAll(`input.${this.options.classes.input}[type=text]`)).map((t=>t.value.trim()));this.saveRow(t,this.data.row)}}else if(this.editing&&this.data)if("Enter"===t.key){if(this.editingCell){const t=this.dt.wrapperDOM.querySelector(`input.${this.options.classes.input}[type=text]`);this.saveCell(t.value)}else if(this.editingRow){const t=Array.from(this.dt.wrapperDOM.querySelectorAll(`input.${this.options.classes.input}[type=text]`)).map((t=>t.value.trim()));this.saveRow(t,this.data.row)}}else"Escape"===t.key&&(this.editingCell?this.saveCell(this.data.content):this.editingRow&&this.saveRow(null,this.data.row))}editCell(t){const e=a(t.cellIndex,this.dt.columns.settings);if(this.options.excludeColumns.includes(e))return void this.closeMenu();const s=parseInt(t.parentElement.dataset.index,10),i=this.dt.data.data[s][e];this.data={cell:i,rowIndex:s,columnIndex:e,content:i.text||String(i.data)},this.editing=!0,this.editingCell=!0,this.options.inline?this.dt.update():this.editCellModal(),this.closeMenu()}editCellModal(){const t=this.data.cell,e=this.data.columnIndex,i=this.dt.data.headings[e].text||String(this.dt.data.headings[e].data),a=[`
        `,`
        `,`

        ${this.options.labels.editCell}

        `,``,"
        ",`
        `,`
        `,`
        `,``,``,"
        ",`
        `,``,``,"
        ","
        ","
        ","
        "].join(""),o=s("div",{class:this.options.classes.modal,html:a});this.modalDOM=o,this.openModal();const r=o.querySelector(`input.${this.options.classes.input}[type=text]`);r.focus(),r.selectionStart=r.selectionEnd=r.value.length,o.addEventListener("click",(t=>{const e=t.target;e instanceof Element&&(e.hasAttribute("data-editor-cancel")?(t.preventDefault(),this.options.cancelModal(this)&&this.closeModal()):e.hasAttribute("data-editor-save")&&(t.preventDefault(),this.saveCell(r.value)))}))}saveCell(t){const e=this.data.content,s=this.dt.columns.settings[this.data.columnIndex].type||this.dt.options.type,i=t.trim();let n;if("number"===s)n={data:parseFloat(i)};else if("boolean"===s)n=["","false","0"].includes(i)?{data:!1,text:"false",order:0}:{data:!0,text:"true",order:1};else if("html"===s)n={data:[{nodeName:"#text",data:t}],text:t,order:t};else if("string"===s)n={data:t};else if("date"===s){const e=this.dt.columns.settings[this.data.columnIndex].format||this.dt.options.format;n={data:t,order:q(String(t),e)}}else n={data:t};this.dt.data.data[this.data.rowIndex][this.data.columnIndex]=n,this.closeModal();const a=this.data.rowIndex,o=this.data.columnIndex;this.data={},this.dt.update(!0),this.editing=!1,this.editingCell=!1,this.dt.emit("editable.save.cell",t,e,a,o)}editRow(t){if(!t||"TR"!==t.nodeName||this.editing)return;const e=parseInt(t.dataset.index,10),s=this.dt.data.data[e];this.data={row:s,rowIndex:e},this.editing=!0,this.editingRow=!0,this.options.inline?this.dt.update():this.editRowModal(),this.closeMenu()}editRowModal(){const t=this.data.row,e=[`
        `,`
        `,`

        ${this.options.labels.editRow}

        `,``,"
        ",`
        `,`
        `,`
        `,``,``,"
        ","
        ","
        ","
        "].join(""),i=s("div",{class:this.options.classes.modal,html:e}),a=i.firstElementChild;if(!a)return;const o=a.lastElementChild?.firstElementChild;if(!o)return;t.forEach(((t,e)=>{const i=this.dt.columns.settings[e];if((!i.hidden||i.hidden&&this.options.hiddenColumns)&&!this.options.excludeColumns.includes(e)){const i=this.dt.data.headings[e].text||String(this.dt.data.headings[e].data);o.insertBefore(s("div",{class:this.options.classes.row,html:[`
        `,``,``,"
        "].join("")}),o.lastElementChild)}})),this.modalDOM=i,this.openModal();const r=Array.from(o.querySelectorAll(`input.${this.options.classes.input}[type=text]`));i.addEventListener("click",(t=>{const e=t.target;if(e instanceof Element)if(e.hasAttribute("data-editor-cancel"))this.options.cancelModal(this)&&this.closeModal();else if(e.hasAttribute("data-editor-save")){const t=r.map((t=>t.value.trim()));this.saveRow(t,this.data.row)}}))}saveRow(t,e){const s=e.map((t=>t.text??String(t.data)));if(t){let s=0;this.dt.data.data[this.data.rowIndex]=e.map(((e,i)=>{if(this.options.excludeColumns.includes(i)||this.dt.columns.settings[i].hidden)return e;const n=this.dt.columns.settings[i].type||this.dt.options.type,a=t[s++];let o;if("number"===n)o={data:parseFloat(a)};else if("boolean"===n)o=["","false","0"].includes(a)?{data:!1,text:"false",order:0}:{data:!0,text:"true",order:1};else if("html"===n)o={data:[{nodeName:"#text",data:a}],text:a,order:a};else if("string"===n)o={data:a};else if("date"===n){const t=this.dt.columns.settings[i].format||this.dt.options.format;o={data:a,order:q(String(a),t)}}else o={data:a};return o}))}const i=this.dt.data.data[this.data.rowIndex].map((t=>t.text??String(t.data)));this.data={},this.dt.update(!0),this.closeModal(),this.editing=!1,this.dt.emit("editable.save.row",i,s,e)}openModal(){this.modalDOM&&document.body.appendChild(this.modalDOM)}closeModal(){this.editing&&this.modalDOM&&(document.body.removeChild(this.modalDOM),this.modalDOM=this.editing=this.editingRow=this.editingCell=!1)}removeRow(t){if(!t||"TR"!==t.nodeName||this.editing)return;const e=parseInt(t.dataset.index,10);this.dt.rows.remove(e),this.closeMenu()}updateMenu(){const t=window.scrollX||window.pageXOffset,e=window.scrollY||window.pageYOffset;this.rect=this.wrapperDOM.getBoundingClientRect(),this.limits={x:window.innerWidth+t-this.rect.width,y:window.innerHeight+e-this.rect.height}}dismissMenu(t){const e=t.target;if(!(e instanceof Element)||this.wrapperDOM.contains(e))return;let s=!0;this.editing&&(s=!e.matches(`input.${this.options.classes.input}[type=text]`)),s&&this.closeMenu()}openMenu(){if(this.editing&&this.data&&this.editingCell){const t=this.modalDOM?this.modalDOM.querySelector(`input.${this.options.classes.input}[type=text]`):this.dt.wrapperDOM.querySelector(`input.${this.options.classes.input}[type=text]`);this.saveCell(t.value)}document.body.appendChild(this.containerDOM),this.menuOpen=!0,this.dt.emit("editable.context.open")}closeMenu(){this.menuOpen&&(this.menuOpen=!1,document.body.removeChild(this.containerDOM),this.dt.emit("editable.context.close"))}destroy(){this.dt.dom.removeEventListener(this.options.clickEvent,this.events.click),this.dt.dom.removeEventListener("contextmenu",this.events.context),document.removeEventListener("click",this.events.dismissMenu),document.removeEventListener("keydown",this.events.keydown),window.removeEventListener("resize",this.events.reset),window.removeEventListener("scroll",this.events.reset),document.body.contains(this.containerDOM)&&document.body.removeChild(this.containerDOM),this.options.inline&&(this.dt.options.rowRender=this.originalRowRender),this.initialized=!1}rowRender(t,e,s){if(!this.data||this.data.rowIndex!==s)return e;if(this.editingCell){e.childNodes[function(t,e){let s=t,i=0;for(;i{const o=a(i,this.dt.columns.settings),r=t[o];if(!this.options.excludeColumns.includes(o)){e.childNodes[i].childNodes=[{nodeName:"INPUT",attributes:{type:"text",value:n(r.text||String(r.data)||""),class:this.options.classes.input}}]}}));return e}}const K={classes:{button:"datatable-column-filter-button",menu:"datatable-column-filter-menu",container:"datatable-column-filter-container",wrapper:"datatable-column-filter-wrapper"},labels:{button:"Filter columns within the table"},hiddenColumns:[]};class tt{constructor(t,e={}){this.dt=t,this.options={...K,...e}}init(){if(this.initialized)return;let t=this.dt.wrapperDOM.querySelector(`.${this.options.classes.button}`);if(!t){t=s("button",{class:this.options.classes.button,html:"▦"});const e=this.dt.wrapperDOM.querySelector(`.${this.dt.options.classes.search}`);e?e.appendChild(t):this.dt.wrapperDOM.appendChild(t),this.addedButtonDOM=!0}this.buttonDOM=t,this.containerDOM=s("div",{id:this.options.classes.container}),this.wrapperDOM=s("div",{class:this.options.classes.wrapper}),this.menuDOM=s("ul",{class:this.options.classes.menu,html:this.dt.data.headings.map(((t,e)=>{const s=this.dt.columns.settings[e];return this.options.hiddenColumns.includes(e)?"":`
      • \n \n \n
      • `})).join("")}),this.wrapperDOM.appendChild(this.menuDOM),this.containerDOM.appendChild(this.wrapperDOM),this._measureSpace(),this._bind(),this.initialized=!0}dismiss(){this.addedButtonDOM&&this.buttonDOM.parentElement&&this.buttonDOM.parentElement.removeChild(this.buttonDOM),document.removeEventListener("click",this.events.click)}_bind(){this.events={click:this._click.bind(this)},document.addEventListener("click",this.events.click)}_openMenu(){document.body.appendChild(this.containerDOM),this._measureSpace(),this.menuOpen=!0,this.dt.emit("columnFilter.menu.open")}_closeMenu(){this.menuOpen&&(this.menuOpen=!1,document.body.removeChild(this.containerDOM),this.dt.emit("columnFilter.menu.close"))}_measureSpace(){const t=window.scrollX||window.pageXOffset,e=window.scrollY||window.pageYOffset;this.rect=this.wrapperDOM.getBoundingClientRect(),this.limits={x:window.innerWidth+t-this.rect.width,y:window.innerHeight+e-this.rect.height}}_click(t){const e=t.target;if(e instanceof Element)if(this.event=t,this.buttonDOM.contains(e)){if(t.preventDefault(),this.menuOpen)return void this._closeMenu();this._openMenu();let e=t.pageX,s=t.pageY;e>this.limits.x&&(e-=this.rect.width),s>this.limits.y&&(s-=this.rect.height),this.wrapperDOM.style.top=`${s}px`,this.wrapperDOM.style.left=`${e}px`}else if(this.menuDOM.contains(e)){const t=e.closest(`.${this.options.classes.menu} > li`);if(!t)return;const s=t.querySelector("input[type=checkbox]");s.contains(e)||(s.checked=!s.checked);const i=Number(t.dataset.column);s.checked?this.dt.columns.show([i]):this.dt.columns.hide([i])}else this.menuOpen&&this._closeMenu()}}exports.DataTable=class{constructor(t,e={}){const s="string"==typeof t?document.querySelector(t):t;s instanceof HTMLTableElement?this.dom=s:(this.dom=document.createElement("table"),s.appendChild(this.dom));const i={...W.diffDomOptions,...e.diffDomOptions},n={...W.labels,...e.labels},a={...W.classes,...e.classes};this.options={...W,...e,diffDomOptions:i,labels:n,classes:a},this._initialInnerHTML=this.options.destroyable?this.dom.innerHTML:"",this.options.tabIndex?this.dom.tabIndex=this.options.tabIndex:this.options.rowNavigation&&-1===this.dom.tabIndex&&(this.dom.tabIndex=0),this._listeners={onResize:()=>this._onResize()},this._dd=new L(this.options.diffDomOptions||{}),this.initialized=!1,this._events={},this._currentPage=0,this.onFirstPage=!0,this.hasHeadings=!1,this.hasRows=!1,this._searchQueries=[],this.init()}init(){if(this.initialized||this.dom.classList.contains(this.options.classes.table))return!1;this._virtualDOM=N(this.dom,this.options.diffDomOptions||{}),this._tableAttributes={...this._virtualDOM.attributes},this.rows=new U(this),this.columns=new J(this),this.data=z(this.options.data,this.dom,this.columns.settings,this.options.type,this.options.format),this._render(),setTimeout((()=>{this.emit("datatable.init"),this.initialized=!0}),10)}_render(){this.wrapperDOM=s("div",{class:`${this.options.classes.wrapper} ${this.options.classes.loading}`}),this.wrapperDOM.innerHTML=this.options.template(this.options,this.dom);const t=this.wrapperDOM.querySelector(`select.${this.options.classes.selector}`);t&&this.options.paging&&this.options.perPageSelect?this.options.perPageSelect.forEach((e=>{const[s,i]=Array.isArray(e)?[e[0],e[1]]:[String(e),e],n=i===this.options.perPage,a=new Option(s,String(i),n,n);t.appendChild(a)})):t&&t.parentElement.removeChild(t),this.containerDOM=this.wrapperDOM.querySelector(`.${this.options.classes.container}`),this._pagerDOMs=[],Array.from(this.wrapperDOM.querySelectorAll(`.${this.options.classes.pagination}`)).forEach((t=>{t instanceof HTMLElement&&(t.innerHTML=`
          `,this._pagerDOMs.push(t.firstElementChild))})),this._virtualPagerDOM={nodeName:"UL",attributes:{class:this.options.classes.paginationList}},this._label=this.wrapperDOM.querySelector(`.${this.options.classes.info}`),this.dom.parentElement.replaceChild(this.wrapperDOM,this.dom),this.containerDOM.appendChild(this.dom),this._rect=this.dom.getBoundingClientRect(),this._fixHeight(),this.options.header||this.wrapperDOM.classList.add("no-header"),this.options.footer||this.wrapperDOM.classList.add("no-footer"),this.options.sortable&&this.wrapperDOM.classList.add("sortable"),this.options.searchable&&this.wrapperDOM.classList.add("searchable"),this.options.fixedHeight&&this.wrapperDOM.classList.add("fixed-height"),this.options.fixedColumns&&this.wrapperDOM.classList.add("fixed-columns"),this._bindEvents(),this.columns._state.sort&&this.columns.sort(this.columns._state.sort.column,this.columns._state.sort.dir,!0),this.update(!0)}_renderTable(t={}){let e=A(this._tableAttributes,this.data.headings,(this.options.paging||this._searchQueries.length||this.columns._state.filters.length)&&this._currentPage&&this.pages.length&&!t.noPaging?this.pages[this._currentPage-1]:this.data.data.map(((t,e)=>({row:t,index:e}))),this.columns.settings,this.columns._state,this.rows.cursor,this.options,t);if(this.options.tableRender){const t=this.options.tableRender(this.data,e,"main");t&&(e=t)}const s=this._dd.diff(this._virtualDOM,e);this._dd.apply(this.dom,s),this._virtualDOM=e}_renderPage(t=!1){this.hasRows&&this.totalPages?(this._currentPage>this.totalPages&&(this._currentPage=1),this._renderTable(),this.onFirstPage=1===this._currentPage,this.onLastPage=this._currentPage===this.lastPage):this.setMessage(this.options.labels.noRows);let e,s=0,i=0,n=0;if(this.totalPages&&(s=this._currentPage-1,i=s*this.options.perPage,n=i+this.pages[s].length,i+=1,e=this._searchQueries.length?this._searchData.length:this.data.data.length),this._label&&this.options.labels.info.length){const t=this.options.labels.info.replace("{start}",String(i)).replace("{end}",String(n)).replace("{page}",String(this._currentPage)).replace("{pages}",String(this.totalPages)).replace("{rows}",String(e));this._label.innerHTML=e?t:""}if(1==this._currentPage&&this._fixHeight(),this.options.rowNavigation&&this._currentPage&&(!this.rows.cursor||!this.pages[this._currentPage-1].find((t=>t.index===this.rows.cursor)))){const e=this.pages[this._currentPage-1];e.length&&(t?this.rows.setCursor(e[e.length-1].index):this.rows.setCursor(e[0].index))}}_renderPagers(){if(!this.options.paging)return;let t=X(this.onFirstPage,this.onLastPage,this._currentPage,this.totalPages,this.options);if(this.options.pagerRender){const e=this.options.pagerRender([this.onFirstPage,this.onLastPage,this._currentPage,this.totalPages],t);e&&(t=e)}const e=this._dd.diff(this._virtualPagerDOM,t);this._pagerDOMs.forEach((t=>{this._dd.apply(t,e)})),this._virtualPagerDOM=t}_renderSeparateHeader(){const t=this.dom.parentElement;this.headerDOM||(this.headerDOM=document.createElement("div"),this._virtualHeaderDOM={nodeName:"DIV"}),t.parentElement.insertBefore(this.headerDOM,t);let e={nodeName:"TABLE",attributes:this._tableAttributes,childNodes:[{nodeName:"THEAD",childNodes:[T(this.data.headings,this.columns.settings,this.columns._state,this.options,{unhideHeader:!0})]}]};if(e.attributes.class=e.attributes.class?`${e.attributes.class} ${this.options.classes.table}`:this.options.classes.table,this.options.tableRender){const t=this.options.tableRender(this.data,e,"header");t&&(e=t)}const s={nodeName:"DIV",attributes:{class:this.options.classes.headercontainer},childNodes:[e]},i=this._dd.diff(this._virtualHeaderDOM,s);this._dd.apply(this.headerDOM,i),this._virtualHeaderDOM=s;const n=this.headerDOM.firstElementChild.clientWidth-this.dom.clientWidth;if(n){const t=structuredClone(this._virtualHeaderDOM);t.attributes.style=`padding-right: ${n}px;`;const e=this._dd.diff(this._virtualHeaderDOM,t);this._dd.apply(this.headerDOM,e),this._virtualHeaderDOM=t}t.scrollHeight>t.clientHeight&&(t.style.overflowY="scroll")}_bindEvents(){if(this.options.perPageSelect){const t=this.wrapperDOM.querySelector(`select.${this.options.classes.selector}`);t&&t instanceof HTMLSelectElement&&t.addEventListener("change",(()=>{this.options.perPage=parseInt(t.value,10),this.update(),this._fixHeight(),this.emit("datatable.perpage",this.options.perPage)}),!1)}this.options.searchable&&this.wrapperDOM.addEventListener("input",(t=>{const e=t.target;if(!(e instanceof HTMLInputElement&&e.matches(`.${this.options.classes.input}`)))return;t.preventDefault();const s=[];if(Array.from(this.wrapperDOM.querySelectorAll(`.${this.options.classes.input}`)).filter((t=>t.value.length)).forEach((t=>{const e=t.dataset.and||this.options.searchAnd,i=t.dataset.querySeparator||this.options.searchQuerySeparator?t.value.split(this.options.searchQuerySeparator):[t.value];e?i.forEach((e=>{t.dataset.columns?s.push({terms:[e],columns:JSON.parse(t.dataset.columns)}):s.push({terms:[e],columns:void 0})})):t.dataset.columns?s.push({terms:i,columns:JSON.parse(t.dataset.columns)}):s.push({terms:i,columns:void 0})})),1===s.length&&1===s[0].terms.length){const t=s[0];this.search(t.terms[0],t.columns)}else this.multiSearch(s)})),this.wrapperDOM.addEventListener("click",(t=>{const e=t.target.closest("a, button");if(e)if(e.hasAttribute("data-page"))this.page(parseInt(e.getAttribute("data-page"),10)),t.preventDefault();else if(e.classList.contains(this.options.classes.sorter)){const s=Array.from(e.parentElement.parentElement.children).indexOf(e.parentElement),i=a(s,this.columns.settings);this.columns.sort(i),t.preventDefault()}else if(e.classList.contains(this.options.classes.filter)){const s=Array.from(e.parentElement.parentElement.children).indexOf(e.parentElement),i=a(s,this.columns.settings);this.columns.filter(i),t.preventDefault()}}),!1),this.options.rowNavigation?(this.dom.addEventListener("keydown",(t=>{if("ArrowUp"===t.key){let e;t.preventDefault(),t.stopPropagation(),this.pages[this._currentPage-1].find((t=>t.index===this.rows.cursor||(e=t,!1))),e?this.rows.setCursor(e.index):this.onFirstPage||this.page(this._currentPage-1,!0)}else if("ArrowDown"===t.key){let e;t.preventDefault(),t.stopPropagation();const s=this.pages[this._currentPage-1].find((t=>!!e||(t.index===this.rows.cursor&&(e=!0),!1)));s?this.rows.setCursor(s.index):this.onLastPage||this.page(this._currentPage+1)}else["Enter"," "].includes(t.key)&&this.emit("datatable.selectrow",this.rows.cursor,t)})),this.dom.addEventListener("mousedown",(t=>{const e=t.target;if(e instanceof Element&&this.dom.matches(":focus")){const s=Array.from(this.dom.querySelectorAll("body tr")).find((t=>t.contains(e)));s&&s instanceof HTMLElement&&this.emit("datatable.selectrow",parseInt(s.dataset.index,10),t)}}))):this.dom.addEventListener("mousedown",(t=>{const e=t.target;if(!(e instanceof Element))return;const s=Array.from(this.dom.querySelectorAll("body tr")).find((t=>t.contains(e)));s&&s instanceof HTMLElement&&this.emit("datatable.selectrow",parseInt(s.dataset.index,10),t)})),window.addEventListener("resize",this._listeners.onResize)}_onResize(){this._rect=this.containerDOM.getBoundingClientRect(),this._rect.width&&this.update(!0)}destroy(){this.options.destroyable&&(this.dom.innerHTML=this._initialInnerHTML,this.dom.classList.remove(this.options.classes.table),this.wrapperDOM.parentElement&&this.wrapperDOM.parentElement.replaceChild(this.dom,this.wrapperDOM),this.initialized=!1,window.removeEventListener("resize",this._listeners.onResize))}update(t=!1){t&&(this.columns._measureWidths(),this.hasRows=Boolean(this.data.data.length),this.hasHeadings=Boolean(this.data.headings.length)),this.wrapperDOM.classList.remove(this.options.classes.empty),this._paginate(),this._renderPage(),this._renderPagers(),this.options.scrollY.length&&this._renderSeparateHeader(),this.emit("datatable.update")}_paginate(){let t=this.data.data.map(((t,e)=>({row:t,index:e})));return this._searchQueries.length&&(t=[],this._searchData.forEach((e=>t.push({index:e,row:this.data.data[e]})))),this.columns._state.filters.length&&this.columns._state.filters.forEach(((e,s)=>{e&&(t=t.filter((t=>"function"==typeof e?e(t.row[s].data):(t.row[s].text??t.row[s].data)===e)))})),this.options.paging&&this.options.perPage>0?this.pages=t.map(((e,s)=>s%this.options.perPage==0?t.slice(s,s+this.options.perPage):null)).filter((t=>t)):this.pages=[t],this.totalPages=this.lastPage=this.pages.length,this._currentPage||(this._currentPage=1),this.totalPages}_fixHeight(){this.options.fixedHeight&&(this.containerDOM.style.height=null,this._rect=this.containerDOM.getBoundingClientRect(),this.containerDOM.style.height=`${this._rect.height}px`)}search(t,e){if(!t.length)return this._currentPage=1,this._searchQueries=[],this._searchData=[],this.update(),this.emit("datatable.search","",[]),this.wrapperDOM.classList.remove("search-results"),!1;this.multiSearch([{terms:[t],columns:e||void 0}]),this.emit("datatable.search",t,this._searchData)}multiSearch(t){if(!this.hasRows)return!1;this._currentPage=1,this._searchData=[];const e=t.map((t=>({columns:t.columns,terms:t.terms.map((t=>t.trim())).filter((t=>t))}))).filter((t=>t.terms.length));if(this._searchQueries=e,!e.length)return this.update(),this.emit("datatable.multisearch",e,this._searchData),this.wrapperDOM.classList.remove("search-results"),!1;const s=e.map((t=>this.columns.settings.map(((e,s)=>{if(e.hidden||!e.searchable||t.columns&&!t.columns.includes(s))return!1;let i=t.terms;const n=e.sensitivity||this.options.sensitivity;["base","accent"].includes(n)&&(i=i.map((t=>t.toLowerCase()))),["base","case"].includes(n)&&(i=i.map((t=>t.normalize("NFD").replace(/\p{Diacritic}/gu,""))));return(e.ignorePunctuation??this.options.ignorePunctuation)&&(i=i.map((t=>t.replace(/[.,/#!$%^&*;:{}=-_`~()]/g,"")))),i}))));this.data.data.forEach(((t,e)=>{const i=t.map(((t,e)=>{let s=(t.text||String(t.data)).trim();const i=this.columns.settings[e];if(s.length){const t=i.sensitivity||this.options.sensitivity;["base","accent"].includes(t)&&(s=s.toLowerCase()),["base","case"].includes(t)&&(s=s.normalize("NFD").replace(/\p{Diacritic}/gu,""));(i.ignorePunctuation??this.options.ignorePunctuation)&&(s=s.replace(/[.,/#!$%^&*;:{}=-_`~()]/g,""))}const n=i.searchItemSeparator||this.options.searchItemSeparator;return n?s.split(n):[s]}));s.every((t=>t.find(((t,e)=>!!t&&t.find((t=>i[e].find((e=>e.includes(t)))))))))&&this._searchData.push(e)})),this.wrapperDOM.classList.add("search-results"),this._searchData.length?this.update():(this.wrapperDOM.classList.remove("search-results"),this.setMessage(this.options.labels.noResults)),this.emit("datatable.multisearch",e,this._searchData)}page(t,e=!1){return t!==this._currentPage&&(isNaN(t)||(this._currentPage=t),!(t>this.pages.length||t<0)&&(this._renderPage(e),this._renderPagers(),void this.emit("datatable.page",t)))}insert(e){let s=[];if(Array.isArray(e)){const t=this.data.headings.map((t=>t.text??String(t.data)));e.forEach(((e,i)=>{const n=[];Object.entries(e).forEach((([e,s])=>{const a=t.indexOf(e);a>-1?n[a]=B(s,this.columns.settings[a]):this.hasHeadings||this.hasRows||0!==i||(n[t.length]=B(s,this.columns.settings[t.length]),t.push(e),this.data.headings.push(F(e)))})),s.push(n)}))}else t(e)&&(!e.headings||this.hasHeadings||this.hasRows?e.data&&Array.isArray(e.data)&&(s=e.data.map((t=>t.map(((t,e)=>B(t,this.columns.settings[e])))))):this.data=z(e,void 0,this.columns.settings,this.options.type,this.options.format));s.length&&s.forEach((t=>this.data.data.push(t))),this.hasHeadings=Boolean(this.data.headings.length),this.columns._state.sort&&this.columns.sort(this.columns._state.sort.column,this.columns._state.sort.dir,!0),this.update(!0)}refresh(){this.options.searchable&&(Array.from(this.wrapperDOM.querySelectorAll(`.${this.options.classes.input}`)).forEach((t=>{t.value=""})),this._searchQueries=[]),this._currentPage=1,this.onFirstPage=!0,this.update(!0),this.emit("datatable.refresh")}print(){const t=s("table");let e=A(this._tableAttributes,this.data.headings,this.data.data.map(((t,e)=>({row:t,index:e}))),this.columns.settings,this.columns._state,!1,this.options,{noColumnWidths:!0,unhideHeader:!0});if(this.options.tableRender){const t=this.options.tableRender(this.data,e,"print");t&&(e=t)}const i=this._dd.diff({nodeName:"TABLE"},e);this._dd.apply(t,i);const n=window.open();n.document.body.appendChild(t),n.print()}setMessage(t){const e=this.data.headings.filter(((t,e)=>!this.columns.settings[e]?.hidden)).length||1;this.wrapperDOM.classList.add(this.options.classes.empty),this._label&&(this._label.innerHTML=""),this.totalPages=0,this._renderPagers();let s={nodeName:"TABLE",attributes:this._tableAttributes,childNodes:[{nodeName:"THEAD",childNodes:[T(this.data.headings,this.columns.settings,this.columns._state,this.options,{})]},{nodeName:"TBODY",childNodes:[{nodeName:"TR",childNodes:[{nodeName:"TD",attributes:{class:this.options.classes.empty,colspan:String(e)},childNodes:[{nodeName:"#text",data:t}]}]}]}]};if(s.attributes.class=s.attributes.class?`${s.attributes.class} ${this.options.classes.table}`:this.options.classes.table,this.options.tableRender){const t=this.options.tableRender(this.data,s,"message");t&&(s=t)}const i=this._dd.diff(this._virtualDOM,s);this._dd.apply(this.dom,i),this._virtualDOM=s}on(t,e){this._events[t]=this._events[t]||[],this._events[t].push(e)}off(t,e){t in this._events!=!1&&this._events[t].splice(this._events[t].indexOf(e),1)}emit(t,...e){if(t in this._events!=!1)for(let s=0;ss.init())),s},exports.convertCSV=function(e){let s;if(!t(e))return!1;const i={lineDelimiter:"\n",columnDelimiter:",",removeDoubleQuotes:!1,...e};if(i.data.length){s={data:[]};const t=i.data.split(i.lineDelimiter);if(t.length&&(i.headings&&(s.headings=t[0].split(i.columnDelimiter),i.removeDoubleQuotes&&(s.headings=s.headings.map((t=>t.trim().replace(/(^"|"$)/g,"")))),t.shift()),t.forEach(((t,e)=>{s.data[e]=[];const n=t.split(i.columnDelimiter);n.length&&n.forEach((t=>{i.removeDoubleQuotes&&(t=t.trim().replace(/(^"|"$)/g,"")),s.data[e].push(t)}))}))),s)return s}return!1},exports.convertJSON=function(s){let i;if(!t(s))return!1;const n={data:"",...s};if(n.data.length||t(n.data)){const t=!!e(n.data)&&JSON.parse(n.data);if(t?(i={headings:[],data:[]},t.forEach(((t,e)=>{i.data[e]=[],Object.entries(t).forEach((([t,s])=>{i.headings.includes(t)||i.headings.push(t),i.data[e].push(s)}))}))):console.warn("That's not valid JSON!"),i)return i}return!1},exports.createElement=s,exports.exportCSV=function(e,s={}){if(!e.hasHeadings&&!e.hasRows)return!1;if(!t(s))return!1;const i={download:!0,skipColumn:[],lineDelimiter:"\n",columnDelimiter:",",...s},n=t=>!i.skipColumn.includes(t)&&!e.columns.settings[t]?.hidden;let a=[];const o=e.data.headings.filter(((t,e)=>n(e))).map((t=>t.text??t.data));if(a[0]=o,i.selection)if(Array.isArray(i.selection))for(let t=0;tt.row.filter(((t,e)=>n(e))).map((t=>t.text??t.data)))));else a=a.concat(e.pages[i.selection-1].map((t=>t.row.filter(((t,e)=>n(e))).map((t=>t.text??t.data)))));else a=a.concat(e.data.data.map((t=>t.filter(((t,e)=>n(e))).map((t=>t.text??t.data)))));if(a.length){let t="";if(a.forEach((e=>{e.forEach((e=>{"string"==typeof e&&(e=(e=(e=(e=(e=e.trim()).replace(/\s{2,}/g," ")).replace(/\n/g," ")).replace(/"/g,'""')).replace(/#/g,"%23")).includes(",")&&(e=`"${e}"`),t+=e+i.columnDelimiter})),t=t.trim().substring(0,t.length-1),t+=i.lineDelimiter})),t=t.trim().substring(0,t.length-1),i.download){const e=document.createElement("a");e.href=encodeURI(`data:text/csv;charset=utf-8,${t}`),e.download=`${i.filename||"datatable_export"}.csv`,document.body.appendChild(e),e.click(),document.body.removeChild(e)}return t}return!1},exports.exportJSON=function(e,s={}){if(!e.hasHeadings&&!e.hasRows)return!1;if(!t(s))return!1;const i={download:!0,skipColumn:[],replacer:null,space:4,...s},n=t=>!i.skipColumn.includes(t)&&!e.columns.settings[t]?.hidden;let a=[];if(i.selection)if(Array.isArray(i.selection))for(let t=0;tt.row.filter(((t,e)=>n(e))).map((t=>t.data)))));else a=a.concat(e.pages[i.selection-1].map((t=>t.row.filter(((t,e)=>n(e))).map((t=>t.data)))));else a=a.concat(e.data.data.map((t=>t.filter(((t,e)=>n(e))).map((t=>t.data)))));const o=e.data.headings.filter(((t,e)=>n(e))).map((t=>t.text??String(t.data)));if(a.length){const t=[];a.forEach(((e,s)=>{t[s]=t[s]||{},e.forEach(((e,i)=>{t[s][o[i]]=e}))}));const e=JSON.stringify(t,i.replacer,i.space);if(i.download){const t=new Blob([e],{type:"data:application/json;charset=utf-8"}),s=URL.createObjectURL(t),n=document.createElement("a");n.href=s,n.download=`${i.filename||"datatable_export"}.json`,document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(s)}return e}return!1},exports.exportSQL=function(e,s={}){if(!e.hasHeadings&&!e.hasRows)return!1;if(!t(s))return!1;const i={download:!0,skipColumn:[],tableName:"myTable",...s},n=t=>!i.skipColumn.includes(t)&&!e.columns.settings[t]?.hidden;let a=[];if(i.selection)if(Array.isArray(i.selection))for(let t=0;tt.row.filter(((t,e)=>n(e))).map((t=>t.text??t.data)))));else a=a.concat(e.pages[i.selection-1].map((t=>t.row.filter(((t,e)=>n(e))).map((t=>t.text??t.data)))));else a=a.concat(e.data.data.map((t=>t.filter(((t,e)=>n(e))).map((t=>t.text??t.data)))));const o=e.data.headings.filter(((t,e)=>n(e))).map((t=>t.text??String(t.data)));if(a.length){let t=`INSERT INTO \`${i.tableName}\` (`;if(o.forEach((e=>{t+=`\`${e}\`,`})),t=t.trim().substring(0,t.length-1),t+=") VALUES ",a.forEach((e=>{t+="(",e.forEach((e=>{t+="string"==typeof e?`"${e}",`:`${e},`})),t=t.trim().substring(0,t.length-1),t+="),"})),t=t.trim().substring(0,t.length-1),t+=";",i.download&&(t=`data:application/sql;charset=utf-8,${t}`),i.download){const e=document.createElement("a");e.href=encodeURI(t),e.download=`${i.filename||"datatable_export"}.sql`,document.body.appendChild(e),e.click(),document.body.removeChild(e)}return t}return!1},exports.exportTXT=function(e,s={}){if(!e.hasHeadings&&!e.hasRows)return!1;if(!t(s))return!1;const i={download:!0,skipColumn:[],lineDelimiter:"\n",columnDelimiter:",",...s},n=t=>!i.skipColumn.includes(t)&&!e.columns.settings[t]?.hidden;let a=[];const o=e.data.headings.filter(((t,e)=>n(e))).map((t=>t.text??t.data));if(a[0]=o,i.selection)if(Array.isArray(i.selection))for(let t=0;tt.row.filter(((t,e)=>n(e))).map((t=>t.data)))));else a=a.concat(e.pages[i.selection-1].map((t=>t.row.filter(((t,e)=>n(e))).map((t=>t.data)))));else a=a.concat(e.data.data.map((t=>t.filter(((t,e)=>n(e))).map((t=>t.data)))));if(a.length){let t="";if(a.forEach((e=>{e.forEach((e=>{"string"==typeof e&&(e=(e=(e=(e=(e=e.trim()).replace(/\s{2,}/g," ")).replace(/\n/g," ")).replace(/"/g,'""')).replace(/#/g,"%23")).includes(",")&&(e=`"${e}"`),t+=e+i.columnDelimiter})),t=t.trim().substring(0,t.length-1),t+=i.lineDelimiter})),t=t.trim().substring(0,t.length-1),i.download&&(t=`data:text/csv;charset=utf-8,${t}`),i.download){const e=document.createElement("a");e.href=encodeURI(t),e.download=`${i.filename||"datatable_export"}.txt`,document.body.appendChild(e),e.click(),document.body.removeChild(e)}return t}return!1},exports.isJson=e,exports.isObject=t,exports.makeEditable=function(t,e={}){const s=new G(t,e);return t.initialized?s.init():t.on("datatable.init",(()=>s.init())),s}; }).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) diff --git a/src/editing/editor.ts b/src/editing/editor.ts index 1c5a11e1..30f1c6e1 100644 --- a/src/editing/editor.ts +++ b/src/editing/editor.ts @@ -242,11 +242,9 @@ export class Editor { const input = (this.modalDOM.querySelector(`input.${this.options.classes.input}[type=text]`) as HTMLInputElement) this.saveCell(input.value) } else { - const inputs = (Array.from(this.modalDOM.querySelectorAll(`input.${this.options.classes.input}[type=text]`)) as HTMLInputElement[]) - this.saveRow(inputs.map(input => input.value.trim()), this.data.row) + const values = (Array.from(this.modalDOM.querySelectorAll(`input.${this.options.classes.input}[type=text]`)) as HTMLInputElement[]).map(input => input.value.trim()) + this.saveRow(values, this.data.row) } - - } } else if (this.editing && this.data) { if (event.key === "Enter") { @@ -255,8 +253,8 @@ export class Editor { const input = (this.dt.wrapperDOM.querySelector(`input.${this.options.classes.input}[type=text]`) as HTMLInputElement) this.saveCell(input.value) } else if (this.editingRow) { - const inputs = (Array.from(this.dt.wrapperDOM.querySelectorAll(`input.${this.options.classes.input}[type=text]`)) as HTMLInputElement[]) - this.saveRow(inputs.map(input => input.value.trim()), this.data.row) + const values = (Array.from(this.dt.wrapperDOM.querySelectorAll(`input.${this.options.classes.input}[type=text]`)) as HTMLInputElement[]).map(input => input.value.trim()) + this.saveRow(values, this.data.row) } } else if (event.key === "Escape") { // Escape key reverts @@ -478,8 +476,6 @@ export class Editor { this.openModal() // Grab the inputs const inputs = Array.from(form.querySelectorAll(`input.${this.options.classes.input}[type=text]`)) as HTMLInputElement[] - // Remove save button - inputs.pop() // Close / save modalDOM.addEventListener("click", (event: MouseEvent) => { @@ -493,7 +489,8 @@ export class Editor { } } else if (target.hasAttribute("data-editor-save")) { // save button // Save - this.saveRow(inputs.map((input: HTMLInputElement) => input.value.trim()), this.data.row) + const values = inputs.map((input: HTMLInputElement) => input.value.trim()) + this.saveRow(values, this.data.row) } }) } @@ -508,19 +505,18 @@ export class Editor { // Store the old data for the emitter const oldData = row.map((cell: cellType) => cell.text ?? String(cell.data)) if (data) { - this.dt.data.data[this.data.rowIndex] = this.dt.data.data[this.data.rowIndex].map((oldCell, colIndex) => { - const columnSetting = this.dt.columns.settings[colIndex] - if (columnSetting.hidden || this.options.excludeColumns.includes(colIndex)) { - return oldCell + let valueCounter = 0 + this.dt.data.data[this.data.rowIndex] = row.map((oldItem, colIndex) => { + if (this.options.excludeColumns.includes(colIndex) || this.dt.columns.settings[colIndex].hidden) { + return oldItem } const type = this.dt.columns.settings[colIndex].type || this.dt.options.type - const value = data[columnToVisibleIndex(colIndex, this.dt.columns.settings)] - const stringValue = value.trim() + const value = data[valueCounter++] let cell if (type === "number") { - cell = {data: parseFloat(stringValue)} + cell = {data: parseFloat(value)} } else if (type === "boolean") { - if (["", "false", "0"].includes(stringValue)) { + if (["", "false", "0"].includes(value)) { cell = {data: false, text: "false", order: 0} @@ -530,12 +526,14 @@ export class Editor { order: 1} } } else if (type === "html") { - cell = {data: [ - {nodeName: "#text", - data: value} - ], - text: value, - order: value} + cell = { + data: [ + {nodeName: "#text", + data: value} + ], + text: value, + order: value + } } else if (type === "string") { cell = {data: value} } else if (type === "date") { @@ -546,6 +544,7 @@ export class Editor { cell = {data: value} } return cell + }) }