@timlassiter11/yatl 0.3.18 → 0.3.20

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.
@@ -513,6 +513,7 @@ declare class DataTable<T> extends EventTarget {
513
513
  * @example dataTable.withoutUpdates(dt => { dt.sort('name', 'asc'); dt.filter({ age: '>30' }); });
514
514
  */
515
515
  withoutUpdates(callback: (dataTable: DataTable<T>) => void): void;
516
+ destroy(): void;
516
517
  addEventListener<K extends keyof DataTableEventMap<T>>(type: K, listener: (this: DataTable<T>, ev: CustomEvent<DataTableEventMap<T>[K]>) => any, options?: boolean | AddEventListenerOptions): void;
517
518
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
518
519
  private readonly TABLE_OPTION_CONFIGS;
@@ -595,12 +596,17 @@ interface IDataTable<T> extends EventTarget {
595
596
  */
596
597
  declare class LocalStorageAdapter<T> {
597
598
  #private;
599
+ private readonly storageKey;
600
+ private dataTable?;
601
+ private readonly options;
598
602
  /**
599
603
  * @param dataTable - The DataTable instance to monitor.
600
604
  * @param storageKey - The key to use for saving the state in localStorage.
601
605
  * @param options - The options for configuring what is stored.
602
606
  */
603
- constructor(dataTable: IDataTable<T>, storageKey: string, options?: LocalStorageAdapterOptions);
607
+ constructor(storageKey: string, dataTable?: IDataTable<T> | undefined, options?: LocalStorageAdapterOptions);
608
+ setDataTable(dataTable: IDataTable<T>): void;
609
+ destroy(): void;
604
610
  /**
605
611
  * Saves the current column state to localStorage.
606
612
  */
@@ -513,6 +513,7 @@ declare class DataTable<T> extends EventTarget {
513
513
  * @example dataTable.withoutUpdates(dt => { dt.sort('name', 'asc'); dt.filter({ age: '>30' }); });
514
514
  */
515
515
  withoutUpdates(callback: (dataTable: DataTable<T>) => void): void;
516
+ destroy(): void;
516
517
  addEventListener<K extends keyof DataTableEventMap<T>>(type: K, listener: (this: DataTable<T>, ev: CustomEvent<DataTableEventMap<T>[K]>) => any, options?: boolean | AddEventListenerOptions): void;
517
518
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
518
519
  private readonly TABLE_OPTION_CONFIGS;
@@ -595,12 +596,17 @@ interface IDataTable<T> extends EventTarget {
595
596
  */
596
597
  declare class LocalStorageAdapter<T> {
597
598
  #private;
599
+ private readonly storageKey;
600
+ private dataTable?;
601
+ private readonly options;
598
602
  /**
599
603
  * @param dataTable - The DataTable instance to monitor.
600
604
  * @param storageKey - The key to use for saving the state in localStorage.
601
605
  * @param options - The options for configuring what is stored.
602
606
  */
603
- constructor(dataTable: IDataTable<T>, storageKey: string, options?: LocalStorageAdapterOptions);
607
+ constructor(storageKey: string, dataTable?: IDataTable<T> | undefined, options?: LocalStorageAdapterOptions);
608
+ setDataTable(dataTable: IDataTable<T>): void;
609
+ destroy(): void;
604
610
  /**
605
611
  * Saves the current column state to localStorage.
606
612
  */
@@ -1,4 +1,4 @@
1
- "use strict";var yatl=(()=>{var Ee=Object.defineProperty,ht=Object.defineProperties,ut=Object.getOwnPropertyDescriptor,ft=Object.getOwnPropertyDescriptors,mt=Object.getOwnPropertyNames,ye=Object.getOwnPropertySymbols;var Ie=Object.prototype.hasOwnProperty,Je=Object.prototype.propertyIsEnumerable;var Ye=a=>{throw TypeError(a)};var Be=(a,o,e)=>o in a?Ee(a,o,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[o]=e,$=(a,o)=>{for(var e in o||(o={}))Ie.call(o,e)&&Be(a,e,o[e]);if(ye)for(var e of ye(o))Je.call(o,e)&&Be(a,e,o[e]);return a},ze=(a,o)=>ht(a,ft(o));var Ze=(a,o)=>{var e={};for(var s in a)Ie.call(a,s)&&o.indexOf(s)<0&&(e[s]=a[s]);if(a!=null&&ye)for(var s of ye(a))o.indexOf(s)<0&&Je.call(a,s)&&(e[s]=a[s]);return e};var pt=(a,o)=>{for(var e in o)Ee(a,e,{get:o[e],enumerable:!0})},Tt=(a,o,e,s)=>{if(o&&typeof o=="object"||typeof o=="function")for(let i of mt(o))!Ie.call(a,i)&&i!==e&&Ee(a,i,{get:()=>o[i],enumerable:!(s=ut(o,i))||s.enumerable});return a};var gt=a=>Tt(Ee({},"__esModule",{value:!0}),a);var Ve=(a,o,e)=>o.has(a)||Ye("Cannot "+e);var t=(a,o,e)=>(Ve(a,o,"read from private field"),e?e.call(a):o.get(a)),h=(a,o,e)=>o.has(a)?Ye("Cannot add the same private member more than once"):o instanceof WeakSet?o.add(a):o.set(a,e),m=(a,o,e,s)=>(Ve(a,o,"write to private field"),s?s.call(a,e):o.set(a,e),e),f=(a,o,e)=>(Ve(a,o,"access private method"),e);var bt={};pt(bt,{DataTable:()=>We,LocalStorageAdapter:()=>Xe,VirtualScroll:()=>de,VirtualScrollError:()=>se,createRegexTokenizer:()=>Ke});var ce,R,F,ee,P,j,he,U,J,ue,I,X,te,fe,K,Ae,we,qe,B=class B{constructor({generator:o,container:e,element:s=e,nodePadding:i=10}){h(this,K);h(this,R);h(this,F);h(this,ee);h(this,P,0);h(this,j,0);h(this,he,2);h(this,U,0);h(this,J,!1);h(this,ue,0);h(this,I);h(this,X);h(this,te);h(this,fe,()=>{t(this,R).scrollTop!==t(this,ue)&&(m(this,ue,t(this,R).scrollTop),f(this,K,Ae).call(this))});m(this,R,e),m(this,F,s),m(this,ee,o),m(this,he,i),m(this,I,document.createElement("div")),t(this,I).style.visibility="hidden",m(this,X,document.createElement("div")),t(this,X).style.visibility="hidden",m(this,te,new ResizeObserver(()=>f(this,K,Ae).call(this)))}get rowHeight(){return t(this,j)||f(this,K,qe).call(this),t(this,j)}get started(){return t(this,J)}scrollToIndex(o){if(o<0||o>=t(this,P))throw new RangeError("Index out of bounds.");this.scrollToPx(this.rowHeight*o)}scrollToPx(o){t(this,R).scrollTop=o,f(this,K,we).call(this)}start(o){t(this,J)||(t(this,R).addEventListener("scroll",t(this,fe)),t(this,te).observe(t(this,R)),m(this,J,!0)),t(this,R).classList.add("dt-virtual-scroll"),m(this,P,o),f(this,K,we).call(this)}stop(){t(this,U)&&cancelAnimationFrame(t(this,U)),t(this,R).classList.remove("dt-virtual-scroll"),t(this,R).removeEventListener("scroll",t(this,fe)),t(this,te).disconnect(),m(this,J,!1)}};ce=new WeakMap,R=new WeakMap,F=new WeakMap,ee=new WeakMap,P=new WeakMap,j=new WeakMap,he=new WeakMap,U=new WeakMap,J=new WeakMap,ue=new WeakMap,I=new WeakMap,X=new WeakMap,te=new WeakMap,fe=new WeakMap,K=new WeakSet,Ae=function(){t(this,U)&&cancelAnimationFrame(t(this,U)),m(this,U,requestAnimationFrame(()=>f(this,K,we).call(this)))},we=function(){let o=t(this,R).scrollTop,e=t(this,P),s=this.rowHeight,i=t(this,he);if(!this.started||!e||!s)return;let r=s*e,n=t(this,R).style.height;t(this,R).style.height="100%";let c=t(this,R).offsetHeight;t(this,R).style.height=n;let u=i*2,d=Math.floor(o/s)-i;d<0&&(u+=d),d=Math.max(0,d);let p=Math.ceil(c/s)+u;p=Math.min(e-d,p),d%2===1&&(d--,p++);let b=d*s,v=r-(b+p*s);for(v<0&&(v=0);t(this,I).nextSibling&&t(this,I).nextSibling!==t(this,X);)t(this,F).removeChild(t(this,I).nextSibling);let w=new Array(p).fill(null).map((y,x)=>t(this,ee).call(this,x+d));t(this,I).style.height=b+"px",t(this,X).style.height=v+"px",t(this,I).parentElement?t(this,I).after(...w):t(this,F).append(t(this,I),...w,t(this,X));let A=t(this,F).offsetHeight;!t(B,ce)&&A<Math.round(r-1)&&(m(B,ce,!0),console.error("Max element height exceeded. Virtual scroll may not work."))},qe=function(){if(t(this,P)===0){m(this,j,0);return}let o=Math.min(B.AVERAGE_RENDER_COUNT,t(this,P)),e="";for(let r=0;r<o;++r)e+=t(this,ee).call(this,r).outerHTML;let s=t(this,F).style.visibility,i=t(this,F).innerHTML;if(t(this,F).style.visibility="hidden",t(this,F).innerHTML=e,m(this,j,t(this,F).offsetHeight/o),t(this,F).innerHTML=i,t(this,F).style.visibility=s,t(this,j)<=0)throw new se(`First ${o} rows had no rendered height. Virtual scroll can't be used.`);t(this,j)*t(this,P)>33554400&&console.warn("Virtual scroll height exceeded maximum known element height.")},h(B,ce,!1),B.AVERAGE_RENDER_COUNT=1e3;var de=B,se=class extends Error{constructor(o){super(o)}};var k=a=>{if(typeof a=="string"&&a!=="")return a.split(" ");if(Array.isArray(a))return a;if(!a)return[];throw new TypeError("classes must be string or array of strings")},et=a=>a.replace(/_/g," ").replace(/([a-z])([A-Z])/g,"$1 $2").replace(/\b\w/g,o=>o.toUpperCase()),Ke=(a="\\S+")=>{let o=new RegExp(`"[^"]*"|${a}`,"g");return e=>(e.match(o)||[]).map(i=>(i=i.toLocaleLowerCase().trim(),i.startsWith('"')&&i.endsWith('"')?{value:i.slice(1,-1),quoted:!0}:{value:i,quoted:!1}))};function tt(a){return typeof a=="boolean"?a?1:Number.MAX_SAFE_INTEGER:a}function st(a,o={}){return{scroller:[...k(o.scroller),...k(a.scroller)],thead:[...k(o.thead),...k(a.thead)],tbody:[...k(o.tbody),...k(a.tbody)],tr:[...k(o.tr),...k(a.tr)],th:[...k(o.th),...k(a.th)],td:[...k(o.td),...k(a.td)],mark:[...k(o.mark),...k(a.mark)]}}function Y(a,o){let e=o.split("."),s=a;for(let i of e)if(s&&typeof s=="object")s=s[i];else return;return s}var O,Z,W,C,ne,T,H,L,oe,D,_,M,z,pe,g,V,E,l,rt,nt,_e,$e,Pe,Se,ot,G,at,me,ie,Ce,je,lt,Ue,dt,xe,ct,Oe,Le,Te,ge,Re,Me,De,Fe,ke,He,Ne,re=class re extends EventTarget{constructor(e,s,i={}){super();h(this,l);this.DEFAULT_OPTIONS={virtualScroll:1e3,highlightSearch:!0,tokenizeSearch:!1,enableSearchScoring:!1,rearrangeable:!0,extraSearchFields:[],emptyValuePlaceholder:"-",noDataText:"No records found",noMatchText:"No matching records found",classes:{scroller:["dt-scroller"],thead:["dt-headers"],tbody:[],tr:[],th:[],td:[],mark:[]},rowFormatter:null,tokenizer:Ke(),virtualScrollClass:de};h(this,O);h(this,Z);h(this,W);h(this,C);h(this,ne,null);h(this,T,new Map);h(this,H,new Map);h(this,L,[]);h(this,oe,null);h(this,D,null);h(this,_,null);h(this,M,null);h(this,z,null);h(this,pe,!1);h(this,g,$({},this.DEFAULT_OPTIONS));h(this,V,!0);h(this,E,new Set);h(this,Oe,e=>{var n;if((n=window.getSelection())!=null&&n.toString())return;let s,i,r;if(e.target instanceof HTMLTableCellElement?(i=e.target,s=i.parentElement,r=i.dataset.dtField):e.target instanceof HTMLTableRowElement&&(s=e.target),s&&r){let c=parseInt(s.dataset.dtIndex||"");if(!isNaN(c)){let u=t(this,L).find(d=>d._metadata.index===c);if(u){let d=new CustomEvent("dt.row.clicked",{cancelable:!1,detail:{row:u,index:c,column:r,originalEvent:e}});this.dispatchEvent(d)}}}});h(this,Le,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,i=t(this,T).get(s);i&&(m(this,z,i),i.resizeStartX=e.clientX,i.resizeStartWidth=i.headerElement.offsetWidth,document.addEventListener("mousemove",t(this,Te)),document.addEventListener("mouseup",t(this,ge)))});h(this,Te,e=>{if(!t(this,z))return;e.stopImmediatePropagation(),e.preventDefault();let s=e.clientX-t(this,z).resizeStartX,i=t(this,z).resizeStartWidth+s;f(this,l,xe).call(this,t(this,z),i)});h(this,ge,e=>{if(!t(this,z))return;e.stopImmediatePropagation(),e.preventDefault(),document.removeEventListener("mousemove",t(this,Te)),document.removeEventListener("mouseup",t(this,ge));let s=new CustomEvent("dt.col.resize",{cancelable:!1,detail:{column:t(this,z).field,width:t(this,z).headerElement.offsetWidth}});this.dispatchEvent(s),m(this,z,null)});h(this,Re,e=>{var n;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,i=t(this,T).get(s);if(!i)return;let r=i.titleElement.scrollWidth;if(t(this,L).length>0){t(this,ne)||m(this,ne,document.createElement("canvas").getContext("2d"));let c=t(this,ne),u=t(this,W).querySelector("td"),d=0;if(u&&c){let p=window.getComputedStyle(u);c.font=`${p.fontWeight} ${p.fontSize} ${p.fontFamily}`,d=parseFloat(p.paddingLeft)+parseFloat(p.paddingRight)}for(let p of t(this,L)){let b=Y(p,s);typeof i.options.valueFormatter=="function"&&(b=i.options.valueFormatter(b,p));let v=b==null?"":String(b),w=(n=c==null?void 0:c.measureText(v).width)!=null?n:0;r=Math.max(r,w+d)}}f(this,l,xe).call(this,i,r)});h(this,Me,e=>{let i=e.target.dataset.dtField;e.dataTransfer&&i&&(e.dataTransfer.effectAllowed="move",e.dataTransfer.setData("text/plain",i))});h(this,De,e=>(e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect="move"),!1));h(this,Fe,e=>{e.target.classList.add("dt-drag-over")});h(this,ke,e=>{e.target.classList.remove("dt-drag-over")});h(this,He,e=>{var d;let s=(d=e.dataTransfer)==null?void 0:d.getData("text/plain"),r=e.currentTarget.dataset.dtField;if(!s||!r)return;e.preventDefault(),e.stopPropagation();let n=[...t(this,T).values()],c=n.findIndex(p=>p.field===s),u=n.findIndex(p=>p.field===r);if(c>-1&&u>-1){let[p]=n.splice(c,1),b=t(this,T).get(r);if(!b)return;n.splice(u,0,p);let v=n.map(A=>A.field),w=new CustomEvent("dt.col.reorder",{cancelable:!0,detail:{draggedColumn:p.field,dropColumn:b.field,order:v}});if(!this.dispatchEvent(w))return;this.setColumnOrder(v)}});h(this,Ne,()=>{let e=document.querySelectorAll(".dt-drag-over");for(let s of e)s.classList.remove("dt-drag-over")});this.TABLE_OPTION_CONFIGS={virtualScroll:{effect:"reRenderTable",handler:e=>tt(e)},highlightSearch:{effect:"reRenderTable"},tokenizeSearch:{effect:"reloadData",handler:e=>(this.search(t(this,oe)),e)},enableSearchScoring:{effect:"reApplyFilters"},rearrangeable:{effect:"updateHeaders"},extraSearchFields:{effect:"reloadData"},emptyValuePlaceholder:{effect:"reRenderTable"},noDataText:{effect:"reRenderTable"},noMatchText:{effect:"reRenderTable"},classes:{effect:"reRenderTable",handler:e=>{let s=st(t(this,g).classes,e);t(this,C).className=s.scroller.join(" "),t(this,Z).className=s.thead.join(" "),t(this,W).className=s.tbody.join(" ");for(let i of t(this,T).values())i.headerElement.className=s.th.join(" ");return s}},rowFormatter:{effect:"reRenderTable"},tokenizer:{effect:"reloadData"},virtualScrollClass:{effect:"reRenderTable",handler:e=>{var s;return(s=t(this,M))==null||s.stop(),m(this,M,null),e}}};this.COLUMN_OPTION_CONFIGS={title:{effect:"updateHeaders"},searchable:{effect:"reApplyFilters"},sortable:{effect:"updateHeaders"},resizable:{effect:"updateHeaders"},tokenize:{effect:"reloadData"},valueFormatter:{effect:"reRenderTable"},elementFormatter:{effect:"reRenderTable"},sorter:{effect:"reSortRows"},sortValue:{effect:"reloadData"},filter:{effect:"reApplyFilters"}};let v=i,{data:r,virtualScrollClass:n}=v,c=Ze(v,["data","virtualScrollClass"]);if(n!==void 0&&(t(this,g).virtualScrollClass=n),typeof e=="string"){let w=document.querySelector(e);if(!w)throw new SyntaxError(`Failed to find table using selector ${e}`);m(this,O,w)}else m(this,O,e);if(!(t(this,O)instanceof HTMLTableElement))throw new TypeError("Invalid table element type. Must be HTMLTableElement");let{scroller:u,thead:d,headerRow:p,tbody:b}=f(this,l,rt).call(this);m(this,C,u),m(this,Z,d),m(this,W,b),f(this,l,nt).call(this,s,p),this.updateTableOptions($($({},t(this,g)),c)),m(this,V,!1),t(this,E).clear(),this.loadData(r!=null?r:[])}get tableOptions(){return structuredClone(t(this,g))}get rows(){return[...t(this,L)]}get data(){return[...t(this,H).values()]}get table(){return t(this,O)}getState(){let e=[...t(this,T).values()];return{searchQuery:t(this,oe),filters:t(this,_),scrollPosition:{top:t(this,C).scrollTop,left:t(this,C).scrollLeft},columnOrder:e.map(s=>s.field),columns:e.map(s=>({field:s.field,visible:s.state.visible,sortState:s.state.sortState,width:s.state.width}))}}restoreState(e){this.withoutUpdates(()=>{if("searchQuery"in e&&e.searchQuery!==void 0&&this.search(e.searchQuery),"filters"in e&&e.filters!==void 0&&(m(this,_,e.filters),this.filter(e.filters)),"scrollPosition"in e&&e.scrollPosition!==void 0&&(t(this,C).scrollTop=e.scrollPosition.top),"columnOrder"in e&&e.columnOrder!==void 0&&this.setColumnOrder(e.columnOrder),"columns"in e&&e.columns!==void 0)for(let s of e.columns){let i=t(this,T).get(s.field);if(!i){console.warn(`Attempting to restore state for non-existent column ${s.field}`);continue}"visible"in s&&s.visible!==void 0&&(i.state.visible=s.visible),"sortState"in s&&s.sortState!==void 0&&(i.state.sortState=s.sortState),"width"in s&&s.width!==void 0&&f(this,l,xe).call(this,i,s.width)}})}updateTableOptions(e){this.withoutUpdates(()=>{for(let s in e){let i=s,r=e[i],n=this.TABLE_OPTION_CONFIGS[i];if(!n)continue;t(this,E).add(n.effect);let c=n.handler,u=c?c(r):r;t(this,g)[i]=u}t(this,g).enableSearchScoring&&!t(this,g).tokenizeSearch&&(t(this,g).enableSearchScoring=!1,console.warn("Search scoring enabled with tokenization disabled... Ignoring"))})}getColumnOptions(e){if(e){let i=t(this,T).get(e);if(!i)throw new Error(`Cannot get options for non-existent column "${e}"`);return ze($({},i.options),{field:i.field})}return[...t(this,T).values()].map(i=>ze($({},i.options),{field:i.field}))}updateColumnOptions(e,s){let i=t(this,T).get(e);if(!i)throw new Error(`Cannot update options for non-existent column "${e}"`);this.withoutUpdates(()=>{for(let r in s){let n=r,c=s[n],u=this.COLUMN_OPTION_CONFIGS[n];if(!u)continue;t(this,E).add(u.effect);let d=u.handler,p=d?d(c):c;i.options[n]=p}})}loadData(e,s={}){let i,r;s.keepScroll&&(i=t(this,C).scrollTop,r=t(this,C).scrollLeft),s.append||(t(this,H).clear(),m(this,L,[]));let n=t(this,H).size;for(let c of e){let u=f(this,l,_e).call(this,c,n);t(this,H).set(n,u),n++}f(this,l,ie).call(this),f(this,l,G).call(this),i&&r&&(t(this,C).scrollTop=i,t(this,C).scrollLeft=r)}showMessage(e,...s){let i=t(this,T).size;t(this,W).innerHTML=`<tr class="${s.join(" ")}"><td colSpan=${i}>${e}</td></tr>`}clearMessage(){f(this,l,Ce).call(this)}search(e){e!=null||(e=null);let s=new CustomEvent("dt.search",{cancelable:!0,detail:{query:e!=null?e:null}});this.dispatchEvent(s)&&(m(this,oe,e),e===""&&(e=null),typeof e=="string"?t(this,g).tokenizeSearch?m(this,D,t(this,g).tokenizer(e)):m(this,D,[{value:e.toLocaleLowerCase(),quoted:!0}]):m(this,D,e),f(this,l,G).call(this))}filter(e){m(this,_,e!=null?e:null),f(this,l,G).call(this)}sort(e,s){var u;let i=t(this,T).get(e);if(!i)throw new Error(`Cannot get options for non-existent column "${e}"`);if(s===((u=i.state.sortState)==null?void 0:u.order))return;let r=new CustomEvent("dt.col.sort",{cancelable:!0,detail:{column:i.field,order:s}});if(!this.dispatchEvent(r))return;if(s&&!i.state.sortState){let d=[...t(this,T).values()].map(v=>{var w;return(w=v.state.sortState)==null?void 0:w.priority}).filter(v=>v!==void 0),p=t(this,T).size+1,b=Math.min(p,...d)-1;i.state.sortState={order:s,priority:b}}else s&&i.state.sortState?i.state.sortState.order=s:i.state.sortState=null;let n=t(this,C).scrollTop,c=t(this,C).scrollLeft;f(this,l,ie).call(this),f(this,l,me).call(this),t(this,C).scrollTop=n,t(this,C).scrollLeft=c}setColumnVisibility(e,s){let i=t(this,T).get(e);if(!i)throw new Error(`Cannot get options for non-existent column "${e}"`);if(i.state.visible===s)return;let r=new CustomEvent("dt.col.visibility",{cancelable:!0,detail:{column:i.field,visible:s}});this.dispatchEvent(r)&&(i.state.visible=s,f(this,l,ie).call(this),f(this,l,me).call(this))}showColumn(e){this.setColumnVisibility(e,!0)}hideColumn(e){this.setColumnVisibility(e,!1)}export(e,s=!1){let r=[...(s?t(this,H):t(this,L)).values()],n=[...t(this,T).values()].filter(b=>s||b.state.visible).map(b=>`"${b.options.title}"`).join(","),c=r.map(b=>{let v=[];for(let w of t(this,T).keys()){let A=t(this,T).get(w);if(!A)continue;let y=b[w];(s||!A.headerElement.hidden)&&(typeof A.options.valueFormatter=="function"&&(y=A.options.valueFormatter(y,b)),y=String(y).replace('"','""'),v.push(`"${y}"`))}return v.join(",")}).join(`
2
- `),u=n+`
3
- `+c,d=new Blob([u],{type:"text/csv;charset=utf-8,"}),p=document.createElement("a");p.style.display="none",p.href=URL.createObjectURL(d),p.download=`${e}.csv`,document.body.append(p),p.click(),p.remove()}scrollToRow(e){var r;let i=(r=e._metadata)==null?void 0:r.index;if(typeof i=="number")this.scrollToOriginalIndex(i);else throw new Error("Row not in table")}scrollToOriginalIndex(e){let s=t(this,H).get(e);if(s){let i=t(this,L).indexOf(s);if(i>=0){this.scrollToFilteredIndex(i);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,M))t(this,M).scrollToIndex(e);else{let i=t(this,W).querySelector(`tr[data-dt-index="${s._metadata.index}"]`);if(i){i.scrollIntoView(!0);let r=parseFloat(getComputedStyle(t(this,Z)).height);t(this,C).scrollTop-=r}}}scrollToPx(e){if(t(this,M))t(this,M).scrollToPx(e);else{let s=parseFloat(getComputedStyle(t(this,Z)).height);t(this,C).scrollTop=e-s}}setColumnOrder(e){if(!Array.isArray(e))throw new TypeError("fields must be an array of field names");let s=new Map;for(let i of e){let r=t(this,T).get(i);r&&s.set(i,r)}for(let[i,r]of t(this,T))s.has(i)||s.set(i,r);m(this,T,s),this.refresh()}refresh(){f(this,l,ie).call(this),f(this,l,G).call(this)}indexOf(e,s){let r=[...t(this,H).values()].find(n=>{if(e in n)return n[e]===s});return r?r._metadata.index:-1}updateRow(e,s){let i=t(this,H).get(e);i&&(Object.assign(i,s),f(this,l,_e).call(this,i,e),f(this,l,G).call(this))}deleteRow(e){t(this,H).delete(e),f(this,l,G).call(this)}withoutUpdates(e){let s=t(this,V);m(this,V,!0);try{e(this)}finally{m(this,V,s),t(this,V)||f(this,l,ct).call(this)}}addEventListener(e,s,i){super.addEventListener(e,s,i)}};O=new WeakMap,Z=new WeakMap,W=new WeakMap,C=new WeakMap,ne=new WeakMap,T=new WeakMap,H=new WeakMap,L=new WeakMap,oe=new WeakMap,D=new WeakMap,_=new WeakMap,M=new WeakMap,z=new WeakMap,pe=new WeakMap,g=new WeakMap,V=new WeakMap,E=new WeakMap,l=new WeakSet,rt=function(){var n;t(this,O).classList.add("data-table");let e=document.createElement("div");t(this,O).style.height!==""&&(e.style.height=t(this,O).style.height,t(this,O).style.height="");let s=document.createElement("thead"),i=document.createElement("tr"),r=document.createElement("tbody");return r.addEventListener("click",t(this,Oe)),t(this,O).innerHTML="",s.append(i),t(this,O).append(s),t(this,O).append(r),(n=t(this,O).parentNode)==null||n.insertBefore(e,t(this,O)),e.append(t(this,O)),{scroller:e,thead:s,headerRow:i,tbody:r}},nt=function(e,s){var r,n,c,u,d,p,b,v,w,A;t(this,T).clear();let i=!1;for(let y of e){let x=document.createElement("th"),be=document.createElement("div"),le=document.createElement("div"),ve=document.createElement("span"),N={field:y.field,options:{title:(r=y.title)!=null?r:et(y.field),sortable:(n=y.sortable)!=null?n:!0,searchable:(c=y.searchable)!=null?c:!1,tokenize:(u=y.tokenize)!=null?u:!1,resizable:(d=y.resizable)!=null?d:!0,valueFormatter:(p=y.valueFormatter)!=null?p:null,elementFormatter:(b=y.elementFormatter)!=null?b:null,sorter:(v=y.sorter)!=null?v:null,sortValue:(w=y.sortValue)!=null?w:null,filter:(A=y.filter)!=null?A:null},state:{visible:!0,sortState:null,width:null},headerElement:x,titleElement:ve,resizeStartWidth:null,resizeStartX:null};t(this,T).set(y.field,N),x.dataset.dtField=y.field,x.hidden=!N.state.visible,x.title=N.options.title,be.classList.add("dt-header-content"),x.append(be),le.classList.add("dt-header-title-wrapper"),be.append(le),ve.classList.add("dt-header-title"),ve.innerHTML=N.options.title,le.append(ve);let Ge=document.createElement("div");Ge.classList.add("dt-sort-icon"),le.append(Ge);let Qe=document.createElement("div");Qe.classList.add("dt-resizer"),be.append(Qe),s.append(x),N.state.visible&&(i=!0),this.updateColumnOptions(y.field,N.options),t(this,g).rearrangeable&&(x.draggable=!0),le.addEventListener("click",()=>{x.classList.contains("dt-sortable")&&(N.state.sortState?N.state.sortState.order==="asc"?this.sort(N.field,"desc"):N.state.sortState.order&&this.sort(N.field,null):this.sort(N.field,"asc"))}),x.addEventListener("dragstart",t(this,Me)),x.addEventListener("dragenter",t(this,Fe)),x.addEventListener("dragover",t(this,De)),x.addEventListener("dragleave",t(this,ke)),x.addEventListener("drop",t(this,He)),x.addEventListener("dragend",t(this,Ne)),x.addEventListener("mousedown",t(this,Le)),x.addEventListener("dblclick",t(this,Re))}if(t(this,T).size===0)console.warn("No columns found. At least one column is required.");else if(!i){console.warn("At least a single column must be visible. Showing the first column.");let y=e[0].field;this.showColumn(y)}},_e=function(e,s){let i={index:s++,tokens:{},compareValues:{},sortValues:{}};e._metadata=i;for(let[r,n]of t(this,T)){let c=Y(e,r);typeof n.options.sortValue=="function"?i.sortValues[r]=n.options.sortValue(c):typeof c=="string"?i.sortValues[r]=c.toLocaleLowerCase():i.sortValues[r]=c,typeof c=="string"&&(i.compareValues[r]=c.toLocaleLowerCase()),n.options.searchable&&n.options.tokenize&&c&&(i.tokens[r]=t(this,g).tokenizer(c).map(u=>u.value))}for(let r of t(this,g).extraSearchFields){let n=Y(e,r);typeof n=="string"&&(i.compareValues[r]=n.toLocaleLowerCase())}return e},$e=function(e,s){if(!e||!s)return 0;let i=0,r=0;if(s===e)r=re.MatchWeights.EXACT,i=e.length;else if(s.startsWith(e))r=re.MatchWeights.PREFIX,i=e.length;else if(s.includes(e))r=re.MatchWeights.SUBSTRING,i=e.length;else return 0;let c=1/(1+(s.length-e.length));return i*r*c},Pe=function(e,s,i){return e instanceof RegExp?e.test(s)?1:0:t(this,g).enableSearchScoring?e.quoted||!i?f(this,l,$e).call(this,e.value,s):i.map(r=>f(this,l,$e).call(this,e.value,r)).reduce((r,n)=>r+=n,0):e.quoted||!i?s.includes(e.value)?1:0:i.some(r=>r==e.value)?1:0},Se=function(e,s,i=null){return Array.isArray(s)?s.length===0?!0:s.some(r=>f(this,l,Se).call(this,e,r,i)):Array.isArray(e)?e.length===0?!1:e.some(r=>f(this,l,Se).call(this,r,s,i)):typeof i=="function"?i(e,s):s instanceof RegExp?s.test(String(e)):s===e},ot=function(e,s){if(!t(this,_))return!0;if(typeof t(this,_)=="function")return t(this,_).call(this,e,s);for(let i in t(this,_)){let r=t(this,_)[i],n=Y(e,i);if(typeof r=="function"){if(!r(n))return!1}else{let c=t(this,T).get(i),u=c?c.options.filter:void 0;if(!f(this,l,Se).call(this,n,r,u))return!1}}return!0},G=function(){if(t(this,V)){t(this,E).add("reApplyFilters");return}else t(this,E).delete("reApplyFilters");let s=[...[...t(this,T).values()].filter(n=>n.options.searchable).map(n=>n.field),...t(this,g).extraSearchFields],i=[...t(this,H).values()];m(this,L,i.filter((n,c)=>{if(n._metadata.searchScore=0,!f(this,l,ot).call(this,n,c))return!1;if(!t(this,D))return!0;for(let u of s){let d=Y(n,u),p=n._metadata.compareValues[u],b=n._metadata.tokens[u];if(typeof d!="string"||typeof p!="string")continue;let v=0;if(t(this,D)instanceof RegExp)v=f(this,l,Pe).call(this,t(this,D),d,b);else for(let w of t(this,D))v+=f(this,l,Pe).call(this,w,p,b);n._metadata.searchScore+=v}return n._metadata.searchScore>0})),f(this,l,me).call(this);let r=new CustomEvent("dt.rows.changed",{cancelable:!1,detail:{dataTable:this}});this.dispatchEvent(r)},at=function(e,s,i){var d,p;let r,n;if(!i.state.sortState)return 0;if(((d=i.state.sortState)==null?void 0:d.order)==="asc"?(r=e._metadata.sortValues[i.field],n=s._metadata.sortValues[i.field]):((p=i.state.sortState)==null?void 0:p.order)==="desc"&&(r=s._metadata.sortValues[i.field],n=e._metadata.sortValues[i.field]),typeof i.options.sorter=="function"){let b=i.options.sorter(r,n);if(b!==0)return b}let c=r==null,u=n==null;return c&&!u?-1:u&&!c?1:r<n?-1:r>n?1:0},me=function(){if(t(this,V)){t(this,E).add("reSortRows");return}else t(this,E).delete("reSortRows");let e=[...t(this,T).values()].filter(s=>!s.headerElement.hidden&&s.state.sortState).sort((s,i)=>i.state.sortState.priority-s.state.sortState.priority);t(this,L).sort((s,i)=>{if(t(this,g).enableSearchScoring&&t(this,D)){let r=s._metadata.searchScore||0,n=i._metadata.searchScore||0;if(r>n)return-1;if(r<n)return 1}for(let r of e){let n=f(this,l,at).call(this,s,i,r);if(n!==0)return n}return s._metadata.index-i._metadata.index}),f(this,l,Ce).call(this)},ie=function(){var e,s,i,r,n,c,u;if(t(this,V)){t(this,E).add("updateHeaders");return}else t(this,E).delete("updateHeaders");for(let d of t(this,T).values())(e=d.headerElement.parentElement)==null||e.append(d.headerElement),d.headerElement.hidden=!d.state.visible,d.headerElement.draggable=t(this,g).rearrangeable,d.titleElement.textContent=d.options.title,d.options.resizable?d.headerElement.classList.add("dt-resizeable"):d.headerElement.classList.remove("dt-resizeable"),d.options.sortable?d.headerElement.classList.add("dt-sortable"):d.headerElement.classList.remove("dt-sortable"),d.state.sortState?d.state.sortState.order==="asc"?((r=d.headerElement)==null||r.classList.add("dt-ascending"),(n=d.headerElement)==null||n.classList.remove("dt-descending")):d.state.sortState.order==="desc"&&((c=d.headerElement)==null||c.classList.add("dt-descending"),(u=d.headerElement)==null||u.classList.remove("dt-ascending")):((s=d.headerElement)==null||s.classList.remove("dt-ascending"),(i=d.headerElement)==null||i.classList.remove("dt-descending"))},Ce=function(){if(t(this,V)){t(this,E).add("reRenderTable");return}else t(this,E).delete("reRenderTable");let e=this.rows.length>=t(this,g).virtualScroll;if(e&&!t(this,M)?m(this,M,new(t(this,g)).virtualScrollClass({container:t(this,C),element:t(this,W),generator:s=>f(this,l,Ue).call(this,s)})):!e&&t(this,M)&&(t(this,M).stop(),m(this,M,null)),t(this,W).innerHTML="",t(this,M))try{t(this,M).start(t(this,L).length)}catch(s){s instanceof se&&(console.warn("Failed to start virtual scroll... falling back to standard rendering"),console.warn(s.stack))}else{if(t(this,L).length>it){let i=it.toLocaleString();console.warn(`Virtual scroll disabled with more than ${i} rows... Good luck with that!`)}let s=t(this,L).map((i,r)=>f(this,l,Ue).call(this,r));t(this,W).append(...s)}t(this,H).size===0?this.showMessage(t(this,g).noDataText,"dt-empty"):t(this,L).length===0&&this.showMessage(t(this,g).noMatchText,"dt-empty")},je=function(e,s){var i;if(e.children.length===0){let r=(i=e.textContent)!=null?i:"",n=t(this,g).classes.mark.join(" ");r=r.replace(s,c=>`<mark class="${n}">${c}</mark>`),e.innerHTML=r}else for(let r of e.children)r instanceof HTMLElement&&f(this,l,je).call(this,r,s)},lt=function(e,s,i,r){if(typeof i.options.valueFormatter=="function"&&(s=i.options.valueFormatter(s,r)),s!=null?(e.textContent=s,e.title=String(s)):e.textContent=t(this,g).emptyValuePlaceholder,typeof i.options.elementFormatter=="function"&&i.options.elementFormatter(s,r,e),t(this,g).highlightSearch&&t(this,D)&&i.options.searchable){let n;if(t(this,D)instanceof RegExp)n=t(this,D);else{let c=t(this,D).map(u=>u.value).join("|");n=new RegExp(c,"gi")}f(this,l,je).call(this,e,n)}e.hidden=!i.state.visible},Ue=function(e){let s=t(this,L)[e],i=document.createElement("tr");i.classList.add(...t(this,g).classes.tr),i.dataset.dtIndex=String(s._metadata.index);for(let[r,n]of t(this,T)){let c=Y(s,r),u=document.createElement("td");u.classList.add(...t(this,g).classes.td),u.dataset.dtField=r,f(this,l,lt).call(this,u,c,n,s),i.append(u)}if(typeof t(this,g).rowFormatter=="function")try{t(this,g).rowFormatter(s,i)}catch(r){console.error("Row formatter callback failed with the following error"),console.error(r)}return i},dt=function(){if(!t(this,pe)){m(this,pe,!0);for(let e of t(this,T).values()){let s=e.headerElement.offsetWidth;e.state.width=s,e.headerElement.style.width=`${s}px`}t(this,O).style.width="fit-content"}},xe=function(e,s){f(this,l,dt).call(this),s!==null&&s<0&&(s=0),e.state.width=s;let i;s==null?i="":s<=0?i="0px":i=`${s}px`,e.headerElement.style.width=i},ct=function(){for(;t(this,E).size;)t(this,E).has("reloadData")?(this.loadData(this.data),t(this,E).delete("reloadData")):t(this,E).has("reApplyFilters")?(f(this,l,G).call(this),t(this,E).delete("reApplyFilters")):t(this,E).has("reSortRows")?(f(this,l,me).call(this),t(this,E).delete("reSortRows")):t(this,E).has("reRenderTable")&&(f(this,l,Ce).call(this),t(this,E).delete("reRenderTable")),t(this,E).has("updateHeaders")&&f(this,l,ie).call(this)},Oe=new WeakMap,Le=new WeakMap,Te=new WeakMap,ge=new WeakMap,Re=new WeakMap,Me=new WeakMap,De=new WeakMap,Fe=new WeakMap,ke=new WeakMap,He=new WeakMap,Ne=new WeakMap,re.MatchWeights={EXACT:100,PREFIX:50,SUBSTRING:10};var We=re,it=1e4;var ae,q,S,Q,Xe=class{constructor(o,e,s){h(this,ae);h(this,q);h(this,S,{saveSearch:!0,saveColumnSorting:!0,saveColumnVisibility:!0,saveColumnWidth:!0,saveColumnOrder:!0});h(this,Q,()=>setTimeout(()=>this.saveState(),0));m(this,ae,o),m(this,q,e),m(this,S,$($({},t(this,S)),s)),this.restoreState(),t(this,S).saveSearch&&o.addEventListener("dt.search",t(this,Q)),t(this,S).saveColumnSorting&&o.addEventListener("dt.col.sort",t(this,Q)),t(this,S).saveColumnVisibility&&o.addEventListener("dt.col.visibility",t(this,Q)),t(this,S).saveColumnWidth&&o.addEventListener("dt.col.resize",t(this,Q)),t(this,S).saveColumnOrder&&o.addEventListener("dt.col.reorder",t(this,Q))}saveState(){var s;let o={columns:[]},e=t(this,ae).getState();t(this,S).saveSearch&&(o.searchQuery=e.searchQuery),t(this,S).saveColumnOrder&&(o.columnOrder=e.columnOrder);for(let i of e.columns){let r={field:i.field};t(this,S).saveColumnSorting&&(r.sortState=i.sortState),t(this,S).saveColumnVisibility&&(r.visible=i.visible),t(this,S).saveColumnWidth&&(r.width=i.width),(s=o.columns)==null||s.push(r)}localStorage.setItem(t(this,q),JSON.stringify(o))}restoreState(){let o=localStorage.getItem(t(this,q));if(o)try{let e=JSON.parse(o),s={};if(t(this,S).saveSearch&&(s.searchQuery=e.searchQuery),t(this,S).saveColumnOrder&&(s.columnOrder=e.columnOrder),e.columns){s.columns=[];for(let i of e.columns){let r={field:i.field};t(this,S).saveColumnVisibility&&(r.visible=i.visible),t(this,S).saveColumnWidth&&(r.width=i.width),t(this,S).saveColumnSorting&&(r.sortState=i.sortState),s.columns.push(r)}}t(this,ae).restoreState(s)}catch(e){console.error("Failed to restore DataTable state:",e)}}clearState(){localStorage.removeItem(t(this,q))}};ae=new WeakMap,q=new WeakMap,S=new WeakMap,Q=new WeakMap;return gt(bt);})();
1
+ "use strict";var yatl=(()=>{var be=Object.defineProperty,lt=Object.defineProperties,dt=Object.getOwnPropertyDescriptor,ct=Object.getOwnPropertyDescriptors,ht=Object.getOwnPropertyNames,ge=Object.getOwnPropertySymbols;var ke=Object.prototype.hasOwnProperty,Ge=Object.prototype.propertyIsEnumerable;var Qe=a=>{throw TypeError(a)};var Xe=(a,n,e)=>n in a?be(a,n,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[n]=e,$=(a,n)=>{for(var e in n||(n={}))ke.call(n,e)&&Xe(a,e,n[e]);if(ge)for(var e of ge(n))Ge.call(n,e)&&Xe(a,e,n[e]);return a},He=(a,n)=>lt(a,ct(n));var Be=(a,n)=>{var e={};for(var s in a)ke.call(a,s)&&n.indexOf(s)<0&&(e[s]=a[s]);if(a!=null&&ge)for(var s of ge(a))n.indexOf(s)<0&&Ge.call(a,s)&&(e[s]=a[s]);return e};var ut=(a,n)=>{for(var e in n)be(a,e,{get:n[e],enumerable:!0})},ft=(a,n,e,s)=>{if(n&&typeof n=="object"||typeof n=="function")for(let i of ht(n))!ke.call(a,i)&&i!==e&&be(a,i,{get:()=>n[i],enumerable:!(s=dt(n,i))||s.enumerable});return a};var pt=a=>ft(be({},"__esModule",{value:!0}),a);var Ne=(a,n,e)=>n.has(a)||Qe("Cannot "+e);var t=(a,n,e)=>(Ne(a,n,"read from private field"),e?e.call(a):n.get(a)),f=(a,n,e)=>n.has(a)?Qe("Cannot add the same private member more than once"):n instanceof WeakSet?n.add(a):n.set(a,e),m=(a,n,e,s)=>(Ne(a,n,"write to private field"),s?s.call(a,e):n.set(a,e),e),u=(a,n,e)=>(Ne(a,n,"access private method"),e);var mt={};ut(mt,{DataTable:()=>Ve,LocalStorageAdapter:()=>Pe,VirtualScroll:()=>oe,VirtualScrollError:()=>ee,createRegexTokenizer:()=>ze});var ae,L,D,Z,P,j,le,U,B,de,I,X,q,ce,A,Ie,ve,Je,Q=class Q{constructor({generator:n,container:e,element:s=e,nodePadding:i=10}){f(this,A);f(this,L);f(this,D);f(this,Z);f(this,P,0);f(this,j,0);f(this,le,2);f(this,U,0);f(this,B,!1);f(this,de,0);f(this,I);f(this,X);f(this,q);f(this,ce,()=>{t(this,L).scrollTop!==t(this,de)&&(m(this,de,t(this,L).scrollTop),u(this,A,Ie).call(this))});m(this,L,e),m(this,D,s),m(this,Z,n),m(this,le,i),m(this,I,document.createElement("div")),t(this,I).style.visibility="hidden",m(this,X,document.createElement("div")),t(this,X).style.visibility="hidden",m(this,q,new ResizeObserver(()=>u(this,A,Ie).call(this)))}get rowHeight(){return t(this,j)||u(this,A,Je).call(this),t(this,j)}get started(){return t(this,B)}scrollToIndex(n){if(n<0||n>=t(this,P))throw new RangeError("Index out of bounds.");this.scrollToPx(this.rowHeight*n)}scrollToPx(n){t(this,L).scrollTop=n,u(this,A,ve).call(this)}start(n){t(this,B)||(t(this,L).addEventListener("scroll",t(this,ce)),t(this,q).observe(t(this,L)),m(this,B,!0)),t(this,L).classList.add("dt-virtual-scroll"),m(this,P,n),u(this,A,ve).call(this)}stop(){t(this,U)&&cancelAnimationFrame(t(this,U)),t(this,L).classList.remove("dt-virtual-scroll"),t(this,L).removeEventListener("scroll",t(this,ce)),t(this,q).disconnect(),m(this,B,!1)}};ae=new WeakMap,L=new WeakMap,D=new WeakMap,Z=new WeakMap,P=new WeakMap,j=new WeakMap,le=new WeakMap,U=new WeakMap,B=new WeakMap,de=new WeakMap,I=new WeakMap,X=new WeakMap,q=new WeakMap,ce=new WeakMap,A=new WeakSet,Ie=function(){t(this,U)&&cancelAnimationFrame(t(this,U)),m(this,U,requestAnimationFrame(()=>u(this,A,ve).call(this)))},ve=function(){let n=t(this,L).scrollTop,e=t(this,P),s=this.rowHeight,i=t(this,le);if(!this.started||!e||!s)return;let r=s*e,o=t(this,L).style.height;t(this,L).style.height="100%";let c=t(this,L).offsetHeight;t(this,L).style.height=o;let h=i*2,d=Math.floor(n/s)-i;d<0&&(h+=d),d=Math.max(0,d);let p=Math.ceil(c/s)+h;p=Math.min(e-d,p),d%2===1&&(d--,p++);let b=d*s,v=r-(b+p*s);for(v<0&&(v=0);t(this,I).nextSibling&&t(this,I).nextSibling!==t(this,X);)t(this,D).removeChild(t(this,I).nextSibling);let C=new Array(p).fill(null).map((y,x)=>t(this,Z).call(this,x+d));t(this,I).style.height=b+"px",t(this,X).style.height=v+"px",t(this,I).parentElement?t(this,I).after(...C):t(this,D).append(t(this,I),...C,t(this,X));let K=t(this,D).offsetHeight;!t(Q,ae)&&K<Math.round(r-1)&&(m(Q,ae,!0),console.error("Max element height exceeded. Virtual scroll may not work."))},Je=function(){if(t(this,P)===0){m(this,j,0);return}let n=Math.min(Q.AVERAGE_RENDER_COUNT,t(this,P)),e="";for(let r=0;r<n;++r)e+=t(this,Z).call(this,r).outerHTML;let s=t(this,D).style.visibility,i=t(this,D).innerHTML;if(t(this,D).style.visibility="hidden",t(this,D).innerHTML=e,m(this,j,t(this,D).offsetHeight/n),t(this,D).innerHTML=i,t(this,D).style.visibility=s,t(this,j)<=0)throw new ee(`First ${n} rows had no rendered height. Virtual scroll can't be used.`);t(this,j)*t(this,P)>33554400&&console.warn("Virtual scroll height exceeded maximum known element height.")},f(Q,ae,!1),Q.AVERAGE_RENDER_COUNT=1e3;var oe=Q,ee=class extends Error{constructor(n){super(n)}};var F=a=>{if(typeof a=="string"&&a!=="")return a.split(" ");if(Array.isArray(a))return a;if(!a)return[];throw new TypeError("classes must be string or array of strings")},Ye=a=>a.replace(/_/g," ").replace(/([a-z])([A-Z])/g,"$1 $2").replace(/\b\w/g,n=>n.toUpperCase()),ze=(a="\\S+")=>{let n=new RegExp(`"[^"]*"|${a}`,"g");return e=>(e.match(n)||[]).map(i=>(i=i.toLocaleLowerCase().trim(),i.startsWith('"')&&i.endsWith('"')?{value:i.slice(1,-1),quoted:!0}:{value:i,quoted:!1}))};function Ze(a){return typeof a=="boolean"?a?1:Number.MAX_SAFE_INTEGER:a}function qe(a,n={}){return{scroller:[...F(n.scroller),...F(a.scroller)],thead:[...F(n.thead),...F(a.thead)],tbody:[...F(n.tbody),...F(a.tbody)],tr:[...F(n.tr),...F(a.tr)],th:[...F(n.th),...F(a.th)],td:[...F(n.td),...F(a.td)],mark:[...F(n.mark),...F(a.mark)]}}function J(a,n){let e=n.split("."),s=a;for(let i of e)if(s&&typeof s=="object")s=s[i];else return;return s}var S,Y,W,w,ie,T,k,O,re,M,_,R,z,ue,g,V,E,l,tt,st,Ke,Ae,We,ye,it,G,rt,he,te,Ee,_e,nt,$e,ot,we,at,Se,Ce,fe,pe,xe,Oe,Le,Re,Me,De,Fe,se=class se extends EventTarget{constructor(e,s,i={}){super();f(this,l);this.DEFAULT_OPTIONS={virtualScroll:1e3,highlightSearch:!0,tokenizeSearch:!1,enableSearchScoring:!1,rearrangeable:!0,extraSearchFields:[],emptyValuePlaceholder:"-",noDataText:"No records found",noMatchText:"No matching records found",classes:{scroller:["dt-scroller"],thead:["dt-headers"],tbody:[],tr:[],th:[],td:[],mark:[]},rowFormatter:null,tokenizer:ze(),virtualScrollClass:oe};f(this,S);f(this,Y);f(this,W);f(this,w);f(this,ie,null);f(this,T,new Map);f(this,k,new Map);f(this,O,[]);f(this,re,null);f(this,M,null);f(this,_,null);f(this,R,null);f(this,z,null);f(this,ue,!1);f(this,g,$({},this.DEFAULT_OPTIONS));f(this,V,!0);f(this,E,new Set);f(this,Se,e=>{var o;if((o=window.getSelection())!=null&&o.toString())return;let s,i,r;if(e.target instanceof HTMLTableCellElement?(i=e.target,s=i.parentElement,r=i.dataset.dtField):e.target instanceof HTMLTableRowElement&&(s=e.target),s&&r){let c=parseInt(s.dataset.dtIndex||"");if(!isNaN(c)){let h=t(this,O).find(d=>d._metadata.index===c);if(h){let d=new CustomEvent("dt.row.clicked",{cancelable:!1,detail:{row:h,index:c,column:r,originalEvent:e}});this.dispatchEvent(d)}}}});f(this,Ce,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,i=t(this,T).get(s);i&&(m(this,z,i),i.resizeStartX=e.clientX,i.resizeStartWidth=i.headerElement.offsetWidth,document.addEventListener("mousemove",t(this,fe)),document.addEventListener("mouseup",t(this,pe)))});f(this,fe,e=>{if(!t(this,z))return;e.stopImmediatePropagation(),e.preventDefault();let s=e.clientX-t(this,z).resizeStartX,i=t(this,z).resizeStartWidth+s;u(this,l,we).call(this,t(this,z),i)});f(this,pe,e=>{if(!t(this,z))return;e.stopImmediatePropagation(),e.preventDefault(),document.removeEventListener("mousemove",t(this,fe)),document.removeEventListener("mouseup",t(this,pe));let s=new CustomEvent("dt.col.resize",{cancelable:!1,detail:{column:t(this,z).field,width:t(this,z).headerElement.offsetWidth}});this.dispatchEvent(s),m(this,z,null)});f(this,xe,e=>{var o;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,i=t(this,T).get(s);if(!i)return;let r=i.titleElement.scrollWidth;if(t(this,O).length>0){t(this,ie)||m(this,ie,document.createElement("canvas").getContext("2d"));let c=t(this,ie),h=t(this,W).querySelector("td"),d=0;if(h&&c){let p=window.getComputedStyle(h);c.font=`${p.fontWeight} ${p.fontSize} ${p.fontFamily}`,d=parseFloat(p.paddingLeft)+parseFloat(p.paddingRight)}for(let p of t(this,O)){let b=J(p,s);typeof i.options.valueFormatter=="function"&&(b=i.options.valueFormatter(b,p));let v=b==null?"":String(b),C=(o=c==null?void 0:c.measureText(v).width)!=null?o:0;r=Math.max(r,C+d)}}u(this,l,we).call(this,i,r)});f(this,Oe,e=>{let i=e.target.dataset.dtField;e.dataTransfer&&i&&(e.dataTransfer.effectAllowed="move",e.dataTransfer.setData("text/plain",i))});f(this,Le,e=>(e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect="move"),!1));f(this,Re,e=>{e.target.classList.add("dt-drag-over")});f(this,Me,e=>{e.target.classList.remove("dt-drag-over")});f(this,De,e=>{var d;let s=(d=e.dataTransfer)==null?void 0:d.getData("text/plain"),r=e.currentTarget.dataset.dtField;if(!s||!r)return;e.preventDefault(),e.stopPropagation();let o=[...t(this,T).values()],c=o.findIndex(p=>p.field===s),h=o.findIndex(p=>p.field===r);if(c>-1&&h>-1){let[p]=o.splice(c,1),b=t(this,T).get(r);if(!b)return;o.splice(h,0,p);let v=o.map(K=>K.field),C=new CustomEvent("dt.col.reorder",{cancelable:!0,detail:{draggedColumn:p.field,dropColumn:b.field,order:v}});if(!this.dispatchEvent(C))return;this.setColumnOrder(v)}});f(this,Fe,()=>{let e=document.querySelectorAll(".dt-drag-over");for(let s of e)s.classList.remove("dt-drag-over")});this.TABLE_OPTION_CONFIGS={virtualScroll:{effect:"reRenderTable",handler:e=>Ze(e)},highlightSearch:{effect:"reRenderTable"},tokenizeSearch:{effect:"reloadData",handler:e=>(this.search(t(this,re)),e)},enableSearchScoring:{effect:"reApplyFilters"},rearrangeable:{effect:"updateHeaders"},extraSearchFields:{effect:"reloadData"},emptyValuePlaceholder:{effect:"reRenderTable"},noDataText:{effect:"reRenderTable"},noMatchText:{effect:"reRenderTable"},classes:{effect:"reRenderTable",handler:e=>{let s=qe(t(this,g).classes,e);t(this,w).className=s.scroller.join(" "),t(this,Y).className=s.thead.join(" "),t(this,W).className=s.tbody.join(" ");for(let i of t(this,T).values())i.headerElement.className=s.th.join(" ");return s}},rowFormatter:{effect:"reRenderTable"},tokenizer:{effect:"reloadData"},virtualScrollClass:{effect:"reRenderTable",handler:e=>{var s;return(s=t(this,R))==null||s.stop(),m(this,R,null),e}}};this.COLUMN_OPTION_CONFIGS={title:{effect:"updateHeaders"},searchable:{effect:"reApplyFilters"},sortable:{effect:"updateHeaders"},resizable:{effect:"updateHeaders"},tokenize:{effect:"reloadData"},valueFormatter:{effect:"reRenderTable"},elementFormatter:{effect:"reRenderTable"},sorter:{effect:"reSortRows"},sortValue:{effect:"reloadData"},filter:{effect:"reApplyFilters"}};let v=i,{data:r,virtualScrollClass:o}=v,c=Be(v,["data","virtualScrollClass"]);if(o!==void 0&&(t(this,g).virtualScrollClass=o),typeof e=="string"){let C=document.querySelector(e);if(!C)throw new SyntaxError(`Failed to find table using selector ${e}`);m(this,S,C)}else m(this,S,e);if(!(t(this,S)instanceof HTMLTableElement))throw new TypeError("Invalid table element type. Must be HTMLTableElement");let{scroller:h,thead:d,headerRow:p,tbody:b}=u(this,l,tt).call(this);m(this,w,h),m(this,Y,d),m(this,W,b),u(this,l,st).call(this,s,p),this.updateTableOptions($($({},t(this,g)),c)),m(this,V,!1),t(this,E).clear(),this.loadData(r!=null?r:[])}get tableOptions(){return structuredClone(t(this,g))}get rows(){return[...t(this,O)]}get data(){return[...t(this,k).values()]}get table(){return t(this,S)}getState(){let e=[...t(this,T).values()];return{searchQuery:t(this,re),filters:t(this,_),scrollPosition:{top:t(this,w).scrollTop,left:t(this,w).scrollLeft},columnOrder:e.map(s=>s.field),columns:e.map(s=>({field:s.field,visible:s.state.visible,sortState:s.state.sortState,width:s.state.width}))}}restoreState(e){this.withoutUpdates(()=>{if("searchQuery"in e&&e.searchQuery!==void 0&&this.search(e.searchQuery),"filters"in e&&e.filters!==void 0&&(m(this,_,e.filters),this.filter(e.filters)),"scrollPosition"in e&&e.scrollPosition!==void 0&&(t(this,w).scrollTop=e.scrollPosition.top),"columnOrder"in e&&e.columnOrder!==void 0&&this.setColumnOrder(e.columnOrder),"columns"in e&&e.columns!==void 0)for(let s of e.columns){let i=t(this,T).get(s.field);if(!i){console.warn(`Attempting to restore state for non-existent column ${s.field}`);continue}"visible"in s&&s.visible!==void 0&&(i.state.visible=s.visible),"sortState"in s&&s.sortState!==void 0&&(i.state.sortState=s.sortState),"width"in s&&s.width!==void 0&&u(this,l,we).call(this,i,s.width)}})}updateTableOptions(e){this.withoutUpdates(()=>{for(let s in e){let i=s,r=e[i],o=this.TABLE_OPTION_CONFIGS[i];if(!o)continue;t(this,E).add(o.effect);let c=o.handler,h=c?c(r):r;t(this,g)[i]=h}t(this,g).enableSearchScoring&&!t(this,g).tokenizeSearch&&(t(this,g).enableSearchScoring=!1,console.warn("Search scoring enabled with tokenization disabled... Ignoring"))})}getColumnOptions(e){if(e){let i=t(this,T).get(e);if(!i)throw new Error(`Cannot get options for non-existent column "${e}"`);return He($({},i.options),{field:i.field})}return[...t(this,T).values()].map(i=>He($({},i.options),{field:i.field}))}updateColumnOptions(e,s){let i=t(this,T).get(e);if(!i)throw new Error(`Cannot update options for non-existent column "${e}"`);this.withoutUpdates(()=>{for(let r in s){let o=r,c=s[o],h=this.COLUMN_OPTION_CONFIGS[o];if(!h)continue;t(this,E).add(h.effect);let d=h.handler,p=d?d(c):c;i.options[o]=p}})}loadData(e,s={}){let i,r;s.keepScroll&&(i=t(this,w).scrollTop,r=t(this,w).scrollLeft),s.append||(t(this,k).clear(),m(this,O,[]));let o=t(this,k).size;for(let c of e){let h=u(this,l,Ke).call(this,c,o);t(this,k).set(o,h),o++}u(this,l,te).call(this),u(this,l,G).call(this),i&&r&&(t(this,w).scrollTop=i,t(this,w).scrollLeft=r)}showMessage(e,...s){let i=t(this,T).size;t(this,W).innerHTML=`<tr class="${s.join(" ")}"><td colSpan=${i}>${e}</td></tr>`}clearMessage(){u(this,l,Ee).call(this)}search(e){e!=null||(e=null);let s=new CustomEvent("dt.search",{cancelable:!0,detail:{query:e!=null?e:null}});this.dispatchEvent(s)&&(m(this,re,e),e===""&&(e=null),typeof e=="string"?t(this,g).tokenizeSearch?m(this,M,t(this,g).tokenizer(e)):m(this,M,[{value:e.toLocaleLowerCase(),quoted:!0}]):m(this,M,e),u(this,l,G).call(this))}filter(e){m(this,_,e!=null?e:null),u(this,l,G).call(this)}sort(e,s){var h;let i=t(this,T).get(e);if(!i)throw new Error(`Cannot get options for non-existent column "${e}"`);if(s===((h=i.state.sortState)==null?void 0:h.order))return;let r=new CustomEvent("dt.col.sort",{cancelable:!0,detail:{column:i.field,order:s}});if(!this.dispatchEvent(r))return;if(s&&!i.state.sortState){let d=[...t(this,T).values()].map(v=>{var C;return(C=v.state.sortState)==null?void 0:C.priority}).filter(v=>v!==void 0),p=t(this,T).size+1,b=Math.min(p,...d)-1;i.state.sortState={order:s,priority:b}}else s&&i.state.sortState?i.state.sortState.order=s:i.state.sortState=null;let o=t(this,w).scrollTop,c=t(this,w).scrollLeft;u(this,l,te).call(this),u(this,l,he).call(this),t(this,w).scrollTop=o,t(this,w).scrollLeft=c}setColumnVisibility(e,s){let i=t(this,T).get(e);if(!i)throw new Error(`Cannot get options for non-existent column "${e}"`);if(i.state.visible===s)return;let r=new CustomEvent("dt.col.visibility",{cancelable:!0,detail:{column:i.field,visible:s}});this.dispatchEvent(r)&&(i.state.visible=s,u(this,l,te).call(this),u(this,l,he).call(this))}showColumn(e){this.setColumnVisibility(e,!0)}hideColumn(e){this.setColumnVisibility(e,!1)}export(e,s=!1){let r=[...(s?t(this,k):t(this,O)).values()],o=[...t(this,T).values()].filter(b=>s||b.state.visible).map(b=>`"${b.options.title}"`).join(","),c=r.map(b=>{let v=[];for(let C of t(this,T).keys()){let K=t(this,T).get(C);if(!K)continue;let y=b[C];(s||!K.headerElement.hidden)&&(typeof K.options.valueFormatter=="function"&&(y=K.options.valueFormatter(y,b)),y=String(y).replace('"','""'),v.push(`"${y}"`))}return v.join(",")}).join(`
2
+ `),h=o+`
3
+ `+c,d=new Blob([h],{type:"text/csv;charset=utf-8,"}),p=document.createElement("a");p.style.display="none",p.href=URL.createObjectURL(d),p.download=`${e}.csv`,document.body.append(p),p.click(),p.remove()}scrollToRow(e){var r;let i=(r=e._metadata)==null?void 0:r.index;if(typeof i=="number")this.scrollToOriginalIndex(i);else throw new Error("Row not in table")}scrollToOriginalIndex(e){let s=t(this,k).get(e);if(s){let i=t(this,O).indexOf(s);if(i>=0){this.scrollToFilteredIndex(i);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,O)[e];if(!s)throw new RangeError(`Row index ${e} out of range`);if(t(this,R))t(this,R).scrollToIndex(e);else{let i=t(this,W).querySelector(`tr[data-dt-index="${s._metadata.index}"]`);if(i){i.scrollIntoView(!0);let r=parseFloat(getComputedStyle(t(this,Y)).height);t(this,w).scrollTop-=r}}}scrollToPx(e){if(t(this,R))t(this,R).scrollToPx(e);else{let s=parseFloat(getComputedStyle(t(this,Y)).height);t(this,w).scrollTop=e-s}}setColumnOrder(e){if(!Array.isArray(e))throw new TypeError("fields must be an array of field names");let s=new Map;for(let i of e){let r=t(this,T).get(i);r&&s.set(i,r)}for(let[i,r]of t(this,T))s.has(i)||s.set(i,r);m(this,T,s),this.refresh()}refresh(){u(this,l,te).call(this),u(this,l,G).call(this)}indexOf(e,s){let r=[...t(this,k).values()].find(o=>{if(e in o)return o[e]===s});return r?r._metadata.index:-1}updateRow(e,s){let i=t(this,k).get(e);i&&(Object.assign(i,s),u(this,l,Ke).call(this,i,e),u(this,l,G).call(this))}deleteRow(e){t(this,k).delete(e),u(this,l,G).call(this)}withoutUpdates(e){let s=t(this,V);m(this,V,!0);try{e(this)}finally{m(this,V,s),t(this,V)||u(this,l,at).call(this)}}destroy(){var e,s;(e=t(this,R))==null||e.stop(),t(this,S).innerHTML="",t(this,S).classList.remove("data-table"),(s=t(this,w).parentElement)==null||s.insertBefore(t(this,S),t(this,w)),t(this,w).remove()}addEventListener(e,s,i){super.addEventListener(e,s,i)}};S=new WeakMap,Y=new WeakMap,W=new WeakMap,w=new WeakMap,ie=new WeakMap,T=new WeakMap,k=new WeakMap,O=new WeakMap,re=new WeakMap,M=new WeakMap,_=new WeakMap,R=new WeakMap,z=new WeakMap,ue=new WeakMap,g=new WeakMap,V=new WeakMap,E=new WeakMap,l=new WeakSet,tt=function(){var o;t(this,S).classList.add("data-table");let e=document.createElement("div");t(this,S).style.height!==""&&(e.style.height=t(this,S).style.height,t(this,S).style.height="");let s=document.createElement("thead"),i=document.createElement("tr"),r=document.createElement("tbody");return r.addEventListener("click",t(this,Se)),t(this,S).innerHTML="",s.append(i),t(this,S).append(s),t(this,S).append(r),(o=t(this,S).parentNode)==null||o.insertBefore(e,t(this,S)),e.append(t(this,S)),{scroller:e,thead:s,headerRow:i,tbody:r}},st=function(e,s){var r,o,c,h,d,p,b,v,C,K;t(this,T).clear();let i=!1;for(let y of e){let x=document.createElement("th"),me=document.createElement("div"),ne=document.createElement("div"),Te=document.createElement("span"),N={field:y.field,options:{title:(r=y.title)!=null?r:Ye(y.field),sortable:(o=y.sortable)!=null?o:!0,searchable:(c=y.searchable)!=null?c:!1,tokenize:(h=y.tokenize)!=null?h:!1,resizable:(d=y.resizable)!=null?d:!0,valueFormatter:(p=y.valueFormatter)!=null?p:null,elementFormatter:(b=y.elementFormatter)!=null?b:null,sorter:(v=y.sorter)!=null?v:null,sortValue:(C=y.sortValue)!=null?C:null,filter:(K=y.filter)!=null?K:null},state:{visible:!0,sortState:null,width:null},headerElement:x,titleElement:Te,resizeStartWidth:null,resizeStartX:null};t(this,T).set(y.field,N),x.dataset.dtField=y.field,x.hidden=!N.state.visible,x.title=N.options.title,me.classList.add("dt-header-content"),x.append(me),ne.classList.add("dt-header-title-wrapper"),me.append(ne),Te.classList.add("dt-header-title"),Te.innerHTML=N.options.title,ne.append(Te);let je=document.createElement("div");je.classList.add("dt-sort-icon"),ne.append(je);let Ue=document.createElement("div");Ue.classList.add("dt-resizer"),me.append(Ue),s.append(x),N.state.visible&&(i=!0),this.updateColumnOptions(y.field,N.options),t(this,g).rearrangeable&&(x.draggable=!0),ne.addEventListener("click",()=>{x.classList.contains("dt-sortable")&&(N.state.sortState?N.state.sortState.order==="asc"?this.sort(N.field,"desc"):N.state.sortState.order&&this.sort(N.field,null):this.sort(N.field,"asc"))}),x.addEventListener("dragstart",t(this,Oe)),x.addEventListener("dragenter",t(this,Re)),x.addEventListener("dragover",t(this,Le)),x.addEventListener("dragleave",t(this,Me)),x.addEventListener("drop",t(this,De)),x.addEventListener("dragend",t(this,Fe)),x.addEventListener("mousedown",t(this,Ce)),x.addEventListener("dblclick",t(this,xe))}if(t(this,T).size===0)console.warn("No columns found. At least one column is required.");else if(!i){console.warn("At least a single column must be visible. Showing the first column.");let y=e[0].field;this.showColumn(y)}},Ke=function(e,s){let i={index:s++,tokens:{},compareValues:{},sortValues:{}};e._metadata=i;for(let[r,o]of t(this,T)){let c=J(e,r);typeof o.options.sortValue=="function"?i.sortValues[r]=o.options.sortValue(c):typeof c=="string"?i.sortValues[r]=c.toLocaleLowerCase():i.sortValues[r]=c,typeof c=="string"&&(i.compareValues[r]=c.toLocaleLowerCase()),o.options.searchable&&o.options.tokenize&&c&&(i.tokens[r]=t(this,g).tokenizer(c).map(h=>h.value))}for(let r of t(this,g).extraSearchFields){let o=J(e,r);typeof o=="string"&&(i.compareValues[r]=o.toLocaleLowerCase())}return e},Ae=function(e,s){if(!e||!s)return 0;let i=0,r=0;if(s===e)r=se.MatchWeights.EXACT,i=e.length;else if(s.startsWith(e))r=se.MatchWeights.PREFIX,i=e.length;else if(s.includes(e))r=se.MatchWeights.SUBSTRING,i=e.length;else return 0;let c=1/(1+(s.length-e.length));return i*r*c},We=function(e,s,i){return e instanceof RegExp?e.test(s)?1:0:t(this,g).enableSearchScoring?e.quoted||!i?u(this,l,Ae).call(this,e.value,s):i.map(r=>u(this,l,Ae).call(this,e.value,r)).reduce((r,o)=>r+=o,0):e.quoted||!i?s.includes(e.value)?1:0:i.some(r=>r==e.value)?1:0},ye=function(e,s,i=null){return Array.isArray(s)?s.length===0?!0:s.some(r=>u(this,l,ye).call(this,e,r,i)):Array.isArray(e)?e.length===0?!1:e.some(r=>u(this,l,ye).call(this,r,s,i)):typeof i=="function"?i(e,s):s instanceof RegExp?s.test(String(e)):s===e},it=function(e,s){if(!t(this,_))return!0;if(typeof t(this,_)=="function")return t(this,_).call(this,e,s);for(let i in t(this,_)){let r=t(this,_)[i],o=J(e,i);if(typeof r=="function"){if(!r(o))return!1}else{let c=t(this,T).get(i),h=c?c.options.filter:void 0;if(!u(this,l,ye).call(this,o,r,h))return!1}}return!0},G=function(){if(t(this,V)){t(this,E).add("reApplyFilters");return}else t(this,E).delete("reApplyFilters");let s=[...[...t(this,T).values()].filter(o=>o.options.searchable).map(o=>o.field),...t(this,g).extraSearchFields],i=[...t(this,k).values()];m(this,O,i.filter((o,c)=>{if(o._metadata.searchScore=0,!u(this,l,it).call(this,o,c))return!1;if(!t(this,M))return!0;for(let h of s){let d=J(o,h),p=o._metadata.compareValues[h],b=o._metadata.tokens[h];if(typeof d!="string"||typeof p!="string")continue;let v=0;if(t(this,M)instanceof RegExp)v=u(this,l,We).call(this,t(this,M),d,b);else for(let C of t(this,M))v+=u(this,l,We).call(this,C,p,b);o._metadata.searchScore+=v}return o._metadata.searchScore>0})),u(this,l,he).call(this);let r=new CustomEvent("dt.rows.changed",{cancelable:!1,detail:{dataTable:this}});this.dispatchEvent(r)},rt=function(e,s,i){var d,p;let r,o;if(!i.state.sortState)return 0;if(((d=i.state.sortState)==null?void 0:d.order)==="asc"?(r=e._metadata.sortValues[i.field],o=s._metadata.sortValues[i.field]):((p=i.state.sortState)==null?void 0:p.order)==="desc"&&(r=s._metadata.sortValues[i.field],o=e._metadata.sortValues[i.field]),typeof i.options.sorter=="function"){let b=i.options.sorter(r,o);if(b!==0)return b}let c=r==null,h=o==null;return c&&!h?-1:h&&!c?1:r<o?-1:r>o?1:0},he=function(){if(t(this,V)){t(this,E).add("reSortRows");return}else t(this,E).delete("reSortRows");let e=[...t(this,T).values()].filter(s=>!s.headerElement.hidden&&s.state.sortState).sort((s,i)=>i.state.sortState.priority-s.state.sortState.priority);t(this,O).sort((s,i)=>{if(t(this,g).enableSearchScoring&&t(this,M)){let r=s._metadata.searchScore||0,o=i._metadata.searchScore||0;if(r>o)return-1;if(r<o)return 1}for(let r of e){let o=u(this,l,rt).call(this,s,i,r);if(o!==0)return o}return s._metadata.index-i._metadata.index}),u(this,l,Ee).call(this)},te=function(){var e,s,i,r,o,c,h;if(t(this,V)){t(this,E).add("updateHeaders");return}else t(this,E).delete("updateHeaders");for(let d of t(this,T).values())(e=d.headerElement.parentElement)==null||e.append(d.headerElement),d.headerElement.hidden=!d.state.visible,d.headerElement.draggable=t(this,g).rearrangeable,d.titleElement.textContent=d.options.title,d.options.resizable?d.headerElement.classList.add("dt-resizeable"):d.headerElement.classList.remove("dt-resizeable"),d.options.sortable?d.headerElement.classList.add("dt-sortable"):d.headerElement.classList.remove("dt-sortable"),d.state.sortState?d.state.sortState.order==="asc"?((r=d.headerElement)==null||r.classList.add("dt-ascending"),(o=d.headerElement)==null||o.classList.remove("dt-descending")):d.state.sortState.order==="desc"&&((c=d.headerElement)==null||c.classList.add("dt-descending"),(h=d.headerElement)==null||h.classList.remove("dt-ascending")):((s=d.headerElement)==null||s.classList.remove("dt-ascending"),(i=d.headerElement)==null||i.classList.remove("dt-descending"))},Ee=function(){if(t(this,V)){t(this,E).add("reRenderTable");return}else t(this,E).delete("reRenderTable");let e=this.rows.length>=t(this,g).virtualScroll;if(e&&!t(this,R)?m(this,R,new(t(this,g)).virtualScrollClass({container:t(this,w),element:t(this,W),generator:s=>u(this,l,$e).call(this,s)})):!e&&t(this,R)&&(t(this,R).stop(),m(this,R,null)),t(this,W).innerHTML="",t(this,R))try{t(this,R).start(t(this,O).length)}catch(s){s instanceof ee&&(console.warn("Failed to start virtual scroll... falling back to standard rendering"),console.warn(s.stack))}else{if(t(this,O).length>et){let i=et.toLocaleString();console.warn(`Virtual scroll disabled with more than ${i} rows... Good luck with that!`)}let s=t(this,O).map((i,r)=>u(this,l,$e).call(this,r));t(this,W).append(...s)}t(this,k).size===0?this.showMessage(t(this,g).noDataText,"dt-empty"):t(this,O).length===0&&this.showMessage(t(this,g).noMatchText,"dt-empty")},_e=function(e,s){var i;if(e.children.length===0){let r=(i=e.textContent)!=null?i:"",o=t(this,g).classes.mark.join(" ");r=r.replace(s,c=>`<mark class="${o}">${c}</mark>`),e.innerHTML=r}else for(let r of e.children)r instanceof HTMLElement&&u(this,l,_e).call(this,r,s)},nt=function(e,s,i,r){if(typeof i.options.valueFormatter=="function"&&(s=i.options.valueFormatter(s,r)),s!=null?(e.textContent=s,e.title=String(s)):e.textContent=t(this,g).emptyValuePlaceholder,typeof i.options.elementFormatter=="function"&&i.options.elementFormatter(s,r,e),t(this,g).highlightSearch&&t(this,M)&&i.options.searchable){let o;if(t(this,M)instanceof RegExp)o=t(this,M);else{let c=t(this,M).map(h=>h.value).join("|");o=new RegExp(c,"gi")}u(this,l,_e).call(this,e,o)}e.hidden=!i.state.visible},$e=function(e){let s=t(this,O)[e],i=document.createElement("tr");i.classList.add(...t(this,g).classes.tr),i.dataset.dtIndex=String(s._metadata.index);for(let[r,o]of t(this,T)){let c=J(s,r),h=document.createElement("td");h.classList.add(...t(this,g).classes.td),h.dataset.dtField=r,u(this,l,nt).call(this,h,c,o,s),i.append(h)}if(typeof t(this,g).rowFormatter=="function")try{t(this,g).rowFormatter(s,i)}catch(r){console.error("Row formatter callback failed with the following error"),console.error(r)}return i},ot=function(){if(!t(this,ue)){m(this,ue,!0);for(let e of t(this,T).values()){let s=e.headerElement.offsetWidth;e.state.width=s,e.headerElement.style.width=`${s}px`}t(this,S).style.width="fit-content"}},we=function(e,s){u(this,l,ot).call(this),s!==null&&s<0&&(s=0),e.state.width=s;let i;s==null?i="":s<=0?i="0px":i=`${s}px`,e.headerElement.style.width=i},at=function(){for(;t(this,E).size;)t(this,E).has("reloadData")?(this.loadData(this.data),t(this,E).delete("reloadData")):t(this,E).has("reApplyFilters")?(u(this,l,G).call(this),t(this,E).delete("reApplyFilters")):t(this,E).has("reSortRows")?(u(this,l,he).call(this),t(this,E).delete("reSortRows")):t(this,E).has("reRenderTable")&&(u(this,l,Ee).call(this),t(this,E).delete("reRenderTable")),t(this,E).has("updateHeaders")&&u(this,l,te).call(this)},Se=new WeakMap,Ce=new WeakMap,fe=new WeakMap,pe=new WeakMap,xe=new WeakMap,Oe=new WeakMap,Le=new WeakMap,Re=new WeakMap,Me=new WeakMap,De=new WeakMap,Fe=new WeakMap,se.MatchWeights={EXACT:100,PREFIX:50,SUBSTRING:10};var Ve=se,et=1e4;var H,Pe=class{constructor(n,e,s){this.storageKey=n;this.dataTable=e;this.options={saveSearch:!0,saveColumnSorting:!0,saveColumnVisibility:!0,saveColumnWidth:!0,saveColumnOrder:!0};f(this,H,()=>setTimeout(()=>this.saveState(),0));this.options=$($({},this.options),s),e&&this.setDataTable(e)}setDataTable(n){this.destroy(),this.dataTable=n,this.restoreState(),this.options.saveSearch&&n.addEventListener("dt.search",t(this,H)),this.options.saveColumnSorting&&n.addEventListener("dt.col.sort",t(this,H)),this.options.saveColumnVisibility&&n.addEventListener("dt.col.visibility",t(this,H)),this.options.saveColumnWidth&&n.addEventListener("dt.col.resize",t(this,H)),this.options.saveColumnOrder&&n.addEventListener("dt.col.reorder",t(this,H))}destroy(){var n,e,s,i,r;(n=this.dataTable)==null||n.addEventListener("dt.search",t(this,H)),(e=this.dataTable)==null||e.addEventListener("dt.col.sort",t(this,H)),(s=this.dataTable)==null||s.addEventListener("dt.col.visibility",t(this,H)),(i=this.dataTable)==null||i.addEventListener("dt.col.resize",t(this,H)),(r=this.dataTable)==null||r.addEventListener("dt.col.reorder",t(this,H)),this.dataTable=void 0}saveState(){var s;if(!this.dataTable)return;let n={columns:[]},e=this.dataTable.getState();this.options.saveSearch&&(n.searchQuery=e.searchQuery),this.options.saveColumnOrder&&(n.columnOrder=e.columnOrder);for(let i of e.columns){let r={field:i.field};this.options.saveColumnSorting&&(r.sortState=i.sortState),this.options.saveColumnVisibility&&(r.visible=i.visible),this.options.saveColumnWidth&&(r.width=i.width),(s=n.columns)==null||s.push(r)}localStorage.setItem(this.storageKey,JSON.stringify(n))}restoreState(){if(!this.dataTable)return;let n=localStorage.getItem(this.storageKey);if(n)try{let e=JSON.parse(n),s={};if(this.options.saveSearch&&(s.searchQuery=e.searchQuery),this.options.saveColumnOrder&&(s.columnOrder=e.columnOrder),e.columns){s.columns=[];for(let i of e.columns){let r={field:i.field};this.options.saveColumnVisibility&&(r.visible=i.visible),this.options.saveColumnWidth&&(r.width=i.width),this.options.saveColumnSorting&&(r.sortState=i.sortState),s.columns.push(r)}}this.dataTable.restoreState(s)}catch(e){console.error("Failed to restore DataTable state:",e)}}clearState(){localStorage.removeItem(this.storageKey)}};H=new WeakMap;return pt(mt);})();
4
4
  //# sourceMappingURL=data-table.global.js.map