@freegridjs/core 1.10.0 → 1.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/cdn/freegrid.css +9 -18
- package/dist/cdn/freegrid.esm.js +19 -20
- package/dist/cdn/freegrid.min.js +24 -25
- package/dist/index.d.ts +3 -3
- package/dist/index.js +120 -472
- package/dist/locales/de.d.ts +1 -1
- package/dist/locales/de.js +0 -1
- package/dist/locales/en.d.ts +1 -1
- package/dist/locales/en.js +0 -1
- package/dist/locales/es.d.ts +1 -1
- package/dist/locales/es.js +0 -1
- package/dist/locales/fr.d.ts +1 -1
- package/dist/locales/fr.js +0 -1
- package/dist/locales/id.d.ts +1 -1
- package/dist/locales/id.js +0 -1
- package/dist/locales/it.d.ts +1 -1
- package/dist/locales/it.js +0 -1
- package/dist/locales/ja.d.ts +1 -1
- package/dist/locales/ja.js +0 -1
- package/dist/locales/ko.d.ts +1 -1
- package/dist/locales/ko.js +0 -1
- package/dist/locales/pt-BR.d.ts +1 -1
- package/dist/locales/pt-BR.js +0 -1
- package/dist/locales/ru.d.ts +1 -1
- package/dist/locales/ru.js +0 -1
- package/dist/locales/th.d.ts +1 -1
- package/dist/locales/th.js +0 -1
- package/dist/locales/vi.d.ts +1 -1
- package/dist/locales/vi.js +0 -1
- package/dist/locales/zh-CN.d.ts +1 -1
- package/dist/locales/zh-CN.js +0 -1
- package/dist/locales/zh-TW.d.ts +1 -1
- package/dist/locales/zh-TW.js +0 -1
- package/dist/styles.css +9 -18
- package/dist/{types-D5xV-gww.d.ts → types-8dux3w2p.d.ts} +13 -148
- package/package.json +1 -1
package/dist/cdn/freegrid.min.js
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
"use strict";var FreeGrid=(()=>{var Un=Object.defineProperty;var ms=Object.getOwnPropertyDescriptor;var ws=Object.getOwnPropertyNames;var ys=Object.prototype.hasOwnProperty;var bs=(o,e)=>{for(var t in e)Un(o,t,{get:e[t],enumerable:!0})},vs=(o,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of ws(e))!ys.call(o,r)&&r!==t&&Un(o,r,{get:()=>e[r],enumerable:!(n=ms(e,r))||n.enumerable});return o};var xs=o=>vs(Un({},"__esModule",{value:!0}),o);var ql={};bs(ql,{buildWorkbook:()=>jo,changeTracker:()=>Qi,connectLive:()=>ps,createGrid:()=>as,csrfHeaders:()=>fs,en:()=>fe,evaluateFormula:()=>Ut,exportWorkbook:()=>ls,formulaFunctions:()=>Fr,loadData:()=>us,locales:()=>gs,messageToTransaction:()=>Xo,parseCsv:()=>kn,readXlsx:()=>Mn,registerFormulaFunction:()=>Ir,registerLocale:()=>$t,renderChart:()=>Fn,resolveLocale:()=>gt,restDatasource:()=>_o,saveChanges:()=>cs,setLicenseKey:()=>Gi,verifyLicense:()=>No,version:()=>Je,writeXlsx:()=>Ke});var Cs={code:"en",noRows:"No rows to show",filter:"Filter",apply:"Apply",reset:"Reset",selectAll:"(Select all)",setSelected:"({n} selected)",noAggregate:"No aggregate",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",print:"Print\u2026",printLimited:"Printed the first {n} of {total} rows. Export to Excel or CSV for all of them.",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",exportPdf:"Export PDF",exportJson:"Export JSON",ai:{title:"AI assistant",placeholder:"Ask about the data or tell the grid what to do",send:"Send",thinking:"Working\u2026",undo:"Undo",undone:"Undone",failed:"The assistant did not answer",skipped:"Skipped",done:"Done"},cf:{title:"Conditional formatting",add:"Add rule",clear:"Clear rules",none:"No rules for this column",type:"Rule",style:"Format",wholeRow:"Whole row",count:"Count",align:"Align",aligns:{none:"Default",left:"Left",center:"Center",right:"Right"},types:{value:"Cell value",formula:"Formula",top:"Top",bottom:"Bottom",aboveAverage:"Above average",belowAverage:"Below average",duplicate:"Duplicate values",unique:"Unique values",dataBar:"Data bars",colorScale:"Color scale",iconSet:"Icon set"},ops:{notBetween:"Not between",notContains:"Does not contain"},styles:{red:"Light red fill",yellow:"Yellow fill",green:"Green fill",blue:"Blue fill",redText:"Red text",bold:"Bold"}},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"}},fe=Cs;var Zo=new Set;function G(o){Zo.has(o)||(Zo.add(o),console.warn(`[FreeGrid] ${o}`))}var Oe=new Map([["en",fe]]);function $t(o){Oe.set(o.code,o)}function Qo(o){let e=o.toLowerCase();for(let n of Oe.keys())if(n.toLowerCase()===e)return n;let t=e.split("-")[0];if(t==="zh"){if(/-(tw|hk|mo|hant)(-|$)/.test(e)&&Oe.has("zh-TW"))return"zh-TW";if(Oe.has("zh-CN"))return"zh-CN"}for(let n of Oe.keys())if(n.toLowerCase().split("-")[0]===t)return n}function ks(){var o;return typeof navigator=="undefined"?[]:(o=navigator.languages)!=null&&o.length?navigator.languages:navigator.language?[navigator.language]:[]}function Rs(o){var e,t;return{...fe,...o,code:(e=o.code)!=null?e:"en",ops:{...fe.ops,...(t=o.ops)!=null?t:{}}}}function gt(o,e=ks()){if(o&&typeof o=="object")return Rs(o);if(typeof o=="string"){let t=Qo(o);return t?Oe.get(t):(G(`locale "${o}" is not registered \u2014 import it from "@freegridjs/core/locales/${o}" and pass the pack (or call registerLocale). Falling back to "en".`),fe)}for(let t of e){let n=Qo(t);if(n)return Oe.get(n)}return fe}var Ss={code:"de",noRows:"Keine Zeilen vorhanden",filter:"Filter",apply:"Anwenden",reset:"Zur\xFCcksetzen",selectAll:"(Alle ausw\xE4hlen)",setSelected:"({n} ausgew\xE4hlt)",noAggregate:"Keine Aggregation",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",print:"Drucken\u2026",printLimited:"Die ersten {n} von {total} Zeilen wurden gedruckt. F\xFCr alle Zeilen nach Excel oder CSV 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",exportPdf:"Als PDF exportieren",exportJson:"Als JSON exportieren",ai:{title:"KI-Assistent",placeholder:"Fragen Sie zu den Daten oder sagen Sie der Tabelle, was sie tun soll",send:"Senden",thinking:"Wird bearbeitet\u2026",undo:"R\xFCckg\xE4ngig",undone:"R\xFCckg\xE4ngig gemacht",failed:"Der Assistent hat nicht geantwortet",skipped:"\xDCbersprungen",done:"Fertig"},cf:{title:"Bedingte Formatierung",add:"Regel hinzuf\xFCgen",clear:"Regeln l\xF6schen",none:"Keine Regeln f\xFCr diese Spalte",type:"Regel",style:"Format",wholeRow:"Ganze Zeile",count:"Anzahl",align:"Ausrichtung",aligns:{none:"Standard",left:"Links",center:"Zentriert",right:"Rechts"},types:{value:"Zellwert",formula:"Formel",top:"Obere",bottom:"Untere",aboveAverage:"\xDCber dem Durchschnitt",belowAverage:"Unter dem Durchschnitt",duplicate:"Doppelte Werte",unique:"Eindeutige Werte",dataBar:"Datenbalken",colorScale:"Farbskala",iconSet:"Symbolsatz"},ops:{notBetween:"Nicht zwischen",notContains:"Enth\xE4lt nicht"},styles:{red:"Hellrote F\xFCllung",yellow:"Gelbe F\xFCllung",green:"Gr\xFCne F\xFCllung",blue:"Blaue F\xFCllung",redText:"Roter Text",bold:"Fett"}},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"}},er=Ss;var Ms={code:"es",noRows:"No hay filas para mostrar",filter:"Filtro",apply:"Aplicar",reset:"Restablecer",selectAll:"(Seleccionar todo)",setSelected:"({n} seleccionados)",noAggregate:"Sin agregaci\xF3n",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",print:"Imprimir\u2026",printLimited:"Se imprimieron las primeras {n} de {total} filas. Exporte a Excel o CSV para obtenerlas todas.",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",exportPdf:"Exportar PDF",exportJson:"Exportar JSON",ai:{title:"Asistente de IA",placeholder:"Pregunte por los datos o diga a la tabla qu\xE9 hacer",send:"Enviar",thinking:"Procesando\u2026",undo:"Deshacer",undone:"Deshecho",failed:"El asistente no respondi\xF3",skipped:"Omitido",done:"Hecho"},cf:{title:"Formato condicional",add:"A\xF1adir regla",clear:"Borrar reglas",none:"No hay reglas para esta columna",type:"Regla",style:"Formato",wholeRow:"Fila completa",count:"Cantidad",align:"Alineaci\xF3n",aligns:{none:"Predeterminada",left:"Izquierda",center:"Centro",right:"Derecha"},types:{value:"Valor de celda",formula:"F\xF3rmula",top:"Superiores",bottom:"Inferiores",aboveAverage:"Por encima del promedio",belowAverage:"Por debajo del promedio",duplicate:"Valores duplicados",unique:"Valores \xFAnicos",dataBar:"Barras de datos",colorScale:"Escala de color",iconSet:"Conjunto de iconos"},ops:{notBetween:"No est\xE1 entre",notContains:"No contiene"},styles:{red:"Relleno rojo claro",yellow:"Relleno amarillo",green:"Relleno verde",blue:"Relleno azul",redText:"Texto rojo",bold:"Negrita"}},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"}},tr=Ms;var Es={code:"fr",noRows:"Aucune ligne \xE0 afficher",filter:"Filtre",apply:"Appliquer",reset:"R\xE9initialiser",selectAll:"(Tout s\xE9lectionner)",setSelected:"({n} s\xE9lectionn\xE9s)",noAggregate:"Aucune agr\xE9gation",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",print:"Imprimer\u2026",printLimited:"Les {n} premi\xE8res lignes sur {total} ont \xE9t\xE9 imprim\xE9es. Exportez vers Excel ou CSV pour toutes les avoir.",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",exportPdf:"Exporter en PDF",exportJson:"Exporter en JSON",ai:{title:"Assistant IA",placeholder:"Posez une question sur les donn\xE9es ou dites \xE0 la grille quoi faire",send:"Envoyer",thinking:"En cours\u2026",undo:"Annuler",undone:"Annul\xE9",failed:"L'assistant n'a pas r\xE9pondu",skipped:"Ignor\xE9",done:"Termin\xE9"},cf:{title:"Mise en forme conditionnelle",add:"Ajouter une r\xE8gle",clear:"Effacer les r\xE8gles",none:"Aucune r\xE8gle pour cette colonne",type:"R\xE8gle",style:"Format",wholeRow:"Ligne enti\xE8re",count:"Nombre",align:"Alignement",aligns:{none:"Par d\xE9faut",left:"Gauche",center:"Centre",right:"Droite"},types:{value:"Valeur de la cellule",formula:"Formule",top:"Premiers",bottom:"Derniers",aboveAverage:"Au-dessus de la moyenne",belowAverage:"En dessous de la moyenne",duplicate:"Valeurs en double",unique:"Valeurs uniques",dataBar:"Barres de donn\xE9es",colorScale:"Nuances de couleurs",iconSet:"Jeu d'ic\xF4nes"},ops:{notBetween:"Pas entre",notContains:"Ne contient pas"},styles:{red:"Remplissage rouge clair",yellow:"Remplissage jaune",green:"Remplissage vert",blue:"Remplissage bleu",redText:"Texte rouge",bold:"Gras"}},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"}},nr=Es;var As={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)",setSelected:"({n} \u4EF6\u9078\u629E)",noAggregate:"\u96C6\u8A08\u3057\u306A\u3044",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",print:"\u5370\u5237\u2026",printLimited:"\u5168 {total} \u884C\u306E\u3046\u3061\u6700\u521D\u306E {n} \u884C\u306E\u307F\u5370\u5237\u3057\u307E\u3057\u305F\u3002\u3059\u3079\u3066\u306E\u884C\u306F Excel \u307E\u305F\u306F CSV \u306B\u66F8\u304D\u51FA\u3057\u3066\u304F\u3060\u3055\u3044\u3002",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",exportPdf:"PDF \u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8",exportJson:"JSON \u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8",ai:{title:"AI \u30A2\u30B7\u30B9\u30BF\u30F3\u30C8",placeholder:"\u30C7\u30FC\u30BF\u306B\u3064\u3044\u3066\u8CEA\u554F\u3059\u308B\u304B\u3001\u30B0\u30EA\u30C3\u30C9\u3078\u306E\u6307\u793A\u3092\u5165\u529B",send:"\u9001\u4FE1",thinking:"\u51E6\u7406\u4E2D\u2026",undo:"\u5143\u306B\u623B\u3059",undone:"\u5143\u306B\u623B\u3057\u307E\u3057\u305F",failed:"\u30A2\u30B7\u30B9\u30BF\u30F3\u30C8\u304B\u3089\u5FDC\u7B54\u304C\u3042\u308A\u307E\u305B\u3093",skipped:"\u30B9\u30AD\u30C3\u30D7",done:"\u5B8C\u4E86"},cf:{title:"\u6761\u4EF6\u4ED8\u304D\u66F8\u5F0F",add:"\u30EB\u30FC\u30EB\u3092\u8FFD\u52A0",clear:"\u30EB\u30FC\u30EB\u3092\u30AF\u30EA\u30A2",none:"\u3053\u306E\u5217\u306B\u30EB\u30FC\u30EB\u306F\u3042\u308A\u307E\u305B\u3093",type:"\u30EB\u30FC\u30EB",style:"\u66F8\u5F0F",wholeRow:"\u884C\u5168\u4F53",count:"\u4EF6\u6570",align:"\u914D\u7F6E",aligns:{none:"\u65E2\u5B9A",left:"\u5DE6\u63C3\u3048",center:"\u4E2D\u592E\u63C3\u3048",right:"\u53F3\u63C3\u3048"},types:{value:"\u30BB\u30EB\u306E\u5024",formula:"\u6570\u5F0F",top:"\u4E0A\u4F4D",bottom:"\u4E0B\u4F4D",aboveAverage:"\u5E73\u5747\u3088\u308A\u4E0A",belowAverage:"\u5E73\u5747\u3088\u308A\u4E0B",duplicate:"\u91CD\u8907\u3059\u308B\u5024",unique:"\u4E00\u610F\u306E\u5024",dataBar:"\u30C7\u30FC\u30BF\u30D0\u30FC",colorScale:"\u30AB\u30E9\u30FC\u30B9\u30B1\u30FC\u30EB",iconSet:"\u30A2\u30A4\u30B3\u30F3\u30BB\u30C3\u30C8"},ops:{notBetween:"\u7BC4\u56F2\u5916",notContains:"\u542B\u307E\u306A\u3044"},styles:{red:"\u8584\u3044\u8D64\u306E\u5857\u308A\u3064\u3076\u3057",yellow:"\u9EC4\u8272\u306E\u5857\u308A\u3064\u3076\u3057",green:"\u7DD1\u306E\u5857\u308A\u3064\u3076\u3057",blue:"\u9752\u306E\u5857\u308A\u3064\u3076\u3057",redText:"\u8D64\u306E\u6587\u5B57",bold:"\u592A\u5B57"}},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"}},or=As;var Ts={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)",setSelected:"({n}\uAC1C \uC120\uD0DD\uB428)",noAggregate:"\uC9D1\uACC4 \uC548 \uD568",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",print:"\uC778\uC1C4\u2026",printLimited:"\uC804\uCCB4 {total}\uD589 \uC911 \uCC98\uC74C {n}\uD589\uB9CC \uC778\uC1C4\uD588\uC2B5\uB2C8\uB2E4. \uC804\uCCB4\uB294 \uC5D1\uC140\uC774\uB098 CSV\uB85C \uB0B4\uBCF4\uB0B4\uC138\uC694.",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",exportPdf:"PDF\uB85C \uB0B4\uBCF4\uB0B4\uAE30",exportJson:"JSON\uC73C\uB85C \uB0B4\uBCF4\uB0B4\uAE30",ai:{title:"AI \uC5B4\uC2DC\uC2A4\uD134\uD2B8",placeholder:"\uB370\uC774\uD130\uC5D0 \uB300\uD574 \uBB3B\uAC70\uB098 \uADF8\uB9AC\uB4DC\uC5D0 \uD560 \uC77C\uC744 \uB9D0\uD574 \uBCF4\uC138\uC694",send:"\uBCF4\uB0B4\uAE30",thinking:"\uCC98\uB9AC \uC911\u2026",undo:"\uB418\uB3CC\uB9AC\uAE30",undone:"\uB418\uB3CC\uB838\uC2B5\uB2C8\uB2E4",failed:"\uC5B4\uC2DC\uC2A4\uD134\uD2B8\uAC00 \uC751\uB2F5\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4",skipped:"\uAC74\uB108\uB700",done:"\uC644\uB8CC"},cf:{title:"\uC870\uAC74\uBD80 \uC11C\uC2DD",add:"\uADDC\uCE59 \uCD94\uAC00",clear:"\uADDC\uCE59 \uC9C0\uC6B0\uAE30",none:"\uC774 \uCEEC\uB7FC\uC5D0 \uADDC\uCE59\uC774 \uC5C6\uC2B5\uB2C8\uB2E4",type:"\uADDC\uCE59",style:"\uC11C\uC2DD",wholeRow:"\uD589 \uC804\uCCB4",count:"\uAC1C\uC218",align:"\uC815\uB82C",aligns:{none:"\uAE30\uBCF8",left:"\uC67C\uCABD",center:"\uAC00\uC6B4\uB370",right:"\uC624\uB978\uCABD"},types:{value:"\uC140 \uAC12",formula:"\uC218\uC2DD",top:"\uC0C1\uC704",bottom:"\uD558\uC704",aboveAverage:"\uD3C9\uADE0 \uCD08\uACFC",belowAverage:"\uD3C9\uADE0 \uBBF8\uB9CC",duplicate:"\uC911\uBCF5 \uAC12",unique:"\uACE0\uC720 \uAC12",dataBar:"\uB370\uC774\uD130 \uB9C9\uB300",colorScale:"\uC0C9\uC870",iconSet:"\uC544\uC774\uCF58 \uC9D1\uD569"},ops:{notBetween:"\uBC94\uC704 \uBC16",notContains:"\uD3EC\uD568\uD558\uC9C0 \uC54A\uC74C"},styles:{red:"\uC5F0\uD55C \uBE68\uAC15 \uCC44\uC6B0\uAE30",yellow:"\uB178\uB791 \uCC44\uC6B0\uAE30",green:"\uCD08\uB85D \uCC44\uC6B0\uAE30",blue:"\uD30C\uB791 \uCC44\uC6B0\uAE30",redText:"\uBE68\uAC15 \uAE00\uC790",bold:"\uAD75\uAC8C"}},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"}},rr=Ts;var Ps={code:"zh-CN",noRows:"\u6CA1\u6709\u53EF\u663E\u793A\u7684\u6570\u636E",filter:"\u7B5B\u9009",apply:"\u5E94\u7528",reset:"\u91CD\u7F6E",selectAll:"(\u5168\u9009)",setSelected:"(\u5DF2\u9009 {n} \u9879)",noAggregate:"\u4E0D\u6C47\u603B",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",print:"\u6253\u5370\u2026",printLimited:"\u4EC5\u6253\u5370\u4E86 {total} \u884C\u4E2D\u7684\u524D {n} \u884C\u3002\u5982\u9700\u5168\u90E8\uFF0C\u8BF7\u5BFC\u51FA\u4E3A Excel \u6216 CSV\u3002",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",exportPdf:"\u5BFC\u51FA PDF",exportJson:"\u5BFC\u51FA JSON",ai:{title:"AI \u52A9\u624B",placeholder:"\u8BE2\u95EE\u6570\u636E\uFF0C\u6216\u544A\u8BC9\u8868\u683C\u8981\u505A\u4EC0\u4E48",send:"\u53D1\u9001",thinking:"\u5904\u7406\u4E2D\u2026",undo:"\u64A4\u9500",undone:"\u5DF2\u64A4\u9500",failed:"\u52A9\u624B\u6CA1\u6709\u56DE\u5E94",skipped:"\u5DF2\u8DF3\u8FC7",done:"\u5B8C\u6210"},cf:{title:"\u6761\u4EF6\u683C\u5F0F",add:"\u6DFB\u52A0\u89C4\u5219",clear:"\u6E05\u9664\u89C4\u5219",none:"\u6B64\u5217\u6CA1\u6709\u89C4\u5219",type:"\u89C4\u5219",style:"\u683C\u5F0F",wholeRow:"\u6574\u884C",count:"\u6570\u91CF",align:"\u5BF9\u9F50",aligns:{none:"\u9ED8\u8BA4",left:"\u5DE6\u5BF9\u9F50",center:"\u5C45\u4E2D",right:"\u53F3\u5BF9\u9F50"},types:{value:"\u5355\u5143\u683C\u503C",formula:"\u516C\u5F0F",top:"\u524D",bottom:"\u540E",aboveAverage:"\u9AD8\u4E8E\u5E73\u5747\u503C",belowAverage:"\u4F4E\u4E8E\u5E73\u5747\u503C",duplicate:"\u91CD\u590D\u503C",unique:"\u552F\u4E00\u503C",dataBar:"\u6570\u636E\u6761",colorScale:"\u8272\u9636",iconSet:"\u56FE\u6807\u96C6"},ops:{notBetween:"\u4E0D\u4ECB\u4E8E",notContains:"\u4E0D\u5305\u542B"},styles:{red:"\u6D45\u7EA2\u8272\u586B\u5145",yellow:"\u9EC4\u8272\u586B\u5145",green:"\u7EFF\u8272\u586B\u5145",blue:"\u84DD\u8272\u586B\u5145",redText:"\u7EA2\u8272\u6587\u672C",bold:"\u52A0\u7C97"}},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"}},ir=Ps;var Ls={code:"zh-TW",noRows:"\u6C92\u6709\u53EF\u986F\u793A\u7684\u8CC7\u6599",filter:"\u7BE9\u9078",apply:"\u5957\u7528",reset:"\u91CD\u8A2D",selectAll:"(\u5168\u9078)",setSelected:"(\u5DF2\u9078 {n} \u9805)",noAggregate:"\u4E0D\u5F59\u7E3D",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",print:"\u5217\u5370\u2026",printLimited:"\u50C5\u5217\u5370\u4E86 {total} \u5217\u4E2D\u7684\u524D {n} \u5217\u3002\u5982\u9700\u5168\u90E8\uFF0C\u8ACB\u532F\u51FA\u70BA Excel \u6216 CSV\u3002",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",exportPdf:"\u532F\u51FA PDF",exportJson:"\u532F\u51FA JSON",ai:{title:"AI \u52A9\u7406",placeholder:"\u8A62\u554F\u8CC7\u6599\uFF0C\u6216\u544A\u8A34\u8868\u683C\u8981\u505A\u4EC0\u9EBC",send:"\u50B3\u9001",thinking:"\u8655\u7406\u4E2D\u2026",undo:"\u5FA9\u539F",undone:"\u5DF2\u5FA9\u539F",failed:"\u52A9\u7406\u6C92\u6709\u56DE\u61C9",skipped:"\u5DF2\u7565\u904E",done:"\u5B8C\u6210"},cf:{title:"\u8A2D\u5B9A\u683C\u5F0F\u5316\u7684\u689D\u4EF6",add:"\u65B0\u589E\u898F\u5247",clear:"\u6E05\u9664\u898F\u5247",none:"\u6B64\u6B04\u6C92\u6709\u898F\u5247",type:"\u898F\u5247",style:"\u683C\u5F0F",wholeRow:"\u6574\u5217",count:"\u6578\u91CF",align:"\u5C0D\u9F4A",aligns:{none:"\u9810\u8A2D",left:"\u9760\u5DE6\u5C0D\u9F4A",center:"\u7F6E\u4E2D",right:"\u9760\u53F3\u5C0D\u9F4A"},types:{value:"\u5132\u5B58\u683C\u503C",formula:"\u516C\u5F0F",top:"\u524D",bottom:"\u5F8C",aboveAverage:"\u9AD8\u65BC\u5E73\u5747",belowAverage:"\u4F4E\u65BC\u5E73\u5747",duplicate:"\u91CD\u8907\u503C",unique:"\u552F\u4E00\u503C",dataBar:"\u8CC7\u6599\u6A6B\u689D",colorScale:"\u8272\u968E",iconSet:"\u5716\u793A\u96C6"},ops:{notBetween:"\u4E0D\u4ECB\u65BC",notContains:"\u4E0D\u5305\u542B"},styles:{red:"\u6DFA\u7D05\u8272\u586B\u6EFF",yellow:"\u9EC3\u8272\u586B\u6EFF",green:"\u7DA0\u8272\u586B\u6EFF",blue:"\u85CD\u8272\u586B\u6EFF",redText:"\u7D05\u8272\u6587\u5B57",bold:"\u7C97\u9AD4"}},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"}},sr=Ls;var Is={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)",setSelected:"(\u0111\xE3 ch\u1ECDn {n})",noAggregate:"Kh\xF4ng t\u1ED5ng h\u1EE3p",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",print:"In\u2026",printLimited:"\u0110\xE3 in {n} h\xE0ng \u0111\u1EA7u ti\xEAn trong t\u1ED5ng s\u1ED1 {total} h\xE0ng. Xu\u1EA5t sang Excel ho\u1EB7c CSV \u0111\u1EC3 c\xF3 t\u1EA5t c\u1EA3.",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",exportPdf:"Xu\u1EA5t PDF",exportJson:"Xu\u1EA5t JSON",ai:{title:"Tr\u1EE3 l\xFD AI",placeholder:"H\u1ECFi v\u1EC1 d\u1EEF li\u1EC7u ho\u1EB7c b\u1EA3o b\u1EA3ng c\u1EA7n l\xE0m g\xEC",send:"G\u1EEDi",thinking:"\u0110ang x\u1EED l\xFD\u2026",undo:"Ho\xE0n t\xE1c",undone:"\u0110\xE3 ho\xE0n t\xE1c",failed:"Tr\u1EE3 l\xFD kh\xF4ng ph\u1EA3n h\u1ED3i",skipped:"\u0110\xE3 b\u1ECF qua",done:"Xong"},cf:{title:"\u0110\u1ECBnh d\u1EA1ng c\xF3 \u0111i\u1EC1u ki\u1EC7n",add:"Th\xEAm quy t\u1EAFc",clear:"X\xF3a quy t\u1EAFc",none:"C\u1ED9t n\xE0y ch\u01B0a c\xF3 quy t\u1EAFc",type:"Quy t\u1EAFc",style:"\u0110\u1ECBnh d\u1EA1ng",wholeRow:"C\u1EA3 h\xE0ng",count:"S\u1ED1 l\u01B0\u1EE3ng",align:"C\u0103n l\u1EC1",aligns:{none:"M\u1EB7c \u0111\u1ECBnh",left:"Tr\xE1i",center:"Gi\u1EEFa",right:"Ph\u1EA3i"},types:{value:"Gi\xE1 tr\u1ECB \xF4",formula:"C\xF4ng th\u1EE9c",top:"Cao nh\u1EA5t",bottom:"Th\u1EA5p nh\u1EA5t",aboveAverage:"Tr\xEAn trung b\xECnh",belowAverage:"D\u01B0\u1EDBi trung b\xECnh",duplicate:"Gi\xE1 tr\u1ECB tr\xF9ng l\u1EB7p",unique:"Gi\xE1 tr\u1ECB duy nh\u1EA5t",dataBar:"Thanh d\u1EEF li\u1EC7u",colorScale:"Thang m\xE0u",iconSet:"B\u1ED9 bi\u1EC3u t\u01B0\u1EE3ng"},ops:{notBetween:"Kh\xF4ng n\u1EB1m gi\u1EEFa",notContains:"Kh\xF4ng ch\u1EE9a"},styles:{red:"T\xF4 \u0111\u1ECF nh\u1EA1t",yellow:"T\xF4 v\xE0ng",green:"T\xF4 xanh l\xE1",blue:"T\xF4 xanh d\u01B0\u01A1ng",redText:"Ch\u1EEF \u0111\u1ECF",bold:"In \u0111\u1EADm"}},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"}},ar=Is;var Fs={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)",setSelected:"(\u0E40\u0E25\u0E37\u0E2D\u0E01 {n} \u0E23\u0E32\u0E22\u0E01\u0E32\u0E23)",noAggregate:"\u0E44\u0E21\u0E48\u0E23\u0E27\u0E21\u0E04\u0E48\u0E32",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",print:"\u0E1E\u0E34\u0E21\u0E1E\u0E4C\u2026",printLimited:"\u0E1E\u0E34\u0E21\u0E1E\u0E4C {n} \u0E41\u0E16\u0E27\u0E41\u0E23\u0E01\u0E08\u0E32\u0E01\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14 {total} \u0E41\u0E16\u0E27 \u0E2A\u0E48\u0E07\u0E2D\u0E2D\u0E01\u0E40\u0E1B\u0E47\u0E19 Excel \u0E2B\u0E23\u0E37\u0E2D CSV \u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E23\u0E31\u0E1A\u0E17\u0E38\u0E01\u0E41\u0E16\u0E27",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",exportPdf:"\u0E2A\u0E48\u0E07\u0E2D\u0E2D\u0E01 PDF",exportJson:"\u0E2A\u0E48\u0E07\u0E2D\u0E2D\u0E01 JSON",ai:{title:"\u0E1C\u0E39\u0E49\u0E0A\u0E48\u0E27\u0E22 AI",placeholder:"\u0E16\u0E32\u0E21\u0E40\u0E01\u0E35\u0E48\u0E22\u0E27\u0E01\u0E31\u0E1A\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25 \u0E2B\u0E23\u0E37\u0E2D\u0E1A\u0E2D\u0E01\u0E15\u0E32\u0E23\u0E32\u0E07\u0E27\u0E48\u0E32\u0E15\u0E49\u0E2D\u0E07\u0E17\u0E33\u0E2D\u0E30\u0E44\u0E23",send:"\u0E2A\u0E48\u0E07",thinking:"\u0E01\u0E33\u0E25\u0E31\u0E07\u0E17\u0E33\u0E07\u0E32\u0E19\u2026",undo:"\u0E40\u0E25\u0E34\u0E01\u0E17\u0E33",undone:"\u0E40\u0E25\u0E34\u0E01\u0E17\u0E33\u0E41\u0E25\u0E49\u0E27",failed:"\u0E1C\u0E39\u0E49\u0E0A\u0E48\u0E27\u0E22\u0E44\u0E21\u0E48\u0E15\u0E2D\u0E1A\u0E01\u0E25\u0E31\u0E1A",skipped:"\u0E02\u0E49\u0E32\u0E21",done:"\u0E40\u0E2A\u0E23\u0E47\u0E08\u0E41\u0E25\u0E49\u0E27"},cf:{title:"\u0E01\u0E32\u0E23\u0E08\u0E31\u0E14\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E15\u0E32\u0E21\u0E40\u0E07\u0E37\u0E48\u0E2D\u0E19\u0E44\u0E02",add:"\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E01\u0E0E",clear:"\u0E25\u0E49\u0E32\u0E07\u0E01\u0E0E",none:"\u0E44\u0E21\u0E48\u0E21\u0E35\u0E01\u0E0E\u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C\u0E19\u0E35\u0E49",type:"\u0E01\u0E0E",style:"\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A",wholeRow:"\u0E17\u0E31\u0E49\u0E07\u0E41\u0E16\u0E27",count:"\u0E08\u0E33\u0E19\u0E27\u0E19",align:"\u0E01\u0E32\u0E23\u0E08\u0E31\u0E14\u0E41\u0E19\u0E27",aligns:{none:"\u0E04\u0E48\u0E32\u0E40\u0E23\u0E34\u0E48\u0E21\u0E15\u0E49\u0E19",left:"\u0E0B\u0E49\u0E32\u0E22",center:"\u0E01\u0E36\u0E48\u0E07\u0E01\u0E25\u0E32\u0E07",right:"\u0E02\u0E27\u0E32"},types:{value:"\u0E04\u0E48\u0E32\u0E43\u0E19\u0E40\u0E0B\u0E25\u0E25\u0E4C",formula:"\u0E2A\u0E39\u0E15\u0E23",top:"\u0E2A\u0E39\u0E07\u0E2A\u0E38\u0E14",bottom:"\u0E15\u0E48\u0E33\u0E2A\u0E38\u0E14",aboveAverage:"\u0E2A\u0E39\u0E07\u0E01\u0E27\u0E48\u0E32\u0E04\u0E48\u0E32\u0E40\u0E09\u0E25\u0E35\u0E48\u0E22",belowAverage:"\u0E15\u0E48\u0E33\u0E01\u0E27\u0E48\u0E32\u0E04\u0E48\u0E32\u0E40\u0E09\u0E25\u0E35\u0E48\u0E22",duplicate:"\u0E04\u0E48\u0E32\u0E17\u0E35\u0E48\u0E0B\u0E49\u0E33\u0E01\u0E31\u0E19",unique:"\u0E04\u0E48\u0E32\u0E17\u0E35\u0E48\u0E44\u0E21\u0E48\u0E0B\u0E49\u0E33",dataBar:"\u0E41\u0E16\u0E1A\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25",colorScale:"\u0E23\u0E30\u0E14\u0E31\u0E1A\u0E2A\u0E35",iconSet:"\u0E0A\u0E38\u0E14\u0E44\u0E2D\u0E04\u0E2D\u0E19"},ops:{notBetween:"\u0E44\u0E21\u0E48\u0E2D\u0E22\u0E39\u0E48\u0E23\u0E30\u0E2B\u0E27\u0E48\u0E32\u0E07",notContains:"\u0E44\u0E21\u0E48\u0E21\u0E35"},styles:{red:"\u0E40\u0E15\u0E34\u0E21\u0E2A\u0E35\u0E41\u0E14\u0E07\u0E2D\u0E48\u0E2D\u0E19",yellow:"\u0E40\u0E15\u0E34\u0E21\u0E2A\u0E35\u0E40\u0E2B\u0E25\u0E37\u0E2D\u0E07",green:"\u0E40\u0E15\u0E34\u0E21\u0E2A\u0E35\u0E40\u0E02\u0E35\u0E22\u0E27",blue:"\u0E40\u0E15\u0E34\u0E21\u0E2A\u0E35\u0E19\u0E49\u0E33\u0E40\u0E07\u0E34\u0E19",redText:"\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E2A\u0E35\u0E41\u0E14\u0E07",bold:"\u0E15\u0E31\u0E27\u0E2B\u0E19\u0E32"}},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"}},lr=Fs;var Ds={code:"id",noRows:"Tidak ada data",filter:"Filter",apply:"Terapkan",reset:"Atur ulang",selectAll:"(Pilih semua)",setSelected:"({n} dipilih)",noAggregate:"Tanpa agregasi",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",print:"Cetak\u2026",printLimited:"Dicetak {n} baris pertama dari {total}. Ekspor ke Excel atau CSV untuk semua baris.",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",exportPdf:"Ekspor PDF",exportJson:"Ekspor JSON",ai:{title:"Asisten AI",placeholder:"Tanyakan tentang data atau beri tahu grid apa yang harus dilakukan",send:"Kirim",thinking:"Memproses\u2026",undo:"Urungkan",undone:"Diurungkan",failed:"Asisten tidak menjawab",skipped:"Dilewati",done:"Selesai"},cf:{title:"Pemformatan bersyarat",add:"Tambah aturan",clear:"Hapus aturan",none:"Tidak ada aturan untuk kolom ini",type:"Aturan",style:"Format",wholeRow:"Seluruh baris",count:"Jumlah",align:"Perataan",aligns:{none:"Bawaan",left:"Kiri",center:"Tengah",right:"Kanan"},types:{value:"Nilai sel",formula:"Rumus",top:"Teratas",bottom:"Terbawah",aboveAverage:"Di atas rata-rata",belowAverage:"Di bawah rata-rata",duplicate:"Nilai duplikat",unique:"Nilai unik",dataBar:"Bilah data",colorScale:"Skala warna",iconSet:"Set ikon"},ops:{notBetween:"Tidak di antara",notContains:"Tidak berisi"},styles:{red:"Isian merah muda",yellow:"Isian kuning",green:"Isian hijau",blue:"Isian biru",redText:"Teks merah",bold:"Tebal"}},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"}},dr=Ds;var $s={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)",setSelected:"(\u0432\u044B\u0431\u0440\u0430\u043D\u043E: {n})",noAggregate:"\u0411\u0435\u0437 \u0430\u0433\u0440\u0435\u0433\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F",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",print:"\u041F\u0435\u0447\u0430\u0442\u044C\u2026",printLimited:"\u041D\u0430\u043F\u0435\u0447\u0430\u0442\u0430\u043D\u044B \u043F\u0435\u0440\u0432\u044B\u0435 {n} \u0438\u0437 {total} \u0441\u0442\u0440\u043E\u043A. \u0427\u0442\u043E\u0431\u044B \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u0432\u0441\u0435, \u044D\u043A\u0441\u043F\u043E\u0440\u0442\u0438\u0440\u0443\u0439\u0442\u0435 \u0432 Excel \u0438\u043B\u0438 CSV.",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",exportPdf:"\u042D\u043A\u0441\u043F\u043E\u0440\u0442 \u0432 PDF",exportJson:"\u042D\u043A\u0441\u043F\u043E\u0440\u0442 \u0432 JSON",ai:{title:"\u0418\u0418-\u043F\u043E\u043C\u043E\u0449\u043D\u0438\u043A",placeholder:"\u0421\u043F\u0440\u043E\u0441\u0438\u0442\u0435 \u043E \u0434\u0430\u043D\u043D\u044B\u0445 \u0438\u043B\u0438 \u0441\u043A\u0430\u0436\u0438\u0442\u0435 \u0442\u0430\u0431\u043B\u0438\u0446\u0435, \u0447\u0442\u043E \u0441\u0434\u0435\u043B\u0430\u0442\u044C",send:"\u041E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C",thinking:"\u041E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0430\u2026",undo:"\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C",undone:"\u041E\u0442\u043C\u0435\u043D\u0435\u043D\u043E",failed:"\u041F\u043E\u043C\u043E\u0449\u043D\u0438\u043A \u043D\u0435 \u043E\u0442\u0432\u0435\u0442\u0438\u043B",skipped:"\u041F\u0440\u043E\u043F\u0443\u0449\u0435\u043D\u043E",done:"\u0413\u043E\u0442\u043E\u0432\u043E"},cf:{title:"\u0423\u0441\u043B\u043E\u0432\u043D\u043E\u0435 \u0444\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435",add:"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043F\u0440\u0430\u0432\u0438\u043B\u043E",clear:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u043F\u0440\u0430\u0432\u0438\u043B\u0430",none:"\u0414\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u0441\u0442\u043E\u043B\u0431\u0446\u0430 \u043D\u0435\u0442 \u043F\u0440\u0430\u0432\u0438\u043B",type:"\u041F\u0440\u0430\u0432\u0438\u043B\u043E",style:"\u0424\u043E\u0440\u043C\u0430\u0442",wholeRow:"\u0412\u0441\u044F \u0441\u0442\u0440\u043E\u043A\u0430",count:"\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E",align:"\u0412\u044B\u0440\u0430\u0432\u043D\u0438\u0432\u0430\u043D\u0438\u0435",aligns:{none:"\u041F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E",left:"\u041F\u043E \u043B\u0435\u0432\u043E\u043C\u0443 \u043A\u0440\u0430\u044E",center:"\u041F\u043E \u0446\u0435\u043D\u0442\u0440\u0443",right:"\u041F\u043E \u043F\u0440\u0430\u0432\u043E\u043C\u0443 \u043A\u0440\u0430\u044E"},types:{value:"\u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0447\u0435\u0439\u043A\u0438",formula:"\u0424\u043E\u0440\u043C\u0443\u043B\u0430",top:"\u041F\u0435\u0440\u0432\u044B\u0435",bottom:"\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0435",aboveAverage:"\u0412\u044B\u0448\u0435 \u0441\u0440\u0435\u0434\u043D\u0435\u0433\u043E",belowAverage:"\u041D\u0438\u0436\u0435 \u0441\u0440\u0435\u0434\u043D\u0435\u0433\u043E",duplicate:"\u041F\u043E\u0432\u0442\u043E\u0440\u044F\u044E\u0449\u0438\u0435\u0441\u044F \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F",unique:"\u0423\u043D\u0438\u043A\u0430\u043B\u044C\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F",dataBar:"\u0413\u0438\u0441\u0442\u043E\u0433\u0440\u0430\u043C\u043C\u044B",colorScale:"\u0426\u0432\u0435\u0442\u043E\u0432\u0430\u044F \u0448\u043A\u0430\u043B\u0430",iconSet:"\u041D\u0430\u0431\u043E\u0440\u044B \u0437\u043D\u0430\u0447\u043A\u043E\u0432"},ops:{notBetween:"\u0412\u043D\u0435 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u0430",notContains:"\u041D\u0435 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442"},styles:{red:"\u0421\u0432\u0435\u0442\u043B\u043E-\u043A\u0440\u0430\u0441\u043D\u0430\u044F \u0437\u0430\u043B\u0438\u0432\u043A\u0430",yellow:"\u0416\u0451\u043B\u0442\u0430\u044F \u0437\u0430\u043B\u0438\u0432\u043A\u0430",green:"\u0417\u0435\u043B\u0451\u043D\u0430\u044F \u0437\u0430\u043B\u0438\u0432\u043A\u0430",blue:"\u0421\u0438\u043D\u044F\u044F \u0437\u0430\u043B\u0438\u0432\u043A\u0430",redText:"\u041A\u0440\u0430\u0441\u043D\u044B\u0439 \u0442\u0435\u043A\u0441\u0442",bold:"\u041F\u043E\u043B\u0443\u0436\u0438\u0440\u043D\u044B\u0439"}},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"}},cr=$s;var Ns={code:"pt-BR",noRows:"Nenhuma linha para mostrar",filter:"Filtro",apply:"Aplicar",reset:"Limpar",selectAll:"(Selecionar tudo)",setSelected:"({n} selecionados)",noAggregate:"Sem agrega\xE7\xE3o",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",print:"Imprimir\u2026",printLimited:"Foram impressas as primeiras {n} de {total} linhas. Exporte para Excel ou CSV para obter todas.",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",exportPdf:"Exportar PDF",exportJson:"Exportar JSON",ai:{title:"Assistente de IA",placeholder:"Pergunte sobre os dados ou diga \xE0 grade o que fazer",send:"Enviar",thinking:"Processando\u2026",undo:"Desfazer",undone:"Desfeito",failed:"O assistente n\xE3o respondeu",skipped:"Ignorado",done:"Pronto"},cf:{title:"Formata\xE7\xE3o condicional",add:"Adicionar regra",clear:"Limpar regras",none:"Nenhuma regra para esta coluna",type:"Regra",style:"Formato",wholeRow:"Linha inteira",count:"Quantidade",align:"Alinhamento",aligns:{none:"Padr\xE3o",left:"Esquerda",center:"Centro",right:"Direita"},types:{value:"Valor da c\xE9lula",formula:"F\xF3rmula",top:"Primeiros",bottom:"\xDAltimos",aboveAverage:"Acima da m\xE9dia",belowAverage:"Abaixo da m\xE9dia",duplicate:"Valores duplicados",unique:"Valores \xFAnicos",dataBar:"Barras de dados",colorScale:"Escala de cor",iconSet:"Conjunto de \xEDcones"},ops:{notBetween:"N\xE3o est\xE1 entre",notContains:"N\xE3o cont\xE9m"},styles:{red:"Preenchimento vermelho claro",yellow:"Preenchimento amarelo",green:"Preenchimento verde",blue:"Preenchimento azul",redText:"Texto vermelho",bold:"Negrito"}},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"}},ur=Ns;var Os={code:"it",noRows:"Nessuna riga da mostrare",filter:"Filtro",apply:"Applica",reset:"Reimposta",selectAll:"(Seleziona tutto)",setSelected:"({n} selezionati)",noAggregate:"Nessuna aggregazione",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",print:"Stampa\u2026",printLimited:"Stampate le prime {n} di {total} righe. Esporta in Excel o CSV per averle tutte.",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",exportPdf:"Esporta PDF",exportJson:"Esporta JSON",ai:{title:"Assistente IA",placeholder:"Chiedi qualcosa sui dati o di\u2019 alla griglia cosa fare",send:"Invia",thinking:"In corso\u2026",undo:"Annulla",undone:"Annullato",failed:"L'assistente non ha risposto",skipped:"Saltato",done:"Fatto"},cf:{title:"Formattazione condizionale",add:"Aggiungi regola",clear:"Cancella regole",none:"Nessuna regola per questa colonna",type:"Regola",style:"Formato",wholeRow:"Intera riga",count:"Numero",align:"Allineamento",aligns:{none:"Predefinito",left:"Sinistra",center:"Centro",right:"Destra"},types:{value:"Valore cella",formula:"Formula",top:"Primi",bottom:"Ultimi",aboveAverage:"Sopra la media",belowAverage:"Sotto la media",duplicate:"Valori duplicati",unique:"Valori univoci",dataBar:"Barre dei dati",colorScale:"Scala di colori",iconSet:"Set di icone"},ops:{notBetween:"Non compreso tra",notContains:"Non contiene"},styles:{red:"Riempimento rosso chiaro",yellow:"Riempimento giallo",green:"Riempimento verde",blue:"Riempimento blu",redText:"Testo rosso",bold:"Grassetto"}},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"}},fr=Os;function K(o){return o==null||typeof o=="string"&&o.trim()===""||typeof o=="number"&&Number.isNaN(o)}var hr=o=>String(o).padStart(2,"0");function he(o){if(K(o))return null;if(typeof o=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(o))return o;let e=o instanceof Date?o:new Date(o);return Number.isNaN(e.getTime())?null:`${e.getFullYear()}-${hr(e.getMonth()+1)}-${hr(e.getDate())}`}function re(o){var e;return K(o)?"":o instanceof Date?(e=he(o))!=null?e:"":String(o)}var xe=()=>!0;function Nt(o){var e;switch(o.type){case"combined":{let t=(Array.isArray(o.conditions)?o.conditions:[]).map(Nt);return t.length?o.operator==="or"?n=>t.some(r=>r(n)):n=>t.every(r=>r(n)):xe}case"text":{let t=((e=o.value)!=null?e:"").toLowerCase(),n=r=>K(r)?"":String(r).toLowerCase();switch(o.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 K;case"notBlank":return r=>!K(r)}return xe}case"number":{let t=r=>K(r)?NaN:Number(r);if(o.op==="blank")return r=>Number.isNaN(t(r));if(o.op==="notBlank")return r=>!Number.isNaN(t(r));let n=o.value;if(n==null||Number.isNaN(n))return xe;switch(o.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=o.valueTo;if(r==null||Number.isNaN(r))return xe;let i=Math.min(n,r),s=Math.max(n,r);return a=>{let l=t(a);return l>=i&&l<=s}}}return xe}case"date":{if(o.op==="blank")return r=>he(r)===null;if(o.op==="notBlank")return r=>he(r)!==null;let t=o.value;if(!t)return xe;let n=r=>he(r);switch(o.op){case"equals":return r=>n(r)===t;case"before":return r=>{let i=n(r);return i!==null&&i<t};case"after":return r=>{let i=n(r);return i!==null&&i>t};case"between":{let r=o.valueTo;if(!r)return xe;let i=t<r?t:r,s=t<r?r:t;return a=>{let l=n(a);return l!==null&&l>=i&&l<=s}}}return xe}case"set":{let t=new Set(o.values.map(re));return n=>t.has(re(n))}}return xe}function pr(o){let e=o.trim().toLowerCase();return e?e.split(/\s+/):[]}function gr(o,e){return o.every(t=>e.includes(t))}function Kn(o,e,t){let n=[];for(let r of Array.isArray(o==null?void 0:o.conditions)?o.conditions:[]){if(!r||typeof r!="object")continue;if("conditions"in r){let a=Kn(r,e,t);a&&n.push(a);continue}let i=e(r.colId);if(!i||!r.model)continue;let s=Nt(r.model);n.push(a=>s(t(i,a)))}return n.length?o.operator==="or"?r=>n.some(i=>i(r)):r=>n.every(i=>i(r)):null}var mr=new Map,wr=new Map;function Te(o,e){let t=`${o}|${e!=null?e:""}`,n=wr.get(t);return n||(n=new Intl.NumberFormat(o,e==null?void 0:{maximumFractionDigits:e}),wr.set(t,n)),n}function Bs(o){var r;if(o==="integer")return{maximumFractionDigits:0};if(o==="percent")return{style:"percent"};if(o.startsWith("currency:"))return{style:"currency",currency:o.slice(9)};if(!/^[#0,]*(\.[#0]+)?%?$/.test(o)||!/[#0]/.test(o))return null;let e=o.endsWith("%"),t=e?o.slice(0,-1):o,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 Ot={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 ye(o){if(K(o))return null;if(o instanceof Date)return Number.isNaN(o.getTime())?null:o;if(typeof o=="string"){let t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(o);if(t)return new Date(Number(t[1]),Number(t[2])-1,Number(t[3]))}if(typeof o!="string"&&typeof o!="number")return null;let e=new Date(o);return Number.isNaN(e.getTime())?null:e}function Hs(o,e,t){var n;switch(o){case"number":{let r={};if(typeof e=="string"){let s=Bs(e);s||G(`unknown number format "${e}"`),r=s!=null?s:{}}else e&&(r=e);let i=new Intl.NumberFormat(t,r);return s=>{if(K(s))return"";let a=typeof s=="number"?s:Number(s);return Number.isNaN(a)?String(s):i.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=ye(l);if(!d)return K(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 r=Ot.date;typeof e=="string"?(Ot[e]||G(`unknown date format "${e}"`),r=(n=Ot[e])!=null?n:Ot.date):e&&(r=e);let i=new Intl.DateTimeFormat(t,r);return s=>{let a=ye(s);return a?i.format(a):K(s)?"":String(s)}}case"boolean":return r=>r===!0?"\u2713":r===!1?"\u2717":"";default:return r=>K(r)?"":r instanceof Date?r.toISOString():String(r)}}var Gs=o=>Array.isArray(o)?o.join(", "):o==null?"":String(o),_n=new WeakMap,Xn=new WeakMap;function yr(){_n=new WeakMap,Xn=new WeakMap}function mt(o,e,t,n=o.format){if(e===o.type&&n===o.format)return ne(o,t);if(n!==o.format&&typeof n!="string")return ne({...o,type:e,format:n},t);let r=Xn.get(o);r||Xn.set(o,r=new Map);let i=`${e!=null?e:""}|${n===o.format?"":`=${n}`}`,s=r.get(i);return s||r.set(i,s={...o,type:e,format:n}),ne(s,t)}function ne(o,e){var s;if(o.sparkline)return Gs;let t=o.format,n=_n.get(o);if(n&&n.locale===e&&n.type===o.type&&n.format===t)return n.fmt;let r=`${e}|${(s=o.type)!=null?s:"text"}|${typeof t=="string"?t:JSON.stringify(t!=null?t:null)}`,i=mr.get(r);return i||(i=Hs(o.type,t,e),mr.set(r,i)),_n.set(o,{locale:e,type:o.type,format:t,fmt:i}),i}var ae="__fg_select__",br={id:ae,header:"",width:44,minWidth:44,maxWidth:44,pinned:"left",sortable:!1,resizable:!1,filter:!1},Be="__fg_drag__",vr={id:Be,header:"",width:28,minWidth:28,maxWidth:28,pinned:"left",sortable:!1,resizable:!1,filter:!1,chooser:!1},Le="__fg_rownum__",xr=(o=52,e="#")=>({id:Le,header:e,width:o,minWidth:o,maxWidth:o,pinned:"left",sortable:!1,resizable:!1,filter:!1,chooser:!1}),B=o=>o===ae||o===Be||o===Le,zs=120,Vs=40,qs=["left","center","right"];function me(o){if(B(o.id)||o.filter===!1)return null;if(o.filter)return o.filter;switch(o.type){case"number":return"number";case"date":return"date";case"boolean":return"set";default:return"text"}}function Ht(o,e,t){let n=o.editable;if(typeof n!="function")return!!n;try{return!!n({value:o.valueGetter?o.valueGetter(e):o.field?e[o.field]:void 0,row:e,rowIndex:t,column:o})}catch{return!1}}var He=o=>o.id!==ae&&o.sortable!==!1,Gt=o=>o.id!==ae&&o.resizable!==!1;function Pe(o,e){var r,i;let t=(r=o.minWidth)!=null?r:Vs,n=(i=o.maxWidth)!=null?i:1/0;return Math.round(Math.min(n,Math.max(t,e)))}function Cr(o){return o.children?1+Math.max(0,...o.children.map(Cr)):1}var Bt=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.declared=[];this.setDefs(e)}setDefs(e){yr(),this.defs=e,this.byId=new Map;let t=0,n=(i,s,a)=>{var f,p,h,y,m;let l=Array.isArray(i.children)&&i.children.length>0,d=t++,c=(f=i.id)!=null?f:l?`g${d}`:i.field;if(c||(c=`c${d}`,G(`column #${d} has neither "field" nor "id"; using "${c}"`)),this.byId.has(c)){let g=1;for(;this.byId.has(`${c}_${g}`);)g++;G(`duplicate column id "${c}"; renamed to "${c}_${g}"`),c=`${c}_${g}`}let u={id:c,def:i,parent:s,children:null,depth:a,width:Pe(i,(p=i.width)!=null?p:zs),flex:i.flex&&i.flex>0?i.flex:null,hide:(h=i.hide)!=null?h:!1,pinned:(m=(y=i.pinned)!=null?y:s==null?void 0:s.pinned)!=null?m:null,open:!!i.openByDefault};return this.byId.set(c,u),l&&(u.children=r(i.children).map(g=>n(g,u,a+1))),u},r=i=>{let s=i.filter(a=>a!==null&&typeof a=="object");return s.length!==i.length&&G("columns contain entries that are not objects; they were skipped"),s};this.roots_=r(e).map(i=>n(i,null,0)),this.declared=this.leafNodes().map(i=>i.id),this.depth=Math.max(1,...this.roots_.map(Cr)),this.relayout()}updateDefs(e){var s,a,l,d;let t=new Map(this.byId),n=this.declared,r=this.leafNodes().map(c=>c.id);this.setDefs(e);for(let[c,u]of this.byId){let f=t.get(c);if(!f||!!f.children!=!!u.children)continue;let p=f.def,h=u.def;p.width===h.width&&p.flex===h.flex&&p.minWidth===h.minWidth&&p.maxWidth===h.maxWidth&&(u.width=f.width,u.flex=f.flex),((s=p.hide)!=null?s:!1)===((a=h.hide)!=null?a:!1)&&(u.hide=f.hide),p.pinned===h.pinned&&((l=f.parent)==null?void 0:l.def.pinned)===((d=u.parent)==null?void 0:d.def.pinned)&&(u.pinned=f.pinned),!!p.openByDefault==!!h.openByDefault&&(u.open=f.open)}let i=(c,u)=>c.length===u.length&&c.every((f,p)=>f===u[p]);i(n,this.declared)&&!i(r,n)?this.applyState(r.map(c=>({colId:c}))):this.relayout()}setContainerWidth(e){if(e===this.containerWidth)return!1;this.containerWidth=e;let t=()=>this.displayed().map(r=>`${r.width}${r.region}`).join(),n=t();return this.relayout(),n!==t()}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=Pe(n.def,t),this.relayout(),n.width)}setPinned(e,t){let n=this.byId.get(e);!n||n.children||B(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(s=>s.id===e);if(r<0)return;let[i]=n.splice(r,1);n.splice(Math.max(0,Math.min(n.length,t)),0,i),this.relayout()}headerCells(e){var r,i,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:(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:(s=(i=a.def.header)!=null?i: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=>!B(e.id)).map(e=>{var t,n,r;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:(r=e.pinned)!=null?r:null}})}applyState(e){let t=new Map;e.forEach((i,s)=>{t.set(i.colId,s);let a=this.byId.get(i.colId);!a||a.children||B(i.colId)||(typeof i.width=="number"&&Number.isFinite(i.width)&&(a.flex=null,a.width=Pe(a.def,i.width)),typeof i.hide=="boolean"&&(a.hide=i.hide),"pinned"in i&&(a.pinned=i.pinned==="left"||i.pinned==="right"?i.pinned:null))}),t.set(Le,-3),t.set(Be,-2),t.set(ae,-1);let n=i=>{var s;return i.children?Math.min(1/0,...i.children.map(n)):(s=t.get(i.id))!=null?s:1/0},r=i=>{let s=i.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),i.splice(0,i.length,...s.map(a=>a.n));for(let a of i)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}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 f;let e=this.leafNodes().filter(p=>!p.hide&&this.shownByGroups(p)),t=e.reduce((p,h)=>p+(h.flex?0:h.width),0),n=new Map,r=e.filter(p=>p.flex),i=Math.max(0,this.containerWidth-t);for(;r.length;){let p=r.reduce((w,b)=>w+b.flex,0),h=w=>Math.floor(i*w.flex/p),y=r.reduce((w,b)=>w+Pe(b.def,h(b))-h(b),0),m=r.filter(w=>{let b=Pe(w.def,h(w))-h(w);return y>0?b>0:y<0?b<0:!1});if(!m.length){let w=i;for(let b of r){let v=Pe(b.def,h(b));n.set(b,v),w-=v}for(let b of r){if(w<1)break;let v=n.get(b);Pe(b.def,v+1)===v+1&&(n.set(b,v+1),w--)}break}let g=0;for(let w of m){let b=Pe(w.def,h(w));n.set(w,b),g+=b}i=Math.max(0,i-g),r=r.filter(w=>!m.includes(w))}let s=p=>{var h;return(h=n.get(p))!=null?h:p.width},a={left:[],center:[],right:[]};this.leafById=new Map;let l=0,d=e.reduce((p,h)=>p+(h.pinned?s(h):0),0),c=this.containerWidth>0&&d>this.containerWidth*.75,u={left:0,center:0,right:0};for(let p of qs){let h=c?"center":p;for(let y of e){if(((f=y.pinned)!=null?f:"center")!==p)continue;let m={id:y.id,def:y.def,node:y,width:s(y),region:h,left:u[h],index:l++};u[h]+=m.width,a[h].push(m),this.leafById.set(y.id,m)}}this.layout=a}};var X=class extends Error{constructor(t){super(t);this.code=t}},Ws=/^#(?:[A-Z/0]+[!?]|N\/A)$/,nt=o=>typeof o=="string"&&Ws.test(o);function js(o){let e=[],t=0;for(;t<o.length;){let n=o[t];if(/\s/.test(n))t++;else if(/[0-9.]/.test(n)){let r=/^(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?/i.exec(o.slice(t));if(!r)throw new X("#ERROR!");e.push({t:"num",v:Number(r[0])}),t+=r[0].length}else if(n==='"'){let r="";for(t++;;){if(t>=o.length)throw new X("#ERROR!");if(o[t]==='"'){if(o[t+1]==='"'){r+='"',t+=2;continue}t++;break}r+=o[t++]}e.push({t:"str",v:r})}else if(n==="["){let r=o.indexOf("]",t);if(r<0)throw new X("#ERROR!");e.push({t:"id",v:o.slice(t+1,r)}),t=r+1}else if(/[A-Za-z_À-]/.test(n)){let r=/^[A-Za-z_À-][\wÀ-.]*/.exec(o.slice(t));e.push({t:"id",v:r[0]}),t+=r[0].length}else{let r=o.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===";"?",":n}),t++;else throw new X("#ERROR!")}}return e}var pe=o=>o==null||o==="";function q(o){if(typeof o=="number")return o;if(typeof o=="boolean")return o?1:0;if(pe(o))return 0;if(o instanceof Date)return o.getTime();if(typeof o=="string"&&o.trim()!==""&&Number.isFinite(Number(o)))return Number(o);throw new X("#VALUE!")}var ee=o=>pe(o)?"":typeof o=="boolean"?o?"TRUE":"FALSE":o instanceof Date?wt(o):String(o),Fe=o=>typeof o=="boolean"?o:typeof o=="string"&&/^(true|false)$/i.test(o)?o.toLowerCase()==="true":q(o)!==0;function zt(o,e,t="near"){let n=Math.trunc(e),r=t==="near"?Math.round:t==="up"?Math.ceil:Math.floor,i=(a,l)=>{let[d,c="0"]=String(a).split("e");return+`${d}e${Number(c)+l}`},s=i(r(i(Math.abs(o),n)),-n);return o<0?-s:s}function yt(o,e){let t=n=>typeof n=="number"||typeof n=="boolean"||pe(n);return t(o)&&t(e)?q(o)-q(e):o instanceof Date||e instanceof Date?q(we(o))-q(we(e)):ee(o).localeCompare(ee(e),void 0,{sensitivity:"accent"})}var Ie=o=>o.flatMap(e=>Array.isArray(e)?e:[e]);var Ge=o=>o.flatMap(e=>Array.isArray(e)?Pr(e).filter(t=>typeof t=="number"&&Number.isFinite(t)):pe(e)?[]:[q(e)]);function Pr(o){let e=o.find(nt);if(e!==void 0)throw new X(e);return o}function we(o){var e,t,n;if(o instanceof Date)return o;if(typeof o=="number")return new Date(o);if(typeof o=="string"){let r=/^(\d{4})-(\d{2})-(\d{2})(?:[T ](\d{2}):(\d{2})(?::(\d{2}))?)?/.exec(o.trim());if(r)return new Date(+r[1],+r[2]-1,+r[3],+((e=r[4])!=null?e:0),+((t=r[5])!=null?t:0),+((n=r[6])!=null?n:0))}throw new X("#VALUE!")}var qt=o=>String(o).padStart(2,"0");function wt(o){return`${o.getFullYear()}-${qt(o.getMonth()+1)}-${qt(o.getDate())}`}var Us=864e5,kr=o=>Math.round(Date.UTC(o.getFullYear(),o.getMonth(),o.getDate())/Us);function Lr(o){var i;if(typeof o!="string")return s=>yt(s,o)===0&&!pe(s)==!pe(o);let e=/^(<=|>=|<>|<|>|=)?(.*)$/s.exec(o),t=(i=e[1])!=null?i:"=",n=e[2],r=n.trim()!==""&&Number.isFinite(Number(n))?Number(n):n;if((t==="="||t==="<>")&&typeof r=="string"&&/[*?]/.test(r)){let s=new RegExp(`^${r.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".")}$`,"i");return t==="="?a=>s.test(ee(a)):a=>!s.test(ee(a))}return s=>{if(t==="="&&r==="")return pe(s);if(t==="<>"&&r==="")return!pe(s);if(typeof r=="number"&&typeof s!="number"&&!(typeof s=="string"&&s.trim()!==""&&Number.isFinite(Number(s))))return t==="<>";let a;try{a=yt(s,r)}catch{return!1}return t==="="?a===0:t==="<>"?a!==0:t==="<"?a<0:t===">"?a>0:t==="<="?a<=0:a>=0}}function De(o){if(Array.isArray(o))return o;throw new X("#VALUE!")}function Rr(o,e,t){let n=De(e),r=Lr(t),i=[],s=Pr(o.length?De(o[0]):n);return n.forEach((a,l)=>{let d=s[l];r(a)&&typeof d=="number"&&Number.isFinite(d)&&i.push(d)}),i}var be={SUM:o=>Ge(o).reduce((e,t)=>e+t,0),AVG:o=>{let e=Ge(o);if(!e.length)throw new X("#DIV/0!");return e.reduce((t,n)=>t+n,0)/e.length},MIN:o=>{let e=Ge(o);return e.length?e.reduce((t,n)=>Math.min(t,n)):0},MAX:o=>{let e=Ge(o);return e.length?e.reduce((t,n)=>Math.max(t,n)):0},MEDIAN:o=>{let e=Ge(o).sort((n,r)=>n-r);if(!e.length)throw new X("#NUM!");let t=e.length>>1;return e.length%2?e[t]:(e[t-1]+e[t])/2},COUNT:o=>Ie(o).filter(e=>typeof e=="number"&&Number.isFinite(e)).length,COUNTA:o=>Ie(o).filter(e=>!pe(e)).length,COUNTBLANK:o=>Ie(o).filter(pe).length,PRODUCT:o=>Ge(o).reduce((e,t)=>e*t,1),ROUND:o=>zt(q(o[0]),o.length>1?q(o[1]):0),ROUNDUP:o=>zt(q(o[0]),o.length>1?q(o[1]):0,"up"),ROUNDDOWN:o=>zt(q(o[0]),o.length>1?q(o[1]):0,"down"),INT:o=>Math.floor(q(o[0])),TRUNC:o=>zt(q(o[0]),o.length>1?q(o[1]):0,q(o[0])<0?"up":"down"),ABS:o=>Math.abs(q(o[0])),SIGN:o=>Math.sign(q(o[0])),SQRT:o=>{let e=q(o[0]);if(e<0)throw new X("#NUM!");return Math.sqrt(e)},POWER:o=>q(o[0])**q(o[1]),EXP:o=>Math.exp(q(o[0])),LN:o=>{let e=q(o[0]);if(e<=0)throw new X("#NUM!");return Math.log(e)},LOG10:o=>{let e=q(o[0]);if(e<=0)throw new X("#NUM!");return Math.log10(e)},MOD:o=>{let e=q(o[1]);if(e===0)throw new X("#DIV/0!");let t=q(o[0]);return t-e*Math.floor(t/e)},CEILING:o=>{let e=o.length>1?q(o[1]):1;return e===0?0:Math.ceil(q(o[0])/e)*e},FLOOR:o=>{let e=o.length>1?q(o[1]):1;return e===0?0:Math.floor(q(o[0])/e)*e},PI:()=>Math.PI,CONCAT:o=>Ie(o).map(ee).join(""),TEXTJOIN:o=>Ie(o.slice(2)).filter(e=>!Fe(o[1])||!pe(e)).map(ee).join(ee(o[0])),LEN:o=>ee(o[0]).length,LEFT:o=>ee(o[0]).slice(0,o.length>1?Math.max(0,q(o[1])):1),RIGHT:o=>{let e=ee(o[0]),t=o.length>1?Math.max(0,q(o[1])):1;return t?e.slice(-t):""},MID:o=>ee(o[0]).substr(Math.max(0,q(o[1])-1),Math.max(0,q(o[2]))),UPPER:o=>ee(o[0]).toUpperCase(),LOWER:o=>ee(o[0]).toLowerCase(),PROPER:o=>ee(o[0]).toLowerCase().replace(/(^|[^\p{L}])(\p{L})/gu,(e,t,n)=>t+n.toUpperCase()),TRIM:o=>ee(o[0]).trim().replace(/\s+/g," "),SUBSTITUTE:o=>ee(o[0]).split(ee(o[1])).join(ee(o[2])),REPLACE:o=>{let e=ee(o[0]),t=Math.max(0,q(o[1])-1);return e.slice(0,t)+ee(o[3])+e.slice(t+Math.max(0,q(o[2])))},REPT:o=>ee(o[0]).repeat(Math.max(0,Math.min(1e4,q(o[1])))),FIND:o=>{let e=ee(o[1]).indexOf(ee(o[0]),o.length>2?q(o[2])-1:0);if(e<0)throw new X("#VALUE!");return e+1},SEARCH:o=>{let e=ee(o[1]).toLowerCase().indexOf(ee(o[0]).toLowerCase(),o.length>2?q(o[2])-1:0);if(e<0)throw new X("#VALUE!");return e+1},VALUE:o=>q(ee(o[0]).replace(/,/g,"")),TEXT:o=>{var s,a;let e=o[0],t=ee(o[1]),n=(a=(s=/0\.(0+)/.exec(t))==null?void 0:s[1].length)!=null?a:0;if(/[yd]/i.test(t)){let l=we(e);return t.replace(/yyyy/gi,String(l.getFullYear())).replace(/mm/g,qt(l.getMonth()+1)).replace(/dd/gi,qt(l.getDate()))}let r=q(e);return t.includes("%")?(r*100).toFixed(n)+"%":t.includes(",")?r.toLocaleString("en-US",{minimumFractionDigits:n,maximumFractionDigits:n}):r.toFixed(n)},AND:o=>Ie(o).every(Fe),OR:o=>Ie(o).some(Fe),XOR:o=>Ie(o).filter(Fe).length%2===1,NOT:o=>!Fe(o[0]),ISBLANK:o=>pe(o[0]),ISNUMBER:o=>typeof o[0]=="number"&&Number.isFinite(o[0]),ISTEXT:o=>typeof o[0]=="string"&&!nt(o[0]),ISERROR:o=>nt(o[0]),TODAY:()=>wt(new Date),NOW:()=>new Date,DATE:o=>wt(new Date(q(o[0]),q(o[1])-1,q(o[2]))),YEAR:o=>we(o[0]).getFullYear(),MONTH:o=>we(o[0]).getMonth()+1,DAY:o=>we(o[0]).getDate(),WEEKDAY:o=>we(o[0]).getDay()+1,DAYS:o=>kr(we(o[0]))-kr(we(o[1])),EDATE:o=>{let e=we(o[0]),t=e.getDate(),n=new Date(e.getFullYear(),e.getMonth()+q(o[1]),1);return n.setDate(Math.min(t,new Date(n.getFullYear(),n.getMonth()+1,0).getDate())),wt(n)},EOMONTH:o=>{let e=we(o[0]);return wt(new Date(e.getFullYear(),e.getMonth()+q(o[1])+1,0))},SUMIF:o=>Rr(o.slice(2),De(o[0]),o[1]).reduce((e,t)=>e+t,0),COUNTIF:o=>{let e=Lr(o[1]);return De(o[0]).filter(e).length},AVERAGEIF:o=>{let e=Rr(o.slice(2),De(o[0]),o[1]);if(!e.length)throw new X("#DIV/0!");return e.reduce((t,n)=>t+n,0)/e.length},LOOKUP:o=>{let e=De(o[1]),t=o.length>2?De(o[2]):e,n=e.findIndex(r=>{try{return yt(r,o[0])===0}catch{return!1}});if(n<0){if(o.length>3)return o[3];throw new X("#N/A")}return t[n]},RANK:o=>{let e=q(o[0]),t=Ge([De(o[1])]),n=o.length>2&&Fe(o[2]);return 1+t.filter(r=>n?r<e:r>e).length}};be.AVERAGE=be.AVG;be.XLOOKUP=be.LOOKUP;be.CONCATENATE=be.CONCAT;var Wt=new Map;function Ir(o,e){typeof o!="string"||!/^[A-Za-z_][\w.]*$/.test(o)||typeof e!="function"||(Wt.set(o.toUpperCase(),e),et.clear())}function Fr(){return[...new Set([...Object.keys(be),...Ks,..._s,...Wt.keys()])].sort()}var Ks=["IF","IFS","IFERROR","IFNA","SWITCH","CHOOSE"],_s=["COL","PREV","NEXT","ROW"],Jn=class{constructor(e){this.tokens=e;this.i=0}parse(){let e=this.comparison();if(this.i<this.tokens.length)throw new X("#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))return{k:"bin",op:t,a:e,b:this.concat()};return e}concat(){let e=this.additive();for(;this.take("&");)e={k:"bin",op:"&",a:e,b:this.additive()};return e}additive(){let e=this.multiplicative();for(;;)if(this.take("+"))e={k:"bin",op:"+",a:e,b:this.multiplicative()};else if(this.take("-"))e={k:"bin",op:"-",a:e,b:this.multiplicative()};else return e}multiplicative(){let e=this.unary();for(;;)if(this.take("*"))e={k:"bin",op:"*",a:e,b:this.unary()};else if(this.take("/"))e={k:"bin",op:"/",a:e,b:this.unary()};else if(this.take("%"))e={k:"bin",op:"%",a:e,b:this.unary()};else return e}unary(){return this.take("-")?{k:"un",op:"-",a:this.unary()}:this.take("+")?{k:"un",op:"+",a:this.unary()}:this.power()}power(){let e=this.primary();return this.take("^")?{k:"bin",op:"^",a:e,b:this.unary()}:e}primary(){let e=this.tokens[this.i++];if(!e)throw new X("#ERROR!");if(e.t==="num"||e.t==="str")return{k:"lit",v:e.v};if(e.t==="op"){if(e.v!=="(")throw new X("#ERROR!");let n=this.comparison();if(!this.take(")"))throw new X("#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 X("#ERROR!")}let r=t.toUpperCase();if((r==="COL"||r==="PREV"||r==="NEXT")&&(!n.length||n[0].k!=="ref"))throw new X("#ERROR!");let i=r!=="PREV"&&r!=="NEXT"&&r!=="ROW"&&n.every(s=>Vt(s,r==="COL"));return{k:"call",name:r,args:n,rowFree:i}}return/^(true|false)$/i.test(t)?{k:"lit",v:t.toLowerCase()==="true"}:{k:"ref",name:t}}};function Vt(o,e=!1){return o.k==="lit"?!0:o.k==="ref"?e:o.k==="un"?Vt(o.a):o.k==="bin"?Vt(o.a)&&Vt(o.b):o.rowFree}var et=new Map,Xs=2e3;function Dr(o){let e=et.get(o);if(!e){try{e=new Jn(js(o.slice(1))).parse()}catch(t){e=t instanceof X?t:new X("#ERROR!")}et.size>=Xs&&et.delete(et.keys().next().value),et.set(o,e)}if(e instanceof X)throw e;return e}var Sr=new WeakMap;function $e(o){let e=o.rows(),t=o.version(),n=Sr.get(o);return(!n||n.data!==e||n.version!==t)&&(n={data:e,version:t,index:null,cols:new Map,values:new WeakMap,rowFree:new Map,filled:new Map},Sr.set(o,n)),n}var Yn=new WeakMap;function $r(o,e){for(let t of o)t&&typeof t=="object"&&Yn.set(t,e)}var Nr=32;function Zn(o,e){let{row:t,scope:n}=o;if(t&&Object.hasOwn(t,e)){let i=t[e];return typeof i=="string"&&i.startsWith("=")&&i.length>1?Mr(o,e,i):i}let r=n==null?void 0:n.computed(e);if(r!==void 0)return Mr(o,e,r);throw new X("#REF!")}function Mr(o,e,t){if(o.seen.has(e)||o.depth>=Nr)throw new X("#CYCLE!");let n;if(o.memo.has(e))n=o.memo.get(e);else{let r=o.scope?$e(o.scope).values.get(o.row):void 0;r!=null&&r.has(e)?n=r.get(e):(n=jt(t,{...o,seen:new Set([...o.seen,e]),depth:o.depth+1}),o.memo.set(e,n))}if(nt(n))throw new X(n);return n}function Js(o,e,t){var l,d;let n=o.scope;if(!n)throw new X("#REF!");let r=$e(n);if(e<0||e>=r.data.length)return null;let i=r.data[e],s=(l=r.filled.get(t))!=null?l:-1;if(e>s+1&&e-s>1)for(let c=s+1;c<e;c++)bt(n,r,r.data[c],t);let a=bt(n,r,i,t);if(e>((d=r.filled.get(t))!=null?d:-1)&&r.filled.set(t,e),nt(a))throw new X(a);return a}function bt(o,e,t,n){let r=e.values.get(t);if(r!=null&&r.has(n))return r.get(n);let i;try{i=Zn({row:t,scope:o,seen:new Set,depth:0,memo:new Map},n)}catch(s){i=s instanceof X?s.code:"#ERROR!"}return r||e.values.set(t,r=new Map),r.set(n,i),i}function Er(o){if(!o.scope)throw new X("#REF!");let e=$e(o.scope);e.index||(e.index=new Map(e.data.map((n,r)=>[n,r])));let t=e.index.get(o.row);if(t===void 0)throw new X("#REF!");return t}function Ys(o,e){if(!o.scope)throw new X("#REF!");let t=o.scope,n=$e(t),r=n.cols.get(e);if(r||(n.cols.set(e,Ar),r=n.data.map(i=>bt(t,n,i,e)),n.cols.set(e,r)),r===Ar)throw new X("#CYCLE!");return r}var Ar=[];function tt(o,e){switch(o.k){case"lit":return o.v;case"ref":return Zn(e,o.name);case"un":return o.op==="-"?-q(tt(o.a,e)):q(tt(o.a,e));case"bin":{let t=tt(o.a,e),n=tt(o.b,e);switch(o.op){case"+":return q(t)+q(n);case"-":return q(t)-q(n);case"*":return q(t)*q(n);case"/":case"%":{let r=q(n);if(r===0)throw new X("#DIV/0!");return o.op==="/"?q(t)/r:q(t)%r}case"^":return q(t)**q(n);case"&":return ee(t)+ee(n);default:{let r=yt(t,n);return o.op==="="?r===0:o.op==="<>"?r!==0:o.op==="<"?r<0:o.op===">"?r>0:o.op==="<="?r<=0:r>=0}}}case"call":{if(o.rowFree&&e.scope){let t=$e(e.scope);if(t.rowFree.has(o)){let n=t.rowFree.get(o);if(n instanceof X)throw n;return n}try{let n=Tr(o,e);return t.rowFree.set(o,n),n}catch(n){throw n instanceof X&&t.rowFree.set(o,n),n}}return Tr(o,e)}}}function Tr(o,e){var a;let{name:t,args:n}=o,r=l=>tt(n[l],e);switch(t){case"IF":{if(n.length<2)throw new X("#ERROR!");return Fe(r(0))?r(1):n.length>2?r(2):!1}case"IFS":for(let l=0;l+1<n.length;l+=2)if(Fe(r(l)))return r(l+1);throw new X("#N/A");case"IFERROR":case"IFNA":try{let l=r(0);return nt(l)&&(t==="IFERROR"||l==="#N/A")?n.length>1?r(1):"":l}catch(l){if(!(l instanceof X)||t==="IFNA"&&l.code!=="#N/A")throw l;return n.length>1?r(1):""}case"SWITCH":{let l=r(0);for(let d=1;d+1<n.length;d+=2)if(yt(l,r(d))===0)return r(d+1);if(n.length%2===0)return r(n.length-1);throw new X("#N/A")}case"CHOOSE":{let l=Math.trunc(q(r(0)));if(l<1||l>=n.length)throw new X("#VALUE!");return r(l)}case"COL":return Ys(e,n[0].name);case"ROW":return Er(e)+1;case"PREV":case"NEXT":{let l=n.length>1?Math.trunc(q(r(1))):1,d=Er(e)+(t==="PREV"?-l:l),c=n[0].name;if(t==="NEXT"&&e.depth>=Nr)throw new X("#CYCLE!");return t==="PREV"?Js(e,d,c):Zs(e,d,c)}}let i=(a=Object.hasOwn(be,t)?be[t]:void 0)!=null?a:Wt.get(t);if(!i)throw new X("#NAME?");let s=n.map((l,d)=>r(d));if(Wt.has(t)&&!Object.hasOwn(be,t))try{return i(s)}catch(l){throw l instanceof X?l:new X("#VALUE!")}return i(s)}function Zs(o,e,t){let n=o.scope?$e(o.scope):null;if(!n)throw new X("#REF!");return e<0||e>=n.data.length?null:Zn({...o,row:n.data[e],seen:new Set,depth:o.depth+1,memo:new Map},t)}function jt(o,e){try{let t=tt(Dr(o),e);return typeof t=="number"&&!Number.isFinite(t)?"#NUM!":Array.isArray(t)?"#VALUE!":t}catch(t){return t instanceof RangeError?"#CYCLE!":t instanceof X?t.code:"#ERROR!"}}function Ut(o,e,t=new Set,n=0,r=new Map,i=null){return jt(o,{row:e,scope:i,seen:t,depth:n,memo:r})}function Qn(o,e){var r,i;let t=(r=Yn.get(o))!=null?r:null,n=(i=o.id)!=null?i:o.field;if(o.formula){if(t&&n){let s=$e(t);return bt(t,s,e,n)}return jt(o.formula,{row:e,scope:t,seen:new Set(n?[n]:[]),depth:0,memo:new Map})}return t?bt(t,$e(t),e,o.field):jt(e[o.field],{row:e,scope:t,seen:new Set([o.field]),depth:0,memo:new Map})}var eo=o=>{var e,t;return!!((t=(e=Yn.get(o))==null?void 0:e.off)!=null&&t.call(e))},ze=o=>typeof o=="string"&&o.length>1&&o.startsWith("=");function Or(o){let e;try{e=Dr(o)}catch{return null}let t=new Set,n=r=>{r.k==="ref"?t.add(r.name):r.k==="un"?n(r.a):r.k==="bin"?(n(r.a),n(r.b)):r.k==="call"&&r.args.forEach(n)};return n(e),[...t]}function j(o,e){var n;if(o.valueGetter)try{return o.valueGetter(e)}catch{G(`valueGetter of column "${(n=o.id)!=null?n:o.field}" threw; rendering an empty cell`);return}if(typeof o.formula=="string"&&ze(o.formula)&&!eo(o))return Qn(o,e);if(o.field==null)return;let t=e[o.field];return o.formulas&&ze(t)&&!eo(o)?Qn(o,e):t}var vt=["left","center","right"],Br=[[">=","gte"],["<=","lte"],["<>","ne"],["!=","ne"],[">","gt"],["<","lt"],["=","eq"]],Hr=[[">","after"],["<","before"],["=","equals"]],Qs=/^(.+?)\s*(?:~|\.\.)\s*(.+)$/,Kt="~many",to=o=>{let e=Number(o.replace(/[,\s₩$€¥]/g,""));return o.trim()!==""&&Number.isFinite(e)?e:null},no=o=>{let e=/^(\d{4})[-./]\s*(\d{1,2})[-./]\s*(\d{1,2})\.?$/.exec(o.trim());if(!e)return null;let t=Number(e[1]),n=Number(e[2]),r=Number(e[3]);return n<1||n>12||r<1||r>new Date(Date.UTC(t,n,0)).getUTCDate()?null:`${e[1]}-${e[2].padStart(2,"0")}-${e[3].padStart(2,"0")}`};function ea(o,e){let t=e.trim();if(!t)return null;if(o==="text")return{type:"text",op:"contains",value:t};let n=Qs.exec(t);if(o==="number"){if(n){let l=to(n[1]),d=to(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=Br.find(([l])=>t.startsWith(l)),a=to(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=no(n[1]),a=no(n[2]);return!s||!a?void 0:{type:"date",op:"between",value:s<a?s:a,valueTo:s<a?a:s}}let r=Hr.find(([s])=>t.startsWith(s)),i=no(r?t.slice(r[0].length):t);return i?{type:"date",op:r?r[1]:"equals",value:i}:void 0}function ta(o){var e,t,n;if(!o)return"";if(o.type==="text")return o.op==="contains"&&(e=o.value)!=null?e:"";if(o.type==="number"){if(o.op==="between")return`${o.value}~${o.valueTo}`;let r=(t=Br.find(([,i])=>i===o.op))==null?void 0:t[0];return r&&o.value!==void 0?`${r==="="?"":r}${o.value}`:""}if(o.type==="date"){if(o.op==="between")return`${o.value}~${o.valueTo}`;let r=(n=Hr.find(([,i])=>i===o.op))==null?void 0:n[0];return r&&o.value?`${r==="="?"":r}${o.value}`:""}return""}var _t=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 vt)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,r=e.displayed(),i=`${n}|${t.state.locale.code}|${r.map(s=>`${s.id}:${s.left}:${s.width}:${s.region}`).join(",")}`;if(i!==this.layout){this.layout=i;for(let s of vt){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.data=t.state.data,this.rebuilt=!0}else t.state.data!==this.data&&(this.data=t.state.data,this.refreshLists());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 vt)for(let n of this.inners[t].querySelectorAll("[data-col]")){let r=n.dataset.col,i=e[r];if(n.closest(".fg-filter-cell").classList.toggle("fg-filter-active",!!i),!(n===n.ownerDocument.activeElement||n.getRootNode().activeElement===n)){if(n instanceof HTMLSelectElement){let s=(i==null?void 0:i.type)==="set"&&i.values.length>1?i.values.length:0,a=n.querySelector(`option[value="${Kt}"]`);if(s)a||(a=C("option","",{value:Kt}),a.disabled=!0,n.options[0].after(a)),a.textContent=this.grid.store.state.locale.setSelected.replace("{n}",String(s)),n.value=Kt;else{a==null||a.remove();let l=(i==null?void 0:i.type)==="set"&&i.values.length===1?JSON.stringify(i.values[0]):"";[...n.options].some(d=>d.value===l)&&(n.value=l)}}else n.value=ta(i);n.classList.remove("fg-filter-bad")}}}}refreshLists(){var e;for(let t of vt)for(let n of this.inners[t].querySelectorAll("select[data-col]")){let r=(e=this.grid.columns.getNode(n.dataset.col))==null?void 0:e.def;if(!r)continue;let i=n.value;if(this.fillOptions(n,r),i===Kt){this.rebuilt=!0;continue}if(i&&![...n.options].some(s=>s.value===i)){let s=C("option","",{value:i});s.textContent=String(JSON.parse(i)),n.append(s)}n.value=i}}fillOptions(e,t){let n=C("option","",{value:""});n.textContent=this.grid.store.state.locale.selectAll;let r=this.distinct(t).map(i=>{let s=C("option","",{value:JSON.stringify(i)});return s.textContent=i===!0?"\u2713":i===!1?"\u2717":String(i),s});e.replaceChildren(n,...r)}cell(e,t){var d,c;let n=C("div","fg-filter-cell",{role:"gridcell"});n.style.left=`${e.left}px`,n.style.width=`${e.width}px`,n.style.height=`${t}px`;let r=B(e.id)?null:me(e.def);if(!r)return n;let s=`${this.grid.store.state.locale.filter}: ${(c=(d=e.def.header)!=null?d:e.def.field)!=null?c:e.id}`;if(r==="set"){let u=C("select","fg-filter-input",{"aria-label":s});return u.dataset.col=e.id,this.fillOptions(u,e.def),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,r==="number"&&(a.placeholder=">0, 10~20"),r==="date"&&(a.placeholder=">2026-01-01");let l=()=>{let u=ea(r,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 r=j(e,n);if(r==null||r==="")continue;let i=JSON.stringify(r);if(t.has(i)||t.set(i,r),t.size>=200)break}return[...t.values()].sort((n,r)=>String(n).localeCompare(String(r)))}setTransform(e){this.inners.center.style.transform=`translateX(${-e}px)`}destroy(){for(let e of this.timers.values())clearTimeout(e);for(let e of vt)this.inners[e].remove()}};var Ve=o=>typeof o=="number"?Number.isFinite(o)?o:null:typeof o=="string"&&o.trim()!==""&&Number.isFinite(Number(o))?Number(o):o instanceof Date?o.getTime():null,na=new Set(["top","bottom","aboveAverage","belowAverage","duplicate","unique","dataBar","colorScale","iconSet"]),Gr={arrows:[{char:"\u25B2",color:"#16a34a",label:"up"},{char:"\u25B6",color:"#d97706",label:"level"},{char:"\u25BC",color:"#dc2626",label:"down"}],traffic:[{char:"\u25CF",color:"#16a34a",label:"good"},{char:"\u25CF",color:"#f59e0b",label:"fair"},{char:"\u25CF",color:"#dc2626",label:"poor"}],signs:[{char:"\u2714",color:"#16a34a",label:"good"},{char:"!",color:"#d97706",label:"fair"},{char:"\u2716",color:"#dc2626",label:"poor"}]};function ro(o){let e=/^#?([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(o.trim());if(!e)return null;let t=e[1].length===3?[...e[1]].map(n=>n+n).join(""):e[1];return[0,2,4].map(n=>parseInt(t.slice(n,n+2),16))}function oo(o,e,t){let n=ro(o),r=ro(e);return!n||!r?t<.5?o:e:`#${n.map((s,a)=>Math.round(s+(r[a]-s)*Math.max(0,Math.min(1,t)))).map(s=>s.toString(16).padStart(2,"0")).join("")}`}function xt(o){return o==null?"":o instanceof Date?o.toISOString():String(o)}function oa(o,e){var d;let t=(d=o.op)!=null?d:"eq";if(t==="blank")return K(e);if(t==="notBlank")return!K(e);if(t==="contains"||t==="notContains"||t==="startsWith"||t==="endsWith"){let c=xt(e).toLowerCase(),u=xt(o.value).toLowerCase(),f=t==="startsWith"?c.startsWith(u):t==="endsWith"?c.endsWith(u):c.includes(u);return t==="notContains"?!f:f}if(K(e))return t==="ne";let n=Ve(e),r=Ve(o.value),i=Ve(o.valueTo);if(n!==null&&r!==null)switch(t){case"eq":return n===r;case"ne":return n!==r;case"gt":return n>r;case"gte":return n>=r;case"lt":return n<r;case"lte":return n<=r;case"between":case"notBetween":{if(i===null)return!1;let c=n>=Math.min(r,i)&&n<=Math.max(r,i);return t==="between"?c:!c}}let s=xt(e).toLowerCase(),a=xt(o.value).toLowerCase(),l=xt(o.valueTo).toLowerCase();switch(t){case"eq":return s===a;case"ne":return s!==a;case"gt":return s>a;case"gte":return s>=a;case"lt":return s<a;case"lte":return s<=a;case"between":return s>=a&&s<=l;case"notBetween":return s<a||s>l}return!1}var Xt=class{constructor(e){this.deps=e;this.stats=new Map;this.statsKey=[];this.rowCache=new WeakMap}dependsOnOtherRows(){return this.deps.rules().some(e=>{var t;return e&&(na.has((t=e.type)!=null?t:"value")||e.type==="formula")})}fresh(){let e=[this.deps.rows(),this.deps.version(),this.deps.rules()];e.every((t,n)=>t===this.statsKey[n])||(this.statsKey=e,this.stats.clear(),this.rowCache=new WeakMap)}statsOf(e){var n,r,i;let t=this.stats.get(e);if(!t){let s=[],a=new Map;for(let d of this.deps.rows()){let c=this.deps.value(e,d),u=Ve(c);if(u!==null&&s.push(u),!K(c)){let f=re(c);a.set(f,((n=a.get(f))!=null?n:0)+1)}}s.sort((d,c)=>d-c);let l=s.reduce((d,c)=>d+c,0);t={min:(r=s[0])!=null?r:0,max:(i=s[s.length-1])!=null?i:0,avg:s.length?l/s.length:0,sorted:s,counts:a},this.stats.set(e,t)}return t}test(e,t,n,r){var s,a,l,d;let i=(s=e.type)!=null?s:"value";switch(i){case"value":return oa(e,n);case"formula":{if(typeof e.formula!="string")return!1;let c=this.deps.formula(e.formula.startsWith("=")?e.formula:`=${e.formula}`,r);return c===!0||typeof c=="number"&&c!==0}case"top":case"bottom":{let c=Ve(n);if(c===null)return!1;let u=this.statsOf(t);if(!u.sorted.length)return!1;let f=Math.max(1,e.percent?Math.ceil(u.sorted.length*((a=e.rank)!=null?a:10)/100):Math.floor((l=e.rank)!=null?l:10));return i==="top"?c>=u.sorted[Math.max(0,u.sorted.length-f)]:c<=u.sorted[Math.min(u.sorted.length-1,f-1)]}case"aboveAverage":case"belowAverage":{let c=Ve(n);if(c===null)return!1;let u=this.statsOf(t).avg;return i==="aboveAverage"?c>u:c<u}case"duplicate":case"unique":{if(K(n))return!1;let c=(d=this.statsOf(t).counts.get(re(n)))!=null?d:0;return i==="duplicate"?c>1:c===1}}return!1}rowStyle(e){if(this.rowCache.has(e))return this.rowCache.get(e);let t=null;for(let n of this.deps.rules()){if(!(n!=null&&n.row)||!Array.isArray(n.columns)||!n.columns.length)continue;let r=n.columns[0];if(this.test(n,r,this.deps.value(r,e),e)&&(t=zr(t!=null?t:{},n.style),n.stopIfTrue))break}return this.rowCache.set(e,t),t}cell(e,t,n){var a,l,d;let r=this.deps.rules();if(!r.length)return null;this.fresh();let i=null,s=this.rowStyle(t);s&&(i={style:{...s}});for(let c of r){if(!c||c.row||!Array.isArray(c.columns)||!c.columns.includes(e))continue;let u=(a=c.type)!=null?a:"value";if(u==="dataBar"||u==="colorScale"||u==="iconSet"){let f=Ve(n);if(f===null)continue;let p=this.statsOf(e),h=typeof c.min=="number"?c.min:p.min,y=typeof c.max=="number"?c.max:p.max,m=y===h?1:Math.max(0,Math.min(1,(f-h)/(y-h)));if(i!=null||(i={style:{}}),u==="dataBar"){let g=h<0&&y>0?-h/(y-h):h>=0?0:1,w=y===h?1:m;i.bar={from:Math.min(g,w),to:Math.max(g,w),color:c.color||"var(--fg-accent)"}}else if(u==="colorScale"){let g=Array.isArray(c.colors)&&c.colors.length>=2?c.colors:["#f8696b","#ffeb84","#63be7b"],w=g.length>=3?m<.5?oo(g[0],g[1],m*2):oo(g[1],g[2],(m-.5)*2):oo(g[0],g[1],m);i.style={...i.style,background:w}}else{let g=(d=Gr[(l=c.icons)!=null?l:"arrows"])!=null?d:Gr.arrows;i.icon=m>=2/3?g[0]:m>=1/3?g[1]:g[2]}continue}if(this.test(c,e,n,t)&&(i!=null||(i={style:{}}),i.style=zr(i.style,c.style),c.stopIfTrue))break}return i}};function ve(o){let e=o==null?void 0:o.align;return e==="left"||e==="center"||e==="right"?e:void 0}function zr(o,e){if(!e||typeof e!="object")return{...o};let t={...o,...e};return ve(e)||(ve(o)?t.align=o.align:delete t.align),t}function io(o){let e=o?ro(o):null;return e?`FF${e.map(t=>t.toString(16).padStart(2,"0")).join("").toUpperCase()}`:void 0}function so(o){let e=[];for(let t of o){if(K(t)||t instanceof Date)continue;let n=typeof t=="number"?t:Number(t);Number.isNaN(n)||e.push(n)}return e}function Vr(o,e){let t=o.filter(i=>i instanceof Date&&!Number.isNaN(i.getTime()));if(t.length)return t.reduce((i,s)=>(e?s>i:s<i)?s:i);let n=so(o);if(!n.length)return null;let r=n[0];for(let i of n)(e?i>r:i<r)&&(r=i);return r}function Ce(o,e,t){if(typeof o=="function")return o(e,t);switch(o){case"sum":return so(e).reduce((n,r)=>n+r,0);case"avg":{let n=so(e);return n.length?n.reduce((r,i)=>r+i,0)/n.length:null}case"min":return Vr(e,!1);case"max":return Vr(e,!0);case"count":return t.length}return null}function Ct(o){return typeof o=="object"&&o!==null&&"agg"in o?o:{agg:o}}function qr(o,e,t){let n=new Map,r=(i,s)=>{let a=n.get(i);return a||n.set(i,a=e.map(l=>j(s,l))),a};return o.map(i=>{var a;let s={};for(let[l,d]of Object.entries((a=i.columns)!=null?a:{})){let c=t(l);c&&(s[l]=Ce(Ct(d).agg,r(l,c),e))}return s})}function kt(o,e,t,n,r){if(!o)return 1;let i=1;try{i=Math.floor(Number(o({value:j(e,t),row:t,rowIndex:n})))}catch{i=1}return Number.isFinite(i)?Math.max(1,Math.min(r,i)):1}function ot(o,e){let t=o.length,n=new Int32Array(t),r=new Int32Array(t);if(e.rowSpan){for(let a=0;a<t;){let l=kt(e.rowSpan,e,o[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 i=typeof e.merge=="function"?(a,l)=>{try{return!!e.merge(j(e,o[a]),j(e,o[l]),o[a],o[l])}catch{return!1}}:(()=>{let a=o.map(l=>{let d=j(e,l);return K(d)?null:re(d)});return(l,d)=>a[l]!==null&&a[l]===a[d]})(),s=0;for(let a=1;a<=t;a++)if(!(a<t&&i(a-1,a))){for(let l=s;l<a;l++)n[l]=s,r[l]=a-1;s=a}return{start:n,end:r}}function ao(o,e){let t=new Int32Array(e),n=new Int32Array(e),r=0;for(let i=1;i<=e;i++)if(!(i<e&&!o.some(s=>s.start[i]===i))){for(let s=r;s<i;s++)t[s]=r,n[s]=i-1;r=i}return{start:t,end:n}}function Wr(o,e){let t=o.length,n=new Int32Array(t);if(!t||!e.length)return n;let{start:r}=ao(e.map(i=>ot(o,i)),t);for(let i=1;i<t;i++)n[i]=n[i-1]+(r[i]===i?1:0);return n}function jr(o,e,t,n,r=4){if(n<=0||t<=0)return{first:0,last:-1};let i=Math.max(0,Math.floor(o/t)-r),s=Math.floor((o+e)/t);return{first:Math.min(i,n-1),last:Math.min(n-1,s+r)}}function Jt(o,e,t,n,r=2){let i=o.length;if(!i)return{first:0,last:-1};let s=0,a=i-1;for(;s<a;){let c=s+a>>1;o[c]+e[c]<=t?s=c+1:a=c}let l=s,d=t+n;for(a=i-1;s<a;){let c=s+a+1>>1;o[c]<d?s=c:a=c-1}return{first:Math.max(0,l-r),last:Math.min(i-1,Math.max(l,s)+r)}}function Ur(o,e,t,n,r=4){if(n<=0)return{first:0,last:-1};let i=0,s=n-1;for(;i<s;){let d=i+s>>1;o[d+1]<=e?i=d+1:s=d}let a=i,l=e+t;for(s=n-1;i<s;){let d=i+s+1>>1;o[d]<l?i=d:s=d-1}return{first:Math.max(0,a-r),last:Math.min(n-1,i+r)}}var le=["left","center","right"],Kr=6,ra=8,lo=2,ia='<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>',co='<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 sa='<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(o,e="",t={}){let n=document.createElement(o);e&&(n.className=e);for(let[r,i]of Object.entries(t))n.setAttribute(r,i);return n}var Yt=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.geo={top:0,left:0,cw:0,ch:0,ow:0,oh:0};this.layoutSig="";this.touched=new Set;this.measureAll=!1;this.pool={left:[],center:[],right:[]};this.frame=0;this.headerDirty=!0;this.version=0;this.rowVersions=new Map;this.lastRange={first:0,last:-1};this.summaryEl=null;this.summaryPanes=null;this.summaryInners=null;this.summaryKey=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.cards?this.getScroll():{top:this.geo.top,left:this.geo.left})};this.onSideWheel=e=>{e.deltaY&&(e.preventDefault(),this.scroller.scrollTop+=e.deltaY)};this.overlayKey="";this.heightFn=null;this.freeBadge=null;this.onCardClick=e=>{var l;let t=e.target,n=t.closest(".fg-card");if(!n)return;let r=Number(n.dataset.row),i=this.grid.rowModel.getRow(r);if(!i||i.kind)return;if(t.closest(".fg-card-check")){this.grid.selectFromClick(r,!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:i.data,rowIndex:r,colId:a.id,value:j(a.def,i.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 r=i=>({left:C("div",`${i} ${i}-left`),center:C("div",`${i} ${i}-center`),right:C("div",`${i} ${i}-right`)});this.headerPanes=r("fg-header-pane"),this.headerInners=r("fg-header-inner");for(let i of le)this.headerInners[i].setAttribute("role","row");this.bodyPanes=r("fg-body-pane"),this.canvases=r("fg-canvas");for(let i of le)this.headerPanes[i].dataset.region=i,this.bodyPanes[i].dataset.region=i,this.headerPanes[i].append(this.headerInners[i]),this.bodyPanes[i].append(this.canvases[i]),this.headerEl.append(this.headerPanes[i]),this.bodyEl.append(this.bodyPanes[i]);this.scroller=this.bodyPanes.center,t.options.filterRow&&(this.filterRow=new _t(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}readGeo(){let e=this.scroller;this.geo={top:e.scrollTop,left:e.scrollLeft,cw:e.clientWidth,ch:e.clientHeight,ow:e.offsetWidth,oh:e.offsetHeight}}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.rowVersions.clear()),this.schedule()}invalidateRowIds(e){var t;for(let n of e)this.rowVersions.set(n,((t=this.rowVersions.get(n))!=null?t:0)+1);this.schedule()}schedule(){this.frame||(this.frame=requestAnimationFrame(()=>{this.frame=0,this.render()}))}render(){var x,R,E,T,k,S,L,A,F,I;let{columns:e,rowModel:t,store:n,options:r}=this.grid,{rowHeight:i,headerHeight:s}=this.opts;this.readGeo();let a=this.geo.ow-this.geo.cw;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(i,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=(R=(x=e.displayed().find(D=>!B(D.id)))==null?void 0:x.id)!=null?R:"",this.groupLabelId=(T=(E=e.region("center").find(D=>!B(D.id)))==null?void 0:E.id)!=null?T: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(),f=u?u.opts.rows.length:0,p=(k=u==null?void 0:u.opts.position)!=null?k:"bottom",h=u?u.opts.pinned!==!1:!1;this.topOffset=u&&!h&&p==="top"?f*i:0;let y=u&&!h&&p==="bottom"?f*i:0;this.syncSummaryPane(u&&h?p:null,f*i);let m=e.depth*s+((L=(S=this.filterRow)==null?void 0:S.height)!=null?L:0);this.headerEl.style.height=`${m}px`;for(let D of le){let $=e.regionWidth(D);D!=="center"&&(this.headerPanes[D].style.width=this.bodyPanes[D].style.width=`${$}px`,this.headerPanes[D].hidden=this.bodyPanes[D].hidden=$===0),this.canvases[D].style.width=`${$}px`,this.canvases[D].style.height=`${this.rowsHeight(l)+this.topOffset+y}px`}r.autoHeight&&!this.useCards()&&(this.root.classList.add("fg-auto-height"),this.bodyEl.style.height=`${this.rowsHeight(l)+this.topOffset+y+Math.max(0,this.scroller.offsetHeight-this.scroller.clientHeight)}px`);let g=`${m}|${le.map(D=>e.regionWidth(D)).join(",")}|${this.rowsHeight(l)+this.topOffset+y}|${u&&h?p:""}|${f}|${r.autoHeight?1:0}`;g!==this.layoutSig&&(this.layoutSig=g,this.readGeo());let w=this.geo.oh-this.geo.ch;this.bodyPanes.left.style.marginBottom=this.bodyPanes.right.style.marginBottom=`${w}px`;let b=this.gridEl;b.setAttribute("role",r.treeData||this.grid.getGroupBy().length?"treegrid":"grid"),b.setAttribute("aria-rowcount",String(l+e.depth+(this.filterRow?1:0))),b.setAttribute("aria-colcount",String(e.displayed().length)),r.rowSelection==="multiple"&&b.setAttribute("aria-multiselectable","true"),this.headerDirty&&(this.headerDirty=!1,this.renderHeader()),(A=this.filterRow)==null||A.render(),this.renderRows(l),this.updateActiveCell(),d&&this.measureRows(),this.renderSummary(l,u&&u.opts.rows,(F=u==null?void 0:u.values)!=null?F:[],h,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&&h?p:null),this.paintOverlay(l),this.overlay.style.top=`${m}px`;let{top:v,left:M}=this.geo;this.bodyPanes.left.scrollTop=this.bodyPanes.right.scrollTop=v,this.headerInners.center.style.transform=`translateX(${-M}px)`,(I=this.filterRow)==null||I.setTransform(M),this.summaryInners&&(this.summaryInners.center.style.transform=`translateX(${-M}px)`);for(let D of[this.pinnedTop,this.pinnedBottom])D&&(D.inners.center.style.transform=`translateX(${-M}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),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 i=this.bodyEl;for(let c=t.length-1;c>=0;c--)i.previousElementSibling!==t[c]&&this.gridEl.insertBefore(t[c],i),i=t[c];i=this.bodyEl;for(let c of n)i.nextElementSibling!==c&&i.after(c),i=c;i=this.gridEl;for(let c of r)i.nextElementSibling!==c&&i.after(c),i=c;this.placeFreeBadge()}paintOverlay(e){var c;let{grid:t}=this,{store:n,rowModel:r,options:i}=t,s=(c=t.forcedOverlay)!=null?c:e>0?null:r.loading()?"loading":"noRows";if(this.overlay.hidden=!s,!s){this.overlayKey="";return}let a=!r.server&&n.state.data.length>0,l=s==="loading"?i.loadingOverlay:i.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{G(`${s==="loading"?"loadingOverlay":"noRowsOverlay"} threw`),this.overlay.textContent=s==="loading"?n.state.locale.loading:n.state.locale.noRows}}updateActiveCell(){var n,r,i;let e=this.activeCellId&&(i=(r=(n=this.root.getRootNode()).getElementById)==null?void 0:r.call(n,this.activeCellId))!=null?i: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 uo(`fg-pinned-rows fg-pinned-${t}`),{columns:i}=this.grid,s=this.opts.rowHeight;r.size(i,n.length*s,this.geo.ow-this.geo.cw);let a=i.region("center"),l=Jt(a.map(c=>c.left),a.map(c=>c.width),this.geo.left,this.geo.cw,lo),d=[n,n.length,this.version,this.grid.valuesVersion,l.first,l.last,s,this.grid.store.state.locale.code];if(e&&_r(d,r.key))return r;r.key=d;for(let c of le){let u=c==="center"?a.slice(l.first,l.last+1):i.region(c);r.inners[c].replaceChildren(...n.map((f,p)=>{let h=C("div","fg-row fg-row-pinned",{role:"row"});h.style.transform=`translateY(${p*s}px)`,h.style.height=`${s}px`;let y={id:`pinned-${t}-${p}`,data:f,sourceIndex:-1};for(let m of u){let g=C("div","fg-cell",{role:"gridcell"});B(m.id)?(g.style.left=`${m.left}px`,g.style.width=`${m.width}px`):this.paintCell(g,y,-1,m,!1,!1),h.append(g)}return h}))}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,i=`${this.version}.${t.valuesVersion}|${e}|${r}|${n.selected.size}|${JSON.stringify(n.range)}|${JSON.stringify(n.extraRanges)}|${n.locale.code}`;if(this.statusEl&&i===this.statusKey)return;this.statusKey=i,(f=this.statusEl)!=null||(this.statusEl=C("div","fg-statusbar",{role:"status","aria-live":"polite"}));let s=n.locale,a=Te(s.code,2),l=C("span","fg-status-rows");l.textContent=(e===r?s.statusRows.replace("{n}",a.format(r)):s.statusFiltered.replace("{shown}",a.format(e)).replace("{total}",a.format(r)))+(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 p=[`${s.count} ${a.format(c.count)}`];c.numbers&&p.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=p.join(" ")}this.statusEl.replaceChildren(l,d)}renderHeader(){let{columns:e,store:t}=this.grid,{sort:n,filters:r,locale:i}=t.state;for(let s of le){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,r,i)))}}headerCell(e,t,n,r){var p,h;let i=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*i}px`,s.style.width=`${e.width}px`,s.style.height=`${e.rowSpan*i}px`,B(e.id))return e.id===Le&&(s.classList.add("fg-header-rownum"),s.textContent=e.label),e.id===ae&&(s.classList.add("fg-header-select"),s.append(this.selectAllBox(r))),s;let a=C("span","fg-header-label"),l=e.node.def;if(a.textContent=e.label,l.headerRenderer)try{let y=l.headerRenderer({header:e.label,column:l});typeof y=="string"?a.innerHTML=y:a.replaceChildren(y)}catch{G(`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 y=e.node.open,m=C("button",y?"fg-colgroup-toggle fg-expanded":"fg-colgroup-toggle",{type:"button",tabindex:"-1","aria-expanded":String(y),"aria-label":y?r.collapseAll:r.expandAll});m.textContent=y?"\u2212":"+",m.addEventListener("click",g=>{g.stopPropagation(),this.grid.setColumnGroupOpened(e.id,!y)}),s.classList.add("fg-header-collapsible"),d=m}if(l.headerClass)try{let y=typeof l.headerClass=="function"?l.headerClass(l):l.headerClass;y&&s.classList.add(...y.split(/\s+/).filter(Boolean))}catch{G(`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;((p=c.wrapHeaderText)!=null?p:this.grid.options.wrapHeaderText)&&s.classList.add("fg-header-wrap"),s.setAttribute("aria-colindex",String(e.column.index+1));let u=(h=c.align)!=null?h:c.type==="number"?"right":"left";u==="right"?s.classList.add("fg-align-right"):u==="center"&&s.classList.add("fg-align-center");let f=t.findIndex(y=>y.colId===e.id);if(s.setAttribute("aria-sort",f<0?"none":t[f].dir==="asc"?"ascending":"descending"),He(c)&&s.classList.add("fg-sortable"),f>=0){let y=C("span","fg-sort-icon");if(y.textContent=t[f].dir==="asc"?"\u2191":"\u2193",t.length>1){let m=C("sup");m.textContent=String(f+1),y.append(m)}s.append(y)}if(He(c)||me(c)){let y=!!n[e.id],m=C("button",y?"fg-menu-btn fg-filter-active":"fg-menu-btn",{type:"button",tabindex:"-1","aria-label":r.columnMenu});m.innerHTML=y?sa:ia,s.append(m)}return Gt(c)&&s.append(C("div","fg-resize",{"aria-hidden":"true"})),s}selectAllBox(e){let t=C("input","fg-checkbox fg-select-all",{type:"checkbox",tabindex:"-1","aria-label":e.selectAllRows});return this.paintSelectAll(t),t.hidden=this.grid.options.rowSelection!=="multiple"||this.grid.options.headerCheckbox===!1,t}paintSelectAll(e){let t=this.grid.selectableIds(),n=0;for(let r of this.grid.store.state.selected)t.has(r)&&n++;e.checked=t.size>0&&n===t.size,e.indeterminate=n>0&&n<t.size}selectionChanged(){let e=this.headerEl.querySelectorAll(".fg-select-all");if(e.length)for(let t of e)this.paintSelectAll(t)}renderRows(e){var g,w,b,v,M;let{columns:t,rowModel:n,store:r}=this.grid,{selected:i,focus:s}=r.state,a=this.grid.allRangeBounds(),l=this.grid.mergeSpans(),d=l.has(ae),{geo:c}=this,u=Math.max(0,c.top-this.topOffset),f=this.grid.options.autoHeight&&!n.server?{first:0,last:e-1}:this.offsets?Ur(this.offsets,u,c.ch,e,Kr):jr(u,c.ch,this.opts.rowHeight,e,Kr);this.lastRange=f;let p=t.region("center"),h=Jt(p.map(x=>x.left),p.map(x=>x.width),this.geo.left,this.geo.cw,lo),y=p.some(x=>x.def.colSpan);y&&(h.first=Math.max(0,h.first-ra));let m=!y&&!l.size;this.touched.clear();for(let x of le){let R=x==="center"?p.slice(h.first,h.last+1):t.region(x),E=this.painted[x];for(let[k,S]of E)k>=f.first&&k<=f.last&&R.length||(S.el.remove(),this.pool[x].push(S.el),E.delete(k));if(!R.length)continue;let T=x==="center"?`${h.first}-${h.last}`:"";for(let k=f.first;k<=f.last;k++){let S=n.getRow(k),L=i.has(S.id),A=s&&s.rowIndex===k?s.colId:"",F=a.filter(W=>k>=W.r1&&k<=W.r2),I=F.map(W=>`${W.c1}-${W.c2}`).join(","),D=this.mergeState(l,R,k,f.first),$=d&&!S.kind&&(g=this.grid.blockSelection(k))!=null?g:"",P=S.kind==="detail"?`${c.left}:${c.cw}`:"",N=`${S.id}|${this.version}.${(w=this.rowVersions.get(S.id))!=null?w:0}|${L?1:0}${S.kind==="group"?`:${this.grid.selectionVersion}`:""}${$}|${A}|${I}|${D}|${P}`,O=`${T}|${N}`,H=E.get(k);if(!H){let W=(b=this.pool[x].pop())!=null?b:C("div","fg-row",{role:"row"});this.canvases[x].append(W),H={el:W,key:""},E.set(k,H)}if(H.key!==O){if(this.touched.add(k),m&&x==="center"&&!S.kind&&H.base===N&&this.slideCells(H,S,k,p,h,L,A,F)){H.key=O;continue}H.key=O,H.base=x==="center"&&!S.kind?N:void 0,H.first=h.first,H.last=h.last,H.el.dataset.kind!==((v=S.kind)!=null?v:"")&&(H.el.replaceChildren(),H.el.dataset.kind=(M=S.kind)!=null?M:""),S.kind==="group"?this.paintGroupRow(H.el,S,k,R,A):S.kind==="detail"?this.paintDetailRow(H.el,S,k,x):S.kind==="loading"?this.paintLoadingRow(H.el,k,R):this.paintRow(H.el,S,k,R,L,A,F,l,f.first)}}}l.size&&this.stickMergedText(c.top,c.ch||Number.MAX_SAFE_INTEGER/4)}stickMergedText(e,t){for(let n of le){let r=new Map;for(let[s,a]of this.painted[n]){let l=-1;for(let d of a.el.querySelectorAll(".fg-cell-merged"))l=Math.max(l,Number(d.dataset.mergeEnd));l>s&&r.set(s,l)}let i=new Map;for(let s of[...r.keys()].sort((a,l)=>l-a)){let a=0;for(let[l,d]of i)l>s&&l<=r.get(s)&&(a=Math.max(a,d));i.set(s,a+1)}for(let[s,a]of this.painted[n]){let l=i.has(s)?String(i.get(s)):"";a.el.style.zIndex!==l&&(l||a.el.querySelector(".fg-cell-merged, .fg-cell-merge-hidden"))&&(a.el.style.zIndex=l)}for(let s of this.painted[n].values())for(let a of s.el.querySelectorAll(".fg-cell-merged")){let l=Number(a.dataset.mergeTop),d=Number(a.dataset.mergeLast);if(!Number.isFinite(l)||!Number.isFinite(d))continue;let c=Math.min(d,Math.max(0,e-l)),u=0;if(a.classList.contains("fg-cell-merged-middle")||a.classList.contains("fg-cell-merged-bottom")){let h=Number(a.dataset.mergeHeight),y=h-d;u=Math.max(0,Math.min(h-c-y,l+h-(e+t))),c=Math.min(c,h-u-y)}let f=`${Math.round(c)}px`;a.style.getPropertyValue("--fg-merge-shift")!==f&&a.style.setProperty("--fg-merge-shift",f);let p=`${Math.round(u)}px`;a.style.getPropertyValue("--fg-merge-shift-bottom")!==p&&a.style.setProperty("--fg-merge-shift-bottom",p)}}}slideCells(e,t,n,r,i,s,a,l){let d=e.first,c=e.last;if(i.first>c||i.last<d||e.el.childElementCount!==c-d+1)return!1;let u=e.el;for(let p=d;p<i.first;p++)u.firstElementChild.remove();for(let p=c;p>i.last;p--)u.lastElementChild.remove();let f=p=>{let h=C("div","fg-cell",{role:"gridcell"});return this.paintCell(h,t,n,p,s,a===p.id),p.id===this.firstDataId&&this.decorate(h,t),!B(p.id)&&l.some(y=>p.index>=y.c1&&p.index<=y.c2)&&h.classList.add("fg-cell-range"),h};return i.first<d&&u.prepend(...r.slice(i.first,d).map(f)),i.last>c&&u.append(...r.slice(c+1,i.last+1).map(f)),e.first=i.first,e.last=i.last,!0}mergeState(e,t,n,r){if(!e.size)return"";let i="";for(let s of t){let a=e.get(s.id);if(!a)continue;let l=a.start[n],d=a.end[n];i+=l===d?"n":n===Math.max(l,r)?`d${l}`:"h"}return i}paintRow(e,t,n,r,i,s,a,l=new Map,d=0){let c=this.opts.rowHeight;for(e.className=`fg-row${n%2?" fg-row-odd":""}${i?" 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(i)),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(C("div","fg-cell",{role:"gridcell"}));let u=!1,f=r.length?this.grid.columns.region(r[0].region):[],p=f.some(m=>m.def.colSpan),h=-1,y=p?new Map(f.map((m,g)=>[m.id,g])):null;r.forEach((m,g)=>{let w=e.children[g];if(this.paintCell(w,t,n,m,i,s===m.id),y){let v=y.get(m.id);if(v<=h)w.classList.add("fg-cell-span-hidden");else if(m.def.colSpan&&!B(m.id)){let M=kt(m.def.colSpan,m.def,t.data,n,f.length-v);if(M>1){h=v+M-1;let x=0;for(let R=v;R<=h;R++)x+=f[R].width;w.style.width=`${x}px`,w.classList.add("fg-cell-colspan")}}}m.id===this.firstDataId&&this.decorate(w,t),w.style.top=w.style.height=w.style.bottom="";let b=l.get(m.id);b&&b.start[n]!==b.end[n]&&(n===Math.max(b.start[n],d)?(w.classList.add("fg-cell-merged"),w.style.top=`${-(this.rowTop(n)-this.rowTop(b.start[n]))}px`,w.style.height=`${this.rowTop(b.end[n])+this.rowH(b.end[n])-this.rowTop(b.start[n])}px`,w.style.bottom="auto",w.dataset.mergeTop=String(this.rowTop(b.start[n])),w.dataset.mergeLast=String(this.rowTop(b.end[n])-this.rowTop(b.start[n])),w.dataset.mergeEnd=String(b.end[n]),w.dataset.mergeHeight=String(this.rowTop(b.end[n])+this.rowH(b.end[n])-this.rowTop(b.start[n])),w.classList.toggle("fg-cell-merged-middle",m.def.mergeAlign==="middle"),w.classList.toggle("fg-cell-merged-bottom",m.def.mergeAlign==="bottom"),u=!0):w.classList.add("fg-cell-merge-hidden")),!w.classList.contains("fg-cell-merged")&&w.dataset.mergeTop!==void 0&&(delete w.dataset.mergeTop,delete w.dataset.mergeLast,delete w.dataset.mergeEnd,delete w.dataset.mergeHeight,w.classList.remove("fg-cell-merged-middle","fg-cell-merged-bottom"),w.style.removeProperty("--fg-merge-shift"),w.style.removeProperty("--fg-merge-shift-bottom")),!B(m.id)&&a.some(v=>m.index>=v.c1&&m.index<=v.c2)&&w.classList.add("fg-cell-range")}),e.style.zIndex=u?"1":""}paintCell(e,t,n,r,i,s){var h,y;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=s?"fg-cell fg-cell-focused":"fg-cell";if(r.id===Le){e.className=`${l} fg-cell-rownum`;let m=n>=0&&!t.kind?this.grid.rowNumber(n):null;e.textContent=m===null?"":String(m);return}if(r.id===Be){e.className=`${l} fg-cell-drag`;let m=C("span",this.grid.canMoveRows()?"fg-drag-handle":"fg-drag-handle fg-drag-disabled",{"aria-hidden":"true"});m.textContent="\u22EE\u22EE",e.replaceChildren(m);return}if(r.id===ae){e.className=`${l} fg-cell-select`;let m=C("input","fg-checkbox",{type:"checkbox",tabindex:"-1","aria-label":a.selectRow});m.checked=i;let g=n>=0&&!t.kind?this.grid.blockSelection(n):null;g?(m.checked=g==="all",m.indeterminate=g==="some",g==="off"&&(m.disabled=!0,e.classList.add("fg-cell-select-locked"))):n>=0&&!t.kind&&!this.grid.rowSelectable(t.data)&&(m.disabled=!0,e.classList.add("fg-cell-select-locked")),e.replaceChildren(m);return}let d=r.def,c=j(d,t.data),u=ne(d,a.code)(c),f=n>=0&&!t.kind?this.grid.cellFormat(t.data,r.id,c):null;l+=` fg-align-${(y=(h=ve(f==null?void 0:f.style))!=null?h:d.align)!=null?y:d.type==="number"?"right":d.type==="boolean"?"center":"left"}`;let p={value:c,formatted:u,row:t.data,rowIndex:n,column:d};if(d.cellClass)try{let m=typeof d.cellClass=="function"?d.cellClass(p):d.cellClass;m&&(l+=` ${m}`)}catch{G(`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&&!Ht(d,t.data,n)&&(l+=" fg-cell-readonly"),n>=0&&(l+=this.grid.finder.classFor(n,r.id)),l+=this.grid.flashClass(t.id,r.id),f!=null&&f.bar&&(l+=" fg-cf-bar"),e.className=l,this.applyFormat(e,f),d.sparkline&&!d.renderer){let m=Array.isArray(c)?c.map(Number).filter(Number.isFinite):[];m.length?e.replaceChildren(aa(m,d.sparkline===!0?{}:d.sparkline,r.width,this.opts.rowHeight)):e.replaceChildren(),e.setAttribute("aria-label",Array.isArray(c)?c.join(", "):"");return}if(!d.renderer){if(e.textContent=u,f!=null&&f.icon){let m=C("span","fg-cf-icon",{"aria-hidden":"true"});m.textContent=f.icon.char,m.style.color=f.icon.color,e.prepend(m)}return}try{let m=d.renderer(p);typeof m=="string"?e.innerHTML=m:e.replaceChildren(m)}catch{G(`renderer of column "${r.id}" threw; rendering an empty cell`),e.textContent=""}}applyFormat(e,t){var i,s;let n=e.style;if(!t){e.dataset.cf&&(n.color=n.background=n.fontWeight=n.fontStyle=n.textDecoration="",n.removeProperty("--fg-bar-from"),n.removeProperty("--fg-bar-to"),n.removeProperty("--fg-bar-color"),delete e.dataset.cf);return}e.dataset.cf="1";let r=t.style;n.color=(i=r.color)!=null?i:"",n.background=(s=r.background)!=null?s:"",n.fontWeight=r.bold?"600":"",n.fontStyle=r.italic?"italic":"",n.textDecoration=r.strike?"line-through":"",t.bar?(n.setProperty("--fg-bar-from",`${(t.bar.from*100).toFixed(2)}%`),n.setProperty("--fg-bar-to",`${(t.bar.to*100).toFixed(2)}%`),n.setProperty("--fg-bar-color",t.bar.color)):(n.removeProperty("--fg-bar-from"),n.removeProperty("--fg-bar-to"),n.removeProperty("--fg-bar-color"))}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),i=r+Math.min(this.rowH(e),n.clientHeight||1/0);r<n.scrollTop?n.scrollTop=r:i>n.scrollTop+n.clientHeight&&(n.scrollTop=i-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 r;if(!e){(r=this.summaryEl)==null||r.remove(),this.summaryEl=this.summaryPanes=this.summaryInners=null;return}if(!this.summaryEl){let i=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=i("fg-summary-pane"),this.summaryInners=i("fg-summary-inner");for(let s of le)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 i of le){let s=this.grid.columns.regionWidth(i);i!=="center"&&(this.summaryPanes[i].style.width=`${s}px`,this.summaryPanes[i].hidden=s===0),this.summaryInners[i].style.width=`${s}px`,this.summaryInners[i].style.height=`${t}px`}let n=this.geo.ow-this.geo.cw;this.summaryPanes.center.style.marginRight=`${n}px`}renderSummary(e,t,n,r,i){if(!t&&!this.summaryKey)return;let s=this.grid.columns.region("center"),a=Jt(s.map(f=>f.left),s.map(f=>f.width),this.geo.left,this.geo.cw,lo),l=[t,n,r,i,this.summaryInners,this.version,a.first,a.last,this.opts.rowHeight,r?0:this.rowsHeight(e),this.grid.store.state.locale.code];if(_r(l,this.summaryKey))return;this.summaryKey=l;for(let f of le){for(let p of this.canvasSummary[f])p.remove();this.canvasSummary[f]=[]}if(!t){this.summaryKey=null;return}let{columns:d}=this.grid,c=this.opts.rowHeight,u=d.displayed().filter(f=>!B(f.id));for(let f of le){let p=f==="center"?s.slice(a.first,a.last+1):d.region(f),h=t.map((y,m)=>{var v,M,x;let g=y.label!=null&&(M=(v=u.find(R=>{var E;return!(R.id in((E=y.columns)!=null?E:{}))}))==null?void 0:v.id)!=null?M:null,w=C("div","fg-row fg-summary-row",{role:"row"}),b=r||i==="top"?m*c:this.rowsHeight(e)+m*c;w.style.transform=`translateY(${b}px)`,w.style.height=`${c}px`;for(let R of p)w.append(this.summaryCell(R,y,(x=n[m])!=null?x:{},g));return w});r?this.summaryInners[f].replaceChildren(...h):(this.canvases[f].append(...h),this.canvasSummary[f]=h)}}summaryCell(e,t,n,r){var p,h,y,m,g;let i=C("div","fg-cell",{role:"gridcell"});i.style.left=`${e.left}px`,i.style.width=`${e.width}px`,i.dataset.col=e.id;let s=e.def,a=(p=s.align)!=null?p:s.type==="number"?"right":s.type==="boolean"?"center":"left";i.className=`fg-cell fg-align-${a}`;let l=(h=t.columns)==null?void 0:h[e.id];if(l===void 0)return e.id===r&&(i.textContent=(y=t.label)!=null?y:"",i.classList.add("fg-summary-label")),i;let d=n[e.id],c=Ct(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=Te(u).format(d);else{let w=(m=s.type)!=null?m:typeof d=="number"?"number":d instanceof Date?"date":void 0;f=mt(s,w,u,(g=c.format)!=null?g:s.format)(d)}return i.textContent=c.prefix&&f?`${c.prefix} ${f}`:f,i}get heightOf(){var t;let e=this.grid.options.getRowHeight;if(e)return(t=this.heightFn)!=null?t:this.heightFn=n=>{var r;try{return(r=e(n))!=null?r:void 0}catch{return}}}invalidateHeights(){this.heightOf&&this.heightsVersion++,this.rowHeights.size&&(this.rowHeights.clear(),this.measureAll=!0,this.heightsVersion++)}measureRows(){var i;let e=this.opts.rowHeight,t=new Map,n=this.measureAll?new Set(le.flatMap(s=>[...this.painted[s].keys()])):this.touched;this.measureAll=!1;for(let s of n){let a=this.grid.rowModel.getRow(s);if(!a||a.kind)continue;let l=e;for(let d of le){let c=this.painted[d].get(s);if(c)for(let u of c.el.querySelectorAll(".fg-cell-wrap"))u.classList.contains("fg-cell-merged")||u.classList.contains("fg-cell-merge-hidden")||(l=Math.max(l,Math.ceil(u.scrollHeight)))}t.set(s,l)}this.touched.clear();let r=!1;for(let[s,a]of t){let l=this.grid.rowModel.getRow(s).id,d=(i=this.rowHeights.get(l))!=null?i:e;Math.abs(d-a)>1&&(a===e?this.rowHeights.delete(l):this.rowHeights.set(l,a),r=!0)}r&&(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,r=n.store.state.locale,i=(d=t.level)!=null?d:0,s=!!n.options.treeData,a=n.canExpandDetail(t.data);if(!s&&!a&&!i)return;e.classList.add("fg-cell-lead"),e.style.setProperty("--fg-level",String(i));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?r.collapseAll:r.expandAll,"aria-expanded":String(!!t.expanded)});t.loading&&c.setAttribute("aria-busy","true"),c.innerHTML=co,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?r.collapseAll:r.expandAll});u.innerHTML=co,l.push(u)}e.prepend(...l)}paintGroupRow(e,t,n,r,i){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>r.length;)e.lastElementChild.remove();for(;e.childElementCount<r.length;)e.append(C("div","fg-cell",{role:"gridcell"}));r.forEach((c,u)=>{var g,w,b,v,M,x,R;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=i===c.id?" fg-cell-focused":"";if(c.id===ae){if(f.className=`fg-cell fg-cell-select${p}`,a.options.rowSelection!=="multiple"){f.replaceChildren();return}let E=a.groupSelection(t),T=C("input","fg-checkbox",{type:"checkbox",tabindex:"-1","aria-label":l.selectAllRows});T.checked=E==="all",T.indeterminate=E==="some",f.replaceChildren(T);return}if(c.id===this.groupLabelId){f.className=`fg-cell fg-group-cell${p}`,f.style.setProperty("--fg-level",String((g=t.level)!=null?g:0));let E=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});E.innerHTML=co;let T=(w=a.columns.getNode(s.colId))==null?void 0:w.def,k=C("span","fg-group-label"),S=K(s.value)?l.blanks:T?ne(T,l.code)(s.value):String(s.value),L=Te(l.code),A=(b=s.count)!=null?b:s.aggregates?null:s.rows.length;k.textContent=`${(M=(v=T==null?void 0:T.header)!=null?v:T==null?void 0:T.field)!=null?M:s.colId}: ${S}${A==null?"":` (${L.format(A)})`}`,f.replaceChildren(E,k);return}let h=c.def,y=(x=h.align)!=null?x:h.type==="number"?"right":h.type==="boolean"?"center":"left";f.className=`fg-cell fg-align-${y}${p}`;let m=h.aggFunc&&!B(c.id)?a.groupAggregate(t,c.id):void 0;if(m==null||m==="")f.textContent="";else if(h.aggFunc==="count")f.textContent=Te(l.code).format(m);else{let E=(R=h.type)!=null?R:typeof m=="number"?"number":m instanceof Date?"date":void 0;f.textContent=mt(h,E,l.code)(m)}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 i=t.detailOf,s=this.details.get(i.id);if(!s){s=C("div","fg-detail");try{let d=(l=(a=this.grid.options).detailRenderer)==null?void 0:l.call(a,{row:i.data,rowIndex:n-1});typeof d=="string"?s.innerHTML=d:d&&s.append(d)}catch{G("detailRenderer threw; showing an empty panel")}this.details.set(i.id,s)}s.style.left=`${this.geo.left}px`,s.style.width=`${this.geo.cw||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(r=>{let i=C("div","fg-cell",{role:"gridcell"});return i.style.left=`${r.left}px`,i.style.width=`${r.width}px`,i.dataset.col=r.id,B(r.id)||i.append(C("span","fg-skeleton",{"aria-hidden":"true"})),i}))}renderPager(){var g;let{grid:e}=this,t=e.options.pagination;if(!t){(g=this.pagerEl)==null||g.remove(),this.pagerEl=null;return}let n=e.store.state.locale,r=e.getPage(),i=e.getPageSize(),s=e.getPageCount(),a=e.rowModel.fullCount(),l=typeof t=="object"&&Array.isArray(t.pageSizes)?t.pageSizes.filter(w=>Number.isInteger(w)&&w>0):[],d=`${r}|${i}|${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",w=>{var M;let b=(M=w.target.closest("button[data-action]"))==null?void 0:M.dataset.action,v=e.getPage();b==="first"?e.setPage(0):b==="prev"?e.setPage(v-1):b==="next"?e.setPage(v+1):b==="last"&&e.setPage(e.getPageCount()-1)}),this.pagerEl.addEventListener("change",w=>{let b=w.target;b.classList.contains("fg-pager-size")&&e.setPageSize(Number(b.value))})),this.pagerEl.setAttribute("aria-label",n.pageSize);let c=Te(n.code),u=a?r*i+1:0,f=Math.min(a,(r+1)*i),p=C("span","fg-pager-range");p.textContent=n.pagerRange.replace("{from}",c.format(u)).replace("{to}",c.format(f)).replace("{total}",c.format(a));let h=[p,C("span","fg-pager-spacer")];if(l.length){let w=C("label","fg-pager-size-label");w.textContent=n.pageSize;let b=C("select","fg-pager-size");for(let v of[...new Set([...l,i])].sort((M,x)=>M-x)){let M=C("option");M.value=String(v),M.textContent=c.format(v),M.selected=v===i,b.append(M)}w.append(b),h.push(w)}let y=(w,b,v,M)=>{let x=C("button","fg-pager-btn",{type:"button","aria-label":v,title:v});return x.dataset.action=w,x.textContent=b,x.disabled=M,x},m=C("span","fg-pager-page",{"aria-live":"polite"});m.textContent=n.pageOf.replace("{page}",c.format(r+1)).replace("{pages}",c.format(s)),h.push(y("first","\xAB",n.firstPage,r===0),y("prev","\u2039",n.previousPage,r===0),m,y("next","\u203A",n.nextPage,r>=s-1),y("last","\xBB",n.lastPage,r>=s-1)),this.pagerEl.replaceChildren(...h)}showFreeBadge(){if(this.root.querySelector(".fg-free-badge"))return;let e=C("div","fg-free-badge",{"aria-hidden":"true"});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),this.freeBadge=e,this.placeFreeBadge()}placeFreeBadge(){var n,r;if(!this.freeBadge)return;let e=((n=this.statusEl)!=null&&n.isConnected?this.statusEl.offsetHeight:0)+((r=this.pagerEl)!=null&&r.isConnected?this.pagerEl.offsetHeight:0),t=e?`${e+22}px`:"";this.freeBadge.style.bottom!==t&&(this.freeBadge.style.bottom=t)}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 y,m,g,w,b;let{grid:t}=this;if(!this.cards){let v=C("div","fg-cards",{role:"list"}),M=C("div","fg-cards-canvas");v.append(M),this.main.insertBefore(v,this.overlay),v.addEventListener("scroll",()=>{this.schedule(),this.grid.events.emit("scroll",this.getScroll())},{passive:!0}),v.addEventListener("click",this.onCardClick),this.cards={scroller:v,canvas:M}}let{scroller:n,canvas:r}=this.cards,i=t.columns.displayed().filter(v=>!B(v.id)),s=Math.round(this.opts.rowHeight*.75),a=!!t.options.rowSelection,l=20+i.length*s+(a?s: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,h=[];for(let v=c;v<=u;v++){let M=t.rowModel.getRow(v);if(!M)continue;let x=C("div",M.kind?"fg-card fg-card-other":f.has(M.id)?"fg-card fg-card-selected":"fg-card",{role:"listitem"});if(x.dataset.row=String(v),x.style.transform=`translateY(${v*(l+d)}px)`,x.style.height=`${l}px`,x.style.setProperty("--fg-card-line",`${s}px`),M.kind==="group"&&M.group){let R=(y=t.columns.getNode(M.group.colId))==null?void 0:y.def;x.textContent=`${(m=R==null?void 0:R.header)!=null?m:M.group.colId}: ${String((g=M.group.value)!=null?g:p.blanks)} (${M.group.rows.length})`}else if(!M.kind){if(a){let R=C("label","fg-card-head"),E=C("input","fg-card-check fg-checkbox",{type:"checkbox","aria-label":p.selectRow});E.checked=f.has(M.id),E.disabled=!t.rowSelectable(M.data),R.append(E,document.createTextNode(`#${v+1}`)),x.append(R)}for(let R of i){let E=C("div","fg-card-line"),T=C("span","fg-card-label");T.textContent=(b=(w=R.def.header)!=null?w:R.def.field)!=null?b:R.id;let k=C("span","fg-card-value");k.dataset.col=R.id;let S=j(R.def,M.data),L=ne(R.def,p.code)(S);if(R.def.renderer)try{let A=R.def.renderer({value:S,formatted:L,row:M.data,rowIndex:v,column:R.def});typeof A=="string"?k.innerHTML=A:k.replaceChildren(A)}catch{k.textContent=L}else k.textContent=L;E.append(T,k),x.append(E)}}h.push(x)}r.replaceChildren(...h)}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 i=this.measureCtx;return i?(i.font=`${t?600:400} ${r}px ${n.fontFamily||"sans-serif"}`,i.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(){var e;(e=this.filterRow)==null||e.destroy(),this.frame&&cancelAnimationFrame(this.frame),this.scroller.removeEventListener("scroll",this.onScroll),this.root.remove()}},uo=class{constructor(e){this.key=null;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 le)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 le){let i=e.regionWidth(r);r!=="center"&&(this.panes[r].style.width=`${i}px`,this.panes[r].hidden=i===0),this.inners[r].style.width=`${i}px`,this.inners[r].style.height=`${t}px`}this.panes.center.style.marginRight=`${n}px`}};function _r(o,e){return!!e&&o.length===e.length&&o.every((t,n)=>t===e[n])}var Xr="http://www.w3.org/2000/svg";function aa(o,e,t,n){var g;let r=Math.max(20,t-16),i=Math.max(10,n-14),s=document.createElementNS(Xr,"svg");s.setAttribute("class","fg-sparkline"),s.setAttribute("width",String(r)),s.setAttribute("height",String(i)),s.setAttribute("viewBox",`0 0 ${r} ${i}`),s.setAttribute("aria-hidden","true");let a=(g=e.color)!=null?g:"var(--fg-accent)",l=e.type==="bar",d=o.reduce((w,b)=>Math.min(w,b),l?0:1/0),c=o.reduce((w,b)=>Math.max(w,b),l?0:-1/0);d===c&&(d-=1,c+=1);let u=c-d,f=w=>i-1-(w-d)/u*(i-2),p=(w,b)=>{let v=document.createElementNS(Xr,w);for(let[M,x]of Object.entries(b))v.setAttribute(M,String(x));return s.append(v),v};if(e.type==="bar"){let w=r/o.length;return o.forEach((b,v)=>p("rect",{x:v*w+1,y:Math.min(f(b),f(0)),width:Math.max(1,w-2),height:Math.max(1,Math.abs(f(b)-f(0))),fill:b<0?"#ef4444":a})),s}let h=o.length>1?(r-2)/(o.length-1):0,y=o.map((w,b)=>`${1+b*h},${f(w)}`).join(" ");e.type==="area"&&p("polygon",{points:`1,${i} ${y} ${1+(o.length-1)*h},${i}`,fill:a,"fill-opacity":.2}),p("polyline",{points:y,fill:"none",stroke:a,"stroke-width":1.5,"stroke-linejoin":"round"});let m=o.length-1;return p("circle",{cx:1+m*h,cy:f(o[m]),r:2,fill:a}),s}var la=4,Zt=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(i=>i!==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,i=e.clientX,s=!1,a=d=>{!s&&Math.abs(d.clientX-i)<la||(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(p=>p!==n).filter(p=>{let h=p.getBoundingClientRect();return d.clientX>h.left+h.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=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 r=C("span","fg-group-hint");r.textContent=t.groupPanelHint,this.el.replaceChildren(r);return}this.el.replaceChildren(...n.map((r,i)=>{var c,u,f;let s=(c=e.columns.getNode(r))==null?void 0:c.def,a=C("span","fg-group-chip");a.dataset.col=r;let l=C("span","fg-group-chip-label");l.textContent=(f=(u=s==null?void 0:s.header)!=null?u:s==null?void 0:s.field)!=null?f:r;let d=C("button","fg-group-chip-remove",{type:"button","aria-label":`${t.ungroup}: ${l.textContent}`});if(d.textContent="\xD7",a.append(l,d),i<n.length-1){let p=C("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 rt=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(i){console.error("[FreeGrid] event listener threw",i)}}clear(){this.listeners.clear()}};function de(o){let e=o.getRootNode();return typeof ShadowRoot!="undefined"&&e instanceof ShadowRoot?e:document.body}function Rt(o,e,t){var r;let n=o.getRootNode();return(r=typeof n.elementFromPoint=="function"?n.elementFromPoint(e,t):null)!=null?r:document.elementFromPoint(e,t)}function Qt(o){var t;return(t=o.getRootNode().activeElement)!=null?t:document.activeElement}function ge(o,...e){let t=typeof o.composedPath=="function"?o.composedPath():[];return t.length?e.some(n=>!!n&&t.includes(n)):e.some(n=>!!n&&n.contains(o.target))}var fo=new Set(["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Tab","Home","End","PageUp","PageDown"]);function ho(o,e,t,n){let r=s=>Math.max(0,Math.min(n.rows-1,s)),i=s=>Math.max(0,Math.min(n.cols-1,s));switch(o){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:i(t.colIndex-1)};case"ArrowRight":return{rowIndex:t.rowIndex,colIndex:i(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 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 en=new Map,po=new WeakMap,Jr=o=>o?po.get(o):void 0,Yr=o=>o?en.get(o):void 0;var da={Enter:"edit",F2:"edit",Delete:"clear",Backspace:"clear","Ctrl+Z":"undo","Ctrl+Y":"redo","Ctrl+Shift+Z":"redo","Ctrl+F":"find","Alt+ArrowDown":"columnMenu"};function ca(o){let e=[];return(o.ctrlKey||o.metaKey)&&e.push("Ctrl"),o.altKey&&e.push("Alt"),o.shiftKey&&o.key.length>1&&e.push("Shift"),o.shiftKey&&o.key.length===1&&(o.ctrlKey||o.metaKey)&&e.push("Shift"),e.push(o.key.length===1?o.key.toUpperCase():o.key),e.join("+")}var ua=3;function fa(o,e){return o.renderer.rtl?e.key==="ArrowLeft"?"ArrowRight":e.key==="ArrowRight"?"ArrowLeft":e.key:e.key}function Zr(o){var T;let{renderer:e}=o,t=e.bodyEl,n=e.root,r=k=>fa(o,k),i="mouse",s=0,a=null,l=!1,d=k=>{let S=e.cellAt(k.target);if(!S)return null;let L=o.rowModel.getRow(S.rowIndex),A=o.columns.getColumn(S.colId);if(!L||!A)return null;let F=B(A.id)?void 0:j(A.def,L.data);return{row:L.data,rowIndex:S.rowIndex,colId:S.colId,value:F,event:k}},c=k=>{var F,I;let S=(I=(F=k.target).closest)==null?void 0:I.call(F,".fg-group-toggle, .fg-tree-toggle, .fg-detail-toggle"),L=S&&e.cellAt(k.target);if(!L)return!1;e.gridEl.focus({preventScroll:!0}),o.setFocus(L.rowIndex,L.colId),o.setRange(null);let A=o.rowModel.getRow(L.rowIndex);return S.classList.contains("fg-detail-toggle")?o.setDetailExpanded(A.data,!o.isDetailExpanded(A.data)):o.toggleRow(L.rowIndex),!0},u=k=>{var $;if(c(k))return;let S=o.store.state.focus,L=e.cellAt(k.target);if(L&&(($=o.rowModel.getRow(L.rowIndex))!=null&&$.kind)){L.colId===ae&&o.rowModel.getRow(L.rowIndex).kind==="group"&&o.toggleGroupSelection(o.rowModel.getRow(L.rowIndex)),e.gridEl.focus({preventScroll:!0}),o.setFocus(L.rowIndex,L.colId),o.setRange(null);return}let A=d(k);if(!A)return;if(e.gridEl.focus({preventScroll:!0}),A.colId===Le){let P=o.columns.displayed().filter(N=>!B(N.id));P.length&&(o.setFocus(A.rowIndex,P[0].id),o.rangesOn()&&o.setRange({start:{rowIndex:A.rowIndex,colId:P[0].id},end:{rowIndex:A.rowIndex,colId:P[P.length-1].id}}));return}let F=l;l=!1;let I=o.store.state.focus,D=A.colId===ae;if(!F)if(k.shiftKey&&I&&!D&&!B(I.colId)&&o.rangesOn())o.setRange({start:I,end:{rowIndex:A.rowIndex,colId:A.colId}},!0);else if((k.ctrlKey||k.metaKey)&&!D&&!B(A.colId)&&o.rangesOn()){let P={rowIndex:A.rowIndex,colId:A.colId};o.addRange({start:P,end:P}),o.setFocus(A.rowIndex,A.colId)}else o.setFocus(A.rowIndex,A.colId),o.setRange(null);o.options.rowSelection&&!F&&(D||o.options.rowClickSelection!==!1)&&o.selectFromClick(A.rowIndex,D||k.ctrlKey||k.metaKey,k.shiftKey),o.events.emit("cellClick",A),i==="touch"&&!F&&S&&S.rowIndex===A.rowIndex&&S.colId===A.colId&&o.editor.canEdit(A.rowIndex,A.colId)&&(o.columns.getColumn(A.colId).def.type==="boolean"?o.applyEdit(A.rowIndex,A.colId,A.value!==!0):o.editor.start(A.rowIndex,A.colId))},f=k=>{var I,D;if((D=(I=k.target).closest)!=null&&D.call(I,"button"))return;let S=e.cellAt(k.target),L=S&&o.rowModel.getRow(S.rowIndex);if((L==null?void 0:L.kind)==="group"){o.toggleRow(S.rowIndex);return}if(L!=null&&L.kind)return;let A=d(k);if(!A||(o.events.emit("cellDoubleClick",A),!o.editor.canEdit(A.rowIndex,A.colId)))return;o.columns.getColumn(A.colId).def.type==="boolean"?o.applyEdit(A.rowIndex,A.colId,A.value!==!0):o.editor.start(A.rowIndex,A.colId)},p={...da};for(let[k,S]of Object.entries((T=o.options.keymap)!=null?T:{}))p[k]=S===!1?"none":S;let h=k=>{var F,I;let S=o.store.state.focus,L=p[ca(k)];if(L==="none")return!1;switch(L){case"edit":return!S||!o.editor.canEdit(S.rowIndex,S.colId)||o.columns.getColumn(S.colId).def.type==="boolean"?!1:(o.editor.start(S.rowIndex,S.colId),!0);case"clear":return o.clearCells(),!0;case"undo":return o.undo(),!0;case"redo":return o.redo(),!0;case"copy":return o.copyToClipboard(!1),!0;case"cut":return o.cutToClipboard(),!0;case"selectAll":return o.selectAllCells(),!0;case"find":return o.options.findBar===!1||!o.paid?!1:(o.finder.openBar(),!0);case"paste":return(I=(F=navigator.clipboard)==null?void 0:F.readText)==null||I.call(F).then(D=>o.pasteText(D),()=>{}),!0;case"columnMenu":return o.menu.openAtFocus()}if(!S||!o.editor.canEdit(S.rowIndex,S.colId))return!1;let A=o.columns.getColumn(S.colId).def;if(k.key===" "&&A.type==="boolean"&&!k.ctrlKey&&!k.metaKey){let D=o.rowModel.getRow(S.rowIndex).data;return o.applyEdit(S.rowIndex,S.colId,D[A.field]!==!0),!0}return k.key.length===1&&k.key!==" "&&!k.ctrlKey&&!k.metaKey&&!k.altKey&&A.type!=="boolean"?(o.editor.start(S.rowIndex,S.colId,k.key),!0):!1},y=k=>{var D,$,P;let S=o.store.state.focus;if(!S||k.ctrlKey||k.metaKey||k.altKey||k.shiftKey)return!1;let L=o.rowModel.getRow(S.rowIndex);if(!o.isExpandable(L))return!1;let A=L.kind==="group";if(!A&&S.colId!==((D=o.columns.displayed().find(N=>!B(N.id)))==null?void 0:D.id))return!1;let F=!!((P=($=L.group)==null?void 0:$.expanded)!=null?P:L.expanded),I=o.expandKey(L);if(A&&(k.key==="Enter"||k.key===" "))o.setGroupExpanded(I,!F);else if(r(k)==="ArrowRight"&&!F)o.setGroupExpanded(I,!0);else if(r(k)==="ArrowLeft"&&F)o.setGroupExpanded(I,!1);else return!1;return!0},m=k=>{let S=e.cellAt(k.target);if(!S||S.colId!==Be)return!1;k.preventDefault();let L=o.rowModel.getRow(S.rowIndex);if(!L||L.kind||!o.canMoveRows())return!0;let A=L.data,F=C("div","fg-row-drop-marker"),I=null;n.classList.add("fg-row-dragging");let D=P=>{var ue,z;let N=Rt(n,P.clientX,P.clientY),O=N==null?void 0:N.closest(".fg-root"),H=O===n?o:Yr(O),W=o.dragOptions.group;if(I=null,F.remove(),!H||!O||H!==o&&(!W||H.dragOptions.group!==W||!H.options.rowDrag))return;let U=N.closest(".fg-row[data-row]"),J=U==null?void 0:U.getBoundingClientRect(),_=null,Z="after",Y;if(U&&J){let V=H.rowModel.getRow(Number(U.dataset.row));if(!V||V.kind==="group")return;_=(z=(ue=V.detailOf)==null?void 0:ue.data)!=null?z:V.data;let te=(P.clientY-J.top)/J.height;V.kind==="detail"?Z="after":H.options.treeData?Z=te<.25?"before":te>.75?"after":"inside":Z=te<.5?"before":"after",Y=Z==="before"?J.top:J.bottom}else{if(!N.closest(".fg-body"))return;let V=O.querySelectorAll(".fg-body-pane-center .fg-row[data-row]");Y=V.length?Math.max(...[...V].map(te=>te.getBoundingClientRect().bottom)):O.querySelector(".fg-body").getBoundingClientRect().top}if(!H.canDropRow(A,_,Z,o))return;I={into:H,target:_,position:Z};let Q=O.getBoundingClientRect().top;F.classList.toggle("fg-row-drop-inside",Z==="inside"),F.style.top=`${Z==="inside"?J.top-Q:Y-Q-1}px`,F.style.height=Z==="inside"?`${J.height}px`:"",O.append(F)},$=()=>{window.removeEventListener("pointermove",D),window.removeEventListener("pointerup",$),window.removeEventListener("pointercancel",$),n.classList.remove("fg-row-dragging"),F.remove(),I&&I.into.dropRow(A,I.target,I.position,o)};return window.addEventListener("pointermove",D),window.addEventListener("pointerup",$),window.addEventListener("pointercancel",$),!0},g=k=>{let S=e.cellAt(k.target);if(!S)return;let L=k.clientX,A=k.clientY,F=()=>{clearTimeout(s),window.removeEventListener("pointermove",I),window.removeEventListener("pointerup",F),window.removeEventListener("pointercancel",F),a===F&&(a=null)},I=D=>{Math.hypot(D.clientX-L,D.clientY-A)>8&&F()};clearTimeout(s),s=window.setTimeout(()=>{F(),o.contextMenu.enabled()&&(l=!0,B(S.colId)||(o.setFocus(S.rowIndex,S.colId),o.rangeContains(S.rowIndex,S.colId)||o.setRange({start:S,end:S})),o.contextMenu.open(L,A,S.rowIndex,S.colId))},550),a==null||a(),a=F,window.addEventListener("pointermove",I),window.addEventListener("pointerup",F),window.addEventListener("pointercancel",F)},w=k=>{if(i=k.pointerType||"mouse",i==="touch"){g(k);return}if(k.button===0&&m(k)||!o.rangesOn()||k.button!==0||k.shiftKey||k.target.closest("input, a, button"))return;let S=e.cellAt(k.target);if(!S||B(S.colId))return;let L=k.clientX,A=k.clientY,F=k.ctrlKey||k.metaKey,I=!1,D=P=>{if(!I&&Math.hypot(P.clientX-L,P.clientY-A)<ua)return;let N=e.cellAt(Rt(n,P.clientX,P.clientY));!N||B(N.colId)||(I||(I=!0,n.classList.add("fg-range-dragging"),F&&o.addRange({start:S,end:S}),o.setFocus(S.rowIndex,S.colId)),o.setRange({start:S,end:N},F))},$=()=>{window.removeEventListener("pointermove",D),window.removeEventListener("pointerup",$),window.removeEventListener("pointercancel",$),n.classList.remove("fg-range-dragging"),I&&(l=!0),a===$&&(a=null)};a==null||a(),a=$,window.addEventListener("pointermove",D),window.addEventListener("pointerup",$),window.addEventListener("pointercancel",$)},b=k=>{var O,H;if(k.target!==n&&k.target!==e.gridEl)return;let S=o.columns.displayed(),L=o.rowModel.getRowCount();if(!S.length||!L)return;if(y(k)){k.preventDefault();return}if(h(k)){k.preventDefault();return}let A=o.store.state.focus,F=k.ctrlKey||k.metaKey;if(k.key==="Escape"&&o.store.state.range){k.preventDefault(),o.setRange(null);return}if(F&&k.key.toLowerCase()==="a"&&o.rangesOn()){k.preventDefault(),o.selectAllCells();return}if(k.key==="ContextMenu"||k.key==="F10"&&k.shiftKey){k.preventDefault(),o.contextMenu.openAtFocus();return}if(k.key===" "&&A&&o.options.rowSelection){k.preventDefault(),o.selectFromClick(Math.min(A.rowIndex,L-1),!0,k.shiftKey);return}let I={rows:L,cols:S.length,pageRows:e.pageRows()},D=S.findIndex(W=>!B(W.id));if(o.rangesOn()&&k.shiftKey&&k.key!=="Tab"&&fo.has(k.key)){let W=A!=null?A:{rowIndex:0,colId:S[D].id},U=o.store.state.range,J=(O=U==null?void 0:U.end)!=null?O:W,_={rowIndex:Math.min(J.rowIndex,L-1),colIndex:Math.max(0,S.findIndex(Q=>Q.id===J.colId))},Z=ho(r(k),{ctrl:F,shift:!1},_,I);if(!Z)return;k.preventDefault();let Y=S[Math.max(D,Z.colIndex)].id;A||o.setFocus(W.rowIndex,W.colId),o.setRange({start:(H=U==null?void 0:U.start)!=null?H:W,end:{rowIndex:Z.rowIndex,colId:Y}}),e.ensureVisible(Z.rowIndex,Y);return}let P;if(!A)P=fo.has(k.key)&&k.key!=="Tab"?{rowIndex:0,colIndex:0}:null;else{let W=Math.max(0,S.findIndex(U=>U.id===A.colId));P=ho(r(k),{ctrl:F,shift:k.shiftKey},{rowIndex:Math.min(A.rowIndex,L-1),colIndex:W},I)}if(!P)return;k.preventDefault();let N=S[P.colIndex].id;o.setFocus(P.rowIndex,N),o.setRange(null),e.ensureVisible(P.rowIndex,N)},v=k=>{var S,L;return(L=(S=k.target)==null?void 0:S.closest)==null?void 0:L.call(S,".fg-editor, input, textarea, select, [contenteditable]")},M=k=>{var S,L;return((L=(S=k.target)==null?void 0:S.closest)==null?void 0:L.call(S,".fg-root"))!==n},x=k=>{if(v(k)||M(k))return;let S=o.copyText(!1);!S||!k.clipboardData||(k.clipboardData.setData("text/plain",S),k.preventDefault())},R=k=>{if(v(k)||M(k))return;let S=o.copyText(!1);!S||!k.clipboardData||(k.clipboardData.setData("text/plain",S),k.preventDefault(),o.clearCells(!0))},E=k=>{var L;if(v(k)||M(k))return;let S=(L=k.clipboardData)==null?void 0:L.getData("text/plain");S&&(k.preventDefault(),o.pasteText(S))};return t.addEventListener("click",u),t.addEventListener("dblclick",f),t.addEventListener("pointerdown",w),n.addEventListener("keydown",b),n.addEventListener("copy",x),n.addEventListener("paste",E),n.addEventListener("cut",R),()=>{clearTimeout(s),a==null||a(),t.removeEventListener("click",u),t.removeEventListener("dblclick",f),t.removeEventListener("pointerdown",w),n.removeEventListener("keydown",b),n.removeEventListener("copy",x),n.removeEventListener("paste",E),n.removeEventListener("cut",R)}}var tn=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,r=C("div","fg-filters-head"),i=C("span","fg-filters-title");i.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)}),r.append(i,s);let a=C("div","fg-filters-list");for(let c of e.columns.displayed()){if(B(c.id)||!me(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 f=C("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 h=e.menu.filterSection(c.id,()=>{});h&&u.append(h)};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 ha=["sum","avg","min","max","count"],nn=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 r=e.sourceLeaves(),i=c=>{var f,p,h;let u=(f=r.find(y=>y.id===c))==null?void 0:f.def;return(h=(p=u==null?void 0:u.header)!=null?p:u==null?void 0:u.field)!=null?h: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 f=C("div","fg-pivot-zone");f.dataset.zone=c;let p=C("div","fg-pivot-zone-title");p.textContent=u;let h=C("div","fg-pivot-chips"),y=c==="values"?this.draft.values.map(w=>w.colId):this.draft[c];y.forEach((w,b)=>{let v=C("span","fg-group-chip");v.dataset.col=w;let M=C("span","fg-group-chip-label");if(M.textContent=i(w),v.append(M),c==="values"){let R=C("select","fg-pivot-agg",{"aria-label":`${i(w)} ${t.pivotValues}`});for(let E of ha){let T=C("option");T.value=E,T.textContent=t[E],R.append(T)}R.value=this.draft.values[b].aggFunc,R.addEventListener("change",()=>{this.draft.values[b].aggFunc=R.value,this.apply()}),v.append(R)}let x=C("button","fg-group-chip-remove",{type:"button","aria-label":`${t.ungroup}: ${i(w)}`});x.textContent="\xD7",x.addEventListener("click",()=>{c==="values"?this.draft.values.splice(b,1):this.draft[c].splice(b,1),this.apply()}),v.append(x),h.append(v)});let m=C("select","fg-pivot-add",{"aria-label":`${u}: ${t.addColumn}`}),g=C("option");g.value="",g.textContent=t.addColumn,m.append(g);for(let w of r){if(y.includes(w.id)||c==="values"&&w.def.type!=="number")continue;let b=C("option");b.value=w.id,b.textContent=i(w.id),m.append(b)}return m.addEventListener("change",()=>{m.value&&(c==="values"?this.draft.values.push({colId:m.value,aggFunc:"sum"}):this.draft[c].push(m.value),this.apply())}),f.append(p,h,m),f};this.el.replaceChildren(s,l("rows",t.pivotRows),l("columns",t.pivotColumns),l("values",t.pivotValues))}};var pa=4,on=o=>!B(o.id)&&(o.children?o.children.some(on):o.def.chooser!==!1),go=o=>{var e,t;return(t=(e=o.def.header)!=null?e:o.def.field)!=null?t:o.id},rn=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 r=n.target,i=this.nodeOf(r);i&&this.setVisible(this.leavesOf(i),r.checked)}),this.list.addEventListener("click",n=>{let r=n.target.closest(".fg-chooser-caret"),i=r&&this.nodeOf(r);i&&(this.collapsed.has(i.id)?this.collapsed.delete(i.id):this.collapsed.add(i.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)!on(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 i=this.matchingLeaves(),s=i.filter(a=>!a.hide).length;this.allBox.checked=i.length>0&&s===i.length,this.allBox.indeterminate=s>0&&s<i.length}query(){return this.search.value.trim().toLowerCase()}subtreeMatches(e,t){for(let n=e;n;n=n.parent)if(go(n).toLowerCase().includes(t))return!0;return!!e.children&&e.children.some(n=>on(n)&&this.subtreeMatches(n,t))}leavesOf(e){return on(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 r=C("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=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 i=this.leavesOf(e),s=i.filter(d=>!d.hide).length,a=C("input","fg-checkbox",{type:"checkbox","aria-label":go(e)});a.checked=i.length>0&&s===i.length,a.indeterminate=s>0&&s<i.length,a.disabled=i.every(d=>d.def.lockVisible);let l=C("span","fg-chooser-label");if(l.textContent=go(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"),r=n&&this.nodeOf(n);if(!n||!r||e.button!==0)return;e.preventDefault();let i=new Set(this.grid.columns.siblings(r.id).map(p=>p.id).filter(p=>p!==r.id)),s=[...this.list.querySelectorAll(".fg-chooser-item")].filter(p=>i.has(p.dataset.col)),a=e.clientY,l=!1,d=-1,c=C("div","fg-chooser-marker"),u=p=>{if(!l){if(Math.abs(p.clientY-a)<pa||!s.length)return;l=!0,n.classList.add("fg-dragging"),this.list.append(c)}d=s.filter(m=>{let g=m.getBoundingClientRect();return p.clientY>g.top+g.height/2}).length;let h=this.list.getBoundingClientRect().top-this.list.scrollTop,y=d<s.length?s[d].getBoundingClientRect().top:s[s.length-1].getBoundingClientRect().bottom;c.style.top=`${y-h-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(m=>m.id).filter(m=>m!==r.id),h=d<s.length?p.indexOf(s[d].dataset.col):p.indexOf(s[s.length-1].dataset.col)+1;h=Math.max(p.filter(B).length,h);let y=this.grid.columns.siblings(r.id).findIndex(m=>m.id===r.id);h!==y&&(this.grid.columns.move(r.id,h),this.grid.layoutChanged(),this.grid.events.emit("columnMove",{colId:r.id,toIndex:h}))};window.addEventListener("pointermove",u),window.addEventListener("pointerup",f)}},sn=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"),r=C("span","fg-menu-title");r.textContent=e.chooseColumns;let i=C("button","fg-chooser-close",{type:"button","aria-label":e.close});i.textContent="\xD7",i.addEventListener("click",()=>this.close()),n.append(r,i),this.panel=new rn(this.grid),t.append(n,this.panel.el),de(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=>{ge(c,t)||this.close()},d=c=>{c.key==="Escape"&&(this.close(),this.grid.renderer.gridEl.focus())};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}},an=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 rn(e),this.filters=new tn(e),this.pivot=new nn(e);let r=n.filter(s=>s==="columns"||s==="filters"||s==="pivot");r.length||r.push("columns"),this.current=r[0];let i=C("div","fg-sidebar-tabs",{role:"tablist"});for(let s of r){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),i.append(a)}this.el.append(this.panelHost,i),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(){this.el.classList.toggle("fg-sidebar-open",this.isOpen);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 ga=()=>typeof navigator!="undefined"&&/Mac|iPhone|iPad/.test(navigator.platform||navigator.userAgent||""),it=o=>ga()?`\u2318${o}`:`Ctrl+${o}`,ln=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()}enabled(){return this.grid.options.contextMenu!==!1&&this.grid.allow("contextMenu")}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 s=r.dataset.col;if(!s||B(s)||r.classList.contains("fg-header-group"))return;e.preventDefault(),this.close(),t.menu.open(s,r);return}let i=t.renderer.cellAt(n);!i||!this.enabled()||(e.preventDefault(),t.renderer.gridEl.focus({preventScroll:!0}),!B(i.colId)&&!t.rangeContains(i.rowIndex,i.colId)&&(t.setFocus(i.rowIndex,i.colId),t.setRange({start:i,end:i})),this.open(e.clientX,e.clientY,i.rowIndex,i.colId))}openAtFocus(){var i;let e=this.grid.store.state.focus;if(!e||!this.enabled())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=(i=n==null?void 0:n.getBoundingClientRect())!=null?i:t;this.open(r.left+8,r.bottom,e.rowIndex,e.colId)}defaultItems(e){var c;let{grid:t}=this,n=t.store.state.locale,r=t.columns.getNode(e),i=r==null?void 0:r.def,s=!!i&&!B(e),a=t.store.state.selected.size?t.shownSelectedRows():[],l=[{label:n.copy,shortcut:it("C"),action:()=>t.copyToClipboard(!1)},{label:n.copyWithHeaders,action:()=>t.copyToClipboard(!0)},{label:n.cut,shortcut:it("X"),action:()=>t.cutToClipboard()},...a.length?[{label:n.copyRows,action:()=>t.copyToClipboard(!1,!0)}]:[],{label:n.paste,shortcut:it("V"),action:()=>this.pasteFromClipboard()}];(t.history.canUndo()||t.history.canRedo())&&l.push("separator",{label:n.undo,shortcut:it("Z"),action:()=>t.undo(),disabled:!t.history.canUndo()},{label:n.redo,shortcut:it("Y"),action:()=>t.redo(),disabled:!t.history.canRedo()}),t.options.rowSelection&&a.length&&l.push({label:n.deleteRows,action:()=>t.removeRows(a)}),s&&(l.push("separator",{label:n.autosizeThis,action:()=>t.autoSize([e])}),i.lockVisible||l.push({label:n.hideColumn,action:()=>t.setColumnsVisible([e],!1)}),l.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})),l.push("separator"),t.options.rowSelection==="multiple"&&l.push({label:n.selectAllRows,action:()=>t.api.selectAll()}),l.push({label:n.chooseColumns,action:()=>t.chooser.open()});let d=t.rangeBounds();return d&&(d.r2>d.r1||d.c2>d.c1)&&t.paid&&l.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"})}),l.push("separator",{label:n.exportCsv,action:()=>t.api.exportCsv()},...t.paid?[{label:n.exportExcel,action:()=>t.api.exportXlsx()}]:[],{label:n.exportJson,action:()=>t.api.exportJson()},...(c=t.options.assistant)!=null&&c.url&&t.paid?[{label:`${n.ai.title}\u2026`,action:()=>t.api.openAssistant()}]:[],...t.paid?[{label:n.exportPdf,action:()=>t.api.exportPdf()}]:[]),t.options.advancedFilter!==!1&&!t.options.pivot&&t.paid&&l.push("separator",{label:`${n.advancedFilter}\u2026`,action:()=>t.filterBuilder.open()}),l.push("separator",{label:n.print,action:()=>t.api.print()}),l}pasteFromClipboard(){let e=typeof navigator!="undefined"?navigator.clipboard:void 0,t=()=>this.grid.toast(this.grid.store.state.locale.pasteHint.replace("Ctrl+V",it("V")));if(!(e!=null&&e.readText))return t();e.readText().then(n=>this.grid.pasteText(n),t)}open(e,t,n,r){var M,x,R;this.close(),this.grid.menu.close();let{grid:i}=this,s=i.rowModel.getRow(n),a=i.columns.getColumn(r),l=this.defaultItems(r),d={row:(M=s==null?void 0:s.data)!=null?M:null,rowIndex:n,colId:r,value:s&&a&&!B(r)?j(a.def,s.data):void 0,defaultItems:l},c=i.options.contextMenu,u=l;if(typeof c=="function")try{u=c(d)}catch{u=l}let f=i.store.state.locale,p=C("div",`fg-menu fg-context-menu fg-theme-${i.store.state.theme}`,{role:"menu","aria-label":f.columnMenu});i.applyFontTo(p);let h=!0;for(let E of u){if(E==="separator"){h||p.append(C("div","fg-cm-sep",{role:"separator"})),h=!0;continue}let T=C("button","fg-menu-item fg-cm-item",{type:"button",role:"menuitem"}),k=C("span","fg-cm-label");if(k.textContent=E.label,T.append(k),E.shortcut){let S=C("span","fg-cm-shortcut");S.textContent=E.shortcut,T.append(S)}T.disabled=!!E.disabled,T.addEventListener("click",()=>{this.close(),E.action()}),p.append(T),h=!1}(x=p.lastElementChild)!=null&&x.classList.contains("fg-cm-sep")&&p.lastElementChild.remove(),de(this.grid.renderer.root).append(p);let y=p.offsetWidth||220,m=p.offsetHeight||300;p.style.left=`${Math.max(4,Math.min(e,window.innerWidth-y-4))}px`;let g=Math.max(4,Math.min(t,window.innerHeight-m-4));p.style.top=`${g}px`,p.style.maxHeight=`${Math.max(120,window.innerHeight-g-8)}px`,this.popup=p;let w=E=>{ge(E,p)||this.close()},b=E=>{if(E.key==="Escape"){this.close(),i.renderer.gridEl.focus();return}if(E.key!=="ArrowDown"&&E.key!=="ArrowUp")return;let T=[...p.querySelectorAll("button:not(:disabled)")],k=T.indexOf(Qt(p)),S=T[(k+(E.key==="ArrowDown"?1:T.length-1)+T.length)%T.length];S==null||S.focus(),E.preventDefault()},v=()=>this.close();document.addEventListener("pointerdown",w,!0),document.addEventListener("keydown",b,!0),i.renderer.scroller.addEventListener("scroll",v,{passive:!0}),this.off.push(()=>document.removeEventListener("pointerdown",w,!0),()=>document.removeEventListener("keydown",b,!0),()=>i.renderer.scroller.removeEventListener("scroll",v)),(R=p.querySelector("button:not(:disabled)"))==null||R.focus()}close(){var e;for(let t of this.off)t();this.off=[],(e=this.popup)==null||e.remove(),this.popup=null}};var dn=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,i=n.renderer.root,s=l=>{let d=n.renderer.cellAt(Rt(n.renderer.root,l.clientX,l.clientY)),c=d&&n.columns.getColumn(d.colId);if(!d||!c||B(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",s),window.removeEventListener("pointerup",a),this.preview.remove(),i.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}})};i.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(){return this.grid.options.fillHandle!==!1&&this.grid.rangesOn()}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||B(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 i=this.grid.renderer.root.getBoundingClientRect(),s=r.getBoundingClientRect();this.handle.style.left=`${(this.grid.renderer.rtl?s.left:s.right)-i.left-4}px`,this.handle.style.top=`${s.bottom-i.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(),i=t.getBoundingClientRect(),s=n.getBoundingClientRect();Object.assign(this.preview.style,{left:`${i.left-r.left}px`,top:`${i.top-r.top}px`,width:`${s.right-i.left}px`,height:`${s.bottom-i.top}px`}),this.preview.isConnected||this.grid.renderer.root.append(this.preview)}destroy(){this.handle.remove(),this.preview.remove()}};var cn=1e4,un=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 t=this.grid.rowModel.rows(),n=this.scanner();for(let r=0;r<t.length&&this.matches.length<cn;r++)n(r,this.matches);this.matches.length=Math.min(this.matches.length,cn),this.reindex(),this.matches.length&&this.go(0)}return this.updateCount(),this.grid.renderer.invalidate({rows:!0}),this.matches.length}scanner(){let{grid:e}=this,t=e.store.state.locale.code,n=e.columns.displayed().filter(s=>!B(s.id)),r=n.map(s=>ne(s.def,t)),i=e.rowModel.rows();return(s,a)=>{let l=i[s];if(!(!l||l.kind))for(let d=0;d<n.length;d++)r[d](j(n[d].def,l.data)).toLowerCase().includes(this.query)&&a.push({rowIndex:s,colId:n[d].id})}}reindex(){this.lookup.clear(),this.matches.forEach((e,t)=>this.lookup.set(`${e.rowIndex}|${e.colId}`,t))}refreshRows(e){if(!this.query)return;if(this.matches.length>=cn)return this.refresh();let{rowModel:t}=this.grid,n=new Set;for(let p of e){let h=t.indexOfId(p);h>=0&&n.add(h)}if(!n.size)return;let r=this.matches[this.index],i=this.scanner(),s=[];for(let p of n)i(p,s);let a=this.matches.length,l=this.matches.filter(p=>n.has(p.rowIndex)),d=p=>p.map(h=>`${h.rowIndex}|${h.colId}`).sort().join(",");if(d(l)===d(s))return;let c=new Map(this.grid.columns.displayed().map((p,h)=>[p.id,h]));this.matches=[...this.matches.filter(p=>!n.has(p.rowIndex)),...s].sort((p,h)=>{var y,m;return p.rowIndex-h.rowIndex||((y=c.get(p.colId))!=null?y:0)-((m=c.get(h.colId))!=null?m:0)}).slice(0,cn),this.reindex();let u=r?this.lookup.get(`${r.rowIndex}|${r.colId}`):void 0,f=this.index;u!==void 0?this.index=u:this.matches.length?this.index=Math.min(Math.max(this.index,0),this.matches.length-1):this.index=-1,(a!==this.matches.length||f!==this.index||u===void 0)&&this.updateCount(),this.grid.renderer.invalidate({rows:!0})}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||!this.grid.paid)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 r=(u,f,p)=>{let h=C("button","fg-findbar-btn",{type:"button","aria-label":u,title:u});return h.textContent=f,h.addEventListener("click",p),h};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",u=>{u.stopPropagation(),u.key==="Escape"?(u.preventDefault(),this.closeBar()):u.key==="Enter"&&(u.preventDefault(),u.shiftKey?this.previous():this.next())});let{root:i,headerEl:s,main:a}=this.grid.renderer;i.append(t);let l=i.getBoundingClientRect(),d=s.getBoundingClientRect(),c=a.getBoundingClientRect();d.height&&(t.style.top=`${Math.round(d.bottom-l.top)+6}px`),c.width&&(t.style.right=`${Math.max(0,Math.round(l.right-c.right))+18}px`),this.bar=t,n.focus()}relabel(){if(!this.bar)return;let e=this.grid.store.state.locale,t=this.bar.querySelector("input");t.placeholder=e.findPlaceholder,t.setAttribute("aria-label",e.findPlaceholder);let n=[e.findPrevious,e.findNext,e.close];this.bar.querySelectorAll(".fg-findbar-btn").forEach((r,i)=>{r.setAttribute("aria-label",n[i]),r.title=n[i]}),this.updateCount()}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 ma=864e5;function St(o,e){if(!o.length||e<=0)return[];let t=()=>Array.from({length:e},(i,s)=>o[s%o.length]);if(o.every(i=>typeof i=="number"&&!Number.isNaN(i))){let i=o;if(i.length===1)return t();let s=i[1]-i[0];if(!i.every((l,d)=>d===0||Math.abs(l-i[d-1]-s)<1e-9))return t();let a=i[i.length-1];return Array.from({length:e},(l,d)=>Math.round((a+s*(d+1))*1e12)/1e12)}let n=o.map(i=>i instanceof Date||typeof i=="string"&&/^\d{4}-\d{2}-\d{2}/.test(i)?ye(i):null);if(n.every(Boolean)&&o.length>=2){let i=n.map(a=>Math.round(a.getTime()/ma)),s=i[1]-i[0];if(i.every((a,l)=>l===0||a-i[l-1]===s)){let a=n[n.length-1],l=o[o.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:he(u)})}return t()}let r=o[o.length-1];if(typeof r=="string"&&!K(r)&&o.every(i=>typeof i=="string")){let i=/^(.*?)(\d+)$/.exec(r);if(i){let s=i[2].length,a=Number(i[2]);return Array.from({length:e},(l,d)=>`${i[1]}${String(a+d+1).padStart(s,"0")}`)}}return t()}function mo(o){let e=t=>/[\t\n\r"]/.test(t)?`"${t.replace(/"/g,'""')}"`:t;return o.map(t=>t.map(e).join(" ")).join(`\r
|
|
2
|
-
`)}function
|
|
1
|
+
"use strict";var FreeGrid=(()=>{var Un=Object.defineProperty;var hs=Object.getOwnPropertyDescriptor;var ps=Object.getOwnPropertyNames;var gs=Object.prototype.hasOwnProperty;var ms=(o,e)=>{for(var t in e)Un(o,t,{get:e[t],enumerable:!0})},ws=(o,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of ps(e))!gs.call(o,r)&&r!==t&&Un(o,r,{get:()=>e[r],enumerable:!(n=hs(e,r))||n.enumerable});return o};var ys=o=>ws(Un({},"__esModule",{value:!0}),o);var $l={};ms($l,{buildWorkbook:()=>jo,changeTracker:()=>Ji,connectLive:()=>us,createGrid:()=>rs,csrfHeaders:()=>ds,en:()=>fe,evaluateFormula:()=>_t,exportWorkbook:()=>is,formulaFunctions:()=>Fr,loadData:()=>ls,locales:()=>fs,messageToTransaction:()=>Xo,parseCsv:()=>kn,readXlsx:()=>An,registerFormulaFunction:()=>Ir,registerLocale:()=>Ot,renderChart:()=>$n,resolveLocale:()=>mt,restDatasource:()=>_o,saveChanges:()=>as,setLicenseKey:()=>Oi,verifyLicense:()=>No,version:()=>Ye,writeXlsx:()=>_e});var bs={code:"en",noRows:"No rows to show",filter:"Filter",apply:"Apply",reset:"Reset",selectAll:"(Select all)",setSelected:"({n} selected)",noAggregate:"No aggregate",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",print:"Print\u2026",printLimited:"Printed the first {n} of {total} rows. Export to Excel or CSV for all of them.",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",exportPdf:"Export PDF",exportJson:"Export JSON",cf:{title:"Conditional formatting",add:"Add rule",clear:"Clear rules",none:"No rules for this column",type:"Rule",style:"Format",wholeRow:"Whole row",count:"Count",align:"Align",aligns:{none:"Default",left:"Left",center:"Center",right:"Right"},types:{value:"Cell value",formula:"Formula",top:"Top",bottom:"Bottom",aboveAverage:"Above average",belowAverage:"Below average",duplicate:"Duplicate values",unique:"Unique values",dataBar:"Data bars",colorScale:"Color scale",iconSet:"Icon set"},ops:{notBetween:"Not between",notContains:"Does not contain"},styles:{red:"Light red fill",yellow:"Yellow fill",green:"Green fill",blue:"Blue fill",redText:"Red text",bold:"Bold"}},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"}},fe=bs;var Zo=new Set;function G(o){Zo.has(o)||(Zo.add(o),console.warn(`[FreeGrid] ${o}`))}var Be=new Map([["en",fe]]);function Ot(o){Be.set(o.code,o)}function Qo(o){let e=o.toLowerCase();for(let n of Be.keys())if(n.toLowerCase()===e)return n;let t=e.split("-")[0];if(t==="zh"){if(/-(tw|hk|mo|hant)(-|$)/.test(e)&&Be.has("zh-TW"))return"zh-TW";if(Be.has("zh-CN"))return"zh-CN"}for(let n of Be.keys())if(n.toLowerCase().split("-")[0]===t)return n}function vs(){var o;return typeof navigator=="undefined"?[]:(o=navigator.languages)!=null&&o.length?navigator.languages:navigator.language?[navigator.language]:[]}function xs(o){var e,t;return{...fe,...o,code:(e=o.code)!=null?e:"en",ops:{...fe.ops,...(t=o.ops)!=null?t:{}}}}function mt(o,e=vs()){if(o&&typeof o=="object")return xs(o);if(typeof o=="string"){let t=Qo(o);return t?Be.get(t):(G(`locale "${o}" is not registered \u2014 import it from "@freegridjs/core/locales/${o}" and pass the pack (or call registerLocale). Falling back to "en".`),fe)}for(let t of e){let n=Qo(t);if(n)return Be.get(n)}return fe}var Cs={code:"de",noRows:"Keine Zeilen vorhanden",filter:"Filter",apply:"Anwenden",reset:"Zur\xFCcksetzen",selectAll:"(Alle ausw\xE4hlen)",setSelected:"({n} ausgew\xE4hlt)",noAggregate:"Keine Aggregation",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",print:"Drucken\u2026",printLimited:"Die ersten {n} von {total} Zeilen wurden gedruckt. F\xFCr alle Zeilen nach Excel oder CSV 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",exportPdf:"Als PDF exportieren",exportJson:"Als JSON exportieren",cf:{title:"Bedingte Formatierung",add:"Regel hinzuf\xFCgen",clear:"Regeln l\xF6schen",none:"Keine Regeln f\xFCr diese Spalte",type:"Regel",style:"Format",wholeRow:"Ganze Zeile",count:"Anzahl",align:"Ausrichtung",aligns:{none:"Standard",left:"Links",center:"Zentriert",right:"Rechts"},types:{value:"Zellwert",formula:"Formel",top:"Obere",bottom:"Untere",aboveAverage:"\xDCber dem Durchschnitt",belowAverage:"Unter dem Durchschnitt",duplicate:"Doppelte Werte",unique:"Eindeutige Werte",dataBar:"Datenbalken",colorScale:"Farbskala",iconSet:"Symbolsatz"},ops:{notBetween:"Nicht zwischen",notContains:"Enth\xE4lt nicht"},styles:{red:"Hellrote F\xFCllung",yellow:"Gelbe F\xFCllung",green:"Gr\xFCne F\xFCllung",blue:"Blaue F\xFCllung",redText:"Roter Text",bold:"Fett"}},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"}},er=Cs;var Rs={code:"es",noRows:"No hay filas para mostrar",filter:"Filtro",apply:"Aplicar",reset:"Restablecer",selectAll:"(Seleccionar todo)",setSelected:"({n} seleccionados)",noAggregate:"Sin agregaci\xF3n",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",print:"Imprimir\u2026",printLimited:"Se imprimieron las primeras {n} de {total} filas. Exporte a Excel o CSV para obtenerlas todas.",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",exportPdf:"Exportar PDF",exportJson:"Exportar JSON",cf:{title:"Formato condicional",add:"A\xF1adir regla",clear:"Borrar reglas",none:"No hay reglas para esta columna",type:"Regla",style:"Formato",wholeRow:"Fila completa",count:"Cantidad",align:"Alineaci\xF3n",aligns:{none:"Predeterminada",left:"Izquierda",center:"Centro",right:"Derecha"},types:{value:"Valor de celda",formula:"F\xF3rmula",top:"Superiores",bottom:"Inferiores",aboveAverage:"Por encima del promedio",belowAverage:"Por debajo del promedio",duplicate:"Valores duplicados",unique:"Valores \xFAnicos",dataBar:"Barras de datos",colorScale:"Escala de color",iconSet:"Conjunto de iconos"},ops:{notBetween:"No est\xE1 entre",notContains:"No contiene"},styles:{red:"Relleno rojo claro",yellow:"Relleno amarillo",green:"Relleno verde",blue:"Relleno azul",redText:"Texto rojo",bold:"Negrita"}},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"}},tr=Rs;var Ss={code:"fr",noRows:"Aucune ligne \xE0 afficher",filter:"Filtre",apply:"Appliquer",reset:"R\xE9initialiser",selectAll:"(Tout s\xE9lectionner)",setSelected:"({n} s\xE9lectionn\xE9s)",noAggregate:"Aucune agr\xE9gation",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",print:"Imprimer\u2026",printLimited:"Les {n} premi\xE8res lignes sur {total} ont \xE9t\xE9 imprim\xE9es. Exportez vers Excel ou CSV pour toutes les avoir.",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",exportPdf:"Exporter en PDF",exportJson:"Exporter en JSON",cf:{title:"Mise en forme conditionnelle",add:"Ajouter une r\xE8gle",clear:"Effacer les r\xE8gles",none:"Aucune r\xE8gle pour cette colonne",type:"R\xE8gle",style:"Format",wholeRow:"Ligne enti\xE8re",count:"Nombre",align:"Alignement",aligns:{none:"Par d\xE9faut",left:"Gauche",center:"Centre",right:"Droite"},types:{value:"Valeur de la cellule",formula:"Formule",top:"Premiers",bottom:"Derniers",aboveAverage:"Au-dessus de la moyenne",belowAverage:"En dessous de la moyenne",duplicate:"Valeurs en double",unique:"Valeurs uniques",dataBar:"Barres de donn\xE9es",colorScale:"Nuances de couleurs",iconSet:"Jeu d'ic\xF4nes"},ops:{notBetween:"Pas entre",notContains:"Ne contient pas"},styles:{red:"Remplissage rouge clair",yellow:"Remplissage jaune",green:"Remplissage vert",blue:"Remplissage bleu",redText:"Texte rouge",bold:"Gras"}},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"}},nr=Ss;var ks={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)",setSelected:"({n} \u4EF6\u9078\u629E)",noAggregate:"\u96C6\u8A08\u3057\u306A\u3044",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",print:"\u5370\u5237\u2026",printLimited:"\u5168 {total} \u884C\u306E\u3046\u3061\u6700\u521D\u306E {n} \u884C\u306E\u307F\u5370\u5237\u3057\u307E\u3057\u305F\u3002\u3059\u3079\u3066\u306E\u884C\u306F Excel \u307E\u305F\u306F CSV \u306B\u66F8\u304D\u51FA\u3057\u3066\u304F\u3060\u3055\u3044\u3002",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",exportPdf:"PDF \u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8",exportJson:"JSON \u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8",cf:{title:"\u6761\u4EF6\u4ED8\u304D\u66F8\u5F0F",add:"\u30EB\u30FC\u30EB\u3092\u8FFD\u52A0",clear:"\u30EB\u30FC\u30EB\u3092\u30AF\u30EA\u30A2",none:"\u3053\u306E\u5217\u306B\u30EB\u30FC\u30EB\u306F\u3042\u308A\u307E\u305B\u3093",type:"\u30EB\u30FC\u30EB",style:"\u66F8\u5F0F",wholeRow:"\u884C\u5168\u4F53",count:"\u4EF6\u6570",align:"\u914D\u7F6E",aligns:{none:"\u65E2\u5B9A",left:"\u5DE6\u63C3\u3048",center:"\u4E2D\u592E\u63C3\u3048",right:"\u53F3\u63C3\u3048"},types:{value:"\u30BB\u30EB\u306E\u5024",formula:"\u6570\u5F0F",top:"\u4E0A\u4F4D",bottom:"\u4E0B\u4F4D",aboveAverage:"\u5E73\u5747\u3088\u308A\u4E0A",belowAverage:"\u5E73\u5747\u3088\u308A\u4E0B",duplicate:"\u91CD\u8907\u3059\u308B\u5024",unique:"\u4E00\u610F\u306E\u5024",dataBar:"\u30C7\u30FC\u30BF\u30D0\u30FC",colorScale:"\u30AB\u30E9\u30FC\u30B9\u30B1\u30FC\u30EB",iconSet:"\u30A2\u30A4\u30B3\u30F3\u30BB\u30C3\u30C8"},ops:{notBetween:"\u7BC4\u56F2\u5916",notContains:"\u542B\u307E\u306A\u3044"},styles:{red:"\u8584\u3044\u8D64\u306E\u5857\u308A\u3064\u3076\u3057",yellow:"\u9EC4\u8272\u306E\u5857\u308A\u3064\u3076\u3057",green:"\u7DD1\u306E\u5857\u308A\u3064\u3076\u3057",blue:"\u9752\u306E\u5857\u308A\u3064\u3076\u3057",redText:"\u8D64\u306E\u6587\u5B57",bold:"\u592A\u5B57"}},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"}},or=ks;var Ms={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)",setSelected:"({n}\uAC1C \uC120\uD0DD\uB428)",noAggregate:"\uC9D1\uACC4 \uC548 \uD568",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",print:"\uC778\uC1C4\u2026",printLimited:"\uC804\uCCB4 {total}\uD589 \uC911 \uCC98\uC74C {n}\uD589\uB9CC \uC778\uC1C4\uD588\uC2B5\uB2C8\uB2E4. \uC804\uCCB4\uB294 \uC5D1\uC140\uC774\uB098 CSV\uB85C \uB0B4\uBCF4\uB0B4\uC138\uC694.",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",exportPdf:"PDF\uB85C \uB0B4\uBCF4\uB0B4\uAE30",exportJson:"JSON\uC73C\uB85C \uB0B4\uBCF4\uB0B4\uAE30",cf:{title:"\uC870\uAC74\uBD80 \uC11C\uC2DD",add:"\uADDC\uCE59 \uCD94\uAC00",clear:"\uADDC\uCE59 \uC9C0\uC6B0\uAE30",none:"\uC774 \uCEEC\uB7FC\uC5D0 \uADDC\uCE59\uC774 \uC5C6\uC2B5\uB2C8\uB2E4",type:"\uADDC\uCE59",style:"\uC11C\uC2DD",wholeRow:"\uD589 \uC804\uCCB4",count:"\uAC1C\uC218",align:"\uC815\uB82C",aligns:{none:"\uAE30\uBCF8",left:"\uC67C\uCABD",center:"\uAC00\uC6B4\uB370",right:"\uC624\uB978\uCABD"},types:{value:"\uC140 \uAC12",formula:"\uC218\uC2DD",top:"\uC0C1\uC704",bottom:"\uD558\uC704",aboveAverage:"\uD3C9\uADE0 \uCD08\uACFC",belowAverage:"\uD3C9\uADE0 \uBBF8\uB9CC",duplicate:"\uC911\uBCF5 \uAC12",unique:"\uACE0\uC720 \uAC12",dataBar:"\uB370\uC774\uD130 \uB9C9\uB300",colorScale:"\uC0C9\uC870",iconSet:"\uC544\uC774\uCF58 \uC9D1\uD569"},ops:{notBetween:"\uBC94\uC704 \uBC16",notContains:"\uD3EC\uD568\uD558\uC9C0 \uC54A\uC74C"},styles:{red:"\uC5F0\uD55C \uBE68\uAC15 \uCC44\uC6B0\uAE30",yellow:"\uB178\uB791 \uCC44\uC6B0\uAE30",green:"\uCD08\uB85D \uCC44\uC6B0\uAE30",blue:"\uD30C\uB791 \uCC44\uC6B0\uAE30",redText:"\uBE68\uAC15 \uAE00\uC790",bold:"\uAD75\uAC8C"}},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"}},rr=Ms;var Es={code:"zh-CN",noRows:"\u6CA1\u6709\u53EF\u663E\u793A\u7684\u6570\u636E",filter:"\u7B5B\u9009",apply:"\u5E94\u7528",reset:"\u91CD\u7F6E",selectAll:"(\u5168\u9009)",setSelected:"(\u5DF2\u9009 {n} \u9879)",noAggregate:"\u4E0D\u6C47\u603B",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",print:"\u6253\u5370\u2026",printLimited:"\u4EC5\u6253\u5370\u4E86 {total} \u884C\u4E2D\u7684\u524D {n} \u884C\u3002\u5982\u9700\u5168\u90E8\uFF0C\u8BF7\u5BFC\u51FA\u4E3A Excel \u6216 CSV\u3002",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",exportPdf:"\u5BFC\u51FA PDF",exportJson:"\u5BFC\u51FA JSON",cf:{title:"\u6761\u4EF6\u683C\u5F0F",add:"\u6DFB\u52A0\u89C4\u5219",clear:"\u6E05\u9664\u89C4\u5219",none:"\u6B64\u5217\u6CA1\u6709\u89C4\u5219",type:"\u89C4\u5219",style:"\u683C\u5F0F",wholeRow:"\u6574\u884C",count:"\u6570\u91CF",align:"\u5BF9\u9F50",aligns:{none:"\u9ED8\u8BA4",left:"\u5DE6\u5BF9\u9F50",center:"\u5C45\u4E2D",right:"\u53F3\u5BF9\u9F50"},types:{value:"\u5355\u5143\u683C\u503C",formula:"\u516C\u5F0F",top:"\u524D",bottom:"\u540E",aboveAverage:"\u9AD8\u4E8E\u5E73\u5747\u503C",belowAverage:"\u4F4E\u4E8E\u5E73\u5747\u503C",duplicate:"\u91CD\u590D\u503C",unique:"\u552F\u4E00\u503C",dataBar:"\u6570\u636E\u6761",colorScale:"\u8272\u9636",iconSet:"\u56FE\u6807\u96C6"},ops:{notBetween:"\u4E0D\u4ECB\u4E8E",notContains:"\u4E0D\u5305\u542B"},styles:{red:"\u6D45\u7EA2\u8272\u586B\u5145",yellow:"\u9EC4\u8272\u586B\u5145",green:"\u7EFF\u8272\u586B\u5145",blue:"\u84DD\u8272\u586B\u5145",redText:"\u7EA2\u8272\u6587\u672C",bold:"\u52A0\u7C97"}},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"}},ir=Es;var As={code:"zh-TW",noRows:"\u6C92\u6709\u53EF\u986F\u793A\u7684\u8CC7\u6599",filter:"\u7BE9\u9078",apply:"\u5957\u7528",reset:"\u91CD\u8A2D",selectAll:"(\u5168\u9078)",setSelected:"(\u5DF2\u9078 {n} \u9805)",noAggregate:"\u4E0D\u5F59\u7E3D",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",print:"\u5217\u5370\u2026",printLimited:"\u50C5\u5217\u5370\u4E86 {total} \u5217\u4E2D\u7684\u524D {n} \u5217\u3002\u5982\u9700\u5168\u90E8\uFF0C\u8ACB\u532F\u51FA\u70BA Excel \u6216 CSV\u3002",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",exportPdf:"\u532F\u51FA PDF",exportJson:"\u532F\u51FA JSON",cf:{title:"\u8A2D\u5B9A\u683C\u5F0F\u5316\u7684\u689D\u4EF6",add:"\u65B0\u589E\u898F\u5247",clear:"\u6E05\u9664\u898F\u5247",none:"\u6B64\u6B04\u6C92\u6709\u898F\u5247",type:"\u898F\u5247",style:"\u683C\u5F0F",wholeRow:"\u6574\u5217",count:"\u6578\u91CF",align:"\u5C0D\u9F4A",aligns:{none:"\u9810\u8A2D",left:"\u9760\u5DE6\u5C0D\u9F4A",center:"\u7F6E\u4E2D",right:"\u9760\u53F3\u5C0D\u9F4A"},types:{value:"\u5132\u5B58\u683C\u503C",formula:"\u516C\u5F0F",top:"\u524D",bottom:"\u5F8C",aboveAverage:"\u9AD8\u65BC\u5E73\u5747",belowAverage:"\u4F4E\u65BC\u5E73\u5747",duplicate:"\u91CD\u8907\u503C",unique:"\u552F\u4E00\u503C",dataBar:"\u8CC7\u6599\u6A6B\u689D",colorScale:"\u8272\u968E",iconSet:"\u5716\u793A\u96C6"},ops:{notBetween:"\u4E0D\u4ECB\u65BC",notContains:"\u4E0D\u5305\u542B"},styles:{red:"\u6DFA\u7D05\u8272\u586B\u6EFF",yellow:"\u9EC3\u8272\u586B\u6EFF",green:"\u7DA0\u8272\u586B\u6EFF",blue:"\u85CD\u8272\u586B\u6EFF",redText:"\u7D05\u8272\u6587\u5B57",bold:"\u7C97\u9AD4"}},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"}},sr=As;var Ts={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)",setSelected:"(\u0111\xE3 ch\u1ECDn {n})",noAggregate:"Kh\xF4ng t\u1ED5ng h\u1EE3p",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",print:"In\u2026",printLimited:"\u0110\xE3 in {n} h\xE0ng \u0111\u1EA7u ti\xEAn trong t\u1ED5ng s\u1ED1 {total} h\xE0ng. Xu\u1EA5t sang Excel ho\u1EB7c CSV \u0111\u1EC3 c\xF3 t\u1EA5t c\u1EA3.",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",exportPdf:"Xu\u1EA5t PDF",exportJson:"Xu\u1EA5t JSON",cf:{title:"\u0110\u1ECBnh d\u1EA1ng c\xF3 \u0111i\u1EC1u ki\u1EC7n",add:"Th\xEAm quy t\u1EAFc",clear:"X\xF3a quy t\u1EAFc",none:"C\u1ED9t n\xE0y ch\u01B0a c\xF3 quy t\u1EAFc",type:"Quy t\u1EAFc",style:"\u0110\u1ECBnh d\u1EA1ng",wholeRow:"C\u1EA3 h\xE0ng",count:"S\u1ED1 l\u01B0\u1EE3ng",align:"C\u0103n l\u1EC1",aligns:{none:"M\u1EB7c \u0111\u1ECBnh",left:"Tr\xE1i",center:"Gi\u1EEFa",right:"Ph\u1EA3i"},types:{value:"Gi\xE1 tr\u1ECB \xF4",formula:"C\xF4ng th\u1EE9c",top:"Cao nh\u1EA5t",bottom:"Th\u1EA5p nh\u1EA5t",aboveAverage:"Tr\xEAn trung b\xECnh",belowAverage:"D\u01B0\u1EDBi trung b\xECnh",duplicate:"Gi\xE1 tr\u1ECB tr\xF9ng l\u1EB7p",unique:"Gi\xE1 tr\u1ECB duy nh\u1EA5t",dataBar:"Thanh d\u1EEF li\u1EC7u",colorScale:"Thang m\xE0u",iconSet:"B\u1ED9 bi\u1EC3u t\u01B0\u1EE3ng"},ops:{notBetween:"Kh\xF4ng n\u1EB1m gi\u1EEFa",notContains:"Kh\xF4ng ch\u1EE9a"},styles:{red:"T\xF4 \u0111\u1ECF nh\u1EA1t",yellow:"T\xF4 v\xE0ng",green:"T\xF4 xanh l\xE1",blue:"T\xF4 xanh d\u01B0\u01A1ng",redText:"Ch\u1EEF \u0111\u1ECF",bold:"In \u0111\u1EADm"}},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"}},ar=Ts;var Ps={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)",setSelected:"(\u0E40\u0E25\u0E37\u0E2D\u0E01 {n} \u0E23\u0E32\u0E22\u0E01\u0E32\u0E23)",noAggregate:"\u0E44\u0E21\u0E48\u0E23\u0E27\u0E21\u0E04\u0E48\u0E32",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",print:"\u0E1E\u0E34\u0E21\u0E1E\u0E4C\u2026",printLimited:"\u0E1E\u0E34\u0E21\u0E1E\u0E4C {n} \u0E41\u0E16\u0E27\u0E41\u0E23\u0E01\u0E08\u0E32\u0E01\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14 {total} \u0E41\u0E16\u0E27 \u0E2A\u0E48\u0E07\u0E2D\u0E2D\u0E01\u0E40\u0E1B\u0E47\u0E19 Excel \u0E2B\u0E23\u0E37\u0E2D CSV \u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E23\u0E31\u0E1A\u0E17\u0E38\u0E01\u0E41\u0E16\u0E27",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",exportPdf:"\u0E2A\u0E48\u0E07\u0E2D\u0E2D\u0E01 PDF",exportJson:"\u0E2A\u0E48\u0E07\u0E2D\u0E2D\u0E01 JSON",cf:{title:"\u0E01\u0E32\u0E23\u0E08\u0E31\u0E14\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E15\u0E32\u0E21\u0E40\u0E07\u0E37\u0E48\u0E2D\u0E19\u0E44\u0E02",add:"\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E01\u0E0E",clear:"\u0E25\u0E49\u0E32\u0E07\u0E01\u0E0E",none:"\u0E44\u0E21\u0E48\u0E21\u0E35\u0E01\u0E0E\u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C\u0E19\u0E35\u0E49",type:"\u0E01\u0E0E",style:"\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A",wholeRow:"\u0E17\u0E31\u0E49\u0E07\u0E41\u0E16\u0E27",count:"\u0E08\u0E33\u0E19\u0E27\u0E19",align:"\u0E01\u0E32\u0E23\u0E08\u0E31\u0E14\u0E41\u0E19\u0E27",aligns:{none:"\u0E04\u0E48\u0E32\u0E40\u0E23\u0E34\u0E48\u0E21\u0E15\u0E49\u0E19",left:"\u0E0B\u0E49\u0E32\u0E22",center:"\u0E01\u0E36\u0E48\u0E07\u0E01\u0E25\u0E32\u0E07",right:"\u0E02\u0E27\u0E32"},types:{value:"\u0E04\u0E48\u0E32\u0E43\u0E19\u0E40\u0E0B\u0E25\u0E25\u0E4C",formula:"\u0E2A\u0E39\u0E15\u0E23",top:"\u0E2A\u0E39\u0E07\u0E2A\u0E38\u0E14",bottom:"\u0E15\u0E48\u0E33\u0E2A\u0E38\u0E14",aboveAverage:"\u0E2A\u0E39\u0E07\u0E01\u0E27\u0E48\u0E32\u0E04\u0E48\u0E32\u0E40\u0E09\u0E25\u0E35\u0E48\u0E22",belowAverage:"\u0E15\u0E48\u0E33\u0E01\u0E27\u0E48\u0E32\u0E04\u0E48\u0E32\u0E40\u0E09\u0E25\u0E35\u0E48\u0E22",duplicate:"\u0E04\u0E48\u0E32\u0E17\u0E35\u0E48\u0E0B\u0E49\u0E33\u0E01\u0E31\u0E19",unique:"\u0E04\u0E48\u0E32\u0E17\u0E35\u0E48\u0E44\u0E21\u0E48\u0E0B\u0E49\u0E33",dataBar:"\u0E41\u0E16\u0E1A\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25",colorScale:"\u0E23\u0E30\u0E14\u0E31\u0E1A\u0E2A\u0E35",iconSet:"\u0E0A\u0E38\u0E14\u0E44\u0E2D\u0E04\u0E2D\u0E19"},ops:{notBetween:"\u0E44\u0E21\u0E48\u0E2D\u0E22\u0E39\u0E48\u0E23\u0E30\u0E2B\u0E27\u0E48\u0E32\u0E07",notContains:"\u0E44\u0E21\u0E48\u0E21\u0E35"},styles:{red:"\u0E40\u0E15\u0E34\u0E21\u0E2A\u0E35\u0E41\u0E14\u0E07\u0E2D\u0E48\u0E2D\u0E19",yellow:"\u0E40\u0E15\u0E34\u0E21\u0E2A\u0E35\u0E40\u0E2B\u0E25\u0E37\u0E2D\u0E07",green:"\u0E40\u0E15\u0E34\u0E21\u0E2A\u0E35\u0E40\u0E02\u0E35\u0E22\u0E27",blue:"\u0E40\u0E15\u0E34\u0E21\u0E2A\u0E35\u0E19\u0E49\u0E33\u0E40\u0E07\u0E34\u0E19",redText:"\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E2A\u0E35\u0E41\u0E14\u0E07",bold:"\u0E15\u0E31\u0E27\u0E2B\u0E19\u0E32"}},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"}},lr=Ps;var Ls={code:"id",noRows:"Tidak ada data",filter:"Filter",apply:"Terapkan",reset:"Atur ulang",selectAll:"(Pilih semua)",setSelected:"({n} dipilih)",noAggregate:"Tanpa agregasi",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",print:"Cetak\u2026",printLimited:"Dicetak {n} baris pertama dari {total}. Ekspor ke Excel atau CSV untuk semua baris.",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",exportPdf:"Ekspor PDF",exportJson:"Ekspor JSON",cf:{title:"Pemformatan bersyarat",add:"Tambah aturan",clear:"Hapus aturan",none:"Tidak ada aturan untuk kolom ini",type:"Aturan",style:"Format",wholeRow:"Seluruh baris",count:"Jumlah",align:"Perataan",aligns:{none:"Bawaan",left:"Kiri",center:"Tengah",right:"Kanan"},types:{value:"Nilai sel",formula:"Rumus",top:"Teratas",bottom:"Terbawah",aboveAverage:"Di atas rata-rata",belowAverage:"Di bawah rata-rata",duplicate:"Nilai duplikat",unique:"Nilai unik",dataBar:"Bilah data",colorScale:"Skala warna",iconSet:"Set ikon"},ops:{notBetween:"Tidak di antara",notContains:"Tidak berisi"},styles:{red:"Isian merah muda",yellow:"Isian kuning",green:"Isian hijau",blue:"Isian biru",redText:"Teks merah",bold:"Tebal"}},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"}},dr=Ls;var Is={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)",setSelected:"(\u0432\u044B\u0431\u0440\u0430\u043D\u043E: {n})",noAggregate:"\u0411\u0435\u0437 \u0430\u0433\u0440\u0435\u0433\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F",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",print:"\u041F\u0435\u0447\u0430\u0442\u044C\u2026",printLimited:"\u041D\u0430\u043F\u0435\u0447\u0430\u0442\u0430\u043D\u044B \u043F\u0435\u0440\u0432\u044B\u0435 {n} \u0438\u0437 {total} \u0441\u0442\u0440\u043E\u043A. \u0427\u0442\u043E\u0431\u044B \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u0432\u0441\u0435, \u044D\u043A\u0441\u043F\u043E\u0440\u0442\u0438\u0440\u0443\u0439\u0442\u0435 \u0432 Excel \u0438\u043B\u0438 CSV.",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",exportPdf:"\u042D\u043A\u0441\u043F\u043E\u0440\u0442 \u0432 PDF",exportJson:"\u042D\u043A\u0441\u043F\u043E\u0440\u0442 \u0432 JSON",cf:{title:"\u0423\u0441\u043B\u043E\u0432\u043D\u043E\u0435 \u0444\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435",add:"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043F\u0440\u0430\u0432\u0438\u043B\u043E",clear:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u043F\u0440\u0430\u0432\u0438\u043B\u0430",none:"\u0414\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u0441\u0442\u043E\u043B\u0431\u0446\u0430 \u043D\u0435\u0442 \u043F\u0440\u0430\u0432\u0438\u043B",type:"\u041F\u0440\u0430\u0432\u0438\u043B\u043E",style:"\u0424\u043E\u0440\u043C\u0430\u0442",wholeRow:"\u0412\u0441\u044F \u0441\u0442\u0440\u043E\u043A\u0430",count:"\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E",align:"\u0412\u044B\u0440\u0430\u0432\u043D\u0438\u0432\u0430\u043D\u0438\u0435",aligns:{none:"\u041F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E",left:"\u041F\u043E \u043B\u0435\u0432\u043E\u043C\u0443 \u043A\u0440\u0430\u044E",center:"\u041F\u043E \u0446\u0435\u043D\u0442\u0440\u0443",right:"\u041F\u043E \u043F\u0440\u0430\u0432\u043E\u043C\u0443 \u043A\u0440\u0430\u044E"},types:{value:"\u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0447\u0435\u0439\u043A\u0438",formula:"\u0424\u043E\u0440\u043C\u0443\u043B\u0430",top:"\u041F\u0435\u0440\u0432\u044B\u0435",bottom:"\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0435",aboveAverage:"\u0412\u044B\u0448\u0435 \u0441\u0440\u0435\u0434\u043D\u0435\u0433\u043E",belowAverage:"\u041D\u0438\u0436\u0435 \u0441\u0440\u0435\u0434\u043D\u0435\u0433\u043E",duplicate:"\u041F\u043E\u0432\u0442\u043E\u0440\u044F\u044E\u0449\u0438\u0435\u0441\u044F \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F",unique:"\u0423\u043D\u0438\u043A\u0430\u043B\u044C\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F",dataBar:"\u0413\u0438\u0441\u0442\u043E\u0433\u0440\u0430\u043C\u043C\u044B",colorScale:"\u0426\u0432\u0435\u0442\u043E\u0432\u0430\u044F \u0448\u043A\u0430\u043B\u0430",iconSet:"\u041D\u0430\u0431\u043E\u0440\u044B \u0437\u043D\u0430\u0447\u043A\u043E\u0432"},ops:{notBetween:"\u0412\u043D\u0435 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u0430",notContains:"\u041D\u0435 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442"},styles:{red:"\u0421\u0432\u0435\u0442\u043B\u043E-\u043A\u0440\u0430\u0441\u043D\u0430\u044F \u0437\u0430\u043B\u0438\u0432\u043A\u0430",yellow:"\u0416\u0451\u043B\u0442\u0430\u044F \u0437\u0430\u043B\u0438\u0432\u043A\u0430",green:"\u0417\u0435\u043B\u0451\u043D\u0430\u044F \u0437\u0430\u043B\u0438\u0432\u043A\u0430",blue:"\u0421\u0438\u043D\u044F\u044F \u0437\u0430\u043B\u0438\u0432\u043A\u0430",redText:"\u041A\u0440\u0430\u0441\u043D\u044B\u0439 \u0442\u0435\u043A\u0441\u0442",bold:"\u041F\u043E\u043B\u0443\u0436\u0438\u0440\u043D\u044B\u0439"}},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"}},cr=Is;var Fs={code:"pt-BR",noRows:"Nenhuma linha para mostrar",filter:"Filtro",apply:"Aplicar",reset:"Limpar",selectAll:"(Selecionar tudo)",setSelected:"({n} selecionados)",noAggregate:"Sem agrega\xE7\xE3o",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",print:"Imprimir\u2026",printLimited:"Foram impressas as primeiras {n} de {total} linhas. Exporte para Excel ou CSV para obter todas.",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",exportPdf:"Exportar PDF",exportJson:"Exportar JSON",cf:{title:"Formata\xE7\xE3o condicional",add:"Adicionar regra",clear:"Limpar regras",none:"Nenhuma regra para esta coluna",type:"Regra",style:"Formato",wholeRow:"Linha inteira",count:"Quantidade",align:"Alinhamento",aligns:{none:"Padr\xE3o",left:"Esquerda",center:"Centro",right:"Direita"},types:{value:"Valor da c\xE9lula",formula:"F\xF3rmula",top:"Primeiros",bottom:"\xDAltimos",aboveAverage:"Acima da m\xE9dia",belowAverage:"Abaixo da m\xE9dia",duplicate:"Valores duplicados",unique:"Valores \xFAnicos",dataBar:"Barras de dados",colorScale:"Escala de cor",iconSet:"Conjunto de \xEDcones"},ops:{notBetween:"N\xE3o est\xE1 entre",notContains:"N\xE3o cont\xE9m"},styles:{red:"Preenchimento vermelho claro",yellow:"Preenchimento amarelo",green:"Preenchimento verde",blue:"Preenchimento azul",redText:"Texto vermelho",bold:"Negrito"}},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"}},ur=Fs;var Ds={code:"it",noRows:"Nessuna riga da mostrare",filter:"Filtro",apply:"Applica",reset:"Reimposta",selectAll:"(Seleziona tutto)",setSelected:"({n} selezionati)",noAggregate:"Nessuna aggregazione",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",print:"Stampa\u2026",printLimited:"Stampate le prime {n} di {total} righe. Esporta in Excel o CSV per averle tutte.",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",exportPdf:"Esporta PDF",exportJson:"Esporta JSON",cf:{title:"Formattazione condizionale",add:"Aggiungi regola",clear:"Cancella regole",none:"Nessuna regola per questa colonna",type:"Regola",style:"Formato",wholeRow:"Intera riga",count:"Numero",align:"Allineamento",aligns:{none:"Predefinito",left:"Sinistra",center:"Centro",right:"Destra"},types:{value:"Valore cella",formula:"Formula",top:"Primi",bottom:"Ultimi",aboveAverage:"Sopra la media",belowAverage:"Sotto la media",duplicate:"Valori duplicati",unique:"Valori univoci",dataBar:"Barre dei dati",colorScale:"Scala di colori",iconSet:"Set di icone"},ops:{notBetween:"Non compreso tra",notContains:"Non contiene"},styles:{red:"Riempimento rosso chiaro",yellow:"Riempimento giallo",green:"Riempimento verde",blue:"Riempimento blu",redText:"Testo rosso",bold:"Grassetto"}},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"}},fr=Ds;function _(o){return o==null||typeof o=="string"&&o.trim()===""||typeof o=="number"&&Number.isNaN(o)}var hr=o=>String(o).padStart(2,"0");function he(o){if(_(o))return null;if(typeof o=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(o))return o;let e=o instanceof Date?o:new Date(o);return Number.isNaN(e.getTime())?null:`${e.getFullYear()}-${hr(e.getMonth()+1)}-${hr(e.getDate())}`}function ie(o){var e;return _(o)?"":o instanceof Date?(e=he(o))!=null?e:"":String(o)}var Ce=()=>!0;function Bt(o){var e;switch(o.type){case"combined":{let t=(Array.isArray(o.conditions)?o.conditions:[]).map(Bt);return t.length?o.operator==="or"?n=>t.some(r=>r(n)):n=>t.every(r=>r(n)):Ce}case"text":{let t=((e=o.value)!=null?e:"").toLowerCase(),n=r=>_(r)?"":String(r).toLowerCase();switch(o.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 _;case"notBlank":return r=>!_(r)}return Ce}case"number":{let t=r=>_(r)?NaN:Number(r);if(o.op==="blank")return r=>Number.isNaN(t(r));if(o.op==="notBlank")return r=>!Number.isNaN(t(r));let n=o.value;if(n==null||Number.isNaN(n))return Ce;switch(o.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=o.valueTo;if(r==null||Number.isNaN(r))return Ce;let i=Math.min(n,r),s=Math.max(n,r);return a=>{let l=t(a);return l>=i&&l<=s}}}return Ce}case"date":{if(o.op==="blank")return r=>he(r)===null;if(o.op==="notBlank")return r=>he(r)!==null;let t=o.value;if(!t)return Ce;let n=r=>he(r);switch(o.op){case"equals":return r=>n(r)===t;case"before":return r=>{let i=n(r);return i!==null&&i<t};case"after":return r=>{let i=n(r);return i!==null&&i>t};case"between":{let r=o.valueTo;if(!r)return Ce;let i=t<r?t:r,s=t<r?r:t;return a=>{let l=n(a);return l!==null&&l>=i&&l<=s}}}return Ce}case"set":{let t=new Set(o.values.map(ie));return n=>t.has(ie(n))}}return Ce}function pr(o){let e=o.trim().toLowerCase();return e?e.split(/\s+/):[]}function gr(o,e){return o.every(t=>e.includes(t))}function Kn(o,e,t){let n=[];for(let r of Array.isArray(o==null?void 0:o.conditions)?o.conditions:[]){if(!r||typeof r!="object")continue;if("conditions"in r){let a=Kn(r,e,t);a&&n.push(a);continue}let i=e(r.colId);if(!i||!r.model)continue;let s=Bt(r.model);n.push(a=>s(t(i,a)))}return n.length?o.operator==="or"?r=>n.some(i=>i(r)):r=>n.every(i=>i(r)):null}var mr=new Map,wr=new Map;function Pe(o,e){let t=`${o}|${e!=null?e:""}`,n=wr.get(t);return n||(n=new Intl.NumberFormat(o,e==null?void 0:{maximumFractionDigits:e}),wr.set(t,n)),n}function $s(o){var r;if(o==="integer")return{maximumFractionDigits:0};if(o==="percent")return{style:"percent"};if(o.startsWith("currency:"))return{style:"currency",currency:o.slice(9)};if(!/^[#0,]*(\.[#0]+)?%?$/.test(o)||!/[#0]/.test(o))return null;let e=o.endsWith("%"),t=e?o.slice(0,-1):o,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 Ht={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 ye(o){if(_(o))return null;if(o instanceof Date)return Number.isNaN(o.getTime())?null:o;if(typeof o=="string"){let t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(o);if(t)return new Date(Number(t[1]),Number(t[2])-1,Number(t[3]))}if(typeof o!="string"&&typeof o!="number")return null;let e=new Date(o);return Number.isNaN(e.getTime())?null:e}function Ns(o,e,t){var n;switch(o){case"number":{let r={};if(typeof e=="string"){let s=$s(e);s||G(`unknown number format "${e}"`),r=s!=null?s:{}}else e&&(r=e);let i=new Intl.NumberFormat(t,r);return s=>{if(_(s))return"";let a=typeof s=="number"?s:Number(s);return Number.isNaN(a)?String(s):i.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 c=ye(l);if(!c)return _(l)?"":String(l);let d=`${c.getFullYear()}-${s(c.getMonth()+1)}-${s(c.getDate())}`;return a?`${d} ${s(c.getHours())}:${s(c.getMinutes())}`:d}}let r=Ht.date;typeof e=="string"?(Ht[e]||G(`unknown date format "${e}"`),r=(n=Ht[e])!=null?n:Ht.date):e&&(r=e);let i=new Intl.DateTimeFormat(t,r);return s=>{let a=ye(s);return a?i.format(a):_(s)?"":String(s)}}case"boolean":return r=>r===!0?"\u2713":r===!1?"\u2717":"";default:return r=>_(r)?"":r instanceof Date?r.toISOString():String(r)}}var Os=o=>Array.isArray(o)?o.join(", "):o==null?"":String(o),_n=new WeakMap,Xn=new WeakMap;function yr(){_n=new WeakMap,Xn=new WeakMap}function wt(o,e,t,n=o.format){if(e===o.type&&n===o.format)return ne(o,t);if(n!==o.format&&typeof n!="string")return ne({...o,type:e,format:n},t);let r=Xn.get(o);r||Xn.set(o,r=new Map);let i=`${e!=null?e:""}|${n===o.format?"":`=${n}`}`,s=r.get(i);return s||r.set(i,s={...o,type:e,format:n}),ne(s,t)}function ne(o,e){var s;if(o.sparkline)return Os;let t=o.format,n=_n.get(o);if(n&&n.locale===e&&n.type===o.type&&n.format===t)return n.fmt;let r=`${e}|${(s=o.type)!=null?s:"text"}|${typeof t=="string"?t:JSON.stringify(t!=null?t:null)}`,i=mr.get(r);return i||(i=Ns(o.type,t,e),mr.set(r,i)),_n.set(o,{locale:e,type:o.type,format:t,fmt:i}),i}var ae="__fg_select__",br={id:ae,header:"",width:44,minWidth:44,maxWidth:44,pinned:"left",sortable:!1,resizable:!1,filter:!1},He="__fg_drag__",vr={id:He,header:"",width:28,minWidth:28,maxWidth:28,pinned:"left",sortable:!1,resizable:!1,filter:!1,chooser:!1},Ie="__fg_rownum__",xr=(o=52,e="#")=>({id:Ie,header:e,width:o,minWidth:o,maxWidth:o,pinned:"left",sortable:!1,resizable:!1,filter:!1,chooser:!1}),B=o=>o===ae||o===He||o===Ie,Bs=120,Hs=40,Gs=["left","center","right"];function ge(o){if(B(o.id)||o.filter===!1)return null;if(o.filter)return o.filter;switch(o.type){case"number":return"number";case"date":return"date";case"boolean":return"set";default:return"text"}}function zt(o,e,t){let n=o.editable;if(typeof n!="function")return!!n;try{return!!n({value:o.valueGetter?o.valueGetter(e):o.field?e[o.field]:void 0,row:e,rowIndex:t,column:o})}catch{return!1}}var Ge=o=>o.id!==ae&&o.sortable!==!1,Vt=o=>o.id!==ae&&o.resizable!==!1;function Le(o,e){var r,i;let t=(r=o.minWidth)!=null?r:Hs,n=(i=o.maxWidth)!=null?i:1/0;return Math.round(Math.min(n,Math.max(t,e)))}function Cr(o){return o.children?1+Math.max(0,...o.children.map(Cr)):1}var Gt=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.declared=[];this.setDefs(e)}setDefs(e){yr(),this.defs=e,this.byId=new Map;let t=0,n=(i,s,a)=>{var f,p,m,b,g;let l=Array.isArray(i.children)&&i.children.length>0,c=t++,d=(f=i.id)!=null?f:l?`g${c}`:i.field;if(d||(d=`c${c}`,G(`column #${c} has neither "field" nor "id"; using "${d}"`)),this.byId.has(d)){let h=1;for(;this.byId.has(`${d}_${h}`);)h++;G(`duplicate column id "${d}"; renamed to "${d}_${h}"`),d=`${d}_${h}`}let u={id:d,def:i,parent:s,children:null,depth:a,width:Le(i,(p=i.width)!=null?p:Bs),flex:i.flex&&i.flex>0?i.flex:null,hide:(m=i.hide)!=null?m:!1,pinned:(g=(b=i.pinned)!=null?b:s==null?void 0:s.pinned)!=null?g:null,open:!!i.openByDefault};return this.byId.set(d,u),l&&(u.children=r(i.children).map(h=>n(h,u,a+1))),u},r=i=>{let s=i.filter(a=>a!==null&&typeof a=="object");return s.length!==i.length&&G("columns contain entries that are not objects; they were skipped"),s};this.roots_=r(e).map(i=>n(i,null,0)),this.declared=this.leafNodes().map(i=>i.id),this.depth=Math.max(1,...this.roots_.map(Cr)),this.relayout()}updateDefs(e){var s,a,l,c;let t=new Map(this.byId),n=this.declared,r=this.leafNodes().map(d=>d.id);this.setDefs(e);for(let[d,u]of this.byId){let f=t.get(d);if(!f||!!f.children!=!!u.children)continue;let p=f.def,m=u.def;p.width===m.width&&p.flex===m.flex&&p.minWidth===m.minWidth&&p.maxWidth===m.maxWidth&&(u.width=f.width,u.flex=f.flex),((s=p.hide)!=null?s:!1)===((a=m.hide)!=null?a:!1)&&(u.hide=f.hide),p.pinned===m.pinned&&((l=f.parent)==null?void 0:l.def.pinned)===((c=u.parent)==null?void 0:c.def.pinned)&&(u.pinned=f.pinned),!!p.openByDefault==!!m.openByDefault&&(u.open=f.open)}let i=(d,u)=>d.length===u.length&&d.every((f,p)=>f===u[p]);i(n,this.declared)&&!i(r,n)?this.applyState(r.map(d=>({colId:d}))):this.relayout()}setContainerWidth(e){if(e===this.containerWidth)return!1;this.containerWidth=e;let t=()=>this.displayed().map(r=>`${r.width}${r.region}`).join(),n=t();return this.relayout(),n!==t()}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=Le(n.def,t),this.relayout(),n.width)}setPinned(e,t){let n=this.byId.get(e);!n||n.children||B(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(s=>s.id===e);if(r<0)return;let[i]=n.splice(r,1);n.splice(Math.max(0,Math.min(n.length,t)),0,i),this.relayout()}headerCells(e){var r,i,s;let t=[],n=new Map;for(let a of this.layout[e]){let l=[];for(let c=a.node.parent;c;c=c.parent)l.unshift(c);for(let c of l){let d=n.get(c.id);if(d){d.width+=a.width;continue}let u={id:c.id,label:(r=c.def.header)!=null?r:"",isGroup:!0,column:null,node:c,row:c.depth,rowSpan:1,left:a.left,width:a.width};n.set(c.id,u),t.push(u)}t.push({id:a.id,label:(s=(i=a.def.header)!=null?i: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=>!B(e.id)).map(e=>{var t,n,r;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:(r=e.pinned)!=null?r:null}})}applyState(e){let t=new Map;e.forEach((i,s)=>{t.set(i.colId,s);let a=this.byId.get(i.colId);!a||a.children||B(i.colId)||(typeof i.width=="number"&&Number.isFinite(i.width)&&(a.flex=null,a.width=Le(a.def,i.width)),typeof i.hide=="boolean"&&(a.hide=i.hide),"pinned"in i&&(a.pinned=i.pinned==="left"||i.pinned==="right"?i.pinned:null))}),t.set(Ie,-3),t.set(He,-2),t.set(ae,-1);let n=i=>{var s;return i.children?Math.min(1/0,...i.children.map(n)):(s=t.get(i.id))!=null?s:1/0},r=i=>{let s=i.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),i.splice(0,i.length,...s.map(a=>a.n));for(let a of i)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}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 f;let e=this.leafNodes().filter(p=>!p.hide&&this.shownByGroups(p)),t=e.reduce((p,m)=>p+(m.flex?0:m.width),0),n=new Map,r=e.filter(p=>p.flex),i=Math.max(0,this.containerWidth-t);for(;r.length;){let p=r.reduce((w,y)=>w+y.flex,0),m=w=>Math.floor(i*w.flex/p),b=r.reduce((w,y)=>w+Le(y.def,m(y))-m(y),0),g=r.filter(w=>{let y=Le(w.def,m(w))-m(w);return b>0?y>0:b<0?y<0:!1});if(!g.length){let w=i;for(let y of r){let v=Le(y.def,m(y));n.set(y,v),w-=v}for(let y of r){if(w<1)break;let v=n.get(y);Le(y.def,v+1)===v+1&&(n.set(y,v+1),w--)}break}let h=0;for(let w of g){let y=Le(w.def,m(w));n.set(w,y),h+=y}i=Math.max(0,i-h),r=r.filter(w=>!g.includes(w))}let s=p=>{var m;return(m=n.get(p))!=null?m:p.width},a={left:[],center:[],right:[]};this.leafById=new Map;let l=0,c=e.reduce((p,m)=>p+(m.pinned?s(m):0),0),d=this.containerWidth>0&&c>this.containerWidth*.75,u={left:0,center:0,right:0};for(let p of Gs){let m=d?"center":p;for(let b of e){if(((f=b.pinned)!=null?f:"center")!==p)continue;let g={id:b.id,def:b.def,node:b,width:s(b),region:m,left:u[m],index:l++};u[m]+=g.width,a[m].push(g),this.leafById.set(b.id,g)}}this.layout=a}};var me=o=>o.isComposing||o.keyCode===229,Jn=new Set(["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Tab","Home","End","PageUp","PageDown"]);function Yn(o,e,t,n){let r=s=>Math.max(0,Math.min(n.rows-1,s)),i=s=>Math.max(0,Math.min(n.cols-1,s));switch(o){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:i(t.colIndex-1)};case"ArrowRight":return{rowIndex:t.rowIndex,colIndex:i(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 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 X=class extends Error{constructor(t){super(t);this.code=t}},zs=/^#(?:[A-Z/0]+[!?]|N\/A)$/,ot=o=>typeof o=="string"&&zs.test(o);function Vs(o){let e=[],t=0;for(;t<o.length;){let n=o[t];if(/\s/.test(n))t++;else if(/[0-9.]/.test(n)){let r=/^(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?/i.exec(o.slice(t));if(!r)throw new X("#ERROR!");e.push({t:"num",v:Number(r[0])}),t+=r[0].length}else if(n==='"'){let r="";for(t++;;){if(t>=o.length)throw new X("#ERROR!");if(o[t]==='"'){if(o[t+1]==='"'){r+='"',t+=2;continue}t++;break}r+=o[t++]}e.push({t:"str",v:r})}else if(n==="["){let r=o.indexOf("]",t);if(r<0)throw new X("#ERROR!");e.push({t:"id",v:o.slice(t+1,r)}),t=r+1}else if(/[A-Za-z_À-]/.test(n)){let r=/^[A-Za-z_À-][\wÀ-.]*/.exec(o.slice(t));e.push({t:"id",v:r[0]}),t+=r[0].length}else{let r=o.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===";"?",":n}),t++;else throw new X("#ERROR!")}}return e}var pe=o=>o==null||o==="";function V(o){if(typeof o=="number")return o;if(typeof o=="boolean")return o?1:0;if(pe(o))return 0;if(o instanceof Date)return o.getTime();if(typeof o=="string"&&o.trim()!==""&&Number.isFinite(Number(o)))return Number(o);throw new X("#VALUE!")}var te=o=>pe(o)?"":typeof o=="boolean"?o?"TRUE":"FALSE":o instanceof Date?yt(o):String(o),De=o=>typeof o=="boolean"?o:typeof o=="string"&&/^(true|false)$/i.test(o)?o.toLowerCase()==="true":V(o)!==0;function qt(o,e,t="near"){let n=Math.trunc(e),r=t==="near"?Math.round:t==="up"?Math.ceil:Math.floor,i=(a,l)=>{let[c,d="0"]=String(a).split("e");return+`${c}e${Number(d)+l}`},s=i(r(i(Math.abs(o),n)),-n);return o<0?-s:s}function bt(o,e){let t=n=>typeof n=="number"||typeof n=="boolean"||pe(n);return t(o)&&t(e)?V(o)-V(e):o instanceof Date||e instanceof Date?V(we(o))-V(we(e)):te(o).localeCompare(te(e),void 0,{sensitivity:"accent"})}var Fe=o=>o.flatMap(e=>Array.isArray(e)?e:[e]);var ze=o=>o.flatMap(e=>Array.isArray(e)?Pr(e).filter(t=>typeof t=="number"&&Number.isFinite(t)):pe(e)?[]:[V(e)]);function Pr(o){let e=o.find(ot);if(e!==void 0)throw new X(e);return o}function we(o){var e,t,n;if(o instanceof Date)return o;if(typeof o=="number")return new Date(o);if(typeof o=="string"){let r=/^(\d{4})-(\d{2})-(\d{2})(?:[T ](\d{2}):(\d{2})(?::(\d{2}))?)?/.exec(o.trim());if(r)return new Date(+r[1],+r[2]-1,+r[3],+((e=r[4])!=null?e:0),+((t=r[5])!=null?t:0),+((n=r[6])!=null?n:0))}throw new X("#VALUE!")}var jt=o=>String(o).padStart(2,"0");function yt(o){return`${o.getFullYear()}-${jt(o.getMonth()+1)}-${jt(o.getDate())}`}var qs=864e5,Rr=o=>Math.round(Date.UTC(o.getFullYear(),o.getMonth(),o.getDate())/qs);function Lr(o){var i;if(typeof o!="string")return s=>bt(s,o)===0&&!pe(s)==!pe(o);let e=/^(<=|>=|<>|<|>|=)?(.*)$/s.exec(o),t=(i=e[1])!=null?i:"=",n=e[2],r=n.trim()!==""&&Number.isFinite(Number(n))?Number(n):n;if((t==="="||t==="<>")&&typeof r=="string"&&/[*?]/.test(r)){let s=new RegExp(`^${r.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".")}$`,"i");return t==="="?a=>s.test(te(a)):a=>!s.test(te(a))}return s=>{if(t==="="&&r==="")return pe(s);if(t==="<>"&&r==="")return!pe(s);if(typeof r=="number"&&typeof s!="number"&&!(typeof s=="string"&&s.trim()!==""&&Number.isFinite(Number(s))))return t==="<>";let a;try{a=bt(s,r)}catch{return!1}return t==="="?a===0:t==="<>"?a!==0:t==="<"?a<0:t===">"?a>0:t==="<="?a<=0:a>=0}}function $e(o){if(Array.isArray(o))return o;throw new X("#VALUE!")}function Sr(o,e,t){let n=$e(e),r=Lr(t),i=[],s=Pr(o.length?$e(o[0]):n);return n.forEach((a,l)=>{let c=s[l];r(a)&&typeof c=="number"&&Number.isFinite(c)&&i.push(c)}),i}var be={SUM:o=>ze(o).reduce((e,t)=>e+t,0),AVG:o=>{let e=ze(o);if(!e.length)throw new X("#DIV/0!");return e.reduce((t,n)=>t+n,0)/e.length},MIN:o=>{let e=ze(o);return e.length?e.reduce((t,n)=>Math.min(t,n)):0},MAX:o=>{let e=ze(o);return e.length?e.reduce((t,n)=>Math.max(t,n)):0},MEDIAN:o=>{let e=ze(o).sort((n,r)=>n-r);if(!e.length)throw new X("#NUM!");let t=e.length>>1;return e.length%2?e[t]:(e[t-1]+e[t])/2},COUNT:o=>Fe(o).filter(e=>typeof e=="number"&&Number.isFinite(e)).length,COUNTA:o=>Fe(o).filter(e=>!pe(e)).length,COUNTBLANK:o=>Fe(o).filter(pe).length,PRODUCT:o=>ze(o).reduce((e,t)=>e*t,1),ROUND:o=>qt(V(o[0]),o.length>1?V(o[1]):0),ROUNDUP:o=>qt(V(o[0]),o.length>1?V(o[1]):0,"up"),ROUNDDOWN:o=>qt(V(o[0]),o.length>1?V(o[1]):0,"down"),INT:o=>Math.floor(V(o[0])),TRUNC:o=>qt(V(o[0]),o.length>1?V(o[1]):0,V(o[0])<0?"up":"down"),ABS:o=>Math.abs(V(o[0])),SIGN:o=>Math.sign(V(o[0])),SQRT:o=>{let e=V(o[0]);if(e<0)throw new X("#NUM!");return Math.sqrt(e)},POWER:o=>V(o[0])**V(o[1]),EXP:o=>Math.exp(V(o[0])),LN:o=>{let e=V(o[0]);if(e<=0)throw new X("#NUM!");return Math.log(e)},LOG10:o=>{let e=V(o[0]);if(e<=0)throw new X("#NUM!");return Math.log10(e)},MOD:o=>{let e=V(o[1]);if(e===0)throw new X("#DIV/0!");let t=V(o[0]);return t-e*Math.floor(t/e)},CEILING:o=>{let e=o.length>1?V(o[1]):1;return e===0?0:Math.ceil(V(o[0])/e)*e},FLOOR:o=>{let e=o.length>1?V(o[1]):1;return e===0?0:Math.floor(V(o[0])/e)*e},PI:()=>Math.PI,CONCAT:o=>Fe(o).map(te).join(""),TEXTJOIN:o=>Fe(o.slice(2)).filter(e=>!De(o[1])||!pe(e)).map(te).join(te(o[0])),LEN:o=>te(o[0]).length,LEFT:o=>te(o[0]).slice(0,o.length>1?Math.max(0,V(o[1])):1),RIGHT:o=>{let e=te(o[0]),t=o.length>1?Math.max(0,V(o[1])):1;return t?e.slice(-t):""},MID:o=>te(o[0]).substr(Math.max(0,V(o[1])-1),Math.max(0,V(o[2]))),UPPER:o=>te(o[0]).toUpperCase(),LOWER:o=>te(o[0]).toLowerCase(),PROPER:o=>te(o[0]).toLowerCase().replace(/(^|[^\p{L}])(\p{L})/gu,(e,t,n)=>t+n.toUpperCase()),TRIM:o=>te(o[0]).trim().replace(/\s+/g," "),SUBSTITUTE:o=>te(o[0]).split(te(o[1])).join(te(o[2])),REPLACE:o=>{let e=te(o[0]),t=Math.max(0,V(o[1])-1);return e.slice(0,t)+te(o[3])+e.slice(t+Math.max(0,V(o[2])))},REPT:o=>te(o[0]).repeat(Math.max(0,Math.min(1e4,V(o[1])))),FIND:o=>{let e=te(o[1]).indexOf(te(o[0]),o.length>2?V(o[2])-1:0);if(e<0)throw new X("#VALUE!");return e+1},SEARCH:o=>{let e=te(o[1]).toLowerCase().indexOf(te(o[0]).toLowerCase(),o.length>2?V(o[2])-1:0);if(e<0)throw new X("#VALUE!");return e+1},VALUE:o=>V(te(o[0]).replace(/,/g,"")),TEXT:o=>{var s,a;let e=o[0],t=te(o[1]),n=(a=(s=/0\.(0+)/.exec(t))==null?void 0:s[1].length)!=null?a:0;if(/[yd]/i.test(t)){let l=we(e);return t.replace(/yyyy/gi,String(l.getFullYear())).replace(/mm/g,jt(l.getMonth()+1)).replace(/dd/gi,jt(l.getDate()))}let r=V(e);return t.includes("%")?(r*100).toFixed(n)+"%":t.includes(",")?r.toLocaleString("en-US",{minimumFractionDigits:n,maximumFractionDigits:n}):r.toFixed(n)},AND:o=>Fe(o).every(De),OR:o=>Fe(o).some(De),XOR:o=>Fe(o).filter(De).length%2===1,NOT:o=>!De(o[0]),ISBLANK:o=>pe(o[0]),ISNUMBER:o=>typeof o[0]=="number"&&Number.isFinite(o[0]),ISTEXT:o=>typeof o[0]=="string"&&!ot(o[0]),ISERROR:o=>ot(o[0]),TODAY:()=>yt(new Date),NOW:()=>new Date,DATE:o=>yt(new Date(V(o[0]),V(o[1])-1,V(o[2]))),YEAR:o=>we(o[0]).getFullYear(),MONTH:o=>we(o[0]).getMonth()+1,DAY:o=>we(o[0]).getDate(),WEEKDAY:o=>we(o[0]).getDay()+1,DAYS:o=>Rr(we(o[0]))-Rr(we(o[1])),EDATE:o=>{let e=we(o[0]),t=e.getDate(),n=new Date(e.getFullYear(),e.getMonth()+V(o[1]),1);return n.setDate(Math.min(t,new Date(n.getFullYear(),n.getMonth()+1,0).getDate())),yt(n)},EOMONTH:o=>{let e=we(o[0]);return yt(new Date(e.getFullYear(),e.getMonth()+V(o[1])+1,0))},SUMIF:o=>Sr(o.slice(2),$e(o[0]),o[1]).reduce((e,t)=>e+t,0),COUNTIF:o=>{let e=Lr(o[1]);return $e(o[0]).filter(e).length},AVERAGEIF:o=>{let e=Sr(o.slice(2),$e(o[0]),o[1]);if(!e.length)throw new X("#DIV/0!");return e.reduce((t,n)=>t+n,0)/e.length},LOOKUP:o=>{let e=$e(o[1]),t=o.length>2?$e(o[2]):e,n=e.findIndex(r=>{try{return bt(r,o[0])===0}catch{return!1}});if(n<0){if(o.length>3)return o[3];throw new X("#N/A")}return t[n]},RANK:o=>{let e=V(o[0]),t=ze([$e(o[1])]),n=o.length>2&&De(o[2]);return 1+t.filter(r=>n?r<e:r>e).length}};be.AVERAGE=be.AVG;be.XLOOKUP=be.LOOKUP;be.CONCATENATE=be.CONCAT;var Ut=new Map;function Ir(o,e){typeof o!="string"||!/^[A-Za-z_][\w.]*$/.test(o)||typeof e!="function"||(Ut.set(o.toUpperCase(),e),tt.clear())}function Fr(){return[...new Set([...Object.keys(be),...Ws,...js,...Ut.keys()])].sort()}var Ws=["IF","IFS","IFERROR","IFNA","SWITCH","CHOOSE"],js=["COL","PREV","NEXT","ROW"],Zn=class{constructor(e){this.tokens=e;this.i=0}parse(){let e=this.comparison();if(this.i<this.tokens.length)throw new X("#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))return{k:"bin",op:t,a:e,b:this.concat()};return e}concat(){let e=this.additive();for(;this.take("&");)e={k:"bin",op:"&",a:e,b:this.additive()};return e}additive(){let e=this.multiplicative();for(;;)if(this.take("+"))e={k:"bin",op:"+",a:e,b:this.multiplicative()};else if(this.take("-"))e={k:"bin",op:"-",a:e,b:this.multiplicative()};else return e}multiplicative(){let e=this.unary();for(;;)if(this.take("*"))e={k:"bin",op:"*",a:e,b:this.unary()};else if(this.take("/"))e={k:"bin",op:"/",a:e,b:this.unary()};else if(this.take("%"))e={k:"bin",op:"%",a:e,b:this.unary()};else return e}unary(){return this.take("-")?{k:"un",op:"-",a:this.unary()}:this.take("+")?{k:"un",op:"+",a:this.unary()}:this.power()}power(){let e=this.primary();return this.take("^")?{k:"bin",op:"^",a:e,b:this.unary()}:e}primary(){let e=this.tokens[this.i++];if(!e)throw new X("#ERROR!");if(e.t==="num"||e.t==="str")return{k:"lit",v:e.v};if(e.t==="op"){if(e.v!=="(")throw new X("#ERROR!");let n=this.comparison();if(!this.take(")"))throw new X("#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 X("#ERROR!")}let r=t.toUpperCase();if((r==="COL"||r==="PREV"||r==="NEXT")&&(!n.length||n[0].k!=="ref"))throw new X("#ERROR!");let i=r!=="PREV"&&r!=="NEXT"&&r!=="ROW"&&n.every(s=>Wt(s,r==="COL"));return{k:"call",name:r,args:n,rowFree:i}}return/^(true|false)$/i.test(t)?{k:"lit",v:t.toLowerCase()==="true"}:{k:"ref",name:t}}};function Wt(o,e=!1){return o.k==="lit"?!0:o.k==="ref"?e:o.k==="un"?Wt(o.a):o.k==="bin"?Wt(o.a)&&Wt(o.b):o.rowFree}var tt=new Map,Us=2e3;function Ks(o){let e=tt.get(o);if(!e){try{e=new Zn(Vs(o.slice(1))).parse()}catch(t){e=t instanceof X?t:new X("#ERROR!")}tt.size>=Us&&tt.delete(tt.keys().next().value),tt.set(o,e)}if(e instanceof X)throw e;return e}var kr=new WeakMap;function Ne(o){let e=o.rows(),t=o.version(),n=kr.get(o);return(!n||n.data!==e||n.version!==t)&&(n={data:e,version:t,index:null,cols:new Map,values:new WeakMap,rowFree:new Map,filled:new Map},kr.set(o,n)),n}var Qn=new WeakMap;function Dr(o,e){for(let t of o)t&&typeof t=="object"&&Qn.set(t,e)}var $r=32;function eo(o,e){let{row:t,scope:n}=o;if(t&&Object.hasOwn(t,e)){let i=t[e];return typeof i=="string"&&i.startsWith("=")&&i.length>1?Mr(o,e,i):i}let r=n==null?void 0:n.computed(e);if(r!==void 0)return Mr(o,e,r);throw new X("#REF!")}function Mr(o,e,t){if(o.seen.has(e)||o.depth>=$r)throw new X("#CYCLE!");let n;if(o.memo.has(e))n=o.memo.get(e);else{let r=o.scope?Ne(o.scope).values.get(o.row):void 0;r!=null&&r.has(e)?n=r.get(e):(n=Kt(t,{...o,seen:new Set([...o.seen,e]),depth:o.depth+1}),o.memo.set(e,n))}if(ot(n))throw new X(n);return n}function _s(o,e,t){var l,c;let n=o.scope;if(!n)throw new X("#REF!");let r=Ne(n);if(e<0||e>=r.data.length)return null;let i=r.data[e],s=(l=r.filled.get(t))!=null?l:-1;if(e>s+1&&e-s>1)for(let d=s+1;d<e;d++)vt(n,r,r.data[d],t);let a=vt(n,r,i,t);if(e>((c=r.filled.get(t))!=null?c:-1)&&r.filled.set(t,e),ot(a))throw new X(a);return a}function vt(o,e,t,n){let r=e.values.get(t);if(r!=null&&r.has(n))return r.get(n);let i;try{i=eo({row:t,scope:o,seen:new Set,depth:0,memo:new Map},n)}catch(s){i=s instanceof X?s.code:"#ERROR!"}return r||e.values.set(t,r=new Map),r.set(n,i),i}function Er(o){if(!o.scope)throw new X("#REF!");let e=Ne(o.scope);e.index||(e.index=new Map(e.data.map((n,r)=>[n,r])));let t=e.index.get(o.row);if(t===void 0)throw new X("#REF!");return t}function Xs(o,e){if(!o.scope)throw new X("#REF!");let t=o.scope,n=Ne(t),r=n.cols.get(e);if(r||(n.cols.set(e,Ar),r=n.data.map(i=>vt(t,n,i,e)),n.cols.set(e,r)),r===Ar)throw new X("#CYCLE!");return r}var Ar=[];function nt(o,e){switch(o.k){case"lit":return o.v;case"ref":return eo(e,o.name);case"un":return o.op==="-"?-V(nt(o.a,e)):V(nt(o.a,e));case"bin":{let t=nt(o.a,e),n=nt(o.b,e);switch(o.op){case"+":return V(t)+V(n);case"-":return V(t)-V(n);case"*":return V(t)*V(n);case"/":case"%":{let r=V(n);if(r===0)throw new X("#DIV/0!");return o.op==="/"?V(t)/r:V(t)%r}case"^":return V(t)**V(n);case"&":return te(t)+te(n);default:{let r=bt(t,n);return o.op==="="?r===0:o.op==="<>"?r!==0:o.op==="<"?r<0:o.op===">"?r>0:o.op==="<="?r<=0:r>=0}}}case"call":{if(o.rowFree&&e.scope){let t=Ne(e.scope);if(t.rowFree.has(o)){let n=t.rowFree.get(o);if(n instanceof X)throw n;return n}try{let n=Tr(o,e);return t.rowFree.set(o,n),n}catch(n){throw n instanceof X&&t.rowFree.set(o,n),n}}return Tr(o,e)}}}function Tr(o,e){var a;let{name:t,args:n}=o,r=l=>nt(n[l],e);switch(t){case"IF":{if(n.length<2)throw new X("#ERROR!");return De(r(0))?r(1):n.length>2?r(2):!1}case"IFS":for(let l=0;l+1<n.length;l+=2)if(De(r(l)))return r(l+1);throw new X("#N/A");case"IFERROR":case"IFNA":try{let l=r(0);return ot(l)&&(t==="IFERROR"||l==="#N/A")?n.length>1?r(1):"":l}catch(l){if(!(l instanceof X)||t==="IFNA"&&l.code!=="#N/A")throw l;return n.length>1?r(1):""}case"SWITCH":{let l=r(0);for(let c=1;c+1<n.length;c+=2)if(bt(l,r(c))===0)return r(c+1);if(n.length%2===0)return r(n.length-1);throw new X("#N/A")}case"CHOOSE":{let l=Math.trunc(V(r(0)));if(l<1||l>=n.length)throw new X("#VALUE!");return r(l)}case"COL":return Xs(e,n[0].name);case"ROW":return Er(e)+1;case"PREV":case"NEXT":{let l=n.length>1?Math.trunc(V(r(1))):1,c=Er(e)+(t==="PREV"?-l:l),d=n[0].name;if(t==="NEXT"&&e.depth>=$r)throw new X("#CYCLE!");return t==="PREV"?_s(e,c,d):Js(e,c,d)}}let i=(a=Object.hasOwn(be,t)?be[t]:void 0)!=null?a:Ut.get(t);if(!i)throw new X("#NAME?");let s=n.map((l,c)=>r(c));if(Ut.has(t)&&!Object.hasOwn(be,t))try{return i(s)}catch(l){throw l instanceof X?l:new X("#VALUE!")}return i(s)}function Js(o,e,t){let n=o.scope?Ne(o.scope):null;if(!n)throw new X("#REF!");return e<0||e>=n.data.length?null:eo({...o,row:n.data[e],seen:new Set,depth:o.depth+1,memo:new Map},t)}function Kt(o,e){try{let t=nt(Ks(o),e);return typeof t=="number"&&!Number.isFinite(t)?"#NUM!":Array.isArray(t)?"#VALUE!":t}catch(t){return t instanceof RangeError?"#CYCLE!":t instanceof X?t.code:"#ERROR!"}}function _t(o,e,t=new Set,n=0,r=new Map,i=null){return Kt(o,{row:e,scope:i,seen:t,depth:n,memo:r})}function to(o,e){var r,i;let t=(r=Qn.get(o))!=null?r:null,n=(i=o.id)!=null?i:o.field;if(o.formula){if(t&&n){let s=Ne(t);return vt(t,s,e,n)}return Kt(o.formula,{row:e,scope:t,seen:new Set(n?[n]:[]),depth:0,memo:new Map})}return t?vt(t,Ne(t),e,o.field):Kt(e[o.field],{row:e,scope:t,seen:new Set([o.field]),depth:0,memo:new Map})}var no=o=>{var e,t;return!!((t=(e=Qn.get(o))==null?void 0:e.off)!=null&&t.call(e))},Ve=o=>typeof o=="string"&&o.length>1&&o.startsWith("=");function j(o,e){var n;if(o.valueGetter)try{return o.valueGetter(e)}catch{G(`valueGetter of column "${(n=o.id)!=null?n:o.field}" threw; rendering an empty cell`);return}if(typeof o.formula=="string"&&Ve(o.formula)&&!no(o))return to(o,e);if(o.field==null)return;let t=e[o.field];return o.formulas&&Ve(t)&&!no(o)?to(o,e):t}var xt=["left","center","right"],Nr=[[">=","gte"],["<=","lte"],["<>","ne"],["!=","ne"],[">","gt"],["<","lt"],["=","eq"]],Or=[[">","after"],["<","before"],["=","equals"]],Ys=/^(.+?)\s*(?:~|\.\.)\s*(.+)$/,Xt="~many",oo=o=>{let e=Number(o.replace(/[,\s₩$€¥]/g,""));return o.trim()!==""&&Number.isFinite(e)?e:null},ro=o=>{let e=/^(\d{4})[-./]\s*(\d{1,2})[-./]\s*(\d{1,2})\.?$/.exec(o.trim());if(!e)return null;let t=Number(e[1]),n=Number(e[2]),r=Number(e[3]);return n<1||n>12||r<1||r>new Date(Date.UTC(t,n,0)).getUTCDate()?null:`${e[1]}-${e[2].padStart(2,"0")}-${e[3].padStart(2,"0")}`};function Zs(o,e){let t=e.trim();if(!t)return null;if(o==="text")return{type:"text",op:"contains",value:t};let n=Ys.exec(t);if(o==="number"){if(n){let l=oo(n[1]),c=oo(n[2]);return l===null||c===null?void 0:{type:"number",op:"between",value:Math.min(l,c),valueTo:Math.max(l,c)}}let s=Nr.find(([l])=>t.startsWith(l)),a=oo(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=ro(n[1]),a=ro(n[2]);return!s||!a?void 0:{type:"date",op:"between",value:s<a?s:a,valueTo:s<a?a:s}}let r=Or.find(([s])=>t.startsWith(s)),i=ro(r?t.slice(r[0].length):t);return i?{type:"date",op:r?r[1]:"equals",value:i}:void 0}function Qs(o){var e,t,n;if(!o)return"";if(o.type==="text")return o.op==="contains"&&(e=o.value)!=null?e:"";if(o.type==="number"){if(o.op==="between")return`${o.value}~${o.valueTo}`;let r=(t=Nr.find(([,i])=>i===o.op))==null?void 0:t[0];return r&&o.value!==void 0?`${r==="="?"":r}${o.value}`:""}if(o.type==="date"){if(o.op==="between")return`${o.value}~${o.valueTo}`;let r=(n=Or.find(([,i])=>i===o.op))==null?void 0:n[0];return r&&o.value?`${r==="="?"":r}${o.value}`:""}return""}var Jt=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 xt)this.inners[n]=R("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,r=e.displayed(),i=`${n}|${t.state.locale.code}|${r.map(s=>`${s.id}:${s.left}:${s.width}:${s.region}`).join(",")}`;if(i!==this.layout){this.layout=i;for(let s of xt){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.data=t.state.data,this.rebuilt=!0}else t.state.data!==this.data&&(this.data=t.state.data,this.refreshLists());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 xt)for(let n of this.inners[t].querySelectorAll("[data-col]")){let r=n.dataset.col,i=e[r];if(n.closest(".fg-filter-cell").classList.toggle("fg-filter-active",!!i),!(n===n.ownerDocument.activeElement||n.getRootNode().activeElement===n)){if(n instanceof HTMLSelectElement){let s=(i==null?void 0:i.type)==="set"&&i.values.length>1?i.values.length:0,a=n.querySelector(`option[value="${Xt}"]`);if(s)a||(a=R("option","",{value:Xt}),a.disabled=!0,n.options[0].after(a)),a.textContent=this.grid.store.state.locale.setSelected.replace("{n}",String(s)),n.value=Xt;else{a==null||a.remove();let l=(i==null?void 0:i.type)==="set"&&i.values.length===1?JSON.stringify(i.values[0]):"";[...n.options].some(c=>c.value===l)&&(n.value=l)}}else n.value=Qs(i);n.classList.remove("fg-filter-bad")}}}}refreshLists(){var e;for(let t of xt)for(let n of this.inners[t].querySelectorAll("select[data-col]")){let r=(e=this.grid.columns.getNode(n.dataset.col))==null?void 0:e.def;if(!r)continue;let i=n.value;if(this.fillOptions(n,r),i===Xt){this.rebuilt=!0;continue}if(i&&![...n.options].some(s=>s.value===i)){let s=R("option","",{value:i});s.textContent=String(JSON.parse(i)),n.append(s)}n.value=i}}fillOptions(e,t){let n=R("option","",{value:""});n.textContent=this.grid.store.state.locale.selectAll;let r=this.distinct(t).map(i=>{let s=R("option","",{value:JSON.stringify(i)});return s.textContent=i===!0?"\u2713":i===!1?"\u2717":String(i),s});e.replaceChildren(n,...r)}cell(e,t){var c,d;let n=R("div","fg-filter-cell",{role:"gridcell"});n.style.left=`${e.left}px`,n.style.width=`${e.width}px`,n.style.height=`${t}px`;let r=B(e.id)?null:ge(e.def);if(!r)return n;let s=`${this.grid.store.state.locale.filter}: ${(d=(c=e.def.header)!=null?c:e.def.field)!=null?d:e.id}`;if(r==="set"){let u=R("select","fg-filter-input",{"aria-label":s});return u.dataset.col=e.id,this.fillOptions(u,e.def),u.addEventListener("change",()=>{this.grid.setFilter(e.id,u.value?{type:"set",values:[JSON.parse(u.value)]}:null)}),n.append(u),n}let a=R("input","fg-filter-input",{type:"text","aria-label":s,spellcheck:"false",autocomplete:"off"});a.dataset.col=e.id,r==="number"&&(a.placeholder=">0, 10~20"),r==="date"&&(a.placeholder=">2026-01-01");let l=()=>{let u=Zs(r,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(),!me(u)&&(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 r=j(e,n);if(r==null||r==="")continue;let i=JSON.stringify(r);if(t.has(i)||t.set(i,r),t.size>=200)break}return[...t.values()].sort((n,r)=>String(n).localeCompare(String(r)))}setTransform(e){this.inners.center.style.transform=`translateX(${-e}px)`}destroy(){for(let e of this.timers.values())clearTimeout(e);for(let e of xt)this.inners[e].remove()}};var qe=o=>typeof o=="number"?Number.isFinite(o)?o:null:typeof o=="string"&&o.trim()!==""&&Number.isFinite(Number(o))?Number(o):o instanceof Date?o.getTime():null,ea=new Set(["top","bottom","aboveAverage","belowAverage","duplicate","unique","dataBar","colorScale","iconSet"]),Br={arrows:[{char:"\u25B2",color:"#16a34a",label:"up"},{char:"\u25B6",color:"#d97706",label:"level"},{char:"\u25BC",color:"#dc2626",label:"down"}],traffic:[{char:"\u25CF",color:"#16a34a",label:"good"},{char:"\u25CF",color:"#f59e0b",label:"fair"},{char:"\u25CF",color:"#dc2626",label:"poor"}],signs:[{char:"\u2714",color:"#16a34a",label:"good"},{char:"!",color:"#d97706",label:"fair"},{char:"\u2716",color:"#dc2626",label:"poor"}]};function so(o){let e=/^#?([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(o.trim());if(!e)return null;let t=e[1].length===3?[...e[1]].map(n=>n+n).join(""):e[1];return[0,2,4].map(n=>parseInt(t.slice(n,n+2),16))}function io(o,e,t){let n=so(o),r=so(e);return!n||!r?t<.5?o:e:`#${n.map((s,a)=>Math.round(s+(r[a]-s)*Math.max(0,Math.min(1,t)))).map(s=>s.toString(16).padStart(2,"0")).join("")}`}function Ct(o){return o==null?"":o instanceof Date?o.toISOString():String(o)}function ta(o,e){var c;let t=(c=o.op)!=null?c:"eq";if(t==="blank")return _(e);if(t==="notBlank")return!_(e);if(t==="contains"||t==="notContains"||t==="startsWith"||t==="endsWith"){let d=Ct(e).toLowerCase(),u=Ct(o.value).toLowerCase(),f=t==="startsWith"?d.startsWith(u):t==="endsWith"?d.endsWith(u):d.includes(u);return t==="notContains"?!f:f}if(_(e))return t==="ne";let n=qe(e),r=qe(o.value),i=qe(o.valueTo);if(n!==null&&r!==null)switch(t){case"eq":return n===r;case"ne":return n!==r;case"gt":return n>r;case"gte":return n>=r;case"lt":return n<r;case"lte":return n<=r;case"between":case"notBetween":{if(i===null)return!1;let d=n>=Math.min(r,i)&&n<=Math.max(r,i);return t==="between"?d:!d}}let s=Ct(e).toLowerCase(),a=Ct(o.value).toLowerCase(),l=Ct(o.valueTo).toLowerCase();switch(t){case"eq":return s===a;case"ne":return s!==a;case"gt":return s>a;case"gte":return s>=a;case"lt":return s<a;case"lte":return s<=a;case"between":return s>=a&&s<=l;case"notBetween":return s<a||s>l}return!1}var Yt=class{constructor(e){this.deps=e;this.stats=new Map;this.statsKey=[];this.rowCache=new WeakMap}dependsOnOtherRows(){return this.deps.rules().some(e=>{var t;return e&&(ea.has((t=e.type)!=null?t:"value")||e.type==="formula")})}fresh(){let e=[this.deps.rows(),this.deps.version(),this.deps.rules()];e.every((t,n)=>t===this.statsKey[n])||(this.statsKey=e,this.stats.clear(),this.rowCache=new WeakMap)}statsOf(e){var n,r,i;let t=this.stats.get(e);if(!t){let s=[],a=new Map;for(let c of this.deps.rows()){let d=this.deps.value(e,c),u=qe(d);if(u!==null&&s.push(u),!_(d)){let f=ie(d);a.set(f,((n=a.get(f))!=null?n:0)+1)}}s.sort((c,d)=>c-d);let l=s.reduce((c,d)=>c+d,0);t={min:(r=s[0])!=null?r:0,max:(i=s[s.length-1])!=null?i:0,avg:s.length?l/s.length:0,sorted:s,counts:a},this.stats.set(e,t)}return t}test(e,t,n,r){var s,a,l,c;let i=(s=e.type)!=null?s:"value";switch(i){case"value":return ta(e,n);case"formula":{if(typeof e.formula!="string")return!1;let d=this.deps.formula(e.formula.startsWith("=")?e.formula:`=${e.formula}`,r);return d===!0||typeof d=="number"&&d!==0}case"top":case"bottom":{let d=qe(n);if(d===null)return!1;let u=this.statsOf(t);if(!u.sorted.length)return!1;let f=Math.max(1,e.percent?Math.ceil(u.sorted.length*((a=e.rank)!=null?a:10)/100):Math.floor((l=e.rank)!=null?l:10));return i==="top"?d>=u.sorted[Math.max(0,u.sorted.length-f)]:d<=u.sorted[Math.min(u.sorted.length-1,f-1)]}case"aboveAverage":case"belowAverage":{let d=qe(n);if(d===null)return!1;let u=this.statsOf(t).avg;return i==="aboveAverage"?d>u:d<u}case"duplicate":case"unique":{if(_(n))return!1;let d=(c=this.statsOf(t).counts.get(ie(n)))!=null?c:0;return i==="duplicate"?d>1:d===1}}return!1}rowStyle(e){if(this.rowCache.has(e))return this.rowCache.get(e);let t=null;for(let n of this.deps.rules()){if(!(n!=null&&n.row)||!Array.isArray(n.columns)||!n.columns.length)continue;let r=n.columns[0];if(this.test(n,r,this.deps.value(r,e),e)&&(t=Hr(t!=null?t:{},n.style),n.stopIfTrue))break}return this.rowCache.set(e,t),t}cell(e,t,n){var a,l,c;let r=this.deps.rules();if(!r.length)return null;this.fresh();let i=null,s=this.rowStyle(t);s&&(i={style:{...s}});for(let d of r){if(!d||d.row||!Array.isArray(d.columns)||!d.columns.includes(e))continue;let u=(a=d.type)!=null?a:"value";if(u==="dataBar"||u==="colorScale"||u==="iconSet"){let f=qe(n);if(f===null)continue;let p=this.statsOf(e),m=typeof d.min=="number"?d.min:p.min,b=typeof d.max=="number"?d.max:p.max,g=b===m?1:Math.max(0,Math.min(1,(f-m)/(b-m)));if(i!=null||(i={style:{}}),u==="dataBar"){let h=m<0&&b>0?-m/(b-m):m>=0?0:1,w=b===m?1:g;i.bar={from:Math.min(h,w),to:Math.max(h,w),color:d.color||"var(--fg-accent)"}}else if(u==="colorScale"){let h=Array.isArray(d.colors)&&d.colors.length>=2?d.colors:["#f8696b","#ffeb84","#63be7b"],w=h.length>=3?g<.5?io(h[0],h[1],g*2):io(h[1],h[2],(g-.5)*2):io(h[0],h[1],g);i.style={...i.style,background:w}}else{let h=(c=Br[(l=d.icons)!=null?l:"arrows"])!=null?c:Br.arrows;i.icon=g>=2/3?h[0]:g>=1/3?h[1]:h[2]}continue}if(this.test(d,e,n,t)&&(i!=null||(i={style:{}}),i.style=Hr(i.style,d.style),d.stopIfTrue))break}return i}};function ve(o){let e=o==null?void 0:o.align;return e==="left"||e==="center"||e==="right"?e:void 0}function Hr(o,e){if(!e||typeof e!="object")return{...o};let t={...o,...e};return ve(e)||(ve(o)?t.align=o.align:delete t.align),t}function ao(o){let e=o?so(o):null;return e?`FF${e.map(t=>t.toString(16).padStart(2,"0")).join("").toUpperCase()}`:void 0}function lo(o){let e=[];for(let t of o){if(_(t)||t instanceof Date)continue;let n=typeof t=="number"?t:Number(t);Number.isNaN(n)||e.push(n)}return e}function Gr(o,e){let t=o.filter(i=>i instanceof Date&&!Number.isNaN(i.getTime()));if(t.length)return t.reduce((i,s)=>(e?s>i:s<i)?s:i);let n=lo(o);if(!n.length)return null;let r=n[0];for(let i of n)(e?i>r:i<r)&&(r=i);return r}function Re(o,e,t){if(typeof o=="function")return o(e,t);switch(o){case"sum":{let n=lo(e);return n.length||!e.length?n.reduce((r,i)=>r+i,0):null}case"avg":{let n=lo(e);return n.length?n.reduce((r,i)=>r+i,0)/n.length:null}case"min":return Gr(e,!1);case"max":return Gr(e,!0);case"count":return t.length}return null}function Rt(o){return typeof o=="object"&&o!==null&&"agg"in o?o:{agg:o}}function zr(o,e,t){let n=new Map,r=(i,s)=>{let a=n.get(i);return a||n.set(i,a=e.map(l=>j(s,l))),a};return o.map(i=>{var a;let s={};for(let[l,c]of Object.entries((a=i.columns)!=null?a:{})){let d=t(l);d&&(s[l]=Re(Rt(c).agg,r(l,d),e))}return s})}function St(o,e,t,n,r){if(!o)return 1;let i=1;try{i=Math.floor(Number(o({value:j(e,t),row:t,rowIndex:n})))}catch{i=1}return Number.isFinite(i)?Math.max(1,Math.min(r,i)):1}function rt(o,e){let t=o.length,n=new Int32Array(t),r=new Int32Array(t);if(e.rowSpan){for(let a=0;a<t;){let l=St(e.rowSpan,e,o[a],a,t-a);for(let c=a;c<a+l;c++)n[c]=a,r[c]=a+l-1;a+=l}return{start:n,end:r}}let i=typeof e.merge=="function"?(a,l)=>{try{return!!e.merge(j(e,o[a]),j(e,o[l]),o[a],o[l])}catch{return!1}}:(()=>{let a=o.map(l=>{let c=j(e,l);return _(c)?null:ie(c)});return(l,c)=>a[l]!==null&&a[l]===a[c]})(),s=0;for(let a=1;a<=t;a++)if(!(a<t&&i(a-1,a))){for(let l=s;l<a;l++)n[l]=s,r[l]=a-1;s=a}return{start:n,end:r}}function co(o,e){let t=new Int32Array(e),n=new Int32Array(e),r=0;for(let i=1;i<=e;i++)if(!(i<e&&!o.some(s=>s.start[i]===i))){for(let s=r;s<i;s++)t[s]=r,n[s]=i-1;r=i}return{start:t,end:n}}function Vr(o,e){let t=o.length,n=new Int32Array(t);if(!t||!e.length)return n;let{start:r}=co(e.map(i=>rt(o,i)),t);for(let i=1;i<t;i++)n[i]=n[i-1]+(r[i]===i?1:0);return n}function qr(o,e,t,n,r=4){if(n<=0||t<=0)return{first:0,last:-1};let i=Math.max(0,Math.floor(o/t)-r),s=Math.floor((o+e)/t);return{first:Math.min(i,n-1),last:Math.min(n-1,s+r)}}function Zt(o,e,t,n,r=2){let i=o.length;if(!i)return{first:0,last:-1};let s=0,a=i-1;for(;s<a;){let d=s+a>>1;o[d]+e[d]<=t?s=d+1:a=d}let l=s,c=t+n;for(a=i-1;s<a;){let d=s+a+1>>1;o[d]<c?s=d:a=d-1}return{first:Math.max(0,l-r),last:Math.min(i-1,Math.max(l,s)+r)}}function Wr(o,e,t,n,r=4){if(n<=0)return{first:0,last:-1};let i=0,s=n-1;for(;i<s;){let c=i+s>>1;o[c+1]<=e?i=c+1:s=c}let a=i,l=e+t;for(s=n-1;i<s;){let c=i+s+1>>1;o[c]<l?i=c:s=c-1}return{first:Math.max(0,a-r),last:Math.min(n-1,i+r)}}var le=["left","center","right"],jr=6,na=8,uo=2,oa='<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>',fo='<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 ra='<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 R(o,e="",t={}){let n=document.createElement(o);e&&(n.className=e);for(let[r,i]of Object.entries(t))n.setAttribute(r,i);return n}var Qt=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.geo={top:0,left:0,cw:0,ch:0,ow:0,oh:0};this.layoutSig="";this.touched=new Set;this.measureAll=!1;this.pool={left:[],center:[],right:[]};this.frame=0;this.headerDirty=!0;this.version=0;this.rowVersions=new Map;this.lastRange={first:0,last:-1};this.summaryEl=null;this.summaryPanes=null;this.summaryInners=null;this.summaryKey=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.cards?this.getScroll():{top:this.geo.top,left:this.geo.left})};this.onSideWheel=e=>{e.deltaY&&(e.preventDefault(),this.scroller.scrollTop+=e.deltaY)};this.overlayKey="";this.heightFn=null;this.freeBadge=null;this.onCardClick=e=>{var l;let t=e.target,n=t.closest(".fg-card");if(!n)return;let r=Number(n.dataset.row),i=this.grid.rowModel.getRow(r);if(!i||i.kind)return;if(t.closest(".fg-card-check")){this.grid.selectFromClick(r,!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:i.data,rowIndex:r,colId:a.id,value:j(a.def,i.data),event:e})};this.root=R("div","",{tabindex:"-1"}),this.root.addEventListener("focus",()=>this.gridEl.focus({preventScroll:!0})),this.gridEl=R("div","fg-grid",{role:"grid",tabindex:"0"}),this.headerEl=R("div","fg-header",{role:"rowgroup"}),this.bodyEl=R("div","fg-body",{role:"rowgroup"});let r=i=>({left:R("div",`${i} ${i}-left`),center:R("div",`${i} ${i}-center`),right:R("div",`${i} ${i}-right`)});this.headerPanes=r("fg-header-pane"),this.headerInners=r("fg-header-inner");for(let i of le)this.headerInners[i].setAttribute("role","row");this.bodyPanes=r("fg-body-pane"),this.canvases=r("fg-canvas");for(let i of le)this.headerPanes[i].dataset.region=i,this.bodyPanes[i].dataset.region=i,this.headerPanes[i].append(this.headerInners[i]),this.bodyPanes[i].append(this.canvases[i]),this.headerEl.append(this.headerPanes[i]),this.bodyEl.append(this.bodyPanes[i]);this.scroller=this.bodyPanes.center,t.options.filterRow&&(this.filterRow=new Jt(t,this.headerPanes)),this.overlay=R("div","fg-overlay",{"aria-live":"polite"}),this.main=R("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}readGeo(){let e=this.scroller;this.geo={top:e.scrollTop,left:e.scrollLeft,cw:e.clientWidth,ch:e.clientHeight,ow:e.offsetWidth,oh:e.offsetHeight}}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.rowVersions.clear()),this.schedule()}invalidateRowIds(e){var t;for(let n of e)this.rowVersions.set(n,((t=this.rowVersions.get(n))!=null?t:0)+1);this.schedule()}schedule(){this.frame||(this.frame=requestAnimationFrame(()=>{this.frame=0,this.render()}))}render(){var x,S,E,A,F,C,M,T,L,I;let{columns:e,rowModel:t,store:n,options:r}=this.grid,{rowHeight:i,headerHeight:s}=this.opts;this.readGeo();let a=this.geo.ow-this.geo.cw;e.setContainerWidth(Math.max(0,this.main.clientWidth-a))&&(this.headerDirty=!0,this.version++);let l=t.getRowCount(),c=!!this.grid.options.autoRowHeight&&!t.server,d=t.layout(i,this.detailHeight(),c?this.rowHeights:void 0,this.heightsVersion,t.server?void 0:this.heightOf);if(this.offsets=d.uniform?null:d.offsets,this.firstDataId=(S=(x=e.displayed().find(D=>!B(D.id)))==null?void 0:x.id)!=null?S:"",this.groupLabelId=(A=(E=e.region("center").find(D=>!B(D.id)))==null?void 0:E.id)!=null?A: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(),f=u?u.opts.rows.length:0,p=(F=u==null?void 0:u.opts.position)!=null?F:"bottom",m=u?u.opts.pinned!==!1:!1;this.topOffset=u&&!m&&p==="top"?f*i:0;let b=u&&!m&&p==="bottom"?f*i:0;this.syncSummaryPane(u&&m?p:null,f*i);let g=e.depth*s+((M=(C=this.filterRow)==null?void 0:C.height)!=null?M:0);this.headerEl.style.height=`${g}px`;for(let D of le){let N=e.regionWidth(D);D!=="center"&&(this.headerPanes[D].style.width=this.bodyPanes[D].style.width=`${N}px`,this.headerPanes[D].hidden=this.bodyPanes[D].hidden=N===0),this.canvases[D].style.width=`${N}px`,this.canvases[D].style.height=`${this.rowsHeight(l)+this.topOffset+b}px`}if(r.autoHeight&&!this.useCards()){this.root.classList.add("fg-auto-height");let D=l>0?this.rowsHeight(l):Math.max(this.rowsHeight(l),3*i);this.bodyEl.style.height=`${D+this.topOffset+b+Math.max(0,this.scroller.offsetHeight-this.scroller.clientHeight)}px`}let h=`${g}|${le.map(D=>e.regionWidth(D)).join(",")}|${this.rowsHeight(l)+this.topOffset+b}|${u&&m?p:""}|${f}|${r.autoHeight?1:0}`;h!==this.layoutSig&&(this.layoutSig=h,this.readGeo());let w=this.geo.oh-this.geo.ch;this.bodyPanes.left.style.marginBottom=this.bodyPanes.right.style.marginBottom=`${w}px`;let y=this.gridEl;y.setAttribute("role",r.treeData||this.grid.getGroupBy().length?"treegrid":"grid"),y.setAttribute("aria-rowcount",String(l+e.depth+(this.filterRow?1:0))),y.setAttribute("aria-colcount",String(e.displayed().length)),r.rowSelection==="multiple"&&y.setAttribute("aria-multiselectable","true"),this.headerDirty&&(this.headerDirty=!1,this.renderHeader()),(T=this.filterRow)==null||T.render(),this.renderRows(l),this.updateActiveCell(),c&&this.measureRows(),this.renderSummary(l,u&&u.opts.rows,(L=u==null?void 0:u.values)!=null?L:[],m,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&&m?p:null),this.paintOverlay(l),this.overlay.style.top=`${g}px`;let{top:v,left:k}=this.geo;this.bodyPanes.left.scrollTop=this.bodyPanes.right.scrollTop=v,this.headerInners.center.style.transform=`translateX(${-k}px)`,(I=this.filterRow)==null||I.setTransform(k),this.summaryInners&&(this.summaryInners.center.style.transform=`translateX(${-k}px)`);for(let D of[this.pinnedTop,this.pinnedBottom])D&&(D.inners.center.style.transform=`translateX(${-k}px)`);this.grid.fillHandle.update()}orderSections(e){var s,a,l,c;let t=[e==="top"?this.summaryEl:null,(a=(s=this.pinnedTop)==null?void 0:s.el)!=null?a:null].filter(d=>!!d),n=[(c=(l=this.pinnedBottom)==null?void 0:l.el)!=null?c:null,e==="bottom"?this.summaryEl:null].filter(d=>!!d),r=[this.statusEl,this.pagerEl].filter(d=>!!d);for(let d of t)d.nextElementSibling!==this.bodyEl&&!t.includes(d.nextElementSibling)&&this.gridEl.insertBefore(d,this.bodyEl);let i=this.bodyEl;for(let d=t.length-1;d>=0;d--)i.previousElementSibling!==t[d]&&this.gridEl.insertBefore(t[d],i),i=t[d];i=this.bodyEl;for(let d of n)i.nextElementSibling!==d&&i.after(d),i=d;i=this.gridEl;for(let d of r)i.nextElementSibling!==d&&i.after(d),i=d;this.placeFreeBadge()}paintOverlay(e){var d;let{grid:t}=this,{store:n,rowModel:r,options:i}=t,s=(d=t.forcedOverlay)!=null?d:e>0?null:r.loading()?"loading":"noRows";if(this.overlay.hidden=!s,!s){this.overlayKey="";return}let a=!r.server&&n.state.data.length>0,l=s==="loading"?i.loadingOverlay:i.noRowsOverlay,c=`${s}|${a}|${n.state.locale.code}`;if(c!==this.overlayKey)if(this.overlayKey=c,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{G(`${s==="loading"?"loadingOverlay":"noRowsOverlay"} threw`),this.overlay.textContent=s==="loading"?n.state.locale.loading:n.state.locale.noRows}}updateActiveCell(){var n,r,i;let e=this.activeCellId&&(i=(r=(n=this.root.getRootNode()).getElementById)==null?void 0:r.call(n,this.activeCellId))!=null?i: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 ho(`fg-pinned-rows fg-pinned-${t}`),{columns:i}=this.grid,s=this.opts.rowHeight;r.size(i,n.length*s,this.geo.ow-this.geo.cw);let a=i.region("center"),l=Zt(a.map(d=>d.left),a.map(d=>d.width),this.geo.left,this.geo.cw,uo),c=[n,n.length,this.version,this.grid.valuesVersion,l.first,l.last,s,this.grid.store.state.locale.code];if(e&&Ur(c,r.key))return r;r.key=c;for(let d of le){let u=d==="center"?a.slice(l.first,l.last+1):i.region(d);r.inners[d].replaceChildren(...n.map((f,p)=>{let m=R("div","fg-row fg-row-pinned",{role:"row"});m.style.transform=`translateY(${p*s}px)`,m.style.height=`${s}px`;let b={id:`pinned-${t}-${p}`,data:f,sourceIndex:-1};for(let g of u){let h=R("div","fg-cell",{role:"gridcell"});B(g.id)?(h.style.left=`${g.left}px`,h.style.width=`${g.width}px`):this.paintCell(h,b,-1,g,!1,!1),m.append(h)}return m}))}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,i=`${this.version}.${t.valuesVersion}|${e}|${r}|${n.selected.size}|${JSON.stringify(n.range)}|${JSON.stringify(n.extraRanges)}|${n.locale.code}`;if(this.statusEl&&i===this.statusKey)return;this.statusKey=i,(f=this.statusEl)!=null||(this.statusEl=R("div","fg-statusbar",{role:"status","aria-live":"polite"}));let s=n.locale,a=Pe(s.code,2),l=R("span","fg-status-rows");l.textContent=(e===r?s.statusRows.replace("{n}",a.format(r)):s.statusFiltered.replace("{shown}",a.format(e)).replace("{total}",a.format(r)))+(n.selected.size?` \xB7 ${s.statusSelected.replace("{n}",a.format(n.selected.size))}`:"");let c=R("span","fg-status-aggs"),d=t.rangeAggregates();if(d&&d.cells>1){let p=[`${s.count} ${a.format(d.count)}`];d.numbers&&p.push(`${s.sum} ${a.format(d.sum)}`,`${s.avg} ${a.format(d.sum/d.numbers)}`,`${s.min} ${a.format(d.min)}`,`${s.max} ${a.format(d.max)}`),c.textContent=p.join(" ")}this.statusEl.replaceChildren(l,c)}renderHeader(){let{columns:e,store:t}=this.grid,{sort:n,filters:r,locale:i}=t.state;for(let s of le){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,r,i)))}}headerCell(e,t,n,r){var p,m;let i=this.opts.headerHeight,s=R("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*i}px`,s.style.width=`${e.width}px`,s.style.height=`${e.rowSpan*i}px`,B(e.id))return e.id===Ie&&(s.classList.add("fg-header-rownum"),s.textContent=e.label),e.id===ae&&(s.classList.add("fg-header-select"),s.append(this.selectAllBox(r))),s;let a=R("span","fg-header-label"),l=e.node.def;if(a.textContent=e.label,l.headerRenderer)try{let b=l.headerRenderer({header:e.label,column:l});typeof b=="string"?a.innerHTML=b:a.replaceChildren(b)}catch{G(`headerRenderer of column "${e.id}" threw; showing the plain header`),a.textContent=e.label}let c=null;if(e.isGroup&&this.grid.columns.isCollapsible(e.node)){let b=e.node.open,g=R("button",b?"fg-colgroup-toggle fg-expanded":"fg-colgroup-toggle",{type:"button",tabindex:"-1","aria-expanded":String(b),"aria-label":b?r.collapseAll:r.expandAll});g.textContent=b?"\u2212":"+",g.addEventListener("click",h=>{h.stopPropagation(),this.grid.setColumnGroupOpened(e.id,!b)}),s.classList.add("fg-header-collapsible"),c=g}if(l.headerClass)try{let b=typeof l.headerClass=="function"?l.headerClass(l):l.headerClass;b&&s.classList.add(...b.split(/\s+/).filter(Boolean))}catch{G(`headerClass of column "${e.id}" threw`)}if(s.append(a),c&&s.append(c),e.isGroup||!e.column)return s;let d=e.node.def;((p=d.wrapHeaderText)!=null?p:this.grid.options.wrapHeaderText)&&s.classList.add("fg-header-wrap"),s.setAttribute("aria-colindex",String(e.column.index+1));let u=(m=d.align)!=null?m:d.type==="number"?"right":"left";u==="right"?s.classList.add("fg-align-right"):u==="center"&&s.classList.add("fg-align-center");let f=t.findIndex(b=>b.colId===e.id);if(s.setAttribute("aria-sort",f<0?"none":t[f].dir==="asc"?"ascending":"descending"),Ge(d)&&s.classList.add("fg-sortable"),f>=0){let b=R("span","fg-sort-icon");if(b.textContent=t[f].dir==="asc"?"\u2191":"\u2193",t.length>1){let g=R("sup");g.textContent=String(f+1),b.append(g)}s.append(b)}if(Ge(d)||ge(d)){let b=!!n[e.id],g=R("button",b?"fg-menu-btn fg-filter-active":"fg-menu-btn",{type:"button",tabindex:"-1","aria-label":r.columnMenu});g.innerHTML=b?ra:oa,s.append(g)}return Vt(d)&&s.append(R("div","fg-resize",{"aria-hidden":"true"})),s}selectAllBox(e){let t=R("input","fg-checkbox fg-select-all",{type:"checkbox",tabindex:"-1","aria-label":e.selectAllRows});return this.paintSelectAll(t),t.hidden=this.grid.options.rowSelection!=="multiple"||this.grid.options.headerCheckbox===!1,t}paintSelectAll(e){let t=this.grid.selectableIds(),n=0;for(let r of this.grid.store.state.selected)t.has(r)&&n++;e.checked=t.size>0&&n===t.size,e.indeterminate=n>0&&n<t.size}selectionChanged(){let e=this.headerEl.querySelectorAll(".fg-select-all");if(e.length)for(let t of e)this.paintSelectAll(t)}renderRows(e){var h,w,y,v,k;let{columns:t,rowModel:n,store:r}=this.grid,{selected:i,focus:s}=r.state,a=this.grid.allRangeBounds(),l=this.grid.mergeSpans(),c=l.has(ae),{geo:d}=this,u=Math.max(0,d.top-this.topOffset),f=this.grid.options.autoHeight&&!n.server?{first:0,last:e-1}:this.offsets?Wr(this.offsets,u,d.ch,e,jr):qr(u,d.ch,this.opts.rowHeight,e,jr);this.lastRange=f;let p=t.region("center"),m=Zt(p.map(x=>x.left),p.map(x=>x.width),this.geo.left,this.geo.cw,uo),b=p.some(x=>x.def.colSpan);b&&(m.first=Math.max(0,m.first-na));let g=!b&&!l.size;this.touched.clear();for(let x of le){let S=x==="center"?p.slice(m.first,m.last+1):t.region(x),E=this.painted[x];for(let[F,C]of E)F>=f.first&&F<=f.last&&S.length||(C.el.remove(),this.pool[x].push(C.el),E.delete(F));if(!S.length)continue;let A=x==="center"?`${m.first}-${m.last}`:"";for(let F=f.first;F<=f.last;F++){let C=n.getRow(F),M=i.has(C.id),T=s&&s.rowIndex===F?s.colId:"",L=a.filter(q=>F>=q.r1&&F<=q.r2),I=L.map(q=>`${q.c1}-${q.c2}`).join(","),D=this.mergeState(l,S,F,f.first),N=c&&!C.kind&&(h=this.grid.blockSelection(F))!=null?h:"",P=C.kind==="detail"?`${d.left}:${d.cw}`:"",$=`${C.id}|${this.version}.${(w=this.rowVersions.get(C.id))!=null?w:0}|${M?1:0}${C.kind==="group"?`:${this.grid.selectionVersion}`:""}${N}|${T}|${I}|${D}|${P}`,O=`${A}|${$}`,H=E.get(F);if(!H){let q=(y=this.pool[x].pop())!=null?y:R("div","fg-row",{role:"row"});this.canvases[x].append(q),H={el:q,key:""},E.set(F,H)}if(H.key!==O){if(this.touched.add(F),g&&x==="center"&&!C.kind&&H.base===$&&this.slideCells(H,C,F,p,m,M,T,L)){H.key=O;continue}H.key=O,H.base=x==="center"&&!C.kind?$:void 0,H.first=m.first,H.last=m.last,H.el.dataset.kind!==((v=C.kind)!=null?v:"")&&(H.el.replaceChildren(),H.el.dataset.kind=(k=C.kind)!=null?k:""),C.kind==="group"?this.paintGroupRow(H.el,C,F,S,T):C.kind==="detail"?this.paintDetailRow(H.el,C,F,x):C.kind==="loading"?this.paintLoadingRow(H.el,F,S):this.paintRow(H.el,C,F,S,M,T,L,l,f.first)}}}l.size&&this.stickMergedText(d.top,d.ch||Number.MAX_SAFE_INTEGER/4)}stickMergedText(e,t){for(let n of le){let r=new Map;for(let[s,a]of this.painted[n]){let l=-1;for(let c of a.el.querySelectorAll(".fg-cell-merged"))l=Math.max(l,Number(c.dataset.mergeEnd));l>s&&r.set(s,l)}let i=new Map;for(let s of[...r.keys()].sort((a,l)=>l-a)){let a=0;for(let[l,c]of i)l>s&&l<=r.get(s)&&(a=Math.max(a,c));i.set(s,a+1)}for(let[s,a]of this.painted[n]){let l=i.has(s)?String(i.get(s)):"";a.el.style.zIndex!==l&&(l||a.el.querySelector(".fg-cell-merged, .fg-cell-merge-hidden"))&&(a.el.style.zIndex=l)}for(let s of this.painted[n].values())for(let a of s.el.querySelectorAll(".fg-cell-merged")){let l=Number(a.dataset.mergeTop),c=Number(a.dataset.mergeLast);if(!Number.isFinite(l)||!Number.isFinite(c))continue;let d=Math.min(c,Math.max(0,e-l)),u=0;if(a.classList.contains("fg-cell-merged-middle")||a.classList.contains("fg-cell-merged-bottom")){let m=Number(a.dataset.mergeHeight),b=m-c;u=Math.max(0,Math.min(m-d-b,l+m-(e+t))),d=Math.min(d,m-u-b)}let f=`${Math.round(d)}px`;a.style.getPropertyValue("--fg-merge-shift")!==f&&a.style.setProperty("--fg-merge-shift",f);let p=`${Math.round(u)}px`;a.style.getPropertyValue("--fg-merge-shift-bottom")!==p&&a.style.setProperty("--fg-merge-shift-bottom",p)}}}slideCells(e,t,n,r,i,s,a,l){let c=e.first,d=e.last;if(i.first>d||i.last<c||e.el.childElementCount!==d-c+1)return!1;let u=e.el;for(let p=c;p<i.first;p++)u.firstElementChild.remove();for(let p=d;p>i.last;p--)u.lastElementChild.remove();let f=p=>{let m=R("div","fg-cell",{role:"gridcell"});return this.paintCell(m,t,n,p,s,a===p.id),p.id===this.firstDataId&&this.decorate(m,t),!B(p.id)&&l.some(b=>p.index>=b.c1&&p.index<=b.c2)&&m.classList.add("fg-cell-range"),m};return i.first<c&&u.prepend(...r.slice(i.first,c).map(f)),i.last>d&&u.append(...r.slice(d+1,i.last+1).map(f)),e.first=i.first,e.last=i.last,!0}mergeState(e,t,n,r){if(!e.size)return"";let i="";for(let s of t){let a=e.get(s.id);if(!a)continue;let l=a.start[n],c=a.end[n];i+=l===c?"n":n===Math.max(l,r)?`d${l}`:"h"}return i}paintRow(e,t,n,r,i,s,a,l=new Map,c=0){let d=this.opts.rowHeight;for(e.className=`fg-row${n%2?" fg-row-odd":""}${i?" 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(i)),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(R("div","fg-cell",{role:"gridcell"}));let u=!1,f=r.length?this.grid.columns.region(r[0].region):[],p=f.some(g=>g.def.colSpan),m=-1,b=p?new Map(f.map((g,h)=>[g.id,h])):null;r.forEach((g,h)=>{let w=e.children[h];if(this.paintCell(w,t,n,g,i,s===g.id),b){let v=b.get(g.id);if(v<=m)w.classList.add("fg-cell-span-hidden");else if(g.def.colSpan&&!B(g.id)){let k=St(g.def.colSpan,g.def,t.data,n,f.length-v);if(k>1){m=v+k-1;let x=0;for(let S=v;S<=m;S++)x+=f[S].width;w.style.width=`${x}px`,w.classList.add("fg-cell-colspan")}}}g.id===this.firstDataId&&this.decorate(w,t),w.style.top=w.style.height=w.style.bottom="";let y=l.get(g.id);y&&y.start[n]!==y.end[n]&&(n===Math.max(y.start[n],c)?(w.classList.add("fg-cell-merged"),w.style.top=`${-(this.rowTop(n)-this.rowTop(y.start[n]))}px`,w.style.height=`${this.rowTop(y.end[n])+this.rowH(y.end[n])-this.rowTop(y.start[n])}px`,w.style.bottom="auto",w.dataset.mergeTop=String(this.rowTop(y.start[n])),w.dataset.mergeLast=String(this.rowTop(y.end[n])-this.rowTop(y.start[n])),w.dataset.mergeEnd=String(y.end[n]),w.dataset.mergeHeight=String(this.rowTop(y.end[n])+this.rowH(y.end[n])-this.rowTop(y.start[n])),w.classList.toggle("fg-cell-merged-middle",g.def.mergeAlign==="middle"),w.classList.toggle("fg-cell-merged-bottom",g.def.mergeAlign==="bottom"),u=!0):w.classList.add("fg-cell-merge-hidden")),!w.classList.contains("fg-cell-merged")&&w.dataset.mergeTop!==void 0&&(delete w.dataset.mergeTop,delete w.dataset.mergeLast,delete w.dataset.mergeEnd,delete w.dataset.mergeHeight,w.classList.remove("fg-cell-merged-middle","fg-cell-merged-bottom"),w.style.removeProperty("--fg-merge-shift"),w.style.removeProperty("--fg-merge-shift-bottom")),!B(g.id)&&a.some(v=>g.index>=v.c1&&g.index<=v.c2)&&w.classList.add("fg-cell-range")}),e.style.zIndex=u?"1":""}paintCell(e,t,n,r,i,s){var m,b;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=s?"fg-cell fg-cell-focused":"fg-cell";if(r.id===Ie){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(r.id===He){e.className=`${l} fg-cell-drag`;let g=R("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(r.id===ae){e.className=`${l} fg-cell-select`;let g=R("input","fg-checkbox",{type:"checkbox",tabindex:"-1","aria-label":a.selectRow});g.checked=i;let h=n>=0&&!t.kind?this.grid.blockSelection(n):null;h?(g.checked=h==="all",g.indeterminate=h==="some",h==="off"&&(g.disabled=!0,e.classList.add("fg-cell-select-locked"))):n>=0&&!t.kind&&!this.grid.rowSelectable(t.data)&&(g.disabled=!0,e.classList.add("fg-cell-select-locked")),e.replaceChildren(g);return}let c=r.def,d=j(c,t.data),u=ne(c,a.code)(d),f=n>=0&&!t.kind?this.grid.cellFormat(t.data,r.id,d):null;l+=` fg-align-${(b=(m=ve(f==null?void 0:f.style))!=null?m:c.align)!=null?b:c.type==="number"?"right":c.type==="boolean"?"center":"left"}`;let p={value:d,formatted:u,row:t.data,rowIndex:n,column:c};if(c.cellClass)try{let g=typeof c.cellClass=="function"?c.cellClass(p):c.cellClass;g&&(l+=` ${g}`)}catch{G(`cellClass of column "${r.id}" threw`)}if(this.grid.tracker.isDirty(t.data,c.field)&&(l+=" fg-cell-dirty"),c.wrapText&&(l+=" fg-cell-wrap"),typeof c.editable=="function"&&n>=0&&!zt(c,t.data,n)&&(l+=" fg-cell-readonly"),n>=0&&(l+=this.grid.finder.classFor(n,r.id)),l+=this.grid.flashClass(t.id,r.id),f!=null&&f.bar&&(l+=" fg-cf-bar"),e.className=l,this.applyFormat(e,f),c.sparkline&&!c.renderer){let g=Array.isArray(d)?d.map(Number).filter(Number.isFinite):[];g.length?e.replaceChildren(ia(g,c.sparkline===!0?{}:c.sparkline,r.width,this.opts.rowHeight)):e.replaceChildren(),e.setAttribute("aria-label",Array.isArray(d)?d.join(", "):"");return}if(!c.renderer){if(e.textContent=u,f!=null&&f.icon){let g=R("span","fg-cf-icon",{"aria-hidden":"true"});g.textContent=f.icon.char,g.style.color=f.icon.color,e.prepend(g)}return}try{let g=c.renderer(p);typeof g=="string"?e.innerHTML=g:e.replaceChildren(g)}catch{G(`renderer of column "${r.id}" threw; rendering an empty cell`),e.textContent=""}}applyFormat(e,t){var i,s;let n=e.style;if(!t){e.dataset.cf&&(n.color=n.background=n.fontWeight=n.fontStyle=n.textDecoration="",n.removeProperty("--fg-bar-from"),n.removeProperty("--fg-bar-to"),n.removeProperty("--fg-bar-color"),delete e.dataset.cf);return}e.dataset.cf="1";let r=t.style;n.color=(i=r.color)!=null?i:"",n.background=(s=r.background)!=null?s:"",n.fontWeight=r.bold?"600":"",n.fontStyle=r.italic?"italic":"",n.textDecoration=r.strike?"line-through":"",t.bar?(n.setProperty("--fg-bar-from",`${(t.bar.from*100).toFixed(2)}%`),n.setProperty("--fg-bar-to",`${(t.bar.to*100).toFixed(2)}%`),n.setProperty("--fg-bar-color",t.bar.color)):(n.removeProperty("--fg-bar-from"),n.removeProperty("--fg-bar-to"),n.removeProperty("--fg-bar-color"))}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),i=r+Math.min(this.rowH(e),n.clientHeight||1/0);r<n.scrollTop?n.scrollTop=r:i>n.scrollTop+n.clientHeight&&(n.scrollTop=i-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 r;if(!e){(r=this.summaryEl)==null||r.remove(),this.summaryEl=this.summaryPanes=this.summaryInners=null;return}if(!this.summaryEl){let i=s=>({left:R("div",`${s} ${s}-left`),center:R("div",`${s} ${s}-center`),right:R("div",`${s} ${s}-right`)});this.summaryEl=R("div","fg-summary",{role:"rowgroup"}),this.summaryPanes=i("fg-summary-pane"),this.summaryInners=i("fg-summary-inner");for(let s of le)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 i of le){let s=this.grid.columns.regionWidth(i);i!=="center"&&(this.summaryPanes[i].style.width=`${s}px`,this.summaryPanes[i].hidden=s===0),this.summaryInners[i].style.width=`${s}px`,this.summaryInners[i].style.height=`${t}px`}let n=this.geo.ow-this.geo.cw;this.summaryPanes.center.style.marginRight=`${n}px`}renderSummary(e,t,n,r,i){if(!t&&!this.summaryKey)return;let s=this.grid.columns.region("center"),a=Zt(s.map(f=>f.left),s.map(f=>f.width),this.geo.left,this.geo.cw,uo),l=[t,n,r,i,this.summaryInners,this.version,a.first,a.last,this.opts.rowHeight,r?0:this.rowsHeight(e),this.grid.store.state.locale.code];if(Ur(l,this.summaryKey))return;this.summaryKey=l;for(let f of le){for(let p of this.canvasSummary[f])p.remove();this.canvasSummary[f]=[]}if(!t){this.summaryKey=null;return}let{columns:c}=this.grid,d=this.opts.rowHeight,u=c.displayed().filter(f=>!B(f.id));for(let f of le){let p=f==="center"?s.slice(a.first,a.last+1):c.region(f),m=t.map((b,g)=>{var v,k,x;let h=b.label!=null&&(k=(v=u.find(S=>{var E;return!(S.id in((E=b.columns)!=null?E:{}))}))==null?void 0:v.id)!=null?k:null,w=R("div","fg-row fg-summary-row",{role:"row"}),y=r||i==="top"?g*d:this.rowsHeight(e)+g*d;w.style.transform=`translateY(${y}px)`,w.style.height=`${d}px`;for(let S of p)w.append(this.summaryCell(S,b,(x=n[g])!=null?x:{},h));return w});r?this.summaryInners[f].replaceChildren(...m):(this.canvases[f].append(...m),this.canvasSummary[f]=m)}}summaryCell(e,t,n,r){var p,m,b,g,h;let i=R("div","fg-cell",{role:"gridcell"});i.style.left=`${e.left}px`,i.style.width=`${e.width}px`,i.dataset.col=e.id;let s=e.def,a=(p=s.align)!=null?p:s.type==="number"?"right":s.type==="boolean"?"center":"left";i.className=`fg-cell fg-align-${a}`;let l=(m=t.columns)==null?void 0:m[e.id];if(l===void 0)return e.id===r&&(i.textContent=(b=t.label)!=null?b:"",i.classList.add("fg-summary-label")),i;let c=n[e.id],d=Rt(l),u=this.grid.store.state.locale.code,f;if(c==null||c==="")f="";else if(typeof c=="string")f=c;else if(d.agg==="count")f=Pe(u).format(c);else{let w=(g=s.type)!=null?g:typeof c=="number"?"number":c instanceof Date?"date":void 0;f=wt(s,w,u,(h=d.format)!=null?h:s.format)(c)}return i.textContent=d.prefix&&f?`${d.prefix} ${f}`:f,i}get heightOf(){var t;let e=this.grid.options.getRowHeight;if(e)return(t=this.heightFn)!=null?t:this.heightFn=n=>{var r;try{return(r=e(n))!=null?r:void 0}catch{return}}}invalidateHeights(){this.heightOf&&this.heightsVersion++,this.rowHeights.size&&(this.rowHeights.clear(),this.measureAll=!0,this.heightsVersion++)}measureRows(){var i;let e=this.opts.rowHeight,t=new Map,n=this.measureAll?new Set(le.flatMap(s=>[...this.painted[s].keys()])):this.touched;this.measureAll=!1;for(let s of n){let a=this.grid.rowModel.getRow(s);if(!a||a.kind)continue;let l=e;for(let c of le){let d=this.painted[c].get(s);if(d)for(let u of d.el.querySelectorAll(".fg-cell-wrap"))u.classList.contains("fg-cell-merged")||u.classList.contains("fg-cell-merge-hidden")||(l=Math.max(l,Math.ceil(u.scrollHeight)))}t.set(s,l)}this.touched.clear();let r=!1;for(let[s,a]of t){let l=this.grid.rowModel.getRow(s).id,c=(i=this.rowHeights.get(l))!=null?i:e;Math.abs(c-a)>1&&(a===e?this.rowHeights.delete(l):this.rowHeights.set(l,a),r=!0)}r&&(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 c;let{grid:n}=this,r=n.store.state.locale,i=(c=t.level)!=null?c:0,s=!!n.options.treeData,a=n.canExpandDetail(t.data);if(!s&&!a&&!i)return;e.classList.add("fg-cell-lead"),e.style.setProperty("--fg-level",String(i));let l=[];if(s)if(t.hasChildren){let d=R("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&&d.setAttribute("aria-busy","true"),d.innerHTML=fo,l.push(d)}else l.push(R("span","fg-tree-spacer",{"aria-hidden":"true"}));if(a){let d=n.isDetailExpanded(t.data),u=R("button",d?"fg-detail-toggle fg-expanded":"fg-detail-toggle",{type:"button",tabindex:"-1","aria-expanded":String(d),"aria-label":d?r.collapseAll:r.expandAll});u.innerHTML=fo,l.push(u)}e.prepend(...l)}paintGroupRow(e,t,n,r,i){var c;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(((c=t.level)!=null?c:0)+1)),e.setAttribute("aria-expanded",String(s.expanded)),e.removeAttribute("aria-selected"),e.style.zIndex="";e.childElementCount>r.length;)e.lastElementChild.remove();for(;e.childElementCount<r.length;)e.append(R("div","fg-cell",{role:"gridcell"}));r.forEach((d,u)=>{var h,w,y,v,k,x,S;let f=e.children[u];f.style.left=`${d.left}px`,f.style.width=`${d.width}px`,f.style.top=f.style.height=f.style.bottom="",f.style.removeProperty("--fg-level"),f.dataset.col=d.id,f.setAttribute("aria-colindex",String(d.index+1));let p=i===d.id?" fg-cell-focused":"";if(d.id===ae){if(f.className=`fg-cell fg-cell-select${p}`,a.options.rowSelection!=="multiple"){f.replaceChildren();return}let E=a.groupSelection(t),A=R("input","fg-checkbox",{type:"checkbox",tabindex:"-1","aria-label":l.selectAllRows});A.checked=E==="all",A.indeterminate=E==="some",f.replaceChildren(A);return}if(d.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=R("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});E.innerHTML=fo;let A=(w=a.columns.getNode(s.colId))==null?void 0:w.def,F=R("span","fg-group-label"),C=_(s.value)?l.blanks:A?ne(A,l.code)(s.value):String(s.value),M=Pe(l.code),T=(y=s.count)!=null?y:s.aggregates?null:s.rows.length;F.textContent=`${(k=(v=A==null?void 0:A.header)!=null?v:A==null?void 0:A.field)!=null?k:s.colId}: ${C}${T==null?"":` (${M.format(T)})`}`,f.replaceChildren(E,F);return}let m=d.def,b=(x=m.align)!=null?x:m.type==="number"?"right":m.type==="boolean"?"center":"left";f.className=`fg-cell fg-align-${b}${p}`;let g=m.aggFunc&&!B(d.id)?a.groupAggregate(t,d.id):void 0;if(g==null||g==="")f.textContent="";else if(m.aggFunc==="count")f.textContent=Pe(l.code).format(g);else{let E=(S=m.type)!=null?S:typeof g=="number"?"number":g instanceof Date?"date":void 0;f.textContent=wt(m,E,l.code)(g)}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 i=t.detailOf,s=this.details.get(i.id);if(!s){s=R("div","fg-detail");try{let c=(l=(a=this.grid.options).detailRenderer)==null?void 0:l.call(a,{row:i.data,rowIndex:n-1});typeof c=="string"?s.innerHTML=c:c&&s.append(c)}catch{G("detailRenderer threw; showing an empty panel")}this.details.set(i.id,s)}s.style.left=`${this.geo.left}px`,s.style.width=`${this.geo.cw||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(r=>{let i=R("div","fg-cell",{role:"gridcell"});return i.style.left=`${r.left}px`,i.style.width=`${r.width}px`,i.dataset.col=r.id,B(r.id)||i.append(R("span","fg-skeleton",{"aria-hidden":"true"})),i}))}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(),i=e.getPageSize(),s=e.getPageCount(),a=e.rowModel.fullCount(),l=typeof t=="object"&&Array.isArray(t.pageSizes)?t.pageSizes.filter(w=>Number.isInteger(w)&&w>0):[],c=`${r}|${i}|${s}|${a}|${n.code}|${l.join(",")}`;if(this.pagerEl&&c===this.pagerKey)return;this.pagerKey=c,this.pagerEl||(this.pagerEl=R("div","fg-pager",{role:"navigation"}),this.pagerEl.addEventListener("click",w=>{var k;let y=(k=w.target.closest("button[data-action]"))==null?void 0:k.dataset.action,v=e.getPage();y==="first"?e.setPage(0):y==="prev"?e.setPage(v-1):y==="next"?e.setPage(v+1):y==="last"&&e.setPage(e.getPageCount()-1)}),this.pagerEl.addEventListener("change",w=>{let y=w.target;y.classList.contains("fg-pager-size")&&e.setPageSize(Number(y.value))})),this.pagerEl.setAttribute("aria-label",n.pageSize);let d=Pe(n.code),u=a?r*i+1:0,f=Math.min(a,(r+1)*i),p=R("span","fg-pager-range");p.textContent=n.pagerRange.replace("{from}",d.format(u)).replace("{to}",d.format(f)).replace("{total}",d.format(a));let m=[p,R("span","fg-pager-spacer")];if(l.length){let w=R("label","fg-pager-size-label");w.textContent=n.pageSize;let y=R("select","fg-pager-size");for(let v of[...new Set([...l,i])].sort((k,x)=>k-x)){let k=R("option");k.value=String(v),k.textContent=d.format(v),k.selected=v===i,y.append(k)}w.append(y),m.push(w)}let b=(w,y,v,k)=>{let x=R("button","fg-pager-btn",{type:"button","aria-label":v,title:v});return x.dataset.action=w,x.textContent=y,x.disabled=k,x},g=R("span","fg-pager-page",{"aria-live":"polite"});g.textContent=n.pageOf.replace("{page}",d.format(r+1)).replace("{pages}",d.format(s)),m.push(b("first","\xAB",n.firstPage,r===0),b("prev","\u2039",n.previousPage,r===0),g,b("next","\u203A",n.nextPage,r>=s-1),b("last","\xBB",n.lastPage,r>=s-1)),this.pagerEl.replaceChildren(...m)}showFreeBadge(){if(this.root.querySelector(".fg-free-badge"))return;let e=R("div","fg-free-badge",{"aria-hidden":"true"});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=R("span");t.textContent=`FreeGrid \xB7 ${this.grid.store.state.locale.freeBadge}`,e.append(t),this.root.append(e),this.freeBadge=e,this.placeFreeBadge()}placeFreeBadge(){var n,r;if(!this.freeBadge)return;let e=((n=this.statusEl)!=null&&n.isConnected?this.statusEl.offsetHeight:0)+((r=this.pagerEl)!=null&&r.isConnected?this.pagerEl.offsetHeight:0),t=e?`${e+22}px`:"";this.freeBadge.style.bottom!==t&&(this.freeBadge.style.bottom=t)}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 b,g,h,w,y;let{grid:t}=this;if(!this.cards){let v=R("div","fg-cards",{role:"list"}),k=R("div","fg-cards-canvas");v.append(k),this.main.insertBefore(v,this.overlay),v.addEventListener("scroll",()=>{this.schedule(),this.grid.events.emit("scroll",this.getScroll())},{passive:!0}),v.addEventListener("click",this.onCardClick),this.cards={scroller:v,canvas:k}}let{scroller:n,canvas:r}=this.cards,i=t.columns.displayed().filter(v=>!B(v.id)),s=Math.round(this.opts.rowHeight*.75),a=!!t.options.rowSelection,l=20+i.length*s+(a?s:0),c=10;r.style.height=`${e*(l+c)}px`;let d=Math.max(0,Math.floor(n.scrollTop/(l+c))-2),u=Math.min(e-1,Math.ceil((n.scrollTop+(n.clientHeight||800))/(l+c))+2),{selected:f,locale:p}=t.store.state,m=[];for(let v=d;v<=u;v++){let k=t.rowModel.getRow(v);if(!k)continue;let x=R("div",k.kind?"fg-card fg-card-other":f.has(k.id)?"fg-card fg-card-selected":"fg-card",{role:"listitem"});if(x.dataset.row=String(v),x.style.transform=`translateY(${v*(l+c)}px)`,x.style.height=`${l}px`,x.style.setProperty("--fg-card-line",`${s}px`),k.kind==="group"&&k.group){let S=(b=t.columns.getNode(k.group.colId))==null?void 0:b.def;x.textContent=`${(g=S==null?void 0:S.header)!=null?g:k.group.colId}: ${String((h=k.group.value)!=null?h:p.blanks)} (${k.group.rows.length})`}else if(!k.kind){if(a){let S=R("label","fg-card-head"),E=R("input","fg-card-check fg-checkbox",{type:"checkbox","aria-label":p.selectRow});E.checked=f.has(k.id),E.disabled=!t.rowSelectable(k.data),S.append(E,document.createTextNode(`#${v+1}`)),x.append(S)}for(let S of i){let E=R("div","fg-card-line"),A=R("span","fg-card-label");A.textContent=(y=(w=S.def.header)!=null?w:S.def.field)!=null?y:S.id;let F=R("span","fg-card-value");F.dataset.col=S.id;let C=j(S.def,k.data),M=ne(S.def,p.code)(C);if(S.def.renderer)try{let T=S.def.renderer({value:C,formatted:M,row:k.data,rowIndex:v,column:S.def});typeof T=="string"?F.innerHTML=T:F.replaceChildren(T)}catch{F.textContent=M}else F.textContent=M;E.append(A,F),x.append(E)}}m.push(x)}r.replaceChildren(...m)}dropDetail(e){e===void 0?this.details.clear():this.details.delete(e)}renderedRange(){return this.lastRange}measureText(e,t){let n=getComputedStyle(this.main),r=parseFloat(getComputedStyle(this.root).getPropertyValue("--fg-font-size"))||13;this.measureCtx===void 0&&(this.measureCtx=document.createElement("canvas").getContext("2d"));let i=this.measureCtx;return i?(i.font=`${t?600:400} ${r}px ${n.fontFamily||"sans-serif"}`,i.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(){var e;(e=this.filterRow)==null||e.destroy(),this.frame&&cancelAnimationFrame(this.frame),this.scroller.removeEventListener("scroll",this.onScroll),this.root.remove()}},ho=class{constructor(e){this.key=null;let t=n=>({left:R("div",`${n} ${n}-left`),center:R("div",`${n} ${n}-center`),right:R("div",`${n} ${n}-right`)});this.el=R("div",e,{role:"rowgroup"}),this.panes=t("fg-section-pane"),this.inners=t("fg-section-inner");for(let n of le)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 le){let i=e.regionWidth(r);r!=="center"&&(this.panes[r].style.width=`${i}px`,this.panes[r].hidden=i===0),this.inners[r].style.width=`${i}px`,this.inners[r].style.height=`${t}px`}this.panes.center.style.marginRight=`${n}px`}};function Ur(o,e){return!!e&&o.length===e.length&&o.every((t,n)=>t===e[n])}var Kr="http://www.w3.org/2000/svg";function ia(o,e,t,n){var h;let r=Math.max(20,t-16),i=Math.max(10,n-14),s=document.createElementNS(Kr,"svg");s.setAttribute("class","fg-sparkline"),s.setAttribute("width",String(r)),s.setAttribute("height",String(i)),s.setAttribute("viewBox",`0 0 ${r} ${i}`),s.setAttribute("aria-hidden","true");let a=(h=e.color)!=null?h:"var(--fg-accent)",l=e.type==="bar",c=o.reduce((w,y)=>Math.min(w,y),l?0:1/0),d=o.reduce((w,y)=>Math.max(w,y),l?0:-1/0);c===d&&(c-=1,d+=1);let u=d-c,f=w=>i-1-(w-c)/u*(i-2),p=(w,y)=>{let v=document.createElementNS(Kr,w);for(let[k,x]of Object.entries(y))v.setAttribute(k,String(x));return s.append(v),v};if(e.type==="bar"){let w=r/o.length;return o.forEach((y,v)=>p("rect",{x:v*w+1,y:Math.min(f(y),f(0)),width:Math.max(1,w-2),height:Math.max(1,Math.abs(f(y)-f(0))),fill:y<0?"#ef4444":a})),s}let m=o.length>1?(r-2)/(o.length-1):0,b=o.map((w,y)=>`${1+y*m},${f(w)}`).join(" ");e.type==="area"&&p("polygon",{points:`1,${i} ${b} ${1+(o.length-1)*m},${i}`,fill:a,"fill-opacity":.2}),p("polyline",{points:b,fill:"none",stroke:a,"stroke-width":1.5,"stroke-linejoin":"round"});let g=o.length-1;return p("circle",{cx:1+g*m,cy:f(o[g]),r:2,fill:a}),s}var sa=4,en=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(i=>i!==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,i=e.clientX,s=!1,a=c=>{!s&&Math.abs(c.clientX-i)<sa||(s=!0,n.classList.add("fg-dragging"))},l=c=>{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(p=>p!==n).filter(p=>{let m=p.getBoundingClientRect();return c.clientX>m.left+m.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=R("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=R("span","fg-group-hint");r.textContent=t.groupPanelHint,this.el.replaceChildren(r);return}this.el.replaceChildren(...n.map((r,i)=>{var d,u,f;let s=(d=e.columns.getNode(r))==null?void 0:d.def,a=R("span","fg-group-chip");a.dataset.col=r;let l=R("span","fg-group-chip-label");l.textContent=(f=(u=s==null?void 0:s.header)!=null?u:s==null?void 0:s.field)!=null?f:r;let c=R("button","fg-group-chip-remove",{type:"button","aria-label":`${t.ungroup}: ${l.textContent}`});if(c.textContent="\xD7",a.append(l,c),i<n.length-1){let p=R("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 it=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(i){console.error("[FreeGrid] event listener threw",i)}}clear(){this.listeners.clear()}};function ue(o){let e=o.getRootNode();return typeof ShadowRoot!="undefined"&&e instanceof ShadowRoot?e:document.body}function kt(o,e,t){var r;let n=o.getRootNode();return(r=typeof n.elementFromPoint=="function"?n.elementFromPoint(e,t):null)!=null?r:document.elementFromPoint(e,t)}function tn(o){var t;return(t=o.getRootNode().activeElement)!=null?t:document.activeElement}function xe(o,...e){let t=typeof o.composedPath=="function"?o.composedPath():[];return t.length?e.some(n=>!!n&&t.includes(n)):e.some(n=>!!n&&n.contains(o.target))}var nn=new Map,po=new WeakMap,_r=o=>o?po.get(o):void 0,Xr=o=>o?nn.get(o):void 0;var aa={Enter:"edit",F2:"edit",Delete:"clear",Backspace:"clear","Ctrl+Z":"undo","Ctrl+Y":"redo","Ctrl+Shift+Z":"redo","Ctrl+F":"find","Alt+ArrowDown":"columnMenu"};function la(o){let e=[];return(o.ctrlKey||o.metaKey)&&e.push("Ctrl"),o.altKey&&e.push("Alt"),o.shiftKey&&o.key.length>1&&e.push("Shift"),o.shiftKey&&o.key.length===1&&(o.ctrlKey||o.metaKey)&&e.push("Shift"),e.push(o.key.length===1?o.key.toUpperCase():o.key),e.join("+")}var da=3;function ca(o,e){return o.renderer.rtl?e.key==="ArrowLeft"?"ArrowRight":e.key==="ArrowRight"?"ArrowLeft":e.key:e.key}function Jr(o){var F;let{renderer:e}=o,t=e.bodyEl,n=e.root,r=C=>ca(o,C),i="mouse",s=0,a=null,l=!1,c=C=>{let M=e.cellAt(C.target);if(!M)return null;let T=o.rowModel.getRow(M.rowIndex),L=o.columns.getColumn(M.colId);if(!T||!L)return null;let I=B(L.id)?void 0:j(L.def,T.data);return{row:T.data,rowIndex:M.rowIndex,colId:M.colId,value:I,event:C}},d=C=>{var I,D;let M=(D=(I=C.target).closest)==null?void 0:D.call(I,".fg-group-toggle, .fg-tree-toggle, .fg-detail-toggle"),T=M&&e.cellAt(C.target);if(!T)return!1;e.gridEl.focus({preventScroll:!0}),o.setFocus(T.rowIndex,T.colId),o.setRange(null);let L=o.rowModel.getRow(T.rowIndex);return M.classList.contains("fg-detail-toggle")?o.setDetailExpanded(L.data,!o.isDetailExpanded(L.data)):o.toggleRow(T.rowIndex),!0},u=C=>{var P;if(d(C))return;let M=o.store.state.focus,T=e.cellAt(C.target);if(T&&((P=o.rowModel.getRow(T.rowIndex))!=null&&P.kind)){T.colId===ae&&o.rowModel.getRow(T.rowIndex).kind==="group"&&o.toggleGroupSelection(o.rowModel.getRow(T.rowIndex)),e.gridEl.focus({preventScroll:!0}),o.setFocus(T.rowIndex,T.colId),o.setRange(null);return}let L=c(C);if(!L)return;if(e.gridEl.focus({preventScroll:!0}),L.colId===Ie){let $=o.columns.displayed().filter(O=>!B(O.id));$.length&&(o.setFocus(L.rowIndex,$[0].id),o.rangesOn()&&o.setRange({start:{rowIndex:L.rowIndex,colId:$[0].id},end:{rowIndex:L.rowIndex,colId:$[$.length-1].id}}));return}let I=l;l=!1;let D=o.store.state.focus,N=L.colId===ae;if(!I)if(C.shiftKey&&D&&!N&&!B(D.colId)&&o.rangesOn())o.setRange({start:D,end:{rowIndex:L.rowIndex,colId:L.colId}},!0);else if((C.ctrlKey||C.metaKey)&&!N&&!B(L.colId)&&o.rangesOn()){let $={rowIndex:L.rowIndex,colId:L.colId};o.addRange({start:$,end:$}),o.setFocus(L.rowIndex,L.colId)}else o.setFocus(L.rowIndex,L.colId),o.setRange(null);o.options.rowSelection&&!I&&(N||o.options.rowClickSelection!==!1)&&o.selectFromClick(L.rowIndex,N||C.ctrlKey||C.metaKey,C.shiftKey),o.events.emit("cellClick",L),i==="touch"&&!I&&M&&M.rowIndex===L.rowIndex&&M.colId===L.colId&&o.editor.canEdit(L.rowIndex,L.colId)&&(o.columns.getColumn(L.colId).def.type==="boolean"?o.applyEdit(L.rowIndex,L.colId,L.value!==!0):o.editor.start(L.rowIndex,L.colId))},f=C=>{var D,N;if((N=(D=C.target).closest)!=null&&N.call(D,"button"))return;let M=e.cellAt(C.target),T=M&&o.rowModel.getRow(M.rowIndex);if((T==null?void 0:T.kind)==="group"){o.toggleRow(M.rowIndex);return}if(T!=null&&T.kind)return;let L=c(C);if(!L||(o.events.emit("cellDoubleClick",L),!o.editor.canEdit(L.rowIndex,L.colId)))return;o.columns.getColumn(L.colId).def.type==="boolean"?o.applyEdit(L.rowIndex,L.colId,L.value!==!0):o.editor.start(L.rowIndex,L.colId)},p={...aa};for(let[C,M]of Object.entries((F=o.options.keymap)!=null?F:{}))p[C]=M===!1?"none":M;let m=C=>{var I,D;let M=o.store.state.focus,T=p[la(C)];if(T==="none")return!1;switch(T){case"edit":return!M||!o.editor.canEdit(M.rowIndex,M.colId)||o.columns.getColumn(M.colId).def.type==="boolean"?!1:(o.editor.start(M.rowIndex,M.colId),!0);case"clear":return o.clearCells(),!0;case"undo":return o.undo(),!0;case"redo":return o.redo(),!0;case"copy":return o.copyToClipboard(!1),!0;case"cut":return o.cutToClipboard(),!0;case"selectAll":return o.selectAllCells(),!0;case"find":return o.options.findBar===!1||!o.paid?!1:(o.finder.openBar(),!0);case"paste":return(D=(I=navigator.clipboard)==null?void 0:I.readText)==null||D.call(I).then(N=>o.pasteText(N),()=>{}),!0;case"columnMenu":return o.menu.openAtFocus()}if(!M||!o.editor.canEdit(M.rowIndex,M.colId))return!1;let L=o.columns.getColumn(M.colId).def;if(C.key===" "&&L.type==="boolean"&&!C.ctrlKey&&!C.metaKey){let N=o.rowModel.getRow(M.rowIndex).data;return o.applyEdit(M.rowIndex,M.colId,N[L.field]!==!0),!0}return C.key.length===1&&C.key!==" "&&!C.ctrlKey&&!C.metaKey&&!C.altKey&&L.type!=="boolean"?(o.editor.start(M.rowIndex,M.colId,C.key),!0):!1},b=C=>{let M=o.store.state.focus;C.isComposing||C.key!=="Process"||C.ctrlKey||C.metaKey||C.altKey||!M||!o.editor.canEdit(M.rowIndex,M.colId)||o.columns.getColumn(M.colId).def.type!=="boolean"&&o.editor.start(M.rowIndex,M.colId,"")},g=C=>{var N,P,$;let M=o.store.state.focus;if(!M||C.ctrlKey||C.metaKey||C.altKey||C.shiftKey)return!1;let T=o.rowModel.getRow(M.rowIndex);if(!o.isExpandable(T))return!1;let L=T.kind==="group";if(!L&&M.colId!==((N=o.columns.displayed().find(O=>!B(O.id)))==null?void 0:N.id))return!1;let I=!!(($=(P=T.group)==null?void 0:P.expanded)!=null?$:T.expanded),D=o.expandKey(T);if(L&&(C.key==="Enter"||C.key===" "))o.setGroupExpanded(D,!I);else if(r(C)==="ArrowRight"&&!I)o.setGroupExpanded(D,!0);else if(r(C)==="ArrowLeft"&&I)o.setGroupExpanded(D,!1);else return!1;return!0},h=C=>{let M=e.cellAt(C.target);if(!M||M.colId!==He)return!1;C.preventDefault();let T=o.rowModel.getRow(M.rowIndex);if(!T||T.kind||!o.canMoveRows())return!0;let L=T.data,I=R("div","fg-row-drop-marker"),D=null;n.classList.add("fg-row-dragging");let N=$=>{var z,U;let O=kt(n,$.clientX,$.clientY),H=O==null?void 0:O.closest(".fg-root"),q=H===n?o:Xr(H),K=o.dragOptions.group;if(D=null,I.remove(),!q||!H||q!==o&&(!K||q.dragOptions.group!==K||!q.options.rowDrag))return;let Y=O.closest(".fg-row[data-row]"),W=Y==null?void 0:Y.getBoundingClientRect(),Q=null,J="after",Z;if(Y&&W){let ee=q.rowModel.getRow(Number(Y.dataset.row));if(!ee||ee.kind==="group")return;Q=(U=(z=ee.detailOf)==null?void 0:z.data)!=null?U:ee.data;let oe=($.clientY-W.top)/W.height;ee.kind==="detail"?J="after":q.options.treeData?J=oe<.25?"before":oe>.75?"after":"inside":J=oe<.5?"before":"after",Z=J==="before"?W.top:W.bottom}else{if(!O.closest(".fg-body"))return;let ee=H.querySelectorAll(".fg-body-pane-center .fg-row[data-row]");Z=ee.length?Math.max(...[...ee].map(oe=>oe.getBoundingClientRect().bottom)):H.querySelector(".fg-body").getBoundingClientRect().top}if(!q.canDropRow(L,Q,J,o))return;D={into:q,target:Q,position:J};let de=H.getBoundingClientRect().top;I.classList.toggle("fg-row-drop-inside",J==="inside"),I.style.top=`${J==="inside"?W.top-de:Z-de-1}px`,I.style.height=J==="inside"?`${W.height}px`:"",H.append(I)},P=()=>{window.removeEventListener("pointermove",N),window.removeEventListener("pointerup",P),window.removeEventListener("pointercancel",P),n.classList.remove("fg-row-dragging"),I.remove(),D&&D.into.dropRow(L,D.target,D.position,o)};return window.addEventListener("pointermove",N),window.addEventListener("pointerup",P),window.addEventListener("pointercancel",P),!0},w=C=>{let M=e.cellAt(C.target);if(!M)return;let T=C.clientX,L=C.clientY,I=()=>{clearTimeout(s),window.removeEventListener("pointermove",D),window.removeEventListener("pointerup",I),window.removeEventListener("pointercancel",I),a===I&&(a=null)},D=N=>{Math.hypot(N.clientX-T,N.clientY-L)>8&&I()};clearTimeout(s),s=window.setTimeout(()=>{I(),o.contextMenu.enabled()&&(l=!0,B(M.colId)||(o.setFocus(M.rowIndex,M.colId),o.rangeContains(M.rowIndex,M.colId)||o.setRange({start:M,end:M})),o.contextMenu.open(T,L,M.rowIndex,M.colId))},550),a==null||a(),a=I,window.addEventListener("pointermove",D),window.addEventListener("pointerup",I),window.addEventListener("pointercancel",I)},y=C=>{if(i=C.pointerType||"mouse",i==="touch"){w(C);return}if(C.button===0&&h(C)||!o.rangesOn()||C.button!==0||C.shiftKey||C.target.closest("input, a, button"))return;let M=e.cellAt(C.target);if(!M||B(M.colId))return;let T=C.clientX,L=C.clientY,I=C.ctrlKey||C.metaKey,D=!1,N=$=>{if(!D&&Math.hypot($.clientX-T,$.clientY-L)<da)return;let O=e.cellAt(kt(n,$.clientX,$.clientY));!O||B(O.colId)||(D||(D=!0,n.classList.add("fg-range-dragging"),I&&o.addRange({start:M,end:M}),o.setFocus(M.rowIndex,M.colId)),o.setRange({start:M,end:O},I))},P=()=>{window.removeEventListener("pointermove",N),window.removeEventListener("pointerup",P),window.removeEventListener("pointercancel",P),n.classList.remove("fg-range-dragging"),D&&(l=!0),a===P&&(a=null)};a==null||a(),a=P,window.addEventListener("pointermove",N),window.addEventListener("pointerup",P),window.addEventListener("pointercancel",P)},v=C=>{var H,q;if(C.target!==n&&C.target!==e.gridEl)return;let M=o.columns.displayed(),T=o.rowModel.getRowCount();if(!M.length||!T)return;if(me(C)){b(C);return}if(g(C)){C.preventDefault();return}if(m(C)){C.preventDefault();return}let L=o.store.state.focus,I=C.ctrlKey||C.metaKey;if(C.key==="Escape"&&o.store.state.range){C.preventDefault(),o.setRange(null);return}if(I&&C.key.toLowerCase()==="a"&&o.rangesOn()){C.preventDefault(),o.selectAllCells();return}if(C.key==="ContextMenu"||C.key==="F10"&&C.shiftKey){C.preventDefault(),o.contextMenu.openAtFocus();return}if(C.key===" "&&L&&o.options.rowSelection){C.preventDefault(),o.selectFromClick(Math.min(L.rowIndex,T-1),!0,C.shiftKey);return}let D={rows:T,cols:M.length,pageRows:e.pageRows()},N=M.findIndex(K=>!B(K.id));if(o.rangesOn()&&C.shiftKey&&C.key!=="Tab"&&Jn.has(C.key)){let K=L!=null?L:{rowIndex:0,colId:M[N].id},Y=o.store.state.range,W=(H=Y==null?void 0:Y.end)!=null?H:K,Q={rowIndex:Math.min(W.rowIndex,T-1),colIndex:Math.max(0,M.findIndex(de=>de.id===W.colId))},J=Yn(r(C),{ctrl:I,shift:!1},Q,D);if(!J)return;C.preventDefault();let Z=M[Math.max(N,J.colIndex)].id;L||o.setFocus(K.rowIndex,K.colId),o.setRange({start:(q=Y==null?void 0:Y.start)!=null?q:K,end:{rowIndex:J.rowIndex,colId:Z}}),e.ensureVisible(J.rowIndex,Z);return}let $;if(!L)$=Jn.has(C.key)&&C.key!=="Tab"?{rowIndex:0,colIndex:0}:null;else{let K=Math.max(0,M.findIndex(Y=>Y.id===L.colId));$=Yn(r(C),{ctrl:I,shift:C.shiftKey},{rowIndex:Math.min(L.rowIndex,T-1),colIndex:K},D)}if(!$)return;C.preventDefault();let O=M[$.colIndex].id;o.setFocus($.rowIndex,O),o.setRange(null),e.ensureVisible($.rowIndex,O)},k=C=>{var M,T;return(T=(M=C.target)==null?void 0:M.closest)==null?void 0:T.call(M,".fg-editor, input, textarea, select, [contenteditable]")},x=C=>{var M,T;return((T=(M=C.target)==null?void 0:M.closest)==null?void 0:T.call(M,".fg-root"))!==n},S=C=>{if(k(C)||x(C))return;let M=o.copyText(!1);!M||!C.clipboardData||(C.clipboardData.setData("text/plain",M),C.preventDefault())},E=C=>{if(k(C)||x(C))return;let M=o.copyText(!1);!M||!C.clipboardData||(C.clipboardData.setData("text/plain",M),C.preventDefault(),o.clearCells(!0))},A=C=>{var T;if(k(C)||x(C))return;let M=(T=C.clipboardData)==null?void 0:T.getData("text/plain");M&&(C.preventDefault(),o.pasteText(M))};return t.addEventListener("click",u),t.addEventListener("dblclick",f),t.addEventListener("pointerdown",y),n.addEventListener("keydown",v),n.addEventListener("copy",S),n.addEventListener("paste",A),n.addEventListener("cut",E),()=>{clearTimeout(s),a==null||a(),t.removeEventListener("click",u),t.removeEventListener("dblclick",f),t.removeEventListener("pointerdown",y),n.removeEventListener("keydown",v),n.removeEventListener("copy",S),n.removeEventListener("paste",A),n.removeEventListener("cut",E)}}var on=class{constructor(e){this.grid=e;this.open=new Set;this.el=R("div","fg-filters-panel")}refresh(){var l,c;let{grid:e}=this,t=e.store.state.locale,n=e.store.state.filters,r=R("div","fg-filters-head"),i=R("span","fg-filters-title");i.textContent=t.filters;let s=R("button","fg-btn fg-filters-clear",{type:"button"});s.textContent=t.clearFilters,s.disabled=!Object.keys(n).length,s.addEventListener("click",()=>{for(let d of Object.keys(e.store.state.filters))e.setFilter(d,null)}),r.append(i,s);let a=R("div","fg-filters-list");for(let d of e.columns.displayed()){if(B(d.id)||!ge(d.def))continue;let u=R("details",n[d.id]?"fg-filters-item fg-filter-on":"fg-filters-item");u.dataset.col=d.id,u.open=this.open.has(d.id);let f=R("summary");f.textContent=(c=(l=d.def.header)!=null?l:d.def.field)!=null?c:d.id,u.append(f);let p=()=>{if(u.querySelector(".fg-filter"))return;let m=e.menu.filterSection(d.id,()=>{});m&&u.append(m)};u.open&&p(),u.addEventListener("toggle",()=>{u.open?(this.open.add(d.id),p()):this.open.delete(d.id)}),a.append(u)}this.el.replaceChildren(r,a)}};var ua=["sum","avg","min","max","count"],rn=class{constructor(e){this.grid=e;this.draft={rows:[],columns:[],values:[]};this.el=R("div","fg-pivot-panel")}apply(){this.grid.getPivot()?this.grid.setPivot(this.draft):this.refresh()}refresh(){var c;let{grid:e}=this,t=e.store.state.locale,n=e.getPivot();n&&(this.draft={rows:[...n.rows],columns:[...(c=n.columns)!=null?c:[]],values:n.values.map(d=>({colId:d.colId,aggFunc:typeof d.aggFunc=="string"?d.aggFunc:"sum"}))});let r=e.sourceLeaves(),i=d=>{var f,p,m;let u=(f=r.find(b=>b.id===d))==null?void 0:f.def;return(m=(p=u==null?void 0:u.header)!=null?p:u==null?void 0:u.field)!=null?m:d},s=R("label","fg-pivot-mode"),a=R("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=(d,u)=>{let f=R("div","fg-pivot-zone");f.dataset.zone=d;let p=R("div","fg-pivot-zone-title");p.textContent=u;let m=R("div","fg-pivot-chips"),b=d==="values"?this.draft.values.map(w=>w.colId):this.draft[d];b.forEach((w,y)=>{let v=R("span","fg-group-chip");v.dataset.col=w;let k=R("span","fg-group-chip-label");if(k.textContent=i(w),v.append(k),d==="values"){let S=R("select","fg-pivot-agg",{"aria-label":`${i(w)} ${t.pivotValues}`});for(let E of ua){let A=R("option");A.value=E,A.textContent=t[E],S.append(A)}S.value=this.draft.values[y].aggFunc,S.addEventListener("change",()=>{this.draft.values[y].aggFunc=S.value,this.apply()}),v.append(S)}let x=R("button","fg-group-chip-remove",{type:"button","aria-label":`${t.ungroup}: ${i(w)}`});x.textContent="\xD7",x.addEventListener("click",()=>{d==="values"?this.draft.values.splice(y,1):this.draft[d].splice(y,1),this.apply()}),v.append(x),m.append(v)});let g=R("select","fg-pivot-add",{"aria-label":`${u}: ${t.addColumn}`}),h=R("option");h.value="",h.textContent=t.addColumn,g.append(h);for(let w of r){if(b.includes(w.id)||d==="values"&&w.def.type!=="number")continue;let y=R("option");y.value=w.id,y.textContent=i(w.id),g.append(y)}return g.addEventListener("change",()=>{g.value&&(d==="values"?this.draft.values.push({colId:g.value,aggFunc:"sum"}):this.draft[d].push(g.value),this.apply())}),f.append(p,m,g),f};this.el.replaceChildren(s,l("rows",t.pivotRows),l("columns",t.pivotColumns),l("values",t.pivotValues))}};var fa=4,sn=o=>!B(o.id)&&(o.children?o.children.some(sn):o.def.chooser!==!1),go=o=>{var e,t;return(t=(e=o.def.header)!=null?e:o.def.field)!=null?t:o.id},an=class{constructor(e){this.grid=e;this.collapsed=new Set;this.el=R("div","fg-chooser"),this.search=R("input","fg-input fg-chooser-search",{type:"search"});let t=R("label","fg-chooser-all");this.allBox=R("input","fg-checkbox",{type:"checkbox"}),this.allText=R("span"),t.append(this.allBox,this.allText),this.list=R("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,i=this.nodeOf(r);i&&this.setVisible(this.leavesOf(i),r.checked)}),this.list.addEventListener("click",n=>{let r=n.target.closest(".fg-chooser-caret"),i=r&&this.nodeOf(r);i&&(this.collapsed.has(i.id)?this.collapsed.delete(i.id):this.collapsed.add(i.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 c of a)!sn(c)||t&&!this.subtreeMatches(c,t)||(n.push(this.item(c,l)),c.children&&(t||!this.collapsed.has(c.id))&&r(c.children,l+1))};r(this.grid.columns.roots(),0),this.list.replaceChildren(...n);let i=this.matchingLeaves(),s=i.filter(a=>!a.hide).length;this.allBox.checked=i.length>0&&s===i.length,this.allBox.indeterminate=s>0&&s<i.length}query(){return this.search.value.trim().toLowerCase()}subtreeMatches(e,t){for(let n=e;n;n=n.parent)if(go(n).toLowerCase().includes(t))return!0;return!!e.children&&e.children.some(n=>sn(n)&&this.subtreeMatches(n,t))}leavesOf(e){return sn(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=R("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=R("span","fg-chooser-handle",{"aria-hidden":"true"});if(r.textContent="\u22EE\u22EE",n.append(r),e.children){let c=!this.collapsed.has(e.id),d=R("button","fg-chooser-caret",{type:"button",tabindex:"-1","aria-hidden":"true"});d.textContent=c?"\u25BE":"\u25B8",n.setAttribute("aria-expanded",String(c)),n.append(d)}let i=this.leavesOf(e),s=i.filter(c=>!c.hide).length,a=R("input","fg-checkbox",{type:"checkbox","aria-label":go(e)});a.checked=i.length>0&&s===i.length,a.indeterminate=s>0&&s<i.length,a.disabled=i.every(c=>c.def.lockVisible);let l=R("span","fg-chooser-label");if(l.textContent=go(e),n.append(a,l),!e.children&&e.pinned){let c=R("span","fg-chooser-pin");c.textContent=e.pinned==="left"?"\u21E4":"\u21E5",n.append(c)}return n}onPointerDown(e){let t=e.target.closest(".fg-chooser-handle"),n=t==null?void 0:t.closest(".fg-chooser-item"),r=n&&this.nodeOf(n);if(!n||!r||e.button!==0)return;e.preventDefault();let i=new Set(this.grid.columns.siblings(r.id).map(p=>p.id).filter(p=>p!==r.id)),s=[...this.list.querySelectorAll(".fg-chooser-item")].filter(p=>i.has(p.dataset.col)),a=e.clientY,l=!1,c=-1,d=R("div","fg-chooser-marker"),u=p=>{if(!l){if(Math.abs(p.clientY-a)<fa||!s.length)return;l=!0,n.classList.add("fg-dragging"),this.list.append(d)}c=s.filter(g=>{let h=g.getBoundingClientRect();return p.clientY>h.top+h.height/2}).length;let m=this.list.getBoundingClientRect().top-this.list.scrollTop,b=c<s.length?s[c].getBoundingClientRect().top:s[s.length-1].getBoundingClientRect().bottom;d.style.top=`${b-m-1}px`},f=()=>{if(window.removeEventListener("pointermove",u),window.removeEventListener("pointerup",f),d.remove(),n.classList.remove("fg-dragging"),!l||c<0)return;let p=this.grid.columns.siblings(r.id).map(g=>g.id).filter(g=>g!==r.id),m=c<s.length?p.indexOf(s[c].dataset.col):p.indexOf(s[s.length-1].dataset.col)+1;m=Math.max(p.filter(B).length,m);let b=this.grid.columns.siblings(r.id).findIndex(g=>g.id===r.id);m!==b&&(this.grid.columns.move(r.id,m),this.grid.layoutChanged(),this.grid.events.emit("columnMove",{colId:r.id,toIndex:m}))};window.addEventListener("pointermove",u),window.addEventListener("pointerup",f)}},ln=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=R("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=R("div","fg-chooser-head"),r=R("span","fg-menu-title");r.textContent=e.chooseColumns;let i=R("button","fg-chooser-close",{type:"button","aria-label":e.close});i.textContent="\xD7",i.addEventListener("click",()=>this.close()),n.append(r,i),this.panel=new an(this.grid),t.append(n,this.panel.el),ue(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=d=>{xe(d,t)||this.close()},c=d=>{d.key==="Escape"&&(this.close(),this.grid.renderer.gridEl.focus())};document.addEventListener("pointerdown",l,!0),document.addEventListener("keydown",c,!0),this.off.push(()=>document.removeEventListener("pointerdown",l,!0),()=>document.removeEventListener("keydown",c,!0)),t.querySelector(".fg-chooser-search").focus()}refresh(){var e;(e=this.panel)==null||e.refresh()}close(){var e;for(let t of this.off)t();this.off=[],(e=this.popup)==null||e.remove(),this.popup=null,this.panel=null}},dn=class{constructor(e,t,n=["columns","filters"]){this.grid=e;this.tabs=new Map;this.el=R("div","fg-sidebar"),this.panelHost=R("div","fg-sidebar-panel"),this.columns=new an(e),this.filters=new on(e),this.pivot=new rn(e);let r=n.filter(s=>s==="columns"||s==="filters"||s==="pivot");r.length||r.push("columns"),this.current=r[0];let i=R("div","fg-sidebar-tabs",{role:"tablist"});for(let s of r){let a=R("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),i.append(a)}this.el.append(this.panelHost,i),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(){this.el.classList.toggle("fg-sidebar-open",this.isOpen);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 ha=()=>typeof navigator!="undefined"&&/Mac|iPhone|iPad/.test(navigator.platform||navigator.userAgent||""),st=o=>ha()?`\u2318${o}`:`Ctrl+${o}`,cn=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()}enabled(){return this.grid.options.contextMenu!==!1&&this.grid.allow("contextMenu")}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 s=r.dataset.col;if(!s||B(s)||r.classList.contains("fg-header-group"))return;e.preventDefault(),this.close(),t.menu.open(s,r);return}let i=t.renderer.cellAt(n);!i||!this.enabled()||(e.preventDefault(),t.renderer.gridEl.focus({preventScroll:!0}),!B(i.colId)&&!t.rangeContains(i.rowIndex,i.colId)&&(t.setFocus(i.rowIndex,i.colId),t.setRange({start:i,end:i})),this.open(e.clientX,e.clientY,i.rowIndex,i.colId))}openAtFocus(){var i;let e=this.grid.store.state.focus;if(!e||!this.enabled())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=(i=n==null?void 0:n.getBoundingClientRect())!=null?i: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),i=r==null?void 0:r.def,s=!!i&&!B(e),a=t.store.state.selected.size?t.shownSelectedRows():[],l=[{label:n.copy,shortcut:st("C"),action:()=>t.copyToClipboard(!1)},{label:n.copyWithHeaders,action:()=>t.copyToClipboard(!0)},{label:n.cut,shortcut:st("X"),action:()=>t.cutToClipboard()},...a.length?[{label:n.copyRows,action:()=>t.copyToClipboard(!1,!0)}]:[],{label:n.paste,shortcut:st("V"),action:()=>this.pasteFromClipboard()}];(t.history.canUndo()||t.history.canRedo())&&l.push("separator",{label:n.undo,shortcut:st("Z"),action:()=>t.undo(),disabled:!t.history.canUndo()},{label:n.redo,shortcut:st("Y"),action:()=>t.redo(),disabled:!t.history.canRedo()}),t.options.rowSelection&&a.length&&l.push({label:n.deleteRows,action:()=>t.removeRows(a)}),s&&(l.push("separator",{label:n.autosizeThis,action:()=>t.autoSize([e])}),i.lockVisible||l.push({label:n.hideColumn,action:()=>t.setColumnsVisible([e],!1)}),l.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})),l.push("separator"),t.options.rowSelection==="multiple"&&l.push({label:n.selectAllRows,action:()=>t.api.selectAll()}),l.push({label:n.chooseColumns,action:()=>t.chooser.open()});let c=t.rangeBounds();return c&&(c.r2>c.r1||c.c2>c.c1)&&t.paid&&l.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"})}),l.push("separator",{label:n.exportCsv,action:()=>t.api.exportCsv()},...t.paid?[{label:n.exportExcel,action:()=>t.api.exportXlsx()}]:[],{label:n.exportJson,action:()=>t.api.exportJson()},...t.paid?[{label:n.exportPdf,action:()=>t.api.exportPdf()}]:[]),t.options.advancedFilter!==!1&&!t.options.pivot&&t.paid&&l.push("separator",{label:`${n.advancedFilter}\u2026`,action:()=>t.filterBuilder.open()}),l.push("separator",{label:n.print,action:()=>t.api.print()}),l}pasteFromClipboard(){let e=typeof navigator!="undefined"?navigator.clipboard:void 0,t=()=>this.grid.toast(this.grid.store.state.locale.pasteHint.replace("Ctrl+V",st("V")));if(!(e!=null&&e.readText))return t();e.readText().then(n=>this.grid.pasteText(n),t)}open(e,t,n,r){var k,x,S;this.close(),this.grid.menu.close();let{grid:i}=this,s=i.rowModel.getRow(n),a=i.columns.getColumn(r),l=this.defaultItems(r),c={row:(k=s==null?void 0:s.data)!=null?k:null,rowIndex:n,colId:r,value:s&&a&&!B(r)?j(a.def,s.data):void 0,defaultItems:l},d=i.options.contextMenu,u=l;if(typeof d=="function")try{u=d(c)}catch{u=l}let f=i.store.state.locale,p=R("div",`fg-menu fg-context-menu fg-theme-${i.store.state.theme}`,{role:"menu","aria-label":f.columnMenu});i.applyFontTo(p);let m=!0;for(let E of u){if(E==="separator"){m||p.append(R("div","fg-cm-sep",{role:"separator"})),m=!0;continue}let A=R("button","fg-menu-item fg-cm-item",{type:"button",role:"menuitem"}),F=R("span","fg-cm-label");if(F.textContent=E.label,A.append(F),E.shortcut){let C=R("span","fg-cm-shortcut");C.textContent=E.shortcut,A.append(C)}A.disabled=!!E.disabled,A.addEventListener("click",()=>{this.close(),E.action()}),p.append(A),m=!1}(x=p.lastElementChild)!=null&&x.classList.contains("fg-cm-sep")&&p.lastElementChild.remove(),ue(this.grid.renderer.root).append(p);let b=p.offsetWidth||220,g=p.offsetHeight||300;p.style.left=`${Math.max(4,Math.min(e,window.innerWidth-b-4))}px`;let h=Math.max(4,Math.min(t,window.innerHeight-g-4));p.style.top=`${h}px`,p.style.maxHeight=`${Math.max(120,window.innerHeight-h-8)}px`,this.popup=p;let w=E=>{xe(E,p)||this.close()},y=E=>{if(E.key==="Escape"){this.close(),i.renderer.gridEl.focus();return}if(E.key!=="ArrowDown"&&E.key!=="ArrowUp")return;let A=[...p.querySelectorAll("button:not(:disabled)")],F=A.indexOf(tn(p)),C=A[(F+(E.key==="ArrowDown"?1:A.length-1)+A.length)%A.length];C==null||C.focus(),E.preventDefault()},v=()=>this.close();document.addEventListener("pointerdown",w,!0),document.addEventListener("keydown",y,!0),i.renderer.scroller.addEventListener("scroll",v,{passive:!0}),this.off.push(()=>document.removeEventListener("pointerdown",w,!0),()=>document.removeEventListener("keydown",y,!0),()=>i.renderer.scroller.removeEventListener("scroll",v)),(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 un=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,i=n.renderer.root,s=l=>{let c=n.renderer.cellAt(kt(n.renderer.root,l.clientX,l.clientY)),d=c&&n.columns.getColumn(c.colId);if(!c||!d||B(d.id))return;let u=c.rowIndex>t.r2?c.rowIndex-t.r2:c.rowIndex<t.r1?c.rowIndex-t.r1:0,f=d.index>t.c2?d.index-t.c2:d.index<t.c1?d.index-t.c1:0;!u&&!f?r=null:Math.abs(u)>=Math.abs(f)?r={r1:Math.min(t.r1,c.rowIndex),r2:Math.max(t.r2,c.rowIndex),c1:t.c1,c2:t.c2}:r={r1:t.r1,r2:t.r2,c1:Math.min(t.c1,d.index),c2:Math.max(t.c2,d.index)},this.showPreview(r)},a=()=>{if(window.removeEventListener("pointermove",s),window.removeEventListener("pointerup",a),this.preview.remove(),i.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}})};i.classList.add("fg-range-dragging"),window.addEventListener("pointermove",s),window.addEventListener("pointerup",a)};this.handle=R("div","fg-fill-handle",{"aria-hidden":"true"}),this.preview=R("div","fg-fill-preview",{"aria-hidden":"true"}),this.handle.addEventListener("pointerdown",this.onDown)}enabled(){return this.grid.options.fillHandle!==!1&&this.grid.rangesOn()}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||B(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 i=this.grid.renderer.root.getBoundingClientRect(),s=r.getBoundingClientRect();this.handle.style.left=`${(this.grid.renderer.rtl?s.left:s.right)-i.left-4}px`,this.handle.style.top=`${s.bottom-i.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(),i=t.getBoundingClientRect(),s=n.getBoundingClientRect();Object.assign(this.preview.style,{left:`${i.left-r.left}px`,top:`${i.top-r.top}px`,width:`${s.right-i.left}px`,height:`${s.bottom-i.top}px`}),this.preview.isConnected||this.grid.renderer.root.append(this.preview)}destroy(){this.handle.remove(),this.preview.remove()}};var fn=1e4,hn=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 t=this.grid.rowModel.rows(),n=this.scanner();for(let r=0;r<t.length&&this.matches.length<fn;r++)n(r,this.matches);this.matches.length=Math.min(this.matches.length,fn),this.reindex(),this.matches.length&&this.go(0)}return this.updateCount(),this.grid.renderer.invalidate({rows:!0}),this.matches.length}scanner(){let{grid:e}=this,t=e.store.state.locale.code,n=e.columns.displayed().filter(s=>!B(s.id)),r=n.map(s=>ne(s.def,t)),i=e.rowModel.rows();return(s,a)=>{let l=i[s];if(!(!l||l.kind))for(let c=0;c<n.length;c++)r[c](j(n[c].def,l.data)).toLowerCase().includes(this.query)&&a.push({rowIndex:s,colId:n[c].id})}}reindex(){this.lookup.clear(),this.matches.forEach((e,t)=>this.lookup.set(`${e.rowIndex}|${e.colId}`,t))}refreshRows(e){if(!this.query)return;if(this.matches.length>=fn)return this.refresh();let{rowModel:t}=this.grid,n=new Set;for(let p of e){let m=t.indexOfId(p);m>=0&&n.add(m)}if(!n.size)return;let r=this.matches[this.index],i=this.scanner(),s=[];for(let p of n)i(p,s);let a=this.matches.length,l=this.matches.filter(p=>n.has(p.rowIndex)),c=p=>p.map(m=>`${m.rowIndex}|${m.colId}`).sort().join(",");if(c(l)===c(s))return;let d=new Map(this.grid.columns.displayed().map((p,m)=>[p.id,m]));this.matches=[...this.matches.filter(p=>!n.has(p.rowIndex)),...s].sort((p,m)=>{var b,g;return p.rowIndex-m.rowIndex||((b=d.get(p.colId))!=null?b:0)-((g=d.get(m.colId))!=null?g:0)}).slice(0,fn),this.reindex();let u=r?this.lookup.get(`${r.rowIndex}|${r.colId}`):void 0,f=this.index;u!==void 0?this.index=u:this.matches.length?this.index=Math.min(Math.max(this.index,0),this.matches.length-1):this.index=-1,(a!==this.matches.length||f!==this.index||u===void 0)&&this.updateCount(),this.grid.renderer.invalidate({rows:!0})}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||!this.grid.paid)return;if(this.bar){this.bar.querySelector("input").focus();return}let e=this.grid.store.state.locale,t=R("div","fg-findbar",{role:"search"}),n=R("input","fg-input",{type:"search",placeholder:e.findPlaceholder,"aria-label":e.findPlaceholder});this.countEl=R("span","fg-findbar-count",{"aria-live":"polite"});let r=(u,f,p)=>{let m=R("button","fg-findbar-btn",{type:"button","aria-label":u,title:u});return m.textContent=f,m.addEventListener("click",p),m};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",u=>{u.stopPropagation(),!me(u)&&(u.key==="Escape"?(u.preventDefault(),this.closeBar()):u.key==="Enter"&&(u.preventDefault(),u.shiftKey?this.previous():this.next()))});let{root:i,headerEl:s,main:a}=this.grid.renderer;i.append(t);let l=i.getBoundingClientRect(),c=s.getBoundingClientRect(),d=a.getBoundingClientRect();c.height&&(t.style.top=`${Math.round(c.bottom-l.top)+6}px`),d.width&&(t.style.right=`${Math.max(0,Math.round(l.right-d.right))+18}px`),this.bar=t,n.focus()}relabel(){if(!this.bar)return;let e=this.grid.store.state.locale,t=this.bar.querySelector("input");t.placeholder=e.findPlaceholder,t.setAttribute("aria-label",e.findPlaceholder);let n=[e.findPrevious,e.findNext,e.close];this.bar.querySelectorAll(".fg-findbar-btn").forEach((r,i)=>{r.setAttribute("aria-label",n[i]),r.title=n[i]}),this.updateCount()}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 pa=864e5;function Mt(o,e){if(!o.length||e<=0)return[];let t=()=>Array.from({length:e},(i,s)=>o[s%o.length]);if(o.every(i=>typeof i=="number"&&!Number.isNaN(i))){let i=o;if(i.length===1)return t();let s=i[1]-i[0];if(!i.every((l,c)=>c===0||Math.abs(l-i[c-1]-s)<1e-9))return t();let a=i[i.length-1];return Array.from({length:e},(l,c)=>Math.round((a+s*(c+1))*1e12)/1e12)}let n=o.map(i=>i instanceof Date||typeof i=="string"&&/^\d{4}-\d{2}-\d{2}/.test(i)?ye(i):null);if(n.every(Boolean)&&o.length>=2){let i=n.map(a=>Math.round(a.getTime()/pa)),s=i[1]-i[0];if(i.every((a,l)=>l===0||a-i[l-1]===s)){let a=n[n.length-1],l=o[o.length-1]instanceof Date;return Array.from({length:e},(c,d)=>{let u=new Date(a.getFullYear(),a.getMonth(),a.getDate()+s*(d+1));return l?u:he(u)})}return t()}let r=o[o.length-1];if(typeof r=="string"&&!_(r)&&o.every(i=>typeof i=="string")){let i=/^(.*?)(\d+)$/.exec(r);if(i){let s=i[2].length,a=Number(i[2]);return Array.from({length:e},(l,c)=>`${i[1]}${String(a+c+1).padStart(s,"0")}`)}}return t()}function mo(o){let e=t=>/[\t\n\r"]/.test(t)?`"${t.replace(/"/g,'""')}"`:t;return o.map(t=>t.map(e).join(" ")).join(`\r
|
|
2
|
+
`)}function Zr(o){return wo(o," ")}function wo(o,e){if(!o)return[];let t=[],n=[],r="",i=0,s=!1,a=!0;for(;i<o.length;){let l=o[i];if(s){if(l==='"'){if(o[i+1]==='"'){r+='"',i+=2;continue}s=!1,i++;continue}r+=l,i++;continue}if(l==='"'&&a){s=!0,a=!1,i++;continue}if(l===e){n.push(r),r="",a=!0,i++;continue}if(l==="\r"||l===`
|
|
3
3
|
`){n.push(r),t.push(n),n=[],r="",a=!0,i+=l==="\r"&&o[i+1]===`
|
|
4
|
-
`?2:1;continue}r+=l,a=!1,i++}return(r!==""||n.length||!a)&&(n.push(r),t.push(n)),t}function fn(o,e,t){var n;if(K(e))return"";if(Array.isArray(e))return e.join(", ");switch(o.type){case"number":{let r=typeof e=="number"?e:Number(e);return Number.isNaN(r)?String(e):String(r)}case"date":return(n=he(e))!=null?n:String(e);case"boolean":return e===!0?"TRUE":e===!1?"FALSE":String(e);default:return ne(o,t)(e)}}var wa=new Set(["true","1","y","yes","\uC608","o","on"]),ya=new Set(["false","0","n","no","\uC544\uB2C8\uC624","x","off"]);function ba(o){let e=o.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),Number.isFinite(r)?{ok:!0,value:Math.abs(r)<1e15?Math.round(r*1e12)/1e12:r}:{ok:!1}}function Qr(o,e,t){let n=new Date(o,e-1,t);return n.getFullYear()===o&&n.getMonth()===e-1&&n.getDate()===t?n:null}function va(o,e){let t=o.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=Qr(+r[1],+r[2],+r[3]):(r=/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/.exec(t))?n=Qr(+r[3],+r[1],+r[2]):/^\d{4}-\d{2}-\d{2}T/.test(t)&&(n=ye(t)),n?{ok:!0,value:e instanceof Date?n:he(n)}:{ok:!1}}function hn(o,e,t){switch(o.type){case"number":return ba(e);case"date":return va(e,t);case"boolean":{let n=e.trim().toLowerCase();return n?wa.has(n)?{ok:!0,value:!0}:ya.has(n)?{ok:!0,value:!1}:{ok:!1}:{ok:!0,value:null}}default:return{ok:!0,value:e}}}var xa=o=>o.map(e=>e!==null&&typeof e=="object"&&"value"in e?e:{value:e,label:String(e),disabled:!1}),qe=o=>String(o).padStart(2,"0");function Ca(o){let e=o instanceof Date?o:typeof o=="string"&&o?new Date(o):null;return!e||Number.isNaN(e.getTime())?"":`${e.getFullYear()}-${qe(e.getMonth()+1)}-${qe(e.getDate())}T${qe(e.getHours())}:${qe(e.getMinutes())}`}function ka(o){if(o instanceof Date)return`${qe(o.getHours())}:${qe(o.getMinutes())}`;let e=typeof o=="string"?/(\d{1,2}):(\d{2})/.exec(o):null;return e?`${qe(Number(e[1]))}:${e[2]}`:""}var pn=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},undoMark:this.grid.history.mark()},this.grid.renderer.invalidate({rows:!0}),this.grid.events.emit("rowEditStart",{row:e,rowIndex:t}))}endRow(e){let t=this.session;if(!t)return;if(this.cur){if(e&&!this.commit(null))return;e||this.close(!1)}this.session=null;let{grid:n}=this,r=n.rowModel.indexOfId(t.id),i=n.columns.displayed().filter(a=>a.def.field&&!B(a.id));if(!e){let a=[];for(let l of i){let d=l.def.field;Object.is(t.row[d],t.before[d])||n.writeCell(a,t.row,d,l.id,r,t.before[d])}n.endCellTx(a),n.history.rollback(t.undoMark)}let s=i.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:r,committed:e,changes:s})}get active(){return this.cur&&{rowIndex:this.cur.rowIndex,colId:this.cur.colId}}canEdit(e,t){if(B(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&&this.grid.cellEditable(n.def,r.data,e)}start(e,t,n){var b,v,M;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:i}=r,a=r.columns.getColumn(t).def,l=r.rowModel.getRow(e).data,d=l[a.field];this.rowMode&&this.beginRow(l,e),r.setFocus(e,t),i.ensureVisible(e,t),i.render();let c=C("div","fg-editor");this.place(c,e,t);let u,f,p=()=>{},h=a.editor;if(typeof h=="function"){let x=h({value:d,row:l,column:a,initialText:n});u=x.el,f=()=>({value:x.getValue()}),p=()=>{var R;return(R=x.destroy)==null?void 0:R.call(x)},c.append(u),queueMicrotask(()=>{var R;return(R=x.focus)==null?void 0:R.call(x)})}else if((h==null?void 0:h.type)==="select"){let x=xa(typeof h.options=="function"?h.options(l):h.options),R=C("select","fg-editor-control");x.forEach((E,T)=>{var S;let k=C("option");k.value=String(T),k.textContent=(S=E.label)!=null?S:String(E.value),k.disabled=!!E.disabled,R.append(k)}),R.selectedIndex=Math.max(0,x.findIndex(E=>Object.is(E.value,d))),u=R,f=()=>{var E,T;return{value:(T=(E=x[R.selectedIndex])==null?void 0:E.value)!=null?T:null}},c.append(R)}else if((h==null?void 0:h.type)==="time"||(h==null?void 0:h.type)==="datetime"||!h&&a.type==="date"&&a.format==="datetime"){let x=(h==null?void 0:h.type)==="time",R=C("input","fg-editor-control",{type:x?"time":"datetime-local"});R.value=x?ka(d):Ca(d),u=R,f=()=>R.value?x?{value:R.value}:{value:d instanceof Date?new Date(R.value):R.value}:{value:null},c.append(R)}else{let R=(h==null?void 0:h.type)==="textarea"?C("textarea","fg-editor-control"):C("input","fg-editor-control");R instanceof HTMLInputElement&&(R.type=a.type==="date"&&n===void 0?"date":"text",a.type==="number"&&(R.inputMode="decimal"));let E=a.type==="date"?(b=he(d))!=null?b:"":K(d)?"":String(d);R.value=n!=null?n:E,u=R,f=()=>({text:R.value}),c.append(R)}u.setAttribute("aria-label",(M=(v=a.header)!=null?v:a.field)!=null?M:t);let y=C("div","fg-editor-msg",{role:"alert"});c.append(y);let m=x=>{if(x.stopPropagation(),x.key==="Escape")x.preventDefault(),this.cancel();else if(x.key==="Enter"){if(u instanceof HTMLTextAreaElement&&!(x.ctrlKey||x.metaKey))return;x.preventDefault(),this.commit(x.shiftKey?"up":"down")}else x.key==="Tab"&&(x.preventDefault(),this.commit(x.shiftKey?"left":"right"))},g=x=>{var R;((R=this.cur)==null?void 0:R.wrap)===c&&!c.contains(x.relatedTarget)&&this.commit(null)},w=()=>this.commit(null);return c.addEventListener("keydown",m),c.addEventListener("focusout",g),i.scroller.addEventListener("scroll",w,{passive:!0}),i.root.append(c),this.cur={rowIndex:e,colId:t,row:l,def:a,wrap:c,read:f,dispose:()=>{c.removeEventListener("keydown",m),c.removeEventListener("focusout",g),i.scroller.removeEventListener("scroll",w),p(),c.remove()}},typeof h!="function"&&(u.focus(),n===void 0&&u instanceof HTMLInputElement&&u.type==="text"&&u.select()),r.events.emit("editStart",{rowIndex:e,colId:t}),!0}place(e,t,n){var l,d,c;let{renderer:r}=this.grid,i=r.root.querySelector(`.fg-row[data-row="${t}"] .fg-cell[data-col="${CSS.escape(n)}"]`),s=r.root.getBoundingClientRect(),a=i==null?void 0:i.getBoundingClientRect();return e.style.left=`${((l=a==null?void 0:a.left)!=null?l:s.left)-s.left}px`,e.style.top=`${((d=a==null?void 0:a.top)!=null?d:s.top)-s.top}px`,e.style.width=`${(a==null?void 0:a.width)||((c=this.grid.columns.getColumn(n))==null?void 0:c.width)}px`,e.style.height=`${(a==null?void 0:a.height)||r.opts.rowHeight}px`,!!i}indexOf(e){var r;let t=this.grid.rowModel,n=t.indexOfId(t.idOf(e));return n>=0&&((r=t.getRow(n))==null?void 0:r.data)===e?n:-1}sync(){let e=this.cur;if(!e)return;let t=this.indexOf(e.row);if(t<0)return this.cancel();t!==e.rowIndex&&(e.rowIndex=t,this.grid.setFocus(t,e.colId),this.grid.renderer.render(),this.place(e.wrap,t,e.colId)||this.commit(null))}commit(e){let t=this.cur;if(!t)return!1;let{grid:n}=this,r=n.store.state.locale,i=t.def.field,s=t.row[i],a=t.read(),l;if("text"in a&&t.def.formulas&&ze(a.text.trim()))l=a.text.trim();else if("text"in a){let u=hn(t.def,a.text,s);if(!u.ok)return this.fail(a.text,r.invalidValue);l=u.value}else l=a.value;let d=n.cellError(t.def,t.row,l);if(d!==null)return this.fail(l,d);let c=this.indexOf(t.row);return c<0?(this.cancel(),!1):(t.rowIndex=c,this.close(!0),n.applyEdit(c,t.colId,l),this.session&&(e==="down"||e==="up")&&this.endRow(!0),this.move(c,t.colId,e),!0)}cancel(){this.close(!1),this.session&&this.endRow(!1)}destroy(){var e;(e=this.cur)==null||e.dispose(),this.cur=null,this.session=null}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){var c;if(!n)return;let{grid:r}=this,i=r.rowModel.getRowCount();if(n==="down"||n==="up"){let u=Math.max(0,Math.min(i-1,e+(n==="down"?1:-1)));r.setFocus(u,t),r.renderer.ensureVisible(u,t);return}let s=r.columns.displayed().filter(u=>this.canEdit(e,u.id)||u.def.editable);if(!s.length)return;let a=n==="right"?1:-1,l=e,d=s.findIndex(u=>u.id===t)+a;for(d>=s.length&&(d=0,this.session||l++),d<0&&(d=s.length-1,this.session||l--);l!==e&&l>=0&&l<i&&((c=r.rowModel.getRow(l))!=null&&c.kind);)l+=a;l<0||l>=i||this.start(l,s[d].id)}};var gn=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}mark(){var e;return(e=this.entries[this.index-1])!=null?e:null}rollback(e){let t=e?this.entries.indexOf(e)+1:0;this.entries.splice(t),this.index=Math.min(this.index,t)}clear(){this.entries=[],this.index=0}};var ti=(o,e)=>o instanceof Date&&e instanceof Date?o.getTime()===e.getTime():Object.is(o,e),mn=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&&!ti(n[t],e[t])}diff(e,t){let n=this.originals.get(e);return n?t.filter(r=>!ti(n[r],e[r])):[]}commit(e,t){for(let n of t)this.deleted.delete(n);for(let[n,r]of e)this.created.delete(n),this.originals.set(n,{...r})}get size(){return this.originals.size+this.created.size+this.deleted.size}reset(){this.originals.clear(),this.created.clear(),this.deleted.clear()}};function Mt(o){return{r1:Math.min(o.start.rowIndex,o.end.rowIndex),r2:Math.max(o.start.rowIndex,o.end.rowIndex),c1:Math.min(o.start.colIndex,o.end.colIndex),c2:Math.max(o.start.colIndex,o.end.colIndex)}}function ni(o,e,t){return e>=o.r1&&e<=o.r2&&t>=o.c1&&t<=o.c2}var Ra=5;function oi(o,e){let t=r=>o(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 Sa(o,e,t){let n=o.columns.getColumn(t);if(!n)return;let r=e.clientX,i=n.width;o.renderer.root.classList.add("fg-resizing"),oi(s=>{o.columns.setWidth(t,i+(s.clientX-r)*(o.renderer.rtl?-1:1)),o.layoutChanged()},()=>{var a,l;o.renderer.root.classList.remove("fg-resizing");let s=(l=(a=o.columns.getColumn(t))==null?void 0:a.width)!=null?l:i;s!==i&&o.events.emit("columnResize",{colId:t,width:s})})}function Ma(o,e){let t=o.columns.getNode(e);return!!o.groupPanel&&!!t&&!t.children&&!o.options.treeData&&!o.getGroupBy().includes(e)}function Ea(o,e,t,n){var l,d;let r=new Set(o.columns.siblings(e).map(c=>c.id).filter(c=>c!==e&&!B(c))),i=[...n.querySelectorAll(".fg-header-cell")].filter(c=>r.has(c.dataset.col)).map(c=>({id:c.dataset.col,el:c})),s=C("div",`fg-drag-ghost fg-theme-${o.store.state.theme}`);s.textContent=(d=(l=t.querySelector(".fg-header-label"))==null?void 0:l.textContent)!=null?d:"",o.applyFontTo(s),de(o.renderer.root).append(s);let a=C("div","fg-drop-marker");return a.style.height=`${o.renderer.headerEl.offsetHeight}px`,o.renderer.root.append(a),t.classList.add("fg-dragging"),{ghost:s,marker:a,cell:t,sibs:i,target:-1,overPanel:!1}}function Aa(o,e,t,n,r){var c,u;t.ghost.style.transform=`translate(${n+12}px, ${r+8}px)`,t.overPanel=Ma(o,e)&&!!((c=o.groupPanel)!=null&&c.contains(n,r)),(u=o.groupPanel)==null||u.highlight(t.overPanel),t.marker.hidden=t.overPanel;let i=0;for(let f of t.sibs){let p=f.el.getBoundingClientRect();(o.renderer.rtl?n<p.left+p.width/2:n>p.left+p.width/2)&&i++}t.target=i;let s=o.renderer.root.getBoundingClientRect().left,a=f=>o.renderer.rtl?f.getBoundingClientRect().right:f.getBoundingClientRect().left,l=f=>o.renderer.rtl?f.getBoundingClientRect().left:f.getBoundingClientRect().right,d=i<t.sibs.length?a(t.sibs[i].el):t.sibs.length?l(t.sibs[t.sibs.length-1].el):a(t.cell);t.marker.style.left=`${d-s-1}px`}function Ta(o,e,t){var a;if(t.ghost.remove(),t.marker.remove(),t.cell.classList.remove("fg-dragging"),t.overPanel){(a=o.groupPanel)==null||a.highlight(!1),o.setGroupBy([...o.getGroupBy(),e]);return}if(t.target<0||!t.sibs.length)return;let n=o.columns.siblings(e),r=n.findIndex(l=>l.id===e),i=n.map(l=>l.id).filter(l=>l!==e),s=t.target<t.sibs.length?i.indexOf(t.sibs[t.target].id):i.indexOf(t.sibs[t.sibs.length-1].id)+1;s=Math.max(i.filter(B).length,s),s!==r&&(o.columns.move(e,s),o.layoutChanged(),o.events.emit("columnMove",{colId:e,toIndex:s}))}function Pa(o,e,t,n){let r=o.columns.getNode(t),i=n.closest(".fg-header-pane");if(!r||!i)return;let s=e.clientX,a=null;oi(l=>{if(!a){if(Math.abs(l.clientX-s)<Ra)return;a=Ea(o,t,n,i)}Aa(o,t,a,l.clientX,l.clientY)},l=>{a?Ta(o,t,a):!r.children&&He(r.def)&&o.toggleSort(t,l.shiftKey||l.ctrlKey||l.metaKey)})}function ri(o){let e=o.renderer.headerEl,t=r=>{if(r.button!==0)return;let i=r.target,s=i.closest(".fg-header-cell"),a=s==null?void 0:s.dataset.col;!s||!a||B(a)||i.closest(".fg-menu-btn")||i.closest("button, a, input, select, textarea, [data-fg-no-sort]")&&i.closest(".fg-header-label")||(r.preventDefault(),i.closest(".fg-resize")?Sa(o,r,a):Pa(o,r,a,s))},n=r=>{var a;let i=r.target,s=i.closest(".fg-menu-btn");if(s){let l=(a=s.closest(".fg-header-cell"))==null?void 0:a.dataset.col;l&&o.menu.toggle(l,s);return}i.closest(".fg-select-all")&&o.toggleSelectAll()};return e.addEventListener("pointerdown",t),e.addEventListener("click",n),()=>{e.removeEventListener("pointerdown",t),e.removeEventListener("click",n)}}var yn={A4:[210,297],A3:[297,420],A5:[148,210],B4:[250,353],B5:[176,250],letter:[215.9,279.4],legal:[215.9,355.6]},Et=96/25.4,ii=72/25.4,La="system-ui, 'Pretendard', 'Malgun Gothic', 'Apple SD Gothic Neo', 'Noto Sans CJK KR', sans-serif",Ia=10.5,je=15,bn=7,st=4,wn=8;function Fa(o){let e=atob(o),t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);return t}var vn={surface(o,e){if(typeof document=="undefined")return null;let t=document.createElement("canvas");t.width=o,t.height=e;let n=null;try{n=t.getContext("2d")}catch{n=null}return n?{ctx:n,jpeg:r=>{var i;return Fa((i=t.toDataURL("image/jpeg",r).split(",")[1])!=null?i:"")}}:null}},Ue=(o,e=Ia)=>`${o} ${e}px ${La}`;function ai(o,e,t){var r;if(!e)return[""];let n=[];for(let i of e.split(/\r?\n/)){let s="",a=(r=i.match(/[ -鿿가--]|[^\s -鿿가--]+\s*|\s+/g))!=null?r:[""];for(let l of a){let d=s+l;if(!s||o.measureText(d.trimEnd()).width<=t)if(!s&&o.measureText(l.trimEnd()).width>t)for(let c of l)s&&o.measureText(s+c).width>t&&(n.push(s),s=""),s+=c;else s=d;else n.push(s.trimEnd()),s=l.trimStart();if(n.length>=wn)break}if(n.push(s.trimEnd()),n.length>=wn)break}return n.length>wn&&(n.length=wn),n}function Da(o){var g;let[e,t]=(g=yn[o.paper])!=null?g:yn.A4,[n,r]=o.orientation==="landscape"?[t,e]:[e,t],i=n*Et,s=r*Et,a=12*Et,l=14*Et,d=i-a*2,c=o.numbered?40:0,u=o.widths.slice(o.numbered?1:0),f=u.reduce((w,b)=>w+b,0)||1,p=o.fit?(d-c)/f:Math.min(1,(d-c)/f),h=[...o.numbered?[c]:[],...u.map(w=>w*p)],y=[],m=a;for(let w of h)y.push(m),m+=w;return{pageW:i,pageH:s,margin:a,marginBottom:l,colX:y,colW:h}}function si(o,e,t,n,r){var l,d,c;let i={cells:[],kind:n,level:r,y:0,h:0},s=0,a=22;for(let u of t){let f=Math.max(1,(l=u.span)!=null?l:1),p=(d=e.colX[s])!=null?d:e.margin,h=0;for(let g=s;g<s+f&&g<e.colW.length;g++)h+=e.colW[g];s+=f,o.font=Ue(n==="group"?600:n==="total"||u.bold?700:400);let y=((c=u.indent)!=null?c:0)*14,m=ai(o,u.text,Math.max(8,h-bn*2-y-(u.icon?14:0)));a=Math.max(a,m.length*je+st*2),i.cells.push({cell:u,x:p,w:h,y:0,h:0,lines:m})}return i.h=a,i}function $a(o,e,t){let n=t.map(()=>({cells:[],kind:"head",y:0,h:22})),r=t.map(()=>e.colW.map(()=>!1)),i=[];o.font=Ue(600),t.forEach((s,a)=>{var d,c,u;let l=0;for(let f of s){for(;l<e.colW.length&&r[a][l];)l++;let p=Math.max(1,(d=f.span)!=null?d:1),h=Math.max(1,Math.min(t.length-a,(c=f.rowspan)!=null?c:1));for(let g=a;g<a+h;g++)for(let w=l;w<l+p&&w<e.colW.length;w++)r[g][w]=!0;let y=0;for(let g=l;g<l+p&&g<e.colW.length;g++)y+=e.colW[g];let m=ai(o,f.text,Math.max(8,y-bn*2));i.push({cell:f,r:a,col:l,span:p,rs:h,lines:m,x:(u=e.colX[l])!=null?u:e.margin,w:y}),l+=p}});for(let s of i){let l=(s.lines.length*je+st*2)/s.rs;for(let d=s.r;d<s.r+s.rs;d++)n[d].h=Math.max(n[d].h,l)}for(let s of i)n[s.r].cells.push({cell:s.cell,x:s.x,w:s.w,y:0,h:n.slice(s.r,s.r+s.rs).reduce((a,l)=>a+l.h,0),lines:s.lines});return n}function li(o){return!o.title&&!o.subtitle&&!o.printed?0:(o.title?24:12)+(o.subtitle?17:0)+18}function Na(o,e){let t=Da(e),n=$a(o,t,e.head),r=0,i=e.body.map(y=>{let m=si(o,t,y.cells,y.kind,y.level);return y.kind==="row"&&(m.odd=r++%2===1),m}),s=i.slice(0,e.repeatRows),a=i.slice(e.repeatRows),l=e.foot.map(y=>si(o,t,y.cells,y.kind,y.level)),d=t.pageH-t.marginBottom,c=li(e),u=[],f=[...a,...l],p=y=>({...y,cells:y.cells.map(m=>({...m}))}),h=0;do{let y=u.length===0,m={rows:[],title:y||e.repeatTitle},g=t.margin+(m.title?c:0),w=v=>{let M=p(v);M.y=g;for(let x of M.cells)x.y=g,M.kind!=="head"&&(x.h=M.h);m.rows.push(M),g+=M.h};(y||e.repeatHeader)&&n.forEach(w),s.forEach(w);let b=g;for(;h<f.length;){let v=f[h],M=v.kind==="group"&&h+1<f.length?v.h+f[h+1].h:v.h;if(g+M>d&&g>b)break;w(v),h++}u.push(m)}while(h<f.length&&u.length<5e3);return{pages:u,g:t}}function We(o,e,t,n,r,i,s){o.strokeStyle=i,o.lineWidth=s,o.beginPath(),o.moveTo(e,t),o.lineTo(n,r),o.stroke()}function Oa(o,e,t,n){var s;let r=n.colX.length?n.colX[n.colX.length-1]+n.colW[n.colW.length-1]:n.pageW-n.margin,i=e.kind==="head"?"#f3f4f6":e.kind==="group"?e.level?"#eef2f7":"#e2e8f0":e.kind==="total"?"#f3f4f6":t.striped&&e.odd?"#f9fafb":"";for(let a of e.cells){let l=a.cell.fill||i;l&&(o.fillStyle=l,o.fillRect(a.x,a.y,a.w,a.h)),a.cell.bar&&(o.save(),o.globalAlpha=.4,o.fillStyle=a.cell.bar.color,o.fillRect(a.x+a.w*a.cell.bar.from,a.y+a.h*.15,a.w*(a.cell.bar.to-a.cell.bar.from),a.h*.7),o.restore());let d=e.kind==="head"||e.kind==="group"?600:e.kind==="total"?700:a.cell.bold?600:400;o.font=`${a.cell.italic?"italic ":""}${Ue(d)}`,o.fillStyle=a.cell.num?"#9ca3af":a.cell.color||(e.kind==="head"?"#374151":"#111827"),o.textBaseline="middle",o.save(),o.beginPath(),o.rect(a.x,a.y,a.w,a.h),o.clip();let c=((s=a.cell.indent)!=null?s:0)*14,u=a.lines.length*je,f=e.kind==="head"?a.y+a.h-st-u+je/2:a.y+st+je/2;e.kind!=="head"&&a.h>u+st*2&&(f=a.y+st+je/2);for(let[p,h]of a.lines.entries()){let y=a.x+bn+c,m=o.measureText(h).width+(a.cell.icon&&p===0?14:0),g=a.cell.group?"center":a.cell.align;if(g==="right"?y=a.x+a.w-bn-m:g==="center"&&(y=a.x+(a.w-m)/2),o.textAlign="left",a.cell.icon&&p===0){let w=o.fillStyle;o.fillStyle=a.cell.icon.color,o.fillText(a.cell.icon.char,y,f),o.fillStyle=w,y+=14}o.fillText(h,y,f),a.cell.strike&&We(o,y,f,y+o.measureText(h).width,f,String(o.fillStyle),1),f+=je}o.restore(),e.kind==="head"&&a.x>n.margin+.5&&We(o,a.x,a.y,a.x,a.y+a.h,"#e5e7eb",1),e.kind==="head"&&We(o,a.x,a.y+a.h,a.x+a.w,a.y+a.h,"#9ca3af",1.5)}e.kind==="group"&&We(o,n.margin,e.y,r,e.y,"#cbd5e1",1),e.kind==="total"?We(o,n.margin,e.y,r,e.y,"#111827",1.5):e.kind!=="head"&&We(o,n.margin,e.y+e.h,r,e.y+e.h,"#e5e7eb",1)}function Ba(o,e,t){let n=li(e);if(!n)return;let r=t.pageW-t.margin,i=t.margin;if(o.textAlign="left",o.textBaseline="top",e.title&&(o.font=Ue(700,17),o.fillStyle="#111827",o.fillText(e.title,t.margin,i),i+=24),e.subtitle&&(o.font=Ue(400,11),o.fillStyle="#4b5563",o.fillText(e.subtitle,t.margin,i),i+=17),e.printed){o.font=Ue(400,9.5),o.fillStyle="#6b7280";let s=o.measureText(e.printed).width;o.fillText(e.printed,r-s,t.margin+n-18-13)}We(o,t.margin,t.margin+n-10,r,t.margin+n-10,"#111827",2)}function Ha(o,e,t,n,r){let i=t.pageH-7*Et;if(o.font=Ue(400,8.5),o.fillStyle="#6b7280",o.textBaseline="middle",o.textAlign="left",e.footer&&o.fillText(e.footer,t.margin,i),e.pageNumbers){let s=`${n+1} / ${r}`;o.fillText(s,t.pageW-t.margin-o.measureText(s).width,i)}}function yo(o,e=vn,t={}){var y;let n=typeof t.scale=="number"&&t.scale>0?Math.min(4,t.scale):2,r=typeof t.quality=="number"&&t.quality>0&&t.quality<=1?t.quality:.92,i=e.surface(8,8);if(!i)return null;let{pages:s,g:a}=Na(i.ctx,o),l=Math.round(a.pageW*n),d=Math.round(a.pageH*n),c=[];s.forEach((m,g)=>{let w=e.surface(l,d);if(!w)return;let b=w.ctx;b.setTransform(n,0,0,n,0,0),b.fillStyle="#ffffff",b.fillRect(0,0,a.pageW,a.pageH),m.title&&Ba(b,o,a);for(let v of m.rows)Oa(b,v,o,a);Ha(b,o,a,g,s.length),c.push(w.jpeg(r))});let[u,f]=(y=yn[o.paper])!=null?y:yn.A4,[p,h]=o.orientation==="landscape"?[f,u]:[u,f];return za(c.map(m=>({jpeg:m,width:l,height:d})),p*ii,h*ii,o.title)}function Ga(o){if(/^[\x20-\x7e]*$/.test(o))return`(${o.replace(/[\\()]/g,t=>`\\${t}`)})`;let e="FEFF";for(let t=0;t<o.length;t++)e+=o.charCodeAt(t).toString(16).padStart(4,"0").toUpperCase();return`<${e}>`}function za(o,e,t,n=""){var b;let r=new TextEncoder,i=[],s=[],a=0,l=v=>{let M=typeof v=="string"?r.encode(v):v;i.push(M),a+=M.length},d=(v,M)=>{s[v]=a,l(`${v} 0 obj
|
|
5
|
-
`),typeof
|
|
4
|
+
`?2:1;continue}r+=l,a=!1,i++}return(r!==""||n.length||!a)&&(n.push(r),t.push(n)),t}function pn(o,e,t){var n;if(_(e))return"";if(Array.isArray(e))return e.join(", ");switch(o.type){case"number":{let r=typeof e=="number"?e:Number(e);return Number.isNaN(r)?String(e):String(r)}case"date":return(n=he(e))!=null?n:String(e);case"boolean":return e===!0?"TRUE":e===!1?"FALSE":String(e);default:return ne(o,t)(e)}}var ga=new Set(["true","1","y","yes","\uC608","o","on"]),ma=new Set(["false","0","n","no","\uC544\uB2C8\uC624","x","off"]);function wa(o){let e=o.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),Number.isFinite(r)?{ok:!0,value:Math.abs(r)<1e15?Math.round(r*1e12)/1e12:r}:{ok:!1}}function Yr(o,e,t){let n=new Date(o,e-1,t);return n.getFullYear()===o&&n.getMonth()===e-1&&n.getDate()===t?n:null}function ya(o,e){let t=o.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=Yr(+r[1],+r[2],+r[3]):(r=/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/.exec(t))?n=Yr(+r[3],+r[1],+r[2]):/^\d{4}-\d{2}-\d{2}T/.test(t)&&(n=ye(t)),n?{ok:!0,value:e instanceof Date?n:he(n)}:{ok:!1}}function gn(o,e,t){switch(o.type){case"number":return wa(e);case"date":return ya(e,t);case"boolean":{let n=e.trim().toLowerCase();return n?ga.has(n)?{ok:!0,value:!0}:ma.has(n)?{ok:!0,value:!1}:{ok:!1}:{ok:!0,value:null}}default:return{ok:!0,value:e}}}var ba=o=>o.map(e=>e!==null&&typeof e=="object"&&"value"in e?e:{value:e,label:String(e),disabled:!1}),We=o=>String(o).padStart(2,"0");function va(o){let e=o instanceof Date?o:typeof o=="string"&&o?new Date(o):null;return!e||Number.isNaN(e.getTime())?"":`${e.getFullYear()}-${We(e.getMonth()+1)}-${We(e.getDate())}T${We(e.getHours())}:${We(e.getMinutes())}`}function xa(o){if(o instanceof Date)return`${We(o.getHours())}:${We(o.getMinutes())}`;let e=typeof o=="string"?/(\d{1,2}):(\d{2})/.exec(o):null;return e?`${We(Number(e[1]))}:${e[2]}`:""}var mn=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},undoMark:this.grid.history.mark()},this.grid.renderer.invalidate({rows:!0}),this.grid.events.emit("rowEditStart",{row:e,rowIndex:t}))}endRow(e){let t=this.session;if(!t)return;if(this.cur){if(e&&!this.commit(null))return;e||this.close(!1)}this.session=null;let{grid:n}=this,r=n.rowModel.indexOfId(t.id),i=n.columns.displayed().filter(a=>a.def.field&&!B(a.id));if(!e){let a=[];for(let l of i){let c=l.def.field;Object.is(t.row[c],t.before[c])||n.writeCell(a,t.row,c,l.id,r,t.before[c])}n.endCellTx(a),n.history.rollback(t.undoMark)}let s=i.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:r,committed:e,changes:s})}get active(){return this.cur&&{rowIndex:this.cur.rowIndex,colId:this.cur.colId}}canEdit(e,t){if(B(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&&this.grid.cellEditable(n.def,r.data,e)}start(e,t,n){var y,v,k;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:i}=r,a=r.columns.getColumn(t).def,l=r.rowModel.getRow(e).data,c=l[a.field];this.rowMode&&this.beginRow(l,e),r.setFocus(e,t),i.ensureVisible(e,t),i.render();let d=R("div","fg-editor");this.place(d,e,t);let u,f,p=()=>{},m=a.editor;if(typeof m=="function"){let x=m({value:c,row:l,column:a,initialText:n});u=x.el,f=()=>({value:x.getValue()}),p=()=>{var S;return(S=x.destroy)==null?void 0:S.call(x)},d.append(u),queueMicrotask(()=>{var S;return(S=x.focus)==null?void 0:S.call(x)})}else if((m==null?void 0:m.type)==="select"){let x=ba(typeof m.options=="function"?m.options(l):m.options),S=R("select","fg-editor-control");x.forEach((E,A)=>{var C;let F=R("option");F.value=String(A),F.textContent=(C=E.label)!=null?C:String(E.value),F.disabled=!!E.disabled,S.append(F)}),S.selectedIndex=Math.max(0,x.findIndex(E=>Object.is(E.value,c))),u=S,f=()=>{var E,A;return{value:(A=(E=x[S.selectedIndex])==null?void 0:E.value)!=null?A:null}},d.append(S)}else if((m==null?void 0:m.type)==="time"||(m==null?void 0:m.type)==="datetime"||!m&&a.type==="date"&&a.format==="datetime"){let x=(m==null?void 0:m.type)==="time",S=R("input","fg-editor-control",{type:x?"time":"datetime-local"});S.value=x?xa(c):va(c),u=S,f=()=>S.value?x?{value:S.value}:{value:c instanceof Date?new Date(S.value):S.value}:{value:null},d.append(S)}else{let S=(m==null?void 0:m.type)==="textarea"?R("textarea","fg-editor-control"):R("input","fg-editor-control");S instanceof HTMLInputElement&&(S.type=a.type==="date"&&n===void 0?"date":"text",a.type==="number"&&(S.inputMode="decimal"));let E=a.type==="date"?(y=he(c))!=null?y:"":_(c)?"":String(c);S.value=n!=null?n:E,u=S,f=()=>({text:S.value}),d.append(S)}u.setAttribute("aria-label",(k=(v=a.header)!=null?v:a.field)!=null?k:t);let b=R("div","fg-editor-msg",{role:"alert"});d.append(b);let g=x=>{if(x.stopPropagation(),!me(x))if(x.key==="Escape")x.preventDefault(),this.cancel();else if(x.key==="Enter"){if(u instanceof HTMLTextAreaElement&&!(x.ctrlKey||x.metaKey))return;x.preventDefault(),this.commit(x.shiftKey?"up":"down")}else x.key==="Tab"&&(x.preventDefault(),this.commit(x.shiftKey?"left":"right"))},h=x=>{var S;((S=this.cur)==null?void 0:S.wrap)===d&&!d.contains(x.relatedTarget)&&this.commit(null)},w=()=>this.commit(null);return d.addEventListener("keydown",g),d.addEventListener("focusout",h),i.scroller.addEventListener("scroll",w,{passive:!0}),i.root.append(d),this.cur={rowIndex:e,colId:t,row:l,def:a,wrap:d,read:f,dispose:()=>{d.removeEventListener("keydown",g),d.removeEventListener("focusout",h),i.scroller.removeEventListener("scroll",w),p(),d.remove()}},typeof m!="function"&&(u.focus(),n===void 0&&u instanceof HTMLInputElement&&u.type==="text"&&u.select()),r.events.emit("editStart",{rowIndex:e,colId:t}),!0}place(e,t,n){var l,c,d;let{renderer:r}=this.grid,i=r.root.querySelector(`.fg-row[data-row="${t}"] .fg-cell[data-col="${CSS.escape(n)}"]`),s=r.root.getBoundingClientRect(),a=i==null?void 0:i.getBoundingClientRect();return e.style.left=`${((l=a==null?void 0:a.left)!=null?l:s.left)-s.left}px`,e.style.top=`${((c=a==null?void 0:a.top)!=null?c:s.top)-s.top}px`,e.style.width=`${(a==null?void 0:a.width)||((d=this.grid.columns.getColumn(n))==null?void 0:d.width)}px`,e.style.height=`${(a==null?void 0:a.height)||r.opts.rowHeight}px`,!!i}indexOf(e){var r;let t=this.grid.rowModel,n=t.indexOfId(t.idOf(e));return n>=0&&((r=t.getRow(n))==null?void 0:r.data)===e?n:-1}sync(){let e=this.cur;if(!e)return;let t=this.indexOf(e.row);if(t<0)return this.cancel();t!==e.rowIndex&&(e.rowIndex=t,this.grid.setFocus(t,e.colId),this.grid.renderer.render(),this.place(e.wrap,t,e.colId)||this.commit(null))}commit(e){let t=this.cur;if(!t)return!1;let{grid:n}=this,r=n.store.state.locale,i=t.def.field,s=t.row[i],a=t.read(),l;if("text"in a&&t.def.formulas&&Ve(a.text.trim()))l=a.text.trim();else if("text"in a){let u=gn(t.def,a.text,s);if(!u.ok)return this.fail(a.text,r.invalidValue);l=u.value}else l=a.value;let c=n.cellError(t.def,t.row,l);if(c!==null)return this.fail(l,c);let d=this.indexOf(t.row);return d<0?(this.cancel(),!1):(t.rowIndex=d,this.close(!0),n.applyEdit(d,t.colId,l),this.session&&(e==="down"||e==="up")&&this.endRow(!0),this.move(d,t.colId,e),!0)}cancel(){this.close(!1),this.session&&this.endRow(!1)}destroy(){var e;(e=this.cur)==null||e.dispose(),this.cur=null,this.session=null}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){var d;if(!n)return;let{grid:r}=this,i=r.rowModel.getRowCount();if(n==="down"||n==="up"){let u=Math.max(0,Math.min(i-1,e+(n==="down"?1:-1)));r.setFocus(u,t),r.renderer.ensureVisible(u,t);return}let s=r.columns.displayed().filter(u=>this.canEdit(e,u.id)||u.def.editable);if(!s.length)return;let a=n==="right"?1:-1,l=e,c=s.findIndex(u=>u.id===t)+a;for(c>=s.length&&(c=0,this.session||l++),c<0&&(c=s.length-1,this.session||l--);l!==e&&l>=0&&l<i&&((d=r.rowModel.getRow(l))!=null&&d.kind);)l+=a;l<0||l>=i||this.start(l,s[c].id)}};var wn=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}mark(){var e;return(e=this.entries[this.index-1])!=null?e:null}rollback(e){let t=e?this.entries.indexOf(e)+1:0;this.entries.splice(t),this.index=Math.min(this.index,t)}clear(){this.entries=[],this.index=0}};var Qr=(o,e)=>o instanceof Date&&e instanceof Date?o.getTime()===e.getTime():Object.is(o,e),yn=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&&!Qr(n[t],e[t])}diff(e,t){let n=this.originals.get(e);return n?t.filter(r=>!Qr(n[r],e[r])):[]}commit(e,t){for(let n of t)this.deleted.delete(n);for(let[n,r]of e)this.created.delete(n),this.originals.set(n,{...r})}get size(){return this.originals.size+this.created.size+this.deleted.size}reset(){this.originals.clear(),this.created.clear(),this.deleted.clear()}};function Et(o){return{r1:Math.min(o.start.rowIndex,o.end.rowIndex),r2:Math.max(o.start.rowIndex,o.end.rowIndex),c1:Math.min(o.start.colIndex,o.end.colIndex),c2:Math.max(o.start.colIndex,o.end.colIndex)}}function ei(o,e,t){return e>=o.r1&&e<=o.r2&&t>=o.c1&&t<=o.c2}var Ca=5;function ti(o,e){let t=r=>o(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 Ra(o,e,t){let n=o.columns.getColumn(t);if(!n)return;let r=e.clientX,i=n.width;o.renderer.root.classList.add("fg-resizing"),ti(s=>{o.columns.setWidth(t,i+(s.clientX-r)*(o.renderer.rtl?-1:1)),o.layoutChanged()},()=>{var a,l;o.renderer.root.classList.remove("fg-resizing");let s=(l=(a=o.columns.getColumn(t))==null?void 0:a.width)!=null?l:i;s!==i&&o.events.emit("columnResize",{colId:t,width:s})})}function Sa(o,e){let t=o.columns.getNode(e);return!!o.groupPanel&&!!t&&!t.children&&!o.options.treeData&&!o.getGroupBy().includes(e)}function ka(o,e,t,n){var l,c;let r=new Set(o.columns.siblings(e).map(d=>d.id).filter(d=>d!==e&&!B(d))),i=[...n.querySelectorAll(".fg-header-cell")].filter(d=>r.has(d.dataset.col)).map(d=>({id:d.dataset.col,el:d})),s=R("div",`fg-drag-ghost fg-theme-${o.store.state.theme}`);s.textContent=(c=(l=t.querySelector(".fg-header-label"))==null?void 0:l.textContent)!=null?c:"",o.applyFontTo(s),ue(o.renderer.root).append(s);let a=R("div","fg-drop-marker");return a.style.height=`${o.renderer.headerEl.offsetHeight}px`,o.renderer.root.append(a),t.classList.add("fg-dragging"),{ghost:s,marker:a,cell:t,sibs:i,target:-1,overPanel:!1}}function Ma(o,e,t,n,r){var d,u;t.ghost.style.transform=`translate(${n+12}px, ${r+8}px)`,t.overPanel=Sa(o,e)&&!!((d=o.groupPanel)!=null&&d.contains(n,r)),(u=o.groupPanel)==null||u.highlight(t.overPanel),t.marker.hidden=t.overPanel;let i=0;for(let f of t.sibs){let p=f.el.getBoundingClientRect();(o.renderer.rtl?n<p.left+p.width/2:n>p.left+p.width/2)&&i++}t.target=i;let s=o.renderer.root.getBoundingClientRect().left,a=f=>o.renderer.rtl?f.getBoundingClientRect().right:f.getBoundingClientRect().left,l=f=>o.renderer.rtl?f.getBoundingClientRect().left:f.getBoundingClientRect().right,c=i<t.sibs.length?a(t.sibs[i].el):t.sibs.length?l(t.sibs[t.sibs.length-1].el):a(t.cell);t.marker.style.left=`${c-s-1}px`}function Ea(o,e,t){var a;if(t.ghost.remove(),t.marker.remove(),t.cell.classList.remove("fg-dragging"),t.overPanel){(a=o.groupPanel)==null||a.highlight(!1),o.setGroupBy([...o.getGroupBy(),e]);return}if(t.target<0||!t.sibs.length)return;let n=o.columns.siblings(e),r=n.findIndex(l=>l.id===e),i=n.map(l=>l.id).filter(l=>l!==e),s=t.target<t.sibs.length?i.indexOf(t.sibs[t.target].id):i.indexOf(t.sibs[t.sibs.length-1].id)+1;s=Math.max(i.filter(B).length,s),s!==r&&(o.columns.move(e,s),o.layoutChanged(),o.events.emit("columnMove",{colId:e,toIndex:s}))}function Aa(o,e,t,n){let r=o.columns.getNode(t),i=n.closest(".fg-header-pane");if(!r||!i)return;let s=e.clientX,a=null;ti(l=>{if(!a){if(Math.abs(l.clientX-s)<Ca)return;a=ka(o,t,n,i)}Ma(o,t,a,l.clientX,l.clientY)},l=>{a?Ea(o,t,a):!r.children&&Ge(r.def)&&o.toggleSort(t,l.shiftKey||l.ctrlKey||l.metaKey)})}function ni(o){let e=o.renderer.headerEl,t=r=>{if(r.button!==0)return;let i=r.target,s=i.closest(".fg-header-cell"),a=s==null?void 0:s.dataset.col;!s||!a||B(a)||i.closest(".fg-menu-btn")||i.closest("button, a, input, select, textarea, [data-fg-no-sort]")&&i.closest(".fg-header-label")||(r.preventDefault(),i.closest(".fg-resize")?Ra(o,r,a):Aa(o,r,a,s))},n=r=>{var a;let i=r.target,s=i.closest(".fg-menu-btn");if(s){let l=(a=s.closest(".fg-header-cell"))==null?void 0:a.dataset.col;l&&o.menu.toggle(l,s);return}i.closest(".fg-select-all")&&o.toggleSelectAll()};return e.addEventListener("pointerdown",t),e.addEventListener("click",n),()=>{e.removeEventListener("pointerdown",t),e.removeEventListener("click",n)}}var vn={A4:[210,297],A3:[297,420],A5:[148,210],B4:[250,353],B5:[176,250],letter:[215.9,279.4],legal:[215.9,355.6]},At=96/25.4,oi=72/25.4,Ta="system-ui, 'Pretendard', 'Malgun Gothic', 'Apple SD Gothic Neo', 'Noto Sans CJK KR', sans-serif",Pa=10.5,Ue=15,xn=7,at=4,bn=8;function La(o){let e=atob(o),t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);return t}var Cn={surface(o,e){if(typeof document=="undefined")return null;let t=document.createElement("canvas");t.width=o,t.height=e;let n=null;try{n=t.getContext("2d")}catch{n=null}return n?{ctx:n,jpeg:r=>{var i;return La((i=t.toDataURL("image/jpeg",r).split(",")[1])!=null?i:"")}}:null}},Ke=(o,e=Pa)=>`${o} ${e}px ${Ta}`;function ii(o,e,t){var r;if(!e)return[""];let n=[];for(let i of e.split(/\r?\n/)){let s="",a=(r=i.match(/[ -鿿가--]|[^\s -鿿가--]+\s*|\s+/g))!=null?r:[""];for(let l of a){let c=s+l;if(!s||o.measureText(c.trimEnd()).width<=t)if(!s&&o.measureText(l.trimEnd()).width>t)for(let d of l)s&&o.measureText(s+d).width>t&&(n.push(s),s=""),s+=d;else s=c;else n.push(s.trimEnd()),s=l.trimStart();if(n.length>=bn)break}if(n.push(s.trimEnd()),n.length>=bn)break}return n.length>bn&&(n.length=bn),n}function Ia(o){var h;let[e,t]=(h=vn[o.paper])!=null?h:vn.A4,[n,r]=o.orientation==="landscape"?[t,e]:[e,t],i=n*At,s=r*At,a=12*At,l=14*At,c=i-a*2,d=o.numbered?40:0,u=o.widths.slice(o.numbered?1:0),f=u.reduce((w,y)=>w+y,0)||1,p=o.fit?(c-d)/f:Math.min(1,(c-d)/f),m=[...o.numbered?[d]:[],...u.map(w=>w*p)],b=[],g=a;for(let w of m)b.push(g),g+=w;return{pageW:i,pageH:s,margin:a,marginBottom:l,colX:b,colW:m}}function ri(o,e,t,n,r){var l,c,d;let i={cells:[],kind:n,level:r,y:0,h:0},s=0,a=22;for(let u of t){let f=Math.max(1,(l=u.span)!=null?l:1),p=(c=e.colX[s])!=null?c:e.margin,m=0;for(let h=s;h<s+f&&h<e.colW.length;h++)m+=e.colW[h];s+=f,o.font=Ke(n==="group"?600:n==="total"||u.bold?700:400);let b=((d=u.indent)!=null?d:0)*14,g=ii(o,u.text,Math.max(8,m-xn*2-b-(u.icon?14:0)));a=Math.max(a,g.length*Ue+at*2),i.cells.push({cell:u,x:p,w:m,y:0,h:0,lines:g})}return i.h=a,i}function Fa(o,e,t){let n=t.map(()=>({cells:[],kind:"head",y:0,h:22})),r=t.map(()=>e.colW.map(()=>!1)),i=[];o.font=Ke(600),t.forEach((s,a)=>{var c,d,u;let l=0;for(let f of s){for(;l<e.colW.length&&r[a][l];)l++;let p=Math.max(1,(c=f.span)!=null?c:1),m=Math.max(1,Math.min(t.length-a,(d=f.rowspan)!=null?d:1));for(let h=a;h<a+m;h++)for(let w=l;w<l+p&&w<e.colW.length;w++)r[h][w]=!0;let b=0;for(let h=l;h<l+p&&h<e.colW.length;h++)b+=e.colW[h];let g=ii(o,f.text,Math.max(8,b-xn*2));i.push({cell:f,r:a,col:l,span:p,rs:m,lines:g,x:(u=e.colX[l])!=null?u:e.margin,w:b}),l+=p}});for(let s of i){let l=(s.lines.length*Ue+at*2)/s.rs;for(let c=s.r;c<s.r+s.rs;c++)n[c].h=Math.max(n[c].h,l)}for(let s of i)n[s.r].cells.push({cell:s.cell,x:s.x,w:s.w,y:0,h:n.slice(s.r,s.r+s.rs).reduce((a,l)=>a+l.h,0),lines:s.lines});return n}function si(o){return!o.title&&!o.subtitle&&!o.printed?0:(o.title?24:12)+(o.subtitle?17:0)+18}function Da(o,e){let t=Ia(e),n=Fa(o,t,e.head),r=0,i=e.body.map(b=>{let g=ri(o,t,b.cells,b.kind,b.level);return b.kind==="row"&&(g.odd=r++%2===1),g}),s=i.slice(0,e.repeatRows),a=i.slice(e.repeatRows),l=e.foot.map(b=>ri(o,t,b.cells,b.kind,b.level)),c=t.pageH-t.marginBottom,d=si(e),u=[],f=[...a,...l],p=b=>({...b,cells:b.cells.map(g=>({...g}))}),m=0;do{let b=u.length===0,g={rows:[],title:b||e.repeatTitle},h=t.margin+(g.title?d:0),w=v=>{let k=p(v);k.y=h;for(let x of k.cells)x.y=h,k.kind!=="head"&&(x.h=k.h);g.rows.push(k),h+=k.h};(b||e.repeatHeader)&&n.forEach(w),s.forEach(w);let y=h;for(;m<f.length;){let v=f[m],k=v.kind==="group"&&m+1<f.length?v.h+f[m+1].h:v.h;if(h+k>c&&h>y)break;w(v),m++}u.push(g)}while(m<f.length&&u.length<5e3);return{pages:u,g:t}}function je(o,e,t,n,r,i,s){o.strokeStyle=i,o.lineWidth=s,o.beginPath(),o.moveTo(e,t),o.lineTo(n,r),o.stroke()}function $a(o,e,t,n){var s;let r=n.colX.length?n.colX[n.colX.length-1]+n.colW[n.colW.length-1]:n.pageW-n.margin,i=e.kind==="head"?"#f3f4f6":e.kind==="group"?e.level?"#eef2f7":"#e2e8f0":e.kind==="total"?"#f3f4f6":t.striped&&e.odd?"#f9fafb":"";for(let a of e.cells){let l=a.cell.fill||i;l&&(o.fillStyle=l,o.fillRect(a.x,a.y,a.w,a.h)),a.cell.bar&&(o.save(),o.globalAlpha=.4,o.fillStyle=a.cell.bar.color,o.fillRect(a.x+a.w*a.cell.bar.from,a.y+a.h*.15,a.w*(a.cell.bar.to-a.cell.bar.from),a.h*.7),o.restore());let c=e.kind==="head"||e.kind==="group"?600:e.kind==="total"?700:a.cell.bold?600:400;o.font=`${a.cell.italic?"italic ":""}${Ke(c)}`,o.fillStyle=a.cell.num?"#9ca3af":a.cell.color||(e.kind==="head"?"#374151":"#111827"),o.textBaseline="middle",o.save(),o.beginPath(),o.rect(a.x,a.y,a.w,a.h),o.clip();let d=((s=a.cell.indent)!=null?s:0)*14,u=a.lines.length*Ue,f=e.kind==="head"?a.y+a.h-at-u+Ue/2:a.y+at+Ue/2;e.kind!=="head"&&a.h>u+at*2&&(f=a.y+at+Ue/2);for(let[p,m]of a.lines.entries()){let b=a.x+xn+d,g=o.measureText(m).width+(a.cell.icon&&p===0?14:0),h=a.cell.group?"center":a.cell.align;if(h==="right"?b=a.x+a.w-xn-g:h==="center"&&(b=a.x+(a.w-g)/2),o.textAlign="left",a.cell.icon&&p===0){let w=o.fillStyle;o.fillStyle=a.cell.icon.color,o.fillText(a.cell.icon.char,b,f),o.fillStyle=w,b+=14}o.fillText(m,b,f),a.cell.strike&&je(o,b,f,b+o.measureText(m).width,f,String(o.fillStyle),1),f+=Ue}o.restore(),e.kind==="head"&&a.x>n.margin+.5&&je(o,a.x,a.y,a.x,a.y+a.h,"#e5e7eb",1),e.kind==="head"&&je(o,a.x,a.y+a.h,a.x+a.w,a.y+a.h,"#9ca3af",1.5)}e.kind==="group"&&je(o,n.margin,e.y,r,e.y,"#cbd5e1",1),e.kind==="total"?je(o,n.margin,e.y,r,e.y,"#111827",1.5):e.kind!=="head"&&je(o,n.margin,e.y+e.h,r,e.y+e.h,"#e5e7eb",1)}function Na(o,e,t){let n=si(e);if(!n)return;let r=t.pageW-t.margin,i=t.margin;if(o.textAlign="left",o.textBaseline="top",e.title&&(o.font=Ke(700,17),o.fillStyle="#111827",o.fillText(e.title,t.margin,i),i+=24),e.subtitle&&(o.font=Ke(400,11),o.fillStyle="#4b5563",o.fillText(e.subtitle,t.margin,i),i+=17),e.printed){o.font=Ke(400,9.5),o.fillStyle="#6b7280";let s=o.measureText(e.printed).width;o.fillText(e.printed,r-s,t.margin+n-18-13)}je(o,t.margin,t.margin+n-10,r,t.margin+n-10,"#111827",2)}function Oa(o,e,t,n,r){let i=t.pageH-7*At;if(o.font=Ke(400,8.5),o.fillStyle="#6b7280",o.textBaseline="middle",o.textAlign="left",e.footer&&o.fillText(e.footer,t.margin,i),e.pageNumbers){let s=`${n+1} / ${r}`;o.fillText(s,t.pageW-t.margin-o.measureText(s).width,i)}}function yo(o,e=Cn,t={}){var b;let n=typeof t.scale=="number"&&t.scale>0?Math.min(4,t.scale):2,r=typeof t.quality=="number"&&t.quality>0&&t.quality<=1?t.quality:.92,i=e.surface(8,8);if(!i)return null;let{pages:s,g:a}=Da(i.ctx,o),l=Math.round(a.pageW*n),c=Math.round(a.pageH*n),d=[];s.forEach((g,h)=>{let w=e.surface(l,c);if(!w)return;let y=w.ctx;y.setTransform(n,0,0,n,0,0),y.fillStyle="#ffffff",y.fillRect(0,0,a.pageW,a.pageH),g.title&&Na(y,o,a);for(let v of g.rows)$a(y,v,o,a);Oa(y,o,a,h,s.length),d.push(w.jpeg(r))});let[u,f]=(b=vn[o.paper])!=null?b:vn.A4,[p,m]=o.orientation==="landscape"?[f,u]:[u,f];return Ha(d.map(g=>({jpeg:g,width:l,height:c})),p*oi,m*oi,o.title)}function Ba(o){if(/^[\x20-\x7e]*$/.test(o))return`(${o.replace(/[\\()]/g,t=>`\\${t}`)})`;let e="FEFF";for(let t=0;t<o.length;t++)e+=o.charCodeAt(t).toString(16).padStart(4,"0").toUpperCase();return`<${e}>`}function Ha(o,e,t,n=""){var y;let r=new TextEncoder,i=[],s=[],a=0,l=v=>{let k=typeof v=="string"?r.encode(v):v;i.push(k),a+=k.length},c=(v,k)=>{s[v]=a,l(`${v} 0 obj
|
|
5
|
+
`),typeof k=="string"?l(k):k(),l(`
|
|
6
6
|
endobj
|
|
7
7
|
`)};l(`%PDF-1.4
|
|
8
|
-
`),l(new Uint8Array([37,226,227,207,211,10]));let
|
|
8
|
+
`),l(new Uint8Array([37,226,227,207,211,10]));let d=o.length,u=o.map((v,k)=>4+k*3),f=e.toFixed(2),p=t.toFixed(2);c(1,"<< /Type /Catalog /Pages 2 0 R >>"),c(2,`<< /Type /Pages /Count ${d} /Kids [${u.map(v=>`${v} 0 R`).join(" ")}] >>`),c(3,`<< /Producer (FreeGrid)${n?` /Title ${Ba(n)}`:""} >>`),o.forEach((v,k)=>{let x=u[k],S=`q ${f} 0 0 ${p} 0 0 cm /Im0 Do Q`;c(x,`<< /Type /Page /Parent 2 0 R /MediaBox [0 0 ${f} ${p}] /Resources << /XObject << /Im0 ${x+2} 0 R >> >> /Contents ${x+1} 0 R >>`),c(x+1,`<< /Length ${S.length} >>
|
|
9
9
|
stream
|
|
10
|
-
${
|
|
11
|
-
endstream`),
|
|
10
|
+
${S}
|
|
11
|
+
endstream`),c(x+2,()=>{l(`<< /Type /XObject /Subtype /Image /Width ${v.width} /Height ${v.height} /ColorSpace /DeviceRGB /BitsPerComponent 8 /Filter /DCTDecode /Length ${v.jpeg.length} >>
|
|
12
12
|
stream
|
|
13
13
|
`),l(v.jpeg),l(`
|
|
14
|
-
endstream`)})});let
|
|
15
|
-
0 ${
|
|
14
|
+
endstream`)})});let m=4+d*3,b=a,g=`xref
|
|
15
|
+
0 ${m}
|
|
16
16
|
0000000000 65535 f
|
|
17
|
-
`;for(let v=1;v<
|
|
18
|
-
`;l(`${
|
|
19
|
-
<< /Size ${
|
|
17
|
+
`;for(let v=1;v<m;v++)g+=`${String((y=s[v])!=null?y:0).padStart(10,"0")} 00000 n
|
|
18
|
+
`;l(`${g}trailer
|
|
19
|
+
<< /Size ${m} /Root 1 0 R /Info 3 0 R >>
|
|
20
20
|
startxref
|
|
21
|
-
${
|
|
21
|
+
${b}
|
|
22
22
|
%%EOF
|
|
23
|
-
`);let
|
|
24
|
-
`)}function vo(o){let e=o.slice(0,o.search(/\r?\n|$/)),t=s=>e.split(s).length-1,n=t(" "),r=t(";"),i=t(",");return n&&n>=i&&n>=r?" ":r>i?";":","}function kn(o,e=vo(o)){return wo(o.replace(/^\uFEFF/,""),e)}var
|
|
25
|
-
`,Co="http://schemas.openxmlformats.org/spreadsheetml/2006/main",
|
|
26
|
-
`?"\\A ":e==="\r"?"":`\\${e.charCodeAt(0).toString(16)} `)}"`,
|
|
23
|
+
`);let h=new Uint8Array(a),w=0;for(let v of i)h.set(v,w),w+=v.length;return h}var Ga=/^[+-]?(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?$/i;function Rn(o){if(typeof o=="number")return o;if(typeof o!="string"||!o)return NaN;let e=o.charCodeAt(0);return e>=48&&e<=57||e===43||e===45||e===46?Ga.test(o)?Number(o):NaN:NaN}function bo(o,e,t){if(typeof o=="number"&&typeof e=="number")return o-e;if(typeof o=="number"||typeof e=="number"){let n=Rn(o),r=Rn(e),i=!Number.isNaN(n),s=!Number.isNaN(r);if(i&&s)return n-r;if(i!==s)return i?-1:1}else if(typeof o=="string"&&typeof e=="string"){let n=Rn(o),r=Rn(e);if(!Number.isNaN(n)&&!Number.isNaN(r))return n-r;if(!Number.isNaN(n)||!Number.isNaN(r))return Number.isNaN(n)?1:-1}return o instanceof Date&&e instanceof Date?o.getTime()-e.getTime():typeof o=="boolean"&&typeof e=="boolean"?Number(o)-Number(e):t.compare(String(o),String(e))}function za(o,e){var t,n;if(_(e))return null;if(o.type==="number"){let r=typeof e=="number"?e:Number(e);return Number.isNaN(r)?null:r}return o.type==="date"?(n=(t=ye(e))==null?void 0:t.getTime())!=null?n:null:e}function Tt(o,e,t){let n=_(o),r=_(e);return n||r?n===r?0:n?1:-1:bo(o,e,t)}function Sn(o,e,t,n){let r=_(o),i=_(e);return r||i?r===i?0:r?1:-1:bo(o,e,t)*n}function ai(o,e,t,n,r){let i=e.map(l=>({def:t(l.colId),mul:l.dir==="desc"?-1:1})).filter(l=>!!l.def);if(!i.length)return o;let s=i.map(l=>o.map(c=>{let d=j(l.def,c.data);return l.def.comparator?d:za(l.def,d)})),a=o.map((l,c)=>c);return a.sort((l,c)=>{var d;if(r&&r[l]!==r[c])return r[l]-r[c];for(let u=0;u<i.length;u++){let{def:f,mul:p}=i[u],m=s[u][l],b=s[u][c],g;if(f.comparator)try{g=(Number(f.comparator(m,b,o[l].data,o[c].data))||0)*p}catch{G(`comparator of column "${(d=f.id)!=null?d:f.field}" threw; treating values as equal`),g=0}else{let h=_(m),w=_(b);g=h||w?h===w?0:h?1:-1:bo(m,b,n)*p}if(g)return g}return l-c}),a.map(l=>o[l])}var Va=/^[=+\-@\t\r]/;function li(o,e=","){let t=n=>{let r=n.value;return n.text&&Va.test(r)&&(r=`'${r}`),r.includes(e)||/["\r\n]/.test(r)||/^\s|\s$/.test(r)?`"${r.replace(/"/g,'""')}"`:r};return o.map(n=>n.map(t).join(e)).join(`\r
|
|
24
|
+
`)}function vo(o){let e=o.slice(0,o.search(/\r?\n|$/)),t=s=>e.split(s).length-1,n=t(" "),r=t(";"),i=t(",");return n&&n>=i&&n>=r?" ":r>i?";":","}function kn(o,e=vo(o)){return wo(o.replace(/^\uFEFF/,""),e)}var qa=(()=>{let o=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;o[e]=t>>>0}return o})();function Wa(o){let e=4294967295;for(let t=0;t<o.length;t++)e=qa[(e^o[t])&255]^e>>>8;return(e^4294967295)>>>0}var di=new TextEncoder;function ci(o){let e=o.map(d=>{let u=di.encode(d.name),f=typeof d.data=="string"?di.encode(d.data):d.data;return{name:u,data:f,crc:Wa(f),offset:0}}),t=e.reduce((d,u)=>d+30+u.name.length+u.data.length,0),n=e.reduce((d,u)=>d+46+u.name.length,0),r=new Uint8Array(t+n+22),i=new DataView(r.buffer),s=0,a=0,l=33;for(let d of e)d.offset=s,i.setUint32(s,67324752,!0),i.setUint16(s+4,20,!0),i.setUint16(s+6,2048,!0),i.setUint16(s+8,0,!0),i.setUint16(s+10,a,!0),i.setUint16(s+12,l,!0),i.setUint32(s+14,d.crc,!0),i.setUint32(s+18,d.data.length,!0),i.setUint32(s+22,d.data.length,!0),i.setUint16(s+26,d.name.length,!0),i.setUint16(s+28,0,!0),r.set(d.name,s+30),r.set(d.data,s+30+d.name.length),s+=30+d.name.length+d.data.length;let c=s;for(let d of e)i.setUint32(s,33639248,!0),i.setUint16(s+4,20,!0),i.setUint16(s+6,20,!0),i.setUint16(s+8,2048,!0),i.setUint16(s+10,0,!0),i.setUint16(s+12,a,!0),i.setUint16(s+14,l,!0),i.setUint32(s+16,d.crc,!0),i.setUint32(s+20,d.data.length,!0),i.setUint32(s+24,d.data.length,!0),i.setUint16(s+28,d.name.length,!0),i.setUint16(s+30,0,!0),i.setUint16(s+32,0,!0),i.setUint16(s+34,0,!0),i.setUint16(s+36,0,!0),i.setUint32(s+38,0,!0),i.setUint32(s+42,d.offset,!0),r.set(d.name,s+46),s+=46+d.name.length;return i.setUint32(s,101010256,!0),i.setUint16(s+8,e.length,!0),i.setUint16(s+10,e.length,!0),i.setUint32(s+12,s-c,!0),i.setUint32(s+16,c,!0),r}var Mn=o=>o.length>4&&o[0]===80&&o[1]===75&&o[2]===3&&o[3]===4,ui=o=>new Error(`Zip file is too large: it unpacks to more than ${o>=1048576?`${Math.round(o/1048576)} MB`:`${o} bytes`}`);async function ja(o,e){if(typeof DecompressionStream=="undefined")throw new Error("This browser cannot read compressed xlsx files (no DecompressionStream)");let n=new Response(o).body.pipeThrough(new DecompressionStream("deflate-raw")).getReader(),r=[],i=0;for(;;){let{done:l,value:c}=await n.read();if(l)break;if(i+=c.length,i>e)throw await n.cancel().catch(()=>{}),ui(e);r.push(c)}let s=new Uint8Array(i),a=0;for(let l of r)s.set(l,a),a+=l.length;return s}async function fi(o,e={}){var u,f;let t=(u=e.maxBytes)!=null?u:209715200,n=(f=e.maxEntries)!=null?f:1e4,r=new DataView(o.buffer,o.byteOffset,o.byteLength),i=-1;for(let p=o.length-22;p>=Math.max(0,o.length-65557);p--)if(r.getUint32(p,!0)===101010256){i=p;break}if(i<0)throw new Error("Not a zip file");let s=r.getUint16(i+10,!0);if(s>n)throw new Error(`Zip file has too many entries (${s}, at most ${n})`);let a=r.getUint32(i+16,!0),l=new TextDecoder,c=new Map,d=0;for(let p=0;p<s;p++){if(r.getUint32(a,!0)!==33639248)throw new Error("Broken zip directory");let m=r.getUint16(a+10,!0),b=r.getUint32(a+20,!0),g=r.getUint16(a+28,!0),h=r.getUint16(a+30,!0),w=r.getUint16(a+32,!0),y=r.getUint32(a+42,!0),v=l.decode(o.subarray(a+46,a+46+g)),k=r.getUint16(y+26,!0),x=r.getUint16(y+28,!0),S=y+30+k+x,E=o.subarray(S,S+b),A;if(m===0)A=E;else if(m===8)A=await ja(E,t-d);else throw new Error(`Unsupported zip compression ${m}`);if(d+=A.length,d>t)throw ui(t);c.set(v,A),a+=46+g+h+w}return c}function xo(o){let e="";for(let t=o+1;t>0;t=Math.floor((t-1)/26))e=String.fromCharCode(65+(t-1)%26)+e;return e}var hi=Date.UTC(1899,11,30),pi=864e5;function Ua(o){return(Date.UTC(o.getFullYear(),o.getMonth(),o.getDate(),o.getHours(),o.getMinutes(),o.getSeconds(),o.getMilliseconds())-hi)/pi}function Ka(o){let e=new Date(Math.round(o*pi)+hi);return new Date(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds())}var _a=/[\u0000-\u0008\u000b\u000c\u000e-\u001f]/g,En=o=>o.replace(_a,"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,"""),lt=`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
25
|
+
`,Co="http://schemas.openxmlformats.org/spreadsheetml/2006/main",dt="http://schemas.openxmlformats.org/officeDocument/2006/relationships";function Xa(o){let e=new Set;return o.map((t,n)=>{var s;let r=((s=t.name)!=null?s:`Sheet${n+1}`).replace(/[[\]:*?/\\]/g," ").slice(0,31).trim()||`Sheet${n+1}`,i=r;for(let a=2;e.has(i.toLowerCase());a++)i=`${r.slice(0,31-` (${a})`.length)} (${a})`;return e.add(i.toLowerCase()),i})}function _e(o){let e=new Map([["General",0]]),t=[],n=['<xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0"/>'],r=new Map([["General||||",0]]),i=['<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]]),c=h=>h&&/^[0-9a-f]{8}$/i.test(h)?h.toUpperCase():h&&/^[0-9a-f]{6}$/i.test(h)?`FF${h.toUpperCase()}`:"",d=(h,w)=>{let y=`${h?1:0}|${w}`,v=s.get(y);return v===void 0&&(v=i.length,i.push(`<font>${h?"<b/>":""}<sz val="11"/>${w?`<color rgb="${w}"/>`:""}<name val="Calibri"/></font>`),s.set(y,v)),v},u=h=>{if(!h)return 0;let w=l.get(h);return w===void 0&&(w=a.length,a.push(`<fill><patternFill patternType="solid"><fgColor rgb="${h}"/><bgColor indexed="64"/></patternFill></fill>`),l.set(h,w)),w},f=(h,w)=>{let y=c(w.color),v=w.header?"FFF2F4F7":c(w.fill),k=!!(w.bold||w.header),x=w.align==="left"||w.align==="center"||w.align==="right"?w.align:"",S=`${h}|${k?1:""}|${y}|${v}|${x}`,E=r.get(S);if(E!==void 0)return E;let A=e.get(h);A===void 0&&(A=164+t.length,t.push(h),e.set(h,A));let F=d(k,y),C=u(v),M=`numFmtId="${A}" fontId="${F}" fillId="${C}" borderId="0" xfId="0"`+(A?' applyNumberFormat="1"':"")+(F?' applyFont="1"':"")+(C?' applyFill="1"':"")+(x?' applyAlignment="1"':"");return E=n.length,n.push(x?`<xf ${M}><alignment horizontal="${x}"/></xf>`:`<xf ${M}/>`),r.set(S,E),E},p=Xa(o),m=o.map(h=>{var F,C,M;let w=h.rows.map((T,L)=>{let I=T.map((D,N)=>{var Y;let P=D!==null&&typeof D=="object"&&!(D instanceof Date)?D:{v:D},$=`${xo(N)}${L+1}`,O=P.v,H=(Y=P.fmt)!=null?Y:"General";O instanceof Date&&(Number.isNaN(O.getTime())?O=null:(H==="General"&&(H="yyyy-mm-dd"),O=Ua(O)));let q=f(H,P),K=q?` s="${q}"`:"";return O==null||O===""?K?`<c r="${$}"${K}/>`:"":typeof O=="number"?Number.isFinite(O)?`<c r="${$}"${K}><v>${O}</v></c>`:"":typeof O=="boolean"?`<c r="${$}"${K} t="b"><v>${O?1:0}</v></c>`:`<c r="${$}"${K} t="inlineStr"><is><t xml:space="preserve">${En(String(O))}</t></is></c>`}).join("");return`<row r="${L+1}">${I}</row>`}).join(""),y=Math.max(0,...h.rows.map(T=>T.length)),v=(F=h.freezeRows)!=null?F:0,k=v?`<sheetViews><sheetView workbookViewId="0"><pane ySplit="${v}" topLeftCell="A${v+1}" activePane="bottomLeft" state="frozen"/></sheetView></sheetViews>`:'<sheetViews><sheetView workbookViewId="0"/></sheetViews>',x=(C=h.widths)!=null&&C.length?`<cols>${h.widths.map((T,L)=>`<col min="${L+1}" max="${L+1}" width="${Math.max(4,Math.min(120,T)).toFixed(1)}" customWidth="1"/>`).join("")}</cols>`:"",S=h.autoFilter&&y&&v&&h.rows.length>=v?`<autoFilter ref="A${v}:${xo(y-1)}${h.rows.length}"/>`:"",E=((M=h.merges)!=null?M:[]).filter(T=>typeof T=="string"&&/^[A-Z]{1,3}\d{1,7}:[A-Z]{1,3}\d{1,7}$/.test(T)),A=E.length?`<mergeCells count="${E.length}">${E.map(T=>`<mergeCell ref="${T}"/>`).join("")}</mergeCells>`:"";return`${lt}<worksheet xmlns="${Co}" xmlns:r="${dt}">${k}<sheetFormatPr defaultRowHeight="15"/>${x}<sheetData>${w}</sheetData>${S}${A}</worksheet>`}),b=`${lt}<styleSheet xmlns="${Co}">`+(t.length?`<numFmts count="${t.length}">${t.map((h,w)=>`<numFmt numFmtId="${164+w}" formatCode="${En(h)}"/>`).join("")}</numFmts>`:"")+`<fonts count="${i.length}">${i.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>`,g=[{name:"[Content_Types].xml",data:`${lt}<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"/>`+o.map((h,w)=>`<Override PartName="/xl/worksheets/sheet${w+1}.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/>`).join("")+"</Types>"},{name:"_rels/.rels",data:`${lt}<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="${dt}/officeDocument" Target="xl/workbook.xml"/></Relationships>`},{name:"xl/workbook.xml",data:`${lt}<workbook xmlns="${Co}" xmlns:r="${dt}"><sheets>`+p.map((h,w)=>`<sheet name="${En(h)}" sheetId="${w+1}" r:id="rId${w+1}"/>`).join("")+"</sheets>"+(o.some(h=>h.autoFilter&&h.freezeRows||h.printTitleRows)?`<definedNames>${o.map((h,w)=>{var E;let y=Math.max(0,...h.rows.map(A=>A.length)),v=`'${En(p[w].replace(/'/g,"''"))}'`,k=h.autoFilter&&h.freezeRows&&y?`<definedName name="_xlnm._FilterDatabase" localSheetId="${w}" hidden="1">${v}!$A$${h.freezeRows}:$${xo(y-1)}$${h.rows.length}</definedName>`:"",x=Math.min((E=h.printTitleRows)!=null?E:0,h.rows.length),S=x>0&&Number.isInteger(x)?`<definedName name="_xlnm.Print_Titles" localSheetId="${w}">${v}!$1:$${x}</definedName>`:"";return k+S}).join("")}</definedNames>`:"")+"</workbook>"},{name:"xl/_rels/workbook.xml.rels",data:`${lt}<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">`+o.map((h,w)=>`<Relationship Id="rId${w+1}" Type="${dt}/worksheet" Target="worksheets/sheet${w+1}.xml"/>`).join("")+`<Relationship Id="rId${o.length+1}" Type="${dt}/styles" Target="styles.xml"/></Relationships>`},{name:"xl/styles.xml",data:b},...m.map((h,w)=>({name:`xl/worksheets/sheet${w+1}.xml`,data:h}))];return ci(g)}var Ja=new Set([14,15,16,17,18,19,20,21,22,27,30,36,45,46,47,50,57]);function Ya(o){let e=o.replace(/"[^"]*"/g,"").replace(/\[[^\]]*\]/g,"").replace(/\\./g,"");return/[dmyhs]/i.test(e)&&!/^[#0.,%\s]*$/.test(e)}function Pt(o){return o?new DOMParser().parseFromString(new TextDecoder().decode(o),"application/xml"):null}var Se=(o,e)=>[...o.getElementsByTagNameNS("*",e)];function Za(o){let e=0;for(let t of o){let n=t.charCodeAt(0);if(n<65||n>90)break;e=e*26+(n-64)}return e-1}var Qa=1048576,el=16384;async function An(o){var p,m,b,g,h,w,y,v,k;let e=o instanceof Uint8Array?o:new Uint8Array(o);if(!Mn(e))throw new Error("Not an xlsx file");let t=await fi(e),n=Pt(t.get("xl/workbook.xml"));if(!n)throw new Error("xlsx has no workbook");let r=Pt(t.get("xl/_rels/workbook.xml.rels")),i=new Map(r?Se(r,"Relationship").map(x=>{var S,E;return[(S=x.getAttribute("Id"))!=null?S:"",(E=x.getAttribute("Target"))!=null?E:""]}):[]),s=Pt(t.get("xl/sharedStrings.xml")),a=s?Se(s,"si").map(x=>Se(x,"t").map(S=>{var E;return(E=S.textContent)!=null?E:""}).join("")):[],l=Pt(t.get("xl/styles.xml")),c=new Map(l?Se(l,"numFmt").map(x=>{var S;return[Number(x.getAttribute("numFmtId")),(S=x.getAttribute("formatCode"))!=null?S:""]}):[]),d=l?Se(l,"cellXfs")[0]:void 0,u=(d?[...d.children].filter(x=>x.localName==="xf"):[]).map(x=>{var E;let S=Number((E=x.getAttribute("numFmtId"))!=null?E:0);return Ja.has(S)||c.has(S)&&Ya(c.get(S))}),f=[];for(let x of Se(n,"sheet")){let S=(m=(p=x.getAttribute("r:id"))!=null?p:x.getAttributeNS(dt,"id"))!=null?m:"",E=(b=i.get(S))!=null?b:"";E=E.startsWith("/")?E.slice(1):`xl/${E}`;let A=Pt(t.get(E)),F=[];if(A){for(let C of Se(A,"row")){let M=Number((g=C.getAttribute("r"))!=null?g:F.length+1)-1;if(!Number.isInteger(M)||M<0||M>=Qa)continue;let T=[],L=0;for(let I of[...C.children].filter(D=>D.localName==="c")){let D=I.getAttribute("r"),N=D?Za(D):L;if(N<0||N>=el)continue;L=N+1;let P=I.getAttribute("t"),$=(w=(h=Se(I,"v")[0])==null?void 0:h.textContent)!=null?w:null,O=null;if(P==="s")O=$===null?null:(y=a[Number($)])!=null?y:"";else if(P==="inlineStr")O=Se(I,"t").map(H=>{var q;return(q=H.textContent)!=null?q:""}).join("");else if(P==="b")O=$==="1";else if(P==="str"||P==="e")O=$;else if($!==null&&$!==""){let H=Number($);O=u[Number((v=I.getAttribute("s"))!=null?v:0)]?Ka(H):H}T[N]=O}for(let I=0;I<T.length;I++)T[I]===void 0&&(T[I]=null);F[M]=T}for(let C=0;C<F.length;C++)F[C]||(F[C]=[])}f.push({name:(k=x.getAttribute("name"))!=null?k:`Sheet${f.length+1}`,rows:F})}return f}function In(o,e){return Array.isArray(e)?e.flatMap(t=>{var r,i;let n=o.columns.getNode(t);return!n||n.children||B(t)?(G(`export: unknown column "${t}"`),[]):[{id:t,def:n.def,node:n,width:(i=(r=o.columns.getColumn(t))==null?void 0:r.width)!=null?i:n.width}]}):o.columns.displayed().filter(t=>!B(t.id)).map(t=>({id:t.id,def:t.def,node:t.node,width:t.width}))}function Fn(o,e){return e==="selected"?o.shownSelectedRows():e==="all"?o.rowModel.server?o.rowModel.dataRows().map(t=>t.data):o.viewRows():o.orderedDataRows().map(t=>t.data)}var Xe=(o,e)=>{var t,n;return(n=(t=o.header)!=null?t:o.field)!=null?n:e},tl=["left","center","right"],nl=/^[+-]?(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?$/i,ke=o=>String(o!=null?o:"").replace(/[&<>"]/g,e=>({"&":"&","<":"<",">":">",'"':"""})[e]),ol=["A4","A3","A5","B4","B5","letter","legal"],rl=760,il=o=>`"${o.replace(/[\\"<\n\r]/g,e=>e===`
|
|
26
|
+
`?"\\A ":e==="\r"?"":`\\${e.charCodeAt(0).toString(16)} `)}"`,gi=o=>o?`#${o.slice(2)}`:"";function sl(o,e,t){let n=[],r=0,i=o.store.state.sort,s=o.collator(),a=(l,c)=>{var m,b;if(c>=t.length){for(let g of l)n.push({kind:"row",row:g,n:++r});return}let d=t[c],u=(m=o.columns.getNode(d))==null?void 0:m.def;if(!u)return a(l,c+1);let f=new Map;for(let g of l){let h=j(u,g),w=_(h)?"":ie(h),y=f.get(w);y||f.set(w,y={value:h,rows:[]}),y.rows.push(g)}let p=((b=i.find(g=>g.colId===d))==null?void 0:b.dir)==="desc"?-1:1;for(let g of[...f.values()].sort((h,w)=>Sn(h.value,w.value,s,p)))n.push({kind:"group",colId:d,value:g.value,rows:g.rows,level:c}),a(g.rows,c+1)};return a(e,0),n}var al=`
|
|
27
27
|
* { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
|
|
28
28
|
body { font: 10.5px/1.45 system-ui, 'Pretendard', 'Malgun Gothic', 'Apple SD Gothic Neo', sans-serif; color: #111827; margin: 0; }
|
|
29
29
|
header { display: flex; justify-content: space-between; align-items: flex-end; gap: 16px; margin: 0 0 10px; padding-bottom: 8px; border-bottom: 2px solid #111827; }
|
|
@@ -43,11 +43,10 @@ tr.group td { background: #eef2f7; font-weight: 600; border-top: 1px solid #cbd5
|
|
|
43
43
|
tr.group.level-0 td { background: #e2e8f0; }
|
|
44
44
|
tr.title td { border: 0; padding: 0 0 4px; background: none; }
|
|
45
45
|
tr.total td { font-weight: 700; background: #f3f4f6; border-top: 1.5px solid #111827; border-bottom: 0; }
|
|
46
|
-
`,
|
|
47
|
-
@page { ${
|
|
48
|
-
</style></head><body>${t.repeatTitle?"":a}<table${t.fit?' class="fit"':""}>${r}<thead>${y}</thead><tbody>${m}</tbody>${g?`<tfoot>${g}</tfoot>`:""}</table></body></html>`}function bi(o){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(),G("printing is not supported in this environment");return}t.open(),t.write(o),t.close();let n=e.contentWindow,r=()=>setTimeout(()=>e.remove(),1e3);n.addEventListener("afterprint",r),setTimeout(()=>{try{n.focus(),n.print()}catch{G("printing is not supported in this environment")}r()},50)}function So(o,e={}){let t=Pn(o,e.columns),n=o.store.state.locale.code,r=typeof e.separator=="string"&&e.separator.length===1?e.separator:",",i=Ln(o,e.rows).map(s=>t.map(a=>{let l=j(a.def,s),d=a.def.type,c=fn(a.def,l,n);return{value:c,text:typeof l!="number"&&(!(d==="number"||d==="date"||d==="boolean")||typeof l=="string"&&!rl.test(c))}}));return e.headers!==!1&&i.unshift(t.map(s=>({value:_e(s.def,s.id),text:!0}))),ci(i,r)}function Mo(o,e={}){let t=Pn(o,e.columns),n=o.store.state.locale.code,r=e.formatted?t.map(l=>ne(l.def,n)):null,i=t.map(l=>e.keys==="header"?_e(l.def,l.id):l.id),s=Ln(o,e.rows).map(l=>{let d={};return t.forEach((c,u)=>{let f=j(c.def,l);d[i[u]]=r?K(f)?"":r[u](f):f===void 0?null:f}),d}),a=typeof e.space=="number"&&e.space>=0?Math.min(10,e.space):2;return JSON.stringify(s,null,a)}function fl(o){var i;let e=o.format;if(o.type==="date")return e==="datetime"?"yyyy-mm-dd hh:mm":e==="time"?"hh:mm":"yyyy-mm-dd";if(o.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=(i=t.maximumFractionDigits)!=null?i:t.minimumFractionDigits,r=n?`.${"0".repeat(Math.min(10,n))}`:"";return t.style==="percent"?`0${r}%`:`${t.useGrouping===!1?"0":"#,##0"}${r}`}function An(o){let e=/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(o.trim());if(e)return`FF${(e[1].length===3?[...e[1]].map(i=>i+i).join(""):e[1]).toUpperCase()}`;let t=/^rgba?\(\s*(\d+)[\s,]+(\d+)[\s,]+(\d+)(?:[\s,/]+([\d.]+%?))?\s*\)$/i.exec(o.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 vi(o){let e=o.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}},i=r(""),s=new Map;return{of(a){let l=s.get(a);if(!l){let d=r(a);l={},d.color!==i.color&&An(d.color)&&(l.color=An(d.color)),d.fill!==i.fill&&An(d.fill)&&(l.fill=An(d.fill)),d.bold&&!i.bold&&(l.bold=!0),s.set(a,l)}return l},dispose:()=>t.remove()}}function Eo(o,e={}){return Ke([Ao(o,e)])}function Ao(o,e={}){var m;let t=Pn(o,e.columns),n=o.store.state.locale.code,r=[],i=[],s=0;if(e.headers!==!1){let g=t.map(b=>{let v=[];for(let M=b.node;M;M=M.parent)v.unshift(M);return v});s=Math.max(1,...g.map(b=>b.length));let w=b=>{let v="";for(let M=b+1;M>0;M=Math.floor((M-1)/26))v=String.fromCharCode(65+(M-1)%26)+v;return v};for(let b=0;b<s;b++){let v=[];for(let M=0;M<t.length;M++){let x=g[M],R=x.length-1;if(b<R){let E=x[b],T=M>0?g[M-1][b]:null;if(v.push({v:T===E?null:_e(E.def,E.id),header:!0}),T!==E){let k=M;for(;k+1<t.length&&g[k+1][b]===E;)k++;k>M&&i.push(`${w(M)}${b+1}:${w(k)}${b+1}`)}}else b===R?(v.push({v:_e(t[M].def,t[M].id),header:!0}),s-1>b&&i.push(`${w(M)}${b+1}:${w(M)}${s}`)):v.push({v:null,header:!0})}r.push(v)}}let a=t.map(g=>fl(g.def)),l=t.map(g=>ne(g.def,n)),d=Ln(o,e.rows),c=e.styles!==!1,u=c&&t.some(g=>g.def.cellClass)?vi(o):null,f=(g,w,b)=>{var M;if(K(b))return null;let v=(M=a[w])!=null?M:void 0;switch(g.def.type){case"number":{let x=typeof b=="number"?b:Number(b);return Number.isFinite(x)?{v:x,fmt:v}:String(b)}case"date":{let x=ye(b);return x?{v:x,fmt:v}:String(b)}case"boolean":return typeof b=="boolean"?b:String(b);default:return l[w](b)}};try{d.forEach((g,w)=>{r.push(t.map((b,v)=>{let M=j(b.def,g),x=f(b,v,M);if(!c)return x;let R=b.def.align?{align:b.def.align}:{};if(u&&b.def.cellClass){let T;try{T=typeof b.def.cellClass=="function"?b.def.cellClass({value:M,formatted:l[v](M),row:g,rowIndex:w,column:b.def}):b.def.cellClass}catch{T=void 0}T&&(R={...R,...u.of(T)})}let E=o.cellFormat(g,b.id,M);if(E){let T=io(E.style.color),k=io(E.style.background);T&&(R.color=T),k&&(R.fill=k),E.style.bold&&(R.bold=!0);let S=ve(E.style);S&&(R.align=S)}return Object.keys(R).length?x!==null&&typeof x=="object"&&!(x instanceof Date)?{...x,...R}:{v:x,...R}:x}))})}finally{u==null||u.dispose()}let p=new Set,h=g=>{let w="";for(let b=g+1;b>0;b=Math.floor((b-1)/26))w=String.fromCharCode(65+(b-1)%26)+w;return w},y=(g,w,b,v)=>{for(let M=g;M<=b;M++)for(let x=w;x<=v;x++)if(p.has(`${M},${x}`))return;for(let M=g;M<=b;M++)for(let x=w;x<=v;x++)p.add(`${M},${x}`);i.push(`${h(w)}${s+g+1}:${h(v)}${s+b+1}`)};return d.forEach((g,w)=>t.forEach((b,v)=>{let M=b.def.colSpan?kt(b.def.colSpan,b.def,g,w,t.length-v):1;M>1&&y(w,v,w,v+M-1)})),t.forEach((g,w)=>{if(!g.def.merge&&!g.def.rowSpan)return;let b=ot(d,g.def);for(let v=0;v<d.length;v++)b.start[v]===v&&b.end[v]>v&&y(v,w,b.end[v],w)}),{name:(m=e.sheetName)!=null?m:"Sheet1",rows:r,widths:t.map(g=>Math.round(g.width/7)),merges:i,freezeRows:s,printTitleRows:e.repeatHeader===!1?0:s+(Number.isInteger(e.repeatRows)&&e.repeatRows>0?e.repeatRows:0),autoFilter:s>0}}function Xe(o,e,t){if(typeof URL=="undefined"||typeof URL.createObjectURL!="function"||typeof document=="undefined"){G("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=o,r.style.display="none",document.body.append(r),r.click(),r.remove(),setTimeout(()=>URL.revokeObjectURL(n),1e3)}var Tn=o=>String(o!=null?o:"").trim().toLowerCase();function hl(o){var e;return o==null?"":o instanceof Date?o.getHours()||o.getMinutes()||o.getSeconds()?o.toISOString():(e=he(o))!=null?e:"":String(o)}async function xi(o,e,t={}){var y;let n=e instanceof Uint8Array?e:new Uint8Array(e instanceof ArrayBuffer?e:await e.arrayBuffer()),r;if(Rn(n)){let m=await Mn(n),g=typeof t.sheet=="string"?m.find(w=>w.name===t.sheet):m[typeof t.sheet=="number"?t.sheet:0];if(!g)throw new Error(`Sheet ${String(t.sheet)} not found`);r=g.rows}else{let m=new TextDecoder().decode(n);r=kn(m,vo(m))}if(!r.length)return{rows:[],skipped:0};let i=[],s=m=>m.forEach(g=>g.children?s(g.children):!B(g.id)&&g.def.field&&i.push(g));s(o.columns.roots());let a=m=>{var w,b;let g=Tn(m);return g&&(b=(w=i.find(v=>Tn(v.def.header)===g))!=null?w:i.find(v=>Tn(v.def.field)===g||Tn(v.id)===g))!=null?b:null},l=1,d=new Set(r[0].map(a).filter(Boolean));for(;l<Math.min(r.length,5);){let g=((y=r[l])!=null?y:[]).filter(b=>b!=null&&String(b).trim()!==""),w=g.map(a).filter(b=>b&&!d.has(b));if(!g.length||!g.every(b=>typeof b=="string")||!w.length)break;w.forEach(b=>d.add(b)),l++}let c=Math.max(...r.slice(0,l).map(m=>{var g;return(g=m==null?void 0:m.length)!=null?g:0})),u=Array.from({length:c},(m,g)=>{var w;for(let b=l-1;b>=0;b--){let v=(w=r[b])==null?void 0:w[g];if(v!=null&&String(v).trim()!=="")return a(v)}return null}),f=o.store.state.data[0],p=0,h=[];for(let m of r.slice(l)){if(!m||m.every(w=>w==null||String(w).trim()===""))continue;let g={};u.forEach((w,b)=>{if(!w)return;let v=w.def,M=hl(m[b]),x=o.acceptText(v,g,M,f==null?void 0:f[v.field]);x.ok?M===""&&(x.value===null||x.value==="")||(g[v.field]=x.value):p++}),h.push(g)}return t.mode==="replace"?o.setData(h):o.addRows(h),{rows:h,skipped:p}}var pl="http://www.w3.org/2000/svg";var To=["var(--fg-accent, #2563eb)","#f59e0b","#10b981","#ef4444","#8b5cf6","#06b6d4","#ec4899","#84cc16","#f97316","#64748b","#14b8a6","#a855f7"],Ne=o=>To[o%To.length];function oe(o,e={},t=""){let n=document.createElementNS(pl,o);t&&n.setAttribute("class",t);for(let[r,i]of Object.entries(e))n.setAttribute(r,String(i));return n}function Pt(o,e){let t=oe("title");t.textContent=e,o.append(t)}function Po(o,e,t=5){let n=Math.min(0,o),r=Math.max(0,e);n===r&&(r=n+1);let i=(r-n)/t,s=10**Math.floor(Math.log10(i)),a=[1,2,5,10].map(d=>d*s).find(d=>d>=i);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 Fn(o,e){var S,L;let t=new Intl.NumberFormat(e.locale,{maximumFractionDigits:2}),n=new Intl.NumberFormat(e.locale,{notation:"compact",maximumFractionDigits:1}),r=oe("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 i=e.series.slice(0,To.length),s=e.categories,a=16;if(e.title){let A=oe("text",{x:320,y:22,"text-anchor":"middle"},"fg-chart-title");A.textContent=e.title,r.append(A),a=36}let l=oe("g",{},"fg-chart-legend"),d=e.type==="pie"||e.type==="donut",c=d?s:e.type==="scatter"?i.slice(1).map(A=>A.name):i.map(A=>A.name),u=16;c.forEach((A,F)=>{let I=oe("g",{transform:`translate(${u},350)`},"fg-chart-legend-item");I.append(oe("rect",{x:0,y:-9,width:10,height:10,rx:2,fill:Ne(F)}));let D=oe("text",{x:14,y:0});D.textContent=A,I.append(D),l.append(I),u+=24+Math.min(140,A.length*7)});let f=308;if(e.type==="scatter"){gl(r,e,i,a,f,t,n),r.append(l),o.replaceChildren(r);return}if(d){let A=((L=(S=i[0])==null?void 0:S.values)!=null?L:[]).map(N=>N!==null&&N>0?N:0),F=A.reduce((N,O)=>N+O,0),I=640/2,D=(a+f)/2,$=Math.max(10,(f-a)/2-6),P=-Math.PI/2;A.forEach((N,O)=>{if(!N||!F)return;let H=P+N/F*Math.PI*2,W=H-P>Math.PI?1:0,U=Z=>`${I+$*Math.cos(Z)},${D+$*Math.sin(Z)}`,J=N===F?`M${I-$},${D}a${$},${$} 0 1,0 ${2*$},0a${$},${$} 0 1,0 ${-2*$},0`:`M${I},${D}L${U(P)}A${$},${$} 0 ${W} 1 ${U(H)}Z`,_=oe("path",{d:J,fill:Ne(O)},"fg-chart-slice");Pt(_,`${s[O]}: ${t.format(N)} (${Math.round(N/F*1e3)/10}%)`),r.append(_),P=H}),e.type==="donut"&&r.append(oe("circle",{cx:I,cy:D,r:$*.58,fill:"var(--fg-bg, #fff)"},"fg-chart-donut-hole")),r.append(l),o.replaceChildren(r);return}let p=e.type==="stackedBar",h=0,y=0;s.forEach((A,F)=>{let I=0,D=0;for(let $ of i){let P=$.values[F];P==null||!Number.isFinite(P)||(p?P>=0?I+=P:D+=P:(y=Math.max(y,P),h=Math.min(h,P)))}p&&(y=Math.max(y,I),h=Math.min(h,D))});let m=Po(h,y),g=m[0],w=m[m.length-1],b=56,v=624,M=A=>f-(A-g)/(w-g)*(f-a),x=oe("g",{},"fg-chart-axis");for(let A of m){x.append(oe("line",{x1:b,x2:v,y1:M(A),y2:M(A)},A===0?"fg-chart-zero":"fg-chart-grid"));let F=oe("text",{x:b-6,y:M(A)+4,"text-anchor":"end"});F.textContent=n.format(A),x.append(F)}let R=(v-b)/Math.max(1,s.length),E=Math.max(1,Math.ceil(s.length/Math.floor((v-b)/56)));s.forEach((A,F)=>{if(F%E)return;let I=oe("text",{x:b+R*(F+.5),y:f+16,"text-anchor":"middle"}),D=Math.max(3,Math.min(12,Math.floor(R*E/10)));I.textContent=A.length>D?`${A.slice(0,D-1)}\u2026`:A,x.append(I)}),r.append(x);let T=oe("g",{},"fg-chart-plot"),k=e.type==="combo";if(k){let A=R*.6,F=i[0];s.forEach((I,D)=>{let $=F==null?void 0:F.values[D];if($==null||!Number.isFinite($))return;let P=b+R*D+(R-A)/2,N=oe("rect",{x:P,y:Math.min(M(0),M($)),width:Math.max(1,A-2),height:Math.max(.5,Math.abs(M($)-M(0))),fill:Ne(0),rx:2},"fg-chart-bar");Pt(N,`${F.name} \xB7 ${I}: ${t.format($)}`),T.append(N)})}if(e.type==="bar"||p){let A=R*.72,F=p?A:A/Math.max(1,i.length);s.forEach((I,D)=>{let $=0,P=0;i.forEach((N,O)=>{let H=N.values[D];if(H==null||!Number.isFinite(H))return;let W=0,U=H;p&&(W=H>=0?$:P,U=W+H,H>=0?$=U:P=U);let J=b+R*D+(R-A)/2+(p?0:F*O),_=oe("rect",{x:J,y:Math.min(M(W),M(U)),width:Math.max(1,F-2),height:Math.max(.5,Math.abs(M(U)-M(W))),fill:Ne(O),rx:2},"fg-chart-bar");Pt(_,`${N.name} \xB7 ${I}: ${t.format(H)}`),T.append(_)})})}else i.forEach((A,F)=>{if(k&&F===0)return;let I=A.values.map((P,N)=>P==null||!Number.isFinite(P)?null:[b+R*(N+.5),M(P),P]),D="",$=!1;for(let P of I){if(!P){$=!1;continue}D+=`${$?"L":"M"}${P[0]},${P[1]}`,$=!0}if(e.type==="area"){let P=I.filter(N=>!!N);if(P.length){let N=`M${P[0][0]},${M(0)}${P.map(O=>`L${O[0]},${O[1]}`).join("")}L${P[P.length-1][0]},${M(0)}Z`;T.append(oe("path",{d:N,fill:Ne(F),"fill-opacity":.18},"fg-chart-area"))}}T.append(oe("path",{d:D,fill:"none",stroke:Ne(F),"stroke-width":2.2,"stroke-linejoin":"round"},"fg-chart-line")),I.forEach((P,N)=>{if(!P)return;let O=oe("circle",{cx:P[0],cy:P[1],r:3.5,fill:Ne(F)},"fg-chart-point");Pt(O,`${A.name} \xB7 ${s[N]}: ${t.format(P[2])}`),T.append(O)})});r.append(T,l),o.replaceChildren(r)}function gl(o,e,t,n,r,i,s){var R,E,T,k;let a=(E=(R=t[0])==null?void 0:R.values)!=null?E:[],l=t.slice(1),d=S=>S!=null&&Number.isFinite(S),c=a.filter(d),u=l.flatMap(S=>S.values.filter(d));if(!c.length||!u.length)return;let f=S=>S.reduce((L,A)=>Math.min(L,A)),p=S=>S.reduce((L,A)=>Math.max(L,A)),h=Po(f(c),p(c)),y=Po(f(u),p(u)),m=56,g=624,w=S=>m+(S-h[0])/(h[h.length-1]-h[0])*(g-m),b=S=>r-(S-y[0])/(y[y.length-1]-y[0])*(r-n),v=oe("g",{},"fg-chart-axis");for(let S of y){v.append(oe("line",{x1:m,x2:g,y1:b(S),y2:b(S)},S===0?"fg-chart-zero":"fg-chart-grid"));let L=oe("text",{x:m-6,y:b(S)+4,"text-anchor":"end"});L.textContent=s.format(S),v.append(L)}h.forEach((S,L)=>{let A=L===0?"start":L===h.length-1?"end":"middle",F=oe("text",{x:w(S),y:r+16,"text-anchor":A});F.textContent=s.format(S),v.append(F)});let M=oe("text",{x:g,y:r+32,"text-anchor":"end"},"fg-chart-axis-name");M.textContent=`${(k=(T=t[0])==null?void 0:T.name)!=null?k:""} \u2192`,v.append(M),o.append(v);let x=oe("g",{},"fg-chart-plot");a.forEach((S,L)=>{d(S)&&l.forEach((A,F)=>{var $;let I=A.values[L];if(!d(I))return;let D=oe("circle",{cx:w(S),cy:b(I),r:4,fill:Ne(F),"fill-opacity":.8},"fg-chart-point");Pt(D,`${($=e.categories[L])!=null?$:""}: ${t[0].name} ${i.format(S)}, ${A.name} ${i.format(I)}`),x.append(D)})}),o.append(x)}var ml=12,Ci=500,Lo=["bar","stackedBar","line","area","combo","pie","donut","scatter"],Dn=class{constructor(e){this.grid=e;this.handles=new Set}create(e={}){var y,m;let{grid:t}=this,n=Lo.includes(e.type)?e.type:"bar",r=()=>t.store.state.locale,i=(y=e.range)!=null?y:t.store.state.range,s=null;if(i){let g=t.columns.getColumn(i.start.colId),w=t.columns.getColumn(i.end.colId);if(g&&w){let b=Mt({start:{rowIndex:i.start.rowIndex,colIndex:g.index},end:{rowIndex:i.end.rowIndex,colIndex:w.index}}),v=[];for(let M=b.r1;M<=b.r2&&v.length<Ci;M++){let x=t.rowModel.getRow(M);x&&!x.kind&&v.push(x.data)}s={rows:v,colIds:t.columns.displayed().slice(b.c1,b.c2+1).filter(M=>!B(M.id)).map(M=>M.id)}}}let a=()=>{var E;let g=s?s.rows:t.rowModel.dataRows().slice(0,Ci).map(T=>T.data),w=(s?s.colIds.map(T=>t.columns.getColumn(T)):t.columns.displayed().filter(T=>!B(T.id))).filter(T=>!!T),b=w[0]&&w[0].def.type!=="number"?w[0]:s?null:(E=w.find(T=>T.def.type!=="number"))!=null?E:null,v=T=>!!T.node.parent&&T.node.parent.id==="pivotgroup|total",M=w.filter(T=>T!==b&&T.def.type==="number"&&(s||!v(T))).slice(0,ml),x=T=>{var S,L,A;let k=[];for(let F=T.node.parent;F;F=F.parent)k.unshift((S=F.def.header)!=null?S:F.id);return k.push((A=(L=T.def.header)!=null?L:T.def.field)!=null?A:T.id),k.join(" \xB7 ")},R=b?ne(b.def,r().code):null;return{categories:g.map((T,k)=>b&&R?R(j(b.def,T)):String(k+1)),series:M.map(T=>({name:x(T),values:g.map(k=>{let S=j(T.def,k),L=typeof S=="number"?S:S==null||S===""?NaN:Number(S);return Number.isFinite(L)?L:null})}))}},l=C("div","fg-chart-body"),d=null,c=()=>Fn(l,{type:n,title:e.title,locale:r().code,...a()}),u=g=>({bar:r().chartBar,stackedBar:r().chartStacked,line:r().chartLine,area:r().chartArea,pie:r().chartPie,donut:r().chartDonut,combo:r().chartCombo,scatter:r().chartScatter})[g],f=()=>d==null?void 0:d.querySelectorAll(".fg-chart-type").forEach(g=>g.setAttribute("aria-pressed",String(g.dataset.type===n)));if(e.container)e.container.append(l);else{d=C("div","fg-chart-panel",{role:"dialog","aria-label":(m=e.title)!=null?m:u(n)});let g=C("div","fg-chart-head");for(let b of Lo){let v=C("button","fg-chart-type",{type:"button",title:u(b)});v.dataset.type=b,v.textContent=u(b),v.addEventListener("click",()=>h.setType(b)),g.append(v)}let w=C("button","fg-chooser-close",{type:"button","aria-label":r().close});w.textContent="\xD7",w.addEventListener("click",()=>h.destroy()),g.append(C("span","fg-chart-spacer"),w),d.append(g,l),t.renderer.root.append(d)}let p=[t.events.on("cellValueChanged",()=>c()),t.events.on("rowsAdded",()=>c()),t.events.on("rowsRemoved",()=>c())];s||p.push(t.events.on("sortChange",()=>c()),t.events.on("filterChange",()=>c()));let h={el:l,setType:g=>{Lo.includes(g)&&(n=g,f(),c())},update:()=>c(),destroy:()=>{p.forEach(g=>g()),(d!=null?d:l).remove(),this.handles.delete(h)}};return this.handles.add(h),f(),c(),h}destroy(){for(let e of[...this.handles])e.destroy()}};var ki=new WeakMap,wl=o=>typeof o=="function"?"custom":o;function Io(o,e){var t,n,r;return{rows:((t=o.rows)!=null?t:[]).filter(e),columns:((n=o.columns)!=null?n:[]).filter(e),values:((r=o.values)!=null?r:[]).filter(i=>i&&e(i.colId)).map(i=>{var s;return{colId:i.colId,aggFunc:(s=i.aggFunc)!=null?s:"sum"}}),totals:o.totals!==!1}}function Ri(o,e){let t=(n,r)=>n.length===r.length&&n.every((i,s)=>i===r[s]);return o.totals===e.totals&&t(o.rows,e.rows)&&t(o.columns,e.columns)&&o.values.length===e.values.length&&o.values.every((n,r)=>n.colId===e.values[r].colId&&n.aggFunc===e.values[r].aggFunc)}function Si(o,e,t,n,r){let i=Io(e,x=>!!t(x)),s=new Intl.Collator(r,{numeric:!0,sensitivity:"base"}),a=x=>t(x),l=(x,R)=>x.map(E=>re(j(a(E),R))).join(""),d=new Map,c=new WeakMap;for(let x of o){let R=l(i.columns,x);c.set(x,R),d.has(R)||d.set(R,i.columns.map(E=>j(a(E),x)))}let u=new WeakMap,f=x=>{var E;let R=u.get(x);if(!R){let T=x.flatMap(S=>{var L;return(L=ki.get(S))!=null?L:[]}),k=new Map;for(let S of T){let L=(E=c.get(S))!=null?E:l(i.columns,S),A=k.get(L);A||k.set(L,A=[]),A.push(S)}u.set(x,R={all:T,byCombo:k})}return R},p=[...d.entries()].sort((x,R)=>{for(let E=0;E<i.columns.length;E++){let T=At(x[1][E],R[1][E],s);if(T)return T}return 0});i.columns.length||p.splice(0,p.length,["",[]]);let h=[],y=(x,R,E)=>{var A,F;let T=i.values[R],k=a(T.colId),S=`pivot|${E}|${R}`;h.push({id:S,comboKey:x,valueIndex:R});let L=T.aggFunc;return{id:S,field:S,header:`${(F=(A=k.header)!=null?A:k.field)!=null?F:T.colId} (${n.agg(wl(L))})`,type:"number",format:L==="count"?"integer":k.format,width:130,aggFunc:(I,D)=>{var N;let $=f(D),P=x===null?$.all:(N=$.byCombo.get(x))!=null?N:[];return P.length?Ce(L,P.map(O=>j(k,O)),P):null}}},m=[],g=(x,R)=>{if(K(R))return n.blank;let E=a(x);return E.type==="number"&&!E.format?String(R):ne(E,r)(R)};if(!i.columns.length)i.values.forEach((x,R)=>m.push(y("",R,0)));else{let x=(R,E,T)=>{let k=[],S=0;for(;S<R.length;){let L=R[S][1][E],A=re(L),F=S;for(;F<R.length&&re(R[F][1][E])===A;)F++;let I=R.slice(S,F),D=E===i.columns.length-1?i.values.map(($,P)=>y(I[0][0],P,T+S)):x(I,E+1,T+S);k.push({id:`pivotgroup|${E}|${T+S}`,header:g(i.columns[E],L),children:D}),S=F}return k};m.push(...x(p,0,0)),i.totals&&i.values.length&&m.push({id:"pivotgroup|total",header:n.total,children:i.values.map((R,E)=>y(null,E,"total"))})}let w=new Map;for(let x of o){let R=l(i.rows,x),E=w.get(R);E||w.set(R,E={values:i.rows.map(T=>j(a(T),x)),src:[]}),E.src.push(x)}let v=[...w.values()].sort((x,R)=>{for(let E=0;E<i.rows.length;E++){let T=At(x.values[E],R.values[E],s);if(T)return T}return 0}).map(x=>{var T;let R={};i.rows.forEach((k,S)=>{var L;R[(L=a(k).field)!=null?L:k]=x.values[S]});let E=new Map;if(i.columns.length)for(let k of x.src){let S=l(i.columns,k),L=E.get(S);L||E.set(S,L=[]),L.push(k)}for(let k of h){let S=i.values[k.valueIndex],L=k.comboKey===null||!i.columns.length?x.src:(T=E.get(k.comboKey))!=null?T:[],A=a(S.colId);R[k.id]=L.length?Ce(S.aggFunc,L.map(F=>j(A,F)),L):null}return ki.set(R,x.src),R});return{columns:[...i.rows.map(x=>{var E,T,k,S;let R=a(x);return{id:x,field:(E=R.field)!=null?E:x,header:(k=(T=R.header)!=null?T:R.field)!=null?k:x,type:R.type,format:R.format,width:(S=R.width)!=null?S:140}}),...m],rows:v,groupBy:i.rows.slice(0,-1)}}var Mi=new WeakMap;function Ei(o){return Mi.get(o)}function Ai(o,e){let t=e.filter(s=>!s.aggFunc),n=e.filter(s=>s.aggFunc&&s.field&&!s.valueGetter),r=new Map;for(let s of o){let a=t.map(d=>re(j(d,s))).join(""),l=r.get(a);l||r.set(a,l=[]),l.push(s)}let i=[];for(let s of r.values()){let a={...s[0]};for(let l of n)try{a[l.field]=Ce(l.aggFunc,s.map(d=>j(l,d)),s)}catch{a[l.field]=null}Mi.set(a,s),i.push(a)}return i}var Ti={grouping:{en:"Row grouping and aggregation",ko:"\uD589 \uADF8\uB8F9\xB7\uC9D1\uACC4"},pivot:{en:"Pivot",ko:"\uD53C\uBC97"},charts:{en:"Charts",ko:"\uCC28\uD2B8"},range:{en:"Cell range selection",ko:"\uC140 \uBC94\uC704 \uC120\uD0DD"},clipboard:{en:"Range copy and paste",ko:"\uBC94\uC704 \uBCF5\uC0AC\xB7\uBD99\uC5EC\uB123\uAE30"},fill:{en:"Fill handle",ko:"\uCC44\uC6B0\uAE30 \uD578\uB4E4"},excel:{en:"Excel export",ko:"\uC5D1\uC140 \uB0B4\uBCF4\uB0B4\uAE30"},pdf:{en:"PDF export",ko:"PDF \uB0B4\uBCF4\uB0B4\uAE30"},serverGroups:{en:"Server-side groups",ko:"\uC11C\uBC84 \uADF8\uB8F9"},advancedFilter:{en:"Advanced filter",ko:"\uACE0\uAE09 \uD544\uD130"},sideBar:{en:"Side bar panels",ko:"\uC0AC\uC774\uB4DC\uBC14 \uD328\uB110"},contextMenu:{en:"Context menu",ko:"\uCEE8\uD14D\uC2A4\uD2B8 \uBA54\uB274"},summary:{en:"Summary rows",ko:"\uD569\uACC4 \uD589"},formulas:{en:"Formulas",ko:"\uC218\uC2DD"},find:{en:"Find",ko:"\uCC3E\uAE30"},conditional:{en:"Conditional formatting",ko:"\uC870\uAC74\uBD80 \uC11C\uC2DD"},assistant:{en:"AI assistant",ko:"AI \uC5B4\uC2DC\uC2A4\uD134\uD2B8"},merge:{en:"Merged cells",ko:"\uC140 \uBCD1\uD569"},workbook:{en:"Workbook",ko:"\uC6CC\uD06C\uBD81"}};var Je="1.10.0";var yl={kty:"EC",crv:"P-256",x:"sUTKkglZmk-HMKPNub8p7AeLBKesHCU8irIkw9rJlbE",y:"j0U_aKRDR7iApY9UpaD3hUemhBLZJwDv9-QiT_hUyw8"},Ye="https://freegrid.app/pricing/",dt="https://freegrid.app/license/personal/",Pi="https://freegrid.app/api/usage",bl="https://freegrid.app/api/domain-status",vl=o=>Number.parseInt(String(o).split(".")[0],10),Oi=o=>{let e=atob(o.replace(/-/g,"+").replace(/_/g,"/")+"=".repeat((4-o.length%4)%4));return Uint8Array.from(e,t=>t.charCodeAt(0))};function It(o){let e=o.toLowerCase().replace(/^\[|\]$/g,"");if(!e||e==="localhost"||e==="127.0.0.1"||e==="::1"||e==="0.0.0.0"||e.endsWith(".localhost")||e.endsWith(".test")||e.endsWith(".local"))return!0;let t=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/.exec(e);if(!t)return!1;let[n,r,i,s]=t.slice(1).map(Number);return[n,r,i,s].some(a=>a>255)?!1:n===10||n===192&&r===168||n===172&&r>=16&&r<=31}function xl(o,e){let t=o.toLowerCase().replace(/\.$/,"");return e.some(n=>{if(typeof n!="string")return!1;let r=n.toLowerCase().replace(/\.$/,""),i=r.startsWith("*.")?r.slice(2):r;return i?t===i||t.endsWith(`.${i}`):!1})}var $o=o=>{let e=typeof o=="string"?/^(\d{4})-(\d{2})-(\d{2})$/.exec(o):null;if(!e)return!1;let t=new Date(Date.UTC(Number(e[1]),Number(e[2])-1,Number(e[3])));return t.getUTCMonth()===Number(e[2])-1&&t.getUTCDate()===Number(e[3])},Cl=o=>`${o.getFullYear()}-${String(o.getMonth()+1).padStart(2,"0")}-${String(o.getDate()).padStart(2,"0")}`;function Bi(o,e,t={}){var s,a;let n=typeof o=="string"?o.trim().split("."):[];if(n.length!==3||n[0]!=="FG1")return{fail:{ok:!1,reason:"format"}};let r;try{if(r=JSON.parse(new TextDecoder().decode(Oi(n[1]))),!r||!Array.isArray(r.domains)||!r.domains.every(l=>typeof l=="string")||!$o(r.expires))return{fail:{ok:!1,reason:"format"}};if(r.major!==void 0&&!(Number.isInteger(r.major)&&r.major>0))return{fail:{ok:!1,reason:"format"}};if(r.plan!==void 0&&r.plan!=="company"&&r.plan!=="personal")return{fail:{ok:!1,reason:"format"}}}catch{return{fail:{ok:!1,reason:"format"}}}let i=null;return Cl((s=t.now)!=null?s:new Date)>r.expires?i={ok:!1,reason:"expired",info:r}:xl(e,r.domains)?r.major!==void 0&&vl((a=t.version)!=null?a:Je)>r.major&&(i={ok:!1,reason:"version",info:r}):i={ok:!1,reason:"domain",info:r},{parts:n,info:r,fail:i}}var Hi=()=>typeof crypto!="undefined"&&!!crypto.subtle;async function No(o,e,t={}){var l,d,c;let n=Bi(o,e,t);if(!("info"in n))return n.fail;let{parts:r,info:i}=n,s=()=>n.fail;if(!Hi())return(l=s())!=null?l:{ok:!1,reason:"unsupported",info:i};let a=crypto.subtle;try{let u=await a.importKey("jwk",(d=t.publicKey)!=null?d:yl,{name:"ECDSA",namedCurve:"P-256"},!1,["verify"]),f=new TextEncoder().encode(`${r[0]}.${r[1]}`);if(!await a.verify({name:"ECDSA",hash:"SHA-256"},u,Oi(r[2]),f))return{ok:!1,reason:"signature",info:i}}catch{return{ok:!1,reason:"signature",info:i}}return(c=s())!=null?c:{ok:!0,info:i}}var Lt,Li=new Map,Fo=new Map,Ii=new Set,Fi=new Set;function Gi(o){Lt=o}var $n={missing:`FreeGrid: every feature is free for 30 days on a domain. After that, paid features need a free personal key (${dt}) or a company key: ${Ye}
|
|
49
|
-
FreeGrid: \uB3C4\uBA54\uC778\uB9C8\uB2E4 30\uC77C \uB3D9\uC548 \uBAA8\uB4E0 \uAE30\uB2A5\uC744 \uBB34\uB8CC\uB85C \uC4F8 \uC218 \uC788\uC2B5\uB2C8\uB2E4. \uADF8 \uB4A4 \uC720\uB8CC \uAE30\uB2A5\uC5D0\uB294 \uBB34\uB8CC \uAC1C\uC778 \uD0A4(${
|
|
50
|
-
FreeGrid: \uC774 \uB3C4\uBA54\uC778\uC758 30\uC77C \uCCB4\uD5D8\uC774 \uB05D\uB098 \uC720\uB8CC \uAE30\uB2A5\uC774 \uAEBC\uC84C\uC2B5\uB2C8\uB2E4. \uBB34\uB8CC \uAC1C\uC778 \uD0A4(${
|
|
51
|
-
${
|
|
52
|
-
FreeGrid: ${e.ko}\uC740(\uB294) \uC720\uB8CC \uAE30\uB2A5\uC774\uB77C \uC774 \uB3C4\uBA54\uC778\uC5D0\uC11C \uAEBC\uC838 \uC788\uC2B5\uB2C8\uB2E4. \uBB34\uB8CC \uAC1C\uC778 \uD0A4(${dt}) \uB610\uB294 \uD68C\uC0AC \uD0A4\uB97C \uBC1B\uC73C\uC138\uC694: ${Ye}`)}var Dt={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"]},Ji=["blank","notBlank"],Oo=500,Nn=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 g,w;this.close();let n=this.grid.columns.getNode(e);if(!n||n.children||B(e))return;let r=this.grid.store.state.locale,i=n.def,s=C("div",`fg-menu fg-theme-${this.grid.store.state.theme}`,{role:"dialog","aria-label":r.columnMenu});this.grid.applyFontTo(s),He(i)&&s.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(b=>b.colId!==e))]])),s.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.paid&&(this.grid.options.groupPanel||a.length)){let b=a.includes(e)?[[r.ungroup,()=>this.grid.setGroupBy(a.filter(v=>v!==e))]]:[[r.groupByThis,()=>this.grid.setGroupBy([...a,e])]];a.length&&b.push([r.expandAll,()=>this.grid.expandAll(!0)],[r.collapseAll,()=>this.grid.expandAll(!1)]),s.append(this.section(b))}if(this.grid.getRollup()){let b=(g=i.aggFunc)!=null?g:null,v=(x,R)=>`${x?"\u2713 ":""}${R}`,M=["sum","avg","min","max","count"].map(x=>[v(b===x,r[x]),()=>this.grid.setColumnAggFunc(e,x)]);s.append(this.section([[v(!b,r.noAggregate),()=>this.grid.setColumnAggFunc(e,null)],...M]))}let l=[[r.autosizeThis,()=>this.grid.autoSize([e])],[r.autosizeAll,()=>this.grid.autoSize()]];i.lockVisible||l.push([r.hideColumn,()=>this.grid.setColumnsVisible([e],!1)]),l.push([r.chooseColumns,()=>this.grid.chooser.open()],[r.resetColumns,()=>this.grid.resetColumns()]),this.grid.options.conditionalFormatMenu!==!1&&this.grid.paid&&l.push([`${r.cf.title}\u2026`,()=>this.grid.formatDialog.open(e)]),s.append(this.section(l));let d=this.filterSection(e,()=>this.close());d&&s.append(d),de(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 f=Math.max(4,Math.min(c.bottom+4,window.innerHeight-240));s.style.top=`${f}px`,s.style.maxHeight=`${Math.max(160,window.innerHeight-f-8)}px`,this.popup=s,this.colId=e;let p=b=>{ge(b,s,t)||this.close()},h=b=>{b.key==="Escape"&&(this.close(),this.grid.renderer.gridEl.focus())},y=()=>this.close(),m=this.grid.renderer.scroller;document.addEventListener("pointerdown",p,!0),document.addEventListener("keydown",h,!0),m.addEventListener("scroll",y,{passive:!0}),this.off.push(()=>document.removeEventListener("pointerdown",p,!0),()=>document.removeEventListener("keydown",h,!0),()=>m.removeEventListener("scroll",y)),(w=s.querySelector(".fg-filter-value:not([hidden]), .fg-set-search, .fg-menu-item"))==null||w.focus()}openAtFocus(){var a,l,d;let{grid:e}=this,t=e.store.state.focus,n=t&&!B(t.colId)?t.colId:(a=e.columns.displayed().find(c=>!B(c.id)))==null?void 0:a.id;if(!n)return!1;let r=e.renderer.root,i=CSS.escape(n),s=(d=(l=r.querySelector(`.fg-header-cell:not(.fg-header-group)[data-col="${i}"]`))!=null?l:t?r.querySelector(`.fg-row[data-row="${t.rowIndex}"] .fg-cell[data-col="${i}"]`):null)!=null?d:e.renderer.gridEl;return this.open(n,s),!0}filterSection(e,t){let n=this.grid.columns.getNode(e);if(!n||n.children)return null;let r=this.grid.store.state.locale,i=me(n.def);return i==="set"?this.setFilter(e,r,t):i?this.conditionFilter(e,i,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=C("div","fg-menu-section");for(let[n,r]of e){let i=C("button","fg-menu-item",{type:"button"});i.textContent=n,i.addEventListener("click",()=>{r(),this.close();let s=Qt(this.grid.renderer.root);(!s||s===document.body||!s.isConnected)&&this.grid.renderer.gridEl.focus({preventScroll:!0})}),t.append(i)}return t}actions(e,t,n,r){let i=C("div","fg-menu-actions"),s=C("button","fg-btn",{type:"button"});s.textContent=t.reset,s.addEventListener("click",()=>{this.grid.setFilter(e,null),r()});let a=C("button","fg-btn fg-btn-primary",{type:"button"});return a.textContent=t.apply,a.addEventListener("click",n),i.append(s,a),i}title(e){let t=C("div","fg-menu-title");return t.textContent=e.filter,t}conditionRow(e,t,n,r,i){var p;let s=C("div","fg-filter-cond"),a=C("select","fg-filter-op",{"aria-label":t.filter});if(r){let h=C("option");h.value="",h.textContent="\u2014",a.append(h)}for(let h of Dt[e]){let y=C("option");y.value=h,y.textContent=t.ops[h],a.append(y)}a.value=(p=n==null?void 0:n.op)!=null?p:r?"":Dt[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||Ji.includes(a.value),c.hidden=a.value!=="between"};a.addEventListener("change",u),u();for(let h of[d,c])h.addEventListener("keydown",y=>y.key==="Enter"&&i());return s.append(a,d,c),{row:s,read:()=>{let h=a.value;if(!h)return null;let y=!Ji.includes(h);if(e==="number"){let m=d.value===""?void 0:Number(d.value),g=c.value===""?void 0:Number(c.value);return!y||m!==void 0?{type:e,op:h,value:m,valueTo:g}:null}return e==="date"?!y||d.value?{type:e,op:h,value:d.value||void 0,valueTo:c.value||void 0}:null:!y||d.value?{type:e,op:h,value:d.value}:null}}}conditionFilter(e,t,n,r){var y,m;let i=this.grid.store.state.filters[e],s=(i==null?void 0:i.type)==="combined"?i.conditions:i?[i]:[],a=((y=s[0])==null?void 0:y.type)===t?s[0]:void 0,l=((m=s[1])==null?void 0:m.type)===t?s[1]:void 0,d=C("div","fg-menu-section fg-filter"),c=()=>{var M;let g=u.read(),w=f.read(),b=((M=p.querySelector("input:checked"))==null?void 0:M.value)==="or"?"or":"and",v=g&&w?{type:"combined",operator:b,conditions:[g,w]}:g!=null?g:w;this.grid.setFilter(e,v),r()},u=this.conditionRow(t,n,a,!1,c),f=this.conditionRow(t,n,l,!0,c),p=C("div","fg-filter-join",{role:"radiogroup"}),h=`fg-join-${e}-${Math.random().toString(36).slice(2,7)}`;for(let g of["and","or"]){let w=C("label"),b=C("input","",{type:"radio",name:h,value:g});b.checked=((i==null?void 0:i.type)==="combined"?i.operator:"and")===g,w.append(b,` ${n[g]}`),p.append(w)}return d.append(this.title(n),u.row,p,f.row,this.actions(e,n,c,r)),d}setFilter(e,t,n){let{grid:r}=this,i=r.columns.getNode(e).def,s=ne(i,t.code),a=r.collator(),l=new Map;for(let x of r.rowModel.allNodes()){let R=j(i,x.data),E=re(R);l.has(E)||l.set(E,R)}let d=[...l.entries()].sort((x,R)=>At(x[1],R[1],a)),c=r.store.state.filters[e],u=new Set((c==null?void 0:c.type)==="set"?c.values.map(re).filter(x=>l.has(x)):l.keys()),f=(x,R)=>x===""?t.blanks:s(R),p=C("div","fg-menu-section fg-filter fg-set-filter"),h=C("input","fg-input fg-set-search",{type:"search",placeholder:t.search,"aria-label":t.search}),y=C("label","fg-set-item fg-set-all"),m=C("input","fg-checkbox",{type:"checkbox"});y.append(m,document.createTextNode(t.selectAll));let g=C("div","fg-set-list"),w=()=>{let x=h.value.trim().toLowerCase();return x?d.filter(([R,E])=>f(R,E).toLowerCase().includes(x)):d},b=()=>{let x=w(),R=x.filter(([E])=>u.has(E)).length;m.checked=R>0&&R===x.length,m.indeterminate=R>0&&R<x.length},v=()=>{let x=w();if(g.replaceChildren(...x.slice(0,Oo).map(([R,E])=>{let T=C("label","fg-set-item"),k=C("input","fg-checkbox",{type:"checkbox"});return k.checked=u.has(R),k.addEventListener("change",()=>{k.checked?u.add(R):u.delete(R),b()}),T.append(k,document.createTextNode(f(R,E))),T})),x.length>Oo){let R=C("div","fg-set-more");R.textContent=`\u2026 +${x.length-Oo}`,g.append(R)}b()};m.addEventListener("change",()=>{for(let[x]of w())m.checked?u.add(x):u.delete(x);v()}),h.addEventListener("input",v);let M=()=>{r.setFilter(e,u.size===l.size?null:{type:"set",values:d.filter(([x])=>u.has(x)).map(([,x])=>x)}),n()};return h.addEventListener("keydown",x=>x.key==="Enter"&&M()),v(),p.append(this.title(t),h,y,g,this.actions(e,t,M,n)),p}};var Yi=new WeakMap,Ml=0;function Ze(o){let e=Yi.get(o);return e||Yi.set(o,e=`r${++Ml}`),e}var On=class{constructor(e){this.deps=e;this.stats={filterRuns:0,sortRuns:0};this.server=!1;this.full=[];this.last={};this.nodes=[];this.assignedIds=new WeakMap;this.filtered=[];this.sorted=[];this.display=[];this.indexById=null;this.orderedCache=null;this.layoutCache=null;this.quickCache=null}update(e){var u,f,p,h,y,m;let t=this.deps.collator(),n=e.display,r=!!(n!=null&&n.getParentId)!=!!((u=this.last.display)!=null&&u.getParentId),i=e.data!==this.last.data,s=i||r||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)!==((f=this.last.display)==null?void 0:f.groupBy);if(i){let g=this.deps.getRowId;if(g){let w=new Set,b=null;this.assignedIds=new WeakMap,this.nodes=e.data.map((v,M)=>{let x=String(g(v)),R=x;if(w.has(R)){b!=null||(b=x);for(let E=2;w.has(R);E++)R=`${x}#${E}`}return w.add(R),this.assignedIds.set(v,R),{id:R,data:v,sourceIndex:M}}),b!==null&&G(`getRowId returned "${b}" for more than one row; inside the grid the repeats are told apart as "${b}#2" and so on, and updates by id reach the first of them. Return a unique id per row.`)}else this.nodes=e.data.map((w,b)=>({id:Ze(w),data:w,sourceIndex:b}))}if(s&&(this.filtered=this.filter(e),this.stats.filterRuns++),a){let g=e.sort.length?(h=(p=this.deps).sortBlocks)==null?void 0:h.call(p,e.sort):null,w=g!=null&&g.length?Wr(this.filtered.map(b=>b.data),g):void 0;this.sorted=di(this.filtered,e.sort,b=>this.deps.columnDef(b),t,w),this.stats.sortRuns++}l&&(this.full=n?this.buildDisplay(n,e.sort,t):this.sorted);let d=(y=e.page)!=null?y:null,c=(m=this.last.page)!=null?m: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}dataRowsBefore(e){let t=Math.min(e,this.full.length);if(this.full===this.sorted)return t;let n=0;for(let r=0;r<t;r++)this.full[r].kind||n++;return n}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}orderedDataRows(){var r,i;let e=this.orderedCache;if(e&&e.full===this.full)return e.rows;let t=this.last.display,n=this.sorted;if(t&&(t.getParentId||t.groupBy.length)){let s={...t,expanded:new Map,defaultExpanded:-1,detailOpen:new Set,lazyChildren:void 0};n=this.buildDisplay(s,(r=this.last.sort)!=null?r:[],(i=this.last.collator)!=null?i:this.deps.collator()).filter(a=>!a.kind)}return this.orderedCache={full:this.full,rows:n},n}allNodes(){return this.nodes}idOf(e){var t;return this.deps.getRowId?(t=this.assignedIds.get(e))!=null?t:String(this.deps.getRowId(e)):Ze(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,i){var u;let s=this.layoutCache;if(s&&s.rows===this.display&&s.rh===e&&s.dh===t&&s.hv===r)return s;let a=this.display.length,l=new Float64Array(a+1),d=!0,c=n&&n.size?n:null;for(let f=0;f<a;f++){let p=this.display[f],h=e;if(p.kind==="detail")h=t;else if(!p.kind){c&&(h=(u=c.get(p.id))!=null?u:e);let y=i==null?void 0:i(p.data);typeof y=="number"&&y>0&&(h=c?Math.max(h,y):y)}h!==e&&(d=!1),l[f+1]=l[f]+h}return this.layoutCache={rows:this.display,rh:e,dh:t,hv:r,offsets:l,uniform:d},this.layoutCache}quickTexts(e){var r,i,s;let t=[this.nodes,(s=(i=(r=this.deps).textVersion)==null?void 0:i.call(r))!=null?s:"",...e],n=this.quickCache;return n&&n.key.length===t.length&&n.key.every((a,l)=>a===t[l])?n.texts:(this.quickCache={key:t,texts:new WeakMap},this.quickCache.texts)}filter(e){var u;let t=Object.entries(e.filters).map(([f,p])=>({def:this.deps.columnDef(f),pred:Nt(p)})).filter(f=>!!f.def),n=pr(e.quickFilter),r=n.length?this.deps.quickColumns():[],i=e.advancedFilter?Kn(e.advancedFilter,f=>this.deps.columnDef(f),j):null;if(!t.length&&!n.length&&!i)return this.nodes;let s=n.length?this.quickTexts(r):null,a=this.nodes.filter(f=>{for(let p of t)if(!p.pred(j(p.def,f.data)))return!1;if(i&&!i(f.data))return!1;if(s){let p=s.get(f.data);if(p===void 0&&(p=r.map(h=>this.deps.format(h,j(h,f.data))).join("").toLowerCase(),s.set(f.data,p)),!gr(n,p))return!1}return!0}),l=(u=e.display)==null?void 0:u.getParentId;if(!l)return a;let d=new Map(this.nodes.map(f=>[f.id,f])),c=new Set(a);for(let f of a){let p=l(f.data),h=new Set;for(;p!=null&&!h.has(p);){h.add(p);let y=d.get(String(p));if(!y)break;c.add(y),p=l(y.data)}}return this.nodes.filter(f=>c.has(f))}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 i=e.groupBy.filter(a=>this.deps.columnDef(a));if(!i.length)return e.detailOpen.size?(this.withDetails(e,this.sorted,r),r):this.sorted;let s=(a,l,d)=>{var y;let c=i[l],u=this.deps.columnDef(c),f=new Map;for(let m of a){let g=j(u,m.data),w=K(g)?"":re(g),b=f.get(w);b||f.set(w,b={value:g,nodes:[]}),b.nodes.push(m)}let p=((y=t.find(m=>m.colId===c))==null?void 0:y.dir)==="desc"?-1:1,h=[...f.entries()].sort((m,g)=>Cn(m[1].value,g[1].value,n,p));for(let[m,g]of h){let w=`${d}${c}:${m}`,b=this.isOpen(e,w,l);r.push({id:`group:${w}`,data:{},sourceIndex:-1,kind:"group",level:l,group:{key:w,colId:c,value:g.value,rows:g.nodes.map(v=>v.data),expanded:b}}),b&&(l+1<i.length?s(g.nodes,l+1,`${w}|`):this.withDetails(e,g.nodes.map(v=>({...v,level:l+1})),r))}};return s(this.sorted,0,""),r}buildTree(e,t){let n=new Set(this.sorted.map(d=>d.id)),r=new Map,i=[];for(let d of this.sorted){let c=e.getParentId(d.data),u=c==null?null:String(c);if(u!==null&&n.has(u)&&u!==d.id){let f=r.get(u);f||r.set(u,f=[]),f.push(d)}else i.push(d)}let s=new Set,a=d=>{var u;let c=[d];for(;c.length;){let f=c.pop();if(!s.has(f.id)){s.add(f.id);for(let p of(u=r.get(f.id))!=null?u:[])c.push(p)}}};for(let d of i)a(d);for(let d of this.sorted){if(s.has(d.id))continue;let c=r.get(String(e.getParentId(d.data))),u=c?c.indexOf(d):-1;u>=0&&c.splice(u,1),i.push(d),a(d)}let l=(d,c,u)=>{var f,p,h;for(let y of d){if(u.has(y.id))continue;let m=(f=r.get(y.id))!=null?f:[],g=!m.length&&!!((p=e.lazyChildren)!=null&&p.call(e,y.id,y.data)),w=m.length>0&&this.isOpen(e,y.id,c),b={...y,level:c,hasChildren:m.length>0||g,expanded:w};g&&((h=e.loading)!=null&&h.has(y.id))&&(b.loading=!0),this.withDetails(e,[b],t),w&&l(m,c+1,new Set([...u,y.id]))}};l(i,0,new Set)}};var El=1e4,Bo=1e5,Al=4,Ho=3e3,Bn=class{constructor(e,t,n,r,i,s){this.datasource=e;this.getRowId=t;this.groupBy=n;this.query=r;this.onChange=i;this.onFailed=s;this.levels=new Map;this.gen=0;this.display=null;this.ids=null;this.queue=[];this.inFlight=0;this.retryAt=0;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.queue=[],this.levels.clear(),this.touch()}dispose(){this.gen++,this.queue=[]}touch(){this.version++,this.display=null,this.ids=null}load(e,t,n){this.levels.has(e)||(this.levels.set(e,{state:"loading",nodes:[]}),this.fetch({path:e,keys:t,level:n,start:0,gen:this.gen}))}fetch(e){this.queue.push(e),this.pump()}pump(){for(;this.inFlight<Al&&this.queue.length;){let e=this.queue.shift();e.gen===this.gen&&(this.inFlight++,this.request(e).finally(()=>{this.inFlight--,this.pump()}))}}request({path:e,keys:t,level:n,start:r,gen:i}){let s=n>=this.groupBy.length,a=this.query,l=r+El,d;try{d=Promise.resolve(this.datasource.getRows({start:r,end:l,sort:[...a.sort],filters:{...a.filters},quickFilter:a.quickFilter,advancedFilter:a.advancedFilter,groupBy:[...this.groupBy],groupKeys:[...t]}))}catch(c){d=Promise.reject(c)}return d.then(c=>{var m,g;if(i!==this.gen)return;let u=Array.isArray(c==null?void 0:c.rows)?c.rows.filter(w=>w!==null&&typeof w=="object"):[];Array.isArray(c==null?void 0:c.rows)||G("datasource.getRows must resolve to { rows: Row[] }");let f=s?u.map((w,b)=>({id:this.getRowId?String(this.getRowId(w)):Ze(w),data:w,sourceIndex:r+b,level:n})):u.map(w=>{let b=this.groupBy[n],v=w[b],M=`${e?`${e}|`:""}${b}:${re(v)}`,x=typeof w.count=="number"?w.count:typeof w.childCount=="number"?w.childCount:void 0;return{id:`group:${M}`,data:{},sourceIndex:-1,kind:"group",level:n,group:{key:M,colId:b,value:v,rows:[],expanded:!1,count:x,aggregates:w,keys:[...t,v]}}}),p=r?[...(g=(m=this.levels.get(e))==null?void 0:m.nodes)!=null?g:[],...f]:f,h=typeof(c==null?void 0:c.total)=="number"&&c.total>=0?c.total:null,y=u.length>0&&(h!==null?p.length<h:u.length>=l-r);y&&p.length<Bo?(this.levels.set(e,{state:"loading",nodes:p}),this.fetch({path:e,keys:t,level:n,start:p.length,gen:i})):(y&&G(`a server group level has more than ${Bo} rows; only the first ${Bo} are shown`),this.levels.set(e,{state:"loaded",nodes:p})),this.touch(),this.onChange()},c=>{i===this.gen&&(this.levels.set(e,{state:"failed",nodes:[],retryAt:Date.now()+Ho}),this.touch(),this.onFailed(r,l,c))})}isOpen(e,t,n){let r=e.expanded.get(t);return r!==void 0?r:e.defaultExpanded===-1||n<e.defaultExpanded}rows(e,t){let n=Date.now();if(this.display&&this.builtFor===t&&!(this.retryAt&&n>=this.retryAt))return this.display;let r=[],i=0,s=(a,l,d)=>{var u,f,p;let c=this.levels.get(a);if((c==null?void 0:c.state)==="failed"&&n>=((u=c.retryAt)!=null?u:0)&&(this.levels.delete(a),c=void 0),!c){this.load(a,l,d),r.push({id:`loading:${a}`,data:{},sourceIndex:-1,kind:"loading",level:d});return}if(c.state==="failed"){let h=(f=c.retryAt)!=null?f:0;i=i?Math.min(i,h):h;return}for(let h of c.nodes){if(h.kind!=="group"){r.push(h);continue}let y=h.group,m=this.isOpen(e,y.key,d),g={...h,group:{...y,expanded:m}};r.push(g),m&&s(y.key,(p=y.keys)!=null?p:[],d+1)}c.state==="loading"&&r.push({id:`loading:${a}`,data:{},sourceIndex:-1,kind:"loading",level:d})};return s("",[],0),this.retryAt=i,this.display=r,this.builtFor=t,this.ids=null,r}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 r,i;return t+((i=(r=n.group)==null?void 0:r.count)!=null?i: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,r)=>this.ids.set(n.id,r))),(t=this.ids.get(e))!=null?t:-1):-1}};var Tl=new Float64Array(0),ct=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;this.quiet=!1}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,f,p,h,y,m,g,w;let t=(l=(a=e.display)==null?void 0:a.groupBy)!=null?l:[];if(t.length&&!((d=e.display)!=null&&d.getParentId)){let b={sort:e.sort,filters:e.filters,quickFilter:e.quickFilter,advancedFilter:(c=e.advancedFilter)!=null?c:null};(!this.groups||!this.groups.matches(t,b))&&((u=this.groups)==null||u.dispose(),this.groups=new Bn(this.deps.datasource,this.deps.getRowId,[...t],b,()=>this.deps.onLoaded(0,0,null),(v,M,x)=>this.deps.onFailed(v,M,x)),this.touch()),this.displayIn=(f=e.display)!=null?f:null,this.query=null;return}this.groups&&(this.groups.dispose(),this.groups=null,this.query=null,this.touch());let n=this.query,r=!n||n.sort!==e.sort||n.filters!==e.filters||n.quickFilter!==e.quickFilter||n.advancedFilter!==((p=e.advancedFilter)!=null?p:null),i=(h=e.page)!=null?h:null,s=((y=i==null?void 0:i.size)!=null?y:0)!==((g=(m=this.page)==null?void 0:m.size)!=null?g:0);this.query={sort:e.sort,filters:e.filters,quickFilter:e.quickFilter,advancedFilter:(w=e.advancedFilter)!=null?w:null},this.page=i?{...i}:null,(r||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 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}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||(!this.quiet&&e>=0&&e<this.getRowCount()&&this.ensure(Math.floor(t/this.bs)),this.placeholder(t))}withoutLoading(e){let t=this.quiet;this.quiet=!0;try{return e()}finally{this.quiet=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,i=this.gen;this.lastBlock=e,this.blocks.set(e,{state:"loading",nodes:[]});let s=this.query,a=c=>{i===this.gen&&(this.blocks.set(e,{state:"failed",nodes:[],retryAt:Date.now()+Ho}),this.deps.onFailed(n,r,c))},l;try{l=Promise.resolve(this.deps.datasource.getRows({start:n,end:r,sort:[...s.sort],filters:{...s.filters},quickFilter:s.quickFilter,advancedFilter:s.advancedFilter}))}catch(c){l=Promise.reject(c)}l.then(c=>{if(i!==this.gen)return;let u=Array.isArray(c==null?void 0:c.rows)?c.rows.filter(h=>h!==null&&typeof h=="object"):null;if(!u){G("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((h,y)=>({id:f?String(f(h)):Ze(h),data:h,sourceIndex:n+y}));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((i,s)=>i-s)){let i=this.blocks.get(r);i.state==="loaded"&&e.push(...i.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;if(this.groups)return this.groupRows();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.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)):Ze(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:Tl,uniform:!0}}};function Zi(o){let e=o.idAt(o.index);if(o.mode==="single"){let t=new Set;return o.toggle&&o.selected.has(e)||t.add(e),{selected:t,anchorIndex:o.index}}if(o.range&&o.anchorIndex!=null){let t=o.toggle?new Set(o.selected):new Set,n=Math.min(o.anchorIndex,o.index),r=Math.max(o.anchorIndex,o.index);for(let i=n;i<=r;i++)t.add(o.idAt(i));return{selected:t,anchorIndex:o.anchorIndex}}if(o.toggle){let t=new Set(o.selected);return t.has(e)?t.delete(e):t.add(e),{selected:t,anchorIndex:o.index}}return{selected:new Set([e]),anchorIndex:o.index}}var Hn=class{constructor(e){this.bus=new rt;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 Go=o=>!!o&&typeof o=="object"&&!Array.isArray(o)&&Object.getPrototypeOf(o)===Object.prototype;function Se(o,e=0,t=new Map){if(e>8||!(Array.isArray(o)||Go(o)))return o;let n=t.get(o);if(n)return n;if(Array.isArray(o)){let i=[];t.set(o,i);for(let s of o)i.push(Se(s,e+1,t));return i}let r={};t.set(o,r);for(let[i,s]of Object.entries(o))r[i]=Se(s,e+1,t);return r}function ut(o,e,t=0,n=new Map){if(o===e)return!0;if(t>8||!o||!e||typeof o!="object"||typeof e!="object")return!1;let r=n.get(o);if(r!=null&&r.has(e))return!0;if(r?r.add(e):n.set(o,new Set([e])),Array.isArray(o)||Array.isArray(e))return Array.isArray(o)&&Array.isArray(e)&&o.length===e.length&&o.every((s,a)=>ut(s,e[a],t+1,n));if(!Go(o)||!Go(e))return!1;let i=Object.keys(o);return i.length===Object.keys(e).length&&i.every(s=>s in e&&ut(o[s],e[s],t+1,n))}function Qi(o){let e=Se(o);return t=>ut(t,e)?!1:(e=Se(t),!0)}var Pl=500;function es(o){let e=o.renderer.root,t=0,n=null,r=null,i=()=>{clearTimeout(t),n==null||n.remove(),n=null,r=null},s=c=>{var b;let u=c.dataset.col;if(!u||B(u))return null;let f=o.columns.getNode(u);if(!f)return null;if(c.classList.contains("fg-header-cell"))return(b=f.def.headerTooltip)!=null?b:null;let p=c.closest(".fg-row[data-row]");if(!p||!c.closest(".fg-body"))return null;let h=Number(p.dataset.row),y=o.rowModel.getRow(h);if(!y||y.kind)return null;let m=f.def,g=j(m,y.data),w=ne(m,o.store.state.locale.code)(g);if(typeof m.tooltip=="function")try{let v=m.tooltip({value:g,formatted:w,row:y.data,rowIndex:h,column:m});return v?String(v):null}catch{return G(`tooltip of column "${u}" threw`),null}return m.tooltip===!0?w||null:o.options.overflowTooltip!==!1&&m.tooltip!==!1&&c.scrollWidth>c.clientWidth+1&&c.textContent||null},a=(c,u)=>{n==null||n.remove(),n=C("div",`fg-tooltip fg-theme-${o.store.state.theme}`,{role:"tooltip"}),n.textContent=u,o.applyFontTo(n),de(e).append(n);let f=c.getBoundingClientRect(),p=n.offsetWidth,h=n.offsetHeight,y=window.innerWidth||1024,m=window.innerHeight||768,g=f.bottom+6+h>m?f.top-h-6:f.bottom+6;n.style.left=`${Math.max(4,Math.min(y-p-4,f.left))}px`,n.style.top=`${Math.max(4,g)}px`},l=c=>{var f,p;let u=(p=(f=c.target).closest)==null?void 0:p.call(f,".fg-cell, .fg-header-cell");!u||u===r||!e.contains(u)||(i(),r=u,t=window.setTimeout(()=>{if(r!==u||!u.isConnected)return;let h=s(u);h&&a(u,h)},Pl))},d=c=>{let u=c.relatedTarget;r&&u&&r.contains(u)||i()};return e.addEventListener("pointerover",l),e.addEventListener("pointerout",d),e.addEventListener("pointerdown",i),e.addEventListener("keydown",i),e.addEventListener("wheel",i,{passive:!0}),()=>{i(),e.removeEventListener("pointerover",l),e.removeEventListener("pointerout",d),e.removeEventListener("pointerdown",i),e.removeEventListener("keydown",i),e.removeEventListener("wheel",i)}}var ts=["blank","notBlank"],Gn=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&&!B(e.id)&&me(e.def)).map(e=>{var r,i;let t=me(e.def),n=t==="number"?"number":t==="date"?"date":"text";return{id:e.id,label:(i=(r=e.def.header)!=null?r:e.def.field)!=null?i:e.id,kind:n}})}open(){var A,F;this.close();let{grid:e}=this,t=e.store.state.locale,n=this.columns(),r=C("div",`fg-menu fg-filter-builder fg-theme-${e.store.state.theme}`,{role:"dialog","aria-label":t.advancedFilter});e.applyFontTo(r);let i=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()),i.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 I of["and","or"]){let D=C("label"),$=C("input","",{type:"radio",name:c,value:I});$.checked=((A=l==null?void 0:l.operator)!=null?A:"and")===I,D.append($,` ${t[I]}`),d.append(D)}let u=C("div","fg-fb-list"),f=[],p=I=>{f.splice(f.indexOf(I),1),I.el.remove()},h=I=>{let D=C("div","fg-fb-row"),$=C("select","fg-filter-op fg-fb-col",{"aria-label":t.columns});for(let Y of n){let Q=C("option");Q.value=Y.id,Q.textContent=Y.label,$.append(Q)}let P=C("select","fg-filter-op fg-fb-op",{"aria-label":t.filter}),N=C("input","fg-input fg-fb-value",{type:"text",placeholder:t.value,"aria-label":t.value}),O=C("input","fg-input fg-fb-value-to",{type:"text",placeholder:t.valueTo,"aria-label":t.valueTo}),H=C("button","fg-chooser-close fg-fb-remove",{type:"button","aria-label":t.close});H.textContent="\xD7";let W=()=>{var Y,Q;return(Q=(Y=n.find(ue=>ue.id===$.value))==null?void 0:Y.kind)!=null?Q:"text"},U=Y=>{let Q=W();P.replaceChildren(...Dt[Q].map(z=>{let V=C("option");return V.value=z,V.textContent=t.ops[z],V})),Y&&Dt[Q].includes(Y)&&(P.value=Y);let ue=Q==="text"?"text":Q;N.type=O.type=ue,J()},J=()=>{N.hidden=ts.includes(P.value),O.hidden=P.value!=="between"};$.addEventListener("change",()=>U(P.value)),P.addEventListener("change",J),I&&n.some(Y=>Y.id===I.colId)&&($.value=I.colId);let _=I==null?void 0:I.model;U(_==null?void 0:_.op),(_==null?void 0:_.value)!=null&&(N.value=String(_.value)),(_==null?void 0:_.valueTo)!=null&&(O.value=String(_.valueTo)),D.append($,P,N,O,H);let Z={el:D,read:()=>{let Y=W(),Q=P.value,ue=!ts.includes(Q),z=null;if(Y==="number"){let V=N.value===""?void 0:Number(N.value),te=O.value===""?void 0:Number(O.value);(!ue||V!==void 0&&!Number.isNaN(V))&&(z=Q==="between"?{type:"number",op:Q,value:V,valueTo:te}:{type:"number",op:Q,value:V})}else Y==="date"?(!ue||N.value)&&(z=Q==="between"?{type:"date",op:Q,value:N.value,valueTo:O.value}:{type:"date",op:Q,value:N.value||void 0}):(!ue||N.value)&&(z={type:"text",op:Q,value:N.value});return z?{colId:$.value,model:z}:null}};return H.addEventListener("click",()=>p(Z)),Z},y=(I,D)=>{let $=C("div","fg-fb-row fg-fb-group"),P=C("span","fg-fb-group-label");P.textContent=D;let N=C("button","fg-chooser-close fg-fb-remove",{type:"button","aria-label":t.close});N.textContent="\xD7",$.append(P,N);let O={el:$,read:()=>I};return N.addEventListener("click",()=>p(O)),O},m=I=>{var N;if("conditions"in I)return y(I,`( ${I.conditions.length} \xD7 ${t[I.operator]} )`);let D=n.find(O=>O.id===I.colId),$=I.model;if(D&&$&&($.type==="text"||$.type==="number"||$.type==="date"))return h(I);let P=($==null?void 0:$.type)==="set"?$.values.map(String).join(", "):($==null?void 0:$.type)==="combined"?`( ${$.conditions.length} \xD7 ${t[$.operator]} )`:"";return y(I,`${(N=D==null?void 0:D.label)!=null?N:I.colId}: ${P}`)},g=I=>{f.push(I),u.append(I.el)};for(let I of(F=l==null?void 0:l.conditions)!=null?F:[])g(m(I));let w=C("button","fg-btn fg-fb-add",{type:"button"});w.textContent=`+ ${t.addCondition}`,w.addEventListener("click",()=>{let I=h();g(I),I.el.querySelector(".fg-fb-value").focus()});let b=C("div","fg-menu-actions"),v=C("button","fg-btn",{type:"button"});v.textContent=t.reset,v.addEventListener("click",()=>{e.setAdvancedFilter(null),this.close()});let M=C("button","fg-btn fg-btn-primary",{type:"button"});M.textContent=t.apply,M.addEventListener("click",()=>{var $;let I=f.map(P=>P.read()).filter(P=>!!P),D=(($=d.querySelector("input:checked"))==null?void 0:$.value)==="or"?"or":"and";e.setAdvancedFilter(I.length?{operator:D,conditions:I}:null),this.close()}),b.append(v,M),r.append(i,d,u,w,b),de(e.renderer.root).append(r),f.length||w.click();let x=e.renderer.root.getBoundingClientRect(),R=r.offsetWidth||460;r.style.left=`${Math.max(4,Math.min(x.left+24,(window.innerWidth||1024)-R-4))}px`;let E=e.renderer.headerEl.getBoundingClientRect(),T=window.innerHeight||768,k=Math.max(4,Math.min((E.height?E.bottom:x.top)+8,T-(r.offsetHeight||0)-4));r.style.top=`${k}px`,r.style.maxHeight=`${Math.max(160,T-k-8)}px`,this.popup=r;let S=I=>{ge(I,r)||this.close()},L=I=>{I.key==="Escape"&&(this.close(),e.renderer.gridEl.focus())};document.addEventListener("pointerdown",S,!0),document.addEventListener("keydown",L,!0),this.off.push(()=>document.removeEventListener("pointerdown",S,!0),()=>document.removeEventListener("keydown",L,!0))}close(){var e;for(let t of this.off)t();this.off=[],(e=this.popup)==null||e.remove(),this.popup=null}};var ns=[{key:"red",style:{background:"#ffc7ce",color:"#9c0006"}},{key:"yellow",style:{background:"#ffeb9c",color:"#9c5700"}},{key:"green",style:{background:"#c6efce",color:"#006100"}},{key:"blue",style:{background:"#dbeafe",color:"#1e3a8a"}},{key:"redText",style:{color:"#dc2626"}},{key:"bold",style:{bold:!0}}],Ll=["value","formula","top","bottom","aboveAverage","belowAverage","duplicate","unique","dataBar","colorScale","iconSet"],Il=["gt","gte","lt","lte","eq","ne","between","notBetween","contains","notContains","startsWith","endsWith","blank","notBlank"],zo=["blank","notBlank"],os=["dataBar","colorScale","iconSet"],zn=class{constructor(e){this.grid=e;this.popup=null;this.off=[]}get isOpen(){return!!this.popup}open(e){var Z,Y,Q,ue;this.close();let{grid:t}=this,n=t.columns.getNode(e);if(!n||n.children||B(e))return;let r=t.store.state.locale,i={...fe.cf,...r.cf,aligns:{...fe.cf.aligns,...(Z=r.cf)==null?void 0:Z.aligns}},s=(Q=(Y=n.def.header)!=null?Y:n.def.field)!=null?Q:e,a=C("div",`fg-menu fg-cf-dialog fg-theme-${t.store.state.theme}`,{role:"dialog","aria-label":`${i.title}: ${s}`});t.applyFontTo(a);let l=C("div","fg-chooser-head"),d=C("span","fg-menu-title");d.textContent=`${i.title} \xB7 ${s}`;let c=C("button","fg-chooser-close",{type:"button","aria-label":r.close});c.textContent="\xD7",c.addEventListener("click",()=>this.close()),l.append(d,c);let u=C("div","fg-cf-list"),f=z=>{var V,te;return(te=(V=i.ops[z])!=null?V:r.ops[z])!=null?te:z},p=z=>{var se,Ee,Ae,ie,Qe,ft;let V=(se=z.type)!=null?se:"value",te=i.types[V];if(V==="value"){let ce=(Ee=z.op)!=null?Ee:"eq";return zo.includes(ce)?f(ce):`${f(ce)} ${String((Ae=z.value)!=null?Ae:"")}${ce==="between"||ce==="notBetween"?` \u2013 ${String((ie=z.valueTo)!=null?ie:"")}`:""}`}return V==="formula"?`${te}: ${(Qe=z.formula)!=null?Qe:""}`:V==="top"||V==="bottom"?`${te} ${(ft=z.rank)!=null?ft:10}${z.percent?"%":""}`:te},h=()=>{var te,se,Ee,Ae;u.replaceChildren();let V=t.getConditionalFormats().map((ie,Qe)=>({r:ie,i:Qe})).filter(({r:ie})=>ie.columns.includes(e));if(!V.length){let ie=C("div","fg-cf-empty");ie.textContent=i.none,u.append(ie);return}for(let{r:ie,i:Qe}of V){let ft=C("div","fg-cf-rule"),ce=C("span","fg-cf-sample",{"aria-hidden":"true"});ce.textContent=ie.type==="iconSet"?"\u25B2":ie.type==="dataBar"?"\u25AC":"Aa",(te=ie.style)!=null&&te.background&&(ce.style.background=ie.style.background),(se=ie.style)!=null&&se.color&&(ce.style.color=ie.style.color),(Ee=ie.style)!=null&&Ee.bold&&(ce.style.fontWeight="700");let ht=ve(ie.style);ht&&ht!=="center"&&(ce.style.justifyItems=ht==="left"?"start":"end",ce.style.padding="0 3px"),ie.type==="colorScale"&&(ce.style.background=`linear-gradient(to right, ${((Ae=ie.colors)!=null?Ae:["#f8696b","#ffeb84","#63be7b"]).join(",")})`);let pt=C("span","fg-cf-rule-text");pt.textContent=`${p(ie)}${ie.row?` \xB7 ${i.wholeRow}`:""}${ht?` \xB7 ${i.align}: ${i.aligns[ht]}`:""}`,pt.title=pt.textContent;let Wn=C("button","fg-chooser-close",{type:"button","aria-label":`${r.close}: ${pt.textContent}`});Wn.textContent="\xD7",Wn.addEventListener("click",()=>{let Jo=t.getConditionalFormats(),Yo=Jo[Qe];Yo.columns=Yo.columns.filter(jn=>jn!==e),t.setConditionalFormats(Jo.filter(jn=>jn.columns.length)),h()}),ft.append(ce,pt,Wn),u.append(ft)}};h();let y=C("div","fg-cf-form"),m=C("select","fg-filter-op fg-cf-wide fg-cf-type",{"aria-label":i.type});for(let z of Ll){let V=C("option");V.value=z,V.textContent=i.types[z],m.append(V)}let g=C("select","fg-filter-op fg-cf-wide fg-cf-op",{"aria-label":r.filter});for(let z of Il){let V=C("option");V.value=z,V.textContent=f(z),g.append(V)}let w=n.def.type==="number",b=C("input","fg-input fg-cf-value",{type:w?"number":"text",placeholder:r.value,"aria-label":r.value}),v=C("input","fg-input fg-cf-value-to",{type:w?"number":"text",placeholder:r.valueTo,"aria-label":r.valueTo}),M=C("input","fg-input fg-cf-wide fg-cf-formula",{type:"text",placeholder:`=${(ue=n.def.field)!=null?ue:e} > 100`,"aria-label":i.types.formula,spellcheck:"false"}),x=C("input","fg-input fg-cf-rank",{type:"number",min:"1",value:"10","aria-label":i.count}),R=C("label","fg-cf-pct"),E=C("input","",{type:"checkbox"});R.append(E," %");let T=C("div","fg-cf-swatches fg-cf-wide",{role:"group","aria-label":i.style}),k=0;ns.forEach((z,V)=>{var se,Ee;let te=C("button","fg-cf-swatch",{type:"button","aria-label":i.styles[z.key],title:i.styles[z.key],"aria-pressed":String(V===k)});te.textContent=z.key==="bold"?"B":"Aa",te.style.background=(se=z.style.background)!=null?se:"#ffffff",te.style.color=(Ee=z.style.color)!=null?Ee:"#1f2430",te.addEventListener("click",()=>{k=V;for(let Ae of T.children)Ae.setAttribute("aria-pressed",String(Ae===te))}),T.append(te)});let S=C("select","fg-filter-op fg-cf-wide fg-cf-align",{"aria-label":i.align,title:i.align});for(let z of["","left","center","right"]){let V=C("option");V.value=z,V.textContent=z?`${i.align}: ${i.aligns[z]}`:`${i.align}: ${i.aligns.none}`,S.append(V)}let L=C("label","fg-cf-wide fg-cf-row"),A=C("input","",{type:"checkbox"});L.append(A,` ${i.wholeRow}`),y.append(m,g,b,v,M,x,R,T,S,L);let F=()=>{let z=m.value,V=g.value;g.hidden=z!=="value",b.hidden=z!=="value"||zo.includes(V),v.hidden=z!=="value"||V!=="between"&&V!=="notBetween",M.hidden=z!=="formula",x.hidden=R.hidden=z!=="top"&&z!=="bottom",T.hidden=S.hidden=os.includes(z),L.hidden=z!=="value"&&z!=="formula"};m.addEventListener("change",F),g.addEventListener("change",F),F();let I=()=>{let z=m.value,V={columns:[e],type:z},te=se=>w&&se.value!==""?Number(se.value):se.value;if(z==="value"){if(V.op=g.value,!zo.includes(V.op)){if(b.value==="")return null;if(V.value=te(b),V.op==="between"||V.op==="notBetween"){if(v.value==="")return null;V.valueTo=te(v)}}}else if(z==="formula"){let se=M.value.trim();if(!se)return null;V.formula=se.startsWith("=")?se:`=${se}`}else(z==="top"||z==="bottom")&&(V.rank=Math.max(1,Math.floor(Number(x.value)||10)),E.checked&&(V.percent=!0));if(!os.includes(z)){V.style={...ns[k].style};let se=ve({align:S.value});se&&(V.style.align=se)}return A.checked&&(z==="value"||z==="formula")&&(V.row=!0),V},D=C("div","fg-menu-actions"),$=C("button","fg-btn",{type:"button"});$.textContent=i.clear,$.addEventListener("click",()=>{t.setConditionalFormats(t.getConditionalFormats().map(z=>({...z,columns:z.columns.filter(V=>V!==e)})).filter(z=>z.columns.length)),h()});let P=C("button","fg-btn fg-btn-primary",{type:"button"});P.textContent=i.add,P.addEventListener("click",()=>{let z=I();if(!z){(m.value==="formula"?M:b).focus();return}t.setConditionalFormats([...t.getConditionalFormats(),z]),b.value=v.value=M.value="",h()}),D.append($,P),a.append(l,u,y,D),de(t.renderer.root).append(a);let N=t.renderer.root.getBoundingClientRect(),O=a.offsetWidth||340;a.style.left=`${Math.max(4,Math.min(N.left+24,(window.innerWidth||1024)-O-4))}px`;let H=window.innerHeight||768,W=a.offsetHeight||0,U=Math.max(4,Math.min(N.top+24,H-W-4));a.style.top=`${U}px`,a.style.maxHeight=`${Math.max(160,H-U-8)}px`,a.style.overflowY="auto",this.popup=a,m.focus();let J=z=>{ge(z,a)||this.close()},_=z=>{z.key==="Escape"&&(this.close(),t.renderer.gridEl.focus())};document.addEventListener("pointerdown",J,!0),document.addEventListener("keydown",_,!0),this.off.push(()=>document.removeEventListener("pointerdown",J,!0),()=>document.removeEventListener("keydown",_,!0))}close(){var e;for(let t of this.off)t();this.off=[],(e=this.popup)==null||e.remove(),this.popup=null}};var Fl=["text","number","date","set","combined"],Dl=["bar","stackedBar","line","area","pie","donut","combo","scatter"],$l=30;function Nl(o,e,t,n){var p,h;let r={id:e,header:(h=(p=t.header)!=null?p:t.field)!=null?h:e};t.type&&(r.type=t.type),t.formula&&(r.formula=t.formula),t.aggFunc&&typeof t.aggFunc=="string"&&(r.aggFunc=t.aggFunc);let i=0,s=new Map,a=1/0,l=-1/0,d=0,c=0,u="",f="";for(let y of n){let m=j(t,y);if(K(m)){i++;continue}if(typeof m=="number"&&Number.isFinite(m))c++,d+=m,m<a&&(a=m),m>l&&(l=m);else if(t.type==="date"){let g=m instanceof Date?m.toISOString().slice(0,10):String(m);(!u||g<u)&&(u=g),(!f||g>f)&&(f=g)}if(s.size<5e3){let g=re(m),w=s.get(g);w?w.n++:s.set(g,{value:m,n:1})}}return r.blanks=i,r.distinct=s.size,c&&Object.assign(r,{min:a,max:l,avg:Math.round(d/c*1e3)/1e3}),u&&Object.assign(r,{min:u,max:f}),!c&&s.size&&(r.top=[...s.values()].sort((y,m)=>m.n-y.n).slice(0,12).map(y=>({value:String(y.value).slice(0,80),count:y.n}))),r}function Ol(o,e,t){let n=o.rowModel.dataRows().map(d=>d.data),r=o.columns.getState().map(d=>o.columns.getNode(d.colId)).filter(d=>d&&!d.children&&!B(d.id)),i=r.map(d=>{var c;return{...Nl(o,d.id,d.def,n),hidden:((c=o.columns.getState().find(u=>u.colId===d.id))==null?void 0:c.hide)||void 0}}),s=typeof t.sampleRows=="number"&&t.sampleRows>=0?Math.min(50,t.sampleRows):5,a=n.slice(0,s).map(d=>Object.fromEntries(r.map(c=>[c.id,j(c.def,d)]))),l=o.store.state;return{prompt:String(e).slice(0,2e3),locale:l.locale.code,rowCount:n.length,totalRows:o.rowModel.server?n.length:o.store.state.data.length,columns:i,sample:a,state:{sort:l.sort,filters:l.filters,quickFilter:l.quickFilter,advancedFilter:l.advancedFilter,groupBy:o.getGroupBy(),pivot:o.getPivot(),conditionalFormats:o.getConditionalFormats()},...t.context?{context:t.context()}:{}}}function Bl(o,e){var u;let t={state:o.api.getState(),defs:o.columnDefs(),summary:o.summaryOptions()},n=[],r=[],i=[],s=Array.isArray(e)?e.slice(0,$l):[],a=f=>typeof f=="string"&&!!o.columns.getNode(f)&&!o.columns.getNode(f).children&&!B(f),l=f=>n.push(f),d=(f,p)=>r.push({action:f,reason:p});for(let f of s){let p=f;if(!p||typeof p!="object"||typeof p.type!="string"){d(f,"not an action");continue}try{switch(p.type){case"sort":{let h=(Array.isArray(p.sort)?p.sort:[]).filter(y=>!!y&&a(y.colId)&&(y.dir==="asc"||y.dir==="desc"));Array.isArray(p.sort)&&h.length!==p.sort.length&&d(p,"unknown column in sort"),o.setSort(h.map(y=>({colId:y.colId,dir:y.dir}))),l(p);break}case"filter":{if(!a(p.colId)){d(p,"unknown column");break}let h=p.model;if(h!==null&&(!h||typeof h!="object"||!Fl.includes(h.type))){d(p,"bad filter model");break}o.setFilter(p.colId,h),l(p);break}case"clearFilters":for(let h of Object.keys(o.store.state.filters))o.setFilter(h,null);o.setAdvancedFilter(null),o.api.setQuickFilter(""),l(p);break;case"quickFilter":o.api.setQuickFilter(typeof p.text=="string"?p.text.slice(0,200):""),l(p);break;case"advancedFilter":{let h=p.filter,y=[],m=g=>{let w=g;Array.isArray(w==null?void 0:w.conditions)?w.conditions.forEach(m):y.push(w==null?void 0:w.colId)};if(h&&m(h),h&&(!Array.isArray(h.conditions)||!y.every(a))){d(p,"unknown column in advanced filter");break}o.setAdvancedFilter(h!=null?h:null),l(p);break}case"groupBy":{let h=Array.isArray(p.colIds)?p.colIds.filter(a):[];o.setGroupBy(h),p.expand&&o.expandAll(!0),l(p);break}case"pivot":{let h=p.pivot;if(h&&(!Array.isArray(h.rows)||!Array.isArray(h.values)||!h.rows.every(a)||!((u=h.columns)!=null?u:[]).every(a)||!h.values.every(y=>y&&a(y.colId)))){d(p,"unknown column in pivot");break}o.setPivot(h!=null?h:null),l(p);break}case"showColumns":case"hideColumns":{let h=Array.isArray(p.colIds)?p.colIds.filter(a):[];h.length&&o.setColumnsVisible(h,p.type==="showColumns"),l(p);break}case"conditionalFormat":{let h=p.format;if(!h||!Array.isArray(h.columns)||!h.columns.length||!h.columns.every(a)){d(p,"unknown column in format");break}o.setConditionalFormats([...o.getConditionalFormats(),h]),l(p);break}case"clearConditionalFormats":o.setConditionalFormats([]),l(p);break;case"addColumn":{let h=p.column;if(!h||typeof h.id!="string"||!/^[\w.-]{1,40}$/.test(h.id)||o.columns.getNode(h.id)){d(p,"bad or taken column id");break}let y=typeof h.formula=="string"?h.formula.startsWith("=")?h.formula:`=${h.formula}`:"";if(!(y?Or(y):null)){d(p,"formula does not parse");break}let g={id:h.id,header:typeof h.header=="string"?h.header.slice(0,80):h.id,formula:y};(h.type==="number"||h.type==="date"||h.type==="text")&&(g.type=h.type),o.api.setColumns([...o.columnDefs(),g]),l(p);break}case"summary":{let h=p.summary;if(h&&(!Array.isArray(h.rows)||!h.rows.every(y=>{var m;return y&&Object.keys((m=y.columns)!=null?m:{}).every(a)}))){d(p,"unknown column in summary");break}o.setSummary(h!=null?h:null),l(p);break}case"chart":{let h=Array.isArray(p.colIds)?p.colIds.filter(a):[],y=o.columns.displayed().map(b=>b.id),m=h.map(b=>y.indexOf(b)).filter(b=>b>=0),g=o.rowModel.getRowCount();if(!m.length||!g){d(p,"nothing to chart");break}let w={start:{rowIndex:0,colId:y[Math.min(...m)]},end:{rowIndex:Math.min(g,200)-1,colId:y[Math.max(...m)]}};i.push(o.api.createChart({type:Dl.includes(p.chartType)?p.chartType:"bar",range:w,title:typeof p.title=="string"?p.title.slice(0,80):void 0})),l(p);break}case"message":l(p);break;default:d(p,"unknown action")}}catch{d(p,"failed")}}return{applied:n,skipped:r,undo:()=>{for(let f of i)f.destroy();(o.columnDefs().length!==t.defs.length||o.columnDefs().some((f,p)=>f!==t.defs[p]))&&o.api.setColumns(t.defs),o.setSummary(t.summary),o.api.setState(t.state),t.state.conditionalFormats||o.setConditionalFormats([])}}}async function Vn(o,e,t,n){var d,c;if(!(t!=null&&t.url))throw new Error("assistant.url is not set");let r=typeof t.headers=="function"?t.headers():(d=t.headers)!=null?d:{},i=await fetch(t.url,{method:"POST",credentials:(c=t.credentials)!=null?c:"same-origin",headers:{"Content-Type":"application/json",Accept:"application/json",...r},body:JSON.stringify(Ol(o,e,t)),signal:n});if(!i.ok)throw new Error(`HTTP ${i.status} from the assistant`);let s=await i.json(),a=Bl(o,Array.isArray(s==null?void 0:s.actions)?s.actions:[]),l=typeof(s==null?void 0:s.message)=="string"?s.message:a.applied.filter(u=>u.type==="message").map(u=>{var f;return(f=u.text)!=null?f:""}).join(`
|
|
53
|
-
`);return{...a,message:l.slice(0,4e3)}}var qn=class{constructor(e){this.grid=e;this.popup=null;this.log=null;this.off=[];this.busy=null}get isOpen(){return!!this.popup}open(){var g,w;if(this.popup){(g=this.popup.querySelector(".fg-ai-input"))==null||g.focus();return}let{grid:e}=this,t=e.store.state.locale,n=e.options.assistant,r=C("div",`fg-menu fg-ai-panel fg-theme-${e.store.state.theme}`,{role:"dialog","aria-label":t.ai.title});e.applyFontTo(r);let i=C("div","fg-chooser-head"),s=C("span","fg-menu-title");s.textContent=t.ai.title;let a=C("button","fg-chooser-close",{type:"button","aria-label":t.close});a.textContent="\xD7",a.addEventListener("click",()=>this.close()),i.append(s,a);let l=C("div","fg-ai-log",{role:"log","aria-live":"polite"});this.log=l;let d=C("form","fg-ai-form"),c=C("textarea","fg-input fg-ai-input",{rows:"2",placeholder:t.ai.placeholder,"aria-label":t.ai.placeholder,maxlength:"2000"}),u=C("button","fg-btn fg-btn-primary fg-ai-send",{type:"submit"});u.textContent=t.ai.send,d.append(c,u);let f=C("div","fg-ai-tips");for(let b of((w=n==null?void 0:n.suggestions)!=null?w:[]).slice(0,6)){let v=C("button","fg-ai-tip",{type:"button"});v.textContent=b,v.addEventListener("click",()=>{c.value=b,c.focus()}),f.append(v)}c.addEventListener("keydown",b=>{var v,M;b.key==="Enter"&&!b.shiftKey&&!b.isComposing&&(b.preventDefault(),(M=(v=d.requestSubmit)==null?void 0:v.call(d))!=null||d.dispatchEvent(new Event("submit",{cancelable:!0})))}),d.addEventListener("submit",b=>{b.preventDefault();let v=c.value.trim();!v||this.busy||(c.value="",this.ask(v,u))}),r.append(i,l,d),f.childElementCount&&r.append(f),de(e.renderer.root).append(r);let p=e.renderer.root.getBoundingClientRect(),h=r.offsetWidth||360;r.style.left=`${Math.max(4,Math.min(p.right-h-16,(window.innerWidth||1024)-h-4))}px`,r.style.top=`${Math.max(4,p.top+16)}px`,this.popup=r,c.focus();let y=b=>{!ge(b,r)&&!this.busy&&this.close()},m=b=>{b.key==="Escape"&&this.close()};document.addEventListener("pointerdown",y,!0),document.addEventListener("keydown",m,!0),this.off.push(()=>document.removeEventListener("pointerdown",y,!0),()=>document.removeEventListener("keydown",m,!0))}say(e,t){var r;let n=C("div",`fg-ai-msg fg-ai-${e}`);return n.textContent=t,(r=this.log)==null||r.append(n),this.log&&(this.log.scrollTop=this.log.scrollHeight),n}async ask(e,t){let n=this.grid.store.state.locale;this.say("user",e);let r=this.say("ai",n.ai.thinking);r.classList.add("fg-ai-wait"),this.busy=new AbortController,t.disabled=!0;try{let i=await Vn(this.grid,e,this.grid.options.assistant,this.busy.signal);r.classList.remove("fg-ai-wait");let s=i.applied.filter(a=>a.type!=="message").length;if(r.textContent=i.message||(s?n.ai.done:""),i.skipped.length){let a=C("div","fg-ai-note");a.textContent=`${n.ai.skipped}: ${i.skipped.map(l=>l.reason).join(", ")}`,r.append(a)}if(s){let a=C("button","fg-btn fg-ai-undo",{type:"button"});a.textContent=n.ai.undo,a.addEventListener("click",()=>{i.undo(),a.disabled=!0,a.textContent=n.ai.undone}),r.append(a)}this.grid.events.emit("assistantAnswer",{prompt:e,message:i.message,applied:i.applied,skipped:i.skipped})}catch(i){if((i==null?void 0:i.name)==="AbortError")return;r.remove(),this.say("error",n.ai.failed)}finally{this.busy=null,t.disabled=!1}}close(){var e,t;(e=this.busy)==null||e.abort(),this.busy=null;for(let n of this.off)n();this.off=[],(t=this.popup)==null||t.remove(),this.popup=null,this.log=null}};var rs=o=>Math.round(o*2.75),is=o=>Math.round(o*3.1),Vo=13,qo={compact:[.8,.85],normal:[1,1],comfortable:[1.25,1.15]},Hl=[],Gl=100,ss=new Map;function Me(o){return o.every(e=>e!==null&&typeof e=="object")?o:(G("data contains entries that are not objects; they were skipped"),o.filter(e=>e!==null&&typeof e=="object"))}var Wo=class{constructor(e,t){this.options=t;this.events=new rt;this.pinnedRows={top:[],bottom:[]};this.spanCache=null;this.editVersion=0;this.tracker=new mn;this.history=new gn;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 Dn(this);this.sourceDefs=[];this.pivotCfg=null;this.pivotData=null;this.rollupOn=!1;this.rollupData=null;this.savedGroup=null;this.page=0;this.pageSize=Gl;this.formulaScope={off:()=>!this.allow("formulas"),rows:()=>this.store.state.data,version:()=>this.editVersion,computed:e=>{var n;let t=(n=this.columns.getNode(e))==null?void 0:n.def;return t&&typeof t.formula=="string"&&t.formula.startsWith("=")?t.formula:void 0}};this.cfRules=[];this.cfRowsSrc=null;this.sourceSnapshot=void 0;this.summarySnapshot=null;this.cfRows=[];this.formats=new Xt({rules:()=>this.cfRules,rows:()=>{let e=this.rowModel.dataRows();return this.cfRowsSrc!==e&&(this.cfRowsSrc=e,this.cfRows=e.map(t=>t.data)),this.cfRows},value:(e,t)=>{var r;let n=(r=this.columns.getNode(e))==null?void 0:r.def;return n?j(n,t):void 0},version:()=>this.editVersion,formula:(e,t)=>Ut(e,t,new Set,0,new Map,this.formulaScope)});this.formatDialog=new zn(this);this.assistantPanel=new qn(this);this.forcedOverlay=null;this.filterBuilder=new Gn(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,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}};this.density="normal";this.cellPadding=null;this.sortWithin=!1;this.mergeSel="rows";this.selBlockCache=null;this.blockStateCache=null;this.aggMemo=null;this.selectionVersion=0;this.selectableCache=null;var s,a,l,d,c,u,f,p,h;this.paid=Ki(t.licenseKey),Array.isArray(t.columns)||G("options.columns must be an array"),t.data!=null&&!Array.isArray(t.data)&&G("options.data must be an array"),this.store=new Hn({data:Array.isArray(t.data)?Me(t.data):[],sort:[],filters:{},quickFilter:"",selected:new Set,anchorId:null,focus:null,range:null,extraRanges:[],advancedFilter:null,locale:gt(t.locale),theme:(s=t.theme)!=null?s:"light"}),this.sourceDefs=Array.isArray(t.columns)?t.columns:[],this.sourceSnapshot=Se(this.sourceDefs),this.columns=new Bt(this.withSelect(this.sourceDefs)),this.bindFormulas();let n=t.pagination;n&&typeof n=="object"&&n.pageSize!==void 0&&(Number.isInteger(n.pageSize)&&n.pageSize>0?this.pageSize=n.pageSize:G("pagination.pageSize must be a positive integer")),t.datasource&&typeof t.datasource.getRows!="function"&&G("datasource.getRows must be a function"),this.rowModel=t.datasource&&typeof t.datasource.getRows=="function"?new ct({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,m,g)=>this.serverLoaded(y,m,g),onFailed:(y,m,g)=>this.serverFailed(y,m,g)}):new On({getRowId:t.getRowId,columnDef:y=>{var m;return(m=this.columns.getNode(y))==null?void 0:m.def},quickColumns:()=>this.columns.displayed().filter(y=>!B(y.id)).map(y=>y.def),format:(y,m)=>ne(y,this.store.state.locale.code)(m),collator:()=>this.collator(),textVersion:()=>`${this.store.state.locale.code}|${this.editVersion}`,sortBlocks:y=>this.sortBlocks(y)}),this.sortWithin=!!t.sortWithinMerges,this.mergeSel=this.validMergeSelection(t.mergeSelection),this.sortWithin&&this.rowModel.server&&G("sortWithinMerges is ignored with a datasource: the server sorts the rows"),(a=t.groupBy)!=null&&a.length&&this.allow(this.rowModel.server?"serverGroups":"grouping")&&(this.groupBy=this.validGroupBy(t.groupBy)),Array.isArray(t.conditionalFormats)&&t.conditionalFormats.length&&this.allow("conditional")&&(this.cfRules=t.conditionalFormats.filter(y=>y&&typeof y=="object"&&Array.isArray(y.columns)).map(y=>({...y,columns:[...y.columns]}))),this.defaultExpanded=(t.treeData||this.paid)&&(l=t.groupDefaultExpanded)!=null?l:0,t.treeData&&!t.getRowId&&G("treeData needs getRowId so parent ids can be matched"),this.updateRows(),this.summaryOpts=t.summary&&this.allow("summary")?t.summary:null,this.summarySnapshot=Se(this.summaryOpts),this.refreshSummary();let r=t.fontSize!=null&&t.fontSize>0?t.fontSize:null;t.fontSize!=null&&!(t.fontSize>0)&&G("fontSize must be a positive number"),this.font={size:r,family:(d=t.fontFamily)!=null?d:null};let i=r!=null?r:Vo;if(this.renderer=new Yt(e,this,{rowHeight:(c=t.rowHeight)!=null?c:Math.round(rs(i)*qo[this.densityOf(t.density)][0]),headerHeight:(u=t.headerHeight)!=null?u:Math.round(is(i)*qo[this.densityOf(t.density)][1])}),this.density=this.densityOf(t.density),this.renderer.applyTheme(),t.flashDuration&&this.renderer.root.style.setProperty("--fg-flash-duration",`${this.flashMs()}ms`),this.renderer.applyFont(this.font.size,this.font.family),t.cellPadding!=null&&this.applyCellPadding(t.cellPadding),this.menu=new Nn(this),this.chooser=new sn(this),this.contextMenu=new ln(this),this.editor=new pn(this),this.finder=new un(this),this.fillHandle=new dn(this),this.groupPanel=t.groupPanel&&this.allow("grouping")?new Zt(this):null,this.pinnedRows={top:Me((f=t.pinnedTopRows)!=null?f:[]),bottom:Me((p=t.pinnedBottomRows)!=null?p:[])},this.sideBar=t.sideBar&&this.allow("sideBar")?new an(this,typeof t.sideBar=="object"&&!!t.sideBar.open,(h=typeof t.sideBar=="object"?t.sideBar.panels:void 0)!=null?h:t.pivot||t.pivotPanel?["columns","filters","pivot"]:void 0):null,this.disposers.push(this.store.bus.on("change",y=>this.onChange(y)),ri(this),Zr(this),()=>this.menu.close(),()=>this.chooser.close(),()=>this.contextMenu.destroy(),()=>this.editor.destroy(),()=>this.fillHandle.destroy(),()=>{var y;return(y=this.groupPanel)==null?void 0:y.destroy()},()=>this.charts.destroy(),()=>this.filterBuilder.close(),()=>this.formatDialog.close(),()=>this.assistantPanel.close(),es(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),t.rollup&&this.setRollup(!0),qi(t.licenseKey).then(y=>{y&&!this.destroyed&&this.renderer.showFreeBadge()}),this.renderer.render(),this.api=this.createApi(),en.set(this.renderer.root,this),po.set(this.api,this),_i(t.licenseKey)}get valuesVersion(){return this.editVersion}rangesOn(){return this.options.rangeSelection!==!1&&this.paid}allow(e){return this.paid?!0:(Xi(e),!1)}columnDefs(){return[...this.sourceDefs]}summaryOptions(){return this.summaryOpts?JSON.parse(JSON.stringify(this.summaryOpts)):null}setConditionalFormats(e){if(!Array.isArray(e)){G("setConditionalFormats: formats must be an array");return}e.length&&!this.allow("conditional")||(this.cfRules=e.filter(t=>t&&typeof t=="object"&&Array.isArray(t.columns)).map(t=>({...t,columns:[...t.columns]})),this.renderer.invalidate({rows:!0}),this.events.emit("conditionalFormatsChange",{formats:this.getConditionalFormats()}))}getConditionalFormats(){return JSON.parse(JSON.stringify(this.cfRules))}cellFormat(e,t,n){return this.cfRules.length?this.formats.cell(t,e,n):null}bindFormulas(){var n;let e=[],t=r=>{for(let i of r)!i||typeof i!="object"||(e.push(i),Array.isArray(i.children)&&t(i.children))};t(this.sourceDefs);for(let r of this.columns.getState()){let i=(n=this.columns.getNode(r.colId))==null?void 0:n.def;i&&e.push(i)}$r(e,this.formulaScope)}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.rebuildRollup(),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?Hl: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(){let e=!!this.options.pagination,t=this.viewRows();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,t;return(t=(e=this.pivotData)!=null?e:this.rollupData)!=null?t:this.store.state.data}getRollup(){return this.rollupOn}setRollup(e){if(e=!!e,!(e&&!this.allow("pivot"))&&!(e&&this.clientOnly("rollup"))){if(e&&this.options.treeData){G("rollup is not available with treeData");return}e!==this.rollupOn&&(this.editor.cancel(),this.rollupOn=e,this.store.set({range:null,focus:null}),this.columnsChanged())}}rebuildRollup(){this.rollupData=this.rollupOn&&!this.pivotCfg?Ai(this.store.state.data,this.dataColumns().map(e=>e.def)):null}sourceRowsOf(e){return this.rollupData?e.flatMap(t=>{var n;return(n=Ei(t))!=null?n:[t]}):e}cellEditable(e,t,n){return!this.rollupData&&Ht(e,t,n)}setColumnAggFunc(e,t){if(t!==null&&typeof t!="function"&&!["sum","avg","min","max","count"].includes(t)){G(`setColumnAggFunc: unknown aggFunc "${String(t)}"`);return}let n=!1,r=s=>s.map(a=>{var d;if(!a||typeof a!="object")return a;if(Array.isArray(a.children))return{...a,children:r(a.children)};if(((d=a.id)!=null?d:a.field)!==e)return a;n=!0;let l={...a};return t?l.aggFunc=t:delete l.aggFunc,l}),i=r(this.sourceDefs);if(!n){G(`setColumnAggFunc: no column "${e}"`);return}this.setColumns(i)}sourceLeaves(){let e=[],t=n=>{var r,i;for(let s of n)!s||typeof s!="object"||(Array.isArray(s.children)?t(s.children):((r=s.id)!=null?r:s.field)&&e.push({id:(i=s.id)!=null?i: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.allow("pivot")||e&&this.clientOnly("pivot"))return;if(e&&(typeof e!="object"||!Array.isArray(e.rows)||!Array.isArray(e.values))){G("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(r=>r.id));this.pivotCfg||(this.savedGroup={groupBy:this.groupBy,expanded:this.expanded,defaultExpanded:this.defaultExpanded});let n=Io(e,r=>t.has(r));this.pivotCfg&&Ri(n,this.pivotCfg)||(this.pivotCfg=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.rebuildRollup(),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])),i={sum:n.sum,avg:n.avg,min:n.min,max:n.max,count:n.count},s=Si(this.store.state.data,t,d=>r.get(d),{total:n.total,blank:n.blanks,agg:d=>{var c;return(c=i[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}`)}flashClass(e,t){if(!this.flashing.size)return"";let n=this.flashing.get(`${e}\0${t}`);return n?n.dir?` fg-cell-flash fg-cell-flash-${n.dir}`:" fg-cell-flash":""}flashMs(){let e=this.options.flashDuration;return typeof e=="number"&&e>0?e:1e3}flash(e){let t=this.flashMs(),n=Date.now()+t;for(let[i,s]of e)this.flashing.set(i,{until:n,dir:s});if(this.flashTimer)return;let r=()=>{let i=Date.now(),s=new Set,a=1/0;for(let[l,d]of this.flashing)d.until<=i?(this.flashing.delete(l),s.add(l.slice(0,l.indexOf("\0")))):a=Math.min(a,d.until);s.size&&this.renderer.invalidateRowIds(s),this.flashTimer=this.flashing.size&&!this.destroyed?window.setTimeout(r,Math.max(16,a-i)):0};this.flashTimer=window.setTimeout(r,t)}applyTransaction(e){return!e||typeof e!="object"?{added:[],updated:[],removed:[],notFound:[]}:this.applyTransactions([e])}applyTransactions(e){var d,c;let t={added:[],updated:[],removed:[],notFound:[]};if(this.clientOnly("applyTransaction"))return t;let n=new Map;for(let u of this.columns.getState()){let f=(d=this.columns.getNode(u.colId))==null?void 0:d.def.field;f&&n.set(f,[...(c=n.get(f))!=null?c:[],u.colId])}let r=new Map,i={fields:new Set,ids:new Set},s=this.store.state.data,a=new Set(s),l=new Map(s.map(u=>[this.rowModel.idOf(u),u]));for(let u of e)u&&typeof u=="object"&&(s=this.txStep(u,s,{present:a,byId:l},t,r,n,i));if(!t.added.length&&!t.updated.length&&!t.removed.length)return t.notFound.length&&this.events.emit("transactionApplied",t),t;if(this.editVersion++,s===this.store.state.data&&!this.viewReads(i.fields)){(this.options.autoRowHeight||this.options.getRowHeight)&&this.renderer.invalidateHeights(),this.refreshSummary();let u=this.columns.displayed().some(f=>f.def.formula||f.def.formulas);u?this.finder.refresh():this.finder.refreshRows(i.ids),this.options.getRowHeight||u||this.columns.displayed().some(f=>f.def.merge||f.def.rowSpan)||this.formats.dependsOnOtherRows()?this.renderer.invalidate({rows:!0}):this.renderer.invalidateRowIds(i.ids)}else{this.renderer.invalidateHeights(),this.keepRange=!0;try{this.replaceData(s===this.store.state.data?[...s]:s)}finally{this.keepRange=!1}this.clampRanges()}return this.editor.sync(),r.size&&this.options.flashCells!==!1&&this.flash(r),this.events.emit("transactionApplied",t),t}clampRanges(){let e=this.rowModel.getRowCount(),{range:t,extraRanges:n,focus:r}=this.store.state,i=l=>!l||l.start.rowIndex<e&&l.end.rowIndex<e?l:Math.min(l.start.rowIndex,l.end.rowIndex)>=e?null:{start:{...l.start,rowIndex:Math.min(l.start.rowIndex,e-1)},end:{...l.end,rowIndex:Math.min(l.end.rowIndex,e-1)}},s=n.map(i).filter(l=>!!l);(s.length!==n.length||s.some((l,d)=>l!==n[d]))&&this.store.set({extraRanges:s}),r&&r.rowIndex>=e&&this.store.set({focus:e?{...r,rowIndex:e-1}:null});let a=i(t);a!==t&&(this.store.set({range:a}),this.events.emit("rangeChange",{range:a&&{start:{...a.start},end:{...a.end}}}))}viewReads(e){var i;if(!e.size)return!1;let t=this.store.state;if(this.pivotCfg||this.options.treeData||t.quickFilter||t.advancedFilter||this.groupBy.length)return!0;let r=[...t.sort.map(s=>s.colId),...Object.keys(t.filters)].map(s=>{var a;return(a=this.columns.getNode(s))==null?void 0:a.def});return t.sort.length&&r.push(...(i=this.sortBlocks(t.sort))!=null?i:[]),r.some(s=>s?s.valueGetter||s.formulas||s.formula?!0:s.field!=null&&e.has(s.field):!1)}txStep(e,t,n,r,i,s,a){var w,b;let l=this.options.getRowId,{present:d,byId:c}=n,u=v=>{if(!v||typeof v!="object")return null;if(d.has(v))return this.rowModel.idOf(v);try{return l?String(l(v)):null}catch{return null}},f=new Set;for(let v of(w=e.remove)!=null?w:[]){let M=u(v),x=M===null?void 0:c.get(M);x&&!f.has(x)?(f.add(x),d.delete(x),c.delete(M),r.removed.push(x),this.tracker.created.delete(x),this.tracker.originals.delete(x)):x||r.notFound.push(v)}let p=(v,M,x)=>{var E;let R=this.tracker.originals.get(x);if(v===x){for(let T of Object.keys(v))R&&(R[T]=v[T]),a.fields.add(T);a.ids.add(M),r.updated.push(x);return}for(let[T,k]of Object.entries(v)){R&&(R[T]=k);let S=x[T];if(Object.is(S,k))continue;x[T]=k,a.fields.add(T),a.ids.add(M);let L=typeof S=="number"&&typeof k=="number"?k>S?"up":"down":"";for(let A of(E=s.get(T))!=null?E:[])i.set(`${M}\0${A}`,L)}r.updated.push(x)};for(let v of(b=e.update)!=null?b:[]){let M=u(v),x=M===null?void 0:c.get(M);if(!x||f.has(x)){r.notFound.push(v);continue}p(v,M,x)}let h=Array.isArray(e.add)?[...e.add]:[];for(let v of Array.isArray(e.upsert)?e.upsert:[]){let M=u(v),x=M===null?void 0:c.get(M);x&&!f.has(x)?p(v,M,x):v&&typeof v=="object"&&h.push(v)}let y=Me(h);r.added.push(...y);for(let v of y)d.add(v),c.set(this.rowModel.idOf(v),v);if(!f.size&&!y.length)return t;let m=f.size?t.filter(v=>!f.has(v)):[...t],g=typeof e.addIndex=="number"?Math.max(0,Math.min(m.length,Math.floor(e.addIndex))):m.length;return m.splice(g,0,...y),m}applyTransactionAsync(e){if(!e||typeof e!="object"||(this.txQueue.push(e),this.txTimer))return;let t=this.options.asyncTransactionWait;this.txTimer=window.setTimeout(()=>this.flushAsyncTransactions(),typeof t=="number"&&t>=0?t:50)}flushAsyncTransactions(){clearTimeout(this.txTimer),this.txTimer=0;let e=this.txQueue;this.txQueue=[],!(this.destroyed||!e.length)&&this.applyTransactions(e)}setAdvancedFilter(e){let t=e&&typeof e=="object"&&Array.isArray(e.conditions)&&e.conditions.length?e:null;t&&!this.allow("advancedFilter")||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(){var i,s,a,l;let e=this.store.state,t=(s=(i=this.savedGroup)==null?void 0:i.groupBy)!=null?s:this.groupBy,n=(l=(a=this.savedGroup)==null?void 0:a.expanded)!=null?l:this.expanded,r={columns:this.columns.getState(),columnGroups:this.columns.groupOpenState(),advancedFilter:e.advancedFilter?JSON.parse(JSON.stringify(e.advancedFilter)):null,sort:e.sort.map(d=>({...d})),filters:JSON.parse(JSON.stringify(e.filters)),quickFilter:e.quickFilter,groupBy:[...t],pivot:this.pivotCfg?JSON.parse(JSON.stringify(this.pivotCfg)):null,expanded:Object.fromEntries(n),selected:[...e.selected]};return this.cfRules.length&&(r.conditionalFormats=this.getConditionalFormats()),this.options.pagination&&(r.page=this.page,r.pageSize=this.pageSize),r}setState(e,t={}){var s,a;if(!e||typeof e!="object")return;let n=l=>e[l]!==void 0&&(!t.parts||t.parts.includes(l)),r=l=>!!this.columns.getNode(l);if(n("columns")&&Array.isArray(e.columns)&&(this.columns.applyState(e.columns.filter(l=>l&&r(l.colId))),this.columnsChanged()),n("columnGroups")&&e.columnGroups&&typeof e.columnGroups=="object")for(let[l,d]of Object.entries(e.columnGroups))typeof d=="boolean"&&this.setColumnGroupOpened(l,d);n("groupBy")&&Array.isArray(e.groupBy)&&this.setGroupBy(e.groupBy.filter(r)),n("pivot")&&this.setPivot((s=e.pivot)!=null?s:null);let i={};if(n("sort")&&Array.isArray(e.sort)){let l=this.checkSort(e.sort.filter(d=>d&&r(d.colId)));l&&(i.sort=l)}if(n("filters")&&e.filters&&typeof e.filters=="object"&&(i.filters=Object.fromEntries(Object.entries(e.filters).filter(([l])=>r(l)))),n("advancedFilter")){let l=e.advancedFilter,d=l&&typeof l=="object"&&Array.isArray(l.conditions)&&l.conditions.length?l:null;d!==this.store.state.advancedFilter&&(!d||this.allow("advancedFilter"))&&(i.advancedFilter=d)}if(n("quickFilter")&&typeof e.quickFilter=="string"&&(i.quickFilter=e.quickFilter),this.store.set(i),i.sort&&this.events.emit("sortChange",{sort:[...i.sort]}),i.filters&&this.events.emit("filterChange",{filters:{...i.filters}}),"advancedFilter"in i&&this.events.emit("advancedFilterChange",{advancedFilter:(a=i.advancedFilter)!=null?a:null}),n("expanded")&&e.expanded&&typeof e.expanded=="object"){let l=new Map(Object.entries(e.expanded).filter(([,d])=>typeof d=="boolean"));this.savedGroup?this.savedGroup.expanded=l:(this.expanded=l,this.displayChanged())}if(n("pageSize")&&typeof e.pageSize=="number"&&this.setPageSize(e.pageSize),n("page")&&typeof e.page=="number"&&this.setPage(e.page),n("conditionalFormats")&&Array.isArray(e.conditionalFormats)&&this.setConditionalFormats(e.conditionalFormats),n("selected")&&Array.isArray(e.selected)){let l=new Set(this.rowModel.allNodes().map(d=>d.id));this.setSelected(new Set(e.selected.map(String).filter(d=>l.has(d))))}}rowNumber(e){var r,i,s,a;let t=this.rowModel.rows();if(((r=this.rowNumberCache)==null?void 0:r.rows)!==t){let l=new Int32Array(t.length),d=0;t.forEach((f,p)=>{l[p]=f.kind?0:++d});let c=this.page*this.pageSize,u=this.options.pagination&&!this.rowModel.server?(a=(s=(i=this.rowModel).dataRowsBefore)==null?void 0:s.call(i,c))!=null?a:c:0;this.rowNumberCache={rows:t,nums:l,offset:u}}let n=this.rowNumberCache.nums[e];return n?n+this.rowNumberCache.offset: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){G("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 ct&&(this.saveEditBeforeReload(),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}))}saveEditBeforeReload(){this.rowModel.server&&(this.editor.endRow(!0),this.editor.active&&!this.editor.commit(null)&&this.editor.cancel())}serverFailed(e,t,n){this.destroyed||(G(`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}`,i=(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()))}),s=[i(this.api,e),i(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?(G(`${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||B(t)?(G(`groupBy: unknown column "${t}"`),!1):!0}):[]}getGroupBy(){return[...this.groupBy]}setGroupBy(e){var n;if(Array.isArray(e)&&e.length&&!this.allow(this.rowModel.server?"serverGroups":"grouping"))return;let t=this.validGroupBy(e);t.join("")!==this.groupBy.join("")&&(this.groupBy=t,this.page=0,(n=this.groupPanel)==null||n.refresh(),this.sortWithin&&this.rowModel.invalidate(),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"){G("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(i=>{if(!r())return;let s=Me(Array.isArray(i)?i:[]);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})},i=>{r()&&(G(`treeData.loadChildren failed for row "${n}"`),this.displayChanged(),this.events.emit("childrenLoadFailed",{row:e.data,error:i}))})}setGroupExpanded(e,t){var i,s;let n=this.rowModel.rows().find(a=>this.isExpandable(a)&&this.expandKey(a)===e);if((n?!!((s=(i=n.group)==null?void 0:i.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,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 i,s;let n=(i=this.columns.getNode(t))==null?void 0:i.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 r=this.aggCache.map.get(e.group);if(r||this.aggCache.map.set(e.group,r=new Map),!r.has(t)){let a=this.sourceRowsOf(e.group.rows);try{r.set(t,Ce(n.aggFunc,a.map(l=>j(n,l)),a))}catch{G(`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 i=this.rawParent(r);if(i!==null&&String(i)===t)return i}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 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 i=this.dragOptions.canDrop;if(!i)return!0;try{return i({row:e,target:t,position:n,fromOtherGrid:r!==this})!==!1}catch{return G("rowDrag.canDrop threw; the drop was refused"),!1}}dropRow(e,t,n="after",r=this){var g,w;if(this.clientOnly("dropRow")||!e||typeof e!="object")return!1;let i=this.options.treeData;!i&&n==="inside"&&(n="after");let s=this.store.state.data,a=r!==this,l=a?-1:s.indexOf(e);if(!a&&l<0||t&&!s.includes(t)||a&&(!r.canMoveRows()||s.includes(e))||!this.canDropRow(e,t,n,r))return!1;let d=i?this.rawParent(e):null,c=!i||!t?null:n==="inside"?t:(g=this.store.state.data.find(b=>this.rowModel.idOf(b)===this.parentOf(t)))!=null?g:null,u=c?this.idValue(c):null,f=s.filter(b=>b!==e),p=!t||n==="inside"?f.length:f.indexOf(t)+(n==="after"?1:0);f.splice(p,0,e);let h=f.some((b,v)=>b!==s[v]);if(!a&&!h&&String(d!=null?d:"")===String(u!=null?u:""))return!1;let y=(b,v)=>{try{i.setParentId(e,b,v)}catch{G("treeData.setParentId threw")}},m=i&&(w=this.store.state.data.find(b=>this.rowModel.idOf(b)===this.parentOf(e)))!=null?w:null;return a?(r.removeRows([e]),i&&y(u,c),this.addRows([e],p)):(i&&y(u,c),this.replaceData(f),this.history.push({undo:()=>{i&&y(d,m),this.replaceData(s)},redo:()=>{i&&y(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,i=r.indexOf(e);if(i<0||!Number.isFinite(t))return!1;let s=Math.max(0,Math.min(r.length-1,Math.floor(t)));if(s===i)return!1;let a=[...r];return a.splice(i,1),a.splice(s,0,e),this.replaceData(a),n&&this.history.push({undo:()=>this.moveRow(e,i,!1),redo:()=>this.moveRow(e,s,!1)}),this.events.emit("rowDragEnd",{row:e,fromIndex:i,toIndex:s}),!0}setFont(e){let t=this.font.size;e.size!==void 0&&(typeof e.size=="number"&&e.size>0?t=e.size:G("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:Vo;this.applyAutoHeights(r),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]=qo[this.density];this.options.rowHeight==null&&(this.renderer.opts.rowHeight=Math.round(rs(e)*t)),this.options.headerHeight==null&&(this.renderer.opts.headerHeight=Math.round(is(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:Vo),this.renderer.invalidateHeights(),this.layoutChanged())}applyCellPadding(e){return e!=null&&!(typeof e=="number"&&Number.isFinite(e)&&e>=0)?(G("cellPadding must be a number of px, 0 or more"),!1):(this.cellPadding=e,e==null?this.renderer.root.style.removeProperty("--fg-cell-px"):this.renderer.root.style.setProperty("--fg-cell-px",`${e}px`),!0)}setCellPadding(e){e===this.cellPadding||!this.applyCellPadding(e)||(this.menu.close(),this.layoutChanged())}getCellPadding(){if(this.cellPadding!=null)return this.cellPadding;let e=parseFloat(getComputedStyle(this.renderer.root).getPropertyValue("--fg-cell-px"));return Number.isFinite(e)?e:12}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),this.cellPadding!=null&&e.style.setProperty("--fg-cell-px",`${this.cellPadding}px`)}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)){G("setSummary: summary.rows must be an array");return}if(!(e&&!this.allow("summary"))){if(ut(e,this.summarySnapshot)){this.summaryOpts=e;return}this.summarySnapshot=Se(e),this.summaryOpts=e,this.refreshSummary(),this.renderer.invalidate({header:!0,rows:!0})}}refreshSummary(){var r,i;let e=this.summaryOpts;if(!((r=e==null?void 0:e.rows)!=null&&r.length)){this.summaryValues=[];return}let t=(i=e.scope)!=null?i:"filtered",n=t==="all"?this.rowModel.allNodes().map(s=>s.data):t==="selected"?this.selectedRows():this.rowModel.dataRows().map(s=>s.data);this.summaryValues=qr(e.rows,this.sourceRowsOf(n),s=>{var a;return(a=this.columns.getNode(s))==null?void 0:a.def})}dataColumns(){return this.columns.displayed().filter(e=>!B(e.id))}validRange(e){if(!e||!this.rangesOn())return null;let t=this.rowModel.getRowCount(),n=r=>!!r&&!B(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){var s,a,l,d;if(e&&(((s=e.start)==null?void 0:s.rowIndex)!==((a=e.end)==null?void 0:a.rowIndex)||((l=e.start)==null?void 0:l.colId)!==((d=e.end)==null?void 0:d.colId))&&!this.allow("range"))return;let n=this.validRange(e),r=t||!this.store.state.extraRanges.length?this.store.state.extraRanges:[],i=this.store.state.range;JSON.stringify(i)===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){if(!this.allow("range"))return;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;if(Array.isArray(e)&&e.length&&!this.allow("range"))return;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:Mt({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=>ni(r,e,n.index))}selectAllCells(){if(!this.allow("range"))return;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){if(!t&&this.multiCell()&&!this.allow("clipboard"))return"";let n=this.store.state.locale.code,r=this.columns.displayed(),i=t?null:this.rangeBounds(),s=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(this.rangesStack(d)){let p=[...d].sort((m,g)=>u?m.r1-g.r1:m.c1-g.c1),h=p.map(m=>this.rangeMatrix(m)),y=u?h.flat():h[0].map((m,g)=>h.flatMap(w=>{var b;return(b=w[g])!=null?b:[]}));return e&&y.unshift((u?p.slice(0,1):p).flatMap(m=>this.rangeHeaders(m))),mo(y)}}if(i){a=[];for(let u=i.r1;u<=i.r2;u++){let f=this.rowModel.getRow(u);f&&!f.kind&&a.push(f.data)}l=r.slice(i.c1,i.c2+1).filter(u=>!B(u.id))}else if(s)a=this.shownSelectedRows(),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||B(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})),mo(c)}multiCell(){let e=this.allRangeBounds();return e.length>1||e.some(t=>t.r1!==t.r2||t.c1!==t.c2)}rangesStack(e){return e.length>1&&(e.every(t=>t.c1===e[0].c1&&t.c2===e[0].c2)||e.every(t=>t.r1===e[0].r1&&t.r2===e[0].r2))}rangeHeaders(e){return this.columns.displayed().slice(e.c1,e.c2+1).filter(t=>!B(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(i=>!B(i.id)),n=this.store.state.locale.code,r=[];for(let i=e.r1;i<=e.r2;i++){let s=this.rowModel.getRow(i);s&&!s.kind&&r.push(t.map(a=>this.copyCell(a.def,s.data,n)))}return r}copyCell(e,t,n){return this.copyAllowed(e,t)?fn(e,j(e,t),n):""}copyAllowed(e,t){let n=e.copyable;if(typeof n!="function")return n!==!1;try{return n({value:j(e,t),row:t,column:e})!==!1}catch{return!1}}cutToClipboard(){let e=this.copyToClipboard(!1);return e&&this.clearCells(!0),e}copyText(e,t=!1){let n=this.rowModel;if(!(n instanceof ct))return this.selectionTSV(e,t);let r=n.withoutLoading(()=>this.selectionTSV(e,t)),i=t?0:n.withoutLoading(()=>this.unloadedInRanges());return i&&G(`copy: ${i} row${i>1?"s":""} of the range ${i>1?"are":"is"} not loaded and ${i>1?"were":"was"} not copied`),r}copyToClipboard(e,t=!1){var r,i,s;let n=this.copyText(e,t);if(n&&typeof navigator!="undefined"&&((r=navigator.clipboard)!=null&&r.writeText))try{(s=(i=navigator.clipboard.writeText(n))==null?void 0:i.catch)==null||s.call(i,()=>{})}catch{}return n}unloadedInRanges(){var t;let e=new Set;for(let n of this.allRangeBounds())for(let r=n.r1;r<=n.r2;r++)((t=this.rowModel.getRow(r))==null?void 0:t.kind)==="loading"&&e.add(r);return e.size}pasteText(e){var y;let t=ei(e),n={changed:0,skipped:0};if(!t.length||(t.length>1||t[0].length>1)&&!this.allow("clipboard"))return n;let r=this.columns.displayed(),i=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&&!B(l.id))d=a.rowIndex,c=l.index;else return n;let u=[],f=t.length===1&&t[0].length===1,p=f&&s?s.r2-s.r1+1:t.length,h=f&&s?s.c2-s.c1+1:Math.max(...t.map(m=>m.length));for(let m=d,g=0;m<i&&g<p;m++){let w=this.rowModel.getRow(m);if(w.kind){f&&s&&g++;continue}let b=g++;for(let v=0;v<h;v++){let M=r[c+v];if(!M)break;if(B(M.id))continue;let x=f&&s?t[0][0]:(y=t[b])==null?void 0:y[v];if(x===void 0)continue;let R=M.def;if(!R.field||!this.cellEditable(R,w.data,m)){n.skipped++;continue}let E=w.data[R.field],T=this.acceptText(R,w.data,x,E);if(!T.ok){n.skipped++;continue}this.writeCell(u,w.data,R.field,M.id,m,T.value)&&n.changed++}}return this.endCellTx(u),this.events.emit("paste",{...n}),n}acceptText(e,t,n,r){var a;let i,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 f;return String(u.value).toLowerCase()===d||((f=u.label)!=null?f:"").toLowerCase()===d});if(!c||c.disabled)return{ok:!1};i=c.value}else if(e.formulas&&ze(n.trim()))i=n.trim();else{let l=hn(e,n,r);if(!l.ok)return l;i=l.value}return this.cellError(e,t,i)!==null?{ok:!1}:{ok:!0,value:i}}cellError(e,t,n){let r=this.store.state.locale;if(e.required&&K(n))return r.required;if(e.unique&&e.field&&!K(n)){let i=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!K(l)&&(l instanceof Date?l.getTime():String(l))===i}))return r.duplicate}if(e.validate){let i;try{i=e.validate(n,t)}catch{i=r.invalidValue}if(i!==!0)return typeof i=="string"&&i?i: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 i=this.rowModel.idOf(n),s=this.rowModel.indexOfId(i);for(let a of t){if(!this.cellEditable(a.def,n,s<0?r: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}sortBlocks(e){if(!this.sortWithin||!this.paid)return null;if(this.pivotCfg||this.options.treeData||this.groupBy.length)return G("sortWithinMerges is ignored while rows are grouped, pivoted or shown as a tree"),null;let t=new Set(e.map(n=>n.colId));return this.columns.displayed().filter(n=>n.def.merge&&!n.def.rowSpan&&!B(n.id)&&!t.has(n.id)).map(n=>n.def)}setSortWithinMerges(e){let t=!!e;if(t!==this.sortWithin){if(this.sortWithin=t,this.rowModel.server){t&&G("sortWithinMerges is ignored with a datasource: the server sorts the rows");return}this.rowModel.invalidate(),this.updateRows(),this.renderer.invalidate({rows:!0})}}mergeSpans(){var s;if(this.rowModel.server||!this.columns.displayed().some(a=>a.def.merge||a.def.rowSpan)||!this.allow("merge"))return ss;let e=this.rowModel.rows(),t=this.editVersion*1e6+this.columns.displayed().length,n=this.columns.getColumn(ae)?this.selectionBlocks():null;if(this.spanCache&&this.spanCache.rows===e&&this.spanCache.ver===t&&this.spanCache.sel===n)return this.spanCache.spans;let r=new Map,i=this.columns.displayed().filter(a=>a.def.merge||a.def.rowSpan);if(i.length&&!e.some(a=>a.kind)){let a=e.map(l=>l.data);for(let l of i)r.set(l.id,ot(a,l.def));if(n){let l=e.length,d=new Int32Array(l),c=new Int32Array(l);for(let u=0;u<l;u++){let f=(s=n.index.get(e[u].id))!=null?s:-1;d[u]=f<0?u:Math.max(0,u-(f-n.spans.start[f])),c[u]=f<0?u:Math.min(l-1,u+(n.spans.end[f]-f))}r.set(ae,{start:d,end:c})}}return this.spanCache={rows:e,ver:t,sel:n,spans:r},r}validMergeSelection(e){return e==null||e==="rows"?"rows":typeof e=="number"&&Number.isInteger(e)&&e>=1?e:(G("mergeSelection must be 'rows' or a whole number from 1; one checkbox per row is used"),"rows")}setMergeSelection(e){let t=this.validMergeSelection(e);t!==this.mergeSel&&(this.mergeSel=t,this.renderer.invalidate({rows:!0}))}getMergeSelection(){return this.mergeSel}mergeLevelColumns(){return this.columns.displayed().filter(e=>e.def.merge&&!e.def.rowSpan&&!B(e.id))}mergeSelectionLevel(){if(this.mergeSel==="rows")return 0;if(!this.options.rowSelection)return G("mergeSelection needs rowSelection 'multiple' or 'single'"),0;if(!this.paid)return 0;if(this.rowModel.server||this.pivotCfg||this.options.treeData||this.groupBy.length)return G("mergeSelection is ignored while rows are grouped, pivoted, shown as a tree or loaded from a datasource: one checkbox per row"),0;let e=this.mergeLevelColumns().length;return e?this.mergeSel>e?(G(`mergeSelection: level ${this.mergeSel} asked for, but only ${e} merge column${e>1?"s are":" is"} shown; level ${e} is used`),e):this.mergeSel:0}selectionBlocks(){let e=this.mergeSelectionLevel();if(!e)return null;let t=this.rowModel.dataRows(),n=this.rowModel.rows(),r=this.mergeLevelColumns().slice(0,e),i=`${e}|${this.editVersion}|${r.map(l=>l.id).join("")}`,s=this.selBlockCache;if(s&&s.rows===t&&s.disp===n&&s.key===i)return s.blocks;let a=null;if(!n.some(l=>l.kind)){let l=t.map(d=>d.data);a={level:e,cols:r,spans:ao(r.map(d=>ot(l,d.def)),t.length),index:new Map(t.map((d,c)=>[d.id,c]))}}return this.selBlockCache={rows:t,disp:n,key:i,blocks:a},a}blockSelection(e){let t=this.selectionBlocks(),n=t&&this.rowModel.getRow(e),r=n?t.index.get(n.id):void 0;if(!t||r===void 0)return null;let i=this.store.state.selected,s=this.blockStateCache;(!s||s.sel!==i||s.blocks!==t||s.ver!==this.editVersion)&&(s=this.blockStateCache={sel:i,blocks:t,ver:this.editVersion,map:new Map});let a=t.spans.start[r],l=s.map.get(a);if(l===void 0){let d=this.rowModel.dataRows(),c=0,u=0;for(let f=a;f<=t.spans.end[a];f++)this.rowSelectable(d[f].data)&&(c++,i.has(d[f].id)&&u++);l=c?u===0?"none":u===c?"all":"some":"off",s.map.set(a,l)}return l}blockIds(e,t){let n=this.rowModel.dataRows(),r=[];for(let i=e;i<=t;i++)this.rowSelectable(n[i].data)&&r.push(n[i].id);return r}selectBlockFromClick(e,t,n,r){let i=this.options.rowSelection,s=e.index.get(this.rowModel.getRow(t).id);if(s===void 0)return;let{start:a,end:l}=e.spans,d=a[s],c=l[s],u=this.blockIds(d,c);if(!u.length)return;let f=this.store.state.selected,p=this.rowModel.dataRows()[d].id;if(i==="single"){let y=u.every(m=>f.has(m));this.setSelected(n&&y?new Set:new Set(u),p);return}let h=this.store.state.anchorId==null?void 0:e.index.get(this.store.state.anchorId);if(r&&h!==void 0){let y=n?new Set(f):new Set;for(let m of this.blockIds(Math.min(a[h],d),Math.max(l[h],c)))y.add(m);this.setSelected(y);return}if(n){let y=new Set(f),m=u.every(g=>y.has(g));for(let g of u)m?y.delete(g):y.add(g);this.setSelected(y,p);return}this.setSelected(new Set(u),p)}selectedGroups(e=!1){var s;let t=this.selectionBlocks(),n=this.store.state.selected;if(!t||!n.size)return[];let r=this.rowModel.dataRows(),i=[];for(let a=0;a<r.length;a=t.spans.end[a]+1){let l=[],d=!1;for(let u=a;u<=t.spans.end[a];u++){let f=n.has(r[u].id);d||(d=f),(f||e)&&l.push(r[u].data)}if(!d)continue;let c={};for(let u of t.cols)c[(s=u.def.field)!=null?s:u.id]=j(u.def,r[a].data);i.push({level:t.level,values:c,rows:l})}return i}rangeAggregates(){let e=this.allRangeBounds();if(!e.length||!this.paid)return null;let t=this.columns.displayed(),n=[JSON.stringify(e),this.rowModel.rows(),this.editVersion,...t.map(l=>l.def)],r=this.aggMemo;if(r&&r.key.length===n.length&&r.key.every((l,d)=>l===n[d]))return r.value&&{...r.value};let i={cells:0,count:0,numbers:0,sum:0,min:1/0,max:-1/0},s=e.length>1?new Set:null,a=t.length;for(let l of e){let d=t.slice(l.c1,l.c2+1).filter(c=>!B(c.id));for(let c=l.r1;c<=l.r2;c++){let u=this.rowModel.getRow(c);if(!u||u.kind)continue;let f=u.data;for(let p of d){if(s){let y=c*a+p.index;if(s.has(y))continue;s.add(y)}i.cells++;let h=j(p.def,f);if(!K(h)&&(i.count++,typeof h=="number"||p.def.type==="number"&&!Number.isNaN(Number(h)))){let y=Number(h);i.numbers++,i.sum+=y,y<i.min&&(i.min=y),y>i.max&&(i.max=y)}}}}return this.aggMemo={key:n,value:i},{...i}}fillRange(e){var h;if(!this.allow("fill"))return;let t=(h=this.rangeBounds())!=null?h:(()=>{let y=this.store.state.focus,m=y&&this.columns.getColumn(y.colId);return y&&m&&!B(m.id)?{r1:y.rowIndex,r2:y.rowIndex,c1:m.index,c2:m.index}:null})(),n=this.columns.getColumn(e.start.colId),r=this.columns.getColumn(e.end.colId);if(!t||!n||!r)return;let i=Mt({start:{rowIndex:e.start.rowIndex,colIndex:n.index},end:{rowIndex:e.end.rowIndex,colIndex:r.index}}),s=this.rowModel.getRowCount();i.r1=Math.max(0,i.r1),i.r2=Math.min(s-1,i.r2);let a=this.columns.displayed(),l=[],d=(y,m,g)=>{let w=a[m],b=this.rowModel.getRow(y),v=w==null?void 0:w.def;!b||b.kind||!(v!=null&&v.field)||B(w.id)||!this.cellEditable(v,b.data,y)||this.cellError(v,b.data,g)===null&&this.writeCell(l,b.data,v.field,w.id,y,g)},c=(y,m)=>j(a[m].def,this.rowModel.getRow(y).data),u=y=>{let m=this.rowModel.getRow(y);return!!m&&!m.kind},f=(y,m,g)=>{let w=[];for(let b=y;b<=m;b++)g(b)&&w.push(b);return w},p=y=>!!a[y]&&!B(a[y].id);if(i.r1<t.r1||i.r2>t.r2){let y=f(t.r2+1,i.r2,u),m=f(i.r1,t.r1-1,u).reverse(),g=f(t.r1,t.r2,u);for(let w=t.c1;w<=t.c2;w++){let b=g.map(v=>c(v,w));St(b,y.length).forEach((v,M)=>d(y[M],w,v)),St([...b].reverse(),m.length).forEach((v,M)=>d(m[M],w,v))}}else if(i.c1<t.c1||i.c2>t.c2){let y=f(t.c2+1,i.c2,p),m=f(i.c1,t.c1-1,p).reverse(),g=f(t.c1,t.c2,p);for(let w of f(t.r1,t.r2,u)){let b=g.map(v=>c(w,v));St(b,y.length).forEach((v,M)=>d(w,y[M],v)),St([...b].reverse(),m.length).forEach((v,M)=>d(w,m[M],v))}}else return;this.endCellTx(l),this.setRange({start:{rowIndex:i.r1,colId:a[i.c1].id},end:{rowIndex:i.r2,colId:a[i.c2].id}})}setPinnedRows(e){e.top&&(this.pinnedRows.top=Me(e.top)),e.bottom&&(this.pinnedRows.bottom=Me(e.bottom)),this.renderer.invalidate({rows:!0})}writeCell(e,t,n,r,i,s){let a=t[n];return Object.is(a,s)||this.veto("beforeCellChange",{row:t,rowIndex:i,colId:r,oldValue:a,newValue:s})?!1:(this.tracker.beforeChange(t),t[n]=s,e.push({row:t,field:n,colId:r,rowIndex:i,oldValue:a,newValue:s}),!0)}endCellTx(e){if(!e.length)return;let t=(n,r)=>{let i=n.map(s=>{let a=s.row[s.field];return s.row[s.field]=s[r],{row:s.row,rowIndex:this.rowModel.indexOfId(this.rowModel.idOf(s.row)),colId:s.colId,oldValue:a,newValue:s[r]}});this.afterDataEdit();for(let s of i)this.events.emit("cellValueChanged",s)};this.history.push({undo:()=>t([...e].reverse(),"oldValue"),redo:()=>t(e,"newValue")}),this.afterDataEdit();for(let n of e)this.events.emit("cellValueChanged",{row:n.row,rowIndex:n.rowIndex,colId:n.colId,oldValue:n.oldValue,newValue:n.newValue})}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),i=(a=this.columns.getColumn(t))==null?void 0:a.def;if(!r||!(i!=null&&i.field))return;let s=[];this.writeCell(s,r.data,i.field,t,e,n),this.endCellTx(s)}clearCells(e=!1){var l,d;let t=this.columns.displayed(),n=this.allRangeBounds();if(e&&!this.rangesStack(n)){let c=this.rangeBounds();n=c?[c]:[]}let r=this.store.state.focus,i=r?(l=this.columns.getColumn(r.colId))==null?void 0:l.index:void 0,s=n.length?n:r&&i!==void 0?[{r1:r.rowIndex,r2:r.rowIndex,c1:i,c2:i}]:[];if(!s.length)return;let a=[];for(let c of s)for(let u=c.r1;u<=c.r2;u++){let f=this.rowModel.getRow(u);for(let p=c.c1;p<=c.c2;p++){let h=(d=t[p])==null?void 0:d.def;f&&!f.kind&&(h!=null&&h.field)&&this.cellEditable(h,f.data,u)&&(!e||this.copyAllowed(h,f.data))&&this.writeCell(a,f.data,h.field,t[p].id,u,null)}}this.endCellTx(a)}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 r=this.rowModel.getRowCount(),i=this.store.state.focus;i&&i.rowIndex>=r&&this.store.set({focus:r?{...i,rowIndex:r-1}:null})}addRows(e,t,n=!0){if(this.clientOnly("addRows"))return[];let r=Me(Array.isArray(e)?e:[]);if(!r.length)return[];let i=[...this.store.state.data],s=t===void 0?i.length:Math.max(0,Math.min(i.length,t));i.splice(s,0,...r);for(let a of r)this.tracker.created.add(a);return this.replaceData(i),n&&this.history.push({undo:()=>this.removeRows(r,!1),redo:()=>this.addRows(r,s,!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)),i=[];if(n.forEach((l,d)=>{let c=!1;try{c=!!r(l)}catch{c=!1}c&&i.push({row:l,index:d})}),!i.length)return[];let s=new Set(i.map(l=>l.row)),a=new Set(i.filter(l=>this.tracker.created.has(l.row)).map(l=>l.row));for(let{row:l,index:d}of i)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 i)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:i.map(l=>l.row)}),i.map(l=>l.row)}trackedFields(){let e=[],t=n=>{for(let r of n)r.children?t(r.children):r.def.field&&!B(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 i of this.tracker.diff(n,e.map(s=>s.field)))t.push({row:n,colId:e.find(s=>s.field===i).colId,oldValue:r[i],newValue:n[i]});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(e){e&&e.rows instanceof Map?this.tracker.commit(e.rows,Array.isArray(e.deleted)?e.deleted:[]):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=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 r of e){let i=this.columns.getNode(r);!i||i.children||i.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 d,c;let t=(e?e.map(u=>this.columns.getColumn(u)):this.columns.displayed()).filter(u=>!!u&&Gt(u.def)),{first:n,last:r}=this.renderer.renderedRange(),i=this.store.state.locale.code,s=this.getCellPadding()*2,a=s+22+6+14,l=s;for(let u of t){let f=this.renderer.measureText((c=(d=u.def.header)!=null?d:u.def.field)!=null?c:"",!0)+a,p=ne(u.def,i);for(let y=n;y<=r;y++){let m=this.rowModel.getRow(y);m&&(f=Math.max(f,this.renderer.measureText(p(j(u.def,m.data)),!1)+l))}let h=this.columns.setWidth(u.id,Math.ceil(f));this.events.emit("columnResize",{colId:u.id,width:h})}this.layoutChanged()}resetColumns(){this.columns.reset(),this.columnsChanged()}setSort(e){let t=this.checkSort(e);t&&(this.store.set({sort:t}),this.events.emit("sortChange",{sort:[...t]}))}checkSort(e){let t=e.filter(n=>{let r=this.columns.getNode(n.colId);return!r||r.children?(G(`setSort: unknown column "${n.colId}"`),!1):n.dir==="asc"||n.dir==="desc"});return this.veto("beforeSort",{sort:t.map(n=>({...n}))})?null:t}toggleSort(e,t){let n=this.store.state.sort,r=n.find(a=>a.colId===e),i=r?r.dir==="asc"?"desc":null:"asc",s;t?i?r?s=n.map(a=>a.colId===e?{colId:e,dir:i}:a):s=[...n,{colId:e,dir:i}]:s=n.filter(a=>a.colId!==e):s=i?[{colId:e,dir:i}]:[],this.setSort(s)}setFilter(e,t){let n=this.columns.getNode(e);if(!n||n.children){G(`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.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),f=n.get(u);f?f.push(d):n.set(u,[d])}let r=[],i=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);i.has(c)||(i.add(c),s.push(c),this.rowSelectable(d)&&r.push(c))}return r}groupSelection(e){let t=this.groupMemberIds(e),n=this.store.state.selected,r=t.filter(i=>n.has(i)).length;return r===0?"none":r===t.length?"all":"some"}toggleGroupSelection(e){if(this.options.rowSelection!=="multiple")return;let t=this.groupMemberIds(e),n=new Set(this.store.state.selected),r=t.length>0&&t.every(i=>n.has(i));for(let i of t)r?n.delete(i):n.add(i);this.setSelected(n)}selectFromClick(e,t,n){var l,d;let r=this.options.rowSelection;if(!r||e<0||e>=this.rowModel.getRowCount())return;let i=this.rowModel.getRow(e);if(i.kind)return;let s=this.selectionBlocks();if(s){this.selectBlockFromClick(s,e,t,n);return}if(!this.rowSelectable(i.data))return;let a=Zi({selected:this.store.state.selected,anchorIndex:this.anchorIndex(),mode:r,index:e,idAt:c=>this.rowModel.getRow(c).id,toggle:t,range:n});if(this.rowModel.rows()!==this.rowModel.dataRows()||this.options.isRowSelectable)for(let c of a.selected){if(this.store.state.selected.has(c))continue;let u=this.rowModel.indexOfId(c),f=u>=0?this.rowModel.getRow(u):null;f&&(f.kind||!this.rowSelectable(f.data))&&a.selected.delete(c)}if(r==="multiple"&&this.options.groupSelectsChildren&&this.options.treeData&&i.hasChildren){let c=a.selected.has(i.id);for(let u of this.groupMemberIds(i))c?a.selected.add(u):a.selected.delete(u)}this.setSelected(a.selected,(d=(l=this.rowModel.getRow(a.anchorIndex))==null?void 0:l.id)!=null?d:null)}anchorIndex(){let e=this.store.state.anchorId;if(e==null)return null;let t=this.rowModel.indexOfId(e);return t<0?null:t}selectableIds(){let e=this.rowModel.dataRows(),t=this.options.isRowSelectable,n=this.selectableCache;if(n&&n.rows===e&&n.fn===t&&n.ver===this.editVersion)return n.ids;let r=new Set(this.selectableRows().map(i=>i.id));return this.selectableCache={rows:e,fn:t,ver:this.editVersion,ids:r},r}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(i=>t.has(i.id)),r=new Set(t);for(let i of e)n?r.delete(i.id):r.add(i.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):[]}orderedDataRows(){var e,t,n;return(n=(t=(e=this.rowModel).orderedDataRows)==null?void 0:t.call(e))!=null?n:this.rowModel.dataRows()}shownSelectedRows(){let e=this.store.state.selected;return e.size?this.orderedDataRows().filter(t=>e.has(t.id)).map(t=>t.data):[]}withSelect(e){let t=[],n=this.options.rowNumbers;if(n){let r=typeof n=="object"?n:{};t.push(xr(typeof r.width=="number"&&r.width>0?r.width:void 0,typeof r.header=="string"?r.header:void 0))}return this.options.rowDrag&&t.push(vr),this.options.rowSelection&&t.push(br),[...t,...e]}setData(e,t){if(this.clientOnly("setData"))return;if(!Array.isArray(e)){G("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();let n=Me(e);this.store.set({data:n===this.store.state.data?[...n]:n}),t!=null&&t.scrollToTop&&this.renderer.setScroll({top:0,left:0});let r=this.store.state.selected;if(r.size)if(this.options.getRowId){let a=new Set(this.rowModel.allNodes().map(d=>d.id)),l=new Set([...r].filter(d=>a.has(d)));l.size!==r.size&&this.setSelected(l)}else this.setSelected(new Set,null);let i=this.rowModel.getRowCount(),s=this.store.state.focus;s&&s.rowIndex>=i&&this.store.set({focus:i?{...s,rowIndex:i-1}:null})}setColumns(e){var r;if(!Array.isArray(e)){G("setColumns: columns must be an array");return}if(ut(e,this.sourceSnapshot)){this.sourceDefs=e;return}if(this.menu.close(),this.sourceDefs=e,this.sourceSnapshot=Se(e),this.pivotCfg){this.rebuildPivot();return}this.columns.updateDefs(this.withSelect(e)),this.bindFormulas();let t=i=>!!this.columns.getNode(i),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(i=>t(i.colId)),filters:Object.fromEntries(Object.entries(this.store.state.filters).filter(([i])=>t(i))),focus:this.store.state.focus&&t(this.store.state.focus.colId)?this.store.state.focus:null}),this.columnsChanged()}closePopups(){var n,r;let t=!!((r=(n=this.renderer.root.getRootNode().activeElement)!=null?n:document.activeElement)!=null&&r.closest(".fg-menu"));this.menu.close(),this.chooser.close(),this.contextMenu.close(),this.filterBuilder.close(),this.formatDialog.close(),this.assistantPanel.close(),t&&this.renderer.gridEl.focus({preventScroll:!0})}onChange(e){var i,s,a,l;let t=(...d)=>d.some(c=>e.includes(c));t("sort","filters","quickFilter","advancedFilter")&&this.saveEditBeforeReload(),this.pivotCfg&&t("data","locale")&&this.rebuildPivot(!1),this.rollupOn&&t("data")&&this.rebuildRollup(),t("locale","theme")&&this.closePopups(),t("locale")&&(this.finder.relabel(),(i=this.sideBar)==null||i.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")&&((s=this.summaryOpts)==null?void 0:s.scope)==="selected")&&this.refreshSummary(),t("locale")&&((a=this.groupPanel)==null||a.refresh()),t("filters")&&((l=this.sideBar)==null||l.refresh()),t("theme")&&this.renderer.applyTheme();let r=t("sort","filters","quickFilter","advancedFilter","locale","data");!r&&t("selected")&&this.renderer.selectionChanged(),this.renderer.invalidate({header:r,rows:t("data","sort","filters","quickFilter","advancedFilter","locale")})}createApi(){let e=t=>((...n)=>{if(this.destroyed){G("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),setSortWithinMerges:e(t=>this.setSortWithinMerges(t)),getSortWithinMerges:e(()=>this.sortWithin),setMergeSelection:e(t=>this.setMergeSelection(t)),getMergeSelection:e(()=>this.getMergeSelection()),getSelectedGroups:e(()=>this.selectedGroups()),getSelectedGroupsAllRows:e(()=>this.selectedGroups(!0)),showOverlay:e(t=>{this.forcedOverlay=t==="loading"||t==="noRows"?t:null,this.renderer.invalidate()}),getXlsxSheet:e(t=>{var n;return this.allow("excel")?Ao(this,t):{name:(n=t==null?void 0:t.sheetName)!=null?n:"Sheet1",rows:[]}}),print:e(t=>bi(Ro(this,t))),getPrintHtml:e(t=>Ro(this,t)),getPdf:e(t=>this.allow("pdf")?yo(In(this,t),vn,{scale:t==null?void 0:t.resolution,quality:t==null?void 0:t.quality}):null),exportPdf:e((t="export.pdf",n)=>{if(!this.allow("pdf"))return;let r=yo(In(this,n),vn,{scale:n==null?void 0:n.resolution,quality:n==null?void 0:n.quality});r?Xe(t,[r],"application/pdf"):G("exportPdf: this browser cannot draw on a canvas")}),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.allow("advancedFilter")&&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)),flushAsyncTransactions:e(()=>this.flushAsyncTransactions()),setConditionalFormats:e(t=>this.setConditionalFormats(t)),getConditionalFormats:e(()=>this.getConditionalFormats()),openConditionalFormats:e(t=>{this.allow("conditional")&&this.formatDialog.open(t)}),askAssistant:e(t=>Vn(this,t,this.allow("assistant")?this.options.assistant:void 0)),openAssistant:e(()=>{this.allow("assistant")&&this.assistantPanel.open()}),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:gt(t)})),setFont:e(t=>this.setFont(t)),setCellPadding:e(t=>this.setCellPadding(t)),getCellPadding:e(()=>this.getCellPadding()),setRollup:e(t=>this.setRollup(t)),getRollup:e(()=>this.getRollup()),setColumnAggFunc:e((t,n)=>this.setColumnAggFunc(t,n)),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;this.allow("sideBar")&&((r=this.sideBar)==null||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)),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(t=>this.commitChanges(t)),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.allow("find")?this.finder.find(t):0),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.allow("charts")?this.charts.create(t):{el:C("div","fg-chart-body"),setType:()=>{},update:()=>{},destroy:()=>{}}),getCsv:e(t=>So(this,t)),getJson:e(t=>Mo(this,t)),exportJson:e((t="export.json",n)=>Xe(t,[Mo(this,n)],"application/json;charset=utf-8")),exportCsv:e((t="export.csv",n)=>Xe(t,["\uFEFF",So(this,n)],"text/csv;charset=utf-8")),getXlsx:e(t=>this.allow("excel")?Eo(this,t):new Uint8Array(0)),exportXlsx:e((t="export.xlsx",n)=>{this.allow("excel")&&Xe(t,[Eo(this,n)],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")}),importFile:e((t,n)=>xi(this,t,n)),on:e((t,n)=>this.events.on(t,n)),destroy:()=>this.destroy()}}destroy(){if(!this.destroyed){this.destroyed=!0,en.delete(this.renderer.root),clearTimeout(this.flashTimer),clearTimeout(this.txTimer);for(let e of this.disposers)e();this.renderer.destroy(),this.events.clear()}}};function as(o,e){return new Wo(o,e).api}function jo(o){let e=(Array.isArray(o)?o:[]).filter(t=>t&&t.grid&&typeof t.grid.getXlsxSheet=="function");return e.length?e.some(t=>{var n;return((n=Jr(t.grid))==null?void 0:n.allow("workbook"))===!1})?new Uint8Array(0):Ke(e.map((t,n)=>{var r,i,s;return t.grid.getXlsxSheet({...t.options,sheetName:(s=(i=t.sheetName)!=null?i:(r=t.options)==null?void 0:r.sheetName)!=null?s:`Sheet${n+1}`})})):(G("buildWorkbook: no grids given; the file has one empty sheet"),Ke([{name:"Sheet1",rows:[]}]))}function ls(o,e){let t=jo(e);t.length&&Xe(o||"export.xlsx",[t],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")}var zl=o=>typeof o=="function"?o():o!=null?o:{};async function ds(o,e,t,n){var d;let r=o,i=o.split(/[?#]/)[0],s={method:e,credentials:(d=n.credentials)!=null?d:"same-origin",headers:{Accept:"application/json",...zl(n.headers)}};if(e==="GET"){let c=new URLSearchParams;for(let[u,f]of Object.entries(t))f!==void 0&&c.set(u,typeof f=="string"?f:JSON.stringify(f));r+=(o.includes("?")?"&":"?")+c.toString()}else s.headers["Content-Type"]="application/json",s.body=JSON.stringify(t);let a=await fetch(r,s);if(!a.ok)throw new Error(`HTTP ${a.status} from ${i}`);let l=await a.text();if(!l)return null;try{return JSON.parse(l)}catch{throw new Error(`HTTP ${a.status} from ${i}: the response is not JSON`)}}function Vl(o){if(Array.isArray(o))return{rows:o};let e=o!=null?o:{},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(r=>typeof r=="number");return{rows:(t!=null?t:[]).filter(r=>r!==null&&typeof r=="object"),total:n}}function _o(o,e={}){return{async getRows(t){var s,a,l,d,c;let n=Math.max(1,t.end-t.start),r={start:t.start,end:t.end,page:Math.floor(t.start/n),size:n,sort:t.sort,filters:t.filters,quickFilter:t.quickFilter,advancedFilter:(s=t.advancedFilter)!=null?s:void 0,groupBy:t.groupBy,groupKeys:t.groupKeys,...(l=(a=e.params)==null?void 0:a.call(e))!=null?l:{}},i=await ds(o,(d=e.method)!=null?d:"POST",r,e);return((c=e.transform)!=null?c:Vl)(i)}}}var Uo=new WeakMap;function cs(o,e,t={}){let n=Uo.get(o);if(n)return n;if(!o.hasChanges())return Promise.resolve(null);let{created:r,updated:i,deleted:s}=o.getModifiedRows(),a=new Map([...r,...i].map(d=>[d,{...d}])),l=(async()=>{var c,u;let d=await ds(e,"POST",{created:r,updated:i,deleted:s,...(u=(c=t.params)==null?void 0:c.call(t))!=null?u:{}},t);return o.commitChanges({rows:a,deleted:s}),d})().finally(()=>Uo.delete(o));return Uo.set(o,l),l}var Ko=new WeakMap;async function us(o,e,t={}){var i,s;let n=((i=Ko.get(o))!=null?i:0)+1;Ko.set(o,n);let{rows:r}=await _o(e,t).getRows({start:0,end:(s=t.maxRows)!=null?s:1e4,sort:[],filters:{},quickFilter:""});return Ko.get(o)===n&&o.setData(r),r}function fs(o=document){var n,r;let e=(n=o.querySelector('meta[name="_csrf"]'))==null?void 0:n.content,t=((r=o.querySelector('meta[name="_csrf_header"]'))==null?void 0:r.content)||"X-CSRF-TOKEN";return e?{[t]:e}:{}}var hs=["add","update","remove","upsert"];function Xo(o){let e=o;if(typeof e=="string"){if(!e.trim())return null;e=JSON.parse(e)}if(Array.isArray(e))return{upsert:e.filter(n=>n&&typeof n=="object")};if(!e||typeof e!="object")return null;let t=e;return hs.some(n=>Array.isArray(t[n]))?t:Array.isArray(t.rows)?{rows:t.rows}:null}function ps(o,e){let t=e!=null?e:{},n="connecting",r=!1,i=!1,s=[],a=null,l=0,d=0,c=m=>{var g;if(n!==m){n=m;try{(g=t.onStatus)==null||g.call(t,m)}catch{}}},u=m=>{"rows"in m&&Array.isArray(m.rows)&&!hs.some(g=>g in m)?(o.flushAsyncTransactions(),o.setData(m.rows)):t.immediate?o.applyTransaction(m):o.applyTransactionAsync(m)},f=m=>{if(r)return;let g;try{g=t.parse?t.parse(m):Xo(m),Array.isArray(g)&&(g={upsert:g})}catch(w){t.onError?t.onError(w):G("connectLive: a message could not be read");return}!g||typeof g!="object"||(i?s.push(g):u(g))},p=()=>{if(r||t.reconnect===!1){c("closed");return}let m=typeof t.maxDelay=="number"&&t.maxDelay>0?t.maxDelay:3e4,g=Math.min(m,500*2**Math.min(d++,10))*(.8+Math.random()*.4);c("connecting"),l=window.setTimeout(h,g)},h=()=>{if(r)return;if(l=0,t.poll){y();return}let m=t.url;if(!m){G("connectLive: give a url or a poll function"),c("error");return}c(i?"paused":"connecting");try{if(/^wss?:/i.test(m)){if(typeof WebSocket=="undefined")throw new Error("no WebSocket");let g=new WebSocket(m,t.protocols);a=g,g.onopen=()=>{d=0,c(i?"paused":"open")},g.onmessage=w=>f(w.data),g.onerror=()=>c("error"),g.onclose=()=>{a===g&&(a=null),r||p()}}else{if(typeof EventSource=="undefined")throw new Error("no EventSource");let g=new EventSource(m,{withCredentials:!!t.withCredentials});a=g,g.onopen=()=>{d=0,c(i?"paused":"open")},g.addEventListener(t.event||"message",w=>f(w.data)),g.onerror=()=>{g.readyState===2?(a===g&&(a=null),r||p()):c("connecting")}}}catch{c("error"),p()}},y=async()=>{if(!r)try{let m=await t.poll();if(r)return;d=0,c(i?"paused":"open"),f(m);let g=typeof t.interval=="number"&&t.interval>0?t.interval:2e3;l=window.setTimeout(y,g)}catch{if(r)return;c("error"),p()}};return h(),{get status(){return n},pause(){r||i||(i=!0,c("paused"))},resume(){if(r||!i)return;i=!1;let m=s;s=[];for(let g of m)u(g);c(a||t.poll?"open":"connecting")},close(){r||(r=!0,clearTimeout(l),a==null||a.close(),a=null,s=[],c("closed"))},send(m){let g=a;return!g||typeof g.send!="function"||g.readyState!==1?!1:(g.send(m),!0)}}}var gs={en:fe,ko:rr,"zh-CN":ir,"zh-TW":sr,ja:or,es:tr,fr:nr,de:er,vi:ar,th:lr,id:dr,ru:cr,"pt-BR":ur,it:fr};for(let o of Object.values(gs))$t(o);return xs(ql);})();
|
|
46
|
+
`,Tn=o=>typeof o=="string"&&/^(#[0-9a-f]{3,8}|[a-z]+|rgba?\([\d\s.,%]+\)|hsla?\([\d\s.,%deg]+\))$/i.test(o.trim())?o.trim():void 0,ll=1e3;function Dn(o,e={}){var T,L,I,D,N;let t=In(o,e.columns),n=o.store.state.locale,r=n.code,i=t.map(P=>ne(P.def,r)),s=Pe(r),a=(T=e.rowNumbers)!=null?T:!!o.options.rowNumbers,l=P=>tl.includes(P.align)?P.align:P.type==="number"?"right":P.type==="boolean"?"center":"left",c=t.map(P=>{let $=[];for(let O=P.node;O;O=O.parent)$.unshift(O);return $}),d=Math.max(1,...c.map(P=>P.length)),u=[];if(e.headers!==!1)for(let P=0;P<d;P++){let $=P===0&&a?[{text:"#",align:"right",num:!0,rowspan:d}]:[];for(let O=0;O<t.length;O++){let H=c[O],q=H.length-1;if(P<q){let K=H[P];if(O>0&&c[O-1][P]===K)continue;let Y=1;for(;O+Y<t.length&&c[O+Y][P]===K;)Y++;$.push({text:Xe(K.def,K.id),align:Y>1?"center":"left",span:Y,group:!0})}else P===q&&$.push({text:Xe(t[O].def,t[O].id),align:l(t[O].def),span:1,rowspan:d-P})}u.push($)}let f=(P,$,O,H)=>{var K;if(O==null||O==="")return"";if(H==="count")return s.format(O);let q=(K=P.def.type)!=null?K:typeof O=="number"?"number":O instanceof Date?"date":void 0;return q===P.def.type?i[$](O):wt(P.def,q,r)(O)},p=(P,$,O,H=0)=>{var Y;let q=0;for(;q<t.length-1&&!O[q];)q++;q=Math.max(1,q);let K=a?[{text:"",align:"right",num:!0}]:[];K.push({text:$,align:"left",span:q,indent:H});for(let W=q;W<t.length;W++)K.push({text:(Y=O[W])!=null?Y:"",align:l(t[W].def)});return{kind:P,level:H,cells:K}},m=Fn(o,e.rows),b=e.groups!==!1&&!o.rowModel.server&&!o.options.treeData?o.getGroupBy():[],g=e.styles!==!1&&t.some(P=>P.def.cellClass)?yi(o):null,h=[],w=typeof e.maxRows=="number"&&e.maxRows>=1?Math.floor(e.maxRows):ll,y=0;try{for(let P of sl(o,m,b)){if(P.kind==="row"&&y>=w)break;if(P.kind==="group"){let H=(L=o.columns.getNode(P.colId))==null?void 0:L.def,q=_(P.value)?n.blanks:H?ne(H,r)(P.value):String(P.value),K=`${H?Xe(H,P.colId):P.colId}: ${q} (${s.format(P.rows.length)})`,Y=t.map((W,Q)=>{if(!(!W.def.aggFunc||b.includes(W.id)))try{return f(W,Q,Re(W.def.aggFunc,P.rows.map(J=>j(W.def,J)),P.rows),W.def.aggFunc)||void 0}catch{return}});h.push(p("group",K,Y,P.level));continue}let $=P.row,O=a?[{text:String(P.n),align:"right",num:!0}]:[];t.forEach((H,q)=>{let K=j(H.def,$),Y=_(K)?"":i[q](K),W={text:Y,align:l(H.def)};if(g&&H.def.cellClass){let J;try{J=typeof H.def.cellClass=="function"?H.def.cellClass({value:K,formatted:Y,row:$,rowIndex:P.n-1,column:H.def}):H.def.cellClass}catch{J=void 0}if(J){let Z=g.of(J);Z.color&&(W.color=gi(Z.color)),Z.fill&&(W.fill=gi(Z.fill)),Z.bold&&(W.bold=!0)}}let Q=e.styles!==!1?o.cellFormat($,H.id,K):null;if(Q){let J=Q.style;Tn(J.color)&&(W.color=Tn(J.color)),Tn(J.background)&&(W.fill=Tn(J.background)),J.bold&&(W.bold=!0),J.italic&&(W.italic=!0),J.strike&&(W.strike=!0);let Z=ve(J);Z&&(W.align=Z),Q.bar&&(W.bar={from:Q.bar.from,to:Q.bar.to,color:/^#[0-9a-f]{3,8}$/i.test(Q.bar.color)?Q.bar.color:"#93c5fd"}),Q.icon&&(W.icon={char:Q.icon.char,color:Q.icon.color})}O.push(W)}),h.push({kind:"row",cells:O}),y++}}finally{g==null||g.dispose()}let v=[],k=e.summary!==!1?o.summary():null;k&&k.opts.rows.forEach((P,$)=>{var H;let O=t.map((q,K)=>{var W,Q;let Y=(W=P.columns)==null?void 0:W[q.id];return Y===void 0?void 0:f(q,K,(Q=k.values[$])==null?void 0:Q[q.id],Rt(Y).agg)||void 0});v.push(p("total",(H=P.label)!=null?H:"",O))});let x=t.map(P=>Math.max(1,P.width)),S=x.reduce((P,$)=>P+$,0),E=ol.includes(e.paper)?e.paper:"A4",A=e.orientation==="portrait"||e.orientation==="landscape"?e.orientation:S+(a?40:0)>rl?"landscape":"portrait",F=e.printedAt!==!1?new Intl.DateTimeFormat(r,{dateStyle:"medium",timeStyle:"short"}).format(new Date):"",C=Number.isInteger(e.repeatRows)&&e.repeatRows>0?Math.min(e.repeatRows,h.length):0,M=m.length>y?n.printLimited.replace("{n}",s.format(y)).replace("{total}",s.format(m.length)):"";return M&&v.push({kind:"total",cells:[{text:M,align:"left",span:t.length+(a?1:0),italic:!0}]}),{lang:r,limited:M,title:(I=e.title)!=null?I:"",subtitle:(D=e.subtitle)!=null?D:"",printed:F,footer:(N=e.footer)!=null?N:"",paper:E,orientation:A,fit:e.fitToWidth!==!1,numbered:a,widths:a?[40,...x]:x,head:u,body:h,foot:v,striped:e.striped!==!1,pageNumbers:e.pageNumbers!==!1,repeatHeader:e.repeatHeader!==!1,repeatTitle:!!e.repeatTitle,repeatRows:C}}function dl(o,e=!1){let t=e?o.align==="left"||o.group?"":`text-align:${o.align}`:`text-align:${o.align}`,n=r=>{t+=t?`;${r}`:r};if(o.indent&&n(`padding-left:${7+o.indent*14}px`),o.color&&n(`color:${o.color}`),o.fill&&n(`background:${o.fill}`),o.bold&&n("font-weight:600"),o.italic&&n("font-style:italic"),o.strike&&n("text-decoration:line-through"),o.bar){let r=(o.bar.from*100).toFixed(1),i=(o.bar.to*100).toFixed(1);n(`background-image:linear-gradient(to right,transparent ${r}%,${o.bar.color}66 ${r}%,${o.bar.color}66 ${i}%,transparent ${i}%)`)}return t}function mi(o,e){var i;let t=[o.num?' class="num"':o.group&&((i=o.span)!=null?i:1)>1?' class="span"':"",o.span!==void 0&&(e==="th"||o.span>1)?` colspan="${o.span}"`:"",o.rowspan!==void 0&&e==="th"?` rowspan="${o.rowspan}"`:""].join("");if(o.num)return`<${e}${t}>${ke(o.text)}</${e}>`;let n=dl(o,e==="th"),r=o.icon?`<span style="color:${ke(o.icon.color)};margin-right:5px">${ke(o.icon.char)}</span>`:"";return`<${e}${t}${n?` style="${ke(n)}"`:""}>${r}${ke(o.text)}</${e}>`}var Ro=o=>{var e;return`<tr${o.kind==="group"?` class="group level-${Math.min((e=o.level)!=null?e:0,5)}"`:o.kind==="total"?' class="total"':""}>${o.cells.map(t=>mi(t,"td")).join("")}</tr>`};function So(o,e={}){let t=Dn(o,e),n=t.widths.slice(t.numbered?1:0).reduce((w,y)=>w+y,0),r=t.fit?`<colgroup>${t.numbered?'<col style="width:40px">':""}${t.widths.slice(t.numbered?1:0).map(w=>`<col style="width:${Math.round(w/n*1e3)/10}%">`).join("")}</colgroup>`:"",i=ke(t.title||(typeof document!="undefined"?document.title:"")||""),s=t.title||t.subtitle?`<div>${t.title?`<h1>${i}</h1>`:""}${t.subtitle?`<p class="sub">${ke(t.subtitle)}</p>`:""}</div>`:"<div></div>",a=t.title||t.subtitle||t.printed?`<header>${s}${t.printed?`<p class="printed">${ke(t.printed)}</p>`:""}</header>`:"",l="font: 8.5px system-ui, sans-serif; color: #6b7280;",c=[`size: ${t.paper} ${t.orientation}; margin: 12mm 12mm 14mm;`,t.footer?`@bottom-left { content: ${il(t.footer)}; ${l} }`:"",t.pageNumbers?`@bottom-right { content: counter(page) " / " counter(pages); ${l} }`:""].join(" "),d=t.striped?"tbody tr:not(.group):nth-child(even) td { background: #f9fafb; }":"",u=t.head.map(w=>`<tr>${w.map(y=>mi(y,"th")).join("")}</tr>`).join(""),f=t.body.slice(0,t.repeatRows).map(Ro).join(""),p=Math.max(1,t.widths.length),m=t.repeatTitle&&a?`<tr class="title"><td colspan="${p}">${a}</td></tr>`:"",b=t.repeatHeader?`${m}${u}${f}`:`${m}${f}`,g=(t.repeatHeader?"":u)+t.body.slice(t.repeatRows).map(Ro).join(""),h=t.foot.map(Ro).join("");return`<!doctype html><html lang="${ke(t.lang)}"><head><meta charset="utf-8"><title>${i}</title><style>
|
|
47
|
+
@page { ${c} }${al}${d}
|
|
48
|
+
</style></head><body>${t.repeatTitle?"":a}<table${t.fit?' class="fit"':""}>${r}<thead>${b}</thead><tbody>${g}</tbody>${h?`<tfoot>${h}</tfoot>`:""}</table></body></html>`}function wi(o){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(),G("printing is not supported in this environment");return}t.open(),t.write(o),t.close();let n=e.contentWindow,r=()=>setTimeout(()=>e.remove(),1e3);n.addEventListener("afterprint",r),setTimeout(()=>{try{n.focus(),n.print()}catch{G("printing is not supported in this environment")}r()},50)}function ko(o,e={}){let t=In(o,e.columns),n=o.store.state.locale.code,r=typeof e.separator=="string"&&e.separator.length===1?e.separator:",",i=Fn(o,e.rows).map(s=>t.map(a=>{let l=j(a.def,s),c=a.def.type,d=pn(a.def,l,n);return{value:d,text:typeof l!="number"&&(!(c==="number"||c==="date"||c==="boolean")||typeof l=="string"&&!nl.test(d))}}));return e.headers!==!1&&i.unshift(t.map(s=>({value:Xe(s.def,s.id),text:!0}))),li(i,r)}function Mo(o,e={}){let t=In(o,e.columns),n=o.store.state.locale.code,r=e.formatted?t.map(l=>ne(l.def,n)):null,i=t.map(l=>e.keys==="header"?Xe(l.def,l.id):l.id),s=Fn(o,e.rows).map(l=>{let c={};return t.forEach((d,u)=>{let f=j(d.def,l);c[i[u]]=r?_(f)?"":r[u](f):f===void 0?null:f}),c}),a=typeof e.space=="number"&&e.space>=0?Math.min(10,e.space):2;return JSON.stringify(s,null,a)}function cl(o){var i;let e=o.format;if(o.type==="date")return e==="datetime"?"yyyy-mm-dd hh:mm":e==="time"?"hh:mm":"yyyy-mm-dd";if(o.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=(i=t.maximumFractionDigits)!=null?i:t.minimumFractionDigits,r=n?`.${"0".repeat(Math.min(10,n))}`:"";return t.style==="percent"?`0${r}%`:`${t.useGrouping===!1?"0":"#,##0"}${r}`}function Pn(o){let e=/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(o.trim());if(e)return`FF${(e[1].length===3?[...e[1]].map(i=>i+i).join(""):e[1]).toUpperCase()}`;let t=/^rgba?\(\s*(\d+)[\s,]+(\d+)[\s,]+(\d+)(?:[\s,/]+([\d.]+%?))?\s*\)$/i.exec(o.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 yi(o){let e=o.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),c=l.fontWeight;return{color:l.color,fill:l.backgroundColor,bold:c==="bold"||Number(c)>=600}},i=r(""),s=new Map;return{of(a){let l=s.get(a);if(!l){let c=r(a);l={},c.color!==i.color&&Pn(c.color)&&(l.color=Pn(c.color)),c.fill!==i.fill&&Pn(c.fill)&&(l.fill=Pn(c.fill)),c.bold&&!i.bold&&(l.bold=!0),s.set(a,l)}return l},dispose:()=>t.remove()}}function Eo(o,e={}){return _e([Ao(o,e)])}function Ao(o,e={}){var g;let t=In(o,e.columns),n=o.store.state.locale.code,r=[],i=[],s=0;if(e.headers!==!1){let h=t.map(y=>{let v=[];for(let k=y.node;k;k=k.parent)v.unshift(k);return v});s=Math.max(1,...h.map(y=>y.length));let w=y=>{let v="";for(let k=y+1;k>0;k=Math.floor((k-1)/26))v=String.fromCharCode(65+(k-1)%26)+v;return v};for(let y=0;y<s;y++){let v=[];for(let k=0;k<t.length;k++){let x=h[k],S=x.length-1;if(y<S){let E=x[y],A=k>0?h[k-1][y]:null;if(v.push({v:A===E?null:Xe(E.def,E.id),header:!0}),A!==E){let F=k;for(;F+1<t.length&&h[F+1][y]===E;)F++;F>k&&i.push(`${w(k)}${y+1}:${w(F)}${y+1}`)}}else y===S?(v.push({v:Xe(t[k].def,t[k].id),header:!0}),s-1>y&&i.push(`${w(k)}${y+1}:${w(k)}${s}`)):v.push({v:null,header:!0})}r.push(v)}}let a=t.map(h=>cl(h.def)),l=t.map(h=>ne(h.def,n)),c=Fn(o,e.rows),d=e.styles!==!1,u=d&&t.some(h=>h.def.cellClass)?yi(o):null,f=(h,w,y)=>{var k;if(_(y))return null;let v=(k=a[w])!=null?k:void 0;switch(h.def.type){case"number":{let x=typeof y=="number"?y:Number(y);return Number.isFinite(x)?{v:x,fmt:v}:String(y)}case"date":{let x=ye(y);return x?{v:x,fmt:v}:String(y)}case"boolean":return typeof y=="number"&&Number.isFinite(y)||typeof y=="boolean"?y:String(y);default:return typeof y=="number"&&Number.isFinite(y)?y:l[w](y)}};try{c.forEach((h,w)=>{r.push(t.map((y,v)=>{let k=j(y.def,h),x=f(y,v,k);if(!d)return x;let S=y.def.align?{align:y.def.align}:{};if(u&&y.def.cellClass){let A;try{A=typeof y.def.cellClass=="function"?y.def.cellClass({value:k,formatted:l[v](k),row:h,rowIndex:w,column:y.def}):y.def.cellClass}catch{A=void 0}A&&(S={...S,...u.of(A)})}let E=o.cellFormat(h,y.id,k);if(E){let A=ao(E.style.color),F=ao(E.style.background);A&&(S.color=A),F&&(S.fill=F),E.style.bold&&(S.bold=!0);let C=ve(E.style);C&&(S.align=C)}return Object.keys(S).length?x!==null&&typeof x=="object"&&!(x instanceof Date)?{...x,...S}:{v:x,...S}:x}))})}finally{u==null||u.dispose()}let p=new Set,m=h=>{let w="";for(let y=h+1;y>0;y=Math.floor((y-1)/26))w=String.fromCharCode(65+(y-1)%26)+w;return w},b=(h,w,y,v)=>{for(let k=h;k<=y;k++)for(let x=w;x<=v;x++)if(p.has(`${k},${x}`))return;for(let k=h;k<=y;k++)for(let x=w;x<=v;x++)p.add(`${k},${x}`);i.push(`${m(w)}${s+h+1}:${m(v)}${s+y+1}`)};return c.forEach((h,w)=>t.forEach((y,v)=>{let k=y.def.colSpan?St(y.def.colSpan,y.def,h,w,t.length-v):1;k>1&&b(w,v,w,v+k-1)})),t.forEach((h,w)=>{if(!h.def.merge&&!h.def.rowSpan)return;let y=rt(c,h.def);for(let v=0;v<c.length;v++)y.start[v]===v&&y.end[v]>v&&b(v,w,y.end[v],w)}),{name:(g=e.sheetName)!=null?g:"Sheet1",rows:r,widths:t.map(h=>Math.round(h.width/7)),merges:i,freezeRows:s,printTitleRows:e.repeatHeader===!1?0:s+(Number.isInteger(e.repeatRows)&&e.repeatRows>0?e.repeatRows:0),autoFilter:s>0}}function Je(o,e,t){if(typeof URL=="undefined"||typeof URL.createObjectURL!="function"||typeof document=="undefined"){G("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=o,r.style.display="none",document.body.append(r),r.click(),r.remove(),setTimeout(()=>URL.revokeObjectURL(n),1e3)}var Ln=o=>String(o!=null?o:"").trim().toLowerCase();function ul(o){var e;return o==null?"":o instanceof Date?o.getHours()||o.getMinutes()||o.getSeconds()?o.toISOString():(e=he(o))!=null?e:"":String(o)}async function bi(o,e,t={}){var b;let n=e instanceof Uint8Array?e:new Uint8Array(e instanceof ArrayBuffer?e:await e.arrayBuffer()),r;if(Mn(n)){let g=await An(n),h=typeof t.sheet=="string"?g.find(w=>w.name===t.sheet):g[typeof t.sheet=="number"?t.sheet:0];if(!h)throw new Error(`Sheet ${String(t.sheet)} not found`);r=h.rows}else{let g=new TextDecoder().decode(n);r=kn(g,vo(g))}if(!r.length)return{rows:[],skipped:0};let i=[],s=g=>g.forEach(h=>h.children?s(h.children):!B(h.id)&&h.def.field&&i.push(h));s(o.columns.roots());let a=g=>{var w,y;let h=Ln(g);return h&&(y=(w=i.find(v=>Ln(v.def.header)===h))!=null?w:i.find(v=>Ln(v.def.field)===h||Ln(v.id)===h))!=null?y:null},l=1,c=new Set(r[0].map(a).filter(Boolean));for(;l<Math.min(r.length,5);){let h=((b=r[l])!=null?b:[]).filter(y=>y!=null&&String(y).trim()!==""),w=h.map(a).filter(y=>y&&!c.has(y));if(!h.length||!h.every(y=>typeof y=="string")||!w.length)break;w.forEach(y=>c.add(y)),l++}let d=Math.max(...r.slice(0,l).map(g=>{var h;return(h=g==null?void 0:g.length)!=null?h:0})),u=Array.from({length:d},(g,h)=>{var w;for(let y=l-1;y>=0;y--){let v=(w=r[y])==null?void 0:w[h];if(v!=null&&String(v).trim()!=="")return a(v)}return null}),f=o.store.state.data[0],p=0,m=[];for(let g of r.slice(l)){if(!g||g.every(w=>w==null||String(w).trim()===""))continue;let h={};u.forEach((w,y)=>{if(!w)return;let v=w.def,k=ul(g[y]),x=o.acceptText(v,h,k,f==null?void 0:f[v.field]);x.ok?k===""&&(x.value===null||x.value==="")||(h[v.field]=x.value):p++}),m.push(h)}return t.mode==="replace"?o.setData(m):o.addRows(m),{rows:m,skipped:p}}var fl="http://www.w3.org/2000/svg";var To=["var(--fg-accent, #2563eb)","#f59e0b","#10b981","#ef4444","#8b5cf6","#06b6d4","#ec4899","#84cc16","#f97316","#64748b","#14b8a6","#a855f7"],Oe=o=>To[o%To.length];function re(o,e={},t=""){let n=document.createElementNS(fl,o);t&&n.setAttribute("class",t);for(let[r,i]of Object.entries(e))n.setAttribute(r,String(i));return n}function Lt(o,e){let t=re("title");t.textContent=e,o.append(t)}function Po(o,e,t=5){let n=Math.min(0,o),r=Math.max(0,e);n===r&&(r=n+1);let i=(r-n)/t,s=10**Math.floor(Math.log10(i)),a=[1,2,5,10].map(c=>c*s).find(c=>c>=i);n=Math.floor(n/a)*a,r=Math.ceil(r/a)*a;let l=[];for(let c=n;c<=r+a/2;c+=a)l.push(Math.round(c/a)*a);return l}function $n(o,e){var C,M;let t=new Intl.NumberFormat(e.locale,{maximumFractionDigits:2}),n=new Intl.NumberFormat(e.locale,{notation:"compact",maximumFractionDigits:1}),r=re("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 i=e.series.slice(0,To.length),s=e.categories,a=16;if(e.title){let T=re("text",{x:320,y:22,"text-anchor":"middle"},"fg-chart-title");T.textContent=e.title,r.append(T),a=36}let l=re("g",{},"fg-chart-legend"),c=e.type==="pie"||e.type==="donut",d=c?s:e.type==="scatter"?i.slice(1).map(T=>T.name):i.map(T=>T.name),u=16;d.forEach((T,L)=>{let I=re("g",{transform:`translate(${u},350)`},"fg-chart-legend-item");I.append(re("rect",{x:0,y:-9,width:10,height:10,rx:2,fill:Oe(L)}));let D=re("text",{x:14,y:0});D.textContent=T,I.append(D),l.append(I),u+=24+Math.min(140,T.length*7)});let f=308;if(e.type==="scatter"){hl(r,e,i,a,f,t,n),r.append(l),o.replaceChildren(r);return}if(c){let T=((M=(C=i[0])==null?void 0:C.values)!=null?M:[]).map($=>$!==null&&$>0?$:0),L=T.reduce(($,O)=>$+O,0),I=640/2,D=(a+f)/2,N=Math.max(10,(f-a)/2-6),P=-Math.PI/2;T.forEach(($,O)=>{if(!$||!L)return;let H=P+$/L*Math.PI*2,q=H-P>Math.PI?1:0,K=Q=>`${I+N*Math.cos(Q)},${D+N*Math.sin(Q)}`,Y=$===L?`M${I-N},${D}a${N},${N} 0 1,0 ${2*N},0a${N},${N} 0 1,0 ${-2*N},0`:`M${I},${D}L${K(P)}A${N},${N} 0 ${q} 1 ${K(H)}Z`,W=re("path",{d:Y,fill:Oe(O)},"fg-chart-slice");Lt(W,`${s[O]}: ${t.format($)} (${Math.round($/L*1e3)/10}%)`),r.append(W),P=H}),e.type==="donut"&&r.append(re("circle",{cx:I,cy:D,r:N*.58,fill:"var(--fg-bg, #fff)"},"fg-chart-donut-hole")),r.append(l),o.replaceChildren(r);return}let p=e.type==="stackedBar",m=0,b=0;s.forEach((T,L)=>{let I=0,D=0;for(let N of i){let P=N.values[L];P==null||!Number.isFinite(P)||(p?P>=0?I+=P:D+=P:(b=Math.max(b,P),m=Math.min(m,P)))}p&&(b=Math.max(b,I),m=Math.min(m,D))});let g=Po(m,b),h=g[0],w=g[g.length-1],y=56,v=624,k=T=>f-(T-h)/(w-h)*(f-a),x=re("g",{},"fg-chart-axis");for(let T of g){x.append(re("line",{x1:y,x2:v,y1:k(T),y2:k(T)},T===0?"fg-chart-zero":"fg-chart-grid"));let L=re("text",{x:y-6,y:k(T)+4,"text-anchor":"end"});L.textContent=n.format(T),x.append(L)}let S=(v-y)/Math.max(1,s.length),E=Math.max(1,Math.ceil(s.length/Math.floor((v-y)/56)));s.forEach((T,L)=>{if(L%E)return;let I=re("text",{x:y+S*(L+.5),y:f+16,"text-anchor":"middle"}),D=Math.max(3,Math.min(12,Math.floor(S*E/10)));I.textContent=T.length>D?`${T.slice(0,D-1)}\u2026`:T,x.append(I)}),r.append(x);let A=re("g",{},"fg-chart-plot"),F=e.type==="combo";if(F){let T=S*.6,L=i[0];s.forEach((I,D)=>{let N=L==null?void 0:L.values[D];if(N==null||!Number.isFinite(N))return;let P=y+S*D+(S-T)/2,$=re("rect",{x:P,y:Math.min(k(0),k(N)),width:Math.max(1,T-2),height:Math.max(.5,Math.abs(k(N)-k(0))),fill:Oe(0),rx:2},"fg-chart-bar");Lt($,`${L.name} \xB7 ${I}: ${t.format(N)}`),A.append($)})}if(e.type==="bar"||p){let T=S*.72,L=p?T:T/Math.max(1,i.length);s.forEach((I,D)=>{let N=0,P=0;i.forEach(($,O)=>{let H=$.values[D];if(H==null||!Number.isFinite(H))return;let q=0,K=H;p&&(q=H>=0?N:P,K=q+H,H>=0?N=K:P=K);let Y=y+S*D+(S-T)/2+(p?0:L*O),W=re("rect",{x:Y,y:Math.min(k(q),k(K)),width:Math.max(1,L-2),height:Math.max(.5,Math.abs(k(K)-k(q))),fill:Oe(O),rx:2},"fg-chart-bar");Lt(W,`${$.name} \xB7 ${I}: ${t.format(H)}`),A.append(W)})})}else i.forEach((T,L)=>{if(F&&L===0)return;let I=T.values.map((P,$)=>P==null||!Number.isFinite(P)?null:[y+S*($+.5),k(P),P]),D="",N=!1;for(let P of I){if(!P){N=!1;continue}D+=`${N?"L":"M"}${P[0]},${P[1]}`,N=!0}if(e.type==="area"){let P=I.filter($=>!!$);if(P.length){let $=`M${P[0][0]},${k(0)}${P.map(O=>`L${O[0]},${O[1]}`).join("")}L${P[P.length-1][0]},${k(0)}Z`;A.append(re("path",{d:$,fill:Oe(L),"fill-opacity":.18},"fg-chart-area"))}}A.append(re("path",{d:D,fill:"none",stroke:Oe(L),"stroke-width":2.2,"stroke-linejoin":"round"},"fg-chart-line")),I.forEach((P,$)=>{if(!P)return;let O=re("circle",{cx:P[0],cy:P[1],r:3.5,fill:Oe(L)},"fg-chart-point");Lt(O,`${T.name} \xB7 ${s[$]}: ${t.format(P[2])}`),A.append(O)})});r.append(A,l),o.replaceChildren(r)}function hl(o,e,t,n,r,i,s){var S,E,A,F;let a=(E=(S=t[0])==null?void 0:S.values)!=null?E:[],l=t.slice(1),c=C=>C!=null&&Number.isFinite(C),d=a.filter(c),u=l.flatMap(C=>C.values.filter(c));if(!d.length||!u.length)return;let f=C=>C.reduce((M,T)=>Math.min(M,T)),p=C=>C.reduce((M,T)=>Math.max(M,T)),m=Po(f(d),p(d)),b=Po(f(u),p(u)),g=56,h=624,w=C=>g+(C-m[0])/(m[m.length-1]-m[0])*(h-g),y=C=>r-(C-b[0])/(b[b.length-1]-b[0])*(r-n),v=re("g",{},"fg-chart-axis");for(let C of b){v.append(re("line",{x1:g,x2:h,y1:y(C),y2:y(C)},C===0?"fg-chart-zero":"fg-chart-grid"));let M=re("text",{x:g-6,y:y(C)+4,"text-anchor":"end"});M.textContent=s.format(C),v.append(M)}m.forEach((C,M)=>{let T=M===0?"start":M===m.length-1?"end":"middle",L=re("text",{x:w(C),y:r+16,"text-anchor":T});L.textContent=s.format(C),v.append(L)});let k=re("text",{x:h,y:r+32,"text-anchor":"end"},"fg-chart-axis-name");k.textContent=`${(F=(A=t[0])==null?void 0:A.name)!=null?F:""} \u2192`,v.append(k),o.append(v);let x=re("g",{},"fg-chart-plot");a.forEach((C,M)=>{c(C)&&l.forEach((T,L)=>{var N;let I=T.values[M];if(!c(I))return;let D=re("circle",{cx:w(C),cy:y(I),r:4,fill:Oe(L),"fill-opacity":.8},"fg-chart-point");Lt(D,`${(N=e.categories[M])!=null?N:""}: ${t[0].name} ${i.format(C)}, ${T.name} ${i.format(I)}`),x.append(D)})}),o.append(x)}var pl=12,vi=500,Lo=["bar","stackedBar","line","area","combo","pie","donut","scatter"],Nn=class{constructor(e){this.grid=e;this.handles=new Set}create(e={}){var b,g;let{grid:t}=this,n=Lo.includes(e.type)?e.type:"bar",r=()=>t.store.state.locale,i=(b=e.range)!=null?b:t.store.state.range,s=null;if(i){let h=t.columns.getColumn(i.start.colId),w=t.columns.getColumn(i.end.colId);if(h&&w){let y=Et({start:{rowIndex:i.start.rowIndex,colIndex:h.index},end:{rowIndex:i.end.rowIndex,colIndex:w.index}}),v=[];for(let k=y.r1;k<=y.r2&&v.length<vi;k++){let x=t.rowModel.getRow(k);x&&!x.kind&&v.push(x.data)}s={rows:v,colIds:t.columns.displayed().slice(y.c1,y.c2+1).filter(k=>!B(k.id)).map(k=>k.id)}}}let a=()=>{var E;let h=s?s.rows:t.rowModel.dataRows().slice(0,vi).map(A=>A.data),w=(s?s.colIds.map(A=>t.columns.getColumn(A)):t.columns.displayed().filter(A=>!B(A.id))).filter(A=>!!A),y=w[0]&&w[0].def.type!=="number"?w[0]:s?null:(E=w.find(A=>A.def.type!=="number"))!=null?E:null,v=A=>!!A.node.parent&&A.node.parent.id==="pivotgroup|total",k=w.filter(A=>A!==y&&A.def.type==="number"&&(s||!v(A))).slice(0,pl),x=A=>{var C,M,T;let F=[];for(let L=A.node.parent;L;L=L.parent)F.unshift((C=L.def.header)!=null?C:L.id);return F.push((T=(M=A.def.header)!=null?M:A.def.field)!=null?T:A.id),F.join(" \xB7 ")},S=y?ne(y.def,r().code):null;return{categories:h.map((A,F)=>y&&S?S(j(y.def,A)):String(F+1)),series:k.map(A=>({name:x(A),values:h.map(F=>{let C=j(A.def,F),M=typeof C=="number"?C:C==null||C===""?NaN:Number(C);return Number.isFinite(M)?M:null})}))}},l=R("div","fg-chart-body"),c=null,d=()=>$n(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,donut:r().chartDonut,combo:r().chartCombo,scatter:r().chartScatter})[h],f=()=>c==null?void 0:c.querySelectorAll(".fg-chart-type").forEach(h=>h.setAttribute("aria-pressed",String(h.dataset.type===n)));if(e.container)e.container.append(l);else{c=R("div","fg-chart-panel",{role:"dialog","aria-label":(g=e.title)!=null?g:u(n)});let h=R("div","fg-chart-head");for(let y of Lo){let v=R("button","fg-chart-type",{type:"button",title:u(y)});v.dataset.type=y,v.textContent=u(y),v.addEventListener("click",()=>m.setType(y)),h.append(v)}let w=R("button","fg-chooser-close",{type:"button","aria-label":r().close});w.textContent="\xD7",w.addEventListener("click",()=>m.destroy()),h.append(R("span","fg-chart-spacer"),w),c.append(h,l),t.renderer.root.append(c)}let p=[t.events.on("cellValueChanged",()=>d()),t.events.on("rowsAdded",()=>d()),t.events.on("rowsRemoved",()=>d())];s||p.push(t.events.on("sortChange",()=>d()),t.events.on("filterChange",()=>d()));let m={el:l,setType:h=>{Lo.includes(h)&&(n=h,f(),d())},update:()=>d(),destroy:()=>{p.forEach(h=>h()),(c!=null?c:l).remove(),this.handles.delete(m)}};return this.handles.add(m),f(),d(),m}destroy(){for(let e of[...this.handles])e.destroy()}};var xi=new WeakMap,gl=o=>typeof o=="function"?"custom":o;function Io(o,e){var t,n,r;return{rows:((t=o.rows)!=null?t:[]).filter(e),columns:((n=o.columns)!=null?n:[]).filter(e),values:((r=o.values)!=null?r:[]).filter(i=>i&&e(i.colId)).map(i=>{var s;return{colId:i.colId,aggFunc:(s=i.aggFunc)!=null?s:"sum"}}),totals:o.totals!==!1}}function Ci(o,e){let t=(n,r)=>n.length===r.length&&n.every((i,s)=>i===r[s]);return o.totals===e.totals&&t(o.rows,e.rows)&&t(o.columns,e.columns)&&o.values.length===e.values.length&&o.values.every((n,r)=>n.colId===e.values[r].colId&&n.aggFunc===e.values[r].aggFunc)}function Ri(o,e,t,n,r){let i=Io(e,x=>!!t(x)),s=new Intl.Collator(r,{numeric:!0,sensitivity:"base"}),a=x=>t(x),l=(x,S)=>x.map(E=>ie(j(a(E),S))).join(""),c=new Map,d=new WeakMap;for(let x of o){let S=l(i.columns,x);d.set(x,S),c.has(S)||c.set(S,i.columns.map(E=>j(a(E),x)))}let u=new WeakMap,f=x=>{var E;let S=u.get(x);if(!S){let A=x.flatMap(C=>{var M;return(M=xi.get(C))!=null?M:[]}),F=new Map;for(let C of A){let M=(E=d.get(C))!=null?E:l(i.columns,C),T=F.get(M);T||F.set(M,T=[]),T.push(C)}u.set(x,S={all:A,byCombo:F})}return S},p=[...c.entries()].sort((x,S)=>{for(let E=0;E<i.columns.length;E++){let A=Tt(x[1][E],S[1][E],s);if(A)return A}return 0});i.columns.length||p.splice(0,p.length,["",[]]);let m=[],b=(x,S,E)=>{var T,L;let A=i.values[S],F=a(A.colId),C=`pivot|${E}|${S}`;m.push({id:C,comboKey:x,valueIndex:S});let M=A.aggFunc;return{id:C,field:C,header:`${(L=(T=F.header)!=null?T:F.field)!=null?L:A.colId} (${n.agg(gl(M))})`,type:"number",format:M==="count"?"integer":F.format,width:130,aggFunc:(I,D)=>{var $;let N=f(D),P=x===null?N.all:($=N.byCombo.get(x))!=null?$:[];return P.length?Re(M,P.map(O=>j(F,O)),P):null}}},g=[],h=(x,S)=>{if(_(S))return n.blank;let E=a(x);return E.type==="number"&&!E.format?String(S):ne(E,r)(S)};if(!i.columns.length)i.values.forEach((x,S)=>g.push(b("",S,0)));else{let x=(S,E,A)=>{let F=[],C=0;for(;C<S.length;){let M=S[C][1][E],T=ie(M),L=C;for(;L<S.length&&ie(S[L][1][E])===T;)L++;let I=S.slice(C,L),D=E===i.columns.length-1?i.values.map((N,P)=>b(I[0][0],P,A+C)):x(I,E+1,A+C);F.push({id:`pivotgroup|${E}|${A+C}`,header:h(i.columns[E],M),children:D}),C=L}return F};g.push(...x(p,0,0)),i.totals&&i.values.length&&g.push({id:"pivotgroup|total",header:n.total,children:i.values.map((S,E)=>b(null,E,"total"))})}let w=new Map;for(let x of o){let S=l(i.rows,x),E=w.get(S);E||w.set(S,E={values:i.rows.map(A=>j(a(A),x)),src:[]}),E.src.push(x)}let v=[...w.values()].sort((x,S)=>{for(let E=0;E<i.rows.length;E++){let A=Tt(x.values[E],S.values[E],s);if(A)return A}return 0}).map(x=>{var A;let S={};i.rows.forEach((F,C)=>{var M;S[(M=a(F).field)!=null?M:F]=x.values[C]});let E=new Map;if(i.columns.length)for(let F of x.src){let C=l(i.columns,F),M=E.get(C);M||E.set(C,M=[]),M.push(F)}for(let F of m){let C=i.values[F.valueIndex],M=F.comboKey===null||!i.columns.length?x.src:(A=E.get(F.comboKey))!=null?A:[],T=a(C.colId);S[F.id]=M.length?Re(C.aggFunc,M.map(L=>j(T,L)),M):null}return xi.set(S,x.src),S});return{columns:[...i.rows.map(x=>{var E,A,F,C;let S=a(x);return{id:x,field:(E=S.field)!=null?E:x,header:(F=(A=S.header)!=null?A:S.field)!=null?F:x,type:S.type,format:S.format,width:(C=S.width)!=null?C:140}}),...g],rows:v,groupBy:i.rows.slice(0,-1)}}var Si=new WeakMap;function It(o){return Si.get(o)}function ki(o,e,t){let n=d=>t?t.includes(d.id):!d.def.aggFunc,r=e.filter(n).map(d=>d.def),i=e.filter(d=>!n(d)&&d.def.field&&!d.def.valueGetter).map(d=>d.def),s=i.filter(d=>d.aggFunc),a=i.filter(d=>!d.aggFunc),l=new Map;for(let d of o){let u=r.map(p=>ie(j(p,d))).join(""),f=l.get(u);f||l.set(u,f=[]),f.push(d)}let c=[];for(let d of l.values()){let u={...d[0]};for(let f of s)try{u[f.field]=Re(f.aggFunc,d.map(p=>j(f,p)),d)}catch{u[f.field]=null}if(d.length>1)for(let f of a){let p=ie(j(f,d[0]));d.some(m=>ie(j(f,m))!==p)&&(u[f.field]=null)}Si.set(u,d),c.push(u)}return c}var Mi={grouping:{en:"Row grouping and aggregation",ko:"\uD589 \uADF8\uB8F9\xB7\uC9D1\uACC4"},pivot:{en:"Pivot",ko:"\uD53C\uBC97"},charts:{en:"Charts",ko:"\uCC28\uD2B8"},range:{en:"Cell range selection",ko:"\uC140 \uBC94\uC704 \uC120\uD0DD"},clipboard:{en:"Range copy and paste",ko:"\uBC94\uC704 \uBCF5\uC0AC\xB7\uBD99\uC5EC\uB123\uAE30"},fill:{en:"Fill handle",ko:"\uCC44\uC6B0\uAE30 \uD578\uB4E4"},excel:{en:"Excel export",ko:"\uC5D1\uC140 \uB0B4\uBCF4\uB0B4\uAE30"},pdf:{en:"PDF export",ko:"PDF \uB0B4\uBCF4\uB0B4\uAE30"},serverGroups:{en:"Server-side groups",ko:"\uC11C\uBC84 \uADF8\uB8F9"},advancedFilter:{en:"Advanced filter",ko:"\uACE0\uAE09 \uD544\uD130"},sideBar:{en:"Side bar panels",ko:"\uC0AC\uC774\uB4DC\uBC14 \uD328\uB110"},contextMenu:{en:"Context menu",ko:"\uCEE8\uD14D\uC2A4\uD2B8 \uBA54\uB274"},summary:{en:"Summary rows",ko:"\uD569\uACC4 \uD589"},formulas:{en:"Formulas",ko:"\uC218\uC2DD"},find:{en:"Find",ko:"\uCC3E\uAE30"},conditional:{en:"Conditional formatting",ko:"\uC870\uAC74\uBD80 \uC11C\uC2DD"},merge:{en:"Merged cells",ko:"\uC140 \uBCD1\uD569"},workbook:{en:"Workbook",ko:"\uC6CC\uD06C\uBD81"}};var Ye="1.11.0";var ml={kty:"EC",crv:"P-256",x:"sUTKkglZmk-HMKPNub8p7AeLBKesHCU8irIkw9rJlbE",y:"j0U_aKRDR7iApY9UpaD3hUemhBLZJwDv9-QiT_hUyw8"},Ze="https://freegrid.app/pricing/",ct="https://freegrid.app/license/personal/",Ei="https://freegrid.app/api/usage",wl="https://freegrid.app/api/domain-status",yl=o=>Number.parseInt(String(o).split(".")[0],10),Di=o=>{let e=atob(o.replace(/-/g,"+").replace(/_/g,"/")+"=".repeat((4-o.length%4)%4));return Uint8Array.from(e,t=>t.charCodeAt(0))};function Dt(o){let e=o.toLowerCase().replace(/^\[|\]$/g,"");if(!e||e==="localhost"||e==="127.0.0.1"||e==="::1"||e==="0.0.0.0"||e.endsWith(".localhost")||e.endsWith(".test")||e.endsWith(".local"))return!0;let t=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/.exec(e);if(!t)return!1;let[n,r,i,s]=t.slice(1).map(Number);return[n,r,i,s].some(a=>a>255)?!1:n===10||n===192&&r===168||n===172&&r>=16&&r<=31}function bl(o,e){let t=o.toLowerCase().replace(/\.$/,"");return e.some(n=>{if(typeof n!="string")return!1;let r=n.toLowerCase().replace(/\.$/,""),i=r.startsWith("*.")?r.slice(2):r;return i?t===i||t.endsWith(`.${i}`):!1})}var $o=o=>{let e=typeof o=="string"?/^(\d{4})-(\d{2})-(\d{2})$/.exec(o):null;if(!e)return!1;let t=new Date(Date.UTC(Number(e[1]),Number(e[2])-1,Number(e[3])));return t.getUTCMonth()===Number(e[2])-1&&t.getUTCDate()===Number(e[3])},vl=o=>`${o.getFullYear()}-${String(o.getMonth()+1).padStart(2,"0")}-${String(o.getDate()).padStart(2,"0")}`;function $i(o,e,t={}){var s,a;let n=typeof o=="string"?o.trim().split("."):[];if(n.length!==3||n[0]!=="FG1")return{fail:{ok:!1,reason:"format"}};let r;try{if(r=JSON.parse(new TextDecoder().decode(Di(n[1]))),!r||!Array.isArray(r.domains)||!r.domains.every(l=>typeof l=="string")||!$o(r.expires))return{fail:{ok:!1,reason:"format"}};if(r.major!==void 0&&!(Number.isInteger(r.major)&&r.major>0))return{fail:{ok:!1,reason:"format"}};if(r.plan!==void 0&&r.plan!=="company"&&r.plan!=="personal")return{fail:{ok:!1,reason:"format"}}}catch{return{fail:{ok:!1,reason:"format"}}}let i=null;return vl((s=t.now)!=null?s:new Date)>r.expires?i={ok:!1,reason:"expired",info:r}:bl(e,r.domains)?r.major!==void 0&&yl((a=t.version)!=null?a:Ye)>r.major&&(i={ok:!1,reason:"version",info:r}):i={ok:!1,reason:"domain",info:r},{parts:n,info:r,fail:i}}var Ni=()=>typeof crypto!="undefined"&&!!crypto.subtle;async function No(o,e,t={}){var l,c,d;let n=$i(o,e,t);if(!("info"in n))return n.fail;let{parts:r,info:i}=n,s=()=>n.fail;if(!Ni())return(l=s())!=null?l:{ok:!1,reason:"unsupported",info:i};let a=crypto.subtle;try{let u=await a.importKey("jwk",(c=t.publicKey)!=null?c:ml,{name:"ECDSA",namedCurve:"P-256"},!1,["verify"]),f=new TextEncoder().encode(`${r[0]}.${r[1]}`);if(!await a.verify({name:"ECDSA",hash:"SHA-256"},u,Di(r[2]),f))return{ok:!1,reason:"signature",info:i}}catch{return{ok:!1,reason:"signature",info:i}}return(d=s())!=null?d:{ok:!0,info:i}}var Ft,Ai=new Map,Fo=new Map,Ti=new Set,Pi=new Set;function Oi(o){Ft=o}var On={missing:`FreeGrid: every feature is free for 30 days on a domain. After that, paid features need a free personal key (${ct}) or a company key: ${Ze}
|
|
49
|
+
FreeGrid: \uB3C4\uBA54\uC778\uB9C8\uB2E4 30\uC77C \uB3D9\uC548 \uBAA8\uB4E0 \uAE30\uB2A5\uC744 \uBB34\uB8CC\uB85C \uC4F8 \uC218 \uC788\uC2B5\uB2C8\uB2E4. \uADF8 \uB4A4 \uC720\uB8CC \uAE30\uB2A5\uC5D0\uB294 \uBB34\uB8CC \uAC1C\uC778 \uD0A4(${ct}) \uB610\uB294 \uD68C\uC0AC \uD0A4\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4: ${Ze}`,trial:o=>`FreeGrid: the 30-day trial of paid features on this domain ends ${o}. / \uC774 \uB3C4\uBA54\uC778\uC758 \uC720\uB8CC \uAE30\uB2A5 30\uC77C \uCCB4\uD5D8\uC740 ${o}\uC5D0 \uB05D\uB0A9\uB2C8\uB2E4.`,ended:`FreeGrid: the 30-day trial on this domain has ended, so paid features are now off. Get a free personal key (${ct}) or a company key: ${Ze}
|
|
50
|
+
FreeGrid: \uC774 \uB3C4\uBA54\uC778\uC758 30\uC77C \uCCB4\uD5D8\uC774 \uB05D\uB098 \uC720\uB8CC \uAE30\uB2A5\uC774 \uAEBC\uC84C\uC2B5\uB2C8\uB2E4. \uBB34\uB8CC \uAC1C\uC778 \uD0A4(${ct}) \uB610\uB294 \uD68C\uC0AC \uD0A4\uB97C \uBC1B\uC73C\uC138\uC694: ${Ze}`,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.",version:`FreeGrid ${Ye}: this perpetual license covers an earlier major version. / \uC774 \uC601\uAD6C \uB77C\uC774\uC120\uC2A4\uB294 \uC774\uC804 \uBA54\uC774\uC800 \uBC84\uC804\uC6A9\uC785\uB2C8\uB2E4.`};function Li(o,e=typeof location!="undefined"?location.hostname:""){try{if(Dt(e)||typeof navigator=="undefined")return;let t=new Date().toISOString().slice(0,10),n=`${e}|${t}|${o.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 i=JSON.stringify({version:o.version,licensed:o.licensed,company:o.company,url:`${location.origin}${location.pathname}`});typeof navigator.sendBeacon=="function"?navigator.sendBeacon(Ei,i):typeof fetch=="function"&&fetch(Ei,{method:"POST",body:i,mode:"no-cors",keepalive:!0}).catch(()=>{})}catch{}}function xl(o=Ft,e=typeof location!="undefined"?location.hostname:""){return Dt(e)?Promise.resolve(!0):Bi(o!=null?o:Ft,e).then(t=>t==="ok"||t==="unsupported")}function Bi(o,e){let t=`${o!=null?o:""}@${e}`,n=Ai.get(t);return n||(o?n=No(o,e).then(r=>{if(Li({version:Ye,licensed:r.ok,company:r.ok?r.info.company:void 0},e),r.ok)return"ok";if(r.reason==="unsupported")return"unsupported";let i=r.info?` (${r.info.domains.join(", ")}, ${r.info.major?`${r.info.major}.x`:r.info.expires})`:"";return console.warn(`${On[r.reason]}${i}
|
|
51
|
+
${Ze}`),"bad"},()=>"bad"):(console.info(On.missing),Li({version:Ye,licensed:!1},e),n=Promise.resolve("none")),Ai.set(t,n),n)}var Do;var $t=()=>Do!=null?Do:typeof location!="undefined"?location.hostname:"",Ii=o=>{if(!o||typeof o!="object")return null;let{badge:e,trial:t}=o,n=!!t&&typeof t=="object"&&$o(t.started)&&$o(t.ends)&&typeof t.active=="boolean";return{badge:e===!0,trial:n?{started:t.started,ends:t.ends,active:t.active}:null}};function Hi(o=$t()){var i;if(Dt(o)||typeof fetch!="function")return Promise.resolve(null);let e=Fo.get(o);if(e)return e;let t=new Date().toISOString().slice(0,10),n=null;try{n=typeof localStorage!="undefined"?localStorage:null;let s=JSON.parse((i=n==null?void 0:n.getItem("freegrid:status"))!=null?i:"null"),a=s&&s.host===o&&s.day===t?Ii(s.status):null;if(a){let l=Promise.resolve(a);return Fo.set(o,l),l}}catch{}let r=fetch(wl,{mode:"cors",credentials:"omit"}).then(s=>s.ok?s.json():null).then(s=>{let a=Ii(s);if(a)try{n==null||n.setItem("freegrid:status",JSON.stringify({host:o,day:t,status:a}))}catch{}return a}).catch(()=>null);return Fo.set(o,r),r}function Cl(o=$t()){return Hi(o).then(e=>(e==null?void 0:e.badge)===!0)}async function Gi(o,e=$t()){return await Promise.resolve(),await xl(o,e)?!1:Cl(e)}var zi="freegrid:gate",Rl=5,Vi=o=>{if(!o)return"";let e=o.trim().split(".");return e[e.length-1].slice(-16)},qi=o=>{var t;let e=JSON.parse((t=localStorage.getItem(zi))!=null?t:"null");return!e||typeof e!="object"||e.host!==o||typeof e.trialEnded!="boolean"||!Array.isArray(e.verifiedKeys)||!e.verifiedKeys.every(n=>typeof n=="string")?null:{host:o,trialEnded:e.trialEnded,...typeof e.trialEnds=="string"?{trialEnds:e.trialEnds}:{},verifiedKeys:e.verifiedKeys}};function Wi(o,e=$t()){if(Dt(e))return!0;let t=o!=null?o:Ft;if(t&&!Ni()){let n=$i(t,e);if("info"in n&&!n.fail)return!0}try{let n=qi(e);if(!n)return!0;let r=Vi(t);return r&&n.verifiedKeys.includes(r)?!0:!n.trialEnded}catch{return!0}}var Fi=(o,e)=>{try{let t=null;try{t=qi(o)}catch{}localStorage.setItem(zi,JSON.stringify(e(t!=null?t:{host:o,trialEnded:!1,verifiedKeys:[]})))}catch{}};async function ji(o,e=$t()){var s;if(Dt(e))return!0;await Promise.resolve();let t=o!=null?o:Ft,n=await Bi(t,e);if(n==="ok"){let a=Vi(t);return Fi(e,l=>({...l,verifiedKeys:[a,...l.verifiedKeys.filter(c=>c!==a)].slice(0,Rl)})),!0}if(n==="unsupported")return!0;let r=(s=await Hi(e))==null?void 0:s.trial;if(!r)return!0;Fi(e,a=>({...a,trialEnded:!r.active,trialEnds:r.ends}));let i=`${r.active?"trial":"ended"}@${e}`;return Ti.has(i)||(Ti.add(i),r.active?console.info(On.trial(r.ends)):console.warn(On.ended)),r.active}function Ui(o){var t;if(Pi.has(o))return;Pi.add(o);let e=(t=Mi[o])!=null?t:{en:o,ko:o};console.warn(`FreeGrid: ${e.en} is a paid feature and is off on this domain. Get a free personal key (${ct}) or a company key: ${Ze}
|
|
52
|
+
FreeGrid: ${e.ko}\uC740(\uB294) \uC720\uB8CC \uAE30\uB2A5\uC774\uB77C \uC774 \uB3C4\uBA54\uC778\uC5D0\uC11C \uAEBC\uC838 \uC788\uC2B5\uB2C8\uB2E4. \uBB34\uB8CC \uAC1C\uC778 \uD0A4(${ct}) \uB610\uB294 \uD68C\uC0AC \uD0A4\uB97C \uBC1B\uC73C\uC138\uC694: ${Ze}`)}var Nt={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"]},Ki=["blank","notBlank"],Oo=500,Bn=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 h,w;this.close();let n=this.grid.columns.getNode(e);if(!n||n.children||B(e))return;let r=this.grid.store.state.locale,i=n.def,s=R("div",`fg-menu fg-theme-${this.grid.store.state.theme}`,{role:"dialog","aria-label":r.columnMenu});this.grid.applyFontTo(s),Ge(i)&&s.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(y=>y.colId!==e))]])),s.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.paid&&(this.grid.options.groupPanel||a.length)){let y=a.includes(e)?[[r.ungroup,()=>this.grid.setGroupBy(a.filter(v=>v!==e))]]:[[r.groupByThis,()=>this.grid.setGroupBy([...a,e])]];a.length&&y.push([r.expandAll,()=>this.grid.expandAll(!0)],[r.collapseAll,()=>this.grid.expandAll(!1)]),s.append(this.section(y))}if(this.grid.getRollup()&&!this.grid.isRollupKey(e)){let y=(h=i.aggFunc)!=null?h:null,v=(x,S)=>`${x?"\u2713 ":""}${S}`,k=["sum","avg","min","max","count"].map(x=>[v(y===x,r[x]),()=>this.grid.setColumnAggFunc(e,x)]);s.append(this.section([[v(!y,r.noAggregate),()=>this.grid.setColumnAggFunc(e,null)],...k]))}let l=[[r.autosizeThis,()=>this.grid.autoSize([e])],[r.autosizeAll,()=>this.grid.autoSize()]];i.lockVisible||l.push([r.hideColumn,()=>this.grid.setColumnsVisible([e],!1)]),l.push([r.chooseColumns,()=>this.grid.chooser.open()],[r.resetColumns,()=>this.grid.resetColumns()]),this.grid.options.conditionalFormatMenu!==!1&&this.grid.paid&&l.push([`${r.cf.title}\u2026`,()=>this.grid.formatDialog.open(e)]),s.append(this.section(l));let c=this.filterSection(e,()=>this.close());c&&s.append(c),ue(this.grid.renderer.root).append(s);let d=t.getBoundingClientRect(),u=s.offsetWidth||248;s.style.left=`${Math.max(4,Math.min(d.right-u,window.innerWidth-u-4))}px`;let f=Math.max(4,Math.min(d.bottom+4,window.innerHeight-240));s.style.top=`${f}px`,s.style.maxHeight=`${Math.max(160,window.innerHeight-f-8)}px`,this.popup=s,this.colId=e;let p=y=>{xe(y,s,t)||this.close()},m=y=>{y.key==="Escape"&&(this.close(),this.grid.renderer.gridEl.focus())},b=()=>this.close(),g=this.grid.renderer.scroller;document.addEventListener("pointerdown",p,!0),document.addEventListener("keydown",m,!0),g.addEventListener("scroll",b,{passive:!0}),this.off.push(()=>document.removeEventListener("pointerdown",p,!0),()=>document.removeEventListener("keydown",m,!0),()=>g.removeEventListener("scroll",b)),(w=s.querySelector(".fg-filter-value:not([hidden]), .fg-set-search, .fg-menu-item"))==null||w.focus()}openAtFocus(){var a,l,c;let{grid:e}=this,t=e.store.state.focus,n=t&&!B(t.colId)?t.colId:(a=e.columns.displayed().find(d=>!B(d.id)))==null?void 0:a.id;if(!n)return!1;let r=e.renderer.root,i=CSS.escape(n),s=(c=(l=r.querySelector(`.fg-header-cell:not(.fg-header-group)[data-col="${i}"]`))!=null?l:t?r.querySelector(`.fg-row[data-row="${t.rowIndex}"] .fg-cell[data-col="${i}"]`):null)!=null?c:e.renderer.gridEl;return this.open(n,s),!0}filterSection(e,t){let n=this.grid.columns.getNode(e);if(!n||n.children)return null;let r=this.grid.store.state.locale,i=ge(n.def);return i==="set"?this.setFilter(e,r,t):i?this.conditionFilter(e,i,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=R("div","fg-menu-section");for(let[n,r]of e){let i=R("button","fg-menu-item",{type:"button"});i.textContent=n,i.addEventListener("click",()=>{r(),this.close();let s=tn(this.grid.renderer.root);(!s||s===document.body||!s.isConnected)&&this.grid.renderer.gridEl.focus({preventScroll:!0})}),t.append(i)}return t}actions(e,t,n,r){let i=R("div","fg-menu-actions"),s=R("button","fg-btn",{type:"button"});s.textContent=t.reset,s.addEventListener("click",()=>{this.grid.setFilter(e,null),r()});let a=R("button","fg-btn fg-btn-primary",{type:"button"});return a.textContent=t.apply,a.addEventListener("click",n),i.append(s,a),i}title(e){let t=R("div","fg-menu-title");return t.textContent=e.filter,t}conditionRow(e,t,n,r,i){var p;let s=R("div","fg-filter-cond"),a=R("select","fg-filter-op",{"aria-label":t.filter});if(r){let m=R("option");m.value="",m.textContent="\u2014",a.append(m)}for(let m of Nt[e]){let b=R("option");b.value=m,b.textContent=t.ops[m],a.append(b)}a.value=(p=n==null?void 0:n.op)!=null?p:r?"":Nt[e][0];let l=e==="text"?"text":e,c=R("input","fg-input fg-filter-value",{type:l,placeholder:t.value,"aria-label":t.value}),d=R("input","fg-input fg-filter-value-to",{type:l,placeholder:t.valueTo,"aria-label":t.valueTo});n&&(c.value=n.value!=null?String(n.value):"",d.value="valueTo"in n&&n.valueTo!=null?String(n.valueTo):"");let u=()=>{c.hidden=!a.value||Ki.includes(a.value),d.hidden=a.value!=="between"};a.addEventListener("change",u),u();for(let m of[c,d])m.addEventListener("keydown",b=>b.key==="Enter"&&!me(b)&&i());return s.append(a,c,d),{row:s,read:()=>{let m=a.value;if(!m)return null;let b=!Ki.includes(m);if(e==="number"){let g=c.value===""?void 0:Number(c.value),h=d.value===""?void 0:Number(d.value);return!b||g!==void 0?{type:e,op:m,value:g,valueTo:h}:null}return e==="date"?!b||c.value?{type:e,op:m,value:c.value||void 0,valueTo:d.value||void 0}:null:!b||c.value?{type:e,op:m,value:c.value}:null}}}conditionFilter(e,t,n,r){var b,g;let i=this.grid.store.state.filters[e],s=(i==null?void 0:i.type)==="combined"?i.conditions:i?[i]:[],a=((b=s[0])==null?void 0:b.type)===t?s[0]:void 0,l=((g=s[1])==null?void 0:g.type)===t?s[1]:void 0,c=R("div","fg-menu-section fg-filter"),d=()=>{var k;let h=u.read(),w=f.read(),y=((k=p.querySelector("input:checked"))==null?void 0:k.value)==="or"?"or":"and",v=h&&w?{type:"combined",operator:y,conditions:[h,w]}:h!=null?h:w;this.grid.setFilter(e,v),r()},u=this.conditionRow(t,n,a,!1,d),f=this.conditionRow(t,n,l,!0,d),p=R("div","fg-filter-join",{role:"radiogroup"}),m=`fg-join-${e}-${Math.random().toString(36).slice(2,7)}`;for(let h of["and","or"]){let w=R("label"),y=R("input","",{type:"radio",name:m,value:h});y.checked=((i==null?void 0:i.type)==="combined"?i.operator:"and")===h,w.append(y,` ${n[h]}`),p.append(w)}return c.append(this.title(n),u.row,p,f.row,this.actions(e,n,d,r)),c}setFilter(e,t,n){let{grid:r}=this,i=r.columns.getNode(e).def,s=ne(i,t.code),a=r.collator(),l=new Map;for(let x of r.rowModel.allNodes()){let S=j(i,x.data),E=ie(S);l.has(E)||l.set(E,S)}let c=[...l.entries()].sort((x,S)=>Tt(x[1],S[1],a)),d=r.store.state.filters[e],u=new Set((d==null?void 0:d.type)==="set"?d.values.map(ie).filter(x=>l.has(x)):l.keys()),f=(x,S)=>x===""?t.blanks:s(S),p=R("div","fg-menu-section fg-filter fg-set-filter"),m=R("input","fg-input fg-set-search",{type:"search",placeholder:t.search,"aria-label":t.search}),b=R("label","fg-set-item fg-set-all"),g=R("input","fg-checkbox",{type:"checkbox"});b.append(g,document.createTextNode(t.selectAll));let h=R("div","fg-set-list"),w=()=>{let x=m.value.trim().toLowerCase();return x?c.filter(([S,E])=>f(S,E).toLowerCase().includes(x)):c},y=()=>{let x=w(),S=x.filter(([E])=>u.has(E)).length;g.checked=S>0&&S===x.length,g.indeterminate=S>0&&S<x.length},v=()=>{let x=w();if(h.replaceChildren(...x.slice(0,Oo).map(([S,E])=>{let A=R("label","fg-set-item"),F=R("input","fg-checkbox",{type:"checkbox"});return F.checked=u.has(S),F.addEventListener("change",()=>{F.checked?u.add(S):u.delete(S),y()}),A.append(F,document.createTextNode(f(S,E))),A})),x.length>Oo){let S=R("div","fg-set-more");S.textContent=`\u2026 +${x.length-Oo}`,h.append(S)}y()};g.addEventListener("change",()=>{for(let[x]of w())g.checked?u.add(x):u.delete(x);v()}),m.addEventListener("input",v);let k=()=>{r.setFilter(e,u.size===l.size?null:{type:"set",values:c.filter(([x])=>u.has(x)).map(([,x])=>x)}),n()};return m.addEventListener("keydown",x=>x.key==="Enter"&&!me(x)&&k()),v(),p.append(this.title(t),m,b,h,this.actions(e,t,k,n)),p}};var _i=new WeakMap,Sl=0;function Qe(o){let e=_i.get(o);return e||_i.set(o,e=`r${++Sl}`),e}var Hn=class{constructor(e){this.deps=e;this.stats={filterRuns:0,sortRuns:0};this.server=!1;this.full=[];this.last={};this.nodes=[];this.assignedIds=new WeakMap;this.filtered=[];this.sorted=[];this.display=[];this.indexById=null;this.orderedCache=null;this.layoutCache=null;this.quickCache=null}update(e){var u,f,p,m,b,g;let t=this.deps.collator(),n=e.display,r=!!(n!=null&&n.getParentId)!=!!((u=this.last.display)!=null&&u.getParentId),i=e.data!==this.last.data,s=i||r||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)!==((f=this.last.display)==null?void 0:f.groupBy);if(i){let h=this.deps.getRowId;if(h){let w=new Set,y=null;this.assignedIds=new WeakMap,this.nodes=e.data.map((v,k)=>{let x=String(h(v)),S=x;if(w.has(S)){y!=null||(y=x);for(let E=2;w.has(S);E++)S=`${x}#${E}`}return w.add(S),this.assignedIds.set(v,S),{id:S,data:v,sourceIndex:k}}),y!==null&&G(`getRowId returned "${y}" for more than one row; inside the grid the repeats are told apart as "${y}#2" and so on, and updates by id reach the first of them. Return a unique id per row.`)}else this.nodes=e.data.map((w,y)=>({id:Qe(w),data:w,sourceIndex:y}))}if(s&&(this.filtered=this.filter(e),this.stats.filterRuns++),a){let h=e.sort.length?(m=(p=this.deps).sortBlocks)==null?void 0:m.call(p,e.sort):null,w=h!=null&&h.length?Vr(this.filtered.map(y=>y.data),h):void 0;this.sorted=ai(this.filtered,e.sort,y=>this.deps.columnDef(y),t,w),this.stats.sortRuns++}l&&(this.full=n?this.buildDisplay(n,e.sort,t):this.sorted);let c=(b=e.page)!=null?b:null,d=(g=this.last.page)!=null?g:null;(l||(c==null?void 0:c.index)!==(d==null?void 0:d.index)||(c==null?void 0:c.size)!==(d==null?void 0:d.size))&&(this.display=c?this.full.slice(c.index*c.size,(c.index+1)*c.size):this.full,this.indexById=null,this.layoutCache=null),this.last={...e,collator:t,displayVersion:n==null?void 0:n.version}}invalidate(){this.last={}}fullCount(){return this.full.length}dataRowsBefore(e){let t=Math.min(e,this.full.length);if(this.full===this.sorted)return t;let n=0;for(let r=0;r<t;r++)this.full[r].kind||n++;return n}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}orderedDataRows(){var r,i;let e=this.orderedCache;if(e&&e.full===this.full)return e.rows;let t=this.last.display,n=this.sorted;if(t&&(t.getParentId||t.groupBy.length)){let s={...t,expanded:new Map,defaultExpanded:-1,detailOpen:new Set,lazyChildren:void 0};n=this.buildDisplay(s,(r=this.last.sort)!=null?r:[],(i=this.last.collator)!=null?i:this.deps.collator()).filter(a=>!a.kind)}return this.orderedCache={full:this.full,rows:n},n}allNodes(){return this.nodes}idOf(e){var t;return this.deps.getRowId?(t=this.assignedIds.get(e))!=null?t:String(this.deps.getRowId(e)):Qe(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,i){var u;let s=this.layoutCache;if(s&&s.rows===this.display&&s.rh===e&&s.dh===t&&s.hv===r)return s;let a=this.display.length,l=new Float64Array(a+1),c=!0,d=n&&n.size?n:null;for(let f=0;f<a;f++){let p=this.display[f],m=e;if(p.kind==="detail")m=t;else if(!p.kind){d&&(m=(u=d.get(p.id))!=null?u:e);let b=i==null?void 0:i(p.data);typeof b=="number"&&b>0&&(m=d?Math.max(m,b):b)}m!==e&&(c=!1),l[f+1]=l[f]+m}return this.layoutCache={rows:this.display,rh:e,dh:t,hv:r,offsets:l,uniform:c},this.layoutCache}quickTexts(e){var r,i,s;let t=[this.nodes,(s=(i=(r=this.deps).textVersion)==null?void 0:i.call(r))!=null?s:"",...e],n=this.quickCache;return n&&n.key.length===t.length&&n.key.every((a,l)=>a===t[l])?n.texts:(this.quickCache={key:t,texts:new WeakMap},this.quickCache.texts)}filter(e){var u;let t=Object.entries(e.filters).map(([f,p])=>({def:this.deps.columnDef(f),pred:Bt(p)})).filter(f=>!!f.def),n=pr(e.quickFilter),r=n.length?this.deps.quickColumns():[],i=e.advancedFilter?Kn(e.advancedFilter,f=>this.deps.columnDef(f),j):null;if(!t.length&&!n.length&&!i)return this.nodes;let s=n.length?this.quickTexts(r):null,a=this.nodes.filter(f=>{for(let p of t)if(!p.pred(j(p.def,f.data)))return!1;if(i&&!i(f.data))return!1;if(s){let p=s.get(f.data);if(p===void 0&&(p=r.map(m=>this.deps.format(m,j(m,f.data))).join("").toLowerCase(),s.set(f.data,p)),!gr(n,p))return!1}return!0}),l=(u=e.display)==null?void 0:u.getParentId;if(!l)return a;let c=new Map(this.nodes.map(f=>[f.id,f])),d=new Set(a);for(let f of a){let p=l(f.data),m=new Set;for(;p!=null&&!m.has(p);){m.add(p);let b=c.get(String(p));if(!b)break;d.add(b),p=l(b.data)}}return this.nodes.filter(f=>d.has(f))}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 i=e.groupBy.filter(a=>this.deps.columnDef(a));if(!i.length)return e.detailOpen.size?(this.withDetails(e,this.sorted,r),r):this.sorted;let s=(a,l,c)=>{var b;let d=i[l],u=this.deps.columnDef(d),f=new Map;for(let g of a){let h=j(u,g.data),w=_(h)?"":ie(h),y=f.get(w);y||f.set(w,y={value:h,nodes:[]}),y.nodes.push(g)}let p=((b=t.find(g=>g.colId===d))==null?void 0:b.dir)==="desc"?-1:1,m=[...f.entries()].sort((g,h)=>Sn(g[1].value,h[1].value,n,p));for(let[g,h]of m){let w=`${c}${d}:${g}`,y=this.isOpen(e,w,l);r.push({id:`group:${w}`,data:{},sourceIndex:-1,kind:"group",level:l,group:{key:w,colId:d,value:h.value,rows:h.nodes.map(v=>v.data),expanded:y}}),y&&(l+1<i.length?s(h.nodes,l+1,`${w}|`):this.withDetails(e,h.nodes.map(v=>({...v,level:l+1})),r))}};return s(this.sorted,0,""),r}buildTree(e,t){let n=new Set(this.sorted.map(c=>c.id)),r=new Map,i=[];for(let c of this.sorted){let d=e.getParentId(c.data),u=d==null?null:String(d);if(u!==null&&n.has(u)&&u!==c.id){let f=r.get(u);f||r.set(u,f=[]),f.push(c)}else i.push(c)}let s=new Set,a=c=>{var u;let d=[c];for(;d.length;){let f=d.pop();if(!s.has(f.id)){s.add(f.id);for(let p of(u=r.get(f.id))!=null?u:[])d.push(p)}}};for(let c of i)a(c);for(let c of this.sorted){if(s.has(c.id))continue;let d=r.get(String(e.getParentId(c.data))),u=d?d.indexOf(c):-1;u>=0&&d.splice(u,1),i.push(c),a(c)}let l=(c,d,u)=>{var f,p,m;for(let b of c){if(u.has(b.id))continue;let g=(f=r.get(b.id))!=null?f:[],h=!g.length&&!!((p=e.lazyChildren)!=null&&p.call(e,b.id,b.data)),w=g.length>0&&this.isOpen(e,b.id,d),y={...b,level:d,hasChildren:g.length>0||h,expanded:w};h&&((m=e.loading)!=null&&m.has(b.id))&&(y.loading=!0),this.withDetails(e,[y],t),w&&l(g,d+1,new Set([...u,b.id]))}};l(i,0,new Set)}};var kl=1e4,Bo=1e5,Ml=4,Ho=3e3,Gn=class{constructor(e,t,n,r,i,s){this.datasource=e;this.getRowId=t;this.groupBy=n;this.query=r;this.onChange=i;this.onFailed=s;this.levels=new Map;this.gen=0;this.display=null;this.ids=null;this.queue=[];this.inFlight=0;this.retryAt=0;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.queue=[],this.levels.clear(),this.touch()}dispose(){this.gen++,this.queue=[]}touch(){this.version++,this.display=null,this.ids=null}load(e,t,n){this.levels.has(e)||(this.levels.set(e,{state:"loading",nodes:[]}),this.fetch({path:e,keys:t,level:n,start:0,gen:this.gen}))}fetch(e){this.queue.push(e),this.pump()}pump(){for(;this.inFlight<Ml&&this.queue.length;){let e=this.queue.shift();e.gen===this.gen&&(this.inFlight++,this.request(e).finally(()=>{this.inFlight--,this.pump()}))}}request({path:e,keys:t,level:n,start:r,gen:i}){let s=n>=this.groupBy.length,a=this.query,l=r+kl,c;try{c=Promise.resolve(this.datasource.getRows({start:r,end:l,sort:[...a.sort],filters:{...a.filters},quickFilter:a.quickFilter,advancedFilter:a.advancedFilter,groupBy:[...this.groupBy],groupKeys:[...t]}))}catch(d){c=Promise.reject(d)}return c.then(d=>{var g,h;if(i!==this.gen)return;let u=Array.isArray(d==null?void 0:d.rows)?d.rows.filter(w=>w!==null&&typeof w=="object"):[];Array.isArray(d==null?void 0:d.rows)||G("datasource.getRows must resolve to { rows: Row[] }");let f=s?u.map((w,y)=>({id:this.getRowId?String(this.getRowId(w)):Qe(w),data:w,sourceIndex:r+y,level:n})):u.map(w=>{let y=this.groupBy[n],v=w[y],k=`${e?`${e}|`:""}${y}:${ie(v)}`,x=typeof w.count=="number"?w.count:typeof w.childCount=="number"?w.childCount:void 0;return{id:`group:${k}`,data:{},sourceIndex:-1,kind:"group",level:n,group:{key:k,colId:y,value:v,rows:[],expanded:!1,count:x,aggregates:w,keys:[...t,v]}}}),p=r?[...(h=(g=this.levels.get(e))==null?void 0:g.nodes)!=null?h:[],...f]:f,m=typeof(d==null?void 0:d.total)=="number"&&d.total>=0?d.total:null,b=u.length>0&&(m!==null?p.length<m:u.length>=l-r);b&&p.length<Bo?(this.levels.set(e,{state:"loading",nodes:p}),this.fetch({path:e,keys:t,level:n,start:p.length,gen:i})):(b&&G(`a server group level has more than ${Bo} rows; only the first ${Bo} are shown`),this.levels.set(e,{state:"loaded",nodes:p})),this.touch(),this.onChange()},d=>{i===this.gen&&(this.levels.set(e,{state:"failed",nodes:[],retryAt:Date.now()+Ho}),this.touch(),this.onFailed(r,l,d))})}isOpen(e,t,n){let r=e.expanded.get(t);return r!==void 0?r:e.defaultExpanded===-1||n<e.defaultExpanded}rows(e,t){let n=Date.now();if(this.display&&this.builtFor===t&&!(this.retryAt&&n>=this.retryAt))return this.display;let r=[],i=0,s=(a,l,c)=>{var u,f,p;let d=this.levels.get(a);if((d==null?void 0:d.state)==="failed"&&n>=((u=d.retryAt)!=null?u:0)&&(this.levels.delete(a),d=void 0),!d){this.load(a,l,c),r.push({id:`loading:${a}`,data:{},sourceIndex:-1,kind:"loading",level:c});return}if(d.state==="failed"){let m=(f=d.retryAt)!=null?f:0;i=i?Math.min(i,m):m;return}for(let m of d.nodes){if(m.kind!=="group"){r.push(m);continue}let b=m.group,g=this.isOpen(e,b.key,c),h={...m,group:{...b,expanded:g}};r.push(h),g&&s(b.key,(p=b.keys)!=null?p:[],c+1)}d.state==="loading"&&r.push({id:`loading:${a}`,data:{},sourceIndex:-1,kind:"loading",level:c})};return s("",[],0),this.retryAt=i,this.display=r,this.builtFor=t,this.ids=null,r}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 r,i;return t+((i=(r=n.group)==null?void 0:r.count)!=null?i: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,r)=>this.ids.set(n.id,r))),(t=this.ids.get(e))!=null?t:-1):-1}};var El=new Float64Array(0),ut=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;this.quiet=!1}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,c,d,u,f,p,m,b,g,h,w;let t=(l=(a=e.display)==null?void 0:a.groupBy)!=null?l:[];if(t.length&&!((c=e.display)!=null&&c.getParentId)){let y={sort:e.sort,filters:e.filters,quickFilter:e.quickFilter,advancedFilter:(d=e.advancedFilter)!=null?d:null};(!this.groups||!this.groups.matches(t,y))&&((u=this.groups)==null||u.dispose(),this.groups=new Gn(this.deps.datasource,this.deps.getRowId,[...t],y,()=>this.deps.onLoaded(0,0,null),(v,k,x)=>this.deps.onFailed(v,k,x)),this.touch()),this.displayIn=(f=e.display)!=null?f:null,this.query=null;return}this.groups&&(this.groups.dispose(),this.groups=null,this.query=null,this.touch());let n=this.query,r=!n||n.sort!==e.sort||n.filters!==e.filters||n.quickFilter!==e.quickFilter||n.advancedFilter!==((p=e.advancedFilter)!=null?p:null),i=(m=e.page)!=null?m:null,s=((b=i==null?void 0:i.size)!=null?b:0)!==((h=(g=this.page)==null?void 0:g.size)!=null?h:0);this.query={sort:e.sort,filters:e.filters,quickFilter:e.quickFilter,advancedFilter:(w=e.advancedFilter)!=null?w:null},this.page=i?{...i}:null,(r||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 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}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||(!this.quiet&&e>=0&&e<this.getRowCount()&&this.ensure(Math.floor(t/this.bs)),this.placeholder(t))}withoutLoading(e){let t=this.quiet;this.quiet=!0;try{return e()}finally{this.quiet=t}}ensure(e){var c;let t=this.blocks.get(e);if(t&&(t.state!=="failed"||Date.now()<((c=t.retryAt)!=null?c:0))||this.total!==null&&e*this.bs>=this.total&&e>0)return;let n=e*this.bs,r=n+this.bs,i=this.gen;this.lastBlock=e,this.blocks.set(e,{state:"loading",nodes:[]});let s=this.query,a=d=>{i===this.gen&&(this.blocks.set(e,{state:"failed",nodes:[],retryAt:Date.now()+Ho}),this.deps.onFailed(n,r,d))},l;try{l=Promise.resolve(this.deps.datasource.getRows({start:n,end:r,sort:[...s.sort],filters:{...s.filters},quickFilter:s.quickFilter,advancedFilter:s.advancedFilter}))}catch(d){l=Promise.reject(d)}l.then(d=>{if(i!==this.gen)return;let u=Array.isArray(d==null?void 0:d.rows)?d.rows.filter(m=>m!==null&&typeof m=="object"):null;if(!u){G("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((m,b)=>({id:f?String(f(m)):Qe(m),data:m,sourceIndex:n+b}));this.blocks.set(e,{state:"loaded",nodes:p}),typeof d.total=="number"&&d.total>=0?this.total=d.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((i,s)=>i-s)){let i=this.blocks.get(r);i.state==="loaded"&&e.push(...i.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;if(this.groups)return this.groupRows();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.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)):Qe(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:El,uniform:!0}}};function Xi(o){let e=o.idAt(o.index);if(o.mode==="single"){let t=new Set;return o.toggle&&o.selected.has(e)||t.add(e),{selected:t,anchorIndex:o.index}}if(o.range&&o.anchorIndex!=null){let t=o.toggle?new Set(o.selected):new Set,n=Math.min(o.anchorIndex,o.index),r=Math.max(o.anchorIndex,o.index);for(let i=n;i<=r;i++)t.add(o.idAt(i));return{selected:t,anchorIndex:o.anchorIndex}}if(o.toggle){let t=new Set(o.selected);return t.has(e)?t.delete(e):t.add(e),{selected:t,anchorIndex:o.index}}return{selected:new Set([e]),anchorIndex:o.index}}var zn=class{constructor(e){this.bus=new it;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 Go=o=>!!o&&typeof o=="object"&&!Array.isArray(o)&&Object.getPrototypeOf(o)===Object.prototype;function Me(o,e=0,t=new Map){if(e>8||!(Array.isArray(o)||Go(o)))return o;let n=t.get(o);if(n)return n;if(Array.isArray(o)){let i=[];t.set(o,i);for(let s of o)i.push(Me(s,e+1,t));return i}let r={};t.set(o,r);for(let[i,s]of Object.entries(o))r[i]=Me(s,e+1,t);return r}function ft(o,e,t=0,n=new Map){if(o===e)return!0;if(t>8||!o||!e||typeof o!="object"||typeof e!="object")return!1;let r=n.get(o);if(r!=null&&r.has(e))return!0;if(r?r.add(e):n.set(o,new Set([e])),Array.isArray(o)||Array.isArray(e))return Array.isArray(o)&&Array.isArray(e)&&o.length===e.length&&o.every((s,a)=>ft(s,e[a],t+1,n));if(!Go(o)||!Go(e))return!1;let i=Object.keys(o);return i.length===Object.keys(e).length&&i.every(s=>s in e&&ft(o[s],e[s],t+1,n))}function Ji(o){let e=Me(o);return t=>ft(t,e)?!1:(e=Me(t),!0)}var Al=500;function Yi(o){let e=o.renderer.root,t=0,n=null,r=null,i=()=>{clearTimeout(t),n==null||n.remove(),n=null,r=null},s=d=>{var y;let u=d.dataset.col;if(!u||B(u))return null;let f=o.columns.getNode(u);if(!f)return null;if(d.classList.contains("fg-header-cell"))return(y=f.def.headerTooltip)!=null?y:null;let p=d.closest(".fg-row[data-row]");if(!p||!d.closest(".fg-body"))return null;let m=Number(p.dataset.row),b=o.rowModel.getRow(m);if(!b||b.kind)return null;let g=f.def,h=j(g,b.data),w=ne(g,o.store.state.locale.code)(h);if(typeof g.tooltip=="function")try{let v=g.tooltip({value:h,formatted:w,row:b.data,rowIndex:m,column:g});return v?String(v):null}catch{return G(`tooltip of column "${u}" threw`),null}return g.tooltip===!0?w||null:o.options.overflowTooltip!==!1&&g.tooltip!==!1&&d.scrollWidth>d.clientWidth+1&&d.textContent||null},a=(d,u)=>{n==null||n.remove(),n=R("div",`fg-tooltip fg-theme-${o.store.state.theme}`,{role:"tooltip"}),n.textContent=u,o.applyFontTo(n),ue(e).append(n);let f=d.getBoundingClientRect(),p=n.offsetWidth,m=n.offsetHeight,b=window.innerWidth||1024,g=window.innerHeight||768,h=f.bottom+6+m>g?f.top-m-6:f.bottom+6;n.style.left=`${Math.max(4,Math.min(b-p-4,f.left))}px`,n.style.top=`${Math.max(4,h)}px`},l=d=>{var f,p;let u=(p=(f=d.target).closest)==null?void 0:p.call(f,".fg-cell, .fg-header-cell");!u||u===r||!e.contains(u)||(i(),r=u,t=window.setTimeout(()=>{if(r!==u||!u.isConnected)return;let m=s(u);m&&a(u,m)},Al))},c=d=>{let u=d.relatedTarget;r&&u&&r.contains(u)||i()};return e.addEventListener("pointerover",l),e.addEventListener("pointerout",c),e.addEventListener("pointerdown",i),e.addEventListener("keydown",i),e.addEventListener("wheel",i,{passive:!0}),()=>{i(),e.removeEventListener("pointerover",l),e.removeEventListener("pointerout",c),e.removeEventListener("pointerdown",i),e.removeEventListener("keydown",i),e.removeEventListener("wheel",i)}}var Zi=["blank","notBlank"],Vn=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&&!B(e.id)&&ge(e.def)).map(e=>{var r,i;let t=ge(e.def),n=t==="number"?"number":t==="date"?"date":"text";return{id:e.id,label:(i=(r=e.def.header)!=null?r:e.def.field)!=null?i:e.id,kind:n}})}open(){var T,L;this.close();let{grid:e}=this,t=e.store.state.locale,n=this.columns(),r=R("div",`fg-menu fg-filter-builder fg-theme-${e.store.state.theme}`,{role:"dialog","aria-label":t.advancedFilter});e.applyFontTo(r);let i=R("div","fg-chooser-head"),s=R("span","fg-menu-title");s.textContent=t.advancedFilter;let a=R("button","fg-chooser-close",{type:"button","aria-label":t.close});a.textContent="\xD7",a.addEventListener("click",()=>this.close()),i.append(s,a);let l=e.store.state.advancedFilter,c=R("div","fg-filter-join",{role:"radiogroup"}),d=`fg-fb-join-${Math.random().toString(36).slice(2,7)}`;for(let I of["and","or"]){let D=R("label"),N=R("input","",{type:"radio",name:d,value:I});N.checked=((T=l==null?void 0:l.operator)!=null?T:"and")===I,D.append(N,` ${t[I]}`),c.append(D)}let u=R("div","fg-fb-list"),f=[],p=I=>{f.splice(f.indexOf(I),1),I.el.remove()},m=I=>{let D=R("div","fg-fb-row"),N=R("select","fg-filter-op fg-fb-col",{"aria-label":t.columns});for(let J of n){let Z=R("option");Z.value=J.id,Z.textContent=J.label,N.append(Z)}let P=R("select","fg-filter-op fg-fb-op",{"aria-label":t.filter}),$=R("input","fg-input fg-fb-value",{type:"text",placeholder:t.value,"aria-label":t.value}),O=R("input","fg-input fg-fb-value-to",{type:"text",placeholder:t.valueTo,"aria-label":t.valueTo}),H=R("button","fg-chooser-close fg-fb-remove",{type:"button","aria-label":t.close});H.textContent="\xD7";let q=()=>{var J,Z;return(Z=(J=n.find(de=>de.id===N.value))==null?void 0:J.kind)!=null?Z:"text"},K=J=>{let Z=q();P.replaceChildren(...Nt[Z].map(z=>{let U=R("option");return U.value=z,U.textContent=t.ops[z],U})),J&&Nt[Z].includes(J)&&(P.value=J);let de=Z==="text"?"text":Z;$.type=O.type=de,Y()},Y=()=>{$.hidden=Zi.includes(P.value),O.hidden=P.value!=="between"};N.addEventListener("change",()=>K(P.value)),P.addEventListener("change",Y),I&&n.some(J=>J.id===I.colId)&&(N.value=I.colId);let W=I==null?void 0:I.model;K(W==null?void 0:W.op),(W==null?void 0:W.value)!=null&&($.value=String(W.value)),(W==null?void 0:W.valueTo)!=null&&(O.value=String(W.valueTo)),D.append(N,P,$,O,H);let Q={el:D,read:()=>{let J=q(),Z=P.value,de=!Zi.includes(Z),z=null;if(J==="number"){let U=$.value===""?void 0:Number($.value),ee=O.value===""?void 0:Number(O.value);(!de||U!==void 0&&!Number.isNaN(U))&&(z=Z==="between"?{type:"number",op:Z,value:U,valueTo:ee}:{type:"number",op:Z,value:U})}else J==="date"?(!de||$.value)&&(z=Z==="between"?{type:"date",op:Z,value:$.value,valueTo:O.value}:{type:"date",op:Z,value:$.value||void 0}):(!de||$.value)&&(z={type:"text",op:Z,value:$.value});return z?{colId:N.value,model:z}:null}};return H.addEventListener("click",()=>p(Q)),Q},b=(I,D)=>{let N=R("div","fg-fb-row fg-fb-group"),P=R("span","fg-fb-group-label");P.textContent=D;let $=R("button","fg-chooser-close fg-fb-remove",{type:"button","aria-label":t.close});$.textContent="\xD7",N.append(P,$);let O={el:N,read:()=>I};return $.addEventListener("click",()=>p(O)),O},g=I=>{var $;if("conditions"in I)return b(I,`( ${I.conditions.length} \xD7 ${t[I.operator]} )`);let D=n.find(O=>O.id===I.colId),N=I.model;if(D&&N&&(N.type==="text"||N.type==="number"||N.type==="date"))return m(I);let P=(N==null?void 0:N.type)==="set"?N.values.map(String).join(", "):(N==null?void 0:N.type)==="combined"?`( ${N.conditions.length} \xD7 ${t[N.operator]} )`:"";return b(I,`${($=D==null?void 0:D.label)!=null?$:I.colId}: ${P}`)},h=I=>{f.push(I),u.append(I.el)};for(let I of(L=l==null?void 0:l.conditions)!=null?L:[])h(g(I));let w=R("button","fg-btn fg-fb-add",{type:"button"});w.textContent=`+ ${t.addCondition}`,w.addEventListener("click",()=>{let I=m();h(I),I.el.querySelector(".fg-fb-value").focus()});let y=R("div","fg-menu-actions"),v=R("button","fg-btn",{type:"button"});v.textContent=t.reset,v.addEventListener("click",()=>{e.setAdvancedFilter(null),this.close()});let k=R("button","fg-btn fg-btn-primary",{type:"button"});k.textContent=t.apply,k.addEventListener("click",()=>{var N;let I=f.map(P=>P.read()).filter(P=>!!P),D=((N=c.querySelector("input:checked"))==null?void 0:N.value)==="or"?"or":"and";e.setAdvancedFilter(I.length?{operator:D,conditions:I}:null),this.close()}),y.append(v,k),r.append(i,c,u,w,y),ue(e.renderer.root).append(r),f.length||w.click();let x=e.renderer.root.getBoundingClientRect(),S=r.offsetWidth||460;r.style.left=`${Math.max(4,Math.min(x.left+24,(window.innerWidth||1024)-S-4))}px`;let E=e.renderer.headerEl.getBoundingClientRect(),A=window.innerHeight||768,F=Math.max(4,Math.min((E.height?E.bottom:x.top)+8,A-(r.offsetHeight||0)-4));r.style.top=`${F}px`,r.style.maxHeight=`${Math.max(160,A-F-8)}px`,this.popup=r;let C=I=>{xe(I,r)||this.close()},M=I=>{I.key==="Escape"&&(this.close(),e.renderer.gridEl.focus())};document.addEventListener("pointerdown",C,!0),document.addEventListener("keydown",M,!0),this.off.push(()=>document.removeEventListener("pointerdown",C,!0),()=>document.removeEventListener("keydown",M,!0))}close(){var e;for(let t of this.off)t();this.off=[],(e=this.popup)==null||e.remove(),this.popup=null}};var Qi=[{key:"red",style:{background:"#ffc7ce",color:"#9c0006"}},{key:"yellow",style:{background:"#ffeb9c",color:"#9c5700"}},{key:"green",style:{background:"#c6efce",color:"#006100"}},{key:"blue",style:{background:"#dbeafe",color:"#1e3a8a"}},{key:"redText",style:{color:"#dc2626"}},{key:"bold",style:{bold:!0}}],Tl=["value","formula","top","bottom","aboveAverage","belowAverage","duplicate","unique","dataBar","colorScale","iconSet"],Pl=["gt","gte","lt","lte","eq","ne","between","notBetween","contains","notContains","startsWith","endsWith","blank","notBlank"],zo=["blank","notBlank"],es=["dataBar","colorScale","iconSet"],qn=class{constructor(e){this.grid=e;this.popup=null;this.off=[]}get isOpen(){return!!this.popup}open(e){var Q,J,Z,de;this.close();let{grid:t}=this,n=t.columns.getNode(e);if(!n||n.children||B(e))return;let r=t.store.state.locale,i={...fe.cf,...r.cf,aligns:{...fe.cf.aligns,...(Q=r.cf)==null?void 0:Q.aligns}},s=(Z=(J=n.def.header)!=null?J:n.def.field)!=null?Z:e,a=R("div",`fg-menu fg-cf-dialog fg-theme-${t.store.state.theme}`,{role:"dialog","aria-label":`${i.title}: ${s}`});t.applyFontTo(a);let l=R("div","fg-chooser-head"),c=R("span","fg-menu-title");c.textContent=`${i.title} \xB7 ${s}`;let d=R("button","fg-chooser-close",{type:"button","aria-label":r.close});d.textContent="\xD7",d.addEventListener("click",()=>this.close()),l.append(c,d);let u=R("div","fg-cf-list"),f=z=>{var U,ee;return(ee=(U=i.ops[z])!=null?U:r.ops[z])!=null?ee:z},p=z=>{var oe,Ae,Te,se,et,ht;let U=(oe=z.type)!=null?oe:"value",ee=i.types[U];if(U==="value"){let ce=(Ae=z.op)!=null?Ae:"eq";return zo.includes(ce)?f(ce):`${f(ce)} ${String((Te=z.value)!=null?Te:"")}${ce==="between"||ce==="notBetween"?` \u2013 ${String((se=z.valueTo)!=null?se:"")}`:""}`}return U==="formula"?`${ee}: ${(et=z.formula)!=null?et:""}`:U==="top"||U==="bottom"?`${ee} ${(ht=z.rank)!=null?ht:10}${z.percent?"%":""}`:ee},m=()=>{var ee,oe,Ae,Te;u.replaceChildren();let U=t.getConditionalFormats().map((se,et)=>({r:se,i:et})).filter(({r:se})=>se.columns.includes(e));if(!U.length){let se=R("div","fg-cf-empty");se.textContent=i.none,u.append(se);return}for(let{r:se,i:et}of U){let ht=R("div","fg-cf-rule"),ce=R("span","fg-cf-sample",{"aria-hidden":"true"});ce.textContent=se.type==="iconSet"?"\u25B2":se.type==="dataBar"?"\u25AC":"Aa",(ee=se.style)!=null&&ee.background&&(ce.style.background=se.style.background),(oe=se.style)!=null&&oe.color&&(ce.style.color=se.style.color),(Ae=se.style)!=null&&Ae.bold&&(ce.style.fontWeight="700");let pt=ve(se.style);pt&&pt!=="center"&&(ce.style.justifyItems=pt==="left"?"start":"end",ce.style.padding="0 3px"),se.type==="colorScale"&&(ce.style.background=`linear-gradient(to right, ${((Te=se.colors)!=null?Te:["#f8696b","#ffeb84","#63be7b"]).join(",")})`);let gt=R("span","fg-cf-rule-text");gt.textContent=`${p(se)}${se.row?` \xB7 ${i.wholeRow}`:""}${pt?` \xB7 ${i.align}: ${i.aligns[pt]}`:""}`,gt.title=gt.textContent;let Wn=R("button","fg-chooser-close",{type:"button","aria-label":`${r.close}: ${gt.textContent}`});Wn.textContent="\xD7",Wn.addEventListener("click",()=>{let Jo=t.getConditionalFormats(),Yo=Jo[et];Yo.columns=Yo.columns.filter(jn=>jn!==e),t.setConditionalFormats(Jo.filter(jn=>jn.columns.length)),m()}),ht.append(ce,gt,Wn),u.append(ht)}};m();let b=R("div","fg-cf-form"),g=R("select","fg-filter-op fg-cf-wide fg-cf-type",{"aria-label":i.type});for(let z of Tl){let U=R("option");U.value=z,U.textContent=i.types[z],g.append(U)}let h=R("select","fg-filter-op fg-cf-wide fg-cf-op",{"aria-label":r.filter});for(let z of Pl){let U=R("option");U.value=z,U.textContent=f(z),h.append(U)}let w=n.def.type==="number",y=R("input","fg-input fg-cf-value",{type:w?"number":"text",placeholder:r.value,"aria-label":r.value}),v=R("input","fg-input fg-cf-value-to",{type:w?"number":"text",placeholder:r.valueTo,"aria-label":r.valueTo}),k=R("input","fg-input fg-cf-wide fg-cf-formula",{type:"text",placeholder:`=${(de=n.def.field)!=null?de:e} > 100`,"aria-label":i.types.formula,spellcheck:"false"}),x=R("input","fg-input fg-cf-rank",{type:"number",min:"1",value:"10","aria-label":i.count}),S=R("label","fg-cf-pct"),E=R("input","",{type:"checkbox"});S.append(E," %");let A=R("div","fg-cf-swatches fg-cf-wide",{role:"group","aria-label":i.style}),F=0;Qi.forEach((z,U)=>{var oe,Ae;let ee=R("button","fg-cf-swatch",{type:"button","aria-label":i.styles[z.key],title:i.styles[z.key],"aria-pressed":String(U===F)});ee.textContent=z.key==="bold"?"B":"Aa",ee.style.background=(oe=z.style.background)!=null?oe:"#ffffff",ee.style.color=(Ae=z.style.color)!=null?Ae:"#1f2430",ee.addEventListener("click",()=>{F=U;for(let Te of A.children)Te.setAttribute("aria-pressed",String(Te===ee))}),A.append(ee)});let C=R("select","fg-filter-op fg-cf-wide fg-cf-align",{"aria-label":i.align,title:i.align});for(let z of["","left","center","right"]){let U=R("option");U.value=z,U.textContent=z?`${i.align}: ${i.aligns[z]}`:`${i.align}: ${i.aligns.none}`,C.append(U)}let M=R("label","fg-cf-wide fg-cf-row"),T=R("input","",{type:"checkbox"});M.append(T,` ${i.wholeRow}`),b.append(g,h,y,v,k,x,S,A,C,M);let L=()=>{let z=g.value,U=h.value;h.hidden=z!=="value",y.hidden=z!=="value"||zo.includes(U),v.hidden=z!=="value"||U!=="between"&&U!=="notBetween",k.hidden=z!=="formula",x.hidden=S.hidden=z!=="top"&&z!=="bottom",A.hidden=C.hidden=es.includes(z),M.hidden=z!=="value"&&z!=="formula"};g.addEventListener("change",L),h.addEventListener("change",L),L();let I=()=>{let z=g.value,U={columns:[e],type:z},ee=oe=>w&&oe.value!==""?Number(oe.value):oe.value;if(z==="value"){if(U.op=h.value,!zo.includes(U.op)){if(y.value==="")return null;if(U.value=ee(y),U.op==="between"||U.op==="notBetween"){if(v.value==="")return null;U.valueTo=ee(v)}}}else if(z==="formula"){let oe=k.value.trim();if(!oe)return null;U.formula=oe.startsWith("=")?oe:`=${oe}`}else(z==="top"||z==="bottom")&&(U.rank=Math.max(1,Math.floor(Number(x.value)||10)),E.checked&&(U.percent=!0));if(!es.includes(z)){U.style={...Qi[F].style};let oe=ve({align:C.value});oe&&(U.style.align=oe)}return T.checked&&(z==="value"||z==="formula")&&(U.row=!0),U},D=R("div","fg-menu-actions"),N=R("button","fg-btn",{type:"button"});N.textContent=i.clear,N.addEventListener("click",()=>{t.setConditionalFormats(t.getConditionalFormats().map(z=>({...z,columns:z.columns.filter(U=>U!==e)})).filter(z=>z.columns.length)),m()});let P=R("button","fg-btn fg-btn-primary",{type:"button"});P.textContent=i.add,P.addEventListener("click",()=>{let z=I();if(!z){(g.value==="formula"?k:y).focus();return}t.setConditionalFormats([...t.getConditionalFormats(),z]),y.value=v.value=k.value="",m()}),D.append(N,P),a.append(l,u,b,D),ue(t.renderer.root).append(a);let $=t.renderer.root.getBoundingClientRect(),O=a.offsetWidth||340;a.style.left=`${Math.max(4,Math.min($.left+24,(window.innerWidth||1024)-O-4))}px`;let H=window.innerHeight||768,q=a.offsetHeight||0,K=Math.max(4,Math.min($.top+24,H-q-4));a.style.top=`${K}px`,a.style.maxHeight=`${Math.max(160,H-K-8)}px`,a.style.overflowY="auto",this.popup=a,g.focus();let Y=z=>{xe(z,a)||this.close()},W=z=>{z.key==="Escape"&&(this.close(),t.renderer.gridEl.focus())};document.addEventListener("pointerdown",Y,!0),document.addEventListener("keydown",W,!0),this.off.push(()=>document.removeEventListener("pointerdown",Y,!0),()=>document.removeEventListener("keydown",W,!0))}close(){var e;for(let t of this.off)t();this.off=[],(e=this.popup)==null||e.remove(),this.popup=null}};var ts=o=>Math.round(o*2.75),ns=o=>Math.round(o*3.1),Vo=13,qo={compact:[.8,.85],normal:[1,1],comfortable:[1.25,1.15]},Ll=[],Il=100,os=new Map;function Ee(o){return o.every(e=>e!==null&&typeof e=="object")?o:(G("data contains entries that are not objects; they were skipped"),o.filter(e=>e!==null&&typeof e=="object"))}var Wo=class{constructor(e,t){this.options=t;this.events=new it;this.pinnedRows={top:[],bottom:[]};this.spanCache=null;this.editVersion=0;this.tracker=new yn;this.history=new wn;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 Nn(this);this.sourceDefs=[];this.pivotCfg=null;this.pivotData=null;this.rollupOn=!1;this.rollupBy=null;this.rollupData=null;this.savedGroup=null;this.page=0;this.pageSize=Il;this.formulaScope={off:()=>!this.allow("formulas"),rows:()=>this.store.state.data,version:()=>this.editVersion,computed:e=>{var n;let t=(n=this.columns.getNode(e))==null?void 0:n.def;return t&&typeof t.formula=="string"&&t.formula.startsWith("=")?t.formula:void 0}};this.cfRules=[];this.cfRowsSrc=null;this.sourceSnapshot=void 0;this.summarySnapshot=null;this.cfRows=[];this.formats=new Yt({rules:()=>this.cfRules,rows:()=>{let e=this.rowModel.dataRows();return this.cfRowsSrc!==e&&(this.cfRowsSrc=e,this.cfRows=e.map(t=>t.data)),this.cfRows},value:(e,t)=>{var r;let n=(r=this.columns.getNode(e))==null?void 0:r.def;return n?j(n,t):void 0},version:()=>this.editVersion,formula:(e,t)=>_t(e,t,new Set,0,new Map,this.formulaScope)});this.formatDialog=new qn(this);this.rollupSelection=null;this.forcedOverlay=null;this.filterBuilder=new Vn(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,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}};this.density="normal";this.cellPadding=null;this.sortWithin=!1;this.mergeSel="rows";this.selBlockCache=null;this.blockStateCache=null;this.aggMemo=null;this.selectionVersion=0;this.selectableCache=null;var s,a,l,c,d,u,f,p,m;this.paid=Wi(t.licenseKey),Array.isArray(t.columns)||G("options.columns must be an array"),t.data!=null&&!Array.isArray(t.data)&&G("options.data must be an array"),this.store=new zn({data:Array.isArray(t.data)?Ee(t.data):[],sort:[],filters:{},quickFilter:"",selected:new Set,anchorId:null,focus:null,range:null,extraRanges:[],advancedFilter:null,locale:mt(t.locale),theme:(s=t.theme)!=null?s:"light"}),this.sourceDefs=Array.isArray(t.columns)?t.columns:[],this.sourceSnapshot=Me(this.sourceDefs),this.columns=new Gt(this.withSelect(this.sourceDefs)),this.bindFormulas();let n=t.pagination;n&&typeof n=="object"&&n.pageSize!==void 0&&(Number.isInteger(n.pageSize)&&n.pageSize>0?this.pageSize=n.pageSize:G("pagination.pageSize must be a positive integer")),t.datasource&&typeof t.datasource.getRows!="function"&&G("datasource.getRows must be a function"),this.rowModel=t.datasource&&typeof t.datasource.getRows=="function"?new ut({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:(b,g,h)=>this.serverLoaded(b,g,h),onFailed:(b,g,h)=>this.serverFailed(b,g,h)}):new Hn({getRowId:t.getRowId,columnDef:b=>{var g;return(g=this.columns.getNode(b))==null?void 0:g.def},quickColumns:()=>this.columns.displayed().filter(b=>!B(b.id)).map(b=>b.def),format:(b,g)=>ne(b,this.store.state.locale.code)(g),collator:()=>this.collator(),textVersion:()=>`${this.store.state.locale.code}|${this.editVersion}`,sortBlocks:b=>this.sortBlocks(b)}),this.sortWithin=!!t.sortWithinMerges,this.mergeSel=this.validMergeSelection(t.mergeSelection),this.sortWithin&&this.rowModel.server&&G("sortWithinMerges is ignored with a datasource: the server sorts the rows"),(a=t.groupBy)!=null&&a.length&&this.allow(this.rowModel.server?"serverGroups":"grouping")&&(this.groupBy=this.validGroupBy(t.groupBy)),Array.isArray(t.conditionalFormats)&&t.conditionalFormats.length&&this.allow("conditional")&&(this.cfRules=t.conditionalFormats.filter(b=>b&&typeof b=="object"&&Array.isArray(b.columns)).map(b=>({...b,columns:[...b.columns]}))),this.defaultExpanded=(t.treeData||this.paid)&&(l=t.groupDefaultExpanded)!=null?l:0,t.treeData&&!t.getRowId&&G("treeData needs getRowId so parent ids can be matched"),this.updateRows(),this.summaryOpts=t.summary&&this.allow("summary")?t.summary:null,this.summarySnapshot=Me(this.summaryOpts),this.refreshSummary();let r=t.fontSize!=null&&t.fontSize>0?t.fontSize:null;t.fontSize!=null&&!(t.fontSize>0)&&G("fontSize must be a positive number"),this.font={size:r,family:(c=t.fontFamily)!=null?c:null};let i=r!=null?r:Vo;if(this.renderer=new Qt(e,this,{rowHeight:(d=t.rowHeight)!=null?d:Math.round(ts(i)*qo[this.densityOf(t.density)][0]),headerHeight:(u=t.headerHeight)!=null?u:Math.round(ns(i)*qo[this.densityOf(t.density)][1])}),this.density=this.densityOf(t.density),this.renderer.applyTheme(),t.flashDuration&&this.renderer.root.style.setProperty("--fg-flash-duration",`${this.flashMs()}ms`),this.renderer.applyFont(this.font.size,this.font.family),t.cellPadding!=null&&this.applyCellPadding(t.cellPadding),this.menu=new Bn(this),this.chooser=new ln(this),this.contextMenu=new cn(this),this.editor=new mn(this),this.finder=new hn(this),this.fillHandle=new un(this),this.groupPanel=t.groupPanel&&this.allow("grouping")?new en(this):null,this.pinnedRows={top:Ee((f=t.pinnedTopRows)!=null?f:[]),bottom:Ee((p=t.pinnedBottomRows)!=null?p:[])},this.sideBar=t.sideBar&&this.allow("sideBar")?new dn(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",b=>this.onChange(b)),ni(this),Jr(this),()=>this.menu.close(),()=>this.chooser.close(),()=>this.contextMenu.destroy(),()=>this.editor.destroy(),()=>this.fillHandle.destroy(),()=>{var b;return(b=this.groupPanel)==null?void 0:b.destroy()},()=>this.charts.destroy(),()=>this.filterBuilder.close(),()=>this.formatDialog.close(),Yi(this)),typeof ResizeObserver!="undefined"){let b=new ResizeObserver(()=>this.renderer.schedule());b.observe(this.renderer.main),this.disposers.push(()=>b.disconnect())}t.pivot&&this.setPivot(t.pivot),t.rollup&&this.setRollup(t.rollup),Gi(t.licenseKey).then(b=>{b&&!this.destroyed&&this.renderer.showFreeBadge()}),this.renderer.render(),this.api=this.createApi(),nn.set(this.renderer.root,this),po.set(this.api,this),ji(t.licenseKey)}get valuesVersion(){return this.editVersion}rangesOn(){return this.options.rangeSelection!==!1&&this.paid}allow(e){return this.paid?!0:(Ui(e),!1)}columnDefs(){return[...this.sourceDefs]}summaryOptions(){return this.summaryOpts?JSON.parse(JSON.stringify(this.summaryOpts)):null}setConditionalFormats(e){if(!Array.isArray(e)){G("setConditionalFormats: formats must be an array");return}e.length&&!this.allow("conditional")||(this.cfRules=e.filter(t=>t&&typeof t=="object"&&Array.isArray(t.columns)).map(t=>({...t,columns:[...t.columns]})),this.renderer.invalidate({rows:!0}),this.events.emit("conditionalFormatsChange",{formats:this.getConditionalFormats()}))}getConditionalFormats(){return JSON.parse(JSON.stringify(this.cfRules))}cellFormat(e,t,n){return this.cfRules.length?this.formats.cell(t,e,n):null}bindFormulas(){var n;let e=[],t=r=>{for(let i of r)!i||typeof i!="object"||(e.push(i),Array.isArray(i.children)&&t(i.children))};t(this.sourceDefs);for(let r of this.columns.getState()){let i=(n=this.columns.getNode(r.colId))==null?void 0:n.def;i&&e.push(i)}Dr(e,this.formulaScope)}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.rebuildRollup(),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?Ll: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(){let e=!!this.options.pagination,t=this.viewRows();this.rowModel.update({...this.store.state,data:t,display:this.display(),page:e?{index:this.page,size:this.pageSize}:null});let n=this.rollupSelection;n&&(this.rollupSelection=null,this.setSelected(n)),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,t;return(t=(e=this.pivotData)!=null?e:this.rollupData)!=null?t:this.store.state.data}getRollup(){return this.rollupBy?{by:[...this.rollupBy]}:this.rollupOn}setRollup(e){var r;let t=e&&typeof e=="object"&&Array.isArray(e.by)?e.by.filter(i=>typeof i=="string"):null;if(e&&typeof e=="object"&&!t){G("setRollup: expected true, false or { by: string[] }");return}let n=!!e;if(!(n&&!this.allow("pivot"))&&!(n&&this.clientOnly("rollup"))){if(n&&this.options.treeData){G("rollup is not available with treeData");return}n===this.rollupOn&&(t!=null?t:[]).join("")===((r=this.rollupBy)!=null?r:[]).join("")&&!t==!this.rollupBy||(this.editor.cancel(),this.rollupOn=n,this.rollupBy=n?t:null,this.store.set({range:null,focus:null}),this.columnsChanged())}}rebuildRollup(){let e=this.rollupData;this.rollupData=this.rollupOn&&!this.pivotCfg?ki(this.store.state.data,this.dataColumns().map(t=>({id:t.id,def:t.def})),this.rollupBy):null,(e||this.rollupData)&&this.remapRollupSelection(e)}remapRollupSelection(e){let t=this.store.state.selected;if(!t.size)return;let n=a=>this.rowModel.idOf(a),r=e?new Set(e.filter(a=>t.has(n(a))).flatMap(a=>{var l;return(l=It(a))!=null?l:[a]}).map(n)):t,i=this.rollupData,s=i?i.filter(a=>{var l;return((l=It(a))!=null?l:[a]).every(c=>r.has(n(c)))}).map(n):this.store.state.data.map(n).filter(a=>r.has(a));(s.length!==t.size||s.some(a=>!t.has(a)))&&(this.rollupSelection=new Set(s))}isRollupKey(e){var t;return!!((t=this.rollupBy)!=null&&t.includes(e))}sourceRowsOf(e){return this.rollupData?e.flatMap(t=>{var n;return(n=It(t))!=null?n:[t]}):e}cellEditable(e,t,n){return!this.rollupData&&zt(e,t,n)}setColumnAggFunc(e,t){if(t!==null&&typeof t!="function"&&!["sum","avg","min","max","count"].includes(t)){G(`setColumnAggFunc: unknown aggFunc "${String(t)}"`);return}let n=!1,r=s=>s.map(a=>{var c;if(!a||typeof a!="object")return a;if(Array.isArray(a.children))return{...a,children:r(a.children)};if(((c=a.id)!=null?c:a.field)!==e)return a;n=!0;let l={...a};return t?l.aggFunc=t:delete l.aggFunc,l}),i=r(this.sourceDefs);if(!n){G(`setColumnAggFunc: no column "${e}"`);return}this.setColumns(i)}sourceLeaves(){let e=[],t=n=>{var r,i;for(let s of n)!s||typeof s!="object"||(Array.isArray(s.children)?t(s.children):((r=s.id)!=null?r:s.field)&&e.push({id:(i=s.id)!=null?i: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.allow("pivot")||e&&this.clientOnly("pivot"))return;if(e&&(typeof e!="object"||!Array.isArray(e.rows)||!Array.isArray(e.values))){G("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(r=>r.id));this.pivotCfg||(this.savedGroup={groupBy:this.groupBy,expanded:this.expanded,defaultExpanded:this.defaultExpanded});let n=Io(e,r=>t.has(r));this.pivotCfg&&Ci(n,this.pivotCfg)||(this.pivotCfg=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.rebuildRollup(),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(c=>[c.id,c.def])),i={sum:n.sum,avg:n.avg,min:n.min,max:n.max,count:n.count},s=Ri(this.store.state.data,t,c=>r.get(c),{total:n.total,blank:n.blanks,agg:c=>{var d;return(d=i[c])!=null?d:c}},n.code);if(this.pivotData=s.rows,this.columns.setDefs(this.withSelect(s.columns)),this.groupBy=s.groupBy,!e)return;let a=c=>!!this.columns.getNode(c),l=this.store.state;(l.sort.some(c=>!a(c.colId))||Object.keys(l.filters).some(c=>!a(c)))&&this.store.set({sort:l.sort.filter(c=>a(c.colId)),filters:Object.fromEntries(Object.entries(l.filters).filter(([c])=>a(c)))}),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}`)}flashClass(e,t){if(!this.flashing.size)return"";let n=this.flashing.get(`${e}\0${t}`);return n?n.dir?` fg-cell-flash fg-cell-flash-${n.dir}`:" fg-cell-flash":""}flashMs(){let e=this.options.flashDuration;return typeof e=="number"&&e>0?e:1e3}flash(e){let t=this.flashMs(),n=Date.now()+t;for(let[i,s]of e)this.flashing.set(i,{until:n,dir:s});if(this.flashTimer)return;let r=()=>{let i=Date.now(),s=new Set,a=1/0;for(let[l,c]of this.flashing)c.until<=i?(this.flashing.delete(l),s.add(l.slice(0,l.indexOf("\0")))):a=Math.min(a,c.until);s.size&&this.renderer.invalidateRowIds(s),this.flashTimer=this.flashing.size&&!this.destroyed?window.setTimeout(r,Math.max(16,a-i)):0};this.flashTimer=window.setTimeout(r,t)}applyTransaction(e){return!e||typeof e!="object"?{added:[],updated:[],removed:[],notFound:[]}:this.applyTransactions([e])}applyTransactions(e){var c,d;let t={added:[],updated:[],removed:[],notFound:[]};if(this.clientOnly("applyTransaction"))return t;let n=new Map;for(let u of this.columns.getState()){let f=(c=this.columns.getNode(u.colId))==null?void 0:c.def.field;f&&n.set(f,[...(d=n.get(f))!=null?d:[],u.colId])}let r=new Map,i={fields:new Set,ids:new Set},s=this.store.state.data,a=new Set(s),l=new Map(s.map(u=>[this.rowModel.idOf(u),u]));for(let u of e)u&&typeof u=="object"&&(s=this.txStep(u,s,{present:a,byId:l},t,r,n,i));if(!t.added.length&&!t.updated.length&&!t.removed.length)return t.notFound.length&&this.events.emit("transactionApplied",t),t;if(this.editVersion++,s===this.store.state.data&&!this.viewReads(i.fields)){(this.options.autoRowHeight||this.options.getRowHeight)&&this.renderer.invalidateHeights(),this.refreshSummary();let u=this.columns.displayed().some(f=>f.def.formula||f.def.formulas);u?this.finder.refresh():this.finder.refreshRows(i.ids),this.options.getRowHeight||u||this.columns.displayed().some(f=>f.def.merge||f.def.rowSpan)||this.formats.dependsOnOtherRows()?this.renderer.invalidate({rows:!0}):this.renderer.invalidateRowIds(i.ids)}else{this.renderer.invalidateHeights(),this.keepRange=!0;try{this.replaceData(s===this.store.state.data?[...s]:s)}finally{this.keepRange=!1}this.clampRanges()}return this.editor.sync(),r.size&&this.options.flashCells!==!1&&this.flash(r),this.events.emit("transactionApplied",t),t}clampRanges(){let e=this.rowModel.getRowCount(),{range:t,extraRanges:n,focus:r}=this.store.state,i=l=>!l||l.start.rowIndex<e&&l.end.rowIndex<e?l:Math.min(l.start.rowIndex,l.end.rowIndex)>=e?null:{start:{...l.start,rowIndex:Math.min(l.start.rowIndex,e-1)},end:{...l.end,rowIndex:Math.min(l.end.rowIndex,e-1)}},s=n.map(i).filter(l=>!!l);(s.length!==n.length||s.some((l,c)=>l!==n[c]))&&this.store.set({extraRanges:s}),r&&r.rowIndex>=e&&this.store.set({focus:e?{...r,rowIndex:e-1}:null});let a=i(t);a!==t&&(this.store.set({range:a}),this.events.emit("rangeChange",{range:a&&{start:{...a.start},end:{...a.end}}}))}viewReads(e){var i;if(!e.size)return!1;let t=this.store.state;if(this.pivotCfg||this.options.treeData||t.quickFilter||t.advancedFilter||this.groupBy.length)return!0;let r=[...t.sort.map(s=>s.colId),...Object.keys(t.filters)].map(s=>{var a;return(a=this.columns.getNode(s))==null?void 0:a.def});return t.sort.length&&r.push(...(i=this.sortBlocks(t.sort))!=null?i:[]),r.some(s=>s?s.valueGetter||s.formulas||s.formula?!0:s.field!=null&&e.has(s.field):!1)}txStep(e,t,n,r,i,s,a){var w,y;let l=this.options.getRowId,{present:c,byId:d}=n,u=v=>{if(!v||typeof v!="object")return null;if(c.has(v))return this.rowModel.idOf(v);try{return l?String(l(v)):null}catch{return null}},f=new Set;for(let v of(w=e.remove)!=null?w:[]){let k=u(v),x=k===null?void 0:d.get(k);x&&!f.has(x)?(f.add(x),c.delete(x),d.delete(k),r.removed.push(x),this.tracker.created.delete(x),this.tracker.originals.delete(x)):x||r.notFound.push(v)}let p=(v,k,x)=>{var E;let S=this.tracker.originals.get(x);if(v===x){for(let A of Object.keys(v))S&&(S[A]=v[A]),a.fields.add(A);a.ids.add(k),r.updated.push(x);return}for(let[A,F]of Object.entries(v)){S&&(S[A]=F);let C=x[A];if(Object.is(C,F))continue;x[A]=F,a.fields.add(A),a.ids.add(k);let M=typeof C=="number"&&typeof F=="number"?F>C?"up":"down":"";for(let T of(E=s.get(A))!=null?E:[])i.set(`${k}\0${T}`,M)}r.updated.push(x)};for(let v of(y=e.update)!=null?y:[]){let k=u(v),x=k===null?void 0:d.get(k);if(!x||f.has(x)){r.notFound.push(v);continue}p(v,k,x)}let m=Array.isArray(e.add)?[...e.add]:[];for(let v of Array.isArray(e.upsert)?e.upsert:[]){let k=u(v),x=k===null?void 0:d.get(k);x&&!f.has(x)?p(v,k,x):v&&typeof v=="object"&&m.push(v)}let b=Ee(m);r.added.push(...b);for(let v of b)c.add(v),d.set(this.rowModel.idOf(v),v);if(!f.size&&!b.length)return t;let g=f.size?t.filter(v=>!f.has(v)):[...t],h=typeof e.addIndex=="number"?Math.max(0,Math.min(g.length,Math.floor(e.addIndex))):g.length;return g.splice(h,0,...b),g}applyTransactionAsync(e){if(!e||typeof e!="object"||(this.txQueue.push(e),this.txTimer))return;let t=this.options.asyncTransactionWait;this.txTimer=window.setTimeout(()=>this.flushAsyncTransactions(),typeof t=="number"&&t>=0?t:50)}flushAsyncTransactions(){clearTimeout(this.txTimer),this.txTimer=0;let e=this.txQueue;this.txQueue=[],!(this.destroyed||!e.length)&&this.applyTransactions(e)}setAdvancedFilter(e){let t=e&&typeof e=="object"&&Array.isArray(e.conditions)&&e.conditions.length?e:null;t&&!this.allow("advancedFilter")||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(){var i,s,a,l;let e=this.store.state,t=(s=(i=this.savedGroup)==null?void 0:i.groupBy)!=null?s:this.groupBy,n=(l=(a=this.savedGroup)==null?void 0:a.expanded)!=null?l:this.expanded,r={columns:this.columns.getState(),columnGroups:this.columns.groupOpenState(),advancedFilter:e.advancedFilter?JSON.parse(JSON.stringify(e.advancedFilter)):null,sort:e.sort.map(c=>({...c})),filters:JSON.parse(JSON.stringify(e.filters)),quickFilter:e.quickFilter,groupBy:[...t],pivot:this.pivotCfg?JSON.parse(JSON.stringify(this.pivotCfg)):null,expanded:Object.fromEntries(n),selected:[...e.selected]};return this.cfRules.length&&(r.conditionalFormats=this.getConditionalFormats()),this.options.pagination&&(r.page=this.page,r.pageSize=this.pageSize),r}setState(e,t={}){var s,a;if(!e||typeof e!="object")return;let n=l=>e[l]!==void 0&&(!t.parts||t.parts.includes(l)),r=l=>!!this.columns.getNode(l);if(n("columns")&&Array.isArray(e.columns)&&(this.columns.applyState(e.columns.filter(l=>l&&r(l.colId))),this.columnsChanged()),n("columnGroups")&&e.columnGroups&&typeof e.columnGroups=="object")for(let[l,c]of Object.entries(e.columnGroups))typeof c=="boolean"&&this.setColumnGroupOpened(l,c);n("groupBy")&&Array.isArray(e.groupBy)&&this.setGroupBy(e.groupBy.filter(r)),n("pivot")&&this.setPivot((s=e.pivot)!=null?s:null);let i={};if(n("sort")&&Array.isArray(e.sort)){let l=this.checkSort(e.sort.filter(c=>c&&r(c.colId)));l&&(i.sort=l)}if(n("filters")&&e.filters&&typeof e.filters=="object"&&(i.filters=Object.fromEntries(Object.entries(e.filters).filter(([l])=>r(l)))),n("advancedFilter")){let l=e.advancedFilter,c=l&&typeof l=="object"&&Array.isArray(l.conditions)&&l.conditions.length?l:null;c!==this.store.state.advancedFilter&&(!c||this.allow("advancedFilter"))&&(i.advancedFilter=c)}if(n("quickFilter")&&typeof e.quickFilter=="string"&&(i.quickFilter=e.quickFilter),this.store.set(i),i.sort&&this.events.emit("sortChange",{sort:[...i.sort]}),i.filters&&this.events.emit("filterChange",{filters:{...i.filters}}),"advancedFilter"in i&&this.events.emit("advancedFilterChange",{advancedFilter:(a=i.advancedFilter)!=null?a:null}),n("expanded")&&e.expanded&&typeof e.expanded=="object"){let l=new Map(Object.entries(e.expanded).filter(([,c])=>typeof c=="boolean"));this.savedGroup?this.savedGroup.expanded=l:(this.expanded=l,this.displayChanged())}if(n("pageSize")&&typeof e.pageSize=="number"&&this.setPageSize(e.pageSize),n("page")&&typeof e.page=="number"&&this.setPage(e.page),n("conditionalFormats")&&Array.isArray(e.conditionalFormats)&&this.setConditionalFormats(e.conditionalFormats),n("selected")&&Array.isArray(e.selected)){let l=new Set(this.rowModel.allNodes().map(c=>c.id));this.setSelected(new Set(e.selected.map(String).filter(c=>l.has(c))))}}rowNumber(e){var r,i,s,a;let t=this.rowModel.rows();if(((r=this.rowNumberCache)==null?void 0:r.rows)!==t){let l=new Int32Array(t.length),c=0;t.forEach((f,p)=>{l[p]=f.kind?0:++c});let d=this.page*this.pageSize,u=this.options.pagination&&!this.rowModel.server?(a=(s=(i=this.rowModel).dataRowsBefore)==null?void 0:s.call(i,d))!=null?a:d:0;this.rowNumberCache={rows:t,nums:l,offset:u}}let n=this.rowNumberCache.nums[e];return n?n+this.rowNumberCache.offset: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){G("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 ut&&(this.saveEditBeforeReload(),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}))}saveEditBeforeReload(){this.rowModel.server&&(this.editor.endRow(!0),this.editor.active&&!this.editor.commit(null)&&this.editor.cancel())}serverFailed(e,t,n){this.destroyed||(G(`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}`,i=(a,l)=>a.on("scroll",c=>{if(n.get(a)===r(c)){n.delete(a);return}l.setScrollPosition(t==="vertical"?{top:c.top}:t==="horizontal"?{left:c.left}:c),n.set(l,r(l.getScrollPosition()))}),s=[i(this.api,e),i(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?(G(`${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||B(t)?(G(`groupBy: unknown column "${t}"`),!1):!0}):[]}getGroupBy(){return[...this.groupBy]}setGroupBy(e){var n;if(Array.isArray(e)&&e.length&&!this.allow(this.rowModel.server?"serverGroups":"grouping"))return;let t=this.validGroupBy(e);t.join("")!==this.groupBy.join("")&&(this.groupBy=t,this.page=0,(n=this.groupPanel)==null||n.refresh(),this.sortWithin&&this.rowModel.invalidate(),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"){G("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(i=>{if(!r())return;let s=Ee(Array.isArray(i)?i:[]);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})},i=>{r()&&(G(`treeData.loadChildren failed for row "${n}"`),this.displayChanged(),this.events.emit("childrenLoadFailed",{row:e.data,error:i}))})}setGroupExpanded(e,t){var i,s;let n=this.rowModel.rows().find(a=>this.isExpandable(a)&&this.expandKey(a)===e);if((n?!!((s=(i=n.group)==null?void 0:i.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,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 i,s;let n=(i=this.columns.getNode(t))==null?void 0:i.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 r=this.aggCache.map.get(e.group);if(r||this.aggCache.map.set(e.group,r=new Map),!r.has(t)){let a=this.sourceRowsOf(e.group.rows);try{r.set(t,Re(n.aggFunc,a.map(l=>j(n,l)),a))}catch{G(`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 i=this.rawParent(r);if(i!==null&&String(i)===t)return i}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 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 c=this.rowModel.allNodes().find(d=>d.id===l);l=c?this.parentOf(c.data):null}}let i=this.dragOptions.canDrop;if(!i)return!0;try{return i({row:e,target:t,position:n,fromOtherGrid:r!==this})!==!1}catch{return G("rowDrag.canDrop threw; the drop was refused"),!1}}dropRow(e,t,n="after",r=this){var h,w;if(this.clientOnly("dropRow")||!e||typeof e!="object")return!1;let i=this.options.treeData;!i&&n==="inside"&&(n="after");let s=this.store.state.data,a=r!==this,l=a?-1:s.indexOf(e);if(!a&&l<0||t&&!s.includes(t)||a&&(!r.canMoveRows()||s.includes(e))||!this.canDropRow(e,t,n,r))return!1;let c=i?this.rawParent(e):null,d=!i||!t?null:n==="inside"?t:(h=this.store.state.data.find(y=>this.rowModel.idOf(y)===this.parentOf(t)))!=null?h:null,u=d?this.idValue(d):null,f=s.filter(y=>y!==e),p=!t||n==="inside"?f.length:f.indexOf(t)+(n==="after"?1:0);f.splice(p,0,e);let m=f.some((y,v)=>y!==s[v]);if(!a&&!m&&String(c!=null?c:"")===String(u!=null?u:""))return!1;let b=(y,v)=>{try{i.setParentId(e,y,v)}catch{G("treeData.setParentId threw")}},g=i&&(w=this.store.state.data.find(y=>this.rowModel.idOf(y)===this.parentOf(e)))!=null?w:null;return a?(r.removeRows([e]),i&&b(u,d),this.addRows([e],p)):(i&&b(u,d),this.replaceData(f),this.history.push({undo:()=>{i&&b(c,g),this.replaceData(s)},redo:()=>{i&&b(u,d),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,i=r.indexOf(e);if(i<0||!Number.isFinite(t))return!1;let s=Math.max(0,Math.min(r.length-1,Math.floor(t)));if(s===i)return!1;let a=[...r];return a.splice(i,1),a.splice(s,0,e),this.replaceData(a),n&&this.history.push({undo:()=>this.moveRow(e,i,!1),redo:()=>this.moveRow(e,s,!1)}),this.events.emit("rowDragEnd",{row:e,fromIndex:i,toIndex:s}),!0}setFont(e){let t=this.font.size;e.size!==void 0&&(typeof e.size=="number"&&e.size>0?t=e.size:G("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:Vo;this.applyAutoHeights(r),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]=qo[this.density];this.options.rowHeight==null&&(this.renderer.opts.rowHeight=Math.round(ts(e)*t)),this.options.headerHeight==null&&(this.renderer.opts.headerHeight=Math.round(ns(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:Vo),this.renderer.invalidateHeights(),this.layoutChanged())}applyCellPadding(e){return e!=null&&!(typeof e=="number"&&Number.isFinite(e)&&e>=0)?(G("cellPadding must be a number of px, 0 or more"),!1):(this.cellPadding=e,e==null?this.renderer.root.style.removeProperty("--fg-cell-px"):this.renderer.root.style.setProperty("--fg-cell-px",`${e}px`),!0)}setCellPadding(e){e===this.cellPadding||!this.applyCellPadding(e)||(this.menu.close(),this.layoutChanged())}getCellPadding(){if(this.cellPadding!=null)return this.cellPadding;let e=parseFloat(getComputedStyle(this.renderer.root).getPropertyValue("--fg-cell-px"));return Number.isFinite(e)?e:12}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),this.cellPadding!=null&&e.style.setProperty("--fg-cell-px",`${this.cellPadding}px`)}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)){G("setSummary: summary.rows must be an array");return}if(!(e&&!this.allow("summary"))){if(ft(e,this.summarySnapshot)){this.summaryOpts=e;return}this.summarySnapshot=Me(e),this.summaryOpts=e,this.refreshSummary(),this.renderer.invalidate({header:!0,rows:!0})}}refreshSummary(){var r,i;let e=this.summaryOpts;if(!((r=e==null?void 0:e.rows)!=null&&r.length)){this.summaryValues=[];return}let t=(i=e.scope)!=null?i:"filtered",n=t==="all"?this.rowModel.allNodes().map(s=>s.data):t==="selected"?this.selectedRows():this.rowModel.dataRows().map(s=>s.data);this.summaryValues=zr(e.rows,this.sourceRowsOf(n),s=>{var a;return(a=this.columns.getNode(s))==null?void 0:a.def})}dataColumns(){return this.columns.displayed().filter(e=>!B(e.id))}validRange(e){if(!e||!this.rangesOn())return null;let t=this.rowModel.getRowCount(),n=r=>!!r&&!B(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){var s,a,l,c;if(e&&(((s=e.start)==null?void 0:s.rowIndex)!==((a=e.end)==null?void 0:a.rowIndex)||((l=e.start)==null?void 0:l.colId)!==((c=e.end)==null?void 0:c.colId))&&!this.allow("range"))return;let n=this.validRange(e),r=t||!this.store.state.extraRanges.length?this.store.state.extraRanges:[],i=this.store.state.range;JSON.stringify(i)===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){if(!this.allow("range"))return;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;if(Array.isArray(e)&&e.length&&!this.allow("range"))return;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:Et({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=>ei(r,e,n.index))}selectAllCells(){if(!this.allow("range"))return;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){if(!t&&this.multiCell()&&!this.allow("clipboard"))return"";let n=this.store.state.locale.code,r=this.columns.displayed(),i=t?null:this.rangeBounds(),s=t,a,l,c=t?[]:this.allRangeBounds();if(c.length>1){let u=c.every(p=>p.c1===c[0].c1&&p.c2===c[0].c2),f=c.every(p=>p.r1===c[0].r1&&p.r2===c[0].r2);if(this.rangesStack(c)){let p=[...c].sort((g,h)=>u?g.r1-h.r1:g.c1-h.c1),m=p.map(g=>this.rangeMatrix(g)),b=u?m.flat():m[0].map((g,h)=>m.flatMap(w=>{var y;return(y=w[h])!=null?y:[]}));return e&&b.unshift((u?p.slice(0,1):p).flatMap(g=>this.rangeHeaders(g))),mo(b)}}if(i){a=[];for(let u=i.r1;u<=i.r2;u++){let f=this.rowModel.getRow(u);f&&!f.kind&&a.push(f.data)}l=r.slice(i.c1,i.c2+1).filter(u=>!B(u.id))}else if(s)a=this.shownSelectedRows(),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||B(f.id))return"";a=[p.data],l=[f]}let d=a.map(u=>l.map(f=>this.copyCell(f.def,u,n)));return e&&d.unshift(l.map(u=>{var f,p;return(p=(f=u.def.header)!=null?f:u.def.field)!=null?p:u.id})),mo(d)}multiCell(){let e=this.allRangeBounds();return e.length>1||e.some(t=>t.r1!==t.r2||t.c1!==t.c2)}rangesStack(e){return e.length>1&&(e.every(t=>t.c1===e[0].c1&&t.c2===e[0].c2)||e.every(t=>t.r1===e[0].r1&&t.r2===e[0].r2))}rangeHeaders(e){return this.columns.displayed().slice(e.c1,e.c2+1).filter(t=>!B(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(i=>!B(i.id)),n=this.store.state.locale.code,r=[];for(let i=e.r1;i<=e.r2;i++){let s=this.rowModel.getRow(i);s&&!s.kind&&r.push(t.map(a=>this.copyCell(a.def,s.data,n)))}return r}copyCell(e,t,n){return this.copyAllowed(e,t)?pn(e,j(e,t),n):""}copyAllowed(e,t){let n=e.copyable;if(typeof n!="function")return n!==!1;try{return n({value:j(e,t),row:t,column:e})!==!1}catch{return!1}}cutToClipboard(){let e=this.copyToClipboard(!1);return e&&this.clearCells(!0),e}copyText(e,t=!1){let n=this.rowModel;if(!(n instanceof ut))return this.selectionTSV(e,t);let r=n.withoutLoading(()=>this.selectionTSV(e,t)),i=t?0:n.withoutLoading(()=>this.unloadedInRanges());return i&&G(`copy: ${i} row${i>1?"s":""} of the range ${i>1?"are":"is"} not loaded and ${i>1?"were":"was"} not copied`),r}copyToClipboard(e,t=!1){var r,i,s;let n=this.copyText(e,t);if(n&&typeof navigator!="undefined"&&((r=navigator.clipboard)!=null&&r.writeText))try{(s=(i=navigator.clipboard.writeText(n))==null?void 0:i.catch)==null||s.call(i,()=>{})}catch{}return n}unloadedInRanges(){var t;let e=new Set;for(let n of this.allRangeBounds())for(let r=n.r1;r<=n.r2;r++)((t=this.rowModel.getRow(r))==null?void 0:t.kind)==="loading"&&e.add(r);return e.size}pasteText(e){var b;let t=Zr(e),n={changed:0,skipped:0};if(!t.length||(t.length>1||t[0].length>1)&&!this.allow("clipboard"))return n;let r=this.columns.displayed(),i=this.rowModel.getRowCount(),s=this.rangeBounds(),a=this.store.state.focus,l=a&&this.columns.getColumn(a.colId),c,d;if(s)c=s.r1,d=s.c1;else if(a&&l&&!B(l.id))c=a.rowIndex,d=l.index;else return n;let u=[],f=t.length===1&&t[0].length===1,p=f&&s?s.r2-s.r1+1:t.length,m=f&&s?s.c2-s.c1+1:Math.max(...t.map(g=>g.length));for(let g=c,h=0;g<i&&h<p;g++){let w=this.rowModel.getRow(g);if(w.kind){f&&s&&h++;continue}let y=h++;for(let v=0;v<m;v++){let k=r[d+v];if(!k)break;if(B(k.id))continue;let x=f&&s?t[0][0]:(b=t[y])==null?void 0:b[v];if(x===void 0)continue;let S=k.def;if(!S.field||!this.cellEditable(S,w.data,g)){n.skipped++;continue}let E=w.data[S.field],A=this.acceptText(S,w.data,x,E);if(!A.ok){n.skipped++;continue}this.writeCell(u,w.data,S.field,k.id,g,A.value)&&n.changed++}}return this.endCellTx(u),this.events.emit("paste",{...n}),n}acceptText(e,t,n,r){var a;let i,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:[],c=n.trim().toLowerCase(),d=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()===c||((f=u.label)!=null?f:"").toLowerCase()===c});if(!d||d.disabled)return{ok:!1};i=d.value}else if(e.formulas&&Ve(n.trim()))i=n.trim();else{let l=gn(e,n,r);if(!l.ok)return l;i=l.value}return this.cellError(e,t,i)!==null?{ok:!1}:{ok:!0,value:i}}cellError(e,t,n){let r=this.store.state.locale;if(e.required&&_(n))return r.required;if(e.unique&&e.field&&!_(n)){let i=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!_(l)&&(l instanceof Date?l.getTime():String(l))===i}))return r.duplicate}if(e.validate){let i;try{i=e.validate(n,t)}catch{i=r.invalidValue}if(i!==!0)return typeof i=="string"&&i?i: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 i=this.rowModel.idOf(n),s=this.rowModel.indexOfId(i);for(let a of t){if(!this.cellEditable(a.def,n,s<0?r: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}sortBlocks(e){if(!this.sortWithin||!this.paid)return null;if(this.pivotCfg||this.options.treeData||this.groupBy.length)return G("sortWithinMerges is ignored while rows are grouped, pivoted or shown as a tree"),null;let t=new Set(e.map(n=>n.colId));return this.columns.displayed().filter(n=>n.def.merge&&!n.def.rowSpan&&!B(n.id)&&!t.has(n.id)).map(n=>n.def)}setSortWithinMerges(e){let t=!!e;if(t!==this.sortWithin){if(this.sortWithin=t,this.rowModel.server){t&&G("sortWithinMerges is ignored with a datasource: the server sorts the rows");return}this.rowModel.invalidate(),this.updateRows(),this.renderer.invalidate({rows:!0})}}mergeSpans(){var s;if(this.rowModel.server||!this.columns.displayed().some(a=>a.def.merge||a.def.rowSpan)||!this.allow("merge"))return os;let e=this.rowModel.rows(),t=this.editVersion*1e6+this.columns.displayed().length,n=this.columns.getColumn(ae)?this.selectionBlocks():null;if(this.spanCache&&this.spanCache.rows===e&&this.spanCache.ver===t&&this.spanCache.sel===n)return this.spanCache.spans;let r=new Map,i=this.columns.displayed().filter(a=>a.def.merge||a.def.rowSpan);if(i.length&&!e.some(a=>a.kind)){let a=e.map(l=>l.data);for(let l of i)r.set(l.id,rt(a,l.def));if(n){let l=e.length,c=new Int32Array(l),d=new Int32Array(l);for(let u=0;u<l;u++){let f=(s=n.index.get(e[u].id))!=null?s:-1;c[u]=f<0?u:Math.max(0,u-(f-n.spans.start[f])),d[u]=f<0?u:Math.min(l-1,u+(n.spans.end[f]-f))}r.set(ae,{start:c,end:d})}}return this.spanCache={rows:e,ver:t,sel:n,spans:r},r}validMergeSelection(e){return e==null||e==="rows"?"rows":typeof e=="number"&&Number.isInteger(e)&&e>=1?e:(G("mergeSelection must be 'rows' or a whole number from 1; one checkbox per row is used"),"rows")}setMergeSelection(e){let t=this.validMergeSelection(e);t!==this.mergeSel&&(this.mergeSel=t,this.renderer.invalidate({rows:!0}))}getMergeSelection(){return this.mergeSel}mergeLevelColumns(){return this.columns.displayed().filter(e=>e.def.merge&&!e.def.rowSpan&&!B(e.id))}mergeSelectionLevel(){if(this.mergeSel==="rows")return 0;if(!this.options.rowSelection)return G("mergeSelection needs rowSelection 'multiple' or 'single'"),0;if(!this.paid)return 0;if(this.rowModel.server||this.pivotCfg||this.options.treeData||this.groupBy.length)return G("mergeSelection is ignored while rows are grouped, pivoted, shown as a tree or loaded from a datasource: one checkbox per row"),0;let e=this.mergeLevelColumns().length;return e?this.mergeSel>e?(G(`mergeSelection: level ${this.mergeSel} asked for, but only ${e} merge column${e>1?"s are":" is"} shown; level ${e} is used`),e):this.mergeSel:0}selectionBlocks(){let e=this.mergeSelectionLevel();if(!e)return null;let t=this.rowModel.dataRows(),n=this.rowModel.rows(),r=this.mergeLevelColumns().slice(0,e),i=`${e}|${this.editVersion}|${r.map(l=>l.id).join("")}`,s=this.selBlockCache;if(s&&s.rows===t&&s.disp===n&&s.key===i)return s.blocks;let a=null;if(!n.some(l=>l.kind)){let l=t.map(c=>c.data);a={level:e,cols:r,spans:co(r.map(c=>rt(l,c.def)),t.length),index:new Map(t.map((c,d)=>[c.id,d]))}}return this.selBlockCache={rows:t,disp:n,key:i,blocks:a},a}blockSelection(e){let t=this.selectionBlocks(),n=t&&this.rowModel.getRow(e),r=n?t.index.get(n.id):void 0;if(!t||r===void 0)return null;let i=this.store.state.selected,s=this.blockStateCache;(!s||s.sel!==i||s.blocks!==t||s.ver!==this.editVersion)&&(s=this.blockStateCache={sel:i,blocks:t,ver:this.editVersion,map:new Map});let a=t.spans.start[r],l=s.map.get(a);if(l===void 0){let c=this.rowModel.dataRows(),d=0,u=0;for(let f=a;f<=t.spans.end[a];f++)this.rowSelectable(c[f].data)&&(d++,i.has(c[f].id)&&u++);l=d?u===0?"none":u===d?"all":"some":"off",s.map.set(a,l)}return l}blockIds(e,t){let n=this.rowModel.dataRows(),r=[];for(let i=e;i<=t;i++)this.rowSelectable(n[i].data)&&r.push(n[i].id);return r}selectBlockFromClick(e,t,n,r){let i=this.options.rowSelection,s=e.index.get(this.rowModel.getRow(t).id);if(s===void 0)return;let{start:a,end:l}=e.spans,c=a[s],d=l[s],u=this.blockIds(c,d);if(!u.length)return;let f=this.store.state.selected,p=this.rowModel.dataRows()[c].id;if(i==="single"){let b=u.every(g=>f.has(g));this.setSelected(n&&b?new Set:new Set(u),p);return}let m=this.store.state.anchorId==null?void 0:e.index.get(this.store.state.anchorId);if(r&&m!==void 0){let b=n?new Set(f):new Set;for(let g of this.blockIds(Math.min(a[m],c),Math.max(l[m],d)))b.add(g);this.setSelected(b);return}if(n){let b=new Set(f),g=u.every(h=>b.has(h));for(let h of u)g?b.delete(h):b.add(h);this.setSelected(b,p);return}this.setSelected(new Set(u),p)}selectedGroups(e=!1){var s;let t=this.selectionBlocks(),n=this.store.state.selected;if(!t||!n.size)return[];let r=this.rowModel.dataRows(),i=[];for(let a=0;a<r.length;a=t.spans.end[a]+1){let l=[],c=!1;for(let u=a;u<=t.spans.end[a];u++){let f=n.has(r[u].id);c||(c=f),(f||e)&&l.push(r[u].data)}if(!c)continue;let d={};for(let u of t.cols)d[(s=u.def.field)!=null?s:u.id]=j(u.def,r[a].data);i.push({level:t.level,values:d,rows:l})}return i}rangeAggregates(){let e=this.allRangeBounds();if(!e.length||!this.paid)return null;let t=this.columns.displayed(),n=[JSON.stringify(e),this.rowModel.rows(),this.editVersion,...t.map(l=>l.def)],r=this.aggMemo;if(r&&r.key.length===n.length&&r.key.every((l,c)=>l===n[c]))return r.value&&{...r.value};let i={cells:0,count:0,numbers:0,sum:0,min:1/0,max:-1/0},s=e.length>1?new Set:null,a=t.length;for(let l of e){let c=t.slice(l.c1,l.c2+1).filter(d=>!B(d.id));for(let d=l.r1;d<=l.r2;d++){let u=this.rowModel.getRow(d);if(!u||u.kind)continue;let f=u.data;for(let p of c){if(s){let b=d*a+p.index;if(s.has(b))continue;s.add(b)}i.cells++;let m=j(p.def,f);if(!_(m)&&(i.count++,typeof m=="number"||p.def.type==="number"&&!Number.isNaN(Number(m)))){let b=Number(m);i.numbers++,i.sum+=b,b<i.min&&(i.min=b),b>i.max&&(i.max=b)}}}}return this.aggMemo={key:n,value:i},{...i}}fillRange(e){var m;if(!this.allow("fill"))return;let t=(m=this.rangeBounds())!=null?m:(()=>{let b=this.store.state.focus,g=b&&this.columns.getColumn(b.colId);return b&&g&&!B(g.id)?{r1:b.rowIndex,r2:b.rowIndex,c1:g.index,c2:g.index}:null})(),n=this.columns.getColumn(e.start.colId),r=this.columns.getColumn(e.end.colId);if(!t||!n||!r)return;let i=Et({start:{rowIndex:e.start.rowIndex,colIndex:n.index},end:{rowIndex:e.end.rowIndex,colIndex:r.index}}),s=this.rowModel.getRowCount();i.r1=Math.max(0,i.r1),i.r2=Math.min(s-1,i.r2);let a=this.columns.displayed(),l=[],c=(b,g,h)=>{let w=a[g],y=this.rowModel.getRow(b),v=w==null?void 0:w.def;!y||y.kind||!(v!=null&&v.field)||B(w.id)||!this.cellEditable(v,y.data,b)||this.cellError(v,y.data,h)===null&&this.writeCell(l,y.data,v.field,w.id,b,h)},d=(b,g)=>j(a[g].def,this.rowModel.getRow(b).data),u=b=>{let g=this.rowModel.getRow(b);return!!g&&!g.kind},f=(b,g,h)=>{let w=[];for(let y=b;y<=g;y++)h(y)&&w.push(y);return w},p=b=>!!a[b]&&!B(a[b].id);if(i.r1<t.r1||i.r2>t.r2){let b=f(t.r2+1,i.r2,u),g=f(i.r1,t.r1-1,u).reverse(),h=f(t.r1,t.r2,u);for(let w=t.c1;w<=t.c2;w++){let y=h.map(v=>d(v,w));Mt(y,b.length).forEach((v,k)=>c(b[k],w,v)),Mt([...y].reverse(),g.length).forEach((v,k)=>c(g[k],w,v))}}else if(i.c1<t.c1||i.c2>t.c2){let b=f(t.c2+1,i.c2,p),g=f(i.c1,t.c1-1,p).reverse(),h=f(t.c1,t.c2,p);for(let w of f(t.r1,t.r2,u)){let y=h.map(v=>d(w,v));Mt(y,b.length).forEach((v,k)=>c(w,b[k],v)),Mt([...y].reverse(),g.length).forEach((v,k)=>c(w,g[k],v))}}else return;this.endCellTx(l),this.setRange({start:{rowIndex:i.r1,colId:a[i.c1].id},end:{rowIndex:i.r2,colId:a[i.c2].id}})}setPinnedRows(e){e.top&&(this.pinnedRows.top=Ee(e.top)),e.bottom&&(this.pinnedRows.bottom=Ee(e.bottom)),this.renderer.invalidate({rows:!0})}writeCell(e,t,n,r,i,s){let a=t[n];return Object.is(a,s)||this.veto("beforeCellChange",{row:t,rowIndex:i,colId:r,oldValue:a,newValue:s})?!1:(this.tracker.beforeChange(t),t[n]=s,e.push({row:t,field:n,colId:r,rowIndex:i,oldValue:a,newValue:s}),!0)}endCellTx(e){if(!e.length)return;let t=(n,r)=>{let i=n.map(s=>{let a=s.row[s.field];return s.row[s.field]=s[r],{row:s.row,rowIndex:this.rowModel.indexOfId(this.rowModel.idOf(s.row)),colId:s.colId,oldValue:a,newValue:s[r]}});this.afterDataEdit();for(let s of i)this.events.emit("cellValueChanged",s)};this.history.push({undo:()=>t([...e].reverse(),"oldValue"),redo:()=>t(e,"newValue")}),this.afterDataEdit();for(let n of e)this.events.emit("cellValueChanged",{row:n.row,rowIndex:n.rowIndex,colId:n.colId,oldValue:n.oldValue,newValue:n.newValue})}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),i=(a=this.columns.getColumn(t))==null?void 0:a.def;if(!r||!(i!=null&&i.field))return;let s=[];this.writeCell(s,r.data,i.field,t,e,n),this.endCellTx(s)}clearCells(e=!1){var l,c;let t=this.columns.displayed(),n=this.allRangeBounds();if(e&&!this.rangesStack(n)){let d=this.rangeBounds();n=d?[d]:[]}let r=this.store.state.focus,i=r?(l=this.columns.getColumn(r.colId))==null?void 0:l.index:void 0,s=n.length?n:r&&i!==void 0?[{r1:r.rowIndex,r2:r.rowIndex,c1:i,c2:i}]:[];if(!s.length)return;let a=[];for(let d of s)for(let u=d.r1;u<=d.r2;u++){let f=this.rowModel.getRow(u);for(let p=d.c1;p<=d.c2;p++){let m=(c=t[p])==null?void 0:c.def;f&&!f.kind&&(m!=null&&m.field)&&this.cellEditable(m,f.data,u)&&(!e||this.copyAllowed(m,f.data))&&this.writeCell(a,f.data,m.field,t[p].id,u,null)}}this.endCellTx(a)}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 r=this.rowModel.getRowCount(),i=this.store.state.focus;i&&i.rowIndex>=r&&this.store.set({focus:r?{...i,rowIndex:r-1}:null})}addRows(e,t,n=!0){if(this.clientOnly("addRows"))return[];let r=Ee(Array.isArray(e)?e:[]);if(!r.length)return[];let i=[...this.store.state.data],s=t===void 0?i.length:Math.max(0,Math.min(i.length,t));i.splice(s,0,...r);for(let a of r)this.tracker.created.add(a);return this.replaceData(i),n&&this.history.push({undo:()=>this.removeRows(r,!1),redo:()=>this.addRows(r,s,!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=>c=>l.has(c))(new Set(Array.isArray(e)?e.flatMap(l=>{var c;return(c=It(l))!=null?c:[l]}):[])),i=[];if(n.forEach((l,c)=>{let d=!1;try{d=!!r(l)}catch{d=!1}d&&i.push({row:l,index:c})}),!i.length)return[];let s=new Set(i.map(l=>l.row)),a=new Set(i.filter(l=>this.tracker.created.has(l.row)).map(l=>l.row));for(let{row:l,index:c}of i)a.has(l)?this.tracker.created.delete(l):this.tracker.deleted.set(l,c);return this.replaceData(n.filter(l=>!s.has(l))),t&&this.history.push({undo:()=>{let l=[...this.store.state.data];for(let{row:c,index:d}of i)l.splice(Math.min(d,l.length),0,c),this.tracker.deleted.delete(c),a.has(c)&&this.tracker.created.add(c);this.replaceData(l)},redo:()=>this.removeRows([...s],!1)}),this.events.emit("rowsRemoved",{rows:i.map(l=>l.row)}),i.map(l=>l.row)}trackedFields(){let e=[],t=n=>{for(let r of n)r.children?t(r.children):r.def.field&&!B(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 i of this.tracker.diff(n,e.map(s=>s.field)))t.push({row:n,colId:e.find(s=>s.field===i).colId,oldValue:r[i],newValue:n[i]});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(e){e&&e.rows instanceof Map?this.tracker.commit(e.rows,Array.isArray(e.deleted)?e.deleted:[]):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=R("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 i=this.columns.getNode(r);!i||i.children||i.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 u,f;let t=(e?e.map(p=>this.columns.getColumn(p)):this.columns.displayed()).filter(p=>!!p&&Vt(p.def)),{first:n,last:r}=this.renderer.renderedRange(),i=this.store.state.locale.code,s=this.getCellPadding()*2,a=s+6+14,l=28,c=this.store.state.filters,d=s;for(let p of t){let m=this.renderer.measureText((f=(u=p.def.header)!=null?u:p.def.field)!=null?f:"",!0)+a+(c[p.id]?l:0),b=ne(p.def,i);for(let h=n;h<=r;h++){let w=this.rowModel.getRow(h);w&&(m=Math.max(m,this.renderer.measureText(b(j(p.def,w.data)),!1)+d))}let g=this.columns.setWidth(p.id,Math.ceil(m));this.events.emit("columnResize",{colId:p.id,width:g})}this.layoutChanged()}resetColumns(){this.columns.reset(),this.columnsChanged()}setSort(e){let t=this.checkSort(e);t&&(this.store.set({sort:t}),this.events.emit("sortChange",{sort:[...t]}))}checkSort(e){let t=e.filter(n=>{let r=this.columns.getNode(n.colId);return!r||r.children?(G(`setSort: unknown column "${n.colId}"`),!1):n.dir==="asc"||n.dir==="desc"});return this.veto("beforeSort",{sort:t.map(n=>({...n}))})?null:t}toggleSort(e,t){let n=this.store.state.sort,r=n.find(a=>a.colId===e),i=r?r.dir==="asc"?"desc":null:"asc",s;t?i?r?s=n.map(a=>a.colId===e?{colId:e,dir:i}:a):s=[...n,{colId:e,dir:i}]:s=n.filter(a=>a.colId!==e):s=i?[{colId:e,dir:i}]:[],this.setSort(s)}setFilter(e,t){let n=this.columns.getNode(e);if(!n||n.children){G(`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.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(c=>this.rowSelectable(c)).map(c=>this.rowModel.idOf(c));let t=(a=this.options.treeData)==null?void 0:a.getParentId;if(!t)return[];let n=new Map;for(let c of this.store.state.data){let d=null;try{d=t(c)}catch{d=null}if(d==null)continue;let u=String(d),f=n.get(u);f?f.push(c):n.set(u,[c])}let r=[],i=new Set([e.id]),s=[e.id];for(;s.length;)for(let c of(l=n.get(s.shift()))!=null?l:[]){let d=this.rowModel.idOf(c);i.has(d)||(i.add(d),s.push(d),this.rowSelectable(c)&&r.push(d))}return r}groupSelection(e){let t=this.groupMemberIds(e),n=this.store.state.selected,r=t.filter(i=>n.has(i)).length;return r===0?"none":r===t.length?"all":"some"}toggleGroupSelection(e){if(this.options.rowSelection!=="multiple")return;let t=this.groupMemberIds(e),n=new Set(this.store.state.selected),r=t.length>0&&t.every(i=>n.has(i));for(let i of t)r?n.delete(i):n.add(i);this.setSelected(n)}selectFromClick(e,t,n){var l,c;let r=this.options.rowSelection;if(!r||e<0||e>=this.rowModel.getRowCount())return;let i=this.rowModel.getRow(e);if(i.kind)return;let s=this.selectionBlocks();if(s){this.selectBlockFromClick(s,e,t,n);return}if(!this.rowSelectable(i.data))return;let a=Xi({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 a.selected){if(this.store.state.selected.has(d))continue;let u=this.rowModel.indexOfId(d),f=u>=0?this.rowModel.getRow(u):null;f&&(f.kind||!this.rowSelectable(f.data))&&a.selected.delete(d)}if(r==="multiple"&&this.options.groupSelectsChildren&&this.options.treeData&&i.hasChildren){let d=a.selected.has(i.id);for(let u of this.groupMemberIds(i))d?a.selected.add(u):a.selected.delete(u)}this.setSelected(a.selected,(c=(l=this.rowModel.getRow(a.anchorIndex))==null?void 0:l.id)!=null?c:null)}anchorIndex(){let e=this.store.state.anchorId;if(e==null)return null;let t=this.rowModel.indexOfId(e);return t<0?null:t}selectableIds(){let e=this.rowModel.dataRows(),t=this.options.isRowSelectable,n=this.selectableCache;if(n&&n.rows===e&&n.fn===t&&n.ver===this.editVersion)return n.ids;let r=new Set(this.selectableRows().map(i=>i.id));return this.selectableCache={rows:e,fn:t,ver:this.editVersion,ids:r},r}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(i=>t.has(i.id)),r=new Set(t);for(let i of e)n?r.delete(i.id):r.add(i.id);this.setSelected(r)}selectedRows(){let e=this.store.state.selected;return e.size?this.sourceRowsOf(this.rowModel.allNodes().filter(t=>e.has(t.id)).map(t=>t.data)):[]}orderedDataRows(){var e,t,n;return(n=(t=(e=this.rowModel).orderedDataRows)==null?void 0:t.call(e))!=null?n:this.rowModel.dataRows()}shownSelectedRows(){let e=this.store.state.selected;return e.size?this.orderedDataRows().filter(t=>e.has(t.id)).map(t=>t.data):[]}withSelect(e){let t=[],n=this.options.rowNumbers;if(n){let r=typeof n=="object"?n:{};t.push(xr(typeof r.width=="number"&&r.width>0?r.width:void 0,typeof r.header=="string"?r.header:void 0))}return this.options.rowDrag&&t.push(vr),this.options.rowSelection&&t.push(br),[...t,...e]}setData(e,t){if(this.clientOnly("setData"))return;if(!Array.isArray(e)){G("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();let n=Ee(e);this.store.set({data:n===this.store.state.data?[...n]:n}),t!=null&&t.scrollToTop&&this.renderer.setScroll({top:0,left:0});let r=this.store.state.selected;if(r.size)if(this.options.getRowId){let a=new Set(this.rowModel.allNodes().map(c=>c.id)),l=new Set([...r].filter(c=>a.has(c)));l.size!==r.size&&this.setSelected(l)}else this.setSelected(new Set,null);let i=this.rowModel.getRowCount(),s=this.store.state.focus;s&&s.rowIndex>=i&&this.store.set({focus:i?{...s,rowIndex:i-1}:null})}setColumns(e){var r;if(!Array.isArray(e)){G("setColumns: columns must be an array");return}if(ft(e,this.sourceSnapshot)){this.sourceDefs=e;return}if(this.menu.close(),this.sourceDefs=e,this.sourceSnapshot=Me(e),this.pivotCfg){this.rebuildPivot();return}this.columns.updateDefs(this.withSelect(e)),this.bindFormulas();let t=i=>!!this.columns.getNode(i),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(i=>t(i.colId)),filters:Object.fromEntries(Object.entries(this.store.state.filters).filter(([i])=>t(i))),focus:this.store.state.focus&&t(this.store.state.focus.colId)?this.store.state.focus:null}),this.columnsChanged()}closePopups(){var n,r;let t=!!((r=(n=this.renderer.root.getRootNode().activeElement)!=null?n:document.activeElement)!=null&&r.closest(".fg-menu"));this.menu.close(),this.chooser.close(),this.contextMenu.close(),this.filterBuilder.close(),this.formatDialog.close(),t&&this.renderer.gridEl.focus({preventScroll:!0})}onChange(e){var i,s,a,l;let t=(...c)=>c.some(d=>e.includes(d));t("sort","filters","quickFilter","advancedFilter")&&this.saveEditBeforeReload(),this.pivotCfg&&t("data","locale")&&this.rebuildPivot(!1),this.rollupOn&&t("data")&&this.rebuildRollup(),t("locale","theme")&&this.closePopups(),t("locale")&&(this.finder.relabel(),(i=this.sideBar)==null||i.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")&&((s=this.summaryOpts)==null?void 0:s.scope)==="selected")&&this.refreshSummary(),t("locale")&&((a=this.groupPanel)==null||a.refresh()),t("filters")&&((l=this.sideBar)==null||l.refresh()),t("theme")&&this.renderer.applyTheme();let r=t("sort","filters","quickFilter","advancedFilter","locale","data");!r&&t("selected")&&this.renderer.selectionChanged(),this.renderer.invalidate({header:r,rows:t("data","sort","filters","quickFilter","advancedFilter","locale")})}createApi(){let e=t=>((...n)=>{if(this.destroyed){G("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),setSortWithinMerges:e(t=>this.setSortWithinMerges(t)),getSortWithinMerges:e(()=>this.sortWithin),setMergeSelection:e(t=>this.setMergeSelection(t)),getMergeSelection:e(()=>this.getMergeSelection()),getSelectedGroups:e(()=>this.selectedGroups()),getSelectedGroupsAllRows:e(()=>this.selectedGroups(!0)),showOverlay:e(t=>{this.forcedOverlay=t==="loading"||t==="noRows"?t:null,this.renderer.invalidate()}),getXlsxSheet:e(t=>{var n;return this.allow("excel")?Ao(this,t):{name:(n=t==null?void 0:t.sheetName)!=null?n:"Sheet1",rows:[]}}),print:e(t=>wi(So(this,t))),getPrintHtml:e(t=>So(this,t)),getPdf:e(t=>this.allow("pdf")?yo(Dn(this,t),Cn,{scale:t==null?void 0:t.resolution,quality:t==null?void 0:t.quality}):null),exportPdf:e((t="export.pdf",n)=>{if(!this.allow("pdf"))return;let r=yo(Dn(this,n),Cn,{scale:n==null?void 0:n.resolution,quality:n==null?void 0:n.quality});r?Je(t,[r],"application/pdf"):G("exportPdf: this browser cannot draw on a canvas")}),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.allow("advancedFilter")&&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)),flushAsyncTransactions:e(()=>this.flushAsyncTransactions()),setConditionalFormats:e(t=>this.setConditionalFormats(t)),getConditionalFormats:e(()=>this.getConditionalFormats()),openConditionalFormats:e(t=>{this.allow("conditional")&&this.formatDialog.open(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:mt(t)})),setFont:e(t=>this.setFont(t)),setCellPadding:e(t=>this.setCellPadding(t)),getCellPadding:e(()=>this.getCellPadding()),setRollup:e(t=>this.setRollup(t)),getRollup:e(()=>this.getRollup()),setColumnAggFunc:e((t,n)=>this.setColumnAggFunc(t,n)),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;this.allow("sideBar")&&((r=this.sideBar)==null||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)),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(t=>this.commitChanges(t)),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.allow("find")?this.finder.find(t):0),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.allow("charts")?this.charts.create(t):{el:R("div","fg-chart-body"),setType:()=>{},update:()=>{},destroy:()=>{}}),getCsv:e(t=>ko(this,t)),getJson:e(t=>Mo(this,t)),exportJson:e((t="export.json",n)=>Je(t,[Mo(this,n)],"application/json;charset=utf-8")),exportCsv:e((t="export.csv",n)=>Je(t,["\uFEFF",ko(this,n)],"text/csv;charset=utf-8")),getXlsx:e(t=>this.allow("excel")?Eo(this,t):new Uint8Array(0)),exportXlsx:e((t="export.xlsx",n)=>{this.allow("excel")&&Je(t,[Eo(this,n)],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")}),importFile:e((t,n)=>bi(this,t,n)),on:e((t,n)=>this.events.on(t,n)),destroy:()=>this.destroy()}}destroy(){if(!this.destroyed){this.destroyed=!0,nn.delete(this.renderer.root),clearTimeout(this.flashTimer),clearTimeout(this.txTimer);for(let e of this.disposers)e();this.renderer.destroy(),this.events.clear()}}};function rs(o,e){return new Wo(o,e).api}function jo(o){let e=(Array.isArray(o)?o:[]).filter(t=>t&&t.grid&&typeof t.grid.getXlsxSheet=="function");return e.length?e.some(t=>{var n;return((n=_r(t.grid))==null?void 0:n.allow("workbook"))===!1})?new Uint8Array(0):_e(e.map((t,n)=>{var r,i,s;return t.grid.getXlsxSheet({...t.options,sheetName:(s=(i=t.sheetName)!=null?i:(r=t.options)==null?void 0:r.sheetName)!=null?s:`Sheet${n+1}`})})):(G("buildWorkbook: no grids given; the file has one empty sheet"),_e([{name:"Sheet1",rows:[]}]))}function is(o,e){let t=jo(e);t.length&&Je(o||"export.xlsx",[t],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")}var Fl=o=>typeof o=="function"?o():o!=null?o:{};async function ss(o,e,t,n){var c;let r=o,i=o.split(/[?#]/)[0],s={method:e,credentials:(c=n.credentials)!=null?c:"same-origin",headers:{Accept:"application/json",...Fl(n.headers)}};if(e==="GET"){let d=new URLSearchParams;for(let[u,f]of Object.entries(t))f!==void 0&&d.set(u,typeof f=="string"?f:JSON.stringify(f));r+=(o.includes("?")?"&":"?")+d.toString()}else s.headers["Content-Type"]="application/json",s.body=JSON.stringify(t);let a=await fetch(r,s);if(!a.ok)throw new Error(`HTTP ${a.status} from ${i}`);let l=await a.text();if(!l)return null;try{return JSON.parse(l)}catch{throw new Error(`HTTP ${a.status} from ${i}: the response is not JSON`)}}function Dl(o){if(Array.isArray(o))return{rows:o};let e=o!=null?o:{},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(r=>typeof r=="number");return{rows:(t!=null?t:[]).filter(r=>r!==null&&typeof r=="object"),total:n}}function _o(o,e={}){return{async getRows(t){var s,a,l,c,d;let n=Math.max(1,t.end-t.start),r={start:t.start,end:t.end,page:Math.floor(t.start/n),size:n,sort:t.sort,filters:t.filters,quickFilter:t.quickFilter,advancedFilter:(s=t.advancedFilter)!=null?s:void 0,groupBy:t.groupBy,groupKeys:t.groupKeys,...(l=(a=e.params)==null?void 0:a.call(e))!=null?l:{}},i=await ss(o,(c=e.method)!=null?c:"POST",r,e);return((d=e.transform)!=null?d:Dl)(i)}}}var Uo=new WeakMap;function as(o,e,t={}){let n=Uo.get(o);if(n)return n;if(!o.hasChanges())return Promise.resolve(null);let{created:r,updated:i,deleted:s}=o.getModifiedRows(),a=new Map([...r,...i].map(c=>[c,{...c}])),l=(async()=>{var d,u;let c=await ss(e,"POST",{created:r,updated:i,deleted:s,...(u=(d=t.params)==null?void 0:d.call(t))!=null?u:{}},t);return o.commitChanges({rows:a,deleted:s}),c})().finally(()=>Uo.delete(o));return Uo.set(o,l),l}var Ko=new WeakMap;async function ls(o,e,t={}){var i,s;let n=((i=Ko.get(o))!=null?i:0)+1;Ko.set(o,n);let{rows:r}=await _o(e,t).getRows({start:0,end:(s=t.maxRows)!=null?s:1e4,sort:[],filters:{},quickFilter:""});return Ko.get(o)===n&&o.setData(r),r}function ds(o=document){var n,r;let e=(n=o.querySelector('meta[name="_csrf"]'))==null?void 0:n.content,t=((r=o.querySelector('meta[name="_csrf_header"]'))==null?void 0:r.content)||"X-CSRF-TOKEN";return e?{[t]:e}:{}}var cs=["add","update","remove","upsert"];function Xo(o){let e=o;if(typeof e=="string"){if(!e.trim())return null;e=JSON.parse(e)}if(Array.isArray(e))return{upsert:e.filter(n=>n&&typeof n=="object")};if(!e||typeof e!="object")return null;let t=e;return cs.some(n=>Array.isArray(t[n]))?t:Array.isArray(t.rows)?{rows:t.rows}:null}function us(o,e){let t=e!=null?e:{},n="connecting",r=!1,i=!1,s=[],a=null,l=0,c=0,d=g=>{var h;if(n!==g){n=g;try{(h=t.onStatus)==null||h.call(t,g)}catch{}}},u=g=>{"rows"in g&&Array.isArray(g.rows)&&!cs.some(h=>h in g)?(o.flushAsyncTransactions(),o.setData(g.rows)):t.immediate?o.applyTransaction(g):o.applyTransactionAsync(g)},f=g=>{if(r)return;let h;try{h=t.parse?t.parse(g):Xo(g),Array.isArray(h)&&(h={upsert:h})}catch(w){t.onError?t.onError(w):G("connectLive: a message could not be read");return}!h||typeof h!="object"||(i?s.push(h):u(h))},p=()=>{if(r||t.reconnect===!1){d("closed");return}let g=typeof t.maxDelay=="number"&&t.maxDelay>0?t.maxDelay:3e4,h=Math.min(g,500*2**Math.min(c++,10))*(.8+Math.random()*.4);d("connecting"),l=window.setTimeout(m,h)},m=()=>{if(r)return;if(l=0,t.poll){b();return}let g=t.url;if(!g){G("connectLive: give a url or a poll function"),d("error");return}d(i?"paused":"connecting");try{if(/^wss?:/i.test(g)){if(typeof WebSocket=="undefined")throw new Error("no WebSocket");let h=new WebSocket(g,t.protocols);a=h,h.onopen=()=>{c=0,d(i?"paused":"open")},h.onmessage=w=>f(w.data),h.onerror=()=>d("error"),h.onclose=()=>{a===h&&(a=null),r||p()}}else{if(typeof EventSource=="undefined")throw new Error("no EventSource");let h=new EventSource(g,{withCredentials:!!t.withCredentials});a=h,h.onopen=()=>{c=0,d(i?"paused":"open")},h.addEventListener(t.event||"message",w=>f(w.data)),h.onerror=()=>{h.readyState===2?(a===h&&(a=null),r||p()):d("connecting")}}}catch{d("error"),p()}},b=async()=>{if(!r)try{let g=await t.poll();if(r)return;c=0,d(i?"paused":"open"),f(g);let h=typeof t.interval=="number"&&t.interval>0?t.interval:2e3;l=window.setTimeout(b,h)}catch{if(r)return;d("error"),p()}};return m(),{get status(){return n},pause(){r||i||(i=!0,d("paused"))},resume(){if(r||!i)return;i=!1;let g=s;s=[];for(let h of g)u(h);d(a||t.poll?"open":"connecting")},close(){r||(r=!0,clearTimeout(l),a==null||a.close(),a=null,s=[],d("closed"))},send(g){let h=a;return!h||typeof h.send!="function"||h.readyState!==1?!1:(h.send(g),!0)}}}var fs={en:fe,ko:rr,"zh-CN":ir,"zh-TW":sr,ja:or,es:tr,fr:nr,de:er,vi:ar,th:lr,id:dr,ru:cr,"pt-BR":ur,it:fr};for(let o of Object.values(fs))Ot(o);return ys($l);})();
|