@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.
- package/dist/data-table.d.mts +19 -18
- package/dist/data-table.d.ts +19 -18
- package/dist/data-table.global.js +2 -2
- package/dist/data-table.global.js.map +1 -1
- package/dist/data-table.js +2 -2
- package/dist/data-table.js.map +1 -1
- package/dist/data-table.mjs +2 -2
- package/dist/data-table.mjs.map +1 -1
- package/package.json +1 -1
package/dist/data-table.d.mts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
type NestedKeyOf<ObjectType extends object
|
|
2
|
-
[Key in keyof ObjectType & (string | number)]: ObjectType[Key] extends
|
|
3
|
-
}
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
322
|
+
type TableInitOptions<T> = TableOptions<T> & {
|
|
322
323
|
data?: T[];
|
|
323
324
|
};
|
|
324
|
-
type ColumnInitOptions<T
|
|
325
|
-
type RestorableColumnState<T
|
|
326
|
-
type RestorableTableState<T
|
|
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
|
|
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
|
|
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
|
|
528
|
-
type ColumnOptionsWithoutField<T
|
|
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
|
|
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
|
|
596
|
+
declare class LocalStorageAdapter<T> {
|
|
596
597
|
#private;
|
|
597
598
|
/**
|
|
598
599
|
* @param dataTable - The DataTable instance to monitor.
|
package/dist/data-table.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
type NestedKeyOf<ObjectType extends object
|
|
2
|
-
[Key in keyof ObjectType & (string | number)]: ObjectType[Key] extends
|
|
3
|
-
}
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
322
|
+
type TableInitOptions<T> = TableOptions<T> & {
|
|
322
323
|
data?: T[];
|
|
323
324
|
};
|
|
324
|
-
type ColumnInitOptions<T
|
|
325
|
-
type RestorableColumnState<T
|
|
326
|
-
type RestorableTableState<T
|
|
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
|
|
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
|
|
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
|
|
528
|
-
type ColumnOptionsWithoutField<T
|
|
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
|
|
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
|
|
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
|