@timlassiter11/yatl 0.3.10 → 0.3.12

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.
@@ -1,6 +1,7 @@
1
- type NestedKeyOf<ObjectType extends object> = {
2
- [Key in keyof ObjectType & (string | number)]: ObjectType[Key] extends object ? `${Key}` | `${Key}.${NestedKeyOf<ObjectType[Key]>}` : `${Key}`;
3
- }[keyof ObjectType & (string | number)];
1
+ type NestedKeyOf<ObjectType> = ObjectType extends object ? {
2
+ [Key in keyof ObjectType & (string | number)]: ObjectType[Key] extends any[] ? `${Key}` : ObjectType[Key] extends object ? // If it's a non-array object, recurse as before.
3
+ `${Key}` | `${Key}.${NestedKeyOf<ObjectType[Key]>}` : `${Key}`;
4
+ }[keyof ObjectType & (string | number)] : never;
4
5
  declare const createRegexTokenizer: (exp?: string) => (value: string) => {
5
6
  value: string;
6
7
  quoted: boolean;
@@ -74,7 +75,7 @@ type SortValueCallback = (value: any) => number | string;
74
75
  * A filter object containing keys for the fields to be filtered,
75
76
  * and the values used to compare against.
76
77
  */
77
- type Filters<T extends object> = Partial<{
78
+ type Filters<T> = Partial<{
78
79
  [K in NestedKeyOf<T>]: any;
79
80
  }>;
80
81
  /**
@@ -128,7 +129,7 @@ interface SortState {
128
129
  /**
129
130
  * Column options for the table.
130
131
  */
131
- interface ColumnOptions<T extends object> {
132
+ interface ColumnOptions<T> {
132
133
  /**
133
134
  * The field name in the data object.
134
135
  */
@@ -180,7 +181,7 @@ interface ColumnOptions<T extends object> {
180
181
  /**
181
182
  * Represents the current state of a column.
182
183
  */
183
- interface ColumnState<T extends object> {
184
+ interface ColumnState<T> {
184
185
  /**
185
186
  * The unique field name of the column.
186
187
  */
@@ -234,7 +235,7 @@ interface TableClasses {
234
235
  /**
235
236
  * Options for configuring the table.
236
237
  */
237
- interface TableOptions<T extends object> {
238
+ interface TableOptions<T> {
238
239
  /**
239
240
  * Configures virtual scrolling.
240
241
  */
@@ -293,7 +294,7 @@ interface TableOptions<T extends object> {
293
294
  /**
294
295
  * Represents the current state of the table
295
296
  */
296
- interface TableState<T extends object> {
297
+ interface TableState<T> {
297
298
  /**
298
299
  * A list of {@link ColumnState}s representing all of the columns in the table.
299
300
  */
@@ -318,12 +319,12 @@ interface TableState<T extends object> {
318
319
  */
319
320
  columnOrder: NestedKeyOf<T>[];
320
321
  }
321
- type TableInitOptions<T extends object> = TableOptions<T> & {
322
+ type TableInitOptions<T> = TableOptions<T> & {
322
323
  data?: T[];
323
324
  };
324
- type ColumnInitOptions<T extends object> = ColumnOptions<T> & Partial<ColumnState<T>>;
325
- type RestorableColumnState<T extends object> = Partial<Omit<ColumnState<T>, 'field'>> & Pick<ColumnState<T>, 'field'>;
326
- type RestorableTableState<T extends object> = Partial<Omit<TableState<T>, 'columns'>> & {
325
+ type ColumnInitOptions<T> = ColumnOptions<T> & Partial<ColumnState<T>>;
326
+ type RestorableColumnState<T> = Partial<Omit<ColumnState<T>, 'field'>> & Pick<ColumnState<T>, 'field'>;
327
+ type RestorableTableState<T> = Partial<Omit<TableState<T>, 'columns'>> & {
327
328
  columns?: RestorableColumnState<T>[];
328
329
  };
329
330
 
@@ -350,7 +351,7 @@ type RestorableTableState<T extends object> = Partial<Omit<TableState<T>, 'colum
350
351
  * });
351
352
  * ```
352
353
  */
353
- declare class DataTable<T extends object> extends EventTarget {
354
+ declare class DataTable<T> extends EventTarget {
354
355
  #private;
355
356
  private static readonly MatchWeights;
356
357
  private readonly DEFAULT_OPTIONS;
@@ -520,12 +521,12 @@ declare class DataTable<T extends object> extends EventTarget {
520
521
  type ConcreteTableClasses = Required<{
521
522
  [K in keyof TableClasses]: string[];
522
523
  }>;
523
- type ConcreteTableOptions<T extends object> = Required<Omit<TableOptions<T>, 'data' | 'classes' | 'virtualScroll'>> & {
524
+ type ConcreteTableOptions<T> = Required<Omit<TableOptions<T>, 'data' | 'classes' | 'virtualScroll'>> & {
524
525
  classes: ConcreteTableClasses;
525
526
  virtualScroll: number;
526
527
  };
527
- type UpdatableTableOptions<T extends object> = TableOptions<T>;
528
- type ColumnOptionsWithoutField<T extends object> = Omit<ColumnOptions<T>, 'field'>;
528
+ type UpdatableTableOptions<T> = TableOptions<T>;
529
+ type ColumnOptionsWithoutField<T> = Omit<ColumnOptions<T>, 'field'>;
529
530
  /**
530
531
  * Defines the mapping between event names and their detail object types.
531
532
  */
@@ -584,7 +585,7 @@ interface LocalStorageAdapterOptions {
584
585
  saveColumnVisibility?: boolean;
585
586
  saveColumnWidth?: boolean;
586
587
  }
587
- interface IDataTable<T extends object> extends EventTarget {
588
+ interface IDataTable<T> extends EventTarget {
588
589
  getState(): TableState<T>;
589
590
  restoreState(state: RestorableTableState<T>): void;
590
591
  }
@@ -592,7 +593,7 @@ interface IDataTable<T extends object> extends EventTarget {
592
593
  /**
593
594
  * Monitors a {@link DataTable} instance for changes and saves the state to local storage.
594
595
  */
595
- declare class LocalStorageAdapter<T extends object> {
596
+ declare class LocalStorageAdapter<T> {
596
597
  #private;
597
598
  /**
598
599
  * @param dataTable - The DataTable instance to monitor.
@@ -1,6 +1,7 @@
1
- type NestedKeyOf<ObjectType extends object> = {
2
- [Key in keyof ObjectType & (string | number)]: ObjectType[Key] extends object ? `${Key}` | `${Key}.${NestedKeyOf<ObjectType[Key]>}` : `${Key}`;
3
- }[keyof ObjectType & (string | number)];
1
+ type NestedKeyOf<ObjectType> = ObjectType extends object ? {
2
+ [Key in keyof ObjectType & (string | number)]: ObjectType[Key] extends any[] ? `${Key}` : ObjectType[Key] extends object ? // If it's a non-array object, recurse as before.
3
+ `${Key}` | `${Key}.${NestedKeyOf<ObjectType[Key]>}` : `${Key}`;
4
+ }[keyof ObjectType & (string | number)] : never;
4
5
  declare const createRegexTokenizer: (exp?: string) => (value: string) => {
5
6
  value: string;
6
7
  quoted: boolean;
@@ -74,7 +75,7 @@ type SortValueCallback = (value: any) => number | string;
74
75
  * A filter object containing keys for the fields to be filtered,
75
76
  * and the values used to compare against.
76
77
  */
77
- type Filters<T extends object> = Partial<{
78
+ type Filters<T> = Partial<{
78
79
  [K in NestedKeyOf<T>]: any;
79
80
  }>;
80
81
  /**
@@ -128,7 +129,7 @@ interface SortState {
128
129
  /**
129
130
  * Column options for the table.
130
131
  */
131
- interface ColumnOptions<T extends object> {
132
+ interface ColumnOptions<T> {
132
133
  /**
133
134
  * The field name in the data object.
134
135
  */
@@ -180,7 +181,7 @@ interface ColumnOptions<T extends object> {
180
181
  /**
181
182
  * Represents the current state of a column.
182
183
  */
183
- interface ColumnState<T extends object> {
184
+ interface ColumnState<T> {
184
185
  /**
185
186
  * The unique field name of the column.
186
187
  */
@@ -234,7 +235,7 @@ interface TableClasses {
234
235
  /**
235
236
  * Options for configuring the table.
236
237
  */
237
- interface TableOptions<T extends object> {
238
+ interface TableOptions<T> {
238
239
  /**
239
240
  * Configures virtual scrolling.
240
241
  */
@@ -293,7 +294,7 @@ interface TableOptions<T extends object> {
293
294
  /**
294
295
  * Represents the current state of the table
295
296
  */
296
- interface TableState<T extends object> {
297
+ interface TableState<T> {
297
298
  /**
298
299
  * A list of {@link ColumnState}s representing all of the columns in the table.
299
300
  */
@@ -318,12 +319,12 @@ interface TableState<T extends object> {
318
319
  */
319
320
  columnOrder: NestedKeyOf<T>[];
320
321
  }
321
- type TableInitOptions<T extends object> = TableOptions<T> & {
322
+ type TableInitOptions<T> = TableOptions<T> & {
322
323
  data?: T[];
323
324
  };
324
- type ColumnInitOptions<T extends object> = ColumnOptions<T> & Partial<ColumnState<T>>;
325
- type RestorableColumnState<T extends object> = Partial<Omit<ColumnState<T>, 'field'>> & Pick<ColumnState<T>, 'field'>;
326
- type RestorableTableState<T extends object> = Partial<Omit<TableState<T>, 'columns'>> & {
325
+ type ColumnInitOptions<T> = ColumnOptions<T> & Partial<ColumnState<T>>;
326
+ type RestorableColumnState<T> = Partial<Omit<ColumnState<T>, 'field'>> & Pick<ColumnState<T>, 'field'>;
327
+ type RestorableTableState<T> = Partial<Omit<TableState<T>, 'columns'>> & {
327
328
  columns?: RestorableColumnState<T>[];
328
329
  };
329
330
 
@@ -350,7 +351,7 @@ type RestorableTableState<T extends object> = Partial<Omit<TableState<T>, 'colum
350
351
  * });
351
352
  * ```
352
353
  */
353
- declare class DataTable<T extends object> extends EventTarget {
354
+ declare class DataTable<T> extends EventTarget {
354
355
  #private;
355
356
  private static readonly MatchWeights;
356
357
  private readonly DEFAULT_OPTIONS;
@@ -520,12 +521,12 @@ declare class DataTable<T extends object> extends EventTarget {
520
521
  type ConcreteTableClasses = Required<{
521
522
  [K in keyof TableClasses]: string[];
522
523
  }>;
523
- type ConcreteTableOptions<T extends object> = Required<Omit<TableOptions<T>, 'data' | 'classes' | 'virtualScroll'>> & {
524
+ type ConcreteTableOptions<T> = Required<Omit<TableOptions<T>, 'data' | 'classes' | 'virtualScroll'>> & {
524
525
  classes: ConcreteTableClasses;
525
526
  virtualScroll: number;
526
527
  };
527
- type UpdatableTableOptions<T extends object> = TableOptions<T>;
528
- type ColumnOptionsWithoutField<T extends object> = Omit<ColumnOptions<T>, 'field'>;
528
+ type UpdatableTableOptions<T> = TableOptions<T>;
529
+ type ColumnOptionsWithoutField<T> = Omit<ColumnOptions<T>, 'field'>;
529
530
  /**
530
531
  * Defines the mapping between event names and their detail object types.
531
532
  */
@@ -584,7 +585,7 @@ interface LocalStorageAdapterOptions {
584
585
  saveColumnVisibility?: boolean;
585
586
  saveColumnWidth?: boolean;
586
587
  }
587
- interface IDataTable<T extends object> extends EventTarget {
588
+ interface IDataTable<T> extends EventTarget {
588
589
  getState(): TableState<T>;
589
590
  restoreState(state: RestorableTableState<T>): void;
590
591
  }
@@ -592,7 +593,7 @@ interface IDataTable<T extends object> extends EventTarget {
592
593
  /**
593
594
  * Monitors a {@link DataTable} instance for changes and saves the state to local storage.
594
595
  */
595
- declare class LocalStorageAdapter<T extends object> {
596
+ declare class LocalStorageAdapter<T> {
596
597
  #private;
597
598
  /**
598
599
  * @param dataTable - The DataTable instance to monitor.
@@ -1,4 +1,4 @@
1
- "use strict";var yatl=(()=>{var we=Object.defineProperty,ct=Object.defineProperties,ht=Object.getOwnPropertyDescriptor,ut=Object.getOwnPropertyDescriptors,ft=Object.getOwnPropertyNames,ye=Object.getOwnPropertySymbols;var Ie=Object.prototype.hasOwnProperty,Be=Object.prototype.propertyIsEnumerable;var Je=a=>{throw TypeError(a)};var Qe=(a,o,e)=>o in a?we(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)&&Qe(a,e,o[e]);if(ye)for(var e of ye(o))Be.call(o,e)&&Qe(a,e,o[e]);return a},ze=(a,o)=>ct(a,ut(o));var Ye=(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&&Be.call(a,s)&&(e[s]=a[s]);return e};var pt=(a,o)=>{for(var e in o)we(a,e,{get:o[e],enumerable:!0})},mt=(a,o,e,s)=>{if(o&&typeof o=="object"||typeof o=="function")for(let i of ft(o))!Ie.call(a,i)&&i!==e&&we(a,i,{get:()=>o[i],enumerable:!(s=ht(o,i))||s.enumerable});return a};var gt=a=>mt(we({},"__esModule",{value:!0}),a);var Ne=(a,o,e)=>o.has(a)||Je("Cannot "+e);var t=(a,o,e)=>(Ne(a,o,"read from private field"),e?e.call(a):o.get(a)),h=(a,o,e)=>o.has(a)?Je("Cannot add the same private member more than once"):o instanceof WeakSet?o.add(a):o.set(a,e),p=(a,o,e,s)=>(Ne(a,o,"write to private field"),s?s.call(a,e):o.set(a,e),e),f=(a,o,e)=>(Ne(a,o,"access private method"),e);var Tt={};pt(Tt,{DataTable:()=>Ae,LocalStorageAdapter:()=>Ue,VirtualScroll:()=>ce,VirtualScrollError:()=>se,createRegexTokenizer:()=>Ve});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")},Ze=a=>a.replace(/_/g," ").replace(/([a-z])([A-Z])/g,"$1 $2").replace(/\b\w/g,o=>o.toUpperCase()),Ve=(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 qe(a){return typeof a=="boolean"?a?1:Number.MAX_SAFE_INTEGER:a}function et(a,o={}){return{scroller:[...F(o.scroller),...F(a.scroller)],thead:[...F(o.thead),...F(a.thead)],tbody:[...F(o.tbody),...F(a.tbody)],tr:[...F(o.tr),...F(a.tr)],th:[...F(o.th),...F(a.th)],td:[...F(o.td),...F(a.td)],mark:[...F(o.mark),...F(a.mark)]}}function G(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 he,D,W,ee,K,j,ue,P,B,fe,J,Y,te,pe,$,de,tt,Q=class Q{constructor({generator:o,container:e,element:s=e,nodePadding:i=10}){h(this,$);h(this,D);h(this,W);h(this,ee);h(this,K,0);h(this,j,0);h(this,ue,2);h(this,P,0);h(this,B,!1);h(this,fe,0);h(this,J);h(this,Y);h(this,te);h(this,pe,()=>{t(this,D).scrollTop!==t(this,fe)&&(p(this,fe,t(this,D).scrollTop),t(this,P)&&cancelAnimationFrame(t(this,P)),p(this,P,requestAnimationFrame(()=>f(this,$,de).call(this))))});p(this,D,e),p(this,W,s),p(this,ee,o),p(this,ue,i),p(this,J,document.createElement("div")),t(this,J).style.visibility="hidden",p(this,Y,document.createElement("div")),t(this,Y).style.visibility="hidden",p(this,te,new ResizeObserver(()=>f(this,$,de).call(this)))}get rowHeight(){return t(this,j)||f(this,$,tt).call(this),t(this,j)}get started(){return t(this,B)}scrollToIndex(o){if(o<0||o>=t(this,K))throw new RangeError("Index out of bounds.");this.scrollToPx(this.rowHeight*o)}scrollToPx(o){t(this,D).scrollTop=o,f(this,$,de).call(this)}start(o){t(this,B)||(t(this,D).addEventListener("scroll",t(this,pe)),t(this,te).observe(t(this,D)),p(this,B,!0)),t(this,D).classList.add("dt-virtual-scroll"),p(this,K,o),f(this,$,de).call(this)}stop(){t(this,P)&&cancelAnimationFrame(t(this,P)),t(this,D).classList.remove("dt-virtual-scroll"),t(this,D).removeEventListener("scroll",t(this,pe)),t(this,te).disconnect(),p(this,B,!1)}};he=new WeakMap,D=new WeakMap,W=new WeakMap,ee=new WeakMap,K=new WeakMap,j=new WeakMap,ue=new WeakMap,P=new WeakMap,B=new WeakMap,fe=new WeakMap,J=new WeakMap,Y=new WeakMap,te=new WeakMap,pe=new WeakMap,$=new WeakSet,de=function(){let o=t(this,D).scrollTop,e=t(this,K),s=this.rowHeight,i=t(this,ue);if(!this.started||!e||!s)return;let r=s*e;t(this,W).innerHTML=`<div style="height: ${r}px;"></div>`;let n=t(this,W).offsetHeight,c=t(this,D).offsetHeight;!t(Q,he)&&n<Math.round(r-1)&&(p(Q,he,!0),console.error("Max element height exceeded. Virtual scroll may not work."));let u=i*2,d=Math.floor(o/s)-i;d<0&&(u+=d),d=Math.max(0,d);let m=Math.ceil(c/s)+u;m=Math.min(e-d,m),d%2===1&&(d--,m++);let b=d*s,v=r-(b+m*s);v<0&&(v=0),t(this,W).innerHTML="";let S=new Array(m).fill(null).map((A,E)=>t(this,ee).call(this,E+d));t(this,J).style.height=b+"px",t(this,Y).style.height=v+"px",t(this,W).append(t(this,J)),t(this,W).append(...S),t(this,W).append(t(this,Y))},tt=function(){if(t(this,K)===0){p(this,j,0);return}let o=Math.min(Q.AVERAGE_RENDER_COUNT,t(this,K)),e=[];for(let i=0;i<o;++i)e.push(t(this,ee).call(this,i));let s=document.createElement("div");s.style.position="absolute",s.style.visibility="hidden",s.style.height="auto",s.style.width="100%",s.style.top="-9999px",s.style.left="-9999px",s.style.maxHeight="none",s.style.overflow="visible",s.style.display="block";try{s.append(...e),document.body.append(s),p(this,j,s.offsetHeight/o)}finally{s.remove()}if(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,K)>33554400&&console.warn("Virtual scroll height exceeded maximum known element height.")},h(Q,he,!1),Q.AVERAGE_RENDER_COUNT=1e3;var ce=Q,se=class extends Error{constructor(o){super(o)}};var x,Z,z,C,ne,g,k,O,oe,M,N,R,I,ge,T,V,y,l,it,rt,We,_e,Ke,je,nt,U,ot,me,ie,Se,$e,at,Pe,lt,Ce,dt,xe,Oe,Te,be,Le,Re,Me,Fe,De,ke,He,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:Ve(),virtualScrollClass:ce};h(this,x);h(this,Z);h(this,z);h(this,C);h(this,ne,null);h(this,g,new Map);h(this,k,new Map);h(this,O,[]);h(this,oe,null);h(this,M,null);h(this,N,null);h(this,R,null);h(this,I,null);h(this,ge,!1);h(this,T,_({},this.DEFAULT_OPTIONS));h(this,V,!1);h(this,y,new Set);h(this,xe,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){let c=parseInt(s.dataset.dtIndex||"");if(!isNaN(c)){let u=t(this,O).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,Oe,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,g).get(s);i&&(p(this,I,i),i.resizeStartX=e.clientX,i.resizeStartWidth=i.headerElement.offsetWidth,document.addEventListener("mousemove",t(this,Te)),document.addEventListener("mouseup",t(this,be)))});h(this,Te,e=>{if(!t(this,I))return;e.stopImmediatePropagation(),e.preventDefault();let s=e.clientX-t(this,I).resizeStartX,i=t(this,I).resizeStartWidth+s;f(this,l,Ce).call(this,t(this,I),i)});h(this,be,e=>{if(!t(this,I))return;e.stopImmediatePropagation(),e.preventDefault(),document.removeEventListener("mousemove",t(this,Te)),document.removeEventListener("mouseup",t(this,be));let s=new CustomEvent("dt.col.resize",{cancelable:!1,detail:{column:t(this,I).field,width:t(this,I).headerElement.offsetWidth}});this.dispatchEvent(s),p(this,I,null)});h(this,Le,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,g).get(s);if(!i)return;let r=i.titleElement.scrollWidth;if(t(this,O).length>0){t(this,ne)||p(this,ne,document.createElement("canvas").getContext("2d"));let c=t(this,ne),u=t(this,z).querySelector("td"),d=0;if(u&&c){let m=window.getComputedStyle(u);c.font=`${m.fontWeight} ${m.fontSize} ${m.fontFamily}`,d=parseFloat(m.paddingLeft)+parseFloat(m.paddingRight)}for(let m of t(this,O)){let b=G(m,s);typeof i.options.valueFormatter=="function"&&(b=i.options.valueFormatter(b,m));let v=b==null?"":String(b),S=(n=c==null?void 0:c.measureText(v).width)!=null?n:0;r=Math.max(r,S+d)}}f(this,l,Ce).call(this,i,r)});h(this,Re,e=>{let i=e.target.dataset.dtField;e.dataTransfer&&i&&(e.dataTransfer.effectAllowed="move",e.dataTransfer.setData("text/plain",i))});h(this,Me,e=>(e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect="move"),!1));h(this,Fe,e=>{e.target.classList.add("dt-drag-over")});h(this,De,e=>{e.target.classList.remove("dt-drag-over")});h(this,ke,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,g).values()],c=n.findIndex(m=>m.field===s),u=n.findIndex(m=>m.field===r);if(c>-1&&u>-1){let[m]=n.splice(c,1),b=t(this,g).get(r);if(!b)return;n.splice(u,0,m);let v=n.map(A=>A.field),S=new CustomEvent("dt.col.reorder",{cancelable:!0,detail:{draggedColumn:m.field,dropColumn:b.field,order:v}});if(!this.dispatchEvent(S))return;this.setColumnOrder(v)}});h(this,He,()=>{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=>qe(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=et(t(this,T).classes,e);t(this,C).className=s.scroller.join(" "),t(this,Z).className=s.thead.join(" "),t(this,z).className=s.tbody.join(" ");for(let i of t(this,g).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(),p(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:n}=v,c=Ye(v,["data","virtualScrollClass"]);if(n!==void 0&&(t(this,T).virtualScrollClass=n),typeof e=="string"){let S=document.querySelector(e);if(!S)throw new SyntaxError(`Failed to find table using selector ${e}`);p(this,x,S)}else p(this,x,e);if(!(t(this,x)instanceof HTMLTableElement))throw new TypeError("Invalid table element type. Must be HTMLTableElement");let{scroller:u,thead:d,headerRow:m,tbody:b}=f(this,l,it).call(this);p(this,C,u),p(this,Z,d),p(this,z,b),f(this,l,rt).call(this,s,m),this.updateTableOptions(_(_({},t(this,T)),c)),this.loadData(r!=null?r:[])}get tableOptions(){return structuredClone(t(this,T))}get rows(){return[...t(this,O)]}get data(){return[...t(this,k).values()]}get table(){return t(this,x)}getState(){let e=[...t(this,g).values()];return{searchQuery:t(this,oe),filters:t(this,N),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&&(p(this,N,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,g).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,Ce).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,y).add(n.effect);let c=n.handler,u=c?c(r):r;t(this,T)[i]=u}t(this,T).enableSearchScoring&&!t(this,T).tokenizeSearch&&(t(this,T).enableSearchScoring=!1,console.warn("Search scoring enabled with tokenization disabled... Ignoring"))})}getColumnOptions(e){if(e){let i=t(this,g).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,g).values()].map(i=>ze(_({},i.options),{field:i.field}))}updateColumnOptions(e,s){let i=t(this,g).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,y).add(u.effect);let d=u.handler,m=d?d(c):c;i.options[n]=m}})}loadData(e,s={}){let i=t(this,C).scrollTop,r=t(this,C).scrollLeft;s.append||(t(this,k).clear(),p(this,O,[]));let n=t(this,k).size;for(let c of e){let u=f(this,l,We).call(this,c,n);t(this,k).set(n,u),n++}f(this,l,ie).call(this),f(this,l,U).call(this),s.keepScroll&&(t(this,C).scrollTop=i,t(this,C).scrollLeft=r)}showMessage(e,...s){let i=t(this,g).size;t(this,z).innerHTML=`<tr class="${s.join(" ")}"><td colSpan=${i}>${e}</td></tr>`}clearMessage(){f(this,l,Se).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)&&(p(this,oe,e),e===""&&(e=null),typeof e=="string"?t(this,T).tokenizeSearch?p(this,M,t(this,T).tokenizer(e)):p(this,M,[{value:e.toLocaleLowerCase(),quoted:!0}]):p(this,M,e),f(this,l,U).call(this))}filter(e){p(this,N,e!=null?e:null),f(this,l,U).call(this)}sort(e,s){var u;let i=t(this,g).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,g).values()].map(v=>{var S;return(S=v.state.sortState)==null?void 0:S.priority}).filter(v=>v!==void 0),m=t(this,g).size+1,b=Math.min(m,...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,g).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,k):t(this,O)).values()],n=[...t(this,g).values()].filter(b=>s||b.state.visible).map(b=>`"${b.options.title}"`).join(","),c=r.map(b=>{let v=[];for(let S of t(this,g).keys()){let A=t(this,g).get(S);if(!A)continue;let E=b[S];(s||!A.headerElement.hidden)&&(typeof A.options.valueFormatter=="function"&&(E=A.options.valueFormatter(E,b)),E=String(E).replace('"','""'),v.push(`"${E}"`))}return v.join(",")}).join(`
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})},gt=(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 Tt=a=>gt(Ee({},"__esModule",{value:!0}),a);var Ne=(a,o,e)=>o.has(a)||Ye("Cannot "+e);var t=(a,o,e)=>(Ne(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)=>(Ne(a,o,"write to private field"),s?s.call(a,e):o.set(a,e),e),f=(a,o,e)=>(Ne(a,o,"access private method"),e);var bt={};pt(bt,{DataTable:()=>Ke,LocalStorageAdapter:()=>Xe,VirtualScroll:()=>de,VirtualScrollError:()=>se,createRegexTokenizer:()=>Ve});var D=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")},qe=a=>a.replace(/_/g," ").replace(/([a-z])([A-Z])/g,"$1 $2").replace(/\b\w/g,o=>o.toUpperCase()),Ve=(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 et(a){return typeof a=="boolean"?a?1:Number.MAX_SAFE_INTEGER:a}function tt(a,o={}){return{scroller:[...D(o.scroller),...D(a.scroller)],thead:[...D(o.thead),...D(a.thead)],tbody:[...D(o.tbody),...D(a.tbody)],tr:[...D(o.tr),...D(a.tr)],th:[...D(o.th),...D(a.th)],td:[...D(o.td),...D(a.td)],mark:[...D(o.mark),...D(a.mark)]}}function Q(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 ce,L,J,ee,$,P,he,j,Y,ue,I,U,te,fe,V,Ae,we,st,B=class B{constructor({generator:o,container:e,element:s=e,nodePadding:i=10}){h(this,V);h(this,L);h(this,J);h(this,ee);h(this,$,0);h(this,P,0);h(this,he,2);h(this,j,0);h(this,Y,!1);h(this,ue,0);h(this,I);h(this,U);h(this,te);h(this,fe,()=>{t(this,L).scrollTop!==t(this,ue)&&(m(this,ue,t(this,L).scrollTop),f(this,V,Ae).call(this))});m(this,L,e),m(this,J,s),m(this,ee,o),m(this,he,i),m(this,I,document.createElement("div")),t(this,I).style.visibility="hidden",m(this,U,document.createElement("div")),t(this,U).style.visibility="hidden",m(this,te,new ResizeObserver(()=>f(this,V,Ae).call(this)))}get rowHeight(){return t(this,P)||f(this,V,st).call(this),t(this,P)}get started(){return t(this,Y)}scrollToIndex(o){if(o<0||o>=t(this,$))throw new RangeError("Index out of bounds.");this.scrollToPx(this.rowHeight*o)}scrollToPx(o){t(this,L).scrollTop=o,f(this,V,we).call(this)}start(o){t(this,Y)||(t(this,L).addEventListener("scroll",t(this,fe)),t(this,te).observe(t(this,L)),m(this,Y,!0)),t(this,L).classList.add("dt-virtual-scroll"),m(this,$,o),f(this,V,we).call(this)}stop(){t(this,j)&&cancelAnimationFrame(t(this,j)),t(this,L).classList.remove("dt-virtual-scroll"),t(this,L).removeEventListener("scroll",t(this,fe)),t(this,te).disconnect(),m(this,Y,!1)}};ce=new WeakMap,L=new WeakMap,J=new WeakMap,ee=new WeakMap,$=new WeakMap,P=new WeakMap,he=new WeakMap,j=new WeakMap,Y=new WeakMap,ue=new WeakMap,I=new WeakMap,U=new WeakMap,te=new WeakMap,fe=new WeakMap,V=new WeakSet,Ae=function(){t(this,j)&&cancelAnimationFrame(t(this,j)),m(this,j,requestAnimationFrame(()=>f(this,V,we).call(this)))},we=function(){let o=t(this,L).scrollTop,e=t(this,$),s=this.rowHeight,i=t(this,he);if(!this.started||!e||!s)return;let r=s*e,n=t(this,L).style.height;t(this,L).style.height="100%";let c=t(this,L).offsetHeight;t(this,L).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,U);)t(this,J).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,U).style.height=v+"px",t(this,I).parentElement?t(this,I).after(...w):t(this,J).append(t(this,I),...w,t(this,U));let N=t(this,J).offsetHeight;!t(B,ce)&&N<Math.round(r-1)&&(m(B,ce,!0),console.error("Max element height exceeded. Virtual scroll may not work."))},st=function(){if(t(this,$)===0){m(this,P,0);return}let o=Math.min(B.AVERAGE_RENDER_COUNT,t(this,$)),e=[];for(let i=0;i<o;++i)e.push(t(this,ee).call(this,i));let s=document.createElement("div");s.style.position="absolute",s.style.visibility="hidden",s.style.height="auto",s.style.width="100%",s.style.top="-9999px",s.style.left="-9999px",s.style.maxHeight="none",s.style.overflow="visible",s.style.display="block";try{s.append(...e),document.body.append(s),m(this,P,s.offsetHeight/o)}finally{s.remove()}if(t(this,P)<=0)throw new se(`First ${o} rows had no rendered height. Virtual scroll can't be used.`);t(this,P)*t(this,$)>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 O,Z,A,C,ne,g,k,R,oe,M,K,F,z,pe,T,W,E,l,rt,nt,We,_e,$e,Pe,ot,X,at,me,ie,Se,je,lt,Ue,dt,Ce,ct,xe,Oe,ge,Te,Re,Le,Fe,Me,De,ke,He,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:Ve(),virtualScrollClass:de};h(this,O);h(this,Z);h(this,A);h(this,C);h(this,ne,null);h(this,g,new Map);h(this,k,new Map);h(this,R,[]);h(this,oe,null);h(this,M,null);h(this,K,null);h(this,F,null);h(this,z,null);h(this,pe,!1);h(this,T,_({},this.DEFAULT_OPTIONS));h(this,W,!1);h(this,E,new Set);h(this,xe,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){let c=parseInt(s.dataset.dtIndex||"");if(!isNaN(c)){let u=t(this,R).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,Oe,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,g).get(s);i&&(m(this,z,i),i.resizeStartX=e.clientX,i.resizeStartWidth=i.headerElement.offsetWidth,document.addEventListener("mousemove",t(this,ge)),document.addEventListener("mouseup",t(this,Te)))});h(this,ge,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,Ce).call(this,t(this,z),i)});h(this,Te,e=>{if(!t(this,z))return;e.stopImmediatePropagation(),e.preventDefault(),document.removeEventListener("mousemove",t(this,ge)),document.removeEventListener("mouseup",t(this,Te));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,g).get(s);if(!i)return;let r=i.titleElement.scrollWidth;if(t(this,R).length>0){t(this,ne)||m(this,ne,document.createElement("canvas").getContext("2d"));let c=t(this,ne),u=t(this,A).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,R)){let b=Q(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,Ce).call(this,i,r)});h(this,Le,e=>{let i=e.target.dataset.dtField;e.dataTransfer&&i&&(e.dataTransfer.effectAllowed="move",e.dataTransfer.setData("text/plain",i))});h(this,Fe,e=>(e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect="move"),!1));h(this,Me,e=>{e.target.classList.add("dt-drag-over")});h(this,De,e=>{e.target.classList.remove("dt-drag-over")});h(this,ke,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,g).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,g).get(r);if(!b)return;n.splice(u,0,p);let v=n.map(N=>N.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,He,()=>{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=>et(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=tt(t(this,T).classes,e);t(this,C).className=s.scroller.join(" "),t(this,Z).className=s.thead.join(" "),t(this,A).className=s.tbody.join(" ");for(let i of t(this,g).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,F))==null||s.stop(),m(this,F,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,T).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,A,b),f(this,l,nt).call(this,s,p),this.updateTableOptions(_(_({},t(this,T)),c)),this.loadData(r!=null?r:[])}get tableOptions(){return structuredClone(t(this,T))}get rows(){return[...t(this,R)]}get data(){return[...t(this,k).values()]}get table(){return t(this,O)}getState(){let e=[...t(this,g).values()];return{searchQuery:t(this,oe),filters:t(this,K),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,K,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,g).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,Ce).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,T)[i]=u}t(this,T).enableSearchScoring&&!t(this,T).tokenizeSearch&&(t(this,T).enableSearchScoring=!1,console.warn("Search scoring enabled with tokenization disabled... Ignoring"))})}getColumnOptions(e){if(e){let i=t(this,g).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,g).values()].map(i=>ze(_({},i.options),{field:i.field}))}updateColumnOptions(e,s){let i=t(this,g).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=t(this,C).scrollTop,r=t(this,C).scrollLeft;s.append||(t(this,k).clear(),m(this,R,[]));let n=t(this,k).size;for(let c of e){let u=f(this,l,We).call(this,c,n);t(this,k).set(n,u),n++}f(this,l,ie).call(this),f(this,l,X).call(this),s.keepScroll&&(t(this,C).scrollTop=i,t(this,C).scrollLeft=r)}showMessage(e,...s){let i=t(this,g).size;t(this,A).innerHTML=`<tr class="${s.join(" ")}"><td colSpan=${i}>${e}</td></tr>`}clearMessage(){f(this,l,Se).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,T).tokenizeSearch?m(this,M,t(this,T).tokenizer(e)):m(this,M,[{value:e.toLocaleLowerCase(),quoted:!0}]):m(this,M,e),f(this,l,X).call(this))}filter(e){m(this,K,e!=null?e:null),f(this,l,X).call(this)}sort(e,s){var u;let i=t(this,g).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,g).values()].map(v=>{var w;return(w=v.state.sortState)==null?void 0:w.priority}).filter(v=>v!==void 0),p=t(this,g).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,g).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,k):t(this,R)).values()],n=[...t(this,g).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,g).keys()){let N=t(this,g).get(w);if(!N)continue;let y=b[w];(s||!N.headerElement.hidden)&&(typeof N.options.valueFormatter=="function"&&(y=N.options.valueFormatter(y,b)),y=String(y).replace('"','""'),v.push(`"${y}"`))}return v.join(",")}).join(`
2
2
  `),u=n+`
3
- `+c,d=new Blob([u],{type:"text/csv;charset=utf-8,"}),m=document.createElement("a");m.style.display="none",m.href=URL.createObjectURL(d),m.download=`${e}.csv`,document.body.append(m),m.click(),m.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,z).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,R))t(this,R).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,g).get(i);r&&s.set(i,r)}for(let[i,r]of t(this,g))s.has(i)||s.set(i,r);p(this,g,s),this.refresh()}refresh(){f(this,l,ie).call(this),f(this,l,U).call(this)}indexOf(e,s){let r=[...t(this,k).values()].find(n=>{if(e in n)return n[e]===s});return r?r._metadata.index:-1}updateRow(e,s){let i=t(this,k).get(e);i&&(Object.assign(i,s),f(this,l,We).call(this,i,e),f(this,l,U).call(this))}deleteRow(e){t(this,k).delete(e),f(this,l,U).call(this)}withoutUpdates(e){let s=t(this,V);p(this,V,!0);try{e(this)}finally{p(this,V,s),t(this,V)||f(this,l,dt).call(this)}}addEventListener(e,s,i){super.addEventListener(e,s,i)}};x=new WeakMap,Z=new WeakMap,z=new WeakMap,C=new WeakMap,ne=new WeakMap,g=new WeakMap,k=new WeakMap,O=new WeakMap,oe=new WeakMap,M=new WeakMap,N=new WeakMap,R=new WeakMap,I=new WeakMap,ge=new WeakMap,T=new WeakMap,V=new WeakMap,y=new WeakMap,l=new WeakSet,it=function(){var n;t(this,x).classList.add("data-table");let e=document.createElement("div");t(this,x).style.height!==""&&(e.style.height=t(this,x).style.height,t(this,x).style.height="");let s=document.createElement("thead"),i=document.createElement("tr"),r=document.createElement("tbody");return r.addEventListener("click",t(this,xe)),t(this,x).innerHTML="",s.append(i),t(this,x).append(s),t(this,x).append(r),(n=t(this,x).parentElement)==null||n.insertBefore(e,t(this,x)),e.append(t(this,x)),{scroller:e,thead:s,headerRow:i,tbody:r}},rt=function(e,s){var r,n,c,u,d,m,b,v,S,A;t(this,g).clear();let i=!1;for(let E of e){let L=document.createElement("th"),ve=document.createElement("div"),le=document.createElement("div"),Ee=document.createElement("span"),H={field:E.field,options:{title:(r=E.title)!=null?r:Ze(E.field),sortable:(n=E.sortable)!=null?n:!0,searchable:(c=E.searchable)!=null?c:!1,tokenize:(u=E.tokenize)!=null?u:!1,resizable:(d=E.resizable)!=null?d:!0,valueFormatter:(m=E.valueFormatter)!=null?m:null,elementFormatter:(b=E.elementFormatter)!=null?b:null,sorter:(v=E.sorter)!=null?v:null,sortValue:(S=E.sortValue)!=null?S:null,filter:(A=E.filter)!=null?A:null},state:{visible:!0,sortState:null,width:null},headerElement:L,titleElement:Ee,resizeStartWidth:null,resizeStartX:null};t(this,g).set(E.field,H),L.dataset.dtField=E.field,L.hidden=!H.state.visible,L.title=H.options.title,ve.classList.add("dt-header-content"),L.append(ve),le.classList.add("dt-header-title-wrapper"),ve.append(le),Ee.classList.add("dt-header-title"),Ee.innerHTML=H.options.title,le.append(Ee);let Xe=document.createElement("div");Xe.classList.add("dt-sort-icon"),le.append(Xe);let Ge=document.createElement("div");Ge.classList.add("dt-resizer"),ve.append(Ge),s.append(L),H.state.visible&&(i=!0),this.updateColumnOptions(E.field,H.options),t(this,T).rearrangeable&&(L.draggable=!0),le.addEventListener("click",()=>{L.classList.contains("dt-sortable")&&(H.state.sortState?H.state.sortState.order==="asc"?this.sort(H.field,"desc"):H.state.sortState.order&&this.sort(H.field,null):this.sort(H.field,"asc"))}),L.addEventListener("dragstart",t(this,Re)),L.addEventListener("dragenter",t(this,Fe)),L.addEventListener("dragover",t(this,Me)),L.addEventListener("dragleave",t(this,De)),L.addEventListener("drop",t(this,ke)),L.addEventListener("dragend",t(this,He)),L.addEventListener("mousedown",t(this,Oe)),L.addEventListener("dblclick",t(this,Le))}if(t(this,g).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 E=e[0].field;this.showColumn(E)}},We=function(e,s){let i={index:s++,tokens:{},compareValues:{},sortValues:{}};e._metadata=i;for(let[r,n]of t(this,g)){let c=G(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,T).tokenizer(c).map(u=>u.value))}for(let r of t(this,T).extraSearchFields){let n=G(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},Ke=function(e,s,i){return e instanceof RegExp?e.test(s)?1:0:t(this,T).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},je=function(e,s,i=null){return Array.isArray(s)?s.length===0?!0:s.some(r=>f(this,l,je).call(this,e,r)):typeof i=="function"?i(e,s):s instanceof RegExp?s.test(String(e)):s===e},nt=function(e,s){if(!t(this,N))return!0;if(typeof t(this,N)=="function")return t(this,N).call(this,e,s);for(let i in t(this,N)){let r=t(this,N)[i],n=G(e,i);if(typeof r=="function"){if(!r(n))return!1}else{let c=t(this,g).get(i),u=c?c.options.filter:void 0;if(!f(this,l,je).call(this,n,r,u))return!1}}return!0},U=function(){if(t(this,V)){t(this,y).add("reApplyFilters");return}else t(this,y).delete("reApplyFilters");let s=[...[...t(this,g).values()].filter(n=>n.options.searchable).map(n=>n.field),...t(this,T).extraSearchFields],i=[...t(this,k).values()];p(this,O,i.filter((n,c)=>{if(n._metadata.searchScore=0,!f(this,l,nt).call(this,n,c))return!1;if(!t(this,M))return!0;for(let u of s){let d=G(n,u),m=n._metadata.compareValues[u],b=n._metadata.tokens[u];if(typeof d!="string"||typeof m!="string")continue;let v=0;if(t(this,M)instanceof RegExp)v=f(this,l,Ke).call(this,t(this,M),d,b);else for(let S of t(this,M))v+=f(this,l,Ke).call(this,S,m,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)},ot=function(e,s,i){var d,m;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]):((m=i.state.sortState)==null?void 0:m.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,y).add("reSortRows");return}else t(this,y).delete("reSortRows");let e=[...t(this,g).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,T).enableSearchScoring&&t(this,M)){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,ot).call(this,s,i,r);if(n!==0)return n}return s._metadata.index-i._metadata.index}),f(this,l,Se).call(this)},ie=function(){var e,s,i,r,n,c,u;if(t(this,V)){t(this,y).add("updateHeaders");return}else t(this,y).delete("updateHeaders");for(let d of t(this,g).values())(e=d.headerElement.parentElement)==null||e.append(d.headerElement),d.headerElement.hidden=!d.state.visible,d.headerElement.draggable=t(this,T).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"))},Se=function(){if(t(this,V)){t(this,y).add("reRenderTable");return}else t(this,y).delete("reRenderTable");let e=this.rows.length>=t(this,T).virtualScroll;if(e&&!t(this,R)?p(this,R,new(t(this,T)).virtualScrollClass({container:t(this,C),element:t(this,z),generator:s=>f(this,l,Pe).call(this,s)})):!e&&t(this,R)&&(t(this,R).stop(),p(this,R,null)),t(this,z).innerHTML="",t(this,R))try{t(this,R).start(t(this,O).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,O).length>st){let i=st.toLocaleString();console.warn(`Virtual scroll disabled with more than ${i} rows... Good luck with that!`)}let s=t(this,O).map((i,r)=>f(this,l,Pe).call(this,r));t(this,z).append(...s)}t(this,k).size===0?this.showMessage(t(this,T).noDataText,"dt-empty"):t(this,O).length===0&&this.showMessage(t(this,T).noMatchText,"dt-empty")},$e=function(e,s){var i;if(e.children.length===0){let r=(i=e.textContent)!=null?i:"",n=t(this,T).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,$e).call(this,r,s)},at=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,T).emptyValuePlaceholder,typeof i.options.elementFormatter=="function"&&i.options.elementFormatter(s,r,e),t(this,T).highlightSearch&&t(this,M)&&i.options.searchable){let n;if(t(this,M)instanceof RegExp)n=t(this,M);else{let c=t(this,M).map(u=>u.value).join("|");n=new RegExp(c,"gi")}f(this,l,$e).call(this,e,n)}e.hidden=!i.state.visible},Pe=function(e){let s=t(this,O)[e],i=document.createElement("tr");i.classList.add(...t(this,T).classes.tr),i.dataset.dtIndex=String(s._metadata.index);for(let[r,n]of t(this,g)){let c=G(s,r),u=document.createElement("td");u.classList.add(...t(this,T).classes.td),u.dataset.dtField=r,f(this,l,at).call(this,u,c,n,s),i.append(u)}if(typeof t(this,T).rowFormatter=="function")try{t(this,T).rowFormatter(s,i)}catch(r){console.error("Row formatter callback failed with the following error"),console.error(r)}return i},lt=function(){if(!t(this,ge)){p(this,ge,!0);for(let e of t(this,g).values()){let s=e.headerElement.offsetWidth;e.state.width=s,e.headerElement.style.width=`${s}px`}t(this,x).style.width="fit-content"}},Ce=function(e,s){f(this,l,lt).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},dt=function(){for(;t(this,y).size;)t(this,y).has("reloadData")?(this.loadData(this.data),t(this,y).delete("reloadData")):t(this,y).has("reApplyFilters")?(f(this,l,U).call(this),t(this,y).delete("reApplyFilters")):t(this,y).has("reSortRows")?(f(this,l,me).call(this),t(this,y).delete("reSortRows")):t(this,y).has("reRenderTable")&&(f(this,l,Se).call(this),t(this,y).delete("reRenderTable")),t(this,y).has("updateHeaders")&&f(this,l,ie).call(this)},xe=new WeakMap,Oe=new WeakMap,Te=new WeakMap,be=new WeakMap,Le=new WeakMap,Re=new WeakMap,Me=new WeakMap,Fe=new WeakMap,De=new WeakMap,ke=new WeakMap,He=new WeakMap,re.MatchWeights={EXACT:100,PREFIX:50,SUBSTRING:10};var Ae=re,st=1e4;var ae,q,w,X,Ue=class{constructor(o,e,s){h(this,ae);h(this,q);h(this,w,{saveSearch:!0,saveColumnSorting:!0,saveColumnVisibility:!0,saveColumnWidth:!0,saveColumnOrder:!0});h(this,X,()=>setTimeout(()=>this.saveState(),0));p(this,ae,o),p(this,q,e),p(this,w,_(_({},t(this,w)),s)),this.restoreState(),t(this,w).saveSearch&&o.addEventListener("dt.search",t(this,X)),t(this,w).saveColumnSorting&&o.addEventListener("dt.col.sort",t(this,X)),t(this,w).saveColumnVisibility&&o.addEventListener("dt.col.visibility",t(this,X)),t(this,w).saveColumnWidth&&o.addEventListener("dt.col.resize",t(this,X)),t(this,w).saveColumnOrder&&o.addEventListener("dt.col.reorder",t(this,X))}saveState(){var s;let o={columns:[]},e=t(this,ae).getState();t(this,w).saveSearch&&(o.searchQuery=e.searchQuery),t(this,w).saveColumnOrder&&(o.columnOrder=e.columnOrder);for(let i of e.columns){let r={field:i.field};t(this,w).saveColumnSorting&&(r.sortState=i.sortState),t(this,w).saveColumnVisibility&&(r.visible=i.visible),t(this,w).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,w).saveSearch&&(s.searchQuery=e.searchQuery),t(this,w).saveColumnOrder&&(s.columnOrder=e.columnOrder),e.columns){s.columns=[];for(let i of e.columns){let r={field:i.field};t(this,w).saveColumnVisibility&&(r.visible=i.visible),t(this,w).saveColumnWidth&&(r.width=i.width),t(this,w).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,w=new WeakMap,X=new WeakMap;return gt(Tt);})();
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,k).get(e);if(s){let i=t(this,R).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,R)[e];if(!s)throw new RangeError(`Row index ${e} out of range`);if(t(this,F))t(this,F).scrollToIndex(e);else{let i=t(this,A).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,F))t(this,F).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,g).get(i);r&&s.set(i,r)}for(let[i,r]of t(this,g))s.has(i)||s.set(i,r);m(this,g,s),this.refresh()}refresh(){f(this,l,ie).call(this),f(this,l,X).call(this)}indexOf(e,s){let r=[...t(this,k).values()].find(n=>{if(e in n)return n[e]===s});return r?r._metadata.index:-1}updateRow(e,s){let i=t(this,k).get(e);i&&(Object.assign(i,s),f(this,l,We).call(this,i,e),f(this,l,X).call(this))}deleteRow(e){t(this,k).delete(e),f(this,l,X).call(this)}withoutUpdates(e){let s=t(this,W);m(this,W,!0);try{e(this)}finally{m(this,W,s),t(this,W)||f(this,l,ct).call(this)}}addEventListener(e,s,i){super.addEventListener(e,s,i)}};O=new WeakMap,Z=new WeakMap,A=new WeakMap,C=new WeakMap,ne=new WeakMap,g=new WeakMap,k=new WeakMap,R=new WeakMap,oe=new WeakMap,M=new WeakMap,K=new WeakMap,F=new WeakMap,z=new WeakMap,pe=new WeakMap,T=new WeakMap,W=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,xe)),t(this,O).innerHTML="",s.append(i),t(this,O).append(s),t(this,O).append(r),(n=t(this,O).parentElement)==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,N;t(this,g).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"),H={field:y.field,options:{title:(r=y.title)!=null?r:qe(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:(N=y.filter)!=null?N:null},state:{visible:!0,sortState:null,width:null},headerElement:x,titleElement:ve,resizeStartWidth:null,resizeStartX:null};t(this,g).set(y.field,H),x.dataset.dtField=y.field,x.hidden=!H.state.visible,x.title=H.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=H.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),H.state.visible&&(i=!0),this.updateColumnOptions(y.field,H.options),t(this,T).rearrangeable&&(x.draggable=!0),le.addEventListener("click",()=>{x.classList.contains("dt-sortable")&&(H.state.sortState?H.state.sortState.order==="asc"?this.sort(H.field,"desc"):H.state.sortState.order&&this.sort(H.field,null):this.sort(H.field,"asc"))}),x.addEventListener("dragstart",t(this,Le)),x.addEventListener("dragenter",t(this,Me)),x.addEventListener("dragover",t(this,Fe)),x.addEventListener("dragleave",t(this,De)),x.addEventListener("drop",t(this,ke)),x.addEventListener("dragend",t(this,He)),x.addEventListener("mousedown",t(this,Oe)),x.addEventListener("dblclick",t(this,Re))}if(t(this,g).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)}},We=function(e,s){let i={index:s++,tokens:{},compareValues:{},sortValues:{}};e._metadata=i;for(let[r,n]of t(this,g)){let c=Q(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,T).tokenizer(c).map(u=>u.value))}for(let r of t(this,T).extraSearchFields){let n=Q(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},$e=function(e,s,i){return e instanceof RegExp?e.test(s)?1:0:t(this,T).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},Pe=function(e,s,i=null){return Array.isArray(s)?s.length===0?!0:s.some(r=>f(this,l,Pe).call(this,e,r)):typeof i=="function"?i(e,s):s instanceof RegExp?s.test(String(e)):s===e},ot=function(e,s){if(!t(this,K))return!0;if(typeof t(this,K)=="function")return t(this,K).call(this,e,s);for(let i in t(this,K)){let r=t(this,K)[i],n=Q(e,i);if(typeof r=="function"){if(!r(n))return!1}else{let c=t(this,g).get(i),u=c?c.options.filter:void 0;if(!f(this,l,Pe).call(this,n,r,u))return!1}}return!0},X=function(){if(t(this,W)){t(this,E).add("reApplyFilters");return}else t(this,E).delete("reApplyFilters");let s=[...[...t(this,g).values()].filter(n=>n.options.searchable).map(n=>n.field),...t(this,T).extraSearchFields],i=[...t(this,k).values()];m(this,R,i.filter((n,c)=>{if(n._metadata.searchScore=0,!f(this,l,ot).call(this,n,c))return!1;if(!t(this,M))return!0;for(let u of s){let d=Q(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,M)instanceof RegExp)v=f(this,l,$e).call(this,t(this,M),d,b);else for(let w of t(this,M))v+=f(this,l,$e).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,W)){t(this,E).add("reSortRows");return}else t(this,E).delete("reSortRows");let e=[...t(this,g).values()].filter(s=>!s.headerElement.hidden&&s.state.sortState).sort((s,i)=>i.state.sortState.priority-s.state.sortState.priority);t(this,R).sort((s,i)=>{if(t(this,T).enableSearchScoring&&t(this,M)){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,Se).call(this)},ie=function(){var e,s,i,r,n,c,u;if(t(this,W)){t(this,E).add("updateHeaders");return}else t(this,E).delete("updateHeaders");for(let d of t(this,g).values())(e=d.headerElement.parentElement)==null||e.append(d.headerElement),d.headerElement.hidden=!d.state.visible,d.headerElement.draggable=t(this,T).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"))},Se=function(){if(t(this,W)){t(this,E).add("reRenderTable");return}else t(this,E).delete("reRenderTable");let e=this.rows.length>=t(this,T).virtualScroll;if(e&&!t(this,F)?m(this,F,new(t(this,T)).virtualScrollClass({container:t(this,C),element:t(this,A),generator:s=>f(this,l,Ue).call(this,s)})):!e&&t(this,F)&&(t(this,F).stop(),m(this,F,null)),t(this,A).innerHTML="",t(this,F))try{t(this,F).start(t(this,R).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,R).length>it){let i=it.toLocaleString();console.warn(`Virtual scroll disabled with more than ${i} rows... Good luck with that!`)}let s=t(this,R).map((i,r)=>f(this,l,Ue).call(this,r));t(this,A).append(...s)}t(this,k).size===0?this.showMessage(t(this,T).noDataText,"dt-empty"):t(this,R).length===0&&this.showMessage(t(this,T).noMatchText,"dt-empty")},je=function(e,s){var i;if(e.children.length===0){let r=(i=e.textContent)!=null?i:"",n=t(this,T).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,T).emptyValuePlaceholder,typeof i.options.elementFormatter=="function"&&i.options.elementFormatter(s,r,e),t(this,T).highlightSearch&&t(this,M)&&i.options.searchable){let n;if(t(this,M)instanceof RegExp)n=t(this,M);else{let c=t(this,M).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,R)[e],i=document.createElement("tr");i.classList.add(...t(this,T).classes.tr),i.dataset.dtIndex=String(s._metadata.index);for(let[r,n]of t(this,g)){let c=Q(s,r),u=document.createElement("td");u.classList.add(...t(this,T).classes.td),u.dataset.dtField=r,f(this,l,lt).call(this,u,c,n,s),i.append(u)}if(typeof t(this,T).rowFormatter=="function")try{t(this,T).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,g).values()){let s=e.headerElement.offsetWidth;e.state.width=s,e.headerElement.style.width=`${s}px`}t(this,O).style.width="fit-content"}},Ce=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,X).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,Se).call(this),t(this,E).delete("reRenderTable")),t(this,E).has("updateHeaders")&&f(this,l,ie).call(this)},xe=new WeakMap,Oe=new WeakMap,ge=new WeakMap,Te=new WeakMap,Re=new WeakMap,Le=new WeakMap,Fe=new WeakMap,Me=new WeakMap,De=new WeakMap,ke=new WeakMap,He=new WeakMap,re.MatchWeights={EXACT:100,PREFIX:50,SUBSTRING:10};var Ke=re,it=1e4;var ae,q,S,G,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,G,()=>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,G)),t(this,S).saveColumnSorting&&o.addEventListener("dt.col.sort",t(this,G)),t(this,S).saveColumnVisibility&&o.addEventListener("dt.col.visibility",t(this,G)),t(this,S).saveColumnWidth&&o.addEventListener("dt.col.resize",t(this,G)),t(this,S).saveColumnOrder&&o.addEventListener("dt.col.reorder",t(this,G))}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,G=new WeakMap;return Tt(bt);})();
4
4
  //# sourceMappingURL=data-table.global.js.map