@freegridjs/core 0.1.0 → 0.7.0
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/LICENSE +79 -21
- package/README.md +18 -5
- package/dist/cdn/freegrid.css +169 -1
- package/dist/cdn/freegrid.esm.js +8 -1
- package/dist/cdn/freegrid.min.js +8 -1
- package/dist/index.d.ts +75 -3
- package/dist/index.js +4553 -377
- package/dist/locales/de.d.ts +1 -1
- package/dist/locales/de.js +52 -0
- package/dist/locales/en.d.ts +1 -1
- package/dist/locales/en.js +52 -0
- package/dist/locales/es.d.ts +1 -1
- package/dist/locales/es.js +52 -0
- package/dist/locales/fr.d.ts +1 -1
- package/dist/locales/fr.js +52 -0
- package/dist/locales/ja.d.ts +1 -1
- package/dist/locales/ja.js +52 -0
- package/dist/locales/ko.d.ts +1 -1
- package/dist/locales/ko.js +52 -0
- package/dist/locales/zh-CN.d.ts +1 -1
- package/dist/locales/zh-CN.js +52 -0
- package/dist/styles.css +169 -1
- package/dist/types-DZ66BpLd.d.ts +603 -0
- package/package.json +3 -3
- package/dist/types-vxZQWo_S.d.ts +0 -226
package/dist/cdn/freegrid.min.js
CHANGED
|
@@ -1 +1,8 @@
|
|
|
1
|
-
"use strict";var FreeGrid=(()=>{var ee=Object.defineProperty;var Ve=Object.getOwnPropertyDescriptor;var Ke=Object.getOwnPropertyNames;var je=Object.prototype.hasOwnProperty;var Ue=(r,e)=>{for(var t in e)ee(r,t,{get:e[t],enumerable:!0})},Ye=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Ke(e))!je.call(r,o)&&o!==t&&ee(r,o,{get:()=>e[o],enumerable:!(n=Ve(e,o))||n.enumerable});return r};var Xe=r=>Ye(ee({},"__esModule",{value:!0}),r);var St={};Ue(St,{createGrid:()=>Ge,en:()=>T,locales:()=>_e,registerLocale:()=>z,resolveLocale:()=>F,version:()=>Lt});var Ze={code:"en",noRows:"No rows to show",filter:"Filter",apply:"Apply",reset:"Reset",selectAll:"(Select all)",search:"Search\u2026",blanks:"(Blanks)",value:"Value",valueTo:"To",sortAsc:"Sort ascending",sortDesc:"Sort descending",clearSort:"Clear sort",pinLeft:"Pin left",pinRight:"Pin right",unpin:"Unpin",columnMenu:"Column menu",selectRow:"Select row",selectAllRows:"Select all rows",chooseColumns:"Choose columns",columns:"Columns",autosizeThis:"Autosize this column",autosizeAll:"Autosize all columns",resetColumns:"Reset columns",hideColumn:"Hide column",close:"Close",ops:{contains:"Contains",equals:"Equals",notEquals:"Does not equal",startsWith:"Starts with",endsWith:"Ends with",blank:"Blank",notBlank:"Not blank",eq:"Equals",ne:"Does not equal",lt:"Less than",lte:"Less than or equal",gt:"Greater than",gte:"Greater than or equal",between:"Between",before:"Before",after:"After"}},T=Ze;var ce=new Set;function b(r){ce.has(r)||(ce.add(r),console.warn(`[FreeGrid] ${r}`))}var H=new Map([["en",T]]);function z(r){H.set(r.code,r)}function de(r){let e=r.toLowerCase();for(let n of H.keys())if(n.toLowerCase()===e)return n;let t=e.split("-")[0];if(t==="zh"&&H.has("zh-CN"))return"zh-CN";for(let n of H.keys())if(n.toLowerCase().split("-")[0]===t)return n}function Qe(){var r;return typeof navigator=="undefined"?[]:(r=navigator.languages)!=null&&r.length?navigator.languages:navigator.language?[navigator.language]:[]}function Je(r){var e,t;return{...T,...r,code:(e=r.code)!=null?e:"en",ops:{...T.ops,...(t=r.ops)!=null?t:{}}}}function F(r,e=Qe()){if(r&&typeof r=="object")return Je(r);if(typeof r=="string"){let t=de(r);return t?H.get(t):(b(`locale "${r}" is not registered \u2014 import it from "@freegridjs/core/locales/${r}" and pass the pack (or call registerLocale). Falling back to "en".`),T)}for(let t of e){let n=de(t);if(n)return H.get(n)}return T}var et={code:"de",noRows:"Keine Zeilen vorhanden",filter:"Filter",apply:"Anwenden",reset:"Zur\xFCcksetzen",selectAll:"(Alle ausw\xE4hlen)",search:"Suchen\u2026",blanks:"(Leer)",value:"Wert",valueTo:"Bis",sortAsc:"Aufsteigend sortieren",sortDesc:"Absteigend sortieren",clearSort:"Sortierung aufheben",pinLeft:"Links fixieren",pinRight:"Rechts fixieren",unpin:"Fixierung l\xF6sen",columnMenu:"Spaltenmen\xFC",selectRow:"Zeile ausw\xE4hlen",selectAllRows:"Alle Zeilen ausw\xE4hlen",chooseColumns:"Spalten ausw\xE4hlen",columns:"Spalten",autosizeThis:"Diese Spalte automatisch anpassen",autosizeAll:"Alle Spalten automatisch anpassen",resetColumns:"Spalten zur\xFCcksetzen",hideColumn:"Spalte ausblenden",close:"Schlie\xDFen",ops:{contains:"Enth\xE4lt",equals:"Gleich",notEquals:"Ungleich",startsWith:"Beginnt mit",endsWith:"Endet mit",blank:"Leer",notBlank:"Nicht leer",eq:"Gleich",ne:"Ungleich",lt:"Kleiner als",lte:"Kleiner oder gleich",gt:"Gr\xF6\xDFer als",gte:"Gr\xF6\xDFer oder gleich",between:"Zwischen",before:"Vor",after:"Nach"}},ue=et;var tt={code:"es",noRows:"No hay filas para mostrar",filter:"Filtro",apply:"Aplicar",reset:"Restablecer",selectAll:"(Seleccionar todo)",search:"Buscar\u2026",blanks:"(Vac\xEDos)",value:"Valor",valueTo:"Hasta",sortAsc:"Orden ascendente",sortDesc:"Orden descendente",clearSort:"Quitar orden",pinLeft:"Fijar a la izquierda",pinRight:"Fijar a la derecha",unpin:"Desfijar",columnMenu:"Men\xFA de columna",selectRow:"Seleccionar fila",selectAllRows:"Seleccionar todas las filas",chooseColumns:"Elegir columnas",columns:"Columnas",autosizeThis:"Ajustar esta columna",autosizeAll:"Ajustar todas las columnas",resetColumns:"Restablecer columnas",hideColumn:"Ocultar columna",close:"Cerrar",ops:{contains:"Contiene",equals:"Igual a",notEquals:"Distinto de",startsWith:"Empieza por",endsWith:"Termina en",blank:"Vac\xEDo",notBlank:"No vac\xEDo",eq:"Igual a",ne:"Distinto de",lt:"Menor que",lte:"Menor o igual que",gt:"Mayor que",gte:"Mayor o igual que",between:"Entre",before:"Antes de",after:"Despu\xE9s de"}},he=tt;var nt={code:"fr",noRows:"Aucune ligne \xE0 afficher",filter:"Filtre",apply:"Appliquer",reset:"R\xE9initialiser",selectAll:"(Tout s\xE9lectionner)",search:"Rechercher\u2026",blanks:"(Vides)",value:"Valeur",valueTo:"\xC0",sortAsc:"Tri croissant",sortDesc:"Tri d\xE9croissant",clearSort:"Annuler le tri",pinLeft:"\xC9pingler \xE0 gauche",pinRight:"\xC9pingler \xE0 droite",unpin:"D\xE9s\xE9pingler",columnMenu:"Menu de colonne",selectRow:"S\xE9lectionner la ligne",selectAllRows:"S\xE9lectionner toutes les lignes",chooseColumns:"Choisir les colonnes",columns:"Colonnes",autosizeThis:"Ajuster cette colonne",autosizeAll:"Ajuster toutes les colonnes",resetColumns:"R\xE9initialiser les colonnes",hideColumn:"Masquer la colonne",close:"Fermer",ops:{contains:"Contient",equals:"\xC9gal \xE0",notEquals:"Diff\xE9rent de",startsWith:"Commence par",endsWith:"Se termine par",blank:"Vide",notBlank:"Non vide",eq:"\xC9gal \xE0",ne:"Diff\xE9rent de",lt:"Inf\xE9rieur \xE0",lte:"Inf\xE9rieur ou \xE9gal \xE0",gt:"Sup\xE9rieur \xE0",gte:"Sup\xE9rieur ou \xE9gal \xE0",between:"Entre",before:"Avant",after:"Apr\xE8s"}},fe=nt;var ot={code:"ja",noRows:"\u8868\u793A\u3059\u308B\u30C7\u30FC\u30BF\u304C\u3042\u308A\u307E\u305B\u3093",filter:"\u30D5\u30A3\u30EB\u30BF\u30FC",apply:"\u9069\u7528",reset:"\u30EA\u30BB\u30C3\u30C8",selectAll:"(\u3059\u3079\u3066\u9078\u629E)",search:"\u691C\u7D22\u2026",blanks:"(\u7A7A\u767D)",value:"\u5024",valueTo:"\u7D42\u4E86\u5024",sortAsc:"\u6607\u9806\u3067\u4E26\u3079\u66FF\u3048",sortDesc:"\u964D\u9806\u3067\u4E26\u3079\u66FF\u3048",clearSort:"\u4E26\u3079\u66FF\u3048\u3092\u89E3\u9664",pinLeft:"\u5DE6\u306B\u56FA\u5B9A",pinRight:"\u53F3\u306B\u56FA\u5B9A",unpin:"\u56FA\u5B9A\u3092\u89E3\u9664",columnMenu:"\u5217\u30E1\u30CB\u30E5\u30FC",selectRow:"\u884C\u3092\u9078\u629E",selectAllRows:"\u3059\u3079\u3066\u306E\u884C\u3092\u9078\u629E",chooseColumns:"\u5217\u3092\u9078\u629E",columns:"\u5217",autosizeThis:"\u3053\u306E\u5217\u306E\u5E45\u3092\u81EA\u52D5\u8ABF\u6574",autosizeAll:"\u3059\u3079\u3066\u306E\u5217\u306E\u5E45\u3092\u81EA\u52D5\u8ABF\u6574",resetColumns:"\u5217\u3092\u30EA\u30BB\u30C3\u30C8",hideColumn:"\u5217\u3092\u975E\u8868\u793A",close:"\u9589\u3058\u308B",ops:{contains:"\u542B\u3080",equals:"\u7B49\u3057\u3044",notEquals:"\u7B49\u3057\u304F\u306A\u3044",startsWith:"\u3067\u59CB\u307E\u308B",endsWith:"\u3067\u7D42\u308F\u308B",blank:"\u7A7A\u767D",notBlank:"\u7A7A\u767D\u4EE5\u5916",eq:"\u7B49\u3057\u3044",ne:"\u7B49\u3057\u304F\u306A\u3044",lt:"\u3088\u308A\u5C0F\u3055\u3044",lte:"\u4EE5\u4E0B",gt:"\u3088\u308A\u5927\u304D\u3044",gte:"\u4EE5\u4E0A",between:"\u7BC4\u56F2\u5185",before:"\u3088\u308A\u524D",after:"\u3088\u308A\u5F8C"}},me=ot;var rt={code:"ko",noRows:"\uD45C\uC2DC\uD560 \uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4",filter:"\uD544\uD130",apply:"\uC801\uC6A9",reset:"\uCD08\uAE30\uD654",selectAll:"(\uC804\uCCB4 \uC120\uD0DD)",search:"\uAC80\uC0C9\u2026",blanks:"(\uBE48 \uAC12)",value:"\uAC12",valueTo:"\uB05D \uAC12",sortAsc:"\uC624\uB984\uCC28\uC21C \uC815\uB82C",sortDesc:"\uB0B4\uB9BC\uCC28\uC21C \uC815\uB82C",clearSort:"\uC815\uB82C \uD574\uC81C",pinLeft:"\uC67C\uCABD \uACE0\uC815",pinRight:"\uC624\uB978\uCABD \uACE0\uC815",unpin:"\uACE0\uC815 \uD574\uC81C",columnMenu:"\uCEEC\uB7FC \uBA54\uB274",selectRow:"\uD589 \uC120\uD0DD",selectAllRows:"\uC804\uCCB4 \uD589 \uC120\uD0DD",chooseColumns:"\uCEEC\uB7FC \uC120\uD0DD",columns:"\uCEEC\uB7FC",autosizeThis:"\uC774 \uCEEC\uB7FC \uB108\uBE44 \uC790\uB3D9 \uB9DE\uCDA4",autosizeAll:"\uBAA8\uB4E0 \uCEEC\uB7FC \uB108\uBE44 \uC790\uB3D9 \uB9DE\uCDA4",resetColumns:"\uCEEC\uB7FC \uCD08\uAE30\uD654",hideColumn:"\uCEEC\uB7FC \uC228\uAE30\uAE30",close:"\uB2EB\uAE30",ops:{contains:"\uD3EC\uD568",equals:"\uAC19\uC74C",notEquals:"\uAC19\uC9C0 \uC54A\uC74C",startsWith:"\uC2DC\uC791 \uBB38\uC790",endsWith:"\uB05D \uBB38\uC790",blank:"\uBE48 \uAC12",notBlank:"\uBE48 \uAC12 \uC544\uB2D8",eq:"\uAC19\uC74C",ne:"\uAC19\uC9C0 \uC54A\uC74C",lt:"\uBBF8\uB9CC",lte:"\uC774\uD558",gt:"\uCD08\uACFC",gte:"\uC774\uC0C1",between:"\uBC94\uC704",before:"\uC774\uC804",after:"\uC774\uD6C4"}},pe=rt;var st={code:"zh-CN",noRows:"\u6CA1\u6709\u53EF\u663E\u793A\u7684\u6570\u636E",filter:"\u7B5B\u9009",apply:"\u5E94\u7528",reset:"\u91CD\u7F6E",selectAll:"(\u5168\u9009)",search:"\u641C\u7D22\u2026",blanks:"(\u7A7A\u767D)",value:"\u503C",valueTo:"\u81F3",sortAsc:"\u5347\u5E8F\u6392\u5E8F",sortDesc:"\u964D\u5E8F\u6392\u5E8F",clearSort:"\u6E05\u9664\u6392\u5E8F",pinLeft:"\u56FA\u5B9A\u5728\u5DE6\u4FA7",pinRight:"\u56FA\u5B9A\u5728\u53F3\u4FA7",unpin:"\u53D6\u6D88\u56FA\u5B9A",columnMenu:"\u5217\u83DC\u5355",selectRow:"\u9009\u62E9\u884C",selectAllRows:"\u9009\u62E9\u6240\u6709\u884C",chooseColumns:"\u9009\u62E9\u5217",columns:"\u5217",autosizeThis:"\u81EA\u52A8\u8C03\u6574\u6B64\u5217\u5BBD\u5EA6",autosizeAll:"\u81EA\u52A8\u8C03\u6574\u6240\u6709\u5217\u5BBD\u5EA6",resetColumns:"\u91CD\u7F6E\u5217",hideColumn:"\u9690\u85CF\u5217",close:"\u5173\u95ED",ops:{contains:"\u5305\u542B",equals:"\u7B49\u4E8E",notEquals:"\u4E0D\u7B49\u4E8E",startsWith:"\u5F00\u5934\u662F",endsWith:"\u7ED3\u5C3E\u662F",blank:"\u4E3A\u7A7A",notBlank:"\u4E0D\u4E3A\u7A7A",eq:"\u7B49\u4E8E",ne:"\u4E0D\u7B49\u4E8E",lt:"\u5C0F\u4E8E",lte:"\u5C0F\u4E8E\u6216\u7B49\u4E8E",gt:"\u5927\u4E8E",gte:"\u5927\u4E8E\u6216\u7B49\u4E8E",between:"\u4ECB\u4E8E",before:"\u65E9\u4E8E",after:"\u665A\u4E8E"}},ge=st;var x="__fg_select__",ye={id:x,header:"",width:44,minWidth:44,maxWidth:44,pinned:"left",sortable:!1,resizable:!1,filter:!1},it=120,lt=40,at=["left","center","right"];function W(r){if(r.id===x||r.filter===!1)return null;if(r.filter)return r.filter;switch(r.type){case"number":return"number";case"date":return"date";case"boolean":return"set";default:return"text"}}var A=r=>r.id!==x&&r.sortable!==!1,G=r=>r.id!==x&&r.resizable!==!1;function B(r,e){var o,s;let t=(o=r.minWidth)!=null?o:lt,n=(s=r.maxWidth)!=null?s:1/0;return Math.round(Math.min(n,Math.max(t,e)))}function we(r){return r.children?1+Math.max(0,...r.children.map(we)):1}var q=class{constructor(e){this.depth=1;this.roots_=[];this.defs=[];this.byId=new Map;this.containerWidth=0;this.layout={left:[],center:[],right:[]};this.leafById=new Map;this.setDefs(e)}setDefs(e){this.defs=e,this.byId=new Map;let t=0,n=(s,i,l)=>{var f,g,p,m,y;let c=Array.isArray(s.children)&&s.children.length>0,a=t++,d=(f=s.id)!=null?f:c?`g${a}`:s.field;if(d||(d=`c${a}`,b(`column #${a} has neither "field" nor "id"; using "${d}"`)),this.byId.has(d)){let v=1;for(;this.byId.has(`${d}_${v}`);)v++;b(`duplicate column id "${d}"; renamed to "${d}_${v}"`),d=`${d}_${v}`}let u={id:d,def:s,parent:i,children:null,depth:l,width:B(s,(g=s.width)!=null?g:it),flex:s.flex&&s.flex>0?s.flex:null,hide:(p=s.hide)!=null?p:!1,pinned:(y=(m=s.pinned)!=null?m:i==null?void 0:i.pinned)!=null?y:null};return this.byId.set(d,u),c&&(u.children=o(s.children).map(v=>n(v,u,l+1))),u},o=s=>{let i=s.filter(l=>l!==null&&typeof l=="object");return i.length!==s.length&&b("columns contain entries that are not objects; they were skipped"),i};this.roots_=o(e).map(s=>n(s,null,0)),this.depth=Math.max(1,...this.roots_.map(we)),this.relayout()}setContainerWidth(e){if(e===this.containerWidth)return!1;this.containerWidth=e;let t=this.displayed().map(n=>n.width).join();return this.relayout(),t!==this.displayed().map(n=>n.width).join()}roots(){return this.roots_}reset(){this.setDefs(this.defs)}region(e){return this.layout[e]}displayed(){return[...this.layout.left,...this.layout.center,...this.layout.right]}regionWidth(e){let t=this.layout[e],n=t[t.length-1];return n?n.left+n.width:0}getColumn(e){return this.leafById.get(e)}getNode(e){return this.byId.get(e)}siblings(e){let t=this.byId.get(e);return t?t.parent?t.parent.children:this.roots_:[]}setWidth(e,t){let n=this.byId.get(e);return!n||n.children?0:(n.flex=null,n.width=B(n.def,t),this.relayout(),n.width)}setPinned(e,t){let n=this.byId.get(e);!n||n.children||e===x||(n.pinned=t,this.relayout())}setHide(e,t){let n=this.byId.get(e);!n||n.children||(n.hide=t,this.relayout())}move(e,t){let n=this.siblings(e),o=n.findIndex(i=>i.id===e);if(o<0)return;let[s]=n.splice(o,1);n.splice(Math.max(0,Math.min(n.length,t)),0,s),this.relayout()}headerCells(e){var o,s,i;let t=[],n=new Map;for(let l of this.layout[e]){let c=[];for(let a=l.node.parent;a;a=a.parent)c.unshift(a);for(let a of c){let d=n.get(a.id);if(d){d.width+=l.width;continue}let u={id:a.id,label:(o=a.def.header)!=null?o:"",isGroup:!0,column:null,node:a,row:a.depth,rowSpan:1,left:l.left,width:l.width};n.set(a.id,u),t.push(u)}t.push({id:l.id,label:(i=(s=l.def.header)!=null?s:l.def.field)!=null?i:"",isGroup:!1,column:l,node:l.node,row:l.node.depth,rowSpan:this.depth-l.node.depth,left:l.left,width:l.width})}return t}getState(){return this.leafNodes().filter(e=>e.id!==x).map(e=>{var t,n;return{colId:e.id,width:(n=(t=this.leafById.get(e.id))==null?void 0:t.width)!=null?n:e.width,hide:e.hide,pinned:e.pinned}})}applyState(e){let t=new Map;e.forEach((s,i)=>{t.set(s.colId,i);let l=this.byId.get(s.colId);!l||l.children||s.colId===x||(l.flex=null,l.width=B(l.def,s.width),l.hide=s.hide,l.pinned=s.pinned)}),t.set(x,-1);let n=s=>{var i;return s.children?Math.min(1/0,...s.children.map(n)):(i=t.get(s.id))!=null?i:1/0},o=s=>{let i=s.map((l,c)=>({n:l,i:c,r:n(l)}));i.sort((l,c)=>l.r===c.r?l.i-c.i:l.r-c.r),s.splice(0,s.length,...i.map(l=>l.n));for(let l of s)l.children&&o(l.children)};o(this.roots_),this.relayout()}leafNodes(){let e=[],t=n=>n.children?n.children.forEach(t):e.push(n);return this.roots_.forEach(t),e}relayout(){var c;let e=this.leafNodes().filter(a=>!a.hide),t=e.reduce((a,d)=>a+(d.flex?0:d.width),0),n=e.reduce((a,d)=>{var u;return a+((u=d.flex)!=null?u:0)},0),o=Math.max(0,this.containerWidth-t),s=a=>a.flex?B(a.def,Math.floor(o*a.flex/n)):a.width,i={left:[],center:[],right:[]};this.leafById=new Map;let l=0;for(let a of at){let d=0;for(let u of e){if(((c=u.pinned)!=null?c:"center")!==a)continue;let f={id:u.id,def:u.def,node:u,width:s(u),region:a,left:d,index:l++};d+=f.width,i[a].push(f),this.leafById.set(u.id,f)}}this.layout=i}};var P=class{constructor(){this.listeners=new Map}on(e,t){let n=this.listeners.get(e);return n||this.listeners.set(e,n=new Set),n.add(t),()=>{n.delete(t)}}emit(e,t){let n=this.listeners.get(e);if(n)for(let o of[...n])try{o(t)}catch(s){console.error("[FreeGrid] event listener threw",s)}}clear(){this.listeners.clear()}};function S(r){return r==null||typeof r=="string"&&r.trim()===""||typeof r=="number"&&Number.isNaN(r)}var ve=r=>String(r).padStart(2,"0");function _(r){if(S(r))return null;if(typeof r=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(r))return r;let e=r instanceof Date?r:new Date(r);return Number.isNaN(e.getTime())?null:`${e.getFullYear()}-${ve(e.getMonth()+1)}-${ve(e.getDate())}`}function $(r){var e;return S(r)?"":r instanceof Date?(e=_(r))!=null?e:"":String(r)}var I=()=>!0;function be(r){var e;switch(r.type){case"text":{let t=((e=r.value)!=null?e:"").toLowerCase(),n=o=>S(o)?"":String(o).toLowerCase();switch(r.op){case"contains":return o=>n(o).includes(t);case"equals":return o=>n(o)===t;case"notEquals":return o=>n(o)!==t;case"startsWith":return o=>n(o).startsWith(t);case"endsWith":return o=>n(o).endsWith(t);case"blank":return S;case"notBlank":return o=>!S(o)}return I}case"number":{let t=o=>S(o)?NaN:Number(o);if(r.op==="blank")return o=>Number.isNaN(t(o));if(r.op==="notBlank")return o=>!Number.isNaN(t(o));let n=r.value;if(n==null||Number.isNaN(n))return I;switch(r.op){case"eq":return o=>t(o)===n;case"ne":return o=>t(o)!==n;case"lt":return o=>t(o)<n;case"lte":return o=>t(o)<=n;case"gt":return o=>t(o)>n;case"gte":return o=>t(o)>=n;case"between":{let o=r.valueTo;if(o==null||Number.isNaN(o))return I;let s=Math.min(n,o),i=Math.max(n,o);return l=>{let c=t(l);return c>=s&&c<=i}}}return I}case"date":{if(r.op==="blank")return o=>_(o)===null;if(r.op==="notBlank")return o=>_(o)!==null;let t=r.value;if(!t)return I;let n=o=>_(o);switch(r.op){case"equals":return o=>n(o)===t;case"before":return o=>{let s=n(o);return s!==null&&s<t};case"after":return o=>{let s=n(o);return s!==null&&s>t};case"between":{let o=r.valueTo;if(!o)return I;let s=t<o?t:o,i=t<o?o:t;return l=>{let c=n(l);return c!==null&&c>=s&&c<=i}}}return I}case"set":{let t=new Set(r.values.map($));return n=>t.has($(n))}}return I}function xe(r){let e=r.trim().toLowerCase();return e?e.split(/\s+/):[]}function Ce(r,e){return r.every(t=>e.includes(t))}var Le=new Map;function ct(r){var o;if(r==="integer")return{maximumFractionDigits:0};if(r==="percent")return{style:"percent"};if(r.startsWith("currency:"))return{style:"currency",currency:r.slice(9)};if(!/^[#0,]*(\.[#0]+)?%?$/.test(r)||!/[#0]/.test(r))return null;let e=r.endsWith("%"),t=e?r.slice(0,-1):r,n=t.includes(".")?t.split(".")[1]:"";return{useGrouping:t.includes(","),minimumFractionDigits:((o=n.match(/0/g))!=null?o:[]).length,maximumFractionDigits:n.length,...e?{style:"percent"}:{}}}var V={date:{year:"numeric",month:"2-digit",day:"2-digit"},datetime:{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"},time:{hour:"2-digit",minute:"2-digit"},short:{dateStyle:"short"},medium:{dateStyle:"medium"},long:{dateStyle:"long"}};function te(r){if(S(r))return null;if(r instanceof Date)return Number.isNaN(r.getTime())?null:r;if(typeof r=="string"){let t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(r);if(t)return new Date(Number(t[1]),Number(t[2])-1,Number(t[3]))}if(typeof r!="string"&&typeof r!="number")return null;let e=new Date(r);return Number.isNaN(e.getTime())?null:e}function dt(r,e,t){var n;switch(r){case"number":{let o={};if(typeof e=="string"){let i=ct(e);i||b(`unknown number format "${e}"`),o=i!=null?i:{}}else e&&(o=e);let s=new Intl.NumberFormat(t,o);return i=>{if(S(i))return"";let l=typeof i=="number"?i:Number(i);return Number.isNaN(l)?String(i):s.format(l)}}case"date":{let o=V.date;typeof e=="string"?(V[e]||b(`unknown date format "${e}"`),o=(n=V[e])!=null?n:V.date):e&&(o=e);let s=new Intl.DateTimeFormat(t,o);return i=>{let l=te(i);return l?s.format(l):S(i)?"":String(i)}}case"boolean":return o=>o===!0?"\u2713":o===!1?"\u2717":"";default:return o=>S(o)?"":o instanceof Date?o.toISOString():String(o)}}function D(r,e){var s;let t=r.format,n=`${e}|${(s=r.type)!=null?s:"text"}|${typeof t=="string"?t:JSON.stringify(t!=null?t:null)}`,o=Le.get(n);return o||(o=dt(r.type,t,e),Le.set(n,o)),o}var Se=new Set(["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Tab","Home","End","PageUp","PageDown"]);function Ee(r,e,t,n){let o=i=>Math.max(0,Math.min(n.rows-1,i)),s=i=>Math.max(0,Math.min(n.cols-1,i));switch(r){case"ArrowUp":return{rowIndex:o(t.rowIndex-1),colIndex:t.colIndex};case"ArrowDown":return{rowIndex:o(t.rowIndex+1),colIndex:t.colIndex};case"ArrowLeft":return{rowIndex:t.rowIndex,colIndex:s(t.colIndex-1)};case"ArrowRight":return{rowIndex:t.rowIndex,colIndex:s(t.colIndex+1)};case"PageUp":return{rowIndex:o(t.rowIndex-n.pageRows),colIndex:t.colIndex};case"PageDown":return{rowIndex:o(t.rowIndex+n.pageRows),colIndex:t.colIndex};case"Home":return{rowIndex:e.ctrl?0:t.rowIndex,colIndex:0};case"End":return{rowIndex:e.ctrl?n.rows-1:t.rowIndex,colIndex:n.cols-1};case"Tab":{let i=t.rowIndex*n.cols+t.colIndex+(e.shift?-1:1);return i<0||i>=n.rows*n.cols?null:{rowIndex:Math.floor(i/n.cols),colIndex:i%n.cols}}default:return null}}function E(r,e){var t;if(r.valueGetter)try{return r.valueGetter(e)}catch{b(`valueGetter of column "${(t=r.id)!=null?t:r.field}" threw; rendering an empty cell`);return}return r.field!=null?e[r.field]:void 0}function Me(r){let{renderer:e}=r,t=e.bodyEl,n=e.root,o=c=>{let a=e.cellAt(c.target);if(!a)return null;let d=r.rowModel.getRow(a.rowIndex),u=r.columns.getColumn(a.colId);if(!d||!u)return null;let f=u.id===x?void 0:E(u.def,d.data);return{row:d.data,rowIndex:a.rowIndex,colId:a.colId,value:f,event:c}},s=c=>{let a=o(c);if(a){if(n.focus({preventScroll:!0}),r.setFocus(a.rowIndex,a.colId),r.options.rowSelection){let d=a.colId===x;r.selectFromClick(a.rowIndex,d||c.ctrlKey||c.metaKey,c.shiftKey)}r.events.emit("cellClick",a)}},i=c=>{let a=o(c);a&&r.events.emit("cellDoubleClick",a)},l=c=>{if(c.target!==n)return;let a=r.columns.displayed(),d=r.rowModel.getRowCount();if(!a.length||!d)return;let u=r.store.state.focus;if(c.key===" "&&u&&r.options.rowSelection){c.preventDefault(),r.selectFromClick(Math.min(u.rowIndex,d-1),!0,c.shiftKey);return}let f;if(!u)f=Se.has(c.key)&&c.key!=="Tab"?{rowIndex:0,colIndex:0}:null;else{let p=Math.max(0,a.findIndex(m=>m.id===u.colId));f=Ee(c.key,{ctrl:c.ctrlKey||c.metaKey,shift:c.shiftKey},{rowIndex:Math.min(u.rowIndex,d-1),colIndex:p},{rows:d,cols:a.length,pageRows:e.pageRows()})}if(!f)return;c.preventDefault();let g=a[f.colIndex].id;r.setFocus(f.rowIndex,g),e.ensureVisible(f.rowIndex,g)};return t.addEventListener("click",s),t.addEventListener("dblclick",i),n.addEventListener("keydown",l),()=>{t.removeEventListener("click",s),t.removeEventListener("dblclick",i),n.removeEventListener("keydown",l)}}function ne(r){let e=[];for(let t of r){if(S(t)||t instanceof Date)continue;let n=typeof t=="number"?t:Number(t);Number.isNaN(n)||e.push(n)}return e}function ke(r,e){let t=r.filter(o=>o instanceof Date&&!Number.isNaN(o.getTime()));if(t.length)return t.reduce((o,s)=>(e?s>o:s<o)?s:o);let n=ne(r);return n.length?e?Math.max(...n):Math.min(...n):null}function ut(r,e,t){if(typeof r=="function")return r(e,t);switch(r){case"sum":return ne(e).reduce((n,o)=>n+o,0);case"avg":{let n=ne(e);return n.length?n.reduce((o,s)=>o+s,0)/n.length:null}case"min":return ke(e,!1);case"max":return ke(e,!0);case"count":return t.length}return null}function oe(r){return typeof r=="object"&&r!==null&&"agg"in r?r:{agg:r}}function Re(r,e,t){let n=new Map,o=(s,i)=>{let l=n.get(s);return l||n.set(s,l=e.map(c=>E(i,c))),l};return r.map(s=>{var l;let i={};for(let[c,a]of Object.entries((l=s.columns)!=null?l:{})){let d=t(c);d&&(i[c]=ut(oe(a).agg,o(c,d),e))}return i})}function Te(r,e,t,n,o=4){if(n<=0||t<=0)return{first:0,last:-1};let s=Math.max(0,Math.floor(r/t)-o),i=Math.floor((r+e)/t);return{first:Math.min(s,n-1),last:Math.min(n-1,i+o)}}function re(r,e,t,n,o=2){let s=r.length;if(!s)return{first:0,last:-1};let i=0,l=s-1;for(;i<l;){let d=i+l>>1;r[d]+e[d]<=t?i=d+1:l=d}let c=i,a=t+n;for(l=s-1;i<l;){let d=i+l+1>>1;r[d]<a?i=d:l=d-1}return{first:Math.max(0,c-o),last:Math.min(s-1,Math.max(c,i)+o)}}var N=["left","center","right"],ht=6,Ie=2,ft='<svg viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"><path d="M3 4h10M3 8h10M3 12h10" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></svg>',mt='<svg viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"><path d="M2.5 3h11l-4.2 5v4.5l-2.6 1.2V8z" fill="currentColor"/></svg>';function h(r,e="",t={}){let n=document.createElement(r);e&&(n.className=e);for(let[o,s]of Object.entries(t))n.setAttribute(o,s);return n}var K=class{constructor(e,t,n){this.grid=t;this.opts=n;this.painted={left:new Map,center:new Map,right:new Map};this.pool={left:[],center:[],right:[]};this.frame=0;this.headerDirty=!0;this.version=0;this.lastRange={first:0,last:-1};this.summaryEl=null;this.summaryPanes=null;this.summaryInners=null;this.canvasSummary={left:[],center:[],right:[]};this.topOffset=0;this.onScroll=()=>{this.frame&&cancelAnimationFrame(this.frame),this.frame=0,this.render()};this.onSideWheel=e=>{e.deltaY&&(e.preventDefault(),this.scroller.scrollTop+=e.deltaY)};this.root=h("div","",{role:"grid",tabindex:"0"}),this.headerEl=h("div","fg-header",{role:"rowgroup"}),this.bodyEl=h("div","fg-body",{role:"rowgroup"});let o=s=>({left:h("div",`${s} ${s}-left`),center:h("div",`${s} ${s}-center`),right:h("div",`${s} ${s}-right`)});this.headerPanes=o("fg-header-pane"),this.headerInners=o("fg-header-inner"),this.bodyPanes=o("fg-body-pane"),this.canvases=o("fg-canvas");for(let s of N)this.headerPanes[s].dataset.region=s,this.bodyPanes[s].dataset.region=s,this.headerPanes[s].append(this.headerInners[s]),this.bodyPanes[s].append(this.canvases[s]),this.headerEl.append(this.headerPanes[s]),this.bodyEl.append(this.bodyPanes[s]);this.scroller=this.bodyPanes.center,this.overlay=h("div","fg-overlay",{role:"status"}),this.main=h("div","fg-main"),this.main.append(this.headerEl,this.bodyEl,this.overlay),this.root.append(this.main),e.append(this.root),this.applyTheme(),this.scroller.addEventListener("scroll",this.onScroll,{passive:!0}),this.bodyPanes.left.addEventListener("wheel",this.onSideWheel,{passive:!1}),this.bodyPanes.right.addEventListener("wheel",this.onSideWheel,{passive:!1})}applyFont(e,t){e?this.root.style.setProperty("--fg-font-size",`${e}px`):this.root.style.removeProperty("--fg-font-size"),t?this.root.style.setProperty("--fg-font",t):this.root.style.removeProperty("--fg-font")}applyTheme(){this.root.className=`fg-root fg-theme-${this.grid.store.state.theme}`}invalidate(e={}){e.header&&(this.headerDirty=!0),e.rows&&this.version++,this.schedule()}schedule(){this.frame||(this.frame=requestAnimationFrame(()=>{this.frame=0,this.render()}))}render(){var M,k;let{columns:e,rowModel:t,store:n,options:o}=this.grid,{rowHeight:s,headerHeight:i}=this.opts,l=this.scroller.offsetWidth-this.scroller.clientWidth;e.setContainerWidth(Math.max(0,this.main.clientWidth-l))&&(this.headerDirty=!0,this.version++);let c=t.getRowCount(),a=this.grid.summary(),d=a?a.opts.rows.length:0,u=(M=a==null?void 0:a.opts.position)!=null?M:"bottom",f=a?a.opts.pinned!==!1:!1;this.topOffset=a&&!f&&u==="top"?d*s:0;let g=a&&!f&&u==="bottom"?d*s:0;this.syncSummaryPane(a&&f?u:null,d*s);let p=e.depth*i;this.headerEl.style.height=`${p}px`;for(let L of N){let w=e.regionWidth(L);L!=="center"&&(this.headerPanes[L].style.width=this.bodyPanes[L].style.width=`${w}px`,this.headerPanes[L].hidden=this.bodyPanes[L].hidden=w===0),this.canvases[L].style.width=`${w}px`,this.canvases[L].style.height=`${c*s+this.topOffset+g}px`}let m=this.scroller.offsetHeight-this.scroller.clientHeight;this.bodyPanes.left.style.marginBottom=this.bodyPanes.right.style.marginBottom=`${m}px`,this.root.setAttribute("aria-rowcount",String(c+e.depth)),this.root.setAttribute("aria-colcount",String(e.displayed().length)),o.rowSelection==="multiple"&&this.root.setAttribute("aria-multiselectable","true"),this.headerDirty&&(this.headerDirty=!1,this.renderHeader()),this.renderRows(c),this.renderSummary(c,a&&a.opts.rows,(k=a==null?void 0:a.values)!=null?k:[],f,u),this.overlay.hidden=c>0,this.overlay.textContent=n.state.locale.noRows,this.overlay.style.top=`${p}px`;let{scrollTop:y,scrollLeft:v}=this.scroller;this.bodyPanes.left.scrollTop=this.bodyPanes.right.scrollTop=y,this.headerInners.center.style.transform=`translateX(${-v}px)`,this.summaryInners&&(this.summaryInners.center.style.transform=`translateX(${-v}px)`)}renderHeader(){let{columns:e,store:t}=this.grid,{sort:n,filters:o,locale:s}=t.state;for(let i of N){let l=this.headerInners[i];l.style.width=`${e.regionWidth(i)}px`,l.style.height=`${e.depth*this.opts.headerHeight}px`,l.replaceChildren(...e.headerCells(i).map(c=>this.headerCell(c,n,o,s)))}}headerCell(e,t,n,o){var d;let s=this.opts.headerHeight,i=h("div",e.isGroup?"fg-header-cell fg-header-group":"fg-header-cell",{role:"columnheader"});if(i.dataset.col=e.id,i.style.left=`${e.left}px`,i.style.top=`${e.row*s}px`,i.style.width=`${e.width}px`,i.style.height=`${e.rowSpan*s}px`,e.id===x)return i.classList.add("fg-header-select"),i.append(this.selectAllBox(o)),i;let l=h("span","fg-header-label");if(l.textContent=e.label,i.append(l),e.isGroup||!e.column)return i;let c=e.node.def;i.setAttribute("aria-colindex",String(e.column.index+1)),((d=c.align)!=null?d:c.type==="number"?"right":"left")==="right"&&i.classList.add("fg-align-right");let a=t.findIndex(u=>u.colId===e.id);if(i.setAttribute("aria-sort",a<0?"none":t[a].dir==="asc"?"ascending":"descending"),A(c)&&i.classList.add("fg-sortable"),a>=0){let u=h("span","fg-sort-icon");if(u.textContent=t[a].dir==="asc"?"\u2191":"\u2193",t.length>1){let f=h("sup");f.textContent=String(a+1),u.append(f)}i.append(u)}if(A(c)||W(c)){let u=!!n[e.id],f=h("button",u?"fg-menu-btn fg-filter-active":"fg-menu-btn",{type:"button",tabindex:"-1","aria-label":o.columnMenu});f.innerHTML=u?mt:ft,i.append(f)}return G(c)&&i.append(h("div","fg-resize",{"aria-hidden":"true"})),i}selectAllBox(e){let t=this.grid.rowModel.rows(),n=this.grid.store.state.selected,o=0;for(let i of t)n.has(i.id)&&o++;let s=h("input","fg-checkbox fg-select-all",{type:"checkbox",tabindex:"-1","aria-label":e.selectAllRows});return s.checked=t.length>0&&o===t.length,s.indeterminate=o>0&&o<t.length,s.hidden=this.grid.options.rowSelection!=="multiple",s}renderRows(e){var d;let{columns:t,rowModel:n,store:o}=this.grid,{selected:s,focus:i}=o.state,l=Te(Math.max(0,this.scroller.scrollTop-this.topOffset),this.scroller.clientHeight,this.opts.rowHeight,e,ht);this.lastRange=l;let c=t.region("center"),a=re(c.map(u=>u.left),c.map(u=>u.width),this.scroller.scrollLeft,this.scroller.clientWidth,Ie);for(let u of N){let f=u==="center"?c.slice(a.first,a.last+1):t.region(u),g=this.painted[u];for(let[m,y]of g)m>=l.first&&m<=l.last&&f.length||(y.el.remove(),this.pool[u].push(y.el),g.delete(m));if(!f.length)continue;let p=u==="center"?`${a.first}-${a.last}`:"";for(let m=l.first;m<=l.last;m++){let y=n.getRow(m),v=s.has(y.id),M=i&&i.rowIndex===m?i.colId:"",k=`${y.id}|${this.version}|${p}|${v?1:0}|${M}`,L=g.get(m);if(!L){let w=(d=this.pool[u].pop())!=null?d:h("div","fg-row",{role:"row"});this.canvases[u].append(w),L={el:w,key:""},g.set(m,L)}L.key!==k&&(L.key=k,this.paintRow(L.el,y,m,f,v,M))}}}paintRow(e,t,n,o,s,i){let l=this.opts.rowHeight;for(e.className=`fg-row${n%2?" fg-row-odd":""}${s?" fg-row-selected":""}`,e.style.transform=`translateY(${n*l+this.topOffset}px)`,e.style.height=`${l}px`,e.dataset.row=String(n),e.setAttribute("aria-rowindex",String(n+1+this.grid.columns.depth)),this.grid.options.rowSelection&&e.setAttribute("aria-selected",String(s));e.childElementCount>o.length;)e.lastElementChild.remove();for(;e.childElementCount<o.length;)e.append(h("div","fg-cell",{role:"gridcell"}));o.forEach((c,a)=>this.paintCell(e.children[a],t,n,c,s,i===c.id))}paintCell(e,t,n,o,s,i){var g;let l=this.grid.store.state.locale;e.style.left=`${o.left}px`,e.style.width=`${o.width}px`,e.dataset.col=o.id,e.setAttribute("aria-colindex",String(o.index+1));let c=i?"fg-cell fg-cell-focused":"fg-cell";if(o.id===x){e.className=`${c} fg-cell-select`;let p=h("input","fg-checkbox",{type:"checkbox",tabindex:"-1","aria-label":l.selectRow});p.checked=s,e.replaceChildren(p);return}let a=o.def,d=E(a,t.data),u=D(a,l.code)(d);c+=` fg-align-${(g=a.align)!=null?g:a.type==="number"?"right":a.type==="boolean"?"center":"left"}`;let f={value:d,formatted:u,row:t.data,rowIndex:n,column:a};if(a.cellClass)try{let p=typeof a.cellClass=="function"?a.cellClass(f):a.cellClass;p&&(c+=` ${p}`)}catch{b(`cellClass of column "${o.id}" threw`)}if(e.className=c,!a.renderer){e.textContent=u;return}try{let p=a.renderer(f);typeof p=="string"?e.innerHTML=p:e.replaceChildren(p)}catch{b(`renderer of column "${o.id}" threw; rendering an empty cell`),e.textContent=""}}cellAt(e){let t=e instanceof Element?e.closest(".fg-cell"):null,n=t==null?void 0:t.parentElement;return!t||!(n!=null&&n.dataset.row)||!t.dataset.col?null:{rowIndex:Number(n.dataset.row),colId:t.dataset.col}}ensureVisible(e,t){let n=this.scroller,o=e*this.opts.rowHeight+this.topOffset,s=o+this.opts.rowHeight;o<n.scrollTop?n.scrollTop=o:s>n.scrollTop+n.clientHeight&&(n.scrollTop=s-n.clientHeight);let i=t?this.grid.columns.getColumn(t):void 0;(i==null?void 0:i.region)==="center"&&(i.left<n.scrollLeft?n.scrollLeft=i.left:i.left+i.width>n.scrollLeft+n.clientWidth&&(n.scrollLeft=i.left+i.width-n.clientWidth))}syncSummaryPane(e,t){var s;if(!e){(s=this.summaryEl)==null||s.remove(),this.summaryEl=this.summaryPanes=this.summaryInners=null;return}if(!this.summaryEl){let i=l=>({left:h("div",`${l} ${l}-left`),center:h("div",`${l} ${l}-center`),right:h("div",`${l} ${l}-right`)});this.summaryEl=h("div","fg-summary",{role:"rowgroup"}),this.summaryPanes=i("fg-summary-pane"),this.summaryInners=i("fg-summary-inner");for(let l of N)this.summaryPanes[l].append(this.summaryInners[l]),this.summaryEl.append(this.summaryPanes[l])}this.summaryEl.className=`fg-summary fg-summary-${e}`;let n=e==="top"?this.bodyEl:this.overlay;this.summaryEl.nextElementSibling!==n&&this.main.insertBefore(this.summaryEl,n),this.summaryEl.style.height=`${t}px`;for(let i of N){let l=this.grid.columns.regionWidth(i);i!=="center"&&(this.summaryPanes[i].style.width=`${l}px`,this.summaryPanes[i].hidden=l===0),this.summaryInners[i].style.width=`${l}px`,this.summaryInners[i].style.height=`${t}px`}let o=this.scroller.offsetWidth-this.scroller.clientWidth;this.summaryPanes.center.style.marginRight=`${o}px`}renderSummary(e,t,n,o,s){for(let u of N){for(let f of this.canvasSummary[u])f.remove();this.canvasSummary[u]=[]}if(!t)return;let{columns:i}=this.grid,l=this.opts.rowHeight,c=i.region("center"),a=re(c.map(u=>u.left),c.map(u=>u.width),this.scroller.scrollLeft,this.scroller.clientWidth,Ie),d=i.displayed().filter(u=>u.id!==x);for(let u of N){let f=u==="center"?c.slice(a.first,a.last+1):i.region(u),g=t.map((p,m)=>{var k,L,w;let y=p.label!=null&&(L=(k=d.find(C=>{var R;return!(C.id in((R=p.columns)!=null?R:{}))}))==null?void 0:k.id)!=null?L:null,v=h("div","fg-row fg-summary-row",{role:"row"}),M=o||s==="top"?m*l:e*l+m*l;v.style.transform=`translateY(${M}px)`,v.style.height=`${l}px`;for(let C of f)v.append(this.summaryCell(C,p,(w=n[m])!=null?w:{},y));return v});o?this.summaryInners[u].replaceChildren(...g):(this.canvases[u].append(...g),this.canvasSummary[u]=g)}}summaryCell(e,t,n,o){var g,p,m,y,v;let s=h("div","fg-cell",{role:"gridcell"});s.style.left=`${e.left}px`,s.style.width=`${e.width}px`,s.dataset.col=e.id;let i=e.def,l=(g=i.align)!=null?g:i.type==="number"?"right":i.type==="boolean"?"center":"left";s.className=`fg-cell fg-align-${l}`;let c=(p=t.columns)==null?void 0:p[e.id];if(c===void 0)return e.id===o&&(s.textContent=(m=t.label)!=null?m:"",s.classList.add("fg-summary-label")),s;let a=n[e.id],d=oe(c),u=this.grid.store.state.locale.code,f;if(a==null||a==="")f="";else if(typeof a=="string")f=a;else if(d.agg==="count")f=new Intl.NumberFormat(u).format(a);else{let M=(y=i.type)!=null?y:typeof a=="number"?"number":a instanceof Date?"date":void 0;f=D({...i,type:M,format:(v=d.format)!=null?v:i.format},u)(a)}return s.textContent=d.prefix&&f?`${d.prefix} ${f}`:f,s}renderedRange(){return this.lastRange}measureText(e,t){let n=getComputedStyle(this.main),o=parseFloat(getComputedStyle(this.root).getPropertyValue("--fg-font-size"))||13;this.measureCtx===void 0&&(this.measureCtx=document.createElement("canvas").getContext("2d"));let s=this.measureCtx;return s?(s.font=`${t?600:400} ${o}px ${n.fontFamily||"sans-serif"}`,s.measureText(e).width):e.length*o*.6}scrollToRow(e){this.scroller.scrollTop=Math.max(0,e)*this.opts.rowHeight+this.topOffset}pageRows(){return Math.max(1,Math.floor(this.scroller.clientHeight/this.opts.rowHeight))}destroy(){this.frame&&cancelAnimationFrame(this.frame),this.scroller.removeEventListener("scroll",this.onScroll),this.root.remove()}};var pt=4,j=r=>r.id!==x&&(r.children?r.children.some(j):r.def.chooser!==!1),se=r=>{var e,t;return(t=(e=r.def.header)!=null?e:r.def.field)!=null?t:r.id},U=class{constructor(e){this.grid=e;this.collapsed=new Set;this.el=h("div","fg-chooser"),this.search=h("input","fg-input fg-chooser-search",{type:"search"});let t=h("label","fg-chooser-all");this.allBox=h("input","fg-checkbox",{type:"checkbox"}),this.allText=h("span"),t.append(this.allBox,this.allText),this.list=h("div","fg-chooser-list",{role:"tree"}),this.el.append(this.search,t,this.list),this.search.addEventListener("input",()=>this.refresh()),this.allBox.addEventListener("change",()=>this.setVisible(this.matchingLeaves(),this.allBox.checked)),this.list.addEventListener("change",n=>{let o=n.target,s=this.nodeOf(o);s&&this.setVisible(this.leavesOf(s),o.checked)}),this.list.addEventListener("click",n=>{let o=n.target.closest(".fg-chooser-caret"),s=o&&this.nodeOf(o);s&&(this.collapsed.has(s.id)?this.collapsed.delete(s.id):this.collapsed.add(s.id),this.refresh())}),this.list.addEventListener("pointerdown",n=>this.onPointerDown(n)),this.refresh()}refresh(){let e=this.grid.store.state.locale;this.search.placeholder=e.search,this.search.setAttribute("aria-label",e.search),this.allText.textContent=e.selectAll;let t=this.query(),n=[],o=(l,c)=>{for(let a of l)!j(a)||t&&!this.subtreeMatches(a,t)||(n.push(this.item(a,c)),a.children&&(t||!this.collapsed.has(a.id))&&o(a.children,c+1))};o(this.grid.columns.roots(),0),this.list.replaceChildren(...n);let s=this.matchingLeaves(),i=s.filter(l=>!l.hide).length;this.allBox.checked=s.length>0&&i===s.length,this.allBox.indeterminate=i>0&&i<s.length}query(){return this.search.value.trim().toLowerCase()}subtreeMatches(e,t){for(let n=e;n;n=n.parent)if(se(n).toLowerCase().includes(t))return!0;return!!e.children&&e.children.some(n=>j(n)&&this.subtreeMatches(n,t))}leavesOf(e){return j(e)?e.children?e.children.flatMap(t=>this.leavesOf(t)):[e]:[]}matchingLeaves(){let e=this.query(),t=this.grid.columns.roots().flatMap(n=>this.leavesOf(n));return e?t.filter(n=>this.subtreeMatches(n,e)):t}nodeOf(e){var n;let t=(n=e.closest(".fg-chooser-item"))==null?void 0:n.dataset.col;return t?this.grid.columns.getNode(t):void 0}setVisible(e,t){this.grid.setColumnsVisible(e.filter(n=>!n.def.lockVisible).map(n=>n.id),t)}item(e,t){let n=h("div",e.children?"fg-chooser-item fg-chooser-group":"fg-chooser-item",{role:"treeitem"});n.dataset.col=e.id,n.style.paddingLeft=`${6+t*16}px`;let o=h("span","fg-chooser-handle",{"aria-hidden":"true"});if(o.textContent="\u22EE\u22EE",n.append(o),e.children){let a=!this.collapsed.has(e.id),d=h("button","fg-chooser-caret",{type:"button",tabindex:"-1","aria-hidden":"true"});d.textContent=a?"\u25BE":"\u25B8",n.setAttribute("aria-expanded",String(a)),n.append(d)}let s=this.leavesOf(e),i=s.filter(a=>!a.hide).length,l=h("input","fg-checkbox",{type:"checkbox","aria-label":se(e)});l.checked=s.length>0&&i===s.length,l.indeterminate=i>0&&i<s.length,l.disabled=s.every(a=>a.def.lockVisible);let c=h("span","fg-chooser-label");if(c.textContent=se(e),n.append(l,c),!e.children&&e.pinned){let a=h("span","fg-chooser-pin");a.textContent=e.pinned==="left"?"\u21E4":"\u21E5",n.append(a)}return n}onPointerDown(e){let t=e.target.closest(".fg-chooser-handle"),n=t==null?void 0:t.closest(".fg-chooser-item"),o=n&&this.nodeOf(n);if(!n||!o||e.button!==0)return;e.preventDefault();let s=new Set(this.grid.columns.siblings(o.id).map(g=>g.id).filter(g=>g!==o.id)),i=[...this.list.querySelectorAll(".fg-chooser-item")].filter(g=>s.has(g.dataset.col)),l=e.clientY,c=!1,a=-1,d=h("div","fg-chooser-marker"),u=g=>{if(!c){if(Math.abs(g.clientY-l)<pt||!i.length)return;c=!0,n.classList.add("fg-dragging"),this.list.append(d)}a=i.filter(y=>{let v=y.getBoundingClientRect();return g.clientY>v.top+v.height/2}).length;let p=this.list.getBoundingClientRect().top-this.list.scrollTop,m=a<i.length?i[a].getBoundingClientRect().top:i[i.length-1].getBoundingClientRect().bottom;d.style.top=`${m-p-1}px`},f=()=>{if(window.removeEventListener("pointermove",u),window.removeEventListener("pointerup",f),d.remove(),n.classList.remove("fg-dragging"),!c||a<0)return;let g=this.grid.columns.siblings(o.id).map(y=>y.id).filter(y=>y!==o.id),p=a<i.length?g.indexOf(i[a].dataset.col):g.indexOf(i[i.length-1].dataset.col)+1;g[0]===x&&(p=Math.max(1,p));let m=this.grid.columns.siblings(o.id).findIndex(y=>y.id===o.id);p!==m&&(this.grid.columns.move(o.id,p),this.grid.layoutChanged(),this.grid.events.emit("columnMove",{colId:o.id,toIndex:p}))};window.addEventListener("pointermove",u),window.addEventListener("pointerup",f)}},Y=class{constructor(e){this.grid=e;this.popup=null;this.panel=null;this.off=[]}get isOpen(){return!!this.popup}open(){this.close();let e=this.grid.store.state.locale,t=h("div",`fg-menu fg-chooser-dialog fg-theme-${this.grid.store.state.theme}`,{role:"dialog","aria-label":e.chooseColumns});this.grid.applyFontTo(t);let n=h("div","fg-chooser-head"),o=h("span","fg-menu-title");o.textContent=e.chooseColumns;let s=h("button","fg-chooser-close",{type:"button","aria-label":e.close});s.textContent="\xD7",s.addEventListener("click",()=>this.close()),n.append(o,s),this.panel=new U(this.grid),t.append(n,this.panel.el),document.body.append(t);let i=this.grid.renderer.root.getBoundingClientRect(),l=t.offsetWidth||280;t.style.left=`${Math.max(4,Math.min(i.right-l-8,window.innerWidth-l-4))}px`,t.style.top=`${Math.max(4,i.top+8)}px`,this.popup=t;let c=d=>{t.contains(d.target)||this.close()},a=d=>{d.key==="Escape"&&this.close()};document.addEventListener("pointerdown",c,!0),document.addEventListener("keydown",a,!0),this.off.push(()=>document.removeEventListener("pointerdown",c,!0),()=>document.removeEventListener("keydown",a,!0)),t.querySelector(".fg-chooser-search").focus()}refresh(){var e;(e=this.panel)==null||e.refresh()}close(){var e;for(let t of this.off)t();this.off=[],(e=this.popup)==null||e.remove(),this.popup=null,this.panel=null}},X=class{constructor(e,t){this.grid=e;this.el=h("div","fg-sidebar"),this.panelHost=h("div","fg-sidebar-panel"),this.panel=new U(e),this.panelHost.append(this.panel.el);let n=h("div","fg-sidebar-tabs");this.tab=h("button","fg-sidebar-tab",{type:"button"}),this.tab.addEventListener("click",()=>this.toggle()),n.append(this.tab),this.el.append(this.panelHost,n),e.renderer.root.append(this.el),this.panelHost.hidden=!t,this.refresh()}get isOpen(){return!this.panelHost.hidden}toggle(e=!this.isOpen){this.panelHost.hidden=!e,this.tab.setAttribute("aria-expanded",String(e)),this.grid.renderer.invalidate({header:!0,rows:!0})}refresh(){this.tab.textContent=this.grid.store.state.locale.columns,this.tab.setAttribute("aria-expanded",String(this.isOpen)),this.panel.refresh()}};var gt=5;function De(r,e){let t=o=>r(o),n=o=>{window.removeEventListener("pointermove",t),window.removeEventListener("pointerup",n),window.removeEventListener("pointercancel",n),e(o)};window.addEventListener("pointermove",t),window.addEventListener("pointerup",n),window.addEventListener("pointercancel",n)}function yt(r,e,t){let n=r.columns.getColumn(t);if(!n)return;let o=e.clientX,s=n.width;r.renderer.root.classList.add("fg-resizing"),De(i=>{r.columns.setWidth(t,s+i.clientX-o),r.layoutChanged()},()=>{var l,c;r.renderer.root.classList.remove("fg-resizing");let i=(c=(l=r.columns.getColumn(t))==null?void 0:l.width)!=null?c:s;i!==s&&r.events.emit("columnResize",{colId:t,width:i})})}function wt(r,e,t,n){var c,a;let o=new Set(r.columns.siblings(e).map(d=>d.id).filter(d=>d!==e&&d!==x)),s=[...n.querySelectorAll(".fg-header-cell")].filter(d=>o.has(d.dataset.col)).map(d=>({id:d.dataset.col,el:d})),i=h("div",`fg-drag-ghost fg-theme-${r.store.state.theme}`);i.textContent=(a=(c=t.querySelector(".fg-header-label"))==null?void 0:c.textContent)!=null?a:"",r.applyFontTo(i),document.body.append(i);let l=h("div","fg-drop-marker");return l.style.height=`${r.renderer.headerEl.offsetHeight}px`,r.renderer.root.append(l),t.classList.add("fg-dragging"),{ghost:i,marker:l,cell:t,sibs:s,target:-1}}function vt(r,e,t,n){e.ghost.style.transform=`translate(${t+12}px, ${n+8}px)`;let o=0;for(let l of e.sibs){let c=l.el.getBoundingClientRect();t>c.left+c.width/2&&o++}e.target=o;let s=r.renderer.root.getBoundingClientRect().left,i=o<e.sibs.length?e.sibs[o].el.getBoundingClientRect().left:e.sibs.length?e.sibs[e.sibs.length-1].el.getBoundingClientRect().right:e.cell.getBoundingClientRect().left;e.marker.style.left=`${i-s-1}px`}function bt(r,e,t){if(t.ghost.remove(),t.marker.remove(),t.cell.classList.remove("fg-dragging"),t.target<0||!t.sibs.length)return;let n=r.columns.siblings(e),o=n.findIndex(l=>l.id===e),s=n.map(l=>l.id).filter(l=>l!==e),i=t.target<t.sibs.length?s.indexOf(t.sibs[t.target].id):s.indexOf(t.sibs[t.sibs.length-1].id)+1;s[0]===x&&(i=Math.max(1,i)),i!==o&&(r.columns.move(e,i),r.layoutChanged(),r.events.emit("columnMove",{colId:e,toIndex:i}))}function xt(r,e,t,n){let o=r.columns.getNode(t),s=n.closest(".fg-header-pane");if(!o||!s)return;let i=e.clientX,l=null;De(c=>{if(!l){if(Math.abs(c.clientX-i)<gt)return;l=wt(r,t,n,s)}vt(r,l,c.clientX,c.clientY)},c=>{l?bt(r,t,l):!o.children&&A(o.def)&&r.toggleSort(t,c.shiftKey||c.ctrlKey||c.metaKey)})}function Ne(r){let e=r.renderer.headerEl,t=o=>{if(o.button!==0)return;let s=o.target,i=s.closest(".fg-header-cell"),l=i==null?void 0:i.dataset.col;!i||!l||l===x||s.closest(".fg-menu-btn")||(o.preventDefault(),s.closest(".fg-resize")?yt(r,o,l):xt(r,o,l,i))},n=o=>{var l;let s=o.target,i=s.closest(".fg-menu-btn");if(i){let c=(l=i.closest(".fg-header-cell"))==null?void 0:l.dataset.col;c&&r.menu.toggle(c,i);return}s.closest(".fg-select-all")&&r.toggleSelectAll()};return e.addEventListener("pointerdown",t),e.addEventListener("click",n),()=>{e.removeEventListener("pointerdown",t),e.removeEventListener("click",n)}}function Ae(r,e,t){return typeof r=="number"&&typeof e=="number"?r-e:r instanceof Date&&e instanceof Date?r.getTime()-e.getTime():typeof r=="boolean"&&typeof e=="boolean"?Number(r)-Number(e):t.compare(String(r),String(e))}function Ct(r,e){var t,n;if(S(e))return null;if(r.type==="number"){let o=typeof e=="number"?e:Number(e);return Number.isNaN(o)?null:o}return r.type==="date"?(n=(t=te(e))==null?void 0:t.getTime())!=null?n:null:e}function He(r,e,t){let n=S(r),o=S(e);return n||o?n===o?0:n?1:-1:Ae(r,e,t)}function Pe(r,e,t,n){let o=e.map(l=>({def:t(l.colId),mul:l.dir==="desc"?-1:1})).filter(l=>!!l.def);if(!o.length)return r;let s=o.map(l=>r.map(c=>{let a=E(l.def,c.data);return l.def.comparator?a:Ct(l.def,a)})),i=r.map((l,c)=>c);return i.sort((l,c)=>{var a;for(let d=0;d<o.length;d++){let{def:u,mul:f}=o[d],g=s[d][l],p=s[d][c],m;if(u.comparator)try{m=(Number(u.comparator(g,p,r[l].data,r[c].data))||0)*f}catch{b(`comparator of column "${(a=u.id)!=null?a:u.field}" threw; treating values as equal`),m=0}else{let y=S(g),v=S(p);m=y||v?y===v?0:y?1:-1:Ae(g,p,n)*f}if(m)return m}return l-c}),i.map(l=>r[l])}var Fe={text:["contains","equals","notEquals","startsWith","endsWith","blank","notBlank"],number:["eq","ne","lt","lte","gt","gte","between","blank","notBlank"],date:["equals","before","after","between","blank","notBlank"]},$e=["blank","notBlank"],ie=500,Z=class{constructor(e){this.grid=e;this.popup=null;this.colId=null;this.off=[]}get openColumn(){return this.colId}toggle(e,t){this.colId===e?this.close():this.open(e,t)}open(e,t){var p;this.close();let n=this.grid.columns.getNode(e);if(!n||n.children||e===x)return;let o=this.grid.store.state.locale,s=n.def,i=h("div",`fg-menu fg-theme-${this.grid.store.state.theme}`,{role:"dialog","aria-label":o.columnMenu});this.grid.applyFontTo(i),A(s)&&i.append(this.section([[o.sortAsc,()=>this.grid.setSort([{colId:e,dir:"asc"}])],[o.sortDesc,()=>this.grid.setSort([{colId:e,dir:"desc"}])],[o.clearSort,()=>this.grid.setSort(this.grid.store.state.sort.filter(m=>m.colId!==e))]])),i.append(this.section([[o.pinLeft,()=>this.grid.setPinned(e,"left")],[o.pinRight,()=>this.grid.setPinned(e,"right")],[o.unpin,()=>this.grid.setPinned(e,null)]]));let l=[[o.autosizeThis,()=>this.grid.autoSize([e])],[o.autosizeAll,()=>this.grid.autoSize()]];s.lockVisible||l.push([o.hideColumn,()=>this.grid.setColumnsVisible([e],!1)]),l.push([o.chooseColumns,()=>this.grid.chooser.open()],[o.resetColumns,()=>this.grid.resetColumns()]),i.append(this.section(l));let c=W(s);c==="set"?i.append(this.setFilter(e,o)):c&&i.append(this.conditionFilter(e,c,o)),document.body.append(i);let a=t.getBoundingClientRect(),d=i.offsetWidth||248;i.style.left=`${Math.max(4,Math.min(a.right-d,window.innerWidth-d-4))}px`;let u=Math.max(4,Math.min(a.bottom+4,window.innerHeight-240));i.style.top=`${u}px`,i.style.maxHeight=`${Math.max(160,window.innerHeight-u-8)}px`,this.popup=i,this.colId=e;let f=m=>{let y=m.target;!i.contains(y)&&!t.contains(y)&&this.close()},g=m=>{m.key==="Escape"&&(this.close(),this.grid.renderer.root.focus())};document.addEventListener("pointerdown",f,!0),document.addEventListener("keydown",g,!0),this.off.push(()=>document.removeEventListener("pointerdown",f,!0),()=>document.removeEventListener("keydown",g,!0)),(p=i.querySelector(".fg-filter-value:not([hidden]), .fg-set-search, .fg-menu-item"))==null||p.focus()}close(){var e;for(let t of this.off)t();this.off=[],(e=this.popup)==null||e.remove(),this.popup=null,this.colId=null}section(e){let t=h("div","fg-menu-section");for(let[n,o]of e){let s=h("button","fg-menu-item",{type:"button"});s.textContent=n,s.addEventListener("click",()=>{o(),this.close()}),t.append(s)}return t}actions(e,t,n){let o=h("div","fg-menu-actions"),s=h("button","fg-btn",{type:"button"});s.textContent=t.reset,s.addEventListener("click",()=>{this.grid.setFilter(e,null),this.close()});let i=h("button","fg-btn fg-btn-primary",{type:"button"});return i.textContent=t.apply,i.addEventListener("click",n),o.append(s,i),o}title(e){let t=h("div","fg-menu-title");return t.textContent=e.filter,t}conditionFilter(e,t,n){var g;let o=this.grid.store.state.filters[e],s=o&&o.type===t?o:void 0,i=h("div","fg-menu-section fg-filter"),l=h("select","fg-filter-op",{"aria-label":n.filter});for(let p of Fe[t]){let m=h("option");m.value=p,m.textContent=n.ops[p],l.append(m)}l.value=(g=s==null?void 0:s.op)!=null?g:Fe[t][0];let c=t==="text"?"text":t,a=h("input","fg-input fg-filter-value",{type:c,placeholder:n.value,"aria-label":n.value}),d=h("input","fg-input fg-filter-value-to",{type:c,placeholder:n.valueTo,"aria-label":n.valueTo});s&&(a.value=s.value!=null?String(s.value):"",d.value="valueTo"in s&&s.valueTo!=null?String(s.valueTo):"");let u=()=>{a.hidden=$e.includes(l.value),d.hidden=l.value!=="between"};l.addEventListener("change",u),u();let f=()=>{let p=l.value,m=!$e.includes(p),y=null;if(t==="number"){let v=a.value===""?void 0:Number(a.value),M=d.value===""?void 0:Number(d.value);(!m||v!==void 0)&&(y={type:t,op:p,value:v,valueTo:M})}else t==="date"?(!m||a.value)&&(y={type:t,op:p,value:a.value||void 0,valueTo:d.value||void 0}):(!m||a.value)&&(y={type:t,op:p,value:a.value});this.grid.setFilter(e,y),this.close()};for(let p of[a,d])p.addEventListener("keydown",m=>m.key==="Enter"&&f());return i.append(this.title(n),l,a,d,this.actions(e,n,f)),i}setFilter(e,t){let{grid:n}=this,o=n.columns.getNode(e).def,s=D(o,t.code),i=n.collator(),l=new Map;for(let w of n.rowModel.allNodes()){let C=E(o,w.data),R=$(C);l.has(R)||l.set(R,C)}let c=[...l.entries()].sort((w,C)=>He(w[1],C[1],i)),a=n.store.state.filters[e],d=new Set((a==null?void 0:a.type)==="set"?a.values.map($).filter(w=>l.has(w)):l.keys()),u=(w,C)=>w===""?t.blanks:s(C),f=h("div","fg-menu-section fg-filter fg-set-filter"),g=h("input","fg-input fg-set-search",{type:"search",placeholder:t.search,"aria-label":t.search}),p=h("label","fg-set-item fg-set-all"),m=h("input","fg-checkbox",{type:"checkbox"});p.append(m,document.createTextNode(t.selectAll));let y=h("div","fg-set-list"),v=()=>{let w=g.value.trim().toLowerCase();return w?c.filter(([C,R])=>u(C,R).toLowerCase().includes(w)):c},M=()=>{let w=v(),C=w.filter(([R])=>d.has(R)).length;m.checked=C>0&&C===w.length,m.indeterminate=C>0&&C<w.length},k=()=>{let w=v();if(y.replaceChildren(...w.slice(0,ie).map(([C,R])=>{let ae=h("label","fg-set-item"),O=h("input","fg-checkbox",{type:"checkbox"});return O.checked=d.has(C),O.addEventListener("change",()=>{O.checked?d.add(C):d.delete(C),M()}),ae.append(O,document.createTextNode(u(C,R))),ae})),w.length>ie){let C=h("div","fg-set-more");C.textContent=`\u2026 +${w.length-ie}`,y.append(C)}M()};m.addEventListener("change",()=>{for(let[w]of v())m.checked?d.add(w):d.delete(w);k()}),g.addEventListener("input",k);let L=()=>{n.setFilter(e,d.size===l.size?null:{type:"set",values:c.filter(([w])=>d.has(w)).map(([,w])=>w)}),this.close()};return g.addEventListener("keydown",w=>w.key==="Enter"&&L()),k(),f.append(this.title(t),g,p,y,this.actions(e,t,L)),f}};var Q=class{constructor(e){this.deps=e;this.stats={filterRuns:0,sortRuns:0};this.last={};this.nodes=[];this.filtered=[];this.sorted=[];this.indexById=null}update(e){let t=this.deps.collator(),n=e.data!==this.last.data,o=n||e.filters!==this.last.filters||e.quickFilter!==this.last.quickFilter,s=o||e.sort!==this.last.sort||t!==this.last.collator;if(n){let i=this.deps.getRowId;this.nodes=e.data.map((l,c)=>({id:String(i?i(l):c),data:l,sourceIndex:c}))}o&&(this.filtered=this.filter(e),this.stats.filterRuns++),s&&(this.sorted=Pe(this.filtered,e.sort,i=>this.deps.columnDef(i),t),this.indexById=null,this.stats.sortRuns++),this.last={...e,collator:t}}invalidate(){this.last={}}getRowCount(){return this.sorted.length}getRow(e){return this.sorted[e]}rows(){return this.sorted}allNodes(){return this.nodes}indexOfId(e){var t;return this.indexById||(this.indexById=new Map(this.sorted.map((n,o)=>[n.id,o]))),(t=this.indexById.get(e))!=null?t:-1}filter(e){let t=Object.entries(e.filters).map(([s,i])=>({def:this.deps.columnDef(s),pred:be(i)})).filter(s=>!!s.def),n=xe(e.quickFilter),o=n.length?this.deps.quickColumns():[];return!t.length&&!n.length?this.nodes:this.nodes.filter(s=>{for(let i of t)if(!i.pred(E(i.def,s.data)))return!1;if(n.length){let i=o.map(l=>this.deps.format(l,E(l,s.data))).join("").toLowerCase();if(!Ce(n,i))return!1}return!0})}};function Oe(r){let e=r.idAt(r.index);if(r.mode==="single"){let t=new Set;return r.toggle&&r.selected.has(e)||t.add(e),{selected:t,anchorIndex:r.index}}if(r.range&&r.anchorIndex!=null){let t=r.toggle?new Set(r.selected):new Set,n=Math.min(r.anchorIndex,r.index),o=Math.max(r.anchorIndex,r.index);for(let s=n;s<=o;s++)t.add(r.idAt(s));return{selected:t,anchorIndex:r.anchorIndex}}if(r.toggle){let t=new Set(r.selected);return t.has(e)?t.delete(e):t.add(e),{selected:t,anchorIndex:r.index}}return{selected:new Set([e]),anchorIndex:r.index}}var J=class{constructor(e){this.bus=new P;this.current=e}get state(){return this.current}set(e){let t=Object.keys(e).filter(n=>e[n]!==this.current[n]);t.length&&(this.current={...this.current,...e},this.bus.emit("change",t))}};var ze=r=>Math.round(r*2.75),Be=r=>Math.round(r*3.1),qe=13;function We(r){return r.every(e=>e!==null&&typeof e=="object")?r:(b("data contains entries that are not objects; they were skipped"),r.filter(e=>e!==null&&typeof e=="object"))}var le=class{constructor(e,t){this.options=t;this.events=new P;this.disposers=[];this.collatorCache=null;this.destroyed=!1;this.summaryOpts=null;this.summaryValues=[];var s,i,l,c,a;Array.isArray(t.columns)||b("options.columns must be an array"),t.data!=null&&!Array.isArray(t.data)&&b("options.data must be an array"),this.store=new J({data:Array.isArray(t.data)?We(t.data):[],sort:[],filters:{},quickFilter:"",selected:new Set,anchorId:null,focus:null,locale:F(t.locale),theme:(s=t.theme)!=null?s:"light"}),this.columns=new q(this.withSelect(Array.isArray(t.columns)?t.columns:[])),this.rowModel=new Q({getRowId:t.getRowId,columnDef:d=>{var u;return(u=this.columns.getNode(d))==null?void 0:u.def},quickColumns:()=>this.columns.displayed().filter(d=>d.id!==x).map(d=>d.def),format:(d,u)=>D(d,this.store.state.locale.code)(u),collator:()=>this.collator()}),this.rowModel.update(this.store.state),this.summaryOpts=(i=t.summary)!=null?i:null,this.refreshSummary();let n=t.fontSize!=null&&t.fontSize>0?t.fontSize:null;t.fontSize!=null&&!(t.fontSize>0)&&b("fontSize must be a positive number"),this.font={size:n,family:(l=t.fontFamily)!=null?l:null};let o=n!=null?n:qe;if(this.renderer=new K(e,this,{rowHeight:(c=t.rowHeight)!=null?c:ze(o),headerHeight:(a=t.headerHeight)!=null?a:Be(o)}),this.renderer.applyFont(this.font.size,this.font.family),this.menu=new Z(this),this.chooser=new Y(this),this.sideBar=t.sideBar?new X(this,typeof t.sideBar=="object"&&!!t.sideBar.open):null,this.disposers.push(this.store.bus.on("change",d=>this.onChange(d)),Ne(this),Me(this),()=>this.menu.close(),()=>this.chooser.close()),typeof ResizeObserver!="undefined"){let d=new ResizeObserver(()=>this.renderer.schedule());d.observe(this.renderer.main),this.disposers.push(()=>d.disconnect())}this.renderer.render(),this.api=this.createApi()}collator(){var t;let e=this.store.state.locale.code;return((t=this.collatorCache)==null?void 0:t.code)!==e&&(this.collatorCache={code:e,collator:new Intl.Collator(e,{numeric:!0,sensitivity:"base"})}),this.collatorCache.collator}layoutChanged(){this.renderer.invalidate({header:!0,rows:!0}),this.refreshChoosers()}columnsChanged(){this.rowModel.invalidate(),this.rowModel.update(this.store.state),this.refreshSummary(),this.renderer.invalidate({header:!0,rows:!0}),this.refreshChoosers()}setFont(e){let t=this.font.size;e.size!==void 0&&(typeof e.size=="number"&&e.size>0?t=e.size:b("setFont: size must be a positive number"));let n=e.family===void 0?this.font.family:e.family||null;this.font={size:t,family:n};let o=t!=null?t:qe;this.options.rowHeight==null&&(this.renderer.opts.rowHeight=ze(o)),this.options.headerHeight==null&&(this.renderer.opts.headerHeight=Be(o)),this.renderer.applyFont(t,n),this.menu.close(),this.layoutChanged()}applyFontTo(e){this.font.size&&e.style.setProperty("--fg-font-size",`${this.font.size}px`),this.font.family&&e.style.setProperty("--fg-font",this.font.family)}summary(){var e;return this.summaryOpts&&((e=this.summaryOpts.rows)!=null&&e.length)?{opts:this.summaryOpts,values:this.summaryValues}:null}setSummary(e){if(e&&!Array.isArray(e.rows)){b("setSummary: summary.rows must be an array");return}this.summaryOpts=e,this.refreshSummary(),this.renderer.invalidate({header:!0,rows:!0})}refreshSummary(){var o,s;let e=this.summaryOpts;if(!((o=e==null?void 0:e.rows)!=null&&o.length)){this.summaryValues=[];return}let t=(s=e.scope)!=null?s:"filtered",n=t==="all"?this.rowModel.allNodes().map(i=>i.data):t==="selected"?this.selectedRows():this.rowModel.rows().map(i=>i.data);this.summaryValues=Re(e.rows,n,i=>{var l;return(l=this.columns.getNode(i))==null?void 0:l.def})}refreshChoosers(){var e;this.chooser.refresh(),(e=this.sideBar)==null||e.refresh()}setColumnsVisible(e,t){let n=[];for(let o of e){let s=this.columns.getNode(o);!s||s.children||s.hide===!t||(this.columns.setHide(o,!t),n.push(o))}if(n.length){this.columnsChanged();for(let o of n)this.events.emit("columnVisible",{colId:o,visible:t})}}autoSize(e){var c,a;let t=(e?e.map(d=>this.columns.getColumn(d)):this.columns.displayed()).filter(d=>!!d&&G(d.def)),{first:n,last:o}=this.renderer.renderedRange(),s=this.store.state.locale.code,i=66,l=24;for(let d of t){let u=this.renderer.measureText((a=(c=d.def.header)!=null?c:d.def.field)!=null?a:"",!0)+i,f=D(d.def,s);for(let p=n;p<=o;p++){let m=this.rowModel.getRow(p);m&&(u=Math.max(u,this.renderer.measureText(f(E(d.def,m.data)),!1)+l))}let g=this.columns.setWidth(d.id,Math.ceil(u));this.events.emit("columnResize",{colId:d.id,width:g})}this.layoutChanged()}resetColumns(){this.columns.reset(),this.columnsChanged()}setSort(e){let t=e.filter(n=>{let o=this.columns.getNode(n.colId);return!o||o.children?(b(`setSort: unknown column "${n.colId}"`),!1):n.dir==="asc"||n.dir==="desc"});this.store.set({sort:t}),this.events.emit("sortChange",{sort:[...t]})}toggleSort(e,t){let n=this.store.state.sort,o=n.find(l=>l.colId===e),s=o?o.dir==="asc"?"desc":null:"asc",i;t?s?o?i=n.map(l=>l.colId===e?{colId:e,dir:s}:l):i=[...n,{colId:e,dir:s}]:i=n.filter(l=>l.colId!==e):i=s?[{colId:e,dir:s}]:[],this.setSort(i)}setFilter(e,t){let n=this.columns.getNode(e);if(!n||n.children){b(`setFilter: unknown column "${e}"`);return}let o={...this.store.state.filters};t?o[e]=t:delete o[e],this.store.set({filters:o}),this.events.emit("filterChange",{filters:{...o}})}setPinned(e,t){this.columns.setPinned(e,t),this.layoutChanged()}setFocus(e,t){let n=this.store.state.focus;n&&n.rowIndex===e&&n.colId===t||(this.store.set({focus:{rowIndex:e,colId:t}}),this.events.emit("focusChange",{rowIndex:e,colId:t}))}setSelected(e,t=this.store.state.anchorId){this.store.set({selected:e,anchorId:t}),this.events.emit("selectionChange",{selected:this.selectedRows()})}selectFromClick(e,t,n){var i,l;let o=this.options.rowSelection;if(!o||e<0||e>=this.rowModel.getRowCount())return;let s=Oe({selected:this.store.state.selected,anchorIndex:this.anchorIndex(),mode:o,index:e,idAt:c=>this.rowModel.getRow(c).id,toggle:t,range:n});this.setSelected(s.selected,(l=(i=this.rowModel.getRow(s.anchorIndex))==null?void 0:i.id)!=null?l:null)}anchorIndex(){let e=this.store.state.anchorId;if(e==null)return null;let t=this.rowModel.indexOfId(e);return t<0?null:t}toggleSelectAll(){let e=this.rowModel.rows(),t=this.store.state.selected,n=e.length>0&&e.every(s=>t.has(s.id)),o=new Set(t);for(let s of e)n?o.delete(s.id):o.add(s.id);this.setSelected(o)}selectedRows(){let e=this.store.state.selected;return e.size?this.rowModel.allNodes().filter(t=>e.has(t.id)).map(t=>t.data):[]}withSelect(e){return this.options.rowSelection?[ye,...e]:e}setData(e){if(!Array.isArray(e)){b("setData: rows must be an array");return}this.store.set({data:We(e)});let t=this.store.state.selected;if(t.size)if(this.options.getRowId){let s=new Set(this.rowModel.allNodes().map(l=>l.id)),i=new Set([...t].filter(l=>s.has(l)));i.size!==t.size&&this.setSelected(i)}else this.setSelected(new Set,null);let n=this.rowModel.getRowCount(),o=this.store.state.focus;o&&o.rowIndex>=n&&this.store.set({focus:n?{...o,rowIndex:n-1}:null})}setColumns(e){if(!Array.isArray(e)){b("setColumns: columns must be an array");return}this.menu.close(),this.columns.setDefs(this.withSelect(e));let t=n=>!!this.columns.getNode(n);this.store.set({sort:this.store.state.sort.filter(n=>t(n.colId)),filters:Object.fromEntries(Object.entries(this.store.state.filters).filter(([n])=>t(n))),focus:null}),this.columnsChanged()}onChange(e){var n,o;let t=(...s)=>s.some(i=>e.includes(i));t("locale")&&(this.menu.close(),this.chooser.close(),(n=this.sideBar)==null||n.refresh(),this.rowModel.invalidate()),t("data","sort","filters","quickFilter","locale")&&this.rowModel.update(this.store.state),(t("data","filters","quickFilter","locale")||t("selected")&&((o=this.summaryOpts)==null?void 0:o.scope)==="selected")&&this.refreshSummary(),t("theme")&&this.renderer.applyTheme(),this.renderer.invalidate({header:t("sort","filters","quickFilter","locale","selected","data"),rows:t("data","sort","filters","quickFilter","locale")})}createApi(){let e=t=>((...n)=>{if(this.destroyed){b("API called after destroy()");return}return t(...n)});return{setData:e(t=>this.setData(t)),getData:e(()=>this.store.state.data),setColumns:e(t=>this.setColumns(t)),getColumnState:e(()=>this.columns.getState()),applyColumnState:e(t=>{this.columns.applyState(t),this.columnsChanged()}),setSort:e(t=>this.setSort(t)),getSort:e(()=>[...this.store.state.sort]),setFilter:e((t,n)=>this.setFilter(t,n)),getFilterModel:e(()=>({...this.store.state.filters})),setQuickFilter:e(t=>this.store.set({quickFilter:t!=null?t:""})),getSelectedRows:e(()=>this.selectedRows()),selectAll:e(()=>this.setSelected(new Set([...this.store.state.selected,...this.rowModel.rows().map(t=>t.id)]))),deselectAll:e(()=>this.setSelected(new Set,null)),getDisplayedRowCount:e(()=>this.rowModel.getRowCount()),scrollToRow:e(t=>this.renderer.scrollToRow(t)),setTheme:e(t=>this.store.set({theme:t})),setLocale:e(t=>this.store.set({locale:F(t)})),setFont:e(t=>this.setFont(t)),setColumnVisible:e((t,n)=>this.setColumnsVisible([t],n)),autoSizeColumns:e(t=>this.autoSize(t)),resetColumnState:e(()=>this.resetColumns()),openColumnChooser:e(()=>this.chooser.open()),closeColumnChooser:e(()=>this.chooser.close()),toggleSideBar:e(t=>{var n;return(n=this.sideBar)==null?void 0:n.toggle(t)}),setSummary:e(t=>this.setSummary(t)),getSummaryValues:e(()=>this.summaryValues.map(t=>({...t}))),on:e((t,n)=>this.events.on(t,n)),destroy:()=>this.destroy()}}destroy(){if(!this.destroyed){this.destroyed=!0;for(let e of this.disposers)e();this.renderer.destroy(),this.events.clear()}}};function Ge(r,e){return new le(r,e).api}var _e={en:T,ko:pe,"zh-CN":ge,ja:me,es:he,fr:fe,de:ue},Lt="0.1.0";for(let r of Object.values(_e))z(r);return Xe(St);})();
|
|
1
|
+
"use strict";var FreeGrid=(()=>{var Qe=Object.defineProperty;var An=Object.getOwnPropertyDescriptor;var Nn=Object.getOwnPropertyNames;var Fn=Object.prototype.hasOwnProperty;var Hn=(i,e)=>{for(var t in e)Qe(i,t,{get:e[t],enumerable:!0})},Bn=(i,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Nn(e))!Fn.call(i,o)&&o!==t&&Qe(i,o,{get:()=>e[o],enumerable:!(n=An(e,o))||n.enumerable});return i};var On=i=>Bn(Qe({},"__esModule",{value:!0}),i);var Zo={};Hn(Zo,{createGrid:()=>Pn,en:()=>j,locales:()=>$n,parseCsv:()=>Ge,readXlsx:()=>_e,registerLocale:()=>be,renderChart:()=>je,resolveLocale:()=>he,setLicenseKey:()=>Rn,verifyLicense:()=>Ct,version:()=>we,writeXlsx:()=>Ke});var zn={code:"en",noRows:"No rows to show",filter:"Filter",apply:"Apply",reset:"Reset",selectAll:"(Select all)",search:"Search\u2026",blanks:"(Blanks)",value:"Value",valueTo:"To",sortAsc:"Sort ascending",sortDesc:"Sort descending",clearSort:"Clear sort",pinLeft:"Pin left",pinRight:"Pin right",unpin:"Unpin",columnMenu:"Column menu",selectRow:"Select row",selectAllRows:"Select all rows",chooseColumns:"Choose columns",columns:"Columns",autosizeThis:"Autosize this column",autosizeAll:"Autosize all columns",resetColumns:"Reset columns",hideColumn:"Hide column",close:"Close",copy:"Copy",copyWithHeaders:"Copy with headers",paste:"Paste",pasteHint:"Clipboard access was blocked. Press Ctrl+V to paste.",required:"This field is required",invalidValue:"Invalid value",undo:"Undo",redo:"Redo",deleteRows:"Delete selected rows",copyRows:"Copy selected rows",statusRows:"{n} rows",statusFiltered:"{shown} of {total} rows",statusSelected:"{n} selected",count:"Count",sum:"Sum",avg:"Average",min:"Min",max:"Max",findPlaceholder:"Find in grid",noMatches:"No matches",findNext:"Next match",findPrevious:"Previous match",groupPanelHint:"Drag a column header here to group rows",groupByThis:"Group by this column",ungroup:"Remove grouping",expandAll:"Expand all",collapseAll:"Collapse all",pagerRange:"{from}\u2013{to} of {total}",pageOf:"Page {page} of {pages}",pageSize:"Rows per page",firstPage:"First page",previousPage:"Previous page",nextPage:"Next page",lastPage:"Last page",loading:"Loading\u2026",loadFailed:"Could not load rows",filters:"Filters",clearFilters:"Clear all filters",exportCsv:"Export CSV",exportExcel:"Export Excel",pivot:"Pivot",pivotMode:"Pivot mode",pivotRows:"Row groups",pivotColumns:"Column labels",pivotValues:"Values",total:"Total",addColumn:"Add a column\u2026",chartBar:"Bar chart",chartStacked:"Stacked bar chart",chartLine:"Line chart",chartArea:"Area chart",chartPie:"Pie chart",ops:{contains:"Contains",equals:"Equals",notEquals:"Does not equal",startsWith:"Starts with",endsWith:"Ends with",blank:"Blank",notBlank:"Not blank",eq:"Equals",ne:"Does not equal",lt:"Less than",lte:"Less than or equal",gt:"Greater than",gte:"Greater than or equal",between:"Between",before:"Before",after:"After"}},j=zn;var St=new Set;function N(i){St.has(i)||(St.add(i),console.warn(`[FreeGrid] ${i}`))}var re=new Map([["en",j]]);function be(i){re.set(i.code,i)}function Et(i){let e=i.toLowerCase();for(let n of re.keys())if(n.toLowerCase()===e)return n;let t=e.split("-")[0];if(t==="zh"&&re.has("zh-CN"))return"zh-CN";for(let n of re.keys())if(n.toLowerCase().split("-")[0]===t)return n}function Vn(){var i;return typeof navigator=="undefined"?[]:(i=navigator.languages)!=null&&i.length?navigator.languages:navigator.language?[navigator.language]:[]}function Gn(i){var e,t;return{...j,...i,code:(e=i.code)!=null?e:"en",ops:{...j.ops,...(t=i.ops)!=null?t:{}}}}function he(i,e=Vn()){if(i&&typeof i=="object")return Gn(i);if(typeof i=="string"){let t=Et(i);return t?re.get(t):(N(`locale "${i}" is not registered \u2014 import it from "@freegridjs/core/locales/${i}" and pass the pack (or call registerLocale). Falling back to "en".`),j)}for(let t of e){let n=Et(t);if(n)return re.get(n)}return j}var qn={code:"de",noRows:"Keine Zeilen vorhanden",filter:"Filter",apply:"Anwenden",reset:"Zur\xFCcksetzen",selectAll:"(Alle ausw\xE4hlen)",search:"Suchen\u2026",blanks:"(Leer)",value:"Wert",valueTo:"Bis",sortAsc:"Aufsteigend sortieren",sortDesc:"Absteigend sortieren",clearSort:"Sortierung aufheben",pinLeft:"Links fixieren",pinRight:"Rechts fixieren",unpin:"Fixierung l\xF6sen",columnMenu:"Spaltenmen\xFC",selectRow:"Zeile ausw\xE4hlen",selectAllRows:"Alle Zeilen ausw\xE4hlen",chooseColumns:"Spalten ausw\xE4hlen",columns:"Spalten",autosizeThis:"Diese Spalte automatisch anpassen",autosizeAll:"Alle Spalten automatisch anpassen",resetColumns:"Spalten zur\xFCcksetzen",hideColumn:"Spalte ausblenden",close:"Schlie\xDFen",copy:"Kopieren",copyWithHeaders:"Mit \xDCberschriften kopieren",paste:"Einf\xFCgen",pasteHint:"Der Browser hat die Zwischenablage blockiert. Dr\xFCcken Sie Ctrl+V zum Einf\xFCgen.",required:"Dieses Feld ist erforderlich",invalidValue:"Ung\xFCltiger Wert",undo:"R\xFCckg\xE4ngig",redo:"Wiederholen",deleteRows:"Ausgew\xE4hlte Zeilen l\xF6schen",copyRows:"Ausgew\xE4hlte Zeilen kopieren",statusRows:"{n} Zeilen",statusFiltered:"{shown} von {total} Zeilen",statusSelected:"{n} ausgew\xE4hlt",count:"Anzahl",sum:"Summe",avg:"Mittelwert",min:"Min",max:"Max",findPlaceholder:"Im Raster suchen",noMatches:"Keine Treffer",findNext:"N\xE4chster Treffer",findPrevious:"Vorheriger Treffer",groupPanelHint:"Spalten\xFCberschrift hierher ziehen, um zu gruppieren",groupByThis:"Nach dieser Spalte gruppieren",ungroup:"Gruppierung aufheben",expandAll:"Alle aufklappen",collapseAll:"Alle zuklappen",pagerRange:"{from}\u2013{to} von {total}",pageOf:"Seite {page} von {pages}",pageSize:"Zeilen pro Seite",firstPage:"Erste Seite",previousPage:"Vorherige Seite",nextPage:"N\xE4chste Seite",lastPage:"Letzte Seite",loading:"Wird geladen\u2026",loadFailed:"Zeilen konnten nicht geladen werden",filters:"Filter",clearFilters:"Alle Filter entfernen",exportCsv:"Als CSV exportieren",exportExcel:"Nach Excel exportieren",pivot:"Pivot",pivotMode:"Pivot-Modus",pivotRows:"Zeilengruppen",pivotColumns:"Spaltenbeschriftungen",pivotValues:"Werte",total:"Gesamt",addColumn:"Spalte hinzuf\xFCgen\u2026",chartBar:"Balkendiagramm",chartStacked:"Gestapelte Balken",chartLine:"Liniendiagramm",chartArea:"Fl\xE4chendiagramm",chartPie:"Kreisdiagramm",ops:{contains:"Enth\xE4lt",equals:"Gleich",notEquals:"Ungleich",startsWith:"Beginnt mit",endsWith:"Endet mit",blank:"Leer",notBlank:"Nicht leer",eq:"Gleich",ne:"Ungleich",lt:"Kleiner als",lte:"Kleiner oder gleich",gt:"Gr\xF6\xDFer als",gte:"Gr\xF6\xDFer oder gleich",between:"Zwischen",before:"Vor",after:"Nach"}},Lt=qn;var Un={code:"es",noRows:"No hay filas para mostrar",filter:"Filtro",apply:"Aplicar",reset:"Restablecer",selectAll:"(Seleccionar todo)",search:"Buscar\u2026",blanks:"(Vac\xEDos)",value:"Valor",valueTo:"Hasta",sortAsc:"Orden ascendente",sortDesc:"Orden descendente",clearSort:"Quitar orden",pinLeft:"Fijar a la izquierda",pinRight:"Fijar a la derecha",unpin:"Desfijar",columnMenu:"Men\xFA de columna",selectRow:"Seleccionar fila",selectAllRows:"Seleccionar todas las filas",chooseColumns:"Elegir columnas",columns:"Columnas",autosizeThis:"Ajustar esta columna",autosizeAll:"Ajustar todas las columnas",resetColumns:"Restablecer columnas",hideColumn:"Ocultar columna",close:"Cerrar",copy:"Copiar",copyWithHeaders:"Copiar con encabezados",paste:"Pegar",pasteHint:"El navegador bloque\xF3 el portapapeles. Pulsa Ctrl+V para pegar.",required:"Este campo es obligatorio",invalidValue:"Valor no v\xE1lido",undo:"Deshacer",redo:"Rehacer",deleteRows:"Eliminar filas seleccionadas",copyRows:"Copiar filas seleccionadas",statusRows:"{n} filas",statusFiltered:"{shown} de {total} filas",statusSelected:"{n} seleccionadas",count:"Recuento",sum:"Suma",avg:"Promedio",min:"M\xEDn.",max:"M\xE1x.",findPlaceholder:"Buscar en la tabla",noMatches:"Sin coincidencias",findNext:"Siguiente",findPrevious:"Anterior",groupPanelHint:"Arrastre aqu\xED un encabezado de columna para agrupar",groupByThis:"Agrupar por esta columna",ungroup:"Quitar agrupaci\xF3n",expandAll:"Expandir todo",collapseAll:"Contraer todo",pagerRange:"{from}\u2013{to} de {total}",pageOf:"P\xE1gina {page} de {pages}",pageSize:"Filas por p\xE1gina",firstPage:"Primera p\xE1gina",previousPage:"P\xE1gina anterior",nextPage:"P\xE1gina siguiente",lastPage:"\xDAltima p\xE1gina",loading:"Cargando\u2026",loadFailed:"No se pudieron cargar las filas",filters:"Filtros",clearFilters:"Quitar todos los filtros",exportCsv:"Exportar CSV",exportExcel:"Exportar a Excel",pivot:"Tabla din\xE1mica",pivotMode:"Modo tabla din\xE1mica",pivotRows:"Grupos de filas",pivotColumns:"Etiquetas de columna",pivotValues:"Valores",total:"Total",addColumn:"A\xF1adir columna\u2026",chartBar:"Gr\xE1fico de barras",chartStacked:"Barras apiladas",chartLine:"Gr\xE1fico de l\xEDneas",chartArea:"Gr\xE1fico de \xE1reas",chartPie:"Gr\xE1fico circular",ops:{contains:"Contiene",equals:"Igual a",notEquals:"Distinto de",startsWith:"Empieza por",endsWith:"Termina en",blank:"Vac\xEDo",notBlank:"No vac\xEDo",eq:"Igual a",ne:"Distinto de",lt:"Menor que",lte:"Menor o igual que",gt:"Mayor que",gte:"Mayor o igual que",between:"Entre",before:"Antes de",after:"Despu\xE9s de"}},It=Un;var Kn={code:"fr",noRows:"Aucune ligne \xE0 afficher",filter:"Filtre",apply:"Appliquer",reset:"R\xE9initialiser",selectAll:"(Tout s\xE9lectionner)",search:"Rechercher\u2026",blanks:"(Vides)",value:"Valeur",valueTo:"\xC0",sortAsc:"Tri croissant",sortDesc:"Tri d\xE9croissant",clearSort:"Annuler le tri",pinLeft:"\xC9pingler \xE0 gauche",pinRight:"\xC9pingler \xE0 droite",unpin:"D\xE9s\xE9pingler",columnMenu:"Menu de colonne",selectRow:"S\xE9lectionner la ligne",selectAllRows:"S\xE9lectionner toutes les lignes",chooseColumns:"Choisir les colonnes",columns:"Colonnes",autosizeThis:"Ajuster cette colonne",autosizeAll:"Ajuster toutes les colonnes",resetColumns:"R\xE9initialiser les colonnes",hideColumn:"Masquer la colonne",close:"Fermer",copy:"Copier",copyWithHeaders:"Copier avec les en-t\xEAtes",paste:"Coller",pasteHint:"Le navigateur a bloqu\xE9 le presse-papiers. Appuyez sur Ctrl+V pour coller.",required:"Ce champ est obligatoire",invalidValue:"Valeur non valide",undo:"Annuler",redo:"R\xE9tablir",deleteRows:"Supprimer les lignes s\xE9lectionn\xE9es",copyRows:"Copier les lignes s\xE9lectionn\xE9es",statusRows:"{n} lignes",statusFiltered:"{shown} sur {total} lignes",statusSelected:"{n} s\xE9lectionn\xE9es",count:"Nombre",sum:"Somme",avg:"Moyenne",min:"Min",max:"Max",findPlaceholder:"Rechercher dans la grille",noMatches:"Aucun r\xE9sultat",findNext:"Suivant",findPrevious:"Pr\xE9c\xE9dent",groupPanelHint:"Faites glisser un en-t\xEAte de colonne ici pour regrouper",groupByThis:"Regrouper par cette colonne",ungroup:"Supprimer le regroupement",expandAll:"Tout d\xE9velopper",collapseAll:"Tout r\xE9duire",pagerRange:"{from}\u2013{to} sur {total}",pageOf:"Page {page} sur {pages}",pageSize:"Lignes par page",firstPage:"Premi\xE8re page",previousPage:"Page pr\xE9c\xE9dente",nextPage:"Page suivante",lastPage:"Derni\xE8re page",loading:"Chargement\u2026",loadFailed:"Impossible de charger les lignes",filters:"Filtres",clearFilters:"Effacer tous les filtres",exportCsv:"Exporter en CSV",exportExcel:"Exporter vers Excel",pivot:"Tableau crois\xE9",pivotMode:"Mode tableau crois\xE9",pivotRows:"Groupes de lignes",pivotColumns:"\xC9tiquettes de colonnes",pivotValues:"Valeurs",total:"Total",addColumn:"Ajouter une colonne\u2026",chartBar:"Histogramme",chartStacked:"Histogramme empil\xE9",chartLine:"Courbes",chartArea:"Aires",chartPie:"Secteurs",ops:{contains:"Contient",equals:"\xC9gal \xE0",notEquals:"Diff\xE9rent de",startsWith:"Commence par",endsWith:"Se termine par",blank:"Vide",notBlank:"Non vide",eq:"\xC9gal \xE0",ne:"Diff\xE9rent de",lt:"Inf\xE9rieur \xE0",lte:"Inf\xE9rieur ou \xE9gal \xE0",gt:"Sup\xE9rieur \xE0",gte:"Sup\xE9rieur ou \xE9gal \xE0",between:"Entre",before:"Avant",after:"Apr\xE8s"}},Dt=Kn;var _n={code:"ja",noRows:"\u8868\u793A\u3059\u308B\u30C7\u30FC\u30BF\u304C\u3042\u308A\u307E\u305B\u3093",filter:"\u30D5\u30A3\u30EB\u30BF\u30FC",apply:"\u9069\u7528",reset:"\u30EA\u30BB\u30C3\u30C8",selectAll:"(\u3059\u3079\u3066\u9078\u629E)",search:"\u691C\u7D22\u2026",blanks:"(\u7A7A\u767D)",value:"\u5024",valueTo:"\u7D42\u4E86\u5024",sortAsc:"\u6607\u9806\u3067\u4E26\u3079\u66FF\u3048",sortDesc:"\u964D\u9806\u3067\u4E26\u3079\u66FF\u3048",clearSort:"\u4E26\u3079\u66FF\u3048\u3092\u89E3\u9664",pinLeft:"\u5DE6\u306B\u56FA\u5B9A",pinRight:"\u53F3\u306B\u56FA\u5B9A",unpin:"\u56FA\u5B9A\u3092\u89E3\u9664",columnMenu:"\u5217\u30E1\u30CB\u30E5\u30FC",selectRow:"\u884C\u3092\u9078\u629E",selectAllRows:"\u3059\u3079\u3066\u306E\u884C\u3092\u9078\u629E",chooseColumns:"\u5217\u3092\u9078\u629E",columns:"\u5217",autosizeThis:"\u3053\u306E\u5217\u306E\u5E45\u3092\u81EA\u52D5\u8ABF\u6574",autosizeAll:"\u3059\u3079\u3066\u306E\u5217\u306E\u5E45\u3092\u81EA\u52D5\u8ABF\u6574",resetColumns:"\u5217\u3092\u30EA\u30BB\u30C3\u30C8",hideColumn:"\u5217\u3092\u975E\u8868\u793A",close:"\u9589\u3058\u308B",copy:"\u30B3\u30D4\u30FC",copyWithHeaders:"\u30D8\u30C3\u30C0\u30FC\u4ED8\u304D\u3067\u30B3\u30D4\u30FC",paste:"\u8CBC\u308A\u4ED8\u3051",pasteHint:"\u30D6\u30E9\u30A6\u30B6\u30FC\u304C\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9\u3078\u306E\u30A2\u30AF\u30BB\u30B9\u3092\u30D6\u30ED\u30C3\u30AF\u3057\u307E\u3057\u305F\u3002Ctrl+V \u3067\u8CBC\u308A\u4ED8\u3051\u3066\u304F\u3060\u3055\u3044\u3002",required:"\u3053\u306E\u9805\u76EE\u306F\u5FC5\u9808\u3067\u3059",invalidValue:"\u7121\u52B9\u306A\u5024\u3067\u3059",undo:"\u5143\u306B\u623B\u3059",redo:"\u3084\u308A\u76F4\u3057",deleteRows:"\u9078\u629E\u3057\u305F\u884C\u3092\u524A\u9664",copyRows:"\u9078\u629E\u3057\u305F\u884C\u3092\u30B3\u30D4\u30FC",statusRows:"{n} \u884C",statusFiltered:"{total} \u884C\u4E2D {shown} \u884C",statusSelected:"{n} \u4EF6\u9078\u629E",count:"\u30C7\u30FC\u30BF\u306E\u500B\u6570",sum:"\u5408\u8A08",avg:"\u5E73\u5747",min:"\u6700\u5C0F",max:"\u6700\u5927",findPlaceholder:"\u30B0\u30EA\u30C3\u30C9\u5185\u3092\u691C\u7D22",noMatches:"\u4E00\u81F4\u306A\u3057",findNext:"\u6B21\u3092\u691C\u7D22",findPrevious:"\u524D\u3092\u691C\u7D22",groupPanelHint:"\u5217\u898B\u51FA\u3057\u3092\u3053\u3053\u306B\u30C9\u30E9\u30C3\u30B0\u3057\u3066\u30B0\u30EB\u30FC\u30D7\u5316",groupByThis:"\u3053\u306E\u5217\u3067\u30B0\u30EB\u30FC\u30D7\u5316",ungroup:"\u30B0\u30EB\u30FC\u30D7\u5316\u3092\u89E3\u9664",expandAll:"\u3059\u3079\u3066\u5C55\u958B",collapseAll:"\u3059\u3079\u3066\u6298\u308A\u305F\u305F\u3080",pagerRange:"{total} \u4EF6\u4E2D {from}\u2013{to} \u4EF6",pageOf:"{pages} \u30DA\u30FC\u30B8\u4E2D {page} \u30DA\u30FC\u30B8",pageSize:"1 \u30DA\u30FC\u30B8\u306E\u884C\u6570",firstPage:"\u6700\u521D\u306E\u30DA\u30FC\u30B8",previousPage:"\u524D\u306E\u30DA\u30FC\u30B8",nextPage:"\u6B21\u306E\u30DA\u30FC\u30B8",lastPage:"\u6700\u5F8C\u306E\u30DA\u30FC\u30B8",loading:"\u8AAD\u307F\u8FBC\u307F\u4E2D\u2026",loadFailed:"\u884C\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093\u3067\u3057\u305F",filters:"\u30D5\u30A3\u30EB\u30BF\u30FC",clearFilters:"\u3059\u3079\u3066\u306E\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u89E3\u9664",exportCsv:"CSV \u306B\u66F8\u304D\u51FA\u3059",exportExcel:"Excel \u306B\u66F8\u304D\u51FA\u3059",pivot:"\u30D4\u30DC\u30C3\u30C8",pivotMode:"\u30D4\u30DC\u30C3\u30C8\u30E2\u30FC\u30C9",pivotRows:"\u884C\u30B0\u30EB\u30FC\u30D7",pivotColumns:"\u5217\u30E9\u30D9\u30EB",pivotValues:"\u5024",total:"\u5408\u8A08",addColumn:"\u5217\u3092\u8FFD\u52A0\u2026",chartBar:"\u68D2\u30B0\u30E9\u30D5",chartStacked:"\u7A4D\u307F\u4E0A\u3052\u68D2\u30B0\u30E9\u30D5",chartLine:"\u6298\u308C\u7DDA\u30B0\u30E9\u30D5",chartArea:"\u9762\u30B0\u30E9\u30D5",chartPie:"\u5186\u30B0\u30E9\u30D5",ops:{contains:"\u542B\u3080",equals:"\u7B49\u3057\u3044",notEquals:"\u7B49\u3057\u304F\u306A\u3044",startsWith:"\u3067\u59CB\u307E\u308B",endsWith:"\u3067\u7D42\u308F\u308B",blank:"\u7A7A\u767D",notBlank:"\u7A7A\u767D\u4EE5\u5916",eq:"\u7B49\u3057\u3044",ne:"\u7B49\u3057\u304F\u306A\u3044",lt:"\u3088\u308A\u5C0F\u3055\u3044",lte:"\u4EE5\u4E0B",gt:"\u3088\u308A\u5927\u304D\u3044",gte:"\u4EE5\u4E0A",between:"\u7BC4\u56F2\u5185",before:"\u3088\u308A\u524D",after:"\u3088\u308A\u5F8C"}},Tt=_n;var Wn={code:"ko",noRows:"\uD45C\uC2DC\uD560 \uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4",filter:"\uD544\uD130",apply:"\uC801\uC6A9",reset:"\uCD08\uAE30\uD654",selectAll:"(\uC804\uCCB4 \uC120\uD0DD)",search:"\uAC80\uC0C9\u2026",blanks:"(\uBE48 \uAC12)",value:"\uAC12",valueTo:"\uB05D \uAC12",sortAsc:"\uC624\uB984\uCC28\uC21C \uC815\uB82C",sortDesc:"\uB0B4\uB9BC\uCC28\uC21C \uC815\uB82C",clearSort:"\uC815\uB82C \uD574\uC81C",pinLeft:"\uC67C\uCABD \uACE0\uC815",pinRight:"\uC624\uB978\uCABD \uACE0\uC815",unpin:"\uACE0\uC815 \uD574\uC81C",columnMenu:"\uCEEC\uB7FC \uBA54\uB274",selectRow:"\uD589 \uC120\uD0DD",selectAllRows:"\uC804\uCCB4 \uD589 \uC120\uD0DD",chooseColumns:"\uCEEC\uB7FC \uC120\uD0DD",columns:"\uCEEC\uB7FC",autosizeThis:"\uC774 \uCEEC\uB7FC \uB108\uBE44 \uC790\uB3D9 \uB9DE\uCDA4",autosizeAll:"\uBAA8\uB4E0 \uCEEC\uB7FC \uB108\uBE44 \uC790\uB3D9 \uB9DE\uCDA4",resetColumns:"\uCEEC\uB7FC \uCD08\uAE30\uD654",hideColumn:"\uCEEC\uB7FC \uC228\uAE30\uAE30",close:"\uB2EB\uAE30",copy:"\uBCF5\uC0AC",copyWithHeaders:"\uD5E4\uB354 \uD3EC\uD568 \uBCF5\uC0AC",paste:"\uBD99\uC5EC\uB123\uAE30",pasteHint:"\uBE0C\uB77C\uC6B0\uC800\uAC00 \uD074\uB9BD\uBCF4\uB4DC \uC811\uADFC\uC744 \uB9C9\uC558\uC2B5\uB2C8\uB2E4. Ctrl+V\uB85C \uBD99\uC5EC\uB123\uC73C\uC138\uC694.",required:"\uD544\uC218 \uC785\uB825 \uD56D\uBAA9\uC785\uB2C8\uB2E4",invalidValue:"\uC62C\uBC14\uB978 \uAC12\uC774 \uC544\uB2D9\uB2C8\uB2E4",undo:"\uC2E4\uD589 \uCDE8\uC18C",redo:"\uB2E4\uC2DC \uC2E4\uD589",deleteRows:"\uC120\uD0DD\uD55C \uD589 \uC0AD\uC81C",copyRows:"\uC120\uD0DD\uD55C \uD589 \uBCF5\uC0AC",statusRows:"{n}\uD589",statusFiltered:"{total}\uD589 \uC911 {shown}\uD589",statusSelected:"{n}\uAC1C \uC120\uD0DD",count:"\uAC1C\uC218",sum:"\uD569\uACC4",avg:"\uD3C9\uADE0",min:"\uCD5C\uC18C",max:"\uCD5C\uB300",findPlaceholder:"\uADF8\uB9AC\uB4DC\uC5D0\uC11C \uCC3E\uAE30",noMatches:"\uC77C\uCE58 \uD56D\uBAA9 \uC5C6\uC74C",findNext:"\uB2E4\uC74C \uCC3E\uAE30",findPrevious:"\uC774\uC804 \uCC3E\uAE30",groupPanelHint:"\uC5F4 \uBA38\uB9AC\uAE00\uC744 \uC5EC\uAE30\uB85C \uB04C\uC5B4\uC640 \uD589\uC744 \uBB36\uC73C\uC138\uC694",groupByThis:"\uC774 \uC5F4\uB85C \uBB36\uAE30",ungroup:"\uBB36\uAE30 \uD574\uC81C",expandAll:"\uBAA8\uB450 \uD3BC\uCE58\uAE30",collapseAll:"\uBAA8\uB450 \uC811\uAE30",pagerRange:"{total}\uAC1C \uC911 {from}\u2013{to}",pageOf:"{pages}\uCABD \uC911 {page}\uCABD",pageSize:"\uCABD\uB2F9 \uD589 \uC218",firstPage:"\uCCAB \uCABD",previousPage:"\uC774\uC804 \uCABD",nextPage:"\uB2E4\uC74C \uCABD",lastPage:"\uB9C8\uC9C0\uB9C9 \uCABD",loading:"\uBD88\uB7EC\uC624\uB294 \uC911\u2026",loadFailed:"\uD589\uC744 \uBD88\uB7EC\uC624\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4",filters:"\uD544\uD130",clearFilters:"\uD544\uD130 \uBAA8\uB450 \uC9C0\uC6B0\uAE30",exportCsv:"CSV\uB85C \uB0B4\uBCF4\uB0B4\uAE30",exportExcel:"\uC5D1\uC140\uB85C \uB0B4\uBCF4\uB0B4\uAE30",pivot:"\uD53C\uBC97",pivotMode:"\uD53C\uBC97 \uBAA8\uB4DC",pivotRows:"\uD589 \uADF8\uB8F9",pivotColumns:"\uC5F4 \uB808\uC774\uBE14",pivotValues:"\uAC12",total:"\uD569\uACC4",addColumn:"\uCEEC\uB7FC \uCD94\uAC00\u2026",chartBar:"\uB9C9\uB300 \uCC28\uD2B8",chartStacked:"\uB204\uC801 \uB9C9\uB300 \uCC28\uD2B8",chartLine:"\uAEBE\uC740\uC120 \uCC28\uD2B8",chartArea:"\uC601\uC5ED \uCC28\uD2B8",chartPie:"\uC6D0\uD615 \uCC28\uD2B8",ops:{contains:"\uD3EC\uD568",equals:"\uAC19\uC74C",notEquals:"\uAC19\uC9C0 \uC54A\uC74C",startsWith:"\uC2DC\uC791 \uBB38\uC790",endsWith:"\uB05D \uBB38\uC790",blank:"\uBE48 \uAC12",notBlank:"\uBE48 \uAC12 \uC544\uB2D8",eq:"\uAC19\uC74C",ne:"\uAC19\uC9C0 \uC54A\uC74C",lt:"\uBBF8\uB9CC",lte:"\uC774\uD558",gt:"\uCD08\uACFC",gte:"\uC774\uC0C1",between:"\uBC94\uC704",before:"\uC774\uC804",after:"\uC774\uD6C4"}},Pt=Wn;var jn={code:"zh-CN",noRows:"\u6CA1\u6709\u53EF\u663E\u793A\u7684\u6570\u636E",filter:"\u7B5B\u9009",apply:"\u5E94\u7528",reset:"\u91CD\u7F6E",selectAll:"(\u5168\u9009)",search:"\u641C\u7D22\u2026",blanks:"(\u7A7A\u767D)",value:"\u503C",valueTo:"\u81F3",sortAsc:"\u5347\u5E8F\u6392\u5E8F",sortDesc:"\u964D\u5E8F\u6392\u5E8F",clearSort:"\u6E05\u9664\u6392\u5E8F",pinLeft:"\u56FA\u5B9A\u5728\u5DE6\u4FA7",pinRight:"\u56FA\u5B9A\u5728\u53F3\u4FA7",unpin:"\u53D6\u6D88\u56FA\u5B9A",columnMenu:"\u5217\u83DC\u5355",selectRow:"\u9009\u62E9\u884C",selectAllRows:"\u9009\u62E9\u6240\u6709\u884C",chooseColumns:"\u9009\u62E9\u5217",columns:"\u5217",autosizeThis:"\u81EA\u52A8\u8C03\u6574\u6B64\u5217\u5BBD\u5EA6",autosizeAll:"\u81EA\u52A8\u8C03\u6574\u6240\u6709\u5217\u5BBD\u5EA6",resetColumns:"\u91CD\u7F6E\u5217",hideColumn:"\u9690\u85CF\u5217",close:"\u5173\u95ED",copy:"\u590D\u5236",copyWithHeaders:"\u8FDE\u540C\u6807\u9898\u590D\u5236",paste:"\u7C98\u8D34",pasteHint:"\u6D4F\u89C8\u5668\u963B\u6B62\u4E86\u526A\u8D34\u677F\u8BBF\u95EE\u3002\u8BF7\u6309 Ctrl+V \u7C98\u8D34\u3002",required:"\u6B64\u9879\u4E3A\u5FC5\u586B\u9879",invalidValue:"\u503C\u65E0\u6548",undo:"\u64A4\u9500",redo:"\u91CD\u505A",deleteRows:"\u5220\u9664\u6240\u9009\u884C",copyRows:"\u590D\u5236\u6240\u9009\u884C",statusRows:"{n} \u884C",statusFiltered:"{total} \u884C\u4E2D\u7684 {shown} \u884C",statusSelected:"\u5DF2\u9009 {n} \u884C",count:"\u8BA1\u6570",sum:"\u6C42\u548C",avg:"\u5E73\u5747\u503C",min:"\u6700\u5C0F\u503C",max:"\u6700\u5927\u503C",findPlaceholder:"\u5728\u8868\u683C\u4E2D\u67E5\u627E",noMatches:"\u65E0\u5339\u914D\u9879",findNext:"\u4E0B\u4E00\u4E2A",findPrevious:"\u4E0A\u4E00\u4E2A",groupPanelHint:"\u5C06\u5217\u6807\u9898\u62D6\u5230\u6B64\u5904\u4EE5\u5206\u7EC4",groupByThis:"\u6309\u6B64\u5217\u5206\u7EC4",ungroup:"\u53D6\u6D88\u5206\u7EC4",expandAll:"\u5168\u90E8\u5C55\u5F00",collapseAll:"\u5168\u90E8\u6298\u53E0",pagerRange:"\u7B2C {from}\u2013{to} \u6761\uFF0C\u5171 {total} \u6761",pageOf:"\u7B2C {page} \u9875\uFF0C\u5171 {pages} \u9875",pageSize:"\u6BCF\u9875\u884C\u6570",firstPage:"\u9996\u9875",previousPage:"\u4E0A\u4E00\u9875",nextPage:"\u4E0B\u4E00\u9875",lastPage:"\u672B\u9875",loading:"\u52A0\u8F7D\u4E2D\u2026",loadFailed:"\u65E0\u6CD5\u52A0\u8F7D\u6570\u636E",filters:"\u7B5B\u9009",clearFilters:"\u6E05\u9664\u6240\u6709\u7B5B\u9009",exportCsv:"\u5BFC\u51FA CSV",exportExcel:"\u5BFC\u51FA Excel",pivot:"\u6570\u636E\u900F\u89C6",pivotMode:"\u900F\u89C6\u6A21\u5F0F",pivotRows:"\u884C\u5206\u7EC4",pivotColumns:"\u5217\u6807\u7B7E",pivotValues:"\u503C",total:"\u603B\u8BA1",addColumn:"\u6DFB\u52A0\u5217\u2026",chartBar:"\u67F1\u72B6\u56FE",chartStacked:"\u5806\u79EF\u67F1\u72B6\u56FE",chartLine:"\u6298\u7EBF\u56FE",chartArea:"\u9762\u79EF\u56FE",chartPie:"\u997C\u56FE",ops:{contains:"\u5305\u542B",equals:"\u7B49\u4E8E",notEquals:"\u4E0D\u7B49\u4E8E",startsWith:"\u5F00\u5934\u662F",endsWith:"\u7ED3\u5C3E\u662F",blank:"\u4E3A\u7A7A",notBlank:"\u4E0D\u4E3A\u7A7A",eq:"\u7B49\u4E8E",ne:"\u4E0D\u7B49\u4E8E",lt:"\u5C0F\u4E8E",lte:"\u5C0F\u4E8E\u6216\u7B49\u4E8E",gt:"\u5927\u4E8E",gte:"\u5927\u4E8E\u6216\u7B49\u4E8E",between:"\u4ECB\u4E8E",before:"\u65E9\u4E8E",after:"\u665A\u4E8E"}},$t=jn;var X="__fg_select__",At={id:X,header:"",width:44,minWidth:44,maxWidth:44,pinned:"left",sortable:!1,resizable:!1,filter:!1},ee="__fg_drag__",Nt={id:ee,header:"",width:28,minWidth:28,maxWidth:28,pinned:"left",sortable:!1,resizable:!1,filter:!1,chooser:!1},T=i=>i===X||i===ee,Xn=120,Yn=40,Zn=["left","center","right"];function se(i){if(T(i.id)||i.filter===!1)return null;if(i.filter)return i.filter;switch(i.type){case"number":return"number";case"date":return"date";case"boolean":return"set";default:return"text"}}var te=i=>i.id!==X&&i.sortable!==!1,Re=i=>i.id!==X&&i.resizable!==!1;function xe(i,e){var o,r;let t=(o=i.minWidth)!=null?o:Yn,n=(r=i.maxWidth)!=null?r:1/0;return Math.round(Math.min(n,Math.max(t,e)))}function Ft(i){return i.children?1+Math.max(0,...i.children.map(Ft)):1}var Ce=class{constructor(e){this.depth=1;this.roots_=[];this.defs=[];this.byId=new Map;this.containerWidth=0;this.layout={left:[],center:[],right:[]};this.leafById=new Map;this.setDefs(e)}setDefs(e){this.defs=e,this.byId=new Map;let t=0,n=(r,s,a)=>{var h,p,m,x,w;let d=Array.isArray(r.children)&&r.children.length>0,c=t++,l=(h=r.id)!=null?h:d?`g${c}`:r.field;if(l||(l=`c${c}`,N(`column #${c} has neither "field" nor "id"; using "${l}"`)),this.byId.has(l)){let y=1;for(;this.byId.has(`${l}_${y}`);)y++;N(`duplicate column id "${l}"; renamed to "${l}_${y}"`),l=`${l}_${y}`}let u={id:l,def:r,parent:s,children:null,depth:a,width:xe(r,(p=r.width)!=null?p:Xn),flex:r.flex&&r.flex>0?r.flex:null,hide:(m=r.hide)!=null?m:!1,pinned:(w=(x=r.pinned)!=null?x:s==null?void 0:s.pinned)!=null?w:null};return this.byId.set(l,u),d&&(u.children=o(r.children).map(y=>n(y,u,a+1))),u},o=r=>{let s=r.filter(a=>a!==null&&typeof a=="object");return s.length!==r.length&&N("columns contain entries that are not objects; they were skipped"),s};this.roots_=o(e).map(r=>n(r,null,0)),this.depth=Math.max(1,...this.roots_.map(Ft)),this.relayout()}setContainerWidth(e){if(e===this.containerWidth)return!1;this.containerWidth=e;let t=this.displayed().map(n=>n.width).join();return this.relayout(),t!==this.displayed().map(n=>n.width).join()}roots(){return this.roots_}reset(){this.setDefs(this.defs)}region(e){return this.layout[e]}displayed(){return[...this.layout.left,...this.layout.center,...this.layout.right]}regionWidth(e){let t=this.layout[e],n=t[t.length-1];return n?n.left+n.width:0}getColumn(e){return this.leafById.get(e)}getNode(e){return this.byId.get(e)}siblings(e){let t=this.byId.get(e);return t?t.parent?t.parent.children:this.roots_:[]}setWidth(e,t){let n=this.byId.get(e);return!n||n.children?0:(n.flex=null,n.width=xe(n.def,t),this.relayout(),n.width)}setPinned(e,t){let n=this.byId.get(e);!n||n.children||T(e)||(n.pinned=t,this.relayout())}setHide(e,t){let n=this.byId.get(e);!n||n.children||(n.hide=t,this.relayout())}move(e,t){let n=this.siblings(e),o=n.findIndex(s=>s.id===e);if(o<0)return;let[r]=n.splice(o,1);n.splice(Math.max(0,Math.min(n.length,t)),0,r),this.relayout()}headerCells(e){var o,r,s;let t=[],n=new Map;for(let a of this.layout[e]){let d=[];for(let c=a.node.parent;c;c=c.parent)d.unshift(c);for(let c of d){let l=n.get(c.id);if(l){l.width+=a.width;continue}let u={id:c.id,label:(o=c.def.header)!=null?o:"",isGroup:!0,column:null,node:c,row:c.depth,rowSpan:1,left:a.left,width:a.width};n.set(c.id,u),t.push(u)}t.push({id:a.id,label:(s=(r=a.def.header)!=null?r:a.def.field)!=null?s:"",isGroup:!1,column:a,node:a.node,row:a.node.depth,rowSpan:this.depth-a.node.depth,left:a.left,width:a.width})}return t}getState(){return this.leafNodes().filter(e=>!T(e.id)).map(e=>{var t,n;return{colId:e.id,width:(n=(t=this.leafById.get(e.id))==null?void 0:t.width)!=null?n:e.width,hide:e.hide,pinned:e.pinned}})}applyState(e){let t=new Map;e.forEach((r,s)=>{t.set(r.colId,s);let a=this.byId.get(r.colId);!a||a.children||T(r.colId)||(a.flex=null,a.width=xe(a.def,r.width),a.hide=r.hide,a.pinned=r.pinned)}),t.set(ee,-2),t.set(X,-1);let n=r=>{var s;return r.children?Math.min(1/0,...r.children.map(n)):(s=t.get(r.id))!=null?s:1/0},o=r=>{let s=r.map((a,d)=>({n:a,i:d,r:n(a)}));s.sort((a,d)=>a.r===d.r?a.i-d.i:a.r-d.r),r.splice(0,r.length,...s.map(a=>a.n));for(let a of r)a.children&&o(a.children)};o(this.roots_),this.relayout()}leafNodes(){let e=[],t=n=>n.children?n.children.forEach(t):e.push(n);return this.roots_.forEach(t),e}relayout(){var d;let e=this.leafNodes().filter(c=>!c.hide),t=e.reduce((c,l)=>c+(l.flex?0:l.width),0),n=e.reduce((c,l)=>{var u;return c+((u=l.flex)!=null?u:0)},0),o=Math.max(0,this.containerWidth-t),r=c=>c.flex?xe(c.def,Math.floor(o*c.flex/n)):c.width,s={left:[],center:[],right:[]};this.leafById=new Map;let a=0;for(let c of Zn){let l=0;for(let u of e){if(((d=u.pinned)!=null?d:"center")!==c)continue;let h={id:u.id,def:u.def,node:u,width:r(u),region:c,left:l,index:a++};l+=h.width,s[c].push(h),this.leafById.set(u.id,h)}}this.layout=s}};function F(i){return i==null||typeof i=="string"&&i.trim()===""||typeof i=="number"&&Number.isNaN(i)}var Ht=i=>String(i).padStart(2,"0");function K(i){if(F(i))return null;if(typeof i=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(i))return i;let e=i instanceof Date?i:new Date(i);return Number.isNaN(e.getTime())?null:`${e.getFullYear()}-${Ht(e.getMonth()+1)}-${Ht(e.getDate())}`}function _(i){var e;return F(i)?"":i instanceof Date?(e=K(i))!=null?e:"":String(i)}var Q=()=>!0;function Bt(i){var e;switch(i.type){case"text":{let t=((e=i.value)!=null?e:"").toLowerCase(),n=o=>F(o)?"":String(o).toLowerCase();switch(i.op){case"contains":return o=>n(o).includes(t);case"equals":return o=>n(o)===t;case"notEquals":return o=>n(o)!==t;case"startsWith":return o=>n(o).startsWith(t);case"endsWith":return o=>n(o).endsWith(t);case"blank":return F;case"notBlank":return o=>!F(o)}return Q}case"number":{let t=o=>F(o)?NaN:Number(o);if(i.op==="blank")return o=>Number.isNaN(t(o));if(i.op==="notBlank")return o=>!Number.isNaN(t(o));let n=i.value;if(n==null||Number.isNaN(n))return Q;switch(i.op){case"eq":return o=>t(o)===n;case"ne":return o=>t(o)!==n;case"lt":return o=>t(o)<n;case"lte":return o=>t(o)<=n;case"gt":return o=>t(o)>n;case"gte":return o=>t(o)>=n;case"between":{let o=i.valueTo;if(o==null||Number.isNaN(o))return Q;let r=Math.min(n,o),s=Math.max(n,o);return a=>{let d=t(a);return d>=r&&d<=s}}}return Q}case"date":{if(i.op==="blank")return o=>K(o)===null;if(i.op==="notBlank")return o=>K(o)!==null;let t=i.value;if(!t)return Q;let n=o=>K(o);switch(i.op){case"equals":return o=>n(o)===t;case"before":return o=>{let r=n(o);return r!==null&&r<t};case"after":return o=>{let r=n(o);return r!==null&&r>t};case"between":{let o=i.valueTo;if(!o)return Q;let r=t<o?t:o,s=t<o?o:t;return a=>{let d=n(a);return d!==null&&d>=r&&d<=s}}}return Q}case"set":{let t=new Set(i.values.map(_));return n=>t.has(_(n))}}return Q}function Ot(i){let e=i.trim().toLowerCase();return e?e.split(/\s+/):[]}function zt(i,e){return i.every(t=>e.includes(t))}var Vt=new Map;function Jn(i){var o;if(i==="integer")return{maximumFractionDigits:0};if(i==="percent")return{style:"percent"};if(i.startsWith("currency:"))return{style:"currency",currency:i.slice(9)};if(!/^[#0,]*(\.[#0]+)?%?$/.test(i)||!/[#0]/.test(i))return null;let e=i.endsWith("%"),t=e?i.slice(0,-1):i,n=t.includes(".")?t.split(".")[1]:"";return{useGrouping:t.includes(","),minimumFractionDigits:((o=n.match(/0/g))!=null?o:[]).length,maximumFractionDigits:n.length,...e?{style:"percent"}:{}}}var ke={date:{year:"numeric",month:"2-digit",day:"2-digit"},datetime:{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"},time:{hour:"2-digit",minute:"2-digit"},short:{dateStyle:"short"},medium:{dateStyle:"medium"},long:{dateStyle:"long"}};function Y(i){if(F(i))return null;if(i instanceof Date)return Number.isNaN(i.getTime())?null:i;if(typeof i=="string"){let t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(i);if(t)return new Date(Number(t[1]),Number(t[2])-1,Number(t[3]))}if(typeof i!="string"&&typeof i!="number")return null;let e=new Date(i);return Number.isNaN(e.getTime())?null:e}function Qn(i,e,t){var n;switch(i){case"number":{let o={};if(typeof e=="string"){let s=Jn(e);s||N(`unknown number format "${e}"`),o=s!=null?s:{}}else e&&(o=e);let r=new Intl.NumberFormat(t,o);return s=>{if(F(s))return"";let a=typeof s=="number"?s:Number(s);return Number.isNaN(a)?String(s):r.format(a)}}case"date":{if(t.toLowerCase().startsWith("ko")&&(e===void 0||e==="date"||e==="datetime")){let s=d=>String(d).padStart(2,"0"),a=e==="datetime";return d=>{let c=Y(d);if(!c)return F(d)?"":String(d);let l=`${c.getFullYear()}-${s(c.getMonth()+1)}-${s(c.getDate())}`;return a?`${l} ${s(c.getHours())}:${s(c.getMinutes())}`:l}}let o=ke.date;typeof e=="string"?(ke[e]||N(`unknown date format "${e}"`),o=(n=ke[e])!=null?n:ke.date):e&&(o=e);let r=new Intl.DateTimeFormat(t,o);return s=>{let a=Y(s);return a?r.format(a):F(s)?"":String(s)}}case"boolean":return o=>o===!0?"\u2713":o===!1?"\u2717":"";default:return o=>F(o)?"":o instanceof Date?o.toISOString():String(o)}}function V(i,e){var r;let t=i.format,n=`${e}|${(r=i.type)!=null?r:"text"}|${typeof t=="string"?t:JSON.stringify(t!=null?t:null)}`,o=Vt.get(n);return o||(o=Qn(i.type,t,e),Vt.set(n,o)),o}function B(i,e){var t;if(i.valueGetter)try{return i.valueGetter(e)}catch{N(`valueGetter of column "${(t=i.id)!=null?t:i.field}" threw; rendering an empty cell`);return}return i.field!=null?e[i.field]:void 0}function et(i){let e=[];for(let t of i){if(F(t)||t instanceof Date)continue;let n=typeof t=="number"?t:Number(t);Number.isNaN(n)||e.push(n)}return e}function Gt(i,e){let t=i.filter(o=>o instanceof Date&&!Number.isNaN(o.getTime()));if(t.length)return t.reduce((o,r)=>(e?r>o:r<o)?r:o);let n=et(i);return n.length?e?Math.max(...n):Math.min(...n):null}function ie(i,e,t){if(typeof i=="function")return i(e,t);switch(i){case"sum":return et(e).reduce((n,o)=>n+o,0);case"avg":{let n=et(e);return n.length?n.reduce((o,r)=>o+r,0)/n.length:null}case"min":return Gt(e,!1);case"max":return Gt(e,!0);case"count":return t.length}return null}function tt(i){return typeof i=="object"&&i!==null&&"agg"in i?i:{agg:i}}function qt(i,e,t){let n=new Map,o=(r,s)=>{let a=n.get(r);return a||n.set(r,a=e.map(d=>B(s,d))),a};return i.map(r=>{var a;let s={};for(let[d,c]of Object.entries((a=r.columns)!=null?a:{})){let l=t(d);l&&(s[d]=ie(tt(c).agg,o(d,l),e))}return s})}function Ut(i,e,t,n,o=4){if(n<=0||t<=0)return{first:0,last:-1};let r=Math.max(0,Math.floor(i/t)-o),s=Math.floor((i+e)/t);return{first:Math.min(r,n-1),last:Math.min(n-1,s+o)}}function Me(i,e,t,n,o=2){let r=i.length;if(!r)return{first:0,last:-1};let s=0,a=r-1;for(;s<a;){let l=s+a>>1;i[l]+e[l]<=t?s=l+1:a=l}let d=s,c=t+n;for(a=r-1;s<a;){let l=s+a+1>>1;i[l]<c?s=l:a=l-1}return{first:Math.max(0,d-o),last:Math.min(r-1,Math.max(d,s)+o)}}function Kt(i,e,t,n,o=4){if(n<=0)return{first:0,last:-1};let r=0,s=n-1;for(;r<s;){let c=r+s>>1;i[c+1]<=e?r=c+1:s=c}let a=r,d=e+t;for(s=n-1;r<s;){let c=r+s+1>>1;i[c]<d?r=c:s=c-1}return{first:Math.max(0,a-o),last:Math.min(n-1,r+o)}}var W=["left","center","right"],_t=6,nt=2,eo='<svg viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"><path d="M3 4h10M3 8h10M3 12h10" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></svg>',ot='<svg viewBox="0 0 16 16" width="12" height="12" aria-hidden="true"><path d="M6 3.5 10.5 8 6 12.5" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg>';var to='<svg viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"><path d="M2.5 3h11l-4.2 5v4.5l-2.6 1.2V8z" fill="currentColor"/></svg>';function b(i,e="",t={}){let n=document.createElement(i);e&&(n.className=e);for(let[o,r]of Object.entries(t))n.setAttribute(o,r);return n}var Se=class{constructor(e,t,n){this.grid=t;this.opts=n;this.painted={left:new Map,center:new Map,right:new Map};this.pool={left:[],center:[],right:[]};this.frame=0;this.headerDirty=!0;this.version=0;this.lastRange={first:0,last:-1};this.summaryEl=null;this.summaryPanes=null;this.summaryInners=null;this.canvasSummary={left:[],center:[],right:[]};this.topOffset=0;this.pinnedTop=null;this.pinnedBottom=null;this.statusEl=null;this.statusKey="";this.pagerEl=null;this.pagerKey="";this.offsets=null;this.details=new Map;this.firstDataId="";this.groupLabelId="";this.onScroll=()=>{this.frame&&cancelAnimationFrame(this.frame),this.frame=0,this.render()};this.onSideWheel=e=>{e.deltaY&&(e.preventDefault(),this.scroller.scrollTop+=e.deltaY)};this.root=b("div","",{role:"grid",tabindex:"0"}),this.headerEl=b("div","fg-header",{role:"rowgroup"}),this.bodyEl=b("div","fg-body",{role:"rowgroup"});let o=r=>({left:b("div",`${r} ${r}-left`),center:b("div",`${r} ${r}-center`),right:b("div",`${r} ${r}-right`)});this.headerPanes=o("fg-header-pane"),this.headerInners=o("fg-header-inner"),this.bodyPanes=o("fg-body-pane"),this.canvases=o("fg-canvas");for(let r of W)this.headerPanes[r].dataset.region=r,this.bodyPanes[r].dataset.region=r,this.headerPanes[r].append(this.headerInners[r]),this.bodyPanes[r].append(this.canvases[r]),this.headerEl.append(this.headerPanes[r]),this.bodyEl.append(this.bodyPanes[r]);this.scroller=this.bodyPanes.center,this.overlay=b("div","fg-overlay",{role:"status"}),this.main=b("div","fg-main"),this.main.append(this.headerEl,this.bodyEl,this.overlay),this.root.append(this.main),e.append(this.root),this.applyTheme(),this.scroller.addEventListener("scroll",this.onScroll,{passive:!0}),this.bodyPanes.left.addEventListener("wheel",this.onSideWheel,{passive:!1}),this.bodyPanes.right.addEventListener("wheel",this.onSideWheel,{passive:!1})}applyFont(e,t){e?this.root.style.setProperty("--fg-font-size",`${e}px`):this.root.style.removeProperty("--fg-font-size"),t?this.root.style.setProperty("--fg-font",t):this.root.style.removeProperty("--fg-font")}applyTheme(){this.root.className=`fg-root fg-theme-${this.grid.store.state.theme}`}invalidate(e={}){e.header&&(this.headerDirty=!0),e.rows&&this.version++,this.schedule()}schedule(){this.frame||(this.frame=requestAnimationFrame(()=>{this.frame=0,this.render()}))}render(){var R,f,g,v,C,k;let{columns:e,rowModel:t,store:n,options:o}=this.grid,{rowHeight:r,headerHeight:s}=this.opts,a=this.scroller.offsetWidth-this.scroller.clientWidth;e.setContainerWidth(Math.max(0,this.main.clientWidth-a))&&(this.headerDirty=!0,this.version++);let d=t.getRowCount(),c=t.layout(r,this.detailHeight());this.offsets=c.uniform?null:c.offsets,this.firstDataId=(f=(R=e.displayed().find(E=>!T(E.id)))==null?void 0:R.id)!=null?f:"",this.groupLabelId=(v=(g=e.region("center").find(E=>!T(E.id)))==null?void 0:g.id)!=null?v:this.firstDataId;let l=this.grid.summary(),u=l?l.opts.rows.length:0,h=(C=l==null?void 0:l.opts.position)!=null?C:"bottom",p=l?l.opts.pinned!==!1:!1;this.topOffset=l&&!p&&h==="top"?u*r:0;let m=l&&!p&&h==="bottom"?u*r:0;this.syncSummaryPane(l&&p?h:null,u*r);let x=e.depth*s;this.headerEl.style.height=`${x}px`;for(let E of W){let I=e.regionWidth(E);E!=="center"&&(this.headerPanes[E].style.width=this.bodyPanes[E].style.width=`${I}px`,this.headerPanes[E].hidden=this.bodyPanes[E].hidden=I===0),this.canvases[E].style.width=`${I}px`,this.canvases[E].style.height=`${this.rowsHeight(d)+this.topOffset+m}px`}let w=this.scroller.offsetHeight-this.scroller.clientHeight;this.bodyPanes.left.style.marginBottom=this.bodyPanes.right.style.marginBottom=`${w}px`,this.root.setAttribute("aria-rowcount",String(d+e.depth)),this.root.setAttribute("aria-colcount",String(e.displayed().length)),o.rowSelection==="multiple"&&this.root.setAttribute("aria-multiselectable","true"),this.headerDirty&&(this.headerDirty=!1,this.renderHeader()),this.renderRows(d),this.renderSummary(d,l&&l.opts.rows,(k=l==null?void 0:l.values)!=null?k:[],p,h),this.pinnedTop=this.renderPinned(this.pinnedTop,"top",this.grid.pinnedRows.top),this.pinnedBottom=this.renderPinned(this.pinnedBottom,"bottom",this.grid.pinnedRows.bottom),this.renderStatusBar(t.dataCount()),this.renderPager(),this.orderSections(l&&p?h:null),this.overlay.hidden=d>0,this.overlay.textContent=d===0&&t.loading()?n.state.locale.loading:n.state.locale.noRows,this.overlay.style.top=`${x}px`;let{scrollTop:y,scrollLeft:M}=this.scroller;this.bodyPanes.left.scrollTop=this.bodyPanes.right.scrollTop=y,this.headerInners.center.style.transform=`translateX(${-M}px)`,this.summaryInners&&(this.summaryInners.center.style.transform=`translateX(${-M}px)`);for(let E of[this.pinnedTop,this.pinnedBottom])E&&(E.inners.center.style.transform=`translateX(${-M}px)`);this.grid.fillHandle.update()}orderSections(e){var r,s,a,d;let t=[e==="top"?this.summaryEl:null,(s=(r=this.pinnedTop)==null?void 0:r.el)!=null?s:null].filter(c=>!!c),n=[(d=(a=this.pinnedBottom)==null?void 0:a.el)!=null?d:null,e==="bottom"?this.summaryEl:null,this.statusEl,this.pagerEl].filter(c=>!!c);for(let c of t)c.nextElementSibling!==this.bodyEl&&!t.includes(c.nextElementSibling)&&this.main.insertBefore(c,this.bodyEl);let o=this.bodyEl;for(let c=t.length-1;c>=0;c--)o.previousElementSibling!==t[c]&&this.main.insertBefore(t[c],o),o=t[c];o=this.bodyEl;for(let c of n)o.nextElementSibling!==c&&o.after(c),o=c}renderPinned(e,t,n){if(!n.length)return e==null||e.el.remove(),null;let o=e!=null?e:new rt(`fg-pinned-rows fg-pinned-${t}`),{columns:r}=this.grid,s=this.opts.rowHeight;o.size(r,n.length*s,this.scroller.offsetWidth-this.scroller.clientWidth);let a=r.region("center"),d=Me(a.map(c=>c.left),a.map(c=>c.width),this.scroller.scrollLeft,this.scroller.clientWidth,nt);for(let c of W){let l=c==="center"?a.slice(d.first,d.last+1):r.region(c);o.inners[c].replaceChildren(...n.map((u,h)=>{let p=b("div","fg-row fg-row-pinned",{role:"row"});p.style.transform=`translateY(${h*s}px)`,p.style.height=`${s}px`;let m={id:`pinned-${t}-${h}`,data:u,sourceIndex:-1};for(let x of l){let w=b("div","fg-cell",{role:"gridcell"});T(x.id)?(w.style.left=`${x.left}px`,w.style.width=`${x.width}px`):this.paintCell(w,m,-1,x,!1,!1),p.append(w)}return p}))}return o}renderStatusBar(e){var u,h;if(!this.grid.options.statusBar){(u=this.statusEl)==null||u.remove(),this.statusEl=null;return}let{grid:t}=this,n=t.store.state,o=t.rowModel.server?e:t.viewRows().length,r=`${this.version}|${e}|${o}|${n.selected.size}|${JSON.stringify(n.range)}|${n.locale.code}`;if(this.statusEl&&r===this.statusKey)return;this.statusKey=r,(h=this.statusEl)!=null||(this.statusEl=b("div","fg-statusbar",{role:"status","aria-live":"polite"}));let s=n.locale,a=new Intl.NumberFormat(s.code,{maximumFractionDigits:2}),d=b("span","fg-status-rows");d.textContent=(e===o?s.statusRows.replace("{n}",a.format(o)):s.statusFiltered.replace("{shown}",a.format(e)).replace("{total}",a.format(o)))+(n.selected.size?` \xB7 ${s.statusSelected.replace("{n}",a.format(n.selected.size))}`:"");let c=b("span","fg-status-aggs"),l=t.rangeAggregates();if(l&&l.cells>1){let p=[`${s.count} ${a.format(l.count)}`];l.numbers&&p.push(`${s.sum} ${a.format(l.sum)}`,`${s.avg} ${a.format(l.sum/l.numbers)}`,`${s.min} ${a.format(l.min)}`,`${s.max} ${a.format(l.max)}`),c.textContent=p.join(" ")}this.statusEl.replaceChildren(d,c)}renderHeader(){let{columns:e,store:t}=this.grid,{sort:n,filters:o,locale:r}=t.state;for(let s of W){let a=this.headerInners[s];a.style.width=`${e.regionWidth(s)}px`,a.style.height=`${e.depth*this.opts.headerHeight}px`,a.replaceChildren(...e.headerCells(s).map(d=>this.headerCell(d,n,o,r)))}}headerCell(e,t,n,o){var l,u;let r=this.opts.headerHeight,s=b("div",e.isGroup?"fg-header-cell fg-header-group":"fg-header-cell",{role:"columnheader"});if(s.dataset.col=e.id,s.style.left=`${e.left}px`,s.style.top=`${e.row*r}px`,s.style.width=`${e.width}px`,s.style.height=`${e.rowSpan*r}px`,T(e.id))return e.id===X&&(s.classList.add("fg-header-select"),s.append(this.selectAllBox(o))),s;let a=b("span","fg-header-label");if(a.textContent=e.label,s.append(a),e.isGroup||!e.column)return s;let d=e.node.def;((l=d.wrapHeaderText)!=null?l:this.grid.options.wrapHeaderText)&&s.classList.add("fg-header-wrap"),s.setAttribute("aria-colindex",String(e.column.index+1)),((u=d.align)!=null?u:d.type==="number"?"right":"left")==="right"&&s.classList.add("fg-align-right");let c=t.findIndex(h=>h.colId===e.id);if(s.setAttribute("aria-sort",c<0?"none":t[c].dir==="asc"?"ascending":"descending"),te(d)&&s.classList.add("fg-sortable"),c>=0){let h=b("span","fg-sort-icon");if(h.textContent=t[c].dir==="asc"?"\u2191":"\u2193",t.length>1){let p=b("sup");p.textContent=String(c+1),h.append(p)}s.append(h)}if(te(d)||se(d)){let h=!!n[e.id],p=b("button",h?"fg-menu-btn fg-filter-active":"fg-menu-btn",{type:"button",tabindex:"-1","aria-label":o.columnMenu});p.innerHTML=h?to:eo,s.append(p)}return Re(d)&&s.append(b("div","fg-resize",{"aria-hidden":"true"})),s}selectAllBox(e){let t=this.grid.rowModel.dataRows(),n=this.grid.store.state.selected,o=0;for(let s of t)n.has(s.id)&&o++;let r=b("input","fg-checkbox fg-select-all",{type:"checkbox",tabindex:"-1","aria-label":e.selectAllRows});return r.checked=t.length>0&&o===t.length,r.indeterminate=o>0&&o<t.length,r.hidden=this.grid.options.rowSelection!=="multiple",r}renderRows(e){var p,m,x;let{columns:t,rowModel:n,store:o}=this.grid,{selected:r,focus:s}=o.state,a=this.grid.rangeBounds(),d=this.grid.mergeSpans(),c=Math.max(0,this.scroller.scrollTop-this.topOffset),l=this.offsets?Kt(this.offsets,c,this.scroller.clientHeight,e,_t):Ut(c,this.scroller.clientHeight,this.opts.rowHeight,e,_t);this.lastRange=l;let u=t.region("center"),h=Me(u.map(w=>w.left),u.map(w=>w.width),this.scroller.scrollLeft,this.scroller.clientWidth,nt);for(let w of W){let y=w==="center"?u.slice(h.first,h.last+1):t.region(w),M=this.painted[w];for(let[f,g]of M)f>=l.first&&f<=l.last&&y.length||(g.el.remove(),this.pool[w].push(g.el),M.delete(f));if(!y.length)continue;let R=w==="center"?`${h.first}-${h.last}`:"";for(let f=l.first;f<=l.last;f++){let g=n.getRow(f),v=r.has(g.id),C=s&&s.rowIndex===f?s.colId:"",k=a&&f>=a.r1&&f<=a.r2?`${a.c1}-${a.c2}`:"",E=this.mergeState(d,y,f,l.first),I=g.kind==="detail"?`${this.scroller.scrollLeft}:${this.scroller.clientWidth}`:"",L=`${g.id}|${this.version}|${R}|${v?1:0}|${C}|${k}|${E}|${I}`,S=M.get(f);if(!S){let P=(p=this.pool[w].pop())!=null?p:b("div","fg-row",{role:"row"});this.canvases[w].append(P),S={el:P,key:""},M.set(f,S)}S.key!==L&&(S.key=L,S.el.dataset.kind!==((m=g.kind)!=null?m:"")&&(S.el.replaceChildren(),S.el.dataset.kind=(x=g.kind)!=null?x:""),g.kind==="group"?this.paintGroupRow(S.el,g,f,y,C):g.kind==="detail"?this.paintDetailRow(S.el,g,f,w):g.kind==="loading"?this.paintLoadingRow(S.el,f,y):this.paintRow(S.el,g,f,y,v,C,k?a:null,d,l.first))}}}mergeState(e,t,n,o){if(!e.size)return"";let r="";for(let s of t){let a=e.get(s.id);if(!a)continue;let d=a.start[n],c=a.end[n];r+=d===c?"n":n===Math.max(d,o)?`d${d}`:"h"}return r}paintRow(e,t,n,o,r,s,a,d=new Map,c=0){let l=this.opts.rowHeight;for(e.className=`fg-row${n%2?" fg-row-odd":""}${r?" fg-row-selected":""}${this.grid.tracker.created.has(t.data)?" fg-row-created":""}`,this.placeRow(e,n),this.grid.options.rowSelection&&e.setAttribute("aria-selected",String(r)),t.level!==void 0?e.setAttribute("aria-level",String(t.level+1)):e.removeAttribute("aria-level"),t.hasChildren?e.setAttribute("aria-expanded",String(!!t.expanded)):e.removeAttribute("aria-expanded");e.childElementCount>o.length;)e.lastElementChild.remove();for(;e.childElementCount<o.length;)e.append(b("div","fg-cell",{role:"gridcell"}));let u=!1;o.forEach((h,p)=>{let m=e.children[p];this.paintCell(m,t,n,h,r,s===h.id),h.id===this.firstDataId&&this.decorate(m,t),m.style.top=m.style.height=m.style.bottom="";let x=d.get(h.id);x&&x.start[n]!==x.end[n]&&(n===Math.max(x.start[n],c)?(m.classList.add("fg-cell-merged"),m.style.top=`${-(n-x.start[n])*l}px`,m.style.height=`${(x.end[n]-x.start[n]+1)*l}px`,m.style.bottom="auto",u=!0):m.classList.add("fg-cell-merge-hidden")),a&&h.index>=a.c1&&h.index<=a.c2&&!T(h.id)&&m.classList.add("fg-cell-range")}),e.style.zIndex=u?"1":""}paintCell(e,t,n,o,r,s){var p;let a=this.grid.store.state.locale;e.style.left=`${o.left}px`,e.style.width=`${o.width}px`,e.dataset.col=o.id,e.setAttribute("aria-colindex",String(o.index+1));let d=s?"fg-cell fg-cell-focused":"fg-cell";if(o.id===ee){e.className=`${d} fg-cell-drag`;let m=b("span",this.grid.canMoveRows()?"fg-drag-handle":"fg-drag-handle fg-drag-disabled",{"aria-hidden":"true"});m.textContent="\u22EE\u22EE",e.replaceChildren(m);return}if(o.id===X){e.className=`${d} fg-cell-select`;let m=b("input","fg-checkbox",{type:"checkbox",tabindex:"-1","aria-label":a.selectRow});m.checked=r,e.replaceChildren(m);return}let c=o.def,l=B(c,t.data),u=V(c,a.code)(l);d+=` fg-align-${(p=c.align)!=null?p:c.type==="number"?"right":c.type==="boolean"?"center":"left"}`;let h={value:l,formatted:u,row:t.data,rowIndex:n,column:c};if(c.cellClass)try{let m=typeof c.cellClass=="function"?c.cellClass(h):c.cellClass;m&&(d+=` ${m}`)}catch{N(`cellClass of column "${o.id}" threw`)}if(this.grid.tracker.isDirty(t.data,c.field)&&(d+=" fg-cell-dirty"),n>=0&&(d+=this.grid.finder.classFor(n,o.id)),e.className=d,!c.renderer){e.textContent=u;return}try{let m=c.renderer(h);typeof m=="string"?e.innerHTML=m:e.replaceChildren(m)}catch{N(`renderer of column "${o.id}" threw; rendering an empty cell`),e.textContent=""}}cellAt(e){let t=e instanceof Element?e.closest(".fg-cell"):null,n=t==null?void 0:t.parentElement;return!t||!(n!=null&&n.dataset.row)||!t.dataset.col||t.closest(".fg-root")!==this.root?null:{rowIndex:Number(n.dataset.row),colId:t.dataset.col}}ensureVisible(e,t){let n=this.scroller,o=this.rowTop(e),r=o+Math.min(this.rowH(e),n.clientHeight||1/0);o<n.scrollTop?n.scrollTop=o:r>n.scrollTop+n.clientHeight&&(n.scrollTop=r-n.clientHeight);let s=t?this.grid.columns.getColumn(t):void 0;(s==null?void 0:s.region)==="center"&&(s.left<n.scrollLeft?n.scrollLeft=s.left:s.left+s.width>n.scrollLeft+n.clientWidth&&(n.scrollLeft=s.left+s.width-n.clientWidth))}syncSummaryPane(e,t){var o;if(!e){(o=this.summaryEl)==null||o.remove(),this.summaryEl=this.summaryPanes=this.summaryInners=null;return}if(!this.summaryEl){let r=s=>({left:b("div",`${s} ${s}-left`),center:b("div",`${s} ${s}-center`),right:b("div",`${s} ${s}-right`)});this.summaryEl=b("div","fg-summary",{role:"rowgroup"}),this.summaryPanes=r("fg-summary-pane"),this.summaryInners=r("fg-summary-inner");for(let s of W)this.summaryPanes[s].append(this.summaryInners[s]),this.summaryEl.append(this.summaryPanes[s])}this.summaryEl.className=`fg-summary fg-summary-${e}`,this.summaryEl.style.height=`${t}px`;for(let r of W){let s=this.grid.columns.regionWidth(r);r!=="center"&&(this.summaryPanes[r].style.width=`${s}px`,this.summaryPanes[r].hidden=s===0),this.summaryInners[r].style.width=`${s}px`,this.summaryInners[r].style.height=`${t}px`}let n=this.scroller.offsetWidth-this.scroller.clientWidth;this.summaryPanes.center.style.marginRight=`${n}px`}renderSummary(e,t,n,o,r){for(let u of W){for(let h of this.canvasSummary[u])h.remove();this.canvasSummary[u]=[]}if(!t)return;let{columns:s}=this.grid,a=this.opts.rowHeight,d=s.region("center"),c=Me(d.map(u=>u.left),d.map(u=>u.width),this.scroller.scrollLeft,this.scroller.clientWidth,nt),l=s.displayed().filter(u=>!T(u.id));for(let u of W){let h=u==="center"?d.slice(c.first,c.last+1):s.region(u),p=t.map((m,x)=>{var R,f,g;let w=m.label!=null&&(f=(R=l.find(v=>{var C;return!(v.id in((C=m.columns)!=null?C:{}))}))==null?void 0:R.id)!=null?f:null,y=b("div","fg-row fg-summary-row",{role:"row"}),M=o||r==="top"?x*a:this.rowsHeight(e)+x*a;y.style.transform=`translateY(${M}px)`,y.style.height=`${a}px`;for(let v of h)y.append(this.summaryCell(v,m,(g=n[x])!=null?g:{},w));return y});o?this.summaryInners[u].replaceChildren(...p):(this.canvases[u].append(...p),this.canvasSummary[u]=p)}}summaryCell(e,t,n,o){var p,m,x,w,y;let r=b("div","fg-cell",{role:"gridcell"});r.style.left=`${e.left}px`,r.style.width=`${e.width}px`,r.dataset.col=e.id;let s=e.def,a=(p=s.align)!=null?p:s.type==="number"?"right":s.type==="boolean"?"center":"left";r.className=`fg-cell fg-align-${a}`;let d=(m=t.columns)==null?void 0:m[e.id];if(d===void 0)return e.id===o&&(r.textContent=(x=t.label)!=null?x:"",r.classList.add("fg-summary-label")),r;let c=n[e.id],l=tt(d),u=this.grid.store.state.locale.code,h;if(c==null||c==="")h="";else if(typeof c=="string")h=c;else if(l.agg==="count")h=new Intl.NumberFormat(u).format(c);else{let M=(w=s.type)!=null?w:typeof c=="number"?"number":c instanceof Date?"date":void 0;h=V({...s,type:M,format:(y=l.format)!=null?y:s.format},u)(c)}return r.textContent=l.prefix&&h?`${l.prefix} ${h}`:h,r}detailHeight(){let e=this.grid.options.detailHeight;return typeof e=="number"&&e>0?e:240}rowTop(e){return(this.offsets?this.offsets[e]:e*this.opts.rowHeight)+this.topOffset}rowH(e){return this.offsets?this.offsets[e+1]-this.offsets[e]:this.opts.rowHeight}rowsHeight(e){return this.offsets?this.offsets[e]:e*this.opts.rowHeight}placeRow(e,t){e.style.transform=`translateY(${this.rowTop(t)}px)`,e.style.height=`${this.rowH(t)}px`,e.dataset.row=String(t),e.setAttribute("aria-rowindex",String(t+1+this.grid.columns.depth))}decorate(e,t){var c;let{grid:n}=this,o=n.store.state.locale,r=(c=t.level)!=null?c:0,s=!!n.options.treeData,a=n.canExpandDetail(t.data);if(!s&&!a&&!r)return;e.classList.add("fg-cell-lead"),e.style.setProperty("--fg-level",String(r));let d=[];if(s)if(t.hasChildren){let l=b("button",t.expanded?"fg-tree-toggle fg-expanded":"fg-tree-toggle",{type:"button",tabindex:"-1","aria-label":t.expanded?o.collapseAll:o.expandAll,"aria-expanded":String(!!t.expanded)});l.innerHTML=ot,d.push(l)}else d.push(b("span","fg-tree-spacer",{"aria-hidden":"true"}));if(a){let l=n.isDetailExpanded(t.data),u=b("button",l?"fg-detail-toggle fg-expanded":"fg-detail-toggle",{type:"button",tabindex:"-1","aria-expanded":String(l),"aria-label":l?o.collapseAll:o.expandAll});u.innerHTML=ot,d.push(u)}e.prepend(...d)}paintGroupRow(e,t,n,o,r){var c;let s=t.group,{grid:a}=this,d=a.store.state.locale;for(e.className="fg-row fg-row-group",this.placeRow(e,n),e.setAttribute("aria-level",String(((c=t.level)!=null?c:0)+1)),e.setAttribute("aria-expanded",String(s.expanded)),e.removeAttribute("aria-selected"),e.style.zIndex="";e.childElementCount>o.length;)e.lastElementChild.remove();for(;e.childElementCount<o.length;)e.append(b("div","fg-cell",{role:"gridcell"}));o.forEach((l,u)=>{var y,M,R,f,g,v;let h=e.children[u];h.style.left=`${l.left}px`,h.style.width=`${l.width}px`,h.style.top=h.style.height=h.style.bottom="",h.style.removeProperty("--fg-level"),h.dataset.col=l.id,h.setAttribute("aria-colindex",String(l.index+1));let p=r===l.id?" fg-cell-focused":"";if(l.id===this.groupLabelId){h.className=`fg-cell fg-group-cell${p}`,h.style.setProperty("--fg-level",String((y=t.level)!=null?y:0));let C=b("button",s.expanded?"fg-group-toggle fg-expanded":"fg-group-toggle",{type:"button",tabindex:"-1","aria-expanded":String(s.expanded),"aria-label":s.expanded?d.collapseAll:d.expandAll});C.innerHTML=ot;let k=(M=a.columns.getNode(s.colId))==null?void 0:M.def,E=b("span","fg-group-label"),I=F(s.value)?d.blanks:k?V(k,d.code)(s.value):String(s.value),L=new Intl.NumberFormat(d.code);E.textContent=`${(f=(R=k==null?void 0:k.header)!=null?R:k==null?void 0:k.field)!=null?f:s.colId}: ${I} (${L.format(s.rows.length)})`,h.replaceChildren(C,E);return}let m=l.def,x=(g=m.align)!=null?g:m.type==="number"?"right":m.type==="boolean"?"center":"left";h.className=`fg-cell fg-align-${x}${p}`;let w=m.aggFunc&&!T(l.id)?a.groupAggregate(t,l.id):void 0;if(w==null||w==="")h.textContent="";else if(m.aggFunc==="count")h.textContent=new Intl.NumberFormat(d.code).format(w);else{let C=(v=m.type)!=null?v:typeof w=="number"?"number":w instanceof Date?"date":void 0;h.textContent=V({...m,type:C},d.code)(w)}h.textContent&&h.classList.add("fg-cell-agg")})}paintDetailRow(e,t,n,o){var a,d;if(e.className="fg-row fg-row-detail",this.placeRow(e,n),e.style.zIndex="",o!=="center"){e.replaceChildren();return}let r=t.detailOf,s=this.details.get(r.id);if(!s){s=b("div","fg-detail");try{let c=(d=(a=this.grid.options).detailRenderer)==null?void 0:d.call(a,{row:r.data,rowIndex:n-1});typeof c=="string"?s.innerHTML=c:c&&s.append(c)}catch{N("detailRenderer threw; showing an empty panel")}this.details.set(r.id,s)}s.style.left=`${this.scroller.scrollLeft}px`,s.style.width=`${this.scroller.clientWidth||this.grid.columns.regionWidth("center")}px`,(e.firstChild!==s||e.childNodes.length!==1)&&e.replaceChildren(s)}paintLoadingRow(e,t,n){e.className="fg-row fg-row-loading",this.placeRow(e,t),e.setAttribute("aria-busy","true"),e.style.zIndex="",e.replaceChildren(...n.map(o=>{let r=b("div","fg-cell",{role:"gridcell"});return r.style.left=`${o.left}px`,r.style.width=`${o.width}px`,r.dataset.col=o.id,T(o.id)||r.append(b("span","fg-skeleton",{"aria-hidden":"true"})),r}))}renderPager(){var y;let{grid:e}=this,t=e.options.pagination;if(!t){(y=this.pagerEl)==null||y.remove(),this.pagerEl=null;return}let n=e.store.state.locale,o=e.getPage(),r=e.getPageSize(),s=e.getPageCount(),a=e.rowModel.fullCount(),d=typeof t=="object"&&Array.isArray(t.pageSizes)?t.pageSizes.filter(M=>Number.isInteger(M)&&M>0):[],c=`${o}|${r}|${s}|${a}|${n.code}|${d.join(",")}`;if(this.pagerEl&&c===this.pagerKey)return;this.pagerKey=c,this.pagerEl||(this.pagerEl=b("div","fg-pager",{role:"navigation"}),this.pagerEl.addEventListener("click",M=>{var g;let R=(g=M.target.closest("button[data-action]"))==null?void 0:g.dataset.action,f=e.getPage();R==="first"?e.setPage(0):R==="prev"?e.setPage(f-1):R==="next"?e.setPage(f+1):R==="last"&&e.setPage(e.getPageCount()-1)}),this.pagerEl.addEventListener("change",M=>{let R=M.target;R.classList.contains("fg-pager-size")&&e.setPageSize(Number(R.value))})),this.pagerEl.setAttribute("aria-label",n.pageSize);let l=new Intl.NumberFormat(n.code),u=a?o*r+1:0,h=Math.min(a,(o+1)*r),p=b("span","fg-pager-range");p.textContent=n.pagerRange.replace("{from}",l.format(u)).replace("{to}",l.format(h)).replace("{total}",l.format(a));let m=[p,b("span","fg-pager-spacer")];if(d.length){let M=b("label","fg-pager-size-label");M.textContent=n.pageSize;let R=b("select","fg-pager-size");for(let f of[...new Set([...d,r])].sort((g,v)=>g-v)){let g=b("option");g.value=String(f),g.textContent=l.format(f),g.selected=f===r,R.append(g)}M.append(R),m.push(M)}let x=(M,R,f,g)=>{let v=b("button","fg-pager-btn",{type:"button","aria-label":f,title:f});return v.dataset.action=M,v.textContent=R,v.disabled=g,v},w=b("span","fg-pager-page",{"aria-live":"polite"});w.textContent=n.pageOf.replace("{page}",l.format(o+1)).replace("{pages}",l.format(s)),m.push(x("first","\xAB",n.firstPage,o===0),x("prev","\u2039",n.previousPage,o===0),w,x("next","\u203A",n.nextPage,o>=s-1),x("last","\xBB",n.lastPage,o>=s-1)),this.pagerEl.replaceChildren(...m)}dropDetail(e){e===void 0?this.details.clear():this.details.delete(e)}renderedRange(){return this.lastRange}measureText(e,t){let n=getComputedStyle(this.main),o=parseFloat(getComputedStyle(this.root).getPropertyValue("--fg-font-size"))||13;this.measureCtx===void 0&&(this.measureCtx=document.createElement("canvas").getContext("2d"));let r=this.measureCtx;return r?(r.font=`${t?600:400} ${o}px ${n.fontFamily||"sans-serif"}`,r.measureText(e).width):e.length*o*.6}scrollToRow(e){this.scroller.scrollTop=this.rowTop(Math.max(0,Math.min(e,this.grid.rowModel.getRowCount())))}pageRows(){return Math.max(1,Math.floor(this.scroller.clientHeight/this.opts.rowHeight))}destroy(){this.frame&&cancelAnimationFrame(this.frame),this.scroller.removeEventListener("scroll",this.onScroll),this.root.remove()}},rt=class{constructor(e){let t=n=>({left:b("div",`${n} ${n}-left`),center:b("div",`${n} ${n}-center`),right:b("div",`${n} ${n}-right`)});this.el=b("div",e,{role:"rowgroup"}),this.panes=t("fg-section-pane"),this.inners=t("fg-section-inner");for(let n of W)this.panes[n].append(this.inners[n]),this.el.append(this.panes[n])}size(e,t,n){this.el.style.height=`${t}px`;for(let o of W){let r=e.regionWidth(o);o!=="center"&&(this.panes[o].style.width=`${r}px`,this.panes[o].hidden=r===0),this.inners[o].style.width=`${r}px`,this.inners[o].style.height=`${t}px`}this.panes.center.style.marginRight=`${n}px`}};var no=4,Ee=class{constructor(e){this.grid=e;this.onClick=e=>{var o;let t=e.target.closest(".fg-group-chip-remove"),n=(o=t==null?void 0:t.closest(".fg-group-chip"))==null?void 0:o.dataset.col;n&&this.grid.setGroupBy(this.grid.getGroupBy().filter(r=>r!==n))};this.onPointerDown=e=>{let t=e.target,n=t.closest(".fg-group-chip");if(e.button!==0||!n||t.closest("button"))return;let o=n.dataset.col,r=e.clientX,s=!1,a=c=>{!s&&Math.abs(c.clientX-r)<no||(s=!0,n.classList.add("fg-dragging"))},d=c=>{if(window.removeEventListener("pointermove",a),window.removeEventListener("pointerup",d),n.classList.remove("fg-dragging"),!s)return;let u=[...this.el.querySelectorAll(".fg-group-chip")].filter(p=>p!==n).filter(p=>{let m=p.getBoundingClientRect();return c.clientX>m.left+m.width/2}).length,h=this.grid.getGroupBy().filter(p=>p!==o);h.splice(u,0,o),this.grid.setGroupBy(h)};window.addEventListener("pointermove",a),window.addEventListener("pointerup",d)};this.el=b("div","fg-group-panel",{role:"toolbar"}),e.renderer.main.insertBefore(this.el,e.renderer.headerEl),this.el.addEventListener("click",this.onClick),this.el.addEventListener("pointerdown",this.onPointerDown),this.refresh()}contains(e,t){let n=this.el.getBoundingClientRect();return e>=n.left&&e<=n.right&&t>=n.top&&t<=n.bottom}highlight(e){this.el.classList.toggle("fg-group-panel-over",e)}refresh(){let{grid:e}=this,t=e.store.state.locale;this.el.setAttribute("aria-label",t.groupByThis);let n=e.getGroupBy();if(!n.length){let o=b("span","fg-group-hint");o.textContent=t.groupPanelHint,this.el.replaceChildren(o);return}this.el.replaceChildren(...n.map((o,r)=>{var l,u,h;let s=(l=e.columns.getNode(o))==null?void 0:l.def,a=b("span","fg-group-chip");a.dataset.col=o;let d=b("span","fg-group-chip-label");d.textContent=(h=(u=s==null?void 0:s.header)!=null?u:s==null?void 0:s.field)!=null?h:o;let c=b("button","fg-group-chip-remove",{type:"button","aria-label":`${t.ungroup}: ${d.textContent}`});if(c.textContent="\xD7",a.append(d,c),r<n.length-1){let p=b("span","fg-group-sep",{"aria-hidden":"true"});return p.textContent="\u203A",[a,p]}return[a]}).flat())}destroy(){this.el.removeEventListener("click",this.onClick),this.el.removeEventListener("pointerdown",this.onPointerDown),this.el.remove()}};var ae=class{constructor(){this.listeners=new Map}on(e,t){let n=this.listeners.get(e);return n||this.listeners.set(e,n=new Set),n.add(t),()=>{n.delete(t)}}emit(e,t){let n=this.listeners.get(e);if(n)for(let o of[...n])try{o(t)}catch(r){console.error("[FreeGrid] event listener threw",r)}}clear(){this.listeners.clear()}};var st=new Set(["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Tab","Home","End","PageUp","PageDown"]);function it(i,e,t,n){let o=s=>Math.max(0,Math.min(n.rows-1,s)),r=s=>Math.max(0,Math.min(n.cols-1,s));switch(i){case"ArrowUp":return{rowIndex:o(t.rowIndex-1),colIndex:t.colIndex};case"ArrowDown":return{rowIndex:o(t.rowIndex+1),colIndex:t.colIndex};case"ArrowLeft":return{rowIndex:t.rowIndex,colIndex:r(t.colIndex-1)};case"ArrowRight":return{rowIndex:t.rowIndex,colIndex:r(t.colIndex+1)};case"PageUp":return{rowIndex:o(t.rowIndex-n.pageRows),colIndex:t.colIndex};case"PageDown":return{rowIndex:o(t.rowIndex+n.pageRows),colIndex:t.colIndex};case"Home":return{rowIndex:e.ctrl?0:t.rowIndex,colIndex:0};case"End":return{rowIndex:e.ctrl?n.rows-1:t.rowIndex,colIndex:n.cols-1};case"Tab":{let s=t.rowIndex*n.cols+t.colIndex+(e.shift?-1:1);return s<0||s>=n.rows*n.cols?null:{rowIndex:Math.floor(s/n.cols),colIndex:s%n.cols}}default:return null}}var oo={Enter:"edit",F2:"edit",Delete:"clear",Backspace:"clear","Ctrl+Z":"undo","Ctrl+Y":"redo","Ctrl+Shift+Z":"redo","Ctrl+F":"find"};function ro(i){let e=[];return(i.ctrlKey||i.metaKey)&&e.push("Ctrl"),i.altKey&&e.push("Alt"),i.shiftKey&&i.key.length>1&&e.push("Shift"),i.shiftKey&&i.key.length===1&&(i.ctrlKey||i.metaKey)&&e.push("Shift"),e.push(i.key.length===1?i.key.toUpperCase():i.key),e.join("+")}var so=3;function Wt(i){var R;let{renderer:e}=i,t=e.bodyEl,n=e.root,o=!1,r=f=>{let g=e.cellAt(f.target);if(!g)return null;let v=i.rowModel.getRow(g.rowIndex),C=i.columns.getColumn(g.colId);if(!v||!C)return null;let k=T(C.id)?void 0:B(C.def,v.data);return{row:v.data,rowIndex:g.rowIndex,colId:g.colId,value:k,event:f}},s=f=>{var k,E;let g=(E=(k=f.target).closest)==null?void 0:E.call(k,".fg-group-toggle, .fg-tree-toggle, .fg-detail-toggle"),v=g&&e.cellAt(f.target);if(!v)return!1;n.focus({preventScroll:!0}),i.setFocus(v.rowIndex,v.colId),i.setRange(null);let C=i.rowModel.getRow(v.rowIndex);return g.classList.contains("fg-detail-toggle")?i.setDetailExpanded(C.data,!i.isDetailExpanded(C.data)):i.toggleRow(v.rowIndex),!0},a=f=>{var I;if(s(f))return;let g=e.cellAt(f.target);if(g&&((I=i.rowModel.getRow(g.rowIndex))!=null&&I.kind)){n.focus({preventScroll:!0}),i.setFocus(g.rowIndex,g.colId),i.setRange(null);return}let v=r(f);if(!v)return;n.focus({preventScroll:!0});let C=o;o=!1;let k=i.store.state.focus,E=v.colId===X;C||(f.shiftKey&&k&&!E&&!T(k.colId)&&i.options.rangeSelection!==!1?i.setRange({start:k,end:{rowIndex:v.rowIndex,colId:v.colId}}):(i.setFocus(v.rowIndex,v.colId),i.setRange(null))),i.options.rowSelection&&!C&&i.selectFromClick(v.rowIndex,E||f.ctrlKey||f.metaKey,f.shiftKey),i.events.emit("cellClick",v)},d=f=>{var E,I;if((I=(E=f.target).closest)!=null&&I.call(E,"button"))return;let g=e.cellAt(f.target),v=g&&i.rowModel.getRow(g.rowIndex);if((v==null?void 0:v.kind)==="group"){i.toggleRow(g.rowIndex);return}if(v!=null&&v.kind)return;let C=r(f);if(!C||(i.events.emit("cellDoubleClick",C),!i.editor.canEdit(C.rowIndex,C.colId)))return;i.columns.getColumn(C.colId).def.type==="boolean"?i.applyEdit(C.rowIndex,C.colId,C.value!==!0):i.editor.start(C.rowIndex,C.colId)},c={...oo};for(let[f,g]of Object.entries((R=i.options.keymap)!=null?R:{}))c[f]=g===!1?"none":g;let l=f=>{var k,E;let g=i.store.state.focus,v=c[ro(f)];if(v==="none")return!1;switch(v){case"edit":return!g||!i.editor.canEdit(g.rowIndex,g.colId)||i.columns.getColumn(g.colId).def.type==="boolean"?!1:(i.editor.start(g.rowIndex,g.colId),!0);case"clear":return i.clearCells(),!0;case"undo":return i.undo(),!0;case"redo":return i.redo(),!0;case"copy":return i.copyToClipboard(!1),!0;case"selectAll":return i.selectAllCells(),!0;case"find":return i.options.findBar===!1?!1:(i.finder.openBar(),!0);case"paste":return(E=(k=navigator.clipboard)==null?void 0:k.readText)==null||E.call(k).then(I=>i.pasteText(I),()=>{}),!0}if(!g||!i.editor.canEdit(g.rowIndex,g.colId))return!1;let C=i.columns.getColumn(g.colId).def;if(f.key===" "&&C.type==="boolean"&&!f.ctrlKey&&!f.metaKey){let I=i.rowModel.getRow(g.rowIndex).data;return i.applyEdit(g.rowIndex,g.colId,I[C.field]!==!0),!0}return f.key.length===1&&f.key!==" "&&!f.ctrlKey&&!f.metaKey&&!f.altKey&&C.type!=="boolean"?(i.editor.start(g.rowIndex,g.colId,f.key),!0):!1},u=f=>{var I,L,S;let g=i.store.state.focus;if(!g||f.ctrlKey||f.metaKey||f.altKey||f.shiftKey)return!1;let v=i.rowModel.getRow(g.rowIndex);if(!i.isExpandable(v))return!1;let C=v.kind==="group";if(!C&&g.colId!==((I=i.columns.displayed().find(P=>!T(P.id)))==null?void 0:I.id))return!1;let k=!!((S=(L=v.group)==null?void 0:L.expanded)!=null?S:v.expanded),E=i.expandKey(v);if(C&&(f.key==="Enter"||f.key===" "))i.setGroupExpanded(E,!k);else if(f.key==="ArrowRight"&&!k)i.setGroupExpanded(E,!0);else if(f.key==="ArrowLeft"&&k)i.setGroupExpanded(E,!1);else return!1;return!0},h=f=>{let g=e.cellAt(f.target);if(!g||g.colId!==ee)return!1;f.preventDefault();let v=i.rowModel.getRow(g.rowIndex);if(!v||v.kind||!i.canMoveRows())return!0;let C=v.data,k=b("div","fg-row-drop-marker"),E=null;n.classList.add("fg-row-dragging");let I=S=>{var D;let P=(D=document.elementFromPoint(S.clientX,S.clientY))==null?void 0:D.closest(".fg-row[data-row]");if(!P||P.closest(".fg-root")!==n)return;let A=P.getBoundingClientRect(),$=S.clientY>A.top+A.height/2;E={index:Number(P.dataset.row),after:$},k.isConnected||n.append(k),k.style.top=`${($?A.bottom:A.top)-n.getBoundingClientRect().top-1}px`},L=()=>{var H,O;if(window.removeEventListener("pointermove",I),window.removeEventListener("pointerup",L),window.removeEventListener("pointercancel",L),n.classList.remove("fg-row-dragging"),k.remove(),!E)return;let S=i.rowModel.getRow(E.index),P=(O=(H=S==null?void 0:S.detailOf)==null?void 0:H.data)!=null?O:S==null?void 0:S.data,A=i.store.state.data,$=A.indexOf(C),D=A.indexOf(P)+(E.after||(S==null?void 0:S.kind)==="detail"?1:0);$<0||D<0||(D>$&&D--,i.moveRow(C,D))};return window.addEventListener("pointermove",I),window.addEventListener("pointerup",L),window.addEventListener("pointercancel",L),!0},p=f=>{if(f.button===0&&h(f)||i.options.rangeSelection===!1||f.button!==0||f.shiftKey||f.target.closest("input, a, button"))return;let g=e.cellAt(f.target);if(!g||T(g.colId))return;let v=f.clientX,C=f.clientY,k=!1,E=L=>{if(!k&&Math.hypot(L.clientX-v,L.clientY-C)<so)return;let S=e.cellAt(document.elementFromPoint(L.clientX,L.clientY));!S||T(S.colId)||(k||(k=!0,n.classList.add("fg-range-dragging"),i.setFocus(g.rowIndex,g.colId)),i.setRange({start:g,end:S}))},I=()=>{window.removeEventListener("pointermove",E),window.removeEventListener("pointerup",I),n.classList.remove("fg-range-dragging"),k&&(o=!0)};window.addEventListener("pointermove",E),window.addEventListener("pointerup",I)},m=f=>{var A,$;if(f.target!==n)return;let g=i.columns.displayed(),v=i.rowModel.getRowCount();if(!g.length||!v)return;if(u(f)){f.preventDefault();return}if(l(f)){f.preventDefault();return}let C=i.store.state.focus,k=f.ctrlKey||f.metaKey;if(f.key==="Escape"&&i.store.state.range){f.preventDefault(),i.setRange(null);return}if(k&&f.key.toLowerCase()==="a"&&i.options.rangeSelection!==!1){f.preventDefault(),i.selectAllCells();return}if(f.key==="ContextMenu"||f.key==="F10"&&f.shiftKey){f.preventDefault(),i.contextMenu.openAtFocus();return}if(f.key===" "&&C&&i.options.rowSelection){f.preventDefault(),i.selectFromClick(Math.min(C.rowIndex,v-1),!0,f.shiftKey);return}let E={rows:v,cols:g.length,pageRows:e.pageRows()},I=g.findIndex(D=>!T(D.id));if(i.options.rangeSelection!==!1&&f.shiftKey&&f.key!=="Tab"&&st.has(f.key)){let D=C!=null?C:{rowIndex:0,colId:g[I].id},H=i.store.state.range,O=(A=H==null?void 0:H.end)!=null?A:D,z={rowIndex:Math.min(O.rowIndex,v-1),colIndex:Math.max(0,g.findIndex(J=>J.id===O.colId))},G=it(f.key,{ctrl:k,shift:!1},z,E);if(!G)return;f.preventDefault();let U=g[Math.max(I,G.colIndex)].id;C||i.setFocus(D.rowIndex,D.colId),i.setRange({start:($=H==null?void 0:H.start)!=null?$:D,end:{rowIndex:G.rowIndex,colId:U}}),e.ensureVisible(G.rowIndex,U);return}let S;if(!C)S=st.has(f.key)&&f.key!=="Tab"?{rowIndex:0,colIndex:0}:null;else{let D=Math.max(0,g.findIndex(H=>H.id===C.colId));S=it(f.key,{ctrl:k,shift:f.shiftKey},{rowIndex:Math.min(C.rowIndex,v-1),colIndex:D},E)}if(!S)return;f.preventDefault();let P=g[S.colIndex].id;i.setFocus(S.rowIndex,P),i.setRange(null),e.ensureVisible(S.rowIndex,P)},x=f=>{var g,v;return(v=(g=f.target)==null?void 0:g.closest)==null?void 0:v.call(g,".fg-editor, input, textarea, select, [contenteditable]")},w=f=>{var g,v;return((v=(g=f.target)==null?void 0:g.closest)==null?void 0:v.call(g,".fg-root"))!==n},y=f=>{if(x(f)||w(f))return;let g=i.selectionTSV(!1);!g||!f.clipboardData||(f.clipboardData.setData("text/plain",g),f.preventDefault())},M=f=>{var v;if(x(f)||w(f))return;let g=(v=f.clipboardData)==null?void 0:v.getData("text/plain");g&&(f.preventDefault(),i.pasteText(g))};return t.addEventListener("click",a),t.addEventListener("dblclick",d),t.addEventListener("pointerdown",p),n.addEventListener("keydown",m),n.addEventListener("copy",y),n.addEventListener("paste",M),()=>{t.removeEventListener("click",a),t.removeEventListener("dblclick",d),t.removeEventListener("pointerdown",p),n.removeEventListener("keydown",m),n.removeEventListener("copy",y),n.removeEventListener("paste",M)}}var Le=class{constructor(e){this.grid=e;this.open=new Set;this.el=b("div","fg-filters-panel")}refresh(){var d,c;let{grid:e}=this,t=e.store.state.locale,n=e.store.state.filters,o=b("div","fg-filters-head"),r=b("span","fg-filters-title");r.textContent=t.filters;let s=b("button","fg-btn fg-filters-clear",{type:"button"});s.textContent=t.clearFilters,s.disabled=!Object.keys(n).length,s.addEventListener("click",()=>{for(let l of Object.keys(e.store.state.filters))e.setFilter(l,null)}),o.append(r,s);let a=b("div","fg-filters-list");for(let l of e.columns.displayed()){if(T(l.id)||!se(l.def))continue;let u=b("details",n[l.id]?"fg-filters-item fg-filter-on":"fg-filters-item");u.dataset.col=l.id,u.open=this.open.has(l.id);let h=b("summary");h.textContent=(c=(d=l.def.header)!=null?d:l.def.field)!=null?c:l.id,u.append(h);let p=()=>{if(u.querySelector(".fg-filter"))return;let m=e.menu.filterSection(l.id,()=>{});m&&u.append(m)};u.open&&p(),u.addEventListener("toggle",()=>{u.open?(this.open.add(l.id),p()):this.open.delete(l.id)}),a.append(u)}this.el.replaceChildren(o,a)}};var io=["sum","avg","min","max","count"],Ie=class{constructor(e){this.grid=e;this.draft={rows:[],columns:[],values:[]};this.el=b("div","fg-pivot-panel")}apply(){this.grid.getPivot()?this.grid.setPivot(this.draft):this.refresh()}refresh(){var c;let{grid:e}=this,t=e.store.state.locale,n=e.getPivot();n&&(this.draft={rows:[...n.rows],columns:[...(c=n.columns)!=null?c:[]],values:n.values.map(l=>({colId:l.colId,aggFunc:typeof l.aggFunc=="string"?l.aggFunc:"sum"}))});let o=e.sourceLeaves(),r=l=>{var h,p,m;let u=(h=o.find(x=>x.id===l))==null?void 0:h.def;return(m=(p=u==null?void 0:u.header)!=null?p:u==null?void 0:u.field)!=null?m:l},s=b("label","fg-pivot-mode"),a=b("input","fg-checkbox",{type:"checkbox"});a.checked=!!n,a.addEventListener("click",()=>e.setPivot(a.checked?this.draft:null)),s.append(a,document.createTextNode(t.pivotMode));let d=(l,u)=>{let h=b("div","fg-pivot-zone");h.dataset.zone=l;let p=b("div","fg-pivot-zone-title");p.textContent=u;let m=b("div","fg-pivot-chips"),x=l==="values"?this.draft.values.map(M=>M.colId):this.draft[l];x.forEach((M,R)=>{let f=b("span","fg-group-chip");f.dataset.col=M;let g=b("span","fg-group-chip-label");if(g.textContent=r(M),f.append(g),l==="values"){let C=b("select","fg-pivot-agg",{"aria-label":`${r(M)} ${t.pivotValues}`});for(let k of io){let E=b("option");E.value=k,E.textContent=t[k],C.append(E)}C.value=this.draft.values[R].aggFunc,C.addEventListener("change",()=>{this.draft.values[R].aggFunc=C.value,this.apply()}),f.append(C)}let v=b("button","fg-group-chip-remove",{type:"button","aria-label":`${t.ungroup}: ${r(M)}`});v.textContent="\xD7",v.addEventListener("click",()=>{l==="values"?this.draft.values.splice(R,1):this.draft[l].splice(R,1),this.apply()}),f.append(v),m.append(f)});let w=b("select","fg-pivot-add",{"aria-label":`${u}: ${t.addColumn}`}),y=b("option");y.value="",y.textContent=t.addColumn,w.append(y);for(let M of o){if(x.includes(M.id)||l==="values"&&M.def.type!=="number")continue;let R=b("option");R.value=M.id,R.textContent=r(M.id),w.append(R)}return w.addEventListener("change",()=>{w.value&&(l==="values"?this.draft.values.push({colId:w.value,aggFunc:"sum"}):this.draft[l].push(w.value),this.apply())}),h.append(p,m,w),h};this.el.replaceChildren(s,d("rows",t.pivotRows),d("columns",t.pivotColumns),d("values",t.pivotValues))}};var ao=4,De=i=>!T(i.id)&&(i.children?i.children.some(De):i.def.chooser!==!1),at=i=>{var e,t;return(t=(e=i.def.header)!=null?e:i.def.field)!=null?t:i.id},Te=class{constructor(e){this.grid=e;this.collapsed=new Set;this.el=b("div","fg-chooser"),this.search=b("input","fg-input fg-chooser-search",{type:"search"});let t=b("label","fg-chooser-all");this.allBox=b("input","fg-checkbox",{type:"checkbox"}),this.allText=b("span"),t.append(this.allBox,this.allText),this.list=b("div","fg-chooser-list",{role:"tree"}),this.el.append(this.search,t,this.list),this.search.addEventListener("input",()=>this.refresh()),this.allBox.addEventListener("change",()=>this.setVisible(this.matchingLeaves(),this.allBox.checked)),this.list.addEventListener("change",n=>{let o=n.target,r=this.nodeOf(o);r&&this.setVisible(this.leavesOf(r),o.checked)}),this.list.addEventListener("click",n=>{let o=n.target.closest(".fg-chooser-caret"),r=o&&this.nodeOf(o);r&&(this.collapsed.has(r.id)?this.collapsed.delete(r.id):this.collapsed.add(r.id),this.refresh())}),this.list.addEventListener("pointerdown",n=>this.onPointerDown(n)),this.refresh()}refresh(){let e=this.grid.store.state.locale;this.search.placeholder=e.search,this.search.setAttribute("aria-label",e.search),this.allText.textContent=e.selectAll;let t=this.query(),n=[],o=(a,d)=>{for(let c of a)!De(c)||t&&!this.subtreeMatches(c,t)||(n.push(this.item(c,d)),c.children&&(t||!this.collapsed.has(c.id))&&o(c.children,d+1))};o(this.grid.columns.roots(),0),this.list.replaceChildren(...n);let r=this.matchingLeaves(),s=r.filter(a=>!a.hide).length;this.allBox.checked=r.length>0&&s===r.length,this.allBox.indeterminate=s>0&&s<r.length}query(){return this.search.value.trim().toLowerCase()}subtreeMatches(e,t){for(let n=e;n;n=n.parent)if(at(n).toLowerCase().includes(t))return!0;return!!e.children&&e.children.some(n=>De(n)&&this.subtreeMatches(n,t))}leavesOf(e){return De(e)?e.children?e.children.flatMap(t=>this.leavesOf(t)):[e]:[]}matchingLeaves(){let e=this.query(),t=this.grid.columns.roots().flatMap(n=>this.leavesOf(n));return e?t.filter(n=>this.subtreeMatches(n,e)):t}nodeOf(e){var n;let t=(n=e.closest(".fg-chooser-item"))==null?void 0:n.dataset.col;return t?this.grid.columns.getNode(t):void 0}setVisible(e,t){this.grid.setColumnsVisible(e.filter(n=>!n.def.lockVisible).map(n=>n.id),t)}item(e,t){let n=b("div",e.children?"fg-chooser-item fg-chooser-group":"fg-chooser-item",{role:"treeitem"});n.dataset.col=e.id,n.style.paddingLeft=`${6+t*16}px`;let o=b("span","fg-chooser-handle",{"aria-hidden":"true"});if(o.textContent="\u22EE\u22EE",n.append(o),e.children){let c=!this.collapsed.has(e.id),l=b("button","fg-chooser-caret",{type:"button",tabindex:"-1","aria-hidden":"true"});l.textContent=c?"\u25BE":"\u25B8",n.setAttribute("aria-expanded",String(c)),n.append(l)}let r=this.leavesOf(e),s=r.filter(c=>!c.hide).length,a=b("input","fg-checkbox",{type:"checkbox","aria-label":at(e)});a.checked=r.length>0&&s===r.length,a.indeterminate=s>0&&s<r.length,a.disabled=r.every(c=>c.def.lockVisible);let d=b("span","fg-chooser-label");if(d.textContent=at(e),n.append(a,d),!e.children&&e.pinned){let c=b("span","fg-chooser-pin");c.textContent=e.pinned==="left"?"\u21E4":"\u21E5",n.append(c)}return n}onPointerDown(e){let t=e.target.closest(".fg-chooser-handle"),n=t==null?void 0:t.closest(".fg-chooser-item"),o=n&&this.nodeOf(n);if(!n||!o||e.button!==0)return;e.preventDefault();let r=new Set(this.grid.columns.siblings(o.id).map(p=>p.id).filter(p=>p!==o.id)),s=[...this.list.querySelectorAll(".fg-chooser-item")].filter(p=>r.has(p.dataset.col)),a=e.clientY,d=!1,c=-1,l=b("div","fg-chooser-marker"),u=p=>{if(!d){if(Math.abs(p.clientY-a)<ao||!s.length)return;d=!0,n.classList.add("fg-dragging"),this.list.append(l)}c=s.filter(w=>{let y=w.getBoundingClientRect();return p.clientY>y.top+y.height/2}).length;let m=this.list.getBoundingClientRect().top-this.list.scrollTop,x=c<s.length?s[c].getBoundingClientRect().top:s[s.length-1].getBoundingClientRect().bottom;l.style.top=`${x-m-1}px`},h=()=>{if(window.removeEventListener("pointermove",u),window.removeEventListener("pointerup",h),l.remove(),n.classList.remove("fg-dragging"),!d||c<0)return;let p=this.grid.columns.siblings(o.id).map(w=>w.id).filter(w=>w!==o.id),m=c<s.length?p.indexOf(s[c].dataset.col):p.indexOf(s[s.length-1].dataset.col)+1;m=Math.max(p.filter(T).length,m);let x=this.grid.columns.siblings(o.id).findIndex(w=>w.id===o.id);m!==x&&(this.grid.columns.move(o.id,m),this.grid.layoutChanged(),this.grid.events.emit("columnMove",{colId:o.id,toIndex:m}))};window.addEventListener("pointermove",u),window.addEventListener("pointerup",h)}},Pe=class{constructor(e){this.grid=e;this.popup=null;this.panel=null;this.off=[]}get isOpen(){return!!this.popup}open(){this.close();let e=this.grid.store.state.locale,t=b("div",`fg-menu fg-chooser-dialog fg-theme-${this.grid.store.state.theme}`,{role:"dialog","aria-label":e.chooseColumns});this.grid.applyFontTo(t);let n=b("div","fg-chooser-head"),o=b("span","fg-menu-title");o.textContent=e.chooseColumns;let r=b("button","fg-chooser-close",{type:"button","aria-label":e.close});r.textContent="\xD7",r.addEventListener("click",()=>this.close()),n.append(o,r),this.panel=new Te(this.grid),t.append(n,this.panel.el),document.body.append(t);let s=this.grid.renderer.root.getBoundingClientRect(),a=t.offsetWidth||280;t.style.left=`${Math.max(4,Math.min(s.right-a-8,window.innerWidth-a-4))}px`,t.style.top=`${Math.max(4,s.top+8)}px`,this.popup=t;let d=l=>{t.contains(l.target)||this.close()},c=l=>{l.key==="Escape"&&this.close()};document.addEventListener("pointerdown",d,!0),document.addEventListener("keydown",c,!0),this.off.push(()=>document.removeEventListener("pointerdown",d,!0),()=>document.removeEventListener("keydown",c,!0)),t.querySelector(".fg-chooser-search").focus()}refresh(){var e;(e=this.panel)==null||e.refresh()}close(){var e;for(let t of this.off)t();this.off=[],(e=this.popup)==null||e.remove(),this.popup=null,this.panel=null}},$e=class{constructor(e,t,n=["columns","filters"]){this.grid=e;this.tabs=new Map;this.el=b("div","fg-sidebar"),this.panelHost=b("div","fg-sidebar-panel"),this.columns=new Te(e),this.filters=new Le(e),this.pivot=new Ie(e);let o=n.filter(s=>s==="columns"||s==="filters"||s==="pivot");o.length||o.push("columns"),this.current=o[0];let r=b("div","fg-sidebar-tabs",{role:"tablist"});for(let s of o){let a=b("button","fg-sidebar-tab",{type:"button",role:"tab"});a.dataset.panel=s,a.addEventListener("click",()=>this.toggle(!(this.isOpen&&this.current===s),s)),this.tabs.set(s,a),r.append(a)}this.el.append(this.panelHost,r),e.renderer.root.append(this.el),this.panelHost.hidden=!t,this.show(),this.refresh()}get isOpen(){return!this.panelHost.hidden}show(){this.panelHost.replaceChildren(this.current==="filters"?this.filters.el:this.current==="pivot"?this.pivot.el:this.columns.el)}toggle(e=!this.isOpen,t){t&&this.tabs.has(t)&&t!==this.current&&(this.current=t,this.show()),this.panelHost.hidden=!e,this.syncTabs(),this.grid.renderer.invalidate({header:!0,rows:!0})}syncTabs(){for(let[e,t]of this.tabs){let n=this.isOpen&&e===this.current;t.setAttribute("aria-expanded",String(n)),t.setAttribute("aria-selected",String(n))}}refresh(){let e=this.grid.store.state.locale;for(let[t,n]of this.tabs)n.textContent=t==="filters"?e.filters:t==="pivot"?e.pivot:e.columns;this.syncTabs(),this.columns.refresh(),this.filters.refresh(),this.pivot.refresh()}};var lo=()=>typeof navigator!="undefined"&&/Mac|iPhone|iPad/.test(navigator.platform||navigator.userAgent||""),fe=i=>lo()?`\u2318${i}`:`Ctrl+${i}`,Ae=class{constructor(e){this.grid=e;this.popup=null;this.off=[];let t=e.renderer.root,n=o=>this.onContextMenu(o);t.addEventListener("contextmenu",n),this.detach=()=>t.removeEventListener("contextmenu",n)}destroy(){this.close(),this.detach()}onContextMenu(e){let{grid:t}=this;if(t.options.contextMenu===!1)return;let n=e.target,o=n.closest(".fg-header-cell");if(o){let s=o.dataset.col;if(!s||T(s)||o.classList.contains("fg-header-group"))return;e.preventDefault(),this.close(),t.menu.open(s,o);return}let r=t.renderer.cellAt(n);r&&(e.preventDefault(),t.renderer.root.focus({preventScroll:!0}),!T(r.colId)&&!t.rangeContains(r.rowIndex,r.colId)&&(t.setFocus(r.rowIndex,r.colId),t.setRange({start:r,end:r})),this.open(e.clientX,e.clientY,r.rowIndex,r.colId))}openAtFocus(){var r;let e=this.grid.store.state.focus;if(!e||this.grid.options.contextMenu===!1)return;let t=this.grid.renderer.root.getBoundingClientRect(),n=this.grid.renderer.root.querySelector(`.fg-row[data-row="${e.rowIndex}"] .fg-cell[data-col="${CSS.escape(e.colId)}"]`),o=(r=n==null?void 0:n.getBoundingClientRect())!=null?r:t;this.open(o.left+8,o.bottom,e.rowIndex,e.colId)}defaultItems(e){let{grid:t}=this,n=t.store.state.locale,o=t.columns.getNode(e),r=o==null?void 0:o.def,s=!!r&&!T(e),a=[{label:n.copy,shortcut:fe("C"),action:()=>t.copyToClipboard(!1)},{label:n.copyWithHeaders,action:()=>t.copyToClipboard(!0)},...t.store.state.selected.size?[{label:n.copyRows,action:()=>t.copyToClipboard(!1,!0)}]:[],{label:n.paste,shortcut:fe("V"),action:()=>this.pasteFromClipboard()}];(t.history.canUndo()||t.history.canRedo())&&a.push("separator",{label:n.undo,shortcut:fe("Z"),action:()=>t.undo(),disabled:!t.history.canUndo()},{label:n.redo,shortcut:fe("Y"),action:()=>t.redo(),disabled:!t.history.canRedo()}),t.options.rowSelection&&t.store.state.selected.size&&a.push({label:n.deleteRows,action:()=>t.api.removeSelectedRows()}),s&&(a.push("separator",{label:n.autosizeThis,action:()=>t.autoSize([e])}),r.lockVisible||a.push({label:n.hideColumn,action:()=>t.setColumnsVisible([e],!1)}),a.push({label:n.pinLeft,action:()=>t.setPinned(e,"left"),disabled:o.pinned==="left"},{label:n.pinRight,action:()=>t.setPinned(e,"right"),disabled:o.pinned==="right"},{label:n.unpin,action:()=>t.setPinned(e,null),disabled:!o.pinned})),a.push("separator"),t.options.rowSelection==="multiple"&&a.push({label:n.selectAllRows,action:()=>t.api.selectAll()}),a.push({label:n.chooseColumns,action:()=>t.chooser.open()});let d=t.rangeBounds();return d&&(d.r2>d.r1||d.c2>d.c1)&&a.push("separator",{label:n.chartBar,action:()=>t.api.createChart({type:"bar"})},{label:n.chartLine,action:()=>t.api.createChart({type:"line"})},{label:n.chartPie,action:()=>t.api.createChart({type:"pie"})}),a.push("separator",{label:n.exportCsv,action:()=>t.api.exportCsv()},{label:n.exportExcel,action:()=>t.api.exportXlsx()}),a}pasteFromClipboard(){let e=typeof navigator!="undefined"?navigator.clipboard:void 0,t=()=>this.grid.toast(this.grid.store.state.locale.pasteHint.replace("Ctrl+V",fe("V")));if(!(e!=null&&e.readText))return t();e.readText().then(n=>this.grid.pasteText(n),t)}open(e,t,n,o){var f,g,v;this.close(),this.grid.menu.close();let{grid:r}=this,s=r.rowModel.getRow(n),a=r.columns.getColumn(o),d=this.defaultItems(o),c={row:(f=s==null?void 0:s.data)!=null?f:null,rowIndex:n,colId:o,value:s&&a&&!T(o)?B(a.def,s.data):void 0,defaultItems:d},l=r.options.contextMenu,u=d;if(typeof l=="function")try{u=l(c)}catch{u=d}let h=r.store.state.locale,p=b("div",`fg-menu fg-context-menu fg-theme-${r.store.state.theme}`,{role:"menu","aria-label":h.columnMenu});r.applyFontTo(p);let m=!0;for(let C of u){if(C==="separator"){m||p.append(b("div","fg-cm-sep",{role:"separator"})),m=!0;continue}let k=b("button","fg-menu-item fg-cm-item",{type:"button",role:"menuitem"}),E=b("span","fg-cm-label");if(E.textContent=C.label,k.append(E),C.shortcut){let I=b("span","fg-cm-shortcut");I.textContent=C.shortcut,k.append(I)}k.disabled=!!C.disabled,k.addEventListener("click",()=>{this.close(),C.action()}),p.append(k),m=!1}(g=p.lastElementChild)!=null&&g.classList.contains("fg-cm-sep")&&p.lastElementChild.remove(),document.body.append(p);let x=p.offsetWidth||220,w=p.offsetHeight||300;p.style.left=`${Math.max(4,Math.min(e,window.innerWidth-x-4))}px`,p.style.top=`${Math.max(4,Math.min(t,window.innerHeight-w-4))}px`,this.popup=p;let y=C=>{p.contains(C.target)||this.close()},M=C=>{if(C.key==="Escape"){this.close(),r.renderer.root.focus();return}if(C.key!=="ArrowDown"&&C.key!=="ArrowUp")return;let k=[...p.querySelectorAll("button:not(:disabled)")],E=k.indexOf(document.activeElement),I=k[(E+(C.key==="ArrowDown"?1:k.length-1)+k.length)%k.length];I==null||I.focus(),C.preventDefault()},R=()=>this.close();document.addEventListener("pointerdown",y,!0),document.addEventListener("keydown",M,!0),r.renderer.scroller.addEventListener("scroll",R,{passive:!0}),this.off.push(()=>document.removeEventListener("pointerdown",y,!0),()=>document.removeEventListener("keydown",M,!0),()=>r.renderer.scroller.removeEventListener("scroll",R)),(v=p.querySelector("button:not(:disabled)"))==null||v.focus()}close(){var e;for(let t of this.off)t();this.off=[],(e=this.popup)==null||e.remove(),this.popup=null}};var Ne=class{constructor(e){this.grid=e;this.onDown=e=>{if(e.button!==0)return;e.preventDefault(),e.stopPropagation();let t=this.source();if(!t)return;let{grid:n}=this,o=null,r=n.renderer.root,s=d=>{let c=n.renderer.cellAt(document.elementFromPoint(d.clientX,d.clientY)),l=c&&n.columns.getColumn(c.colId);if(!c||!l||T(l.id))return;let u=c.rowIndex>t.r2?c.rowIndex-t.r2:c.rowIndex<t.r1?c.rowIndex-t.r1:0,h=l.index>t.c2?l.index-t.c2:l.index<t.c1?l.index-t.c1:0;!u&&!h?o=null:Math.abs(u)>=Math.abs(h)?o={r1:Math.min(t.r1,c.rowIndex),r2:Math.max(t.r2,c.rowIndex),c1:t.c1,c2:t.c2}:o={r1:t.r1,r2:t.r2,c1:Math.min(t.c1,l.index),c2:Math.max(t.c2,l.index)},this.showPreview(o)},a=()=>{if(window.removeEventListener("pointermove",s),window.removeEventListener("pointerup",a),this.preview.remove(),r.classList.remove("fg-range-dragging"),!o)return;let d=n.columns.displayed();n.fillRange({start:{rowIndex:o.r1,colId:d[o.c1].id},end:{rowIndex:o.r2,colId:d[o.c2].id}})};r.classList.add("fg-range-dragging"),window.addEventListener("pointermove",s),window.addEventListener("pointerup",a)};this.handle=b("div","fg-fill-handle",{"aria-hidden":"true"}),this.preview=b("div","fg-fill-preview",{"aria-hidden":"true"}),this.handle.addEventListener("pointerdown",this.onDown)}enabled(){let e=this.grid.options;return e.fillHandle!==!1&&e.rangeSelection!==!1}source(){let e=this.grid.rangeBounds();if(e)return e;let t=this.grid.store.state.focus,n=t&&this.grid.columns.getColumn(t.colId);return!t||!n||T(n.id)?null:{r1:t.rowIndex,r2:t.rowIndex,c1:n.index,c2:n.index}}cellEl(e,t){let n=this.grid.columns.displayed()[t];return n?this.grid.renderer.root.querySelector(`.fg-body .fg-row[data-row="${e}"] .fg-cell[data-col="${CSS.escape(n.id)}"]`):null}update(){let e=this.enabled()?this.source():null,t=this.grid.columns.displayed(),o=!!e&&t.slice(e.c1,e.c2+1).some(a=>a.def.editable&&a.def.field)&&e?this.cellEl(e.r2,e.c2):null;if(!o){this.handle.remove();return}let r=this.grid.renderer.root.getBoundingClientRect(),s=o.getBoundingClientRect();this.handle.style.left=`${s.right-r.left-4}px`,this.handle.style.top=`${s.bottom-r.top-4}px`,this.handle.isConnected||this.grid.renderer.root.append(this.handle)}showPreview(e){let t=e&&this.cellEl(e.r1,e.c1),n=e&&this.cellEl(e.r2,e.c2);if(!t||!n){this.preview.remove();return}let o=this.grid.renderer.root.getBoundingClientRect(),r=t.getBoundingClientRect(),s=n.getBoundingClientRect();Object.assign(this.preview.style,{left:`${r.left-o.left}px`,top:`${r.top-o.top}px`,width:`${s.right-r.left}px`,height:`${s.bottom-r.top}px`}),this.preview.isConnected||this.grid.renderer.root.append(this.preview)}destroy(){this.handle.remove(),this.preview.remove()}};var co=1e4,Fe=class{constructor(e){this.grid=e;this.matches=[];this.lookup=new Map;this.index=-1;this.query="";this.bar=null;this.countEl=null}get active(){return!!this.query}classFor(e,t){if(!this.query)return"";let n=this.lookup.get(`${e}|${t}`);return n===void 0?"":n===this.index?" fg-cell-match fg-cell-match-current":" fg-cell-match"}find(e){if(this.query=e.trim().toLowerCase(),this.matches=[],this.lookup.clear(),this.index=-1,this.query){let{grid:t}=this,n=t.store.state.locale.code,o=t.columns.displayed().filter(a=>!T(a.id)),r=o.map(a=>V(a.def,n)),s=t.rowModel.rows();e:for(let a=0;a<s.length;a++)if(!s[a].kind){for(let d=0;d<o.length;d++)if(r[d](B(o[d].def,s[a].data)).toLowerCase().includes(this.query)&&(this.lookup.set(`${a}|${o[d].id}`,this.matches.length),this.matches.push({rowIndex:a,colId:o[d].id}),this.matches.length>=co))break e}this.matches.length&&this.go(0)}return this.updateCount(),this.grid.renderer.invalidate({rows:!0}),this.matches.length}refresh(){this.query&&this.find(this.query)}next(){this.matches.length&&this.go((this.index+1)%this.matches.length)}previous(){this.matches.length&&this.go((this.index-1+this.matches.length)%this.matches.length)}clear(){this.query="",this.matches=[],this.lookup.clear(),this.index=-1,this.grid.renderer.invalidate({rows:!0})}go(e){this.index=e;let t=this.matches[e];this.grid.setFocus(t.rowIndex,t.colId),this.grid.renderer.ensureVisible(t.rowIndex,t.colId),this.updateCount(),this.grid.renderer.invalidate({rows:!0})}updateCount(){if(!this.countEl)return;let e=this.grid.store.state.locale;this.countEl.textContent=this.query?this.matches.length?`${this.index+1}/${this.matches.length}`:e.noMatches:""}openBar(){if(this.grid.options.findBar===!1)return;if(this.bar){this.bar.querySelector("input").focus();return}let e=this.grid.store.state.locale,t=b("div","fg-findbar",{role:"search"}),n=b("input","fg-input",{type:"search",placeholder:e.findPlaceholder,"aria-label":e.findPlaceholder});this.countEl=b("span","fg-findbar-count",{"aria-live":"polite"});let o=(r,s,a)=>{let d=b("button","fg-findbar-btn",{type:"button","aria-label":r,title:r});return d.textContent=s,d.addEventListener("click",a),d};t.append(n,this.countEl,o(e.findPrevious,"\u2191",()=>this.previous()),o(e.findNext,"\u2193",()=>this.next()),o(e.close,"\xD7",()=>this.closeBar())),n.addEventListener("input",()=>this.find(n.value)),t.addEventListener("keydown",r=>{r.stopPropagation(),r.key==="Escape"?(r.preventDefault(),this.closeBar()):r.key==="Enter"&&(r.preventDefault(),r.shiftKey?this.previous():this.next())}),this.grid.renderer.root.append(t),this.bar=t,n.focus()}closeBar(){var e;(e=this.bar)==null||e.remove(),this.bar=null,this.countEl=null,this.clear(),this.grid.renderer.root.focus({preventScroll:!0})}};function jt(i,e){let t=i.length,n=new Int32Array(t),o=new Int32Array(t),r=typeof e.merge=="function"?(a,d)=>{try{return!!e.merge(B(e,i[a]),B(e,i[d]),i[a],i[d])}catch{return!1}}:(()=>{let a=i.map(d=>{let c=B(e,d);return F(c)?null:_(c)});return(d,c)=>a[d]!==null&&a[d]===a[c]})(),s=0;for(let a=1;a<=t;a++)if(!(a<t&&r(a-1,a))){for(let d=s;d<a;d++)n[d]=s,o[d]=a-1;s=a}return{start:n,end:o}}var uo=864e5;function pe(i,e){if(!i.length||e<=0)return[];let t=()=>Array.from({length:e},(r,s)=>i[s%i.length]);if(i.every(r=>typeof r=="number"&&!Number.isNaN(r))){let r=i;if(r.length===1)return t();let s=r[1]-r[0];if(!r.every((d,c)=>c===0||Math.abs(d-r[c-1]-s)<1e-9))return t();let a=r[r.length-1];return Array.from({length:e},(d,c)=>Math.round((a+s*(c+1))*1e12)/1e12)}let n=i.map(r=>r instanceof Date||typeof r=="string"&&/^\d{4}-\d{2}-\d{2}/.test(r)?Y(r):null);if(n.every(Boolean)&&i.length>=2){let r=n.map(a=>Math.round(a.getTime()/uo)),s=r[1]-r[0];if(r.every((a,d)=>d===0||a-r[d-1]===s)){let a=n[n.length-1],d=i[i.length-1]instanceof Date;return Array.from({length:e},(c,l)=>{let u=new Date(a.getFullYear(),a.getMonth(),a.getDate()+s*(l+1));return d?u:K(u)})}return t()}let o=i[i.length-1];if(typeof o=="string"&&!F(o)&&i.every(r=>typeof r=="string")){let r=/^(.*?)(\d+)$/.exec(o);if(r){let s=r[2].length,a=Number(r[2]);return Array.from({length:e},(d,c)=>`${r[1]}${String(a+c+1).padStart(s,"0")}`)}}return t()}function Yt(i){let e=t=>/[\t\n\r"]/.test(t)?`"${t.replace(/"/g,'""')}"`:t;return i.map(t=>t.map(e).join(" ")).join(`\r
|
|
2
|
+
`)}function Zt(i){return lt(i," ")}function lt(i,e){if(!i)return[];let t=[],n=[],o="",r=0,s=!1,a=!0;for(;r<i.length;){let d=i[r];if(s){if(d==='"'){if(i[r+1]==='"'){o+='"',r+=2;continue}s=!1,r++;continue}o+=d,r++;continue}if(d==='"'&&a){s=!0,a=!1,r++;continue}if(d===e){n.push(o),o="",a=!0,r++;continue}if(d==="\r"||d===`
|
|
3
|
+
`){n.push(o),t.push(n),n=[],o="",a=!0,r+=d==="\r"&&i[r+1]===`
|
|
4
|
+
`?2:1;continue}o+=d,a=!1,r++}return(o!==""||n.length||!a)&&(n.push(o),t.push(n)),t}function He(i,e,t){var n;if(F(e))return"";switch(i.type){case"number":{let o=typeof e=="number"?e:Number(e);return Number.isNaN(o)?String(e):String(o)}case"date":return(n=K(e))!=null?n:String(e);case"boolean":return e===!0?"TRUE":e===!1?"FALSE":String(e);default:return V(i,t)(e)}}var ho=new Set(["true","1","y","yes","\uC608","o","on"]),fo=new Set(["false","0","n","no","\uC544\uB2C8\uC624","x","off"]);function po(i){let e=i.trim();if(!e)return{ok:!0,value:null};let t=!1;/^\(.*\)$/.test(e)&&(t=!0,e=e.slice(1,-1));let n=e.endsWith("%");if(n&&(e=e.slice(0,-1)),e=e.replace(/[\s,₩$€£¥원]/g,""),!/^[-+]?(\d+\.?\d*|\.\d+)(e[-+]?\d+)?$/i.test(e))return{ok:!1};let o=Number(e);return n&&(o/=100),t&&(o=-o),{ok:!0,value:Math.round(o*1e12)/1e12}}function Xt(i,e,t){let n=new Date(i,e-1,t);return n.getFullYear()===i&&n.getMonth()===e-1&&n.getDate()===t?n:null}function mo(i,e){let t=i.trim();if(!t)return{ok:!0,value:null};let n=null,o=/^(\d{4})\s*[-./년]\s*(\d{1,2})\s*[-./월]\s*(\d{1,2})\s*[.일]?$/.exec(t);return o?n=Xt(+o[1],+o[2],+o[3]):(o=/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/.exec(t))?n=Xt(+o[3],+o[1],+o[2]):/^\d{4}-\d{2}-\d{2}T/.test(t)&&(n=Y(t)),n?{ok:!0,value:e instanceof Date?n:K(n)}:{ok:!1}}function Be(i,e,t){switch(i.type){case"number":return po(e);case"date":return mo(e,t);case"boolean":{let n=e.trim().toLowerCase();return n?ho.has(n)?{ok:!0,value:!0}:fo.has(n)?{ok:!0,value:!1}:{ok:!1}:{ok:!0,value:null}}default:return{ok:!0,value:e}}}var go=i=>i.map(e=>e!==null&&typeof e=="object"&&"value"in e?e:{value:e,label:String(e)}),Oe=class{constructor(e){this.grid=e;this.cur=null}get active(){return this.cur&&{rowIndex:this.cur.rowIndex,colId:this.cur.colId}}canEdit(e,t){if(T(t))return!1;let n=this.grid.columns.getColumn(t);return!!(n!=null&&n.def.editable)&&!!n.def.field&&e>=0&&e<this.grid.rowModel.getRowCount()&&!this.grid.rowModel.getRow(e).kind}start(e,t,n){var v,C,k,E,I;if(this.cur&&this.commit(null),!this.canEdit(e,t))return!1;let{grid:o}=this,{renderer:r}=o,s=o.columns.getColumn(t),a=s.def,d=o.rowModel.getRow(e).data,c=d[a.field];o.setFocus(e,t),r.ensureVisible(e,t),r.render();let l=r.root.querySelector(`.fg-row[data-row="${e}"] .fg-cell[data-col="${CSS.escape(t)}"]`),u=r.root.getBoundingClientRect(),h=l==null?void 0:l.getBoundingClientRect(),p=b("div","fg-editor");p.style.left=`${((v=h==null?void 0:h.left)!=null?v:u.left)-u.left}px`,p.style.top=`${((C=h==null?void 0:h.top)!=null?C:u.top)-u.top}px`,p.style.width=`${(h==null?void 0:h.width)||s.width}px`,p.style.height=`${(h==null?void 0:h.height)||r.opts.rowHeight}px`;let m,x,w=()=>{},y=a.editor;if(typeof y=="function"){let L=y({value:c,row:d,column:a,initialText:n});m=L.el,x=()=>({value:L.getValue()}),w=()=>{var S;return(S=L.destroy)==null?void 0:S.call(L)},p.append(m),queueMicrotask(()=>{var S;return(S=L.focus)==null?void 0:S.call(L)})}else if((y==null?void 0:y.type)==="select"){let L=go(typeof y.options=="function"?y.options(d):y.options),S=b("select","fg-editor-control");L.forEach((P,A)=>{var D;let $=b("option");$.value=String(A),$.textContent=(D=P.label)!=null?D:String(P.value),S.append($)}),S.selectedIndex=Math.max(0,L.findIndex(P=>Object.is(P.value,c))),m=S,x=()=>{var P,A;return{value:(A=(P=L[S.selectedIndex])==null?void 0:P.value)!=null?A:null}},p.append(S)}else{let S=(y==null?void 0:y.type)==="textarea"?b("textarea","fg-editor-control"):b("input","fg-editor-control");S instanceof HTMLInputElement&&(S.type=a.type==="date"&&n===void 0?"date":"text",a.type==="number"&&(S.inputMode="decimal"));let P=a.type==="date"?(k=K(c))!=null?k:"":F(c)?"":String(c);S.value=n!=null?n:P,m=S,x=()=>({text:S.value}),p.append(S)}m.setAttribute("aria-label",(I=(E=a.header)!=null?E:a.field)!=null?I:t);let M=b("div","fg-editor-msg",{role:"alert"});p.append(M);let R=L=>{if(L.stopPropagation(),L.key==="Escape")L.preventDefault(),this.cancel();else if(L.key==="Enter"){if(m instanceof HTMLTextAreaElement&&!(L.ctrlKey||L.metaKey))return;L.preventDefault(),this.commit(L.shiftKey?"up":"down")}else L.key==="Tab"&&(L.preventDefault(),this.commit(L.shiftKey?"left":"right"))},f=L=>{var S;((S=this.cur)==null?void 0:S.wrap)===p&&!p.contains(L.relatedTarget)&&this.commit(null)},g=()=>this.commit(null);return p.addEventListener("keydown",R),p.addEventListener("focusout",f),r.scroller.addEventListener("scroll",g,{passive:!0}),r.root.append(p),this.cur={rowIndex:e,colId:t,row:d,def:a,wrap:p,read:x,dispose:()=>{p.removeEventListener("keydown",R),p.removeEventListener("focusout",f),r.scroller.removeEventListener("scroll",g),w(),p.remove()}},typeof y!="function"&&(m.focus(),n===void 0&&m instanceof HTMLInputElement&&m.type==="text"&&m.select()),o.events.emit("editStart",{rowIndex:e,colId:t}),!0}commit(e){let t=this.cur;if(!t)return!1;let{grid:n}=this,o=n.store.state.locale,r=t.def.field,s=t.row[r],a=t.read(),d;if("text"in a){let c=Be(t.def,a.text,s);if(!c.ok)return this.fail(a.text,o.invalidValue);d=c.value}else d=a.value;if(t.def.required&&F(d))return this.fail(d,o.required);if(t.def.validate){let c;try{c=t.def.validate(d,t.row)}catch{c=o.invalidValue}if(c!==!0)return this.fail(d,typeof c=="string"&&c?c:o.invalidValue)}return this.close(!0),n.applyEdit(t.rowIndex,t.colId,d),this.move(t.rowIndex,t.colId,e),!0}cancel(){this.close(!1)}fail(e,t){let n=this.cur;return n.wrap.classList.add("fg-editor-invalid"),n.wrap.querySelector(".fg-editor-msg").textContent=t,this.grid.events.emit("validationFailed",{rowIndex:n.rowIndex,colId:n.colId,value:e,message:t}),!1}close(e){let t=this.cur;t&&(this.cur=null,t.dispose(),this.grid.renderer.root.focus({preventScroll:!0}),this.grid.events.emit("editStop",{rowIndex:t.rowIndex,colId:t.colId,committed:e}))}move(e,t,n){if(!n)return;let{grid:o}=this,r=o.rowModel.getRowCount();if(n==="down"||n==="up"){let l=Math.max(0,Math.min(r-1,e+(n==="down"?1:-1)));o.setFocus(l,t),o.renderer.ensureVisible(l,t);return}let s=o.columns.displayed().filter(l=>this.canEdit(e,l.id)||l.def.editable);if(!s.length)return;let a=n==="right"?1:-1,d=e,c=s.findIndex(l=>l.id===t)+a;c>=s.length&&(c=0,d++),c<0&&(c=s.length-1,d--),!(d<0||d>=r)&&this.start(d,s[c].id)}};var ze=class{constructor(e=200){this.limit=e;this.entries=[];this.index=0}push(e){this.entries.splice(this.index),this.entries.push(e),this.entries.length>this.limit&&this.entries.shift(),this.index=this.entries.length}canUndo(){return this.index>0}canRedo(){return this.index<this.entries.length}undo(){return this.canUndo()?(this.entries[--this.index].undo(),!0):!1}redo(){return this.canRedo()?(this.entries[this.index++].redo(),!0):!1}clear(){this.entries=[],this.index=0}};var Jt=(i,e)=>i instanceof Date&&e instanceof Date?i.getTime()===e.getTime():Object.is(i,e),Ve=class{constructor(){this.originals=new Map;this.created=new Set;this.deleted=new Map}beforeChange(e){!this.created.has(e)&&!this.originals.has(e)&&this.originals.set(e,{...e})}isDirty(e,t){if(!t||this.created.has(e))return!1;let n=this.originals.get(e);return!!n&&!Jt(n[t],e[t])}diff(e,t){let n=this.originals.get(e);return n?t.filter(o=>!Jt(n[o],e[o])):[]}get size(){return this.originals.size+this.created.size+this.deleted.size}reset(){this.originals.clear(),this.created.clear(),this.deleted.clear()}};function me(i){return{r1:Math.min(i.start.rowIndex,i.end.rowIndex),r2:Math.max(i.start.rowIndex,i.end.rowIndex),c1:Math.min(i.start.colIndex,i.end.colIndex),c2:Math.max(i.start.colIndex,i.end.colIndex)}}function Qt(i,e,t){return e>=i.r1&&e<=i.r2&&t>=i.c1&&t<=i.c2}var wo=5;function en(i,e){let t=o=>i(o),n=o=>{window.removeEventListener("pointermove",t),window.removeEventListener("pointerup",n),window.removeEventListener("pointercancel",n),e(o)};window.addEventListener("pointermove",t),window.addEventListener("pointerup",n),window.addEventListener("pointercancel",n)}function vo(i,e,t){let n=i.columns.getColumn(t);if(!n)return;let o=e.clientX,r=n.width;i.renderer.root.classList.add("fg-resizing"),en(s=>{i.columns.setWidth(t,r+s.clientX-o),i.layoutChanged()},()=>{var a,d;i.renderer.root.classList.remove("fg-resizing");let s=(d=(a=i.columns.getColumn(t))==null?void 0:a.width)!=null?d:r;s!==r&&i.events.emit("columnResize",{colId:t,width:s})})}function yo(i,e){let t=i.columns.getNode(e);return!!i.groupPanel&&!!t&&!t.children&&!i.options.treeData&&!i.getGroupBy().includes(e)}function bo(i,e,t,n){var d,c;let o=new Set(i.columns.siblings(e).map(l=>l.id).filter(l=>l!==e&&!T(l))),r=[...n.querySelectorAll(".fg-header-cell")].filter(l=>o.has(l.dataset.col)).map(l=>({id:l.dataset.col,el:l})),s=b("div",`fg-drag-ghost fg-theme-${i.store.state.theme}`);s.textContent=(c=(d=t.querySelector(".fg-header-label"))==null?void 0:d.textContent)!=null?c:"",i.applyFontTo(s),document.body.append(s);let a=b("div","fg-drop-marker");return a.style.height=`${i.renderer.headerEl.offsetHeight}px`,i.renderer.root.append(a),t.classList.add("fg-dragging"),{ghost:s,marker:a,cell:t,sibs:r,target:-1,overPanel:!1}}function xo(i,e,t,n,o){var d,c;t.ghost.style.transform=`translate(${n+12}px, ${o+8}px)`,t.overPanel=yo(i,e)&&!!((d=i.groupPanel)!=null&&d.contains(n,o)),(c=i.groupPanel)==null||c.highlight(t.overPanel),t.marker.hidden=t.overPanel;let r=0;for(let l of t.sibs){let u=l.el.getBoundingClientRect();n>u.left+u.width/2&&r++}t.target=r;let s=i.renderer.root.getBoundingClientRect().left,a=r<t.sibs.length?t.sibs[r].el.getBoundingClientRect().left:t.sibs.length?t.sibs[t.sibs.length-1].el.getBoundingClientRect().right:t.cell.getBoundingClientRect().left;t.marker.style.left=`${a-s-1}px`}function Co(i,e,t){var a;if(t.ghost.remove(),t.marker.remove(),t.cell.classList.remove("fg-dragging"),t.overPanel){(a=i.groupPanel)==null||a.highlight(!1),i.setGroupBy([...i.getGroupBy(),e]);return}if(t.target<0||!t.sibs.length)return;let n=i.columns.siblings(e),o=n.findIndex(d=>d.id===e),r=n.map(d=>d.id).filter(d=>d!==e),s=t.target<t.sibs.length?r.indexOf(t.sibs[t.target].id):r.indexOf(t.sibs[t.sibs.length-1].id)+1;s=Math.max(r.filter(T).length,s),s!==o&&(i.columns.move(e,s),i.layoutChanged(),i.events.emit("columnMove",{colId:e,toIndex:s}))}function Ro(i,e,t,n){let o=i.columns.getNode(t),r=n.closest(".fg-header-pane");if(!o||!r)return;let s=e.clientX,a=null;en(d=>{if(!a){if(Math.abs(d.clientX-s)<wo)return;a=bo(i,t,n,r)}xo(i,t,a,d.clientX,d.clientY)},d=>{a?Co(i,t,a):!o.children&&te(o.def)&&i.toggleSort(t,d.shiftKey||d.ctrlKey||d.metaKey)})}function tn(i){let e=i.renderer.headerEl,t=o=>{if(o.button!==0)return;let r=o.target,s=r.closest(".fg-header-cell"),a=s==null?void 0:s.dataset.col;!s||!a||T(a)||r.closest(".fg-menu-btn")||(o.preventDefault(),r.closest(".fg-resize")?vo(i,o,a):Ro(i,o,a,s))},n=o=>{var a;let r=o.target,s=r.closest(".fg-menu-btn");if(s){let d=(a=s.closest(".fg-header-cell"))==null?void 0:a.dataset.col;d&&i.menu.toggle(d,s);return}r.closest(".fg-select-all")&&i.toggleSelectAll()};return e.addEventListener("pointerdown",t),e.addEventListener("click",n),()=>{e.removeEventListener("pointerdown",t),e.removeEventListener("click",n)}}var ko=/^[=+\-@\t\r]/;function nn(i,e=","){let t=n=>{let o=n.value;return n.text&&ko.test(o)&&(o=`'${o}`),o.includes(e)||/["\r\n]/.test(o)||/^\s|\s$/.test(o)?`"${o.replace(/"/g,'""')}"`:o};return i.map(n=>n.map(t).join(e)).join(`\r
|
|
5
|
+
`)}function dt(i){let e=i.slice(0,i.search(/\r?\n|$/)),t=s=>e.split(s).length-1,n=t(" "),o=t(";"),r=t(",");return n&&n>=r&&n>=o?" ":o>r?";":","}function Ge(i,e=dt(i)){return lt(i.replace(/^\uFEFF/,""),e)}var Mo=(()=>{let i=new Uint32Array(256);for(let e=0;e<256;e++){let t=e;for(let n=0;n<8;n++)t=t&1?3988292384^t>>>1:t>>>1;i[e]=t>>>0}return i})();function So(i){let e=4294967295;for(let t=0;t<i.length;t++)e=Mo[(e^i[t])&255]^e>>>8;return(e^4294967295)>>>0}var on=new TextEncoder;function rn(i){let e=i.map(l=>{let u=on.encode(l.name),h=typeof l.data=="string"?on.encode(l.data):l.data;return{name:u,data:h,crc:So(h),offset:0}}),t=e.reduce((l,u)=>l+30+u.name.length+u.data.length,0),n=e.reduce((l,u)=>l+46+u.name.length,0),o=new Uint8Array(t+n+22),r=new DataView(o.buffer),s=0,a=0,d=33;for(let l of e)l.offset=s,r.setUint32(s,67324752,!0),r.setUint16(s+4,20,!0),r.setUint16(s+6,2048,!0),r.setUint16(s+8,0,!0),r.setUint16(s+10,a,!0),r.setUint16(s+12,d,!0),r.setUint32(s+14,l.crc,!0),r.setUint32(s+18,l.data.length,!0),r.setUint32(s+22,l.data.length,!0),r.setUint16(s+26,l.name.length,!0),r.setUint16(s+28,0,!0),o.set(l.name,s+30),o.set(l.data,s+30+l.name.length),s+=30+l.name.length+l.data.length;let c=s;for(let l of e)r.setUint32(s,33639248,!0),r.setUint16(s+4,20,!0),r.setUint16(s+6,20,!0),r.setUint16(s+8,2048,!0),r.setUint16(s+10,0,!0),r.setUint16(s+12,a,!0),r.setUint16(s+14,d,!0),r.setUint32(s+16,l.crc,!0),r.setUint32(s+20,l.data.length,!0),r.setUint32(s+24,l.data.length,!0),r.setUint16(s+28,l.name.length,!0),r.setUint16(s+30,0,!0),r.setUint16(s+32,0,!0),r.setUint16(s+34,0,!0),r.setUint16(s+36,0,!0),r.setUint32(s+38,0,!0),r.setUint32(s+42,l.offset,!0),o.set(l.name,s+46),s+=46+l.name.length;return r.setUint32(s,101010256,!0),r.setUint16(s+8,e.length,!0),r.setUint16(s+10,e.length,!0),r.setUint32(s+12,s-c,!0),r.setUint32(s+16,c,!0),o}var qe=i=>i.length>4&&i[0]===80&&i[1]===75&&i[2]===3&&i[3]===4;async function Eo(i){if(typeof DecompressionStream=="undefined")throw new Error("This browser cannot read compressed xlsx files (no DecompressionStream)");let e=new Response(i).body.pipeThrough(new DecompressionStream("deflate-raw"));return new Uint8Array(await new Response(e).arrayBuffer())}async function sn(i){let e=new DataView(i.buffer,i.byteOffset,i.byteLength),t=-1;for(let a=i.length-22;a>=Math.max(0,i.length-65557);a--)if(e.getUint32(a,!0)===101010256){t=a;break}if(t<0)throw new Error("Not a zip file");let n=e.getUint16(t+10,!0),o=e.getUint32(t+16,!0),r=new TextDecoder,s=new Map;for(let a=0;a<n;a++){if(e.getUint32(o,!0)!==33639248)throw new Error("Broken zip directory");let d=e.getUint16(o+10,!0),c=e.getUint32(o+20,!0),l=e.getUint16(o+28,!0),u=e.getUint16(o+30,!0),h=e.getUint16(o+32,!0),p=e.getUint32(o+42,!0),m=r.decode(i.subarray(o+46,o+46+l)),x=e.getUint16(p+26,!0),w=e.getUint16(p+28,!0),y=p+30+x+w,M=i.subarray(y,y+c);if(d===0)s.set(m,M);else if(d===8)s.set(m,await Eo(M));else throw new Error(`Unsupported zip compression ${d}`);o+=46+l+u+h}return s}function ct(i){let e="";for(let t=i+1;t>0;t=Math.floor((t-1)/26))e=String.fromCharCode(65+(t-1)%26)+e;return e}var an=Date.UTC(1899,11,30),ln=864e5;function Lo(i){return(Date.UTC(i.getFullYear(),i.getMonth(),i.getDate(),i.getHours(),i.getMinutes(),i.getSeconds(),i.getMilliseconds())-an)/ln}function Io(i){let e=new Date(Math.round(i*ln)+an);return new Date(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds())}var Do=/[\u0000-\u0008\u000b\u000c\u000e-\u001f]/g,Ue=i=>i.replace(Do,"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,"""),le=`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
6
|
+
`,ut="http://schemas.openxmlformats.org/spreadsheetml/2006/main",de="http://schemas.openxmlformats.org/officeDocument/2006/relationships";function To(i){let e=new Set;return i.map((t,n)=>{var s;let o=((s=t.name)!=null?s:`Sheet${n+1}`).replace(/[[\]:*?/\\]/g," ").slice(0,31).trim()||`Sheet${n+1}`,r=o;for(let a=2;e.has(r.toLowerCase());a++)r=`${o.slice(0,28)} (${a})`;return e.add(r.toLowerCase()),r})}function Ke(i){let e=new Map([["General",0]]),t=[],n=['<xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0"/>'],o=new Map([["General|0",0]]),r=(l,u)=>{let h=`${l}|${u?1:0}`,p=o.get(h);if(p!==void 0)return p;let m=e.get(l);return m===void 0&&(m=164+t.length,t.push(l),e.set(l,m)),p=n.length,n.push(`<xf numFmtId="${m}" fontId="${u?1:0}" fillId="${u?2:0}" borderId="0" xfId="0"${m?' applyNumberFormat="1"':""}${u?' applyFont="1" applyFill="1"':""}/>`),o.set(h,p),p},s=To(i),a=i.map(l=>{var M,R,f;let u=l.rows.map((g,v)=>{let C=g.map((k,E)=>{var D;let I=k!==null&&typeof k=="object"&&!(k instanceof Date)?k:{v:k},L=`${ct(E)}${v+1}`,S=I.v,P=(D=I.fmt)!=null?D:"General";S instanceof Date&&(Number.isNaN(S.getTime())?S=null:(P==="General"&&(P="yyyy-mm-dd"),S=Lo(S)));let A=r(P,!!I.bold),$=A?` s="${A}"`:"";return S==null||S===""?$?`<c r="${L}"${$}/>`:"":typeof S=="number"?Number.isFinite(S)?`<c r="${L}"${$}><v>${S}</v></c>`:"":typeof S=="boolean"?`<c r="${L}"${$} t="b"><v>${S?1:0}</v></c>`:`<c r="${L}"${$} t="inlineStr"><is><t xml:space="preserve">${Ue(String(S))}</t></is></c>`}).join("");return`<row r="${v+1}">${C}</row>`}).join(""),h=Math.max(0,...l.rows.map(g=>g.length)),p=(M=l.freezeRows)!=null?M:0,m=p?`<sheetViews><sheetView workbookViewId="0"><pane ySplit="${p}" topLeftCell="A${p+1}" activePane="bottomLeft" state="frozen"/></sheetView></sheetViews>`:'<sheetViews><sheetView workbookViewId="0"/></sheetViews>',x=(R=l.widths)!=null&&R.length?`<cols>${l.widths.map((g,v)=>`<col min="${v+1}" max="${v+1}" width="${Math.max(4,Math.min(120,g)).toFixed(1)}" customWidth="1"/>`).join("")}</cols>`:"",w=l.autoFilter&&h&&p&&l.rows.length>=p?`<autoFilter ref="A${p}:${ct(h-1)}${l.rows.length}"/>`:"",y=(f=l.merges)!=null&&f.length?`<mergeCells count="${l.merges.length}">${l.merges.map(g=>`<mergeCell ref="${g}"/>`).join("")}</mergeCells>`:"";return`${le}<worksheet xmlns="${ut}" xmlns:r="${de}">${m}<sheetFormatPr defaultRowHeight="15"/>${x}<sheetData>${u}</sheetData>${w}${y}</worksheet>`}),d=`${le}<styleSheet xmlns="${ut}">`+(t.length?`<numFmts count="${t.length}">${t.map((l,u)=>`<numFmt numFmtId="${164+u}" formatCode="${Ue(l)}"/>`).join("")}</numFmts>`:"")+`<fonts count="2"><font><sz val="11"/><name val="Calibri"/></font><font><b/><sz val="11"/><name val="Calibri"/></font></fonts><fills count="3"><fill><patternFill patternType="none"/></fill><fill><patternFill patternType="gray125"/></fill><fill><patternFill patternType="solid"><fgColor rgb="FFF2F4F7"/><bgColor indexed="64"/></patternFill></fill></fills><borders count="1"><border><left/><right/><top/><bottom/><diagonal/></border></borders><cellStyleXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0"/></cellStyleXfs><cellXfs count="${n.length}">${n.join("")}</cellXfs><cellStyles count="1"><cellStyle name="Normal" xfId="0" builtinId="0"/></cellStyles></styleSheet>`,c=[{name:"[Content_Types].xml",data:`${le}<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/><Default Extension="xml" ContentType="application/xml"/><Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/><Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"/>`+i.map((l,u)=>`<Override PartName="/xl/worksheets/sheet${u+1}.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/>`).join("")+"</Types>"},{name:"_rels/.rels",data:`${le}<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="${de}/officeDocument" Target="xl/workbook.xml"/></Relationships>`},{name:"xl/workbook.xml",data:`${le}<workbook xmlns="${ut}" xmlns:r="${de}"><sheets>`+s.map((l,u)=>`<sheet name="${Ue(l)}" sheetId="${u+1}" r:id="rId${u+1}"/>`).join("")+"</sheets>"+(i.some(l=>l.autoFilter&&l.freezeRows)?`<definedNames>${i.map((l,u)=>{let h=Math.max(0,...l.rows.map(p=>p.length));return l.autoFilter&&l.freezeRows&&h?`<definedName name="_xlnm._FilterDatabase" localSheetId="${u}" hidden="1">'${Ue(s[u].replace(/'/g,"''"))}'!$A$${l.freezeRows}:$${ct(h-1)}$${l.rows.length}</definedName>`:""}).join("")}</definedNames>`:"")+"</workbook>"},{name:"xl/_rels/workbook.xml.rels",data:`${le}<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">`+i.map((l,u)=>`<Relationship Id="rId${u+1}" Type="${de}/worksheet" Target="worksheets/sheet${u+1}.xml"/>`).join("")+`<Relationship Id="rId${i.length+1}" Type="${de}/styles" Target="styles.xml"/></Relationships>`},{name:"xl/styles.xml",data:d},...a.map((l,u)=>({name:`xl/worksheets/sheet${u+1}.xml`,data:l}))];return rn(c)}var Po=new Set([14,15,16,17,18,19,20,21,22,27,30,36,45,46,47,50,57]);function $o(i){let e=i.replace(/"[^"]*"/g,"").replace(/\[[^\]]*\]/g,"").replace(/\\./g,"");return/[dmyhs]/i.test(e)&&!/^[#0.,%\s]*$/.test(e)}function ge(i){return i?new DOMParser().parseFromString(new TextDecoder().decode(i),"application/xml"):null}var Z=(i,e)=>[...i.getElementsByTagNameNS("*",e)];function Ao(i){let e=0;for(let t of i){let n=t.charCodeAt(0);if(n<65||n>90)break;e=e*26+(n-64)}return e-1}async function _e(i){var p,m,x,w,y,M,R,f,g;let e=i instanceof Uint8Array?i:new Uint8Array(i);if(!qe(e))throw new Error("Not an xlsx file");let t=await sn(e),n=ge(t.get("xl/workbook.xml"));if(!n)throw new Error("xlsx has no workbook");let o=ge(t.get("xl/_rels/workbook.xml.rels")),r=new Map(o?Z(o,"Relationship").map(v=>{var C,k;return[(C=v.getAttribute("Id"))!=null?C:"",(k=v.getAttribute("Target"))!=null?k:""]}):[]),s=ge(t.get("xl/sharedStrings.xml")),a=s?Z(s,"si").map(v=>Z(v,"t").map(C=>{var k;return(k=C.textContent)!=null?k:""}).join("")):[],d=ge(t.get("xl/styles.xml")),c=new Map(d?Z(d,"numFmt").map(v=>{var C;return[Number(v.getAttribute("numFmtId")),(C=v.getAttribute("formatCode"))!=null?C:""]}):[]),l=d?Z(d,"cellXfs")[0]:void 0,u=(l?[...l.children].filter(v=>v.localName==="xf"):[]).map(v=>{var k;let C=Number((k=v.getAttribute("numFmtId"))!=null?k:0);return Po.has(C)||c.has(C)&&$o(c.get(C))}),h=[];for(let v of Z(n,"sheet")){let C=(m=(p=v.getAttribute("r:id"))!=null?p:v.getAttributeNS(de,"id"))!=null?m:"",k=(x=r.get(C))!=null?x:"";k=k.startsWith("/")?k.slice(1):`xl/${k}`;let E=ge(t.get(k)),I=[];if(E){for(let L of Z(E,"row")){let S=Number((w=L.getAttribute("r"))!=null?w:I.length+1)-1,P=[],A=0;for(let $ of[...L.children].filter(D=>D.localName==="c")){let D=$.getAttribute("r"),H=D?Ao(D):A;A=H+1;let O=$.getAttribute("t"),z=(M=(y=Z($,"v")[0])==null?void 0:y.textContent)!=null?M:null,G=null;if(O==="s")G=z===null?null:(R=a[Number(z)])!=null?R:"";else if(O==="inlineStr")G=Z($,"t").map(U=>{var J;return(J=U.textContent)!=null?J:""}).join("");else if(O==="b")G=z==="1";else if(O==="str"||O==="e")G=z;else if(z!==null&&z!==""){let U=Number(z);G=u[Number((f=$.getAttribute("s"))!=null?f:0)]?Io(U):U}P[H]=G}for(let $=0;$<P.length;$++)P[$]===void 0&&(P[$]=null);I[S]=P}for(let L=0;L<I.length;L++)I[L]||(I[L]=[])}h.push({name:(g=v.getAttribute("name"))!=null?g:`Sheet${h.length+1}`,rows:I})}return h}function dn(i,e){return Array.isArray(e)?e.flatMap(t=>{var o,r;let n=i.columns.getNode(t);return!n||n.children||T(t)?(N(`export: unknown column "${t}"`),[]):[{id:t,def:n.def,node:n,width:(r=(o=i.columns.getColumn(t))==null?void 0:o.width)!=null?r:n.width}]}):i.columns.displayed().filter(t=>!T(t.id)).map(t=>({id:t.id,def:t.def,node:t.node,width:t.width}))}function cn(i,e){return e==="selected"?i.selectedRows():e==="all"?i.rowModel.server?i.rowModel.dataRows().map(t=>t.data):i.viewRows():i.rowModel.dataRows().map(t=>t.data)}var ht=(i,e)=>{var t,n;return(n=(t=i.header)!=null?t:i.field)!=null?n:e};function ft(i,e={}){let t=dn(i,e.columns),n=i.store.state.locale.code,o=typeof e.separator=="string"&&e.separator.length===1?e.separator:",",r=cn(i,e.rows).map(s=>t.map(a=>{let d=B(a.def,s),c=a.def.type;return{value:He(a.def,d,n),text:!(c==="number"||c==="date"||c==="boolean")||typeof d=="string"}}));return e.headers!==!1&&r.unshift(t.map(s=>({value:ht(s.def,s.id),text:!0}))),nn(r,o)}function No(i){var r;let e=i.format;if(i.type==="date")return e==="datetime"?"yyyy-mm-dd hh:mm":e==="time"?"hh:mm":"yyyy-mm-dd";if(i.type!=="number"||e==null)return null;if(typeof e=="string")return e==="integer"?"#,##0":e==="percent"?"0%":e.startsWith("currency:")?"#,##0.##":/^[#0,.%]+$/.test(e)?e:null;let t=e,n=(r=t.maximumFractionDigits)!=null?r:t.minimumFractionDigits,o=n?`.${"0".repeat(Math.min(10,n))}`:"";return t.style==="percent"?`0${o}%`:`${t.useGrouping===!1?"0":"#,##0"}${o}`}function pt(i,e={}){var c;let t=dn(i,e.columns),n=i.store.state.locale.code,o=[],r=[],s=0;if(e.headers!==!1){let l=t.map(h=>{let p=[];for(let m=h.node;m;m=m.parent)p.unshift(m);return p});s=Math.max(1,...l.map(h=>h.length));let u=h=>{let p="";for(let m=h+1;m>0;m=Math.floor((m-1)/26))p=String.fromCharCode(65+(m-1)%26)+p;return p};for(let h=0;h<s;h++){let p=[];for(let m=0;m<t.length;m++){let x=l[m],w=x.length-1;if(h<w){let y=x[h],M=m>0?l[m-1][h]:null;if(p.push({v:M===y?null:ht(y.def,y.id),bold:!0}),M!==y){let R=m;for(;R+1<t.length&&l[R+1][h]===y;)R++;R>m&&r.push(`${u(m)}${h+1}:${u(R)}${h+1}`)}}else h===w?(p.push({v:ht(t[m].def,t[m].id),bold:!0}),s-1>h&&r.push(`${u(m)}${h+1}:${u(m)}${s}`)):p.push({v:null,bold:!0})}o.push(p)}}let a=t.map(l=>No(l.def)),d=t.map(l=>V(l.def,n));for(let l of cn(i,e.rows))o.push(t.map((u,h)=>{var x;let p=B(u.def,l);if(F(p))return null;let m=(x=a[h])!=null?x:void 0;switch(u.def.type){case"number":{let w=typeof p=="number"?p:Number(p);return Number.isFinite(w)?{v:w,fmt:m}:String(p)}case"date":{let w=Y(p);return w?{v:w,fmt:m}:String(p)}case"boolean":return typeof p=="boolean"?p:String(p);default:return d[h](p)}}));return Ke([{name:(c=e.sheetName)!=null?c:"Sheet1",rows:o,widths:t.map(l=>Math.round(l.width/7)),merges:r,freezeRows:s,autoFilter:s>0}])}function mt(i,e,t){if(typeof URL=="undefined"||typeof URL.createObjectURL!="function"||typeof document=="undefined"){N("downloads are not supported in this environment");return}let n=URL.createObjectURL(new Blob(e,{type:t})),o=document.createElement("a");o.href=n,o.download=i,o.style.display="none",document.body.append(o),o.click(),o.remove(),setTimeout(()=>URL.revokeObjectURL(n),1e3)}var We=i=>String(i!=null?i:"").trim().toLowerCase();function Fo(i){var e;return i==null?"":i instanceof Date?i.getHours()||i.getMinutes()||i.getSeconds()?i.toISOString():(e=K(i))!=null?e:"":String(i)}async function un(i,e,t={}){var x;let n=e instanceof Uint8Array?e:new Uint8Array(e instanceof ArrayBuffer?e:await e.arrayBuffer()),o;if(qe(n)){let w=await _e(n),y=typeof t.sheet=="string"?w.find(M=>M.name===t.sheet):w[typeof t.sheet=="number"?t.sheet:0];if(!y)throw new Error(`Sheet ${String(t.sheet)} not found`);o=y.rows}else{let w=new TextDecoder().decode(n);o=Ge(w,dt(w))}if(!o.length)return{rows:[],skipped:0};let r=[],s=w=>w.forEach(y=>y.children?s(y.children):!T(y.id)&&y.def.field&&r.push(y));s(i.columns.roots());let a=w=>{var M,R;let y=We(w);return y&&(R=(M=r.find(f=>We(f.def.header)===y))!=null?M:r.find(f=>We(f.def.field)===y||We(f.id)===y))!=null?R:null},d=1,c=new Set(o[0].map(a).filter(Boolean));for(;d<Math.min(o.length,5);){let y=((x=o[d])!=null?x:[]).filter(R=>R!=null&&String(R).trim()!==""),M=y.map(a).filter(R=>R&&!c.has(R));if(!y.length||!y.every(R=>typeof R=="string")||!M.length)break;M.forEach(R=>c.add(R)),d++}let l=Math.max(...o.slice(0,d).map(w=>{var y;return(y=w==null?void 0:w.length)!=null?y:0})),u=Array.from({length:l},(w,y)=>{var M;for(let R=d-1;R>=0;R--){let f=(M=o[R])==null?void 0:M[y];if(f!=null&&String(f).trim()!=="")return a(f)}return null}),h=i.store.state.data[0],p=0,m=[];for(let w of o.slice(d)){if(!w||w.every(M=>M==null||String(M).trim()===""))continue;let y={};u.forEach((M,R)=>{if(!M)return;let f=M.def,g=Fo(w[R]),v=i.acceptText(f,y,g,h==null?void 0:h[f.field]);v.ok?g===""&&(v.value===null||v.value==="")||(y[f.field]=v.value):p++}),m.push(y)}return t.mode==="replace"?i.setData(m):i.addRows(m),{rows:m,skipped:p}}var Ho="http://www.w3.org/2000/svg";var wt=["var(--fg-accent, #2563eb)","#f59e0b","#10b981","#ef4444","#8b5cf6","#06b6d4","#ec4899","#84cc16","#f97316","#64748b","#14b8a6","#a855f7"],ce=i=>wt[i%wt.length];function q(i,e={},t=""){let n=document.createElementNS(Ho,i);t&&n.setAttribute("class",t);for(let[o,r]of Object.entries(e))n.setAttribute(o,String(r));return n}function gt(i,e){let t=q("title");t.textContent=e,i.append(t)}function Bo(i,e,t=5){let n=Math.min(0,i),o=Math.max(0,e);n===o&&(o=n+1);let r=(o-n)/t,s=10**Math.floor(Math.log10(r)),a=[1,2,5,10].map(c=>c*s).find(c=>c>=r);n=Math.floor(n/a)*a,o=Math.ceil(o/a)*a;let d=[];for(let c=n;c<=o+a/2;c+=a)d.push(Math.round(c/a)*a);return d}function je(i,e){var E,I;let t=new Intl.NumberFormat(e.locale,{maximumFractionDigits:2}),n=new Intl.NumberFormat(e.locale,{notation:"compact",maximumFractionDigits:1}),o=q("svg",{viewBox:"0 0 640 360",role:"img",preserveAspectRatio:"xMidYMid meet"},`fg-chart fg-chart-is-${e.type}`);e.title&&o.setAttribute("aria-label",e.title);let r=e.series.slice(0,wt.length),s=e.categories,a=16;if(e.title){let L=q("text",{x:320,y:22,"text-anchor":"middle"},"fg-chart-title");L.textContent=e.title,o.append(L),a=36}let d=q("g",{},"fg-chart-legend"),c=e.type==="pie"?s:r.map(L=>L.name),l=16;c.forEach((L,S)=>{let P=q("g",{transform:`translate(${l},350)`},"fg-chart-legend-item");P.append(q("rect",{x:0,y:-9,width:10,height:10,rx:2,fill:ce(S)}));let A=q("text",{x:14,y:0});A.textContent=L,P.append(A),d.append(P),l+=24+Math.min(140,L.length*7)});let u=308;if(e.type==="pie"){let L=((I=(E=r[0])==null?void 0:E.values)!=null?I:[]).map(H=>H!==null&&H>0?H:0),S=L.reduce((H,O)=>H+O,0),P=640/2,A=(a+u)/2,$=Math.max(10,(u-a)/2-6),D=-Math.PI/2;L.forEach((H,O)=>{if(!H||!S)return;let z=D+H/S*Math.PI*2,G=z-D>Math.PI?1:0,U=Mt=>`${P+$*Math.cos(Mt)},${A+$*Math.sin(Mt)}`,J=H===S?`M${P-$},${A}a${$},${$} 0 1,0 ${2*$},0a${$},${$} 0 1,0 ${-2*$},0`:`M${P},${A}L${U(D)}A${$},${$} 0 ${G} 1 ${U(z)}Z`,ue=q("path",{d:J,fill:ce(O)},"fg-chart-slice");gt(ue,`${s[O]}: ${t.format(H)} (${Math.round(H/S*1e3)/10}%)`),o.append(ue),D=z}),o.append(d),i.replaceChildren(o);return}let h=e.type==="stackedBar",p=0,m=0;s.forEach((L,S)=>{let P=0,A=0;for(let $ of r){let D=$.values[S];D==null||!Number.isFinite(D)||(h?D>=0?P+=D:A+=D:(m=Math.max(m,D),p=Math.min(p,D)))}h&&(m=Math.max(m,P),p=Math.min(p,A))});let x=Bo(p,m),w=x[0],y=x[x.length-1],M=56,R=624,f=L=>u-(L-w)/(y-w)*(u-a),g=q("g",{},"fg-chart-axis");for(let L of x){g.append(q("line",{x1:M,x2:R,y1:f(L),y2:f(L)},L===0?"fg-chart-zero":"fg-chart-grid"));let S=q("text",{x:M-6,y:f(L)+4,"text-anchor":"end"});S.textContent=n.format(L),g.append(S)}let v=(R-M)/Math.max(1,s.length),C=Math.max(1,Math.ceil(s.length/Math.floor((R-M)/56)));s.forEach((L,S)=>{if(S%C)return;let P=q("text",{x:M+v*(S+.5),y:u+16,"text-anchor":"middle"});P.textContent=L.length>12?`${L.slice(0,11)}\u2026`:L,g.append(P)}),o.append(g);let k=q("g",{},"fg-chart-plot");if(e.type==="bar"||h){let L=v*.72,S=h?L:L/Math.max(1,r.length);s.forEach((P,A)=>{let $=0,D=0;r.forEach((H,O)=>{let z=H.values[A];if(z==null||!Number.isFinite(z))return;let G=0,U=z;h&&(G=z>=0?$:D,U=G+z,z>=0?$=U:D=U);let J=M+v*A+(v-L)/2+(h?0:S*O),ue=q("rect",{x:J,y:Math.min(f(G),f(U)),width:Math.max(1,S-2),height:Math.max(.5,Math.abs(f(U)-f(G))),fill:ce(O),rx:2},"fg-chart-bar");gt(ue,`${H.name} \xB7 ${P}: ${t.format(z)}`),k.append(ue)})})}else r.forEach((L,S)=>{let P=L.values.map((D,H)=>D==null||!Number.isFinite(D)?null:[M+v*(H+.5),f(D),D]),A="",$=!1;for(let D of P){if(!D){$=!1;continue}A+=`${$?"L":"M"}${D[0]},${D[1]}`,$=!0}if(e.type==="area"){let D=P.filter(H=>!!H);if(D.length){let H=`M${D[0][0]},${f(0)}${D.map(O=>`L${O[0]},${O[1]}`).join("")}L${D[D.length-1][0]},${f(0)}Z`;k.append(q("path",{d:H,fill:ce(S),"fill-opacity":.18},"fg-chart-area"))}}k.append(q("path",{d:A,fill:"none",stroke:ce(S),"stroke-width":2.2,"stroke-linejoin":"round"},"fg-chart-line")),P.forEach((D,H)=>{if(!D)return;let O=q("circle",{cx:D[0],cy:D[1],r:3.5,fill:ce(S)},"fg-chart-point");gt(O,`${L.name} \xB7 ${s[H]}: ${t.format(D[2])}`),k.append(O)})});o.append(k,d),i.replaceChildren(o)}var Oo=12,hn=500,vt=["bar","stackedBar","line","area","pie"],Xe=class{constructor(e){this.grid=e;this.handles=new Set}create(e={}){var x,w;let{grid:t}=this,n=vt.includes(e.type)?e.type:"bar",o=()=>t.store.state.locale,r=(x=e.range)!=null?x:t.store.state.range,s=null;if(r){let y=t.columns.getColumn(r.start.colId),M=t.columns.getColumn(r.end.colId);if(y&&M){let R=me({start:{rowIndex:r.start.rowIndex,colIndex:y.index},end:{rowIndex:r.end.rowIndex,colIndex:M.index}}),f=[];for(let g=R.r1;g<=R.r2&&f.length<hn;g++){let v=t.rowModel.getRow(g);v&&!v.kind&&f.push(v.data)}s={rows:f,colIds:t.columns.displayed().slice(R.c1,R.c2+1).filter(g=>!T(g.id)).map(g=>g.id)}}}let a=()=>{var k;let y=s?s.rows:t.rowModel.dataRows().slice(0,hn).map(E=>E.data),M=(s?s.colIds.map(E=>t.columns.getColumn(E)):t.columns.displayed().filter(E=>!T(E.id))).filter(E=>!!E),R=M[0]&&M[0].def.type!=="number"?M[0]:s?null:(k=M.find(E=>E.def.type!=="number"))!=null?k:null,f=E=>!!E.node.parent&&E.node.parent.id==="pivotgroup|total",g=M.filter(E=>E!==R&&E.def.type==="number"&&(s||!f(E))).slice(0,Oo),v=E=>{var L,S,P;let I=[];for(let A=E.node.parent;A;A=A.parent)I.unshift((L=A.def.header)!=null?L:A.id);return I.push((P=(S=E.def.header)!=null?S:E.def.field)!=null?P:E.id),I.join(" \xB7 ")},C=R?V(R.def,o().code):null;return{categories:y.map((E,I)=>R&&C?C(B(R.def,E)):String(I+1)),series:g.map(E=>({name:v(E),values:y.map(I=>{let L=B(E.def,I),S=typeof L=="number"?L:L==null||L===""?NaN:Number(L);return Number.isFinite(S)?S:null})}))}},d=b("div","fg-chart-body"),c=null,l=()=>je(d,{type:n,title:e.title,locale:o().code,...a()}),u=y=>({bar:o().chartBar,stackedBar:o().chartStacked,line:o().chartLine,area:o().chartArea,pie:o().chartPie})[y],h=()=>c==null?void 0:c.querySelectorAll(".fg-chart-type").forEach(y=>y.setAttribute("aria-pressed",String(y.dataset.type===n)));if(e.container)e.container.append(d);else{c=b("div","fg-chart-panel",{role:"dialog","aria-label":(w=e.title)!=null?w:u(n)});let y=b("div","fg-chart-head");for(let R of vt){let f=b("button","fg-chart-type",{type:"button",title:u(R)});f.dataset.type=R,f.textContent=u(R),f.addEventListener("click",()=>m.setType(R)),y.append(f)}let M=b("button","fg-chooser-close",{type:"button","aria-label":o().close});M.textContent="\xD7",M.addEventListener("click",()=>m.destroy()),y.append(b("span","fg-chart-spacer"),M),c.append(y,d),t.renderer.root.append(c)}let p=[t.events.on("cellValueChanged",()=>l()),t.events.on("rowsAdded",()=>l()),t.events.on("rowsRemoved",()=>l())];s||p.push(t.events.on("sortChange",()=>l()),t.events.on("filterChange",()=>l()));let m={el:d,setType:y=>{vt.includes(y)&&(n=y,h(),l())},update:()=>l(),destroy:()=>{p.forEach(y=>y()),(c!=null?c:d).remove(),this.handles.delete(m)}};return this.handles.add(m),h(),l(),m}destroy(){for(let e of[...this.handles])e.destroy()}};function fn(i,e,t){return typeof i=="number"&&typeof e=="number"?i-e:i instanceof Date&&e instanceof Date?i.getTime()-e.getTime():typeof i=="boolean"&&typeof e=="boolean"?Number(i)-Number(e):t.compare(String(i),String(e))}function zo(i,e){var t,n;if(F(e))return null;if(i.type==="number"){let o=typeof e=="number"?e:Number(e);return Number.isNaN(o)?null:o}return i.type==="date"?(n=(t=Y(e))==null?void 0:t.getTime())!=null?n:null:e}function ne(i,e,t){let n=F(i),o=F(e);return n||o?n===o?0:n?1:-1:fn(i,e,t)}function pn(i,e,t,n){let o=e.map(a=>({def:t(a.colId),mul:a.dir==="desc"?-1:1})).filter(a=>!!a.def);if(!o.length)return i;let r=o.map(a=>i.map(d=>{let c=B(a.def,d.data);return a.def.comparator?c:zo(a.def,c)})),s=i.map((a,d)=>d);return s.sort((a,d)=>{var c;for(let l=0;l<o.length;l++){let{def:u,mul:h}=o[l],p=r[l][a],m=r[l][d],x;if(u.comparator)try{x=(Number(u.comparator(p,m,i[a].data,i[d].data))||0)*h}catch{N(`comparator of column "${(c=u.id)!=null?c:u.field}" threw; treating values as equal`),x=0}else{let w=F(p),y=F(m);x=w||y?w===y?0:w?1:-1:fn(p,m,n)*h}if(x)return x}return a-d}),s.map(a=>i[a])}var mn=new WeakMap,Vo=i=>typeof i=="function"?"custom":i;function yt(i,e){var t,n,o;return{rows:((t=i.rows)!=null?t:[]).filter(e),columns:((n=i.columns)!=null?n:[]).filter(e),values:((o=i.values)!=null?o:[]).filter(r=>r&&e(r.colId)).map(r=>{var s;return{colId:r.colId,aggFunc:(s=r.aggFunc)!=null?s:"sum"}}),totals:i.totals!==!1}}function gn(i,e,t,n,o){let r=yt(e,R=>!!t(R)),s=new Intl.Collator(o,{numeric:!0,sensitivity:"base"}),a=R=>t(R),d=(R,f)=>R.map(g=>_(B(a(g),f))).join(""),c=new Map;for(let R of i){let f=d(r.columns,R);c.has(f)||c.set(f,r.columns.map(g=>B(a(g),R)))}let l=[...c.entries()].sort((R,f)=>{for(let g=0;g<r.columns.length;g++){let v=ne(R[1][g],f[1][g],s);if(v)return v}return 0});r.columns.length||l.splice(0,l.length,["",[]]);let u=[],h=(R,f,g)=>{var L,S;let v=r.values[f],C=a(v.colId),k=`pivot|${g}|${f}`;u.push({id:k,comboKey:R,valueIndex:f});let E=P=>R===null||d(r.columns,P)===R,I=v.aggFunc;return{id:k,field:k,header:`${(S=(L=C.header)!=null?L:C.field)!=null?S:v.colId} (${n.agg(Vo(I))})`,type:"number",format:I==="count"?"integer":C.format,width:130,aggFunc:(P,A)=>{let $=A.flatMap(D=>{var H;return(H=mn.get(D))!=null?H:[]}).filter(E);return $.length?ie(I,$.map(D=>B(C,D)),$):null}}},p=[],m=(R,f)=>{if(F(f))return n.blank;let g=a(R);return g.type==="number"&&!g.format?String(f):V(g,o)(f)};if(!r.columns.length)r.values.forEach((R,f)=>p.push(h("",f,0)));else{let R=(f,g,v)=>{let C=[],k=0;for(;k<f.length;){let E=f[k][1][g],I=_(E),L=k;for(;L<f.length&&_(f[L][1][g])===I;)L++;let S=f.slice(k,L),P=g===r.columns.length-1?r.values.map((A,$)=>h(S[0][0],$,v+k)):R(S,g+1,v+k);C.push({id:`pivotgroup|${g}|${v+k}`,header:m(r.columns[g],E),children:P}),k=L}return C};p.push(...R(l,0,0)),r.totals&&r.values.length&&p.push({id:"pivotgroup|total",header:n.total,children:r.values.map((f,g)=>h(null,g,"total"))})}let x=new Map;for(let R of i){let f=d(r.rows,R),g=x.get(f);g||x.set(f,g={values:r.rows.map(v=>B(a(v),R)),src:[]}),g.src.push(R)}let y=[...x.values()].sort((R,f)=>{for(let g=0;g<r.rows.length;g++){let v=ne(R.values[g],f.values[g],s);if(v)return v}return 0}).map(R=>{var v;let f={};r.rows.forEach((C,k)=>{var E;f[(E=a(C).field)!=null?E:C]=R.values[k]});let g=new Map;if(r.columns.length)for(let C of R.src){let k=d(r.columns,C),E=g.get(k);E||g.set(k,E=[]),E.push(C)}for(let C of u){let k=r.values[C.valueIndex],E=C.comboKey===null||!r.columns.length?R.src:(v=g.get(C.comboKey))!=null?v:[],I=a(k.colId);f[C.id]=E.length?ie(k.aggFunc,E.map(L=>B(I,L)),E):null}return mn.set(f,R.src),f});return{columns:[...r.rows.map(R=>{var g,v,C,k;let f=a(R);return{id:R,field:(g=f.field)!=null?g:R,header:(C=(v=f.header)!=null?v:f.field)!=null?C:R,type:f.type,format:f.format,width:(k=f.width)!=null?k:140}}),...p],rows:y,groupBy:r.rows.slice(0,-1)}}var we="0.7.0";var Go={kty:"EC",crv:"P-256",x:"sUTKkglZmk-HMKPNub8p7AeLBKesHCU8irIkw9rJlbE",y:"j0U_aKRDR7iApY9UpaD3hUemhBLZJwDv9-QiT_hUyw8"},bt="https://freegrid.app/pricing/",wn="https://freegrid.app/api/usage",vn=i=>{let e=atob(i.replace(/-/g,"+").replace(/_/g,"/")+"=".repeat((4-i.length%4)%4));return Uint8Array.from(e,t=>t.charCodeAt(0))};function Cn(i){let e=i.toLowerCase().replace(/^\[|\]$/g,"");return!e||e==="localhost"||e==="127.0.0.1"||e==="::1"||e==="0.0.0.0"||e.endsWith(".localhost")||e.endsWith(".test")||e.endsWith(".local")||/^(10|192\.168|172\.(1[6-9]|2\d|3[01]))\./.test(e)}function qo(i,e){let t=i.toLowerCase().replace(/\.$/,"");return e.some(n=>{let o=n.toLowerCase().replace(/^\*\./,"").replace(/\.$/,"");return!!o&&(t===o||t.endsWith(`.${o}`))})}var Uo=i=>`${i.getFullYear()}-${String(i.getMonth()+1).padStart(2,"0")}-${String(i.getDate()).padStart(2,"0")}`;async function Ct(i,e,t={}){var s,a;let n=typeof i=="string"?i.trim().split("."):[];if(n.length!==3||n[0]!=="FG1")return{ok:!1,reason:"format"};let o;try{if(o=JSON.parse(new TextDecoder().decode(vn(n[1]))),!Array.isArray(o.domains)||typeof o.expires!="string")return{ok:!1,reason:"format"}}catch{return{ok:!1,reason:"format"}}let r=typeof crypto!="undefined"?crypto.subtle:void 0;if(!r)return{ok:!1,reason:"unsupported",info:o};try{let d=await r.importKey("jwk",(s=t.publicKey)!=null?s:Go,{name:"ECDSA",namedCurve:"P-256"},!1,["verify"]),c=new TextEncoder().encode(`${n[0]}.${n[1]}`);if(!await r.verify({name:"ECDSA",hash:"SHA-256"},d,vn(n[2]),c))return{ok:!1,reason:"signature",info:o}}catch{return{ok:!1,reason:"signature",info:o}}return Uo((a=t.now)!=null?a:new Date)>o.expires?{ok:!1,reason:"expired",info:o}:qo(e,o.domains)?{ok:!0,info:o}:{ok:!1,reason:"domain",info:o}}var xt,yn=new Set;function Rn(i){xt=i}var bn={missing:`FreeGrid is free for personal use. Company use needs a domain license (\u20A9200,000 per domain per year): ${bt}
|
|
7
|
+
FreeGrid\uB294 \uAC1C\uC778\uC5D0\uAC8C \uBB34\uB8CC\uC785\uB2C8\uB2E4. \uD68C\uC0AC\uC5D0\uC11C \uC4F0\uB824\uBA74 \uB3C4\uBA54\uC778 \uB77C\uC774\uC120\uC2A4(\uB3C4\uBA54\uC778\uB2F9 \uC5F0 20\uB9CC \uC6D0)\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4: ${bt}`,format:"FreeGrid: the license key is not in the right format. / \uB77C\uC774\uC120\uC2A4 \uD0A4 \uD615\uC2DD\uC774 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.",signature:"FreeGrid: the license key could not be verified. / \uB77C\uC774\uC120\uC2A4 \uD0A4\uB97C \uD655\uC778\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.",expired:"FreeGrid: the license key has expired. / \uB77C\uC774\uC120\uC2A4 \uAE30\uAC04\uC774 \uB05D\uB0AC\uC2B5\uB2C8\uB2E4.",domain:"FreeGrid: the license key is for a different domain. / \uB2E4\uB978 \uB3C4\uBA54\uC778\uC6A9 \uB77C\uC774\uC120\uC2A4 \uD0A4\uC785\uB2C8\uB2E4."};function xn(i,e=typeof location!="undefined"?location.hostname:""){try{if(Cn(e)||typeof navigator=="undefined")return;let t=new Date().toISOString().slice(0,10),n=`${e}|${t}|${i.licensed?1:0}`,o=typeof localStorage!="undefined"?localStorage:null;if((o==null?void 0:o.getItem("freegrid:usage"))===n)return;o==null||o.setItem("freegrid:usage",n);let r=JSON.stringify({version:i.version,licensed:i.licensed,company:i.company,url:`${location.origin}${location.pathname}`});typeof navigator.sendBeacon=="function"?navigator.sendBeacon(wn,r):typeof fetch=="function"&&fetch(wn,{method:"POST",body:r,mode:"no-cors",keepalive:!0}).catch(()=>{})}catch{}}function kn(i=xt,e=typeof location!="undefined"?location.hostname:""){let t=i!=null?i:xt,n=`${t!=null?t:""}@${e}`;return yn.has(n)||Cn(e)?Promise.resolve():(yn.add(n),t?Ct(t,e).then(o=>{if(xn({version:we,licensed:o.ok,company:o.ok?o.info.company:void 0},e),o.ok||o.reason==="unsupported")return;let r=o.info?` (${o.info.domains.join(", ")}, ${o.info.expires})`:"";console.warn(`${bn[o.reason]}${r}
|
|
8
|
+
${bt}`)},()=>{}):(console.info(bn.missing),xn({version:we,licensed:!1},e),Promise.resolve()))}var Mn={text:["contains","equals","notEquals","startsWith","endsWith","blank","notBlank"],number:["eq","ne","lt","lte","gt","gte","between","blank","notBlank"],date:["equals","before","after","between","blank","notBlank"]},Sn=["blank","notBlank"],Rt=500,Ye=class{constructor(e){this.grid=e;this.popup=null;this.colId=null;this.off=[]}get openColumn(){return this.colId}toggle(e,t){this.colId===e?this.close():this.open(e,t)}open(e,t){var x;this.close();let n=this.grid.columns.getNode(e);if(!n||n.children||T(e))return;let o=this.grid.store.state.locale,r=n.def,s=b("div",`fg-menu fg-theme-${this.grid.store.state.theme}`,{role:"dialog","aria-label":o.columnMenu});this.grid.applyFontTo(s),te(r)&&s.append(this.section([[o.sortAsc,()=>this.grid.setSort([{colId:e,dir:"asc"}])],[o.sortDesc,()=>this.grid.setSort([{colId:e,dir:"desc"}])],[o.clearSort,()=>this.grid.setSort(this.grid.store.state.sort.filter(w=>w.colId!==e))]])),s.append(this.section([[o.pinLeft,()=>this.grid.setPinned(e,"left")],[o.pinRight,()=>this.grid.setPinned(e,"right")],[o.unpin,()=>this.grid.setPinned(e,null)]]));let a=this.grid.getGroupBy();if(!this.grid.options.treeData&&(this.grid.options.groupPanel||a.length)){let w=a.includes(e)?[[o.ungroup,()=>this.grid.setGroupBy(a.filter(y=>y!==e))]]:[[o.groupByThis,()=>this.grid.setGroupBy([...a,e])]];a.length&&w.push([o.expandAll,()=>this.grid.expandAll(!0)],[o.collapseAll,()=>this.grid.expandAll(!1)]),s.append(this.section(w))}let d=[[o.autosizeThis,()=>this.grid.autoSize([e])],[o.autosizeAll,()=>this.grid.autoSize()]];r.lockVisible||d.push([o.hideColumn,()=>this.grid.setColumnsVisible([e],!1)]),d.push([o.chooseColumns,()=>this.grid.chooser.open()],[o.resetColumns,()=>this.grid.resetColumns()]),s.append(this.section(d));let c=this.filterSection(e,()=>this.close());c&&s.append(c),document.body.append(s);let l=t.getBoundingClientRect(),u=s.offsetWidth||248;s.style.left=`${Math.max(4,Math.min(l.right-u,window.innerWidth-u-4))}px`;let h=Math.max(4,Math.min(l.bottom+4,window.innerHeight-240));s.style.top=`${h}px`,s.style.maxHeight=`${Math.max(160,window.innerHeight-h-8)}px`,this.popup=s,this.colId=e;let p=w=>{let y=w.target;!s.contains(y)&&!t.contains(y)&&this.close()},m=w=>{w.key==="Escape"&&(this.close(),this.grid.renderer.root.focus())};document.addEventListener("pointerdown",p,!0),document.addEventListener("keydown",m,!0),this.off.push(()=>document.removeEventListener("pointerdown",p,!0),()=>document.removeEventListener("keydown",m,!0)),(x=s.querySelector(".fg-filter-value:not([hidden]), .fg-set-search, .fg-menu-item"))==null||x.focus()}filterSection(e,t){let n=this.grid.columns.getNode(e);if(!n||n.children)return null;let o=this.grid.store.state.locale,r=se(n.def);return r==="set"?this.setFilter(e,o,t):r?this.conditionFilter(e,r,o,t):null}close(){var e;for(let t of this.off)t();this.off=[],(e=this.popup)==null||e.remove(),this.popup=null,this.colId=null}section(e){let t=b("div","fg-menu-section");for(let[n,o]of e){let r=b("button","fg-menu-item",{type:"button"});r.textContent=n,r.addEventListener("click",()=>{o(),this.close()}),t.append(r)}return t}actions(e,t,n,o){let r=b("div","fg-menu-actions"),s=b("button","fg-btn",{type:"button"});s.textContent=t.reset,s.addEventListener("click",()=>{this.grid.setFilter(e,null),o()});let a=b("button","fg-btn fg-btn-primary",{type:"button"});return a.textContent=t.apply,a.addEventListener("click",n),r.append(s,a),r}title(e){let t=b("div","fg-menu-title");return t.textContent=e.filter,t}conditionFilter(e,t,n,o){var m;let r=this.grid.store.state.filters[e],s=r&&r.type===t?r:void 0,a=b("div","fg-menu-section fg-filter"),d=b("select","fg-filter-op",{"aria-label":n.filter});for(let x of Mn[t]){let w=b("option");w.value=x,w.textContent=n.ops[x],d.append(w)}d.value=(m=s==null?void 0:s.op)!=null?m:Mn[t][0];let c=t==="text"?"text":t,l=b("input","fg-input fg-filter-value",{type:c,placeholder:n.value,"aria-label":n.value}),u=b("input","fg-input fg-filter-value-to",{type:c,placeholder:n.valueTo,"aria-label":n.valueTo});s&&(l.value=s.value!=null?String(s.value):"",u.value="valueTo"in s&&s.valueTo!=null?String(s.valueTo):"");let h=()=>{l.hidden=Sn.includes(d.value),u.hidden=d.value!=="between"};d.addEventListener("change",h),h();let p=()=>{let x=d.value,w=!Sn.includes(x),y=null;if(t==="number"){let M=l.value===""?void 0:Number(l.value),R=u.value===""?void 0:Number(u.value);(!w||M!==void 0)&&(y={type:t,op:x,value:M,valueTo:R})}else t==="date"?(!w||l.value)&&(y={type:t,op:x,value:l.value||void 0,valueTo:u.value||void 0}):(!w||l.value)&&(y={type:t,op:x,value:l.value});this.grid.setFilter(e,y),o()};for(let x of[l,u])x.addEventListener("keydown",w=>w.key==="Enter"&&p());return a.append(this.title(n),d,l,u,this.actions(e,n,p,o)),a}setFilter(e,t,n){let{grid:o}=this,r=o.columns.getNode(e).def,s=V(r,t.code),a=o.collator(),d=new Map;for(let v of o.rowModel.allNodes()){let C=B(r,v.data),k=_(C);d.has(k)||d.set(k,C)}let c=[...d.entries()].sort((v,C)=>ne(v[1],C[1],a)),l=o.store.state.filters[e],u=new Set((l==null?void 0:l.type)==="set"?l.values.map(_).filter(v=>d.has(v)):d.keys()),h=(v,C)=>v===""?t.blanks:s(C),p=b("div","fg-menu-section fg-filter fg-set-filter"),m=b("input","fg-input fg-set-search",{type:"search",placeholder:t.search,"aria-label":t.search}),x=b("label","fg-set-item fg-set-all"),w=b("input","fg-checkbox",{type:"checkbox"});x.append(w,document.createTextNode(t.selectAll));let y=b("div","fg-set-list"),M=()=>{let v=m.value.trim().toLowerCase();return v?c.filter(([C,k])=>h(C,k).toLowerCase().includes(v)):c},R=()=>{let v=M(),C=v.filter(([k])=>u.has(k)).length;w.checked=C>0&&C===v.length,w.indeterminate=C>0&&C<v.length},f=()=>{let v=M();if(y.replaceChildren(...v.slice(0,Rt).map(([C,k])=>{let E=b("label","fg-set-item"),I=b("input","fg-checkbox",{type:"checkbox"});return I.checked=u.has(C),I.addEventListener("change",()=>{I.checked?u.add(C):u.delete(C),R()}),E.append(I,document.createTextNode(h(C,k))),E})),v.length>Rt){let C=b("div","fg-set-more");C.textContent=`\u2026 +${v.length-Rt}`,y.append(C)}R()};w.addEventListener("change",()=>{for(let[v]of M())w.checked?u.add(v):u.delete(v);f()}),m.addEventListener("input",f);let g=()=>{o.setFilter(e,u.size===d.size?null:{type:"set",values:c.filter(([v])=>u.has(v)).map(([,v])=>v)}),n()};return m.addEventListener("keydown",v=>v.key==="Enter"&&g()),f(),p.append(this.title(t),m,x,y,this.actions(e,t,g,n)),p}};var En=new WeakMap,Ko=0;function ve(i){let e=En.get(i);return e||En.set(i,e=`r${++Ko}`),e}var Ze=class{constructor(e){this.deps=e;this.stats={filterRuns:0,sortRuns:0};this.server=!1;this.full=[];this.last={};this.nodes=[];this.filtered=[];this.sorted=[];this.display=[];this.indexById=null;this.layoutCache=null}update(e){var u,h,p,m;let t=this.deps.collator(),n=e.display,o=!!(n!=null&&n.getParentId)!=!!((u=this.last.display)!=null&&u.getParentId),r=e.data!==this.last.data,s=r||o||e.filters!==this.last.filters||e.quickFilter!==this.last.quickFilter,a=s||e.sort!==this.last.sort||t!==this.last.collator,d=a||(n==null?void 0:n.version)!==this.last.displayVersion||(n==null?void 0:n.groupBy)!==((h=this.last.display)==null?void 0:h.groupBy);if(r){let x=this.deps.getRowId;this.nodes=e.data.map((w,y)=>({id:x?String(x(w)):ve(w),data:w,sourceIndex:y}))}s&&(this.filtered=this.filter(e),this.stats.filterRuns++),a&&(this.sorted=pn(this.filtered,e.sort,x=>this.deps.columnDef(x),t),this.stats.sortRuns++),d&&(this.full=n?this.buildDisplay(n,e.sort,t):this.sorted);let c=(p=e.page)!=null?p:null,l=(m=this.last.page)!=null?m:null;(d||(c==null?void 0:c.index)!==(l==null?void 0:l.index)||(c==null?void 0:c.size)!==(l==null?void 0:l.size))&&(this.display=c?this.full.slice(c.index*c.size,(c.index+1)*c.size):this.full,this.indexById=null,this.layoutCache=null),this.last={...e,collator:t,displayVersion:n==null?void 0:n.version}}invalidate(){this.last={}}fullCount(){return this.full.length}dataCount(){return this.sorted.length}loading(){return!1}getRowCount(){return this.display.length}getRow(e){return this.display[e]}rows(){return this.display}dataRows(){return this.sorted}allNodes(){return this.nodes}idOf(e){return this.deps.getRowId?String(this.deps.getRowId(e)):ve(e)}indexOfId(e){var t;return this.indexById||(this.indexById=new Map(this.display.map((n,o)=>[n.id,o]))),(t=this.indexById.get(e))!=null?t:-1}layout(e,t){let n=this.layoutCache;if(n&&n.rows===this.display&&n.rh===e&&n.dh===t)return n;let o=this.display.length,r=new Float64Array(o+1),s=!0;for(let a=0;a<o;a++){let d=this.display[a].kind==="detail";d&&(s=!1),r[a+1]=r[a]+(d?t:e)}return this.layoutCache={rows:this.display,rh:e,dh:t,offsets:r,uniform:s},this.layoutCache}filter(e){var c;let t=Object.entries(e.filters).map(([l,u])=>({def:this.deps.columnDef(l),pred:Bt(u)})).filter(l=>!!l.def),n=Ot(e.quickFilter),o=n.length?this.deps.quickColumns():[];if(!t.length&&!n.length)return this.nodes;let r=this.nodes.filter(l=>{for(let u of t)if(!u.pred(B(u.def,l.data)))return!1;if(n.length){let u=o.map(h=>this.deps.format(h,B(h,l.data))).join("").toLowerCase();if(!zt(n,u))return!1}return!0}),s=(c=e.display)==null?void 0:c.getParentId;if(!s)return r;let a=new Map(this.nodes.map(l=>[l.id,l])),d=new Set(r);for(let l of r){let u=s(l.data),h=new Set;for(;u!=null&&!h.has(u);){h.add(u);let p=a.get(String(u));if(!p)break;d.add(p),u=s(p.data)}}return this.nodes.filter(l=>d.has(l))}isOpen(e,t,n){let o=e.expanded.get(t);return o!==void 0?o:e.defaultExpanded===-1||n<e.defaultExpanded}withDetails(e,t,n){for(let o of t)n.push(o),e.detailOpen.has(o.id)&&(!e.isMaster||e.isMaster(o.data))&&n.push({id:`detail:${o.id}`,data:{},sourceIndex:-1,kind:"detail",detailOf:o})}buildDisplay(e,t,n){let o=[];if(e.getParentId)return this.buildTree(e,o),o;let r=e.groupBy.filter(a=>this.deps.columnDef(a));if(!r.length)return e.detailOpen.size?(this.withDetails(e,this.sorted,o),o):this.sorted;let s=(a,d,c)=>{var x;let l=r[d],u=this.deps.columnDef(l),h=new Map;for(let w of a){let y=B(u,w.data),M=F(y)?"":_(y),R=h.get(M);R||h.set(M,R={value:y,nodes:[]}),R.nodes.push(w)}let p=((x=t.find(w=>w.colId===l))==null?void 0:x.dir)==="desc"?-1:1,m=[...h.entries()].sort((w,y)=>ne(w[1].value,y[1].value,n)*p);for(let[w,y]of m){let M=`${c}${l}:${w}`,R=this.isOpen(e,M,d);o.push({id:`group:${M}`,data:{},sourceIndex:-1,kind:"group",level:d,group:{key:M,colId:l,value:y.value,rows:y.nodes.map(f=>f.data),expanded:R}}),R&&(d+1<r.length?s(y.nodes,d+1,`${M}|`):this.withDetails(e,y.nodes.map(f=>({...f,level:d+1})),o))}};return s(this.sorted,0,""),o}buildTree(e,t){let n=new Set(this.sorted.map(a=>a.id)),o=new Map,r=[];for(let a of this.sorted){let d=e.getParentId(a.data),c=d==null?null:String(d);if(c!==null&&n.has(c)&&c!==a.id){let l=o.get(c);l||o.set(c,l=[]),l.push(a)}else r.push(a)}let s=(a,d,c)=>{var l;for(let u of a){if(c.has(u.id))continue;let h=(l=o.get(u.id))!=null?l:[],p=h.length>0&&this.isOpen(e,u.id,d),m={...u,level:d,hasChildren:h.length>0,expanded:p};this.withDetails(e,[m],t),p&&s(h,d+1,new Set([...c,u.id]))}};s(r,0,new Set)}};var _o=3e3,Wo=new Float64Array(0),ye=class{constructor(e){this.deps=e;this.stats={filterRuns:0,sortRuns:0};this.server=!0;this.blocks=new Map;this.total=null;this.loadedEnd=0;this.gen=0;this.query=null;this.page=null;this.lastBlock=0;this.version=0;this.cache=null}get bs(){return this.page?this.page.size:this.deps.blockSize}get base(){return this.page?this.page.index*this.page.size:0}update(e){var s,a,d,c;let t=this.query,n=!t||t.sort!==e.sort||t.filters!==e.filters||t.quickFilter!==e.quickFilter,o=(s=e.page)!=null?s:null,r=((a=o==null?void 0:o.size)!=null?a:0)!==((c=(d=this.page)==null?void 0:d.size)!=null?c:0);this.query={sort:e.sort,filters:e.filters,quickFilter:e.quickFilter},this.page=o?{...o}:null,(n||r)&&this.purge(),this.ensure(Math.floor(this.base/this.bs))}invalidate(){}purge(){this.gen++,this.blocks.clear(),this.total=null,this.loadedEnd=0,this.touch(),this.query&&this.ensure(Math.floor(this.base/this.bs))}touch(){this.version++,this.cache=null}fullCount(){if(this.total!==null)return this.total;if(!this.loadedEnd)return 0;let e=this.blocks.get(Math.floor((this.loadedEnd-1)/this.bs));return this.loadedEnd+(e&&e.nodes.length<this.bs?0:this.bs)}getRowCount(){let e=this.fullCount();return this.page?Math.max(0,Math.min(this.page.size,e-this.base)):e}dataCount(){return this.fullCount()}loading(){for(let e of this.blocks.values())if(e.state==="loading")return!0;return!1}placeholder(e){return{id:`loading:${e}`,data:{},sourceIndex:-1,kind:"loading"}}peek(e){var o;let t=Math.floor(e/this.bs),n=this.blocks.get(t);return(n==null?void 0:n.state)==="loaded"&&(o=n.nodes[e-t*this.bs])!=null?o:null}getRow(e){let t=this.base+e,n=this.peek(t);return n||(e>=0&&e<this.getRowCount()&&this.ensure(Math.floor(t/this.bs)),this.placeholder(t))}ensure(e){var c;let t=this.blocks.get(e);if(t&&(t.state!=="failed"||Date.now()<((c=t.retryAt)!=null?c:0))||this.total!==null&&e*this.bs>=this.total&&e>0)return;let n=e*this.bs,o=n+this.bs,r=this.gen;this.lastBlock=e,this.blocks.set(e,{state:"loading",nodes:[]});let s=this.query,a=l=>{r===this.gen&&(this.blocks.set(e,{state:"failed",nodes:[],retryAt:Date.now()+_o}),this.deps.onFailed(n,o,l))},d;try{d=Promise.resolve(this.deps.datasource.getRows({start:n,end:o,sort:[...s.sort],filters:{...s.filters},quickFilter:s.quickFilter}))}catch(l){d=Promise.reject(l)}d.then(l=>{if(r!==this.gen)return;let u=Array.isArray(l==null?void 0:l.rows)?l.rows.filter(m=>m!==null&&typeof m=="object"):null;if(!u){N("datasource.getRows must resolve to { rows: Row[], total?: number }"),a(new Error("invalid datasource response"));return}let h=this.deps.getRowId,p=u.slice(0,this.bs).map((m,x)=>({id:h?String(h(m)):ve(m),data:m,sourceIndex:n+x}));this.blocks.set(e,{state:"loaded",nodes:p}),typeof l.total=="number"&&l.total>=0?this.total=l.total:p.length<this.bs&&(this.total=n+p.length),this.loadedEnd=Math.max(this.loadedEnd,n+p.length),this.evict(),this.touch(),this.deps.onLoaded(n,n+p.length,this.total)},a)}evict(){let e=Math.max(2,this.deps.maxBlocks);if(this.blocks.size<=e)return;let t=[...this.blocks.keys()].sort((n,o)=>Math.abs(o-this.lastBlock)-Math.abs(n-this.lastBlock));for(let n of t){if(this.blocks.size<=e)break;this.blocks.get(n).state!=="loading"&&this.blocks.delete(n)}}built(){var n;if(((n=this.cache)==null?void 0:n.ver)===this.version)return this.cache;let e=[];for(let o of[...this.blocks.keys()].sort((r,s)=>r-s)){let r=this.blocks.get(o);r.state==="loaded"&&e.push(...r.nodes)}let t=new Map;for(let o of e)t.set(o.id,o.sourceIndex);return this.cache={ver:this.version,data:e,rows:null,ids:t},this.cache}rows(){var t;let e=this.built();if(!e.rows){let n=this.getRowCount();e.rows=new Array(n);for(let o=0;o<n;o++)e.rows[o]=(t=this.peek(this.base+o))!=null?t:this.placeholder(this.base+o)}return e.rows}dataRows(){return this.built().data}allNodes(){return this.built().data}idOf(e){return this.deps.getRowId?String(this.deps.getRowId(e)):ve(e)}indexOfId(e){let t=this.built().ids.get(e);if(t===void 0)return-1;let n=t-this.base;return n>=0&&n<this.getRowCount()?n:-1}layout(){return{offsets:Wo,uniform:!0}}};function Ln(i){let e=i.idAt(i.index);if(i.mode==="single"){let t=new Set;return i.toggle&&i.selected.has(e)||t.add(e),{selected:t,anchorIndex:i.index}}if(i.range&&i.anchorIndex!=null){let t=i.toggle?new Set(i.selected):new Set,n=Math.min(i.anchorIndex,i.index),o=Math.max(i.anchorIndex,i.index);for(let r=n;r<=o;r++)t.add(i.idAt(r));return{selected:t,anchorIndex:i.anchorIndex}}if(i.toggle){let t=new Set(i.selected);return t.has(e)?t.delete(e):t.add(e),{selected:t,anchorIndex:i.index}}return{selected:new Set([e]),anchorIndex:i.index}}var Je=class{constructor(e){this.bus=new ae;this.current=e}get state(){return this.current}set(e){let t=Object.keys(e).filter(n=>e[n]!==this.current[n]);t.length&&(this.current={...this.current,...e},this.bus.emit("change",t))}};var In=i=>Math.round(i*2.75),Dn=i=>Math.round(i*3.1),Tn=13,jo=[],Xo=100,Yo=new Map;function oe(i){return i.every(e=>e!==null&&typeof e=="object")?i:(N("data contains entries that are not objects; they were skipped"),i.filter(e=>e!==null&&typeof e=="object"))}var kt=class{constructor(e,t){this.options=t;this.events=new ae;this.pinnedRows={top:[],bottom:[]};this.spanCache=null;this.editVersion=0;this.tracker=new Ve;this.history=new ze;this.disposers=[];this.collatorCache=null;this.destroyed=!1;this.summaryOpts=null;this.summaryValues=[];this.groupBy=[];this.expanded=new Map;this.defaultExpanded=0;this.detailOpen=new Set;this.displayVersion=0;this.aggCache={ver:-1,map:new WeakMap};this.charts=new Xe(this);this.sourceDefs=[];this.pivotCfg=null;this.pivotData=null;this.savedGroup=null;this.page=0;this.pageSize=Xo;var s,a,d,c,l,u,h,p,m,x;Array.isArray(t.columns)||N("options.columns must be an array"),t.data!=null&&!Array.isArray(t.data)&&N("options.data must be an array"),this.store=new Je({data:Array.isArray(t.data)?oe(t.data):[],sort:[],filters:{},quickFilter:"",selected:new Set,anchorId:null,focus:null,range:null,locale:he(t.locale),theme:(s=t.theme)!=null?s:"light"}),this.sourceDefs=Array.isArray(t.columns)?t.columns:[],this.columns=new Ce(this.withSelect(this.sourceDefs));let n=t.pagination;n&&typeof n=="object"&&n.pageSize!==void 0&&(Number.isInteger(n.pageSize)&&n.pageSize>0?this.pageSize=n.pageSize:N("pagination.pageSize must be a positive integer")),t.datasource&&typeof t.datasource.getRows!="function"&&N("datasource.getRows must be a function"),this.rowModel=t.datasource&&typeof t.datasource.getRows=="function"?new ye({datasource:t.datasource,blockSize:Number.isInteger(t.blockSize)&&t.blockSize>0?t.blockSize:100,maxBlocks:Number.isInteger(t.maxBlocks)&&t.maxBlocks>0?t.maxBlocks:100,getRowId:t.getRowId,onLoaded:(w,y,M)=>this.serverLoaded(w,y,M),onFailed:(w,y,M)=>this.serverFailed(w,y,M)}):new Ze({getRowId:t.getRowId,columnDef:w=>{var y;return(y=this.columns.getNode(w))==null?void 0:y.def},quickColumns:()=>this.columns.displayed().filter(w=>!T(w.id)).map(w=>w.def),format:(w,y)=>V(w,this.store.state.locale.code)(y),collator:()=>this.collator()}),this.groupBy=this.validGroupBy((a=t.groupBy)!=null?a:[]),this.defaultExpanded=(d=t.groupDefaultExpanded)!=null?d:0,t.treeData&&!t.getRowId&&N("treeData needs getRowId so parent ids can be matched"),this.updateRows(),this.summaryOpts=(c=t.summary)!=null?c:null,this.refreshSummary();let o=t.fontSize!=null&&t.fontSize>0?t.fontSize:null;t.fontSize!=null&&!(t.fontSize>0)&&N("fontSize must be a positive number"),this.font={size:o,family:(l=t.fontFamily)!=null?l:null};let r=o!=null?o:Tn;if(this.renderer=new Se(e,this,{rowHeight:(u=t.rowHeight)!=null?u:In(r),headerHeight:(h=t.headerHeight)!=null?h:Dn(r)}),this.renderer.applyFont(this.font.size,this.font.family),this.menu=new Ye(this),this.chooser=new Pe(this),this.contextMenu=new Ae(this),this.editor=new Oe(this),this.finder=new Fe(this),this.fillHandle=new Ne(this),this.groupPanel=t.groupPanel?new Ee(this):null,this.pinnedRows={top:oe((p=t.pinnedTopRows)!=null?p:[]),bottom:oe((m=t.pinnedBottomRows)!=null?m:[])},this.sideBar=t.sideBar?new $e(this,typeof t.sideBar=="object"&&!!t.sideBar.open,(x=typeof t.sideBar=="object"?t.sideBar.panels:void 0)!=null?x:t.pivot||t.pivotPanel?["columns","filters","pivot"]:void 0):null,this.disposers.push(this.store.bus.on("change",w=>this.onChange(w)),tn(this),Wt(this),()=>this.menu.close(),()=>this.chooser.close(),()=>this.contextMenu.destroy(),()=>this.editor.cancel(),()=>this.fillHandle.destroy(),()=>{var w;return(w=this.groupPanel)==null?void 0:w.destroy()},()=>this.charts.destroy()),typeof ResizeObserver!="undefined"){let w=new ResizeObserver(()=>this.renderer.schedule());w.observe(this.renderer.main),this.disposers.push(()=>w.disconnect())}t.pivot&&this.setPivot(t.pivot),kn(t.licenseKey),this.renderer.render(),this.api=this.createApi()}collator(){var t;let e=this.store.state.locale.code;return((t=this.collatorCache)==null?void 0:t.code)!==e&&(this.collatorCache={code:e,collator:new Intl.Collator(e,{numeric:!0,sensitivity:"base"})}),this.collatorCache.collator}layoutChanged(){this.renderer.invalidate({header:!0,rows:!0}),this.refreshChoosers()}columnsChanged(){this.rowModel.invalidate(),this.updateRows(),this.refreshSummary(),this.renderer.invalidate({header:!0,rows:!0}),this.refreshChoosers()}display(){var e;return{groupBy:this.options.treeData?jo:this.groupBy,getParentId:(e=this.options.treeData)==null?void 0:e.getParentId,expanded:this.expanded,defaultExpanded:this.defaultExpanded,detailOpen:this.options.detailRenderer?this.detailOpen:new Set,isMaster:this.options.isRowMaster,version:this.displayVersion}}updateRows(){var n;let e=!!this.options.pagination,t=(n=this.pivotData)!=null?n:this.store.state.data;this.rowModel.update({...this.store.state,data:t,display:this.display(),page:e?{index:this.page,size:this.pageSize}:null}),e&&this.page>=this.getPageCount()&&(this.page=this.getPageCount()-1,this.rowModel.update({...this.store.state,data:t,display:this.display(),page:{index:this.page,size:this.pageSize}}))}viewRows(){var e;return(e=this.pivotData)!=null?e:this.store.state.data}sourceLeaves(){let e=[],t=n=>{var o,r;for(let s of n)!s||typeof s!="object"||(Array.isArray(s.children)?t(s.children):((o=s.id)!=null?o:s.field)&&e.push({id:(r=s.id)!=null?r:s.field,def:s}))};return t(this.sourceDefs),e}getPivot(){let e=this.pivotCfg;if(!e)return null;let t={rows:[...e.rows],columns:[...e.columns],values:e.values.map(n=>({...n}))};return e.totals||(t.totals=!1),t}setPivot(e){if(e&&this.clientOnly("pivot"))return;if(e&&(typeof e!="object"||!Array.isArray(e.rows)||!Array.isArray(e.values))){N("setPivot: expected { rows: string[], values: [...] }");return}if(this.editor.cancel(),!e){if(!this.pivotCfg)return;this.pivotCfg=null,this.pivotData=null,this.columns.setDefs(this.withSelect(this.sourceDefs)),this.savedGroup&&(this.groupBy=this.savedGroup.groupBy,this.expanded=this.savedGroup.expanded,this.defaultExpanded=this.savedGroup.defaultExpanded,this.savedGroup=null),this.afterPivotSwitch();return}let t=new Set(this.sourceLeaves().map(n=>n.id));this.pivotCfg||(this.savedGroup={groupBy:this.groupBy,expanded:this.expanded,defaultExpanded:this.defaultExpanded}),this.pivotCfg=yt(e,n=>t.has(n)),this.expanded=new Map,this.defaultExpanded=-1,this.rebuildPivot(!1),this.afterPivotSwitch()}afterPivotSwitch(){var e;this.page=0,this.store.set({sort:[],filters:{},range:null,focus:null}),this.rowModel.invalidate(),this.updateRows(),this.displayVersion++,this.updateRows(),(e=this.groupPanel)==null||e.refresh(),this.renderer.invalidate({header:!0,rows:!0}),this.refreshChoosers(),this.events.emit("pivotChange",{pivot:this.getPivot()})}rebuildPivot(e=!0){let t=this.pivotCfg;if(!t)return;let n=this.store.state.locale,o=new Map(this.sourceLeaves().map(c=>[c.id,c.def])),r={sum:n.sum,avg:n.avg,min:n.min,max:n.max,count:n.count},s=gn(this.store.state.data,t,c=>o.get(c),{total:n.total,blank:n.blanks,agg:c=>{var l;return(l=r[c])!=null?l:c}},n.code);if(this.pivotData=s.rows,this.columns.setDefs(this.withSelect(s.columns)),this.groupBy=s.groupBy,!e)return;let a=c=>!!this.columns.getNode(c),d=this.store.state;(d.sort.some(c=>!a(c.colId))||Object.keys(d.filters).some(c=>!a(c)))&&this.store.set({sort:d.sort.filter(c=>a(c.colId)),filters:Object.fromEntries(Object.entries(d.filters).filter(([c])=>a(c)))}),this.rowModel.invalidate(),this.displayVersion++,this.updateRows(),this.renderer.invalidate({header:!0,rows:!0}),this.refreshChoosers()}getPage(){return this.options.pagination?this.page:0}getPageSize(){return this.options.pagination?this.pageSize:this.rowModel.fullCount()}getPageCount(){return this.options.pagination?Math.max(1,Math.ceil(this.rowModel.fullCount()/this.pageSize)):1}setPage(e){if(!this.options.pagination||!Number.isFinite(e))return;let t=Math.max(0,Math.min(this.getPageCount()-1,Math.floor(e)));t!==this.page&&(this.page=t,this.pageMoved())}setPageSize(e){if(!this.options.pagination)return;if(!Number.isInteger(e)||e<=0){N("setPageSize: size must be a positive integer");return}if(e===this.pageSize)return;let t=this.page*this.pageSize;this.pageSize=e,this.page=Math.floor(t/e),this.pageMoved()}pageMoved(){this.editor.cancel(),this.updateRows(),this.store.state.range&&this.setRange(null);let e=this.rowModel.getRowCount(),t=this.store.state.focus;t&&t.rowIndex>=e&&this.store.set({focus:e?{...t,rowIndex:e-1}:null}),this.renderer.scroller.scrollTop=0,this.finder.refresh(),this.renderer.invalidate({header:!0,rows:!0}),this.emitPage()}emitPage(){this.events.emit("pageChange",{page:this.page,pageSize:this.pageSize,pageCount:this.getPageCount()})}refreshRows(){this.rowModel instanceof ye&&(this.rowModel.purge(),this.renderer.invalidate({rows:!0}))}serverLoaded(e,t,n){this.destroyed||(this.renderer.invalidate({header:!0,rows:!0}),this.events.emit("rowsLoaded",n===null?{start:e,end:t}:{start:e,end:t,total:n}))}serverFailed(e,t,n){this.destroyed||(N(`datasource.getRows failed for rows ${e}\u2013${t}`),this.toast(this.store.state.locale.loadFailed),this.renderer.invalidate({rows:!0}),this.events.emit("rowsLoadFailed",{start:e,end:t,error:n}))}clientOnly(e){return this.rowModel.server?(N(`${e} is not available with a datasource`),!0):!1}displayChanged(){this.displayVersion++,this.updateRows(),this.store.state.range&&this.setRange(null);let e=this.rowModel.getRowCount(),t=this.store.state.focus;t&&t.rowIndex>=e&&this.store.set({focus:e?{...t,rowIndex:e-1}:null}),this.finder.refresh(),this.renderer.invalidate({header:!0,rows:!0})}validGroupBy(e){return Array.isArray(e)?e.length&&this.clientOnly("grouping")?[]:[...new Set(e)].filter(t=>{let n=this.columns.getNode(t);return!n||n.children||T(t)?(N(`groupBy: unknown column "${t}"`),!1):!0}):[]}getGroupBy(){return[...this.groupBy]}setGroupBy(e){var n;let t=this.validGroupBy(e);t.join("")!==this.groupBy.join("")&&(this.groupBy=t,this.page=0,(n=this.groupPanel)==null||n.refresh(),this.displayChanged(),this.events.emit("groupChange",{groupBy:[...t]}))}isExpandable(e){return!!e&&(e.kind==="group"||!!e.hasChildren)}expandKey(e){return e.group?e.group.key:e.id}setGroupExpanded(e,t){var r,s;let n=this.rowModel.rows().find(a=>this.isExpandable(a)&&this.expandKey(a)===e);(n?!!((s=(r=n.group)==null?void 0:r.expanded)!=null?s:n.expanded):this.expanded.get(e))!==t&&(this.expanded.set(e,t),this.displayChanged(),this.events.emit("groupToggle",{key:e,expanded:t}))}toggleRow(e){var n,o;let t=this.rowModel.getRow(e);this.isExpandable(t)&&this.setGroupExpanded(this.expandKey(t),!((o=(n=t.group)==null?void 0:n.expanded)!=null?o:t.expanded))}expandAll(e=!0){this.expanded.clear(),this.defaultExpanded=e?-1:0,this.displayChanged()}groupAggregate(e,t){var r;let n=(r=this.columns.getNode(t))==null?void 0:r.def;if(!e.group||!(n!=null&&n.aggFunc))return;this.aggCache.ver!==this.editVersion&&(this.aggCache={ver:this.editVersion,map:new WeakMap});let o=this.aggCache.map.get(e.group);if(o||this.aggCache.map.set(e.group,o=new Map),!o.has(t)){let s=e.group.rows;try{o.set(t,ie(n.aggFunc,s.map(a=>B(n,a)),s))}catch{N(`aggFunc of column "${t}" threw`),o.set(t,null)}}return o.get(t)}canExpandDetail(e){if(!this.options.detailRenderer)return!1;try{return!this.options.isRowMaster||!!this.options.isRowMaster(e)}catch{return!1}}isDetailExpanded(e){return!!e&&typeof e=="object"&&this.detailOpen.has(this.rowModel.idOf(e))}setDetailExpanded(e,t){if(!e||typeof e!="object"||t&&!this.canExpandDetail(e))return;let n=this.rowModel.idOf(e);this.detailOpen.has(n)!==t&&(t?this.detailOpen.add(n):(this.detailOpen.delete(n),this.renderer.dropDetail(n)),this.displayChanged(),this.events.emit("detailToggle",{row:e,expanded:t}))}canMoveRows(){let e=this.store.state;return!this.rowModel.server&&!e.sort.length&&!Object.keys(e.filters).length&&!e.quickFilter.trim()&&!this.groupBy.length&&!this.options.treeData}moveRow(e,t,n=!0){if(this.clientOnly("moveRow")||!this.canMoveRows())return!1;let o=this.store.state.data,r=o.indexOf(e);if(r<0||!Number.isFinite(t))return!1;let s=Math.max(0,Math.min(o.length-1,Math.floor(t)));if(s===r)return!1;let a=[...o];return a.splice(r,1),a.splice(s,0,e),this.replaceData(a),n&&this.history.push({undo:()=>this.moveRow(e,r,!1),redo:()=>this.moveRow(e,s,!1)}),this.events.emit("rowDragEnd",{row:e,fromIndex:r,toIndex:s}),!0}setFont(e){let t=this.font.size;e.size!==void 0&&(typeof e.size=="number"&&e.size>0?t=e.size:N("setFont: size must be a positive number"));let n=e.family===void 0?this.font.family:e.family||null;this.font={size:t,family:n};let o=t!=null?t:Tn;this.options.rowHeight==null&&(this.renderer.opts.rowHeight=In(o)),this.options.headerHeight==null&&(this.renderer.opts.headerHeight=Dn(o)),this.renderer.applyFont(t,n),this.menu.close(),this.layoutChanged()}applyFontTo(e){this.font.size&&e.style.setProperty("--fg-font-size",`${this.font.size}px`),this.font.family&&e.style.setProperty("--fg-font",this.font.family)}summary(){var e;return this.summaryOpts&&((e=this.summaryOpts.rows)!=null&&e.length)?{opts:this.summaryOpts,values:this.summaryValues}:null}setSummary(e){if(e&&!Array.isArray(e.rows)){N("setSummary: summary.rows must be an array");return}this.summaryOpts=e,this.refreshSummary(),this.renderer.invalidate({header:!0,rows:!0})}refreshSummary(){var o,r;let e=this.summaryOpts;if(!((o=e==null?void 0:e.rows)!=null&&o.length)){this.summaryValues=[];return}let t=(r=e.scope)!=null?r:"filtered",n=t==="all"?this.rowModel.allNodes().map(s=>s.data):t==="selected"?this.selectedRows():this.rowModel.dataRows().map(s=>s.data);this.summaryValues=qt(e.rows,n,s=>{var a;return(a=this.columns.getNode(s))==null?void 0:a.def})}dataColumns(){return this.columns.displayed().filter(e=>!T(e.id))}setRange(e){let t=null;if(e&&this.options.rangeSelection!==!1){let o=this.rowModel.getRowCount(),r=s=>!T(s.colId)&&!!this.columns.getColumn(s.colId)&&s.rowIndex>=0&&s.rowIndex<o;r(e.start)&&r(e.end)&&(t={start:{...e.start},end:{...e.end}})}let n=this.store.state.range;JSON.stringify(n)!==JSON.stringify(t)&&(this.store.set({range:t}),this.events.emit("rangeChange",{range:t&&{start:{...t.start},end:{...t.end}}}))}rangeBounds(){let e=this.store.state.range;if(!e)return null;let t=this.columns.getColumn(e.start.colId),n=this.columns.getColumn(e.end.colId);return!t||!n?null:me({start:{rowIndex:e.start.rowIndex,colIndex:t.index},end:{rowIndex:e.end.rowIndex,colIndex:n.index}})}rangeContains(e,t){let n=this.rangeBounds(),o=this.columns.getColumn(t);return!!n&&!!o&&Qt(n,e,o.index)}selectAllCells(){let e=this.dataColumns(),t=this.rowModel.getRowCount();!e.length||!t||(this.store.state.focus||this.setFocus(0,e[0].id),this.setRange({start:{rowIndex:0,colId:e[0].id},end:{rowIndex:t-1,colId:e[e.length-1].id}}))}selectionTSV(e,t=!1){let n=this.store.state.locale.code,o=this.columns.displayed(),r=t?null:this.rangeBounds(),s=t,a,d;if(r){a=[];for(let l=r.r1;l<=r.r2;l++){let u=this.rowModel.getRow(l);u.kind||a.push(u.data)}d=o.slice(r.c1,r.c2+1).filter(l=>!T(l.id))}else if(s){let l=this.store.state.selected;a=this.rowModel.dataRows().filter(u=>l.has(u.id)).map(u=>u.data),d=this.dataColumns()}else{let l=this.store.state.focus,u=l&&this.columns.getColumn(l.colId),h=l&&this.rowModel.getRow(l.rowIndex);if(!u||!h||h.kind||T(u.id))return"";a=[h.data],d=[u]}let c=a.map(l=>d.map(u=>He(u.def,B(u.def,l),n)));return e&&c.unshift(d.map(l=>{var u,h;return(h=(u=l.def.header)!=null?u:l.def.field)!=null?h:l.id})),Yt(c)}copyToClipboard(e,t=!1){var o,r,s;let n=this.selectionTSV(e,t);if(n&&typeof navigator!="undefined"&&((o=navigator.clipboard)!=null&&o.writeText))try{(s=(r=navigator.clipboard.writeText(n))==null?void 0:r.catch)==null||s.call(r,()=>{})}catch{}return n}pasteText(e){var x;let t=Zt(e),n={changed:0,skipped:0};if(!t.length)return n;let o=this.columns.displayed(),r=this.rowModel.getRowCount(),s=this.rangeBounds(),a=this.store.state.focus,d=a&&this.columns.getColumn(a.colId),c,l;if(s)c=s.r1,l=s.c1;else if(a&&d&&!T(d.id))c=a.rowIndex,l=d.index;else return n;let u=[],h=t.length===1&&t[0].length===1,p=h&&s?s.r2-s.r1+1:t.length,m=h&&s?s.c2-s.c1+1:Math.max(...t.map(w=>w.length));for(let w=0;w<p;w++){let y=c+w;if(y>=r)break;let M=this.rowModel.getRow(y);if(!M.kind)for(let R=0;R<m;R++){let f=o[l+R];if(!f)break;if(T(f.id))continue;let g=h&&s?t[0][0]:(x=t[w])==null?void 0:x[R];if(g===void 0)continue;let v=f.def;if(!v.editable||!v.field){n.skipped++;continue}let C=M.data[v.field],k=this.acceptText(v,M.data,g,C);if(!k.ok){n.skipped++;continue}this.writeCell(u,M.data,v.field,f.id,y,k.value)&&n.changed++}}return this.endCellTx(u),this.events.emit("paste",{...n}),n}acceptText(e,t,n,o){var a;let r,s=e.editor;if(s&&typeof s=="object"&&s.type==="select"){let d=(a=typeof s.options=="function"?s.options(t):s.options)!=null?a:[],c=n.trim().toLowerCase(),l=d.map(u=>u!==null&&typeof u=="object"&&"value"in u?u:{value:u,label:String(u)}).find(u=>{var h;return String(u.value).toLowerCase()===c||((h=u.label)!=null?h:"").toLowerCase()===c});if(!l)return{ok:!1};r=l.value}else{let d=Be(e,n,o);if(!d.ok)return d;r=d.value}if(e.required&&F(r))return{ok:!1};if(e.validate)try{if(e.validate(r,t)!==!0)return{ok:!1}}catch{return{ok:!1}}return{ok:!0,value:r}}mergeSpans(){if(this.rowModel.server||!this.columns.displayed().some(r=>r.def.merge))return Yo;let e=this.rowModel.rows(),t=this.editVersion*1e6+this.columns.displayed().length;if(this.spanCache&&this.spanCache.rows===e&&this.spanCache.ver===t)return this.spanCache.spans;let n=new Map,o=this.columns.displayed().filter(r=>r.def.merge);if(o.length&&!e.some(r=>r.kind)){let r=e.map(s=>s.data);for(let s of o)n.set(s.id,jt(r,s.def))}return this.spanCache={rows:e,ver:t,spans:n},n}rangeAggregates(){let e=this.rangeBounds();if(!e)return null;let t=this.columns.displayed().slice(e.c1,e.c2+1).filter(o=>!T(o.id)),n={cells:0,count:0,numbers:0,sum:0,min:1/0,max:-1/0};for(let o=e.r1;o<=e.r2;o++){let r=this.rowModel.getRow(o);if(!r||r.kind)continue;let s=r.data;for(let a of t){n.cells++;let d=B(a.def,s);if(!F(d)&&(n.count++,typeof d=="number"||a.def.type==="number"&&!Number.isNaN(Number(d)))){let c=Number(d);n.numbers++,n.sum+=c,c<n.min&&(n.min=c),c>n.max&&(n.max=c)}}}return n}fillRange(e){var u;let t=(u=this.rangeBounds())!=null?u:(()=>{let h=this.store.state.focus,p=h&&this.columns.getColumn(h.colId);return h&&p&&!T(p.id)?{r1:h.rowIndex,r2:h.rowIndex,c1:p.index,c2:p.index}:null})(),n=this.columns.getColumn(e.start.colId),o=this.columns.getColumn(e.end.colId);if(!t||!n||!o)return;let r=me({start:{rowIndex:e.start.rowIndex,colIndex:n.index},end:{rowIndex:e.end.rowIndex,colIndex:o.index}}),s=this.rowModel.getRowCount();r.r1=Math.max(0,r.r1),r.r2=Math.min(s-1,r.r2);let a=this.columns.displayed(),d=[],c=(h,p,m)=>{let x=a[p],w=this.rowModel.getRow(h),y=x==null?void 0:x.def;if(!(!w||w.kind||!(y!=null&&y.editable)||!y.field||T(x.id))&&!(y.required&&F(m))){try{if(y.validate&&y.validate(m,w.data)!==!0)return}catch{return}this.writeCell(d,w.data,y.field,x.id,h,m)}},l=(h,p)=>B(a[p].def,this.rowModel.getRow(h).data);if(r.r1<t.r1||r.r2>t.r2)for(let h=t.c1;h<=t.c2;h++){let p=[],m=[];for(let x=t.r1;x<=t.r2;x++)p.push(l(x,h));for(let x=t.r2;x>=t.r1;x--)m.push(l(x,h));pe(p,r.r2-t.r2).forEach((x,w)=>c(t.r2+1+w,h,x)),pe(m,t.r1-r.r1).forEach((x,w)=>c(t.r1-1-w,h,x))}else if(r.c1<t.c1||r.c2>t.c2)for(let h=t.r1;h<=t.r2;h++){let p=[],m=[];for(let x=t.c1;x<=t.c2;x++)p.push(l(h,x));for(let x=t.c2;x>=t.c1;x--)m.push(l(h,x));pe(p,r.c2-t.c2).forEach((x,w)=>c(h,t.c2+1+w,x)),pe(m,t.c1-r.c1).forEach((x,w)=>c(h,t.c1-1-w,x))}else return;this.endCellTx(d),this.setRange({start:{rowIndex:r.r1,colId:a[r.c1].id},end:{rowIndex:r.r2,colId:a[r.c2].id}})}setPinnedRows(e){e.top&&(this.pinnedRows.top=oe(e.top)),e.bottom&&(this.pinnedRows.bottom=oe(e.bottom)),this.renderer.invalidate({rows:!0})}writeCell(e,t,n,o,r,s){let a=t[n];return Object.is(a,s)?!1:(this.tracker.beforeChange(t),t[n]=s,e.push({row:t,field:n,colId:o,oldValue:a,newValue:s}),this.events.emit("cellValueChanged",{row:t,rowIndex:r,colId:o,oldValue:a,newValue:s}),!0)}endCellTx(e){if(!e.length)return;let t=(n,o)=>{for(let r of n){let s=r.row[r.field];r.row[r.field]=r[o],this.events.emit("cellValueChanged",{row:r.row,rowIndex:this.rowModel.indexOfId(this.rowModel.idOf(r.row)),colId:r.colId,oldValue:s,newValue:r[o]})}this.afterDataEdit()};this.history.push({undo:()=>t([...e].reverse(),"oldValue"),redo:()=>t(e,"newValue")}),this.afterDataEdit()}afterDataEdit(){this.editVersion++,this.refreshSummary(),this.renderer.invalidate({rows:!0})}applyEdit(e,t,n){var a;let o=this.rowModel.getRow(e),r=(a=this.columns.getColumn(t))==null?void 0:a.def;if(!o||!(r!=null&&r.field))return;let s=[];this.writeCell(s,o.data,r.field,t,e,n),this.endCellTx(s)}clearCells(){var a,d;let e=this.columns.displayed(),t=this.rangeBounds(),n=this.store.state.focus,o=n?(a=this.columns.getColumn(n.colId))==null?void 0:a.index:void 0,r=t!=null?t:n&&o!==void 0?{r1:n.rowIndex,r2:n.rowIndex,c1:o,c2:o}:null;if(!r)return;let s=[];for(let c=r.r1;c<=r.r2;c++){let l=this.rowModel.getRow(c);for(let u=r.c1;u<=r.c2;u++){let h=(d=e[u])==null?void 0:d.def;l&&!l.kind&&(h!=null&&h.editable)&&h.field&&this.writeCell(s,l.data,h.field,e[u].id,c,null)}}this.endCellTx(s)}replaceData(e){this.store.set({data:e});let t=new Set(this.rowModel.allNodes().map(s=>s.id)),n=this.store.state.selected;[...n].some(s=>!t.has(s))&&this.setSelected(new Set([...n].filter(s=>t.has(s))));let o=this.rowModel.getRowCount(),r=this.store.state.focus;r&&r.rowIndex>=o&&this.store.set({focus:o?{...r,rowIndex:o-1}:null})}addRows(e,t,n=!0){if(this.clientOnly("addRows"))return[];let o=oe(Array.isArray(e)?e:[]);if(!o.length)return[];let r=[...this.store.state.data],s=t===void 0?r.length:Math.max(0,Math.min(r.length,t));r.splice(s,0,...o);for(let a of o)this.tracker.created.add(a);return this.replaceData(r),n&&this.history.push({undo:()=>this.removeRows(o,!1),redo:()=>this.addRows(o,s,!1)}),this.events.emit("rowsAdded",{rows:[...o]}),o}removeRows(e,t=!0){if(this.clientOnly("removeRows"))return[];let n=this.store.state.data,o=typeof e=="function"?e:(d=>c=>d.has(c))(new Set(e)),r=[];if(n.forEach((d,c)=>{let l=!1;try{l=!!o(d)}catch{l=!1}l&&r.push({row:d,index:c})}),!r.length)return[];let s=new Set(r.map(d=>d.row)),a=new Set(r.filter(d=>this.tracker.created.has(d.row)).map(d=>d.row));for(let{row:d,index:c}of r)a.has(d)?this.tracker.created.delete(d):this.tracker.deleted.set(d,c);return this.replaceData(n.filter(d=>!s.has(d))),t&&this.history.push({undo:()=>{let d=[...this.store.state.data];for(let{row:c,index:l}of r)d.splice(Math.min(l,d.length),0,c),this.tracker.deleted.delete(c),a.has(c)&&this.tracker.created.add(c);this.replaceData(d)},redo:()=>this.removeRows([...s],!1)}),this.events.emit("rowsRemoved",{rows:r.map(d=>d.row)}),r.map(d=>d.row)}trackedFields(){let e=[],t=n=>{for(let o of n)o.children?t(o.children):o.def.field&&!T(o.id)&&e.push({field:o.def.field,colId:o.id})};return t(this.columns.roots()),e}getChanges(){let e=this.trackedFields(),t=[];for(let[n,o]of this.tracker.originals)if(!this.tracker.deleted.has(n))for(let r of this.tracker.diff(n,e.map(s=>s.field)))t.push({row:n,colId:e.find(s=>s.field===r).colId,oldValue:o[r],newValue:n[r]});return t}getModifiedRows(){let e=this.trackedFields().map(n=>n.field),t=this.store.state.data;return{created:t.filter(n=>this.tracker.created.has(n)),updated:t.filter(n=>this.tracker.originals.has(n)&&this.tracker.diff(n,e).length>0),deleted:[...this.tracker.deleted.keys()]}}hasChanges(){let e=this.getModifiedRows();return e.created.length+e.updated.length+e.deleted.length>0}commitChanges(){this.tracker.reset(),this.renderer.invalidate({rows:!0})}revertChanges(){this.editor.cancel();for(let[n,o]of this.tracker.originals)Object.assign(n,o);let e=this.store.state.data.filter(n=>!this.tracker.created.has(n)),t=[...this.tracker.deleted.entries()].sort((n,o)=>n[1]-o[1]);e=[...e];for(let[n,o]of t)e.splice(Math.min(o,e.length),0,n);this.tracker.reset(),this.history.clear(),this.replaceData(e),this.afterDataEdit()}undo(){this.editor.cancel(),this.history.undo()}redo(){this.editor.cancel(),this.history.redo()}toast(e){let t=b("div","fg-toast",{role:"status"});t.textContent=e,this.renderer.root.append(t),setTimeout(()=>t.remove(),3500)}refreshChoosers(){var e;this.chooser.refresh(),(e=this.sideBar)==null||e.refresh()}setColumnsVisible(e,t){let n=[];for(let o of e){let r=this.columns.getNode(o);!r||r.children||r.hide===!t||(this.columns.setHide(o,!t),n.push(o))}if(n.length){this.columnsChanged();for(let o of n)this.events.emit("columnVisible",{colId:o,visible:t})}}autoSize(e){var d,c;let t=(e?e.map(l=>this.columns.getColumn(l)):this.columns.displayed()).filter(l=>!!l&&Re(l.def)),{first:n,last:o}=this.renderer.renderedRange(),r=this.store.state.locale.code,s=66,a=24;for(let l of t){let u=this.renderer.measureText((c=(d=l.def.header)!=null?d:l.def.field)!=null?c:"",!0)+s,h=V(l.def,r);for(let m=n;m<=o;m++){let x=this.rowModel.getRow(m);x&&(u=Math.max(u,this.renderer.measureText(h(B(l.def,x.data)),!1)+a))}let p=this.columns.setWidth(l.id,Math.ceil(u));this.events.emit("columnResize",{colId:l.id,width:p})}this.layoutChanged()}resetColumns(){this.columns.reset(),this.columnsChanged()}setSort(e){let t=e.filter(n=>{let o=this.columns.getNode(n.colId);return!o||o.children?(N(`setSort: unknown column "${n.colId}"`),!1):n.dir==="asc"||n.dir==="desc"});this.store.set({sort:t}),this.events.emit("sortChange",{sort:[...t]})}toggleSort(e,t){let n=this.store.state.sort,o=n.find(a=>a.colId===e),r=o?o.dir==="asc"?"desc":null:"asc",s;t?r?o?s=n.map(a=>a.colId===e?{colId:e,dir:r}:a):s=[...n,{colId:e,dir:r}]:s=n.filter(a=>a.colId!==e):s=r?[{colId:e,dir:r}]:[],this.setSort(s)}setFilter(e,t){let n=this.columns.getNode(e);if(!n||n.children){N(`setFilter: unknown column "${e}"`);return}let o={...this.store.state.filters};t?o[e]=t:delete o[e],this.store.set({filters:o}),this.events.emit("filterChange",{filters:{...o}})}setPinned(e,t){this.columns.setPinned(e,t),this.layoutChanged()}setFocus(e,t){let n=this.store.state.focus;n&&n.rowIndex===e&&n.colId===t||(this.store.set({focus:{rowIndex:e,colId:t}}),this.events.emit("focusChange",{rowIndex:e,colId:t}))}setSelected(e,t=this.store.state.anchorId){this.store.set({selected:e,anchorId:t}),this.events.emit("selectionChange",{selected:this.selectedRows()})}selectFromClick(e,t,n){var s,a;let o=this.options.rowSelection;if(!o||e<0||e>=this.rowModel.getRowCount()||this.rowModel.getRow(e).kind)return;let r=Ln({selected:this.store.state.selected,anchorIndex:this.anchorIndex(),mode:o,index:e,idAt:d=>this.rowModel.getRow(d).id,toggle:t,range:n});if(this.rowModel.rows()!==this.rowModel.dataRows())for(let d of r.selected){if(this.store.state.selected.has(d))continue;let c=this.rowModel.indexOfId(d);c>=0&&this.rowModel.getRow(c).kind&&r.selected.delete(d)}this.setSelected(r.selected,(a=(s=this.rowModel.getRow(r.anchorIndex))==null?void 0:s.id)!=null?a:null)}anchorIndex(){let e=this.store.state.anchorId;if(e==null)return null;let t=this.rowModel.indexOfId(e);return t<0?null:t}toggleSelectAll(){let e=this.rowModel.dataRows(),t=this.store.state.selected,n=e.length>0&&e.every(r=>t.has(r.id)),o=new Set(t);for(let r of e)n?o.delete(r.id):o.add(r.id);this.setSelected(o)}selectedRows(){let e=this.store.state.selected;return e.size?this.rowModel.allNodes().filter(t=>e.has(t.id)).map(t=>t.data):[]}withSelect(e){let t=[];return this.options.rowDrag&&t.push(Nt),this.options.rowSelection&&t.push(At),[...t,...e]}setData(e){if(this.clientOnly("setData"))return;if(!Array.isArray(e)){N("setData: rows must be an array");return}this.editor.cancel(),this.tracker.reset(),this.history.clear(),this.detailOpen.clear(),this.renderer.dropDetail(),this.store.set({data:oe(e)});let t=this.store.state.selected;if(t.size)if(this.options.getRowId){let r=new Set(this.rowModel.allNodes().map(a=>a.id)),s=new Set([...t].filter(a=>r.has(a)));s.size!==t.size&&this.setSelected(s)}else this.setSelected(new Set,null);let n=this.rowModel.getRowCount(),o=this.store.state.focus;o&&o.rowIndex>=n&&this.store.set({focus:n?{...o,rowIndex:n-1}:null})}setColumns(e){var o;if(!Array.isArray(e)){N("setColumns: columns must be an array");return}if(this.menu.close(),this.sourceDefs=e,this.pivotCfg){this.rebuildPivot();return}this.columns.setDefs(this.withSelect(e));let t=r=>!!this.columns.getNode(r),n=this.groupBy.filter(t);n.length!==this.groupBy.length&&(this.groupBy=n,(o=this.groupPanel)==null||o.refresh(),this.events.emit("groupChange",{groupBy:[...n]})),this.store.set({sort:this.store.state.sort.filter(r=>t(r.colId)),filters:Object.fromEntries(Object.entries(this.store.state.filters).filter(([r])=>t(r))),focus:null}),this.columnsChanged()}onChange(e){var o,r,s,a;let t=(...d)=>d.some(c=>e.includes(c));this.pivotCfg&&t("data","locale")&&this.rebuildPivot(!1),t("locale")&&(this.menu.close(),this.chooser.close(),(o=this.sideBar)==null||o.refresh(),this.rowModel.invalidate());let n=t("sort","filters","quickFilter")&&this.page!==0;n&&(this.page=0),t("data","sort","filters","quickFilter","locale")&&this.updateRows(),n&&this.emitPage(),t("data","sort","filters","quickFilter")&&this.store.state.range&&this.setRange(null),t("data","sort","filters","quickFilter","locale")&&this.finder.refresh(),(t("data","filters","quickFilter","locale")||t("selected")&&((r=this.summaryOpts)==null?void 0:r.scope)==="selected")&&this.refreshSummary(),t("locale")&&((s=this.groupPanel)==null||s.refresh()),t("filters")&&((a=this.sideBar)==null||a.refresh()),t("theme")&&this.renderer.applyTheme(),this.renderer.invalidate({header:t("sort","filters","quickFilter","locale","selected","data"),rows:t("data","sort","filters","quickFilter","locale")})}createApi(){let e=t=>((...n)=>{if(this.destroyed){N("API called after destroy()");return}return t(...n)});return{setData:e(t=>this.setData(t)),getData:e(()=>this.store.state.data),setColumns:e(t=>this.setColumns(t)),getColumnState:e(()=>this.columns.getState()),applyColumnState:e(t=>{this.columns.applyState(t),this.columnsChanged()}),setSort:e(t=>this.setSort(t)),getSort:e(()=>[...this.store.state.sort]),setFilter:e((t,n)=>this.setFilter(t,n)),getFilterModel:e(()=>({...this.store.state.filters})),setQuickFilter:e(t=>this.store.set({quickFilter:t!=null?t:""})),getSelectedRows:e(()=>this.selectedRows()),selectAll:e(()=>this.setSelected(new Set([...this.store.state.selected,...this.rowModel.dataRows().map(t=>t.id)]))),deselectAll:e(()=>this.setSelected(new Set,null)),getDisplayedRowCount:e(()=>this.rowModel.getRowCount()),scrollToRow:e(t=>this.renderer.scrollToRow(t)),setTheme:e(t=>this.store.set({theme:t})),setLocale:e(t=>this.store.set({locale:he(t)})),setFont:e(t=>this.setFont(t)),setColumnVisible:e((t,n)=>this.setColumnsVisible([t],n)),autoSizeColumns:e(t=>this.autoSize(t)),resetColumnState:e(()=>this.resetColumns()),openColumnChooser:e(()=>this.chooser.open()),closeColumnChooser:e(()=>this.chooser.close()),toggleSideBar:e((t,n)=>{var o;return(o=this.sideBar)==null?void 0:o.toggle(t,n)}),setSummary:e(t=>this.setSummary(t)),getSummaryValues:e(()=>this.summaryValues.map(t=>({...t}))),getRange:e(()=>{let t=this.store.state.range;return t&&{start:{...t.start},end:{...t.end}}}),setRange:e(t=>this.setRange(t)),copySelection:e(t=>this.copyToClipboard(!!(t!=null&&t.headers),!!(t!=null&&t.rows))),pasteText:e(t=>this.pasteText(t)),startEdit:e((t,n)=>this.editor.start(t,n)),stopEdit:e(t=>t?this.editor.cancel():void this.editor.commit(null)),addRows:e((t,n)=>this.addRows(t,n)),removeRows:e(t=>this.removeRows(t)),removeSelectedRows:e(()=>this.removeRows(this.selectedRows())),getModifiedRows:e(()=>this.getModifiedRows()),getChanges:e(()=>this.getChanges()),hasChanges:e(()=>this.hasChanges()),commitChanges:e(()=>this.commitChanges()),revertChanges:e(()=>this.revertChanges()),undo:e(()=>this.undo()),redo:e(()=>this.redo()),canUndo:e(()=>this.history.canUndo()),canRedo:e(()=>this.history.canRedo()),fillRange:e(t=>this.fillRange(t)),setPinnedRows:e(t=>this.setPinnedRows(t)),find:e(t=>this.finder.find(t)),findNext:e(()=>this.finder.next()),findPrevious:e(()=>this.finder.previous()),clearFind:e(()=>this.finder.clear()),setGroupBy:e(t=>this.setGroupBy(t)),getGroupBy:e(()=>this.getGroupBy()),setGroupExpanded:e((t,n)=>this.setGroupExpanded(t,n)),expandAll:e(()=>this.expandAll(!0)),collapseAll:e(()=>this.expandAll(!1)),setDetailExpanded:e((t,n)=>this.setDetailExpanded(t,n)),isDetailExpanded:e(t=>this.isDetailExpanded(t)),moveRow:e((t,n)=>this.moveRow(t,n)),setPage:e(t=>this.setPage(t)),getPage:e(()=>this.getPage()),getPageCount:e(()=>this.getPageCount()),setPageSize:e(t=>this.setPageSize(t)),getPageSize:e(()=>this.getPageSize()),refreshRows:e(()=>this.refreshRows()),setPivot:e(t=>this.setPivot(t)),getPivot:e(()=>this.getPivot()),createChart:e(t=>this.charts.create(t)),getCsv:e(t=>ft(this,t)),exportCsv:e((t="export.csv",n)=>mt(t,["\uFEFF",ft(this,n)],"text/csv;charset=utf-8")),getXlsx:e(t=>pt(this,t)),exportXlsx:e((t="export.xlsx",n)=>mt(t,[pt(this,n)],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")),importFile:e((t,n)=>un(this,t,n)),on:e((t,n)=>this.events.on(t,n)),destroy:()=>this.destroy()}}destroy(){if(!this.destroyed){this.destroyed=!0;for(let e of this.disposers)e();this.renderer.destroy(),this.events.clear()}}};function Pn(i,e){return new kt(i,e).api}var $n={en:j,ko:Pt,"zh-CN":$t,ja:Tt,es:It,fr:Dt,de:Lt};for(let i of Object.values($n))be(i);return On(Zo);})();
|