@timlassiter11/yatl 0.2.3 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/datatable.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var pt=Object.defineProperty;var Jt=Object.getOwnPropertyDescriptor;var qt=Object.getOwnPropertyNames,Wt=Object.getOwnPropertySymbols;var _t=Object.prototype.hasOwnProperty,Yt=Object.prototype.propertyIsEnumerable;var $t=h=>{throw TypeError(h)};var Nt=(h,o,e)=>o in h?pt(h,o,{enumerable:!0,configurable:!0,writable:!0,value:e}):h[o]=e,et=(h,o)=>{for(var e in o||(o={}))_t.call(o,e)&&Nt(h,e,o[e]);if(Wt)for(var e of Wt(o))Yt.call(o,e)&&Nt(h,e,o[e]);return h};var Zt=(h,o)=>{for(var e in o)pt(h,e,{get:o[e],enumerable:!0})},te=(h,o,e,s)=>{if(o&&typeof o=="object"||typeof o=="function")for(let r of qt(o))!_t.call(h,r)&&r!==e&&pt(h,r,{get:()=>o[r],enumerable:!(s=Jt(o,r))||s.enumerable});return h};var ee=h=>te(pt({},"__esModule",{value:!0}),h);var Mt=(h,o,e)=>o.has(h)||$t("Cannot "+e);var t=(h,o,e)=>(Mt(h,o,"read from private field"),e?e.call(h):o.get(h)),c=(h,o,e)=>o.has(h)?$t("Cannot add the same private member more than once"):o instanceof WeakSet?o.add(h):o.set(h,e),f=(h,o,e,s)=>(Mt(h,o,"write to private field"),s?s.call(h,e):o.set(h,e),e),m=(h,o,e)=>(Mt(h,o,"access private method"),e);var re={};Zt(re,{DataTable:()=>Ft,LocalStorageAdapter:()=>Pt,createRegexTokenizer:()=>Rt});module.exports=ee(re);var x=h=>{if(typeof h=="string"&&h!=="")return h.split(" ");if(Array.isArray(h))return h;if(!h)return[];throw new TypeError("classes must be string or array of strings")},Ut=h=>h.replace(/_/g," ").replace(/([a-z])([A-Z])/g,"$1 $2").replace(/\b\w/g,o=>o.toUpperCase()),Rt=(h="\\S+")=>{let o=new RegExp(`"[^"]*"|${h}`,"g");return e=>(e.match(o)||[]).map(r=>(r=r.toLocaleLowerCase().trim(),r.startsWith('"')&&r.endsWith('"')?{value:r.slice(1,-1),quoted:!0}:{value:r,quoted:!1}))};var ot,I,O,rt,_,$,at,G,q,lt,dt,ht,vt,jt,it=class it{constructor({container:o,element:e,generator:s,nodePadding:r=10}){c(this,vt);c(this,I);c(this,O);c(this,rt);c(this,_,0);c(this,$,0);c(this,at,2);c(this,G,0);c(this,q,!1);c(this,lt,0);c(this,dt,()=>{t(this,I).scrollTop!==t(this,lt)&&(f(this,lt,t(this,I).scrollTop),t(this,G)&&cancelAnimationFrame(t(this,G)),f(this,G,requestAnimationFrame(()=>this.renderChunk())))});c(this,ht,()=>{this.renderChunk()});f(this,I,o),f(this,O,e),f(this,rt,s),f(this,at,r),new IntersectionObserver(n=>{for(let d of n)d.intersectionRatio===1&&this.renderChunk()}).observe(t(this,O))}get rowHeight(){return t(this,$)||m(this,vt,jt).call(this),t(this,$)}get started(){return t(this,q)}scrollToIndex(o){if(o<0||o>=t(this,_))throw new RangeError("Index out of bounds.");this.scrollToPx(this.rowHeight*o)}scrollToPx(o){t(this,I).scrollTop=o,this.renderChunk()}start(o){t(this,q)||(t(this,I).addEventListener("scroll",t(this,dt)),window.addEventListener("resize",t(this,ht)),f(this,q,!0)),t(this,I).classList.add("dt-virtual-scroll"),f(this,_,o),this.renderChunk()}stop(){t(this,G)&&cancelAnimationFrame(t(this,G)),t(this,I).classList.remove("dt-virtual-scroll"),t(this,I).removeEventListener("scroll",t(this,dt)),window.removeEventListener("resize",t(this,ht)),f(this,q,!1)}renderChunk(){let o=t(this,I).scrollTop,e=t(this,_),s=this.rowHeight,r=t(this,at);if(!this.started||!t(this,O).checkVisibility()||!e||!s)return;let i=s*e;t(this,O).innerHTML=`<div style="height: ${i}px;"></div>`;let n=t(this,O).offsetHeight,d=t(this,I).offsetHeight;!t(it,ot)&&n<Math.round(i-1)&&(f(it,ot,!0),console.error("Max element height exceeded. Virtual scroll may not work."));let a=Math.floor(o/s)-r;a=Math.max(0,a);let u=Math.ceil(d/s)+2*r;u=Math.min(e-a,u),a%2===1&&a--;let b=a*s,T=i-(b+u*s);try{t(this,O).innerHTML="";let S=new Array(u).fill(null).map((N,gt)=>t(this,rt).call(this,gt+a)),H=document.createElement("div"),z=document.createElement("div");H.style.visibility="hidden",H.style.height=b+"px",z.style.visibility="hidden",z.style.height=T+"px",t(this,O).append(H),t(this,O).append(...S),t(this,O).append(z)}catch(S){S instanceof RangeError&&console.log(S)}}};ot=new WeakMap,I=new WeakMap,O=new WeakMap,rt=new WeakMap,_=new WeakMap,$=new WeakMap,at=new WeakMap,G=new WeakMap,q=new WeakMap,lt=new WeakMap,dt=new WeakMap,ht=new WeakMap,vt=new WeakSet,jt=function(){if(t(this,_)===0||!t(this,O).checkVisibility()){f(this,$,0);return}let e=Math.min(1e3,t(this,_)),s=[];for(let r=0;r<e;++r)s.push(t(this,rt).call(this,r));if(t(this,O).innerHTML="",t(this,O).append(...s),f(this,$,t(this,O).offsetHeight/e),t(this,$)<=0)throw new nt(`First ${e} rows had no rendered height. Virtual scroll can't be used.`);t(this,$)*t(this,_)>33554400&&console.warn("Virtual scroll height exceeded maximum known element height.")},c(it,ot,!1);var bt=it,nt=class extends Error{constructor(o){super(o)}};var E,W,F,y,v,D,L,M,U,R,V,P,g,j,l,Gt,Dt,Ht,zt,Bt,B,Kt,wt,ct,Et,It,Qt,At,ut,Vt,yt,ft,mt,Tt,Ct,Lt,St,xt,Ot,kt,k=class k extends EventTarget{constructor(e,s={}){var a,u,b,T,S,H,z,N,gt;super();c(this,l);c(this,E);c(this,W);c(this,F);c(this,y);c(this,v,new Map);c(this,D,new Map);c(this,L,[]);c(this,M);c(this,U);c(this,R);c(this,V);c(this,P);c(this,g);c(this,j,!1);c(this,yt,e=>{if(!(e.target instanceof HTMLElement)||!e.target.classList.contains("dt-resizer")||!(e.currentTarget instanceof HTMLElement)||!e.currentTarget.dataset.dtField)return;e.stopImmediatePropagation(),e.preventDefault();let s=e.currentTarget.dataset.dtField,r=t(this,v).get(s);r&&(f(this,P,r),r.resizeStartX=e.clientX,r.resizeStartWidth=r.header.offsetWidth,document.addEventListener("mousemove",t(this,ft)),document.addEventListener("mouseup",t(this,mt)))});c(this,ft,e=>{if(!t(this,P))return;e.stopImmediatePropagation(),e.preventDefault();let s=e.clientX-t(this,P).resizeStartX,r=t(this,P).resizeStartWidth+s;m(this,l,Vt).call(this,t(this,P),r)});c(this,mt,e=>{if(!t(this,P))return;e.stopImmediatePropagation(),e.preventDefault(),document.removeEventListener("mousemove",t(this,ft)),document.removeEventListener("mouseup",t(this,mt));let s=new CustomEvent("dt.col.resize",{cancelable:!1,detail:{column:t(this,P).field,width:t(this,P).header.offsetWidth}});this.dispatchEvent(s),f(this,P,void 0)});c(this,Tt,e=>{if(!(e.target instanceof HTMLElement)||!e.target.classList.contains("dt-resizer")||!(e.currentTarget instanceof HTMLElement)||!e.currentTarget.dataset.dtField)return;let s=e.currentTarget.dataset.dtField;s&&m(this,l,Vt).call(this,s)});c(this,Ct,e=>{let r=e.target.dataset.dtField;e.dataTransfer&&r&&(e.dataTransfer.effectAllowed="move",e.dataTransfer.setData("text/plain",r))});c(this,Lt,e=>(e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect="move"),!1));c(this,St,e=>{e.target.classList.add("dt-drag-over")});c(this,xt,e=>{e.target.classList.remove("dt-drag-over")});c(this,Ot,e=>{var u;let s=(u=e.dataTransfer)==null?void 0:u.getData("text/plain"),i=e.currentTarget.dataset.dtField;if(!s||!i)return;e.preventDefault(),e.stopPropagation();let n=[...t(this,v).values()],d=n.findIndex(b=>b.field===s),a=n.findIndex(b=>b.field===i);if(d>-1&&a>-1){let[b]=n.splice(d,1),T=t(this,v).get(i);if(!T)return;n.splice(a,0,b);let S=n.map(z=>z.field),H=new CustomEvent("dt.col.reorder",{cancelable:!0,detail:{draggedColumn:b.field,dropColumn:T.field,order:S}});if(!this.dispatchEvent(H))return;this.setColumnOrder(S)}});c(this,kt,()=>{let e=document.querySelectorAll(".dt-drag-over");for(let s of e)s.classList.remove("dt-drag-over")});if(f(this,g,et(et({columns:[],data:[]},k.DEFAULT_OPTIONS),s)),t(this,g).enableSearchScoring&&!t(this,g).tokenizeSearch&&(t(this,g).enableSearchScoring=!1,console.warn("Search scoring enabled with tokenization disabled... Ignoring")),typeof e=="string"){let p=document.querySelector(e);if(!p)throw new SyntaxError(`Failed to find table using selector ${e}`);f(this,E,p)}else f(this,E,e);if(!(t(this,E)instanceof HTMLTableElement))throw new TypeError("Invalid table element type. Must be HTMLTableElement");if(!Array.isArray(t(this,g).columns))throw new TypeError("columns must be a list of columns");f(this,V,{scroller:[...x(t(this,g).classes.scroller),...x(k.DEFAULT_OPTIONS.classes.scroller)],thead:[...x(t(this,g).classes.thead),...x(k.DEFAULT_OPTIONS.classes.thead)],tbody:[...x(t(this,g).classes.tbody),...x(k.DEFAULT_OPTIONS.classes.tbody)],tfoot:[...x(t(this,g).classes.tfoot),...x(k.DEFAULT_OPTIONS.classes.tfoot)],tr:[...x(t(this,g).classes.tr),...x(k.DEFAULT_OPTIONS.classes.tr)],th:[...x(t(this,g).classes.th),...x(k.DEFAULT_OPTIONS.classes.th)],td:[...x(t(this,g).classes.td),...x(k.DEFAULT_OPTIONS.classes.td)],mark:[...x(t(this,g).classes.mark),...x(k.DEFAULT_OPTIONS.classes.mark)]}),t(this,E).classList.add("data-table"),f(this,y,document.createElement("div")),t(this,y).classList.add(...t(this,V).scroller),t(this,y).style.overflow="auto",t(this,y).style.height="100%",t(this,E).style.height!==""&&(t(this,y).style.height=t(this,E).style.height,t(this,E).style.height=""),(a=t(this,E).parentElement)==null||a.insertBefore(t(this,y),t(this,E)),t(this,y).append(t(this,E)),t(this,E).querySelectorAll("thead").length>1&&console.warn("Multiple theads found in table. Using last one."),t(this,E).querySelectorAll("tbody").length>1&&console.warn("Multiple tbodys found in table. Using first one.");let r=t(this,E).querySelector("thead:last-of-type");r?f(this,W,r):(f(this,W,document.createElement("thead")),t(this,E).insertBefore(t(this,W),t(this,E).firstChild)),t(this,W).classList.add(...t(this,V).thead);let i=t(this,W).querySelector("tr:last-of-type");i||(i=document.createElement("tr"),t(this,W).append(i)),i.classList.add(...t(this,V).tr),i.innerHTML="";let n=t(this,E).querySelector("tbody:first-of-type");n?f(this,F,n):(f(this,F,document.createElement("tbody")),t(this,E).append(t(this,F))),t(this,F).classList.add(...t(this,V).tbody),t(this,F).addEventListener("click",p=>{var X;if((X=window.getSelection())!=null&&X.toString())return;let C,w,Q;if(p.target instanceof HTMLTableCellElement?(w=p.target,C=w.parentElement,Q=w.dataset.dtField):p.target instanceof HTMLTableRowElement&&(C=p.target),C){let J=parseInt(C.dataset.dtIndex||"");if(!isNaN(J)){let st=t(this,L).find(tt=>tt._metadata.index===J);if(st){let tt=new CustomEvent("dt.row.clicked",{cancelable:!1,detail:{row:st,index:J,column:Q,originalEvent:p}});this.dispatchEvent(tt)}}}});let d=!1;for(let p of t(this,g).columns){let C={field:p.field,title:p.title||Ut(p.field),header:document.createElement("th"),headerContent:document.createElement("div"),visible:(u=p.visible)!=null?u:!0,sortable:(b=p.sortable)!=null?b:t(this,g).sortable,searchable:(T=p.searchable)!=null?T:!1,tokenize:t(this,g).tokenizeSearch&&(S=p.tokenize)!=null?S:!1,sortOrder:(H=p.sortOrder)!=null?H:null,sortPriority:(z=p.sortPriority)!=null?z:0,resizeStartWidth:null,resizeStartX:null,valueFormatter:p.valueFormatter,elementFormatter:p.elementFormatter,comparatorCallback:p.sorter,filterCallback:p.filter,sortValueCallback:p.sortValue};t(this,v).set(p.field,C);let w=C.header;w.classList.add(...t(this,V).th),w.dataset.dtField=p.field,w.hidden=!C.visible;let Q=C.headerContent;Q.classList.add("dt-header-content"),w.append(Q);let X=document.createElement("div");X.classList.add("dt-header-title-wrapper"),Q.append(X);let J=document.createElement("span");J.classList.add("dt-header-title"),J.innerHTML=C.title,X.append(J);let st=document.createElement("div");st.classList.add("dt-sort-icon"),X.append(st);let tt=document.createElement("div");tt.classList.add("dt-resizer"),Q.append(tt),i.append(w),C.visible&&(d=!0),C.sortable&&w.classList.add("dt-sortable"),t(this,g).rearrangeable&&(w.draggable=!0),((N=p.resizable)!=null?N:t(this,g).resizable)&&w.classList.add("dt-resizable"),X.addEventListener("click",()=>{w.classList.contains("dt-sortable")&&(C.sortOrder?C.sortOrder==="asc"?this.sort(C.field,"desc"):C.sortOrder&&this.sort(C.field,null):this.sort(C.field,"asc"))}),w.addEventListener("dragstart",t(this,Ct)),w.addEventListener("dragenter",t(this,St)),w.addEventListener("dragover",t(this,Lt)),w.addEventListener("dragleave",t(this,xt)),w.addEventListener("drop",t(this,Ot)),w.addEventListener("dragend",t(this,kt)),w.addEventListener("mousedown",t(this,yt)),w.addEventListener("dblclick",t(this,Tt)),typeof p.width=="number"?w.style.width=p.width+"px":typeof p.width=="string"&&(w.style.width=p.width)}if(t(this,v).size===0)console.warn("No columns found. At least one column is required.");else if(!d){console.warn("At least a single column must be visible. Showing the first column.");let p=t(this,v).keys().next().value;this.showColumn(p)}this.virtualScroll=t(this,g).virtualScroll,this.loadData((gt=t(this,g).data)!=null?gt:[])}get columnStates(){return[...t(this,v).values()].map(e=>({field:e.field,title:e.title,visible:e.visible,sortOrder:e.sortOrder,sortPriority:e.sortPriority,width:e.header.style.width}))}set columnStates(e){var s,r,i,n;for(let d of e){let a=t(this,v).get(d.field);if(!a){console.warn(`Attempting to restore state for non-existent column ${d.field}`);continue}a.visible=(s=d.visible)!=null?s:a.visible,a.sortOrder=(r=d.sortOrder)!=null?r:a.sortOrder,a.sortPriority=(i=d.sortPriority)!=null?i:a.sortPriority,a.header.style.width=(n=d.width)!=null?n:a.header.style.width}this.refresh()}get rows(){return[...t(this,L)]}get data(){return[...t(this,D).values()]}get length(){return t(this,L)?t(this,L).length:0}get table(){return t(this,E)}get virtualScroll(){return!!t(this,R)}set virtualScroll(e){var s;e!=this.virtualScroll&&(e?f(this,R,new bt({container:t(this,y),element:t(this,F),generator:r=>m(this,l,At).call(this,r)})):((s=t(this,R))==null||s.stop(),f(this,R,void 0)),m(this,l,Et).call(this))}get scoring(){return t(this,g).enableSearchScoring}set scoring(e){if(e&&!t(this,g).tokenizeSearch){console.warn("Cannot enable scoring when tokenization is disabled... Ignoring");return}e!==t(this,g).enableSearchScoring&&(t(this,g).enableSearchScoring=e,t(this,M)&&m(this,l,B).call(this))}loadData(e,s={}){var d;let r=t(this,y).scrollTop,i=t(this,y).scrollLeft;s.append||(t(this,D).clear(),f(this,L,[]));let n=t(this,D).size;for(let a of e){let u=m(this,l,Gt).call(this,a,n);t(this,D).set(n,u),n++}m(this,l,ct).call(this),m(this,l,B).call(this),s.keepScroll&&(t(this,y).scrollTop=r,t(this,y).scrollLeft=i,(d=t(this,R))==null||d.renderChunk())}showMessage(e,s){Array.isArray(s)?s=s.join(" "):typeof s!="string"&&(s="");let r=t(this,v).size;t(this,F).innerHTML=`<tr class="${s}"><td colSpan=${r}>${e}</td></tr>`}clearMessage(){m(this,l,Et).call(this)}search(e){e===""&&(e=void 0),typeof e=="string"?t(this,g).tokenizeSearch?f(this,M,t(this,g).tokenizer(e)):f(this,M,[{value:e.toLocaleLowerCase(),quoted:!0}]):f(this,M,e),m(this,l,B).call(this)}filter(e){if(e!=null||(e={}),typeof e!="object"&&typeof e!="function")throw new TypeError("filters must be object or function");f(this,U,e),m(this,l,B).call(this)}sort(e,s){var a;let r=t(this,v).get(e);if(!r){console.warn(`Attempting to sort non-existent column ${e}`);return}if(s===r.sortOrder)return;if(s&&!r.sortOrder){let u=this.columnStates.map(b=>b.sortOrder?b.sortPriority:0);r.sortPriority=Math.max(...u)+1}r.sortOrder=s;let i=new CustomEvent("dt.col.sort",{cancelable:!0,detail:{column:r.field,order:r.sortOrder}});if(!this.dispatchEvent(i))return;let n=t(this,y).scrollTop,d=t(this,y).scrollLeft;m(this,l,ct).call(this),m(this,l,wt).call(this),t(this,y).scrollTop=n,t(this,y).scrollLeft=d,(a=t(this,R))==null||a.renderChunk()}setColumnVisibility(e,s){let r=t(this,v).get(e);if(!r){console.warn(`Attempting to ${s?"show":"hide"} non-existent column ${e}`);return}if(r.visible===s)return;let i=new CustomEvent("dt.col.visibility",{cancelable:!0,detail:{column:r.field,visible:s}});this.dispatchEvent(i)&&(r.visible=s,m(this,l,ct).call(this),m(this,l,wt).call(this))}showColumn(e){this.setColumnVisibility(e,!0)}hideColumn(e){this.setColumnVisibility(e,!1)}export(e,s=!1){let i=[...(s?t(this,D):t(this,L)).values()],n=[...t(this,v).values()].filter(T=>s||T.visible).map(T=>`"${T.title}"`).join(","),d=i.map(T=>{let S=[];for(let H of Object.keys(T)){let z=t(this,v).get(H);if(!z)continue;let N=T[H];(s||!z.header.hidden)&&(typeof z.valueFormatter=="function"&&(N=z.valueFormatter(N,T)),N=String(N).replace('"','""'),S.push(`"${N}"`))}return S.join(",")}).join(`
2
- `),a=n+`
3
- `+d,u=new Blob([a],{type:"text/csv;charset=utf-8,"}),b=document.createElement("a");b.style.display="none",b.href=URL.createObjectURL(u),b.download=`${e}.csv`,document.body.append(b),b.click(),b.remove()}scrollToRow(e){var i;let r=(i=e._metadata)==null?void 0:i.index;if(typeof r=="number")this.scrollToOriginalIndex(r);else throw new TypeError("Invalid row")}scrollToOriginalIndex(e){let s=t(this,D).get(e);if(s){let r=t(this,L).indexOf(s);if(r>=0){this.scrollToFilteredIndex(r);return}else throw new Error("Cannot scroll to filtered out row")}else throw new RangeError(`Row index ${e} out of range`)}scrollToFilteredIndex(e){let s=t(this,L)[e];if(!s)throw new RangeError(`Row index ${e} out of range`);if(t(this,R))t(this,R).scrollToIndex(e);else{let r=t(this,F).querySelector(`tr[data-dt-index="${s._metadata.index}"]`);if(r){r.scrollIntoView(!0);let i=parseFloat(getComputedStyle(t(this,W)).height);t(this,y).scrollTop-=i}}}scrollToPx(e){if(t(this,R))t(this,R).scrollToPx(e);else{let s=parseFloat(getComputedStyle(t(this,W)).height);t(this,y).scrollTop-=s}}setColumnOrder(e){if(!Array.isArray(e))throw new TypeError("fields must be an array of field names");let s=new Map;for(let r of e){let i=t(this,v).get(r);i&&s.set(r,i)}for(let[r,i]of t(this,v))s.has(r)||s.set(r,i);f(this,v,s),this.refresh()}refresh(){m(this,l,ct).call(this),m(this,l,B).call(this)}indexOf(e,s){let i=[...t(this,D).values()].find(n=>{if(e in n)return n[e]===s});return i?i._metadata.index:-1}updateRow(e,s){let r=t(this,D).get(e);r&&(Object.assign(r,s),m(this,l,B).call(this))}deleteRow(e){t(this,D).delete(e),m(this,l,B).call(this)}withoutUpdates(e){f(this,j,!0);try{e(this)}finally{f(this,j,!1),this.refresh()}}addEventListener(e,s,r){super.addEventListener(e,s,r)}};E=new WeakMap,W=new WeakMap,F=new WeakMap,y=new WeakMap,v=new WeakMap,D=new WeakMap,L=new WeakMap,M=new WeakMap,U=new WeakMap,R=new WeakMap,V=new WeakMap,P=new WeakMap,g=new WeakMap,j=new WeakMap,l=new WeakSet,Gt=function(e,s){let r={index:s++,tokens:{},compareValues:{},sortValues:{}};e._metadata=r;for(let[i,n]of t(this,v)){let d=m(this,l,ut).call(this,e,i);typeof n.sortValueCallback=="function"?r.sortValues[i]=n.sortValueCallback(d):typeof d=="string"?r.sortValues[i]=d.toLocaleLowerCase():r.sortValues[i]=d,typeof d=="string"&&(r.compareValues[i]=d.toLocaleLowerCase()),n.searchable&&n.tokenize&&d&&(r.tokens[i]=t(this,g).tokenizer(d).map(a=>a.value))}return e},Dt=function(e,s){if(!e||!s)return 0;let r=0,i=0;if(s===e)i=k.MatchWeights.EXACT,r=e.length;else if(s.startsWith(e))i=k.MatchWeights.PREFIX,r=e.length;else if(s.includes(e))i=k.MatchWeights.SUBSTRING,r=e.length;else return 0;let d=1/(1+(s.length-e.length));return r*i*d},Ht=function(e,s,r){return e instanceof RegExp?e.test(s)?1:0:t(this,g).enableSearchScoring?e.quoted||!r?m(this,l,Dt).call(this,e.value,s):r.map(i=>m(this,l,Dt).call(this,e.value,i)).reduce((i,n)=>i+=n,0):e.quoted||!r?s.includes(e.value)?1:0:r.some(i=>i==e.value)?1:0},zt=function(e,s,r){return Array.isArray(s)?s.length===0?!0:s.some(i=>m(this,l,zt).call(this,e,i)):typeof r=="function"?r(e,s):s instanceof RegExp?s.test(String(e)):s===e},Bt=function(e,s){if(typeof t(this,U)=="function")return t(this,U).call(this,e,s);for(let r of Object.keys(t(this,U)||{})){if(!(r in t(this,U)))continue;let i=t(this,U)[r],n=m(this,l,ut).call(this,e,r);if(typeof i=="function"){if(!i(n))return!1}else{let d=t(this,v).get(r),a=d?d.filterCallback:void 0;if(!m(this,l,zt).call(this,n,i,a))return!1}}return!0},B=function(){if(t(this,j))return;let e=[...t(this,D).values()];f(this,L,e.filter((r,i)=>{if(r._metadata.searchScore=0,!m(this,l,Bt).call(this,r,i))return!1;if(!t(this,M))return!0;let d=[...[...t(this,v).values()].filter(a=>a.searchable).map(a=>a.field),...t(this,g).extraSearchFields];for(let a of d){let u=m(this,l,ut).call(this,r,a),b=r._metadata.compareValues[a],T=r._metadata.tokens[a];if(typeof u!="string"||typeof b!="string")continue;let S=0;if(t(this,M)instanceof RegExp)S=m(this,l,Ht).call(this,t(this,M),u,T);else for(let H of t(this,M))S+=m(this,l,Ht).call(this,H,b,T);r._metadata.searchScore+=S}return r._metadata.searchScore>0})),m(this,l,wt).call(this);let s=new CustomEvent("dt.rows.changed",{cancelable:!1,detail:{dataTable:this}});this.dispatchEvent(s)},Kt=function(e,s,r){let i,n;if(r.sortOrder==="asc"?(i=e._metadata.sortValues[r.field],n=s._metadata.sortValues[r.field]):r.sortOrder==="desc"&&(i=s._metadata.sortValues[r.field],n=e._metadata.sortValues[r.field]),typeof r.sorter=="function"){let u=r.sorter(i,n);if(u!==0)return u}let d=i==null,a=n==null;return d&&!a?-1:a&&!d?1:i<n?-1:i>n?1:0},wt=function(){if(t(this,j))return;let e=[...t(this,v).values()].filter(s=>!s.header.hidden&&s.sortOrder).sort((s,r)=>s.sortPriority-r.sortPriority);t(this,L).sort((s,r)=>{if(this.scoring&&t(this,M)){let i=s._metadata.searchScore||0,n=r._metadata.searchScore||0;if(i>n)return-1;if(i<n)return 1}for(let i of e){let n=m(this,l,Kt).call(this,s,r,i);if(n!==0)return n}return s._metadata.index-r._metadata.index}),m(this,l,Et).call(this)},ct=function(){var e,s,r,i,n,d,a;if(!t(this,j))for(let u of t(this,v).values())(e=u.header.parentElement)==null||e.append(u.header),u.header.hidden=!u.visible,u.sortOrder==="asc"?((s=u.header)==null||s.classList.add("dt-ascending"),(r=u.header)==null||r.classList.remove("dt-descending")):u.sortOrder==="desc"?((i=u.header)==null||i.classList.add("dt-descending"),(n=u.header)==null||n.classList.remove("dt-ascending")):((d=u.header)==null||d.classList.remove("dt-ascending"),(a=u.header)==null||a.classList.remove("dt-descending"))},Et=function(){if(!t(this,j)){if(t(this,F).innerHTML="",t(this,R))try{t(this,R).start(t(this,L).length)}catch(e){e instanceof nt&&(console.warn("Failed to start virtual scroll... falling back to standard rendering"),console.warn(e.stack))}else{if(t(this,L).length>Xt){let s=Xt.toLocaleString();console.warn(`Virtual scroll disabled with more than ${s} rows... Good luck with that!`)}let e=t(this,L).map((s,r)=>m(this,l,At).call(this,r));t(this,F).append(...e)}t(this,D).size===0?this.showMessage(t(this,g).noDataText,"dt-empty"):t(this,L).length===0&&this.showMessage(t(this,g).noMatchText,"dt-empty")}},It=function(e,s){if(e.children.length===0){let r=e.innerText,i=t(this,V).mark.join(" ");r=r.replace(s,n=>`<mark class="${i}">${n}</mark>`),e.innerHTML=r}else for(let r of e.children)r instanceof HTMLElement&&m(this,l,It).call(this,r,s)},Qt=function(e,s,r,i){if(e.title=String(s),typeof r.valueFormatter=="function"&&(s=r.valueFormatter(s,i)),e.innerText=s==null?"-":s,typeof r.elementFormatter=="function"&&r.elementFormatter(s,i,e),t(this,g).highlightSearch&&t(this,M)&&r.searchable){let n;if(t(this,M)instanceof RegExp)n=t(this,M);else{let d=t(this,M).map(a=>a.value).join("|");n=new RegExp(d,"gi")}m(this,l,It).call(this,e,n)}e.hidden=!r.visible},At=function(e){let s=t(this,L)[e],r=document.createElement("tr");r.classList.add(...t(this,V).tr),r.dataset.dtIndex=String(s._metadata.index);for(let[i,n]of t(this,v)){let d=m(this,l,ut).call(this,s,i),a=document.createElement("td");a.classList.add(...t(this,V).td),a.dataset.dtField=i;let u=n.header.style.width;u&&u!=="0px"&&(a.style.maxWidth=u),m(this,l,Qt).call(this,a,d,n,s),r.append(a)}if(typeof t(this,g).rowFormatter=="function")try{t(this,g).rowFormatter(s,r)}catch(i){console.error("Row formatter callback failed with the following error"),console.error(i)}return r},ut=function(e,s){let r=s.split("."),i=e;for(let n of r)if(i&&typeof i=="object")i=i[n];else return;return i},Vt=function(e,s){if(typeof e=="string"){let b=t(this,v).get(e);if(!b)throw new Error("Column not found");e=b}let r,i;s==null?(r="",i=""):s<=0?(r="0px",i=""):(r=`${s}px`,i=`${s}px`);let n=e.header.offsetWidth;e.header.style.width=r,e.header.style.maxWidth=r;let d=t(this,F).querySelectorAll(`td[data-dt-field="${e.field}"]`);for(let b of d)b.style.maxWidth=i;let a=e.header.offsetWidth-n,u=t(this,E).offsetWidth+a;t(this,E).style.width=`${u}px`},yt=new WeakMap,ft=new WeakMap,mt=new WeakMap,Tt=new WeakMap,Ct=new WeakMap,Lt=new WeakMap,St=new WeakMap,xt=new WeakMap,Ot=new WeakMap,kt=new WeakMap,k.MatchWeights={EXACT:100,PREFIX:50,SUBSTRING:10},k.DEFAULT_OPTIONS={virtualScroll:!0,highlightSearch:!0,tokenizeSearch:!1,enableSearchScoring:!1,sortable:!0,resizable:!0,rearrangeable:!0,extraSearchFields:[],noDataText:"No records found",noMatchText:"No matching records found",classes:{scroller:"dt-scroller",thead:"dt-headers",tbody:"",tfoot:"",tr:"",th:"",td:""},tokenizer:Rt()};var Ft=k,Xt=1e4;var K,Y,A,Z,Pt=class{constructor(o,e,s){c(this,K);c(this,Y);c(this,A,{saveColumnSorting:!0,saveColumnVisibility:!0,saveColumnWidth:!0,saveColumnOrder:!0});c(this,Z,()=>setTimeout(()=>this.saveState(),0));f(this,K,o),f(this,Y,e),f(this,A,et(et({},t(this,A)),s)),this.restoreState(),t(this,A).saveColumnSorting&&o.addEventListener("dt.col.sort",t(this,Z)),t(this,A).saveColumnVisibility&&o.addEventListener("dt.col.visibility",t(this,Z)),t(this,A).saveColumnWidth&&o.addEventListener("dt.col.resize",t(this,Z)),t(this,A).saveColumnOrder&&o.addEventListener("dt.col.reorder",t(this,Z))}saveState(){let o=t(this,K).columnStates;for(let e of o)t(this,A).saveColumnSorting||(e.sortOrder=void 0,e.sortPriority=void 0),t(this,A).saveColumnVisibility||(e.visible=void 0),t(this,A).saveColumnWidth||(e.width=void 0);localStorage.setItem(t(this,Y),JSON.stringify(t(this,K).columnStates))}restoreState(){let o=localStorage.getItem(t(this,Y));if(o)try{let e=JSON.parse(o);t(this,K).columnStates=e,t(this,A).saveColumnOrder&&t(this,K).setColumnOrder(e.map(s=>s.field))}catch(e){console.error("Failed to restore DataTable state:",e)}}clearState(){localStorage.removeItem(t(this,Y))}};K=new WeakMap,Y=new WeakMap,A=new WeakMap,Z=new WeakMap;0&&(module.exports={DataTable,LocalStorageAdapter,createRegexTokenizer});
1
+ "use strict";var ce=Object.defineProperty,Ye=Object.defineProperties,Ze=Object.getOwnPropertyDescriptor,qe=Object.getOwnPropertyDescriptors,et=Object.getOwnPropertyNames,Ae=Object.getOwnPropertySymbols;var _e=Object.prototype.hasOwnProperty,tt=Object.prototype.propertyIsEnumerable;var Pe=c=>{throw TypeError(c)};var Ne=(c,a,e)=>a in c?ce(c,a,{enumerable:!0,configurable:!0,writable:!0,value:e}):c[a]=e,B=(c,a)=>{for(var e in a||(a={}))_e.call(a,e)&&Ne(c,e,a[e]);if(Ae)for(var e of Ae(a))tt.call(a,e)&&Ne(c,e,a[e]);return c},We=(c,a)=>Ye(c,qe(a));var rt=(c,a)=>{for(var e in a)ce(c,e,{get:a[e],enumerable:!0})},st=(c,a,e,s)=>{if(a&&typeof a=="object"||typeof a=="function")for(let r of et(a))!_e.call(c,r)&&r!==e&&ce(c,r,{get:()=>a[r],enumerable:!(s=Ze(a,r))||s.enumerable});return c};var it=c=>st(ce({},"__esModule",{value:!0}),c);var Ce=(c,a,e)=>a.has(c)||Pe("Cannot "+e);var t=(c,a,e)=>(Ce(c,a,"read from private field"),e?e.call(c):a.get(c)),f=(c,a,e)=>a.has(c)?Pe("Cannot add the same private member more than once"):a instanceof WeakSet?a.add(c):a.set(c,e),p=(c,a,e,s)=>(Ce(c,a,"write to private field"),s?s.call(c,e):a.set(c,e),e),m=(c,a,e)=>(Ce(c,a,"access private method"),e);var nt={};rt(nt,{DataTable:()=>ke,LocalStorageAdapter:()=>He,createRegexTokenizer:()=>xe});module.exports=it(nt);var O=c=>{if(typeof c=="string"&&c!=="")return c.split(" ");if(Array.isArray(c))return c;if(!c)return[];throw new TypeError("classes must be string or array of strings")},$e=c=>c.replace(/_/g," ").replace(/([a-z])([A-Z])/g,"$1 $2").replace(/\b\w/g,a=>a.toUpperCase()),xe=(c="\\S+")=>{let a=new RegExp(`"[^"]*"|${c}`,"g");return e=>(e.match(a)||[]).map(r=>(r=r.toLocaleLowerCase().trim(),r.startsWith('"')&&r.endsWith('"')?{value:r.slice(1,-1),quoted:!0}:{value:r,quoted:!1}))};function Se(c){return typeof c=="boolean"?c?1:Number.MAX_SAFE_INTEGER:c}function Le(c,a={}){return{scroller:[...O(a.scroller),...O(c.scroller)],thead:[...O(a.thead),...O(c.thead)],tbody:[...O(a.tbody),...O(c.tbody)],tr:[...O(a.tr),...O(c.tr)],th:[...O(a.th),...O(c.th)],td:[...O(a.td),...O(c.td)],mark:[...O(a.mark),...O(c.mark)]}}var q,F,x,Q,N,_,ee,$,K,te,re,se,fe,je,Y=class Y{constructor({container:a,element:e,generator:s,nodePadding:r=10}){f(this,fe);f(this,F);f(this,x);f(this,Q);f(this,N,0);f(this,_,0);f(this,ee,2);f(this,$,0);f(this,K,!1);f(this,te,0);f(this,re,()=>{t(this,F).scrollTop!==t(this,te)&&(p(this,te,t(this,F).scrollTop),t(this,$)&&cancelAnimationFrame(t(this,$)),p(this,$,requestAnimationFrame(()=>this.renderChunk())))});f(this,se,()=>{this.renderChunk()});p(this,F,a),p(this,x,e),p(this,Q,s),p(this,ee,r),new IntersectionObserver(n=>{for(let l of n)l.intersectionRatio===1&&this.renderChunk()}).observe(t(this,x))}get rowHeight(){return t(this,_)||m(this,fe,je).call(this),t(this,_)}get started(){return t(this,K)}scrollToIndex(a){if(a<0||a>=t(this,N))throw new RangeError("Index out of bounds.");this.scrollToPx(this.rowHeight*a)}scrollToPx(a){t(this,F).scrollTop=a,this.renderChunk()}start(a){t(this,K)||(t(this,F).addEventListener("scroll",t(this,re)),window.addEventListener("resize",t(this,se)),p(this,K,!0)),t(this,F).classList.add("dt-virtual-scroll"),p(this,N,a),this.renderChunk()}stop(){t(this,$)&&cancelAnimationFrame(t(this,$)),t(this,F).classList.remove("dt-virtual-scroll"),t(this,F).removeEventListener("scroll",t(this,re)),window.removeEventListener("resize",t(this,se)),p(this,K,!1)}renderChunk(){let a=t(this,F).scrollTop,e=t(this,N),s=this.rowHeight,r=t(this,ee);if(!this.started||!t(this,x).checkVisibility()||!e||!s)return;let i=s*e;t(this,x).innerHTML=`<div style="height: ${i}px;"></div>`;let n=t(this,x).offsetHeight,l=t(this,F).offsetHeight;!t(Y,q)&&n<Math.round(i-1)&&(p(Y,q,!0),console.error("Max element height exceeded. Virtual scroll may not work."));let o=Math.floor(a/s)-r;o=Math.max(0,o);let u=Math.ceil(l/s)+2*r;u=Math.min(e-o,u),o%2===1&&o--;let b=o*s,v=i-(b+u*s);try{t(this,x).innerHTML="";let d=new Array(u).fill(null).map((y,A)=>t(this,Q).call(this,A+o)),T=document.createElement("div"),w=document.createElement("div");T.style.visibility="hidden",T.style.height=b+"px",w.style.visibility="hidden",w.style.height=v+"px",t(this,x).append(T),t(this,x).append(...d),t(this,x).append(w)}catch(d){d instanceof RangeError&&console.log(d)}}};q=new WeakMap,F=new WeakMap,x=new WeakMap,Q=new WeakMap,N=new WeakMap,_=new WeakMap,ee=new WeakMap,$=new WeakMap,K=new WeakMap,te=new WeakMap,re=new WeakMap,se=new WeakMap,fe=new WeakSet,je=function(){if(t(this,N)===0||!t(this,x).checkVisibility()){p(this,_,0);return}let e=Math.min(1e3,t(this,N)),s=[];for(let r=0;r<e;++r)s.push(t(this,Q).call(this,r));if(t(this,x).innerHTML="",t(this,x).append(...s),p(this,_,t(this,x).offsetHeight/e),t(this,_)<=0)throw new Z(`First ${e} rows had no rendered height. Virtual scroll can't be used.`);t(this,_)*t(this,N)>33554400&&console.warn("Virtual scroll height exceeded maximum known element height.")},f(Y,q,!1);var ue=Y,Z=class extends Error{constructor(a){super(a)}};var C,U,H,S,E,R,L,le,M,W,k,z,g,I,h,Ue,Xe,Ge,Me,Oe,Re,Be,P,Qe,ie,ne,ae,Fe,Je,De,oe,ze,me,pe,de,he,ge,be,Te,Ee,ve,we,ye,J=class J extends EventTarget{constructor(e,s,r={}){var v,d;super();f(this,h);this.DEFAULT_OPTIONS={virtualScroll:1e3,highlightSearch:!0,tokenizeSearch:!1,enableSearchScoring:!1,sortable:!0,resizable:!0,rearrangeable:!0,extraSearchFields:[],noDataText:"No records found",noMatchText:"No matching records found",classes:{scroller:["dt-scroller"],thead:["dt-headers"],tbody:[],tr:[],th:[],td:[],mark:[]},tokenizer:xe()};f(this,C);f(this,U);f(this,H);f(this,S);f(this,E,new Map);f(this,R,new Map);f(this,L,[]);f(this,le);f(this,M);f(this,W);f(this,k);f(this,z);f(this,g);f(this,I,!1);f(this,me,e=>{var n;if((n=window.getSelection())!=null&&n.toString())return;let s,r,i;if(e.target instanceof HTMLTableCellElement?(r=e.target,s=r.parentElement,i=r.dataset.dtField):e.target instanceof HTMLTableRowElement&&(s=e.target),s){let l=parseInt(s.dataset.dtIndex||"");if(!isNaN(l)){let o=t(this,L).find(u=>u._metadata.index===l);if(o){let u=new CustomEvent("dt.row.clicked",{cancelable:!1,detail:{row:o,index:l,column:i,originalEvent:e}});this.dispatchEvent(u)}}}});f(this,pe,e=>{if(!(e.target instanceof HTMLElement)||!e.target.classList.contains("dt-resizer")||!(e.currentTarget instanceof HTMLElement)||!e.currentTarget.dataset.dtField)return;e.stopImmediatePropagation(),e.preventDefault();let s=e.currentTarget.dataset.dtField,r=t(this,E).get(s);r&&(p(this,z,r),r.resizeStartX=e.clientX,r.resizeStartWidth=r.headerElement.offsetWidth,document.addEventListener("mousemove",t(this,de)),document.addEventListener("mouseup",t(this,he)))});f(this,de,e=>{if(!t(this,z))return;e.stopImmediatePropagation(),e.preventDefault();let s=e.clientX-t(this,z).resizeStartX,r=t(this,z).resizeStartWidth+s;m(this,h,ze).call(this,t(this,z),r)});f(this,he,e=>{if(!t(this,z))return;e.stopImmediatePropagation(),e.preventDefault(),document.removeEventListener("mousemove",t(this,de)),document.removeEventListener("mouseup",t(this,he));let s=new CustomEvent("dt.col.resize",{cancelable:!1,detail:{column:t(this,z).field,width:t(this,z).headerElement.offsetWidth}});this.dispatchEvent(s),p(this,z,void 0)});f(this,ge,e=>{if(!(e.target instanceof HTMLElement)||!e.target.classList.contains("dt-resizer")||!(e.currentTarget instanceof HTMLElement)||!e.currentTarget.dataset.dtField)return;let s=e.currentTarget.dataset.dtField;s&&m(this,h,ze).call(this,s)});f(this,be,e=>{let r=e.target.dataset.dtField;e.dataTransfer&&r&&(e.dataTransfer.effectAllowed="move",e.dataTransfer.setData("text/plain",r))});f(this,Te,e=>(e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect="move"),!1));f(this,Ee,e=>{e.target.classList.add("dt-drag-over")});f(this,ve,e=>{e.target.classList.remove("dt-drag-over")});f(this,we,e=>{var u;let s=(u=e.dataTransfer)==null?void 0:u.getData("text/plain"),i=e.currentTarget.dataset.dtField;if(!s||!i)return;e.preventDefault(),e.stopPropagation();let n=[...t(this,E).values()],l=n.findIndex(b=>b.field===s),o=n.findIndex(b=>b.field===i);if(l>-1&&o>-1){let[b]=n.splice(l,1),v=t(this,E).get(i);if(!v)return;n.splice(o,0,b);let d=n.map(w=>w.field),T=new CustomEvent("dt.col.reorder",{cancelable:!0,detail:{draggedColumn:b.field,dropColumn:v.field,order:d}});if(!this.dispatchEvent(T))return;this.setColumnOrder(d)}});f(this,ye,()=>{let e=document.querySelectorAll(".dt-drag-over");for(let s of e)s.classList.remove("dt-drag-over")});let i=Le(this.DEFAULT_OPTIONS.classes,r.classes),n=Se((v=r.virtualScroll)!=null?v:this.DEFAULT_OPTIONS.virtualScroll);if(p(this,g,We(B(B({},this.DEFAULT_OPTIONS),r),{classes:i,virtualScroll:n})),t(this,g).enableSearchScoring&&!t(this,g).tokenizeSearch&&(t(this,g).enableSearchScoring=!1,console.warn("Search scoring enabled with tokenization disabled... Ignoring")),typeof e=="string"){let T=document.querySelector(e);if(!T)throw new SyntaxError(`Failed to find table using selector ${e}`);p(this,C,T)}else p(this,C,e);if(!(t(this,C)instanceof HTMLTableElement))throw new TypeError("Invalid table element type. Must be HTMLTableElement");if(!Array.isArray(s))throw new TypeError("columns must be a list of columns");let{scroller:l,thead:o,headerRow:u,tbody:b}=m(this,h,Ue).call(this);p(this,S,l),p(this,U,o),p(this,H,b),m(this,h,Xe).call(this,s,u),this.updateOptions(r),this.loadData((d=r.data)!=null?d:[])}get options(){return structuredClone(t(this,g))}get columnStates(){return[...t(this,E).values()].map(e=>({field:e.field,title:e.title,visible:e.visible,sortOrder:e.sortOrder,sortPriority:e.sortPriority,width:e.headerElement.style.width}))}set columnStates(e){var s,r,i,n;for(let l of e){let o=t(this,E).get(l.field);if(!o){console.warn(`Attempting to restore state for non-existent column ${l.field}`);continue}o.visible=(s=l.visible)!=null?s:o.visible,o.sortOrder=(r=l.sortOrder)!=null?r:o.sortOrder,o.sortPriority=(i=l.sortPriority)!=null?i:o.sortPriority,o.headerElement.style.width=(n=l.width)!=null?n:o.headerElement.style.width}this.refresh()}get rows(){return[...t(this,L)]}get data(){return[...t(this,R).values()]}get table(){return t(this,C)}updateOptions(e){let s=!1,r=!1,i=!1;p(this,I,!0);let{virtualScroll:n,highlightSearch:l,tokenizeSearch:o,enableSearchScoring:u,rearrangeable:b,extraSearchFields:v,noMatchText:d,noDataText:T,classes:w}=e;if(n!==void 0&&(t(this,g).virtualScroll=Se(n),s=!0),l!==void 0&&(t(this,g).highlightSearch=l,s=!0),o!==void 0&&(t(this,g).tokenizeSearch=o,i=!0,this.search(t(this,le))),u!==void 0&&(t(this,g).enableSearchScoring=u,r=!0),b!==void 0){t(this,g).rearrangeable=b;for(let y of t(this,E).values())y.headerElement.draggable=b}if(v!==void 0&&(t(this,g).extraSearchFields=v,r=!0),d!==void 0&&(t(this,g).noMatchText=d,this.rows.length===0&&(s=!0)),T!==void 0&&(t(this,g).noDataText=T,this.rows.length===0&&(s=!0)),w!==void 0){t(this,g).classes=Le(t(this,g).classes,w),t(this,S).className=t(this,g).classes.scroller.join(" "),t(this,U).className=t(this,g).classes.thead.join(" "),t(this,H).className=t(this,g).classes.tbody.join(" ");for(let y of t(this,E).values())y.headerElement.className=t(this,g).classes.th.join(" "),this.updateColumnOptions(y.field,{sortable:y.sortable});s=!0}p(this,I,!1),i?this.loadData(this.data):r?m(this,h,P).call(this):s&&m(this,h,ae).call(this)}updateColumnOptions(e,s){let r=t(this,E).get(e);if(!r)throw new Error(`Cannot update non-existent column "${e}"`);let i=!1,n=!1,l=!1,o=!1,{title:u,searchable:b,resizable:v,sortable:d,tokenize:T,valueFormatter:w,elementFormatter:y,sorter:A}=s;u!==void 0&&(r.titleElement.textContent=u,r.title=u),b!==void 0&&(r.searchable=b,n=!0),d!==void 0&&(d?r.headerElement.classList.add("dt-sortable"):r.headerElement.classList.remove("dt-sortable"),r.sortable=d),v!==void 0&&(v?r.headerElement.classList.add("dt-resizeable"):r.headerElement.classList.remove("dt-resizeable")),T!==void 0&&(r.tokenize=T,i=!0),w!==void 0&&(r.valueFormatter=w,o=!0),y!==void 0&&(r.elementFormatter=y,o=!0),A!==void 0&&(r.sorterCallback=A,l=!0),i?this.loadData(this.data):n?m(this,h,P).call(this):l?m(this,h,ie).call(this):o&&m(this,h,ae).call(this)}loadData(e,s={}){var l;let r=t(this,S).scrollTop,i=t(this,S).scrollLeft;s.append||(t(this,R).clear(),p(this,L,[]));let n=t(this,R).size;for(let o of e){let u=m(this,h,Ge).call(this,o,n);t(this,R).set(n,u),n++}m(this,h,ne).call(this),m(this,h,P).call(this),s.keepScroll&&(t(this,S).scrollTop=r,t(this,S).scrollLeft=i,(l=t(this,k))==null||l.renderChunk())}showMessage(e,s){Array.isArray(s)?s=s.join(" "):typeof s!="string"&&(s="");let r=t(this,E).size;t(this,H).innerHTML=`<tr class="${s}"><td colSpan=${r}>${e}</td></tr>`}clearMessage(){m(this,h,ae).call(this)}search(e){p(this,le,e),e===""&&(e=void 0),typeof e=="string"?t(this,g).tokenizeSearch?p(this,M,t(this,g).tokenizer(e)):p(this,M,[{value:e.toLocaleLowerCase(),quoted:!0}]):p(this,M,e),m(this,h,P).call(this)}filter(e){p(this,W,e||{}),m(this,h,P).call(this)}sort(e,s){var o;let r=t(this,E).get(e);if(!r){console.warn(`Attempting to sort non-existent column ${e}`);return}if(s===r.sortOrder)return;if(s&&!r.sortOrder){let u=this.columnStates.map(b=>b.sortOrder?b.sortPriority:0);r.sortPriority=Math.max(...u)+1}r.sortOrder=s;let i=new CustomEvent("dt.col.sort",{cancelable:!0,detail:{column:r.field,order:r.sortOrder}});if(!this.dispatchEvent(i))return;let n=t(this,S).scrollTop,l=t(this,S).scrollLeft;m(this,h,ne).call(this),m(this,h,ie).call(this),t(this,S).scrollTop=n,t(this,S).scrollLeft=l,(o=t(this,k))==null||o.renderChunk()}setColumnVisibility(e,s){let r=t(this,E).get(e);if(!r){console.warn(`Attempting to ${s?"show":"hide"} non-existent column ${e}`);return}if(r.visible===s)return;let i=new CustomEvent("dt.col.visibility",{cancelable:!0,detail:{column:r.field,visible:s}});this.dispatchEvent(i)&&(r.visible=s,m(this,h,ne).call(this),m(this,h,ie).call(this))}showColumn(e){this.setColumnVisibility(e,!0)}hideColumn(e){this.setColumnVisibility(e,!1)}export(e,s=!1){let i=[...(s?t(this,R):t(this,L)).values()],n=[...t(this,E).values()].filter(v=>s||v.visible).map(v=>`"${v.title}"`).join(","),l=i.map(v=>{let d=[];for(let T of Object.keys(v)){let w=t(this,E).get(T);if(!w)continue;let y=v[T];(s||!w.headerElement.hidden)&&(typeof w.valueFormatter=="function"&&(y=w.valueFormatter(y,v)),y=String(y).replace('"','""'),d.push(`"${y}"`))}return d.join(",")}).join(`
2
+ `),o=n+`
3
+ `+l,u=new Blob([o],{type:"text/csv;charset=utf-8,"}),b=document.createElement("a");b.style.display="none",b.href=URL.createObjectURL(u),b.download=`${e}.csv`,document.body.append(b),b.click(),b.remove()}scrollToRow(e){var i;let r=(i=e._metadata)==null?void 0:i.index;if(typeof r=="number")this.scrollToOriginalIndex(r);else throw new TypeError("Invalid row")}scrollToOriginalIndex(e){let s=t(this,R).get(e);if(s){let r=t(this,L).indexOf(s);if(r>=0){this.scrollToFilteredIndex(r);return}else throw new Error("Cannot scroll to filtered out row")}else throw new RangeError(`Row index ${e} out of range`)}scrollToFilteredIndex(e){let s=t(this,L)[e];if(!s)throw new RangeError(`Row index ${e} out of range`);if(t(this,k))t(this,k).scrollToIndex(e);else{let r=t(this,H).querySelector(`tr[data-dt-index="${s._metadata.index}"]`);if(r){r.scrollIntoView(!0);let i=parseFloat(getComputedStyle(t(this,U)).height);t(this,S).scrollTop-=i}}}scrollToPx(e){if(t(this,k))t(this,k).scrollToPx(e);else{let s=parseFloat(getComputedStyle(t(this,U)).height);t(this,S).scrollTop-=s}}setColumnOrder(e){if(!Array.isArray(e))throw new TypeError("fields must be an array of field names");let s=new Map;for(let r of e){let i=t(this,E).get(r);i&&s.set(r,i)}for(let[r,i]of t(this,E))s.has(r)||s.set(r,i);p(this,E,s),this.refresh()}refresh(){m(this,h,ne).call(this),m(this,h,P).call(this)}indexOf(e,s){let i=[...t(this,R).values()].find(n=>{if(e in n)return n[e]===s});return i?i._metadata.index:-1}updateRow(e,s){let r=t(this,R).get(e);r&&(Object.assign(r,s),m(this,h,P).call(this))}deleteRow(e){t(this,R).delete(e),m(this,h,P).call(this)}withoutUpdates(e){p(this,I,!0);try{e(this)}finally{p(this,I,!1),this.refresh()}}addEventListener(e,s,r){super.addEventListener(e,s,r)}};C=new WeakMap,U=new WeakMap,H=new WeakMap,S=new WeakMap,E=new WeakMap,R=new WeakMap,L=new WeakMap,le=new WeakMap,M=new WeakMap,W=new WeakMap,k=new WeakMap,z=new WeakMap,g=new WeakMap,I=new WeakMap,h=new WeakSet,Ue=function(){var n;t(this,C).classList.add("data-table");let e=document.createElement("div");e.style.overflow="auto",e.style.height="100%",t(this,C).style.height!==""&&(e.style.height=t(this,C).style.height,t(this,C).style.height="");let s=document.createElement("thead"),r=document.createElement("tr"),i=document.createElement("tbody");return i.addEventListener("click",t(this,me)),t(this,C).innerHTML="",s.append(r),t(this,C).append(s),t(this,C).append(i),(n=t(this,C).parentElement)==null||n.insertBefore(e,t(this,C)),e.append(t(this,C)),{scroller:e,thead:s,headerRow:r,tbody:i}},Xe=function(e,s){var i,n,l,o,u,b,v;t(this,E).clear();let r=!1;for(let d of e){let T=document.createElement("th"),w=document.createElement("div"),y=document.createElement("div"),A=document.createElement("span");(i=d.title)!=null||(d.title=$e(d.field)),(n=d.visible)!=null||(d.visible=!0),(l=d.sortable)!=null||(d.sortable=t(this,g).sortable),(o=d.searchable)!=null||(d.searchable=!1),d.tokenize=t(this,g).tokenizeSearch&&(u=d.tokenize)!=null?u:!1;let V={field:d.field,title:d.title,headerElement:T,titleElement:A,visible:d.visible,sortable:d.sortable,searchable:d.searchable,tokenize:d.tokenize,sortOrder:(b=d.sortOrder)!=null?b:null,sortPriority:(v=d.sortPriority)!=null?v:0,resizeStartWidth:null,resizeStartX:null,valueFormatter:d.valueFormatter,elementFormatter:d.elementFormatter,sorterCallback:d.sorter,filterCallback:d.filter,sortValueCallback:d.sortValue};t(this,E).set(d.field,V),T.dataset.dtField=d.field,T.hidden=!V.visible,w.classList.add("dt-header-content"),T.append(w),y.classList.add("dt-header-title-wrapper"),w.append(y),A.classList.add("dt-header-title"),A.innerHTML=V.title,y.append(A);let Ie=document.createElement("div");Ie.classList.add("dt-sort-icon"),y.append(Ie);let Ve=document.createElement("div");Ve.classList.add("dt-resizer"),w.append(Ve),s.append(T),V.visible&&(r=!0),this.updateColumnOptions(d.field,d),t(this,g).rearrangeable&&(T.draggable=!0),y.addEventListener("click",()=>{T.classList.contains("dt-sortable")&&(V.sortOrder?V.sortOrder==="asc"?this.sort(V.field,"desc"):V.sortOrder&&this.sort(V.field,null):this.sort(V.field,"asc"))}),T.addEventListener("dragstart",t(this,be)),T.addEventListener("dragenter",t(this,Ee)),T.addEventListener("dragover",t(this,Te)),T.addEventListener("dragleave",t(this,ve)),T.addEventListener("drop",t(this,we)),T.addEventListener("dragend",t(this,ye)),T.addEventListener("mousedown",t(this,pe)),T.addEventListener("dblclick",t(this,ge)),typeof d.width=="number"?T.style.width=d.width+"px":typeof d.width=="string"&&(T.style.width=d.width)}if(t(this,E).size===0)console.warn("No columns found. At least one column is required.");else if(!r){console.warn("At least a single column must be visible. Showing the first column.");let d=e[0].field;this.showColumn(d)}},Ge=function(e,s){let r={index:s++,tokens:{},compareValues:{},sortValues:{}};e._metadata=r;for(let[i,n]of t(this,E)){let l=m(this,h,oe).call(this,e,i);typeof n.sortValueCallback=="function"?r.sortValues[i]=n.sortValueCallback(l):typeof l=="string"?r.sortValues[i]=l.toLocaleLowerCase():r.sortValues[i]=l,typeof l=="string"&&(r.compareValues[i]=l.toLocaleLowerCase()),n.searchable&&n.tokenize&&l&&(r.tokens[i]=t(this,g).tokenizer(l).map(o=>o.value))}return e},Me=function(e,s){if(!e||!s)return 0;let r=0,i=0;if(s===e)i=J.MatchWeights.EXACT,r=e.length;else if(s.startsWith(e))i=J.MatchWeights.PREFIX,r=e.length;else if(s.includes(e))i=J.MatchWeights.SUBSTRING,r=e.length;else return 0;let l=1/(1+(s.length-e.length));return r*i*l},Oe=function(e,s,r){return e instanceof RegExp?e.test(s)?1:0:t(this,g).enableSearchScoring?e.quoted||!r?m(this,h,Me).call(this,e.value,s):r.map(i=>m(this,h,Me).call(this,e.value,i)).reduce((i,n)=>i+=n,0):e.quoted||!r?s.includes(e.value)?1:0:r.some(i=>i==e.value)?1:0},Re=function(e,s,r){return Array.isArray(s)?s.length===0?!0:s.some(i=>m(this,h,Re).call(this,e,i)):typeof r=="function"?r(e,s):s instanceof RegExp?s.test(String(e)):s===e},Be=function(e,s){if(typeof t(this,W)=="function")return t(this,W).call(this,e,s);for(let r of Object.keys(t(this,W)||{})){if(!(r in t(this,W)))continue;let i=t(this,W)[r],n=m(this,h,oe).call(this,e,r);if(typeof i=="function"){if(!i(n))return!1}else{let l=t(this,E).get(r),o=l?l.filterCallback:void 0;if(!m(this,h,Re).call(this,n,i,o))return!1}}return!0},P=function(){if(t(this,I))return;let e=[...t(this,R).values()];p(this,L,e.filter((r,i)=>{if(r._metadata.searchScore=0,!m(this,h,Be).call(this,r,i))return!1;if(!t(this,M))return!0;let l=[...[...t(this,E).values()].filter(o=>o.searchable).map(o=>o.field),...t(this,g).extraSearchFields];for(let o of l){let u=m(this,h,oe).call(this,r,o),b=r._metadata.compareValues[o],v=r._metadata.tokens[o];if(typeof u!="string"||typeof b!="string")continue;let d=0;if(t(this,M)instanceof RegExp)d=m(this,h,Oe).call(this,t(this,M),u,v);else for(let T of t(this,M))d+=m(this,h,Oe).call(this,T,b,v);r._metadata.searchScore+=d}return r._metadata.searchScore>0})),m(this,h,ie).call(this);let s=new CustomEvent("dt.rows.changed",{cancelable:!1,detail:{dataTable:this}});this.dispatchEvent(s)},Qe=function(e,s,r){let i,n;if(r.sortOrder==="asc"?(i=e._metadata.sortValues[r.field],n=s._metadata.sortValues[r.field]):r.sortOrder==="desc"&&(i=s._metadata.sortValues[r.field],n=e._metadata.sortValues[r.field]),typeof r.sorter=="function"){let u=r.sorter(i,n);if(u!==0)return u}let l=i==null,o=n==null;return l&&!o?-1:o&&!l?1:i<n?-1:i>n?1:0},ie=function(){if(t(this,I))return;let e=[...t(this,E).values()].filter(s=>!s.headerElement.hidden&&s.sortOrder).sort((s,r)=>s.sortPriority-r.sortPriority);t(this,L).sort((s,r)=>{if(t(this,g).enableSearchScoring&&t(this,M)){let i=s._metadata.searchScore||0,n=r._metadata.searchScore||0;if(i>n)return-1;if(i<n)return 1}for(let i of e){let n=m(this,h,Qe).call(this,s,r,i);if(n!==0)return n}return s._metadata.index-r._metadata.index}),m(this,h,ae).call(this)},ne=function(){var e,s,r,i,n,l,o;if(!t(this,I))for(let u of t(this,E).values())(e=u.headerElement.parentElement)==null||e.append(u.headerElement),u.headerElement.hidden=!u.visible,u.sortOrder==="asc"?((s=u.headerElement)==null||s.classList.add("dt-ascending"),(r=u.headerElement)==null||r.classList.remove("dt-descending")):u.sortOrder==="desc"?((i=u.headerElement)==null||i.classList.add("dt-descending"),(n=u.headerElement)==null||n.classList.remove("dt-ascending")):((l=u.headerElement)==null||l.classList.remove("dt-ascending"),(o=u.headerElement)==null||o.classList.remove("dt-descending"))},ae=function(){if(t(this,I))return;let e=this.rows.length>=t(this,g).virtualScroll;if(e&&!t(this,k)?p(this,k,new ue({container:t(this,S),element:t(this,H),generator:s=>m(this,h,De).call(this,s)})):!e&&t(this,k)&&(t(this,k).stop(),p(this,k,void 0)),t(this,H).innerHTML="",t(this,k))try{t(this,k).start(t(this,L).length)}catch(s){s instanceof Z&&(console.warn("Failed to start virtual scroll... falling back to standard rendering"),console.warn(s.stack))}else{if(t(this,L).length>Ke){let r=Ke.toLocaleString();console.warn(`Virtual scroll disabled with more than ${r} rows... Good luck with that!`)}let s=t(this,L).map((r,i)=>m(this,h,De).call(this,i));t(this,H).append(...s)}t(this,R).size===0?this.showMessage(t(this,g).noDataText,"dt-empty"):t(this,L).length===0&&this.showMessage(t(this,g).noMatchText,"dt-empty")},Fe=function(e,s){var r;if(e.children.length===0){let i=(r=e.textContent)!=null?r:"",n=t(this,g).classes.mark.join(" ");i=i.replace(s,l=>`<mark class="${n}">${l}</mark>`),e.innerHTML=i}else for(let i of e.children)i instanceof HTMLElement&&m(this,h,Fe).call(this,i,s)},Je=function(e,s,r,i){if(e.title=String(s),typeof r.valueFormatter=="function"&&(s=r.valueFormatter(s,i)),e.textContent=s==null?"-":s,typeof r.elementFormatter=="function"&&r.elementFormatter(s,i,e),t(this,g).highlightSearch&&t(this,M)&&r.searchable){let n;if(t(this,M)instanceof RegExp)n=t(this,M);else{let l=t(this,M).map(o=>o.value).join("|");n=new RegExp(l,"gi")}m(this,h,Fe).call(this,e,n)}e.hidden=!r.visible},De=function(e){let s=t(this,L)[e],r=document.createElement("tr");r.classList.add(...t(this,g).classes.tr),r.dataset.dtIndex=String(s._metadata.index);for(let[i,n]of t(this,E)){let l=m(this,h,oe).call(this,s,i),o=document.createElement("td");o.classList.add(...t(this,g).classes.td),o.dataset.dtField=i;let u=n.headerElement.style.width;u&&u!=="0px"&&(o.style.maxWidth=u),m(this,h,Je).call(this,o,l,n,s),r.append(o)}if(typeof t(this,g).rowFormatter=="function")try{t(this,g).rowFormatter(s,r)}catch(i){console.error("Row formatter callback failed with the following error"),console.error(i)}return r},oe=function(e,s){let r=s.split("."),i=e;for(let n of r)if(i&&typeof i=="object")i=i[n];else return;return i},ze=function(e,s){if(typeof e=="string"){let b=t(this,E).get(e);if(!b)throw new Error("Column not found");e=b}let r,i;s==null?(r="",i=""):s<=0?(r="0px",i=""):(r=`${s}px`,i=`${s}px`);let n=e.headerElement.offsetWidth;e.headerElement.style.width=r,e.headerElement.style.maxWidth=r;let l=t(this,H).querySelectorAll(`td[data-dt-field="${e.field}"]`);for(let b of l)b.style.maxWidth=i;let o=e.headerElement.offsetWidth-n,u=t(this,C).offsetWidth+o;t(this,C).style.width=`${u}px`},me=new WeakMap,pe=new WeakMap,de=new WeakMap,he=new WeakMap,ge=new WeakMap,be=new WeakMap,Te=new WeakMap,Ee=new WeakMap,ve=new WeakMap,we=new WeakMap,ye=new WeakMap,J.MatchWeights={EXACT:100,PREFIX:50,SUBSTRING:10};var ke=J,Ke=1e4;var j,X,D,G,He=class{constructor(a,e,s){f(this,j);f(this,X);f(this,D,{saveColumnSorting:!0,saveColumnVisibility:!0,saveColumnWidth:!0,saveColumnOrder:!0});f(this,G,()=>setTimeout(()=>this.saveState(),0));p(this,j,a),p(this,X,e),p(this,D,B(B({},t(this,D)),s)),this.restoreState(),t(this,D).saveColumnSorting&&a.addEventListener("dt.col.sort",t(this,G)),t(this,D).saveColumnVisibility&&a.addEventListener("dt.col.visibility",t(this,G)),t(this,D).saveColumnWidth&&a.addEventListener("dt.col.resize",t(this,G)),t(this,D).saveColumnOrder&&a.addEventListener("dt.col.reorder",t(this,G))}saveState(){let a=t(this,j).columnStates;for(let e of a)t(this,D).saveColumnSorting||(e.sortOrder=void 0,e.sortPriority=void 0),t(this,D).saveColumnVisibility||(e.visible=void 0),t(this,D).saveColumnWidth||(e.width=void 0);localStorage.setItem(t(this,X),JSON.stringify(t(this,j).columnStates))}restoreState(){let a=localStorage.getItem(t(this,X));if(a)try{let e=JSON.parse(a);t(this,j).columnStates=e,t(this,D).saveColumnOrder&&t(this,j).setColumnOrder(e.map(s=>s.field))}catch(e){console.error("Failed to restore DataTable state:",e)}}clearState(){localStorage.removeItem(t(this,X))}};j=new WeakMap,X=new WeakMap,D=new WeakMap,G=new WeakMap;0&&(module.exports={DataTable,LocalStorageAdapter,createRegexTokenizer});
4
4
  //# sourceMappingURL=datatable.js.map