@freegridjs/core 0.8.1 → 1.0.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.
@@ -1,8 +1,17 @@
1
- "use strict";var FreeGrid=(()=>{var yt=Object.defineProperty;var sr=Object.getOwnPropertyDescriptor;var ir=Object.getOwnPropertyNames;var ar=Object.prototype.hasOwnProperty;var lr=(s,e)=>{for(var t in e)yt(s,t,{get:e[t],enumerable:!0})},dr=(s,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of ir(e))!ar.call(s,r)&&r!==t&&yt(s,r,{get:()=>e[r],enumerable:!(n=sr(e,r))||n.enumerable});return s};var cr=s=>dr(yt({},"__esModule",{value:!0}),s);var Ao={};lr(Ao,{createGrid:()=>rr,en:()=>Q,locales:()=>or,parseCsv:()=>at,readXlsx:()=>ut,registerLocale:()=>Ne,renderChart:()=>pt,resolveLocale:()=>Re,setLicenseKey:()=>jn,verifyLicense:()=>_t,version:()=>De,writeXlsx:()=>ct});var ur={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",duplicate:"This value is already used",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",freeBadge:"Free version",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"}},Q=ur;var Zt=new Set;function N(s){Zt.has(s)||(Zt.add(s),console.warn(`[FreeGrid] ${s}`))}var fe=new Map([["en",Q]]);function Ne(s){fe.set(s.code,s)}function Jt(s){let e=s.toLowerCase();for(let n of fe.keys())if(n.toLowerCase()===e)return n;let t=e.split("-")[0];if(t==="zh"&&fe.has("zh-CN"))return"zh-CN";for(let n of fe.keys())if(n.toLowerCase().split("-")[0]===t)return n}function hr(){var s;return typeof navigator=="undefined"?[]:(s=navigator.languages)!=null&&s.length?navigator.languages:navigator.language?[navigator.language]:[]}function fr(s){var e,t;return{...Q,...s,code:(e=s.code)!=null?e:"en",ops:{...Q.ops,...(t=s.ops)!=null?t:{}}}}function Re(s,e=hr()){if(s&&typeof s=="object")return fr(s);if(typeof s=="string"){let t=Jt(s);return t?fe.get(t):(N(`locale "${s}" is not registered \u2014 import it from "@freegridjs/core/locales/${s}" and pass the pack (or call registerLocale). Falling back to "en".`),Q)}for(let t of e){let n=Jt(t);if(n)return fe.get(n)}return Q}var pr={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",duplicate:"Dieser Wert wird bereits verwendet",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",freeBadge:"Kostenlose Version",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"}},Qt=pr;var gr={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",duplicate:"Este valor ya est\xE1 en uso",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",freeBadge:"Versi\xF3n gratuita",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"}},en=gr;var mr={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",duplicate:"Cette valeur est d\xE9j\xE0 utilis\xE9e",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",freeBadge:"Version gratuite",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"}},tn=mr;var wr={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",duplicate:"\u3053\u306E\u5024\u306F\u3059\u3067\u306B\u4F7F\u308F\u308C\u3066\u3044\u307E\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",freeBadge:"\u7121\u6599\u7248\u3092\u4F7F\u7528\u4E2D",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"}},nn=wr;var vr={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",duplicate:"\uC774\uBBF8 \uC0AC\uC6A9 \uC911\uC778 \uAC12\uC785\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",freeBadge:"\uBB34\uB8CC \uC0AC\uC6A9 \uC911",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"}},rn=vr;var yr={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",duplicate:"\u8BE5\u503C\u5DF2\u88AB\u4F7F\u7528",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",freeBadge:"\u514D\u8D39\u4F7F\u7528\u4E2D",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"}},on=yr;var ee="__fg_select__",sn={id:ee,header:"",width:44,minWidth:44,maxWidth:44,pinned:"left",sortable:!1,resizable:!1,filter:!1},le="__fg_drag__",an={id:le,header:"",width:28,minWidth:28,maxWidth:28,pinned:"left",sortable:!1,resizable:!1,filter:!1,chooser:!1},P=s=>s===ee||s===le,br=120,xr=40,Cr=["left","center","right"];function pe(s){if(P(s.id)||s.filter===!1)return null;if(s.filter)return s.filter;switch(s.type){case"number":return"number";case"date":return"date";case"boolean":return"set";default:return"text"}}function ne(s,e,t){let n=s.editable;if(typeof n!="function")return!!n;try{return!!n({value:s.valueGetter?s.valueGetter(e):s.field?e[s.field]:void 0,row:e,rowIndex:t,column:s})}catch{return!1}}var de=s=>s.id!==ee&&s.sortable!==!1,Be=s=>s.id!==ee&&s.resizable!==!1;function Fe(s,e){var r,o;let t=(r=s.minWidth)!=null?r:xr,n=(o=s.maxWidth)!=null?o:1/0;return Math.round(Math.min(n,Math.max(t,e)))}function ln(s){return s.children?1+Math.max(0,...s.children.map(ln)):1}var He=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=(o,i,a)=>{var f,p,x,M,v;let l=Array.isArray(o.children)&&o.children.length>0,d=t++,c=(f=o.id)!=null?f:l?`g${d}`:o.field;if(c||(c=`c${d}`,N(`column #${d} has neither "field" nor "id"; using "${c}"`)),this.byId.has(c)){let h=1;for(;this.byId.has(`${c}_${h}`);)h++;N(`duplicate column id "${c}"; renamed to "${c}_${h}"`),c=`${c}_${h}`}let u={id:c,def:o,parent:i,children:null,depth:a,width:Fe(o,(p=o.width)!=null?p:br),flex:o.flex&&o.flex>0?o.flex:null,hide:(x=o.hide)!=null?x:!1,pinned:(v=(M=o.pinned)!=null?M:i==null?void 0:i.pinned)!=null?v:null};return this.byId.set(c,u),l&&(u.children=r(o.children).map(h=>n(h,u,a+1))),u},r=o=>{let i=o.filter(a=>a!==null&&typeof a=="object");return i.length!==o.length&&N("columns contain entries that are not objects; they were skipped"),i};this.roots_=r(e).map(o=>n(o,null,0)),this.depth=Math.max(1,...this.roots_.map(ln)),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=Fe(n.def,t),this.relayout(),n.width)}setPinned(e,t){let n=this.byId.get(e);!n||n.children||P(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),r=n.findIndex(i=>i.id===e);if(r<0)return;let[o]=n.splice(r,1);n.splice(Math.max(0,Math.min(n.length,t)),0,o),this.relayout()}headerCells(e){var r,o,i;let t=[],n=new Map;for(let a of this.layout[e]){let l=[];for(let d=a.node.parent;d;d=d.parent)l.unshift(d);for(let d of l){let c=n.get(d.id);if(c){c.width+=a.width;continue}let u={id:d.id,label:(r=d.def.header)!=null?r:"",isGroup:!0,column:null,node:d,row:d.depth,rowSpan:1,left:a.left,width:a.width};n.set(d.id,u),t.push(u)}t.push({id:a.id,label:(i=(o=a.def.header)!=null?o:a.def.field)!=null?i:"",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=>!P(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((o,i)=>{t.set(o.colId,i);let a=this.byId.get(o.colId);!a||a.children||P(o.colId)||(a.flex=null,a.width=Fe(a.def,o.width),a.hide=o.hide,a.pinned=o.pinned)}),t.set(le,-2),t.set(ee,-1);let n=o=>{var i;return o.children?Math.min(1/0,...o.children.map(n)):(i=t.get(o.id))!=null?i:1/0},r=o=>{let i=o.map((a,l)=>({n:a,i:l,r:n(a)}));i.sort((a,l)=>a.r===l.r?a.i-l.i:a.r-l.r),o.splice(0,o.length,...i.map(a=>a.n));for(let a of o)a.children&&r(a.children)};r(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 l;let e=this.leafNodes().filter(d=>!d.hide),t=e.reduce((d,c)=>d+(c.flex?0:c.width),0),n=e.reduce((d,c)=>{var u;return d+((u=c.flex)!=null?u:0)},0),r=Math.max(0,this.containerWidth-t),o=d=>d.flex?Fe(d.def,Math.floor(r*d.flex/n)):d.width,i={left:[],center:[],right:[]};this.leafById=new Map;let a=0;for(let d of Cr){let c=0;for(let u of e){if(((l=u.pinned)!=null?l:"center")!==d)continue;let f={id:u.id,def:u.def,node:u,width:o(u),region:d,left:c,index:a++};c+=f.width,i[d].push(f),this.leafById.set(u.id,f)}}this.layout=i}};function O(s){return s==null||typeof s=="string"&&s.trim()===""||typeof s=="number"&&Number.isNaN(s)}var dn=s=>String(s).padStart(2,"0");function Y(s){if(O(s))return null;if(typeof s=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(s))return s;let e=s instanceof Date?s:new Date(s);return Number.isNaN(e.getTime())?null:`${e.getFullYear()}-${dn(e.getMonth()+1)}-${dn(e.getDate())}`}function Z(s){var e;return O(s)?"":s instanceof Date?(e=Y(s))!=null?e:"":String(s)}var se=()=>!0;function cn(s){var e;switch(s.type){case"text":{let t=((e=s.value)!=null?e:"").toLowerCase(),n=r=>O(r)?"":String(r).toLowerCase();switch(s.op){case"contains":return r=>n(r).includes(t);case"equals":return r=>n(r)===t;case"notEquals":return r=>n(r)!==t;case"startsWith":return r=>n(r).startsWith(t);case"endsWith":return r=>n(r).endsWith(t);case"blank":return O;case"notBlank":return r=>!O(r)}return se}case"number":{let t=r=>O(r)?NaN:Number(r);if(s.op==="blank")return r=>Number.isNaN(t(r));if(s.op==="notBlank")return r=>!Number.isNaN(t(r));let n=s.value;if(n==null||Number.isNaN(n))return se;switch(s.op){case"eq":return r=>t(r)===n;case"ne":return r=>t(r)!==n;case"lt":return r=>t(r)<n;case"lte":return r=>t(r)<=n;case"gt":return r=>t(r)>n;case"gte":return r=>t(r)>=n;case"between":{let r=s.valueTo;if(r==null||Number.isNaN(r))return se;let o=Math.min(n,r),i=Math.max(n,r);return a=>{let l=t(a);return l>=o&&l<=i}}}return se}case"date":{if(s.op==="blank")return r=>Y(r)===null;if(s.op==="notBlank")return r=>Y(r)!==null;let t=s.value;if(!t)return se;let n=r=>Y(r);switch(s.op){case"equals":return r=>n(r)===t;case"before":return r=>{let o=n(r);return o!==null&&o<t};case"after":return r=>{let o=n(r);return o!==null&&o>t};case"between":{let r=s.valueTo;if(!r)return se;let o=t<r?t:r,i=t<r?r:t;return a=>{let l=n(a);return l!==null&&l>=o&&l<=i}}}return se}case"set":{let t=new Set(s.values.map(Z));return n=>t.has(Z(n))}}return se}function un(s){let e=s.trim().toLowerCase();return e?e.split(/\s+/):[]}function hn(s,e){return s.every(t=>e.includes(t))}var fn=new Map;function Rr(s){var r;if(s==="integer")return{maximumFractionDigits:0};if(s==="percent")return{style:"percent"};if(s.startsWith("currency:"))return{style:"currency",currency:s.slice(9)};if(!/^[#0,]*(\.[#0]+)?%?$/.test(s)||!/[#0]/.test(s))return null;let e=s.endsWith("%"),t=e?s.slice(0,-1):s,n=t.includes(".")?t.split(".")[1]:"";return{useGrouping:t.includes(","),minimumFractionDigits:((r=n.match(/0/g))!=null?r:[]).length,maximumFractionDigits:n.length,...e?{style:"percent"}:{}}}var Oe={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(s){if(O(s))return null;if(s instanceof Date)return Number.isNaN(s.getTime())?null:s;if(typeof s=="string"){let t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(s);if(t)return new Date(Number(t[1]),Number(t[2])-1,Number(t[3]))}if(typeof s!="string"&&typeof s!="number")return null;let e=new Date(s);return Number.isNaN(e.getTime())?null:e}function kr(s,e,t){var n;switch(s){case"number":{let r={};if(typeof e=="string"){let i=Rr(e);i||N(`unknown number format "${e}"`),r=i!=null?i:{}}else e&&(r=e);let o=new Intl.NumberFormat(t,r);return i=>{if(O(i))return"";let a=typeof i=="number"?i:Number(i);return Number.isNaN(a)?String(i):o.format(a)}}case"date":{if(t.toLowerCase().startsWith("ko")&&(e===void 0||e==="date"||e==="datetime")){let i=l=>String(l).padStart(2,"0"),a=e==="datetime";return l=>{let d=te(l);if(!d)return O(l)?"":String(l);let c=`${d.getFullYear()}-${i(d.getMonth()+1)}-${i(d.getDate())}`;return a?`${c} ${i(d.getHours())}:${i(d.getMinutes())}`:c}}let r=Oe.date;typeof e=="string"?(Oe[e]||N(`unknown date format "${e}"`),r=(n=Oe[e])!=null?n:Oe.date):e&&(r=e);let o=new Intl.DateTimeFormat(t,r);return i=>{let a=te(i);return a?o.format(a):O(i)?"":String(i)}}case"boolean":return r=>r===!0?"\u2713":r===!1?"\u2717":"";default:return r=>O(r)?"":r instanceof Date?r.toISOString():String(r)}}function K(s,e){var o;let t=s.format,n=`${e}|${(o=s.type)!=null?o:"text"}|${typeof t=="string"?t:JSON.stringify(t!=null?t:null)}`,r=fn.get(n);return r||(r=kr(s.type,t,e),fn.set(n,r)),r}var _=class extends Error{constructor(t){super(t);this.code=t}};function Sr(s){let e=[],t=0;for(;t<s.length;){let n=s[t];if(/\s/.test(n))t++;else if(/[0-9.]/.test(n)){let r=/^(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?/i.exec(s.slice(t));if(!r)throw new _("#ERROR!");e.push({t:"num",v:Number(r[0])}),t+=r[0].length}else if(n==='"'){let r="";for(t++;;){if(t>=s.length)throw new _("#ERROR!");if(s[t]==='"'){if(s[t+1]==='"'){r+='"',t+=2;continue}t++;break}r+=s[t++]}e.push({t:"str",v:r})}else if(n==="["){let r=s.indexOf("]",t);if(r<0)throw new _("#ERROR!");e.push({t:"id",v:s.slice(t+1,r)}),t=r+1}else if(/[A-Za-z_À-￿]/.test(n)){let r=/^[A-Za-z_À-￿][\wÀ-￿]*/.exec(s.slice(t));e.push({t:"id",v:r[0]}),t+=r[0].length}else{let r=s.slice(t,t+2);if(r==="<>"||r==="<="||r===">=")e.push({t:"op",v:r}),t+=2;else if("+-*/%^&=<>(),".includes(n))e.push({t:"op",v:n}),t++;else throw new _("#ERROR!")}}return e}var ze=s=>s==null||s==="";function q(s){if(typeof s=="number")return s;if(typeof s=="boolean")return s?1:0;if(ze(s))return 0;if(typeof s=="string"&&s.trim()!==""&&Number.isFinite(Number(s)))return Number(s);throw new _("#VALUE!")}var Ge=s=>ze(s)?"":typeof s=="boolean"?s?"TRUE":"FALSE":String(s);function Mr(s,e){let t=Math.trunc(e),n=+`${Math.round(+`${Math.abs(s)}e${t}`)}e${-t}`;return s<0?-n:n}var pn={ROUND:s=>Mr(q(s[0]),s.length>1?q(s[1]):0),ABS:s=>Math.abs(q(s[0])),MIN:s=>s.length?Math.min(...s.map(q)):0,MAX:s=>s.length?Math.max(...s.map(q)):0,SUM:s=>s.reduce((e,t)=>e+q(t),0),AVG:s=>{if(!s.length)throw new _("#DIV/0!");return s.reduce((e,t)=>e+q(t),0)/s.length}};function Er(s,e){return(typeof s=="number"||ze(s))&&(typeof e=="number"||ze(e))?q(s)-q(e):Ge(s).localeCompare(Ge(e),void 0,{sensitivity:"accent"})}var bt=class{constructor(e,t){this.tokens=e;this.resolve=t;this.i=0}parse(){let e=this.comparison();if(this.i<this.tokens.length)throw new _("#ERROR!");return e}peek(e){let t=this.tokens[this.i];return!!t&&t.t==="op"&&(e===void 0||t.v===e)}take(e){return this.peek(e)?(this.i++,!0):!1}comparison(){let e=this.concat();for(let t of["=","<>","<=",">=","<",">"])if(this.take(t)){let n=Er(e,this.concat());return t==="="?n===0:t==="<>"?n!==0:t==="<"?n<0:t===">"?n>0:t==="<="?n<=0:n>=0}return e}concat(){let e=this.additive();for(;this.take("&");)e=Ge(e)+Ge(this.additive());return e}additive(){let e=this.multiplicative();for(;;)if(this.take("+"))e=q(e)+q(this.multiplicative());else if(this.take("-"))e=q(e)-q(this.multiplicative());else return e}multiplicative(){let e=this.unary();for(;;)if(this.take("*"))e=q(e)*q(this.unary());else if(this.take("/")||this.take("%")){let t=this.tokens[this.i-1].v,n=q(this.unary());if(n===0)throw new _("#DIV/0!");e=t==="/"?q(e)/n:q(e)%n}else return e}unary(){return this.take("-")?-q(this.unary()):this.take("+")?q(this.unary()):this.power()}power(){let e=this.primary();return this.take("^")?q(e)**q(this.unary()):e}primary(){let e=this.tokens[this.i++];if(!e)throw new _("#ERROR!");if(e.t==="num"||e.t==="str")return e.v;if(e.t==="op"){if(e.v!=="(")throw new _("#ERROR!");let n=this.comparison();if(!this.take(")"))throw new _("#ERROR!");return n}let t=e.v;if(this.peek("(")){this.i++;let n=[];if(!this.take(")")){do n.push(this.comparison());while(this.take(","));if(!this.take(")"))throw new _("#ERROR!")}let r=t.toUpperCase();if(r==="IF"){if(n.length<2)throw new _("#ERROR!");return(typeof n[0]=="boolean"?n[0]:q(n[0])!==0)?n[1]:n.length>2?n[2]:!1}let o=Object.hasOwn(pn,r)?pn[r]:void 0;if(!o)throw new _("#NAME?");return o(n)}return/^(true|false)$/i.test(t)?t.toLowerCase()==="true":this.resolve(t)}},Lr=32;function xt(s,e,t=new Set,n=0){try{let r=i=>{if(!e||!Object.hasOwn(e,i))throw new _("#REF!");let a=e[i];if(typeof a=="string"&&a.startsWith("=")){if(t.has(i)||n>=Lr)throw new _("#CYCLE!");let l=xt(a,e,new Set([...t,i]),n+1);if(typeof l=="string"&&/^#[A-Z/0]+[!?]$/.test(l))throw new _(l);return l}return a},o=new bt(Sr(s.slice(1)),r).parse();return typeof o=="number"&&!Number.isFinite(o)?"#NUM!":o}catch(r){return r instanceof _?r.code:"#ERROR!"}}var ge=s=>typeof s=="string"&&s.length>1&&s.startsWith("=");function B(s,e){var n;if(s.valueGetter)try{return s.valueGetter(e)}catch{N(`valueGetter of column "${(n=s.id)!=null?n:s.field}" threw; rendering an empty cell`);return}if(s.field==null)return;let t=e[s.field];return s.formulas&&ge(t)?xt(t,e,new Set([s.field])):t}function Ct(s){let e=[];for(let t of s){if(O(t)||t instanceof Date)continue;let n=typeof t=="number"?t:Number(t);Number.isNaN(n)||e.push(n)}return e}function gn(s,e){let t=s.filter(r=>r instanceof Date&&!Number.isNaN(r.getTime()));if(t.length)return t.reduce((r,o)=>(e?o>r:o<r)?o:r);let n=Ct(s);return n.length?e?Math.max(...n):Math.min(...n):null}function me(s,e,t){if(typeof s=="function")return s(e,t);switch(s){case"sum":return Ct(e).reduce((n,r)=>n+r,0);case"avg":{let n=Ct(e);return n.length?n.reduce((r,o)=>r+o,0)/n.length:null}case"min":return gn(e,!1);case"max":return gn(e,!0);case"count":return t.length}return null}function Rt(s){return typeof s=="object"&&s!==null&&"agg"in s?s:{agg:s}}function mn(s,e,t){let n=new Map,r=(o,i)=>{let a=n.get(o);return a||n.set(o,a=e.map(l=>B(i,l))),a};return s.map(o=>{var a;let i={};for(let[l,d]of Object.entries((a=o.columns)!=null?a:{})){let c=t(l);c&&(i[l]=me(Rt(d).agg,r(l,c),e))}return i})}function ke(s,e,t,n,r){if(!s)return 1;let o=1;try{o=Math.floor(Number(s({value:B(e,t),row:t,rowIndex:n})))}catch{o=1}return Number.isFinite(o)?Math.max(1,Math.min(r,o)):1}function Ve(s,e){let t=s.length,n=new Int32Array(t),r=new Int32Array(t);if(e.rowSpan){for(let a=0;a<t;){let l=ke(e.rowSpan,e,s[a],a,t-a);for(let d=a;d<a+l;d++)n[d]=a,r[d]=a+l-1;a+=l}return{start:n,end:r}}let o=typeof e.merge=="function"?(a,l)=>{try{return!!e.merge(B(e,s[a]),B(e,s[l]),s[a],s[l])}catch{return!1}}:(()=>{let a=s.map(l=>{let d=B(e,l);return O(d)?null:Z(d)});return(l,d)=>a[l]!==null&&a[l]===a[d]})(),i=0;for(let a=1;a<=t;a++)if(!(a<t&&o(a-1,a))){for(let l=i;l<a;l++)n[l]=i,r[l]=a-1;i=a}return{start:n,end:r}}function wn(s,e,t,n,r=4){if(n<=0||t<=0)return{first:0,last:-1};let o=Math.max(0,Math.floor(s/t)-r),i=Math.floor((s+e)/t);return{first:Math.min(o,n-1),last:Math.min(n-1,i+r)}}function Ue(s,e,t,n,r=2){let o=s.length;if(!o)return{first:0,last:-1};let i=0,a=o-1;for(;i<a;){let c=i+a>>1;s[c]+e[c]<=t?i=c+1:a=c}let l=i,d=t+n;for(a=o-1;i<a;){let c=i+a+1>>1;s[c]<d?i=c:a=c-1}return{first:Math.max(0,l-r),last:Math.min(o-1,Math.max(l,i)+r)}}function vn(s,e,t,n,r=4){if(n<=0)return{first:0,last:-1};let o=0,i=n-1;for(;o<i;){let d=o+i>>1;s[d+1]<=e?o=d+1:i=d}let a=o,l=e+t;for(i=n-1;o<i;){let d=o+i+1>>1;s[d]<l?o=d:i=d-1}return{first:Math.max(0,a-r),last:Math.min(n-1,o+r)}}var J=["left","center","right"],yn=6,Ir=8,kt=2,Dr='<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>',St='<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 Tr='<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 k(s,e="",t={}){let n=document.createElement(s);e&&(n.className=e);for(let[r,o]of Object.entries(t))n.setAttribute(r,o);return n}var qe=class{constructor(e,t,n){this.grid=t;this.opts=n;this.activeCellId="";this.idBase=`fg${Math.random().toString(36).slice(2,8)}`;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.cards=null;this.cardMode=!1;this.pagerKey="";this.offsets=null;this.details=new Map;this.firstDataId="";this.rowHeights=new Map;this.heightsVersion=0;this.groupLabelId="";this.onScroll=()=>{this.frame&&cancelAnimationFrame(this.frame),this.frame=0,this.render(),this.grid.events.emit("scroll",this.getScroll())};this.onSideWheel=e=>{e.deltaY&&(e.preventDefault(),this.scroller.scrollTop+=e.deltaY)};this.onCardClick=e=>{var l;let t=e.target,n=t.closest(".fg-card");if(!n)return;let r=Number(n.dataset.row),o=this.grid.rowModel.getRow(r);if(!o||o.kind)return;if(t.closest(".fg-card-check")){this.grid.selectFromClick(r,!0,!1),this.invalidate({rows:!0});return}let i=(l=t.closest(".fg-card-value"))==null?void 0:l.dataset.col,a=i?this.grid.columns.getColumn(i):void 0;a&&this.grid.events.emit("cellClick",{row:o.data,rowIndex:r,colId:a.id,value:B(a.def,o.data),event:e})};this.root=k("div","",{tabindex:"-1"}),this.root.addEventListener("focus",()=>this.gridEl.focus({preventScroll:!0})),this.gridEl=k("div","fg-grid",{role:"grid",tabindex:"0"}),this.headerEl=k("div","fg-header",{role:"rowgroup"}),this.bodyEl=k("div","fg-body",{role:"rowgroup"});let r=o=>({left:k("div",`${o} ${o}-left`),center:k("div",`${o} ${o}-center`),right:k("div",`${o} ${o}-right`)});this.headerPanes=r("fg-header-pane"),this.headerInners=r("fg-header-inner");for(let o of J)this.headerInners[o].setAttribute("role","row");this.bodyPanes=r("fg-body-pane"),this.canvases=r("fg-canvas");for(let o of J)this.headerPanes[o].dataset.region=o,this.bodyPanes[o].dataset.region=o,this.headerPanes[o].append(this.headerInners[o]),this.bodyPanes[o].append(this.canvases[o]),this.headerEl.append(this.headerPanes[o]),this.bodyEl.append(this.bodyPanes[o]);this.scroller=this.bodyPanes.center,this.overlay=k("div","fg-overlay",{"aria-live":"polite"}),this.main=k("div","fg-main"),this.gridEl.append(this.headerEl,this.bodyEl),this.main.append(this.gridEl,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})}get activeScroller(){var e,t;return(t=(e=this.cards)==null?void 0:e.scroller)!=null?t:this.scroller}getScroll(){let e=this.activeScroller;return{top:e.scrollTop,left:e.scrollLeft}}setScroll(e){let t=this.activeScroller;typeof(e==null?void 0:e.top)=="number"&&Number.isFinite(e.top)&&(t.scrollTop=Math.max(0,e.top)),typeof(e==null?void 0:e.left)=="number"&&Number.isFinite(e.left)&&(t.scrollLeft=Math.max(0,e.left))}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(){let e=this.grid.options.direction==="rtl";this.root.className=`fg-root fg-theme-${this.grid.store.state.theme}${e?" fg-rtl":""}${this.cardMode?" fg-card-mode":""}`,this.root.setAttribute("dir",e?"rtl":"ltr")}get rtl(){return this.grid.options.direction==="rtl"}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 C,S,E,m,R,I;let{columns:e,rowModel:t,store:n,options:r}=this.grid,{rowHeight:o,headerHeight:i}=this.opts,a=this.scroller.offsetWidth-this.scroller.clientWidth;e.setContainerWidth(Math.max(0,this.main.clientWidth-a))&&(this.headerDirty=!0,this.version++);let l=t.getRowCount(),d=!!this.grid.options.autoRowHeight&&!t.server,c=t.layout(o,this.detailHeight(),d?this.rowHeights:void 0,this.heightsVersion);if(this.offsets=c.uniform?null:c.offsets,this.firstDataId=(S=(C=e.displayed().find(b=>!P(b.id)))==null?void 0:C.id)!=null?S:"",this.groupLabelId=(m=(E=e.region("center").find(b=>!P(b.id)))==null?void 0:E.id)!=null?m:this.firstDataId,this.useCards()){this.renderCards(l),this.renderStatusBar(t.dataCount()),this.renderPager(),this.orderSections(null),this.overlay.hidden=l>0,this.overlay.textContent=l===0&&t.loading()?n.state.locale.loading:n.state.locale.noRows;return}let u=this.grid.summary(),f=u?u.opts.rows.length:0,p=(R=u==null?void 0:u.opts.position)!=null?R:"bottom",x=u?u.opts.pinned!==!1:!1;this.topOffset=u&&!x&&p==="top"?f*o:0;let M=u&&!x&&p==="bottom"?f*o:0;this.syncSummaryPane(u&&x?p:null,f*o);let v=e.depth*i;this.headerEl.style.height=`${v}px`;for(let b of J){let L=e.regionWidth(b);b!=="center"&&(this.headerPanes[b].style.width=this.bodyPanes[b].style.width=`${L}px`,this.headerPanes[b].hidden=this.bodyPanes[b].hidden=L===0),this.canvases[b].style.width=`${L}px`,this.canvases[b].style.height=`${this.rowsHeight(l)+this.topOffset+M}px`}let h=this.scroller.offsetHeight-this.scroller.clientHeight;this.bodyPanes.left.style.marginBottom=this.bodyPanes.right.style.marginBottom=`${h}px`;let y=this.gridEl;y.setAttribute("role",r.treeData||this.grid.getGroupBy().length?"treegrid":"grid"),y.setAttribute("aria-rowcount",String(l+e.depth)),y.setAttribute("aria-colcount",String(e.displayed().length)),r.rowSelection==="multiple"&&y.setAttribute("aria-multiselectable","true"),this.headerDirty&&(this.headerDirty=!1,this.renderHeader()),this.renderRows(l),this.updateActiveCell(),d&&this.measureRows(),this.renderSummary(l,u&&u.opts.rows,(I=u==null?void 0:u.values)!=null?I:[],x,p),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(u&&x?p:null),this.overlay.hidden=l>0,this.overlay.textContent=l===0&&t.loading()?n.state.locale.loading:n.state.locale.noRows,this.overlay.style.top=`${v}px`;let{scrollTop:g,scrollLeft:w}=this.scroller;this.bodyPanes.left.scrollTop=this.bodyPanes.right.scrollTop=g,this.headerInners.center.style.transform=`translateX(${-w}px)`,this.summaryInners&&(this.summaryInners.center.style.transform=`translateX(${-w}px)`);for(let b of[this.pinnedTop,this.pinnedBottom])b&&(b.inners.center.style.transform=`translateX(${-w}px)`);this.grid.fillHandle.update()}orderSections(e){var i,a,l,d;let t=[e==="top"?this.summaryEl:null,(a=(i=this.pinnedTop)==null?void 0:i.el)!=null?a:null].filter(c=>!!c),n=[(d=(l=this.pinnedBottom)==null?void 0:l.el)!=null?d:null,e==="bottom"?this.summaryEl:null].filter(c=>!!c),r=[this.statusEl,this.pagerEl].filter(c=>!!c);for(let c of t)c.nextElementSibling!==this.bodyEl&&!t.includes(c.nextElementSibling)&&this.gridEl.insertBefore(c,this.bodyEl);let o=this.bodyEl;for(let c=t.length-1;c>=0;c--)o.previousElementSibling!==t[c]&&this.gridEl.insertBefore(t[c],o),o=t[c];o=this.bodyEl;for(let c of n)o.nextElementSibling!==c&&o.after(c),o=c;o=this.gridEl;for(let c of r)o.nextElementSibling!==c&&o.after(c),o=c}updateActiveCell(){var n,r,o;let e=this.activeCellId&&(o=(r=(n=this.root.getRootNode()).getElementById)==null?void 0:r.call(n,this.activeCellId))!=null?o:null,t=this.gridEl.querySelector(".fg-body .fg-cell-focused, .fg-body .fg-row-group .fg-cell-focused");if(e&&e!==t&&e.removeAttribute("id"),!t){this.gridEl.removeAttribute("aria-activedescendant"),this.activeCellId="";return}t.id||(t.id=`${this.idBase}-cell`),this.activeCellId=t.id,this.gridEl.setAttribute("aria-activedescendant",t.id)}renderPinned(e,t,n){if(!n.length)return e==null||e.el.remove(),null;let r=e!=null?e:new Mt(`fg-pinned-rows fg-pinned-${t}`),{columns:o}=this.grid,i=this.opts.rowHeight;r.size(o,n.length*i,this.scroller.offsetWidth-this.scroller.clientWidth);let a=o.region("center"),l=Ue(a.map(d=>d.left),a.map(d=>d.width),this.scroller.scrollLeft,this.scroller.clientWidth,kt);for(let d of J){let c=d==="center"?a.slice(l.first,l.last+1):o.region(d);r.inners[d].replaceChildren(...n.map((u,f)=>{let p=k("div","fg-row fg-row-pinned",{role:"row"});p.style.transform=`translateY(${f*i}px)`,p.style.height=`${i}px`;let x={id:`pinned-${t}-${f}`,data:u,sourceIndex:-1};for(let M of c){let v=k("div","fg-cell",{role:"gridcell"});P(M.id)?(v.style.left=`${M.left}px`,v.style.width=`${M.width}px`):this.paintCell(v,x,-1,M,!1,!1),p.append(v)}return p}))}return r}renderStatusBar(e){var u,f;if(!this.grid.options.statusBar){(u=this.statusEl)==null||u.remove(),this.statusEl=null;return}let{grid:t}=this,n=t.store.state,r=t.rowModel.server?e:t.viewRows().length,o=`${this.version}|${e}|${r}|${n.selected.size}|${JSON.stringify(n.range)}|${n.locale.code}`;if(this.statusEl&&o===this.statusKey)return;this.statusKey=o,(f=this.statusEl)!=null||(this.statusEl=k("div","fg-statusbar",{role:"status","aria-live":"polite"}));let i=n.locale,a=new Intl.NumberFormat(i.code,{maximumFractionDigits:2}),l=k("span","fg-status-rows");l.textContent=(e===r?i.statusRows.replace("{n}",a.format(r)):i.statusFiltered.replace("{shown}",a.format(e)).replace("{total}",a.format(r)))+(n.selected.size?` \xB7 ${i.statusSelected.replace("{n}",a.format(n.selected.size))}`:"");let d=k("span","fg-status-aggs"),c=t.rangeAggregates();if(c&&c.cells>1){let p=[`${i.count} ${a.format(c.count)}`];c.numbers&&p.push(`${i.sum} ${a.format(c.sum)}`,`${i.avg} ${a.format(c.sum/c.numbers)}`,`${i.min} ${a.format(c.min)}`,`${i.max} ${a.format(c.max)}`),d.textContent=p.join(" ")}this.statusEl.replaceChildren(l,d)}renderHeader(){let{columns:e,store:t}=this.grid,{sort:n,filters:r,locale:o}=t.state;for(let i of J){let a=this.headerInners[i];a.style.width=`${e.regionWidth(i)}px`,a.style.height=`${e.depth*this.opts.headerHeight}px`,a.replaceChildren(...e.headerCells(i).map(l=>this.headerCell(l,n,r,o)))}}headerCell(e,t,n,r){var u,f;let o=this.opts.headerHeight,i=k("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*o}px`,i.style.width=`${e.width}px`,i.style.height=`${e.rowSpan*o}px`,P(e.id))return e.id===ee&&(i.classList.add("fg-header-select"),i.append(this.selectAllBox(r))),i;let a=k("span","fg-header-label"),l=e.node.def;if(a.textContent=e.label,l.headerRenderer)try{let p=l.headerRenderer({header:e.label,column:l});typeof p=="string"?a.innerHTML=p:a.replaceChildren(p)}catch{N(`headerRenderer of column "${e.id}" threw; showing the plain header`),a.textContent=e.label}if(l.headerClass)try{let p=typeof l.headerClass=="function"?l.headerClass(l):l.headerClass;p&&i.classList.add(...p.split(/\s+/).filter(Boolean))}catch{N(`headerClass of column "${e.id}" threw`)}if(i.append(a),e.isGroup||!e.column)return i;let d=e.node.def;((u=d.wrapHeaderText)!=null?u:this.grid.options.wrapHeaderText)&&i.classList.add("fg-header-wrap"),i.setAttribute("aria-colindex",String(e.column.index+1)),((f=d.align)!=null?f:d.type==="number"?"right":"left")==="right"&&i.classList.add("fg-align-right");let c=t.findIndex(p=>p.colId===e.id);if(i.setAttribute("aria-sort",c<0?"none":t[c].dir==="asc"?"ascending":"descending"),de(d)&&i.classList.add("fg-sortable"),c>=0){let p=k("span","fg-sort-icon");if(p.textContent=t[c].dir==="asc"?"\u2191":"\u2193",t.length>1){let x=k("sup");x.textContent=String(c+1),p.append(x)}i.append(p)}if(de(d)||pe(d)){let p=!!n[e.id],x=k("button",p?"fg-menu-btn fg-filter-active":"fg-menu-btn",{type:"button",tabindex:"-1","aria-label":r.columnMenu});x.innerHTML=p?Tr:Dr,i.append(x)}return Be(d)&&i.append(k("div","fg-resize",{"aria-hidden":"true"})),i}selectAllBox(e){let t=this.grid.selectableRows(),n=this.grid.store.state.selected,r=0;for(let i of t)n.has(i.id)&&r++;let o=k("input","fg-checkbox fg-select-all",{type:"checkbox",tabindex:"-1","aria-label":e.selectAllRows});return o.checked=t.length>0&&r===t.length,o.indeterminate=r>0&&r<t.length,o.hidden=this.grid.options.rowSelection!=="multiple"||this.grid.options.headerCheckbox===!1,o}renderRows(e){var p,x,M;let{columns:t,rowModel:n,store:r}=this.grid,{selected:o,focus:i}=r.state,a=this.grid.allRangeBounds(),l=this.grid.mergeSpans(),d=Math.max(0,this.scroller.scrollTop-this.topOffset),c=this.offsets?vn(this.offsets,d,this.scroller.clientHeight,e,yn):wn(d,this.scroller.clientHeight,this.opts.rowHeight,e,yn);this.lastRange=c;let u=t.region("center"),f=Ue(u.map(v=>v.left),u.map(v=>v.width),this.scroller.scrollLeft,this.scroller.clientWidth,kt);u.some(v=>v.def.colSpan)&&(f.first=Math.max(0,f.first-Ir));for(let v of J){let h=v==="center"?u.slice(f.first,f.last+1):t.region(v),y=this.painted[v];for(let[w,C]of y)w>=c.first&&w<=c.last&&h.length||(C.el.remove(),this.pool[v].push(C.el),y.delete(w));if(!h.length)continue;let g=v==="center"?`${f.first}-${f.last}`:"";for(let w=c.first;w<=c.last;w++){let C=n.getRow(w),S=o.has(C.id),E=i&&i.rowIndex===w?i.colId:"",m=a.filter($=>w>=$.r1&&w<=$.r2),R=m.map($=>`${$.c1}-${$.c2}`).join(","),I=this.mergeState(l,h,w,c.first),b=C.kind==="detail"?`${this.scroller.scrollLeft}:${this.scroller.clientWidth}`:"",L=`${C.id}|${this.version}|${g}|${S?1:0}|${E}|${R}|${I}|${b}`,D=y.get(w);if(!D){let $=(p=this.pool[v].pop())!=null?p:k("div","fg-row",{role:"row"});this.canvases[v].append($),D={el:$,key:""},y.set(w,D)}D.key!==L&&(D.key=L,D.el.dataset.kind!==((x=C.kind)!=null?x:"")&&(D.el.replaceChildren(),D.el.dataset.kind=(M=C.kind)!=null?M:""),C.kind==="group"?this.paintGroupRow(D.el,C,w,h,E):C.kind==="detail"?this.paintDetailRow(D.el,C,w,v):C.kind==="loading"?this.paintLoadingRow(D.el,w,h):this.paintRow(D.el,C,w,h,S,E,m,l,c.first))}}}mergeState(e,t,n,r){if(!e.size)return"";let o="";for(let i of t){let a=e.get(i.id);if(!a)continue;let l=a.start[n],d=a.end[n];o+=l===d?"n":n===Math.max(l,r)?`d${l}`:"h"}return o}paintRow(e,t,n,r,o,i,a,l=new Map,d=0){let c=this.opts.rowHeight;for(e.className=`fg-row${n%2?" fg-row-odd":""}${o?" 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(o)),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>r.length;)e.lastElementChild.remove();for(;e.childElementCount<r.length;)e.append(k("div","fg-cell",{role:"gridcell"}));let u=!1,f=r.length?this.grid.columns.region(r[0].region):[],p=f.some(v=>v.def.colSpan),x=-1,M=p?new Map(f.map((v,h)=>[v.id,h])):null;r.forEach((v,h)=>{let y=e.children[h];if(this.paintCell(y,t,n,v,o,i===v.id),M){let w=M.get(v.id);if(w<=x)y.classList.add("fg-cell-span-hidden");else if(v.def.colSpan&&!P(v.id)){let C=ke(v.def.colSpan,v.def,t.data,n,f.length-w);if(C>1){x=w+C-1;let S=0;for(let E=w;E<=x;E++)S+=f[E].width;y.style.width=`${S}px`,y.classList.add("fg-cell-colspan")}}}v.id===this.firstDataId&&this.decorate(y,t),y.style.top=y.style.height=y.style.bottom="";let g=l.get(v.id);g&&g.start[n]!==g.end[n]&&(n===Math.max(g.start[n],d)?(y.classList.add("fg-cell-merged"),y.style.top=`${-(this.rowTop(n)-this.rowTop(g.start[n]))}px`,y.style.height=`${this.rowTop(g.end[n])+this.rowH(g.end[n])-this.rowTop(g.start[n])}px`,y.style.bottom="auto",u=!0):y.classList.add("fg-cell-merge-hidden")),!P(v.id)&&a.some(w=>v.index>=w.c1&&v.index<=w.c2)&&y.classList.add("fg-cell-range")}),e.style.zIndex=u?"1":""}paintCell(e,t,n,r,o,i){var p;let a=this.grid.store.state.locale;e.style.left=`${r.left}px`,e.style.width=`${r.width}px`,e.dataset.col=r.id,e.setAttribute("aria-colindex",String(r.index+1));let l=i?"fg-cell fg-cell-focused":"fg-cell";if(r.id===le){e.className=`${l} fg-cell-drag`;let x=k("span",this.grid.canMoveRows()?"fg-drag-handle":"fg-drag-handle fg-drag-disabled",{"aria-hidden":"true"});x.textContent="\u22EE\u22EE",e.replaceChildren(x);return}if(r.id===ee){e.className=`${l} fg-cell-select`;let x=k("input","fg-checkbox",{type:"checkbox",tabindex:"-1","aria-label":a.selectRow});x.checked=o,n>=0&&!t.kind&&!this.grid.rowSelectable(t.data)&&(x.disabled=!0,e.classList.add("fg-cell-select-locked")),e.replaceChildren(x);return}let d=r.def,c=B(d,t.data),u=K(d,a.code)(c);l+=` fg-align-${(p=d.align)!=null?p:d.type==="number"?"right":d.type==="boolean"?"center":"left"}`;let f={value:c,formatted:u,row:t.data,rowIndex:n,column:d};if(d.cellClass)try{let x=typeof d.cellClass=="function"?d.cellClass(f):d.cellClass;x&&(l+=` ${x}`)}catch{N(`cellClass of column "${r.id}" threw`)}if(this.grid.tracker.isDirty(t.data,d.field)&&(l+=" fg-cell-dirty"),d.wrapText&&(l+=" fg-cell-wrap"),typeof d.editable=="function"&&n>=0&&!ne(d,t.data,n)&&(l+=" fg-cell-readonly"),n>=0&&(l+=this.grid.finder.classFor(n,r.id)),e.className=l,!d.renderer){e.textContent=u;return}try{let x=d.renderer(f);typeof x=="string"?e.innerHTML=x:e.replaceChildren(x)}catch{N(`renderer of column "${r.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,r=this.rowTop(e),o=r+Math.min(this.rowH(e),n.clientHeight||1/0);r<n.scrollTop?n.scrollTop=r:o>n.scrollTop+n.clientHeight&&(n.scrollTop=o-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 r;if(!e){(r=this.summaryEl)==null||r.remove(),this.summaryEl=this.summaryPanes=this.summaryInners=null;return}if(!this.summaryEl){let o=i=>({left:k("div",`${i} ${i}-left`),center:k("div",`${i} ${i}-center`),right:k("div",`${i} ${i}-right`)});this.summaryEl=k("div","fg-summary",{role:"rowgroup"}),this.summaryPanes=o("fg-summary-pane"),this.summaryInners=o("fg-summary-inner");for(let i of J)this.summaryPanes[i].append(this.summaryInners[i]),this.summaryEl.append(this.summaryPanes[i])}this.summaryEl.className=`fg-summary fg-summary-${e}`,this.summaryEl.style.height=`${t}px`;for(let o of J){let i=this.grid.columns.regionWidth(o);o!=="center"&&(this.summaryPanes[o].style.width=`${i}px`,this.summaryPanes[o].hidden=i===0),this.summaryInners[o].style.width=`${i}px`,this.summaryInners[o].style.height=`${t}px`}let n=this.scroller.offsetWidth-this.scroller.clientWidth;this.summaryPanes.center.style.marginRight=`${n}px`}renderSummary(e,t,n,r,o){for(let u of J){for(let f of this.canvasSummary[u])f.remove();this.canvasSummary[u]=[]}if(!t)return;let{columns:i}=this.grid,a=this.opts.rowHeight,l=i.region("center"),d=Ue(l.map(u=>u.left),l.map(u=>u.width),this.scroller.scrollLeft,this.scroller.clientWidth,kt),c=i.displayed().filter(u=>!P(u.id));for(let u of J){let f=u==="center"?l.slice(d.first,d.last+1):i.region(u),p=t.map((x,M)=>{var g,w,C;let v=x.label!=null&&(w=(g=c.find(S=>{var E;return!(S.id in((E=x.columns)!=null?E:{}))}))==null?void 0:g.id)!=null?w:null,h=k("div","fg-row fg-summary-row",{role:"row"}),y=r||o==="top"?M*a:this.rowsHeight(e)+M*a;h.style.transform=`translateY(${y}px)`,h.style.height=`${a}px`;for(let S of f)h.append(this.summaryCell(S,x,(C=n[M])!=null?C:{},v));return h});r?this.summaryInners[u].replaceChildren(...p):(this.canvases[u].append(...p),this.canvasSummary[u]=p)}}summaryCell(e,t,n,r){var p,x,M,v,h;let o=k("div","fg-cell",{role:"gridcell"});o.style.left=`${e.left}px`,o.style.width=`${e.width}px`,o.dataset.col=e.id;let i=e.def,a=(p=i.align)!=null?p:i.type==="number"?"right":i.type==="boolean"?"center":"left";o.className=`fg-cell fg-align-${a}`;let l=(x=t.columns)==null?void 0:x[e.id];if(l===void 0)return e.id===r&&(o.textContent=(M=t.label)!=null?M:"",o.classList.add("fg-summary-label")),o;let d=n[e.id],c=Rt(l),u=this.grid.store.state.locale.code,f;if(d==null||d==="")f="";else if(typeof d=="string")f=d;else if(c.agg==="count")f=new Intl.NumberFormat(u).format(d);else{let y=(v=i.type)!=null?v:typeof d=="number"?"number":d instanceof Date?"date":void 0;f=K({...i,type:y,format:(h=c.format)!=null?h:i.format},u)(d)}return o.textContent=c.prefix&&f?`${c.prefix} ${f}`:f,o}invalidateHeights(){this.rowHeights.size&&(this.rowHeights.clear(),this.heightsVersion++)}measureRows(){var r,o;let e=this.opts.rowHeight,t=new Map;for(let i of J)for(let[a,l]of this.painted[i]){let d=this.grid.rowModel.getRow(a);if(!d||d.kind)continue;let c=(r=t.get(a))!=null?r:e;for(let u of l.el.querySelectorAll(".fg-cell-wrap"))u.classList.contains("fg-cell-merged")||u.classList.contains("fg-cell-merge-hidden")||(c=Math.max(c,Math.ceil(u.scrollHeight)));t.set(a,c)}let n=!1;for(let[i,a]of t){let l=this.grid.rowModel.getRow(i).id,d=(o=this.rowHeights.get(l))!=null?o:e;Math.abs(d-a)>1&&(a===e?this.rowHeights.delete(l):this.rowHeights.set(l,a),n=!0)}n&&(this.heightsVersion++,this.version++,this.schedule())}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 d;let{grid:n}=this,r=n.store.state.locale,o=(d=t.level)!=null?d:0,i=!!n.options.treeData,a=n.canExpandDetail(t.data);if(!i&&!a&&!o)return;e.classList.add("fg-cell-lead"),e.style.setProperty("--fg-level",String(o));let l=[];if(i)if(t.hasChildren){let c=k("button",t.expanded?"fg-tree-toggle fg-expanded":t.loading?"fg-tree-toggle fg-tree-loading":"fg-tree-toggle",{type:"button",tabindex:"-1","aria-label":t.expanded?r.collapseAll:r.expandAll,"aria-expanded":String(!!t.expanded)});t.loading&&c.setAttribute("aria-busy","true"),c.innerHTML=St,l.push(c)}else l.push(k("span","fg-tree-spacer",{"aria-hidden":"true"}));if(a){let c=n.isDetailExpanded(t.data),u=k("button",c?"fg-detail-toggle fg-expanded":"fg-detail-toggle",{type:"button",tabindex:"-1","aria-expanded":String(c),"aria-label":c?r.collapseAll:r.expandAll});u.innerHTML=St,l.push(u)}e.prepend(...l)}paintGroupRow(e,t,n,r,o){var d;let i=t.group,{grid:a}=this,l=a.store.state.locale;for(e.className="fg-row fg-row-group",this.placeRow(e,n),e.setAttribute("aria-level",String(((d=t.level)!=null?d:0)+1)),e.setAttribute("aria-expanded",String(i.expanded)),e.removeAttribute("aria-selected"),e.style.zIndex="";e.childElementCount>r.length;)e.lastElementChild.remove();for(;e.childElementCount<r.length;)e.append(k("div","fg-cell",{role:"gridcell"}));r.forEach((c,u)=>{var h,y,g,w,C,S;let f=e.children[u];f.style.left=`${c.left}px`,f.style.width=`${c.width}px`,f.style.top=f.style.height=f.style.bottom="",f.style.removeProperty("--fg-level"),f.dataset.col=c.id,f.setAttribute("aria-colindex",String(c.index+1));let p=o===c.id?" fg-cell-focused":"";if(c.id===this.groupLabelId){f.className=`fg-cell fg-group-cell${p}`,f.style.setProperty("--fg-level",String((h=t.level)!=null?h:0));let E=k("button",i.expanded?"fg-group-toggle fg-expanded":"fg-group-toggle",{type:"button",tabindex:"-1","aria-expanded":String(i.expanded),"aria-label":i.expanded?l.collapseAll:l.expandAll});E.innerHTML=St;let m=(y=a.columns.getNode(i.colId))==null?void 0:y.def,R=k("span","fg-group-label"),I=O(i.value)?l.blanks:m?K(m,l.code)(i.value):String(i.value),b=new Intl.NumberFormat(l.code);R.textContent=`${(w=(g=m==null?void 0:m.header)!=null?g:m==null?void 0:m.field)!=null?w:i.colId}: ${I} (${b.format(i.rows.length)})`,f.replaceChildren(E,R);return}let x=c.def,M=(C=x.align)!=null?C:x.type==="number"?"right":x.type==="boolean"?"center":"left";f.className=`fg-cell fg-align-${M}${p}`;let v=x.aggFunc&&!P(c.id)?a.groupAggregate(t,c.id):void 0;if(v==null||v==="")f.textContent="";else if(x.aggFunc==="count")f.textContent=new Intl.NumberFormat(l.code).format(v);else{let E=(S=x.type)!=null?S:typeof v=="number"?"number":v instanceof Date?"date":void 0;f.textContent=K({...x,type:E},l.code)(v)}f.textContent&&f.classList.add("fg-cell-agg")})}paintDetailRow(e,t,n,r){var a,l;if(e.className="fg-row fg-row-detail",this.placeRow(e,n),e.style.zIndex="",r!=="center"){e.replaceChildren();return}let o=t.detailOf,i=this.details.get(o.id);if(!i){i=k("div","fg-detail");try{let d=(l=(a=this.grid.options).detailRenderer)==null?void 0:l.call(a,{row:o.data,rowIndex:n-1});typeof d=="string"?i.innerHTML=d:d&&i.append(d)}catch{N("detailRenderer threw; showing an empty panel")}this.details.set(o.id,i)}i.style.left=`${this.scroller.scrollLeft}px`,i.style.width=`${this.scroller.clientWidth||this.grid.columns.regionWidth("center")}px`,(e.firstChild!==i||e.childNodes.length!==1)&&e.replaceChildren(i)}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(r=>{let o=k("div","fg-cell",{role:"gridcell"});return o.style.left=`${r.left}px`,o.style.width=`${r.width}px`,o.dataset.col=r.id,P(r.id)||o.append(k("span","fg-skeleton",{"aria-hidden":"true"})),o}))}renderPager(){var h;let{grid:e}=this,t=e.options.pagination;if(!t){(h=this.pagerEl)==null||h.remove(),this.pagerEl=null;return}let n=e.store.state.locale,r=e.getPage(),o=e.getPageSize(),i=e.getPageCount(),a=e.rowModel.fullCount(),l=typeof t=="object"&&Array.isArray(t.pageSizes)?t.pageSizes.filter(y=>Number.isInteger(y)&&y>0):[],d=`${r}|${o}|${i}|${a}|${n.code}|${l.join(",")}`;if(this.pagerEl&&d===this.pagerKey)return;this.pagerKey=d,this.pagerEl||(this.pagerEl=k("div","fg-pager",{role:"navigation"}),this.pagerEl.addEventListener("click",y=>{var C;let g=(C=y.target.closest("button[data-action]"))==null?void 0:C.dataset.action,w=e.getPage();g==="first"?e.setPage(0):g==="prev"?e.setPage(w-1):g==="next"?e.setPage(w+1):g==="last"&&e.setPage(e.getPageCount()-1)}),this.pagerEl.addEventListener("change",y=>{let g=y.target;g.classList.contains("fg-pager-size")&&e.setPageSize(Number(g.value))})),this.pagerEl.setAttribute("aria-label",n.pageSize);let c=new Intl.NumberFormat(n.code),u=a?r*o+1:0,f=Math.min(a,(r+1)*o),p=k("span","fg-pager-range");p.textContent=n.pagerRange.replace("{from}",c.format(u)).replace("{to}",c.format(f)).replace("{total}",c.format(a));let x=[p,k("span","fg-pager-spacer")];if(l.length){let y=k("label","fg-pager-size-label");y.textContent=n.pageSize;let g=k("select","fg-pager-size");for(let w of[...new Set([...l,o])].sort((C,S)=>C-S)){let C=k("option");C.value=String(w),C.textContent=c.format(w),C.selected=w===o,g.append(C)}y.append(g),x.push(y)}let M=(y,g,w,C)=>{let S=k("button","fg-pager-btn",{type:"button","aria-label":w,title:w});return S.dataset.action=y,S.textContent=g,S.disabled=C,S},v=k("span","fg-pager-page",{"aria-live":"polite"});v.textContent=n.pageOf.replace("{page}",c.format(r+1)).replace("{pages}",c.format(i)),x.push(M("first","\xAB",n.firstPage,r===0),M("prev","\u2039",n.previousPage,r===0),v,M("next","\u203A",n.nextPage,r>=i-1),M("last","\xBB",n.lastPage,r>=i-1)),this.pagerEl.replaceChildren(...x)}showFreeBadge(){if(this.root.querySelector(".fg-free-badge"))return;let e=k("a","fg-free-badge",{href:"https://freegrid.app/pricing/",target:"_blank",rel:"noopener"});e.innerHTML='<svg viewBox="0 0 32 32" width="14" height="14" aria-hidden="true"><rect width="32" height="32" rx="7" fill="#0E1726"/><path d="M7 11.5h18M7 16.5h18M7 21.5h18M13 7v18" stroke="#fff" stroke-width="2" stroke-linecap="round"/><rect x="14" y="12.5" width="11" height="3" rx="1" fill="#F2A900"/></svg>';let t=k("span");t.textContent=`FreeGrid \xB7 ${this.grid.store.state.locale.freeBadge}`,e.append(t),this.root.append(e)}useCards(){let e=this.grid.options.cardView,t=e===!0?640:typeof e=="number"?e:-1,n=t>0&&this.main.clientWidth<t;return n!==this.cardMode&&(this.cardMode=n,this.root.classList.toggle("fg-card-mode",n),!n&&this.cards&&(this.cards.scroller.remove(),this.cards=null),this.version++),n}renderCards(e){var M,v,h,y,g;let{grid:t}=this;if(!this.cards){let w=k("div","fg-cards",{role:"list"}),C=k("div","fg-cards-canvas");w.append(C),this.main.insertBefore(w,this.overlay),w.addEventListener("scroll",()=>{this.schedule(),this.grid.events.emit("scroll",this.getScroll())},{passive:!0}),w.addEventListener("click",this.onCardClick),this.cards={scroller:w,canvas:C}}let{scroller:n,canvas:r}=this.cards,o=t.columns.displayed().filter(w=>!P(w.id)),i=Math.round(this.opts.rowHeight*.75),a=!!t.options.rowSelection,l=20+o.length*i+(a?i:0),d=10;r.style.height=`${e*(l+d)}px`;let c=Math.max(0,Math.floor(n.scrollTop/(l+d))-2),u=Math.min(e-1,Math.ceil((n.scrollTop+(n.clientHeight||800))/(l+d))+2),{selected:f,locale:p}=t.store.state,x=[];for(let w=c;w<=u;w++){let C=t.rowModel.getRow(w);if(!C)continue;let S=k("div",C.kind?"fg-card fg-card-other":f.has(C.id)?"fg-card fg-card-selected":"fg-card",{role:"listitem"});if(S.dataset.row=String(w),S.style.transform=`translateY(${w*(l+d)}px)`,S.style.height=`${l}px`,S.style.setProperty("--fg-card-line",`${i}px`),C.kind==="group"&&C.group){let E=(M=t.columns.getNode(C.group.colId))==null?void 0:M.def;S.textContent=`${(v=E==null?void 0:E.header)!=null?v:C.group.colId}: ${String((h=C.group.value)!=null?h:p.blanks)} (${C.group.rows.length})`}else if(!C.kind){if(a){let E=k("label","fg-card-head"),m=k("input","fg-card-check fg-checkbox",{type:"checkbox","aria-label":p.selectRow});m.checked=f.has(C.id),m.disabled=!t.rowSelectable(C.data),E.append(m,document.createTextNode(`#${w+1}`)),S.append(E)}for(let E of o){let m=k("div","fg-card-line"),R=k("span","fg-card-label");R.textContent=(g=(y=E.def.header)!=null?y:E.def.field)!=null?g:E.id;let I=k("span","fg-card-value");I.dataset.col=E.id;let b=B(E.def,C.data),L=K(E.def,p.code)(b);if(E.def.renderer)try{let D=E.def.renderer({value:b,formatted:L,row:C.data,rowIndex:w,column:E.def});typeof D=="string"?I.innerHTML=D:I.replaceChildren(D)}catch{I.textContent=L}else I.textContent=L;m.append(R,I),S.append(m)}}x.push(S)}r.replaceChildren(...x)}dropDetail(e){e===void 0?this.details.clear():this.details.delete(e)}renderedRange(){return this.lastRange}measureText(e,t){let n=getComputedStyle(this.main),r=parseFloat(getComputedStyle(this.root).getPropertyValue("--fg-font-size"))||13;this.measureCtx===void 0&&(this.measureCtx=document.createElement("canvas").getContext("2d"));let o=this.measureCtx;return o?(o.font=`${t?600:400} ${r}px ${n.fontFamily||"sans-serif"}`,o.measureText(e).width):e.length*r*.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()}},Mt=class{constructor(e){let t=n=>({left:k("div",`${n} ${n}-left`),center:k("div",`${n} ${n}-center`),right:k("div",`${n} ${n}-right`)});this.el=k("div",e,{role:"rowgroup"}),this.panes=t("fg-section-pane"),this.inners=t("fg-section-inner");for(let n of J)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 r of J){let o=e.regionWidth(r);r!=="center"&&(this.panes[r].style.width=`${o}px`,this.panes[r].hidden=o===0),this.inners[r].style.width=`${o}px`,this.inners[r].style.height=`${t}px`}this.panes.center.style.marginRight=`${n}px`}};var $r=4,Ke=class{constructor(e){this.grid=e;this.onClick=e=>{var r;let t=e.target.closest(".fg-group-chip-remove"),n=(r=t==null?void 0:t.closest(".fg-group-chip"))==null?void 0:r.dataset.col;n&&this.grid.setGroupBy(this.grid.getGroupBy().filter(o=>o!==n))};this.onPointerDown=e=>{let t=e.target,n=t.closest(".fg-group-chip");if(e.button!==0||!n||t.closest("button"))return;let r=n.dataset.col,o=e.clientX,i=!1,a=d=>{!i&&Math.abs(d.clientX-o)<$r||(i=!0,n.classList.add("fg-dragging"))},l=d=>{if(window.removeEventListener("pointermove",a),window.removeEventListener("pointerup",l),n.classList.remove("fg-dragging"),!i)return;let u=[...this.el.querySelectorAll(".fg-group-chip")].filter(p=>p!==n).filter(p=>{let x=p.getBoundingClientRect();return d.clientX>x.left+x.width/2}).length,f=this.grid.getGroupBy().filter(p=>p!==r);f.splice(u,0,r),this.grid.setGroupBy(f)};window.addEventListener("pointermove",a),window.addEventListener("pointerup",l)};this.el=k("div","fg-group-panel",{role:"toolbar"}),e.renderer.main.insertBefore(this.el,e.renderer.gridEl),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 r=k("span","fg-group-hint");r.textContent=t.groupPanelHint,this.el.replaceChildren(r);return}this.el.replaceChildren(...n.map((r,o)=>{var c,u,f;let i=(c=e.columns.getNode(r))==null?void 0:c.def,a=k("span","fg-group-chip");a.dataset.col=r;let l=k("span","fg-group-chip-label");l.textContent=(f=(u=i==null?void 0:i.header)!=null?u:i==null?void 0:i.field)!=null?f:r;let d=k("button","fg-group-chip-remove",{type:"button","aria-label":`${t.ungroup}: ${l.textContent}`});if(d.textContent="\xD7",a.append(l,d),o<n.length-1){let p=k("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 we=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 r of[...n])try{r(t)}catch(o){console.error("[FreeGrid] event listener threw",o)}}clear(){this.listeners.clear()}};function ie(s){let e=s.getRootNode();return typeof ShadowRoot!="undefined"&&e instanceof ShadowRoot?e:document.body}function Se(s,e,t){var r;let n=s.getRootNode();return(r=typeof n.elementFromPoint=="function"?n.elementFromPoint(e,t):null)!=null?r:document.elementFromPoint(e,t)}function bn(s){var t;return(t=s.getRootNode().activeElement)!=null?t:document.activeElement}function ve(s,...e){let t=typeof s.composedPath=="function"?s.composedPath():[];return t.length?e.some(n=>!!n&&t.includes(n)):e.some(n=>!!n&&n.contains(s.target))}var Et=new Set(["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Tab","Home","End","PageUp","PageDown"]);function Lt(s,e,t,n){let r=i=>Math.max(0,Math.min(n.rows-1,i)),o=i=>Math.max(0,Math.min(n.cols-1,i));switch(s){case"ArrowUp":return{rowIndex:r(t.rowIndex-1),colIndex:t.colIndex};case"ArrowDown":return{rowIndex:r(t.rowIndex+1),colIndex:t.colIndex};case"ArrowLeft":return{rowIndex:t.rowIndex,colIndex:o(t.colIndex-1)};case"ArrowRight":return{rowIndex:t.rowIndex,colIndex:o(t.colIndex+1)};case"PageUp":return{rowIndex:r(t.rowIndex-n.pageRows),colIndex:t.colIndex};case"PageDown":return{rowIndex:r(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}}var _e=new Map,xn=s=>s?_e.get(s):void 0;var Pr={Enter:"edit",F2:"edit",Delete:"clear",Backspace:"clear","Ctrl+Z":"undo","Ctrl+Y":"redo","Ctrl+Shift+Z":"redo","Ctrl+F":"find"};function Ar(s){let e=[];return(s.ctrlKey||s.metaKey)&&e.push("Ctrl"),s.altKey&&e.push("Alt"),s.shiftKey&&s.key.length>1&&e.push("Shift"),s.shiftKey&&s.key.length===1&&(s.ctrlKey||s.metaKey)&&e.push("Shift"),e.push(s.key.length===1?s.key.toUpperCase():s.key),e.join("+")}var Nr=3;function Fr(s,e){return s.renderer.rtl?e.key==="ArrowLeft"?"ArrowRight":e.key==="ArrowRight"?"ArrowLeft":e.key:e.key}function Cn(s){var E;let{renderer:e}=s,t=e.bodyEl,n=e.root,r=m=>Fr(s,m),o="mouse",i=0,a=!1,l=m=>{let R=e.cellAt(m.target);if(!R)return null;let I=s.rowModel.getRow(R.rowIndex),b=s.columns.getColumn(R.colId);if(!I||!b)return null;let L=P(b.id)?void 0:B(b.def,I.data);return{row:I.data,rowIndex:R.rowIndex,colId:R.colId,value:L,event:m}},d=m=>{var L,D;let R=(D=(L=m.target).closest)==null?void 0:D.call(L,".fg-group-toggle, .fg-tree-toggle, .fg-detail-toggle"),I=R&&e.cellAt(m.target);if(!I)return!1;e.gridEl.focus({preventScroll:!0}),s.setFocus(I.rowIndex,I.colId),s.setRange(null);let b=s.rowModel.getRow(I.rowIndex);return R.classList.contains("fg-detail-toggle")?s.setDetailExpanded(b.data,!s.isDetailExpanded(b.data)):s.toggleRow(I.rowIndex),!0},c=m=>{var A;if(d(m))return;let R=s.store.state.focus,I=e.cellAt(m.target);if(I&&((A=s.rowModel.getRow(I.rowIndex))!=null&&A.kind)){e.gridEl.focus({preventScroll:!0}),s.setFocus(I.rowIndex,I.colId),s.setRange(null);return}let b=l(m);if(!b)return;e.gridEl.focus({preventScroll:!0});let L=a;a=!1;let D=s.store.state.focus,$=b.colId===ee;if(!L)if(m.shiftKey&&D&&!$&&!P(D.colId)&&s.options.rangeSelection!==!1)s.setRange({start:D,end:{rowIndex:b.rowIndex,colId:b.colId}},!0);else if((m.ctrlKey||m.metaKey)&&!$&&!P(b.colId)&&s.options.rangeSelection!==!1){let T={rowIndex:b.rowIndex,colId:b.colId};s.addRange({start:T,end:T}),s.setFocus(b.rowIndex,b.colId)}else s.setFocus(b.rowIndex,b.colId),s.setRange(null);s.options.rowSelection&&!L&&s.selectFromClick(b.rowIndex,$||m.ctrlKey||m.metaKey,m.shiftKey),s.events.emit("cellClick",b),o==="touch"&&!L&&R&&R.rowIndex===b.rowIndex&&R.colId===b.colId&&s.editor.canEdit(b.rowIndex,b.colId)&&(s.columns.getColumn(b.colId).def.type==="boolean"?s.applyEdit(b.rowIndex,b.colId,b.value!==!0):s.editor.start(b.rowIndex,b.colId))},u=m=>{var D,$;if(($=(D=m.target).closest)!=null&&$.call(D,"button"))return;let R=e.cellAt(m.target),I=R&&s.rowModel.getRow(R.rowIndex);if((I==null?void 0:I.kind)==="group"){s.toggleRow(R.rowIndex);return}if(I!=null&&I.kind)return;let b=l(m);if(!b||(s.events.emit("cellDoubleClick",b),!s.editor.canEdit(b.rowIndex,b.colId)))return;s.columns.getColumn(b.colId).def.type==="boolean"?s.applyEdit(b.rowIndex,b.colId,b.value!==!0):s.editor.start(b.rowIndex,b.colId)},f={...Pr};for(let[m,R]of Object.entries((E=s.options.keymap)!=null?E:{}))f[m]=R===!1?"none":R;let p=m=>{var L,D;let R=s.store.state.focus,I=f[Ar(m)];if(I==="none")return!1;switch(I){case"edit":return!R||!s.editor.canEdit(R.rowIndex,R.colId)||s.columns.getColumn(R.colId).def.type==="boolean"?!1:(s.editor.start(R.rowIndex,R.colId),!0);case"clear":return s.clearCells(),!0;case"undo":return s.undo(),!0;case"redo":return s.redo(),!0;case"copy":return s.copyToClipboard(!1),!0;case"selectAll":return s.selectAllCells(),!0;case"find":return s.options.findBar===!1?!1:(s.finder.openBar(),!0);case"paste":return(D=(L=navigator.clipboard)==null?void 0:L.readText)==null||D.call(L).then($=>s.pasteText($),()=>{}),!0}if(!R||!s.editor.canEdit(R.rowIndex,R.colId))return!1;let b=s.columns.getColumn(R.colId).def;if(m.key===" "&&b.type==="boolean"&&!m.ctrlKey&&!m.metaKey){let $=s.rowModel.getRow(R.rowIndex).data;return s.applyEdit(R.rowIndex,R.colId,$[b.field]!==!0),!0}return m.key.length===1&&m.key!==" "&&!m.ctrlKey&&!m.metaKey&&!m.altKey&&b.type!=="boolean"?(s.editor.start(R.rowIndex,R.colId,m.key),!0):!1},x=m=>{var $,A,T;let R=s.store.state.focus;if(!R||m.ctrlKey||m.metaKey||m.altKey||m.shiftKey)return!1;let I=s.rowModel.getRow(R.rowIndex);if(!s.isExpandable(I))return!1;let b=I.kind==="group";if(!b&&R.colId!==(($=s.columns.displayed().find(F=>!P(F.id)))==null?void 0:$.id))return!1;let L=!!((T=(A=I.group)==null?void 0:A.expanded)!=null?T:I.expanded),D=s.expandKey(I);if(b&&(m.key==="Enter"||m.key===" "))s.setGroupExpanded(D,!L);else if(r(m)==="ArrowRight"&&!L)s.setGroupExpanded(D,!0);else if(r(m)==="ArrowLeft"&&L)s.setGroupExpanded(D,!1);else return!1;return!0},M=m=>{let R=e.cellAt(m.target);if(!R||R.colId!==le)return!1;m.preventDefault();let I=s.rowModel.getRow(R.rowIndex);if(!I||I.kind||!s.canMoveRows())return!0;let b=I.data,L=k("div","fg-row-drop-marker"),D=null;n.classList.add("fg-row-dragging");let $=T=>{var Xt,Yt;let F=Se(n,T.clientX,T.clientY),z=F==null?void 0:F.closest(".fg-root"),H=z===n?s:xn(z),V=s.dragOptions.group;if(D=null,L.remove(),!H||!z||H!==s&&(!V||H.dragOptions.group!==V||!H.options.rowDrag))return;let G=F.closest(".fg-row[data-row]"),U=G==null?void 0:G.getBoundingClientRect(),X=null,W="after",he;if(G&&U){let oe=H.rowModel.getRow(Number(G.dataset.row));if(!oe||oe.kind==="group")return;X=(Yt=(Xt=oe.detailOf)==null?void 0:Xt.data)!=null?Yt:oe.data;let Ce=(T.clientY-U.top)/U.height;oe.kind==="detail"?W="after":H.options.treeData?W=Ce<.25?"before":Ce>.75?"after":"inside":W=Ce<.5?"before":"after",he=W==="before"?U.top:U.bottom}else{if(!F.closest(".fg-body"))return;let oe=z.querySelectorAll(".fg-body-pane-center .fg-row[data-row]");he=oe.length?Math.max(...[...oe].map(Ce=>Ce.getBoundingClientRect().bottom)):z.querySelector(".fg-body").getBoundingClientRect().top}if(!H.canDropRow(b,X,W,s))return;D={into:H,target:X,position:W};let Ae=z.getBoundingClientRect().top;L.classList.toggle("fg-row-drop-inside",W==="inside"),L.style.top=`${W==="inside"?U.top-Ae:he-Ae-1}px`,L.style.height=W==="inside"?`${U.height}px`:"",z.append(L)},A=()=>{window.removeEventListener("pointermove",$),window.removeEventListener("pointerup",A),window.removeEventListener("pointercancel",A),n.classList.remove("fg-row-dragging"),L.remove(),D&&D.into.dropRow(b,D.target,D.position,s)};return window.addEventListener("pointermove",$),window.addEventListener("pointerup",A),window.addEventListener("pointercancel",A),!0},v=m=>{let R=e.cellAt(m.target);if(!R)return;let I=m.clientX,b=m.clientY,L=()=>{clearTimeout(i),window.removeEventListener("pointermove",D),window.removeEventListener("pointerup",L),window.removeEventListener("pointercancel",L)},D=$=>{Math.hypot($.clientX-I,$.clientY-b)>8&&L()};clearTimeout(i),i=window.setTimeout(()=>{L(),s.options.contextMenu!==!1&&(a=!0,P(R.colId)||(s.setFocus(R.rowIndex,R.colId),s.rangeContains(R.rowIndex,R.colId)||s.setRange({start:R,end:R})),s.contextMenu.open(I,b,R.rowIndex,R.colId))},550),window.addEventListener("pointermove",D),window.addEventListener("pointerup",L),window.addEventListener("pointercancel",L)},h=m=>{if(o=m.pointerType||"mouse",o==="touch"){v(m);return}if(m.button===0&&M(m)||s.options.rangeSelection===!1||m.button!==0||m.shiftKey||m.target.closest("input, a, button"))return;let R=e.cellAt(m.target);if(!R||P(R.colId))return;let I=m.clientX,b=m.clientY,L=m.ctrlKey||m.metaKey,D=!1,$=T=>{if(!D&&Math.hypot(T.clientX-I,T.clientY-b)<Nr)return;let F=e.cellAt(Se(n,T.clientX,T.clientY));!F||P(F.colId)||(D||(D=!0,n.classList.add("fg-range-dragging"),L&&s.addRange({start:R,end:R}),s.setFocus(R.rowIndex,R.colId)),s.setRange({start:R,end:F},L))},A=()=>{window.removeEventListener("pointermove",$),window.removeEventListener("pointerup",A),n.classList.remove("fg-range-dragging"),D&&(a=!0)};window.addEventListener("pointermove",$),window.addEventListener("pointerup",A)},y=m=>{var z,H;if(m.target!==n&&m.target!==e.gridEl)return;let R=s.columns.displayed(),I=s.rowModel.getRowCount();if(!R.length||!I)return;if(x(m)){m.preventDefault();return}if(p(m)){m.preventDefault();return}let b=s.store.state.focus,L=m.ctrlKey||m.metaKey;if(m.key==="Escape"&&s.store.state.range){m.preventDefault(),s.setRange(null);return}if(L&&m.key.toLowerCase()==="a"&&s.options.rangeSelection!==!1){m.preventDefault(),s.selectAllCells();return}if(m.key==="ContextMenu"||m.key==="F10"&&m.shiftKey){m.preventDefault(),s.contextMenu.openAtFocus();return}if(m.key===" "&&b&&s.options.rowSelection){m.preventDefault(),s.selectFromClick(Math.min(b.rowIndex,I-1),!0,m.shiftKey);return}let D={rows:I,cols:R.length,pageRows:e.pageRows()},$=R.findIndex(V=>!P(V.id));if(s.options.rangeSelection!==!1&&m.shiftKey&&m.key!=="Tab"&&Et.has(m.key)){let V=b!=null?b:{rowIndex:0,colId:R[$].id},G=s.store.state.range,U=(z=G==null?void 0:G.end)!=null?z:V,X={rowIndex:Math.min(U.rowIndex,I-1),colIndex:Math.max(0,R.findIndex(Ae=>Ae.id===U.colId))},W=Lt(r(m),{ctrl:L,shift:!1},X,D);if(!W)return;m.preventDefault();let he=R[Math.max($,W.colIndex)].id;b||s.setFocus(V.rowIndex,V.colId),s.setRange({start:(H=G==null?void 0:G.start)!=null?H:V,end:{rowIndex:W.rowIndex,colId:he}}),e.ensureVisible(W.rowIndex,he);return}let T;if(!b)T=Et.has(m.key)&&m.key!=="Tab"?{rowIndex:0,colIndex:0}:null;else{let V=Math.max(0,R.findIndex(G=>G.id===b.colId));T=Lt(r(m),{ctrl:L,shift:m.shiftKey},{rowIndex:Math.min(b.rowIndex,I-1),colIndex:V},D)}if(!T)return;m.preventDefault();let F=R[T.colIndex].id;s.setFocus(T.rowIndex,F),s.setRange(null),e.ensureVisible(T.rowIndex,F)},g=m=>{var R,I;return(I=(R=m.target)==null?void 0:R.closest)==null?void 0:I.call(R,".fg-editor, input, textarea, select, [contenteditable]")},w=m=>{var R,I;return((I=(R=m.target)==null?void 0:R.closest)==null?void 0:I.call(R,".fg-root"))!==n},C=m=>{if(g(m)||w(m))return;let R=s.selectionTSV(!1);!R||!m.clipboardData||(m.clipboardData.setData("text/plain",R),m.preventDefault())},S=m=>{var I;if(g(m)||w(m))return;let R=(I=m.clipboardData)==null?void 0:I.getData("text/plain");R&&(m.preventDefault(),s.pasteText(R))};return t.addEventListener("click",c),t.addEventListener("dblclick",u),t.addEventListener("pointerdown",h),n.addEventListener("keydown",y),n.addEventListener("copy",C),n.addEventListener("paste",S),()=>{t.removeEventListener("click",c),t.removeEventListener("dblclick",u),t.removeEventListener("pointerdown",h),n.removeEventListener("keydown",y),n.removeEventListener("copy",C),n.removeEventListener("paste",S)}}var We=class{constructor(e){this.grid=e;this.open=new Set;this.el=k("div","fg-filters-panel")}refresh(){var l,d;let{grid:e}=this,t=e.store.state.locale,n=e.store.state.filters,r=k("div","fg-filters-head"),o=k("span","fg-filters-title");o.textContent=t.filters;let i=k("button","fg-btn fg-filters-clear",{type:"button"});i.textContent=t.clearFilters,i.disabled=!Object.keys(n).length,i.addEventListener("click",()=>{for(let c of Object.keys(e.store.state.filters))e.setFilter(c,null)}),r.append(o,i);let a=k("div","fg-filters-list");for(let c of e.columns.displayed()){if(P(c.id)||!pe(c.def))continue;let u=k("details",n[c.id]?"fg-filters-item fg-filter-on":"fg-filters-item");u.dataset.col=c.id,u.open=this.open.has(c.id);let f=k("summary");f.textContent=(d=(l=c.def.header)!=null?l:c.def.field)!=null?d:c.id,u.append(f);let p=()=>{if(u.querySelector(".fg-filter"))return;let x=e.menu.filterSection(c.id,()=>{});x&&u.append(x)};u.open&&p(),u.addEventListener("toggle",()=>{u.open?(this.open.add(c.id),p()):this.open.delete(c.id)}),a.append(u)}this.el.replaceChildren(r,a)}};var Hr=["sum","avg","min","max","count"],je=class{constructor(e){this.grid=e;this.draft={rows:[],columns:[],values:[]};this.el=k("div","fg-pivot-panel")}apply(){this.grid.getPivot()?this.grid.setPivot(this.draft):this.refresh()}refresh(){var d;let{grid:e}=this,t=e.store.state.locale,n=e.getPivot();n&&(this.draft={rows:[...n.rows],columns:[...(d=n.columns)!=null?d:[]],values:n.values.map(c=>({colId:c.colId,aggFunc:typeof c.aggFunc=="string"?c.aggFunc:"sum"}))});let r=e.sourceLeaves(),o=c=>{var f,p,x;let u=(f=r.find(M=>M.id===c))==null?void 0:f.def;return(x=(p=u==null?void 0:u.header)!=null?p:u==null?void 0:u.field)!=null?x:c},i=k("label","fg-pivot-mode"),a=k("input","fg-checkbox",{type:"checkbox"});a.checked=!!n,a.addEventListener("click",()=>e.setPivot(a.checked?this.draft:null)),i.append(a,document.createTextNode(t.pivotMode));let l=(c,u)=>{let f=k("div","fg-pivot-zone");f.dataset.zone=c;let p=k("div","fg-pivot-zone-title");p.textContent=u;let x=k("div","fg-pivot-chips"),M=c==="values"?this.draft.values.map(y=>y.colId):this.draft[c];M.forEach((y,g)=>{let w=k("span","fg-group-chip");w.dataset.col=y;let C=k("span","fg-group-chip-label");if(C.textContent=o(y),w.append(C),c==="values"){let E=k("select","fg-pivot-agg",{"aria-label":`${o(y)} ${t.pivotValues}`});for(let m of Hr){let R=k("option");R.value=m,R.textContent=t[m],E.append(R)}E.value=this.draft.values[g].aggFunc,E.addEventListener("change",()=>{this.draft.values[g].aggFunc=E.value,this.apply()}),w.append(E)}let S=k("button","fg-group-chip-remove",{type:"button","aria-label":`${t.ungroup}: ${o(y)}`});S.textContent="\xD7",S.addEventListener("click",()=>{c==="values"?this.draft.values.splice(g,1):this.draft[c].splice(g,1),this.apply()}),w.append(S),x.append(w)});let v=k("select","fg-pivot-add",{"aria-label":`${u}: ${t.addColumn}`}),h=k("option");h.value="",h.textContent=t.addColumn,v.append(h);for(let y of r){if(M.includes(y.id)||c==="values"&&y.def.type!=="number")continue;let g=k("option");g.value=y.id,g.textContent=o(y.id),v.append(g)}return v.addEventListener("change",()=>{v.value&&(c==="values"?this.draft.values.push({colId:v.value,aggFunc:"sum"}):this.draft[c].push(v.value),this.apply())}),f.append(p,x,v),f};this.el.replaceChildren(i,l("rows",t.pivotRows),l("columns",t.pivotColumns),l("values",t.pivotValues))}};var Br=4,Xe=s=>!P(s.id)&&(s.children?s.children.some(Xe):s.def.chooser!==!1),It=s=>{var e,t;return(t=(e=s.def.header)!=null?e:s.def.field)!=null?t:s.id},Ye=class{constructor(e){this.grid=e;this.collapsed=new Set;this.el=k("div","fg-chooser"),this.search=k("input","fg-input fg-chooser-search",{type:"search"});let t=k("label","fg-chooser-all");this.allBox=k("input","fg-checkbox",{type:"checkbox"}),this.allText=k("span"),t.append(this.allBox,this.allText),this.list=k("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 r=n.target,o=this.nodeOf(r);o&&this.setVisible(this.leavesOf(o),r.checked)}),this.list.addEventListener("click",n=>{let r=n.target.closest(".fg-chooser-caret"),o=r&&this.nodeOf(r);o&&(this.collapsed.has(o.id)?this.collapsed.delete(o.id):this.collapsed.add(o.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=[],r=(a,l)=>{for(let d of a)!Xe(d)||t&&!this.subtreeMatches(d,t)||(n.push(this.item(d,l)),d.children&&(t||!this.collapsed.has(d.id))&&r(d.children,l+1))};r(this.grid.columns.roots(),0),this.list.replaceChildren(...n);let o=this.matchingLeaves(),i=o.filter(a=>!a.hide).length;this.allBox.checked=o.length>0&&i===o.length,this.allBox.indeterminate=i>0&&i<o.length}query(){return this.search.value.trim().toLowerCase()}subtreeMatches(e,t){for(let n=e;n;n=n.parent)if(It(n).toLowerCase().includes(t))return!0;return!!e.children&&e.children.some(n=>Xe(n)&&this.subtreeMatches(n,t))}leavesOf(e){return Xe(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=k("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 r=k("span","fg-chooser-handle",{"aria-hidden":"true"});if(r.textContent="\u22EE\u22EE",n.append(r),e.children){let d=!this.collapsed.has(e.id),c=k("button","fg-chooser-caret",{type:"button",tabindex:"-1","aria-hidden":"true"});c.textContent=d?"\u25BE":"\u25B8",n.setAttribute("aria-expanded",String(d)),n.append(c)}let o=this.leavesOf(e),i=o.filter(d=>!d.hide).length,a=k("input","fg-checkbox",{type:"checkbox","aria-label":It(e)});a.checked=o.length>0&&i===o.length,a.indeterminate=i>0&&i<o.length,a.disabled=o.every(d=>d.def.lockVisible);let l=k("span","fg-chooser-label");if(l.textContent=It(e),n.append(a,l),!e.children&&e.pinned){let d=k("span","fg-chooser-pin");d.textContent=e.pinned==="left"?"\u21E4":"\u21E5",n.append(d)}return n}onPointerDown(e){let t=e.target.closest(".fg-chooser-handle"),n=t==null?void 0:t.closest(".fg-chooser-item"),r=n&&this.nodeOf(n);if(!n||!r||e.button!==0)return;e.preventDefault();let o=new Set(this.grid.columns.siblings(r.id).map(p=>p.id).filter(p=>p!==r.id)),i=[...this.list.querySelectorAll(".fg-chooser-item")].filter(p=>o.has(p.dataset.col)),a=e.clientY,l=!1,d=-1,c=k("div","fg-chooser-marker"),u=p=>{if(!l){if(Math.abs(p.clientY-a)<Br||!i.length)return;l=!0,n.classList.add("fg-dragging"),this.list.append(c)}d=i.filter(v=>{let h=v.getBoundingClientRect();return p.clientY>h.top+h.height/2}).length;let x=this.list.getBoundingClientRect().top-this.list.scrollTop,M=d<i.length?i[d].getBoundingClientRect().top:i[i.length-1].getBoundingClientRect().bottom;c.style.top=`${M-x-1}px`},f=()=>{if(window.removeEventListener("pointermove",u),window.removeEventListener("pointerup",f),c.remove(),n.classList.remove("fg-dragging"),!l||d<0)return;let p=this.grid.columns.siblings(r.id).map(v=>v.id).filter(v=>v!==r.id),x=d<i.length?p.indexOf(i[d].dataset.col):p.indexOf(i[i.length-1].dataset.col)+1;x=Math.max(p.filter(P).length,x);let M=this.grid.columns.siblings(r.id).findIndex(v=>v.id===r.id);x!==M&&(this.grid.columns.move(r.id,x),this.grid.layoutChanged(),this.grid.events.emit("columnMove",{colId:r.id,toIndex:x}))};window.addEventListener("pointermove",u),window.addEventListener("pointerup",f)}},Ze=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=k("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=k("div","fg-chooser-head"),r=k("span","fg-menu-title");r.textContent=e.chooseColumns;let o=k("button","fg-chooser-close",{type:"button","aria-label":e.close});o.textContent="\xD7",o.addEventListener("click",()=>this.close()),n.append(r,o),this.panel=new Ye(this.grid),t.append(n,this.panel.el),ie(this.grid.renderer.root).append(t);let i=this.grid.renderer.root.getBoundingClientRect(),a=t.offsetWidth||280;t.style.left=`${Math.max(4,Math.min(i.right-a-8,window.innerWidth-a-4))}px`,t.style.top=`${Math.max(4,i.top+8)}px`,this.popup=t;let l=c=>{ve(c,t)||this.close()},d=c=>{c.key==="Escape"&&this.close()};document.addEventListener("pointerdown",l,!0),document.addEventListener("keydown",d,!0),this.off.push(()=>document.removeEventListener("pointerdown",l,!0),()=>document.removeEventListener("keydown",d,!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}},Je=class{constructor(e,t,n=["columns","filters"]){this.grid=e;this.tabs=new Map;this.el=k("div","fg-sidebar"),this.panelHost=k("div","fg-sidebar-panel"),this.columns=new Ye(e),this.filters=new We(e),this.pivot=new je(e);let r=n.filter(i=>i==="columns"||i==="filters"||i==="pivot");r.length||r.push("columns"),this.current=r[0];let o=k("div","fg-sidebar-tabs",{role:"tablist"});for(let i of r){let a=k("button","fg-sidebar-tab",{type:"button",role:"tab"});a.dataset.panel=i,a.addEventListener("click",()=>this.toggle(!(this.isOpen&&this.current===i),i)),this.tabs.set(i,a),o.append(a)}this.el.append(this.panelHost,o),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 Or=()=>typeof navigator!="undefined"&&/Mac|iPhone|iPad/.test(navigator.platform||navigator.userAgent||""),Me=s=>Or()?`\u2318${s}`:`Ctrl+${s}`,Qe=class{constructor(e){this.grid=e;this.popup=null;this.off=[];let t=e.renderer.root,n=r=>this.onContextMenu(r);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,r=n.closest(".fg-header-cell");if(r){let i=r.dataset.col;if(!i||P(i)||r.classList.contains("fg-header-group"))return;e.preventDefault(),this.close(),t.menu.open(i,r);return}let o=t.renderer.cellAt(n);o&&(e.preventDefault(),t.renderer.gridEl.focus({preventScroll:!0}),!P(o.colId)&&!t.rangeContains(o.rowIndex,o.colId)&&(t.setFocus(o.rowIndex,o.colId),t.setRange({start:o,end:o})),this.open(e.clientX,e.clientY,o.rowIndex,o.colId))}openAtFocus(){var o;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)}"]`),r=(o=n==null?void 0:n.getBoundingClientRect())!=null?o:t;this.open(r.left+8,r.bottom,e.rowIndex,e.colId)}defaultItems(e){let{grid:t}=this,n=t.store.state.locale,r=t.columns.getNode(e),o=r==null?void 0:r.def,i=!!o&&!P(e),a=[{label:n.copy,shortcut:Me("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:Me("V"),action:()=>this.pasteFromClipboard()}];(t.history.canUndo()||t.history.canRedo())&&a.push("separator",{label:n.undo,shortcut:Me("Z"),action:()=>t.undo(),disabled:!t.history.canUndo()},{label:n.redo,shortcut:Me("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()}),i&&(a.push("separator",{label:n.autosizeThis,action:()=>t.autoSize([e])}),o.lockVisible||a.push({label:n.hideColumn,action:()=>t.setColumnsVisible([e],!1)}),a.push({label:n.pinLeft,action:()=>t.setPinned(e,"left"),disabled:r.pinned==="left"},{label:n.pinRight,action:()=>t.setPinned(e,"right"),disabled:r.pinned==="right"},{label:n.unpin,action:()=>t.setPinned(e,null),disabled:!r.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 l=t.rangeBounds();return l&&(l.r2>l.r1||l.c2>l.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",Me("V")));if(!(e!=null&&e.readText))return t();e.readText().then(n=>this.grid.pasteText(n),t)}open(e,t,n,r){var w,C,S;this.close(),this.grid.menu.close();let{grid:o}=this,i=o.rowModel.getRow(n),a=o.columns.getColumn(r),l=this.defaultItems(r),d={row:(w=i==null?void 0:i.data)!=null?w:null,rowIndex:n,colId:r,value:i&&a&&!P(r)?B(a.def,i.data):void 0,defaultItems:l},c=o.options.contextMenu,u=l;if(typeof c=="function")try{u=c(d)}catch{u=l}let f=o.store.state.locale,p=k("div",`fg-menu fg-context-menu fg-theme-${o.store.state.theme}`,{role:"menu","aria-label":f.columnMenu});o.applyFontTo(p);let x=!0;for(let E of u){if(E==="separator"){x||p.append(k("div","fg-cm-sep",{role:"separator"})),x=!0;continue}let m=k("button","fg-menu-item fg-cm-item",{type:"button",role:"menuitem"}),R=k("span","fg-cm-label");if(R.textContent=E.label,m.append(R),E.shortcut){let I=k("span","fg-cm-shortcut");I.textContent=E.shortcut,m.append(I)}m.disabled=!!E.disabled,m.addEventListener("click",()=>{this.close(),E.action()}),p.append(m),x=!1}(C=p.lastElementChild)!=null&&C.classList.contains("fg-cm-sep")&&p.lastElementChild.remove(),ie(this.grid.renderer.root).append(p);let M=p.offsetWidth||220,v=p.offsetHeight||300;p.style.left=`${Math.max(4,Math.min(e,window.innerWidth-M-4))}px`,p.style.top=`${Math.max(4,Math.min(t,window.innerHeight-v-4))}px`,this.popup=p;let h=E=>{ve(E,p)||this.close()},y=E=>{if(E.key==="Escape"){this.close(),o.renderer.gridEl.focus();return}if(E.key!=="ArrowDown"&&E.key!=="ArrowUp")return;let m=[...p.querySelectorAll("button:not(:disabled)")],R=m.indexOf(bn(p)),I=m[(R+(E.key==="ArrowDown"?1:m.length-1)+m.length)%m.length];I==null||I.focus(),E.preventDefault()},g=()=>this.close();document.addEventListener("pointerdown",h,!0),document.addEventListener("keydown",y,!0),o.renderer.scroller.addEventListener("scroll",g,{passive:!0}),this.off.push(()=>document.removeEventListener("pointerdown",h,!0),()=>document.removeEventListener("keydown",y,!0),()=>o.renderer.scroller.removeEventListener("scroll",g)),(S=p.querySelector("button:not(:disabled)"))==null||S.focus()}close(){var e;for(let t of this.off)t();this.off=[],(e=this.popup)==null||e.remove(),this.popup=null}};var et=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,r=null,o=n.renderer.root,i=l=>{let d=n.renderer.cellAt(Se(n.renderer.root,l.clientX,l.clientY)),c=d&&n.columns.getColumn(d.colId);if(!d||!c||P(c.id))return;let u=d.rowIndex>t.r2?d.rowIndex-t.r2:d.rowIndex<t.r1?d.rowIndex-t.r1:0,f=c.index>t.c2?c.index-t.c2:c.index<t.c1?c.index-t.c1:0;!u&&!f?r=null:Math.abs(u)>=Math.abs(f)?r={r1:Math.min(t.r1,d.rowIndex),r2:Math.max(t.r2,d.rowIndex),c1:t.c1,c2:t.c2}:r={r1:t.r1,r2:t.r2,c1:Math.min(t.c1,c.index),c2:Math.max(t.c2,c.index)},this.showPreview(r)},a=()=>{if(window.removeEventListener("pointermove",i),window.removeEventListener("pointerup",a),this.preview.remove(),o.classList.remove("fg-range-dragging"),!r)return;let l=n.columns.displayed();n.fillRange({start:{rowIndex:r.r1,colId:l[r.c1].id},end:{rowIndex:r.r2,colId:l[r.c2].id}})};o.classList.add("fg-range-dragging"),window.addEventListener("pointermove",i),window.addEventListener("pointerup",a)};this.handle=k("div","fg-fill-handle",{"aria-hidden":"true"}),this.preview=k("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||P(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(),r=!!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(!r){this.handle.remove();return}let o=this.grid.renderer.root.getBoundingClientRect(),i=r.getBoundingClientRect();this.handle.style.left=`${(this.grid.renderer.rtl?i.left:i.right)-o.left-4}px`,this.handle.style.top=`${i.bottom-o.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 r=this.grid.renderer.root.getBoundingClientRect(),o=t.getBoundingClientRect(),i=n.getBoundingClientRect();Object.assign(this.preview.style,{left:`${o.left-r.left}px`,top:`${o.top-r.top}px`,width:`${i.right-o.left}px`,height:`${i.bottom-o.top}px`}),this.preview.isConnected||this.grid.renderer.root.append(this.preview)}destroy(){this.handle.remove(),this.preview.remove()}};var zr=1e4,tt=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,r=t.columns.displayed().filter(a=>!P(a.id)),o=r.map(a=>K(a.def,n)),i=t.rowModel.rows();e:for(let a=0;a<i.length;a++)if(!i[a].kind){for(let l=0;l<r.length;l++)if(o[l](B(r[l].def,i[a].data)).toLowerCase().includes(this.query)&&(this.lookup.set(`${a}|${r[l].id}`,this.matches.length),this.matches.push({rowIndex:a,colId:r[l].id}),this.matches.length>=zr))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=k("div","fg-findbar",{role:"search"}),n=k("input","fg-input",{type:"search",placeholder:e.findPlaceholder,"aria-label":e.findPlaceholder});this.countEl=k("span","fg-findbar-count",{"aria-live":"polite"});let r=(o,i,a)=>{let l=k("button","fg-findbar-btn",{type:"button","aria-label":o,title:o});return l.textContent=i,l.addEventListener("click",a),l};t.append(n,this.countEl,r(e.findPrevious,"\u2191",()=>this.previous()),r(e.findNext,"\u2193",()=>this.next()),r(e.close,"\xD7",()=>this.closeBar())),n.addEventListener("input",()=>this.find(n.value)),t.addEventListener("keydown",o=>{o.stopPropagation(),o.key==="Escape"?(o.preventDefault(),this.closeBar()):o.key==="Enter"&&(o.preventDefault(),o.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.gridEl.focus({preventScroll:!0})}};var Gr=864e5;function Ee(s,e){if(!s.length||e<=0)return[];let t=()=>Array.from({length:e},(o,i)=>s[i%s.length]);if(s.every(o=>typeof o=="number"&&!Number.isNaN(o))){let o=s;if(o.length===1)return t();let i=o[1]-o[0];if(!o.every((l,d)=>d===0||Math.abs(l-o[d-1]-i)<1e-9))return t();let a=o[o.length-1];return Array.from({length:e},(l,d)=>Math.round((a+i*(d+1))*1e12)/1e12)}let n=s.map(o=>o instanceof Date||typeof o=="string"&&/^\d{4}-\d{2}-\d{2}/.test(o)?te(o):null);if(n.every(Boolean)&&s.length>=2){let o=n.map(a=>Math.round(a.getTime()/Gr)),i=o[1]-o[0];if(o.every((a,l)=>l===0||a-o[l-1]===i)){let a=n[n.length-1],l=s[s.length-1]instanceof Date;return Array.from({length:e},(d,c)=>{let u=new Date(a.getFullYear(),a.getMonth(),a.getDate()+i*(c+1));return l?u:Y(u)})}return t()}let r=s[s.length-1];if(typeof r=="string"&&!O(r)&&s.every(o=>typeof o=="string")){let o=/^(.*?)(\d+)$/.exec(r);if(o){let i=o[2].length,a=Number(o[2]);return Array.from({length:e},(l,d)=>`${o[1]}${String(a+d+1).padStart(i,"0")}`)}}return t()}function Dt(s){let e=t=>/[\t\n\r"]/.test(t)?`"${t.replace(/"/g,'""')}"`:t;return s.map(t=>t.map(e).join(" ")).join(`\r
2
- `)}function kn(s){return Tt(s," ")}function Tt(s,e){if(!s)return[];let t=[],n=[],r="",o=0,i=!1,a=!0;for(;o<s.length;){let l=s[o];if(i){if(l==='"'){if(s[o+1]==='"'){r+='"',o+=2;continue}i=!1,o++;continue}r+=l,o++;continue}if(l==='"'&&a){i=!0,a=!1,o++;continue}if(l===e){n.push(r),r="",a=!0,o++;continue}if(l==="\r"||l===`
3
- `){n.push(r),t.push(n),n=[],r="",a=!0,o+=l==="\r"&&s[o+1]===`
4
- `?2:1;continue}r+=l,a=!1,o++}return(r!==""||n.length||!a)&&(n.push(r),t.push(n)),t}function nt(s,e,t){var n;if(O(e))return"";switch(s.type){case"number":{let r=typeof e=="number"?e:Number(e);return Number.isNaN(r)?String(e):String(r)}case"date":return(n=Y(e))!=null?n:String(e);case"boolean":return e===!0?"TRUE":e===!1?"FALSE":String(e);default:return K(s,t)(e)}}var Vr=new Set(["true","1","y","yes","\uC608","o","on"]),Ur=new Set(["false","0","n","no","\uC544\uB2C8\uC624","x","off"]);function qr(s){let e=s.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 r=Number(e);return n&&(r/=100),t&&(r=-r),{ok:!0,value:Math.round(r*1e12)/1e12}}function Rn(s,e,t){let n=new Date(s,e-1,t);return n.getFullYear()===s&&n.getMonth()===e-1&&n.getDate()===t?n:null}function Kr(s,e){let t=s.trim();if(!t)return{ok:!0,value:null};let n=null,r=/^(\d{4})\s*[-./년]\s*(\d{1,2})\s*[-./월]\s*(\d{1,2})\s*[.일]?$/.exec(t);return r?n=Rn(+r[1],+r[2],+r[3]):(r=/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/.exec(t))?n=Rn(+r[3],+r[1],+r[2]):/^\d{4}-\d{2}-\d{2}T/.test(t)&&(n=te(t)),n?{ok:!0,value:e instanceof Date?n:Y(n)}:{ok:!1}}function rt(s,e,t){switch(s.type){case"number":return qr(e);case"date":return Kr(e,t);case"boolean":{let n=e.trim().toLowerCase();return n?Vr.has(n)?{ok:!0,value:!0}:Ur.has(n)?{ok:!0,value:!1}:{ok:!1}:{ok:!0,value:null}}default:return{ok:!0,value:e}}}var _r=s=>s.map(e=>e!==null&&typeof e=="object"&&"value"in e?e:{value:e,label:String(e),disabled:!1}),ce=s=>String(s).padStart(2,"0");function Wr(s){let e=s instanceof Date?s:typeof s=="string"&&s?new Date(s):null;return!e||Number.isNaN(e.getTime())?"":`${e.getFullYear()}-${ce(e.getMonth()+1)}-${ce(e.getDate())}T${ce(e.getHours())}:${ce(e.getMinutes())}`}function jr(s){if(s instanceof Date)return`${ce(s.getHours())}:${ce(s.getMinutes())}`;let e=typeof s=="string"?/(\d{1,2}):(\d{2})/.exec(s):null;return e?`${ce(Number(e[1]))}:${e[2]}`:""}var ot=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(P(t))return!1;let n=this.grid.columns.getColumn(t);if(!(n!=null&&n.def.field)||e<0||e>=this.grid.rowModel.getRowCount())return!1;let r=this.grid.rowModel.getRow(e);return!r.kind&&ne(n.def,r.data,e)}start(e,t,n){var S,E,m,R,I;if(this.cur&&this.commit(null),!this.canEdit(e,t))return!1;let{grid:r}=this;if(r.veto("beforeEdit",{row:r.rowModel.getRow(e).data,rowIndex:e,colId:t}))return!1;let{renderer:o}=r,i=r.columns.getColumn(t),a=i.def,l=r.rowModel.getRow(e).data,d=l[a.field];r.setFocus(e,t),o.ensureVisible(e,t),o.render();let c=o.root.querySelector(`.fg-row[data-row="${e}"] .fg-cell[data-col="${CSS.escape(t)}"]`),u=o.root.getBoundingClientRect(),f=c==null?void 0:c.getBoundingClientRect(),p=k("div","fg-editor");p.style.left=`${((S=f==null?void 0:f.left)!=null?S:u.left)-u.left}px`,p.style.top=`${((E=f==null?void 0:f.top)!=null?E:u.top)-u.top}px`,p.style.width=`${(f==null?void 0:f.width)||i.width}px`,p.style.height=`${(f==null?void 0:f.height)||o.opts.rowHeight}px`;let x,M,v=()=>{},h=a.editor;if(typeof h=="function"){let b=h({value:d,row:l,column:a,initialText:n});x=b.el,M=()=>({value:b.getValue()}),v=()=>{var L;return(L=b.destroy)==null?void 0:L.call(b)},p.append(x),queueMicrotask(()=>{var L;return(L=b.focus)==null?void 0:L.call(b)})}else if((h==null?void 0:h.type)==="select"){let b=_r(typeof h.options=="function"?h.options(l):h.options),L=k("select","fg-editor-control");b.forEach((D,$)=>{var T;let A=k("option");A.value=String($),A.textContent=(T=D.label)!=null?T:String(D.value),A.disabled=!!D.disabled,L.append(A)}),L.selectedIndex=Math.max(0,b.findIndex(D=>Object.is(D.value,d))),x=L,M=()=>{var D,$;return{value:($=(D=b[L.selectedIndex])==null?void 0:D.value)!=null?$:null}},p.append(L)}else if((h==null?void 0:h.type)==="time"||(h==null?void 0:h.type)==="datetime"||!h&&a.type==="date"&&a.format==="datetime"){let b=(h==null?void 0:h.type)==="time",L=k("input","fg-editor-control",{type:b?"time":"datetime-local"});L.value=b?jr(d):Wr(d),x=L,M=()=>L.value?b?{value:L.value}:{value:d instanceof Date?new Date(L.value):L.value}:{value:null},p.append(L)}else{let L=(h==null?void 0:h.type)==="textarea"?k("textarea","fg-editor-control"):k("input","fg-editor-control");L instanceof HTMLInputElement&&(L.type=a.type==="date"&&n===void 0?"date":"text",a.type==="number"&&(L.inputMode="decimal"));let D=a.type==="date"?(m=Y(d))!=null?m:"":O(d)?"":String(d);L.value=n!=null?n:D,x=L,M=()=>({text:L.value}),p.append(L)}x.setAttribute("aria-label",(I=(R=a.header)!=null?R:a.field)!=null?I:t);let y=k("div","fg-editor-msg",{role:"alert"});p.append(y);let g=b=>{if(b.stopPropagation(),b.key==="Escape")b.preventDefault(),this.cancel();else if(b.key==="Enter"){if(x instanceof HTMLTextAreaElement&&!(b.ctrlKey||b.metaKey))return;b.preventDefault(),this.commit(b.shiftKey?"up":"down")}else b.key==="Tab"&&(b.preventDefault(),this.commit(b.shiftKey?"left":"right"))},w=b=>{var L;((L=this.cur)==null?void 0:L.wrap)===p&&!p.contains(b.relatedTarget)&&this.commit(null)},C=()=>this.commit(null);return p.addEventListener("keydown",g),p.addEventListener("focusout",w),o.scroller.addEventListener("scroll",C,{passive:!0}),o.root.append(p),this.cur={rowIndex:e,colId:t,row:l,def:a,wrap:p,read:M,dispose:()=>{p.removeEventListener("keydown",g),p.removeEventListener("focusout",w),o.scroller.removeEventListener("scroll",C),v(),p.remove()}},typeof h!="function"&&(x.focus(),n===void 0&&x instanceof HTMLInputElement&&x.type==="text"&&x.select()),r.events.emit("editStart",{rowIndex:e,colId:t}),!0}commit(e){let t=this.cur;if(!t)return!1;let{grid:n}=this,r=n.store.state.locale,o=t.def.field,i=t.row[o],a=t.read(),l;if("text"in a&&t.def.formulas&&ge(a.text.trim()))l=a.text.trim();else if("text"in a){let c=rt(t.def,a.text,i);if(!c.ok)return this.fail(a.text,r.invalidValue);l=c.value}else l=a.value;let d=n.cellError(t.def,t.row,l);return d!==null?this.fail(l,d):(this.close(!0),n.applyEdit(t.rowIndex,t.colId,l),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.gridEl.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:r}=this,o=r.rowModel.getRowCount();if(n==="down"||n==="up"){let c=Math.max(0,Math.min(o-1,e+(n==="down"?1:-1)));r.setFocus(c,t),r.renderer.ensureVisible(c,t);return}let i=r.columns.displayed().filter(c=>this.canEdit(e,c.id)||c.def.editable);if(!i.length)return;let a=n==="right"?1:-1,l=e,d=i.findIndex(c=>c.id===t)+a;d>=i.length&&(d=0,l++),d<0&&(d=i.length-1,l--),!(l<0||l>=o)&&this.start(l,i[d].id)}};var st=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 Sn=(s,e)=>s instanceof Date&&e instanceof Date?s.getTime()===e.getTime():Object.is(s,e),it=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&&!Sn(n[t],e[t])}diff(e,t){let n=this.originals.get(e);return n?t.filter(r=>!Sn(n[r],e[r])):[]}get size(){return this.originals.size+this.created.size+this.deleted.size}reset(){this.originals.clear(),this.created.clear(),this.deleted.clear()}};function Le(s){return{r1:Math.min(s.start.rowIndex,s.end.rowIndex),r2:Math.max(s.start.rowIndex,s.end.rowIndex),c1:Math.min(s.start.colIndex,s.end.colIndex),c2:Math.max(s.start.colIndex,s.end.colIndex)}}function Mn(s,e,t){return e>=s.r1&&e<=s.r2&&t>=s.c1&&t<=s.c2}var Xr=5;function En(s,e){let t=r=>s(r),n=r=>{window.removeEventListener("pointermove",t),window.removeEventListener("pointerup",n),window.removeEventListener("pointercancel",n),e(r)};window.addEventListener("pointermove",t),window.addEventListener("pointerup",n),window.addEventListener("pointercancel",n)}function Yr(s,e,t){let n=s.columns.getColumn(t);if(!n)return;let r=e.clientX,o=n.width;s.renderer.root.classList.add("fg-resizing"),En(i=>{s.columns.setWidth(t,o+(i.clientX-r)*(s.renderer.rtl?-1:1)),s.layoutChanged()},()=>{var a,l;s.renderer.root.classList.remove("fg-resizing");let i=(l=(a=s.columns.getColumn(t))==null?void 0:a.width)!=null?l:o;i!==o&&s.events.emit("columnResize",{colId:t,width:i})})}function Zr(s,e){let t=s.columns.getNode(e);return!!s.groupPanel&&!!t&&!t.children&&!s.options.treeData&&!s.getGroupBy().includes(e)}function Jr(s,e,t,n){var l,d;let r=new Set(s.columns.siblings(e).map(c=>c.id).filter(c=>c!==e&&!P(c))),o=[...n.querySelectorAll(".fg-header-cell")].filter(c=>r.has(c.dataset.col)).map(c=>({id:c.dataset.col,el:c})),i=k("div",`fg-drag-ghost fg-theme-${s.store.state.theme}`);i.textContent=(d=(l=t.querySelector(".fg-header-label"))==null?void 0:l.textContent)!=null?d:"",s.applyFontTo(i),ie(s.renderer.root).append(i);let a=k("div","fg-drop-marker");return a.style.height=`${s.renderer.headerEl.offsetHeight}px`,s.renderer.root.append(a),t.classList.add("fg-dragging"),{ghost:i,marker:a,cell:t,sibs:o,target:-1,overPanel:!1}}function Qr(s,e,t,n,r){var c,u;t.ghost.style.transform=`translate(${n+12}px, ${r+8}px)`,t.overPanel=Zr(s,e)&&!!((c=s.groupPanel)!=null&&c.contains(n,r)),(u=s.groupPanel)==null||u.highlight(t.overPanel),t.marker.hidden=t.overPanel;let o=0;for(let f of t.sibs){let p=f.el.getBoundingClientRect();(s.renderer.rtl?n<p.left+p.width/2:n>p.left+p.width/2)&&o++}t.target=o;let i=s.renderer.root.getBoundingClientRect().left,a=f=>s.renderer.rtl?f.getBoundingClientRect().right:f.getBoundingClientRect().left,l=f=>s.renderer.rtl?f.getBoundingClientRect().left:f.getBoundingClientRect().right,d=o<t.sibs.length?a(t.sibs[o].el):t.sibs.length?l(t.sibs[t.sibs.length-1].el):a(t.cell);t.marker.style.left=`${d-i-1}px`}function eo(s,e,t){var a;if(t.ghost.remove(),t.marker.remove(),t.cell.classList.remove("fg-dragging"),t.overPanel){(a=s.groupPanel)==null||a.highlight(!1),s.setGroupBy([...s.getGroupBy(),e]);return}if(t.target<0||!t.sibs.length)return;let n=s.columns.siblings(e),r=n.findIndex(l=>l.id===e),o=n.map(l=>l.id).filter(l=>l!==e),i=t.target<t.sibs.length?o.indexOf(t.sibs[t.target].id):o.indexOf(t.sibs[t.sibs.length-1].id)+1;i=Math.max(o.filter(P).length,i),i!==r&&(s.columns.move(e,i),s.layoutChanged(),s.events.emit("columnMove",{colId:e,toIndex:i}))}function to(s,e,t,n){let r=s.columns.getNode(t),o=n.closest(".fg-header-pane");if(!r||!o)return;let i=e.clientX,a=null;En(l=>{if(!a){if(Math.abs(l.clientX-i)<Xr)return;a=Jr(s,t,n,o)}Qr(s,t,a,l.clientX,l.clientY)},l=>{a?eo(s,t,a):!r.children&&de(r.def)&&s.toggleSort(t,l.shiftKey||l.ctrlKey||l.metaKey)})}function Ln(s){let e=s.renderer.headerEl,t=r=>{if(r.button!==0)return;let o=r.target,i=o.closest(".fg-header-cell"),a=i==null?void 0:i.dataset.col;!i||!a||P(a)||o.closest(".fg-menu-btn")||o.closest("button, a, input, select, textarea, [data-fg-no-sort]")&&o.closest(".fg-header-label")||(r.preventDefault(),o.closest(".fg-resize")?Yr(s,r,a):to(s,r,a,i))},n=r=>{var a;let o=r.target,i=o.closest(".fg-menu-btn");if(i){let l=(a=i.closest(".fg-header-cell"))==null?void 0:a.dataset.col;l&&s.menu.toggle(l,i);return}o.closest(".fg-select-all")&&s.toggleSelectAll()};return e.addEventListener("pointerdown",t),e.addEventListener("click",n),()=>{e.removeEventListener("pointerdown",t),e.removeEventListener("click",n)}}var no=/^[=+\-@\t\r]/;function In(s,e=","){let t=n=>{let r=n.value;return n.text&&no.test(r)&&(r=`'${r}`),r.includes(e)||/["\r\n]/.test(r)||/^\s|\s$/.test(r)?`"${r.replace(/"/g,'""')}"`:r};return s.map(n=>n.map(t).join(e)).join(`\r
5
- `)}function $t(s){let e=s.slice(0,s.search(/\r?\n|$/)),t=i=>e.split(i).length-1,n=t(" "),r=t(";"),o=t(",");return n&&n>=o&&n>=r?" ":r>o?";":","}function at(s,e=$t(s)){return Tt(s.replace(/^\uFEFF/,""),e)}var ro=(()=>{let s=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;s[e]=t>>>0}return s})();function oo(s){let e=4294967295;for(let t=0;t<s.length;t++)e=ro[(e^s[t])&255]^e>>>8;return(e^4294967295)>>>0}var Dn=new TextEncoder;function Tn(s){let e=s.map(c=>{let u=Dn.encode(c.name),f=typeof c.data=="string"?Dn.encode(c.data):c.data;return{name:u,data:f,crc:oo(f),offset:0}}),t=e.reduce((c,u)=>c+30+u.name.length+u.data.length,0),n=e.reduce((c,u)=>c+46+u.name.length,0),r=new Uint8Array(t+n+22),o=new DataView(r.buffer),i=0,a=0,l=33;for(let c of e)c.offset=i,o.setUint32(i,67324752,!0),o.setUint16(i+4,20,!0),o.setUint16(i+6,2048,!0),o.setUint16(i+8,0,!0),o.setUint16(i+10,a,!0),o.setUint16(i+12,l,!0),o.setUint32(i+14,c.crc,!0),o.setUint32(i+18,c.data.length,!0),o.setUint32(i+22,c.data.length,!0),o.setUint16(i+26,c.name.length,!0),o.setUint16(i+28,0,!0),r.set(c.name,i+30),r.set(c.data,i+30+c.name.length),i+=30+c.name.length+c.data.length;let d=i;for(let c of e)o.setUint32(i,33639248,!0),o.setUint16(i+4,20,!0),o.setUint16(i+6,20,!0),o.setUint16(i+8,2048,!0),o.setUint16(i+10,0,!0),o.setUint16(i+12,a,!0),o.setUint16(i+14,l,!0),o.setUint32(i+16,c.crc,!0),o.setUint32(i+20,c.data.length,!0),o.setUint32(i+24,c.data.length,!0),o.setUint16(i+28,c.name.length,!0),o.setUint16(i+30,0,!0),o.setUint16(i+32,0,!0),o.setUint16(i+34,0,!0),o.setUint16(i+36,0,!0),o.setUint32(i+38,0,!0),o.setUint32(i+42,c.offset,!0),r.set(c.name,i+46),i+=46+c.name.length;return o.setUint32(i,101010256,!0),o.setUint16(i+8,e.length,!0),o.setUint16(i+10,e.length,!0),o.setUint32(i+12,i-d,!0),o.setUint32(i+16,d,!0),r}var lt=s=>s.length>4&&s[0]===80&&s[1]===75&&s[2]===3&&s[3]===4;async function so(s){if(typeof DecompressionStream=="undefined")throw new Error("This browser cannot read compressed xlsx files (no DecompressionStream)");let e=new Response(s).body.pipeThrough(new DecompressionStream("deflate-raw"));return new Uint8Array(await new Response(e).arrayBuffer())}async function $n(s){let e=new DataView(s.buffer,s.byteOffset,s.byteLength),t=-1;for(let a=s.length-22;a>=Math.max(0,s.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),r=e.getUint32(t+16,!0),o=new TextDecoder,i=new Map;for(let a=0;a<n;a++){if(e.getUint32(r,!0)!==33639248)throw new Error("Broken zip directory");let l=e.getUint16(r+10,!0),d=e.getUint32(r+20,!0),c=e.getUint16(r+28,!0),u=e.getUint16(r+30,!0),f=e.getUint16(r+32,!0),p=e.getUint32(r+42,!0),x=o.decode(s.subarray(r+46,r+46+c)),M=e.getUint16(p+26,!0),v=e.getUint16(p+28,!0),h=p+30+M+v,y=s.subarray(h,h+d);if(l===0)i.set(x,y);else if(l===8)i.set(x,await so(y));else throw new Error(`Unsupported zip compression ${l}`);r+=46+c+u+f}return i}function Pt(s){let e="";for(let t=s+1;t>0;t=Math.floor((t-1)/26))e=String.fromCharCode(65+(t-1)%26)+e;return e}var Pn=Date.UTC(1899,11,30),An=864e5;function io(s){return(Date.UTC(s.getFullYear(),s.getMonth(),s.getDate(),s.getHours(),s.getMinutes(),s.getSeconds(),s.getMilliseconds())-Pn)/An}function ao(s){let e=new Date(Math.round(s*An)+Pn);return new Date(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds())}var lo=/[\u0000-\u0008\u000b\u000c\u000e-\u001f￾￿]/g,dt=s=>s.replace(lo,"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;"),ye=`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
6
- `,At="http://schemas.openxmlformats.org/spreadsheetml/2006/main",be="http://schemas.openxmlformats.org/officeDocument/2006/relationships";function co(s){let e=new Set;return s.map((t,n)=>{var i;let r=((i=t.name)!=null?i:`Sheet${n+1}`).replace(/[[\]:*?/\\]/g," ").slice(0,31).trim()||`Sheet${n+1}`,o=r;for(let a=2;e.has(o.toLowerCase());a++)o=`${r.slice(0,28)} (${a})`;return e.add(o.toLowerCase()),o})}function ct(s){let e=new Map([["General",0]]),t=[],n=['<xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0"/>'],r=new Map([["General||||",0]]),o=['<font><sz val="11"/><name val="Calibri"/></font>','<font><b/><sz val="11"/><name val="Calibri"/></font>'],i=new Map([["0|",0],["1|",1]]),a=['<fill><patternFill patternType="none"/></fill>','<fill><patternFill patternType="gray125"/></fill>','<fill><patternFill patternType="solid"><fgColor rgb="FFF2F4F7"/><bgColor indexed="64"/></patternFill></fill>'],l=new Map([["FFF2F4F7",2]]),d=h=>h&&/^[0-9a-f]{8}$/i.test(h)?h.toUpperCase():h&&/^[0-9a-f]{6}$/i.test(h)?`FF${h.toUpperCase()}`:"",c=(h,y)=>{let g=`${h?1:0}|${y}`,w=i.get(g);return w===void 0&&(w=o.length,o.push(`<font>${h?"<b/>":""}<sz val="11"/>${y?`<color rgb="${y}"/>`:""}<name val="Calibri"/></font>`),i.set(g,w)),w},u=h=>{if(!h)return 0;let y=l.get(h);return y===void 0&&(y=a.length,a.push(`<fill><patternFill patternType="solid"><fgColor rgb="${h}"/><bgColor indexed="64"/></patternFill></fill>`),l.set(h,y)),y},f=(h,y)=>{let g=d(y.color),w=y.header?"FFF2F4F7":d(y.fill),C=!!(y.bold||y.header),S=y.align==="left"||y.align==="center"||y.align==="right"?y.align:"",E=`${h}|${C?1:""}|${g}|${w}|${S}`,m=r.get(E);if(m!==void 0)return m;let R=e.get(h);R===void 0&&(R=164+t.length,t.push(h),e.set(h,R));let I=c(C,g),b=u(w),L=`numFmtId="${R}" fontId="${I}" fillId="${b}" borderId="0" xfId="0"`+(R?' applyNumberFormat="1"':"")+(I?' applyFont="1"':"")+(b?' applyFill="1"':"")+(S?' applyAlignment="1"':"");return m=n.length,n.push(S?`<xf ${L}><alignment horizontal="${S}"/></xf>`:`<xf ${L}/>`),r.set(E,m),m},p=co(s),x=s.map(h=>{var R,I,b;let y=h.rows.map((L,D)=>{let $=L.map((A,T)=>{var X;let F=A!==null&&typeof A=="object"&&!(A instanceof Date)?A:{v:A},z=`${Pt(T)}${D+1}`,H=F.v,V=(X=F.fmt)!=null?X:"General";H instanceof Date&&(Number.isNaN(H.getTime())?H=null:(V==="General"&&(V="yyyy-mm-dd"),H=io(H)));let G=f(V,F),U=G?` s="${G}"`:"";return H==null||H===""?U?`<c r="${z}"${U}/>`:"":typeof H=="number"?Number.isFinite(H)?`<c r="${z}"${U}><v>${H}</v></c>`:"":typeof H=="boolean"?`<c r="${z}"${U} t="b"><v>${H?1:0}</v></c>`:`<c r="${z}"${U} t="inlineStr"><is><t xml:space="preserve">${dt(String(H))}</t></is></c>`}).join("");return`<row r="${D+1}">${$}</row>`}).join(""),g=Math.max(0,...h.rows.map(L=>L.length)),w=(R=h.freezeRows)!=null?R:0,C=w?`<sheetViews><sheetView workbookViewId="0"><pane ySplit="${w}" topLeftCell="A${w+1}" activePane="bottomLeft" state="frozen"/></sheetView></sheetViews>`:'<sheetViews><sheetView workbookViewId="0"/></sheetViews>',S=(I=h.widths)!=null&&I.length?`<cols>${h.widths.map((L,D)=>`<col min="${D+1}" max="${D+1}" width="${Math.max(4,Math.min(120,L)).toFixed(1)}" customWidth="1"/>`).join("")}</cols>`:"",E=h.autoFilter&&g&&w&&h.rows.length>=w?`<autoFilter ref="A${w}:${Pt(g-1)}${h.rows.length}"/>`:"",m=(b=h.merges)!=null&&b.length?`<mergeCells count="${h.merges.length}">${h.merges.map(L=>`<mergeCell ref="${L}"/>`).join("")}</mergeCells>`:"";return`${ye}<worksheet xmlns="${At}" xmlns:r="${be}">${C}<sheetFormatPr defaultRowHeight="15"/>${S}<sheetData>${y}</sheetData>${E}${m}</worksheet>`}),M=`${ye}<styleSheet xmlns="${At}">`+(t.length?`<numFmts count="${t.length}">${t.map((h,y)=>`<numFmt numFmtId="${164+y}" formatCode="${dt(h)}"/>`).join("")}</numFmts>`:"")+`<fonts count="${o.length}">${o.join("")}</fonts><fills count="${a.length}">${a.join("")}</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>`,v=[{name:"[Content_Types].xml",data:`${ye}<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"/>`+s.map((h,y)=>`<Override PartName="/xl/worksheets/sheet${y+1}.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/>`).join("")+"</Types>"},{name:"_rels/.rels",data:`${ye}<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="${be}/officeDocument" Target="xl/workbook.xml"/></Relationships>`},{name:"xl/workbook.xml",data:`${ye}<workbook xmlns="${At}" xmlns:r="${be}"><sheets>`+p.map((h,y)=>`<sheet name="${dt(h)}" sheetId="${y+1}" r:id="rId${y+1}"/>`).join("")+"</sheets>"+(s.some(h=>h.autoFilter&&h.freezeRows)?`<definedNames>${s.map((h,y)=>{let g=Math.max(0,...h.rows.map(w=>w.length));return h.autoFilter&&h.freezeRows&&g?`<definedName name="_xlnm._FilterDatabase" localSheetId="${y}" hidden="1">'${dt(p[y].replace(/'/g,"''"))}'!$A$${h.freezeRows}:$${Pt(g-1)}$${h.rows.length}</definedName>`:""}).join("")}</definedNames>`:"")+"</workbook>"},{name:"xl/_rels/workbook.xml.rels",data:`${ye}<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">`+s.map((h,y)=>`<Relationship Id="rId${y+1}" Type="${be}/worksheet" Target="worksheets/sheet${y+1}.xml"/>`).join("")+`<Relationship Id="rId${s.length+1}" Type="${be}/styles" Target="styles.xml"/></Relationships>`},{name:"xl/styles.xml",data:M},...x.map((h,y)=>({name:`xl/worksheets/sheet${y+1}.xml`,data:h}))];return Tn(v)}var uo=new Set([14,15,16,17,18,19,20,21,22,27,30,36,45,46,47,50,57]);function ho(s){let e=s.replace(/"[^"]*"/g,"").replace(/\[[^\]]*\]/g,"").replace(/\\./g,"");return/[dmyhs]/i.test(e)&&!/^[#0.,%\s]*$/.test(e)}function Ie(s){return s?new DOMParser().parseFromString(new TextDecoder().decode(s),"application/xml"):null}var re=(s,e)=>[...s.getElementsByTagNameNS("*",e)];function fo(s){let e=0;for(let t of s){let n=t.charCodeAt(0);if(n<65||n>90)break;e=e*26+(n-64)}return e-1}async function ut(s){var p,x,M,v,h,y,g,w,C;let e=s instanceof Uint8Array?s:new Uint8Array(s);if(!lt(e))throw new Error("Not an xlsx file");let t=await $n(e),n=Ie(t.get("xl/workbook.xml"));if(!n)throw new Error("xlsx has no workbook");let r=Ie(t.get("xl/_rels/workbook.xml.rels")),o=new Map(r?re(r,"Relationship").map(S=>{var E,m;return[(E=S.getAttribute("Id"))!=null?E:"",(m=S.getAttribute("Target"))!=null?m:""]}):[]),i=Ie(t.get("xl/sharedStrings.xml")),a=i?re(i,"si").map(S=>re(S,"t").map(E=>{var m;return(m=E.textContent)!=null?m:""}).join("")):[],l=Ie(t.get("xl/styles.xml")),d=new Map(l?re(l,"numFmt").map(S=>{var E;return[Number(S.getAttribute("numFmtId")),(E=S.getAttribute("formatCode"))!=null?E:""]}):[]),c=l?re(l,"cellXfs")[0]:void 0,u=(c?[...c.children].filter(S=>S.localName==="xf"):[]).map(S=>{var m;let E=Number((m=S.getAttribute("numFmtId"))!=null?m:0);return uo.has(E)||d.has(E)&&ho(d.get(E))}),f=[];for(let S of re(n,"sheet")){let E=(x=(p=S.getAttribute("r:id"))!=null?p:S.getAttributeNS(be,"id"))!=null?x:"",m=(M=o.get(E))!=null?M:"";m=m.startsWith("/")?m.slice(1):`xl/${m}`;let R=Ie(t.get(m)),I=[];if(R){for(let b of re(R,"row")){let L=Number((v=b.getAttribute("r"))!=null?v:I.length+1)-1,D=[],$=0;for(let A of[...b.children].filter(T=>T.localName==="c")){let T=A.getAttribute("r"),F=T?fo(T):$;$=F+1;let z=A.getAttribute("t"),H=(y=(h=re(A,"v")[0])==null?void 0:h.textContent)!=null?y:null,V=null;if(z==="s")V=H===null?null:(g=a[Number(H)])!=null?g:"";else if(z==="inlineStr")V=re(A,"t").map(G=>{var U;return(U=G.textContent)!=null?U:""}).join("");else if(z==="b")V=H==="1";else if(z==="str"||z==="e")V=H;else if(H!==null&&H!==""){let G=Number(H);V=u[Number((w=A.getAttribute("s"))!=null?w:0)]?ao(G):G}D[F]=V}for(let A=0;A<D.length;A++)D[A]===void 0&&(D[A]=null);I[L]=D}for(let b=0;b<I.length;b++)I[b]||(I[b]=[])}f.push({name:(C=S.getAttribute("name"))!=null?C:`Sheet${f.length+1}`,rows:I})}return f}function Nn(s,e){return Array.isArray(e)?e.flatMap(t=>{var r,o;let n=s.columns.getNode(t);return!n||n.children||P(t)?(N(`export: unknown column "${t}"`),[]):[{id:t,def:n.def,node:n,width:(o=(r=s.columns.getColumn(t))==null?void 0:r.width)!=null?o:n.width}]}):s.columns.displayed().filter(t=>!P(t.id)).map(t=>({id:t.id,def:t.def,node:t.node,width:t.width}))}function Fn(s,e){return e==="selected"?s.selectedRows():e==="all"?s.rowModel.server?s.rowModel.dataRows().map(t=>t.data):s.viewRows():s.rowModel.dataRows().map(t=>t.data)}var Nt=(s,e)=>{var t,n;return(n=(t=s.header)!=null?t:s.field)!=null?n:e};function Ft(s,e={}){let t=Nn(s,e.columns),n=s.store.state.locale.code,r=typeof e.separator=="string"&&e.separator.length===1?e.separator:",",o=Fn(s,e.rows).map(i=>t.map(a=>{let l=B(a.def,i),d=a.def.type;return{value:nt(a.def,l,n),text:!(d==="number"||d==="date"||d==="boolean")||typeof l=="string"}}));return e.headers!==!1&&o.unshift(t.map(i=>({value:Nt(i.def,i.id),text:!0}))),In(o,r)}function po(s){var o;let e=s.format;if(s.type==="date")return e==="datetime"?"yyyy-mm-dd hh:mm":e==="time"?"hh:mm":"yyyy-mm-dd";if(s.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=(o=t.maximumFractionDigits)!=null?o:t.minimumFractionDigits,r=n?`.${"0".repeat(Math.min(10,n))}`:"";return t.style==="percent"?`0${r}%`:`${t.useGrouping===!1?"0":"#,##0"}${r}`}function ht(s){let e=/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(s.trim());if(e)return`FF${(e[1].length===3?[...e[1]].map(o=>o+o).join(""):e[1]).toUpperCase()}`;let t=/^rgba?\(\s*(\d+)[\s,]+(\d+)[\s,]+(\d+)(?:[\s,/]+([\d.]+%?))?\s*\)$/i.exec(s.trim());return!t||!((t[4]===void 0?1:t[4].endsWith("%")?parseFloat(t[4])/100:parseFloat(t[4]))>0)?"":`FF${[t[1],t[2],t[3]].map(r=>Math.min(255,Number(r)).toString(16).padStart(2,"0")).join("").toUpperCase()}`}function go(s){let e=s.renderer.root;if(typeof getComputedStyle!="function"||!e.isConnected)return{of:()=>({}),dispose:()=>{}};let t=document.createElement("div");t.className="fg-row",t.style.cssText="position:absolute;left:-9999px;top:0;visibility:hidden;pointer-events:none";let n=document.createElement("div");t.append(n),e.append(t);let r=a=>{n.className=a?`fg-cell ${a}`:"fg-cell";let l=getComputedStyle(n),d=l.fontWeight;return{color:l.color,fill:l.backgroundColor,bold:d==="bold"||Number(d)>=600}},o=r(""),i=new Map;return{of(a){let l=i.get(a);if(!l){let d=r(a);l={},d.color!==o.color&&ht(d.color)&&(l.color=ht(d.color)),d.fill!==o.fill&&ht(d.fill)&&(l.fill=ht(d.fill)),d.bold&&!o.bold&&(l.bold=!0),i.set(a,l)}return l},dispose:()=>t.remove()}}function Ht(s,e={}){var v;let t=Nn(s,e.columns),n=s.store.state.locale.code,r=[],o=[],i=0;if(e.headers!==!1){let h=t.map(g=>{let w=[];for(let C=g.node;C;C=C.parent)w.unshift(C);return w});i=Math.max(1,...h.map(g=>g.length));let y=g=>{let w="";for(let C=g+1;C>0;C=Math.floor((C-1)/26))w=String.fromCharCode(65+(C-1)%26)+w;return w};for(let g=0;g<i;g++){let w=[];for(let C=0;C<t.length;C++){let S=h[C],E=S.length-1;if(g<E){let m=S[g],R=C>0?h[C-1][g]:null;if(w.push({v:R===m?null:Nt(m.def,m.id),header:!0}),R!==m){let I=C;for(;I+1<t.length&&h[I+1][g]===m;)I++;I>C&&o.push(`${y(C)}${g+1}:${y(I)}${g+1}`)}}else g===E?(w.push({v:Nt(t[C].def,t[C].id),header:!0}),i-1>g&&o.push(`${y(C)}${g+1}:${y(C)}${i}`)):w.push({v:null,header:!0})}r.push(w)}}let a=t.map(h=>po(h.def)),l=t.map(h=>K(h.def,n)),d=Fn(s,e.rows),c=e.styles!==!1,u=c&&t.some(h=>h.def.cellClass)?go(s):null,f=(h,y,g)=>{var C;if(O(g))return null;let w=(C=a[y])!=null?C:void 0;switch(h.def.type){case"number":{let S=typeof g=="number"?g:Number(g);return Number.isFinite(S)?{v:S,fmt:w}:String(g)}case"date":{let S=te(g);return S?{v:S,fmt:w}:String(g)}case"boolean":return typeof g=="boolean"?g:String(g);default:return l[y](g)}};try{d.forEach((h,y)=>{r.push(t.map((g,w)=>{let C=B(g.def,h),S=f(g,w,C);if(!c)return S;let E=g.def.align?{align:g.def.align}:{};if(u&&g.def.cellClass){let m;try{m=typeof g.def.cellClass=="function"?g.def.cellClass({value:C,formatted:l[w](C),row:h,rowIndex:y,column:g.def}):g.def.cellClass}catch{m=void 0}m&&(E={...E,...u.of(m)})}return Object.keys(E).length?S!==null&&typeof S=="object"&&!(S instanceof Date)?{...S,...E}:{v:S,...E}:S}))})}finally{u==null||u.dispose()}let p=new Set,x=h=>{let y="";for(let g=h+1;g>0;g=Math.floor((g-1)/26))y=String.fromCharCode(65+(g-1)%26)+y;return y},M=(h,y,g,w)=>{for(let C=h;C<=g;C++)for(let S=y;S<=w;S++)if(p.has(`${C},${S}`))return;for(let C=h;C<=g;C++)for(let S=y;S<=w;S++)p.add(`${C},${S}`);o.push(`${x(y)}${i+h+1}:${x(w)}${i+g+1}`)};return d.forEach((h,y)=>t.forEach((g,w)=>{let C=g.def.colSpan?ke(g.def.colSpan,g.def,h,y,t.length-w):1;C>1&&M(y,w,y,w+C-1)})),t.forEach((h,y)=>{if(!h.def.merge&&!h.def.rowSpan)return;let g=Ve(d,h.def);for(let w=0;w<d.length;w++)g.start[w]===w&&g.end[w]>w&&M(w,y,g.end[w],y)}),ct([{name:(v=e.sheetName)!=null?v:"Sheet1",rows:r,widths:t.map(h=>Math.round(h.width/7)),merges:o,freezeRows:i,autoFilter:i>0}])}function Bt(s,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})),r=document.createElement("a");r.href=n,r.download=s,r.style.display="none",document.body.append(r),r.click(),r.remove(),setTimeout(()=>URL.revokeObjectURL(n),1e3)}var ft=s=>String(s!=null?s:"").trim().toLowerCase();function mo(s){var e;return s==null?"":s instanceof Date?s.getHours()||s.getMinutes()||s.getSeconds()?s.toISOString():(e=Y(s))!=null?e:"":String(s)}async function Hn(s,e,t={}){var M;let n=e instanceof Uint8Array?e:new Uint8Array(e instanceof ArrayBuffer?e:await e.arrayBuffer()),r;if(lt(n)){let v=await ut(n),h=typeof t.sheet=="string"?v.find(y=>y.name===t.sheet):v[typeof t.sheet=="number"?t.sheet:0];if(!h)throw new Error(`Sheet ${String(t.sheet)} not found`);r=h.rows}else{let v=new TextDecoder().decode(n);r=at(v,$t(v))}if(!r.length)return{rows:[],skipped:0};let o=[],i=v=>v.forEach(h=>h.children?i(h.children):!P(h.id)&&h.def.field&&o.push(h));i(s.columns.roots());let a=v=>{var y,g;let h=ft(v);return h&&(g=(y=o.find(w=>ft(w.def.header)===h))!=null?y:o.find(w=>ft(w.def.field)===h||ft(w.id)===h))!=null?g:null},l=1,d=new Set(r[0].map(a).filter(Boolean));for(;l<Math.min(r.length,5);){let h=((M=r[l])!=null?M:[]).filter(g=>g!=null&&String(g).trim()!==""),y=h.map(a).filter(g=>g&&!d.has(g));if(!h.length||!h.every(g=>typeof g=="string")||!y.length)break;y.forEach(g=>d.add(g)),l++}let c=Math.max(...r.slice(0,l).map(v=>{var h;return(h=v==null?void 0:v.length)!=null?h:0})),u=Array.from({length:c},(v,h)=>{var y;for(let g=l-1;g>=0;g--){let w=(y=r[g])==null?void 0:y[h];if(w!=null&&String(w).trim()!=="")return a(w)}return null}),f=s.store.state.data[0],p=0,x=[];for(let v of r.slice(l)){if(!v||v.every(y=>y==null||String(y).trim()===""))continue;let h={};u.forEach((y,g)=>{if(!y)return;let w=y.def,C=mo(v[g]),S=s.acceptText(w,h,C,f==null?void 0:f[w.field]);S.ok?C===""&&(S.value===null||S.value==="")||(h[w.field]=S.value):p++}),x.push(h)}return t.mode==="replace"?s.setData(x):s.addRows(x),{rows:x,skipped:p}}var wo="http://www.w3.org/2000/svg";var zt=["var(--fg-accent, #2563eb)","#f59e0b","#10b981","#ef4444","#8b5cf6","#06b6d4","#ec4899","#84cc16","#f97316","#64748b","#14b8a6","#a855f7"],xe=s=>zt[s%zt.length];function j(s,e={},t=""){let n=document.createElementNS(wo,s);t&&n.setAttribute("class",t);for(let[r,o]of Object.entries(e))n.setAttribute(r,String(o));return n}function Ot(s,e){let t=j("title");t.textContent=e,s.append(t)}function vo(s,e,t=5){let n=Math.min(0,s),r=Math.max(0,e);n===r&&(r=n+1);let o=(r-n)/t,i=10**Math.floor(Math.log10(o)),a=[1,2,5,10].map(d=>d*i).find(d=>d>=o);n=Math.floor(n/a)*a,r=Math.ceil(r/a)*a;let l=[];for(let d=n;d<=r+a/2;d+=a)l.push(Math.round(d/a)*a);return l}function pt(s,e){var R,I;let t=new Intl.NumberFormat(e.locale,{maximumFractionDigits:2}),n=new Intl.NumberFormat(e.locale,{notation:"compact",maximumFractionDigits:1}),r=j("svg",{viewBox:"0 0 640 360",role:"img",preserveAspectRatio:"xMidYMid meet"},`fg-chart fg-chart-is-${e.type}`);e.title&&r.setAttribute("aria-label",e.title);let o=e.series.slice(0,zt.length),i=e.categories,a=16;if(e.title){let b=j("text",{x:320,y:22,"text-anchor":"middle"},"fg-chart-title");b.textContent=e.title,r.append(b),a=36}let l=j("g",{},"fg-chart-legend"),d=e.type==="pie"?i:o.map(b=>b.name),c=16;d.forEach((b,L)=>{let D=j("g",{transform:`translate(${c},350)`},"fg-chart-legend-item");D.append(j("rect",{x:0,y:-9,width:10,height:10,rx:2,fill:xe(L)}));let $=j("text",{x:14,y:0});$.textContent=b,D.append($),l.append(D),c+=24+Math.min(140,b.length*7)});let u=308;if(e.type==="pie"){let b=((I=(R=o[0])==null?void 0:R.values)!=null?I:[]).map(F=>F!==null&&F>0?F:0),L=b.reduce((F,z)=>F+z,0),D=640/2,$=(a+u)/2,A=Math.max(10,(u-a)/2-6),T=-Math.PI/2;b.forEach((F,z)=>{if(!F||!L)return;let H=T+F/L*Math.PI*2,V=H-T>Math.PI?1:0,G=W=>`${D+A*Math.cos(W)},${$+A*Math.sin(W)}`,U=F===L?`M${D-A},${$}a${A},${A} 0 1,0 ${2*A},0a${A},${A} 0 1,0 ${-2*A},0`:`M${D},${$}L${G(T)}A${A},${A} 0 ${V} 1 ${G(H)}Z`,X=j("path",{d:U,fill:xe(z)},"fg-chart-slice");Ot(X,`${i[z]}: ${t.format(F)} (${Math.round(F/L*1e3)/10}%)`),r.append(X),T=H}),r.append(l),s.replaceChildren(r);return}let f=e.type==="stackedBar",p=0,x=0;i.forEach((b,L)=>{let D=0,$=0;for(let A of o){let T=A.values[L];T==null||!Number.isFinite(T)||(f?T>=0?D+=T:$+=T:(x=Math.max(x,T),p=Math.min(p,T)))}f&&(x=Math.max(x,D),p=Math.min(p,$))});let M=vo(p,x),v=M[0],h=M[M.length-1],y=56,g=624,w=b=>u-(b-v)/(h-v)*(u-a),C=j("g",{},"fg-chart-axis");for(let b of M){C.append(j("line",{x1:y,x2:g,y1:w(b),y2:w(b)},b===0?"fg-chart-zero":"fg-chart-grid"));let L=j("text",{x:y-6,y:w(b)+4,"text-anchor":"end"});L.textContent=n.format(b),C.append(L)}let S=(g-y)/Math.max(1,i.length),E=Math.max(1,Math.ceil(i.length/Math.floor((g-y)/56)));i.forEach((b,L)=>{if(L%E)return;let D=j("text",{x:y+S*(L+.5),y:u+16,"text-anchor":"middle"});D.textContent=b.length>12?`${b.slice(0,11)}\u2026`:b,C.append(D)}),r.append(C);let m=j("g",{},"fg-chart-plot");if(e.type==="bar"||f){let b=S*.72,L=f?b:b/Math.max(1,o.length);i.forEach((D,$)=>{let A=0,T=0;o.forEach((F,z)=>{let H=F.values[$];if(H==null||!Number.isFinite(H))return;let V=0,G=H;f&&(V=H>=0?A:T,G=V+H,H>=0?A=G:T=G);let U=y+S*$+(S-b)/2+(f?0:L*z),X=j("rect",{x:U,y:Math.min(w(V),w(G)),width:Math.max(1,L-2),height:Math.max(.5,Math.abs(w(G)-w(V))),fill:xe(z),rx:2},"fg-chart-bar");Ot(X,`${F.name} \xB7 ${D}: ${t.format(H)}`),m.append(X)})})}else o.forEach((b,L)=>{let D=b.values.map((T,F)=>T==null||!Number.isFinite(T)?null:[y+S*(F+.5),w(T),T]),$="",A=!1;for(let T of D){if(!T){A=!1;continue}$+=`${A?"L":"M"}${T[0]},${T[1]}`,A=!0}if(e.type==="area"){let T=D.filter(F=>!!F);if(T.length){let F=`M${T[0][0]},${w(0)}${T.map(z=>`L${z[0]},${z[1]}`).join("")}L${T[T.length-1][0]},${w(0)}Z`;m.append(j("path",{d:F,fill:xe(L),"fill-opacity":.18},"fg-chart-area"))}}m.append(j("path",{d:$,fill:"none",stroke:xe(L),"stroke-width":2.2,"stroke-linejoin":"round"},"fg-chart-line")),D.forEach((T,F)=>{if(!T)return;let z=j("circle",{cx:T[0],cy:T[1],r:3.5,fill:xe(L)},"fg-chart-point");Ot(z,`${b.name} \xB7 ${i[F]}: ${t.format(T[2])}`),m.append(z)})});r.append(m,l),s.replaceChildren(r)}var yo=12,Bn=500,Gt=["bar","stackedBar","line","area","pie"],gt=class{constructor(e){this.grid=e;this.handles=new Set}create(e={}){var M,v;let{grid:t}=this,n=Gt.includes(e.type)?e.type:"bar",r=()=>t.store.state.locale,o=(M=e.range)!=null?M:t.store.state.range,i=null;if(o){let h=t.columns.getColumn(o.start.colId),y=t.columns.getColumn(o.end.colId);if(h&&y){let g=Le({start:{rowIndex:o.start.rowIndex,colIndex:h.index},end:{rowIndex:o.end.rowIndex,colIndex:y.index}}),w=[];for(let C=g.r1;C<=g.r2&&w.length<Bn;C++){let S=t.rowModel.getRow(C);S&&!S.kind&&w.push(S.data)}i={rows:w,colIds:t.columns.displayed().slice(g.c1,g.c2+1).filter(C=>!P(C.id)).map(C=>C.id)}}}let a=()=>{var m;let h=i?i.rows:t.rowModel.dataRows().slice(0,Bn).map(R=>R.data),y=(i?i.colIds.map(R=>t.columns.getColumn(R)):t.columns.displayed().filter(R=>!P(R.id))).filter(R=>!!R),g=y[0]&&y[0].def.type!=="number"?y[0]:i?null:(m=y.find(R=>R.def.type!=="number"))!=null?m:null,w=R=>!!R.node.parent&&R.node.parent.id==="pivotgroup|total",C=y.filter(R=>R!==g&&R.def.type==="number"&&(i||!w(R))).slice(0,yo),S=R=>{var b,L,D;let I=[];for(let $=R.node.parent;$;$=$.parent)I.unshift((b=$.def.header)!=null?b:$.id);return I.push((D=(L=R.def.header)!=null?L:R.def.field)!=null?D:R.id),I.join(" \xB7 ")},E=g?K(g.def,r().code):null;return{categories:h.map((R,I)=>g&&E?E(B(g.def,R)):String(I+1)),series:C.map(R=>({name:S(R),values:h.map(I=>{let b=B(R.def,I),L=typeof b=="number"?b:b==null||b===""?NaN:Number(b);return Number.isFinite(L)?L:null})}))}},l=k("div","fg-chart-body"),d=null,c=()=>pt(l,{type:n,title:e.title,locale:r().code,...a()}),u=h=>({bar:r().chartBar,stackedBar:r().chartStacked,line:r().chartLine,area:r().chartArea,pie:r().chartPie})[h],f=()=>d==null?void 0:d.querySelectorAll(".fg-chart-type").forEach(h=>h.setAttribute("aria-pressed",String(h.dataset.type===n)));if(e.container)e.container.append(l);else{d=k("div","fg-chart-panel",{role:"dialog","aria-label":(v=e.title)!=null?v:u(n)});let h=k("div","fg-chart-head");for(let g of Gt){let w=k("button","fg-chart-type",{type:"button",title:u(g)});w.dataset.type=g,w.textContent=u(g),w.addEventListener("click",()=>x.setType(g)),h.append(w)}let y=k("button","fg-chooser-close",{type:"button","aria-label":r().close});y.textContent="\xD7",y.addEventListener("click",()=>x.destroy()),h.append(k("span","fg-chart-spacer"),y),d.append(h,l),t.renderer.root.append(d)}let p=[t.events.on("cellValueChanged",()=>c()),t.events.on("rowsAdded",()=>c()),t.events.on("rowsRemoved",()=>c())];i||p.push(t.events.on("sortChange",()=>c()),t.events.on("filterChange",()=>c()));let x={el:l,setType:h=>{Gt.includes(h)&&(n=h,f(),c())},update:()=>c(),destroy:()=>{p.forEach(h=>h()),(d!=null?d:l).remove(),this.handles.delete(x)}};return this.handles.add(x),f(),c(),x}destroy(){for(let e of[...this.handles])e.destroy()}};function On(s,e,t){return typeof s=="number"&&typeof e=="number"?s-e:s instanceof Date&&e instanceof Date?s.getTime()-e.getTime():typeof s=="boolean"&&typeof e=="boolean"?Number(s)-Number(e):t.compare(String(s),String(e))}function bo(s,e){var t,n;if(O(e))return null;if(s.type==="number"){let r=typeof e=="number"?e:Number(e);return Number.isNaN(r)?null:r}return s.type==="date"?(n=(t=te(e))==null?void 0:t.getTime())!=null?n:null:e}function ue(s,e,t){let n=O(s),r=O(e);return n||r?n===r?0:n?1:-1:On(s,e,t)}function zn(s,e,t,n){let r=e.map(a=>({def:t(a.colId),mul:a.dir==="desc"?-1:1})).filter(a=>!!a.def);if(!r.length)return s;let o=r.map(a=>s.map(l=>{let d=B(a.def,l.data);return a.def.comparator?d:bo(a.def,d)})),i=s.map((a,l)=>l);return i.sort((a,l)=>{var d;for(let c=0;c<r.length;c++){let{def:u,mul:f}=r[c],p=o[c][a],x=o[c][l],M;if(u.comparator)try{M=(Number(u.comparator(p,x,s[a].data,s[l].data))||0)*f}catch{N(`comparator of column "${(d=u.id)!=null?d:u.field}" threw; treating values as equal`),M=0}else{let v=O(p),h=O(x);M=v||h?v===h?0:v?1:-1:On(p,x,n)*f}if(M)return M}return a-l}),i.map(a=>s[a])}var Gn=new WeakMap,xo=s=>typeof s=="function"?"custom":s;function Vt(s,e){var t,n,r;return{rows:((t=s.rows)!=null?t:[]).filter(e),columns:((n=s.columns)!=null?n:[]).filter(e),values:((r=s.values)!=null?r:[]).filter(o=>o&&e(o.colId)).map(o=>{var i;return{colId:o.colId,aggFunc:(i=o.aggFunc)!=null?i:"sum"}}),totals:s.totals!==!1}}function Vn(s,e,t,n,r){let o=Vt(e,g=>!!t(g)),i=new Intl.Collator(r,{numeric:!0,sensitivity:"base"}),a=g=>t(g),l=(g,w)=>g.map(C=>Z(B(a(C),w))).join(""),d=new Map;for(let g of s){let w=l(o.columns,g);d.has(w)||d.set(w,o.columns.map(C=>B(a(C),g)))}let c=[...d.entries()].sort((g,w)=>{for(let C=0;C<o.columns.length;C++){let S=ue(g[1][C],w[1][C],i);if(S)return S}return 0});o.columns.length||c.splice(0,c.length,["",[]]);let u=[],f=(g,w,C)=>{var b,L;let S=o.values[w],E=a(S.colId),m=`pivot|${C}|${w}`;u.push({id:m,comboKey:g,valueIndex:w});let R=D=>g===null||l(o.columns,D)===g,I=S.aggFunc;return{id:m,field:m,header:`${(L=(b=E.header)!=null?b:E.field)!=null?L:S.colId} (${n.agg(xo(I))})`,type:"number",format:I==="count"?"integer":E.format,width:130,aggFunc:(D,$)=>{let A=$.flatMap(T=>{var F;return(F=Gn.get(T))!=null?F:[]}).filter(R);return A.length?me(I,A.map(T=>B(E,T)),A):null}}},p=[],x=(g,w)=>{if(O(w))return n.blank;let C=a(g);return C.type==="number"&&!C.format?String(w):K(C,r)(w)};if(!o.columns.length)o.values.forEach((g,w)=>p.push(f("",w,0)));else{let g=(w,C,S)=>{let E=[],m=0;for(;m<w.length;){let R=w[m][1][C],I=Z(R),b=m;for(;b<w.length&&Z(w[b][1][C])===I;)b++;let L=w.slice(m,b),D=C===o.columns.length-1?o.values.map(($,A)=>f(L[0][0],A,S+m)):g(L,C+1,S+m);E.push({id:`pivotgroup|${C}|${S+m}`,header:x(o.columns[C],R),children:D}),m=b}return E};p.push(...g(c,0,0)),o.totals&&o.values.length&&p.push({id:"pivotgroup|total",header:n.total,children:o.values.map((w,C)=>f(null,C,"total"))})}let M=new Map;for(let g of s){let w=l(o.rows,g),C=M.get(w);C||M.set(w,C={values:o.rows.map(S=>B(a(S),g)),src:[]}),C.src.push(g)}let h=[...M.values()].sort((g,w)=>{for(let C=0;C<o.rows.length;C++){let S=ue(g.values[C],w.values[C],i);if(S)return S}return 0}).map(g=>{var S;let w={};o.rows.forEach((E,m)=>{var R;w[(R=a(E).field)!=null?R:E]=g.values[m]});let C=new Map;if(o.columns.length)for(let E of g.src){let m=l(o.columns,E),R=C.get(m);R||C.set(m,R=[]),R.push(E)}for(let E of u){let m=o.values[E.valueIndex],R=E.comboKey===null||!o.columns.length?g.src:(S=C.get(E.comboKey))!=null?S:[],I=a(m.colId);w[E.id]=R.length?me(m.aggFunc,R.map(b=>B(I,b)),R):null}return Gn.set(w,g.src),w});return{columns:[...o.rows.map(g=>{var C,S,E,m;let w=a(g);return{id:g,field:(C=w.field)!=null?C:g,header:(E=(S=w.header)!=null?S:w.field)!=null?E:g,type:w.type,format:w.format,width:(m=w.width)!=null?m:140}}),...p],rows:h,groupBy:o.rows.slice(0,-1)}}var De="0.8.1";var Co={kty:"EC",crv:"P-256",x:"sUTKkglZmk-HMKPNub8p7AeLBKesHCU8irIkw9rJlbE",y:"j0U_aKRDR7iApY9UpaD3hUemhBLZJwDv9-QiT_hUyw8"},Ut="https://freegrid.app/pricing/",Un="https://freegrid.app/api/usage",Ro="https://freegrid.app/api/domain-status",qn=s=>{let e=atob(s.replace(/-/g,"+").replace(/_/g,"/")+"=".repeat((4-s.length%4)%4));return Uint8Array.from(e,t=>t.charCodeAt(0))};function Kt(s){let e=s.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 ko(s,e){let t=s.toLowerCase().replace(/\.$/,"");return e.some(n=>{let r=n.toLowerCase().replace(/\.$/,""),o=r.startsWith("*."),i=o?r.slice(2):r;return i?t===i||t===`www.${i}`?!0:o&&t.endsWith(`.${i}`):!1})}var So=s=>`${s.getFullYear()}-${String(s.getMonth()+1).padStart(2,"0")}-${String(s.getDate()).padStart(2,"0")}`;async function _t(s,e,t={}){var i,a;let n=typeof s=="string"?s.trim().split("."):[];if(n.length!==3||n[0]!=="FG1")return{ok:!1,reason:"format"};let r;try{if(r=JSON.parse(new TextDecoder().decode(qn(n[1]))),!Array.isArray(r.domains)||typeof r.expires!="string")return{ok:!1,reason:"format"}}catch{return{ok:!1,reason:"format"}}let o=typeof crypto!="undefined"?crypto.subtle:void 0;if(!o)return{ok:!1,reason:"unsupported",info:r};try{let l=await o.importKey("jwk",(i=t.publicKey)!=null?i:Co,{name:"ECDSA",namedCurve:"P-256"},!1,["verify"]),d=new TextEncoder().encode(`${n[0]}.${n[1]}`);if(!await o.verify({name:"ECDSA",hash:"SHA-256"},l,qn(n[2]),d))return{ok:!1,reason:"signature",info:r}}catch{return{ok:!1,reason:"signature",info:r}}return So((a=t.now)!=null?a:new Date)>r.expires?{ok:!1,reason:"expired",info:r}:ko(e,r.domains)?{ok:!0,info:r}:{ok:!1,reason:"domain",info:r}}var qt,Kn=new Map,Te=null;function jn(s){qt=s}var _n={missing:`FreeGrid is free for personal use. Company use needs a domain license (\u20A9200,000 per domain per year): ${Ut}
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: ${Ut}`,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 Wn(s,e=typeof location!="undefined"?location.hostname:""){try{if(Kt(e)||typeof navigator=="undefined")return;let t=new Date().toISOString().slice(0,10),n=`${e}|${t}|${s.licensed?1:0}`,r=typeof localStorage!="undefined"?localStorage:null;if((r==null?void 0:r.getItem("freegrid:usage"))===n)return;r==null||r.setItem("freegrid:usage",n);let o=JSON.stringify({version:s.version,licensed:s.licensed,company:s.company,url:`${location.origin}${location.pathname}`});typeof navigator.sendBeacon=="function"?navigator.sendBeacon(Un,o):typeof fetch=="function"&&fetch(Un,{method:"POST",body:o,mode:"no-cors",keepalive:!0}).catch(()=>{})}catch{}}function Mo(s=qt,e=typeof location!="undefined"?location.hostname:""){if(Kt(e))return Promise.resolve(!0);let t=s!=null?s:qt,n=`${t!=null?t:""}@${e}`,r=Kn.get(n);return r||(t?r=_t(t,e).then(o=>{if(Wn({version:De,licensed:o.ok,company:o.ok?o.info.company:void 0},e),o.ok||o.reason==="unsupported")return o.ok||o.reason==="unsupported";let i=o.info?` (${o.info.domains.join(", ")}, ${o.info.expires})`:"";return console.warn(`${_n[o.reason]}${i}
8
- ${Ut}`),!1},()=>!1):(console.info(_n.missing),Wn({version:De,licensed:!1},e),r=Promise.resolve(!1)),Kn.set(n,r),r)}function Eo(s=typeof location!="undefined"?location.hostname:""){var n;if(Kt(s)||typeof fetch!="function")return Promise.resolve(!1);if(Te)return Te;let e=new Date().toISOString().slice(0,10),t=null;try{t=typeof localStorage!="undefined"?localStorage:null;let r=JSON.parse((n=t==null?void 0:t.getItem("freegrid:badge"))!=null?n:"null");if(r&&r.host===s&&r.day===e)return Te=Promise.resolve(r.show)}catch{}return Te=fetch(Ro,{mode:"cors",credentials:"omit"}).then(r=>r.ok?r.json():{badge:!1}).then(r=>{let o=r.badge===!0;try{t==null||t.setItem("freegrid:badge",JSON.stringify({host:s,day:e,show:o}))}catch{}return o},()=>!1),Te}async function Xn(s,e=typeof location!="undefined"?location.hostname:""){return await Mo(s,e)?!1:Eo(e)}var Yn={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"]},Zn=["blank","notBlank"],Wt=500,mt=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 M;this.close();let n=this.grid.columns.getNode(e);if(!n||n.children||P(e))return;let r=this.grid.store.state.locale,o=n.def,i=k("div",`fg-menu fg-theme-${this.grid.store.state.theme}`,{role:"dialog","aria-label":r.columnMenu});this.grid.applyFontTo(i),de(o)&&i.append(this.section([[r.sortAsc,()=>this.grid.setSort([{colId:e,dir:"asc"}])],[r.sortDesc,()=>this.grid.setSort([{colId:e,dir:"desc"}])],[r.clearSort,()=>this.grid.setSort(this.grid.store.state.sort.filter(v=>v.colId!==e))]])),i.append(this.section([[r.pinLeft,()=>this.grid.setPinned(e,"left")],[r.pinRight,()=>this.grid.setPinned(e,"right")],[r.unpin,()=>this.grid.setPinned(e,null)]]));let a=this.grid.getGroupBy();if(!this.grid.options.treeData&&(this.grid.options.groupPanel||a.length)){let v=a.includes(e)?[[r.ungroup,()=>this.grid.setGroupBy(a.filter(h=>h!==e))]]:[[r.groupByThis,()=>this.grid.setGroupBy([...a,e])]];a.length&&v.push([r.expandAll,()=>this.grid.expandAll(!0)],[r.collapseAll,()=>this.grid.expandAll(!1)]),i.append(this.section(v))}let l=[[r.autosizeThis,()=>this.grid.autoSize([e])],[r.autosizeAll,()=>this.grid.autoSize()]];o.lockVisible||l.push([r.hideColumn,()=>this.grid.setColumnsVisible([e],!1)]),l.push([r.chooseColumns,()=>this.grid.chooser.open()],[r.resetColumns,()=>this.grid.resetColumns()]),i.append(this.section(l));let d=this.filterSection(e,()=>this.close());d&&i.append(d),ie(this.grid.renderer.root).append(i);let c=t.getBoundingClientRect(),u=i.offsetWidth||248;i.style.left=`${Math.max(4,Math.min(c.right-u,window.innerWidth-u-4))}px`;let f=Math.max(4,Math.min(c.bottom+4,window.innerHeight-240));i.style.top=`${f}px`,i.style.maxHeight=`${Math.max(160,window.innerHeight-f-8)}px`,this.popup=i,this.colId=e;let p=v=>{ve(v,i,t)||this.close()},x=v=>{v.key==="Escape"&&(this.close(),this.grid.renderer.gridEl.focus())};document.addEventListener("pointerdown",p,!0),document.addEventListener("keydown",x,!0),this.off.push(()=>document.removeEventListener("pointerdown",p,!0),()=>document.removeEventListener("keydown",x,!0)),(M=i.querySelector(".fg-filter-value:not([hidden]), .fg-set-search, .fg-menu-item"))==null||M.focus()}filterSection(e,t){let n=this.grid.columns.getNode(e);if(!n||n.children)return null;let r=this.grid.store.state.locale,o=pe(n.def);return o==="set"?this.setFilter(e,r,t):o?this.conditionFilter(e,o,r,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=k("div","fg-menu-section");for(let[n,r]of e){let o=k("button","fg-menu-item",{type:"button"});o.textContent=n,o.addEventListener("click",()=>{r(),this.close()}),t.append(o)}return t}actions(e,t,n,r){let o=k("div","fg-menu-actions"),i=k("button","fg-btn",{type:"button"});i.textContent=t.reset,i.addEventListener("click",()=>{this.grid.setFilter(e,null),r()});let a=k("button","fg-btn fg-btn-primary",{type:"button"});return a.textContent=t.apply,a.addEventListener("click",n),o.append(i,a),o}title(e){let t=k("div","fg-menu-title");return t.textContent=e.filter,t}conditionFilter(e,t,n,r){var x;let o=this.grid.store.state.filters[e],i=o&&o.type===t?o:void 0,a=k("div","fg-menu-section fg-filter"),l=k("select","fg-filter-op",{"aria-label":n.filter});for(let M of Yn[t]){let v=k("option");v.value=M,v.textContent=n.ops[M],l.append(v)}l.value=(x=i==null?void 0:i.op)!=null?x:Yn[t][0];let d=t==="text"?"text":t,c=k("input","fg-input fg-filter-value",{type:d,placeholder:n.value,"aria-label":n.value}),u=k("input","fg-input fg-filter-value-to",{type:d,placeholder:n.valueTo,"aria-label":n.valueTo});i&&(c.value=i.value!=null?String(i.value):"",u.value="valueTo"in i&&i.valueTo!=null?String(i.valueTo):"");let f=()=>{c.hidden=Zn.includes(l.value),u.hidden=l.value!=="between"};l.addEventListener("change",f),f();let p=()=>{let M=l.value,v=!Zn.includes(M),h=null;if(t==="number"){let y=c.value===""?void 0:Number(c.value),g=u.value===""?void 0:Number(u.value);(!v||y!==void 0)&&(h={type:t,op:M,value:y,valueTo:g})}else t==="date"?(!v||c.value)&&(h={type:t,op:M,value:c.value||void 0,valueTo:u.value||void 0}):(!v||c.value)&&(h={type:t,op:M,value:c.value});this.grid.setFilter(e,h),r()};for(let M of[c,u])M.addEventListener("keydown",v=>v.key==="Enter"&&p());return a.append(this.title(n),l,c,u,this.actions(e,n,p,r)),a}setFilter(e,t,n){let{grid:r}=this,o=r.columns.getNode(e).def,i=K(o,t.code),a=r.collator(),l=new Map;for(let S of r.rowModel.allNodes()){let E=B(o,S.data),m=Z(E);l.has(m)||l.set(m,E)}let d=[...l.entries()].sort((S,E)=>ue(S[1],E[1],a)),c=r.store.state.filters[e],u=new Set((c==null?void 0:c.type)==="set"?c.values.map(Z).filter(S=>l.has(S)):l.keys()),f=(S,E)=>S===""?t.blanks:i(E),p=k("div","fg-menu-section fg-filter fg-set-filter"),x=k("input","fg-input fg-set-search",{type:"search",placeholder:t.search,"aria-label":t.search}),M=k("label","fg-set-item fg-set-all"),v=k("input","fg-checkbox",{type:"checkbox"});M.append(v,document.createTextNode(t.selectAll));let h=k("div","fg-set-list"),y=()=>{let S=x.value.trim().toLowerCase();return S?d.filter(([E,m])=>f(E,m).toLowerCase().includes(S)):d},g=()=>{let S=y(),E=S.filter(([m])=>u.has(m)).length;v.checked=E>0&&E===S.length,v.indeterminate=E>0&&E<S.length},w=()=>{let S=y();if(h.replaceChildren(...S.slice(0,Wt).map(([E,m])=>{let R=k("label","fg-set-item"),I=k("input","fg-checkbox",{type:"checkbox"});return I.checked=u.has(E),I.addEventListener("change",()=>{I.checked?u.add(E):u.delete(E),g()}),R.append(I,document.createTextNode(f(E,m))),R})),S.length>Wt){let E=k("div","fg-set-more");E.textContent=`\u2026 +${S.length-Wt}`,h.append(E)}g()};v.addEventListener("change",()=>{for(let[S]of y())v.checked?u.add(S):u.delete(S);w()}),x.addEventListener("input",w);let C=()=>{r.setFilter(e,u.size===l.size?null:{type:"set",values:d.filter(([S])=>u.has(S)).map(([,S])=>S)}),n()};return x.addEventListener("keydown",S=>S.key==="Enter"&&C()),w(),p.append(this.title(t),x,M,h,this.actions(e,t,C,n)),p}};var Jn=new WeakMap,Lo=0;function $e(s){let e=Jn.get(s);return e||Jn.set(s,e=`r${++Lo}`),e}var wt=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,f,p,x;let t=this.deps.collator(),n=e.display,r=!!(n!=null&&n.getParentId)!=!!((u=this.last.display)!=null&&u.getParentId),o=e.data!==this.last.data,i=o||r||e.filters!==this.last.filters||e.quickFilter!==this.last.quickFilter,a=i||e.sort!==this.last.sort||t!==this.last.collator,l=a||(n==null?void 0:n.version)!==this.last.displayVersion||(n==null?void 0:n.groupBy)!==((f=this.last.display)==null?void 0:f.groupBy);if(o){let M=this.deps.getRowId;this.nodes=e.data.map((v,h)=>({id:M?String(M(v)):$e(v),data:v,sourceIndex:h}))}i&&(this.filtered=this.filter(e),this.stats.filterRuns++),a&&(this.sorted=zn(this.filtered,e.sort,M=>this.deps.columnDef(M),t),this.stats.sortRuns++),l&&(this.full=n?this.buildDisplay(n,e.sort,t):this.sorted);let d=(p=e.page)!=null?p:null,c=(x=this.last.page)!=null?x:null;(l||(d==null?void 0:d.index)!==(c==null?void 0:c.index)||(d==null?void 0:d.size)!==(c==null?void 0:c.size))&&(this.display=d?this.full.slice(d.index*d.size,(d.index+1)*d.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)):$e(e)}indexOfId(e){var t;return this.indexById||(this.indexById=new Map(this.display.map((n,r)=>[n.id,r]))),(t=this.indexById.get(e))!=null?t:-1}layout(e,t,n,r=0){var c;let o=this.layoutCache;if(o&&o.rows===this.display&&o.rh===e&&o.dh===t&&o.hv===r)return o;let i=this.display.length,a=new Float64Array(i+1),l=!0,d=n&&n.size?n:null;for(let u=0;u<i;u++){let f=this.display[u],p=e;f.kind==="detail"?p=t:d&&!f.kind&&(p=(c=d.get(f.id))!=null?c:e),p!==e&&(l=!1),a[u+1]=a[u]+p}return this.layoutCache={rows:this.display,rh:e,dh:t,hv:r,offsets:a,uniform:l},this.layoutCache}filter(e){var d;let t=Object.entries(e.filters).map(([c,u])=>({def:this.deps.columnDef(c),pred:cn(u)})).filter(c=>!!c.def),n=un(e.quickFilter),r=n.length?this.deps.quickColumns():[];if(!t.length&&!n.length)return this.nodes;let o=this.nodes.filter(c=>{for(let u of t)if(!u.pred(B(u.def,c.data)))return!1;if(n.length){let u=r.map(f=>this.deps.format(f,B(f,c.data))).join("").toLowerCase();if(!hn(n,u))return!1}return!0}),i=(d=e.display)==null?void 0:d.getParentId;if(!i)return o;let a=new Map(this.nodes.map(c=>[c.id,c])),l=new Set(o);for(let c of o){let u=i(c.data),f=new Set;for(;u!=null&&!f.has(u);){f.add(u);let p=a.get(String(u));if(!p)break;l.add(p),u=i(p.data)}}return this.nodes.filter(c=>l.has(c))}isOpen(e,t,n){let r=e.expanded.get(t);return r!==void 0?r:e.defaultExpanded===-1||n<e.defaultExpanded}withDetails(e,t,n){for(let r of t)n.push(r),e.detailOpen.has(r.id)&&(!e.isMaster||e.isMaster(r.data))&&n.push({id:`detail:${r.id}`,data:{},sourceIndex:-1,kind:"detail",detailOf:r})}buildDisplay(e,t,n){let r=[];if(e.getParentId)return this.buildTree(e,r),r;let o=e.groupBy.filter(a=>this.deps.columnDef(a));if(!o.length)return e.detailOpen.size?(this.withDetails(e,this.sorted,r),r):this.sorted;let i=(a,l,d)=>{var M;let c=o[l],u=this.deps.columnDef(c),f=new Map;for(let v of a){let h=B(u,v.data),y=O(h)?"":Z(h),g=f.get(y);g||f.set(y,g={value:h,nodes:[]}),g.nodes.push(v)}let p=((M=t.find(v=>v.colId===c))==null?void 0:M.dir)==="desc"?-1:1,x=[...f.entries()].sort((v,h)=>ue(v[1].value,h[1].value,n)*p);for(let[v,h]of x){let y=`${d}${c}:${v}`,g=this.isOpen(e,y,l);r.push({id:`group:${y}`,data:{},sourceIndex:-1,kind:"group",level:l,group:{key:y,colId:c,value:h.value,rows:h.nodes.map(w=>w.data),expanded:g}}),g&&(l+1<o.length?i(h.nodes,l+1,`${y}|`):this.withDetails(e,h.nodes.map(w=>({...w,level:l+1})),r))}};return i(this.sorted,0,""),r}buildTree(e,t){let n=new Set(this.sorted.map(a=>a.id)),r=new Map,o=[];for(let a of this.sorted){let l=e.getParentId(a.data),d=l==null?null:String(l);if(d!==null&&n.has(d)&&d!==a.id){let c=r.get(d);c||r.set(d,c=[]),c.push(a)}else o.push(a)}let i=(a,l,d)=>{var c,u,f;for(let p of a){if(d.has(p.id))continue;let x=(c=r.get(p.id))!=null?c:[],M=!x.length&&!!((u=e.lazyChildren)!=null&&u.call(e,p.id,p.data)),v=x.length>0&&this.isOpen(e,p.id,l),h={...p,level:l,hasChildren:x.length>0||M,expanded:v};M&&((f=e.loading)!=null&&f.has(p.id))&&(h.loading=!0),this.withDetails(e,[h],t),v&&i(x,l+1,new Set([...d,p.id]))}};i(o,0,new Set)}};var Io=3e3,Do=new Float64Array(0),Pe=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 i,a,l,d;let t=this.query,n=!t||t.sort!==e.sort||t.filters!==e.filters||t.quickFilter!==e.quickFilter,r=(i=e.page)!=null?i:null,o=((a=r==null?void 0:r.size)!=null?a:0)!==((d=(l=this.page)==null?void 0:l.size)!=null?d:0);this.query={sort:e.sort,filters:e.filters,quickFilter:e.quickFilter},this.page=r?{...r}:null,(n||o)&&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 r;let t=Math.floor(e/this.bs),n=this.blocks.get(t);return(n==null?void 0:n.state)==="loaded"&&(r=n.nodes[e-t*this.bs])!=null?r: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 d;let t=this.blocks.get(e);if(t&&(t.state!=="failed"||Date.now()<((d=t.retryAt)!=null?d:0))||this.total!==null&&e*this.bs>=this.total&&e>0)return;let n=e*this.bs,r=n+this.bs,o=this.gen;this.lastBlock=e,this.blocks.set(e,{state:"loading",nodes:[]});let i=this.query,a=c=>{o===this.gen&&(this.blocks.set(e,{state:"failed",nodes:[],retryAt:Date.now()+Io}),this.deps.onFailed(n,r,c))},l;try{l=Promise.resolve(this.deps.datasource.getRows({start:n,end:r,sort:[...i.sort],filters:{...i.filters},quickFilter:i.quickFilter}))}catch(c){l=Promise.reject(c)}l.then(c=>{if(o!==this.gen)return;let u=Array.isArray(c==null?void 0:c.rows)?c.rows.filter(x=>x!==null&&typeof x=="object"):null;if(!u){N("datasource.getRows must resolve to { rows: Row[], total?: number }"),a(new Error("invalid datasource response"));return}let f=this.deps.getRowId,p=u.slice(0,this.bs).map((x,M)=>({id:f?String(f(x)):$e(x),data:x,sourceIndex:n+M}));this.blocks.set(e,{state:"loaded",nodes:p}),typeof c.total=="number"&&c.total>=0?this.total=c.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,r)=>Math.abs(r-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 r of[...this.blocks.keys()].sort((o,i)=>o-i)){let o=this.blocks.get(r);o.state==="loaded"&&e.push(...o.nodes)}let t=new Map;for(let r of e)t.set(r.id,r.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 r=0;r<n;r++)e.rows[r]=(t=this.peek(this.base+r))!=null?t:this.placeholder(this.base+r)}return e.rows}dataRows(){return this.built().data}allNodes(){return this.built().data}idOf(e){return this.deps.getRowId?String(this.deps.getRowId(e)):$e(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:Do,uniform:!0}}};function Qn(s){let e=s.idAt(s.index);if(s.mode==="single"){let t=new Set;return s.toggle&&s.selected.has(e)||t.add(e),{selected:t,anchorIndex:s.index}}if(s.range&&s.anchorIndex!=null){let t=s.toggle?new Set(s.selected):new Set,n=Math.min(s.anchorIndex,s.index),r=Math.max(s.anchorIndex,s.index);for(let o=n;o<=r;o++)t.add(s.idAt(o));return{selected:t,anchorIndex:s.anchorIndex}}if(s.toggle){let t=new Set(s.selected);return t.has(e)?t.delete(e):t.add(e),{selected:t,anchorIndex:s.index}}return{selected:new Set([e]),anchorIndex:s.index}}var vt=class{constructor(e){this.bus=new we;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 er=s=>Math.round(s*2.75),tr=s=>Math.round(s*3.1),nr=13,To=[],$o=100,Po=new Map;function ae(s){return s.every(e=>e!==null&&typeof e=="object")?s:(N("data contains entries that are not objects; they were skipped"),s.filter(e=>e!==null&&typeof e=="object"))}var jt=class{constructor(e,t){this.options=t;this.events=new we;this.pinnedRows={top:[],bottom:[]};this.spanCache=null;this.editVersion=0;this.tracker=new it;this.history=new st;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 gt(this);this.sourceDefs=[];this.pivotCfg=null;this.pivotData=null;this.savedGroup=null;this.page=0;this.pageSize=$o;this.treeLoaded=new Set;this.treeLoading=new Set;this.lazyChildren=(e,t)=>{var n,r;if(this.treeLoaded.has(e))return!1;try{return!!((r=(n=this.options.treeData)==null?void 0:n.hasChildren)!=null&&r.call(n,t))}catch{return!1}};var i,a,l,d,c,u,f,p,x,M;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 vt({data:Array.isArray(t.data)?ae(t.data):[],sort:[],filters:{},quickFilter:"",selected:new Set,anchorId:null,focus:null,range:null,extraRanges:[],locale:Re(t.locale),theme:(i=t.theme)!=null?i:"light"}),this.sourceDefs=Array.isArray(t.columns)?t.columns:[],this.columns=new He(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 Pe({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:(v,h,y)=>this.serverLoaded(v,h,y),onFailed:(v,h,y)=>this.serverFailed(v,h,y)}):new wt({getRowId:t.getRowId,columnDef:v=>{var h;return(h=this.columns.getNode(v))==null?void 0:h.def},quickColumns:()=>this.columns.displayed().filter(v=>!P(v.id)).map(v=>v.def),format:(v,h)=>K(v,this.store.state.locale.code)(h),collator:()=>this.collator()}),this.groupBy=this.validGroupBy((a=t.groupBy)!=null?a:[]),this.defaultExpanded=(l=t.groupDefaultExpanded)!=null?l:0,t.treeData&&!t.getRowId&&N("treeData needs getRowId so parent ids can be matched"),this.updateRows(),this.summaryOpts=(d=t.summary)!=null?d:null,this.refreshSummary();let r=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:r,family:(c=t.fontFamily)!=null?c:null};let o=r!=null?r:nr;if(this.renderer=new qe(e,this,{rowHeight:(u=t.rowHeight)!=null?u:er(o),headerHeight:(f=t.headerHeight)!=null?f:tr(o)}),this.renderer.applyFont(this.font.size,this.font.family),this.menu=new mt(this),this.chooser=new Ze(this),this.contextMenu=new Qe(this),this.editor=new ot(this),this.finder=new tt(this),this.fillHandle=new et(this),this.groupPanel=t.groupPanel?new Ke(this):null,this.pinnedRows={top:ae((p=t.pinnedTopRows)!=null?p:[]),bottom:ae((x=t.pinnedBottomRows)!=null?x:[])},this.sideBar=t.sideBar?new Je(this,typeof t.sideBar=="object"&&!!t.sideBar.open,(M=typeof t.sideBar=="object"?t.sideBar.panels:void 0)!=null?M:t.pivot||t.pivotPanel?["columns","filters","pivot"]:void 0):null,this.disposers.push(this.store.bus.on("change",v=>this.onChange(v)),Ln(this),Cn(this),()=>this.menu.close(),()=>this.chooser.close(),()=>this.contextMenu.destroy(),()=>this.editor.cancel(),()=>this.fillHandle.destroy(),()=>{var v;return(v=this.groupPanel)==null?void 0:v.destroy()},()=>this.charts.destroy()),typeof ResizeObserver!="undefined"){let v=new ResizeObserver(()=>this.renderer.schedule());v.observe(this.renderer.main),this.disposers.push(()=>v.disconnect())}t.pivot&&this.setPivot(t.pivot),Xn(t.licenseKey).then(v=>{v&&!this.destroyed&&this.renderer.showFreeBadge()}),this.renderer.render(),this.api=this.createApi(),_e.set(this.renderer.root,this)}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.invalidateHeights(),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,t;return{groupBy:this.options.treeData?To: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,lazyChildren:(t=this.options.treeData)!=null&&t.hasChildren?this.lazyChildren:void 0,loading:this.treeLoading,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 r,o;for(let i of n)!i||typeof i!="object"||(Array.isArray(i.children)?t(i.children):((r=i.id)!=null?r:i.field)&&e.push({id:(o=i.id)!=null?o:i.field,def:i}))};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=Vt(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,r=new Map(this.sourceLeaves().map(d=>[d.id,d.def])),o={sum:n.sum,avg:n.avg,min:n.min,max:n.max,count:n.count},i=Vn(this.store.state.data,t,d=>r.get(d),{total:n.total,blank:n.blanks,agg:d=>{var c;return(c=o[d])!=null?c:d}},n.code);if(this.pivotData=i.rows,this.columns.setDefs(this.withSelect(i.columns)),this.groupBy=i.groupBy,!e)return;let a=d=>!!this.columns.getNode(d),l=this.store.state;(l.sort.some(d=>!a(d.colId))||Object.keys(l.filters).some(d=>!a(d)))&&this.store.set({sort:l.sort.filter(d=>a(d.colId)),filters:Object.fromEntries(Object.entries(l.filters).filter(([d])=>a(d)))}),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.veto("beforePageChange",{page:t,pageSize:this.pageSize})||(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.veto("beforePageChange",{page:Math.floor(t/e),pageSize:e})||(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 Pe&&(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}))}syncScroll(e,t){if(!e||typeof e.setScrollPosition!="function"||e===this.api)return()=>{};let n=new Map,r=a=>`${a.top},${a.left}`,o=(a,l)=>a.on("scroll",d=>{if(n.get(a)===r(d)){n.delete(a);return}l.setScrollPosition(t==="vertical"?{top:d.top}:t==="horizontal"?{left:d.left}:d),n.set(l,r(l.getScrollPosition()))}),i=[o(this.api,e),o(e,this.api)];return()=>{for(let a of i)a()}}veto(e,t){let n=!1;return this.events.emit(e,{...t,cancel:()=>{n=!0}}),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||P(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}loadChildren(e){let t=this.options.treeData,n=e.id;if(this.treeLoading.has(n))return;if(typeof t.loadChildren!="function"){N("treeData.hasChildren needs treeData.loadChildren");return}this.treeLoading.add(n),this.displayChanged();let r=()=>(this.treeLoading.delete(n),!this.destroyed&&this.store.state.data.includes(e.data));Promise.resolve().then(()=>t.loadChildren(e.data)).then(o=>{if(!r())return;let i=ae(Array.isArray(o)?o:[]);this.treeLoaded.add(n),this.expanded.set(n,!0),i.length&&this.replaceData([...this.store.state.data,...i]),this.displayChanged(),this.events.emit("childrenLoaded",{row:e.data,rows:i}),this.events.emit("groupToggle",{key:n,expanded:!0})},o=>{r()&&(N(`treeData.loadChildren failed for row "${n}"`),this.displayChanged(),this.events.emit("childrenLoadFailed",{row:e.data,error:o}))})}setGroupExpanded(e,t){var o,i;let n=this.rowModel.rows().find(a=>this.isExpandable(a)&&this.expandKey(a)===e);if((n?!!((i=(o=n.group)==null?void 0:o.expanded)!=null?i:n.expanded):this.expanded.get(e))!==t){if(t&&n&&!n.group&&this.options.treeData&&this.lazyChildren(n.id,n.data)){this.loadChildren(n);return}this.expanded.set(e,t),this.displayChanged(),this.events.emit("groupToggle",{key:e,expanded:t})}}toggleRow(e){var n,r;let t=this.rowModel.getRow(e);this.isExpandable(t)&&this.setGroupExpanded(this.expandKey(t),!((r=(n=t.group)==null?void 0:n.expanded)!=null?r:t.expanded))}expandAll(e=!0){this.expanded.clear(),this.defaultExpanded=e?-1:0,this.displayChanged()}groupAggregate(e,t){var o;let n=(o=this.columns.getNode(t))==null?void 0:o.def;if(!e.group||!(n!=null&&n.aggFunc))return;this.aggCache.ver!==this.editVersion&&(this.aggCache={ver:this.editVersion,map:new WeakMap});let r=this.aggCache.map.get(e.group);if(r||this.aggCache.map.set(e.group,r=new Map),!r.has(t)){let i=e.group.rows;try{r.set(t,me(n.aggFunc,i.map(a=>B(n,a)),i))}catch{N(`aggFunc of column "${t}" threw`),r.set(t,null)}}return r.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,t=this.options.treeData;return!this.rowModel.server&&!e.sort.length&&!Object.keys(e.filters).length&&!e.quickFilter.trim()&&!this.groupBy.length&&(!t||typeof t.setParentId=="function")}get dragOptions(){let e=this.options.rowDrag;return e&&typeof e=="object"?e:{}}parentOf(e){let t=null;try{t=this.options.treeData.getParentId(e)}catch{t=null}return t==null?null:String(t)}rawParent(e){var t;try{return(t=this.options.treeData.getParentId(e))!=null?t:null}catch{return null}}idValue(e){let t=this.rowModel.idOf(e);for(let r of this.store.state.data){let o=this.rawParent(r);if(o!==null&&String(o)===t)return o}return this.store.state.data.some(r=>typeof this.rawParent(r)=="number")&&t.trim()!==""&&Number.isFinite(Number(t))?Number(t):t}canDropRow(e,t,n,r=this){if(!this.canMoveRows()||t===e)return!1;if(r===this&&this.options.treeData&&t){let i=this.rowModel.idOf(e),a=new Set;for(let l=this.rowModel.idOf(t);l!==null&&!a.has(l);){if(l===i)return!1;a.add(l);let d=this.rowModel.allNodes().find(c=>c.id===l);l=d?this.parentOf(d.data):null}}let o=this.dragOptions.canDrop;if(!o)return!0;try{return o({row:e,target:t,position:n,fromOtherGrid:r!==this})!==!1}catch{return N("rowDrag.canDrop threw; the drop was refused"),!1}}dropRow(e,t,n="after",r=this){var h,y;if(this.clientOnly("dropRow")||!e||typeof e!="object")return!1;let o=this.options.treeData;!o&&n==="inside"&&(n="after");let i=this.store.state.data,a=r!==this,l=a?-1:i.indexOf(e);if(!a&&l<0||t&&!i.includes(t)||a&&(!r.canMoveRows()||i.includes(e))||!this.canDropRow(e,t,n,r))return!1;let d=o?this.rawParent(e):null,c=!o||!t?null:n==="inside"?t:(h=this.store.state.data.find(g=>this.rowModel.idOf(g)===this.parentOf(t)))!=null?h:null,u=c?this.idValue(c):null,f=i.filter(g=>g!==e),p=!t||n==="inside"?f.length:f.indexOf(t)+(n==="after"?1:0);f.splice(p,0,e);let x=f.some((g,w)=>g!==i[w]);if(!a&&!x&&String(d!=null?d:"")===String(u!=null?u:""))return!1;let M=(g,w)=>{try{o.setParentId(e,g,w)}catch{N("treeData.setParentId threw")}},v=o&&(y=this.store.state.data.find(g=>this.rowModel.idOf(g)===this.parentOf(e)))!=null?y:null;return a?(r.removeRows([e]),o&&M(u,c),this.addRows([e],p)):(o&&M(u,c),this.replaceData(f),this.history.push({undo:()=>{o&&M(d,v),this.replaceData(i)},redo:()=>{o&&M(u,c),this.replaceData(f)}}),this.events.emit("rowDragEnd",{row:e,fromIndex:l,toIndex:p})),this.events.emit("rowDrop",{row:e,target:t,position:n,fromOtherGrid:a,fromGrid:a?r.api:null}),!0}moveRow(e,t,n=!0){if(this.clientOnly("moveRow")||!this.canMoveRows())return!1;let r=this.store.state.data,o=r.indexOf(e);if(o<0||!Number.isFinite(t))return!1;let i=Math.max(0,Math.min(r.length-1,Math.floor(t)));if(i===o)return!1;let a=[...r];return a.splice(o,1),a.splice(i,0,e),this.replaceData(a),n&&this.history.push({undo:()=>this.moveRow(e,o,!1),redo:()=>this.moveRow(e,i,!1)}),this.events.emit("rowDragEnd",{row:e,fromIndex:o,toIndex:i}),!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 r=t!=null?t:nr;this.options.rowHeight==null&&(this.renderer.opts.rowHeight=er(r)),this.options.headerHeight==null&&(this.renderer.opts.headerHeight=tr(r)),this.renderer.applyFont(t,n),this.renderer.invalidateHeights(),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 r,o;let e=this.summaryOpts;if(!((r=e==null?void 0:e.rows)!=null&&r.length)){this.summaryValues=[];return}let t=(o=e.scope)!=null?o:"filtered",n=t==="all"?this.rowModel.allNodes().map(i=>i.data):t==="selected"?this.selectedRows():this.rowModel.dataRows().map(i=>i.data);this.summaryValues=mn(e.rows,n,i=>{var a;return(a=this.columns.getNode(i))==null?void 0:a.def})}dataColumns(){return this.columns.displayed().filter(e=>!P(e.id))}validRange(e){if(!e||this.options.rangeSelection===!1)return null;let t=this.rowModel.getRowCount(),n=r=>!!r&&!P(r.colId)&&!!this.columns.getColumn(r.colId)&&r.rowIndex>=0&&r.rowIndex<t;return n(e.start)&&n(e.end)?{start:{...e.start},end:{...e.end}}:null}setRange(e,t=!1){let n=this.validRange(e),r=t||!this.store.state.extraRanges.length?this.store.state.extraRanges:[],o=this.store.state.range;JSON.stringify(o)===JSON.stringify(n)&&r===this.store.state.extraRanges||(this.store.set({range:n,extraRanges:r}),this.events.emit("rangeChange",{range:n&&{start:{...n.start},end:{...n.end}}}))}addRange(e){let{range:t,focus:n}=this.store.state,r=this.validRange(t!=null?t:n?{start:n,end:n}:null);r&&this.store.set({extraRanges:[...this.store.state.extraRanges,r]}),this.setRange(e,!0)}getRanges(){let e=[...this.store.state.extraRanges];return this.store.state.range&&e.push(this.store.state.range),e.map(t=>({start:{...t.start},end:{...t.end}}))}setRanges(e){var n;let t=(Array.isArray(e)?e:[]).map(r=>this.validRange(r)).filter(r=>!!r);this.store.set({extraRanges:t.slice(0,-1)}),this.setRange((n=t[t.length-1])!=null?n:null,!0)}boundsOf(e){if(!e)return null;let t=this.columns.getColumn(e.start.colId),n=this.columns.getColumn(e.end.colId);return!t||!n?null:Le({start:{rowIndex:e.start.rowIndex,colIndex:t.index},end:{rowIndex:e.end.rowIndex,colIndex:n.index}})}rangeBounds(){return this.boundsOf(this.store.state.range)}allRangeBounds(){return[...this.store.state.extraRanges,this.store.state.range].map(e=>this.boundsOf(e)).filter(e=>!!e)}rangeContains(e,t){let n=this.columns.getColumn(t);return!!n&&this.allRangeBounds().some(r=>Mn(r,e,n.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,r=this.columns.displayed(),o=t?null:this.rangeBounds(),i=t,a,l,d=t?[]:this.allRangeBounds();if(d.length>1){let u=d.every(p=>p.c1===d[0].c1&&p.c2===d[0].c2),f=d.every(p=>p.r1===d[0].r1&&p.r2===d[0].r2);if(u||f){let p=[...d].sort((v,h)=>u?v.r1-h.r1:v.c1-h.c1),x=p.map(v=>this.rangeMatrix(v)),M=u?x.flat():x[0].map((v,h)=>x.flatMap(y=>{var g;return(g=y[h])!=null?g:[]}));return e&&M.unshift((u?p.slice(0,1):p).flatMap(v=>this.rangeHeaders(v))),Dt(M)}}if(o){a=[];for(let u=o.r1;u<=o.r2;u++){let f=this.rowModel.getRow(u);f.kind||a.push(f.data)}l=r.slice(o.c1,o.c2+1).filter(u=>!P(u.id))}else if(i){let u=this.store.state.selected;a=this.rowModel.dataRows().filter(f=>u.has(f.id)).map(f=>f.data),l=this.dataColumns()}else{let u=this.store.state.focus,f=u&&this.columns.getColumn(u.colId),p=u&&this.rowModel.getRow(u.rowIndex);if(!f||!p||p.kind||P(f.id))return"";a=[p.data],l=[f]}let c=a.map(u=>l.map(f=>this.copyCell(f.def,u,n)));return e&&c.unshift(l.map(u=>{var f,p;return(p=(f=u.def.header)!=null?f:u.def.field)!=null?p:u.id})),Dt(c)}rangeHeaders(e){return this.columns.displayed().slice(e.c1,e.c2+1).filter(t=>!P(t.id)).map(t=>{var n,r;return(r=(n=t.def.header)!=null?n:t.def.field)!=null?r:t.id})}rangeMatrix(e){let t=this.columns.displayed().slice(e.c1,e.c2+1).filter(o=>!P(o.id)),n=this.store.state.locale.code,r=[];for(let o=e.r1;o<=e.r2;o++){let i=this.rowModel.getRow(o);i&&!i.kind&&r.push(t.map(a=>this.copyCell(a.def,i.data,n)))}return r}copyCell(e,t,n){let r=B(e,t),o=e.copyable;if(o===!1)return"";if(typeof o=="function"){let i=!1;try{i=o({value:r,row:t,column:e})!==!1}catch{i=!1}if(!i)return""}return nt(e,r,n)}copyToClipboard(e,t=!1){var r,o,i;let n=this.selectionTSV(e,t);if(n&&typeof navigator!="undefined"&&((r=navigator.clipboard)!=null&&r.writeText))try{(i=(o=navigator.clipboard.writeText(n))==null?void 0:o.catch)==null||i.call(o,()=>{})}catch{}return n}pasteText(e){var M;let t=kn(e),n={changed:0,skipped:0};if(!t.length)return n;let r=this.columns.displayed(),o=this.rowModel.getRowCount(),i=this.rangeBounds(),a=this.store.state.focus,l=a&&this.columns.getColumn(a.colId),d,c;if(i)d=i.r1,c=i.c1;else if(a&&l&&!P(l.id))d=a.rowIndex,c=l.index;else return n;let u=[],f=t.length===1&&t[0].length===1,p=f&&i?i.r2-i.r1+1:t.length,x=f&&i?i.c2-i.c1+1:Math.max(...t.map(v=>v.length));for(let v=0;v<p;v++){let h=d+v;if(h>=o)break;let y=this.rowModel.getRow(h);if(!y.kind)for(let g=0;g<x;g++){let w=r[c+g];if(!w)break;if(P(w.id))continue;let C=f&&i?t[0][0]:(M=t[v])==null?void 0:M[g];if(C===void 0)continue;let S=w.def;if(!S.field||!ne(S,y.data,h)){n.skipped++;continue}let E=y.data[S.field],m=this.acceptText(S,y.data,C,E);if(!m.ok){n.skipped++;continue}this.writeCell(u,y.data,S.field,w.id,h,m.value)&&n.changed++}}return this.endCellTx(u),this.events.emit("paste",{...n}),n}acceptText(e,t,n,r){var a;let o,i=e.editor;if(i&&typeof i=="object"&&i.type==="select"){let l=(a=typeof i.options=="function"?i.options(t):i.options)!=null?a:[],d=n.trim().toLowerCase(),c=l.map(u=>u!==null&&typeof u=="object"&&"value"in u?u:{value:u,label:String(u),disabled:!1}).find(u=>{var f;return String(u.value).toLowerCase()===d||((f=u.label)!=null?f:"").toLowerCase()===d});if(!c||c.disabled)return{ok:!1};o=c.value}else if(e.formulas&&ge(n.trim()))o=n.trim();else{let l=rt(e,n,r);if(!l.ok)return l;o=l.value}return this.cellError(e,t,o)!==null?{ok:!1}:{ok:!0,value:o}}cellError(e,t,n){let r=this.store.state.locale;if(e.required&&O(n))return r.required;if(e.unique&&e.field&&!O(n)){let o=n instanceof Date?n.getTime():String(n),i=e.field;if(this.store.state.data.some(a=>{if(a===t)return!1;let l=a[i];return!O(l)&&(l instanceof Date?l.getTime():String(l))===o}))return r.duplicate}if(e.validate){let o;try{o=e.validate(n,t)}catch{o=r.invalidValue}if(o!==!0)return typeof o=="string"&&o?o:r.invalidValue}return null}validateAll(){let e=[],t=this.columns.getState().map(n=>({id:n.colId,def:this.columns.getNode(n.colId).def})).filter(n=>n.def.field&&n.def.editable&&(n.def.required||n.def.unique||n.def.validate));return this.store.state.data.forEach((n,r)=>{let o=this.rowModel.idOf(n),i=this.rowModel.indexOfId(o);for(let a of t){if(!ne(a.def,n,i<0?r:i))continue;let l=this.cellError(a.def,n,n[a.def.field]);l!==null&&e.push({row:n,rowIndex:i,colId:a.id,message:l})}}),e}mergeSpans(){if(this.rowModel.server||!this.columns.displayed().some(o=>o.def.merge||o.def.rowSpan))return Po;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,r=this.columns.displayed().filter(o=>o.def.merge||o.def.rowSpan);if(r.length&&!e.some(o=>o.kind)){let o=e.map(i=>i.data);for(let i of r)n.set(i.id,Ve(o,i.def))}return this.spanCache={rows:e,ver:t,spans:n},n}rangeAggregates(){let e=this.allRangeBounds();if(!e.length)return null;let t=this.columns.displayed(),n={cells:0,count:0,numbers:0,sum:0,min:1/0,max:-1/0},r=e.length>1?new Set:null;for(let o of e)for(let i=o.r1;i<=o.r2;i++){let a=this.rowModel.getRow(i);if(!a||a.kind)continue;let l=a.data;for(let d of t.slice(o.c1,o.c2+1)){if(P(d.id))continue;if(r){let u=`${i},${d.index}`;if(r.has(u))continue;r.add(u)}n.cells++;let c=B(d.def,l);if(!O(c)&&(n.count++,typeof c=="number"||d.def.type==="number"&&!Number.isNaN(Number(c)))){let u=Number(c);n.numbers++,n.sum+=u,u<n.min&&(n.min=u),u>n.max&&(n.max=u)}}}return n}fillRange(e){var u;let t=(u=this.rangeBounds())!=null?u:(()=>{let f=this.store.state.focus,p=f&&this.columns.getColumn(f.colId);return f&&p&&!P(p.id)?{r1:f.rowIndex,r2:f.rowIndex,c1:p.index,c2:p.index}:null})(),n=this.columns.getColumn(e.start.colId),r=this.columns.getColumn(e.end.colId);if(!t||!n||!r)return;let o=Le({start:{rowIndex:e.start.rowIndex,colIndex:n.index},end:{rowIndex:e.end.rowIndex,colIndex:r.index}}),i=this.rowModel.getRowCount();o.r1=Math.max(0,o.r1),o.r2=Math.min(i-1,o.r2);let a=this.columns.displayed(),l=[],d=(f,p,x)=>{let M=a[p],v=this.rowModel.getRow(f),h=M==null?void 0:M.def;!v||v.kind||!(h!=null&&h.field)||P(M.id)||!ne(h,v.data,f)||this.cellError(h,v.data,x)===null&&this.writeCell(l,v.data,h.field,M.id,f,x)},c=(f,p)=>B(a[p].def,this.rowModel.getRow(f).data);if(o.r1<t.r1||o.r2>t.r2)for(let f=t.c1;f<=t.c2;f++){let p=[],x=[];for(let M=t.r1;M<=t.r2;M++)p.push(c(M,f));for(let M=t.r2;M>=t.r1;M--)x.push(c(M,f));Ee(p,o.r2-t.r2).forEach((M,v)=>d(t.r2+1+v,f,M)),Ee(x,t.r1-o.r1).forEach((M,v)=>d(t.r1-1-v,f,M))}else if(o.c1<t.c1||o.c2>t.c2)for(let f=t.r1;f<=t.r2;f++){let p=[],x=[];for(let M=t.c1;M<=t.c2;M++)p.push(c(f,M));for(let M=t.c2;M>=t.c1;M--)x.push(c(f,M));Ee(p,o.c2-t.c2).forEach((M,v)=>d(f,t.c2+1+v,M)),Ee(x,t.c1-o.c1).forEach((M,v)=>d(f,t.c1-1-v,M))}else return;this.endCellTx(l),this.setRange({start:{rowIndex:o.r1,colId:a[o.c1].id},end:{rowIndex:o.r2,colId:a[o.c2].id}})}setPinnedRows(e){e.top&&(this.pinnedRows.top=ae(e.top)),e.bottom&&(this.pinnedRows.bottom=ae(e.bottom)),this.renderer.invalidate({rows:!0})}writeCell(e,t,n,r,o,i){let a=t[n];return Object.is(a,i)||this.veto("beforeCellChange",{row:t,rowIndex:o,colId:r,oldValue:a,newValue:i})?!1:(this.tracker.beforeChange(t),t[n]=i,e.push({row:t,field:n,colId:r,oldValue:a,newValue:i}),this.events.emit("cellValueChanged",{row:t,rowIndex:o,colId:r,oldValue:a,newValue:i}),!0)}endCellTx(e){if(!e.length)return;let t=(n,r)=>{for(let o of n){let i=o.row[o.field];o.row[o.field]=o[r],this.events.emit("cellValueChanged",{row:o.row,rowIndex:this.rowModel.indexOfId(this.rowModel.idOf(o.row)),colId:o.colId,oldValue:i,newValue:o[r]})}this.afterDataEdit()};this.history.push({undo:()=>t([...e].reverse(),"oldValue"),redo:()=>t(e,"newValue")}),this.afterDataEdit()}afterDataEdit(){this.renderer.invalidateHeights(),this.editVersion++,this.refreshSummary(),this.renderer.invalidate({rows:!0})}applyEdit(e,t,n){var a;let r=this.rowModel.getRow(e),o=(a=this.columns.getColumn(t))==null?void 0:a.def;if(!r||!(o!=null&&o.field))return;let i=[];this.writeCell(i,r.data,o.field,t,e,n),this.endCellTx(i)}clearCells(){var a,l;let e=this.columns.displayed(),t=this.allRangeBounds(),n=this.store.state.focus,r=n?(a=this.columns.getColumn(n.colId))==null?void 0:a.index:void 0,o=t.length?t:n&&r!==void 0?[{r1:n.rowIndex,r2:n.rowIndex,c1:r,c2:r}]:[];if(!o.length)return;let i=[];for(let d of o)for(let c=d.r1;c<=d.r2;c++){let u=this.rowModel.getRow(c);for(let f=d.c1;f<=d.c2;f++){let p=(l=e[f])==null?void 0:l.def;u&&!u.kind&&(p!=null&&p.field)&&ne(p,u.data,c)&&this.writeCell(i,u.data,p.field,e[f].id,c,null)}}this.endCellTx(i)}replaceData(e){this.store.set({data:e});let t=new Set(this.rowModel.allNodes().map(i=>i.id)),n=this.store.state.selected;[...n].some(i=>!t.has(i))&&this.setSelected(new Set([...n].filter(i=>t.has(i))));let r=this.rowModel.getRowCount(),o=this.store.state.focus;o&&o.rowIndex>=r&&this.store.set({focus:r?{...o,rowIndex:r-1}:null})}addRows(e,t,n=!0){if(this.clientOnly("addRows"))return[];let r=ae(Array.isArray(e)?e:[]);if(!r.length)return[];let o=[...this.store.state.data],i=t===void 0?o.length:Math.max(0,Math.min(o.length,t));o.splice(i,0,...r);for(let a of r)this.tracker.created.add(a);return this.replaceData(o),n&&this.history.push({undo:()=>this.removeRows(r,!1),redo:()=>this.addRows(r,i,!1)}),this.events.emit("rowsAdded",{rows:[...r]}),r}removeRows(e,t=!0){if(this.clientOnly("removeRows"))return[];let n=this.store.state.data,r=typeof e=="function"?e:(l=>d=>l.has(d))(new Set(e)),o=[];if(n.forEach((l,d)=>{let c=!1;try{c=!!r(l)}catch{c=!1}c&&o.push({row:l,index:d})}),!o.length)return[];let i=new Set(o.map(l=>l.row)),a=new Set(o.filter(l=>this.tracker.created.has(l.row)).map(l=>l.row));for(let{row:l,index:d}of o)a.has(l)?this.tracker.created.delete(l):this.tracker.deleted.set(l,d);return this.replaceData(n.filter(l=>!i.has(l))),t&&this.history.push({undo:()=>{let l=[...this.store.state.data];for(let{row:d,index:c}of o)l.splice(Math.min(c,l.length),0,d),this.tracker.deleted.delete(d),a.has(d)&&this.tracker.created.add(d);this.replaceData(l)},redo:()=>this.removeRows([...i],!1)}),this.events.emit("rowsRemoved",{rows:o.map(l=>l.row)}),o.map(l=>l.row)}trackedFields(){let e=[],t=n=>{for(let r of n)r.children?t(r.children):r.def.field&&!P(r.id)&&e.push({field:r.def.field,colId:r.id})};return t(this.columns.roots()),e}getChanges(){let e=this.trackedFields(),t=[];for(let[n,r]of this.tracker.originals)if(!this.tracker.deleted.has(n))for(let o of this.tracker.diff(n,e.map(i=>i.field)))t.push({row:n,colId:e.find(i=>i.field===o).colId,oldValue:r[o],newValue:n[o]});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,r]of this.tracker.originals)Object.assign(n,r);let e=this.store.state.data.filter(n=>!this.tracker.created.has(n)),t=[...this.tracker.deleted.entries()].sort((n,r)=>n[1]-r[1]);e=[...e];for(let[n,r]of t)e.splice(Math.min(r,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=k("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 r of e){let o=this.columns.getNode(r);!o||o.children||o.hide===!t||(this.columns.setHide(r,!t),n.push(r))}if(n.length){this.columnsChanged();for(let r of n)this.events.emit("columnVisible",{colId:r,visible:t})}}autoSize(e){var l,d;let t=(e?e.map(c=>this.columns.getColumn(c)):this.columns.displayed()).filter(c=>!!c&&Be(c.def)),{first:n,last:r}=this.renderer.renderedRange(),o=this.store.state.locale.code,i=66,a=24;for(let c of t){let u=this.renderer.measureText((d=(l=c.def.header)!=null?l:c.def.field)!=null?d:"",!0)+i,f=K(c.def,o);for(let x=n;x<=r;x++){let M=this.rowModel.getRow(x);M&&(u=Math.max(u,this.renderer.measureText(f(B(c.def,M.data)),!1)+a))}let p=this.columns.setWidth(c.id,Math.ceil(u));this.events.emit("columnResize",{colId:c.id,width:p})}this.layoutChanged()}resetColumns(){this.columns.reset(),this.columnsChanged()}setSort(e){let t=e.filter(n=>{let r=this.columns.getNode(n.colId);return!r||r.children?(N(`setSort: unknown column "${n.colId}"`),!1):n.dir==="asc"||n.dir==="desc"});this.veto("beforeSort",{sort:t.map(n=>({...n}))})||(this.store.set({sort:t}),this.events.emit("sortChange",{sort:[...t]}))}toggleSort(e,t){let n=this.store.state.sort,r=n.find(a=>a.colId===e),o=r?r.dir==="asc"?"desc":null:"asc",i;t?o?r?i=n.map(a=>a.colId===e?{colId:e,dir:o}:a):i=[...n,{colId:e,dir:o}]:i=n.filter(a=>a.colId!==e):i=o?[{colId:e,dir:o}]:[],this.setSort(i)}setFilter(e,t){let n=this.columns.getNode(e);if(!n||n.children){N(`setFilter: unknown column "${e}"`);return}if(this.veto("beforeFilter",{colId:e,model:t}))return;let r={...this.store.state.filters};t?r[e]=t:delete r[e],this.store.set({filters:r}),this.events.emit("filterChange",{filters:{...r}})}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()})}rowSelectable(e){let t=this.options.isRowSelectable;if(!t)return!0;try{return!!t(e)}catch{return!1}}selectFromClick(e,t,n){var a,l;let r=this.options.rowSelection;if(!r||e<0||e>=this.rowModel.getRowCount())return;let o=this.rowModel.getRow(e);if(o.kind||!this.rowSelectable(o.data))return;let i=Qn({selected:this.store.state.selected,anchorIndex:this.anchorIndex(),mode:r,index:e,idAt:d=>this.rowModel.getRow(d).id,toggle:t,range:n});if(this.rowModel.rows()!==this.rowModel.dataRows()||this.options.isRowSelectable)for(let d of i.selected){if(this.store.state.selected.has(d))continue;let c=this.rowModel.indexOfId(d),u=c>=0?this.rowModel.getRow(c):null;u&&(u.kind||!this.rowSelectable(u.data))&&i.selected.delete(d)}this.setSelected(i.selected,(l=(a=this.rowModel.getRow(i.anchorIndex))==null?void 0:a.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}selectableRows(){let e=this.rowModel.dataRows();return this.options.isRowSelectable?e.filter(t=>this.rowSelectable(t.data)):e}toggleSelectAll(){let e=this.selectableRows(),t=this.store.state.selected,n=e.length>0&&e.every(o=>t.has(o.id)),r=new Set(t);for(let o of e)n?r.delete(o.id):r.add(o.id);this.setSelected(r)}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(an),this.options.rowSelection&&t.push(sn),[...t,...e]}setData(e,t){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.treeLoaded.clear(),this.treeLoading.clear(),this.renderer.dropDetail(),this.store.set({data:ae(e)}),t!=null&&t.scrollToTop&&this.renderer.setScroll({top:0,left:0});let n=this.store.state.selected;if(n.size)if(this.options.getRowId){let i=new Set(this.rowModel.allNodes().map(l=>l.id)),a=new Set([...n].filter(l=>i.has(l)));a.size!==n.size&&this.setSelected(a)}else this.setSelected(new Set,null);let r=this.rowModel.getRowCount(),o=this.store.state.focus;o&&o.rowIndex>=r&&this.store.set({focus:r?{...o,rowIndex:r-1}:null})}setColumns(e){var r;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=o=>!!this.columns.getNode(o),n=this.groupBy.filter(t);n.length!==this.groupBy.length&&(this.groupBy=n,(r=this.groupPanel)==null||r.refresh(),this.events.emit("groupChange",{groupBy:[...n]})),this.store.set({sort:this.store.state.sort.filter(o=>t(o.colId)),filters:Object.fromEntries(Object.entries(this.store.state.filters).filter(([o])=>t(o))),focus:null}),this.columnsChanged()}onChange(e){var r,o,i,a;let t=(...l)=>l.some(d=>e.includes(d));this.pivotCfg&&t("data","locale")&&this.rebuildPivot(!1),t("locale")&&(this.menu.close(),this.chooser.close(),(r=this.sideBar)==null||r.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")&&((o=this.summaryOpts)==null?void 0:o.scope)==="selected")&&this.refreshSummary(),t("locale")&&((i=this.groupPanel)==null||i.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,n)=>this.setData(t,n)),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.selectableRows().map(t=>t.id)]))),deselectAll:e(()=>this.setSelected(new Set,null)),getDisplayedRowCount:e(()=>this.rowModel.getRowCount()),scrollToRow:e(t=>this.renderer.scrollToRow(t)),validate:e(()=>this.validateAll()),getScrollPosition:e(()=>this.renderer.getScroll()),setScrollPosition:e(t=>this.renderer.setScroll(t!=null?t:{})),syncScroll:e((t,n="both")=>this.syncScroll(t,n)),setTheme:e(t=>this.store.set({theme:t})),setLocale:e(t=>this.store.set({locale:Re(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 r;return(r=this.sideBar)==null?void 0:r.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)),getRanges:e(()=>this.getRanges()),setRanges:e(t=>this.setRanges(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)),dropRow:e((t,n,r)=>this.dropRow(t,n,r)),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)=>Bt(t,["\uFEFF",Ft(this,n)],"text/csv;charset=utf-8")),getXlsx:e(t=>Ht(this,t)),exportXlsx:e((t="export.xlsx",n)=>Bt(t,[Ht(this,n)],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")),importFile:e((t,n)=>Hn(this,t,n)),on:e((t,n)=>this.events.on(t,n)),destroy:()=>this.destroy()}}destroy(){if(!this.destroyed){this.destroyed=!0,_e.delete(this.renderer.root);for(let e of this.disposers)e();this.renderer.destroy(),this.events.clear()}}};function rr(s,e){return new jt(s,e).api}var or={en:Q,ko:rn,"zh-CN":on,ja:nn,es:en,fr:tn,de:Qt};for(let s of Object.values(or))Ne(s);return cr(Ao);})();
1
+ "use strict";var FreeGrid=(()=>{var Pt=Object.defineProperty;var Go=Object.getOwnPropertyDescriptor;var Vo=Object.getOwnPropertyNames;var qo=Object.prototype.hasOwnProperty;var Wo=(i,e)=>{for(var t in e)Pt(i,t,{get:e[t],enumerable:!0})},Ko=(i,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Vo(e))!qo.call(i,o)&&o!==t&&Pt(i,o,{get:()=>e[o],enumerable:!(n=Go(e,o))||n.enumerable});return i};var Uo=i=>Ko(Pt({},"__esModule",{value:!0}),i);var Ii={};Wo(Ii,{buildWorkbook:()=>mn,createGrid:()=>$o,csrfHeaders:()=>Bo,en:()=>ie,exportWorkbook:()=>Fo,loadData:()=>Ho,locales:()=>zo,parseCsv:()=>yt,readXlsx:()=>Ct,registerLocale:()=>We,renderChart:()=>kt,resolveLocale:()=>Te,restDatasource:()=>vn,saveChanges:()=>Oo,setLicenseKey:()=>ko,verifyLicense:()=>un,version:()=>Be,writeXlsx:()=>ye});var jo={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",cut:"Cut",copyWithHeaders:"Copy with headers",paste:"Paste",pasteHint:"Clipboard access was blocked. Press Ctrl+V to paste.",required:"This field is required",invalidValue:"Invalid value",and:"And",or:"Or",advancedFilter:"Advanced filter",addCondition:"Add condition",duplicate:"This value is already used",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",chartDonut:"Donut chart",chartCombo:"Bar and line chart",chartScatter:"Scatter chart",freeBadge:"Free version",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"}},ie=jo;var yn=new Set;function H(i){yn.has(i)||(yn.add(i),console.warn(`[FreeGrid] ${i}`))}var ge=new Map([["en",ie]]);function We(i){ge.set(i.code,i)}function bn(i){let e=i.toLowerCase();for(let n of ge.keys())if(n.toLowerCase()===e)return n;let t=e.split("-")[0];if(t==="zh"){if(/-(tw|hk|mo|hant)(-|$)/.test(e)&&ge.has("zh-TW"))return"zh-TW";if(ge.has("zh-CN"))return"zh-CN"}for(let n of ge.keys())if(n.toLowerCase().split("-")[0]===t)return n}function _o(){var i;return typeof navigator=="undefined"?[]:(i=navigator.languages)!=null&&i.length?navigator.languages:navigator.language?[navigator.language]:[]}function Xo(i){var e,t;return{...ie,...i,code:(e=i.code)!=null?e:"en",ops:{...ie.ops,...(t=i.ops)!=null?t:{}}}}function Te(i,e=_o()){if(i&&typeof i=="object")return Xo(i);if(typeof i=="string"){let t=bn(i);return t?ge.get(t):(H(`locale "${i}" is not registered \u2014 import it from "@freegridjs/core/locales/${i}" and pass the pack (or call registerLocale). Falling back to "en".`),ie)}for(let t of e){let n=bn(t);if(n)return ge.get(n)}return ie}var Yo={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",cut:"Ausschneiden",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",and:"Und",or:"Oder",advancedFilter:"Erweiterter Filter",addCondition:"Bedingung hinzuf\xFCgen",duplicate:"Dieser Wert wird bereits verwendet",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",chartDonut:"Ringdiagramm",chartCombo:"Balken- und Liniendiagramm",chartScatter:"Streudiagramm",freeBadge:"Kostenlose Version",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"}},xn=Yo;var Zo={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",cut:"Cortar",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",and:"Y",or:"O",advancedFilter:"Filtro avanzado",addCondition:"A\xF1adir condici\xF3n",duplicate:"Este valor ya est\xE1 en uso",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",chartDonut:"Gr\xE1fico de anillo",chartCombo:"Gr\xE1fico de barras y l\xEDneas",chartScatter:"Gr\xE1fico de dispersi\xF3n",freeBadge:"Versi\xF3n gratuita",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"}},Cn=Zo;var Jo={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",cut:"Couper",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",and:"Et",or:"Ou",advancedFilter:"Filtre avanc\xE9",addCondition:"Ajouter une condition",duplicate:"Cette valeur est d\xE9j\xE0 utilis\xE9e",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",chartDonut:"Graphique en anneau",chartCombo:"Graphique barres et lignes",chartScatter:"Nuage de points",freeBadge:"Version gratuite",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"}},Rn=Jo;var Qo={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",cut:"\u5207\u308A\u53D6\u308A",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",and:"\u304B\u3064",or:"\u307E\u305F\u306F",advancedFilter:"\u8A73\u7D30\u30D5\u30A3\u30EB\u30BF\u30FC",addCondition:"\u6761\u4EF6\u3092\u8FFD\u52A0",duplicate:"\u3053\u306E\u5024\u306F\u3059\u3067\u306B\u4F7F\u308F\u308C\u3066\u3044\u307E\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",chartDonut:"\u30C9\u30FC\u30CA\u30C4\u30B0\u30E9\u30D5",chartCombo:"\u68D2\u30FB\u6298\u308C\u7DDA\u30B0\u30E9\u30D5",chartScatter:"\u6563\u5E03\u56F3",freeBadge:"\u7121\u6599\u7248\u3092\u4F7F\u7528\u4E2D",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"}},Sn=Qo;var er={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",cut:"\uC798\uB77C\uB0B4\uAE30",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",and:"\uADF8\uB9AC\uACE0",or:"\uB610\uB294",advancedFilter:"\uACE0\uAE09 \uD544\uD130",addCondition:"\uC870\uAC74 \uCD94\uAC00",duplicate:"\uC774\uBBF8 \uC0AC\uC6A9 \uC911\uC778 \uAC12\uC785\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",chartDonut:"\uB3C4\uB11B \uCC28\uD2B8",chartCombo:"\uB9C9\uB300\xB7\uAEBE\uC740\uC120 \uCC28\uD2B8",chartScatter:"\uBD84\uC0B0\uD615 \uCC28\uD2B8",freeBadge:"\uBB34\uB8CC \uC0AC\uC6A9 \uC911",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"}},kn=er;var tr={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",cut:"\u526A\u5207",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",and:"\u4E14",or:"\u6216",advancedFilter:"\u9AD8\u7EA7\u7B5B\u9009",addCondition:"\u6DFB\u52A0\u6761\u4EF6",duplicate:"\u8BE5\u503C\u5DF2\u88AB\u4F7F\u7528",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",chartDonut:"\u73AF\u5F62\u56FE",chartCombo:"\u67F1\u7EBF\u7EC4\u5408\u56FE",chartScatter:"\u6563\u70B9\u56FE",freeBadge:"\u514D\u8D39\u4F7F\u7528\u4E2D",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"}},Mn=tr;var nr={code:"zh-TW",noRows:"\u6C92\u6709\u53EF\u986F\u793A\u7684\u8CC7\u6599",filter:"\u7BE9\u9078",apply:"\u5957\u7528",reset:"\u91CD\u8A2D",selectAll:"(\u5168\u9078)",search:"\u641C\u5C0B\u2026",blanks:"(\u7A7A\u767D)",value:"\u503C",valueTo:"\u81F3",sortAsc:"\u905E\u589E\u6392\u5E8F",sortDesc:"\u905E\u6E1B\u6392\u5E8F",clearSort:"\u6E05\u9664\u6392\u5E8F",pinLeft:"\u56FA\u5B9A\u5728\u5DE6\u5074",pinRight:"\u56FA\u5B9A\u5728\u53F3\u5074",unpin:"\u53D6\u6D88\u56FA\u5B9A",columnMenu:"\u6B04\u4F4D\u9078\u55AE",selectRow:"\u9078\u53D6\u5217",selectAllRows:"\u9078\u53D6\u6240\u6709\u5217",chooseColumns:"\u9078\u64C7\u6B04\u4F4D",columns:"\u6B04\u4F4D",autosizeThis:"\u81EA\u52D5\u8ABF\u6574\u6B64\u6B04\u5BEC",autosizeAll:"\u81EA\u52D5\u8ABF\u6574\u6240\u6709\u6B04\u5BEC",resetColumns:"\u91CD\u8A2D\u6B04\u4F4D",hideColumn:"\u96B1\u85CF\u6B04\u4F4D",close:"\u95DC\u9589",copy:"\u8907\u88FD",cut:"\u526A\u4E0B",copyWithHeaders:"\u9023\u540C\u6A19\u984C\u8907\u88FD",paste:"\u8CBC\u4E0A",pasteHint:"\u7121\u6CD5\u5B58\u53D6\u526A\u8CBC\u7C3F\u3002\u8ACB\u6309 Ctrl+V \u8CBC\u4E0A\u3002",required:"\u6B64\u6B04\u4F4D\u70BA\u5FC5\u586B",invalidValue:"\u503C\u7121\u6548",and:"\u4E14",or:"\u6216",advancedFilter:"\u9032\u968E\u7BE9\u9078",addCondition:"\u65B0\u589E\u689D\u4EF6",duplicate:"\u6B64\u503C\u5DF2\u88AB\u4F7F\u7528",undo:"\u5FA9\u539F",redo:"\u91CD\u505A",deleteRows:"\u522A\u9664\u9078\u53D6\u7684\u5217",copyRows:"\u8907\u88FD\u9078\u53D6\u7684\u5217",statusRows:"{n} \u5217",statusFiltered:"{total} \u5217\u4E2D\u7684 {shown} \u5217",statusSelected:"\u5DF2\u9078\u53D6 {n} \u5217",count:"\u7B46\u6578",sum:"\u5408\u8A08",avg:"\u5E73\u5747",min:"\u6700\u5C0F",max:"\u6700\u5927",findPlaceholder:"\u5728\u8868\u683C\u4E2D\u5C0B\u627E",noMatches:"\u6C92\u6709\u7B26\u5408\u7684\u7D50\u679C",findNext:"\u4E0B\u4E00\u500B",findPrevious:"\u4E0A\u4E00\u500B",groupPanelHint:"\u5C07\u6B04\u4F4D\u6A19\u984C\u62D6\u66F3\u5230\u9019\u88E1\u4EE5\u5206\u7D44",groupByThis:"\u4F9D\u6B64\u6B04\u4F4D\u5206\u7D44",ungroup:"\u53D6\u6D88\u5206\u7D44",expandAll:"\u5168\u90E8\u5C55\u958B",collapseAll:"\u5168\u90E8\u647A\u758A",pagerRange:"{from}\u2013{to}\uFF0C\u5171 {total} \u7B46",pageOf:"\u7B2C {page} \u9801\uFF0C\u5171 {pages} \u9801",pageSize:"\u6BCF\u9801\u5217\u6578",firstPage:"\u7B2C\u4E00\u9801",previousPage:"\u4E0A\u4E00\u9801",nextPage:"\u4E0B\u4E00\u9801",lastPage:"\u6700\u5F8C\u4E00\u9801",loading:"\u8F09\u5165\u4E2D\u2026",loadFailed:"\u7121\u6CD5\u8F09\u5165\u8CC7\u6599",filters:"\u7BE9\u9078",clearFilters:"\u6E05\u9664\u6240\u6709\u7BE9\u9078",exportCsv:"\u532F\u51FA CSV",exportExcel:"\u532F\u51FA Excel",pivot:"\u6A1E\u7D10\u5206\u6790",pivotMode:"\u6A1E\u7D10\u5206\u6790\u6A21\u5F0F",pivotRows:"\u5217\u7FA4\u7D44",pivotColumns:"\u6B04\u6A19\u7C64",pivotValues:"\u503C",total:"\u7E3D\u8A08",addColumn:"\u65B0\u589E\u6B04\u4F4D\u2026",chartBar:"\u76F4\u689D\u5716",chartStacked:"\u5806\u758A\u76F4\u689D\u5716",chartLine:"\u6298\u7DDA\u5716",chartArea:"\u5340\u57DF\u5716",chartPie:"\u5713\u5F62\u5716",chartDonut:"\u74B0\u5708\u5716",chartCombo:"\u76F4\u689D\u8207\u6298\u7DDA\u5716",chartScatter:"\u6563\u4F48\u5716",freeBadge:"\u514D\u8CBB\u7248",ops:{contains:"\u5305\u542B",equals:"\u7B49\u65BC",notEquals:"\u4E0D\u7B49\u65BC",startsWith:"\u958B\u982D\u70BA",endsWith:"\u7D50\u5C3E\u70BA",blank:"\u7A7A\u767D",notBlank:"\u975E\u7A7A\u767D",eq:"\u7B49\u65BC",ne:"\u4E0D\u7B49\u65BC",lt:"\u5C0F\u65BC",lte:"\u5C0F\u65BC\u6216\u7B49\u65BC",gt:"\u5927\u65BC",gte:"\u5927\u65BC\u6216\u7B49\u65BC",between:"\u4ECB\u65BC",before:"\u65E9\u65BC",after:"\u665A\u65BC"}},En=nr;var or={code:"vi",noRows:"Kh\xF4ng c\xF3 d\u1EEF li\u1EC7u",filter:"L\u1ECDc",apply:"\xC1p d\u1EE5ng",reset:"\u0110\u1EB7t l\u1EA1i",selectAll:"(Ch\u1ECDn t\u1EA5t c\u1EA3)",search:"T\xECm\u2026",blanks:"(Tr\u1ED1ng)",value:"Gi\xE1 tr\u1ECB",valueTo:"\u0110\u1EBFn",sortAsc:"S\u1EAFp x\u1EBFp t\u0103ng d\u1EA7n",sortDesc:"S\u1EAFp x\u1EBFp gi\u1EA3m d\u1EA7n",clearSort:"B\u1ECF s\u1EAFp x\u1EBFp",pinLeft:"Ghim tr\xE1i",pinRight:"Ghim ph\u1EA3i",unpin:"B\u1ECF ghim",columnMenu:"Menu c\u1ED9t",selectRow:"Ch\u1ECDn d\xF2ng",selectAllRows:"Ch\u1ECDn t\u1EA5t c\u1EA3 d\xF2ng",chooseColumns:"Ch\u1ECDn c\u1ED9t",columns:"C\u1ED9t",autosizeThis:"T\u1EF1 \u0111\u1ED9ng ch\u1EC9nh \u0111\u1ED9 r\u1ED9ng c\u1ED9t n\xE0y",autosizeAll:"T\u1EF1 \u0111\u1ED9ng ch\u1EC9nh \u0111\u1ED9 r\u1ED9ng t\u1EA5t c\u1EA3 c\u1ED9t",resetColumns:"\u0110\u1EB7t l\u1EA1i c\u1ED9t",hideColumn:"\u1EA8n c\u1ED9t",close:"\u0110\xF3ng",copy:"Sao ch\xE9p",cut:"C\u1EAFt",copyWithHeaders:"Sao ch\xE9p k\xE8m ti\xEAu \u0111\u1EC1",paste:"D\xE1n",pasteHint:"Kh\xF4ng truy c\u1EADp \u0111\u01B0\u1EE3c b\u1ED9 nh\u1EDB t\u1EA1m. Nh\u1EA5n Ctrl+V \u0111\u1EC3 d\xE1n.",required:"Tr\u01B0\u1EDDng n\xE0y l\xE0 b\u1EAFt bu\u1ED9c",invalidValue:"Gi\xE1 tr\u1ECB kh\xF4ng h\u1EE3p l\u1EC7",and:"V\xE0",or:"Ho\u1EB7c",advancedFilter:"L\u1ECDc n\xE2ng cao",addCondition:"Th\xEAm \u0111i\u1EC1u ki\u1EC7n",duplicate:"Gi\xE1 tr\u1ECB n\xE0y \u0111\xE3 \u0111\u01B0\u1EE3c d\xF9ng",undo:"Ho\xE0n t\xE1c",redo:"L\xE0m l\u1EA1i",deleteRows:"X\xF3a c\xE1c d\xF2ng \u0111\xE3 ch\u1ECDn",copyRows:"Sao ch\xE9p c\xE1c d\xF2ng \u0111\xE3 ch\u1ECDn",statusRows:"{n} d\xF2ng",statusFiltered:"{shown} / {total} d\xF2ng",statusSelected:"\u0110\xE3 ch\u1ECDn {n}",count:"S\u1ED1 l\u01B0\u1EE3ng",sum:"T\u1ED5ng",avg:"Trung b\xECnh",min:"Nh\u1ECF nh\u1EA5t",max:"L\u1EDBn nh\u1EA5t",findPlaceholder:"T\xECm trong b\u1EA3ng",noMatches:"Kh\xF4ng t\xECm th\u1EA5y",findNext:"K\u1EBFt qu\u1EA3 ti\u1EBFp",findPrevious:"K\u1EBFt qu\u1EA3 tr\u01B0\u1EDBc",groupPanelHint:"K\xE9o ti\xEAu \u0111\u1EC1 c\u1ED9t v\xE0o \u0111\xE2y \u0111\u1EC3 nh\xF3m d\xF2ng",groupByThis:"Nh\xF3m theo c\u1ED9t n\xE0y",ungroup:"B\u1ECF nh\xF3m",expandAll:"M\u1EDF r\u1ED9ng t\u1EA5t c\u1EA3",collapseAll:"Thu g\u1ECDn t\u1EA5t c\u1EA3",pagerRange:"{from}\u2013{to} / {total}",pageOf:"Trang {page} / {pages}",pageSize:"S\u1ED1 d\xF2ng m\u1ED7i trang",firstPage:"Trang \u0111\u1EA7u",previousPage:"Trang tr\u01B0\u1EDBc",nextPage:"Trang sau",lastPage:"Trang cu\u1ED1i",loading:"\u0110ang t\u1EA3i\u2026",loadFailed:"Kh\xF4ng t\u1EA3i \u0111\u01B0\u1EE3c d\u1EEF li\u1EC7u",filters:"B\u1ED9 l\u1ECDc",clearFilters:"X\xF3a t\u1EA5t c\u1EA3 b\u1ED9 l\u1ECDc",exportCsv:"Xu\u1EA5t CSV",exportExcel:"Xu\u1EA5t Excel",pivot:"Pivot",pivotMode:"Ch\u1EBF \u0111\u1ED9 pivot",pivotRows:"Nh\xF3m d\xF2ng",pivotColumns:"Nh\xE3n c\u1ED9t",pivotValues:"Gi\xE1 tr\u1ECB",total:"T\u1ED5ng c\u1ED9ng",addColumn:"Th\xEAm c\u1ED9t\u2026",chartBar:"Bi\u1EC3u \u0111\u1ED3 c\u1ED9t",chartStacked:"Bi\u1EC3u \u0111\u1ED3 c\u1ED9t ch\u1ED3ng",chartLine:"Bi\u1EC3u \u0111\u1ED3 \u0111\u01B0\u1EDDng",chartArea:"Bi\u1EC3u \u0111\u1ED3 v\xF9ng",chartPie:"Bi\u1EC3u \u0111\u1ED3 tr\xF2n",chartDonut:"Bi\u1EC3u \u0111\u1ED3 v\xE0nh khuy\xEAn",chartCombo:"Bi\u1EC3u \u0111\u1ED3 c\u1ED9t v\xE0 \u0111\u01B0\u1EDDng",chartScatter:"Bi\u1EC3u \u0111\u1ED3 ph\xE2n t\xE1n",freeBadge:"B\u1EA3n mi\u1EC5n ph\xED",ops:{contains:"Ch\u1EE9a",equals:"B\u1EB1ng",notEquals:"Kh\xE1c",startsWith:"B\u1EAFt \u0111\u1EA7u b\u1EB1ng",endsWith:"K\u1EBFt th\xFAc b\u1EB1ng",blank:"Tr\u1ED1ng",notBlank:"Kh\xF4ng tr\u1ED1ng",eq:"B\u1EB1ng",ne:"Kh\xE1c",lt:"Nh\u1ECF h\u01A1n",lte:"Nh\u1ECF h\u01A1n ho\u1EB7c b\u1EB1ng",gt:"L\u1EDBn h\u01A1n",gte:"L\u1EDBn h\u01A1n ho\u1EB7c b\u1EB1ng",between:"Trong kho\u1EA3ng",before:"Tr\u01B0\u1EDBc",after:"Sau"}},Ln=or;var rr={code:"th",noRows:"\u0E44\u0E21\u0E48\u0E21\u0E35\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25",filter:"\u0E15\u0E31\u0E27\u0E01\u0E23\u0E2D\u0E07",apply:"\u0E43\u0E0A\u0E49",reset:"\u0E23\u0E35\u0E40\u0E0B\u0E47\u0E15",selectAll:"(\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14)",search:"\u0E04\u0E49\u0E19\u0E2B\u0E32\u2026",blanks:"(\u0E27\u0E48\u0E32\u0E07)",value:"\u0E04\u0E48\u0E32",valueTo:"\u0E16\u0E36\u0E07",sortAsc:"\u0E40\u0E23\u0E35\u0E22\u0E07\u0E08\u0E32\u0E01\u0E19\u0E49\u0E2D\u0E22\u0E44\u0E1B\u0E21\u0E32\u0E01",sortDesc:"\u0E40\u0E23\u0E35\u0E22\u0E07\u0E08\u0E32\u0E01\u0E21\u0E32\u0E01\u0E44\u0E1B\u0E19\u0E49\u0E2D\u0E22",clearSort:"\u0E25\u0E49\u0E32\u0E07\u0E01\u0E32\u0E23\u0E40\u0E23\u0E35\u0E22\u0E07",pinLeft:"\u0E15\u0E23\u0E36\u0E07\u0E0B\u0E49\u0E32\u0E22",pinRight:"\u0E15\u0E23\u0E36\u0E07\u0E02\u0E27\u0E32",unpin:"\u0E40\u0E25\u0E34\u0E01\u0E15\u0E23\u0E36\u0E07",columnMenu:"\u0E40\u0E21\u0E19\u0E39\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C",selectRow:"\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E41\u0E16\u0E27",selectAllRows:"\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E17\u0E38\u0E01\u0E41\u0E16\u0E27",chooseColumns:"\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C",columns:"\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C",autosizeThis:"\u0E1B\u0E23\u0E31\u0E1A\u0E04\u0E27\u0E32\u0E21\u0E01\u0E27\u0E49\u0E32\u0E07\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C\u0E19\u0E35\u0E49\u0E2D\u0E31\u0E15\u0E42\u0E19\u0E21\u0E31\u0E15\u0E34",autosizeAll:"\u0E1B\u0E23\u0E31\u0E1A\u0E04\u0E27\u0E32\u0E21\u0E01\u0E27\u0E49\u0E32\u0E07\u0E17\u0E38\u0E01\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C\u0E2D\u0E31\u0E15\u0E42\u0E19\u0E21\u0E31\u0E15\u0E34",resetColumns:"\u0E23\u0E35\u0E40\u0E0B\u0E47\u0E15\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C",hideColumn:"\u0E0B\u0E48\u0E2D\u0E19\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C",close:"\u0E1B\u0E34\u0E14",copy:"\u0E04\u0E31\u0E14\u0E25\u0E2D\u0E01",cut:"\u0E15\u0E31\u0E14",copyWithHeaders:"\u0E04\u0E31\u0E14\u0E25\u0E2D\u0E01\u0E1E\u0E23\u0E49\u0E2D\u0E21\u0E2B\u0E31\u0E27\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C",paste:"\u0E27\u0E32\u0E07",pasteHint:"\u0E40\u0E02\u0E49\u0E32\u0E16\u0E36\u0E07\u0E04\u0E25\u0E34\u0E1B\u0E1A\u0E2D\u0E23\u0E4C\u0E14\u0E44\u0E21\u0E48\u0E44\u0E14\u0E49 \u0E01\u0E14 Ctrl+V \u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E27\u0E32\u0E07",required:"\u0E15\u0E49\u0E2D\u0E07\u0E01\u0E23\u0E2D\u0E01\u0E0A\u0E48\u0E2D\u0E07\u0E19\u0E35\u0E49",invalidValue:"\u0E04\u0E48\u0E32\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07",and:"\u0E41\u0E25\u0E30",or:"\u0E2B\u0E23\u0E37\u0E2D",advancedFilter:"\u0E15\u0E31\u0E27\u0E01\u0E23\u0E2D\u0E07\u0E02\u0E31\u0E49\u0E19\u0E2A\u0E39\u0E07",addCondition:"\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E40\u0E07\u0E37\u0E48\u0E2D\u0E19\u0E44\u0E02",duplicate:"\u0E04\u0E48\u0E32\u0E19\u0E35\u0E49\u0E16\u0E39\u0E01\u0E43\u0E0A\u0E49\u0E41\u0E25\u0E49\u0E27",undo:"\u0E40\u0E25\u0E34\u0E01\u0E17\u0E33",redo:"\u0E17\u0E33\u0E0B\u0E49\u0E33",deleteRows:"\u0E25\u0E1A\u0E41\u0E16\u0E27\u0E17\u0E35\u0E48\u0E40\u0E25\u0E37\u0E2D\u0E01",copyRows:"\u0E04\u0E31\u0E14\u0E25\u0E2D\u0E01\u0E41\u0E16\u0E27\u0E17\u0E35\u0E48\u0E40\u0E25\u0E37\u0E2D\u0E01",statusRows:"{n} \u0E41\u0E16\u0E27",statusFiltered:"{shown} \u0E08\u0E32\u0E01 {total} \u0E41\u0E16\u0E27",statusSelected:"\u0E40\u0E25\u0E37\u0E2D\u0E01 {n} \u0E41\u0E16\u0E27",count:"\u0E08\u0E33\u0E19\u0E27\u0E19",sum:"\u0E1C\u0E25\u0E23\u0E27\u0E21",avg:"\u0E04\u0E48\u0E32\u0E40\u0E09\u0E25\u0E35\u0E48\u0E22",min:"\u0E15\u0E48\u0E33\u0E2A\u0E38\u0E14",max:"\u0E2A\u0E39\u0E07\u0E2A\u0E38\u0E14",findPlaceholder:"\u0E04\u0E49\u0E19\u0E2B\u0E32\u0E43\u0E19\u0E15\u0E32\u0E23\u0E32\u0E07",noMatches:"\u0E44\u0E21\u0E48\u0E1E\u0E1A",findNext:"\u0E16\u0E31\u0E14\u0E44\u0E1B",findPrevious:"\u0E01\u0E48\u0E2D\u0E19\u0E2B\u0E19\u0E49\u0E32",groupPanelHint:"\u0E25\u0E32\u0E01\u0E2B\u0E31\u0E27\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C\u0E21\u0E32\u0E17\u0E35\u0E48\u0E19\u0E35\u0E48\u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E08\u0E31\u0E14\u0E01\u0E25\u0E38\u0E48\u0E21",groupByThis:"\u0E08\u0E31\u0E14\u0E01\u0E25\u0E38\u0E48\u0E21\u0E15\u0E32\u0E21\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C\u0E19\u0E35\u0E49",ungroup:"\u0E40\u0E25\u0E34\u0E01\u0E08\u0E31\u0E14\u0E01\u0E25\u0E38\u0E48\u0E21",expandAll:"\u0E02\u0E22\u0E32\u0E22\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14",collapseAll:"\u0E22\u0E38\u0E1A\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14",pagerRange:"{from}\u2013{to} \u0E08\u0E32\u0E01 {total}",pageOf:"\u0E2B\u0E19\u0E49\u0E32 {page} \u0E08\u0E32\u0E01 {pages}",pageSize:"\u0E41\u0E16\u0E27\u0E15\u0E48\u0E2D\u0E2B\u0E19\u0E49\u0E32",firstPage:"\u0E2B\u0E19\u0E49\u0E32\u0E41\u0E23\u0E01",previousPage:"\u0E2B\u0E19\u0E49\u0E32\u0E01\u0E48\u0E2D\u0E19",nextPage:"\u0E2B\u0E19\u0E49\u0E32\u0E16\u0E31\u0E14\u0E44\u0E1B",lastPage:"\u0E2B\u0E19\u0E49\u0E32\u0E2A\u0E38\u0E14\u0E17\u0E49\u0E32\u0E22",loading:"\u0E01\u0E33\u0E25\u0E31\u0E07\u0E42\u0E2B\u0E25\u0E14\u2026",loadFailed:"\u0E42\u0E2B\u0E25\u0E14\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E2A\u0E33\u0E40\u0E23\u0E47\u0E08",filters:"\u0E15\u0E31\u0E27\u0E01\u0E23\u0E2D\u0E07",clearFilters:"\u0E25\u0E49\u0E32\u0E07\u0E15\u0E31\u0E27\u0E01\u0E23\u0E2D\u0E07\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14",exportCsv:"\u0E2A\u0E48\u0E07\u0E2D\u0E2D\u0E01 CSV",exportExcel:"\u0E2A\u0E48\u0E07\u0E2D\u0E2D\u0E01 Excel",pivot:"Pivot",pivotMode:"\u0E42\u0E2B\u0E21\u0E14 Pivot",pivotRows:"\u0E01\u0E25\u0E38\u0E48\u0E21\u0E41\u0E16\u0E27",pivotColumns:"\u0E1B\u0E49\u0E32\u0E22\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C",pivotValues:"\u0E04\u0E48\u0E32",total:"\u0E23\u0E27\u0E21",addColumn:"\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C\u2026",chartBar:"\u0E41\u0E1C\u0E19\u0E20\u0E39\u0E21\u0E34\u0E41\u0E17\u0E48\u0E07",chartStacked:"\u0E41\u0E1C\u0E19\u0E20\u0E39\u0E21\u0E34\u0E41\u0E17\u0E48\u0E07\u0E0B\u0E49\u0E2D\u0E19",chartLine:"\u0E41\u0E1C\u0E19\u0E20\u0E39\u0E21\u0E34\u0E40\u0E2A\u0E49\u0E19",chartArea:"\u0E41\u0E1C\u0E19\u0E20\u0E39\u0E21\u0E34\u0E1E\u0E37\u0E49\u0E19\u0E17\u0E35\u0E48",chartPie:"\u0E41\u0E1C\u0E19\u0E20\u0E39\u0E21\u0E34\u0E27\u0E07\u0E01\u0E25\u0E21",chartDonut:"\u0E41\u0E1C\u0E19\u0E20\u0E39\u0E21\u0E34\u0E42\u0E14\u0E19\u0E31\u0E17",chartCombo:"\u0E41\u0E1C\u0E19\u0E20\u0E39\u0E21\u0E34\u0E41\u0E17\u0E48\u0E07\u0E41\u0E25\u0E30\u0E40\u0E2A\u0E49\u0E19",chartScatter:"\u0E41\u0E1C\u0E19\u0E20\u0E39\u0E21\u0E34\u0E01\u0E23\u0E30\u0E08\u0E32\u0E22",freeBadge:"\u0E23\u0E38\u0E48\u0E19\u0E1F\u0E23\u0E35",ops:{contains:"\u0E21\u0E35\u0E04\u0E33\u0E27\u0E48\u0E32",equals:"\u0E40\u0E17\u0E48\u0E32\u0E01\u0E31\u0E1A",notEquals:"\u0E44\u0E21\u0E48\u0E40\u0E17\u0E48\u0E32\u0E01\u0E31\u0E1A",startsWith:"\u0E02\u0E36\u0E49\u0E19\u0E15\u0E49\u0E19\u0E14\u0E49\u0E27\u0E22",endsWith:"\u0E25\u0E07\u0E17\u0E49\u0E32\u0E22\u0E14\u0E49\u0E27\u0E22",blank:"\u0E27\u0E48\u0E32\u0E07",notBlank:"\u0E44\u0E21\u0E48\u0E27\u0E48\u0E32\u0E07",eq:"\u0E40\u0E17\u0E48\u0E32\u0E01\u0E31\u0E1A",ne:"\u0E44\u0E21\u0E48\u0E40\u0E17\u0E48\u0E32\u0E01\u0E31\u0E1A",lt:"\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32",lte:"\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\u0E2B\u0E23\u0E37\u0E2D\u0E40\u0E17\u0E48\u0E32\u0E01\u0E31\u0E1A",gt:"\u0E21\u0E32\u0E01\u0E01\u0E27\u0E48\u0E32",gte:"\u0E21\u0E32\u0E01\u0E01\u0E27\u0E48\u0E32\u0E2B\u0E23\u0E37\u0E2D\u0E40\u0E17\u0E48\u0E32\u0E01\u0E31\u0E1A",between:"\u0E23\u0E30\u0E2B\u0E27\u0E48\u0E32\u0E07",before:"\u0E01\u0E48\u0E2D\u0E19",after:"\u0E2B\u0E25\u0E31\u0E07"}},Tn=rr;var ir={code:"id",noRows:"Tidak ada data",filter:"Filter",apply:"Terapkan",reset:"Atur ulang",selectAll:"(Pilih semua)",search:"Cari\u2026",blanks:"(Kosong)",value:"Nilai",valueTo:"Sampai",sortAsc:"Urutkan naik",sortDesc:"Urutkan turun",clearSort:"Hapus urutan",pinLeft:"Sematkan kiri",pinRight:"Sematkan kanan",unpin:"Lepas sematan",columnMenu:"Menu kolom",selectRow:"Pilih baris",selectAllRows:"Pilih semua baris",chooseColumns:"Pilih kolom",columns:"Kolom",autosizeThis:"Sesuaikan lebar kolom ini",autosizeAll:"Sesuaikan lebar semua kolom",resetColumns:"Atur ulang kolom",hideColumn:"Sembunyikan kolom",close:"Tutup",copy:"Salin",cut:"Potong",copyWithHeaders:"Salin dengan judul",paste:"Tempel",pasteHint:"Akses papan klip diblokir. Tekan Ctrl+V untuk menempel.",required:"Kolom ini wajib diisi",invalidValue:"Nilai tidak valid",and:"Dan",or:"Atau",advancedFilter:"Filter lanjutan",addCondition:"Tambah kondisi",duplicate:"Nilai ini sudah dipakai",undo:"Urungkan",redo:"Ulangi",deleteRows:"Hapus baris terpilih",copyRows:"Salin baris terpilih",statusRows:"{n} baris",statusFiltered:"{shown} dari {total} baris",statusSelected:"{n} dipilih",count:"Jumlah data",sum:"Total",avg:"Rata-rata",min:"Min",max:"Maks",findPlaceholder:"Cari di tabel",noMatches:"Tidak ditemukan",findNext:"Berikutnya",findPrevious:"Sebelumnya",groupPanelHint:"Seret judul kolom ke sini untuk mengelompokkan",groupByThis:"Kelompokkan menurut kolom ini",ungroup:"Hapus pengelompokan",expandAll:"Buka semua",collapseAll:"Tutup semua",pagerRange:"{from}\u2013{to} dari {total}",pageOf:"Halaman {page} dari {pages}",pageSize:"Baris per halaman",firstPage:"Halaman pertama",previousPage:"Halaman sebelumnya",nextPage:"Halaman berikutnya",lastPage:"Halaman terakhir",loading:"Memuat\u2026",loadFailed:"Gagal memuat data",filters:"Filter",clearFilters:"Hapus semua filter",exportCsv:"Ekspor CSV",exportExcel:"Ekspor Excel",pivot:"Pivot",pivotMode:"Mode pivot",pivotRows:"Grup baris",pivotColumns:"Label kolom",pivotValues:"Nilai",total:"Total",addColumn:"Tambah kolom\u2026",chartBar:"Diagram batang",chartStacked:"Diagram batang bertumpuk",chartLine:"Diagram garis",chartArea:"Diagram area",chartPie:"Diagram lingkaran",chartDonut:"Diagram donat",chartCombo:"Diagram batang dan garis",chartScatter:"Diagram sebar",freeBadge:"Versi gratis",ops:{contains:"Berisi",equals:"Sama dengan",notEquals:"Tidak sama dengan",startsWith:"Diawali",endsWith:"Diakhiri",blank:"Kosong",notBlank:"Tidak kosong",eq:"Sama dengan",ne:"Tidak sama dengan",lt:"Kurang dari",lte:"Kurang dari atau sama dengan",gt:"Lebih dari",gte:"Lebih dari atau sama dengan",between:"Di antara",before:"Sebelum",after:"Sesudah"}},In=ir;var sr={code:"ru",noRows:"\u041D\u0435\u0442 \u0434\u0430\u043D\u043D\u044B\u0445",filter:"\u0424\u0438\u043B\u044C\u0442\u0440",apply:"\u041F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C",reset:"\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C",selectAll:"(\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0432\u0441\u0435)",search:"\u041F\u043E\u0438\u0441\u043A\u2026",blanks:"(\u041F\u0443\u0441\u0442\u044B\u0435)",value:"\u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435",valueTo:"\u041F\u043E",sortAsc:"\u041F\u043E \u0432\u043E\u0437\u0440\u0430\u0441\u0442\u0430\u043D\u0438\u044E",sortDesc:"\u041F\u043E \u0443\u0431\u044B\u0432\u0430\u043D\u0438\u044E",clearSort:"\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0441\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0443",pinLeft:"\u0417\u0430\u043A\u0440\u0435\u043F\u0438\u0442\u044C \u0441\u043B\u0435\u0432\u0430",pinRight:"\u0417\u0430\u043A\u0440\u0435\u043F\u0438\u0442\u044C \u0441\u043F\u0440\u0430\u0432\u0430",unpin:"\u041E\u0442\u043A\u0440\u0435\u043F\u0438\u0442\u044C",columnMenu:"\u041C\u0435\u043D\u044E \u0441\u0442\u043E\u043B\u0431\u0446\u0430",selectRow:"\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443",selectAllRows:"\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0432\u0441\u0435 \u0441\u0442\u0440\u043E\u043A\u0438",chooseColumns:"\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0441\u0442\u043E\u043B\u0431\u0446\u044B",columns:"\u0421\u0442\u043E\u043B\u0431\u0446\u044B",autosizeThis:"\u041F\u043E\u0434\u043E\u0431\u0440\u0430\u0442\u044C \u0448\u0438\u0440\u0438\u043D\u0443 \u0441\u0442\u043E\u043B\u0431\u0446\u0430",autosizeAll:"\u041F\u043E\u0434\u043E\u0431\u0440\u0430\u0442\u044C \u0448\u0438\u0440\u0438\u043D\u0443 \u0432\u0441\u0435\u0445 \u0441\u0442\u043E\u043B\u0431\u0446\u043E\u0432",resetColumns:"\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0441\u0442\u043E\u043B\u0431\u0446\u044B",hideColumn:"\u0421\u043A\u0440\u044B\u0442\u044C \u0441\u0442\u043E\u043B\u0431\u0435\u0446",close:"\u0417\u0430\u043A\u0440\u044B\u0442\u044C",copy:"\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C",cut:"\u0412\u044B\u0440\u0435\u0437\u0430\u0442\u044C",copyWithHeaders:"\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0441 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430\u043C\u0438",paste:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044C",pasteHint:"\u0414\u043E\u0441\u0442\u0443\u043F \u043A \u0431\u0443\u0444\u0435\u0440\u0443 \u043E\u0431\u043C\u0435\u043D\u0430 \u0437\u0430\u043F\u0440\u0435\u0449\u0451\u043D. \u041D\u0430\u0436\u043C\u0438\u0442\u0435 Ctrl+V, \u0447\u0442\u043E\u0431\u044B \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044C.",required:"\u041E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E\u0435 \u043F\u043E\u043B\u0435",invalidValue:"\u041D\u0435\u0434\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435",and:"\u0418",or:"\u0418\u043B\u0438",advancedFilter:"\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u043D\u044B\u0439 \u0444\u0438\u043B\u044C\u0442\u0440",addCondition:"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0443\u0441\u043B\u043E\u0432\u0438\u0435",duplicate:"\u042D\u0442\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0443\u0436\u0435 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F",undo:"\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C",redo:"\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u044C",deleteRows:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0435 \u0441\u0442\u0440\u043E\u043A\u0438",copyRows:"\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0435 \u0441\u0442\u0440\u043E\u043A\u0438",statusRows:"\u0421\u0442\u0440\u043E\u043A: {n}",statusFiltered:"{shown} \u0438\u0437 {total} \u0441\u0442\u0440\u043E\u043A",statusSelected:"\u0412\u044B\u0431\u0440\u0430\u043D\u043E: {n}",count:"\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E",sum:"\u0421\u0443\u043C\u043C\u0430",avg:"\u0421\u0440\u0435\u0434\u043D\u0435\u0435",min:"\u041C\u0438\u043D.",max:"\u041C\u0430\u043A\u0441.",findPlaceholder:"\u041D\u0430\u0439\u0442\u0438 \u0432 \u0442\u0430\u0431\u043B\u0438\u0446\u0435",noMatches:"\u041D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E",findNext:"\u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0435",findPrevious:"\u041F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0435\u0435",groupPanelHint:"\u041F\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u0435 \u0441\u044E\u0434\u0430 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A \u0441\u0442\u043E\u043B\u0431\u0446\u0430 \u0434\u043B\u044F \u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0438",groupByThis:"\u0413\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u043E \u044D\u0442\u043E\u043C\u0443 \u0441\u0442\u043E\u043B\u0431\u0446\u0443",ungroup:"\u0423\u0431\u0440\u0430\u0442\u044C \u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0443",expandAll:"\u0420\u0430\u0437\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u0432\u0441\u0435",collapseAll:"\u0421\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u0432\u0441\u0435",pagerRange:"{from}\u2013{to} \u0438\u0437 {total}",pageOf:"\u0421\u0442\u0440\u0430\u043D\u0438\u0446\u0430 {page} \u0438\u0437 {pages}",pageSize:"\u0421\u0442\u0440\u043E\u043A \u043D\u0430 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0435",firstPage:"\u041F\u0435\u0440\u0432\u0430\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430",previousPage:"\u041F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0430\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430",nextPage:"\u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0430\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430",lastPage:"\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u044F\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430",loading:"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430\u2026",loadFailed:"\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u0434\u0430\u043D\u043D\u044B\u0435",filters:"\u0424\u0438\u043B\u044C\u0442\u0440\u044B",clearFilters:"\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0432\u0441\u0435 \u0444\u0438\u043B\u044C\u0442\u0440\u044B",exportCsv:"\u042D\u043A\u0441\u043F\u043E\u0440\u0442 \u0432 CSV",exportExcel:"\u042D\u043A\u0441\u043F\u043E\u0440\u0442 \u0432 Excel",pivot:"\u0421\u0432\u043E\u0434\u043D\u0430\u044F",pivotMode:"\u0420\u0435\u0436\u0438\u043C \u0441\u0432\u043E\u0434\u043D\u043E\u0439 \u0442\u0430\u0431\u043B\u0438\u0446\u044B",pivotRows:"\u0413\u0440\u0443\u043F\u043F\u044B \u0441\u0442\u0440\u043E\u043A",pivotColumns:"\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0438 \u0441\u0442\u043E\u043B\u0431\u0446\u043E\u0432",pivotValues:"\u0417\u043D\u0430\u0447\u0435\u043D\u0438\u044F",total:"\u0418\u0442\u043E\u0433\u043E",addColumn:"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0441\u0442\u043E\u043B\u0431\u0435\u0446\u2026",chartBar:"\u0413\u0438\u0441\u0442\u043E\u0433\u0440\u0430\u043C\u043C\u0430",chartStacked:"\u0413\u0438\u0441\u0442\u043E\u0433\u0440\u0430\u043C\u043C\u0430 \u0441 \u043D\u0430\u043A\u043E\u043F\u043B\u0435\u043D\u0438\u0435\u043C",chartLine:"\u0413\u0440\u0430\u0444\u0438\u043A",chartArea:"\u0414\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u0430 \u0441 \u043E\u0431\u043B\u0430\u0441\u0442\u044F\u043C\u0438",chartPie:"\u041A\u0440\u0443\u0433\u043E\u0432\u0430\u044F \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u0430",chartDonut:"\u041A\u043E\u043B\u044C\u0446\u0435\u0432\u0430\u044F \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u0430",chartCombo:"\u0413\u0438\u0441\u0442\u043E\u0433\u0440\u0430\u043C\u043C\u0430 \u0438 \u0433\u0440\u0430\u0444\u0438\u043A",chartScatter:"\u0422\u043E\u0447\u0435\u0447\u043D\u0430\u044F \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u0430",freeBadge:"\u0411\u0435\u0441\u043F\u043B\u0430\u0442\u043D\u0430\u044F \u0432\u0435\u0440\u0441\u0438\u044F",ops:{contains:"\u0421\u043E\u0434\u0435\u0440\u0436\u0438\u0442",equals:"\u0420\u0430\u0432\u043D\u043E",notEquals:"\u041D\u0435 \u0440\u0430\u0432\u043D\u043E",startsWith:"\u041D\u0430\u0447\u0438\u043D\u0430\u0435\u0442\u0441\u044F \u0441",endsWith:"\u0417\u0430\u043A\u0430\u043D\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u043D\u0430",blank:"\u041F\u0443\u0441\u0442\u043E",notBlank:"\u041D\u0435 \u043F\u0443\u0441\u0442\u043E",eq:"\u0420\u0430\u0432\u043D\u043E",ne:"\u041D\u0435 \u0440\u0430\u0432\u043D\u043E",lt:"\u041C\u0435\u043D\u044C\u0448\u0435",lte:"\u041C\u0435\u043D\u044C\u0448\u0435 \u0438\u043B\u0438 \u0440\u0430\u0432\u043D\u043E",gt:"\u0411\u043E\u043B\u044C\u0448\u0435",gte:"\u0411\u043E\u043B\u044C\u0448\u0435 \u0438\u043B\u0438 \u0440\u0430\u0432\u043D\u043E",between:"\u041C\u0435\u0436\u0434\u0443",before:"\u0414\u043E",after:"\u041F\u043E\u0441\u043B\u0435"}},Dn=sr;var ar={code:"pt-BR",noRows:"Nenhuma linha para mostrar",filter:"Filtro",apply:"Aplicar",reset:"Limpar",selectAll:"(Selecionar tudo)",search:"Pesquisar\u2026",blanks:"(Vazios)",value:"Valor",valueTo:"At\xE9",sortAsc:"Ordenar crescente",sortDesc:"Ordenar decrescente",clearSort:"Remover ordena\xE7\xE3o",pinLeft:"Fixar \xE0 esquerda",pinRight:"Fixar \xE0 direita",unpin:"Desafixar",columnMenu:"Menu da coluna",selectRow:"Selecionar linha",selectAllRows:"Selecionar todas as linhas",chooseColumns:"Escolher colunas",columns:"Colunas",autosizeThis:"Ajustar largura desta coluna",autosizeAll:"Ajustar largura de todas as colunas",resetColumns:"Redefinir colunas",hideColumn:"Ocultar coluna",close:"Fechar",copy:"Copiar",cut:"Recortar",copyWithHeaders:"Copiar com cabe\xE7alhos",paste:"Colar",pasteHint:"O acesso \xE0 \xE1rea de transfer\xEAncia foi bloqueado. Pressione Ctrl+V para colar.",required:"Campo obrigat\xF3rio",invalidValue:"Valor inv\xE1lido",and:"E",or:"Ou",advancedFilter:"Filtro avan\xE7ado",addCondition:"Adicionar condi\xE7\xE3o",duplicate:"Este valor j\xE1 est\xE1 em uso",undo:"Desfazer",redo:"Refazer",deleteRows:"Excluir linhas selecionadas",copyRows:"Copiar linhas selecionadas",statusRows:"{n} linhas",statusFiltered:"{shown} de {total} linhas",statusSelected:"{n} selecionadas",count:"Contagem",sum:"Soma",avg:"M\xE9dia",min:"M\xEDn.",max:"M\xE1x.",findPlaceholder:"Localizar na tabela",noMatches:"Nenhum resultado",findNext:"Pr\xF3ximo",findPrevious:"Anterior",groupPanelHint:"Arraste um cabe\xE7alho de coluna aqui para agrupar",groupByThis:"Agrupar por esta coluna",ungroup:"Remover agrupamento",expandAll:"Expandir tudo",collapseAll:"Recolher tudo",pagerRange:"{from}\u2013{to} de {total}",pageOf:"P\xE1gina {page} de {pages}",pageSize:"Linhas por p\xE1gina",firstPage:"Primeira p\xE1gina",previousPage:"P\xE1gina anterior",nextPage:"Pr\xF3xima p\xE1gina",lastPage:"\xDAltima p\xE1gina",loading:"Carregando\u2026",loadFailed:"N\xE3o foi poss\xEDvel carregar as linhas",filters:"Filtros",clearFilters:"Limpar todos os filtros",exportCsv:"Exportar CSV",exportExcel:"Exportar Excel",pivot:"Piv\xF4",pivotMode:"Modo piv\xF4",pivotRows:"Grupos de linhas",pivotColumns:"R\xF3tulos de coluna",pivotValues:"Valores",total:"Total",addColumn:"Adicionar coluna\u2026",chartBar:"Gr\xE1fico de barras",chartStacked:"Gr\xE1fico de barras empilhadas",chartLine:"Gr\xE1fico de linhas",chartArea:"Gr\xE1fico de \xE1rea",chartPie:"Gr\xE1fico de pizza",chartDonut:"Gr\xE1fico de rosca",chartCombo:"Gr\xE1fico de barras e linhas",chartScatter:"Gr\xE1fico de dispers\xE3o",freeBadge:"Vers\xE3o gratuita",ops:{contains:"Cont\xE9m",equals:"Igual a",notEquals:"Diferente de",startsWith:"Come\xE7a com",endsWith:"Termina com",blank:"Vazio",notBlank:"N\xE3o vazio",eq:"Igual a",ne:"Diferente de",lt:"Menor que",lte:"Menor ou igual a",gt:"Maior que",gte:"Maior ou igual a",between:"Entre",before:"Antes de",after:"Depois de"}},Pn=ar;var lr={code:"it",noRows:"Nessuna riga da mostrare",filter:"Filtro",apply:"Applica",reset:"Reimposta",selectAll:"(Seleziona tutto)",search:"Cerca\u2026",blanks:"(Vuoti)",value:"Valore",valueTo:"A",sortAsc:"Ordine crescente",sortDesc:"Ordine decrescente",clearSort:"Rimuovi ordinamento",pinLeft:"Blocca a sinistra",pinRight:"Blocca a destra",unpin:"Sblocca",columnMenu:"Menu colonna",selectRow:"Seleziona riga",selectAllRows:"Seleziona tutte le righe",chooseColumns:"Scegli colonne",columns:"Colonne",autosizeThis:"Adatta larghezza di questa colonna",autosizeAll:"Adatta larghezza di tutte le colonne",resetColumns:"Ripristina colonne",hideColumn:"Nascondi colonna",close:"Chiudi",copy:"Copia",cut:"Taglia",copyWithHeaders:"Copia con intestazioni",paste:"Incolla",pasteHint:"Accesso agli appunti bloccato. Premi Ctrl+V per incollare.",required:"Campo obbligatorio",invalidValue:"Valore non valido",and:"E",or:"O",advancedFilter:"Filtro avanzato",addCondition:"Aggiungi condizione",duplicate:"Questo valore \xE8 gi\xE0 in uso",undo:"Annulla",redo:"Ripeti",deleteRows:"Elimina righe selezionate",copyRows:"Copia righe selezionate",statusRows:"{n} righe",statusFiltered:"{shown} di {total} righe",statusSelected:"{n} selezionate",count:"Conteggio",sum:"Somma",avg:"Media",min:"Min",max:"Max",findPlaceholder:"Trova nella tabella",noMatches:"Nessun risultato",findNext:"Successivo",findPrevious:"Precedente",groupPanelHint:"Trascina qui un'intestazione di colonna per raggruppare",groupByThis:"Raggruppa per questa colonna",ungroup:"Rimuovi raggruppamento",expandAll:"Espandi tutto",collapseAll:"Comprimi tutto",pagerRange:"{from}\u2013{to} di {total}",pageOf:"Pagina {page} di {pages}",pageSize:"Righe per pagina",firstPage:"Prima pagina",previousPage:"Pagina precedente",nextPage:"Pagina successiva",lastPage:"Ultima pagina",loading:"Caricamento\u2026",loadFailed:"Impossibile caricare le righe",filters:"Filtri",clearFilters:"Rimuovi tutti i filtri",exportCsv:"Esporta CSV",exportExcel:"Esporta Excel",pivot:"Pivot",pivotMode:"Modalit\xE0 pivot",pivotRows:"Gruppi di righe",pivotColumns:"Etichette di colonna",pivotValues:"Valori",total:"Totale",addColumn:"Aggiungi colonna\u2026",chartBar:"Grafico a barre",chartStacked:"Grafico a barre in pila",chartLine:"Grafico a linee",chartArea:"Grafico ad area",chartPie:"Grafico a torta",chartDonut:"Grafico ad anello",chartCombo:"Grafico a barre e linee",chartScatter:"Grafico a dispersione",freeBadge:"Versione gratuita",ops:{contains:"Contiene",equals:"Uguale a",notEquals:"Diverso da",startsWith:"Inizia con",endsWith:"Finisce con",blank:"Vuoto",notBlank:"Non vuoto",eq:"Uguale a",ne:"Diverso da",lt:"Minore di",lte:"Minore o uguale a",gt:"Maggiore di",gte:"Maggiore o uguale a",between:"Tra",before:"Prima di",after:"Dopo"}},An=lr;var ne="__fg_select__",$n={id:ne,header:"",width:44,minWidth:44,maxWidth:44,pinned:"left",sortable:!1,resizable:!1,filter:!1},me="__fg_drag__",Fn={id:me,header:"",width:28,minWidth:28,maxWidth:28,pinned:"left",sortable:!1,resizable:!1,filter:!1,chooser:!1},he="__fg_rownum__",Nn=(i=52,e="#")=>({id:he,header:e,width:i,minWidth:i,maxWidth:i,pinned:"left",sortable:!1,resizable:!1,filter:!1,chooser:!1}),A=i=>i===ne||i===me||i===he,dr=120,cr=40,ur=["left","center","right"];function re(i){if(A(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"}}function ae(i,e,t){let n=i.editable;if(typeof n!="function")return!!n;try{return!!n({value:i.valueGetter?i.valueGetter(e):i.field?e[i.field]:void 0,row:e,rowIndex:t,column:i})}catch{return!1}}var ve=i=>i.id!==ne&&i.sortable!==!1,je=i=>i.id!==ne&&i.resizable!==!1;function Ke(i,e){var o,r;let t=(o=i.minWidth)!=null?o:cr,n=(r=i.maxWidth)!=null?r:1/0;return Math.round(Math.min(n,Math.max(t,e)))}function On(i){return i.children?1+Math.max(0,...i.children.map(On)):1}var Ue=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,f,g,x,y;let l=Array.isArray(r.children)&&r.children.length>0,d=t++,c=(h=r.id)!=null?h:l?`g${d}`:r.field;if(c||(c=`c${d}`,H(`column #${d} has neither "field" nor "id"; using "${c}"`)),this.byId.has(c)){let p=1;for(;this.byId.has(`${c}_${p}`);)p++;H(`duplicate column id "${c}"; renamed to "${c}_${p}"`),c=`${c}_${p}`}let u={id:c,def:r,parent:s,children:null,depth:a,width:Ke(r,(f=r.width)!=null?f:dr),flex:r.flex&&r.flex>0?r.flex:null,hide:(g=r.hide)!=null?g:!1,pinned:(y=(x=r.pinned)!=null?x:s==null?void 0:s.pinned)!=null?y:null,open:!!r.openByDefault};return this.byId.set(c,u),l&&(u.children=o(r.children).map(p=>n(p,u,a+1))),u},o=r=>{let s=r.filter(a=>a!==null&&typeof a=="object");return s.length!==r.length&&H("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(On)),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=Ke(n.def,t),this.relayout(),n.width)}setPinned(e,t){let n=this.byId.get(e);!n||n.children||A(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 l=[];for(let d=a.node.parent;d;d=d.parent)l.unshift(d);for(let d of l){let c=n.get(d.id);if(c){c.width+=a.width;continue}let u={id:d.id,label:(o=d.def.header)!=null?o:"",isGroup:!0,column:null,node:d,row:d.depth,rowSpan:1,left:a.left,width:a.width};n.set(d.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=>!A(e.id)).map(e=>{var t,n,o;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:(o=e.pinned)!=null?o:null}})}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||A(r.colId)||(typeof r.width=="number"&&Number.isFinite(r.width)&&(a.flex=null,a.width=Ke(a.def,r.width)),typeof r.hide=="boolean"&&(a.hide=r.hide),"pinned"in r&&(a.pinned=r.pinned==="left"||r.pinned==="right"?r.pinned:null))}),t.set(he,-3),t.set(me,-2),t.set(ne,-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,l)=>({n:a,i:l,r:n(a)}));s.sort((a,l)=>a.r===l.r?a.i-l.i:a.r-l.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}isCollapsible(e){var t;return!!((t=e.children)!=null&&t.some(n=>n.def.columnGroupShow==="open"||n.def.columnGroupShow==="closed"))}setGroupOpen(e,t){let n=this.byId.get(e);return!(n!=null&&n.children)||n.open===t?!1:(n.open=t,this.relayout(),!0)}groupOpenState(){let e={};for(let t of this.byId.values())this.isCollapsible(t)&&(e[t.id]=t.open);return e}shownByGroups(e){for(let t=e;t!=null&&t.parent;t=t.parent){let n=t.def.columnGroupShow;if(n==="open"&&!t.parent.open||n==="closed"&&t.parent.open)return!1}return!0}relayout(){var l;let e=this.leafNodes().filter(d=>!d.hide&&this.shownByGroups(d)),t=e.reduce((d,c)=>d+(c.flex?0:c.width),0),n=e.reduce((d,c)=>{var u;return d+((u=c.flex)!=null?u:0)},0),o=Math.max(0,this.containerWidth-t),r=d=>d.flex?Ke(d.def,Math.floor(o*d.flex/n)):d.width,s={left:[],center:[],right:[]};this.leafById=new Map;let a=0;for(let d of ur){let c=0;for(let u of e){if(((l=u.pinned)!=null?l:"center")!==d)continue;let h={id:u.id,def:u.def,node:u,width:r(u),region:d,left:c,index:a++};c+=h.width,s[d].push(h),this.leafById.set(u.id,h)}}this.layout=s}};var Y=class extends Error{constructor(t){super(t);this.code=t}};function hr(i){let e=[],t=0;for(;t<i.length;){let n=i[t];if(/\s/.test(n))t++;else if(/[0-9.]/.test(n)){let o=/^(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?/i.exec(i.slice(t));if(!o)throw new Y("#ERROR!");e.push({t:"num",v:Number(o[0])}),t+=o[0].length}else if(n==='"'){let o="";for(t++;;){if(t>=i.length)throw new Y("#ERROR!");if(i[t]==='"'){if(i[t+1]==='"'){o+='"',t+=2;continue}t++;break}o+=i[t++]}e.push({t:"str",v:o})}else if(n==="["){let o=i.indexOf("]",t);if(o<0)throw new Y("#ERROR!");e.push({t:"id",v:i.slice(t+1,o)}),t=o+1}else if(/[A-Za-z_À-￿]/.test(n)){let o=/^[A-Za-z_À-￿][\wÀ-￿]*/.exec(i.slice(t));e.push({t:"id",v:o[0]}),t+=o[0].length}else{let o=i.slice(t,t+2);if(o==="<>"||o==="<="||o===">=")e.push({t:"op",v:o}),t+=2;else if("+-*/%^&=<>(),".includes(n))e.push({t:"op",v:n}),t++;else throw new Y("#ERROR!")}}return e}var _e=i=>i==null||i==="";function X(i){if(typeof i=="number")return i;if(typeof i=="boolean")return i?1:0;if(_e(i))return 0;if(typeof i=="string"&&i.trim()!==""&&Number.isFinite(Number(i)))return Number(i);throw new Y("#VALUE!")}var Xe=i=>_e(i)?"":typeof i=="boolean"?i?"TRUE":"FALSE":String(i);function fr(i,e){let t=Math.trunc(e),n=+`${Math.round(+`${Math.abs(i)}e${t}`)}e${-t}`;return i<0?-n:n}var Hn={ROUND:i=>fr(X(i[0]),i.length>1?X(i[1]):0),ABS:i=>Math.abs(X(i[0])),MIN:i=>i.length?Math.min(...i.map(X)):0,MAX:i=>i.length?Math.max(...i.map(X)):0,SUM:i=>i.reduce((e,t)=>e+X(t),0),AVG:i=>{if(!i.length)throw new Y("#DIV/0!");return i.reduce((e,t)=>e+X(t),0)/i.length}};function pr(i,e){return(typeof i=="number"||_e(i))&&(typeof e=="number"||_e(e))?X(i)-X(e):Xe(i).localeCompare(Xe(e),void 0,{sensitivity:"accent"})}var At=class{constructor(e,t){this.tokens=e;this.resolve=t;this.i=0}parse(){let e=this.comparison();if(this.i<this.tokens.length)throw new Y("#ERROR!");return e}peek(e){let t=this.tokens[this.i];return!!t&&t.t==="op"&&(e===void 0||t.v===e)}take(e){return this.peek(e)?(this.i++,!0):!1}comparison(){let e=this.concat();for(let t of["=","<>","<=",">=","<",">"])if(this.take(t)){let n=pr(e,this.concat());return t==="="?n===0:t==="<>"?n!==0:t==="<"?n<0:t===">"?n>0:t==="<="?n<=0:n>=0}return e}concat(){let e=this.additive();for(;this.take("&");)e=Xe(e)+Xe(this.additive());return e}additive(){let e=this.multiplicative();for(;;)if(this.take("+"))e=X(e)+X(this.multiplicative());else if(this.take("-"))e=X(e)-X(this.multiplicative());else return e}multiplicative(){let e=this.unary();for(;;)if(this.take("*"))e=X(e)*X(this.unary());else if(this.take("/")||this.take("%")){let t=this.tokens[this.i-1].v,n=X(this.unary());if(n===0)throw new Y("#DIV/0!");e=t==="/"?X(e)/n:X(e)%n}else return e}unary(){return this.take("-")?-X(this.unary()):this.take("+")?X(this.unary()):this.power()}power(){let e=this.primary();return this.take("^")?X(e)**X(this.unary()):e}primary(){let e=this.tokens[this.i++];if(!e)throw new Y("#ERROR!");if(e.t==="num"||e.t==="str")return e.v;if(e.t==="op"){if(e.v!=="(")throw new Y("#ERROR!");let n=this.comparison();if(!this.take(")"))throw new Y("#ERROR!");return n}let t=e.v;if(this.peek("(")){this.i++;let n=[];if(!this.take(")")){do n.push(this.comparison());while(this.take(","));if(!this.take(")"))throw new Y("#ERROR!")}let o=t.toUpperCase();if(o==="IF"){if(n.length<2)throw new Y("#ERROR!");return(typeof n[0]=="boolean"?n[0]:X(n[0])!==0)?n[1]:n.length>2?n[2]:!1}let r=Object.hasOwn(Hn,o)?Hn[o]:void 0;if(!r)throw new Y("#NAME?");return r(n)}return/^(true|false)$/i.test(t)?t.toLowerCase()==="true":this.resolve(t)}},gr=32;function $t(i,e,t=new Set,n=0){try{let o=s=>{if(!e||!Object.hasOwn(e,s))throw new Y("#REF!");let a=e[s];if(typeof a=="string"&&a.startsWith("=")){if(t.has(s)||n>=gr)throw new Y("#CYCLE!");let l=$t(a,e,new Set([...t,s]),n+1);if(typeof l=="string"&&/^#[A-Z/0]+[!?]$/.test(l))throw new Y(l);return l}return a},r=new At(hr(i.slice(1)),o).parse();return typeof r=="number"&&!Number.isFinite(r)?"#NUM!":r}catch(o){return o instanceof Y?o.code:"#ERROR!"}}var Ce=i=>typeof i=="string"&&i.length>1&&i.startsWith("=");function B(i,e){var n;if(i.valueGetter)try{return i.valueGetter(e)}catch{H(`valueGetter of column "${(n=i.id)!=null?n:i.field}" threw; rendering an empty cell`);return}if(i.field==null)return;let t=e[i.field];return i.formulas&&Ce(t)?$t(t,e,new Set([i.field])):t}var Ye=["left","center","right"],Bn=[[">=","gte"],["<=","lte"],["<>","ne"],["!=","ne"],[">","gt"],["<","lt"],["=","eq"]],zn=[[">","after"],["<","before"],["=","equals"]],mr=/^(.+?)\s*(?:~|\.\.)\s*(.+)$/,Ft=i=>{let e=Number(i.replace(/[,\s₩$€¥]/g,""));return i.trim()!==""&&Number.isFinite(e)?e:null},Nt=i=>{let e=/^(\d{4})[-./]\s*(\d{1,2})[-./]\s*(\d{1,2})\.?$/.exec(i.trim());return e?`${e[1]}-${e[2].padStart(2,"0")}-${e[3].padStart(2,"0")}`:null};function vr(i,e){let t=e.trim();if(!t)return null;if(i==="text")return{type:"text",op:"contains",value:t};let n=mr.exec(t);if(i==="number"){if(n){let l=Ft(n[1]),d=Ft(n[2]);return l===null||d===null?void 0:{type:"number",op:"between",value:Math.min(l,d),valueTo:Math.max(l,d)}}let s=Bn.find(([l])=>t.startsWith(l)),a=Ft(s?t.slice(s[0].length):t);return a===null?void 0:{type:"number",op:s?s[1]:"eq",value:a}}if(n){let s=Nt(n[1]),a=Nt(n[2]);return!s||!a?void 0:{type:"date",op:"between",value:s<a?s:a,valueTo:s<a?a:s}}let o=zn.find(([s])=>t.startsWith(s)),r=Nt(o?t.slice(o[0].length):t);return r?{type:"date",op:o?o[1]:"equals",value:r}:void 0}function wr(i){var e,t,n;if(!i)return"";if(i.type==="text")return i.op==="contains"&&(e=i.value)!=null?e:"";if(i.type==="number"){if(i.op==="between")return`${i.value}~${i.valueTo}`;let o=(t=Bn.find(([,r])=>r===i.op))==null?void 0:t[0];return o&&i.value!==void 0?`${o==="="?"":o}${i.value}`:""}if(i.type==="date"){if(i.op==="between")return`${i.value}~${i.valueTo}`;let o=(n=zn.find(([,r])=>r===i.op))==null?void 0:n[0];return o&&i.value?`${o==="="?"":o}${i.value}`:""}return""}var Ze=class{constructor(e,t){this.grid=e;this.layout="";this.timers=new Map;this.data=null;this.synced=null;this.rebuilt=!1;this.inners={};for(let n of Ye)this.inners[n]=C("div","fg-filter-row",{role:"row"}),t[n].append(this.inners[n])}get height(){return Math.round(this.grid.renderer.opts.rowHeight*.95)}render(){let{columns:e,store:t}=this.grid,n=this.height,o=e.displayed();t.state.data!==this.data&&(this.data=t.state.data,this.layout="");let r=`${n}|${t.state.locale.code}|${o.map(s=>`${s.id}:${s.left}:${s.width}:${s.region}`).join(",")}`;if(r!==this.layout){this.layout=r;for(let s of Ye){let a=this.inners[s];a.style.width=`${e.regionWidth(s)}px`,a.style.height=`${n}px`,a.replaceChildren(...e.region(s).map(l=>this.cell(l,n)))}this.rebuilt=!0}this.sync()}sync(){let e=this.grid.store.state.filters;if(!(e===this.synced&&!this.rebuilt)){this.synced=e,this.rebuilt=!1;for(let t of Ye)for(let n of this.inners[t].querySelectorAll("[data-col]")){let o=n.dataset.col,r=e[o];if(n.closest(".fg-filter-cell").classList.toggle("fg-filter-active",!!r),!(n===n.ownerDocument.activeElement||n.getRootNode().activeElement===n)){if(n instanceof HTMLSelectElement){let s=(r==null?void 0:r.type)==="set"&&r.values.length===1?JSON.stringify(r.values[0]):"";[...n.options].some(a=>a.value===s)&&(n.value=s)}else n.value=wr(r);n.classList.remove("fg-filter-bad")}}}}cell(e,t){var d,c;let n=C("div","fg-filter-cell");n.style.left=`${e.left}px`,n.style.width=`${e.width}px`,n.style.height=`${t}px`;let o=A(e.id)?null:re(e.def);if(!o)return n;let r=this.grid.store.state.locale,s=`${r.filter}: ${(c=(d=e.def.header)!=null?d:e.def.field)!=null?c:e.id}`;if(o==="set"){let u=C("select","fg-filter-input",{"aria-label":s});u.dataset.col=e.id;let h=C("option","",{value:""});h.textContent=r.selectAll,u.append(h);for(let f of this.distinct(e.def)){let g=C("option","",{value:JSON.stringify(f)});g.textContent=f===!0?"\u2713":f===!1?"\u2717":String(f),u.append(g)}return u.addEventListener("change",()=>{this.grid.setFilter(e.id,u.value?{type:"set",values:[JSON.parse(u.value)]}:null)}),n.append(u),n}let a=C("input","fg-filter-input",{type:"text","aria-label":s,spellcheck:"false",autocomplete:"off"});a.dataset.col=e.id,o==="number"&&(a.placeholder=">0, 10~20"),o==="date"&&(a.placeholder=">2026-01-01");let l=()=>{let u=vr(o,a.value);a.classList.toggle("fg-filter-bad",u===void 0),u!==void 0&&this.grid.setFilter(e.id,u)};return a.addEventListener("input",()=>{clearTimeout(this.timers.get(e.id)),this.timers.set(e.id,window.setTimeout(l,200))}),a.addEventListener("keydown",u=>{u.stopPropagation(),u.key==="Enter"?(clearTimeout(this.timers.get(e.id)),l()):u.key==="Escape"&&(a.value="",clearTimeout(this.timers.get(e.id)),l())}),n.append(a),n}distinct(e){let t=new Map;for(let n of this.grid.store.state.data){let o=B(e,n);if(o==null||o==="")continue;let r=JSON.stringify(o);if(t.has(r)||t.set(r,o),t.size>=200)break}return[...t.values()].sort((n,o)=>String(n).localeCompare(String(o)))}setTransform(e){this.inners.center.style.transform=`translateX(${-e}px)`}destroy(){for(let e of this.timers.values())clearTimeout(e);for(let e of Ye)this.inners[e].remove()}};function G(i){return i==null||typeof i=="string"&&i.trim()===""||typeof i=="number"&&Number.isNaN(i)}var Gn=i=>String(i).padStart(2,"0");function ee(i){if(G(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()}-${Gn(e.getMonth()+1)}-${Gn(e.getDate())}`}function J(i){var e;return G(i)?"":i instanceof Date?(e=ee(i))!=null?e:"":String(i)}var le=()=>!0;function Je(i){var e;switch(i.type){case"combined":{let t=(Array.isArray(i.conditions)?i.conditions:[]).map(Je);return t.length?i.operator==="or"?n=>t.some(o=>o(n)):n=>t.every(o=>o(n)):le}case"text":{let t=((e=i.value)!=null?e:"").toLowerCase(),n=o=>G(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 G;case"notBlank":return o=>!G(o)}return le}case"number":{let t=o=>G(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 le;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 le;let r=Math.min(n,o),s=Math.max(n,o);return a=>{let l=t(a);return l>=r&&l<=s}}}return le}case"date":{if(i.op==="blank")return o=>ee(o)===null;if(i.op==="notBlank")return o=>ee(o)!==null;let t=i.value;if(!t)return le;let n=o=>ee(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 le;let r=t<o?t:o,s=t<o?o:t;return a=>{let l=n(a);return l!==null&&l>=r&&l<=s}}}return le}case"set":{let t=new Set(i.values.map(J));return n=>t.has(J(n))}}return le}function Vn(i){let e=i.trim().toLowerCase();return e?e.split(/\s+/):[]}function qn(i,e){return i.every(t=>e.includes(t))}function Ot(i,e,t){let n=[];for(let o of Array.isArray(i==null?void 0:i.conditions)?i.conditions:[]){if(!o||typeof o!="object")continue;if("conditions"in o){let a=Ot(o,e,t);a&&n.push(a);continue}let r=e(o.colId);if(!r||!o.model)continue;let s=Je(o.model);n.push(a=>s(t(r,a)))}return n.length?i.operator==="or"?o=>n.some(r=>r(o)):o=>n.every(r=>r(o)):null}var Wn=new Map;function yr(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 Qe={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 se(i){if(G(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 br(i,e,t){var n;switch(i){case"number":{let o={};if(typeof e=="string"){let s=yr(e);s||H(`unknown number format "${e}"`),o=s!=null?s:{}}else e&&(o=e);let r=new Intl.NumberFormat(t,o);return s=>{if(G(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=l=>String(l).padStart(2,"0"),a=e==="datetime";return l=>{let d=se(l);if(!d)return G(l)?"":String(l);let c=`${d.getFullYear()}-${s(d.getMonth()+1)}-${s(d.getDate())}`;return a?`${c} ${s(d.getHours())}:${s(d.getMinutes())}`:c}}let o=Qe.date;typeof e=="string"?(Qe[e]||H(`unknown date format "${e}"`),o=(n=Qe[e])!=null?n:Qe.date):e&&(o=e);let r=new Intl.DateTimeFormat(t,o);return s=>{let a=se(s);return a?r.format(a):G(s)?"":String(s)}}case"boolean":return o=>o===!0?"\u2713":o===!1?"\u2717":"";default:return o=>G(o)?"":o instanceof Date?o.toISOString():String(o)}}function _(i,e){var r;if(i.sparkline)return s=>Array.isArray(s)?s.join(", "):s==null?"":String(s);let t=i.format,n=`${e}|${(r=i.type)!=null?r:"text"}|${typeof t=="string"?t:JSON.stringify(t!=null?t:null)}`,o=Wn.get(n);return o||(o=br(i.type,t,e),Wn.set(n,o)),o}function Ht(i){let e=[];for(let t of i){if(G(t)||t instanceof Date)continue;let n=typeof t=="number"?t:Number(t);Number.isNaN(n)||e.push(n)}return e}function Kn(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=Ht(i);return n.length?e?Math.max(...n):Math.min(...n):null}function Re(i,e,t){if(typeof i=="function")return i(e,t);switch(i){case"sum":return Ht(e).reduce((n,o)=>n+o,0);case"avg":{let n=Ht(e);return n.length?n.reduce((o,r)=>o+r,0)/n.length:null}case"min":return Kn(e,!1);case"max":return Kn(e,!0);case"count":return t.length}return null}function Bt(i){return typeof i=="object"&&i!==null&&"agg"in i?i:{agg:i}}function Un(i,e,t){let n=new Map,o=(r,s)=>{let a=n.get(r);return a||n.set(r,a=e.map(l=>B(s,l))),a};return i.map(r=>{var a;let s={};for(let[l,d]of Object.entries((a=r.columns)!=null?a:{})){let c=t(l);c&&(s[l]=Re(Bt(d).agg,o(l,c),e))}return s})}function Ie(i,e,t,n,o){if(!i)return 1;let r=1;try{r=Math.floor(Number(i({value:B(e,t),row:t,rowIndex:n})))}catch{r=1}return Number.isFinite(r)?Math.max(1,Math.min(o,r)):1}function et(i,e){let t=i.length,n=new Int32Array(t),o=new Int32Array(t);if(e.rowSpan){for(let a=0;a<t;){let l=Ie(e.rowSpan,e,i[a],a,t-a);for(let d=a;d<a+l;d++)n[d]=a,o[d]=a+l-1;a+=l}return{start:n,end:o}}let r=typeof e.merge=="function"?(a,l)=>{try{return!!e.merge(B(e,i[a]),B(e,i[l]),i[a],i[l])}catch{return!1}}:(()=>{let a=i.map(l=>{let d=B(e,l);return G(d)?null:J(d)});return(l,d)=>a[l]!==null&&a[l]===a[d]})(),s=0;for(let a=1;a<=t;a++)if(!(a<t&&r(a-1,a))){for(let l=s;l<a;l++)n[l]=s,o[l]=a-1;s=a}return{start:n,end:o}}function jn(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 tt(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 c=s+a>>1;i[c]+e[c]<=t?s=c+1:a=c}let l=s,d=t+n;for(a=r-1;s<a;){let c=s+a+1>>1;i[c]<d?s=c:a=c-1}return{first:Math.max(0,l-o),last:Math.min(r-1,Math.max(l,s)+o)}}function _n(i,e,t,n,o=4){if(n<=0)return{first:0,last:-1};let r=0,s=n-1;for(;r<s;){let d=r+s>>1;i[d+1]<=e?r=d+1:s=d}let a=r,l=e+t;for(s=n-1;r<s;){let d=r+s+1>>1;i[d]<l?r=d:s=d-1}return{first:Math.max(0,a-o),last:Math.min(n-1,r+o)}}var te=["left","center","right"],Xn=6,xr=8,zt=2,Cr='<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>',Gt='<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 Rr='<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 C(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 nt=class{constructor(e,t,n){this.grid=t;this.opts=n;this.filterRow=null;this.activeCellId="";this.idBase=`fg${Math.random().toString(36).slice(2,8)}`;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.cards=null;this.cardMode=!1;this.pagerKey="";this.offsets=null;this.details=new Map;this.firstDataId="";this.rowHeights=new Map;this.heightsVersion=0;this.groupLabelId="";this.onScroll=()=>{this.frame&&cancelAnimationFrame(this.frame),this.frame=0,this.render(),this.grid.events.emit("scroll",this.getScroll())};this.onSideWheel=e=>{e.deltaY&&(e.preventDefault(),this.scroller.scrollTop+=e.deltaY)};this.overlayKey="";this.heightFn=null;this.onCardClick=e=>{var l;let t=e.target,n=t.closest(".fg-card");if(!n)return;let o=Number(n.dataset.row),r=this.grid.rowModel.getRow(o);if(!r||r.kind)return;if(t.closest(".fg-card-check")){this.grid.selectFromClick(o,!0,!1),this.invalidate({rows:!0});return}let s=(l=t.closest(".fg-card-value"))==null?void 0:l.dataset.col,a=s?this.grid.columns.getColumn(s):void 0;a&&this.grid.events.emit("cellClick",{row:r.data,rowIndex:o,colId:a.id,value:B(a.def,r.data),event:e})};this.root=C("div","",{tabindex:"-1"}),this.root.addEventListener("focus",()=>this.gridEl.focus({preventScroll:!0})),this.gridEl=C("div","fg-grid",{role:"grid",tabindex:"0"}),this.headerEl=C("div","fg-header",{role:"rowgroup"}),this.bodyEl=C("div","fg-body",{role:"rowgroup"});let o=r=>({left:C("div",`${r} ${r}-left`),center:C("div",`${r} ${r}-center`),right:C("div",`${r} ${r}-right`)});this.headerPanes=o("fg-header-pane"),this.headerInners=o("fg-header-inner");for(let r of te)this.headerInners[r].setAttribute("role","row");this.bodyPanes=o("fg-body-pane"),this.canvases=o("fg-canvas");for(let r of te)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,t.options.filterRow&&(this.filterRow=new Ze(t,this.headerPanes)),this.overlay=C("div","fg-overlay",{"aria-live":"polite"}),this.main=C("div","fg-main"),this.gridEl.append(this.headerEl,this.bodyEl),this.main.append(this.gridEl,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})}get activeScroller(){var e,t;return(t=(e=this.cards)==null?void 0:e.scroller)!=null?t:this.scroller}getScroll(){let e=this.activeScroller;return{top:e.scrollTop,left:e.scrollLeft}}setScroll(e){let t=this.activeScroller;typeof(e==null?void 0:e.top)=="number"&&Number.isFinite(e.top)&&(t.scrollTop=Math.max(0,e.top)),typeof(e==null?void 0:e.left)=="number"&&Number.isFinite(e.left)&&(t.scrollLeft=Math.max(0,e.left))}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(){let e=this.grid.options.direction==="rtl";this.root.className=`fg-root fg-theme-${this.grid.store.state.theme}${e?" fg-rtl":""}${this.cardMode?" fg-card-mode":""}${this.grid.density!=="normal"?` fg-density-${this.grid.density}`:""}`,this.root.setAttribute("dir",e?"rtl":"ltr")}get rtl(){return this.grid.options.direction==="rtl"}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,k,L,I,b,M,S,E,T,D;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 l=t.getRowCount(),d=!!this.grid.options.autoRowHeight&&!t.server,c=t.layout(r,this.detailHeight(),d?this.rowHeights:void 0,this.heightsVersion,t.server?void 0:this.heightOf);if(this.offsets=c.uniform?null:c.offsets,this.firstDataId=(k=(R=e.displayed().find(P=>!A(P.id)))==null?void 0:R.id)!=null?k:"",this.groupLabelId=(I=(L=e.region("center").find(P=>!A(P.id)))==null?void 0:L.id)!=null?I:this.firstDataId,this.useCards()){this.renderCards(l),this.renderStatusBar(t.dataCount()),this.renderPager(),this.orderSections(null),this.paintOverlay(l);return}let u=this.grid.summary(),h=u?u.opts.rows.length:0,f=(b=u==null?void 0:u.opts.position)!=null?b:"bottom",g=u?u.opts.pinned!==!1:!1;this.topOffset=u&&!g&&f==="top"?h*r:0;let x=u&&!g&&f==="bottom"?h*r:0;this.syncSummaryPane(u&&g?f:null,h*r);let y=e.depth*s+((S=(M=this.filterRow)==null?void 0:M.height)!=null?S:0);this.headerEl.style.height=`${y}px`;for(let P of te){let N=e.regionWidth(P);P!=="center"&&(this.headerPanes[P].style.width=this.bodyPanes[P].style.width=`${N}px`,this.headerPanes[P].hidden=this.bodyPanes[P].hidden=N===0),this.canvases[P].style.width=`${N}px`,this.canvases[P].style.height=`${this.rowsHeight(l)+this.topOffset+x}px`}o.autoHeight&&!this.useCards()&&(this.root.classList.add("fg-auto-height"),this.bodyEl.style.height=`${this.rowsHeight(l)+this.topOffset+x+Math.max(0,this.scroller.offsetHeight-this.scroller.clientHeight)}px`);let p=this.scroller.offsetHeight-this.scroller.clientHeight;this.bodyPanes.left.style.marginBottom=this.bodyPanes.right.style.marginBottom=`${p}px`;let v=this.gridEl;v.setAttribute("role",o.treeData||this.grid.getGroupBy().length?"treegrid":"grid"),v.setAttribute("aria-rowcount",String(l+e.depth+(this.filterRow?1:0))),v.setAttribute("aria-colcount",String(e.displayed().length)),o.rowSelection==="multiple"&&v.setAttribute("aria-multiselectable","true"),this.headerDirty&&(this.headerDirty=!1,this.renderHeader()),(E=this.filterRow)==null||E.render(),this.renderRows(l),this.updateActiveCell(),d&&this.measureRows(),this.renderSummary(l,u&&u.opts.rows,(T=u==null?void 0:u.values)!=null?T:[],g,f),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(u&&g?f:null),this.paintOverlay(l),this.overlay.style.top=`${y}px`;let{scrollTop:m,scrollLeft:w}=this.scroller;this.bodyPanes.left.scrollTop=this.bodyPanes.right.scrollTop=m,this.headerInners.center.style.transform=`translateX(${-w}px)`,(D=this.filterRow)==null||D.setTransform(w),this.summaryInners&&(this.summaryInners.center.style.transform=`translateX(${-w}px)`);for(let P of[this.pinnedTop,this.pinnedBottom])P&&(P.inners.center.style.transform=`translateX(${-w}px)`);this.grid.fillHandle.update()}orderSections(e){var s,a,l,d;let t=[e==="top"?this.summaryEl:null,(a=(s=this.pinnedTop)==null?void 0:s.el)!=null?a:null].filter(c=>!!c),n=[(d=(l=this.pinnedBottom)==null?void 0:l.el)!=null?d:null,e==="bottom"?this.summaryEl:null].filter(c=>!!c),o=[this.statusEl,this.pagerEl].filter(c=>!!c);for(let c of t)c.nextElementSibling!==this.bodyEl&&!t.includes(c.nextElementSibling)&&this.gridEl.insertBefore(c,this.bodyEl);let r=this.bodyEl;for(let c=t.length-1;c>=0;c--)r.previousElementSibling!==t[c]&&this.gridEl.insertBefore(t[c],r),r=t[c];r=this.bodyEl;for(let c of n)r.nextElementSibling!==c&&r.after(c),r=c;r=this.gridEl;for(let c of o)r.nextElementSibling!==c&&r.after(c),r=c}paintOverlay(e){var c;let{grid:t}=this,{store:n,rowModel:o,options:r}=t,s=(c=t.forcedOverlay)!=null?c:e>0?null:o.loading()?"loading":"noRows";if(this.overlay.hidden=!s,!s){this.overlayKey="";return}let a=!o.server&&n.state.data.length>0,l=s==="loading"?r.loadingOverlay:r.noRowsOverlay,d=`${s}|${a}|${n.state.locale.code}`;if(d!==this.overlayKey)if(this.overlayKey=d,this.overlay.classList.toggle("fg-overlay-custom",typeof l=="function"),l==null)this.overlay.textContent=s==="loading"?n.state.locale.loading:n.state.locale.noRows;else if(typeof l=="string")this.overlay.textContent=l;else try{let u=l({filtered:a});typeof u=="string"?this.overlay.textContent=u:this.overlay.replaceChildren(u)}catch{H(`${s==="loading"?"loadingOverlay":"noRowsOverlay"} threw`),this.overlay.textContent=s==="loading"?n.state.locale.loading:n.state.locale.noRows}}updateActiveCell(){var n,o,r;let e=this.activeCellId&&(r=(o=(n=this.root.getRootNode()).getElementById)==null?void 0:o.call(n,this.activeCellId))!=null?r:null,t=this.gridEl.querySelector(".fg-body .fg-cell-focused, .fg-body .fg-row-group .fg-cell-focused");if(e&&e!==t&&e.removeAttribute("id"),!t){this.gridEl.removeAttribute("aria-activedescendant"),this.activeCellId="";return}t.id||(t.id=`${this.idBase}-cell`),this.activeCellId=t.id,this.gridEl.setAttribute("aria-activedescendant",t.id)}renderPinned(e,t,n){if(!n.length)return e==null||e.el.remove(),null;let o=e!=null?e:new Vt(`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"),l=tt(a.map(d=>d.left),a.map(d=>d.width),this.scroller.scrollLeft,this.scroller.clientWidth,zt);for(let d of te){let c=d==="center"?a.slice(l.first,l.last+1):r.region(d);o.inners[d].replaceChildren(...n.map((u,h)=>{let f=C("div","fg-row fg-row-pinned",{role:"row"});f.style.transform=`translateY(${h*s}px)`,f.style.height=`${s}px`;let g={id:`pinned-${t}-${h}`,data:u,sourceIndex:-1};for(let x of c){let y=C("div","fg-cell",{role:"gridcell"});A(x.id)?(y.style.left=`${x.left}px`,y.style.width=`${x.width}px`):this.paintCell(y,g,-1,x,!1,!1),f.append(y)}return f}))}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=C("div","fg-statusbar",{role:"status","aria-live":"polite"}));let s=n.locale,a=new Intl.NumberFormat(s.code,{maximumFractionDigits:2}),l=C("span","fg-status-rows");l.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 d=C("span","fg-status-aggs"),c=t.rangeAggregates();if(c&&c.cells>1){let f=[`${s.count} ${a.format(c.count)}`];c.numbers&&f.push(`${s.sum} ${a.format(c.sum)}`,`${s.avg} ${a.format(c.sum/c.numbers)}`,`${s.min} ${a.format(c.min)}`,`${s.max} ${a.format(c.max)}`),d.textContent=f.join(" ")}this.statusEl.replaceChildren(l,d)}renderHeader(){let{columns:e,store:t}=this.grid,{sort:n,filters:o,locale:r}=t.state;for(let s of te){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(l=>this.headerCell(l,n,o,r)))}}headerCell(e,t,n,o){var h,f;let r=this.opts.headerHeight,s=C("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`,A(e.id))return e.id===he&&(s.classList.add("fg-header-rownum"),s.textContent=e.label),e.id===ne&&(s.classList.add("fg-header-select"),s.append(this.selectAllBox(o))),s;let a=C("span","fg-header-label"),l=e.node.def;if(a.textContent=e.label,l.headerRenderer)try{let g=l.headerRenderer({header:e.label,column:l});typeof g=="string"?a.innerHTML=g:a.replaceChildren(g)}catch{H(`headerRenderer of column "${e.id}" threw; showing the plain header`),a.textContent=e.label}let d=null;if(e.isGroup&&this.grid.columns.isCollapsible(e.node)){let g=e.node.open,x=C("button",g?"fg-colgroup-toggle fg-expanded":"fg-colgroup-toggle",{type:"button",tabindex:"-1","aria-expanded":String(g),"aria-label":g?o.collapseAll:o.expandAll});x.textContent=g?"\u2212":"+",x.addEventListener("click",y=>{y.stopPropagation(),this.grid.setColumnGroupOpened(e.id,!g)}),s.classList.add("fg-header-collapsible"),d=x}if(l.headerClass)try{let g=typeof l.headerClass=="function"?l.headerClass(l):l.headerClass;g&&s.classList.add(...g.split(/\s+/).filter(Boolean))}catch{H(`headerClass of column "${e.id}" threw`)}if(s.append(a),d&&s.append(d),e.isGroup||!e.column)return s;let c=e.node.def;((h=c.wrapHeaderText)!=null?h:this.grid.options.wrapHeaderText)&&s.classList.add("fg-header-wrap"),s.setAttribute("aria-colindex",String(e.column.index+1)),((f=c.align)!=null?f:c.type==="number"?"right":"left")==="right"&&s.classList.add("fg-align-right");let u=t.findIndex(g=>g.colId===e.id);if(s.setAttribute("aria-sort",u<0?"none":t[u].dir==="asc"?"ascending":"descending"),ve(c)&&s.classList.add("fg-sortable"),u>=0){let g=C("span","fg-sort-icon");if(g.textContent=t[u].dir==="asc"?"\u2191":"\u2193",t.length>1){let x=C("sup");x.textContent=String(u+1),g.append(x)}s.append(g)}if(ve(c)||re(c)){let g=!!n[e.id],x=C("button",g?"fg-menu-btn fg-filter-active":"fg-menu-btn",{type:"button",tabindex:"-1","aria-label":o.columnMenu});x.innerHTML=g?Rr:Cr,s.append(x)}return je(c)&&s.append(C("div","fg-resize",{"aria-hidden":"true"})),s}selectAllBox(e){let t=this.grid.selectableRows(),n=this.grid.store.state.selected,o=0;for(let s of t)n.has(s.id)&&o++;let r=C("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"||this.grid.options.headerCheckbox===!1,r}renderRows(e){var f,g,x;let{columns:t,rowModel:n,store:o}=this.grid,{selected:r,focus:s}=o.state,a=this.grid.allRangeBounds(),l=this.grid.mergeSpans(),d=Math.max(0,this.scroller.scrollTop-this.topOffset),c=this.grid.options.autoHeight&&!n.server?{first:0,last:e-1}:this.offsets?_n(this.offsets,d,this.scroller.clientHeight,e,Xn):jn(d,this.scroller.clientHeight,this.opts.rowHeight,e,Xn);this.lastRange=c;let u=t.region("center"),h=tt(u.map(y=>y.left),u.map(y=>y.width),this.scroller.scrollLeft,this.scroller.clientWidth,zt);u.some(y=>y.def.colSpan)&&(h.first=Math.max(0,h.first-xr));for(let y of te){let p=y==="center"?u.slice(h.first,h.last+1):t.region(y),v=this.painted[y];for(let[w,R]of v)w>=c.first&&w<=c.last&&p.length||(R.el.remove(),this.pool[y].push(R.el),v.delete(w));if(!p.length)continue;let m=y==="center"?`${h.first}-${h.last}`:"";for(let w=c.first;w<=c.last;w++){let R=n.getRow(w),k=r.has(R.id),L=s&&s.rowIndex===w?s.colId:"",I=a.filter(D=>w>=D.r1&&w<=D.r2),b=I.map(D=>`${D.c1}-${D.c2}`).join(","),M=this.mergeState(l,p,w,c.first),S=R.kind==="detail"?`${this.scroller.scrollLeft}:${this.scroller.clientWidth}`:"",E=`${R.id}|${this.version}|${m}|${k?1:0}${R.kind==="group"?`:${this.grid.selectionVersion}`:""}|${L}|${b}|${M}|${S}`,T=v.get(w);if(!T){let D=(f=this.pool[y].pop())!=null?f:C("div","fg-row",{role:"row"});this.canvases[y].append(D),T={el:D,key:""},v.set(w,T)}T.key!==E&&(T.key=E,T.el.dataset.kind!==((g=R.kind)!=null?g:"")&&(T.el.replaceChildren(),T.el.dataset.kind=(x=R.kind)!=null?x:""),R.kind==="group"?this.paintGroupRow(T.el,R,w,p,L):R.kind==="detail"?this.paintDetailRow(T.el,R,w,y):R.kind==="loading"?this.paintLoadingRow(T.el,w,p):this.paintRow(T.el,R,w,p,k,L,I,l,c.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 l=a.start[n],d=a.end[n];r+=l===d?"n":n===Math.max(l,o)?`d${l}`:"h"}return r}paintRow(e,t,n,o,r,s,a,l=new Map,d=0){let c=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.grid.editor.editingRow(t.id)?" fg-row-editing":""}`,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(C("div","fg-cell",{role:"gridcell"}));let u=!1,h=o.length?this.grid.columns.region(o[0].region):[],f=h.some(y=>y.def.colSpan),g=-1,x=f?new Map(h.map((y,p)=>[y.id,p])):null;o.forEach((y,p)=>{let v=e.children[p];if(this.paintCell(v,t,n,y,r,s===y.id),x){let w=x.get(y.id);if(w<=g)v.classList.add("fg-cell-span-hidden");else if(y.def.colSpan&&!A(y.id)){let R=Ie(y.def.colSpan,y.def,t.data,n,h.length-w);if(R>1){g=w+R-1;let k=0;for(let L=w;L<=g;L++)k+=h[L].width;v.style.width=`${k}px`,v.classList.add("fg-cell-colspan")}}}y.id===this.firstDataId&&this.decorate(v,t),v.style.top=v.style.height=v.style.bottom="";let m=l.get(y.id);m&&m.start[n]!==m.end[n]&&(n===Math.max(m.start[n],d)?(v.classList.add("fg-cell-merged"),v.style.top=`${-(this.rowTop(n)-this.rowTop(m.start[n]))}px`,v.style.height=`${this.rowTop(m.end[n])+this.rowH(m.end[n])-this.rowTop(m.start[n])}px`,v.style.bottom="auto",u=!0):v.classList.add("fg-cell-merge-hidden")),!A(y.id)&&a.some(w=>y.index>=w.c1&&y.index<=w.c2)&&v.classList.add("fg-cell-range")}),e.style.zIndex=u?"1":""}paintCell(e,t,n,o,r,s){var f;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 l=s?"fg-cell fg-cell-focused":"fg-cell";if(o.id===he){e.className=`${l} fg-cell-rownum`;let g=n>=0&&!t.kind?this.grid.rowNumber(n):null;e.textContent=g===null?"":String(g);return}if(o.id===me){e.className=`${l} fg-cell-drag`;let g=C("span",this.grid.canMoveRows()?"fg-drag-handle":"fg-drag-handle fg-drag-disabled",{"aria-hidden":"true"});g.textContent="\u22EE\u22EE",e.replaceChildren(g);return}if(o.id===ne){e.className=`${l} fg-cell-select`;let g=C("input","fg-checkbox",{type:"checkbox",tabindex:"-1","aria-label":a.selectRow});g.checked=r,n>=0&&!t.kind&&!this.grid.rowSelectable(t.data)&&(g.disabled=!0,e.classList.add("fg-cell-select-locked")),e.replaceChildren(g);return}let d=o.def,c=B(d,t.data),u=_(d,a.code)(c);l+=` fg-align-${(f=d.align)!=null?f:d.type==="number"?"right":d.type==="boolean"?"center":"left"}`;let h={value:c,formatted:u,row:t.data,rowIndex:n,column:d};if(d.cellClass)try{let g=typeof d.cellClass=="function"?d.cellClass(h):d.cellClass;g&&(l+=` ${g}`)}catch{H(`cellClass of column "${o.id}" threw`)}if(this.grid.tracker.isDirty(t.data,d.field)&&(l+=" fg-cell-dirty"),d.wrapText&&(l+=" fg-cell-wrap"),typeof d.editable=="function"&&n>=0&&!ae(d,t.data,n)&&(l+=" fg-cell-readonly"),n>=0&&(l+=this.grid.finder.classFor(n,o.id)),this.grid.isFlashing(t.id,o.id)&&(l+=" fg-cell-flash"),e.className=l,d.sparkline&&!d.renderer){let g=Array.isArray(c)?c.map(Number).filter(Number.isFinite):[];g.length?e.replaceChildren(Sr(g,d.sparkline===!0?{}:d.sparkline,o.width,this.opts.rowHeight)):e.replaceChildren(),e.setAttribute("aria-label",Array.isArray(c)?c.join(", "):"");return}if(!d.renderer){e.textContent=u;return}try{let g=d.renderer(h);typeof g=="string"?e.innerHTML=g:e.replaceChildren(g)}catch{H(`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:C("div",`${s} ${s}-left`),center:C("div",`${s} ${s}-center`),right:C("div",`${s} ${s}-right`)});this.summaryEl=C("div","fg-summary",{role:"rowgroup"}),this.summaryPanes=r("fg-summary-pane"),this.summaryInners=r("fg-summary-inner");for(let s of te)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 te){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 te){for(let h of this.canvasSummary[u])h.remove();this.canvasSummary[u]=[]}if(!t)return;let{columns:s}=this.grid,a=this.opts.rowHeight,l=s.region("center"),d=tt(l.map(u=>u.left),l.map(u=>u.width),this.scroller.scrollLeft,this.scroller.clientWidth,zt),c=s.displayed().filter(u=>!A(u.id));for(let u of te){let h=u==="center"?l.slice(d.first,d.last+1):s.region(u),f=t.map((g,x)=>{var m,w,R;let y=g.label!=null&&(w=(m=c.find(k=>{var L;return!(k.id in((L=g.columns)!=null?L:{}))}))==null?void 0:m.id)!=null?w:null,p=C("div","fg-row fg-summary-row",{role:"row"}),v=o||r==="top"?x*a:this.rowsHeight(e)+x*a;p.style.transform=`translateY(${v}px)`,p.style.height=`${a}px`;for(let k of h)p.append(this.summaryCell(k,g,(R=n[x])!=null?R:{},y));return p});o?this.summaryInners[u].replaceChildren(...f):(this.canvases[u].append(...f),this.canvasSummary[u]=f)}}summaryCell(e,t,n,o){var f,g,x,y,p;let r=C("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=(f=s.align)!=null?f:s.type==="number"?"right":s.type==="boolean"?"center":"left";r.className=`fg-cell fg-align-${a}`;let l=(g=t.columns)==null?void 0:g[e.id];if(l===void 0)return e.id===o&&(r.textContent=(x=t.label)!=null?x:"",r.classList.add("fg-summary-label")),r;let d=n[e.id],c=Bt(l),u=this.grid.store.state.locale.code,h;if(d==null||d==="")h="";else if(typeof d=="string")h=d;else if(c.agg==="count")h=new Intl.NumberFormat(u).format(d);else{let v=(y=s.type)!=null?y:typeof d=="number"?"number":d instanceof Date?"date":void 0;h=_({...s,type:v,format:(p=c.format)!=null?p:s.format},u)(d)}return r.textContent=c.prefix&&h?`${c.prefix} ${h}`:h,r}get heightOf(){var t;let e=this.grid.options.getRowHeight;if(e)return(t=this.heightFn)!=null?t:this.heightFn=n=>{var o;try{return(o=e(n))!=null?o:void 0}catch{return}}}invalidateHeights(){this.heightOf&&this.heightsVersion++,this.rowHeights.size&&(this.rowHeights.clear(),this.heightsVersion++)}measureRows(){var o,r;let e=this.opts.rowHeight,t=new Map;for(let s of te)for(let[a,l]of this.painted[s]){let d=this.grid.rowModel.getRow(a);if(!d||d.kind)continue;let c=(o=t.get(a))!=null?o:e;for(let u of l.el.querySelectorAll(".fg-cell-wrap"))u.classList.contains("fg-cell-merged")||u.classList.contains("fg-cell-merge-hidden")||(c=Math.max(c,Math.ceil(u.scrollHeight)));t.set(a,c)}let n=!1;for(let[s,a]of t){let l=this.grid.rowModel.getRow(s).id,d=(r=this.rowHeights.get(l))!=null?r:e;Math.abs(d-a)>1&&(a===e?this.rowHeights.delete(l):this.rowHeights.set(l,a),n=!0)}n&&(this.heightsVersion++,this.version++,this.schedule())}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+(this.filterRow?1:0)))}decorate(e,t){var d;let{grid:n}=this,o=n.store.state.locale,r=(d=t.level)!=null?d: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 l=[];if(s)if(t.hasChildren){let c=C("button",t.expanded?"fg-tree-toggle fg-expanded":t.loading?"fg-tree-toggle fg-tree-loading":"fg-tree-toggle",{type:"button",tabindex:"-1","aria-label":t.expanded?o.collapseAll:o.expandAll,"aria-expanded":String(!!t.expanded)});t.loading&&c.setAttribute("aria-busy","true"),c.innerHTML=Gt,l.push(c)}else l.push(C("span","fg-tree-spacer",{"aria-hidden":"true"}));if(a){let c=n.isDetailExpanded(t.data),u=C("button",c?"fg-detail-toggle fg-expanded":"fg-detail-toggle",{type:"button",tabindex:"-1","aria-expanded":String(c),"aria-label":c?o.collapseAll:o.expandAll});u.innerHTML=Gt,l.push(u)}e.prepend(...l)}paintGroupRow(e,t,n,o,r){var d;let s=t.group,{grid:a}=this,l=a.store.state.locale;for(e.className="fg-row fg-row-group",this.placeRow(e,n),e.setAttribute("aria-level",String(((d=t.level)!=null?d: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(C("div","fg-cell",{role:"gridcell"}));o.forEach((c,u)=>{var p,v,m,w,R,k,L;let h=e.children[u];h.style.left=`${c.left}px`,h.style.width=`${c.width}px`,h.style.top=h.style.height=h.style.bottom="",h.style.removeProperty("--fg-level"),h.dataset.col=c.id,h.setAttribute("aria-colindex",String(c.index+1));let f=r===c.id?" fg-cell-focused":"";if(c.id===ne){if(h.className=`fg-cell fg-cell-select${f}`,a.options.rowSelection!=="multiple"){h.replaceChildren();return}let I=a.groupSelection(t),b=C("input","fg-checkbox",{type:"checkbox",tabindex:"-1","aria-label":l.selectAllRows});b.checked=I==="all",b.indeterminate=I==="some",h.replaceChildren(b);return}if(c.id===this.groupLabelId){h.className=`fg-cell fg-group-cell${f}`,h.style.setProperty("--fg-level",String((p=t.level)!=null?p:0));let I=C("button",s.expanded?"fg-group-toggle fg-expanded":"fg-group-toggle",{type:"button",tabindex:"-1","aria-expanded":String(s.expanded),"aria-label":s.expanded?l.collapseAll:l.expandAll});I.innerHTML=Gt;let b=(v=a.columns.getNode(s.colId))==null?void 0:v.def,M=C("span","fg-group-label"),S=G(s.value)?l.blanks:b?_(b,l.code)(s.value):String(s.value),E=new Intl.NumberFormat(l.code),T=(m=s.count)!=null?m:s.aggregates?null:s.rows.length;M.textContent=`${(R=(w=b==null?void 0:b.header)!=null?w:b==null?void 0:b.field)!=null?R:s.colId}: ${S}${T==null?"":` (${E.format(T)})`}`,h.replaceChildren(I,M);return}let g=c.def,x=(k=g.align)!=null?k:g.type==="number"?"right":g.type==="boolean"?"center":"left";h.className=`fg-cell fg-align-${x}${f}`;let y=g.aggFunc&&!A(c.id)?a.groupAggregate(t,c.id):void 0;if(y==null||y==="")h.textContent="";else if(g.aggFunc==="count")h.textContent=new Intl.NumberFormat(l.code).format(y);else{let I=(L=g.type)!=null?L:typeof y=="number"?"number":y instanceof Date?"date":void 0;h.textContent=_({...g,type:I},l.code)(y)}h.textContent&&h.classList.add("fg-cell-agg")})}paintDetailRow(e,t,n,o){var a,l;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=C("div","fg-detail");try{let d=(l=(a=this.grid.options).detailRenderer)==null?void 0:l.call(a,{row:r.data,rowIndex:n-1});typeof d=="string"?s.innerHTML=d:d&&s.append(d)}catch{H("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=C("div","fg-cell",{role:"gridcell"});return r.style.left=`${o.left}px`,r.style.width=`${o.width}px`,r.dataset.col=o.id,A(o.id)||r.append(C("span","fg-skeleton",{"aria-hidden":"true"})),r}))}renderPager(){var p;let{grid:e}=this,t=e.options.pagination;if(!t){(p=this.pagerEl)==null||p.remove(),this.pagerEl=null;return}let n=e.store.state.locale,o=e.getPage(),r=e.getPageSize(),s=e.getPageCount(),a=e.rowModel.fullCount(),l=typeof t=="object"&&Array.isArray(t.pageSizes)?t.pageSizes.filter(v=>Number.isInteger(v)&&v>0):[],d=`${o}|${r}|${s}|${a}|${n.code}|${l.join(",")}`;if(this.pagerEl&&d===this.pagerKey)return;this.pagerKey=d,this.pagerEl||(this.pagerEl=C("div","fg-pager",{role:"navigation"}),this.pagerEl.addEventListener("click",v=>{var R;let m=(R=v.target.closest("button[data-action]"))==null?void 0:R.dataset.action,w=e.getPage();m==="first"?e.setPage(0):m==="prev"?e.setPage(w-1):m==="next"?e.setPage(w+1):m==="last"&&e.setPage(e.getPageCount()-1)}),this.pagerEl.addEventListener("change",v=>{let m=v.target;m.classList.contains("fg-pager-size")&&e.setPageSize(Number(m.value))})),this.pagerEl.setAttribute("aria-label",n.pageSize);let c=new Intl.NumberFormat(n.code),u=a?o*r+1:0,h=Math.min(a,(o+1)*r),f=C("span","fg-pager-range");f.textContent=n.pagerRange.replace("{from}",c.format(u)).replace("{to}",c.format(h)).replace("{total}",c.format(a));let g=[f,C("span","fg-pager-spacer")];if(l.length){let v=C("label","fg-pager-size-label");v.textContent=n.pageSize;let m=C("select","fg-pager-size");for(let w of[...new Set([...l,r])].sort((R,k)=>R-k)){let R=C("option");R.value=String(w),R.textContent=c.format(w),R.selected=w===r,m.append(R)}v.append(m),g.push(v)}let x=(v,m,w,R)=>{let k=C("button","fg-pager-btn",{type:"button","aria-label":w,title:w});return k.dataset.action=v,k.textContent=m,k.disabled=R,k},y=C("span","fg-pager-page",{"aria-live":"polite"});y.textContent=n.pageOf.replace("{page}",c.format(o+1)).replace("{pages}",c.format(s)),g.push(x("first","\xAB",n.firstPage,o===0),x("prev","\u2039",n.previousPage,o===0),y,x("next","\u203A",n.nextPage,o>=s-1),x("last","\xBB",n.lastPage,o>=s-1)),this.pagerEl.replaceChildren(...g)}showFreeBadge(){if(this.root.querySelector(".fg-free-badge"))return;let e=C("a","fg-free-badge",{href:"https://freegrid.app/pricing/",target:"_blank",rel:"noopener"});e.innerHTML='<svg viewBox="0 0 32 32" width="14" height="14" aria-hidden="true"><rect width="32" height="32" rx="7" fill="#0E1726"/><path d="M7 11.5h18M7 16.5h18M7 21.5h18M13 7v18" stroke="#fff" stroke-width="2" stroke-linecap="round"/><rect x="14" y="12.5" width="11" height="3" rx="1" fill="#F2A900"/></svg>';let t=C("span");t.textContent=`FreeGrid \xB7 ${this.grid.store.state.locale.freeBadge}`,e.append(t),this.root.append(e)}useCards(){let e=this.grid.options.cardView,t=e===!0?640:typeof e=="number"?e:-1,n=t>0&&this.main.clientWidth<t;return n!==this.cardMode&&(this.cardMode=n,this.root.classList.toggle("fg-card-mode",n),!n&&this.cards&&(this.cards.scroller.remove(),this.cards=null),this.version++),n}renderCards(e){var x,y,p,v,m;let{grid:t}=this;if(!this.cards){let w=C("div","fg-cards",{role:"list"}),R=C("div","fg-cards-canvas");w.append(R),this.main.insertBefore(w,this.overlay),w.addEventListener("scroll",()=>{this.schedule(),this.grid.events.emit("scroll",this.getScroll())},{passive:!0}),w.addEventListener("click",this.onCardClick),this.cards={scroller:w,canvas:R}}let{scroller:n,canvas:o}=this.cards,r=t.columns.displayed().filter(w=>!A(w.id)),s=Math.round(this.opts.rowHeight*.75),a=!!t.options.rowSelection,l=20+r.length*s+(a?s:0),d=10;o.style.height=`${e*(l+d)}px`;let c=Math.max(0,Math.floor(n.scrollTop/(l+d))-2),u=Math.min(e-1,Math.ceil((n.scrollTop+(n.clientHeight||800))/(l+d))+2),{selected:h,locale:f}=t.store.state,g=[];for(let w=c;w<=u;w++){let R=t.rowModel.getRow(w);if(!R)continue;let k=C("div",R.kind?"fg-card fg-card-other":h.has(R.id)?"fg-card fg-card-selected":"fg-card",{role:"listitem"});if(k.dataset.row=String(w),k.style.transform=`translateY(${w*(l+d)}px)`,k.style.height=`${l}px`,k.style.setProperty("--fg-card-line",`${s}px`),R.kind==="group"&&R.group){let L=(x=t.columns.getNode(R.group.colId))==null?void 0:x.def;k.textContent=`${(y=L==null?void 0:L.header)!=null?y:R.group.colId}: ${String((p=R.group.value)!=null?p:f.blanks)} (${R.group.rows.length})`}else if(!R.kind){if(a){let L=C("label","fg-card-head"),I=C("input","fg-card-check fg-checkbox",{type:"checkbox","aria-label":f.selectRow});I.checked=h.has(R.id),I.disabled=!t.rowSelectable(R.data),L.append(I,document.createTextNode(`#${w+1}`)),k.append(L)}for(let L of r){let I=C("div","fg-card-line"),b=C("span","fg-card-label");b.textContent=(m=(v=L.def.header)!=null?v:L.def.field)!=null?m:L.id;let M=C("span","fg-card-value");M.dataset.col=L.id;let S=B(L.def,R.data),E=_(L.def,f.code)(S);if(L.def.renderer)try{let T=L.def.renderer({value:S,formatted:E,row:R.data,rowIndex:w,column:L.def});typeof T=="string"?M.innerHTML=T:M.replaceChildren(T)}catch{M.textContent=E}else M.textContent=E;I.append(b,M),k.append(I)}}g.push(k)}o.replaceChildren(...g)}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(){var e;(e=this.filterRow)==null||e.destroy(),this.frame&&cancelAnimationFrame(this.frame),this.scroller.removeEventListener("scroll",this.onScroll),this.root.remove()}},Vt=class{constructor(e){let t=n=>({left:C("div",`${n} ${n}-left`),center:C("div",`${n} ${n}-center`),right:C("div",`${n} ${n}-right`)});this.el=C("div",e,{role:"rowgroup"}),this.panes=t("fg-section-pane"),this.inners=t("fg-section-inner");for(let n of te)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 te){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`}},Yn="http://www.w3.org/2000/svg";function Sr(i,e,t,n){var p;let o=Math.max(20,t-16),r=Math.max(10,n-14),s=document.createElementNS(Yn,"svg");s.setAttribute("class","fg-sparkline"),s.setAttribute("width",String(o)),s.setAttribute("height",String(r)),s.setAttribute("viewBox",`0 0 ${o} ${r}`),s.setAttribute("aria-hidden","true");let a=(p=e.color)!=null?p:"var(--fg-accent)",l=e.type==="bar",d=l?Math.min(0,...i):Math.min(...i),c=l?Math.max(0,...i):Math.max(...i);d===c&&(d-=1,c+=1);let u=c-d,h=v=>r-1-(v-d)/u*(r-2),f=(v,m)=>{let w=document.createElementNS(Yn,v);for(let[R,k]of Object.entries(m))w.setAttribute(R,String(k));return s.append(w),w};if(e.type==="bar"){let v=o/i.length;return i.forEach((m,w)=>f("rect",{x:w*v+1,y:Math.min(h(m),h(0)),width:Math.max(1,v-2),height:Math.max(1,Math.abs(h(m)-h(0))),fill:m<0?"#ef4444":a})),s}let g=i.length>1?(o-2)/(i.length-1):0,x=i.map((v,m)=>`${1+m*g},${h(v)}`).join(" ");e.type==="area"&&f("polygon",{points:`1,${r} ${x} ${1+(i.length-1)*g},${r}`,fill:a,"fill-opacity":.2}),f("polyline",{points:x,fill:"none",stroke:a,"stroke-width":1.5,"stroke-linejoin":"round"});let y=i.length-1;return f("circle",{cx:1+y*g,cy:h(i[y]),r:2,fill:a}),s}var kr=4,ot=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=d=>{!s&&Math.abs(d.clientX-r)<kr||(s=!0,n.classList.add("fg-dragging"))},l=d=>{if(window.removeEventListener("pointermove",a),window.removeEventListener("pointerup",l),n.classList.remove("fg-dragging"),!s)return;let u=[...this.el.querySelectorAll(".fg-group-chip")].filter(f=>f!==n).filter(f=>{let g=f.getBoundingClientRect();return d.clientX>g.left+g.width/2}).length,h=this.grid.getGroupBy().filter(f=>f!==o);h.splice(u,0,o),this.grid.setGroupBy(h)};window.addEventListener("pointermove",a),window.addEventListener("pointerup",l)};this.el=C("div","fg-group-panel",{role:"toolbar"}),e.renderer.main.insertBefore(this.el,e.renderer.gridEl),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=C("span","fg-group-hint");o.textContent=t.groupPanelHint,this.el.replaceChildren(o);return}this.el.replaceChildren(...n.map((o,r)=>{var c,u,h;let s=(c=e.columns.getNode(o))==null?void 0:c.def,a=C("span","fg-group-chip");a.dataset.col=o;let l=C("span","fg-group-chip-label");l.textContent=(h=(u=s==null?void 0:s.header)!=null?u:s==null?void 0:s.field)!=null?h:o;let d=C("button","fg-group-chip-remove",{type:"button","aria-label":`${t.ungroup}: ${l.textContent}`});if(d.textContent="\xD7",a.append(l,d),r<n.length-1){let f=C("span","fg-group-sep",{"aria-hidden":"true"});return f.textContent="\u203A",[a,f]}return[a]}).flat())}destroy(){this.el.removeEventListener("click",this.onClick),this.el.removeEventListener("pointerdown",this.onPointerDown),this.el.remove()}};var Se=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()}};function oe(i){let e=i.getRootNode();return typeof ShadowRoot!="undefined"&&e instanceof ShadowRoot?e:document.body}function De(i,e,t){var o;let n=i.getRootNode();return(o=typeof n.elementFromPoint=="function"?n.elementFromPoint(e,t):null)!=null?o:document.elementFromPoint(e,t)}function Zn(i){var t;return(t=i.getRootNode().activeElement)!=null?t:document.activeElement}function fe(i,...e){let t=typeof i.composedPath=="function"?i.composedPath():[];return t.length?e.some(n=>!!n&&t.includes(n)):e.some(n=>!!n&&n.contains(i.target))}var qt=new Set(["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Tab","Home","End","PageUp","PageDown"]);function Wt(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 rt=new Map,Jn=i=>i?rt.get(i):void 0;var Mr={Enter:"edit",F2:"edit",Delete:"clear",Backspace:"clear","Ctrl+Z":"undo","Ctrl+Y":"redo","Ctrl+Shift+Z":"redo","Ctrl+F":"find"};function Er(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 Lr=3;function Tr(i,e){return i.renderer.rtl?e.key==="ArrowLeft"?"ArrowRight":e.key==="ArrowRight"?"ArrowLeft":e.key:e.key}function Qn(i){var I;let{renderer:e}=i,t=e.bodyEl,n=e.root,o=b=>Tr(i,b),r="mouse",s=0,a=!1,l=b=>{let M=e.cellAt(b.target);if(!M)return null;let S=i.rowModel.getRow(M.rowIndex),E=i.columns.getColumn(M.colId);if(!S||!E)return null;let T=A(E.id)?void 0:B(E.def,S.data);return{row:S.data,rowIndex:M.rowIndex,colId:M.colId,value:T,event:b}},d=b=>{var T,D;let M=(D=(T=b.target).closest)==null?void 0:D.call(T,".fg-group-toggle, .fg-tree-toggle, .fg-detail-toggle"),S=M&&e.cellAt(b.target);if(!S)return!1;e.gridEl.focus({preventScroll:!0}),i.setFocus(S.rowIndex,S.colId),i.setRange(null);let E=i.rowModel.getRow(S.rowIndex);return M.classList.contains("fg-detail-toggle")?i.setDetailExpanded(E.data,!i.isDetailExpanded(E.data)):i.toggleRow(S.rowIndex),!0},c=b=>{var N;if(d(b))return;let M=i.store.state.focus,S=e.cellAt(b.target);if(S&&((N=i.rowModel.getRow(S.rowIndex))!=null&&N.kind)){S.colId===ne&&i.rowModel.getRow(S.rowIndex).kind==="group"&&i.toggleGroupSelection(i.rowModel.getRow(S.rowIndex)),e.gridEl.focus({preventScroll:!0}),i.setFocus(S.rowIndex,S.colId),i.setRange(null);return}let E=l(b);if(!E)return;if(e.gridEl.focus({preventScroll:!0}),E.colId===he){let $=i.columns.displayed().filter(F=>!A(F.id));$.length&&(i.setFocus(E.rowIndex,$[0].id),i.setRange({start:{rowIndex:E.rowIndex,colId:$[0].id},end:{rowIndex:E.rowIndex,colId:$[$.length-1].id}}));return}let T=a;a=!1;let D=i.store.state.focus,P=E.colId===ne;if(!T)if(b.shiftKey&&D&&!P&&!A(D.colId)&&i.options.rangeSelection!==!1)i.setRange({start:D,end:{rowIndex:E.rowIndex,colId:E.colId}},!0);else if((b.ctrlKey||b.metaKey)&&!P&&!A(E.colId)&&i.options.rangeSelection!==!1){let $={rowIndex:E.rowIndex,colId:E.colId};i.addRange({start:$,end:$}),i.setFocus(E.rowIndex,E.colId)}else i.setFocus(E.rowIndex,E.colId),i.setRange(null);i.options.rowSelection&&!T&&i.selectFromClick(E.rowIndex,P||b.ctrlKey||b.metaKey,b.shiftKey),i.events.emit("cellClick",E),r==="touch"&&!T&&M&&M.rowIndex===E.rowIndex&&M.colId===E.colId&&i.editor.canEdit(E.rowIndex,E.colId)&&(i.columns.getColumn(E.colId).def.type==="boolean"?i.applyEdit(E.rowIndex,E.colId,E.value!==!0):i.editor.start(E.rowIndex,E.colId))},u=b=>{var D,P;if((P=(D=b.target).closest)!=null&&P.call(D,"button"))return;let M=e.cellAt(b.target),S=M&&i.rowModel.getRow(M.rowIndex);if((S==null?void 0:S.kind)==="group"){i.toggleRow(M.rowIndex);return}if(S!=null&&S.kind)return;let E=l(b);if(!E||(i.events.emit("cellDoubleClick",E),!i.editor.canEdit(E.rowIndex,E.colId)))return;i.columns.getColumn(E.colId).def.type==="boolean"?i.applyEdit(E.rowIndex,E.colId,E.value!==!0):i.editor.start(E.rowIndex,E.colId)},h={...Mr};for(let[b,M]of Object.entries((I=i.options.keymap)!=null?I:{}))h[b]=M===!1?"none":M;let f=b=>{var T,D;let M=i.store.state.focus,S=h[Er(b)];if(S==="none")return!1;switch(S){case"edit":return!M||!i.editor.canEdit(M.rowIndex,M.colId)||i.columns.getColumn(M.colId).def.type==="boolean"?!1:(i.editor.start(M.rowIndex,M.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"cut":return i.cutToClipboard(),!0;case"selectAll":return i.selectAllCells(),!0;case"find":return i.options.findBar===!1?!1:(i.finder.openBar(),!0);case"paste":return(D=(T=navigator.clipboard)==null?void 0:T.readText)==null||D.call(T).then(P=>i.pasteText(P),()=>{}),!0}if(!M||!i.editor.canEdit(M.rowIndex,M.colId))return!1;let E=i.columns.getColumn(M.colId).def;if(b.key===" "&&E.type==="boolean"&&!b.ctrlKey&&!b.metaKey){let P=i.rowModel.getRow(M.rowIndex).data;return i.applyEdit(M.rowIndex,M.colId,P[E.field]!==!0),!0}return b.key.length===1&&b.key!==" "&&!b.ctrlKey&&!b.metaKey&&!b.altKey&&E.type!=="boolean"?(i.editor.start(M.rowIndex,M.colId,b.key),!0):!1},g=b=>{var P,N,$;let M=i.store.state.focus;if(!M||b.ctrlKey||b.metaKey||b.altKey||b.shiftKey)return!1;let S=i.rowModel.getRow(M.rowIndex);if(!i.isExpandable(S))return!1;let E=S.kind==="group";if(!E&&M.colId!==((P=i.columns.displayed().find(F=>!A(F.id)))==null?void 0:P.id))return!1;let T=!!(($=(N=S.group)==null?void 0:N.expanded)!=null?$:S.expanded),D=i.expandKey(S);if(E&&(b.key==="Enter"||b.key===" "))i.setGroupExpanded(D,!T);else if(o(b)==="ArrowRight"&&!T)i.setGroupExpanded(D,!0);else if(o(b)==="ArrowLeft"&&T)i.setGroupExpanded(D,!1);else return!1;return!0},x=b=>{let M=e.cellAt(b.target);if(!M||M.colId!==me)return!1;b.preventDefault();let S=i.rowModel.getRow(M.rowIndex);if(!S||S.kind||!i.canMoveRows())return!0;let E=S.data,T=C("div","fg-row-drop-marker"),D=null;n.classList.add("fg-row-dragging");let P=$=>{var qe,wn;let F=De(n,$.clientX,$.clientY),O=F==null?void 0:F.closest(".fg-root"),V=O===n?i:Jn(O),z=i.dragOptions.group;if(D=null,T.remove(),!V||!O||V!==i&&(!z||V.dragOptions.group!==z||!V.options.rowDrag))return;let W=F.closest(".fg-row[data-row]"),q=W==null?void 0:W.getBoundingClientRect(),K=null,U="after",Z;if(W&&q){let ue=V.rowModel.getRow(Number(W.dataset.row));if(!ue||ue.kind==="group")return;K=(wn=(qe=ue.detailOf)==null?void 0:qe.data)!=null?wn:ue.data;let Le=($.clientY-q.top)/q.height;ue.kind==="detail"?U="after":V.options.treeData?U=Le<.25?"before":Le>.75?"after":"inside":U=Le<.5?"before":"after",Z=U==="before"?q.top:q.bottom}else{if(!F.closest(".fg-body"))return;let ue=O.querySelectorAll(".fg-body-pane-center .fg-row[data-row]");Z=ue.length?Math.max(...[...ue].map(Le=>Le.getBoundingClientRect().bottom)):O.querySelector(".fg-body").getBoundingClientRect().top}if(!V.canDropRow(E,K,U,i))return;D={into:V,target:K,position:U};let Q=O.getBoundingClientRect().top;T.classList.toggle("fg-row-drop-inside",U==="inside"),T.style.top=`${U==="inside"?q.top-Q:Z-Q-1}px`,T.style.height=U==="inside"?`${q.height}px`:"",O.append(T)},N=()=>{window.removeEventListener("pointermove",P),window.removeEventListener("pointerup",N),window.removeEventListener("pointercancel",N),n.classList.remove("fg-row-dragging"),T.remove(),D&&D.into.dropRow(E,D.target,D.position,i)};return window.addEventListener("pointermove",P),window.addEventListener("pointerup",N),window.addEventListener("pointercancel",N),!0},y=b=>{let M=e.cellAt(b.target);if(!M)return;let S=b.clientX,E=b.clientY,T=()=>{clearTimeout(s),window.removeEventListener("pointermove",D),window.removeEventListener("pointerup",T),window.removeEventListener("pointercancel",T)},D=P=>{Math.hypot(P.clientX-S,P.clientY-E)>8&&T()};clearTimeout(s),s=window.setTimeout(()=>{T(),i.options.contextMenu!==!1&&(a=!0,A(M.colId)||(i.setFocus(M.rowIndex,M.colId),i.rangeContains(M.rowIndex,M.colId)||i.setRange({start:M,end:M})),i.contextMenu.open(S,E,M.rowIndex,M.colId))},550),window.addEventListener("pointermove",D),window.addEventListener("pointerup",T),window.addEventListener("pointercancel",T)},p=b=>{if(r=b.pointerType||"mouse",r==="touch"){y(b);return}if(b.button===0&&x(b)||i.options.rangeSelection===!1||b.button!==0||b.shiftKey||b.target.closest("input, a, button"))return;let M=e.cellAt(b.target);if(!M||A(M.colId))return;let S=b.clientX,E=b.clientY,T=b.ctrlKey||b.metaKey,D=!1,P=$=>{if(!D&&Math.hypot($.clientX-S,$.clientY-E)<Lr)return;let F=e.cellAt(De(n,$.clientX,$.clientY));!F||A(F.colId)||(D||(D=!0,n.classList.add("fg-range-dragging"),T&&i.addRange({start:M,end:M}),i.setFocus(M.rowIndex,M.colId)),i.setRange({start:M,end:F},T))},N=()=>{window.removeEventListener("pointermove",P),window.removeEventListener("pointerup",N),n.classList.remove("fg-range-dragging"),D&&(a=!0)};window.addEventListener("pointermove",P),window.addEventListener("pointerup",N)},v=b=>{var O,V;if(b.target!==n&&b.target!==e.gridEl)return;let M=i.columns.displayed(),S=i.rowModel.getRowCount();if(!M.length||!S)return;if(g(b)){b.preventDefault();return}if(f(b)){b.preventDefault();return}let E=i.store.state.focus,T=b.ctrlKey||b.metaKey;if(b.key==="Escape"&&i.store.state.range){b.preventDefault(),i.setRange(null);return}if(T&&b.key.toLowerCase()==="a"&&i.options.rangeSelection!==!1){b.preventDefault(),i.selectAllCells();return}if(b.key==="ContextMenu"||b.key==="F10"&&b.shiftKey){b.preventDefault(),i.contextMenu.openAtFocus();return}if(b.key===" "&&E&&i.options.rowSelection){b.preventDefault(),i.selectFromClick(Math.min(E.rowIndex,S-1),!0,b.shiftKey);return}let D={rows:S,cols:M.length,pageRows:e.pageRows()},P=M.findIndex(z=>!A(z.id));if(i.options.rangeSelection!==!1&&b.shiftKey&&b.key!=="Tab"&&qt.has(b.key)){let z=E!=null?E:{rowIndex:0,colId:M[P].id},W=i.store.state.range,q=(O=W==null?void 0:W.end)!=null?O:z,K={rowIndex:Math.min(q.rowIndex,S-1),colIndex:Math.max(0,M.findIndex(Q=>Q.id===q.colId))},U=Wt(o(b),{ctrl:T,shift:!1},K,D);if(!U)return;b.preventDefault();let Z=M[Math.max(P,U.colIndex)].id;E||i.setFocus(z.rowIndex,z.colId),i.setRange({start:(V=W==null?void 0:W.start)!=null?V:z,end:{rowIndex:U.rowIndex,colId:Z}}),e.ensureVisible(U.rowIndex,Z);return}let $;if(!E)$=qt.has(b.key)&&b.key!=="Tab"?{rowIndex:0,colIndex:0}:null;else{let z=Math.max(0,M.findIndex(W=>W.id===E.colId));$=Wt(o(b),{ctrl:T,shift:b.shiftKey},{rowIndex:Math.min(E.rowIndex,S-1),colIndex:z},D)}if(!$)return;b.preventDefault();let F=M[$.colIndex].id;i.setFocus($.rowIndex,F),i.setRange(null),e.ensureVisible($.rowIndex,F)},m=b=>{var M,S;return(S=(M=b.target)==null?void 0:M.closest)==null?void 0:S.call(M,".fg-editor, input, textarea, select, [contenteditable]")},w=b=>{var M,S;return((S=(M=b.target)==null?void 0:M.closest)==null?void 0:S.call(M,".fg-root"))!==n},R=b=>{if(m(b)||w(b))return;let M=i.selectionTSV(!1);!M||!b.clipboardData||(b.clipboardData.setData("text/plain",M),b.preventDefault())},k=b=>{if(m(b)||w(b))return;let M=i.selectionTSV(!1);!M||!b.clipboardData||(b.clipboardData.setData("text/plain",M),b.preventDefault(),i.clearCells())},L=b=>{var S;if(m(b)||w(b))return;let M=(S=b.clipboardData)==null?void 0:S.getData("text/plain");M&&(b.preventDefault(),i.pasteText(M))};return t.addEventListener("click",c),t.addEventListener("dblclick",u),t.addEventListener("pointerdown",p),n.addEventListener("keydown",v),n.addEventListener("copy",R),n.addEventListener("paste",L),n.addEventListener("cut",k),()=>{t.removeEventListener("click",c),t.removeEventListener("dblclick",u),t.removeEventListener("pointerdown",p),n.removeEventListener("keydown",v),n.removeEventListener("copy",R),n.removeEventListener("paste",L),n.removeEventListener("cut",k)}}var it=class{constructor(e){this.grid=e;this.open=new Set;this.el=C("div","fg-filters-panel")}refresh(){var l,d;let{grid:e}=this,t=e.store.state.locale,n=e.store.state.filters,o=C("div","fg-filters-head"),r=C("span","fg-filters-title");r.textContent=t.filters;let s=C("button","fg-btn fg-filters-clear",{type:"button"});s.textContent=t.clearFilters,s.disabled=!Object.keys(n).length,s.addEventListener("click",()=>{for(let c of Object.keys(e.store.state.filters))e.setFilter(c,null)}),o.append(r,s);let a=C("div","fg-filters-list");for(let c of e.columns.displayed()){if(A(c.id)||!re(c.def))continue;let u=C("details",n[c.id]?"fg-filters-item fg-filter-on":"fg-filters-item");u.dataset.col=c.id,u.open=this.open.has(c.id);let h=C("summary");h.textContent=(d=(l=c.def.header)!=null?l:c.def.field)!=null?d:c.id,u.append(h);let f=()=>{if(u.querySelector(".fg-filter"))return;let g=e.menu.filterSection(c.id,()=>{});g&&u.append(g)};u.open&&f(),u.addEventListener("toggle",()=>{u.open?(this.open.add(c.id),f()):this.open.delete(c.id)}),a.append(u)}this.el.replaceChildren(o,a)}};var Ir=["sum","avg","min","max","count"],st=class{constructor(e){this.grid=e;this.draft={rows:[],columns:[],values:[]};this.el=C("div","fg-pivot-panel")}apply(){this.grid.getPivot()?this.grid.setPivot(this.draft):this.refresh()}refresh(){var d;let{grid:e}=this,t=e.store.state.locale,n=e.getPivot();n&&(this.draft={rows:[...n.rows],columns:[...(d=n.columns)!=null?d:[]],values:n.values.map(c=>({colId:c.colId,aggFunc:typeof c.aggFunc=="string"?c.aggFunc:"sum"}))});let o=e.sourceLeaves(),r=c=>{var h,f,g;let u=(h=o.find(x=>x.id===c))==null?void 0:h.def;return(g=(f=u==null?void 0:u.header)!=null?f:u==null?void 0:u.field)!=null?g:c},s=C("label","fg-pivot-mode"),a=C("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 l=(c,u)=>{let h=C("div","fg-pivot-zone");h.dataset.zone=c;let f=C("div","fg-pivot-zone-title");f.textContent=u;let g=C("div","fg-pivot-chips"),x=c==="values"?this.draft.values.map(v=>v.colId):this.draft[c];x.forEach((v,m)=>{let w=C("span","fg-group-chip");w.dataset.col=v;let R=C("span","fg-group-chip-label");if(R.textContent=r(v),w.append(R),c==="values"){let L=C("select","fg-pivot-agg",{"aria-label":`${r(v)} ${t.pivotValues}`});for(let I of Ir){let b=C("option");b.value=I,b.textContent=t[I],L.append(b)}L.value=this.draft.values[m].aggFunc,L.addEventListener("change",()=>{this.draft.values[m].aggFunc=L.value,this.apply()}),w.append(L)}let k=C("button","fg-group-chip-remove",{type:"button","aria-label":`${t.ungroup}: ${r(v)}`});k.textContent="\xD7",k.addEventListener("click",()=>{c==="values"?this.draft.values.splice(m,1):this.draft[c].splice(m,1),this.apply()}),w.append(k),g.append(w)});let y=C("select","fg-pivot-add",{"aria-label":`${u}: ${t.addColumn}`}),p=C("option");p.value="",p.textContent=t.addColumn,y.append(p);for(let v of o){if(x.includes(v.id)||c==="values"&&v.def.type!=="number")continue;let m=C("option");m.value=v.id,m.textContent=r(v.id),y.append(m)}return y.addEventListener("change",()=>{y.value&&(c==="values"?this.draft.values.push({colId:y.value,aggFunc:"sum"}):this.draft[c].push(y.value),this.apply())}),h.append(f,g,y),h};this.el.replaceChildren(s,l("rows",t.pivotRows),l("columns",t.pivotColumns),l("values",t.pivotValues))}};var Dr=4,at=i=>!A(i.id)&&(i.children?i.children.some(at):i.def.chooser!==!1),Kt=i=>{var e,t;return(t=(e=i.def.header)!=null?e:i.def.field)!=null?t:i.id},lt=class{constructor(e){this.grid=e;this.collapsed=new Set;this.el=C("div","fg-chooser"),this.search=C("input","fg-input fg-chooser-search",{type:"search"});let t=C("label","fg-chooser-all");this.allBox=C("input","fg-checkbox",{type:"checkbox"}),this.allText=C("span"),t.append(this.allBox,this.allText),this.list=C("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,l)=>{for(let d of a)!at(d)||t&&!this.subtreeMatches(d,t)||(n.push(this.item(d,l)),d.children&&(t||!this.collapsed.has(d.id))&&o(d.children,l+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(Kt(n).toLowerCase().includes(t))return!0;return!!e.children&&e.children.some(n=>at(n)&&this.subtreeMatches(n,t))}leavesOf(e){return at(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=C("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=C("span","fg-chooser-handle",{"aria-hidden":"true"});if(o.textContent="\u22EE\u22EE",n.append(o),e.children){let d=!this.collapsed.has(e.id),c=C("button","fg-chooser-caret",{type:"button",tabindex:"-1","aria-hidden":"true"});c.textContent=d?"\u25BE":"\u25B8",n.setAttribute("aria-expanded",String(d)),n.append(c)}let r=this.leavesOf(e),s=r.filter(d=>!d.hide).length,a=C("input","fg-checkbox",{type:"checkbox","aria-label":Kt(e)});a.checked=r.length>0&&s===r.length,a.indeterminate=s>0&&s<r.length,a.disabled=r.every(d=>d.def.lockVisible);let l=C("span","fg-chooser-label");if(l.textContent=Kt(e),n.append(a,l),!e.children&&e.pinned){let d=C("span","fg-chooser-pin");d.textContent=e.pinned==="left"?"\u21E4":"\u21E5",n.append(d)}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(f=>f.id).filter(f=>f!==o.id)),s=[...this.list.querySelectorAll(".fg-chooser-item")].filter(f=>r.has(f.dataset.col)),a=e.clientY,l=!1,d=-1,c=C("div","fg-chooser-marker"),u=f=>{if(!l){if(Math.abs(f.clientY-a)<Dr||!s.length)return;l=!0,n.classList.add("fg-dragging"),this.list.append(c)}d=s.filter(y=>{let p=y.getBoundingClientRect();return f.clientY>p.top+p.height/2}).length;let g=this.list.getBoundingClientRect().top-this.list.scrollTop,x=d<s.length?s[d].getBoundingClientRect().top:s[s.length-1].getBoundingClientRect().bottom;c.style.top=`${x-g-1}px`},h=()=>{if(window.removeEventListener("pointermove",u),window.removeEventListener("pointerup",h),c.remove(),n.classList.remove("fg-dragging"),!l||d<0)return;let f=this.grid.columns.siblings(o.id).map(y=>y.id).filter(y=>y!==o.id),g=d<s.length?f.indexOf(s[d].dataset.col):f.indexOf(s[s.length-1].dataset.col)+1;g=Math.max(f.filter(A).length,g);let x=this.grid.columns.siblings(o.id).findIndex(y=>y.id===o.id);g!==x&&(this.grid.columns.move(o.id,g),this.grid.layoutChanged(),this.grid.events.emit("columnMove",{colId:o.id,toIndex:g}))};window.addEventListener("pointermove",u),window.addEventListener("pointerup",h)}},dt=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=C("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=C("div","fg-chooser-head"),o=C("span","fg-menu-title");o.textContent=e.chooseColumns;let r=C("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 lt(this.grid),t.append(n,this.panel.el),oe(this.grid.renderer.root).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 l=c=>{fe(c,t)||this.close()},d=c=>{c.key==="Escape"&&this.close()};document.addEventListener("pointerdown",l,!0),document.addEventListener("keydown",d,!0),this.off.push(()=>document.removeEventListener("pointerdown",l,!0),()=>document.removeEventListener("keydown",d,!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}},ct=class{constructor(e,t,n=["columns","filters"]){this.grid=e;this.tabs=new Map;this.el=C("div","fg-sidebar"),this.panelHost=C("div","fg-sidebar-panel"),this.columns=new lt(e),this.filters=new it(e),this.pivot=new st(e);let o=n.filter(s=>s==="columns"||s==="filters"||s==="pivot");o.length||o.push("columns"),this.current=o[0];let r=C("div","fg-sidebar-tabs",{role:"tablist"});for(let s of o){let a=C("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 Pr=()=>typeof navigator!="undefined"&&/Mac|iPhone|iPad/.test(navigator.platform||navigator.userAgent||""),ke=i=>Pr()?`\u2318${i}`:`Ctrl+${i}`,ut=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||A(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.gridEl.focus({preventScroll:!0}),!A(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&&!A(e),a=[{label:n.copy,shortcut:ke("C"),action:()=>t.copyToClipboard(!1)},{label:n.copyWithHeaders,action:()=>t.copyToClipboard(!0)},{label:n.cut,shortcut:ke("X"),action:()=>t.cutToClipboard()},...t.store.state.selected.size?[{label:n.copyRows,action:()=>t.copyToClipboard(!1,!0)}]:[],{label:n.paste,shortcut:ke("V"),action:()=>this.pasteFromClipboard()}];(t.history.canUndo()||t.history.canRedo())&&a.push("separator",{label:n.undo,shortcut:ke("Z"),action:()=>t.undo(),disabled:!t.history.canUndo()},{label:n.redo,shortcut:ke("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 l=t.rangeBounds();return l&&(l.r2>l.r1||l.c2>l.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()}),t.options.advancedFilter!==!1&&!t.options.pivot&&a.push("separator",{label:`${n.advancedFilter}\u2026`,action:()=>t.filterBuilder.open()}),a}pasteFromClipboard(){let e=typeof navigator!="undefined"?navigator.clipboard:void 0,t=()=>this.grid.toast(this.grid.store.state.locale.pasteHint.replace("Ctrl+V",ke("V")));if(!(e!=null&&e.readText))return t();e.readText().then(n=>this.grid.pasteText(n),t)}open(e,t,n,o){var w,R,k;this.close(),this.grid.menu.close();let{grid:r}=this,s=r.rowModel.getRow(n),a=r.columns.getColumn(o),l=this.defaultItems(o),d={row:(w=s==null?void 0:s.data)!=null?w:null,rowIndex:n,colId:o,value:s&&a&&!A(o)?B(a.def,s.data):void 0,defaultItems:l},c=r.options.contextMenu,u=l;if(typeof c=="function")try{u=c(d)}catch{u=l}let h=r.store.state.locale,f=C("div",`fg-menu fg-context-menu fg-theme-${r.store.state.theme}`,{role:"menu","aria-label":h.columnMenu});r.applyFontTo(f);let g=!0;for(let L of u){if(L==="separator"){g||f.append(C("div","fg-cm-sep",{role:"separator"})),g=!0;continue}let I=C("button","fg-menu-item fg-cm-item",{type:"button",role:"menuitem"}),b=C("span","fg-cm-label");if(b.textContent=L.label,I.append(b),L.shortcut){let M=C("span","fg-cm-shortcut");M.textContent=L.shortcut,I.append(M)}I.disabled=!!L.disabled,I.addEventListener("click",()=>{this.close(),L.action()}),f.append(I),g=!1}(R=f.lastElementChild)!=null&&R.classList.contains("fg-cm-sep")&&f.lastElementChild.remove(),oe(this.grid.renderer.root).append(f);let x=f.offsetWidth||220,y=f.offsetHeight||300;f.style.left=`${Math.max(4,Math.min(e,window.innerWidth-x-4))}px`,f.style.top=`${Math.max(4,Math.min(t,window.innerHeight-y-4))}px`,this.popup=f;let p=L=>{fe(L,f)||this.close()},v=L=>{if(L.key==="Escape"){this.close(),r.renderer.gridEl.focus();return}if(L.key!=="ArrowDown"&&L.key!=="ArrowUp")return;let I=[...f.querySelectorAll("button:not(:disabled)")],b=I.indexOf(Zn(f)),M=I[(b+(L.key==="ArrowDown"?1:I.length-1)+I.length)%I.length];M==null||M.focus(),L.preventDefault()},m=()=>this.close();document.addEventListener("pointerdown",p,!0),document.addEventListener("keydown",v,!0),r.renderer.scroller.addEventListener("scroll",m,{passive:!0}),this.off.push(()=>document.removeEventListener("pointerdown",p,!0),()=>document.removeEventListener("keydown",v,!0),()=>r.renderer.scroller.removeEventListener("scroll",m)),(k=f.querySelector("button:not(:disabled)"))==null||k.focus()}close(){var e;for(let t of this.off)t();this.off=[],(e=this.popup)==null||e.remove(),this.popup=null}};var ht=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=l=>{let d=n.renderer.cellAt(De(n.renderer.root,l.clientX,l.clientY)),c=d&&n.columns.getColumn(d.colId);if(!d||!c||A(c.id))return;let u=d.rowIndex>t.r2?d.rowIndex-t.r2:d.rowIndex<t.r1?d.rowIndex-t.r1:0,h=c.index>t.c2?c.index-t.c2:c.index<t.c1?c.index-t.c1:0;!u&&!h?o=null:Math.abs(u)>=Math.abs(h)?o={r1:Math.min(t.r1,d.rowIndex),r2:Math.max(t.r2,d.rowIndex),c1:t.c1,c2:t.c2}:o={r1:t.r1,r2:t.r2,c1:Math.min(t.c1,c.index),c2:Math.max(t.c2,c.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 l=n.columns.displayed();n.fillRange({start:{rowIndex:o.r1,colId:l[o.c1].id},end:{rowIndex:o.r2,colId:l[o.c2].id}})};r.classList.add("fg-range-dragging"),window.addEventListener("pointermove",s),window.addEventListener("pointerup",a)};this.handle=C("div","fg-fill-handle",{"aria-hidden":"true"}),this.preview=C("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||A(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=`${(this.grid.renderer.rtl?s.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 Ar=1e4,ft=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=>!A(a.id)),r=o.map(a=>_(a.def,n)),s=t.rowModel.rows();e:for(let a=0;a<s.length;a++)if(!s[a].kind){for(let l=0;l<o.length;l++)if(r[l](B(o[l].def,s[a].data)).toLowerCase().includes(this.query)&&(this.lookup.set(`${a}|${o[l].id}`,this.matches.length),this.matches.push({rowIndex:a,colId:o[l].id}),this.matches.length>=Ar))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=C("div","fg-findbar",{role:"search"}),n=C("input","fg-input",{type:"search",placeholder:e.findPlaceholder,"aria-label":e.findPlaceholder});this.countEl=C("span","fg-findbar-count",{"aria-live":"polite"});let o=(r,s,a)=>{let l=C("button","fg-findbar-btn",{type:"button","aria-label":r,title:r});return l.textContent=s,l.addEventListener("click",a),l};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.gridEl.focus({preventScroll:!0})}};var $r=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((l,d)=>d===0||Math.abs(l-r[d-1]-s)<1e-9))return t();let a=r[r.length-1];return Array.from({length:e},(l,d)=>Math.round((a+s*(d+1))*1e12)/1e12)}let n=i.map(r=>r instanceof Date||typeof r=="string"&&/^\d{4}-\d{2}-\d{2}/.test(r)?se(r):null);if(n.every(Boolean)&&i.length>=2){let r=n.map(a=>Math.round(a.getTime()/$r)),s=r[1]-r[0];if(r.every((a,l)=>l===0||a-r[l-1]===s)){let a=n[n.length-1],l=i[i.length-1]instanceof Date;return Array.from({length:e},(d,c)=>{let u=new Date(a.getFullYear(),a.getMonth(),a.getDate()+s*(c+1));return l?u:ee(u)})}return t()}let o=i[i.length-1];if(typeof o=="string"&&!G(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},(l,d)=>`${r[1]}${String(a+d+1).padStart(s,"0")}`)}}return t()}function Ut(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 to(i){return jt(i," ")}function jt(i,e){if(!i)return[];let t=[],n=[],o="",r=0,s=!1,a=!0;for(;r<i.length;){let l=i[r];if(s){if(l==='"'){if(i[r+1]==='"'){o+='"',r+=2;continue}s=!1,r++;continue}o+=l,r++;continue}if(l==='"'&&a){s=!0,a=!1,r++;continue}if(l===e){n.push(o),o="",a=!0,r++;continue}if(l==="\r"||l===`
3
+ `){n.push(o),t.push(n),n=[],o="",a=!0,r+=l==="\r"&&i[r+1]===`
4
+ `?2:1;continue}o+=l,a=!1,r++}return(o!==""||n.length||!a)&&(n.push(o),t.push(n)),t}function pt(i,e,t){var n;if(G(e))return"";if(Array.isArray(e))return e.join(", ");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=ee(e))!=null?n:String(e);case"boolean":return e===!0?"TRUE":e===!1?"FALSE":String(e);default:return _(i,t)(e)}}var Fr=new Set(["true","1","y","yes","\uC608","o","on"]),Nr=new Set(["false","0","n","no","\uC544\uB2C8\uC624","x","off"]);function Or(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 eo(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 Hr(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=eo(+o[1],+o[2],+o[3]):(o=/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/.exec(t))?n=eo(+o[3],+o[1],+o[2]):/^\d{4}-\d{2}-\d{2}T/.test(t)&&(n=se(t)),n?{ok:!0,value:e instanceof Date?n:ee(n)}:{ok:!1}}function gt(i,e,t){switch(i.type){case"number":return Or(e);case"date":return Hr(e,t);case"boolean":{let n=e.trim().toLowerCase();return n?Fr.has(n)?{ok:!0,value:!0}:Nr.has(n)?{ok:!0,value:!1}:{ok:!1}:{ok:!0,value:null}}default:return{ok:!0,value:e}}}var Br=i=>i.map(e=>e!==null&&typeof e=="object"&&"value"in e?e:{value:e,label:String(e),disabled:!1}),we=i=>String(i).padStart(2,"0");function zr(i){let e=i instanceof Date?i:typeof i=="string"&&i?new Date(i):null;return!e||Number.isNaN(e.getTime())?"":`${e.getFullYear()}-${we(e.getMonth()+1)}-${we(e.getDate())}T${we(e.getHours())}:${we(e.getMinutes())}`}function Gr(i){if(i instanceof Date)return`${we(i.getHours())}:${we(i.getMinutes())}`;let e=typeof i=="string"?/(\d{1,2}):(\d{2})/.exec(i):null;return e?`${we(Number(e[1]))}:${e[2]}`:""}var mt=class{constructor(e){this.grid=e;this.cur=null;this.session=null;e.events.on("focusChange",({rowIndex:t})=>{var n;this.session&&!this.cur&&((n=this.grid.rowModel.getRow(t))==null?void 0:n.data)!==this.session.row&&this.endRow(!0)})}get rowMode(){return this.grid.options.editType==="row"}editingRow(e){var t;return((t=this.session)==null?void 0:t.id)===e}beginRow(e,t){var n;((n=this.session)==null?void 0:n.row)!==e&&(this.session&&this.endRow(!0),this.session={row:e,id:this.grid.rowModel.idOf(e),before:{...e}},this.grid.renderer.invalidate({rows:!0}),this.grid.events.emit("rowEditStart",{row:e,rowIndex:t}))}endRow(e){let t=this.session;if(!t)return;this.cur&&(e?this.commit(null):this.close(!1)),this.session=null;let{grid:n}=this,o=n.rowModel.indexOfId(t.id),r=n.columns.displayed().filter(a=>a.def.field&&!A(a.id));if(!e){let a=[];for(let l of r){let d=l.def.field;Object.is(t.row[d],t.before[d])||n.writeCell(a,t.row,d,l.id,o,t.before[d])}n.endCellTx(a)}let s=r.filter(a=>!Object.is(t.row[a.def.field],t.before[a.def.field])).map(a=>({colId:a.id,oldValue:t.before[a.def.field],newValue:t.row[a.def.field]}));n.renderer.invalidate({rows:!0}),n.events.emit("rowEditStop",{row:t.row,rowIndex:o,committed:e,changes:s})}get active(){return this.cur&&{rowIndex:this.cur.rowIndex,colId:this.cur.colId}}canEdit(e,t){if(A(t))return!1;let n=this.grid.columns.getColumn(t);if(!(n!=null&&n.def.field)||e<0||e>=this.grid.rowModel.getRowCount())return!1;let o=this.grid.rowModel.getRow(e);return!o.kind&&ae(n.def,o.data,e)}start(e,t,n){var k,L,I,b,M;if(this.cur&&this.commit(null),!this.canEdit(e,t))return!1;let{grid:o}=this;if(o.veto("beforeEdit",{row:o.rowModel.getRow(e).data,rowIndex:e,colId:t}))return!1;let{renderer:r}=o,s=o.columns.getColumn(t),a=s.def,l=o.rowModel.getRow(e).data,d=l[a.field];this.rowMode&&this.beginRow(l,e),o.setFocus(e,t),r.ensureVisible(e,t),r.render();let c=r.root.querySelector(`.fg-row[data-row="${e}"] .fg-cell[data-col="${CSS.escape(t)}"]`),u=r.root.getBoundingClientRect(),h=c==null?void 0:c.getBoundingClientRect(),f=C("div","fg-editor");f.style.left=`${((k=h==null?void 0:h.left)!=null?k:u.left)-u.left}px`,f.style.top=`${((L=h==null?void 0:h.top)!=null?L:u.top)-u.top}px`,f.style.width=`${(h==null?void 0:h.width)||s.width}px`,f.style.height=`${(h==null?void 0:h.height)||r.opts.rowHeight}px`;let g,x,y=()=>{},p=a.editor;if(typeof p=="function"){let S=p({value:d,row:l,column:a,initialText:n});g=S.el,x=()=>({value:S.getValue()}),y=()=>{var E;return(E=S.destroy)==null?void 0:E.call(S)},f.append(g),queueMicrotask(()=>{var E;return(E=S.focus)==null?void 0:E.call(S)})}else if((p==null?void 0:p.type)==="select"){let S=Br(typeof p.options=="function"?p.options(l):p.options),E=C("select","fg-editor-control");S.forEach((T,D)=>{var N;let P=C("option");P.value=String(D),P.textContent=(N=T.label)!=null?N:String(T.value),P.disabled=!!T.disabled,E.append(P)}),E.selectedIndex=Math.max(0,S.findIndex(T=>Object.is(T.value,d))),g=E,x=()=>{var T,D;return{value:(D=(T=S[E.selectedIndex])==null?void 0:T.value)!=null?D:null}},f.append(E)}else if((p==null?void 0:p.type)==="time"||(p==null?void 0:p.type)==="datetime"||!p&&a.type==="date"&&a.format==="datetime"){let S=(p==null?void 0:p.type)==="time",E=C("input","fg-editor-control",{type:S?"time":"datetime-local"});E.value=S?Gr(d):zr(d),g=E,x=()=>E.value?S?{value:E.value}:{value:d instanceof Date?new Date(E.value):E.value}:{value:null},f.append(E)}else{let E=(p==null?void 0:p.type)==="textarea"?C("textarea","fg-editor-control"):C("input","fg-editor-control");E instanceof HTMLInputElement&&(E.type=a.type==="date"&&n===void 0?"date":"text",a.type==="number"&&(E.inputMode="decimal"));let T=a.type==="date"?(I=ee(d))!=null?I:"":G(d)?"":String(d);E.value=n!=null?n:T,g=E,x=()=>({text:E.value}),f.append(E)}g.setAttribute("aria-label",(M=(b=a.header)!=null?b:a.field)!=null?M:t);let v=C("div","fg-editor-msg",{role:"alert"});f.append(v);let m=S=>{if(S.stopPropagation(),S.key==="Escape")S.preventDefault(),this.cancel();else if(S.key==="Enter"){if(g instanceof HTMLTextAreaElement&&!(S.ctrlKey||S.metaKey))return;S.preventDefault(),this.commit(S.shiftKey?"up":"down")}else S.key==="Tab"&&(S.preventDefault(),this.commit(S.shiftKey?"left":"right"))},w=S=>{var E;((E=this.cur)==null?void 0:E.wrap)===f&&!f.contains(S.relatedTarget)&&this.commit(null)},R=()=>this.commit(null);return f.addEventListener("keydown",m),f.addEventListener("focusout",w),r.scroller.addEventListener("scroll",R,{passive:!0}),r.root.append(f),this.cur={rowIndex:e,colId:t,row:l,def:a,wrap:f,read:x,dispose:()=>{f.removeEventListener("keydown",m),f.removeEventListener("focusout",w),r.scroller.removeEventListener("scroll",R),y(),f.remove()}},typeof p!="function"&&(g.focus(),n===void 0&&g instanceof HTMLInputElement&&g.type==="text"&&g.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(),l;if("text"in a&&t.def.formulas&&Ce(a.text.trim()))l=a.text.trim();else if("text"in a){let c=gt(t.def,a.text,s);if(!c.ok)return this.fail(a.text,o.invalidValue);l=c.value}else l=a.value;let d=n.cellError(t.def,t.row,l);return d!==null?this.fail(l,d):(this.close(!0),n.applyEdit(t.rowIndex,t.colId,l),this.session&&(e==="down"||e==="up")&&this.endRow(!0),this.move(t.rowIndex,t.colId,e),!0)}cancel(){this.close(!1),this.session&&this.endRow(!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.gridEl.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 c=Math.max(0,Math.min(r-1,e+(n==="down"?1:-1)));o.setFocus(c,t),o.renderer.ensureVisible(c,t);return}let s=o.columns.displayed().filter(c=>this.canEdit(e,c.id)||c.def.editable);if(!s.length)return;let a=n==="right"?1:-1,l=e,d=s.findIndex(c=>c.id===t)+a;d>=s.length&&(d=0,this.session||l++),d<0&&(d=s.length-1,this.session||l--),!(l<0||l>=r)&&this.start(l,s[d].id)}};var vt=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 no=(i,e)=>i instanceof Date&&e instanceof Date?i.getTime()===e.getTime():Object.is(i,e),wt=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&&!no(n[t],e[t])}diff(e,t){let n=this.originals.get(e);return n?t.filter(o=>!no(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 Ae(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 oo(i,e,t){return e>=i.r1&&e<=i.r2&&t>=i.c1&&t<=i.c2}var Vr=5;function ro(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 qr(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"),ro(s=>{i.columns.setWidth(t,r+(s.clientX-o)*(i.renderer.rtl?-1:1)),i.layoutChanged()},()=>{var a,l;i.renderer.root.classList.remove("fg-resizing");let s=(l=(a=i.columns.getColumn(t))==null?void 0:a.width)!=null?l:r;s!==r&&i.events.emit("columnResize",{colId:t,width:s})})}function Wr(i,e){let t=i.columns.getNode(e);return!!i.groupPanel&&!!t&&!t.children&&!i.options.treeData&&!i.getGroupBy().includes(e)}function Kr(i,e,t,n){var l,d;let o=new Set(i.columns.siblings(e).map(c=>c.id).filter(c=>c!==e&&!A(c))),r=[...n.querySelectorAll(".fg-header-cell")].filter(c=>o.has(c.dataset.col)).map(c=>({id:c.dataset.col,el:c})),s=C("div",`fg-drag-ghost fg-theme-${i.store.state.theme}`);s.textContent=(d=(l=t.querySelector(".fg-header-label"))==null?void 0:l.textContent)!=null?d:"",i.applyFontTo(s),oe(i.renderer.root).append(s);let a=C("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 Ur(i,e,t,n,o){var c,u;t.ghost.style.transform=`translate(${n+12}px, ${o+8}px)`,t.overPanel=Wr(i,e)&&!!((c=i.groupPanel)!=null&&c.contains(n,o)),(u=i.groupPanel)==null||u.highlight(t.overPanel),t.marker.hidden=t.overPanel;let r=0;for(let h of t.sibs){let f=h.el.getBoundingClientRect();(i.renderer.rtl?n<f.left+f.width/2:n>f.left+f.width/2)&&r++}t.target=r;let s=i.renderer.root.getBoundingClientRect().left,a=h=>i.renderer.rtl?h.getBoundingClientRect().right:h.getBoundingClientRect().left,l=h=>i.renderer.rtl?h.getBoundingClientRect().left:h.getBoundingClientRect().right,d=r<t.sibs.length?a(t.sibs[r].el):t.sibs.length?l(t.sibs[t.sibs.length-1].el):a(t.cell);t.marker.style.left=`${d-s-1}px`}function jr(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(l=>l.id===e),r=n.map(l=>l.id).filter(l=>l!==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(A).length,s),s!==o&&(i.columns.move(e,s),i.layoutChanged(),i.events.emit("columnMove",{colId:e,toIndex:s}))}function _r(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;ro(l=>{if(!a){if(Math.abs(l.clientX-s)<Vr)return;a=Kr(i,t,n,r)}Ur(i,t,a,l.clientX,l.clientY)},l=>{a?jr(i,t,a):!o.children&&ve(o.def)&&i.toggleSort(t,l.shiftKey||l.ctrlKey||l.metaKey)})}function io(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||A(a)||r.closest(".fg-menu-btn")||r.closest("button, a, input, select, textarea, [data-fg-no-sort]")&&r.closest(".fg-header-label")||(o.preventDefault(),r.closest(".fg-resize")?qr(i,o,a):_r(i,o,a,s))},n=o=>{var a;let r=o.target,s=r.closest(".fg-menu-btn");if(s){let l=(a=s.closest(".fg-header-cell"))==null?void 0:a.dataset.col;l&&i.menu.toggle(l,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 Xr=/^[=+\-@\t\r]/;function so(i,e=","){let t=n=>{let o=n.value;return n.text&&Xr.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 _t(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 yt(i,e=_t(i)){return jt(i.replace(/^\uFEFF/,""),e)}var Yr=(()=>{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 Zr(i){let e=4294967295;for(let t=0;t<i.length;t++)e=Yr[(e^i[t])&255]^e>>>8;return(e^4294967295)>>>0}var ao=new TextEncoder;function lo(i){let e=i.map(c=>{let u=ao.encode(c.name),h=typeof c.data=="string"?ao.encode(c.data):c.data;return{name:u,data:h,crc:Zr(h),offset:0}}),t=e.reduce((c,u)=>c+30+u.name.length+u.data.length,0),n=e.reduce((c,u)=>c+46+u.name.length,0),o=new Uint8Array(t+n+22),r=new DataView(o.buffer),s=0,a=0,l=33;for(let c of e)c.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,l,!0),r.setUint32(s+14,c.crc,!0),r.setUint32(s+18,c.data.length,!0),r.setUint32(s+22,c.data.length,!0),r.setUint16(s+26,c.name.length,!0),r.setUint16(s+28,0,!0),o.set(c.name,s+30),o.set(c.data,s+30+c.name.length),s+=30+c.name.length+c.data.length;let d=s;for(let c 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,l,!0),r.setUint32(s+16,c.crc,!0),r.setUint32(s+20,c.data.length,!0),r.setUint32(s+24,c.data.length,!0),r.setUint16(s+28,c.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,c.offset,!0),o.set(c.name,s+46),s+=46+c.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-d,!0),r.setUint32(s+16,d,!0),o}var bt=i=>i.length>4&&i[0]===80&&i[1]===75&&i[2]===3&&i[3]===4;async function Jr(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 co(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 l=e.getUint16(o+10,!0),d=e.getUint32(o+20,!0),c=e.getUint16(o+28,!0),u=e.getUint16(o+30,!0),h=e.getUint16(o+32,!0),f=e.getUint32(o+42,!0),g=r.decode(i.subarray(o+46,o+46+c)),x=e.getUint16(f+26,!0),y=e.getUint16(f+28,!0),p=f+30+x+y,v=i.subarray(p,p+d);if(l===0)s.set(g,v);else if(l===8)s.set(g,await Jr(v));else throw new Error(`Unsupported zip compression ${l}`);o+=46+c+u+h}return s}function Xt(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 uo=Date.UTC(1899,11,30),ho=864e5;function Qr(i){return(Date.UTC(i.getFullYear(),i.getMonth(),i.getDate(),i.getHours(),i.getMinutes(),i.getSeconds(),i.getMilliseconds())-uo)/ho}function ei(i){let e=new Date(Math.round(i*ho)+uo);return new Date(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds())}var ti=/[\u0000-\u0008\u000b\u000c\u000e-\u001f￾￿]/g,xt=i=>i.replace(ti,"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;"),Me=`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
6
+ `,Yt="http://schemas.openxmlformats.org/spreadsheetml/2006/main",Ee="http://schemas.openxmlformats.org/officeDocument/2006/relationships";function ni(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 ye(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]]),r=['<font><sz val="11"/><name val="Calibri"/></font>','<font><b/><sz val="11"/><name val="Calibri"/></font>'],s=new Map([["0|",0],["1|",1]]),a=['<fill><patternFill patternType="none"/></fill>','<fill><patternFill patternType="gray125"/></fill>','<fill><patternFill patternType="solid"><fgColor rgb="FFF2F4F7"/><bgColor indexed="64"/></patternFill></fill>'],l=new Map([["FFF2F4F7",2]]),d=p=>p&&/^[0-9a-f]{8}$/i.test(p)?p.toUpperCase():p&&/^[0-9a-f]{6}$/i.test(p)?`FF${p.toUpperCase()}`:"",c=(p,v)=>{let m=`${p?1:0}|${v}`,w=s.get(m);return w===void 0&&(w=r.length,r.push(`<font>${p?"<b/>":""}<sz val="11"/>${v?`<color rgb="${v}"/>`:""}<name val="Calibri"/></font>`),s.set(m,w)),w},u=p=>{if(!p)return 0;let v=l.get(p);return v===void 0&&(v=a.length,a.push(`<fill><patternFill patternType="solid"><fgColor rgb="${p}"/><bgColor indexed="64"/></patternFill></fill>`),l.set(p,v)),v},h=(p,v)=>{let m=d(v.color),w=v.header?"FFF2F4F7":d(v.fill),R=!!(v.bold||v.header),k=v.align==="left"||v.align==="center"||v.align==="right"?v.align:"",L=`${p}|${R?1:""}|${m}|${w}|${k}`,I=o.get(L);if(I!==void 0)return I;let b=e.get(p);b===void 0&&(b=164+t.length,t.push(p),e.set(p,b));let M=c(R,m),S=u(w),E=`numFmtId="${b}" fontId="${M}" fillId="${S}" borderId="0" xfId="0"`+(b?' applyNumberFormat="1"':"")+(M?' applyFont="1"':"")+(S?' applyFill="1"':"")+(k?' applyAlignment="1"':"");return I=n.length,n.push(k?`<xf ${E}><alignment horizontal="${k}"/></xf>`:`<xf ${E}/>`),o.set(L,I),I},f=ni(i),g=i.map(p=>{var b,M,S;let v=p.rows.map((E,T)=>{let D=E.map((P,N)=>{var q;let $=P!==null&&typeof P=="object"&&!(P instanceof Date)?P:{v:P},F=`${Xt(N)}${T+1}`,O=$.v,V=(q=$.fmt)!=null?q:"General";O instanceof Date&&(Number.isNaN(O.getTime())?O=null:(V==="General"&&(V="yyyy-mm-dd"),O=Qr(O)));let z=h(V,$),W=z?` s="${z}"`:"";return O==null||O===""?W?`<c r="${F}"${W}/>`:"":typeof O=="number"?Number.isFinite(O)?`<c r="${F}"${W}><v>${O}</v></c>`:"":typeof O=="boolean"?`<c r="${F}"${W} t="b"><v>${O?1:0}</v></c>`:`<c r="${F}"${W} t="inlineStr"><is><t xml:space="preserve">${xt(String(O))}</t></is></c>`}).join("");return`<row r="${T+1}">${D}</row>`}).join(""),m=Math.max(0,...p.rows.map(E=>E.length)),w=(b=p.freezeRows)!=null?b:0,R=w?`<sheetViews><sheetView workbookViewId="0"><pane ySplit="${w}" topLeftCell="A${w+1}" activePane="bottomLeft" state="frozen"/></sheetView></sheetViews>`:'<sheetViews><sheetView workbookViewId="0"/></sheetViews>',k=(M=p.widths)!=null&&M.length?`<cols>${p.widths.map((E,T)=>`<col min="${T+1}" max="${T+1}" width="${Math.max(4,Math.min(120,E)).toFixed(1)}" customWidth="1"/>`).join("")}</cols>`:"",L=p.autoFilter&&m&&w&&p.rows.length>=w?`<autoFilter ref="A${w}:${Xt(m-1)}${p.rows.length}"/>`:"",I=(S=p.merges)!=null&&S.length?`<mergeCells count="${p.merges.length}">${p.merges.map(E=>`<mergeCell ref="${E}"/>`).join("")}</mergeCells>`:"";return`${Me}<worksheet xmlns="${Yt}" xmlns:r="${Ee}">${R}<sheetFormatPr defaultRowHeight="15"/>${k}<sheetData>${v}</sheetData>${L}${I}</worksheet>`}),x=`${Me}<styleSheet xmlns="${Yt}">`+(t.length?`<numFmts count="${t.length}">${t.map((p,v)=>`<numFmt numFmtId="${164+v}" formatCode="${xt(p)}"/>`).join("")}</numFmts>`:"")+`<fonts count="${r.length}">${r.join("")}</fonts><fills count="${a.length}">${a.join("")}</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>`,y=[{name:"[Content_Types].xml",data:`${Me}<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((p,v)=>`<Override PartName="/xl/worksheets/sheet${v+1}.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/>`).join("")+"</Types>"},{name:"_rels/.rels",data:`${Me}<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="${Ee}/officeDocument" Target="xl/workbook.xml"/></Relationships>`},{name:"xl/workbook.xml",data:`${Me}<workbook xmlns="${Yt}" xmlns:r="${Ee}"><sheets>`+f.map((p,v)=>`<sheet name="${xt(p)}" sheetId="${v+1}" r:id="rId${v+1}"/>`).join("")+"</sheets>"+(i.some(p=>p.autoFilter&&p.freezeRows)?`<definedNames>${i.map((p,v)=>{let m=Math.max(0,...p.rows.map(w=>w.length));return p.autoFilter&&p.freezeRows&&m?`<definedName name="_xlnm._FilterDatabase" localSheetId="${v}" hidden="1">'${xt(f[v].replace(/'/g,"''"))}'!$A$${p.freezeRows}:$${Xt(m-1)}$${p.rows.length}</definedName>`:""}).join("")}</definedNames>`:"")+"</workbook>"},{name:"xl/_rels/workbook.xml.rels",data:`${Me}<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">`+i.map((p,v)=>`<Relationship Id="rId${v+1}" Type="${Ee}/worksheet" Target="worksheets/sheet${v+1}.xml"/>`).join("")+`<Relationship Id="rId${i.length+1}" Type="${Ee}/styles" Target="styles.xml"/></Relationships>`},{name:"xl/styles.xml",data:x},...g.map((p,v)=>({name:`xl/worksheets/sheet${v+1}.xml`,data:p}))];return lo(y)}var oi=new Set([14,15,16,17,18,19,20,21,22,27,30,36,45,46,47,50,57]);function ri(i){let e=i.replace(/"[^"]*"/g,"").replace(/\[[^\]]*\]/g,"").replace(/\\./g,"");return/[dmyhs]/i.test(e)&&!/^[#0.,%\s]*$/.test(e)}function $e(i){return i?new DOMParser().parseFromString(new TextDecoder().decode(i),"application/xml"):null}var de=(i,e)=>[...i.getElementsByTagNameNS("*",e)];function ii(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 Ct(i){var f,g,x,y,p,v,m,w,R;let e=i instanceof Uint8Array?i:new Uint8Array(i);if(!bt(e))throw new Error("Not an xlsx file");let t=await co(e),n=$e(t.get("xl/workbook.xml"));if(!n)throw new Error("xlsx has no workbook");let o=$e(t.get("xl/_rels/workbook.xml.rels")),r=new Map(o?de(o,"Relationship").map(k=>{var L,I;return[(L=k.getAttribute("Id"))!=null?L:"",(I=k.getAttribute("Target"))!=null?I:""]}):[]),s=$e(t.get("xl/sharedStrings.xml")),a=s?de(s,"si").map(k=>de(k,"t").map(L=>{var I;return(I=L.textContent)!=null?I:""}).join("")):[],l=$e(t.get("xl/styles.xml")),d=new Map(l?de(l,"numFmt").map(k=>{var L;return[Number(k.getAttribute("numFmtId")),(L=k.getAttribute("formatCode"))!=null?L:""]}):[]),c=l?de(l,"cellXfs")[0]:void 0,u=(c?[...c.children].filter(k=>k.localName==="xf"):[]).map(k=>{var I;let L=Number((I=k.getAttribute("numFmtId"))!=null?I:0);return oi.has(L)||d.has(L)&&ri(d.get(L))}),h=[];for(let k of de(n,"sheet")){let L=(g=(f=k.getAttribute("r:id"))!=null?f:k.getAttributeNS(Ee,"id"))!=null?g:"",I=(x=r.get(L))!=null?x:"";I=I.startsWith("/")?I.slice(1):`xl/${I}`;let b=$e(t.get(I)),M=[];if(b){for(let S of de(b,"row")){let E=Number((y=S.getAttribute("r"))!=null?y:M.length+1)-1,T=[],D=0;for(let P of[...S.children].filter(N=>N.localName==="c")){let N=P.getAttribute("r"),$=N?ii(N):D;D=$+1;let F=P.getAttribute("t"),O=(v=(p=de(P,"v")[0])==null?void 0:p.textContent)!=null?v:null,V=null;if(F==="s")V=O===null?null:(m=a[Number(O)])!=null?m:"";else if(F==="inlineStr")V=de(P,"t").map(z=>{var W;return(W=z.textContent)!=null?W:""}).join("");else if(F==="b")V=O==="1";else if(F==="str"||F==="e")V=O;else if(O!==null&&O!==""){let z=Number(O);V=u[Number((w=P.getAttribute("s"))!=null?w:0)]?ei(z):z}T[$]=V}for(let P=0;P<T.length;P++)T[P]===void 0&&(T[P]=null);M[E]=T}for(let S=0;S<M.length;S++)M[S]||(M[S]=[])}h.push({name:(R=k.getAttribute("name"))!=null?R:`Sheet${h.length+1}`,rows:M})}return h}function Zt(i,e){return Array.isArray(e)?e.flatMap(t=>{var o,r;let n=i.columns.getNode(t);return!n||n.children||A(t)?(H(`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=>!A(t.id)).map(t=>({id:t.id,def:t.def,node:t.node,width:t.width}))}function Jt(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 Ne=(i,e)=>{var t,n;return(n=(t=i.header)!=null?t:i.field)!=null?n:e},Fe=i=>String(i!=null?i:"").replace(/[&<>"]/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[e]);function Qt(i,e={}){var u,h;let t=Zt(i,e.columns),n=i.store.state.locale.code,o=t.map(f=>_(f.def,n)),r=t.map(f=>{let g=[];for(let x=f.node;x;x=x.parent)g.unshift(x);return g}),s=Math.max(1,...r.map(f=>f.length)),a=[];for(let f=0;f<s;f++){let g="";for(let x=0;x<t.length;x++){let y=r[x],p=y.length-1;if(f<p){let v=y[f];if(x>0&&r[x-1][f]===v)continue;let m=1;for(;x+m<t.length&&r[x+m][f]===v;)m++;g+=`<th colspan="${m}">${Fe(Ne(v.def,v.id))}</th>`}else f===p&&(g+=`<th colspan="1" rowspan="${s-f}">${Fe(Ne(t[x].def,t[x].id))}</th>`)}a.push(`<tr>${g}</tr>`)}let l=f=>{var g;return(g=f.align)!=null?g:f.type==="number"?"right":f.type==="boolean"?"center":"left"},d=Jt(i,e.rows).map(f=>`<tr>${t.map((g,x)=>{let y=B(g.def,f);return`<td style="text-align:${l(g.def)}">${Fe(G(y)?"":o[x](y))}</td>`}).join("")}</tr>`).join(""),c=Fe((h=(u=e.title)!=null?u:document.title)!=null?h:"");return`<!doctype html><html lang="${Fe(n)}"><head><meta charset="utf-8"><title>${c}</title><style>
7
+ @page { size: auto; margin: 12mm; }
8
+ body { font: 11px/1.4 system-ui, 'Pretendard', 'Malgun Gothic', sans-serif; color: #111; margin: 0; }
9
+ h1 { font-size: 15px; margin: 0 0 8px; }
10
+ table { border-collapse: collapse; width: 100%; }
11
+ th, td { border: 1px solid #999; padding: 3px 6px; }
12
+ th { background: #eee; font-weight: 600; }
13
+ thead { display: table-header-group; }
14
+ tr { page-break-inside: avoid; }
15
+ </style></head><body>${e.title?`<h1>${c}</h1>`:""}<table><thead>${e.headers===!1?"":a.join("")}</thead><tbody>${d}</tbody></table></body></html>`}function fo(i){if(typeof document=="undefined")return;let e=document.createElement("iframe");e.style.cssText="position:fixed;right:0;bottom:0;width:0;height:0;border:0",document.body.append(e);let t=e.contentDocument;if(!t||!e.contentWindow){e.remove(),H("printing is not supported in this environment");return}t.open(),t.write(i),t.close();let n=e.contentWindow,o=()=>setTimeout(()=>e.remove(),1e3);n.addEventListener("afterprint",o),setTimeout(()=>{try{n.focus(),n.print()}catch{H("printing is not supported in this environment")}o()},50)}function en(i,e={}){let t=Zt(i,e.columns),n=i.store.state.locale.code,o=typeof e.separator=="string"&&e.separator.length===1?e.separator:",",r=Jt(i,e.rows).map(s=>t.map(a=>{let l=B(a.def,s),d=a.def.type;return{value:pt(a.def,l,n),text:!(d==="number"||d==="date"||d==="boolean")||typeof l=="string"}}));return e.headers!==!1&&r.unshift(t.map(s=>({value:Ne(s.def,s.id),text:!0}))),so(r,o)}function si(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 Rt(i){let e=/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(i.trim());if(e)return`FF${(e[1].length===3?[...e[1]].map(r=>r+r).join(""):e[1]).toUpperCase()}`;let t=/^rgba?\(\s*(\d+)[\s,]+(\d+)[\s,]+(\d+)(?:[\s,/]+([\d.]+%?))?\s*\)$/i.exec(i.trim());return!t||!((t[4]===void 0?1:t[4].endsWith("%")?parseFloat(t[4])/100:parseFloat(t[4]))>0)?"":`FF${[t[1],t[2],t[3]].map(o=>Math.min(255,Number(o)).toString(16).padStart(2,"0")).join("").toUpperCase()}`}function ai(i){let e=i.renderer.root;if(typeof getComputedStyle!="function"||!e.isConnected)return{of:()=>({}),dispose:()=>{}};let t=document.createElement("div");t.className="fg-row",t.style.cssText="position:absolute;left:-9999px;top:0;visibility:hidden;pointer-events:none";let n=document.createElement("div");t.append(n),e.append(t);let o=a=>{n.className=a?`fg-cell ${a}`:"fg-cell";let l=getComputedStyle(n),d=l.fontWeight;return{color:l.color,fill:l.backgroundColor,bold:d==="bold"||Number(d)>=600}},r=o(""),s=new Map;return{of(a){let l=s.get(a);if(!l){let d=o(a);l={},d.color!==r.color&&Rt(d.color)&&(l.color=Rt(d.color)),d.fill!==r.fill&&Rt(d.fill)&&(l.fill=Rt(d.fill)),d.bold&&!r.bold&&(l.bold=!0),s.set(a,l)}return l},dispose:()=>t.remove()}}function tn(i,e={}){return ye([nn(i,e)])}function nn(i,e={}){var y;let t=Zt(i,e.columns),n=i.store.state.locale.code,o=[],r=[],s=0;if(e.headers!==!1){let p=t.map(m=>{let w=[];for(let R=m.node;R;R=R.parent)w.unshift(R);return w});s=Math.max(1,...p.map(m=>m.length));let v=m=>{let w="";for(let R=m+1;R>0;R=Math.floor((R-1)/26))w=String.fromCharCode(65+(R-1)%26)+w;return w};for(let m=0;m<s;m++){let w=[];for(let R=0;R<t.length;R++){let k=p[R],L=k.length-1;if(m<L){let I=k[m],b=R>0?p[R-1][m]:null;if(w.push({v:b===I?null:Ne(I.def,I.id),header:!0}),b!==I){let M=R;for(;M+1<t.length&&p[M+1][m]===I;)M++;M>R&&r.push(`${v(R)}${m+1}:${v(M)}${m+1}`)}}else m===L?(w.push({v:Ne(t[R].def,t[R].id),header:!0}),s-1>m&&r.push(`${v(R)}${m+1}:${v(R)}${s}`)):w.push({v:null,header:!0})}o.push(w)}}let a=t.map(p=>si(p.def)),l=t.map(p=>_(p.def,n)),d=Jt(i,e.rows),c=e.styles!==!1,u=c&&t.some(p=>p.def.cellClass)?ai(i):null,h=(p,v,m)=>{var R;if(G(m))return null;let w=(R=a[v])!=null?R:void 0;switch(p.def.type){case"number":{let k=typeof m=="number"?m:Number(m);return Number.isFinite(k)?{v:k,fmt:w}:String(m)}case"date":{let k=se(m);return k?{v:k,fmt:w}:String(m)}case"boolean":return typeof m=="boolean"?m:String(m);default:return l[v](m)}};try{d.forEach((p,v)=>{o.push(t.map((m,w)=>{let R=B(m.def,p),k=h(m,w,R);if(!c)return k;let L=m.def.align?{align:m.def.align}:{};if(u&&m.def.cellClass){let I;try{I=typeof m.def.cellClass=="function"?m.def.cellClass({value:R,formatted:l[w](R),row:p,rowIndex:v,column:m.def}):m.def.cellClass}catch{I=void 0}I&&(L={...L,...u.of(I)})}return Object.keys(L).length?k!==null&&typeof k=="object"&&!(k instanceof Date)?{...k,...L}:{v:k,...L}:k}))})}finally{u==null||u.dispose()}let f=new Set,g=p=>{let v="";for(let m=p+1;m>0;m=Math.floor((m-1)/26))v=String.fromCharCode(65+(m-1)%26)+v;return v},x=(p,v,m,w)=>{for(let R=p;R<=m;R++)for(let k=v;k<=w;k++)if(f.has(`${R},${k}`))return;for(let R=p;R<=m;R++)for(let k=v;k<=w;k++)f.add(`${R},${k}`);r.push(`${g(v)}${s+p+1}:${g(w)}${s+m+1}`)};return d.forEach((p,v)=>t.forEach((m,w)=>{let R=m.def.colSpan?Ie(m.def.colSpan,m.def,p,v,t.length-w):1;R>1&&x(v,w,v,w+R-1)})),t.forEach((p,v)=>{if(!p.def.merge&&!p.def.rowSpan)return;let m=et(d,p.def);for(let w=0;w<d.length;w++)m.start[w]===w&&m.end[w]>w&&x(w,v,m.end[w],v)}),{name:(y=e.sheetName)!=null?y:"Sheet1",rows:o,widths:t.map(p=>Math.round(p.width/7)),merges:r,freezeRows:s,autoFilter:s>0}}function Oe(i,e,t){if(typeof URL=="undefined"||typeof URL.createObjectURL!="function"||typeof document=="undefined"){H("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 St=i=>String(i!=null?i:"").trim().toLowerCase();function li(i){var e;return i==null?"":i instanceof Date?i.getHours()||i.getMinutes()||i.getSeconds()?i.toISOString():(e=ee(i))!=null?e:"":String(i)}async function po(i,e,t={}){var x;let n=e instanceof Uint8Array?e:new Uint8Array(e instanceof ArrayBuffer?e:await e.arrayBuffer()),o;if(bt(n)){let y=await Ct(n),p=typeof t.sheet=="string"?y.find(v=>v.name===t.sheet):y[typeof t.sheet=="number"?t.sheet:0];if(!p)throw new Error(`Sheet ${String(t.sheet)} not found`);o=p.rows}else{let y=new TextDecoder().decode(n);o=yt(y,_t(y))}if(!o.length)return{rows:[],skipped:0};let r=[],s=y=>y.forEach(p=>p.children?s(p.children):!A(p.id)&&p.def.field&&r.push(p));s(i.columns.roots());let a=y=>{var v,m;let p=St(y);return p&&(m=(v=r.find(w=>St(w.def.header)===p))!=null?v:r.find(w=>St(w.def.field)===p||St(w.id)===p))!=null?m:null},l=1,d=new Set(o[0].map(a).filter(Boolean));for(;l<Math.min(o.length,5);){let p=((x=o[l])!=null?x:[]).filter(m=>m!=null&&String(m).trim()!==""),v=p.map(a).filter(m=>m&&!d.has(m));if(!p.length||!p.every(m=>typeof m=="string")||!v.length)break;v.forEach(m=>d.add(m)),l++}let c=Math.max(...o.slice(0,l).map(y=>{var p;return(p=y==null?void 0:y.length)!=null?p:0})),u=Array.from({length:c},(y,p)=>{var v;for(let m=l-1;m>=0;m--){let w=(v=o[m])==null?void 0:v[p];if(w!=null&&String(w).trim()!=="")return a(w)}return null}),h=i.store.state.data[0],f=0,g=[];for(let y of o.slice(l)){if(!y||y.every(v=>v==null||String(v).trim()===""))continue;let p={};u.forEach((v,m)=>{if(!v)return;let w=v.def,R=li(y[m]),k=i.acceptText(w,p,R,h==null?void 0:h[w.field]);k.ok?R===""&&(k.value===null||k.value==="")||(p[w.field]=k.value):f++}),g.push(p)}return t.mode==="replace"?i.setData(g):i.addRows(g),{rows:g,skipped:f}}var di="http://www.w3.org/2000/svg";var on=["var(--fg-accent, #2563eb)","#f59e0b","#10b981","#ef4444","#8b5cf6","#06b6d4","#ec4899","#84cc16","#f97316","#64748b","#14b8a6","#a855f7"],pe=i=>on[i%on.length];function j(i,e={},t=""){let n=document.createElementNS(di,i);t&&n.setAttribute("class",t);for(let[o,r]of Object.entries(e))n.setAttribute(o,String(r));return n}function He(i,e){let t=j("title");t.textContent=e,i.append(t)}function rn(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(d=>d*s).find(d=>d>=r);n=Math.floor(n/a)*a,o=Math.ceil(o/a)*a;let l=[];for(let d=n;d<=o+a/2;d+=a)l.push(Math.round(d/a)*a);return l}function kt(i,e){var S,E;let t=new Intl.NumberFormat(e.locale,{maximumFractionDigits:2}),n=new Intl.NumberFormat(e.locale,{notation:"compact",maximumFractionDigits:1}),o=j("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,on.length),s=e.categories,a=16;if(e.title){let T=j("text",{x:320,y:22,"text-anchor":"middle"},"fg-chart-title");T.textContent=e.title,o.append(T),a=36}let l=j("g",{},"fg-chart-legend"),d=e.type==="pie"||e.type==="donut",c=d?s:e.type==="scatter"?r.slice(1).map(T=>T.name):r.map(T=>T.name),u=16;c.forEach((T,D)=>{let P=j("g",{transform:`translate(${u},350)`},"fg-chart-legend-item");P.append(j("rect",{x:0,y:-9,width:10,height:10,rx:2,fill:pe(D)}));let N=j("text",{x:14,y:0});N.textContent=T,P.append(N),l.append(P),u+=24+Math.min(140,T.length*7)});let h=308;if(e.type==="scatter"){ci(o,e,r,a,h,t,n),o.append(l),i.replaceChildren(o);return}if(d){let T=((E=(S=r[0])==null?void 0:S.values)!=null?E:[]).map(O=>O!==null&&O>0?O:0),D=T.reduce((O,V)=>O+V,0),P=640/2,N=(a+h)/2,$=Math.max(10,(h-a)/2-6),F=-Math.PI/2;T.forEach((O,V)=>{if(!O||!D)return;let z=F+O/D*Math.PI*2,W=z-F>Math.PI?1:0,q=Z=>`${P+$*Math.cos(Z)},${N+$*Math.sin(Z)}`,K=O===D?`M${P-$},${N}a${$},${$} 0 1,0 ${2*$},0a${$},${$} 0 1,0 ${-2*$},0`:`M${P},${N}L${q(F)}A${$},${$} 0 ${W} 1 ${q(z)}Z`,U=j("path",{d:K,fill:pe(V)},"fg-chart-slice");He(U,`${s[V]}: ${t.format(O)} (${Math.round(O/D*1e3)/10}%)`),o.append(U),F=z}),e.type==="donut"&&o.append(j("circle",{cx:P,cy:N,r:$*.58,fill:"var(--fg-bg, #fff)"},"fg-chart-donut-hole")),o.append(l),i.replaceChildren(o);return}let f=e.type==="stackedBar",g=0,x=0;s.forEach((T,D)=>{let P=0,N=0;for(let $ of r){let F=$.values[D];F==null||!Number.isFinite(F)||(f?F>=0?P+=F:N+=F:(x=Math.max(x,F),g=Math.min(g,F)))}f&&(x=Math.max(x,P),g=Math.min(g,N))});let y=rn(g,x),p=y[0],v=y[y.length-1],m=56,w=624,R=T=>h-(T-p)/(v-p)*(h-a),k=j("g",{},"fg-chart-axis");for(let T of y){k.append(j("line",{x1:m,x2:w,y1:R(T),y2:R(T)},T===0?"fg-chart-zero":"fg-chart-grid"));let D=j("text",{x:m-6,y:R(T)+4,"text-anchor":"end"});D.textContent=n.format(T),k.append(D)}let L=(w-m)/Math.max(1,s.length),I=Math.max(1,Math.ceil(s.length/Math.floor((w-m)/56)));s.forEach((T,D)=>{if(D%I)return;let P=j("text",{x:m+L*(D+.5),y:h+16,"text-anchor":"middle"}),N=Math.max(3,Math.min(12,Math.floor(L*I/10)));P.textContent=T.length>N?`${T.slice(0,N-1)}\u2026`:T,k.append(P)}),o.append(k);let b=j("g",{},"fg-chart-plot"),M=e.type==="combo";if(M){let T=L*.6,D=r[0];s.forEach((P,N)=>{let $=D==null?void 0:D.values[N];if($==null||!Number.isFinite($))return;let F=m+L*N+(L-T)/2,O=j("rect",{x:F,y:Math.min(R(0),R($)),width:Math.max(1,T-2),height:Math.max(.5,Math.abs(R($)-R(0))),fill:pe(0),rx:2},"fg-chart-bar");He(O,`${D.name} \xB7 ${P}: ${t.format($)}`),b.append(O)})}if(e.type==="bar"||f){let T=L*.72,D=f?T:T/Math.max(1,r.length);s.forEach((P,N)=>{let $=0,F=0;r.forEach((O,V)=>{let z=O.values[N];if(z==null||!Number.isFinite(z))return;let W=0,q=z;f&&(W=z>=0?$:F,q=W+z,z>=0?$=q:F=q);let K=m+L*N+(L-T)/2+(f?0:D*V),U=j("rect",{x:K,y:Math.min(R(W),R(q)),width:Math.max(1,D-2),height:Math.max(.5,Math.abs(R(q)-R(W))),fill:pe(V),rx:2},"fg-chart-bar");He(U,`${O.name} \xB7 ${P}: ${t.format(z)}`),b.append(U)})})}else r.forEach((T,D)=>{if(M&&D===0)return;let P=T.values.map((F,O)=>F==null||!Number.isFinite(F)?null:[m+L*(O+.5),R(F),F]),N="",$=!1;for(let F of P){if(!F){$=!1;continue}N+=`${$?"L":"M"}${F[0]},${F[1]}`,$=!0}if(e.type==="area"){let F=P.filter(O=>!!O);if(F.length){let O=`M${F[0][0]},${R(0)}${F.map(V=>`L${V[0]},${V[1]}`).join("")}L${F[F.length-1][0]},${R(0)}Z`;b.append(j("path",{d:O,fill:pe(D),"fill-opacity":.18},"fg-chart-area"))}}b.append(j("path",{d:N,fill:"none",stroke:pe(D),"stroke-width":2.2,"stroke-linejoin":"round"},"fg-chart-line")),P.forEach((F,O)=>{if(!F)return;let V=j("circle",{cx:F[0],cy:F[1],r:3.5,fill:pe(D)},"fg-chart-point");He(V,`${T.name} \xB7 ${s[O]}: ${t.format(F[2])}`),b.append(V)})});o.append(b,l),i.replaceChildren(o)}function ci(i,e,t,n,o,r,s){var R,k,L,I;let a=(k=(R=t[0])==null?void 0:R.values)!=null?k:[],l=t.slice(1),d=b=>b!=null&&Number.isFinite(b),c=a.filter(d),u=l.flatMap(b=>b.values.filter(d));if(!c.length||!u.length)return;let h=rn(Math.min(...c),Math.max(...c)),f=rn(Math.min(...u),Math.max(...u)),g=56,x=624,y=b=>g+(b-h[0])/(h[h.length-1]-h[0])*(x-g),p=b=>o-(b-f[0])/(f[f.length-1]-f[0])*(o-n),v=j("g",{},"fg-chart-axis");for(let b of f){v.append(j("line",{x1:g,x2:x,y1:p(b),y2:p(b)},b===0?"fg-chart-zero":"fg-chart-grid"));let M=j("text",{x:g-6,y:p(b)+4,"text-anchor":"end"});M.textContent=s.format(b),v.append(M)}h.forEach((b,M)=>{let S=M===0?"start":M===h.length-1?"end":"middle",E=j("text",{x:y(b),y:o+16,"text-anchor":S});E.textContent=s.format(b),v.append(E)});let m=j("text",{x,y:o+32,"text-anchor":"end"},"fg-chart-axis-name");m.textContent=`${(I=(L=t[0])==null?void 0:L.name)!=null?I:""} \u2192`,v.append(m),i.append(v);let w=j("g",{},"fg-chart-plot");a.forEach((b,M)=>{d(b)&&l.forEach((S,E)=>{var P;let T=S.values[M];if(!d(T))return;let D=j("circle",{cx:y(b),cy:p(T),r:4,fill:pe(E),"fill-opacity":.8},"fg-chart-point");He(D,`${(P=e.categories[M])!=null?P:""}: ${t[0].name} ${r.format(b)}, ${S.name} ${r.format(T)}`),w.append(D)})}),i.append(w)}var ui=12,go=500,sn=["bar","stackedBar","line","area","combo","pie","donut","scatter"],Mt=class{constructor(e){this.grid=e;this.handles=new Set}create(e={}){var x,y;let{grid:t}=this,n=sn.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 p=t.columns.getColumn(r.start.colId),v=t.columns.getColumn(r.end.colId);if(p&&v){let m=Ae({start:{rowIndex:r.start.rowIndex,colIndex:p.index},end:{rowIndex:r.end.rowIndex,colIndex:v.index}}),w=[];for(let R=m.r1;R<=m.r2&&w.length<go;R++){let k=t.rowModel.getRow(R);k&&!k.kind&&w.push(k.data)}s={rows:w,colIds:t.columns.displayed().slice(m.c1,m.c2+1).filter(R=>!A(R.id)).map(R=>R.id)}}}let a=()=>{var I;let p=s?s.rows:t.rowModel.dataRows().slice(0,go).map(b=>b.data),v=(s?s.colIds.map(b=>t.columns.getColumn(b)):t.columns.displayed().filter(b=>!A(b.id))).filter(b=>!!b),m=v[0]&&v[0].def.type!=="number"?v[0]:s?null:(I=v.find(b=>b.def.type!=="number"))!=null?I:null,w=b=>!!b.node.parent&&b.node.parent.id==="pivotgroup|total",R=v.filter(b=>b!==m&&b.def.type==="number"&&(s||!w(b))).slice(0,ui),k=b=>{var S,E,T;let M=[];for(let D=b.node.parent;D;D=D.parent)M.unshift((S=D.def.header)!=null?S:D.id);return M.push((T=(E=b.def.header)!=null?E:b.def.field)!=null?T:b.id),M.join(" \xB7 ")},L=m?_(m.def,o().code):null;return{categories:p.map((b,M)=>m&&L?L(B(m.def,b)):String(M+1)),series:R.map(b=>({name:k(b),values:p.map(M=>{let S=B(b.def,M),E=typeof S=="number"?S:S==null||S===""?NaN:Number(S);return Number.isFinite(E)?E:null})}))}},l=C("div","fg-chart-body"),d=null,c=()=>kt(l,{type:n,title:e.title,locale:o().code,...a()}),u=p=>({bar:o().chartBar,stackedBar:o().chartStacked,line:o().chartLine,area:o().chartArea,pie:o().chartPie,donut:o().chartDonut,combo:o().chartCombo,scatter:o().chartScatter})[p],h=()=>d==null?void 0:d.querySelectorAll(".fg-chart-type").forEach(p=>p.setAttribute("aria-pressed",String(p.dataset.type===n)));if(e.container)e.container.append(l);else{d=C("div","fg-chart-panel",{role:"dialog","aria-label":(y=e.title)!=null?y:u(n)});let p=C("div","fg-chart-head");for(let m of sn){let w=C("button","fg-chart-type",{type:"button",title:u(m)});w.dataset.type=m,w.textContent=u(m),w.addEventListener("click",()=>g.setType(m)),p.append(w)}let v=C("button","fg-chooser-close",{type:"button","aria-label":o().close});v.textContent="\xD7",v.addEventListener("click",()=>g.destroy()),p.append(C("span","fg-chart-spacer"),v),d.append(p,l),t.renderer.root.append(d)}let f=[t.events.on("cellValueChanged",()=>c()),t.events.on("rowsAdded",()=>c()),t.events.on("rowsRemoved",()=>c())];s||f.push(t.events.on("sortChange",()=>c()),t.events.on("filterChange",()=>c()));let g={el:l,setType:p=>{sn.includes(p)&&(n=p,h(),c())},update:()=>c(),destroy:()=>{f.forEach(p=>p()),(d!=null?d:l).remove(),this.handles.delete(g)}};return this.handles.add(g),h(),c(),g}destroy(){for(let e of[...this.handles])e.destroy()}};function mo(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 hi(i,e){var t,n;if(G(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=se(e))==null?void 0:t.getTime())!=null?n:null:e}function be(i,e,t){let n=G(i),o=G(e);return n||o?n===o?0:n?1:-1:mo(i,e,t)}function vo(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(l=>{let d=B(a.def,l.data);return a.def.comparator?d:hi(a.def,d)})),s=i.map((a,l)=>l);return s.sort((a,l)=>{var d;for(let c=0;c<o.length;c++){let{def:u,mul:h}=o[c],f=r[c][a],g=r[c][l],x;if(u.comparator)try{x=(Number(u.comparator(f,g,i[a].data,i[l].data))||0)*h}catch{H(`comparator of column "${(d=u.id)!=null?d:u.field}" threw; treating values as equal`),x=0}else{let y=G(f),p=G(g);x=y||p?y===p?0:y?1:-1:mo(f,g,n)*h}if(x)return x}return a-l}),s.map(a=>i[a])}var wo=new WeakMap,fi=i=>typeof i=="function"?"custom":i;function an(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 yo(i,e,t,n,o){let r=an(e,m=>!!t(m)),s=new Intl.Collator(o,{numeric:!0,sensitivity:"base"}),a=m=>t(m),l=(m,w)=>m.map(R=>J(B(a(R),w))).join(""),d=new Map;for(let m of i){let w=l(r.columns,m);d.has(w)||d.set(w,r.columns.map(R=>B(a(R),m)))}let c=[...d.entries()].sort((m,w)=>{for(let R=0;R<r.columns.length;R++){let k=be(m[1][R],w[1][R],s);if(k)return k}return 0});r.columns.length||c.splice(0,c.length,["",[]]);let u=[],h=(m,w,R)=>{var S,E;let k=r.values[w],L=a(k.colId),I=`pivot|${R}|${w}`;u.push({id:I,comboKey:m,valueIndex:w});let b=T=>m===null||l(r.columns,T)===m,M=k.aggFunc;return{id:I,field:I,header:`${(E=(S=L.header)!=null?S:L.field)!=null?E:k.colId} (${n.agg(fi(M))})`,type:"number",format:M==="count"?"integer":L.format,width:130,aggFunc:(T,D)=>{let P=D.flatMap(N=>{var $;return($=wo.get(N))!=null?$:[]}).filter(b);return P.length?Re(M,P.map(N=>B(L,N)),P):null}}},f=[],g=(m,w)=>{if(G(w))return n.blank;let R=a(m);return R.type==="number"&&!R.format?String(w):_(R,o)(w)};if(!r.columns.length)r.values.forEach((m,w)=>f.push(h("",w,0)));else{let m=(w,R,k)=>{let L=[],I=0;for(;I<w.length;){let b=w[I][1][R],M=J(b),S=I;for(;S<w.length&&J(w[S][1][R])===M;)S++;let E=w.slice(I,S),T=R===r.columns.length-1?r.values.map((D,P)=>h(E[0][0],P,k+I)):m(E,R+1,k+I);L.push({id:`pivotgroup|${R}|${k+I}`,header:g(r.columns[R],b),children:T}),I=S}return L};f.push(...m(c,0,0)),r.totals&&r.values.length&&f.push({id:"pivotgroup|total",header:n.total,children:r.values.map((w,R)=>h(null,R,"total"))})}let x=new Map;for(let m of i){let w=l(r.rows,m),R=x.get(w);R||x.set(w,R={values:r.rows.map(k=>B(a(k),m)),src:[]}),R.src.push(m)}let p=[...x.values()].sort((m,w)=>{for(let R=0;R<r.rows.length;R++){let k=be(m.values[R],w.values[R],s);if(k)return k}return 0}).map(m=>{var k;let w={};r.rows.forEach((L,I)=>{var b;w[(b=a(L).field)!=null?b:L]=m.values[I]});let R=new Map;if(r.columns.length)for(let L of m.src){let I=l(r.columns,L),b=R.get(I);b||R.set(I,b=[]),b.push(L)}for(let L of u){let I=r.values[L.valueIndex],b=L.comboKey===null||!r.columns.length?m.src:(k=R.get(L.comboKey))!=null?k:[],M=a(I.colId);w[L.id]=b.length?Re(I.aggFunc,b.map(S=>B(M,S)),b):null}return wo.set(w,m.src),w});return{columns:[...r.rows.map(m=>{var R,k,L,I;let w=a(m);return{id:m,field:(R=w.field)!=null?R:m,header:(L=(k=w.header)!=null?k:w.field)!=null?L:m,type:w.type,format:w.format,width:(I=w.width)!=null?I:140}}),...f],rows:p,groupBy:r.rows.slice(0,-1)}}var Be="1.0.0";var pi={kty:"EC",crv:"P-256",x:"sUTKkglZmk-HMKPNub8p7AeLBKesHCU8irIkw9rJlbE",y:"j0U_aKRDR7iApY9UpaD3hUemhBLZJwDv9-QiT_hUyw8"},ln="https://freegrid.app/pricing/",bo="https://freegrid.app/api/usage",gi="https://freegrid.app/api/domain-status",xo=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 mi(i,e){let t=i.toLowerCase().replace(/\.$/,"");return e.some(n=>{let o=n.toLowerCase().replace(/\.$/,""),r=o.startsWith("*."),s=r?o.slice(2):o;return s?t===s||t===`www.${s}`?!0:r&&t.endsWith(`.${s}`):!1})}var vi=i=>`${i.getFullYear()}-${String(i.getMonth()+1).padStart(2,"0")}-${String(i.getDate()).padStart(2,"0")}`;async function un(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(xo(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 l=await r.importKey("jwk",(s=t.publicKey)!=null?s:pi,{name:"ECDSA",namedCurve:"P-256"},!1,["verify"]),d=new TextEncoder().encode(`${n[0]}.${n[1]}`);if(!await r.verify({name:"ECDSA",hash:"SHA-256"},l,xo(n[2]),d))return{ok:!1,reason:"signature",info:o}}catch{return{ok:!1,reason:"signature",info:o}}return vi((a=t.now)!=null?a:new Date)>o.expires?{ok:!1,reason:"expired",info:o}:mi(e,o.domains)?{ok:!0,info:o}:{ok:!1,reason:"domain",info:o}}var dn,Co=new Map,ze=null;function ko(i){dn=i}var Ro={missing:`FreeGrid is free for personal use. Company use needs a domain license (\u20A9200,000 per domain per year): ${ln}
16
+ 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: ${ln}`,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 So(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(bo,r):typeof fetch=="function"&&fetch(bo,{method:"POST",body:r,mode:"no-cors",keepalive:!0}).catch(()=>{})}catch{}}function wi(i=dn,e=typeof location!="undefined"?location.hostname:""){if(cn(e))return Promise.resolve(!0);let t=i!=null?i:dn,n=`${t!=null?t:""}@${e}`,o=Co.get(n);return o||(t?o=un(t,e).then(r=>{if(So({version:Be,licensed:r.ok,company:r.ok?r.info.company:void 0},e),r.ok||r.reason==="unsupported")return r.ok||r.reason==="unsupported";let s=r.info?` (${r.info.domains.join(", ")}, ${r.info.expires})`:"";return console.warn(`${Ro[r.reason]}${s}
17
+ ${ln}`),!1},()=>!1):(console.info(Ro.missing),So({version:Be,licensed:!1},e),o=Promise.resolve(!1)),Co.set(n,o),o)}function yi(i=typeof location!="undefined"?location.hostname:""){var n;if(cn(i)||typeof fetch!="function")return Promise.resolve(!1);if(ze)return ze;let e=new Date().toISOString().slice(0,10),t=null;try{t=typeof localStorage!="undefined"?localStorage:null;let o=JSON.parse((n=t==null?void 0:t.getItem("freegrid:badge"))!=null?n:"null");if(o&&o.host===i&&o.day===e)return ze=Promise.resolve(o.show)}catch{}return ze=fetch(gi,{mode:"cors",credentials:"omit"}).then(o=>o.ok?o.json():{badge:!1}).then(o=>{let r=o.badge===!0;try{t==null||t.setItem("freegrid:badge",JSON.stringify({host:i,day:e,show:r}))}catch{}return r},()=>!1),ze}async function Mo(i,e=typeof location!="undefined"?location.hostname:""){return await wi(i,e)?!1:yi(e)}var Ge={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"]},Eo=["blank","notBlank"],hn=500,Et=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||A(e))return;let o=this.grid.store.state.locale,r=n.def,s=C("div",`fg-menu fg-theme-${this.grid.store.state.theme}`,{role:"dialog","aria-label":o.columnMenu});this.grid.applyFontTo(s),ve(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(y=>y.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 y=a.includes(e)?[[o.ungroup,()=>this.grid.setGroupBy(a.filter(p=>p!==e))]]:[[o.groupByThis,()=>this.grid.setGroupBy([...a,e])]];a.length&&y.push([o.expandAll,()=>this.grid.expandAll(!0)],[o.collapseAll,()=>this.grid.expandAll(!1)]),s.append(this.section(y))}let l=[[o.autosizeThis,()=>this.grid.autoSize([e])],[o.autosizeAll,()=>this.grid.autoSize()]];r.lockVisible||l.push([o.hideColumn,()=>this.grid.setColumnsVisible([e],!1)]),l.push([o.chooseColumns,()=>this.grid.chooser.open()],[o.resetColumns,()=>this.grid.resetColumns()]),s.append(this.section(l));let d=this.filterSection(e,()=>this.close());d&&s.append(d),oe(this.grid.renderer.root).append(s);let c=t.getBoundingClientRect(),u=s.offsetWidth||248;s.style.left=`${Math.max(4,Math.min(c.right-u,window.innerWidth-u-4))}px`;let h=Math.max(4,Math.min(c.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 f=y=>{fe(y,s,t)||this.close()},g=y=>{y.key==="Escape"&&(this.close(),this.grid.renderer.gridEl.focus())};document.addEventListener("pointerdown",f,!0),document.addEventListener("keydown",g,!0),this.off.push(()=>document.removeEventListener("pointerdown",f,!0),()=>document.removeEventListener("keydown",g,!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=re(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=C("div","fg-menu-section");for(let[n,o]of e){let r=C("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=C("div","fg-menu-actions"),s=C("button","fg-btn",{type:"button"});s.textContent=t.reset,s.addEventListener("click",()=>{this.grid.setFilter(e,null),o()});let a=C("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=C("div","fg-menu-title");return t.textContent=e.filter,t}conditionRow(e,t,n,o,r){var f;let s=C("div","fg-filter-cond"),a=C("select","fg-filter-op",{"aria-label":t.filter});if(o){let g=C("option");g.value="",g.textContent="\u2014",a.append(g)}for(let g of Ge[e]){let x=C("option");x.value=g,x.textContent=t.ops[g],a.append(x)}a.value=(f=n==null?void 0:n.op)!=null?f:o?"":Ge[e][0];let l=e==="text"?"text":e,d=C("input","fg-input fg-filter-value",{type:l,placeholder:t.value,"aria-label":t.value}),c=C("input","fg-input fg-filter-value-to",{type:l,placeholder:t.valueTo,"aria-label":t.valueTo});n&&(d.value=n.value!=null?String(n.value):"",c.value="valueTo"in n&&n.valueTo!=null?String(n.valueTo):"");let u=()=>{d.hidden=!a.value||Eo.includes(a.value),c.hidden=a.value!=="between"};a.addEventListener("change",u),u();for(let g of[d,c])g.addEventListener("keydown",x=>x.key==="Enter"&&r());return s.append(a,d,c),{row:s,read:()=>{let g=a.value;if(!g)return null;let x=!Eo.includes(g);if(e==="number"){let y=d.value===""?void 0:Number(d.value),p=c.value===""?void 0:Number(c.value);return!x||y!==void 0?{type:e,op:g,value:y,valueTo:p}:null}return e==="date"?!x||d.value?{type:e,op:g,value:d.value||void 0,valueTo:c.value||void 0}:null:!x||d.value?{type:e,op:g,value:d.value}:null}}}conditionFilter(e,t,n,o){var x,y;let r=this.grid.store.state.filters[e],s=(r==null?void 0:r.type)==="combined"?r.conditions:r?[r]:[],a=((x=s[0])==null?void 0:x.type)===t?s[0]:void 0,l=((y=s[1])==null?void 0:y.type)===t?s[1]:void 0,d=C("div","fg-menu-section fg-filter"),c=()=>{var R;let p=u.read(),v=h.read(),m=((R=f.querySelector("input:checked"))==null?void 0:R.value)==="or"?"or":"and",w=p&&v?{type:"combined",operator:m,conditions:[p,v]}:p!=null?p:v;this.grid.setFilter(e,w),o()},u=this.conditionRow(t,n,a,!1,c),h=this.conditionRow(t,n,l,!0,c),f=C("div","fg-filter-join",{role:"radiogroup"}),g=`fg-join-${e}-${Math.random().toString(36).slice(2,7)}`;for(let p of["and","or"]){let v=C("label"),m=C("input","",{type:"radio",name:g,value:p});m.checked=((r==null?void 0:r.type)==="combined"?r.operator:"and")===p,v.append(m,` ${n[p]}`),f.append(v)}return d.append(this.title(n),u.row,f,h.row,this.actions(e,n,c,o)),d}setFilter(e,t,n){let{grid:o}=this,r=o.columns.getNode(e).def,s=_(r,t.code),a=o.collator(),l=new Map;for(let k of o.rowModel.allNodes()){let L=B(r,k.data),I=J(L);l.has(I)||l.set(I,L)}let d=[...l.entries()].sort((k,L)=>be(k[1],L[1],a)),c=o.store.state.filters[e],u=new Set((c==null?void 0:c.type)==="set"?c.values.map(J).filter(k=>l.has(k)):l.keys()),h=(k,L)=>k===""?t.blanks:s(L),f=C("div","fg-menu-section fg-filter fg-set-filter"),g=C("input","fg-input fg-set-search",{type:"search",placeholder:t.search,"aria-label":t.search}),x=C("label","fg-set-item fg-set-all"),y=C("input","fg-checkbox",{type:"checkbox"});x.append(y,document.createTextNode(t.selectAll));let p=C("div","fg-set-list"),v=()=>{let k=g.value.trim().toLowerCase();return k?d.filter(([L,I])=>h(L,I).toLowerCase().includes(k)):d},m=()=>{let k=v(),L=k.filter(([I])=>u.has(I)).length;y.checked=L>0&&L===k.length,y.indeterminate=L>0&&L<k.length},w=()=>{let k=v();if(p.replaceChildren(...k.slice(0,hn).map(([L,I])=>{let b=C("label","fg-set-item"),M=C("input","fg-checkbox",{type:"checkbox"});return M.checked=u.has(L),M.addEventListener("change",()=>{M.checked?u.add(L):u.delete(L),m()}),b.append(M,document.createTextNode(h(L,I))),b})),k.length>hn){let L=C("div","fg-set-more");L.textContent=`\u2026 +${k.length-hn}`,p.append(L)}m()};y.addEventListener("change",()=>{for(let[k]of v())y.checked?u.add(k):u.delete(k);w()}),g.addEventListener("input",w);let R=()=>{o.setFilter(e,u.size===l.size?null:{type:"set",values:d.filter(([k])=>u.has(k)).map(([,k])=>k)}),n()};return g.addEventListener("keydown",k=>k.key==="Enter"&&R()),w(),f.append(this.title(t),g,x,p,this.actions(e,t,R,n)),f}};var Lo=new WeakMap,bi=0;function xe(i){let e=Lo.get(i);return e||Lo.set(i,e=`r${++bi}`),e}var Lt=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,f,g;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||e.advancedFilter!==this.last.advancedFilter,a=s||e.sort!==this.last.sort||t!==this.last.collator,l=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((y,p)=>({id:x?String(x(y)):xe(y),data:y,sourceIndex:p}))}s&&(this.filtered=this.filter(e),this.stats.filterRuns++),a&&(this.sorted=vo(this.filtered,e.sort,x=>this.deps.columnDef(x),t),this.stats.sortRuns++),l&&(this.full=n?this.buildDisplay(n,e.sort,t):this.sorted);let d=(f=e.page)!=null?f:null,c=(g=this.last.page)!=null?g:null;(l||(d==null?void 0:d.index)!==(c==null?void 0:c.index)||(d==null?void 0:d.size)!==(c==null?void 0:c.size))&&(this.display=d?this.full.slice(d.index*d.size,(d.index+1)*d.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)):xe(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,n,o=0,r){var u;let s=this.layoutCache;if(s&&s.rows===this.display&&s.rh===e&&s.dh===t&&s.hv===o)return s;let a=this.display.length,l=new Float64Array(a+1),d=!0,c=n&&n.size?n:null;for(let h=0;h<a;h++){let f=this.display[h],g=e;if(f.kind==="detail")g=t;else if(!f.kind){c&&(g=(u=c.get(f.id))!=null?u:e);let x=r==null?void 0:r(f.data);typeof x=="number"&&x>0&&(g=c?Math.max(g,x):x)}g!==e&&(d=!1),l[h+1]=l[h]+g}return this.layoutCache={rows:this.display,rh:e,dh:t,hv:o,offsets:l,uniform:d},this.layoutCache}filter(e){var c;let t=Object.entries(e.filters).map(([u,h])=>({def:this.deps.columnDef(u),pred:Je(h)})).filter(u=>!!u.def),n=Vn(e.quickFilter),o=n.length?this.deps.quickColumns():[],r=e.advancedFilter?Ot(e.advancedFilter,u=>this.deps.columnDef(u),B):null;if(!t.length&&!n.length&&!r)return this.nodes;let s=this.nodes.filter(u=>{for(let h of t)if(!h.pred(B(h.def,u.data)))return!1;if(r&&!r(u.data))return!1;if(n.length){let h=o.map(f=>this.deps.format(f,B(f,u.data))).join("").toLowerCase();if(!qn(n,h))return!1}return!0}),a=(c=e.display)==null?void 0:c.getParentId;if(!a)return s;let l=new Map(this.nodes.map(u=>[u.id,u])),d=new Set(s);for(let u of s){let h=a(u.data),f=new Set;for(;h!=null&&!f.has(h);){f.add(h);let g=l.get(String(h));if(!g)break;d.add(g),h=a(g.data)}}return this.nodes.filter(u=>d.has(u))}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,l,d)=>{var x;let c=r[l],u=this.deps.columnDef(c),h=new Map;for(let y of a){let p=B(u,y.data),v=G(p)?"":J(p),m=h.get(v);m||h.set(v,m={value:p,nodes:[]}),m.nodes.push(y)}let f=((x=t.find(y=>y.colId===c))==null?void 0:x.dir)==="desc"?-1:1,g=[...h.entries()].sort((y,p)=>be(y[1].value,p[1].value,n)*f);for(let[y,p]of g){let v=`${d}${c}:${y}`,m=this.isOpen(e,v,l);o.push({id:`group:${v}`,data:{},sourceIndex:-1,kind:"group",level:l,group:{key:v,colId:c,value:p.value,rows:p.nodes.map(w=>w.data),expanded:m}}),m&&(l+1<r.length?s(p.nodes,l+1,`${v}|`):this.withDetails(e,p.nodes.map(w=>({...w,level:l+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 l=e.getParentId(a.data),d=l==null?null:String(l);if(d!==null&&n.has(d)&&d!==a.id){let c=o.get(d);c||o.set(d,c=[]),c.push(a)}else r.push(a)}let s=(a,l,d)=>{var c,u,h;for(let f of a){if(d.has(f.id))continue;let g=(c=o.get(f.id))!=null?c:[],x=!g.length&&!!((u=e.lazyChildren)!=null&&u.call(e,f.id,f.data)),y=g.length>0&&this.isOpen(e,f.id,l),p={...f,level:l,hasChildren:g.length>0||x,expanded:y};x&&((h=e.loading)!=null&&h.has(f.id))&&(p.loading=!0),this.withDetails(e,[p],t),y&&s(g,l+1,new Set([...d,f.id]))}};s(r,0,new Set)}};var xi=1e4,Tt=class{constructor(e,t,n,o,r){this.datasource=e;this.getRowId=t;this.groupBy=n;this.query=o;this.onChange=r;this.levels=new Map;this.gen=0;this.display=null;this.ids=null;this.version=0;this.builtFor=-1}matches(e,t){return e.join("")===this.groupBy.join("")&&t.sort===this.query.sort&&t.filters===this.query.filters&&t.quickFilter===this.query.quickFilter&&t.advancedFilter===this.query.advancedFilter}purge(){this.gen++,this.levels.clear(),this.touch()}touch(){this.version++,this.display=null,this.ids=null}load(e,t,n){if(this.levels.has(e))return;let o=this.gen;this.levels.set(e,{state:"loading",nodes:[]});let r=n>=this.groupBy.length,s=this.query,a;try{a=Promise.resolve(this.datasource.getRows({start:0,end:xi,sort:[...s.sort],filters:{...s.filters},quickFilter:s.quickFilter,advancedFilter:s.advancedFilter,groupBy:[...this.groupBy],groupKeys:[...t]}))}catch(l){a=Promise.reject(l)}a.then(l=>{if(o!==this.gen)return;let d=Array.isArray(l==null?void 0:l.rows)?l.rows.filter(u=>u!==null&&typeof u=="object"):[];Array.isArray(l==null?void 0:l.rows)||H("datasource.getRows must resolve to { rows: Row[] }");let c=r?d.map((u,h)=>({id:this.getRowId?String(this.getRowId(u)):xe(u),data:u,sourceIndex:h,level:n})):d.map(u=>{let h=this.groupBy[n],f=u[h],g=`${e?`${e}|`:""}${h}:${J(f)}`,x=typeof u.count=="number"?u.count:typeof u.childCount=="number"?u.childCount:void 0;return{id:`group:${g}`,data:{},sourceIndex:-1,kind:"group",level:n,group:{key:g,colId:h,value:f,rows:[],expanded:!1,count:x,aggregates:u,keys:[...t,f]}}});this.levels.set(e,{state:"loaded",nodes:c}),this.touch(),this.onChange()},()=>{o===this.gen&&(this.levels.set(e,{state:"failed",nodes:[]}),this.touch(),this.onChange())})}isOpen(e,t,n){let o=e.expanded.get(t);return o!==void 0?o:e.defaultExpanded===-1||n<e.defaultExpanded}rows(e,t){if(this.display&&this.builtFor===t)return this.display;let n=[],o=(r,s,a)=>{var d;let l=this.levels.get(r);if(!l){this.load(r,s,a),n.push({id:`loading:${r}`,data:{},sourceIndex:-1,kind:"loading",level:a});return}if(l.state!=="loaded"){l.state==="loading"&&n.push({id:`loading:${r}`,data:{},sourceIndex:-1,kind:"loading",level:a});return}for(let c of l.nodes){if(c.kind!=="group"){n.push(c);continue}let u=c.group,h=this.isOpen(e,u.key,a),f={...c,group:{...u,expanded:h}};n.push(f),h&&o(u.key,(d=u.keys)!=null?d:[],a+1)}};return o("",[],0),this.display=n,this.builtFor=t,this.ids=null,n}dataRows(){let e=[];for(let t of this.levels.values())for(let n of t.nodes)n.kind||e.push(n);return e}dataCount(){let e=this.levels.get("");return(e==null?void 0:e.state)==="loaded"&&e.nodes.every(t=>{var n;return typeof((n=t.group)==null?void 0:n.count)=="number"})?e.nodes.reduce((t,n)=>{var o,r;return t+((r=(o=n.group)==null?void 0:o.count)!=null?r:0)},0):this.dataRows().length}loading(){for(let e of this.levels.values())if(e.state==="loading")return!0;return!1}indexOf(e){var t;return this.display?(this.ids||(this.ids=new Map,this.display.forEach((n,o)=>this.ids.set(n.id,o))),(t=this.ids.get(e))!=null?t:-1):-1}};var Ci=3e3,Ri=new Float64Array(0),Ve=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;this.groups=null;this.displayIn=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 a,l,d,c,u,h,f,g,x,y,p;let t=(l=(a=e.display)==null?void 0:a.groupBy)!=null?l:[];if(t.length&&!((d=e.display)!=null&&d.getParentId)){let v={sort:e.sort,filters:e.filters,quickFilter:e.quickFilter,advancedFilter:(c=e.advancedFilter)!=null?c:null};(!this.groups||!this.groups.matches(t,v))&&(this.groups=new Tt(this.deps.datasource,this.deps.getRowId,[...t],v,()=>this.deps.onLoaded(0,0,null)),this.touch()),this.displayIn=(u=e.display)!=null?u:null,this.query=null;return}this.groups&&(this.groups=null,this.query=null,this.touch());let n=this.query,o=!n||n.sort!==e.sort||n.filters!==e.filters||n.quickFilter!==e.quickFilter||n.advancedFilter!==((h=e.advancedFilter)!=null?h:null),r=(f=e.page)!=null?f:null,s=((g=r==null?void 0:r.size)!=null?g:0)!==((y=(x=this.page)==null?void 0:x.size)!=null?y:0);this.query={sort:e.sort,filters:e.filters,quickFilter:e.quickFilter,advancedFilter:(p=e.advancedFilter)!=null?p:null},this.page=r?{...r}:null,(o||s)&&this.purge(),this.ensure(Math.floor(this.base/this.bs))}invalidate(){}purge(){if(this.groups){this.groups.purge();return}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(){if(this.groups)return this.groupRows().length;let e=this.fullCount();return this.page?Math.max(0,Math.min(this.page.size,e-this.base)):e}dataCount(){return this.groups?this.groups.dataCount():this.fullCount()}loading(){if(this.groups)return this.groups.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}groupRows(){return this.groups.rows(this.displayIn,this.displayIn.version*1e6+this.groups.version)}getRow(e){if(this.groups)return this.groupRows()[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 d;let t=this.blocks.get(e);if(t&&(t.state!=="failed"||Date.now()<((d=t.retryAt)!=null?d: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=c=>{r===this.gen&&(this.blocks.set(e,{state:"failed",nodes:[],retryAt:Date.now()+Ci}),this.deps.onFailed(n,o,c))},l;try{l=Promise.resolve(this.deps.datasource.getRows({start:n,end:o,sort:[...s.sort],filters:{...s.filters},quickFilter:s.quickFilter,advancedFilter:s.advancedFilter}))}catch(c){l=Promise.reject(c)}l.then(c=>{if(r!==this.gen)return;let u=Array.isArray(c==null?void 0:c.rows)?c.rows.filter(g=>g!==null&&typeof g=="object"):null;if(!u){H("datasource.getRows must resolve to { rows: Row[], total?: number }"),a(new Error("invalid datasource response"));return}let h=this.deps.getRowId,f=u.slice(0,this.bs).map((g,x)=>({id:h?String(h(g)):xe(g),data:g,sourceIndex:n+x}));this.blocks.set(e,{state:"loaded",nodes:f}),typeof c.total=="number"&&c.total>=0?this.total=c.total:f.length<this.bs&&(this.total=n+f.length),this.loadedEnd=Math.max(this.loadedEnd,n+f.length),this.evict(),this.touch(),this.deps.onLoaded(n,n+f.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;if(this.groups)return this.groupRows();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.groups?this.groups.dataRows():this.built().data}allNodes(){return this.groups?this.groups.dataRows():this.built().data}idOf(e){return this.deps.getRowId?String(this.deps.getRowId(e)):xe(e)}indexOfId(e){if(this.groups)return this.groupRows(),this.groups.indexOf(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:Ri,uniform:!0}}};function To(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 It=class{constructor(e){this.bus=new Se;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 Si=500;function Io(i){let e=i.renderer.root,t=0,n=null,o=null,r=()=>{clearTimeout(t),n==null||n.remove(),n=null,o=null},s=c=>{var m;let u=c.dataset.col;if(!u||A(u))return null;let h=i.columns.getNode(u);if(!h)return null;if(c.classList.contains("fg-header-cell"))return(m=h.def.headerTooltip)!=null?m:null;let f=c.closest(".fg-row[data-row]");if(!f||!c.closest(".fg-body"))return null;let g=Number(f.dataset.row),x=i.rowModel.getRow(g);if(!x||x.kind)return null;let y=h.def,p=B(y,x.data),v=_(y,i.store.state.locale.code)(p);if(typeof y.tooltip=="function")try{let w=y.tooltip({value:p,formatted:v,row:x.data,rowIndex:g,column:y});return w?String(w):null}catch{return H(`tooltip of column "${u}" threw`),null}return y.tooltip===!0?v||null:i.options.overflowTooltip!==!1&&y.tooltip!==!1&&c.scrollWidth>c.clientWidth+1&&c.textContent||null},a=(c,u)=>{n==null||n.remove(),n=C("div",`fg-tooltip fg-theme-${i.store.state.theme}`,{role:"tooltip"}),n.textContent=u,i.applyFontTo(n),oe(e).append(n);let h=c.getBoundingClientRect(),f=n.offsetWidth,g=n.offsetHeight,x=window.innerWidth||1024,y=window.innerHeight||768,p=h.bottom+6+g>y?h.top-g-6:h.bottom+6;n.style.left=`${Math.max(4,Math.min(x-f-4,h.left))}px`,n.style.top=`${Math.max(4,p)}px`},l=c=>{var h,f;let u=(f=(h=c.target).closest)==null?void 0:f.call(h,".fg-cell, .fg-header-cell");!u||u===o||!e.contains(u)||(r(),o=u,t=window.setTimeout(()=>{if(o!==u||!u.isConnected)return;let g=s(u);g&&a(u,g)},Si))},d=c=>{let u=c.relatedTarget;o&&u&&o.contains(u)||r()};return e.addEventListener("pointerover",l),e.addEventListener("pointerout",d),e.addEventListener("pointerdown",r),e.addEventListener("keydown",r),e.addEventListener("wheel",r,{passive:!0}),()=>{r(),e.removeEventListener("pointerover",l),e.removeEventListener("pointerout",d),e.removeEventListener("pointerdown",r),e.removeEventListener("keydown",r),e.removeEventListener("wheel",r)}}var Do=["blank","notBlank"],Dt=class{constructor(e){this.grid=e;this.popup=null;this.off=[]}get isOpen(){return!!this.popup}columns(){return this.grid.columns.getState().map(e=>this.grid.columns.getNode(e.colId)).filter(e=>e&&!e.children&&!A(e.id)&&re(e.def)).map(e=>{var o,r;let t=re(e.def),n=t==="number"?"number":t==="date"?"date":"text";return{id:e.id,label:(r=(o=e.def.header)!=null?o:e.def.field)!=null?r:e.id,kind:n}})}open(){var b,M;this.close();let{grid:e}=this,t=e.store.state.locale,n=this.columns(),o=C("div",`fg-menu fg-filter-builder fg-theme-${e.store.state.theme}`,{role:"dialog","aria-label":t.advancedFilter});e.applyFontTo(o);let r=C("div","fg-chooser-head"),s=C("span","fg-menu-title");s.textContent=t.advancedFilter;let a=C("button","fg-chooser-close",{type:"button","aria-label":t.close});a.textContent="\xD7",a.addEventListener("click",()=>this.close()),r.append(s,a);let l=e.store.state.advancedFilter,d=C("div","fg-filter-join",{role:"radiogroup"}),c=`fg-fb-join-${Math.random().toString(36).slice(2,7)}`;for(let S of["and","or"]){let E=C("label"),T=C("input","",{type:"radio",name:c,value:S});T.checked=((b=l==null?void 0:l.operator)!=null?b:"and")===S,E.append(T,` ${t[S]}`),d.append(E)}let u=C("div","fg-fb-list"),h=[],f=S=>{h.splice(h.indexOf(S),1),S.el.remove()},g=S=>{let E=C("div","fg-fb-row"),T=C("select","fg-filter-op fg-fb-col",{"aria-label":t.columns});for(let q of n){let K=C("option");K.value=q.id,K.textContent=q.label,T.append(K)}let D=C("select","fg-filter-op fg-fb-op",{"aria-label":t.filter}),P=C("input","fg-input fg-fb-value",{type:"text",placeholder:t.value,"aria-label":t.value}),N=C("input","fg-input fg-fb-value-to",{type:"text",placeholder:t.valueTo,"aria-label":t.valueTo}),$=C("button","fg-chooser-close fg-fb-remove",{type:"button","aria-label":t.close});$.textContent="\xD7";let F=()=>{var q,K;return(K=(q=n.find(U=>U.id===T.value))==null?void 0:q.kind)!=null?K:"text"},O=q=>{let K=F();D.replaceChildren(...Ge[K].map(Z=>{let Q=C("option");return Q.value=Z,Q.textContent=t.ops[Z],Q})),q&&Ge[K].includes(q)&&(D.value=q);let U=K==="text"?"text":K;P.type=N.type=U,V()},V=()=>{P.hidden=Do.includes(D.value),N.hidden=D.value!=="between"};T.addEventListener("change",()=>O(D.value)),D.addEventListener("change",V),S&&n.some(q=>q.id===S.colId)&&(T.value=S.colId);let z=S==null?void 0:S.model;O(z==null?void 0:z.op),(z==null?void 0:z.value)!=null&&(P.value=String(z.value)),(z==null?void 0:z.valueTo)!=null&&(N.value=String(z.valueTo)),E.append(T,D,P,N,$);let W={el:E,read:()=>{let q=F(),K=D.value,U=!Do.includes(K),Z=null;if(q==="number"){let Q=P.value===""?void 0:Number(P.value),qe=N.value===""?void 0:Number(N.value);(!U||Q!==void 0&&!Number.isNaN(Q))&&(Z=K==="between"?{type:"number",op:K,value:Q,valueTo:qe}:{type:"number",op:K,value:Q})}else q==="date"?(!U||P.value)&&(Z=K==="between"?{type:"date",op:K,value:P.value,valueTo:N.value}:{type:"date",op:K,value:P.value||void 0}):(!U||P.value)&&(Z={type:"text",op:K,value:P.value});return Z?{colId:T.value,model:Z}:null}};return $.addEventListener("click",()=>f(W)),W},x=S=>{let E=C("div","fg-fb-row fg-fb-group"),T=C("span","fg-fb-group-label");T.textContent=`( ${S.conditions.length} \xD7 ${t[S.operator]} )`;let D=C("button","fg-chooser-close fg-fb-remove",{type:"button","aria-label":t.close});D.textContent="\xD7",E.append(T,D);let P={el:E,read:()=>S};return D.addEventListener("click",()=>f(P)),P},y=S=>{h.push(S),u.append(S.el)};for(let S of(M=l==null?void 0:l.conditions)!=null?M:[])y("conditions"in S?x(S):g(S));let p=C("button","fg-btn fg-fb-add",{type:"button"});p.textContent=`+ ${t.addCondition}`,p.addEventListener("click",()=>{let S=g();y(S),S.el.querySelector(".fg-fb-value").focus()});let v=C("div","fg-menu-actions"),m=C("button","fg-btn",{type:"button"});m.textContent=t.reset,m.addEventListener("click",()=>{e.setAdvancedFilter(null),this.close()});let w=C("button","fg-btn fg-btn-primary",{type:"button"});w.textContent=t.apply,w.addEventListener("click",()=>{var T;let S=h.map(D=>D.read()).filter(D=>!!D),E=((T=d.querySelector("input:checked"))==null?void 0:T.value)==="or"?"or":"and";e.setAdvancedFilter(S.length?{operator:E,conditions:S}:null),this.close()}),v.append(m,w),o.append(r,d,u,p,v),oe(e.renderer.root).append(o);let R=e.renderer.root.getBoundingClientRect(),k=o.offsetWidth||460;o.style.left=`${Math.max(4,Math.min(R.left+24,(window.innerWidth||1024)-k-4))}px`,o.style.top=`${Math.max(4,R.top+24)}px`,this.popup=o,h.length||p.click();let L=S=>{fe(S,o)||this.close()},I=S=>{S.key==="Escape"&&this.close()};document.addEventListener("pointerdown",L,!0),document.addEventListener("keydown",I,!0),this.off.push(()=>document.removeEventListener("pointerdown",L,!0),()=>document.removeEventListener("keydown",I,!0))}close(){var e;for(let t of this.off)t();this.off=[],(e=this.popup)==null||e.remove(),this.popup=null}};var Po=i=>Math.round(i*2.75),Ao=i=>Math.round(i*3.1),fn=13,pn={compact:[.8,.85],normal:[1,1],comfortable:[1.25,1.15]},ki=[],Mi=100,Ei=new Map;function ce(i){return i.every(e=>e!==null&&typeof e=="object")?i:(H("data contains entries that are not objects; they were skipped"),i.filter(e=>e!==null&&typeof e=="object"))}var gn=class{constructor(e,t){this.options=t;this.events=new Se;this.pinnedRows={top:[],bottom:[]};this.spanCache=null;this.editVersion=0;this.tracker=new wt;this.history=new vt;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 Mt(this);this.sourceDefs=[];this.pivotCfg=null;this.pivotData=null;this.savedGroup=null;this.page=0;this.pageSize=Mi;this.forcedOverlay=null;this.filterBuilder=new Dt(this);this.flashing=new Map;this.flashTimer=0;this.txQueue=[];this.txTimer=0;this.keepRange=!1;this.rowNumberCache=null;this.treeLoaded=new Set;this.treeLoading=new Set;this.lazyChildren=(e,t)=>{var n,o;if(this.treeLoaded.has(e))return!1;try{return!!((o=(n=this.options.treeData)==null?void 0:n.hasChildren)!=null&&o.call(n,t))}catch{return!1}};this.density="normal";this.selectionVersion=0;var s,a,l,d,c,u,h,f,g,x;Array.isArray(t.columns)||H("options.columns must be an array"),t.data!=null&&!Array.isArray(t.data)&&H("options.data must be an array"),this.store=new It({data:Array.isArray(t.data)?ce(t.data):[],sort:[],filters:{},quickFilter:"",selected:new Set,anchorId:null,focus:null,range:null,extraRanges:[],advancedFilter:null,locale:Te(t.locale),theme:(s=t.theme)!=null?s:"light"}),this.sourceDefs=Array.isArray(t.columns)?t.columns:[],this.columns=new Ue(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:H("pagination.pageSize must be a positive integer")),t.datasource&&typeof t.datasource.getRows!="function"&&H("datasource.getRows must be a function"),this.rowModel=t.datasource&&typeof t.datasource.getRows=="function"?new Ve({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:(y,p,v)=>this.serverLoaded(y,p,v),onFailed:(y,p,v)=>this.serverFailed(y,p,v)}):new Lt({getRowId:t.getRowId,columnDef:y=>{var p;return(p=this.columns.getNode(y))==null?void 0:p.def},quickColumns:()=>this.columns.displayed().filter(y=>!A(y.id)).map(y=>y.def),format:(y,p)=>_(y,this.store.state.locale.code)(p),collator:()=>this.collator()}),this.groupBy=this.validGroupBy((a=t.groupBy)!=null?a:[]),this.defaultExpanded=(l=t.groupDefaultExpanded)!=null?l:0,t.treeData&&!t.getRowId&&H("treeData needs getRowId so parent ids can be matched"),this.updateRows(),this.summaryOpts=(d=t.summary)!=null?d:null,this.refreshSummary();let o=t.fontSize!=null&&t.fontSize>0?t.fontSize:null;t.fontSize!=null&&!(t.fontSize>0)&&H("fontSize must be a positive number"),this.font={size:o,family:(c=t.fontFamily)!=null?c:null};let r=o!=null?o:fn;if(this.renderer=new nt(e,this,{rowHeight:(u=t.rowHeight)!=null?u:Math.round(Po(r)*pn[this.densityOf(t.density)][0]),headerHeight:(h=t.headerHeight)!=null?h:Math.round(Ao(r)*pn[this.densityOf(t.density)][1])}),this.density=this.densityOf(t.density),this.renderer.applyTheme(),this.renderer.applyFont(this.font.size,this.font.family),this.menu=new Et(this),this.chooser=new dt(this),this.contextMenu=new ut(this),this.editor=new mt(this),this.finder=new ft(this),this.fillHandle=new ht(this),this.groupPanel=t.groupPanel?new ot(this):null,this.pinnedRows={top:ce((f=t.pinnedTopRows)!=null?f:[]),bottom:ce((g=t.pinnedBottomRows)!=null?g:[])},this.sideBar=t.sideBar?new ct(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",y=>this.onChange(y)),io(this),Qn(this),()=>this.menu.close(),()=>this.chooser.close(),()=>this.contextMenu.destroy(),()=>this.editor.cancel(),()=>this.fillHandle.destroy(),()=>{var y;return(y=this.groupPanel)==null?void 0:y.destroy()},()=>this.charts.destroy(),()=>this.filterBuilder.close(),Io(this)),typeof ResizeObserver!="undefined"){let y=new ResizeObserver(()=>this.renderer.schedule());y.observe(this.renderer.main),this.disposers.push(()=>y.disconnect())}t.pivot&&this.setPivot(t.pivot),Mo(t.licenseKey).then(y=>{y&&!this.destroyed&&this.renderer.showFreeBadge()}),this.renderer.render(),this.api=this.createApi(),rt.set(this.renderer.root,this)}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.invalidateHeights(),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,t;return{groupBy:this.options.treeData?ki: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,lazyChildren:(t=this.options.treeData)!=null&&t.hasChildren?this.lazyChildren:void 0,loading:this.treeLoading,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))){H("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=an(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(d=>[d.id,d.def])),r={sum:n.sum,avg:n.avg,min:n.min,max:n.max,count:n.count},s=yo(this.store.state.data,t,d=>o.get(d),{total:n.total,blank:n.blanks,agg:d=>{var c;return(c=r[d])!=null?c:d}},n.code);if(this.pivotData=s.rows,this.columns.setDefs(this.withSelect(s.columns)),this.groupBy=s.groupBy,!e)return;let a=d=>!!this.columns.getNode(d),l=this.store.state;(l.sort.some(d=>!a(d.colId))||Object.keys(l.filters).some(d=>!a(d)))&&this.store.set({sort:l.sort.filter(d=>a(d.colId)),filters:Object.fromEntries(Object.entries(l.filters).filter(([d])=>a(d)))}),this.rowModel.invalidate(),this.displayVersion++,this.updateRows(),this.renderer.invalidate({header:!0,rows:!0}),this.refreshChoosers()}isFlashing(e,t){return this.flashing.size>0&&this.flashing.has(`${e}\0${t}`)}flash(e){let t=Date.now()+1e3;for(let o of e)this.flashing.set(o,t);if(this.flashTimer)return;let n=()=>{let o=Date.now();for(let[r,s]of this.flashing)s<=o&&this.flashing.delete(r);this.renderer.invalidate({rows:!0}),this.flashTimer=this.flashing.size&&!this.destroyed?window.setTimeout(n,250):0};this.flashTimer=window.setTimeout(n,1e3)}applyTransaction(e){var f,g,x,y,p;let t={added:[],updated:[],removed:[],notFound:[]};if(this.clientOnly("applyTransaction")||!e||typeof e!="object")return t;let n=this.store.state.data,o=this.options.getRowId,r=v=>{if(!v||typeof v!="object")return null;if(n.includes(v))return this.rowModel.idOf(v);try{return o?String(o(v)):null}catch{return null}},s=new Map(n.map(v=>[this.rowModel.idOf(v),v])),a=new Set;for(let v of(f=e.remove)!=null?f:[]){let m=r(v),w=m===null?void 0:s.get(m);w&&!a.has(w)?(a.add(w),t.removed.push(w)):w||t.notFound.push(v)}let l=new Map;for(let v of this.columns.getState()){let m=(g=this.columns.getNode(v.colId))==null?void 0:g.def.field;m&&l.set(m,[...(x=l.get(m))!=null?x:[],v.colId])}let d=[];for(let v of(y=e.update)!=null?y:[]){let m=r(v),w=m===null?void 0:s.get(m);if(!w||a.has(w)){t.notFound.push(v);continue}for(let[R,k]of Object.entries(v))if(!Object.is(w[R],k)){w[R]=k;for(let L of(p=l.get(R))!=null?p:[])d.push(`${m}\0${L}`)}t.updated.push(w)}let c=ce(Array.isArray(e.add)?e.add:[]);if(t.added.push(...c),!t.added.length&&!t.updated.length&&!t.removed.length)return t.notFound.length&&this.events.emit("transactionApplied",t),t;let u=a.size?n.filter(v=>!a.has(v)):[...n],h=typeof e.addIndex=="number"?Math.max(0,Math.min(u.length,Math.floor(e.addIndex))):u.length;u.splice(h,0,...c),this.editVersion++,this.renderer.invalidateHeights(),this.keepRange=!0;try{this.replaceData(u)}finally{this.keepRange=!1}return d.length&&this.options.flashCells!==!1&&this.flash(d),this.events.emit("transactionApplied",t),t}applyTransactionAsync(e){!e||typeof e!="object"||(this.txQueue.push(e),!this.txTimer&&(this.txTimer=window.setTimeout(()=>{var n;this.txTimer=0;let t=this.txQueue;this.txQueue=[],!(this.destroyed||!t.length)&&this.applyTransaction({add:t.flatMap(o=>{var r;return(r=o.add)!=null?r:[]}),addIndex:(n=t.find(o=>typeof o.addIndex=="number"))==null?void 0:n.addIndex,update:t.flatMap(o=>{var r;return(r=o.update)!=null?r:[]}),remove:t.flatMap(o=>{var r;return(r=o.remove)!=null?r:[]})})},50)))}setAdvancedFilter(e){let t=e&&typeof e=="object"&&Array.isArray(e.conditions)&&e.conditions.length?e:null;t!==this.store.state.advancedFilter&&(this.store.set({advancedFilter:t}),this.events.emit("advancedFilterChange",{advancedFilter:t}))}setColumnGroupOpened(e,t){this.columns.setGroupOpen(e,!!t)&&(this.layoutChanged(),this.events.emit("columnGroupOpened",{groupId:e,open:!!t}))}getState(){let e=this.store.state,t={columns:this.columns.getState(),columnGroups:this.columns.groupOpenState(),advancedFilter:e.advancedFilter?JSON.parse(JSON.stringify(e.advancedFilter)):null,sort:e.sort.map(n=>({...n})),filters:JSON.parse(JSON.stringify(e.filters)),quickFilter:e.quickFilter,groupBy:[...this.groupBy],pivot:this.pivotCfg?JSON.parse(JSON.stringify(this.pivotCfg)):null,expanded:Object.fromEntries(this.expanded),selected:[...e.selected]};return this.options.pagination&&(t.page=this.page,t.pageSize=this.pageSize),t}setState(e,t={}){var r,s;if(!e||typeof e!="object")return;let n=a=>e[a]!==void 0&&(!t.parts||t.parts.includes(a)),o=a=>!!this.columns.getNode(a);if(n("columns")&&Array.isArray(e.columns)&&(this.columns.applyState(e.columns.filter(a=>a&&o(a.colId))),this.columnsChanged()),n("columnGroups")&&e.columnGroups&&typeof e.columnGroups=="object")for(let[a,l]of Object.entries(e.columnGroups))typeof l=="boolean"&&this.setColumnGroupOpened(a,l);if(n("groupBy")&&Array.isArray(e.groupBy)&&this.setGroupBy(e.groupBy.filter(o)),n("pivot")&&this.setPivot((r=e.pivot)!=null?r:null),n("sort")&&Array.isArray(e.sort)&&this.setSort(e.sort.filter(a=>a&&o(a.colId))),n("filters")&&e.filters&&typeof e.filters=="object"){let a=Object.fromEntries(Object.entries(e.filters).filter(([l])=>o(l)));this.store.set({filters:a}),this.events.emit("filterChange",{filters:{...a}})}if(n("advancedFilter")&&this.setAdvancedFilter((s=e.advancedFilter)!=null?s:null),n("quickFilter")&&typeof e.quickFilter=="string"&&this.store.set({quickFilter:e.quickFilter}),n("expanded")&&e.expanded&&typeof e.expanded=="object"&&(this.expanded=new Map(Object.entries(e.expanded).filter(([,a])=>typeof a=="boolean")),this.displayChanged()),n("pageSize")&&typeof e.pageSize=="number"&&this.setPageSize(e.pageSize),n("page")&&typeof e.page=="number"&&this.setPage(e.page),n("selected")&&Array.isArray(e.selected)){let a=new Set(this.rowModel.allNodes().map(l=>l.id));this.setSelected(new Set(e.selected.map(String).filter(l=>a.has(l))))}}rowNumber(e){var o;let t=this.rowModel.rows();if(((o=this.rowNumberCache)==null?void 0:o.rows)!==t){let r=new Int32Array(t.length),s=0;t.forEach((a,l)=>{r[l]=a.kind?0:++s}),this.rowNumberCache={rows:t,nums:r}}let n=this.rowNumberCache.nums[e];return n?n+(this.options.pagination&&!this.rowModel.server?this.page*this.pageSize:0):null}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.veto("beforePageChange",{page:t,pageSize:this.pageSize})||(this.page=t,this.pageMoved()))}setPageSize(e){if(!this.options.pagination)return;if(!Number.isInteger(e)||e<=0){H("setPageSize: size must be a positive integer");return}if(e===this.pageSize)return;let t=this.page*this.pageSize;this.veto("beforePageChange",{page:Math.floor(t/e),pageSize:e})||(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 Ve&&(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||(H(`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}))}syncScroll(e,t){if(!e||typeof e.setScrollPosition!="function"||e===this.api)return()=>{};let n=new Map,o=a=>`${a.top},${a.left}`,r=(a,l)=>a.on("scroll",d=>{if(n.get(a)===o(d)){n.delete(a);return}l.setScrollPosition(t==="vertical"?{top:d.top}:t==="horizontal"?{left:d.left}:d),n.set(l,o(l.getScrollPosition()))}),s=[r(this.api,e),r(e,this.api)];return()=>{for(let a of s)a()}}veto(e,t){let n=!1;return this.events.emit(e,{...t,cancel:()=>{n=!0}}),n}clientOnly(e){return this.rowModel.server?(H(`${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)?[...new Set(e)].filter(t=>{let n=this.columns.getNode(t);return!n||n.children||A(t)?(H(`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}loadChildren(e){let t=this.options.treeData,n=e.id;if(this.treeLoading.has(n))return;if(typeof t.loadChildren!="function"){H("treeData.hasChildren needs treeData.loadChildren");return}this.treeLoading.add(n),this.displayChanged();let o=()=>(this.treeLoading.delete(n),!this.destroyed&&this.store.state.data.includes(e.data));Promise.resolve().then(()=>t.loadChildren(e.data)).then(r=>{if(!o())return;let s=ce(Array.isArray(r)?r:[]);this.treeLoaded.add(n),this.expanded.set(n,!0),s.length&&this.replaceData([...this.store.state.data,...s]),this.displayChanged(),this.events.emit("childrenLoaded",{row:e.data,rows:s}),this.events.emit("groupToggle",{key:n,expanded:!0})},r=>{o()&&(H(`treeData.loadChildren failed for row "${n}"`),this.displayChanged(),this.events.emit("childrenLoadFailed",{row:e.data,error:r}))})}setGroupExpanded(e,t){var r,s;let n=this.rowModel.rows().find(a=>this.isExpandable(a)&&this.expandKey(a)===e);if((n?!!((s=(r=n.group)==null?void 0:r.expanded)!=null?s:n.expanded):this.expanded.get(e))!==t){if(t&&n&&!n.group&&this.options.treeData&&this.lazyChildren(n.id,n.data)){this.loadChildren(n);return}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,s;let n=(r=this.columns.getNode(t))==null?void 0:r.def;if(!e.group||!(n!=null&&n.aggFunc))return;if(e.group.aggregates)return(s=e.group.aggregates[t])!=null?s:n.field?e.group.aggregates[n.field]:void 0;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 a=e.group.rows;try{o.set(t,Re(n.aggFunc,a.map(l=>B(n,l)),a))}catch{H(`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,t=this.options.treeData;return!this.rowModel.server&&!e.sort.length&&!Object.keys(e.filters).length&&!e.quickFilter.trim()&&!this.groupBy.length&&(!t||typeof t.setParentId=="function")}get dragOptions(){let e=this.options.rowDrag;return e&&typeof e=="object"?e:{}}parentOf(e){let t=null;try{t=this.options.treeData.getParentId(e)}catch{t=null}return t==null?null:String(t)}rawParent(e){var t;try{return(t=this.options.treeData.getParentId(e))!=null?t:null}catch{return null}}idValue(e){let t=this.rowModel.idOf(e);for(let o of this.store.state.data){let r=this.rawParent(o);if(r!==null&&String(r)===t)return r}return this.store.state.data.some(o=>typeof this.rawParent(o)=="number")&&t.trim()!==""&&Number.isFinite(Number(t))?Number(t):t}canDropRow(e,t,n,o=this){if(!this.canMoveRows()||t===e)return!1;if(o===this&&this.options.treeData&&t){let s=this.rowModel.idOf(e),a=new Set;for(let l=this.rowModel.idOf(t);l!==null&&!a.has(l);){if(l===s)return!1;a.add(l);let d=this.rowModel.allNodes().find(c=>c.id===l);l=d?this.parentOf(d.data):null}}let r=this.dragOptions.canDrop;if(!r)return!0;try{return r({row:e,target:t,position:n,fromOtherGrid:o!==this})!==!1}catch{return H("rowDrag.canDrop threw; the drop was refused"),!1}}dropRow(e,t,n="after",o=this){var p,v;if(this.clientOnly("dropRow")||!e||typeof e!="object")return!1;let r=this.options.treeData;!r&&n==="inside"&&(n="after");let s=this.store.state.data,a=o!==this,l=a?-1:s.indexOf(e);if(!a&&l<0||t&&!s.includes(t)||a&&(!o.canMoveRows()||s.includes(e))||!this.canDropRow(e,t,n,o))return!1;let d=r?this.rawParent(e):null,c=!r||!t?null:n==="inside"?t:(p=this.store.state.data.find(m=>this.rowModel.idOf(m)===this.parentOf(t)))!=null?p:null,u=c?this.idValue(c):null,h=s.filter(m=>m!==e),f=!t||n==="inside"?h.length:h.indexOf(t)+(n==="after"?1:0);h.splice(f,0,e);let g=h.some((m,w)=>m!==s[w]);if(!a&&!g&&String(d!=null?d:"")===String(u!=null?u:""))return!1;let x=(m,w)=>{try{r.setParentId(e,m,w)}catch{H("treeData.setParentId threw")}},y=r&&(v=this.store.state.data.find(m=>this.rowModel.idOf(m)===this.parentOf(e)))!=null?v:null;return a?(o.removeRows([e]),r&&x(u,c),this.addRows([e],f)):(r&&x(u,c),this.replaceData(h),this.history.push({undo:()=>{r&&x(d,y),this.replaceData(s)},redo:()=>{r&&x(u,c),this.replaceData(h)}}),this.events.emit("rowDragEnd",{row:e,fromIndex:l,toIndex:f})),this.events.emit("rowDrop",{row:e,target:t,position:n,fromOtherGrid:a,fromGrid:a?o.api:null}),!0}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:H("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:fn;this.applyAutoHeights(o),this.renderer.applyFont(t,n),this.renderer.invalidateHeights(),this.menu.close(),this.layoutChanged()}densityOf(e){return e==="compact"||e==="comfortable"?e:"normal"}applyAutoHeights(e){let[t,n]=pn[this.density];this.options.rowHeight==null&&(this.renderer.opts.rowHeight=Math.round(Po(e)*t)),this.options.headerHeight==null&&(this.renderer.opts.headerHeight=Math.round(Ao(e)*n))}setDensity(e){var n;let t=this.densityOf(e);t!==this.density&&(this.density=t,this.renderer.applyTheme(),this.applyAutoHeights((n=this.font.size)!=null?n:fn),this.renderer.invalidateHeights(),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)){H("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=Un(e.rows,n,s=>{var a;return(a=this.columns.getNode(s))==null?void 0:a.def})}dataColumns(){return this.columns.displayed().filter(e=>!A(e.id))}validRange(e){if(!e||this.options.rangeSelection===!1)return null;let t=this.rowModel.getRowCount(),n=o=>!!o&&!A(o.colId)&&!!this.columns.getColumn(o.colId)&&o.rowIndex>=0&&o.rowIndex<t;return n(e.start)&&n(e.end)?{start:{...e.start},end:{...e.end}}:null}setRange(e,t=!1){let n=this.validRange(e),o=t||!this.store.state.extraRanges.length?this.store.state.extraRanges:[],r=this.store.state.range;JSON.stringify(r)===JSON.stringify(n)&&o===this.store.state.extraRanges||(this.store.set({range:n,extraRanges:o}),this.events.emit("rangeChange",{range:n&&{start:{...n.start},end:{...n.end}}}))}addRange(e){let{range:t,focus:n}=this.store.state,o=this.validRange(t!=null?t:n?{start:n,end:n}:null);o&&this.store.set({extraRanges:[...this.store.state.extraRanges,o]}),this.setRange(e,!0)}getRanges(){let e=[...this.store.state.extraRanges];return this.store.state.range&&e.push(this.store.state.range),e.map(t=>({start:{...t.start},end:{...t.end}}))}setRanges(e){var n;let t=(Array.isArray(e)?e:[]).map(o=>this.validRange(o)).filter(o=>!!o);this.store.set({extraRanges:t.slice(0,-1)}),this.setRange((n=t[t.length-1])!=null?n:null,!0)}boundsOf(e){if(!e)return null;let t=this.columns.getColumn(e.start.colId),n=this.columns.getColumn(e.end.colId);return!t||!n?null:Ae({start:{rowIndex:e.start.rowIndex,colIndex:t.index},end:{rowIndex:e.end.rowIndex,colIndex:n.index}})}rangeBounds(){return this.boundsOf(this.store.state.range)}allRangeBounds(){return[...this.store.state.extraRanges,this.store.state.range].map(e=>this.boundsOf(e)).filter(e=>!!e)}rangeContains(e,t){let n=this.columns.getColumn(t);return!!n&&this.allRangeBounds().some(o=>oo(o,e,n.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,l,d=t?[]:this.allRangeBounds();if(d.length>1){let u=d.every(f=>f.c1===d[0].c1&&f.c2===d[0].c2),h=d.every(f=>f.r1===d[0].r1&&f.r2===d[0].r2);if(u||h){let f=[...d].sort((y,p)=>u?y.r1-p.r1:y.c1-p.c1),g=f.map(y=>this.rangeMatrix(y)),x=u?g.flat():g[0].map((y,p)=>g.flatMap(v=>{var m;return(m=v[p])!=null?m:[]}));return e&&x.unshift((u?f.slice(0,1):f).flatMap(y=>this.rangeHeaders(y))),Ut(x)}}if(r){a=[];for(let u=r.r1;u<=r.r2;u++){let h=this.rowModel.getRow(u);h.kind||a.push(h.data)}l=o.slice(r.c1,r.c2+1).filter(u=>!A(u.id))}else if(s){let u=this.store.state.selected;a=this.rowModel.dataRows().filter(h=>u.has(h.id)).map(h=>h.data),l=this.dataColumns()}else{let u=this.store.state.focus,h=u&&this.columns.getColumn(u.colId),f=u&&this.rowModel.getRow(u.rowIndex);if(!h||!f||f.kind||A(h.id))return"";a=[f.data],l=[h]}let c=a.map(u=>l.map(h=>this.copyCell(h.def,u,n)));return e&&c.unshift(l.map(u=>{var h,f;return(f=(h=u.def.header)!=null?h:u.def.field)!=null?f:u.id})),Ut(c)}rangeHeaders(e){return this.columns.displayed().slice(e.c1,e.c2+1).filter(t=>!A(t.id)).map(t=>{var n,o;return(o=(n=t.def.header)!=null?n:t.def.field)!=null?o:t.id})}rangeMatrix(e){let t=this.columns.displayed().slice(e.c1,e.c2+1).filter(r=>!A(r.id)),n=this.store.state.locale.code,o=[];for(let r=e.r1;r<=e.r2;r++){let s=this.rowModel.getRow(r);s&&!s.kind&&o.push(t.map(a=>this.copyCell(a.def,s.data,n)))}return o}copyCell(e,t,n){let o=B(e,t),r=e.copyable;if(r===!1)return"";if(typeof r=="function"){let s=!1;try{s=r({value:o,row:t,column:e})!==!1}catch{s=!1}if(!s)return""}return pt(e,o,n)}cutToClipboard(){let e=this.copyToClipboard(!1);return e&&this.clearCells(),e}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=to(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,l=a&&this.columns.getColumn(a.colId),d,c;if(s)d=s.r1,c=s.c1;else if(a&&l&&!A(l.id))d=a.rowIndex,c=l.index;else return n;let u=[],h=t.length===1&&t[0].length===1,f=h&&s?s.r2-s.r1+1:t.length,g=h&&s?s.c2-s.c1+1:Math.max(...t.map(y=>y.length));for(let y=0;y<f;y++){let p=d+y;if(p>=r)break;let v=this.rowModel.getRow(p);if(!v.kind)for(let m=0;m<g;m++){let w=o[c+m];if(!w)break;if(A(w.id))continue;let R=h&&s?t[0][0]:(x=t[y])==null?void 0:x[m];if(R===void 0)continue;let k=w.def;if(!k.field||!ae(k,v.data,p)){n.skipped++;continue}let L=v.data[k.field],I=this.acceptText(k,v.data,R,L);if(!I.ok){n.skipped++;continue}this.writeCell(u,v.data,k.field,w.id,p,I.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 l=(a=typeof s.options=="function"?s.options(t):s.options)!=null?a:[],d=n.trim().toLowerCase(),c=l.map(u=>u!==null&&typeof u=="object"&&"value"in u?u:{value:u,label:String(u),disabled:!1}).find(u=>{var h;return String(u.value).toLowerCase()===d||((h=u.label)!=null?h:"").toLowerCase()===d});if(!c||c.disabled)return{ok:!1};r=c.value}else if(e.formulas&&Ce(n.trim()))r=n.trim();else{let l=gt(e,n,o);if(!l.ok)return l;r=l.value}return this.cellError(e,t,r)!==null?{ok:!1}:{ok:!0,value:r}}cellError(e,t,n){let o=this.store.state.locale;if(e.required&&G(n))return o.required;if(e.unique&&e.field&&!G(n)){let r=n instanceof Date?n.getTime():String(n),s=e.field;if(this.store.state.data.some(a=>{if(a===t)return!1;let l=a[s];return!G(l)&&(l instanceof Date?l.getTime():String(l))===r}))return o.duplicate}if(e.validate){let r;try{r=e.validate(n,t)}catch{r=o.invalidValue}if(r!==!0)return typeof r=="string"&&r?r:o.invalidValue}return null}validateAll(){let e=[],t=this.columns.getState().map(n=>({id:n.colId,def:this.columns.getNode(n.colId).def})).filter(n=>n.def.field&&n.def.editable&&(n.def.required||n.def.unique||n.def.validate));return this.store.state.data.forEach((n,o)=>{let r=this.rowModel.idOf(n),s=this.rowModel.indexOfId(r);for(let a of t){if(!ae(a.def,n,s<0?o:s))continue;let l=this.cellError(a.def,n,n[a.def.field]);l!==null&&e.push({row:n,rowIndex:s,colId:a.id,message:l})}}),e}mergeSpans(){if(this.rowModel.server||!this.columns.displayed().some(r=>r.def.merge||r.def.rowSpan))return Ei;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||r.def.rowSpan);if(o.length&&!e.some(r=>r.kind)){let r=e.map(s=>s.data);for(let s of o)n.set(s.id,et(r,s.def))}return this.spanCache={rows:e,ver:t,spans:n},n}rangeAggregates(){let e=this.allRangeBounds();if(!e.length)return null;let t=this.columns.displayed(),n={cells:0,count:0,numbers:0,sum:0,min:1/0,max:-1/0},o=e.length>1?new Set:null;for(let r of e)for(let s=r.r1;s<=r.r2;s++){let a=this.rowModel.getRow(s);if(!a||a.kind)continue;let l=a.data;for(let d of t.slice(r.c1,r.c2+1)){if(A(d.id))continue;if(o){let u=`${s},${d.index}`;if(o.has(u))continue;o.add(u)}n.cells++;let c=B(d.def,l);if(!G(c)&&(n.count++,typeof c=="number"||d.def.type==="number"&&!Number.isNaN(Number(c)))){let u=Number(c);n.numbers++,n.sum+=u,u<n.min&&(n.min=u),u>n.max&&(n.max=u)}}}return n}fillRange(e){var u;let t=(u=this.rangeBounds())!=null?u:(()=>{let h=this.store.state.focus,f=h&&this.columns.getColumn(h.colId);return h&&f&&!A(f.id)?{r1:h.rowIndex,r2:h.rowIndex,c1:f.index,c2:f.index}:null})(),n=this.columns.getColumn(e.start.colId),o=this.columns.getColumn(e.end.colId);if(!t||!n||!o)return;let r=Ae({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(),l=[],d=(h,f,g)=>{let x=a[f],y=this.rowModel.getRow(h),p=x==null?void 0:x.def;!y||y.kind||!(p!=null&&p.field)||A(x.id)||!ae(p,y.data,h)||this.cellError(p,y.data,g)===null&&this.writeCell(l,y.data,p.field,x.id,h,g)},c=(h,f)=>B(a[f].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 f=[],g=[];for(let x=t.r1;x<=t.r2;x++)f.push(c(x,h));for(let x=t.r2;x>=t.r1;x--)g.push(c(x,h));Pe(f,r.r2-t.r2).forEach((x,y)=>d(t.r2+1+y,h,x)),Pe(g,t.r1-r.r1).forEach((x,y)=>d(t.r1-1-y,h,x))}else if(r.c1<t.c1||r.c2>t.c2)for(let h=t.r1;h<=t.r2;h++){let f=[],g=[];for(let x=t.c1;x<=t.c2;x++)f.push(c(h,x));for(let x=t.c2;x>=t.c1;x--)g.push(c(h,x));Pe(f,r.c2-t.c2).forEach((x,y)=>d(h,t.c2+1+y,x)),Pe(g,t.c1-r.c1).forEach((x,y)=>d(h,t.c1-1-y,x))}else return;this.endCellTx(l),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=ce(e.top)),e.bottom&&(this.pinnedRows.bottom=ce(e.bottom)),this.renderer.invalidate({rows:!0})}writeCell(e,t,n,o,r,s){let a=t[n];return Object.is(a,s)||this.veto("beforeCellChange",{row:t,rowIndex:r,colId:o,oldValue:a,newValue: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.renderer.invalidateHeights(),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,l;let e=this.columns.displayed(),t=this.allRangeBounds(),n=this.store.state.focus,o=n?(a=this.columns.getColumn(n.colId))==null?void 0:a.index:void 0,r=t.length?t:n&&o!==void 0?[{r1:n.rowIndex,r2:n.rowIndex,c1:o,c2:o}]:[];if(!r.length)return;let s=[];for(let d of r)for(let c=d.r1;c<=d.r2;c++){let u=this.rowModel.getRow(c);for(let h=d.c1;h<=d.c2;h++){let f=(l=e[h])==null?void 0:l.def;u&&!u.kind&&(f!=null&&f.field)&&ae(f,u.data,c)&&this.writeCell(s,u.data,f.field,e[h].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=ce(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:(l=>d=>l.has(d))(new Set(e)),r=[];if(n.forEach((l,d)=>{let c=!1;try{c=!!o(l)}catch{c=!1}c&&r.push({row:l,index:d})}),!r.length)return[];let s=new Set(r.map(l=>l.row)),a=new Set(r.filter(l=>this.tracker.created.has(l.row)).map(l=>l.row));for(let{row:l,index:d}of r)a.has(l)?this.tracker.created.delete(l):this.tracker.deleted.set(l,d);return this.replaceData(n.filter(l=>!s.has(l))),t&&this.history.push({undo:()=>{let l=[...this.store.state.data];for(let{row:d,index:c}of r)l.splice(Math.min(c,l.length),0,d),this.tracker.deleted.delete(d),a.has(d)&&this.tracker.created.add(d);this.replaceData(l)},redo:()=>this.removeRows([...s],!1)}),this.events.emit("rowsRemoved",{rows:r.map(l=>l.row)}),r.map(l=>l.row)}trackedFields(){let e=[],t=n=>{for(let o of n)o.children?t(o.children):o.def.field&&!A(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=C("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 l,d;let t=(e?e.map(c=>this.columns.getColumn(c)):this.columns.displayed()).filter(c=>!!c&&je(c.def)),{first:n,last:o}=this.renderer.renderedRange(),r=this.store.state.locale.code,s=66,a=24;for(let c of t){let u=this.renderer.measureText((d=(l=c.def.header)!=null?l:c.def.field)!=null?d:"",!0)+s,h=_(c.def,r);for(let g=n;g<=o;g++){let x=this.rowModel.getRow(g);x&&(u=Math.max(u,this.renderer.measureText(h(B(c.def,x.data)),!1)+a))}let f=this.columns.setWidth(c.id,Math.ceil(u));this.events.emit("columnResize",{colId:c.id,width:f})}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?(H(`setSort: unknown column "${n.colId}"`),!1):n.dir==="asc"||n.dir==="desc"});this.veto("beforeSort",{sort:t.map(n=>({...n}))})||(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){H(`setFilter: unknown column "${e}"`);return}if(this.veto("beforeFilter",{colId:e,model:t}))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.selectionVersion++,this.store.set({selected:e,anchorId:t}),this.events.emit("selectionChange",{selected:this.selectedRows()})}rowSelectable(e){let t=this.options.isRowSelectable;if(!t)return!0;try{return!!t(e)}catch{return!1}}groupMemberIds(e){var a,l;if(e.group)return e.group.rows.filter(d=>this.rowSelectable(d)).map(d=>this.rowModel.idOf(d));let t=(a=this.options.treeData)==null?void 0:a.getParentId;if(!t)return[];let n=new Map;for(let d of this.store.state.data){let c=null;try{c=t(d)}catch{c=null}if(c==null)continue;let u=String(c),h=n.get(u);h?h.push(d):n.set(u,[d])}let o=[],r=new Set([e.id]),s=[e.id];for(;s.length;)for(let d of(l=n.get(s.shift()))!=null?l:[]){let c=this.rowModel.idOf(d);r.has(c)||(r.add(c),s.push(c),this.rowSelectable(d)&&o.push(c))}return o}groupSelection(e){let t=this.groupMemberIds(e),n=this.store.state.selected,o=t.filter(r=>n.has(r)).length;return o===0?"none":o===t.length?"all":"some"}toggleGroupSelection(e){if(this.options.rowSelection!=="multiple")return;let t=this.groupMemberIds(e),n=new Set(this.store.state.selected),o=t.length>0&&t.every(r=>n.has(r));for(let r of t)o?n.delete(r):n.add(r);this.setSelected(n)}selectFromClick(e,t,n){var a,l;let o=this.options.rowSelection;if(!o||e<0||e>=this.rowModel.getRowCount())return;let r=this.rowModel.getRow(e);if(r.kind||!this.rowSelectable(r.data))return;let s=To({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()||this.options.isRowSelectable)for(let d of s.selected){if(this.store.state.selected.has(d))continue;let c=this.rowModel.indexOfId(d),u=c>=0?this.rowModel.getRow(c):null;u&&(u.kind||!this.rowSelectable(u.data))&&s.selected.delete(d)}if(o==="multiple"&&this.options.groupSelectsChildren&&this.options.treeData&&r.hasChildren){let d=s.selected.has(r.id);for(let c of this.groupMemberIds(r))d?s.selected.add(c):s.selected.delete(c)}this.setSelected(s.selected,(l=(a=this.rowModel.getRow(s.anchorIndex))==null?void 0:a.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}selectableRows(){let e=this.rowModel.dataRows();return this.options.isRowSelectable?e.filter(t=>this.rowSelectable(t.data)):e}toggleSelectAll(){let e=this.selectableRows(),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=[],n=this.options.rowNumbers;if(n){let o=typeof n=="object"?n:{};t.push(Nn(typeof o.width=="number"&&o.width>0?o.width:void 0,typeof o.header=="string"?o.header:void 0))}return this.options.rowDrag&&t.push(Fn),this.options.rowSelection&&t.push($n),[...t,...e]}setData(e,t){if(this.clientOnly("setData"))return;if(!Array.isArray(e)){H("setData: rows must be an array");return}this.editor.cancel(),this.tracker.reset(),this.history.clear(),this.detailOpen.clear(),this.treeLoaded.clear(),this.treeLoading.clear(),this.renderer.dropDetail(),this.store.set({data:ce(e)}),t!=null&&t.scrollToTop&&this.renderer.setScroll({top:0,left:0});let n=this.store.state.selected;if(n.size)if(this.options.getRowId){let s=new Set(this.rowModel.allNodes().map(l=>l.id)),a=new Set([...n].filter(l=>s.has(l)));a.size!==n.size&&this.setSelected(a)}else this.setSelected(new Set,null);let o=this.rowModel.getRowCount(),r=this.store.state.focus;r&&r.rowIndex>=o&&this.store.set({focus:o?{...r,rowIndex:o-1}:null})}setColumns(e){var o;if(!Array.isArray(e)){H("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=(...l)=>l.some(d=>e.includes(d));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","advancedFilter")&&this.page!==0;n&&(this.page=0),t("data","sort","filters","quickFilter","advancedFilter","locale")&&this.updateRows(),n&&this.emitPage(),t("data","sort","filters","quickFilter","advancedFilter")&&this.store.state.range&&!this.keepRange&&this.setRange(null),t("data","sort","filters","quickFilter","advancedFilter","locale")&&this.finder.refresh(),(t("data","filters","quickFilter","advancedFilter","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","advancedFilter","locale","selected","data"),rows:t("data","sort","filters","quickFilter","advancedFilter","locale")})}createApi(){let e=t=>((...n)=>{if(this.destroyed){H("API called after destroy()");return}return t(...n)});return{setData:e((t,n)=>this.setData(t,n)),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.selectableRows().map(t=>t.id)]))),deselectAll:e(()=>this.setSelected(new Set,null)),getDisplayedRowCount:e(()=>this.rowModel.getRowCount()),scrollToRow:e(t=>this.renderer.scrollToRow(t)),validate:e(()=>this.validateAll()),setDensity:e(t=>this.setDensity(t)),getDensity:e(()=>this.density),showOverlay:e(t=>{this.forcedOverlay=t==="loading"||t==="noRows"?t:null,this.renderer.invalidate()}),getXlsxSheet:e(t=>nn(this,t)),print:e(t=>fo(Qt(this,t))),getPrintHtml:e(t=>Qt(this,t)),setColumnGroupOpened:e((t,n)=>this.setColumnGroupOpened(t,n)),setAdvancedFilter:e(t=>this.setAdvancedFilter(t)),getAdvancedFilter:e(()=>this.store.state.advancedFilter?JSON.parse(JSON.stringify(this.store.state.advancedFilter)):null),openFilterBuilder:e(()=>this.filterBuilder.open()),isColumnGroupOpened:e(t=>{var n;return!!((n=this.columns.getNode(t))!=null&&n.open)}),applyTransaction:e(t=>this.applyTransaction(t)),applyTransactionAsync:e(t=>this.applyTransactionAsync(t)),getState:e(()=>this.getState()),setState:e((t,n)=>this.setState(t,n)),getScrollPosition:e(()=>this.renderer.getScroll()),setScrollPosition:e(t=>this.renderer.setScroll(t!=null?t:{})),syncScroll:e((t,n="both")=>this.syncScroll(t,n)),setTheme:e(t=>this.store.set({theme:t})),setLocale:e(t=>this.store.set({locale:Te(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)),getRanges:e(()=>this.getRanges()),setRanges:e(t=>this.setRanges(t)),copySelection:e(t=>this.copyToClipboard(!!(t!=null&&t.headers),!!(t!=null&&t.rows))),pasteText:e(t=>this.pasteText(t)),cutSelection:e(()=>this.cutToClipboard()),stopRowEdit:e(t=>this.editor.endRow(!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)),dropRow:e((t,n,o)=>this.dropRow(t,n,o)),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=>en(this,t)),exportCsv:e((t="export.csv",n)=>Oe(t,["\uFEFF",en(this,n)],"text/csv;charset=utf-8")),getXlsx:e(t=>tn(this,t)),exportXlsx:e((t="export.xlsx",n)=>Oe(t,[tn(this,n)],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")),importFile:e((t,n)=>po(this,t,n)),on:e((t,n)=>this.events.on(t,n)),destroy:()=>this.destroy()}}destroy(){if(!this.destroyed){this.destroyed=!0,rt.delete(this.renderer.root),clearTimeout(this.flashTimer),clearTimeout(this.txTimer);for(let e of this.disposers)e();this.renderer.destroy(),this.events.clear()}}};function $o(i,e){return new gn(i,e).api}function mn(i){let e=(Array.isArray(i)?i:[]).filter(t=>t&&t.grid&&typeof t.grid.getXlsxSheet=="function");return e.length?ye(e.map((t,n)=>{var o,r,s;return t.grid.getXlsxSheet({...t.options,sheetName:(s=(r=t.sheetName)!=null?r:(o=t.options)==null?void 0:o.sheetName)!=null?s:`Sheet${n+1}`})})):(H("buildWorkbook: no grids given; the file has one empty sheet"),ye([{name:"Sheet1",rows:[]}]))}function Fo(i,e){Oe(i||"export.xlsx",[mn(e)],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")}var Li=i=>typeof i=="function"?i():i!=null?i:{};async function No(i,e,t,n){var l;let o=i,r={method:e,credentials:(l=n.credentials)!=null?l:"same-origin",headers:{Accept:"application/json",...Li(n.headers)}};if(e==="GET"){let d=new URLSearchParams;for(let[c,u]of Object.entries(t))d.set(c,typeof u=="string"?u:JSON.stringify(u));o+=(i.includes("?")?"&":"?")+d.toString()}else r.headers["Content-Type"]="application/json",r.body=JSON.stringify(t);let s=await fetch(o,r);if(!s.ok)throw new Error(`HTTP ${s.status} from ${i}`);let a=await s.text();return a?JSON.parse(a):null}function Ti(i){if(Array.isArray(i))return{rows:i};let e=i!=null?i:{},t=[e.rows,e.list,e.content,e.data,e.items,e.resultList].find(Array.isArray),n=[e.total,e.totalCount,e.totalElements,e.totCnt,e.count].find(o=>typeof o=="number");return{rows:t!=null?t:[],total:n}}function vn(i,e={}){return{async getRows(t){var s,a,l,d;let n=Math.max(1,t.end-t.start),o={start:t.start,end:t.end,page:Math.floor(t.start/n),size:n,sort:t.sort,filters:t.filters,quickFilter:t.quickFilter,...(a=(s=e.params)==null?void 0:s.call(e))!=null?a:{}},r=await No(i,(l=e.method)!=null?l:"POST",o,e);return((d=e.transform)!=null?d:Ti)(r)}}}async function Oo(i,e,t={}){var a,l;if(!i.hasChanges())return null;let{created:n,updated:o,deleted:r}=i.getModifiedRows(),s=await No(e,"POST",{created:n,updated:o,deleted:r,...(l=(a=t.params)==null?void 0:a.call(t))!=null?l:{}},t);return i.commitChanges(),s}async function Ho(i,e,t={}){var o;let{rows:n}=await vn(e,t).getRows({start:0,end:(o=t.maxRows)!=null?o:1e4,sort:[],filters:{},quickFilter:""});return i.setData(n),n}function Bo(i=document){var n,o;let e=(n=i.querySelector('meta[name="_csrf"]'))==null?void 0:n.content,t=((o=i.querySelector('meta[name="_csrf_header"]'))==null?void 0:o.content)||"X-CSRF-TOKEN";return e?{[t]:e}:{}}var zo={en:ie,ko:kn,"zh-CN":Mn,"zh-TW":En,ja:Sn,es:Cn,fr:Rn,de:xn,vi:Ln,th:Tn,id:In,ru:Dn,"pt-BR":Pn,it:An};for(let i of Object.values(zo))We(i);return Uo(Ii);})();