@freegridjs/core 1.0.0 → 1.1.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/dist/cdn/freegrid.esm.js +27 -14
- package/dist/cdn/freegrid.min.js +27 -14
- package/dist/index.d.ts +8 -6
- package/dist/index.js +576 -195
- package/dist/locales/de.d.ts +1 -1
- package/dist/locales/de.js +1 -0
- package/dist/locales/en.d.ts +1 -1
- package/dist/locales/en.js +1 -0
- package/dist/locales/es.d.ts +1 -1
- package/dist/locales/es.js +1 -0
- package/dist/locales/fr.d.ts +1 -1
- package/dist/locales/fr.js +1 -0
- package/dist/locales/id.d.ts +1 -1
- package/dist/locales/id.js +1 -0
- package/dist/locales/it.d.ts +1 -1
- package/dist/locales/it.js +1 -0
- package/dist/locales/ja.d.ts +1 -1
- package/dist/locales/ja.js +1 -0
- package/dist/locales/ko.d.ts +1 -1
- package/dist/locales/ko.js +1 -0
- package/dist/locales/pt-BR.d.ts +1 -1
- package/dist/locales/pt-BR.js +1 -0
- package/dist/locales/ru.d.ts +1 -1
- package/dist/locales/ru.js +1 -0
- package/dist/locales/th.d.ts +1 -1
- package/dist/locales/th.js +1 -0
- package/dist/locales/vi.d.ts +1 -1
- package/dist/locales/vi.js +1 -0
- package/dist/locales/zh-CN.d.ts +1 -1
- package/dist/locales/zh-CN.js +1 -0
- package/dist/locales/zh-TW.d.ts +1 -1
- package/dist/locales/zh-TW.js +1 -0
- package/dist/{types-D9gm8TyF.d.ts → types-BDvXVuCe.d.ts} +40 -9
- package/package.json +1 -1
package/dist/cdn/freegrid.esm.js
CHANGED
|
@@ -1,17 +1,30 @@
|
|
|
1
|
-
var Io={code:"en",noRows:"No rows to show",filter:"Filter",apply:"Apply",reset:"Reset",selectAll:"(Select all)",search:"Search\u2026",blanks:"(Blanks)",value:"Value",valueTo:"To",sortAsc:"Sort ascending",sortDesc:"Sort descending",clearSort:"Clear sort",pinLeft:"Pin left",pinRight:"Pin right",unpin:"Unpin",columnMenu:"Column menu",selectRow:"Select row",selectAllRows:"Select all rows",chooseColumns:"Choose columns",columns:"Columns",autosizeThis:"Autosize this column",autosizeAll:"Autosize all columns",resetColumns:"Reset columns",hideColumn:"Hide column",close:"Close",copy:"Copy",cut:"Cut",copyWithHeaders:"Copy with headers",paste:"Paste",pasteHint:"Clipboard access was blocked. Press Ctrl+V to paste.",required:"This field is required",invalidValue:"Invalid value",and:"And",or:"Or",advancedFilter:"Advanced filter",addCondition:"Add condition",duplicate:"This value is already used",undo:"Undo",redo:"Redo",deleteRows:"Delete selected rows",copyRows:"Copy selected rows",statusRows:"{n} rows",statusFiltered:"{shown} of {total} rows",statusSelected:"{n} selected",count:"Count",sum:"Sum",avg:"Average",min:"Min",max:"Max",findPlaceholder:"Find in grid",noMatches:"No matches",findNext:"Next match",findPrevious:"Previous match",groupPanelHint:"Drag a column header here to group rows",groupByThis:"Group by this column",ungroup:"Remove grouping",expandAll:"Expand all",collapseAll:"Collapse all",pagerRange:"{from}\u2013{to} of {total}",pageOf:"Page {page} of {pages}",pageSize:"Rows per page",firstPage:"First page",previousPage:"Previous page",nextPage:"Next page",lastPage:"Last page",loading:"Loading\u2026",loadFailed:"Could not load rows",filters:"Filters",clearFilters:"Clear all filters",exportCsv:"Export CSV",exportExcel:"Export Excel",pivot:"Pivot",pivotMode:"Pivot mode",pivotRows:"Row groups",pivotColumns:"Column labels",pivotValues:"Values",total:"Total",addColumn:"Add a column\u2026",chartBar:"Bar chart",chartStacked:"Stacked bar chart",chartLine:"Line chart",chartArea:"Area chart",chartPie:"Pie chart",chartDonut:"Donut chart",chartCombo:"Bar and line chart",chartScatter:"Scatter chart",freeBadge:"Free version",ops:{contains:"Contains",equals:"Equals",notEquals:"Does not equal",startsWith:"Starts with",endsWith:"Ends with",blank:"Blank",notBlank:"Not blank",eq:"Equals",ne:"Does not equal",lt:"Less than",lte:"Less than or equal",gt:"Greater than",gte:"Greater than or equal",between:"Between",before:"Before",after:"After"}},re=Io;var hn=new Set;function $(i){hn.has(i)||(hn.add(i),console.warn(`[FreeGrid] ${i}`))}var fe=new Map([["en",re]]);function Mt(i){fe.set(i.code,i)}function fn(i){let e=i.toLowerCase();for(let n of fe.keys())if(n.toLowerCase()===e)return n;let t=e.split("-")[0];if(t==="zh"){if(/-(tw|hk|mo|hant)(-|$)/.test(e)&&fe.has("zh-TW"))return"zh-TW";if(fe.has("zh-CN"))return"zh-CN"}for(let n of fe.keys())if(n.toLowerCase().split("-")[0]===t)return n}function Do(){return typeof navigator>"u"?[]:navigator.languages?.length?navigator.languages:navigator.language?[navigator.language]:[]}function Po(i){return{...re,...i,code:i.code??"en",ops:{...re.ops,...i.ops??{}}}}function ze(i,e=Do()){if(i&&typeof i=="object")return Po(i);if(typeof i=="string"){let t=fn(i);return t?fe.get(t):($(`locale "${i}" is not registered \u2014 import it from "@freegridjs/core/locales/${i}" and pass the pack (or call registerLocale). Falling back to "en".`),re)}for(let t of e){let n=fn(t);if(n)return fe.get(n)}return re}var Ao={code:"de",noRows:"Keine Zeilen vorhanden",filter:"Filter",apply:"Anwenden",reset:"Zur\xFCcksetzen",selectAll:"(Alle ausw\xE4hlen)",search:"Suchen\u2026",blanks:"(Leer)",value:"Wert",valueTo:"Bis",sortAsc:"Aufsteigend sortieren",sortDesc:"Absteigend sortieren",clearSort:"Sortierung aufheben",pinLeft:"Links fixieren",pinRight:"Rechts fixieren",unpin:"Fixierung l\xF6sen",columnMenu:"Spaltenmen\xFC",selectRow:"Zeile ausw\xE4hlen",selectAllRows:"Alle Zeilen ausw\xE4hlen",chooseColumns:"Spalten ausw\xE4hlen",columns:"Spalten",autosizeThis:"Diese Spalte automatisch anpassen",autosizeAll:"Alle Spalten automatisch anpassen",resetColumns:"Spalten zur\xFCcksetzen",hideColumn:"Spalte ausblenden",close:"Schlie\xDFen",copy:"Kopieren",cut:"Ausschneiden",copyWithHeaders:"Mit \xDCberschriften kopieren",paste:"Einf\xFCgen",pasteHint:"Der Browser hat die Zwischenablage blockiert. Dr\xFCcken Sie Ctrl+V zum Einf\xFCgen.",required:"Dieses Feld ist erforderlich",invalidValue:"Ung\xFCltiger Wert",and:"Und",or:"Oder",advancedFilter:"Erweiterter Filter",addCondition:"Bedingung hinzuf\xFCgen",duplicate:"Dieser Wert wird bereits verwendet",undo:"R\xFCckg\xE4ngig",redo:"Wiederholen",deleteRows:"Ausgew\xE4hlte Zeilen l\xF6schen",copyRows:"Ausgew\xE4hlte Zeilen kopieren",statusRows:"{n} Zeilen",statusFiltered:"{shown} von {total} Zeilen",statusSelected:"{n} ausgew\xE4hlt",count:"Anzahl",sum:"Summe",avg:"Mittelwert",min:"Min",max:"Max",findPlaceholder:"Im Raster suchen",noMatches:"Keine Treffer",findNext:"N\xE4chster Treffer",findPrevious:"Vorheriger Treffer",groupPanelHint:"Spalten\xFCberschrift hierher ziehen, um zu gruppieren",groupByThis:"Nach dieser Spalte gruppieren",ungroup:"Gruppierung aufheben",expandAll:"Alle aufklappen",collapseAll:"Alle zuklappen",pagerRange:"{from}\u2013{to} von {total}",pageOf:"Seite {page} von {pages}",pageSize:"Zeilen pro Seite",firstPage:"Erste Seite",previousPage:"Vorherige Seite",nextPage:"N\xE4chste Seite",lastPage:"Letzte Seite",loading:"Wird geladen\u2026",loadFailed:"Zeilen konnten nicht geladen werden",filters:"Filter",clearFilters:"Alle Filter entfernen",exportCsv:"Als CSV exportieren",exportExcel:"Nach Excel exportieren",pivot:"Pivot",pivotMode:"Pivot-Modus",pivotRows:"Zeilengruppen",pivotColumns:"Spaltenbeschriftungen",pivotValues:"Werte",total:"Gesamt",addColumn:"Spalte hinzuf\xFCgen\u2026",chartBar:"Balkendiagramm",chartStacked:"Gestapelte Balken",chartLine:"Liniendiagramm",chartArea:"Fl\xE4chendiagramm",chartPie:"Kreisdiagramm",chartDonut:"Ringdiagramm",chartCombo:"Balken- und Liniendiagramm",chartScatter:"Streudiagramm",freeBadge:"Kostenlose Version",ops:{contains:"Enth\xE4lt",equals:"Gleich",notEquals:"Ungleich",startsWith:"Beginnt mit",endsWith:"Endet mit",blank:"Leer",notBlank:"Nicht leer",eq:"Gleich",ne:"Ungleich",lt:"Kleiner als",lte:"Kleiner oder gleich",gt:"Gr\xF6\xDFer als",gte:"Gr\xF6\xDFer oder gleich",between:"Zwischen",before:"Vor",after:"Nach"}},pn=Ao;var $o={code:"es",noRows:"No hay filas para mostrar",filter:"Filtro",apply:"Aplicar",reset:"Restablecer",selectAll:"(Seleccionar todo)",search:"Buscar\u2026",blanks:"(Vac\xEDos)",value:"Valor",valueTo:"Hasta",sortAsc:"Orden ascendente",sortDesc:"Orden descendente",clearSort:"Quitar orden",pinLeft:"Fijar a la izquierda",pinRight:"Fijar a la derecha",unpin:"Desfijar",columnMenu:"Men\xFA de columna",selectRow:"Seleccionar fila",selectAllRows:"Seleccionar todas las filas",chooseColumns:"Elegir columnas",columns:"Columnas",autosizeThis:"Ajustar esta columna",autosizeAll:"Ajustar todas las columnas",resetColumns:"Restablecer columnas",hideColumn:"Ocultar columna",close:"Cerrar",copy:"Copiar",cut:"Cortar",copyWithHeaders:"Copiar con encabezados",paste:"Pegar",pasteHint:"El navegador bloque\xF3 el portapapeles. Pulsa Ctrl+V para pegar.",required:"Este campo es obligatorio",invalidValue:"Valor no v\xE1lido",and:"Y",or:"O",advancedFilter:"Filtro avanzado",addCondition:"A\xF1adir condici\xF3n",duplicate:"Este valor ya est\xE1 en uso",undo:"Deshacer",redo:"Rehacer",deleteRows:"Eliminar filas seleccionadas",copyRows:"Copiar filas seleccionadas",statusRows:"{n} filas",statusFiltered:"{shown} de {total} filas",statusSelected:"{n} seleccionadas",count:"Recuento",sum:"Suma",avg:"Promedio",min:"M\xEDn.",max:"M\xE1x.",findPlaceholder:"Buscar en la tabla",noMatches:"Sin coincidencias",findNext:"Siguiente",findPrevious:"Anterior",groupPanelHint:"Arrastre aqu\xED un encabezado de columna para agrupar",groupByThis:"Agrupar por esta columna",ungroup:"Quitar agrupaci\xF3n",expandAll:"Expandir todo",collapseAll:"Contraer todo",pagerRange:"{from}\u2013{to} de {total}",pageOf:"P\xE1gina {page} de {pages}",pageSize:"Filas por p\xE1gina",firstPage:"Primera p\xE1gina",previousPage:"P\xE1gina anterior",nextPage:"P\xE1gina siguiente",lastPage:"\xDAltima p\xE1gina",loading:"Cargando\u2026",loadFailed:"No se pudieron cargar las filas",filters:"Filtros",clearFilters:"Quitar todos los filtros",exportCsv:"Exportar CSV",exportExcel:"Exportar a Excel",pivot:"Tabla din\xE1mica",pivotMode:"Modo tabla din\xE1mica",pivotRows:"Grupos de filas",pivotColumns:"Etiquetas de columna",pivotValues:"Valores",total:"Total",addColumn:"A\xF1adir columna\u2026",chartBar:"Gr\xE1fico de barras",chartStacked:"Barras apiladas",chartLine:"Gr\xE1fico de l\xEDneas",chartArea:"Gr\xE1fico de \xE1reas",chartPie:"Gr\xE1fico circular",chartDonut:"Gr\xE1fico de anillo",chartCombo:"Gr\xE1fico de barras y l\xEDneas",chartScatter:"Gr\xE1fico de dispersi\xF3n",freeBadge:"Versi\xF3n gratuita",ops:{contains:"Contiene",equals:"Igual a",notEquals:"Distinto de",startsWith:"Empieza por",endsWith:"Termina en",blank:"Vac\xEDo",notBlank:"No vac\xEDo",eq:"Igual a",ne:"Distinto de",lt:"Menor que",lte:"Menor o igual que",gt:"Mayor que",gte:"Mayor o igual que",between:"Entre",before:"Antes de",after:"Despu\xE9s de"}},gn=$o;var Fo={code:"fr",noRows:"Aucune ligne \xE0 afficher",filter:"Filtre",apply:"Appliquer",reset:"R\xE9initialiser",selectAll:"(Tout s\xE9lectionner)",search:"Rechercher\u2026",blanks:"(Vides)",value:"Valeur",valueTo:"\xC0",sortAsc:"Tri croissant",sortDesc:"Tri d\xE9croissant",clearSort:"Annuler le tri",pinLeft:"\xC9pingler \xE0 gauche",pinRight:"\xC9pingler \xE0 droite",unpin:"D\xE9s\xE9pingler",columnMenu:"Menu de colonne",selectRow:"S\xE9lectionner la ligne",selectAllRows:"S\xE9lectionner toutes les lignes",chooseColumns:"Choisir les colonnes",columns:"Colonnes",autosizeThis:"Ajuster cette colonne",autosizeAll:"Ajuster toutes les colonnes",resetColumns:"R\xE9initialiser les colonnes",hideColumn:"Masquer la colonne",close:"Fermer",copy:"Copier",cut:"Couper",copyWithHeaders:"Copier avec les en-t\xEAtes",paste:"Coller",pasteHint:"Le navigateur a bloqu\xE9 le presse-papiers. Appuyez sur Ctrl+V pour coller.",required:"Ce champ est obligatoire",invalidValue:"Valeur non valide",and:"Et",or:"Ou",advancedFilter:"Filtre avanc\xE9",addCondition:"Ajouter une condition",duplicate:"Cette valeur est d\xE9j\xE0 utilis\xE9e",undo:"Annuler",redo:"R\xE9tablir",deleteRows:"Supprimer les lignes s\xE9lectionn\xE9es",copyRows:"Copier les lignes s\xE9lectionn\xE9es",statusRows:"{n} lignes",statusFiltered:"{shown} sur {total} lignes",statusSelected:"{n} s\xE9lectionn\xE9es",count:"Nombre",sum:"Somme",avg:"Moyenne",min:"Min",max:"Max",findPlaceholder:"Rechercher dans la grille",noMatches:"Aucun r\xE9sultat",findNext:"Suivant",findPrevious:"Pr\xE9c\xE9dent",groupPanelHint:"Faites glisser un en-t\xEAte de colonne ici pour regrouper",groupByThis:"Regrouper par cette colonne",ungroup:"Supprimer le regroupement",expandAll:"Tout d\xE9velopper",collapseAll:"Tout r\xE9duire",pagerRange:"{from}\u2013{to} sur {total}",pageOf:"Page {page} sur {pages}",pageSize:"Lignes par page",firstPage:"Premi\xE8re page",previousPage:"Page pr\xE9c\xE9dente",nextPage:"Page suivante",lastPage:"Derni\xE8re page",loading:"Chargement\u2026",loadFailed:"Impossible de charger les lignes",filters:"Filtres",clearFilters:"Effacer tous les filtres",exportCsv:"Exporter en CSV",exportExcel:"Exporter vers Excel",pivot:"Tableau crois\xE9",pivotMode:"Mode tableau crois\xE9",pivotRows:"Groupes de lignes",pivotColumns:"\xC9tiquettes de colonnes",pivotValues:"Valeurs",total:"Total",addColumn:"Ajouter une colonne\u2026",chartBar:"Histogramme",chartStacked:"Histogramme empil\xE9",chartLine:"Courbes",chartArea:"Aires",chartPie:"Secteurs",chartDonut:"Graphique en anneau",chartCombo:"Graphique barres et lignes",chartScatter:"Nuage de points",freeBadge:"Version gratuite",ops:{contains:"Contient",equals:"\xC9gal \xE0",notEquals:"Diff\xE9rent de",startsWith:"Commence par",endsWith:"Se termine par",blank:"Vide",notBlank:"Non vide",eq:"\xC9gal \xE0",ne:"Diff\xE9rent de",lt:"Inf\xE9rieur \xE0",lte:"Inf\xE9rieur ou \xE9gal \xE0",gt:"Sup\xE9rieur \xE0",gte:"Sup\xE9rieur ou \xE9gal \xE0",between:"Entre",before:"Avant",after:"Apr\xE8s"}},mn=Fo;var No={code:"ja",noRows:"\u8868\u793A\u3059\u308B\u30C7\u30FC\u30BF\u304C\u3042\u308A\u307E\u305B\u3093",filter:"\u30D5\u30A3\u30EB\u30BF\u30FC",apply:"\u9069\u7528",reset:"\u30EA\u30BB\u30C3\u30C8",selectAll:"(\u3059\u3079\u3066\u9078\u629E)",search:"\u691C\u7D22\u2026",blanks:"(\u7A7A\u767D)",value:"\u5024",valueTo:"\u7D42\u4E86\u5024",sortAsc:"\u6607\u9806\u3067\u4E26\u3079\u66FF\u3048",sortDesc:"\u964D\u9806\u3067\u4E26\u3079\u66FF\u3048",clearSort:"\u4E26\u3079\u66FF\u3048\u3092\u89E3\u9664",pinLeft:"\u5DE6\u306B\u56FA\u5B9A",pinRight:"\u53F3\u306B\u56FA\u5B9A",unpin:"\u56FA\u5B9A\u3092\u89E3\u9664",columnMenu:"\u5217\u30E1\u30CB\u30E5\u30FC",selectRow:"\u884C\u3092\u9078\u629E",selectAllRows:"\u3059\u3079\u3066\u306E\u884C\u3092\u9078\u629E",chooseColumns:"\u5217\u3092\u9078\u629E",columns:"\u5217",autosizeThis:"\u3053\u306E\u5217\u306E\u5E45\u3092\u81EA\u52D5\u8ABF\u6574",autosizeAll:"\u3059\u3079\u3066\u306E\u5217\u306E\u5E45\u3092\u81EA\u52D5\u8ABF\u6574",resetColumns:"\u5217\u3092\u30EA\u30BB\u30C3\u30C8",hideColumn:"\u5217\u3092\u975E\u8868\u793A",close:"\u9589\u3058\u308B",copy:"\u30B3\u30D4\u30FC",cut:"\u5207\u308A\u53D6\u308A",copyWithHeaders:"\u30D8\u30C3\u30C0\u30FC\u4ED8\u304D\u3067\u30B3\u30D4\u30FC",paste:"\u8CBC\u308A\u4ED8\u3051",pasteHint:"\u30D6\u30E9\u30A6\u30B6\u30FC\u304C\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9\u3078\u306E\u30A2\u30AF\u30BB\u30B9\u3092\u30D6\u30ED\u30C3\u30AF\u3057\u307E\u3057\u305F\u3002Ctrl+V \u3067\u8CBC\u308A\u4ED8\u3051\u3066\u304F\u3060\u3055\u3044\u3002",required:"\u3053\u306E\u9805\u76EE\u306F\u5FC5\u9808\u3067\u3059",invalidValue:"\u7121\u52B9\u306A\u5024\u3067\u3059",and:"\u304B\u3064",or:"\u307E\u305F\u306F",advancedFilter:"\u8A73\u7D30\u30D5\u30A3\u30EB\u30BF\u30FC",addCondition:"\u6761\u4EF6\u3092\u8FFD\u52A0",duplicate:"\u3053\u306E\u5024\u306F\u3059\u3067\u306B\u4F7F\u308F\u308C\u3066\u3044\u307E\u3059",undo:"\u5143\u306B\u623B\u3059",redo:"\u3084\u308A\u76F4\u3057",deleteRows:"\u9078\u629E\u3057\u305F\u884C\u3092\u524A\u9664",copyRows:"\u9078\u629E\u3057\u305F\u884C\u3092\u30B3\u30D4\u30FC",statusRows:"{n} \u884C",statusFiltered:"{total} \u884C\u4E2D {shown} \u884C",statusSelected:"{n} \u4EF6\u9078\u629E",count:"\u30C7\u30FC\u30BF\u306E\u500B\u6570",sum:"\u5408\u8A08",avg:"\u5E73\u5747",min:"\u6700\u5C0F",max:"\u6700\u5927",findPlaceholder:"\u30B0\u30EA\u30C3\u30C9\u5185\u3092\u691C\u7D22",noMatches:"\u4E00\u81F4\u306A\u3057",findNext:"\u6B21\u3092\u691C\u7D22",findPrevious:"\u524D\u3092\u691C\u7D22",groupPanelHint:"\u5217\u898B\u51FA\u3057\u3092\u3053\u3053\u306B\u30C9\u30E9\u30C3\u30B0\u3057\u3066\u30B0\u30EB\u30FC\u30D7\u5316",groupByThis:"\u3053\u306E\u5217\u3067\u30B0\u30EB\u30FC\u30D7\u5316",ungroup:"\u30B0\u30EB\u30FC\u30D7\u5316\u3092\u89E3\u9664",expandAll:"\u3059\u3079\u3066\u5C55\u958B",collapseAll:"\u3059\u3079\u3066\u6298\u308A\u305F\u305F\u3080",pagerRange:"{total} \u4EF6\u4E2D {from}\u2013{to} \u4EF6",pageOf:"{pages} \u30DA\u30FC\u30B8\u4E2D {page} \u30DA\u30FC\u30B8",pageSize:"1 \u30DA\u30FC\u30B8\u306E\u884C\u6570",firstPage:"\u6700\u521D\u306E\u30DA\u30FC\u30B8",previousPage:"\u524D\u306E\u30DA\u30FC\u30B8",nextPage:"\u6B21\u306E\u30DA\u30FC\u30B8",lastPage:"\u6700\u5F8C\u306E\u30DA\u30FC\u30B8",loading:"\u8AAD\u307F\u8FBC\u307F\u4E2D\u2026",loadFailed:"\u884C\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093\u3067\u3057\u305F",filters:"\u30D5\u30A3\u30EB\u30BF\u30FC",clearFilters:"\u3059\u3079\u3066\u306E\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u89E3\u9664",exportCsv:"CSV \u306B\u66F8\u304D\u51FA\u3059",exportExcel:"Excel \u306B\u66F8\u304D\u51FA\u3059",pivot:"\u30D4\u30DC\u30C3\u30C8",pivotMode:"\u30D4\u30DC\u30C3\u30C8\u30E2\u30FC\u30C9",pivotRows:"\u884C\u30B0\u30EB\u30FC\u30D7",pivotColumns:"\u5217\u30E9\u30D9\u30EB",pivotValues:"\u5024",total:"\u5408\u8A08",addColumn:"\u5217\u3092\u8FFD\u52A0\u2026",chartBar:"\u68D2\u30B0\u30E9\u30D5",chartStacked:"\u7A4D\u307F\u4E0A\u3052\u68D2\u30B0\u30E9\u30D5",chartLine:"\u6298\u308C\u7DDA\u30B0\u30E9\u30D5",chartArea:"\u9762\u30B0\u30E9\u30D5",chartPie:"\u5186\u30B0\u30E9\u30D5",chartDonut:"\u30C9\u30FC\u30CA\u30C4\u30B0\u30E9\u30D5",chartCombo:"\u68D2\u30FB\u6298\u308C\u7DDA\u30B0\u30E9\u30D5",chartScatter:"\u6563\u5E03\u56F3",freeBadge:"\u7121\u6599\u7248\u3092\u4F7F\u7528\u4E2D",ops:{contains:"\u542B\u3080",equals:"\u7B49\u3057\u3044",notEquals:"\u7B49\u3057\u304F\u306A\u3044",startsWith:"\u3067\u59CB\u307E\u308B",endsWith:"\u3067\u7D42\u308F\u308B",blank:"\u7A7A\u767D",notBlank:"\u7A7A\u767D\u4EE5\u5916",eq:"\u7B49\u3057\u3044",ne:"\u7B49\u3057\u304F\u306A\u3044",lt:"\u3088\u308A\u5C0F\u3055\u3044",lte:"\u4EE5\u4E0B",gt:"\u3088\u308A\u5927\u304D\u3044",gte:"\u4EE5\u4E0A",between:"\u7BC4\u56F2\u5185",before:"\u3088\u308A\u524D",after:"\u3088\u308A\u5F8C"}},wn=No;var Oo={code:"ko",noRows:"\uD45C\uC2DC\uD560 \uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4",filter:"\uD544\uD130",apply:"\uC801\uC6A9",reset:"\uCD08\uAE30\uD654",selectAll:"(\uC804\uCCB4 \uC120\uD0DD)",search:"\uAC80\uC0C9\u2026",blanks:"(\uBE48 \uAC12)",value:"\uAC12",valueTo:"\uB05D \uAC12",sortAsc:"\uC624\uB984\uCC28\uC21C \uC815\uB82C",sortDesc:"\uB0B4\uB9BC\uCC28\uC21C \uC815\uB82C",clearSort:"\uC815\uB82C \uD574\uC81C",pinLeft:"\uC67C\uCABD \uACE0\uC815",pinRight:"\uC624\uB978\uCABD \uACE0\uC815",unpin:"\uACE0\uC815 \uD574\uC81C",columnMenu:"\uCEEC\uB7FC \uBA54\uB274",selectRow:"\uD589 \uC120\uD0DD",selectAllRows:"\uC804\uCCB4 \uD589 \uC120\uD0DD",chooseColumns:"\uCEEC\uB7FC \uC120\uD0DD",columns:"\uCEEC\uB7FC",autosizeThis:"\uC774 \uCEEC\uB7FC \uB108\uBE44 \uC790\uB3D9 \uB9DE\uCDA4",autosizeAll:"\uBAA8\uB4E0 \uCEEC\uB7FC \uB108\uBE44 \uC790\uB3D9 \uB9DE\uCDA4",resetColumns:"\uCEEC\uB7FC \uCD08\uAE30\uD654",hideColumn:"\uCEEC\uB7FC \uC228\uAE30\uAE30",close:"\uB2EB\uAE30",copy:"\uBCF5\uC0AC",cut:"\uC798\uB77C\uB0B4\uAE30",copyWithHeaders:"\uD5E4\uB354 \uD3EC\uD568 \uBCF5\uC0AC",paste:"\uBD99\uC5EC\uB123\uAE30",pasteHint:"\uBE0C\uB77C\uC6B0\uC800\uAC00 \uD074\uB9BD\uBCF4\uB4DC \uC811\uADFC\uC744 \uB9C9\uC558\uC2B5\uB2C8\uB2E4. Ctrl+V\uB85C \uBD99\uC5EC\uB123\uC73C\uC138\uC694.",required:"\uD544\uC218 \uC785\uB825 \uD56D\uBAA9\uC785\uB2C8\uB2E4",invalidValue:"\uC62C\uBC14\uB978 \uAC12\uC774 \uC544\uB2D9\uB2C8\uB2E4",and:"\uADF8\uB9AC\uACE0",or:"\uB610\uB294",advancedFilter:"\uACE0\uAE09 \uD544\uD130",addCondition:"\uC870\uAC74 \uCD94\uAC00",duplicate:"\uC774\uBBF8 \uC0AC\uC6A9 \uC911\uC778 \uAC12\uC785\uB2C8\uB2E4",undo:"\uC2E4\uD589 \uCDE8\uC18C",redo:"\uB2E4\uC2DC \uC2E4\uD589",deleteRows:"\uC120\uD0DD\uD55C \uD589 \uC0AD\uC81C",copyRows:"\uC120\uD0DD\uD55C \uD589 \uBCF5\uC0AC",statusRows:"{n}\uD589",statusFiltered:"{total}\uD589 \uC911 {shown}\uD589",statusSelected:"{n}\uAC1C \uC120\uD0DD",count:"\uAC1C\uC218",sum:"\uD569\uACC4",avg:"\uD3C9\uADE0",min:"\uCD5C\uC18C",max:"\uCD5C\uB300",findPlaceholder:"\uADF8\uB9AC\uB4DC\uC5D0\uC11C \uCC3E\uAE30",noMatches:"\uC77C\uCE58 \uD56D\uBAA9 \uC5C6\uC74C",findNext:"\uB2E4\uC74C \uCC3E\uAE30",findPrevious:"\uC774\uC804 \uCC3E\uAE30",groupPanelHint:"\uC5F4 \uBA38\uB9AC\uAE00\uC744 \uC5EC\uAE30\uB85C \uB04C\uC5B4\uC640 \uD589\uC744 \uBB36\uC73C\uC138\uC694",groupByThis:"\uC774 \uC5F4\uB85C \uBB36\uAE30",ungroup:"\uBB36\uAE30 \uD574\uC81C",expandAll:"\uBAA8\uB450 \uD3BC\uCE58\uAE30",collapseAll:"\uBAA8\uB450 \uC811\uAE30",pagerRange:"{total}\uAC1C \uC911 {from}\u2013{to}",pageOf:"{pages}\uCABD \uC911 {page}\uCABD",pageSize:"\uCABD\uB2F9 \uD589 \uC218",firstPage:"\uCCAB \uCABD",previousPage:"\uC774\uC804 \uCABD",nextPage:"\uB2E4\uC74C \uCABD",lastPage:"\uB9C8\uC9C0\uB9C9 \uCABD",loading:"\uBD88\uB7EC\uC624\uB294 \uC911\u2026",loadFailed:"\uD589\uC744 \uBD88\uB7EC\uC624\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4",filters:"\uD544\uD130",clearFilters:"\uD544\uD130 \uBAA8\uB450 \uC9C0\uC6B0\uAE30",exportCsv:"CSV\uB85C \uB0B4\uBCF4\uB0B4\uAE30",exportExcel:"\uC5D1\uC140\uB85C \uB0B4\uBCF4\uB0B4\uAE30",pivot:"\uD53C\uBC97",pivotMode:"\uD53C\uBC97 \uBAA8\uB4DC",pivotRows:"\uD589 \uADF8\uB8F9",pivotColumns:"\uC5F4 \uB808\uC774\uBE14",pivotValues:"\uAC12",total:"\uD569\uACC4",addColumn:"\uCEEC\uB7FC \uCD94\uAC00\u2026",chartBar:"\uB9C9\uB300 \uCC28\uD2B8",chartStacked:"\uB204\uC801 \uB9C9\uB300 \uCC28\uD2B8",chartLine:"\uAEBE\uC740\uC120 \uCC28\uD2B8",chartArea:"\uC601\uC5ED \uCC28\uD2B8",chartPie:"\uC6D0\uD615 \uCC28\uD2B8",chartDonut:"\uB3C4\uB11B \uCC28\uD2B8",chartCombo:"\uB9C9\uB300\xB7\uAEBE\uC740\uC120 \uCC28\uD2B8",chartScatter:"\uBD84\uC0B0\uD615 \uCC28\uD2B8",freeBadge:"\uBB34\uB8CC \uC0AC\uC6A9 \uC911",ops:{contains:"\uD3EC\uD568",equals:"\uAC19\uC74C",notEquals:"\uAC19\uC9C0 \uC54A\uC74C",startsWith:"\uC2DC\uC791 \uBB38\uC790",endsWith:"\uB05D \uBB38\uC790",blank:"\uBE48 \uAC12",notBlank:"\uBE48 \uAC12 \uC544\uB2D8",eq:"\uAC19\uC74C",ne:"\uAC19\uC9C0 \uC54A\uC74C",lt:"\uBBF8\uB9CC",lte:"\uC774\uD558",gt:"\uCD08\uACFC",gte:"\uC774\uC0C1",between:"\uBC94\uC704",before:"\uC774\uC804",after:"\uC774\uD6C4"}},vn=Oo;var Ho={code:"zh-CN",noRows:"\u6CA1\u6709\u53EF\u663E\u793A\u7684\u6570\u636E",filter:"\u7B5B\u9009",apply:"\u5E94\u7528",reset:"\u91CD\u7F6E",selectAll:"(\u5168\u9009)",search:"\u641C\u7D22\u2026",blanks:"(\u7A7A\u767D)",value:"\u503C",valueTo:"\u81F3",sortAsc:"\u5347\u5E8F\u6392\u5E8F",sortDesc:"\u964D\u5E8F\u6392\u5E8F",clearSort:"\u6E05\u9664\u6392\u5E8F",pinLeft:"\u56FA\u5B9A\u5728\u5DE6\u4FA7",pinRight:"\u56FA\u5B9A\u5728\u53F3\u4FA7",unpin:"\u53D6\u6D88\u56FA\u5B9A",columnMenu:"\u5217\u83DC\u5355",selectRow:"\u9009\u62E9\u884C",selectAllRows:"\u9009\u62E9\u6240\u6709\u884C",chooseColumns:"\u9009\u62E9\u5217",columns:"\u5217",autosizeThis:"\u81EA\u52A8\u8C03\u6574\u6B64\u5217\u5BBD\u5EA6",autosizeAll:"\u81EA\u52A8\u8C03\u6574\u6240\u6709\u5217\u5BBD\u5EA6",resetColumns:"\u91CD\u7F6E\u5217",hideColumn:"\u9690\u85CF\u5217",close:"\u5173\u95ED",copy:"\u590D\u5236",cut:"\u526A\u5207",copyWithHeaders:"\u8FDE\u540C\u6807\u9898\u590D\u5236",paste:"\u7C98\u8D34",pasteHint:"\u6D4F\u89C8\u5668\u963B\u6B62\u4E86\u526A\u8D34\u677F\u8BBF\u95EE\u3002\u8BF7\u6309 Ctrl+V \u7C98\u8D34\u3002",required:"\u6B64\u9879\u4E3A\u5FC5\u586B\u9879",invalidValue:"\u503C\u65E0\u6548",and:"\u4E14",or:"\u6216",advancedFilter:"\u9AD8\u7EA7\u7B5B\u9009",addCondition:"\u6DFB\u52A0\u6761\u4EF6",duplicate:"\u8BE5\u503C\u5DF2\u88AB\u4F7F\u7528",undo:"\u64A4\u9500",redo:"\u91CD\u505A",deleteRows:"\u5220\u9664\u6240\u9009\u884C",copyRows:"\u590D\u5236\u6240\u9009\u884C",statusRows:"{n} \u884C",statusFiltered:"{total} \u884C\u4E2D\u7684 {shown} \u884C",statusSelected:"\u5DF2\u9009 {n} \u884C",count:"\u8BA1\u6570",sum:"\u6C42\u548C",avg:"\u5E73\u5747\u503C",min:"\u6700\u5C0F\u503C",max:"\u6700\u5927\u503C",findPlaceholder:"\u5728\u8868\u683C\u4E2D\u67E5\u627E",noMatches:"\u65E0\u5339\u914D\u9879",findNext:"\u4E0B\u4E00\u4E2A",findPrevious:"\u4E0A\u4E00\u4E2A",groupPanelHint:"\u5C06\u5217\u6807\u9898\u62D6\u5230\u6B64\u5904\u4EE5\u5206\u7EC4",groupByThis:"\u6309\u6B64\u5217\u5206\u7EC4",ungroup:"\u53D6\u6D88\u5206\u7EC4",expandAll:"\u5168\u90E8\u5C55\u5F00",collapseAll:"\u5168\u90E8\u6298\u53E0",pagerRange:"\u7B2C {from}\u2013{to} \u6761\uFF0C\u5171 {total} \u6761",pageOf:"\u7B2C {page} \u9875\uFF0C\u5171 {pages} \u9875",pageSize:"\u6BCF\u9875\u884C\u6570",firstPage:"\u9996\u9875",previousPage:"\u4E0A\u4E00\u9875",nextPage:"\u4E0B\u4E00\u9875",lastPage:"\u672B\u9875",loading:"\u52A0\u8F7D\u4E2D\u2026",loadFailed:"\u65E0\u6CD5\u52A0\u8F7D\u6570\u636E",filters:"\u7B5B\u9009",clearFilters:"\u6E05\u9664\u6240\u6709\u7B5B\u9009",exportCsv:"\u5BFC\u51FA CSV",exportExcel:"\u5BFC\u51FA Excel",pivot:"\u6570\u636E\u900F\u89C6",pivotMode:"\u900F\u89C6\u6A21\u5F0F",pivotRows:"\u884C\u5206\u7EC4",pivotColumns:"\u5217\u6807\u7B7E",pivotValues:"\u503C",total:"\u603B\u8BA1",addColumn:"\u6DFB\u52A0\u5217\u2026",chartBar:"\u67F1\u72B6\u56FE",chartStacked:"\u5806\u79EF\u67F1\u72B6\u56FE",chartLine:"\u6298\u7EBF\u56FE",chartArea:"\u9762\u79EF\u56FE",chartPie:"\u997C\u56FE",chartDonut:"\u73AF\u5F62\u56FE",chartCombo:"\u67F1\u7EBF\u7EC4\u5408\u56FE",chartScatter:"\u6563\u70B9\u56FE",freeBadge:"\u514D\u8D39\u4F7F\u7528\u4E2D",ops:{contains:"\u5305\u542B",equals:"\u7B49\u4E8E",notEquals:"\u4E0D\u7B49\u4E8E",startsWith:"\u5F00\u5934\u662F",endsWith:"\u7ED3\u5C3E\u662F",blank:"\u4E3A\u7A7A",notBlank:"\u4E0D\u4E3A\u7A7A",eq:"\u7B49\u4E8E",ne:"\u4E0D\u7B49\u4E8E",lt:"\u5C0F\u4E8E",lte:"\u5C0F\u4E8E\u6216\u7B49\u4E8E",gt:"\u5927\u4E8E",gte:"\u5927\u4E8E\u6216\u7B49\u4E8E",between:"\u4ECB\u4E8E",before:"\u65E9\u4E8E",after:"\u665A\u4E8E"}},yn=Ho;var Bo={code:"zh-TW",noRows:"\u6C92\u6709\u53EF\u986F\u793A\u7684\u8CC7\u6599",filter:"\u7BE9\u9078",apply:"\u5957\u7528",reset:"\u91CD\u8A2D",selectAll:"(\u5168\u9078)",search:"\u641C\u5C0B\u2026",blanks:"(\u7A7A\u767D)",value:"\u503C",valueTo:"\u81F3",sortAsc:"\u905E\u589E\u6392\u5E8F",sortDesc:"\u905E\u6E1B\u6392\u5E8F",clearSort:"\u6E05\u9664\u6392\u5E8F",pinLeft:"\u56FA\u5B9A\u5728\u5DE6\u5074",pinRight:"\u56FA\u5B9A\u5728\u53F3\u5074",unpin:"\u53D6\u6D88\u56FA\u5B9A",columnMenu:"\u6B04\u4F4D\u9078\u55AE",selectRow:"\u9078\u53D6\u5217",selectAllRows:"\u9078\u53D6\u6240\u6709\u5217",chooseColumns:"\u9078\u64C7\u6B04\u4F4D",columns:"\u6B04\u4F4D",autosizeThis:"\u81EA\u52D5\u8ABF\u6574\u6B64\u6B04\u5BEC",autosizeAll:"\u81EA\u52D5\u8ABF\u6574\u6240\u6709\u6B04\u5BEC",resetColumns:"\u91CD\u8A2D\u6B04\u4F4D",hideColumn:"\u96B1\u85CF\u6B04\u4F4D",close:"\u95DC\u9589",copy:"\u8907\u88FD",cut:"\u526A\u4E0B",copyWithHeaders:"\u9023\u540C\u6A19\u984C\u8907\u88FD",paste:"\u8CBC\u4E0A",pasteHint:"\u7121\u6CD5\u5B58\u53D6\u526A\u8CBC\u7C3F\u3002\u8ACB\u6309 Ctrl+V \u8CBC\u4E0A\u3002",required:"\u6B64\u6B04\u4F4D\u70BA\u5FC5\u586B",invalidValue:"\u503C\u7121\u6548",and:"\u4E14",or:"\u6216",advancedFilter:"\u9032\u968E\u7BE9\u9078",addCondition:"\u65B0\u589E\u689D\u4EF6",duplicate:"\u6B64\u503C\u5DF2\u88AB\u4F7F\u7528",undo:"\u5FA9\u539F",redo:"\u91CD\u505A",deleteRows:"\u522A\u9664\u9078\u53D6\u7684\u5217",copyRows:"\u8907\u88FD\u9078\u53D6\u7684\u5217",statusRows:"{n} \u5217",statusFiltered:"{total} \u5217\u4E2D\u7684 {shown} \u5217",statusSelected:"\u5DF2\u9078\u53D6 {n} \u5217",count:"\u7B46\u6578",sum:"\u5408\u8A08",avg:"\u5E73\u5747",min:"\u6700\u5C0F",max:"\u6700\u5927",findPlaceholder:"\u5728\u8868\u683C\u4E2D\u5C0B\u627E",noMatches:"\u6C92\u6709\u7B26\u5408\u7684\u7D50\u679C",findNext:"\u4E0B\u4E00\u500B",findPrevious:"\u4E0A\u4E00\u500B",groupPanelHint:"\u5C07\u6B04\u4F4D\u6A19\u984C\u62D6\u66F3\u5230\u9019\u88E1\u4EE5\u5206\u7D44",groupByThis:"\u4F9D\u6B64\u6B04\u4F4D\u5206\u7D44",ungroup:"\u53D6\u6D88\u5206\u7D44",expandAll:"\u5168\u90E8\u5C55\u958B",collapseAll:"\u5168\u90E8\u647A\u758A",pagerRange:"{from}\u2013{to}\uFF0C\u5171 {total} \u7B46",pageOf:"\u7B2C {page} \u9801\uFF0C\u5171 {pages} \u9801",pageSize:"\u6BCF\u9801\u5217\u6578",firstPage:"\u7B2C\u4E00\u9801",previousPage:"\u4E0A\u4E00\u9801",nextPage:"\u4E0B\u4E00\u9801",lastPage:"\u6700\u5F8C\u4E00\u9801",loading:"\u8F09\u5165\u4E2D\u2026",loadFailed:"\u7121\u6CD5\u8F09\u5165\u8CC7\u6599",filters:"\u7BE9\u9078",clearFilters:"\u6E05\u9664\u6240\u6709\u7BE9\u9078",exportCsv:"\u532F\u51FA CSV",exportExcel:"\u532F\u51FA Excel",pivot:"\u6A1E\u7D10\u5206\u6790",pivotMode:"\u6A1E\u7D10\u5206\u6790\u6A21\u5F0F",pivotRows:"\u5217\u7FA4\u7D44",pivotColumns:"\u6B04\u6A19\u7C64",pivotValues:"\u503C",total:"\u7E3D\u8A08",addColumn:"\u65B0\u589E\u6B04\u4F4D\u2026",chartBar:"\u76F4\u689D\u5716",chartStacked:"\u5806\u758A\u76F4\u689D\u5716",chartLine:"\u6298\u7DDA\u5716",chartArea:"\u5340\u57DF\u5716",chartPie:"\u5713\u5F62\u5716",chartDonut:"\u74B0\u5708\u5716",chartCombo:"\u76F4\u689D\u8207\u6298\u7DDA\u5716",chartScatter:"\u6563\u4F48\u5716",freeBadge:"\u514D\u8CBB\u7248",ops:{contains:"\u5305\u542B",equals:"\u7B49\u65BC",notEquals:"\u4E0D\u7B49\u65BC",startsWith:"\u958B\u982D\u70BA",endsWith:"\u7D50\u5C3E\u70BA",blank:"\u7A7A\u767D",notBlank:"\u975E\u7A7A\u767D",eq:"\u7B49\u65BC",ne:"\u4E0D\u7B49\u65BC",lt:"\u5C0F\u65BC",lte:"\u5C0F\u65BC\u6216\u7B49\u65BC",gt:"\u5927\u65BC",gte:"\u5927\u65BC\u6216\u7B49\u65BC",between:"\u4ECB\u65BC",before:"\u65E9\u65BC",after:"\u665A\u65BC"}},bn=Bo;var zo={code:"vi",noRows:"Kh\xF4ng c\xF3 d\u1EEF li\u1EC7u",filter:"L\u1ECDc",apply:"\xC1p d\u1EE5ng",reset:"\u0110\u1EB7t l\u1EA1i",selectAll:"(Ch\u1ECDn t\u1EA5t c\u1EA3)",search:"T\xECm\u2026",blanks:"(Tr\u1ED1ng)",value:"Gi\xE1 tr\u1ECB",valueTo:"\u0110\u1EBFn",sortAsc:"S\u1EAFp x\u1EBFp t\u0103ng d\u1EA7n",sortDesc:"S\u1EAFp x\u1EBFp gi\u1EA3m d\u1EA7n",clearSort:"B\u1ECF s\u1EAFp x\u1EBFp",pinLeft:"Ghim tr\xE1i",pinRight:"Ghim ph\u1EA3i",unpin:"B\u1ECF ghim",columnMenu:"Menu c\u1ED9t",selectRow:"Ch\u1ECDn d\xF2ng",selectAllRows:"Ch\u1ECDn t\u1EA5t c\u1EA3 d\xF2ng",chooseColumns:"Ch\u1ECDn c\u1ED9t",columns:"C\u1ED9t",autosizeThis:"T\u1EF1 \u0111\u1ED9ng ch\u1EC9nh \u0111\u1ED9 r\u1ED9ng c\u1ED9t n\xE0y",autosizeAll:"T\u1EF1 \u0111\u1ED9ng ch\u1EC9nh \u0111\u1ED9 r\u1ED9ng t\u1EA5t c\u1EA3 c\u1ED9t",resetColumns:"\u0110\u1EB7t l\u1EA1i c\u1ED9t",hideColumn:"\u1EA8n c\u1ED9t",close:"\u0110\xF3ng",copy:"Sao ch\xE9p",cut:"C\u1EAFt",copyWithHeaders:"Sao ch\xE9p k\xE8m ti\xEAu \u0111\u1EC1",paste:"D\xE1n",pasteHint:"Kh\xF4ng truy c\u1EADp \u0111\u01B0\u1EE3c b\u1ED9 nh\u1EDB t\u1EA1m. Nh\u1EA5n Ctrl+V \u0111\u1EC3 d\xE1n.",required:"Tr\u01B0\u1EDDng n\xE0y l\xE0 b\u1EAFt bu\u1ED9c",invalidValue:"Gi\xE1 tr\u1ECB kh\xF4ng h\u1EE3p l\u1EC7",and:"V\xE0",or:"Ho\u1EB7c",advancedFilter:"L\u1ECDc n\xE2ng cao",addCondition:"Th\xEAm \u0111i\u1EC1u ki\u1EC7n",duplicate:"Gi\xE1 tr\u1ECB n\xE0y \u0111\xE3 \u0111\u01B0\u1EE3c d\xF9ng",undo:"Ho\xE0n t\xE1c",redo:"L\xE0m l\u1EA1i",deleteRows:"X\xF3a c\xE1c d\xF2ng \u0111\xE3 ch\u1ECDn",copyRows:"Sao ch\xE9p c\xE1c d\xF2ng \u0111\xE3 ch\u1ECDn",statusRows:"{n} d\xF2ng",statusFiltered:"{shown} / {total} d\xF2ng",statusSelected:"\u0110\xE3 ch\u1ECDn {n}",count:"S\u1ED1 l\u01B0\u1EE3ng",sum:"T\u1ED5ng",avg:"Trung b\xECnh",min:"Nh\u1ECF nh\u1EA5t",max:"L\u1EDBn nh\u1EA5t",findPlaceholder:"T\xECm trong b\u1EA3ng",noMatches:"Kh\xF4ng t\xECm th\u1EA5y",findNext:"K\u1EBFt qu\u1EA3 ti\u1EBFp",findPrevious:"K\u1EBFt qu\u1EA3 tr\u01B0\u1EDBc",groupPanelHint:"K\xE9o ti\xEAu \u0111\u1EC1 c\u1ED9t v\xE0o \u0111\xE2y \u0111\u1EC3 nh\xF3m d\xF2ng",groupByThis:"Nh\xF3m theo c\u1ED9t n\xE0y",ungroup:"B\u1ECF nh\xF3m",expandAll:"M\u1EDF r\u1ED9ng t\u1EA5t c\u1EA3",collapseAll:"Thu g\u1ECDn t\u1EA5t c\u1EA3",pagerRange:"{from}\u2013{to} / {total}",pageOf:"Trang {page} / {pages}",pageSize:"S\u1ED1 d\xF2ng m\u1ED7i trang",firstPage:"Trang \u0111\u1EA7u",previousPage:"Trang tr\u01B0\u1EDBc",nextPage:"Trang sau",lastPage:"Trang cu\u1ED1i",loading:"\u0110ang t\u1EA3i\u2026",loadFailed:"Kh\xF4ng t\u1EA3i \u0111\u01B0\u1EE3c d\u1EEF li\u1EC7u",filters:"B\u1ED9 l\u1ECDc",clearFilters:"X\xF3a t\u1EA5t c\u1EA3 b\u1ED9 l\u1ECDc",exportCsv:"Xu\u1EA5t CSV",exportExcel:"Xu\u1EA5t Excel",pivot:"Pivot",pivotMode:"Ch\u1EBF \u0111\u1ED9 pivot",pivotRows:"Nh\xF3m d\xF2ng",pivotColumns:"Nh\xE3n c\u1ED9t",pivotValues:"Gi\xE1 tr\u1ECB",total:"T\u1ED5ng c\u1ED9ng",addColumn:"Th\xEAm c\u1ED9t\u2026",chartBar:"Bi\u1EC3u \u0111\u1ED3 c\u1ED9t",chartStacked:"Bi\u1EC3u \u0111\u1ED3 c\u1ED9t ch\u1ED3ng",chartLine:"Bi\u1EC3u \u0111\u1ED3 \u0111\u01B0\u1EDDng",chartArea:"Bi\u1EC3u \u0111\u1ED3 v\xF9ng",chartPie:"Bi\u1EC3u \u0111\u1ED3 tr\xF2n",chartDonut:"Bi\u1EC3u \u0111\u1ED3 v\xE0nh khuy\xEAn",chartCombo:"Bi\u1EC3u \u0111\u1ED3 c\u1ED9t v\xE0 \u0111\u01B0\u1EDDng",chartScatter:"Bi\u1EC3u \u0111\u1ED3 ph\xE2n t\xE1n",freeBadge:"B\u1EA3n mi\u1EC5n ph\xED",ops:{contains:"Ch\u1EE9a",equals:"B\u1EB1ng",notEquals:"Kh\xE1c",startsWith:"B\u1EAFt \u0111\u1EA7u b\u1EB1ng",endsWith:"K\u1EBFt th\xFAc b\u1EB1ng",blank:"Tr\u1ED1ng",notBlank:"Kh\xF4ng tr\u1ED1ng",eq:"B\u1EB1ng",ne:"Kh\xE1c",lt:"Nh\u1ECF h\u01A1n",lte:"Nh\u1ECF h\u01A1n ho\u1EB7c b\u1EB1ng",gt:"L\u1EDBn h\u01A1n",gte:"L\u1EDBn h\u01A1n ho\u1EB7c b\u1EB1ng",between:"Trong kho\u1EA3ng",before:"Tr\u01B0\u1EDBc",after:"Sau"}},xn=zo;var Go={code:"th",noRows:"\u0E44\u0E21\u0E48\u0E21\u0E35\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25",filter:"\u0E15\u0E31\u0E27\u0E01\u0E23\u0E2D\u0E07",apply:"\u0E43\u0E0A\u0E49",reset:"\u0E23\u0E35\u0E40\u0E0B\u0E47\u0E15",selectAll:"(\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14)",search:"\u0E04\u0E49\u0E19\u0E2B\u0E32\u2026",blanks:"(\u0E27\u0E48\u0E32\u0E07)",value:"\u0E04\u0E48\u0E32",valueTo:"\u0E16\u0E36\u0E07",sortAsc:"\u0E40\u0E23\u0E35\u0E22\u0E07\u0E08\u0E32\u0E01\u0E19\u0E49\u0E2D\u0E22\u0E44\u0E1B\u0E21\u0E32\u0E01",sortDesc:"\u0E40\u0E23\u0E35\u0E22\u0E07\u0E08\u0E32\u0E01\u0E21\u0E32\u0E01\u0E44\u0E1B\u0E19\u0E49\u0E2D\u0E22",clearSort:"\u0E25\u0E49\u0E32\u0E07\u0E01\u0E32\u0E23\u0E40\u0E23\u0E35\u0E22\u0E07",pinLeft:"\u0E15\u0E23\u0E36\u0E07\u0E0B\u0E49\u0E32\u0E22",pinRight:"\u0E15\u0E23\u0E36\u0E07\u0E02\u0E27\u0E32",unpin:"\u0E40\u0E25\u0E34\u0E01\u0E15\u0E23\u0E36\u0E07",columnMenu:"\u0E40\u0E21\u0E19\u0E39\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C",selectRow:"\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E41\u0E16\u0E27",selectAllRows:"\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E17\u0E38\u0E01\u0E41\u0E16\u0E27",chooseColumns:"\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C",columns:"\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C",autosizeThis:"\u0E1B\u0E23\u0E31\u0E1A\u0E04\u0E27\u0E32\u0E21\u0E01\u0E27\u0E49\u0E32\u0E07\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C\u0E19\u0E35\u0E49\u0E2D\u0E31\u0E15\u0E42\u0E19\u0E21\u0E31\u0E15\u0E34",autosizeAll:"\u0E1B\u0E23\u0E31\u0E1A\u0E04\u0E27\u0E32\u0E21\u0E01\u0E27\u0E49\u0E32\u0E07\u0E17\u0E38\u0E01\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C\u0E2D\u0E31\u0E15\u0E42\u0E19\u0E21\u0E31\u0E15\u0E34",resetColumns:"\u0E23\u0E35\u0E40\u0E0B\u0E47\u0E15\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C",hideColumn:"\u0E0B\u0E48\u0E2D\u0E19\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C",close:"\u0E1B\u0E34\u0E14",copy:"\u0E04\u0E31\u0E14\u0E25\u0E2D\u0E01",cut:"\u0E15\u0E31\u0E14",copyWithHeaders:"\u0E04\u0E31\u0E14\u0E25\u0E2D\u0E01\u0E1E\u0E23\u0E49\u0E2D\u0E21\u0E2B\u0E31\u0E27\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C",paste:"\u0E27\u0E32\u0E07",pasteHint:"\u0E40\u0E02\u0E49\u0E32\u0E16\u0E36\u0E07\u0E04\u0E25\u0E34\u0E1B\u0E1A\u0E2D\u0E23\u0E4C\u0E14\u0E44\u0E21\u0E48\u0E44\u0E14\u0E49 \u0E01\u0E14 Ctrl+V \u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E27\u0E32\u0E07",required:"\u0E15\u0E49\u0E2D\u0E07\u0E01\u0E23\u0E2D\u0E01\u0E0A\u0E48\u0E2D\u0E07\u0E19\u0E35\u0E49",invalidValue:"\u0E04\u0E48\u0E32\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07",and:"\u0E41\u0E25\u0E30",or:"\u0E2B\u0E23\u0E37\u0E2D",advancedFilter:"\u0E15\u0E31\u0E27\u0E01\u0E23\u0E2D\u0E07\u0E02\u0E31\u0E49\u0E19\u0E2A\u0E39\u0E07",addCondition:"\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E40\u0E07\u0E37\u0E48\u0E2D\u0E19\u0E44\u0E02",duplicate:"\u0E04\u0E48\u0E32\u0E19\u0E35\u0E49\u0E16\u0E39\u0E01\u0E43\u0E0A\u0E49\u0E41\u0E25\u0E49\u0E27",undo:"\u0E40\u0E25\u0E34\u0E01\u0E17\u0E33",redo:"\u0E17\u0E33\u0E0B\u0E49\u0E33",deleteRows:"\u0E25\u0E1A\u0E41\u0E16\u0E27\u0E17\u0E35\u0E48\u0E40\u0E25\u0E37\u0E2D\u0E01",copyRows:"\u0E04\u0E31\u0E14\u0E25\u0E2D\u0E01\u0E41\u0E16\u0E27\u0E17\u0E35\u0E48\u0E40\u0E25\u0E37\u0E2D\u0E01",statusRows:"{n} \u0E41\u0E16\u0E27",statusFiltered:"{shown} \u0E08\u0E32\u0E01 {total} \u0E41\u0E16\u0E27",statusSelected:"\u0E40\u0E25\u0E37\u0E2D\u0E01 {n} \u0E41\u0E16\u0E27",count:"\u0E08\u0E33\u0E19\u0E27\u0E19",sum:"\u0E1C\u0E25\u0E23\u0E27\u0E21",avg:"\u0E04\u0E48\u0E32\u0E40\u0E09\u0E25\u0E35\u0E48\u0E22",min:"\u0E15\u0E48\u0E33\u0E2A\u0E38\u0E14",max:"\u0E2A\u0E39\u0E07\u0E2A\u0E38\u0E14",findPlaceholder:"\u0E04\u0E49\u0E19\u0E2B\u0E32\u0E43\u0E19\u0E15\u0E32\u0E23\u0E32\u0E07",noMatches:"\u0E44\u0E21\u0E48\u0E1E\u0E1A",findNext:"\u0E16\u0E31\u0E14\u0E44\u0E1B",findPrevious:"\u0E01\u0E48\u0E2D\u0E19\u0E2B\u0E19\u0E49\u0E32",groupPanelHint:"\u0E25\u0E32\u0E01\u0E2B\u0E31\u0E27\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C\u0E21\u0E32\u0E17\u0E35\u0E48\u0E19\u0E35\u0E48\u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E08\u0E31\u0E14\u0E01\u0E25\u0E38\u0E48\u0E21",groupByThis:"\u0E08\u0E31\u0E14\u0E01\u0E25\u0E38\u0E48\u0E21\u0E15\u0E32\u0E21\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C\u0E19\u0E35\u0E49",ungroup:"\u0E40\u0E25\u0E34\u0E01\u0E08\u0E31\u0E14\u0E01\u0E25\u0E38\u0E48\u0E21",expandAll:"\u0E02\u0E22\u0E32\u0E22\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14",collapseAll:"\u0E22\u0E38\u0E1A\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14",pagerRange:"{from}\u2013{to} \u0E08\u0E32\u0E01 {total}",pageOf:"\u0E2B\u0E19\u0E49\u0E32 {page} \u0E08\u0E32\u0E01 {pages}",pageSize:"\u0E41\u0E16\u0E27\u0E15\u0E48\u0E2D\u0E2B\u0E19\u0E49\u0E32",firstPage:"\u0E2B\u0E19\u0E49\u0E32\u0E41\u0E23\u0E01",previousPage:"\u0E2B\u0E19\u0E49\u0E32\u0E01\u0E48\u0E2D\u0E19",nextPage:"\u0E2B\u0E19\u0E49\u0E32\u0E16\u0E31\u0E14\u0E44\u0E1B",lastPage:"\u0E2B\u0E19\u0E49\u0E32\u0E2A\u0E38\u0E14\u0E17\u0E49\u0E32\u0E22",loading:"\u0E01\u0E33\u0E25\u0E31\u0E07\u0E42\u0E2B\u0E25\u0E14\u2026",loadFailed:"\u0E42\u0E2B\u0E25\u0E14\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E2A\u0E33\u0E40\u0E23\u0E47\u0E08",filters:"\u0E15\u0E31\u0E27\u0E01\u0E23\u0E2D\u0E07",clearFilters:"\u0E25\u0E49\u0E32\u0E07\u0E15\u0E31\u0E27\u0E01\u0E23\u0E2D\u0E07\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14",exportCsv:"\u0E2A\u0E48\u0E07\u0E2D\u0E2D\u0E01 CSV",exportExcel:"\u0E2A\u0E48\u0E07\u0E2D\u0E2D\u0E01 Excel",pivot:"Pivot",pivotMode:"\u0E42\u0E2B\u0E21\u0E14 Pivot",pivotRows:"\u0E01\u0E25\u0E38\u0E48\u0E21\u0E41\u0E16\u0E27",pivotColumns:"\u0E1B\u0E49\u0E32\u0E22\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C",pivotValues:"\u0E04\u0E48\u0E32",total:"\u0E23\u0E27\u0E21",addColumn:"\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C\u2026",chartBar:"\u0E41\u0E1C\u0E19\u0E20\u0E39\u0E21\u0E34\u0E41\u0E17\u0E48\u0E07",chartStacked:"\u0E41\u0E1C\u0E19\u0E20\u0E39\u0E21\u0E34\u0E41\u0E17\u0E48\u0E07\u0E0B\u0E49\u0E2D\u0E19",chartLine:"\u0E41\u0E1C\u0E19\u0E20\u0E39\u0E21\u0E34\u0E40\u0E2A\u0E49\u0E19",chartArea:"\u0E41\u0E1C\u0E19\u0E20\u0E39\u0E21\u0E34\u0E1E\u0E37\u0E49\u0E19\u0E17\u0E35\u0E48",chartPie:"\u0E41\u0E1C\u0E19\u0E20\u0E39\u0E21\u0E34\u0E27\u0E07\u0E01\u0E25\u0E21",chartDonut:"\u0E41\u0E1C\u0E19\u0E20\u0E39\u0E21\u0E34\u0E42\u0E14\u0E19\u0E31\u0E17",chartCombo:"\u0E41\u0E1C\u0E19\u0E20\u0E39\u0E21\u0E34\u0E41\u0E17\u0E48\u0E07\u0E41\u0E25\u0E30\u0E40\u0E2A\u0E49\u0E19",chartScatter:"\u0E41\u0E1C\u0E19\u0E20\u0E39\u0E21\u0E34\u0E01\u0E23\u0E30\u0E08\u0E32\u0E22",freeBadge:"\u0E23\u0E38\u0E48\u0E19\u0E1F\u0E23\u0E35",ops:{contains:"\u0E21\u0E35\u0E04\u0E33\u0E27\u0E48\u0E32",equals:"\u0E40\u0E17\u0E48\u0E32\u0E01\u0E31\u0E1A",notEquals:"\u0E44\u0E21\u0E48\u0E40\u0E17\u0E48\u0E32\u0E01\u0E31\u0E1A",startsWith:"\u0E02\u0E36\u0E49\u0E19\u0E15\u0E49\u0E19\u0E14\u0E49\u0E27\u0E22",endsWith:"\u0E25\u0E07\u0E17\u0E49\u0E32\u0E22\u0E14\u0E49\u0E27\u0E22",blank:"\u0E27\u0E48\u0E32\u0E07",notBlank:"\u0E44\u0E21\u0E48\u0E27\u0E48\u0E32\u0E07",eq:"\u0E40\u0E17\u0E48\u0E32\u0E01\u0E31\u0E1A",ne:"\u0E44\u0E21\u0E48\u0E40\u0E17\u0E48\u0E32\u0E01\u0E31\u0E1A",lt:"\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32",lte:"\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\u0E2B\u0E23\u0E37\u0E2D\u0E40\u0E17\u0E48\u0E32\u0E01\u0E31\u0E1A",gt:"\u0E21\u0E32\u0E01\u0E01\u0E27\u0E48\u0E32",gte:"\u0E21\u0E32\u0E01\u0E01\u0E27\u0E48\u0E32\u0E2B\u0E23\u0E37\u0E2D\u0E40\u0E17\u0E48\u0E32\u0E01\u0E31\u0E1A",between:"\u0E23\u0E30\u0E2B\u0E27\u0E48\u0E32\u0E07",before:"\u0E01\u0E48\u0E2D\u0E19",after:"\u0E2B\u0E25\u0E31\u0E07"}},Cn=Go;var Vo={code:"id",noRows:"Tidak ada data",filter:"Filter",apply:"Terapkan",reset:"Atur ulang",selectAll:"(Pilih semua)",search:"Cari\u2026",blanks:"(Kosong)",value:"Nilai",valueTo:"Sampai",sortAsc:"Urutkan naik",sortDesc:"Urutkan turun",clearSort:"Hapus urutan",pinLeft:"Sematkan kiri",pinRight:"Sematkan kanan",unpin:"Lepas sematan",columnMenu:"Menu kolom",selectRow:"Pilih baris",selectAllRows:"Pilih semua baris",chooseColumns:"Pilih kolom",columns:"Kolom",autosizeThis:"Sesuaikan lebar kolom ini",autosizeAll:"Sesuaikan lebar semua kolom",resetColumns:"Atur ulang kolom",hideColumn:"Sembunyikan kolom",close:"Tutup",copy:"Salin",cut:"Potong",copyWithHeaders:"Salin dengan judul",paste:"Tempel",pasteHint:"Akses papan klip diblokir. Tekan Ctrl+V untuk menempel.",required:"Kolom ini wajib diisi",invalidValue:"Nilai tidak valid",and:"Dan",or:"Atau",advancedFilter:"Filter lanjutan",addCondition:"Tambah kondisi",duplicate:"Nilai ini sudah dipakai",undo:"Urungkan",redo:"Ulangi",deleteRows:"Hapus baris terpilih",copyRows:"Salin baris terpilih",statusRows:"{n} baris",statusFiltered:"{shown} dari {total} baris",statusSelected:"{n} dipilih",count:"Jumlah data",sum:"Total",avg:"Rata-rata",min:"Min",max:"Maks",findPlaceholder:"Cari di tabel",noMatches:"Tidak ditemukan",findNext:"Berikutnya",findPrevious:"Sebelumnya",groupPanelHint:"Seret judul kolom ke sini untuk mengelompokkan",groupByThis:"Kelompokkan menurut kolom ini",ungroup:"Hapus pengelompokan",expandAll:"Buka semua",collapseAll:"Tutup semua",pagerRange:"{from}\u2013{to} dari {total}",pageOf:"Halaman {page} dari {pages}",pageSize:"Baris per halaman",firstPage:"Halaman pertama",previousPage:"Halaman sebelumnya",nextPage:"Halaman berikutnya",lastPage:"Halaman terakhir",loading:"Memuat\u2026",loadFailed:"Gagal memuat data",filters:"Filter",clearFilters:"Hapus semua filter",exportCsv:"Ekspor CSV",exportExcel:"Ekspor Excel",pivot:"Pivot",pivotMode:"Mode pivot",pivotRows:"Grup baris",pivotColumns:"Label kolom",pivotValues:"Nilai",total:"Total",addColumn:"Tambah kolom\u2026",chartBar:"Diagram batang",chartStacked:"Diagram batang bertumpuk",chartLine:"Diagram garis",chartArea:"Diagram area",chartPie:"Diagram lingkaran",chartDonut:"Diagram donat",chartCombo:"Diagram batang dan garis",chartScatter:"Diagram sebar",freeBadge:"Versi gratis",ops:{contains:"Berisi",equals:"Sama dengan",notEquals:"Tidak sama dengan",startsWith:"Diawali",endsWith:"Diakhiri",blank:"Kosong",notBlank:"Tidak kosong",eq:"Sama dengan",ne:"Tidak sama dengan",lt:"Kurang dari",lte:"Kurang dari atau sama dengan",gt:"Lebih dari",gte:"Lebih dari atau sama dengan",between:"Di antara",before:"Sebelum",after:"Sesudah"}},Rn=Vo;var qo={code:"ru",noRows:"\u041D\u0435\u0442 \u0434\u0430\u043D\u043D\u044B\u0445",filter:"\u0424\u0438\u043B\u044C\u0442\u0440",apply:"\u041F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C",reset:"\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C",selectAll:"(\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0432\u0441\u0435)",search:"\u041F\u043E\u0438\u0441\u043A\u2026",blanks:"(\u041F\u0443\u0441\u0442\u044B\u0435)",value:"\u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435",valueTo:"\u041F\u043E",sortAsc:"\u041F\u043E \u0432\u043E\u0437\u0440\u0430\u0441\u0442\u0430\u043D\u0438\u044E",sortDesc:"\u041F\u043E \u0443\u0431\u044B\u0432\u0430\u043D\u0438\u044E",clearSort:"\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0441\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0443",pinLeft:"\u0417\u0430\u043A\u0440\u0435\u043F\u0438\u0442\u044C \u0441\u043B\u0435\u0432\u0430",pinRight:"\u0417\u0430\u043A\u0440\u0435\u043F\u0438\u0442\u044C \u0441\u043F\u0440\u0430\u0432\u0430",unpin:"\u041E\u0442\u043A\u0440\u0435\u043F\u0438\u0442\u044C",columnMenu:"\u041C\u0435\u043D\u044E \u0441\u0442\u043E\u043B\u0431\u0446\u0430",selectRow:"\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443",selectAllRows:"\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0432\u0441\u0435 \u0441\u0442\u0440\u043E\u043A\u0438",chooseColumns:"\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0441\u0442\u043E\u043B\u0431\u0446\u044B",columns:"\u0421\u0442\u043E\u043B\u0431\u0446\u044B",autosizeThis:"\u041F\u043E\u0434\u043E\u0431\u0440\u0430\u0442\u044C \u0448\u0438\u0440\u0438\u043D\u0443 \u0441\u0442\u043E\u043B\u0431\u0446\u0430",autosizeAll:"\u041F\u043E\u0434\u043E\u0431\u0440\u0430\u0442\u044C \u0448\u0438\u0440\u0438\u043D\u0443 \u0432\u0441\u0435\u0445 \u0441\u0442\u043E\u043B\u0431\u0446\u043E\u0432",resetColumns:"\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0441\u0442\u043E\u043B\u0431\u0446\u044B",hideColumn:"\u0421\u043A\u0440\u044B\u0442\u044C \u0441\u0442\u043E\u043B\u0431\u0435\u0446",close:"\u0417\u0430\u043A\u0440\u044B\u0442\u044C",copy:"\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C",cut:"\u0412\u044B\u0440\u0435\u0437\u0430\u0442\u044C",copyWithHeaders:"\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0441 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430\u043C\u0438",paste:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044C",pasteHint:"\u0414\u043E\u0441\u0442\u0443\u043F \u043A \u0431\u0443\u0444\u0435\u0440\u0443 \u043E\u0431\u043C\u0435\u043D\u0430 \u0437\u0430\u043F\u0440\u0435\u0449\u0451\u043D. \u041D\u0430\u0436\u043C\u0438\u0442\u0435 Ctrl+V, \u0447\u0442\u043E\u0431\u044B \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044C.",required:"\u041E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E\u0435 \u043F\u043E\u043B\u0435",invalidValue:"\u041D\u0435\u0434\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435",and:"\u0418",or:"\u0418\u043B\u0438",advancedFilter:"\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u043D\u044B\u0439 \u0444\u0438\u043B\u044C\u0442\u0440",addCondition:"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0443\u0441\u043B\u043E\u0432\u0438\u0435",duplicate:"\u042D\u0442\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0443\u0436\u0435 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F",undo:"\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C",redo:"\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u044C",deleteRows:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0435 \u0441\u0442\u0440\u043E\u043A\u0438",copyRows:"\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0435 \u0441\u0442\u0440\u043E\u043A\u0438",statusRows:"\u0421\u0442\u0440\u043E\u043A: {n}",statusFiltered:"{shown} \u0438\u0437 {total} \u0441\u0442\u0440\u043E\u043A",statusSelected:"\u0412\u044B\u0431\u0440\u0430\u043D\u043E: {n}",count:"\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E",sum:"\u0421\u0443\u043C\u043C\u0430",avg:"\u0421\u0440\u0435\u0434\u043D\u0435\u0435",min:"\u041C\u0438\u043D.",max:"\u041C\u0430\u043A\u0441.",findPlaceholder:"\u041D\u0430\u0439\u0442\u0438 \u0432 \u0442\u0430\u0431\u043B\u0438\u0446\u0435",noMatches:"\u041D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E",findNext:"\u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0435",findPrevious:"\u041F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0435\u0435",groupPanelHint:"\u041F\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u0435 \u0441\u044E\u0434\u0430 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A \u0441\u0442\u043E\u043B\u0431\u0446\u0430 \u0434\u043B\u044F \u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0438",groupByThis:"\u0413\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u043E \u044D\u0442\u043E\u043C\u0443 \u0441\u0442\u043E\u043B\u0431\u0446\u0443",ungroup:"\u0423\u0431\u0440\u0430\u0442\u044C \u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0443",expandAll:"\u0420\u0430\u0437\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u0432\u0441\u0435",collapseAll:"\u0421\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u0432\u0441\u0435",pagerRange:"{from}\u2013{to} \u0438\u0437 {total}",pageOf:"\u0421\u0442\u0440\u0430\u043D\u0438\u0446\u0430 {page} \u0438\u0437 {pages}",pageSize:"\u0421\u0442\u0440\u043E\u043A \u043D\u0430 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0435",firstPage:"\u041F\u0435\u0440\u0432\u0430\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430",previousPage:"\u041F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0430\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430",nextPage:"\u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0430\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430",lastPage:"\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u044F\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430",loading:"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430\u2026",loadFailed:"\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u0434\u0430\u043D\u043D\u044B\u0435",filters:"\u0424\u0438\u043B\u044C\u0442\u0440\u044B",clearFilters:"\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0432\u0441\u0435 \u0444\u0438\u043B\u044C\u0442\u0440\u044B",exportCsv:"\u042D\u043A\u0441\u043F\u043E\u0440\u0442 \u0432 CSV",exportExcel:"\u042D\u043A\u0441\u043F\u043E\u0440\u0442 \u0432 Excel",pivot:"\u0421\u0432\u043E\u0434\u043D\u0430\u044F",pivotMode:"\u0420\u0435\u0436\u0438\u043C \u0441\u0432\u043E\u0434\u043D\u043E\u0439 \u0442\u0430\u0431\u043B\u0438\u0446\u044B",pivotRows:"\u0413\u0440\u0443\u043F\u043F\u044B \u0441\u0442\u0440\u043E\u043A",pivotColumns:"\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0438 \u0441\u0442\u043E\u043B\u0431\u0446\u043E\u0432",pivotValues:"\u0417\u043D\u0430\u0447\u0435\u043D\u0438\u044F",total:"\u0418\u0442\u043E\u0433\u043E",addColumn:"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0441\u0442\u043E\u043B\u0431\u0435\u0446\u2026",chartBar:"\u0413\u0438\u0441\u0442\u043E\u0433\u0440\u0430\u043C\u043C\u0430",chartStacked:"\u0413\u0438\u0441\u0442\u043E\u0433\u0440\u0430\u043C\u043C\u0430 \u0441 \u043D\u0430\u043A\u043E\u043F\u043B\u0435\u043D\u0438\u0435\u043C",chartLine:"\u0413\u0440\u0430\u0444\u0438\u043A",chartArea:"\u0414\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u0430 \u0441 \u043E\u0431\u043B\u0430\u0441\u0442\u044F\u043C\u0438",chartPie:"\u041A\u0440\u0443\u0433\u043E\u0432\u0430\u044F \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u0430",chartDonut:"\u041A\u043E\u043B\u044C\u0446\u0435\u0432\u0430\u044F \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u0430",chartCombo:"\u0413\u0438\u0441\u0442\u043E\u0433\u0440\u0430\u043C\u043C\u0430 \u0438 \u0433\u0440\u0430\u0444\u0438\u043A",chartScatter:"\u0422\u043E\u0447\u0435\u0447\u043D\u0430\u044F \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u0430",freeBadge:"\u0411\u0435\u0441\u043F\u043B\u0430\u0442\u043D\u0430\u044F \u0432\u0435\u0440\u0441\u0438\u044F",ops:{contains:"\u0421\u043E\u0434\u0435\u0440\u0436\u0438\u0442",equals:"\u0420\u0430\u0432\u043D\u043E",notEquals:"\u041D\u0435 \u0440\u0430\u0432\u043D\u043E",startsWith:"\u041D\u0430\u0447\u0438\u043D\u0430\u0435\u0442\u0441\u044F \u0441",endsWith:"\u0417\u0430\u043A\u0430\u043D\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u043D\u0430",blank:"\u041F\u0443\u0441\u0442\u043E",notBlank:"\u041D\u0435 \u043F\u0443\u0441\u0442\u043E",eq:"\u0420\u0430\u0432\u043D\u043E",ne:"\u041D\u0435 \u0440\u0430\u0432\u043D\u043E",lt:"\u041C\u0435\u043D\u044C\u0448\u0435",lte:"\u041C\u0435\u043D\u044C\u0448\u0435 \u0438\u043B\u0438 \u0440\u0430\u0432\u043D\u043E",gt:"\u0411\u043E\u043B\u044C\u0448\u0435",gte:"\u0411\u043E\u043B\u044C\u0448\u0435 \u0438\u043B\u0438 \u0440\u0430\u0432\u043D\u043E",between:"\u041C\u0435\u0436\u0434\u0443",before:"\u0414\u043E",after:"\u041F\u043E\u0441\u043B\u0435"}},kn=qo;var Wo={code:"pt-BR",noRows:"Nenhuma linha para mostrar",filter:"Filtro",apply:"Aplicar",reset:"Limpar",selectAll:"(Selecionar tudo)",search:"Pesquisar\u2026",blanks:"(Vazios)",value:"Valor",valueTo:"At\xE9",sortAsc:"Ordenar crescente",sortDesc:"Ordenar decrescente",clearSort:"Remover ordena\xE7\xE3o",pinLeft:"Fixar \xE0 esquerda",pinRight:"Fixar \xE0 direita",unpin:"Desafixar",columnMenu:"Menu da coluna",selectRow:"Selecionar linha",selectAllRows:"Selecionar todas as linhas",chooseColumns:"Escolher colunas",columns:"Colunas",autosizeThis:"Ajustar largura desta coluna",autosizeAll:"Ajustar largura de todas as colunas",resetColumns:"Redefinir colunas",hideColumn:"Ocultar coluna",close:"Fechar",copy:"Copiar",cut:"Recortar",copyWithHeaders:"Copiar com cabe\xE7alhos",paste:"Colar",pasteHint:"O acesso \xE0 \xE1rea de transfer\xEAncia foi bloqueado. Pressione Ctrl+V para colar.",required:"Campo obrigat\xF3rio",invalidValue:"Valor inv\xE1lido",and:"E",or:"Ou",advancedFilter:"Filtro avan\xE7ado",addCondition:"Adicionar condi\xE7\xE3o",duplicate:"Este valor j\xE1 est\xE1 em uso",undo:"Desfazer",redo:"Refazer",deleteRows:"Excluir linhas selecionadas",copyRows:"Copiar linhas selecionadas",statusRows:"{n} linhas",statusFiltered:"{shown} de {total} linhas",statusSelected:"{n} selecionadas",count:"Contagem",sum:"Soma",avg:"M\xE9dia",min:"M\xEDn.",max:"M\xE1x.",findPlaceholder:"Localizar na tabela",noMatches:"Nenhum resultado",findNext:"Pr\xF3ximo",findPrevious:"Anterior",groupPanelHint:"Arraste um cabe\xE7alho de coluna aqui para agrupar",groupByThis:"Agrupar por esta coluna",ungroup:"Remover agrupamento",expandAll:"Expandir tudo",collapseAll:"Recolher tudo",pagerRange:"{from}\u2013{to} de {total}",pageOf:"P\xE1gina {page} de {pages}",pageSize:"Linhas por p\xE1gina",firstPage:"Primeira p\xE1gina",previousPage:"P\xE1gina anterior",nextPage:"Pr\xF3xima p\xE1gina",lastPage:"\xDAltima p\xE1gina",loading:"Carregando\u2026",loadFailed:"N\xE3o foi poss\xEDvel carregar as linhas",filters:"Filtros",clearFilters:"Limpar todos os filtros",exportCsv:"Exportar CSV",exportExcel:"Exportar Excel",pivot:"Piv\xF4",pivotMode:"Modo piv\xF4",pivotRows:"Grupos de linhas",pivotColumns:"R\xF3tulos de coluna",pivotValues:"Valores",total:"Total",addColumn:"Adicionar coluna\u2026",chartBar:"Gr\xE1fico de barras",chartStacked:"Gr\xE1fico de barras empilhadas",chartLine:"Gr\xE1fico de linhas",chartArea:"Gr\xE1fico de \xE1rea",chartPie:"Gr\xE1fico de pizza",chartDonut:"Gr\xE1fico de rosca",chartCombo:"Gr\xE1fico de barras e linhas",chartScatter:"Gr\xE1fico de dispers\xE3o",freeBadge:"Vers\xE3o gratuita",ops:{contains:"Cont\xE9m",equals:"Igual a",notEquals:"Diferente de",startsWith:"Come\xE7a com",endsWith:"Termina com",blank:"Vazio",notBlank:"N\xE3o vazio",eq:"Igual a",ne:"Diferente de",lt:"Menor que",lte:"Menor ou igual a",gt:"Maior que",gte:"Maior ou igual a",between:"Entre",before:"Antes de",after:"Depois de"}},Sn=Wo;var Ko={code:"it",noRows:"Nessuna riga da mostrare",filter:"Filtro",apply:"Applica",reset:"Reimposta",selectAll:"(Seleziona tutto)",search:"Cerca\u2026",blanks:"(Vuoti)",value:"Valore",valueTo:"A",sortAsc:"Ordine crescente",sortDesc:"Ordine decrescente",clearSort:"Rimuovi ordinamento",pinLeft:"Blocca a sinistra",pinRight:"Blocca a destra",unpin:"Sblocca",columnMenu:"Menu colonna",selectRow:"Seleziona riga",selectAllRows:"Seleziona tutte le righe",chooseColumns:"Scegli colonne",columns:"Colonne",autosizeThis:"Adatta larghezza di questa colonna",autosizeAll:"Adatta larghezza di tutte le colonne",resetColumns:"Ripristina colonne",hideColumn:"Nascondi colonna",close:"Chiudi",copy:"Copia",cut:"Taglia",copyWithHeaders:"Copia con intestazioni",paste:"Incolla",pasteHint:"Accesso agli appunti bloccato. Premi Ctrl+V per incollare.",required:"Campo obbligatorio",invalidValue:"Valore non valido",and:"E",or:"O",advancedFilter:"Filtro avanzato",addCondition:"Aggiungi condizione",duplicate:"Questo valore \xE8 gi\xE0 in uso",undo:"Annulla",redo:"Ripeti",deleteRows:"Elimina righe selezionate",copyRows:"Copia righe selezionate",statusRows:"{n} righe",statusFiltered:"{shown} di {total} righe",statusSelected:"{n} selezionate",count:"Conteggio",sum:"Somma",avg:"Media",min:"Min",max:"Max",findPlaceholder:"Trova nella tabella",noMatches:"Nessun risultato",findNext:"Successivo",findPrevious:"Precedente",groupPanelHint:"Trascina qui un'intestazione di colonna per raggruppare",groupByThis:"Raggruppa per questa colonna",ungroup:"Rimuovi raggruppamento",expandAll:"Espandi tutto",collapseAll:"Comprimi tutto",pagerRange:"{from}\u2013{to} di {total}",pageOf:"Pagina {page} di {pages}",pageSize:"Righe per pagina",firstPage:"Prima pagina",previousPage:"Pagina precedente",nextPage:"Pagina successiva",lastPage:"Ultima pagina",loading:"Caricamento\u2026",loadFailed:"Impossibile caricare le righe",filters:"Filtri",clearFilters:"Rimuovi tutti i filtri",exportCsv:"Esporta CSV",exportExcel:"Esporta Excel",pivot:"Pivot",pivotMode:"Modalit\xE0 pivot",pivotRows:"Gruppi di righe",pivotColumns:"Etichette di colonna",pivotValues:"Valori",total:"Totale",addColumn:"Aggiungi colonna\u2026",chartBar:"Grafico a barre",chartStacked:"Grafico a barre in pila",chartLine:"Grafico a linee",chartArea:"Grafico ad area",chartPie:"Grafico a torta",chartDonut:"Grafico ad anello",chartCombo:"Grafico a barre e linee",chartScatter:"Grafico a dispersione",freeBadge:"Versione gratuita",ops:{contains:"Contiene",equals:"Uguale a",notEquals:"Diverso da",startsWith:"Inizia con",endsWith:"Finisce con",blank:"Vuoto",notBlank:"Non vuoto",eq:"Uguale a",ne:"Diverso da",lt:"Minore di",lte:"Minore o uguale a",gt:"Maggiore di",gte:"Maggiore o uguale a",between:"Tra",before:"Prima di",after:"Dopo"}},Mn=Ko;var ee="__fg_select__",En={id:ee,header:"",width:44,minWidth:44,maxWidth:44,pinned:"left",sortable:!1,resizable:!1,filter:!1},pe="__fg_drag__",Ln={id:pe,header:"",width:28,minWidth:28,maxWidth:28,pinned:"left",sortable:!1,resizable:!1,filter:!1,chooser:!1},ce="__fg_rownum__",Tn=(i=52,e="#")=>({id:ce,header:e,width:i,minWidth:i,maxWidth:i,pinned:"left",sortable:!1,resizable:!1,filter:!1,chooser:!1}),I=i=>i===ee||i===pe||i===ce,Uo=120,jo=40,_o=["left","center","right"];function ne(i){if(I(i.id)||i.filter===!1)return null;if(i.filter)return i.filter;switch(i.type){case"number":return"number";case"date":return"date";case"boolean":return"set";default:return"text"}}function ie(i,e,t){let n=i.editable;if(typeof n!="function")return!!n;try{return!!n({value:i.valueGetter?i.valueGetter(e):i.field?e[i.field]:void 0,row:e,rowIndex:t,column:i})}catch{return!1}}var ge=i=>i.id!==ee&&i.sortable!==!1,qe=i=>i.id!==ee&&i.resizable!==!1;function Ge(i,e){let t=i.minWidth??jo,n=i.maxWidth??1/0;return Math.round(Math.min(n,Math.max(t,e)))}function In(i){return i.children?1+Math.max(0,...i.children.map(In)):1}var Ve=class{constructor(e){this.depth=1;this.roots_=[];this.defs=[];this.byId=new Map;this.containerWidth=0;this.layout={left:[],center:[],right:[]};this.leafById=new Map;this.setDefs(e)}setDefs(e){this.defs=e,this.byId=new Map;let t=0,n=(r,s,a)=>{let l=Array.isArray(r.children)&&r.children.length>0,d=t++,c=r.id??(l?`g${d}`:r.field);if(c||(c=`c${d}`,$(`column #${d} has neither "field" nor "id"; using "${c}"`)),this.byId.has(c)){let p=1;for(;this.byId.has(`${c}_${p}`);)p++;$(`duplicate column id "${c}"; renamed to "${c}_${p}"`),c=`${c}_${p}`}let u={id:c,def:r,parent:s,children:null,depth:a,width:Ge(r,r.width??Uo),flex:r.flex&&r.flex>0?r.flex:null,hide:r.hide??!1,pinned:r.pinned??s?.pinned??null,open:!!r.openByDefault};return this.byId.set(c,u),l&&(u.children=o(r.children).map(p=>n(p,u,a+1))),u},o=r=>{let s=r.filter(a=>a!==null&&typeof a=="object");return s.length!==r.length&&$("columns contain entries that are not objects; they were skipped"),s};this.roots_=o(e).map(r=>n(r,null,0)),this.depth=Math.max(1,...this.roots_.map(In)),this.relayout()}setContainerWidth(e){if(e===this.containerWidth)return!1;this.containerWidth=e;let t=this.displayed().map(n=>n.width).join();return this.relayout(),t!==this.displayed().map(n=>n.width).join()}roots(){return this.roots_}reset(){this.setDefs(this.defs)}region(e){return this.layout[e]}displayed(){return[...this.layout.left,...this.layout.center,...this.layout.right]}regionWidth(e){let t=this.layout[e],n=t[t.length-1];return n?n.left+n.width:0}getColumn(e){return this.leafById.get(e)}getNode(e){return this.byId.get(e)}siblings(e){let t=this.byId.get(e);return t?t.parent?t.parent.children:this.roots_:[]}setWidth(e,t){let n=this.byId.get(e);return!n||n.children?0:(n.flex=null,n.width=Ge(n.def,t),this.relayout(),n.width)}setPinned(e,t){let n=this.byId.get(e);!n||n.children||I(e)||(n.pinned=t,this.relayout())}setHide(e,t){let n=this.byId.get(e);!n||n.children||(n.hide=t,this.relayout())}move(e,t){let n=this.siblings(e),o=n.findIndex(s=>s.id===e);if(o<0)return;let[r]=n.splice(o,1);n.splice(Math.max(0,Math.min(n.length,t)),0,r),this.relayout()}headerCells(e){let t=[],n=new Map;for(let o of this.layout[e]){let r=[];for(let s=o.node.parent;s;s=s.parent)r.unshift(s);for(let s of r){let a=n.get(s.id);if(a){a.width+=o.width;continue}let l={id:s.id,label:s.def.header??"",isGroup:!0,column:null,node:s,row:s.depth,rowSpan:1,left:o.left,width:o.width};n.set(s.id,l),t.push(l)}t.push({id:o.id,label:o.def.header??o.def.field??"",isGroup:!1,column:o,node:o.node,row:o.node.depth,rowSpan:this.depth-o.node.depth,left:o.left,width:o.width})}return t}getState(){return this.leafNodes().filter(e=>!I(e.id)).map(e=>({colId:e.id,width:this.leafById.get(e.id)?.width??e.width,hide:!!e.hide,pinned:e.pinned??null}))}applyState(e){let t=new Map;e.forEach((r,s)=>{t.set(r.colId,s);let a=this.byId.get(r.colId);!a||a.children||I(r.colId)||(typeof r.width=="number"&&Number.isFinite(r.width)&&(a.flex=null,a.width=Ge(a.def,r.width)),typeof r.hide=="boolean"&&(a.hide=r.hide),"pinned"in r&&(a.pinned=r.pinned==="left"||r.pinned==="right"?r.pinned:null))}),t.set(ce,-3),t.set(pe,-2),t.set(ee,-1);let n=r=>r.children?Math.min(1/0,...r.children.map(n)):t.get(r.id)??1/0,o=r=>{let s=r.map((a,l)=>({n:a,i:l,r:n(a)}));s.sort((a,l)=>a.r===l.r?a.i-l.i:a.r-l.r),r.splice(0,r.length,...s.map(a=>a.n));for(let a of r)a.children&&o(a.children)};o(this.roots_),this.relayout()}leafNodes(){let e=[],t=n=>n.children?n.children.forEach(t):e.push(n);return this.roots_.forEach(t),e}isCollapsible(e){return!!e.children?.some(t=>t.def.columnGroupShow==="open"||t.def.columnGroupShow==="closed")}setGroupOpen(e,t){let n=this.byId.get(e);return!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?.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(){let e=this.leafNodes().filter(l=>!l.hide&&this.shownByGroups(l)),t=e.reduce((l,d)=>l+(d.flex?0:d.width),0),n=e.reduce((l,d)=>l+(d.flex??0),0),o=Math.max(0,this.containerWidth-t),r=l=>l.flex?Ge(l.def,Math.floor(o*l.flex/n)):l.width,s={left:[],center:[],right:[]};this.leafById=new Map;let a=0;for(let l of _o){let d=0;for(let c of e){if((c.pinned??"center")!==l)continue;let u={id:c.id,def:c.def,node:c,width:r(c),region:l,left:d,index:a++};d+=u.width,s[l].push(u),this.leafById.set(c.id,u)}}this.layout=s}};var j=class extends Error{constructor(t){super(t);this.code=t}};function Xo(i){let e=[],t=0;for(;t<i.length;){let n=i[t];if(/\s/.test(n))t++;else if(/[0-9.]/.test(n)){let o=/^(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?/i.exec(i.slice(t));if(!o)throw new j("#ERROR!");e.push({t:"num",v:Number(o[0])}),t+=o[0].length}else if(n==='"'){let o="";for(t++;;){if(t>=i.length)throw new j("#ERROR!");if(i[t]==='"'){if(i[t+1]==='"'){o+='"',t+=2;continue}t++;break}o+=i[t++]}e.push({t:"str",v:o})}else if(n==="["){let o=i.indexOf("]",t);if(o<0)throw new j("#ERROR!");e.push({t:"id",v:i.slice(t+1,o)}),t=o+1}else if(/[A-Za-z_À-]/.test(n)){let o=/^[A-Za-z_À-][\wÀ-]*/.exec(i.slice(t));e.push({t:"id",v:o[0]}),t+=o[0].length}else{let o=i.slice(t,t+2);if(o==="<>"||o==="<="||o===">=")e.push({t:"op",v:o}),t+=2;else if("+-*/%^&=<>(),".includes(n))e.push({t:"op",v:n}),t++;else throw new j("#ERROR!")}}return e}var We=i=>i==null||i==="";function U(i){if(typeof i=="number")return i;if(typeof i=="boolean")return i?1:0;if(We(i))return 0;if(typeof i=="string"&&i.trim()!==""&&Number.isFinite(Number(i)))return Number(i);throw new j("#VALUE!")}var Ke=i=>We(i)?"":typeof i=="boolean"?i?"TRUE":"FALSE":String(i);function Yo(i,e){let t=Math.trunc(e),n=+`${Math.round(+`${Math.abs(i)}e${t}`)}e${-t}`;return i<0?-n:n}var Dn={ROUND:i=>Yo(U(i[0]),i.length>1?U(i[1]):0),ABS:i=>Math.abs(U(i[0])),MIN:i=>i.length?Math.min(...i.map(U)):0,MAX:i=>i.length?Math.max(...i.map(U)):0,SUM:i=>i.reduce((e,t)=>e+U(t),0),AVG:i=>{if(!i.length)throw new j("#DIV/0!");return i.reduce((e,t)=>e+U(t),0)/i.length}};function Zo(i,e){return(typeof i=="number"||We(i))&&(typeof e=="number"||We(e))?U(i)-U(e):Ke(i).localeCompare(Ke(e),void 0,{sensitivity:"accent"})}var Et=class{constructor(e,t){this.tokens=e;this.resolve=t;this.i=0}parse(){let e=this.comparison();if(this.i<this.tokens.length)throw new j("#ERROR!");return e}peek(e){let t=this.tokens[this.i];return!!t&&t.t==="op"&&(e===void 0||t.v===e)}take(e){return this.peek(e)?(this.i++,!0):!1}comparison(){let e=this.concat();for(let t of["=","<>","<=",">=","<",">"])if(this.take(t)){let n=Zo(e,this.concat());return t==="="?n===0:t==="<>"?n!==0:t==="<"?n<0:t===">"?n>0:t==="<="?n<=0:n>=0}return e}concat(){let e=this.additive();for(;this.take("&");)e=Ke(e)+Ke(this.additive());return e}additive(){let e=this.multiplicative();for(;;)if(this.take("+"))e=U(e)+U(this.multiplicative());else if(this.take("-"))e=U(e)-U(this.multiplicative());else return e}multiplicative(){let e=this.unary();for(;;)if(this.take("*"))e=U(e)*U(this.unary());else if(this.take("/")||this.take("%")){let t=this.tokens[this.i-1].v,n=U(this.unary());if(n===0)throw new j("#DIV/0!");e=t==="/"?U(e)/n:U(e)%n}else return e}unary(){return this.take("-")?-U(this.unary()):this.take("+")?U(this.unary()):this.power()}power(){let e=this.primary();return this.take("^")?U(e)**U(this.unary()):e}primary(){let e=this.tokens[this.i++];if(!e)throw new j("#ERROR!");if(e.t==="num"||e.t==="str")return e.v;if(e.t==="op"){if(e.v!=="(")throw new j("#ERROR!");let n=this.comparison();if(!this.take(")"))throw new j("#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 j("#ERROR!")}let o=t.toUpperCase();if(o==="IF"){if(n.length<2)throw new j("#ERROR!");return(typeof n[0]=="boolean"?n[0]:U(n[0])!==0)?n[1]:n.length>2?n[2]:!1}let r=Object.hasOwn(Dn,o)?Dn[o]:void 0;if(!r)throw new j("#NAME?");return r(n)}return/^(true|false)$/i.test(t)?t.toLowerCase()==="true":this.resolve(t)}},Jo=32;function Lt(i,e,t=new Set,n=0){try{let o=s=>{if(!e||!Object.hasOwn(e,s))throw new j("#REF!");let a=e[s];if(typeof a=="string"&&a.startsWith("=")){if(t.has(s)||n>=Jo)throw new j("#CYCLE!");let l=Lt(a,e,new Set([...t,s]),n+1);if(typeof l=="string"&&/^#[A-Z/0]+[!?]$/.test(l))throw new j(l);return l}return a},r=new Et(Xo(i.slice(1)),o).parse();return typeof r=="number"&&!Number.isFinite(r)?"#NUM!":r}catch(o){return o instanceof j?o.code:"#ERROR!"}}var ye=i=>typeof i=="string"&&i.length>1&&i.startsWith("=");function N(i,e){if(i.valueGetter)try{return i.valueGetter(e)}catch{$(`valueGetter of column "${i.id??i.field}" threw; rendering an empty cell`);return}if(i.field==null)return;let t=e[i.field];return i.formulas&&ye(t)?Lt(t,e,new Set([i.field])):t}var Ue=["left","center","right"],Pn=[[">=","gte"],["<=","lte"],["<>","ne"],["!=","ne"],[">","gt"],["<","lt"],["=","eq"]],An=[[">","after"],["<","before"],["=","equals"]],Qo=/^(.+?)\s*(?:~|\.\.)\s*(.+)$/,Tt=i=>{let e=Number(i.replace(/[,\s₩$€¥]/g,""));return i.trim()!==""&&Number.isFinite(e)?e:null},It=i=>{let e=/^(\d{4})[-./]\s*(\d{1,2})[-./]\s*(\d{1,2})\.?$/.exec(i.trim());return e?`${e[1]}-${e[2].padStart(2,"0")}-${e[3].padStart(2,"0")}`:null};function er(i,e){let t=e.trim();if(!t)return null;if(i==="text")return{type:"text",op:"contains",value:t};let n=Qo.exec(t);if(i==="number"){if(n){let l=Tt(n[1]),d=Tt(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=Pn.find(([l])=>t.startsWith(l)),a=Tt(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=It(n[1]),a=It(n[2]);return!s||!a?void 0:{type:"date",op:"between",value:s<a?s:a,valueTo:s<a?a:s}}let o=An.find(([s])=>t.startsWith(s)),r=It(o?t.slice(o[0].length):t);return r?{type:"date",op:o?o[1]:"equals",value:r}:void 0}function tr(i){if(!i)return"";if(i.type==="text")return i.op==="contains"?i.value??"":"";if(i.type==="number"){if(i.op==="between")return`${i.value}~${i.valueTo}`;let e=Pn.find(([,t])=>t===i.op)?.[0];return e&&i.value!==void 0?`${e==="="?"":e}${i.value}`:""}if(i.type==="date"){if(i.op==="between")return`${i.value}~${i.valueTo}`;let e=An.find(([,t])=>t===i.op)?.[0];return e&&i.value?`${e==="="?"":e}${i.value}`:""}return""}var je=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 Ue)this.inners[n]=y("div","fg-filter-row",{role:"row"}),t[n].append(this.inners[n])}get height(){return Math.round(this.grid.renderer.opts.rowHeight*.95)}render(){let{columns:e,store:t}=this.grid,n=this.height,o=e.displayed();t.state.data!==this.data&&(this.data=t.state.data,this.layout="");let r=`${n}|${t.state.locale.code}|${o.map(s=>`${s.id}:${s.left}:${s.width}:${s.region}`).join(",")}`;if(r!==this.layout){this.layout=r;for(let s of Ue){let a=this.inners[s];a.style.width=`${e.regionWidth(s)}px`,a.style.height=`${n}px`,a.replaceChildren(...e.region(s).map(l=>this.cell(l,n)))}this.rebuilt=!0}this.sync()}sync(){let e=this.grid.store.state.filters;if(!(e===this.synced&&!this.rebuilt)){this.synced=e,this.rebuilt=!1;for(let t of Ue)for(let n of this.inners[t].querySelectorAll("[data-col]")){let o=n.dataset.col,r=e[o];if(n.closest(".fg-filter-cell").classList.toggle("fg-filter-active",!!r),!(n===n.ownerDocument.activeElement||n.getRootNode().activeElement===n)){if(n instanceof HTMLSelectElement){let s=r?.type==="set"&&r.values.length===1?JSON.stringify(r.values[0]):"";[...n.options].some(a=>a.value===s)&&(n.value=s)}else n.value=tr(r);n.classList.remove("fg-filter-bad")}}}}cell(e,t){let n=y("div","fg-filter-cell");n.style.left=`${e.left}px`,n.style.width=`${e.width}px`,n.style.height=`${t}px`;let o=I(e.id)?null:ne(e.def);if(!o)return n;let r=this.grid.store.state.locale,s=`${r.filter}: ${e.def.header??e.def.field??e.id}`;if(o==="set"){let d=y("select","fg-filter-input",{"aria-label":s});d.dataset.col=e.id;let c=y("option","",{value:""});c.textContent=r.selectAll,d.append(c);for(let u of this.distinct(e.def)){let p=y("option","",{value:JSON.stringify(u)});p.textContent=u===!0?"\u2713":u===!1?"\u2717":String(u),d.append(p)}return d.addEventListener("change",()=>{this.grid.setFilter(e.id,d.value?{type:"set",values:[JSON.parse(d.value)]}:null)}),n.append(d),n}let a=y("input","fg-filter-input",{type:"text","aria-label":s,spellcheck:"false",autocomplete:"off"});a.dataset.col=e.id,o==="number"&&(a.placeholder=">0, 10~20"),o==="date"&&(a.placeholder=">2026-01-01");let l=()=>{let d=er(o,a.value);a.classList.toggle("fg-filter-bad",d===void 0),d!==void 0&&this.grid.setFilter(e.id,d)};return a.addEventListener("input",()=>{clearTimeout(this.timers.get(e.id)),this.timers.set(e.id,window.setTimeout(l,200))}),a.addEventListener("keydown",d=>{d.stopPropagation(),d.key==="Enter"?(clearTimeout(this.timers.get(e.id)),l()):d.key==="Escape"&&(a.value="",clearTimeout(this.timers.get(e.id)),l())}),n.append(a),n}distinct(e){let t=new Map;for(let n of this.grid.store.state.data){let o=N(e,n);if(o==null||o==="")continue;let r=JSON.stringify(o);if(t.has(r)||t.set(r,o),t.size>=200)break}return[...t.values()].sort((n,o)=>String(n).localeCompare(String(o)))}setTransform(e){this.inners.center.style.transform=`translateX(${-e}px)`}destroy(){for(let e of this.timers.values())clearTimeout(e);for(let e of Ue)this.inners[e].remove()}};function H(i){return i==null||typeof i=="string"&&i.trim()===""||typeof i=="number"&&Number.isNaN(i)}var $n=i=>String(i).padStart(2,"0");function Z(i){if(H(i))return null;if(typeof i=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(i))return i;let e=i instanceof Date?i:new Date(i);return Number.isNaN(e.getTime())?null:`${e.getFullYear()}-${$n(e.getMonth()+1)}-${$n(e.getDate())}`}function Y(i){return H(i)?"":i instanceof Date?Z(i)??"":String(i)}var se=()=>!0;function _e(i){switch(i.type){case"combined":{let e=(Array.isArray(i.conditions)?i.conditions:[]).map(_e);return e.length?i.operator==="or"?t=>e.some(n=>n(t)):t=>e.every(n=>n(t)):se}case"text":{let e=(i.value??"").toLowerCase(),t=n=>H(n)?"":String(n).toLowerCase();switch(i.op){case"contains":return n=>t(n).includes(e);case"equals":return n=>t(n)===e;case"notEquals":return n=>t(n)!==e;case"startsWith":return n=>t(n).startsWith(e);case"endsWith":return n=>t(n).endsWith(e);case"blank":return H;case"notBlank":return n=>!H(n)}return se}case"number":{let e=n=>H(n)?NaN:Number(n);if(i.op==="blank")return n=>Number.isNaN(e(n));if(i.op==="notBlank")return n=>!Number.isNaN(e(n));let t=i.value;if(t==null||Number.isNaN(t))return se;switch(i.op){case"eq":return n=>e(n)===t;case"ne":return n=>e(n)!==t;case"lt":return n=>e(n)<t;case"lte":return n=>e(n)<=t;case"gt":return n=>e(n)>t;case"gte":return n=>e(n)>=t;case"between":{let n=i.valueTo;if(n==null||Number.isNaN(n))return se;let o=Math.min(t,n),r=Math.max(t,n);return s=>{let a=e(s);return a>=o&&a<=r}}}return se}case"date":{if(i.op==="blank")return n=>Z(n)===null;if(i.op==="notBlank")return n=>Z(n)!==null;let e=i.value;if(!e)return se;let t=n=>Z(n);switch(i.op){case"equals":return n=>t(n)===e;case"before":return n=>{let o=t(n);return o!==null&&o<e};case"after":return n=>{let o=t(n);return o!==null&&o>e};case"between":{let n=i.valueTo;if(!n)return se;let o=e<n?e:n,r=e<n?n:e;return s=>{let a=t(s);return a!==null&&a>=o&&a<=r}}}return se}case"set":{let e=new Set(i.values.map(Y));return t=>e.has(Y(t))}}return se}function Fn(i){let e=i.trim().toLowerCase();return e?e.split(/\s+/):[]}function Nn(i,e){return i.every(t=>e.includes(t))}function Dt(i,e,t){let n=[];for(let o of Array.isArray(i?.conditions)?i.conditions:[]){if(!o||typeof o!="object")continue;if("conditions"in o){let a=Dt(o,e,t);a&&n.push(a);continue}let r=e(o.colId);if(!r||!o.model)continue;let s=_e(o.model);n.push(a=>s(t(r,a)))}return n.length?i.operator==="or"?o=>n.some(r=>r(o)):o=>n.every(r=>r(o)):null}var On=new Map;function nr(i){if(i==="integer")return{maximumFractionDigits:0};if(i==="percent")return{style:"percent"};if(i.startsWith("currency:"))return{style:"currency",currency:i.slice(9)};if(!/^[#0,]*(\.[#0]+)?%?$/.test(i)||!/[#0]/.test(i))return null;let e=i.endsWith("%"),t=e?i.slice(0,-1):i,n=t.includes(".")?t.split(".")[1]:"";return{useGrouping:t.includes(","),minimumFractionDigits:(n.match(/0/g)??[]).length,maximumFractionDigits:n.length,...e?{style:"percent"}:{}}}var Xe={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 oe(i){if(H(i))return null;if(i instanceof Date)return Number.isNaN(i.getTime())?null:i;if(typeof i=="string"){let t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(i);if(t)return new Date(Number(t[1]),Number(t[2])-1,Number(t[3]))}if(typeof i!="string"&&typeof i!="number")return null;let e=new Date(i);return Number.isNaN(e.getTime())?null:e}function or(i,e,t){switch(i){case"number":{let n={};if(typeof e=="string"){let r=nr(e);r||$(`unknown number format "${e}"`),n=r??{}}else e&&(n=e);let o=new Intl.NumberFormat(t,n);return r=>{if(H(r))return"";let s=typeof r=="number"?r:Number(r);return Number.isNaN(s)?String(r):o.format(s)}}case"date":{if(t.toLowerCase().startsWith("ko")&&(e===void 0||e==="date"||e==="datetime")){let r=a=>String(a).padStart(2,"0"),s=e==="datetime";return a=>{let l=oe(a);if(!l)return H(a)?"":String(a);let d=`${l.getFullYear()}-${r(l.getMonth()+1)}-${r(l.getDate())}`;return s?`${d} ${r(l.getHours())}:${r(l.getMinutes())}`:d}}let n=Xe.date;typeof e=="string"?(Xe[e]||$(`unknown date format "${e}"`),n=Xe[e]??Xe.date):e&&(n=e);let o=new Intl.DateTimeFormat(t,n);return r=>{let s=oe(r);return s?o.format(s):H(r)?"":String(r)}}case"boolean":return n=>n===!0?"\u2713":n===!1?"\u2717":"";default:return n=>H(n)?"":n instanceof Date?n.toISOString():String(n)}}function W(i,e){if(i.sparkline)return r=>Array.isArray(r)?r.join(", "):r==null?"":String(r);let t=i.format,n=`${e}|${i.type??"text"}|${typeof t=="string"?t:JSON.stringify(t??null)}`,o=On.get(n);return o||(o=or(i.type,t,e),On.set(n,o)),o}function Pt(i){let e=[];for(let t of i){if(H(t)||t instanceof Date)continue;let n=typeof t=="number"?t:Number(t);Number.isNaN(n)||e.push(n)}return e}function Hn(i,e){let t=i.filter(o=>o instanceof Date&&!Number.isNaN(o.getTime()));if(t.length)return t.reduce((o,r)=>(e?r>o:r<o)?r:o);let n=Pt(i);return n.length?e?Math.max(...n):Math.min(...n):null}function be(i,e,t){if(typeof i=="function")return i(e,t);switch(i){case"sum":return Pt(e).reduce((n,o)=>n+o,0);case"avg":{let n=Pt(e);return n.length?n.reduce((o,r)=>o+r,0)/n.length:null}case"min":return Hn(e,!1);case"max":return Hn(e,!0);case"count":return t.length}return null}function At(i){return typeof i=="object"&&i!==null&&"agg"in i?i:{agg:i}}function Bn(i,e,t){let n=new Map,o=(r,s)=>{let a=n.get(r);return a||n.set(r,a=e.map(l=>N(s,l))),a};return i.map(r=>{let s={};for(let[a,l]of Object.entries(r.columns??{})){let d=t(a);d&&(s[a]=be(At(l).agg,o(a,d),e))}return s})}function Ee(i,e,t,n,o){if(!i)return 1;let r=1;try{r=Math.floor(Number(i({value:N(e,t),row:t,rowIndex:n})))}catch{r=1}return Number.isFinite(r)?Math.max(1,Math.min(o,r)):1}function Ye(i,e){let t=i.length,n=new Int32Array(t),o=new Int32Array(t);if(e.rowSpan){for(let a=0;a<t;){let l=Ee(e.rowSpan,e,i[a],a,t-a);for(let d=a;d<a+l;d++)n[d]=a,o[d]=a+l-1;a+=l}return{start:n,end:o}}let r=typeof e.merge=="function"?(a,l)=>{try{return!!e.merge(N(e,i[a]),N(e,i[l]),i[a],i[l])}catch{return!1}}:(()=>{let a=i.map(l=>{let d=N(e,l);return H(d)?null:Y(d)});return(l,d)=>a[l]!==null&&a[l]===a[d]})(),s=0;for(let a=1;a<=t;a++)if(!(a<t&&r(a-1,a))){for(let l=s;l<a;l++)n[l]=s,o[l]=a-1;s=a}return{start:n,end:o}}function zn(i,e,t,n,o=4){if(n<=0||t<=0)return{first:0,last:-1};let r=Math.max(0,Math.floor(i/t)-o),s=Math.floor((i+e)/t);return{first:Math.min(r,n-1),last:Math.min(n-1,s+o)}}function Ze(i,e,t,n,o=2){let r=i.length;if(!r)return{first:0,last:-1};let s=0,a=r-1;for(;s<a;){let c=s+a>>1;i[c]+e[c]<=t?s=c+1:a=c}let l=s,d=t+n;for(a=r-1;s<a;){let c=s+a+1>>1;i[c]<d?s=c:a=c-1}return{first:Math.max(0,l-o),last:Math.min(r-1,Math.max(l,s)+o)}}function Gn(i,e,t,n,o=4){if(n<=0)return{first:0,last:-1};let r=0,s=n-1;for(;r<s;){let d=r+s>>1;i[d+1]<=e?r=d+1:s=d}let a=r,l=e+t;for(s=n-1;r<s;){let d=r+s+1>>1;i[d]<l?r=d:s=d-1}return{first:Math.max(0,a-o),last:Math.min(n-1,r+o)}}var J=["left","center","right"],Vn=6,rr=8,$t=2,ir='<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>',Ft='<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 sr='<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 y(i,e="",t={}){let n=document.createElement(i);e&&(n.className=e);for(let[o,r]of Object.entries(t))n.setAttribute(o,r);return n}var Je=class{constructor(e,t,n){this.grid=t;this.opts=n;this.filterRow=null;this.activeCellId="";this.idBase=`fg${Math.random().toString(36).slice(2,8)}`;this.painted={left:new Map,center:new Map,right:new Map};this.pool={left:[],center:[],right:[]};this.frame=0;this.headerDirty=!0;this.version=0;this.lastRange={first:0,last:-1};this.summaryEl=null;this.summaryPanes=null;this.summaryInners=null;this.canvasSummary={left:[],center:[],right:[]};this.topOffset=0;this.pinnedTop=null;this.pinnedBottom=null;this.statusEl=null;this.statusKey="";this.pagerEl=null;this.cards=null;this.cardMode=!1;this.pagerKey="";this.offsets=null;this.details=new Map;this.firstDataId="";this.rowHeights=new Map;this.heightsVersion=0;this.groupLabelId="";this.onScroll=()=>{this.frame&&cancelAnimationFrame(this.frame),this.frame=0,this.render(),this.grid.events.emit("scroll",this.getScroll())};this.onSideWheel=e=>{e.deltaY&&(e.preventDefault(),this.scroller.scrollTop+=e.deltaY)};this.overlayKey="";this.heightFn=null;this.onCardClick=e=>{let t=e.target,n=t.closest(".fg-card");if(!n)return;let o=Number(n.dataset.row),r=this.grid.rowModel.getRow(o);if(!r||r.kind)return;if(t.closest(".fg-card-check")){this.grid.selectFromClick(o,!0,!1),this.invalidate({rows:!0});return}let s=t.closest(".fg-card-value")?.dataset.col,a=s?this.grid.columns.getColumn(s):void 0;a&&this.grid.events.emit("cellClick",{row:r.data,rowIndex:o,colId:a.id,value:N(a.def,r.data),event:e})};this.root=y("div","",{tabindex:"-1"}),this.root.addEventListener("focus",()=>this.gridEl.focus({preventScroll:!0})),this.gridEl=y("div","fg-grid",{role:"grid",tabindex:"0"}),this.headerEl=y("div","fg-header",{role:"rowgroup"}),this.bodyEl=y("div","fg-body",{role:"rowgroup"});let o=r=>({left:y("div",`${r} ${r}-left`),center:y("div",`${r} ${r}-center`),right:y("div",`${r} ${r}-right`)});this.headerPanes=o("fg-header-pane"),this.headerInners=o("fg-header-inner");for(let r of J)this.headerInners[r].setAttribute("role","row");this.bodyPanes=o("fg-body-pane"),this.canvases=o("fg-canvas");for(let r of J)this.headerPanes[r].dataset.region=r,this.bodyPanes[r].dataset.region=r,this.headerPanes[r].append(this.headerInners[r]),this.bodyPanes[r].append(this.canvases[r]),this.headerEl.append(this.headerPanes[r]),this.bodyEl.append(this.bodyPanes[r]);this.scroller=this.bodyPanes.center,t.options.filterRow&&(this.filterRow=new je(t,this.headerPanes)),this.overlay=y("div","fg-overlay",{"aria-live":"polite"}),this.main=y("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(){return this.cards?.scroller??this.scroller}getScroll(){let e=this.activeScroller;return{top:e.scrollTop,left:e.scrollLeft}}setScroll(e){let t=this.activeScroller;typeof e?.top=="number"&&Number.isFinite(e.top)&&(t.scrollTop=Math.max(0,e.top)),typeof e?.left=="number"&&Number.isFinite(e.left)&&(t.scrollLeft=Math.max(0,e.left))}applyFont(e,t){e?this.root.style.setProperty("--fg-font-size",`${e}px`):this.root.style.removeProperty("--fg-font-size"),t?this.root.style.setProperty("--fg-font",t):this.root.style.removeProperty("--fg-font")}applyTheme(){let e=this.grid.options.direction==="rtl";this.root.className=`fg-root fg-theme-${this.grid.store.state.theme}${e?" fg-rtl":""}${this.cardMode?" fg-card-mode":""}${this.grid.density!=="normal"?` fg-density-${this.grid.density}`:""}`,this.root.setAttribute("dir",e?"rtl":"ltr")}get rtl(){return this.grid.options.direction==="rtl"}invalidate(e={}){e.header&&(this.headerDirty=!0),e.rows&&this.version++,this.schedule()}schedule(){this.frame||(this.frame=requestAnimationFrame(()=>{this.frame=0,this.render()}))}render(){let{columns:e,rowModel:t,store:n,options:o}=this.grid,{rowHeight:r,headerHeight:s}=this.opts,a=this.scroller.offsetWidth-this.scroller.clientWidth;e.setContainerWidth(Math.max(0,this.main.clientWidth-a))&&(this.headerDirty=!0,this.version++);let l=t.getRowCount(),d=!!this.grid.options.autoRowHeight&&!t.server,c=t.layout(r,this.detailHeight(),d?this.rowHeights:void 0,this.heightsVersion,t.server?void 0:this.heightOf);if(this.offsets=c.uniform?null:c.offsets,this.firstDataId=e.displayed().find(R=>!I(R.id))?.id??"",this.groupLabelId=e.region("center").find(R=>!I(R.id))?.id??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(),p=u?u.opts.rows.length:0,h=u?.opts.position??"bottom",v=u?u.opts.pinned!==!1:!1;this.topOffset=u&&!v&&h==="top"?p*r:0;let w=u&&!v&&h==="bottom"?p*r:0;this.syncSummaryPane(u&&v?h:null,p*r);let m=e.depth*s+(this.filterRow?.height??0);this.headerEl.style.height=`${m}px`;for(let R of J){let k=e.regionWidth(R);R!=="center"&&(this.headerPanes[R].style.width=this.bodyPanes[R].style.width=`${k}px`,this.headerPanes[R].hidden=this.bodyPanes[R].hidden=k===0),this.canvases[R].style.width=`${k}px`,this.canvases[R].style.height=`${this.rowsHeight(l)+this.topOffset+w}px`}o.autoHeight&&!this.useCards()&&(this.root.classList.add("fg-auto-height"),this.bodyEl.style.height=`${this.rowsHeight(l)+this.topOffset+w+Math.max(0,this.scroller.offsetHeight-this.scroller.clientHeight)}px`);let f=this.scroller.offsetHeight-this.scroller.clientHeight;this.bodyPanes.left.style.marginBottom=this.bodyPanes.right.style.marginBottom=`${f}px`;let g=this.gridEl;g.setAttribute("role",o.treeData||this.grid.getGroupBy().length?"treegrid":"grid"),g.setAttribute("aria-rowcount",String(l+e.depth+(this.filterRow?1:0))),g.setAttribute("aria-colcount",String(e.displayed().length)),o.rowSelection==="multiple"&&g.setAttribute("aria-multiselectable","true"),this.headerDirty&&(this.headerDirty=!1,this.renderHeader()),this.filterRow?.render(),this.renderRows(l),this.updateActiveCell(),d&&this.measureRows(),this.renderSummary(l,u&&u.opts.rows,u?.values??[],v,h),this.pinnedTop=this.renderPinned(this.pinnedTop,"top",this.grid.pinnedRows.top),this.pinnedBottom=this.renderPinned(this.pinnedBottom,"bottom",this.grid.pinnedRows.bottom),this.renderStatusBar(t.dataCount()),this.renderPager(),this.orderSections(u&&v?h:null),this.paintOverlay(l),this.overlay.style.top=`${m}px`;let{scrollTop:C,scrollLeft:x}=this.scroller;this.bodyPanes.left.scrollTop=this.bodyPanes.right.scrollTop=C,this.headerInners.center.style.transform=`translateX(${-x}px)`,this.filterRow?.setTransform(x),this.summaryInners&&(this.summaryInners.center.style.transform=`translateX(${-x}px)`);for(let R of[this.pinnedTop,this.pinnedBottom])R&&(R.inners.center.style.transform=`translateX(${-x}px)`);this.grid.fillHandle.update()}orderSections(e){let t=[e==="top"?this.summaryEl:null,this.pinnedTop?.el??null].filter(s=>!!s),n=[this.pinnedBottom?.el??null,e==="bottom"?this.summaryEl:null].filter(s=>!!s),o=[this.statusEl,this.pagerEl].filter(s=>!!s);for(let s of t)s.nextElementSibling!==this.bodyEl&&!t.includes(s.nextElementSibling)&&this.gridEl.insertBefore(s,this.bodyEl);let r=this.bodyEl;for(let s=t.length-1;s>=0;s--)r.previousElementSibling!==t[s]&&this.gridEl.insertBefore(t[s],r),r=t[s];r=this.bodyEl;for(let s of n)r.nextElementSibling!==s&&r.after(s),r=s;r=this.gridEl;for(let s of o)r.nextElementSibling!==s&&r.after(s),r=s}paintOverlay(e){let{grid:t}=this,{store:n,rowModel:o,options:r}=t,s=t.forcedOverlay??(e>0?null:o.loading()?"loading":"noRows");if(this.overlay.hidden=!s,!s){this.overlayKey="";return}let a=!o.server&&n.state.data.length>0,l=s==="loading"?r.loadingOverlay:r.noRowsOverlay,d=`${s}|${a}|${n.state.locale.code}`;if(d!==this.overlayKey)if(this.overlayKey=d,this.overlay.classList.toggle("fg-overlay-custom",typeof l=="function"),l==null)this.overlay.textContent=s==="loading"?n.state.locale.loading:n.state.locale.noRows;else if(typeof l=="string")this.overlay.textContent=l;else try{let c=l({filtered:a});typeof c=="string"?this.overlay.textContent=c:this.overlay.replaceChildren(c)}catch{$(`${s==="loading"?"loadingOverlay":"noRowsOverlay"} threw`),this.overlay.textContent=s==="loading"?n.state.locale.loading:n.state.locale.noRows}}updateActiveCell(){let e=this.activeCellId?this.root.getRootNode().getElementById?.(this.activeCellId)??null: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?.el.remove(),null;let o=e??new Nt(`fg-pinned-rows fg-pinned-${t}`),{columns:r}=this.grid,s=this.opts.rowHeight;o.size(r,n.length*s,this.scroller.offsetWidth-this.scroller.clientWidth);let a=r.region("center"),l=Ze(a.map(d=>d.left),a.map(d=>d.width),this.scroller.scrollLeft,this.scroller.clientWidth,$t);for(let d of J){let c=d==="center"?a.slice(l.first,l.last+1):r.region(d);o.inners[d].replaceChildren(...n.map((u,p)=>{let h=y("div","fg-row fg-row-pinned",{role:"row"});h.style.transform=`translateY(${p*s}px)`,h.style.height=`${s}px`;let v={id:`pinned-${t}-${p}`,data:u,sourceIndex:-1};for(let w of c){let m=y("div","fg-cell",{role:"gridcell"});I(w.id)?(m.style.left=`${w.left}px`,m.style.width=`${w.width}px`):this.paintCell(m,v,-1,w,!1,!1),h.append(m)}return h}))}return o}renderStatusBar(e){if(!this.grid.options.statusBar){this.statusEl?.remove(),this.statusEl=null;return}let{grid:t}=this,n=t.store.state,o=t.rowModel.server?e:t.viewRows().length,r=`${this.version}|${e}|${o}|${n.selected.size}|${JSON.stringify(n.range)}|${n.locale.code}`;if(this.statusEl&&r===this.statusKey)return;this.statusKey=r,this.statusEl??(this.statusEl=y("div","fg-statusbar",{role:"status","aria-live":"polite"}));let s=n.locale,a=new Intl.NumberFormat(s.code,{maximumFractionDigits:2}),l=y("span","fg-status-rows");l.textContent=(e===o?s.statusRows.replace("{n}",a.format(o)):s.statusFiltered.replace("{shown}",a.format(e)).replace("{total}",a.format(o)))+(n.selected.size?` \xB7 ${s.statusSelected.replace("{n}",a.format(n.selected.size))}`:"");let d=y("span","fg-status-aggs"),c=t.rangeAggregates();if(c&&c.cells>1){let u=[`${s.count} ${a.format(c.count)}`];c.numbers&&u.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=u.join(" ")}this.statusEl.replaceChildren(l,d)}renderHeader(){let{columns:e,store:t}=this.grid,{sort:n,filters:o,locale:r}=t.state;for(let s of J){let a=this.headerInners[s];a.style.width=`${e.regionWidth(s)}px`,a.style.height=`${e.depth*this.opts.headerHeight}px`,a.replaceChildren(...e.headerCells(s).map(l=>this.headerCell(l,n,o,r)))}}headerCell(e,t,n,o){let r=this.opts.headerHeight,s=y("div",e.isGroup?"fg-header-cell fg-header-group":"fg-header-cell",{role:"columnheader"});if(s.dataset.col=e.id,s.style.left=`${e.left}px`,s.style.top=`${e.row*r}px`,s.style.width=`${e.width}px`,s.style.height=`${e.rowSpan*r}px`,I(e.id))return e.id===ce&&(s.classList.add("fg-header-rownum"),s.textContent=e.label),e.id===ee&&(s.classList.add("fg-header-select"),s.append(this.selectAllBox(o))),s;let a=y("span","fg-header-label"),l=e.node.def;if(a.textContent=e.label,l.headerRenderer)try{let p=l.headerRenderer({header:e.label,column:l});typeof p=="string"?a.innerHTML=p:a.replaceChildren(p)}catch{$(`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 p=e.node.open,h=y("button",p?"fg-colgroup-toggle fg-expanded":"fg-colgroup-toggle",{type:"button",tabindex:"-1","aria-expanded":String(p),"aria-label":p?o.collapseAll:o.expandAll});h.textContent=p?"\u2212":"+",h.addEventListener("click",v=>{v.stopPropagation(),this.grid.setColumnGroupOpened(e.id,!p)}),s.classList.add("fg-header-collapsible"),d=h}if(l.headerClass)try{let p=typeof l.headerClass=="function"?l.headerClass(l):l.headerClass;p&&s.classList.add(...p.split(/\s+/).filter(Boolean))}catch{$(`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;(c.wrapHeaderText??this.grid.options.wrapHeaderText)&&s.classList.add("fg-header-wrap"),s.setAttribute("aria-colindex",String(e.column.index+1)),(c.align??(c.type==="number"?"right":"left"))==="right"&&s.classList.add("fg-align-right");let u=t.findIndex(p=>p.colId===e.id);if(s.setAttribute("aria-sort",u<0?"none":t[u].dir==="asc"?"ascending":"descending"),ge(c)&&s.classList.add("fg-sortable"),u>=0){let p=y("span","fg-sort-icon");if(p.textContent=t[u].dir==="asc"?"\u2191":"\u2193",t.length>1){let h=y("sup");h.textContent=String(u+1),p.append(h)}s.append(p)}if(ge(c)||ne(c)){let p=!!n[e.id],h=y("button",p?"fg-menu-btn fg-filter-active":"fg-menu-btn",{type:"button",tabindex:"-1","aria-label":o.columnMenu});h.innerHTML=p?sr:ir,s.append(h)}return qe(c)&&s.append(y("div","fg-resize",{"aria-hidden":"true"})),s}selectAllBox(e){let t=this.grid.selectableRows(),n=this.grid.store.state.selected,o=0;for(let s of t)n.has(s.id)&&o++;let r=y("input","fg-checkbox fg-select-all",{type:"checkbox",tabindex:"-1","aria-label":e.selectAllRows});return r.checked=t.length>0&&o===t.length,r.indeterminate=o>0&&o<t.length,r.hidden=this.grid.options.rowSelection!=="multiple"||this.grid.options.headerCheckbox===!1,r}renderRows(e){let{columns:t,rowModel:n,store:o}=this.grid,{selected:r,focus:s}=o.state,a=this.grid.allRangeBounds(),l=this.grid.mergeSpans(),d=Math.max(0,this.scroller.scrollTop-this.topOffset),c=this.grid.options.autoHeight&&!n.server?{first:0,last:e-1}:this.offsets?Gn(this.offsets,d,this.scroller.clientHeight,e,Vn):zn(d,this.scroller.clientHeight,this.opts.rowHeight,e,Vn);this.lastRange=c;let u=t.region("center"),p=Ze(u.map(h=>h.left),u.map(h=>h.width),this.scroller.scrollLeft,this.scroller.clientWidth,$t);u.some(h=>h.def.colSpan)&&(p.first=Math.max(0,p.first-rr));for(let h of J){let v=h==="center"?u.slice(p.first,p.last+1):t.region(h),w=this.painted[h];for(let[f,g]of w)f>=c.first&&f<=c.last&&v.length||(g.el.remove(),this.pool[h].push(g.el),w.delete(f));if(!v.length)continue;let m=h==="center"?`${p.first}-${p.last}`:"";for(let f=c.first;f<=c.last;f++){let g=n.getRow(f),C=r.has(g.id),x=s&&s.rowIndex===f?s.colId:"",R=a.filter(M=>f>=M.r1&&f<=M.r2),k=R.map(M=>`${M.c1}-${M.c2}`).join(","),E=this.mergeState(l,v,f,c.first),b=g.kind==="detail"?`${this.scroller.scrollLeft}:${this.scroller.clientWidth}`:"",S=`${g.id}|${this.version}|${m}|${C?1:0}${g.kind==="group"?`:${this.grid.selectionVersion}`:""}|${x}|${k}|${E}|${b}`,L=w.get(f);if(!L){let M=this.pool[h].pop()??y("div","fg-row",{role:"row"});this.canvases[h].append(M),L={el:M,key:""},w.set(f,L)}L.key!==S&&(L.key=S,L.el.dataset.kind!==(g.kind??"")&&(L.el.replaceChildren(),L.el.dataset.kind=g.kind??""),g.kind==="group"?this.paintGroupRow(L.el,g,f,v,x):g.kind==="detail"?this.paintDetailRow(L.el,g,f,h):g.kind==="loading"?this.paintLoadingRow(L.el,f,v):this.paintRow(L.el,g,f,v,C,x,R,l,c.first))}}}mergeState(e,t,n,o){if(!e.size)return"";let r="";for(let s of t){let a=e.get(s.id);if(!a)continue;let l=a.start[n],d=a.end[n];r+=l===d?"n":n===Math.max(l,o)?`d${l}`:"h"}return r}paintRow(e,t,n,o,r,s,a,l=new Map,d=0){let c=this.opts.rowHeight;for(e.className=`fg-row${n%2?" fg-row-odd":""}${r?" fg-row-selected":""}${this.grid.tracker.created.has(t.data)?" fg-row-created":""}${this.grid.editor.editingRow(t.id)?" fg-row-editing":""}`,this.placeRow(e,n),this.grid.options.rowSelection&&e.setAttribute("aria-selected",String(r)),t.level!==void 0?e.setAttribute("aria-level",String(t.level+1)):e.removeAttribute("aria-level"),t.hasChildren?e.setAttribute("aria-expanded",String(!!t.expanded)):e.removeAttribute("aria-expanded");e.childElementCount>o.length;)e.lastElementChild.remove();for(;e.childElementCount<o.length;)e.append(y("div","fg-cell",{role:"gridcell"}));let u=!1,p=o.length?this.grid.columns.region(o[0].region):[],h=p.some(m=>m.def.colSpan),v=-1,w=h?new Map(p.map((m,f)=>[m.id,f])):null;o.forEach((m,f)=>{let g=e.children[f];if(this.paintCell(g,t,n,m,r,s===m.id),w){let x=w.get(m.id);if(x<=v)g.classList.add("fg-cell-span-hidden");else if(m.def.colSpan&&!I(m.id)){let R=Ee(m.def.colSpan,m.def,t.data,n,p.length-x);if(R>1){v=x+R-1;let k=0;for(let E=x;E<=v;E++)k+=p[E].width;g.style.width=`${k}px`,g.classList.add("fg-cell-colspan")}}}m.id===this.firstDataId&&this.decorate(g,t),g.style.top=g.style.height=g.style.bottom="";let C=l.get(m.id);C&&C.start[n]!==C.end[n]&&(n===Math.max(C.start[n],d)?(g.classList.add("fg-cell-merged"),g.style.top=`${-(this.rowTop(n)-this.rowTop(C.start[n]))}px`,g.style.height=`${this.rowTop(C.end[n])+this.rowH(C.end[n])-this.rowTop(C.start[n])}px`,g.style.bottom="auto",u=!0):g.classList.add("fg-cell-merge-hidden")),!I(m.id)&&a.some(x=>m.index>=x.c1&&m.index<=x.c2)&&g.classList.add("fg-cell-range")}),e.style.zIndex=u?"1":""}paintCell(e,t,n,o,r,s){let a=this.grid.store.state.locale;e.style.left=`${o.left}px`,e.style.width=`${o.width}px`,e.dataset.col=o.id,e.setAttribute("aria-colindex",String(o.index+1));let l=s?"fg-cell fg-cell-focused":"fg-cell";if(o.id===ce){e.className=`${l} fg-cell-rownum`;let h=n>=0&&!t.kind?this.grid.rowNumber(n):null;e.textContent=h===null?"":String(h);return}if(o.id===pe){e.className=`${l} fg-cell-drag`;let h=y("span",this.grid.canMoveRows()?"fg-drag-handle":"fg-drag-handle fg-drag-disabled",{"aria-hidden":"true"});h.textContent="\u22EE\u22EE",e.replaceChildren(h);return}if(o.id===ee){e.className=`${l} fg-cell-select`;let h=y("input","fg-checkbox",{type:"checkbox",tabindex:"-1","aria-label":a.selectRow});h.checked=r,n>=0&&!t.kind&&!this.grid.rowSelectable(t.data)&&(h.disabled=!0,e.classList.add("fg-cell-select-locked")),e.replaceChildren(h);return}let d=o.def,c=N(d,t.data),u=W(d,a.code)(c);l+=` fg-align-${d.align??(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 h=typeof d.cellClass=="function"?d.cellClass(p):d.cellClass;h&&(l+=` ${h}`)}catch{$(`cellClass of column "${o.id}" threw`)}if(this.grid.tracker.isDirty(t.data,d.field)&&(l+=" fg-cell-dirty"),d.wrapText&&(l+=" fg-cell-wrap"),typeof d.editable=="function"&&n>=0&&!ie(d,t.data,n)&&(l+=" fg-cell-readonly"),n>=0&&(l+=this.grid.finder.classFor(n,o.id)),this.grid.isFlashing(t.id,o.id)&&(l+=" fg-cell-flash"),e.className=l,d.sparkline&&!d.renderer){let h=Array.isArray(c)?c.map(Number).filter(Number.isFinite):[];h.length?e.replaceChildren(ar(h,d.sparkline===!0?{}:d.sparkline,o.width,this.opts.rowHeight)):e.replaceChildren(),e.setAttribute("aria-label",Array.isArray(c)?c.join(", "):"");return}if(!d.renderer){e.textContent=u;return}try{let h=d.renderer(p);typeof h=="string"?e.innerHTML=h:e.replaceChildren(h)}catch{$(`renderer of column "${o.id}" threw; rendering an empty cell`),e.textContent=""}}cellAt(e){let t=e instanceof Element?e.closest(".fg-cell"):null,n=t?.parentElement;return!t||!n?.dataset.row||!t.dataset.col||t.closest(".fg-root")!==this.root?null:{rowIndex:Number(n.dataset.row),colId:t.dataset.col}}ensureVisible(e,t){let n=this.scroller,o=this.rowTop(e),r=o+Math.min(this.rowH(e),n.clientHeight||1/0);o<n.scrollTop?n.scrollTop=o:r>n.scrollTop+n.clientHeight&&(n.scrollTop=r-n.clientHeight);let s=t?this.grid.columns.getColumn(t):void 0;s?.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){if(!e){this.summaryEl?.remove(),this.summaryEl=this.summaryPanes=this.summaryInners=null;return}if(!this.summaryEl){let o=r=>({left:y("div",`${r} ${r}-left`),center:y("div",`${r} ${r}-center`),right:y("div",`${r} ${r}-right`)});this.summaryEl=y("div","fg-summary",{role:"rowgroup"}),this.summaryPanes=o("fg-summary-pane"),this.summaryInners=o("fg-summary-inner");for(let r of J)this.summaryPanes[r].append(this.summaryInners[r]),this.summaryEl.append(this.summaryPanes[r])}this.summaryEl.className=`fg-summary fg-summary-${e}`,this.summaryEl.style.height=`${t}px`;for(let o of J){let r=this.grid.columns.regionWidth(o);o!=="center"&&(this.summaryPanes[o].style.width=`${r}px`,this.summaryPanes[o].hidden=r===0),this.summaryInners[o].style.width=`${r}px`,this.summaryInners[o].style.height=`${t}px`}let n=this.scroller.offsetWidth-this.scroller.clientWidth;this.summaryPanes.center.style.marginRight=`${n}px`}renderSummary(e,t,n,o,r){for(let u of J){for(let p of this.canvasSummary[u])p.remove();this.canvasSummary[u]=[]}if(!t)return;let{columns:s}=this.grid,a=this.opts.rowHeight,l=s.region("center"),d=Ze(l.map(u=>u.left),l.map(u=>u.width),this.scroller.scrollLeft,this.scroller.clientWidth,$t),c=s.displayed().filter(u=>!I(u.id));for(let u of J){let p=u==="center"?l.slice(d.first,d.last+1):s.region(u),h=t.map((v,w)=>{let m=v.label!=null?c.find(C=>!(C.id in(v.columns??{})))?.id??null:null,f=y("div","fg-row fg-summary-row",{role:"row"}),g=o||r==="top"?w*a:this.rowsHeight(e)+w*a;f.style.transform=`translateY(${g}px)`,f.style.height=`${a}px`;for(let C of p)f.append(this.summaryCell(C,v,n[w]??{},m));return f});o?this.summaryInners[u].replaceChildren(...h):(this.canvases[u].append(...h),this.canvasSummary[u]=h)}}summaryCell(e,t,n,o){let r=y("div","fg-cell",{role:"gridcell"});r.style.left=`${e.left}px`,r.style.width=`${e.width}px`,r.dataset.col=e.id;let s=e.def,a=s.align??(s.type==="number"?"right":s.type==="boolean"?"center":"left");r.className=`fg-cell fg-align-${a}`;let l=t.columns?.[e.id];if(l===void 0)return e.id===o&&(r.textContent=t.label??"",r.classList.add("fg-summary-label")),r;let d=n[e.id],c=At(l),u=this.grid.store.state.locale.code,p;if(d==null||d==="")p="";else if(typeof d=="string")p=d;else if(c.agg==="count")p=new Intl.NumberFormat(u).format(d);else{let h=s.type??(typeof d=="number"?"number":d instanceof Date?"date":void 0);p=W({...s,type:h,format:c.format??s.format},u)(d)}return r.textContent=c.prefix&&p?`${c.prefix} ${p}`:p,r}get heightOf(){let e=this.grid.options.getRowHeight;if(e)return this.heightFn??(this.heightFn=t=>{try{return e(t)??void 0}catch{return}})}invalidateHeights(){this.heightOf&&this.heightsVersion++,this.rowHeights.size&&(this.rowHeights.clear(),this.heightsVersion++)}measureRows(){let e=this.opts.rowHeight,t=new Map;for(let o of J)for(let[r,s]of this.painted[o]){let a=this.grid.rowModel.getRow(r);if(!a||a.kind)continue;let l=t.get(r)??e;for(let d of s.el.querySelectorAll(".fg-cell-wrap"))d.classList.contains("fg-cell-merged")||d.classList.contains("fg-cell-merge-hidden")||(l=Math.max(l,Math.ceil(d.scrollHeight)));t.set(r,l)}let n=!1;for(let[o,r]of t){let s=this.grid.rowModel.getRow(o).id,a=this.rowHeights.get(s)??e;Math.abs(a-r)>1&&(r===e?this.rowHeights.delete(s):this.rowHeights.set(s,r),n=!0)}n&&(this.heightsVersion++,this.version++,this.schedule())}detailHeight(){let e=this.grid.options.detailHeight;return typeof e=="number"&&e>0?e:240}rowTop(e){return(this.offsets?this.offsets[e]:e*this.opts.rowHeight)+this.topOffset}rowH(e){return this.offsets?this.offsets[e+1]-this.offsets[e]:this.opts.rowHeight}rowsHeight(e){return this.offsets?this.offsets[e]:e*this.opts.rowHeight}placeRow(e,t){e.style.transform=`translateY(${this.rowTop(t)}px)`,e.style.height=`${this.rowH(t)}px`,e.dataset.row=String(t),e.setAttribute("aria-rowindex",String(t+1+this.grid.columns.depth+(this.filterRow?1:0)))}decorate(e,t){let{grid:n}=this,o=n.store.state.locale,r=t.level??0,s=!!n.options.treeData,a=n.canExpandDetail(t.data);if(!s&&!a&&!r)return;e.classList.add("fg-cell-lead"),e.style.setProperty("--fg-level",String(r));let l=[];if(s)if(t.hasChildren){let d=y("button",t.expanded?"fg-tree-toggle fg-expanded":t.loading?"fg-tree-toggle fg-tree-loading":"fg-tree-toggle",{type:"button",tabindex:"-1","aria-label":t.expanded?o.collapseAll:o.expandAll,"aria-expanded":String(!!t.expanded)});t.loading&&d.setAttribute("aria-busy","true"),d.innerHTML=Ft,l.push(d)}else l.push(y("span","fg-tree-spacer",{"aria-hidden":"true"}));if(a){let d=n.isDetailExpanded(t.data),c=y("button",d?"fg-detail-toggle fg-expanded":"fg-detail-toggle",{type:"button",tabindex:"-1","aria-expanded":String(d),"aria-label":d?o.collapseAll:o.expandAll});c.innerHTML=Ft,l.push(c)}e.prepend(...l)}paintGroupRow(e,t,n,o,r){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((t.level??0)+1)),e.setAttribute("aria-expanded",String(s.expanded)),e.removeAttribute("aria-selected"),e.style.zIndex="";e.childElementCount>o.length;)e.lastElementChild.remove();for(;e.childElementCount<o.length;)e.append(y("div","fg-cell",{role:"gridcell"}));o.forEach((d,c)=>{let u=e.children[c];u.style.left=`${d.left}px`,u.style.width=`${d.width}px`,u.style.top=u.style.height=u.style.bottom="",u.style.removeProperty("--fg-level"),u.dataset.col=d.id,u.setAttribute("aria-colindex",String(d.index+1));let p=r===d.id?" fg-cell-focused":"";if(d.id===ee){if(u.className=`fg-cell fg-cell-select${p}`,a.options.rowSelection!=="multiple"){u.replaceChildren();return}let m=a.groupSelection(t),f=y("input","fg-checkbox",{type:"checkbox",tabindex:"-1","aria-label":l.selectAllRows});f.checked=m==="all",f.indeterminate=m==="some",u.replaceChildren(f);return}if(d.id===this.groupLabelId){u.className=`fg-cell fg-group-cell${p}`,u.style.setProperty("--fg-level",String(t.level??0));let m=y("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});m.innerHTML=Ft;let f=a.columns.getNode(s.colId)?.def,g=y("span","fg-group-label"),C=H(s.value)?l.blanks:f?W(f,l.code)(s.value):String(s.value),x=new Intl.NumberFormat(l.code),R=s.count??(s.aggregates?null:s.rows.length);g.textContent=`${f?.header??f?.field??s.colId}: ${C}${R==null?"":` (${x.format(R)})`}`,u.replaceChildren(m,g);return}let h=d.def,v=h.align??(h.type==="number"?"right":h.type==="boolean"?"center":"left");u.className=`fg-cell fg-align-${v}${p}`;let w=h.aggFunc&&!I(d.id)?a.groupAggregate(t,d.id):void 0;if(w==null||w==="")u.textContent="";else if(h.aggFunc==="count")u.textContent=new Intl.NumberFormat(l.code).format(w);else{let m=h.type??(typeof w=="number"?"number":w instanceof Date?"date":void 0);u.textContent=W({...h,type:m},l.code)(w)}u.textContent&&u.classList.add("fg-cell-agg")})}paintDetailRow(e,t,n,o){if(e.className="fg-row fg-row-detail",this.placeRow(e,n),e.style.zIndex="",o!=="center"){e.replaceChildren();return}let r=t.detailOf,s=this.details.get(r.id);if(!s){s=y("div","fg-detail");try{let a=this.grid.options.detailRenderer?.({row:r.data,rowIndex:n-1});typeof a=="string"?s.innerHTML=a:a&&s.append(a)}catch{$("detailRenderer threw; showing an empty panel")}this.details.set(r.id,s)}s.style.left=`${this.scroller.scrollLeft}px`,s.style.width=`${this.scroller.clientWidth||this.grid.columns.regionWidth("center")}px`,(e.firstChild!==s||e.childNodes.length!==1)&&e.replaceChildren(s)}paintLoadingRow(e,t,n){e.className="fg-row fg-row-loading",this.placeRow(e,t),e.setAttribute("aria-busy","true"),e.style.zIndex="",e.replaceChildren(...n.map(o=>{let r=y("div","fg-cell",{role:"gridcell"});return r.style.left=`${o.left}px`,r.style.width=`${o.width}px`,r.dataset.col=o.id,I(o.id)||r.append(y("span","fg-skeleton",{"aria-hidden":"true"})),r}))}renderPager(){let{grid:e}=this,t=e.options.pagination;if(!t){this.pagerEl?.remove(),this.pagerEl=null;return}let n=e.store.state.locale,o=e.getPage(),r=e.getPageSize(),s=e.getPageCount(),a=e.rowModel.fullCount(),l=typeof t=="object"&&Array.isArray(t.pageSizes)?t.pageSizes.filter(f=>Number.isInteger(f)&&f>0):[],d=`${o}|${r}|${s}|${a}|${n.code}|${l.join(",")}`;if(this.pagerEl&&d===this.pagerKey)return;this.pagerKey=d,this.pagerEl||(this.pagerEl=y("div","fg-pager",{role:"navigation"}),this.pagerEl.addEventListener("click",f=>{let g=f.target.closest("button[data-action]")?.dataset.action,C=e.getPage();g==="first"?e.setPage(0):g==="prev"?e.setPage(C-1):g==="next"?e.setPage(C+1):g==="last"&&e.setPage(e.getPageCount()-1)}),this.pagerEl.addEventListener("change",f=>{let g=f.target;g.classList.contains("fg-pager-size")&&e.setPageSize(Number(g.value))})),this.pagerEl.setAttribute("aria-label",n.pageSize);let c=new Intl.NumberFormat(n.code),u=a?o*r+1:0,p=Math.min(a,(o+1)*r),h=y("span","fg-pager-range");h.textContent=n.pagerRange.replace("{from}",c.format(u)).replace("{to}",c.format(p)).replace("{total}",c.format(a));let v=[h,y("span","fg-pager-spacer")];if(l.length){let f=y("label","fg-pager-size-label");f.textContent=n.pageSize;let g=y("select","fg-pager-size");for(let C of[...new Set([...l,r])].sort((x,R)=>x-R)){let x=y("option");x.value=String(C),x.textContent=c.format(C),x.selected=C===r,g.append(x)}f.append(g),v.push(f)}let w=(f,g,C,x)=>{let R=y("button","fg-pager-btn",{type:"button","aria-label":C,title:C});return R.dataset.action=f,R.textContent=g,R.disabled=x,R},m=y("span","fg-pager-page",{"aria-live":"polite"});m.textContent=n.pageOf.replace("{page}",c.format(o+1)).replace("{pages}",c.format(s)),v.push(w("first","\xAB",n.firstPage,o===0),w("prev","\u2039",n.previousPage,o===0),m,w("next","\u203A",n.nextPage,o>=s-1),w("last","\xBB",n.lastPage,o>=s-1)),this.pagerEl.replaceChildren(...v)}showFreeBadge(){if(this.root.querySelector(".fg-free-badge"))return;let e=y("a","fg-free-badge",{href:"https://freegrid.app/pricing/",target:"_blank",rel:"noopener"});e.innerHTML='<svg viewBox="0 0 32 32" width="14" height="14" aria-hidden="true"><rect width="32" height="32" rx="7" fill="#0E1726"/><path d="M7 11.5h18M7 16.5h18M7 21.5h18M13 7v18" stroke="#fff" stroke-width="2" stroke-linecap="round"/><rect x="14" y="12.5" width="11" height="3" rx="1" fill="#F2A900"/></svg>';let t=y("span");t.textContent=`FreeGrid \xB7 ${this.grid.store.state.locale.freeBadge}`,e.append(t),this.root.append(e)}useCards(){let e=this.grid.options.cardView,t=e===!0?640:typeof e=="number"?e:-1,n=t>0&&this.main.clientWidth<t;return n!==this.cardMode&&(this.cardMode=n,this.root.classList.toggle("fg-card-mode",n),!n&&this.cards&&(this.cards.scroller.remove(),this.cards=null),this.version++),n}renderCards(e){let{grid:t}=this;if(!this.cards){let w=y("div","fg-cards",{role:"list"}),m=y("div","fg-cards-canvas");w.append(m),this.main.insertBefore(w,this.overlay),w.addEventListener("scroll",()=>{this.schedule(),this.grid.events.emit("scroll",this.getScroll())},{passive:!0}),w.addEventListener("click",this.onCardClick),this.cards={scroller:w,canvas:m}}let{scroller:n,canvas:o}=this.cards,r=t.columns.displayed().filter(w=>!I(w.id)),s=Math.round(this.opts.rowHeight*.75),a=!!t.options.rowSelection,l=20+r.length*s+(a?s:0),d=10;o.style.height=`${e*(l+d)}px`;let c=Math.max(0,Math.floor(n.scrollTop/(l+d))-2),u=Math.min(e-1,Math.ceil((n.scrollTop+(n.clientHeight||800))/(l+d))+2),{selected:p,locale:h}=t.store.state,v=[];for(let w=c;w<=u;w++){let m=t.rowModel.getRow(w);if(!m)continue;let f=y("div",m.kind?"fg-card fg-card-other":p.has(m.id)?"fg-card fg-card-selected":"fg-card",{role:"listitem"});if(f.dataset.row=String(w),f.style.transform=`translateY(${w*(l+d)}px)`,f.style.height=`${l}px`,f.style.setProperty("--fg-card-line",`${s}px`),m.kind==="group"&&m.group){let g=t.columns.getNode(m.group.colId)?.def;f.textContent=`${g?.header??m.group.colId}: ${String(m.group.value??h.blanks)} (${m.group.rows.length})`}else if(!m.kind){if(a){let g=y("label","fg-card-head"),C=y("input","fg-card-check fg-checkbox",{type:"checkbox","aria-label":h.selectRow});C.checked=p.has(m.id),C.disabled=!t.rowSelectable(m.data),g.append(C,document.createTextNode(`#${w+1}`)),f.append(g)}for(let g of r){let C=y("div","fg-card-line"),x=y("span","fg-card-label");x.textContent=g.def.header??g.def.field??g.id;let R=y("span","fg-card-value");R.dataset.col=g.id;let k=N(g.def,m.data),E=W(g.def,h.code)(k);if(g.def.renderer)try{let b=g.def.renderer({value:k,formatted:E,row:m.data,rowIndex:w,column:g.def});typeof b=="string"?R.innerHTML=b:R.replaceChildren(b)}catch{R.textContent=E}else R.textContent=E;C.append(x,R),f.append(C)}}v.push(f)}o.replaceChildren(...v)}dropDetail(e){e===void 0?this.details.clear():this.details.delete(e)}renderedRange(){return this.lastRange}measureText(e,t){let n=getComputedStyle(this.main),o=parseFloat(getComputedStyle(this.root).getPropertyValue("--fg-font-size"))||13;this.measureCtx===void 0&&(this.measureCtx=document.createElement("canvas").getContext("2d"));let r=this.measureCtx;return r?(r.font=`${t?600:400} ${o}px ${n.fontFamily||"sans-serif"}`,r.measureText(e).width):e.length*o*.6}scrollToRow(e){this.scroller.scrollTop=this.rowTop(Math.max(0,Math.min(e,this.grid.rowModel.getRowCount())))}pageRows(){return Math.max(1,Math.floor(this.scroller.clientHeight/this.opts.rowHeight))}destroy(){this.filterRow?.destroy(),this.frame&&cancelAnimationFrame(this.frame),this.scroller.removeEventListener("scroll",this.onScroll),this.root.remove()}},Nt=class{constructor(e){let t=n=>({left:y("div",`${n} ${n}-left`),center:y("div",`${n} ${n}-center`),right:y("div",`${n} ${n}-right`)});this.el=y("div",e,{role:"rowgroup"}),this.panes=t("fg-section-pane"),this.inners=t("fg-section-inner");for(let n of J)this.panes[n].append(this.inners[n]),this.el.append(this.panes[n])}size(e,t,n){this.el.style.height=`${t}px`;for(let o of J){let r=e.regionWidth(o);o!=="center"&&(this.panes[o].style.width=`${r}px`,this.panes[o].hidden=r===0),this.inners[o].style.width=`${r}px`,this.inners[o].style.height=`${t}px`}this.panes.center.style.marginRight=`${n}px`}},qn="http://www.w3.org/2000/svg";function ar(i,e,t,n){let o=Math.max(20,t-16),r=Math.max(10,n-14),s=document.createElementNS(qn,"svg");s.setAttribute("class","fg-sparkline"),s.setAttribute("width",String(o)),s.setAttribute("height",String(r)),s.setAttribute("viewBox",`0 0 ${o} ${r}`),s.setAttribute("aria-hidden","true");let a=e.color??"var(--fg-accent)",l=e.type==="bar",d=l?Math.min(0,...i):Math.min(...i),c=l?Math.max(0,...i):Math.max(...i);d===c&&(d-=1,c+=1);let u=c-d,p=f=>r-1-(f-d)/u*(r-2),h=(f,g)=>{let C=document.createElementNS(qn,f);for(let[x,R]of Object.entries(g))C.setAttribute(x,String(R));return s.append(C),C};if(e.type==="bar"){let f=o/i.length;return i.forEach((g,C)=>h("rect",{x:C*f+1,y:Math.min(p(g),p(0)),width:Math.max(1,f-2),height:Math.max(1,Math.abs(p(g)-p(0))),fill:g<0?"#ef4444":a})),s}let v=i.length>1?(o-2)/(i.length-1):0,w=i.map((f,g)=>`${1+g*v},${p(f)}`).join(" ");e.type==="area"&&h("polygon",{points:`1,${r} ${w} ${1+(i.length-1)*v},${r}`,fill:a,"fill-opacity":.2}),h("polyline",{points:w,fill:"none",stroke:a,"stroke-width":1.5,"stroke-linejoin":"round"});let m=i.length-1;return h("circle",{cx:1+m*v,cy:p(i[m]),r:2,fill:a}),s}var lr=4,Qe=class{constructor(e){this.grid=e;this.onClick=e=>{let n=e.target.closest(".fg-group-chip-remove")?.closest(".fg-group-chip")?.dataset.col;n&&this.grid.setGroupBy(this.grid.getGroupBy().filter(o=>o!==n))};this.onPointerDown=e=>{let t=e.target,n=t.closest(".fg-group-chip");if(e.button!==0||!n||t.closest("button"))return;let o=n.dataset.col,r=e.clientX,s=!1,a=d=>{!s&&Math.abs(d.clientX-r)<lr||(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(h=>h!==n).filter(h=>{let v=h.getBoundingClientRect();return d.clientX>v.left+v.width/2}).length,p=this.grid.getGroupBy().filter(h=>h!==o);p.splice(u,0,o),this.grid.setGroupBy(p)};window.addEventListener("pointermove",a),window.addEventListener("pointerup",l)};this.el=y("div","fg-group-panel",{role:"toolbar"}),e.renderer.main.insertBefore(this.el,e.renderer.gridEl),this.el.addEventListener("click",this.onClick),this.el.addEventListener("pointerdown",this.onPointerDown),this.refresh()}contains(e,t){let n=this.el.getBoundingClientRect();return e>=n.left&&e<=n.right&&t>=n.top&&t<=n.bottom}highlight(e){this.el.classList.toggle("fg-group-panel-over",e)}refresh(){let{grid:e}=this,t=e.store.state.locale;this.el.setAttribute("aria-label",t.groupByThis);let n=e.getGroupBy();if(!n.length){let o=y("span","fg-group-hint");o.textContent=t.groupPanelHint,this.el.replaceChildren(o);return}this.el.replaceChildren(...n.map((o,r)=>{let s=e.columns.getNode(o)?.def,a=y("span","fg-group-chip");a.dataset.col=o;let l=y("span","fg-group-chip-label");l.textContent=s?.header??s?.field??o;let d=y("button","fg-group-chip-remove",{type:"button","aria-label":`${t.ungroup}: ${l.textContent}`});if(d.textContent="\xD7",a.append(l,d),r<n.length-1){let c=y("span","fg-group-sep",{"aria-hidden":"true"});return c.textContent="\u203A",[a,c]}return[a]}).flat())}destroy(){this.el.removeEventListener("click",this.onClick),this.el.removeEventListener("pointerdown",this.onPointerDown),this.el.remove()}};var xe=class{constructor(){this.listeners=new Map}on(e,t){let n=this.listeners.get(e);return n||this.listeners.set(e,n=new Set),n.add(t),()=>{n.delete(t)}}emit(e,t){let n=this.listeners.get(e);if(n)for(let o of[...n])try{o(t)}catch(r){console.error("[FreeGrid] event listener threw",r)}}clear(){this.listeners.clear()}};function te(i){let e=i.getRootNode();return typeof ShadowRoot<"u"&&e instanceof ShadowRoot?e:document.body}function Le(i,e,t){let n=i.getRootNode();return(typeof n.elementFromPoint=="function"?n.elementFromPoint(e,t):null)??document.elementFromPoint(e,t)}function Wn(i){return i.getRootNode().activeElement??document.activeElement}function ue(i,...e){let t=typeof i.composedPath=="function"?i.composedPath():[];return t.length?e.some(n=>!!n&&t.includes(n)):e.some(n=>!!n&&n.contains(i.target))}var Ot=new Set(["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Tab","Home","End","PageUp","PageDown"]);function Ht(i,e,t,n){let o=s=>Math.max(0,Math.min(n.rows-1,s)),r=s=>Math.max(0,Math.min(n.cols-1,s));switch(i){case"ArrowUp":return{rowIndex:o(t.rowIndex-1),colIndex:t.colIndex};case"ArrowDown":return{rowIndex:o(t.rowIndex+1),colIndex:t.colIndex};case"ArrowLeft":return{rowIndex:t.rowIndex,colIndex:r(t.colIndex-1)};case"ArrowRight":return{rowIndex:t.rowIndex,colIndex:r(t.colIndex+1)};case"PageUp":return{rowIndex:o(t.rowIndex-n.pageRows),colIndex:t.colIndex};case"PageDown":return{rowIndex:o(t.rowIndex+n.pageRows),colIndex:t.colIndex};case"Home":return{rowIndex:e.ctrl?0:t.rowIndex,colIndex:0};case"End":return{rowIndex:e.ctrl?n.rows-1:t.rowIndex,colIndex:n.cols-1};case"Tab":{let s=t.rowIndex*n.cols+t.colIndex+(e.shift?-1:1);return s<0||s>=n.rows*n.cols?null:{rowIndex:Math.floor(s/n.cols),colIndex:s%n.cols}}default:return null}}var et=new Map,Kn=i=>i?et.get(i):void 0;var dr={Enter:"edit",F2:"edit",Delete:"clear",Backspace:"clear","Ctrl+Z":"undo","Ctrl+Y":"redo","Ctrl+Shift+Z":"redo","Ctrl+F":"find"};function cr(i){let e=[];return(i.ctrlKey||i.metaKey)&&e.push("Ctrl"),i.altKey&&e.push("Alt"),i.shiftKey&&i.key.length>1&&e.push("Shift"),i.shiftKey&&i.key.length===1&&(i.ctrlKey||i.metaKey)&&e.push("Shift"),e.push(i.key.length===1?i.key.toUpperCase():i.key),e.join("+")}var ur=3;function hr(i,e){return i.renderer.rtl?e.key==="ArrowLeft"?"ArrowRight":e.key==="ArrowRight"?"ArrowLeft":e.key:e.key}function Un(i){let{renderer:e}=i,t=e.bodyEl,n=e.root,o=b=>hr(i,b),r="mouse",s=0,a=!1,l=b=>{let S=e.cellAt(b.target);if(!S)return null;let L=i.rowModel.getRow(S.rowIndex),M=i.columns.getColumn(S.colId);if(!L||!M)return null;let T=I(M.id)?void 0:N(M.def,L.data);return{row:L.data,rowIndex:S.rowIndex,colId:S.colId,value:T,event:b}},d=b=>{let S=b.target.closest?.(".fg-group-toggle, .fg-tree-toggle, .fg-detail-toggle"),L=S&&e.cellAt(b.target);if(!L)return!1;e.gridEl.focus({preventScroll:!0}),i.setFocus(L.rowIndex,L.colId),i.setRange(null);let M=i.rowModel.getRow(L.rowIndex);return S.classList.contains("fg-detail-toggle")?i.setDetailExpanded(M.data,!i.isDetailExpanded(M.data)):i.toggleRow(L.rowIndex),!0},c=b=>{if(d(b))return;let S=i.store.state.focus,L=e.cellAt(b.target);if(L&&i.rowModel.getRow(L.rowIndex)?.kind){L.colId===ee&&i.rowModel.getRow(L.rowIndex).kind==="group"&&i.toggleGroupSelection(i.rowModel.getRow(L.rowIndex)),e.gridEl.focus({preventScroll:!0}),i.setFocus(L.rowIndex,L.colId),i.setRange(null);return}let M=l(b);if(!M)return;if(e.gridEl.focus({preventScroll:!0}),M.colId===ce){let A=i.columns.displayed().filter(D=>!I(D.id));A.length&&(i.setFocus(M.rowIndex,A[0].id),i.setRange({start:{rowIndex:M.rowIndex,colId:A[0].id},end:{rowIndex:M.rowIndex,colId:A[A.length-1].id}}));return}let T=a;a=!1;let P=i.store.state.focus,F=M.colId===ee;if(!T)if(b.shiftKey&&P&&!F&&!I(P.colId)&&i.options.rangeSelection!==!1)i.setRange({start:P,end:{rowIndex:M.rowIndex,colId:M.colId}},!0);else if((b.ctrlKey||b.metaKey)&&!F&&!I(M.colId)&&i.options.rangeSelection!==!1){let A={rowIndex:M.rowIndex,colId:M.colId};i.addRange({start:A,end:A}),i.setFocus(M.rowIndex,M.colId)}else i.setFocus(M.rowIndex,M.colId),i.setRange(null);i.options.rowSelection&&!T&&i.selectFromClick(M.rowIndex,F||b.ctrlKey||b.metaKey,b.shiftKey),i.events.emit("cellClick",M),r==="touch"&&!T&&S&&S.rowIndex===M.rowIndex&&S.colId===M.colId&&i.editor.canEdit(M.rowIndex,M.colId)&&(i.columns.getColumn(M.colId).def.type==="boolean"?i.applyEdit(M.rowIndex,M.colId,M.value!==!0):i.editor.start(M.rowIndex,M.colId))},u=b=>{if(b.target.closest?.("button"))return;let S=e.cellAt(b.target),L=S&&i.rowModel.getRow(S.rowIndex);if(L?.kind==="group"){i.toggleRow(S.rowIndex);return}if(L?.kind)return;let M=l(b);if(!M||(i.events.emit("cellDoubleClick",M),!i.editor.canEdit(M.rowIndex,M.colId)))return;i.columns.getColumn(M.colId).def.type==="boolean"?i.applyEdit(M.rowIndex,M.colId,M.value!==!0):i.editor.start(M.rowIndex,M.colId)},p={...dr};for(let[b,S]of Object.entries(i.options.keymap??{}))p[b]=S===!1?"none":S;let h=b=>{let S=i.store.state.focus,L=p[cr(b)];if(L==="none")return!1;switch(L){case"edit":return!S||!i.editor.canEdit(S.rowIndex,S.colId)||i.columns.getColumn(S.colId).def.type==="boolean"?!1:(i.editor.start(S.rowIndex,S.colId),!0);case"clear":return i.clearCells(),!0;case"undo":return i.undo(),!0;case"redo":return i.redo(),!0;case"copy":return i.copyToClipboard(!1),!0;case"cut":return i.cutToClipboard(),!0;case"selectAll":return i.selectAllCells(),!0;case"find":return i.options.findBar===!1?!1:(i.finder.openBar(),!0);case"paste":return navigator.clipboard?.readText?.().then(T=>i.pasteText(T),()=>{}),!0}if(!S||!i.editor.canEdit(S.rowIndex,S.colId))return!1;let M=i.columns.getColumn(S.colId).def;if(b.key===" "&&M.type==="boolean"&&!b.ctrlKey&&!b.metaKey){let T=i.rowModel.getRow(S.rowIndex).data;return i.applyEdit(S.rowIndex,S.colId,T[M.field]!==!0),!0}return b.key.length===1&&b.key!==" "&&!b.ctrlKey&&!b.metaKey&&!b.altKey&&M.type!=="boolean"?(i.editor.start(S.rowIndex,S.colId,b.key),!0):!1},v=b=>{let S=i.store.state.focus;if(!S||b.ctrlKey||b.metaKey||b.altKey||b.shiftKey)return!1;let L=i.rowModel.getRow(S.rowIndex);if(!i.isExpandable(L))return!1;let M=L.kind==="group";if(!M&&S.colId!==i.columns.displayed().find(F=>!I(F.id))?.id)return!1;let T=!!(L.group?.expanded??L.expanded),P=i.expandKey(L);if(M&&(b.key==="Enter"||b.key===" "))i.setGroupExpanded(P,!T);else if(o(b)==="ArrowRight"&&!T)i.setGroupExpanded(P,!0);else if(o(b)==="ArrowLeft"&&T)i.setGroupExpanded(P,!1);else return!1;return!0},w=b=>{let S=e.cellAt(b.target);if(!S||S.colId!==pe)return!1;b.preventDefault();let L=i.rowModel.getRow(S.rowIndex);if(!L||L.kind||!i.canMoveRows())return!0;let M=L.data,T=y("div","fg-row-drop-marker"),P=null;n.classList.add("fg-row-dragging");let F=D=>{let O=Le(n,D.clientX,D.clientY),z=O?.closest(".fg-root"),B=z===n?i:Kn(z),X=i.dragOptions.group;if(P=null,T.remove(),!B||!z||B!==i&&(!X||B.dragOptions.group!==X||!B.options.rowDrag))return;let V=O.closest(".fg-row[data-row]"),G=V?.getBoundingClientRect(),_=null,K="after",Q;if(V&&G){let de=B.rowModel.getRow(Number(V.dataset.row));if(!de||de.kind==="group")return;_=de.detailOf?.data??de.data;let Me=(D.clientY-G.top)/G.height;de.kind==="detail"?K="after":B.options.treeData?K=Me<.25?"before":Me>.75?"after":"inside":K=Me<.5?"before":"after",Q=K==="before"?G.top:G.bottom}else{if(!O.closest(".fg-body"))return;let de=z.querySelectorAll(".fg-body-pane-center .fg-row[data-row]");Q=de.length?Math.max(...[...de].map(Me=>Me.getBoundingClientRect().bottom)):z.querySelector(".fg-body").getBoundingClientRect().top}if(!B.canDropRow(M,_,K,i))return;P={into:B,target:_,position:K};let Be=z.getBoundingClientRect().top;T.classList.toggle("fg-row-drop-inside",K==="inside"),T.style.top=`${K==="inside"?G.top-Be:Q-Be-1}px`,T.style.height=K==="inside"?`${G.height}px`:"",z.append(T)},A=()=>{window.removeEventListener("pointermove",F),window.removeEventListener("pointerup",A),window.removeEventListener("pointercancel",A),n.classList.remove("fg-row-dragging"),T.remove(),P&&P.into.dropRow(M,P.target,P.position,i)};return window.addEventListener("pointermove",F),window.addEventListener("pointerup",A),window.addEventListener("pointercancel",A),!0},m=b=>{let S=e.cellAt(b.target);if(!S)return;let L=b.clientX,M=b.clientY,T=()=>{clearTimeout(s),window.removeEventListener("pointermove",P),window.removeEventListener("pointerup",T),window.removeEventListener("pointercancel",T)},P=F=>{Math.hypot(F.clientX-L,F.clientY-M)>8&&T()};clearTimeout(s),s=window.setTimeout(()=>{T(),i.options.contextMenu!==!1&&(a=!0,I(S.colId)||(i.setFocus(S.rowIndex,S.colId),i.rangeContains(S.rowIndex,S.colId)||i.setRange({start:S,end:S})),i.contextMenu.open(L,M,S.rowIndex,S.colId))},550),window.addEventListener("pointermove",P),window.addEventListener("pointerup",T),window.addEventListener("pointercancel",T)},f=b=>{if(r=b.pointerType||"mouse",r==="touch"){m(b);return}if(b.button===0&&w(b)||i.options.rangeSelection===!1||b.button!==0||b.shiftKey||b.target.closest("input, a, button"))return;let S=e.cellAt(b.target);if(!S||I(S.colId))return;let L=b.clientX,M=b.clientY,T=b.ctrlKey||b.metaKey,P=!1,F=D=>{if(!P&&Math.hypot(D.clientX-L,D.clientY-M)<ur)return;let O=e.cellAt(Le(n,D.clientX,D.clientY));!O||I(O.colId)||(P||(P=!0,n.classList.add("fg-range-dragging"),T&&i.addRange({start:S,end:S}),i.setFocus(S.rowIndex,S.colId)),i.setRange({start:S,end:O},T))},A=()=>{window.removeEventListener("pointermove",F),window.removeEventListener("pointerup",A),n.classList.remove("fg-range-dragging"),P&&(a=!0)};window.addEventListener("pointermove",F),window.addEventListener("pointerup",A)},g=b=>{if(b.target!==n&&b.target!==e.gridEl)return;let S=i.columns.displayed(),L=i.rowModel.getRowCount();if(!S.length||!L)return;if(v(b)){b.preventDefault();return}if(h(b)){b.preventDefault();return}let M=i.store.state.focus,T=b.ctrlKey||b.metaKey;if(b.key==="Escape"&&i.store.state.range){b.preventDefault(),i.setRange(null);return}if(T&&b.key.toLowerCase()==="a"&&i.options.rangeSelection!==!1){b.preventDefault(),i.selectAllCells();return}if(b.key==="ContextMenu"||b.key==="F10"&&b.shiftKey){b.preventDefault(),i.contextMenu.openAtFocus();return}if(b.key===" "&&M&&i.options.rowSelection){b.preventDefault(),i.selectFromClick(Math.min(M.rowIndex,L-1),!0,b.shiftKey);return}let P={rows:L,cols:S.length,pageRows:e.pageRows()},F=S.findIndex(z=>!I(z.id));if(i.options.rangeSelection!==!1&&b.shiftKey&&b.key!=="Tab"&&Ot.has(b.key)){let z=M??{rowIndex:0,colId:S[F].id},B=i.store.state.range,X=B?.end??z,V={rowIndex:Math.min(X.rowIndex,L-1),colIndex:Math.max(0,S.findIndex(K=>K.id===X.colId))},G=Ht(o(b),{ctrl:T,shift:!1},V,P);if(!G)return;b.preventDefault();let _=S[Math.max(F,G.colIndex)].id;M||i.setFocus(z.rowIndex,z.colId),i.setRange({start:B?.start??z,end:{rowIndex:G.rowIndex,colId:_}}),e.ensureVisible(G.rowIndex,_);return}let D;if(!M)D=Ot.has(b.key)&&b.key!=="Tab"?{rowIndex:0,colIndex:0}:null;else{let z=Math.max(0,S.findIndex(B=>B.id===M.colId));D=Ht(o(b),{ctrl:T,shift:b.shiftKey},{rowIndex:Math.min(M.rowIndex,L-1),colIndex:z},P)}if(!D)return;b.preventDefault();let O=S[D.colIndex].id;i.setFocus(D.rowIndex,O),i.setRange(null),e.ensureVisible(D.rowIndex,O)},C=b=>b.target?.closest?.(".fg-editor, input, textarea, select, [contenteditable]"),x=b=>b.target?.closest?.(".fg-root")!==n,R=b=>{if(C(b)||x(b))return;let S=i.selectionTSV(!1);!S||!b.clipboardData||(b.clipboardData.setData("text/plain",S),b.preventDefault())},k=b=>{if(C(b)||x(b))return;let S=i.selectionTSV(!1);!S||!b.clipboardData||(b.clipboardData.setData("text/plain",S),b.preventDefault(),i.clearCells())},E=b=>{if(C(b)||x(b))return;let S=b.clipboardData?.getData("text/plain");S&&(b.preventDefault(),i.pasteText(S))};return t.addEventListener("click",c),t.addEventListener("dblclick",u),t.addEventListener("pointerdown",f),n.addEventListener("keydown",g),n.addEventListener("copy",R),n.addEventListener("paste",E),n.addEventListener("cut",k),()=>{t.removeEventListener("click",c),t.removeEventListener("dblclick",u),t.removeEventListener("pointerdown",f),n.removeEventListener("keydown",g),n.removeEventListener("copy",R),n.removeEventListener("paste",E),n.removeEventListener("cut",k)}}var tt=class{constructor(e){this.grid=e;this.open=new Set;this.el=y("div","fg-filters-panel")}refresh(){let{grid:e}=this,t=e.store.state.locale,n=e.store.state.filters,o=y("div","fg-filters-head"),r=y("span","fg-filters-title");r.textContent=t.filters;let s=y("button","fg-btn fg-filters-clear",{type:"button"});s.textContent=t.clearFilters,s.disabled=!Object.keys(n).length,s.addEventListener("click",()=>{for(let l of Object.keys(e.store.state.filters))e.setFilter(l,null)}),o.append(r,s);let a=y("div","fg-filters-list");for(let l of e.columns.displayed()){if(I(l.id)||!ne(l.def))continue;let d=y("details",n[l.id]?"fg-filters-item fg-filter-on":"fg-filters-item");d.dataset.col=l.id,d.open=this.open.has(l.id);let c=y("summary");c.textContent=l.def.header??l.def.field??l.id,d.append(c);let u=()=>{if(d.querySelector(".fg-filter"))return;let p=e.menu.filterSection(l.id,()=>{});p&&d.append(p)};d.open&&u(),d.addEventListener("toggle",()=>{d.open?(this.open.add(l.id),u()):this.open.delete(l.id)}),a.append(d)}this.el.replaceChildren(o,a)}};var fr=["sum","avg","min","max","count"],nt=class{constructor(e){this.grid=e;this.draft={rows:[],columns:[],values:[]};this.el=y("div","fg-pivot-panel")}apply(){this.grid.getPivot()?this.grid.setPivot(this.draft):this.refresh()}refresh(){let{grid:e}=this,t=e.store.state.locale,n=e.getPivot();n&&(this.draft={rows:[...n.rows],columns:[...n.columns??[]],values:n.values.map(d=>({colId:d.colId,aggFunc:typeof d.aggFunc=="string"?d.aggFunc:"sum"}))});let o=e.sourceLeaves(),r=d=>{let c=o.find(u=>u.id===d)?.def;return c?.header??c?.field??d},s=y("label","fg-pivot-mode"),a=y("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,c)=>{let u=y("div","fg-pivot-zone");u.dataset.zone=d;let p=y("div","fg-pivot-zone-title");p.textContent=c;let h=y("div","fg-pivot-chips"),v=d==="values"?this.draft.values.map(f=>f.colId):this.draft[d];v.forEach((f,g)=>{let C=y("span","fg-group-chip");C.dataset.col=f;let x=y("span","fg-group-chip-label");if(x.textContent=r(f),C.append(x),d==="values"){let k=y("select","fg-pivot-agg",{"aria-label":`${r(f)} ${t.pivotValues}`});for(let E of fr){let b=y("option");b.value=E,b.textContent=t[E],k.append(b)}k.value=this.draft.values[g].aggFunc,k.addEventListener("change",()=>{this.draft.values[g].aggFunc=k.value,this.apply()}),C.append(k)}let R=y("button","fg-group-chip-remove",{type:"button","aria-label":`${t.ungroup}: ${r(f)}`});R.textContent="\xD7",R.addEventListener("click",()=>{d==="values"?this.draft.values.splice(g,1):this.draft[d].splice(g,1),this.apply()}),C.append(R),h.append(C)});let w=y("select","fg-pivot-add",{"aria-label":`${c}: ${t.addColumn}`}),m=y("option");m.value="",m.textContent=t.addColumn,w.append(m);for(let f of o){if(v.includes(f.id)||d==="values"&&f.def.type!=="number")continue;let g=y("option");g.value=f.id,g.textContent=r(f.id),w.append(g)}return w.addEventListener("change",()=>{w.value&&(d==="values"?this.draft.values.push({colId:w.value,aggFunc:"sum"}):this.draft[d].push(w.value),this.apply())}),u.append(p,h,w),u};this.el.replaceChildren(s,l("rows",t.pivotRows),l("columns",t.pivotColumns),l("values",t.pivotValues))}};var pr=4,ot=i=>!I(i.id)&&(i.children?i.children.some(ot):i.def.chooser!==!1),Bt=i=>i.def.header??i.def.field??i.id,rt=class{constructor(e){this.grid=e;this.collapsed=new Set;this.el=y("div","fg-chooser"),this.search=y("input","fg-input fg-chooser-search",{type:"search"});let t=y("label","fg-chooser-all");this.allBox=y("input","fg-checkbox",{type:"checkbox"}),this.allText=y("span"),t.append(this.allBox,this.allText),this.list=y("div","fg-chooser-list",{role:"tree"}),this.el.append(this.search,t,this.list),this.search.addEventListener("input",()=>this.refresh()),this.allBox.addEventListener("change",()=>this.setVisible(this.matchingLeaves(),this.allBox.checked)),this.list.addEventListener("change",n=>{let o=n.target,r=this.nodeOf(o);r&&this.setVisible(this.leavesOf(r),o.checked)}),this.list.addEventListener("click",n=>{let o=n.target.closest(".fg-chooser-caret"),r=o&&this.nodeOf(o);r&&(this.collapsed.has(r.id)?this.collapsed.delete(r.id):this.collapsed.add(r.id),this.refresh())}),this.list.addEventListener("pointerdown",n=>this.onPointerDown(n)),this.refresh()}refresh(){let e=this.grid.store.state.locale;this.search.placeholder=e.search,this.search.setAttribute("aria-label",e.search),this.allText.textContent=e.selectAll;let t=this.query(),n=[],o=(a,l)=>{for(let d of a)!ot(d)||t&&!this.subtreeMatches(d,t)||(n.push(this.item(d,l)),d.children&&(t||!this.collapsed.has(d.id))&&o(d.children,l+1))};o(this.grid.columns.roots(),0),this.list.replaceChildren(...n);let r=this.matchingLeaves(),s=r.filter(a=>!a.hide).length;this.allBox.checked=r.length>0&&s===r.length,this.allBox.indeterminate=s>0&&s<r.length}query(){return this.search.value.trim().toLowerCase()}subtreeMatches(e,t){for(let n=e;n;n=n.parent)if(Bt(n).toLowerCase().includes(t))return!0;return!!e.children&&e.children.some(n=>ot(n)&&this.subtreeMatches(n,t))}leavesOf(e){return ot(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){let t=e.closest(".fg-chooser-item")?.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=y("div",e.children?"fg-chooser-item fg-chooser-group":"fg-chooser-item",{role:"treeitem"});n.dataset.col=e.id,n.style.paddingLeft=`${6+t*16}px`;let o=y("span","fg-chooser-handle",{"aria-hidden":"true"});if(o.textContent="\u22EE\u22EE",n.append(o),e.children){let d=!this.collapsed.has(e.id),c=y("button","fg-chooser-caret",{type:"button",tabindex:"-1","aria-hidden":"true"});c.textContent=d?"\u25BE":"\u25B8",n.setAttribute("aria-expanded",String(d)),n.append(c)}let r=this.leavesOf(e),s=r.filter(d=>!d.hide).length,a=y("input","fg-checkbox",{type:"checkbox","aria-label":Bt(e)});a.checked=r.length>0&&s===r.length,a.indeterminate=s>0&&s<r.length,a.disabled=r.every(d=>d.def.lockVisible);let l=y("span","fg-chooser-label");if(l.textContent=Bt(e),n.append(a,l),!e.children&&e.pinned){let d=y("span","fg-chooser-pin");d.textContent=e.pinned==="left"?"\u21E4":"\u21E5",n.append(d)}return n}onPointerDown(e){let n=e.target.closest(".fg-chooser-handle")?.closest(".fg-chooser-item"),o=n&&this.nodeOf(n);if(!n||!o||e.button!==0)return;e.preventDefault();let r=new Set(this.grid.columns.siblings(o.id).map(h=>h.id).filter(h=>h!==o.id)),s=[...this.list.querySelectorAll(".fg-chooser-item")].filter(h=>r.has(h.dataset.col)),a=e.clientY,l=!1,d=-1,c=y("div","fg-chooser-marker"),u=h=>{if(!l){if(Math.abs(h.clientY-a)<pr||!s.length)return;l=!0,n.classList.add("fg-dragging"),this.list.append(c)}d=s.filter(m=>{let f=m.getBoundingClientRect();return h.clientY>f.top+f.height/2}).length;let v=this.list.getBoundingClientRect().top-this.list.scrollTop,w=d<s.length?s[d].getBoundingClientRect().top:s[s.length-1].getBoundingClientRect().bottom;c.style.top=`${w-v-1}px`},p=()=>{if(window.removeEventListener("pointermove",u),window.removeEventListener("pointerup",p),c.remove(),n.classList.remove("fg-dragging"),!l||d<0)return;let h=this.grid.columns.siblings(o.id).map(m=>m.id).filter(m=>m!==o.id),v=d<s.length?h.indexOf(s[d].dataset.col):h.indexOf(s[s.length-1].dataset.col)+1;v=Math.max(h.filter(I).length,v);let w=this.grid.columns.siblings(o.id).findIndex(m=>m.id===o.id);v!==w&&(this.grid.columns.move(o.id,v),this.grid.layoutChanged(),this.grid.events.emit("columnMove",{colId:o.id,toIndex:v}))};window.addEventListener("pointermove",u),window.addEventListener("pointerup",p)}},it=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=y("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=y("div","fg-chooser-head"),o=y("span","fg-menu-title");o.textContent=e.chooseColumns;let r=y("button","fg-chooser-close",{type:"button","aria-label":e.close});r.textContent="\xD7",r.addEventListener("click",()=>this.close()),n.append(o,r),this.panel=new rt(this.grid),t.append(n,this.panel.el),te(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=>{ue(c,t)||this.close()},d=c=>{c.key==="Escape"&&this.close()};document.addEventListener("pointerdown",l,!0),document.addEventListener("keydown",d,!0),this.off.push(()=>document.removeEventListener("pointerdown",l,!0),()=>document.removeEventListener("keydown",d,!0)),t.querySelector(".fg-chooser-search").focus()}refresh(){this.panel?.refresh()}close(){for(let e of this.off)e();this.off=[],this.popup?.remove(),this.popup=null,this.panel=null}},st=class{constructor(e,t,n=["columns","filters"]){this.grid=e;this.tabs=new Map;this.el=y("div","fg-sidebar"),this.panelHost=y("div","fg-sidebar-panel"),this.columns=new rt(e),this.filters=new tt(e),this.pivot=new nt(e);let o=n.filter(s=>s==="columns"||s==="filters"||s==="pivot");o.length||o.push("columns"),this.current=o[0];let r=y("div","fg-sidebar-tabs",{role:"tablist"});for(let s of o){let a=y("button","fg-sidebar-tab",{type:"button",role:"tab"});a.dataset.panel=s,a.addEventListener("click",()=>this.toggle(!(this.isOpen&&this.current===s),s)),this.tabs.set(s,a),r.append(a)}this.el.append(this.panelHost,r),e.renderer.root.append(this.el),this.panelHost.hidden=!t,this.show(),this.refresh()}get isOpen(){return!this.panelHost.hidden}show(){this.panelHost.replaceChildren(this.current==="filters"?this.filters.el:this.current==="pivot"?this.pivot.el:this.columns.el)}toggle(e=!this.isOpen,t){t&&this.tabs.has(t)&&t!==this.current&&(this.current=t,this.show()),this.panelHost.hidden=!e,this.syncTabs(),this.grid.renderer.invalidate({header:!0,rows:!0})}syncTabs(){for(let[e,t]of this.tabs){let n=this.isOpen&&e===this.current;t.setAttribute("aria-expanded",String(n)),t.setAttribute("aria-selected",String(n))}}refresh(){let e=this.grid.store.state.locale;for(let[t,n]of this.tabs)n.textContent=t==="filters"?e.filters:t==="pivot"?e.pivot:e.columns;this.syncTabs(),this.columns.refresh(),this.filters.refresh(),this.pivot.refresh()}};var gr=()=>typeof navigator<"u"&&/Mac|iPhone|iPad/.test(navigator.platform||navigator.userAgent||""),Ce=i=>gr()?`\u2318${i}`:`Ctrl+${i}`,at=class{constructor(e){this.grid=e;this.popup=null;this.off=[];let t=e.renderer.root,n=o=>this.onContextMenu(o);t.addEventListener("contextmenu",n),this.detach=()=>t.removeEventListener("contextmenu",n)}destroy(){this.close(),this.detach()}onContextMenu(e){let{grid:t}=this;if(t.options.contextMenu===!1)return;let n=e.target,o=n.closest(".fg-header-cell");if(o){let s=o.dataset.col;if(!s||I(s)||o.classList.contains("fg-header-group"))return;e.preventDefault(),this.close(),t.menu.open(s,o);return}let r=t.renderer.cellAt(n);r&&(e.preventDefault(),t.renderer.gridEl.focus({preventScroll:!0}),!I(r.colId)&&!t.rangeContains(r.rowIndex,r.colId)&&(t.setFocus(r.rowIndex,r.colId),t.setRange({start:r,end:r})),this.open(e.clientX,e.clientY,r.rowIndex,r.colId))}openAtFocus(){let e=this.grid.store.state.focus;if(!e||this.grid.options.contextMenu===!1)return;let t=this.grid.renderer.root.getBoundingClientRect(),o=this.grid.renderer.root.querySelector(`.fg-row[data-row="${e.rowIndex}"] .fg-cell[data-col="${CSS.escape(e.colId)}"]`)?.getBoundingClientRect()??t;this.open(o.left+8,o.bottom,e.rowIndex,e.colId)}defaultItems(e){let{grid:t}=this,n=t.store.state.locale,o=t.columns.getNode(e),r=o?.def,s=!!r&&!I(e),a=[{label:n.copy,shortcut:Ce("C"),action:()=>t.copyToClipboard(!1)},{label:n.copyWithHeaders,action:()=>t.copyToClipboard(!0)},{label:n.cut,shortcut:Ce("X"),action:()=>t.cutToClipboard()},...t.store.state.selected.size?[{label:n.copyRows,action:()=>t.copyToClipboard(!1,!0)}]:[],{label:n.paste,shortcut:Ce("V"),action:()=>this.pasteFromClipboard()}];(t.history.canUndo()||t.history.canRedo())&&a.push("separator",{label:n.undo,shortcut:Ce("Z"),action:()=>t.undo(),disabled:!t.history.canUndo()},{label:n.redo,shortcut:Ce("Y"),action:()=>t.redo(),disabled:!t.history.canRedo()}),t.options.rowSelection&&t.store.state.selected.size&&a.push({label:n.deleteRows,action:()=>t.api.removeSelectedRows()}),s&&(a.push("separator",{label:n.autosizeThis,action:()=>t.autoSize([e])}),r.lockVisible||a.push({label:n.hideColumn,action:()=>t.setColumnsVisible([e],!1)}),a.push({label:n.pinLeft,action:()=>t.setPinned(e,"left"),disabled:o.pinned==="left"},{label:n.pinRight,action:()=>t.setPinned(e,"right"),disabled:o.pinned==="right"},{label:n.unpin,action:()=>t.setPinned(e,null),disabled:!o.pinned})),a.push("separator"),t.options.rowSelection==="multiple"&&a.push({label:n.selectAllRows,action:()=>t.api.selectAll()}),a.push({label:n.chooseColumns,action:()=>t.chooser.open()});let l=t.rangeBounds();return l&&(l.r2>l.r1||l.c2>l.c1)&&a.push("separator",{label:n.chartBar,action:()=>t.api.createChart({type:"bar"})},{label:n.chartLine,action:()=>t.api.createChart({type:"line"})},{label:n.chartPie,action:()=>t.api.createChart({type:"pie"})}),a.push("separator",{label:n.exportCsv,action:()=>t.api.exportCsv()},{label:n.exportExcel,action:()=>t.api.exportXlsx()}),t.options.advancedFilter!==!1&&!t.options.pivot&&a.push("separator",{label:`${n.advancedFilter}\u2026`,action:()=>t.filterBuilder.open()}),a}pasteFromClipboard(){let e=typeof navigator<"u"?navigator.clipboard:void 0,t=()=>this.grid.toast(this.grid.store.state.locale.pasteHint.replace("Ctrl+V",Ce("V")));if(!e?.readText)return t();e.readText().then(n=>this.grid.pasteText(n),t)}open(e,t,n,o){this.close(),this.grid.menu.close();let{grid:r}=this,s=r.rowModel.getRow(n),a=r.columns.getColumn(o),l=this.defaultItems(o),d={row:s?.data??null,rowIndex:n,colId:o,value:s&&a&&!I(o)?N(a.def,s.data):void 0,defaultItems:l},c=r.options.contextMenu,u=l;if(typeof c=="function")try{u=c(d)}catch{u=l}let p=r.store.state.locale,h=y("div",`fg-menu fg-context-menu fg-theme-${r.store.state.theme}`,{role:"menu","aria-label":p.columnMenu});r.applyFontTo(h);let v=!0;for(let x of u){if(x==="separator"){v||h.append(y("div","fg-cm-sep",{role:"separator"})),v=!0;continue}let R=y("button","fg-menu-item fg-cm-item",{type:"button",role:"menuitem"}),k=y("span","fg-cm-label");if(k.textContent=x.label,R.append(k),x.shortcut){let E=y("span","fg-cm-shortcut");E.textContent=x.shortcut,R.append(E)}R.disabled=!!x.disabled,R.addEventListener("click",()=>{this.close(),x.action()}),h.append(R),v=!1}h.lastElementChild?.classList.contains("fg-cm-sep")&&h.lastElementChild.remove(),te(this.grid.renderer.root).append(h);let w=h.offsetWidth||220,m=h.offsetHeight||300;h.style.left=`${Math.max(4,Math.min(e,window.innerWidth-w-4))}px`,h.style.top=`${Math.max(4,Math.min(t,window.innerHeight-m-4))}px`,this.popup=h;let f=x=>{ue(x,h)||this.close()},g=x=>{if(x.key==="Escape"){this.close(),r.renderer.gridEl.focus();return}if(x.key!=="ArrowDown"&&x.key!=="ArrowUp")return;let R=[...h.querySelectorAll("button:not(:disabled)")],k=R.indexOf(Wn(h));R[(k+(x.key==="ArrowDown"?1:R.length-1)+R.length)%R.length]?.focus(),x.preventDefault()},C=()=>this.close();document.addEventListener("pointerdown",f,!0),document.addEventListener("keydown",g,!0),r.renderer.scroller.addEventListener("scroll",C,{passive:!0}),this.off.push(()=>document.removeEventListener("pointerdown",f,!0),()=>document.removeEventListener("keydown",g,!0),()=>r.renderer.scroller.removeEventListener("scroll",C)),h.querySelector("button:not(:disabled)")?.focus()}close(){for(let e of this.off)e();this.off=[],this.popup?.remove(),this.popup=null}};var lt=class{constructor(e){this.grid=e;this.onDown=e=>{if(e.button!==0)return;e.preventDefault(),e.stopPropagation();let t=this.source();if(!t)return;let{grid:n}=this,o=null,r=n.renderer.root,s=l=>{let d=n.renderer.cellAt(Le(n.renderer.root,l.clientX,l.clientY)),c=d&&n.columns.getColumn(d.colId);if(!d||!c||I(c.id))return;let u=d.rowIndex>t.r2?d.rowIndex-t.r2:d.rowIndex<t.r1?d.rowIndex-t.r1:0,p=c.index>t.c2?c.index-t.c2:c.index<t.c1?c.index-t.c1:0;!u&&!p?o=null:Math.abs(u)>=Math.abs(p)?o={r1:Math.min(t.r1,d.rowIndex),r2:Math.max(t.r2,d.rowIndex),c1:t.c1,c2:t.c2}:o={r1:t.r1,r2:t.r2,c1:Math.min(t.c1,c.index),c2:Math.max(t.c2,c.index)},this.showPreview(o)},a=()=>{if(window.removeEventListener("pointermove",s),window.removeEventListener("pointerup",a),this.preview.remove(),r.classList.remove("fg-range-dragging"),!o)return;let l=n.columns.displayed();n.fillRange({start:{rowIndex:o.r1,colId:l[o.c1].id},end:{rowIndex:o.r2,colId:l[o.c2].id}})};r.classList.add("fg-range-dragging"),window.addEventListener("pointermove",s),window.addEventListener("pointerup",a)};this.handle=y("div","fg-fill-handle",{"aria-hidden":"true"}),this.preview=y("div","fg-fill-preview",{"aria-hidden":"true"}),this.handle.addEventListener("pointerdown",this.onDown)}enabled(){let e=this.grid.options;return e.fillHandle!==!1&&e.rangeSelection!==!1}source(){let e=this.grid.rangeBounds();if(e)return e;let t=this.grid.store.state.focus,n=t&&this.grid.columns.getColumn(t.colId);return!t||!n||I(n.id)?null:{r1:t.rowIndex,r2:t.rowIndex,c1:n.index,c2:n.index}}cellEl(e,t){let n=this.grid.columns.displayed()[t];return n?this.grid.renderer.root.querySelector(`.fg-body .fg-row[data-row="${e}"] .fg-cell[data-col="${CSS.escape(n.id)}"]`):null}update(){let e=this.enabled()?this.source():null,t=this.grid.columns.displayed(),o=!!e&&t.slice(e.c1,e.c2+1).some(a=>a.def.editable&&a.def.field)&&e?this.cellEl(e.r2,e.c2):null;if(!o){this.handle.remove();return}let r=this.grid.renderer.root.getBoundingClientRect(),s=o.getBoundingClientRect();this.handle.style.left=`${(this.grid.renderer.rtl?s.left:s.right)-r.left-4}px`,this.handle.style.top=`${s.bottom-r.top-4}px`,this.handle.isConnected||this.grid.renderer.root.append(this.handle)}showPreview(e){let t=e&&this.cellEl(e.r1,e.c1),n=e&&this.cellEl(e.r2,e.c2);if(!t||!n){this.preview.remove();return}let o=this.grid.renderer.root.getBoundingClientRect(),r=t.getBoundingClientRect(),s=n.getBoundingClientRect();Object.assign(this.preview.style,{left:`${r.left-o.left}px`,top:`${r.top-o.top}px`,width:`${s.right-r.left}px`,height:`${s.bottom-r.top}px`}),this.preview.isConnected||this.grid.renderer.root.append(this.preview)}destroy(){this.handle.remove(),this.preview.remove()}};var mr=1e4,dt=class{constructor(e){this.grid=e;this.matches=[];this.lookup=new Map;this.index=-1;this.query="";this.bar=null;this.countEl=null}get active(){return!!this.query}classFor(e,t){if(!this.query)return"";let n=this.lookup.get(`${e}|${t}`);return n===void 0?"":n===this.index?" fg-cell-match fg-cell-match-current":" fg-cell-match"}find(e){if(this.query=e.trim().toLowerCase(),this.matches=[],this.lookup.clear(),this.index=-1,this.query){let{grid:t}=this,n=t.store.state.locale.code,o=t.columns.displayed().filter(a=>!I(a.id)),r=o.map(a=>W(a.def,n)),s=t.rowModel.rows();e:for(let a=0;a<s.length;a++)if(!s[a].kind){for(let l=0;l<o.length;l++)if(r[l](N(o[l].def,s[a].data)).toLowerCase().includes(this.query)&&(this.lookup.set(`${a}|${o[l].id}`,this.matches.length),this.matches.push({rowIndex:a,colId:o[l].id}),this.matches.length>=mr))break e}this.matches.length&&this.go(0)}return this.updateCount(),this.grid.renderer.invalidate({rows:!0}),this.matches.length}refresh(){this.query&&this.find(this.query)}next(){this.matches.length&&this.go((this.index+1)%this.matches.length)}previous(){this.matches.length&&this.go((this.index-1+this.matches.length)%this.matches.length)}clear(){this.query="",this.matches=[],this.lookup.clear(),this.index=-1,this.grid.renderer.invalidate({rows:!0})}go(e){this.index=e;let t=this.matches[e];this.grid.setFocus(t.rowIndex,t.colId),this.grid.renderer.ensureVisible(t.rowIndex,t.colId),this.updateCount(),this.grid.renderer.invalidate({rows:!0})}updateCount(){if(!this.countEl)return;let e=this.grid.store.state.locale;this.countEl.textContent=this.query?this.matches.length?`${this.index+1}/${this.matches.length}`:e.noMatches:""}openBar(){if(this.grid.options.findBar===!1)return;if(this.bar){this.bar.querySelector("input").focus();return}let e=this.grid.store.state.locale,t=y("div","fg-findbar",{role:"search"}),n=y("input","fg-input",{type:"search",placeholder:e.findPlaceholder,"aria-label":e.findPlaceholder});this.countEl=y("span","fg-findbar-count",{"aria-live":"polite"});let o=(r,s,a)=>{let l=y("button","fg-findbar-btn",{type:"button","aria-label":r,title:r});return l.textContent=s,l.addEventListener("click",a),l};t.append(n,this.countEl,o(e.findPrevious,"\u2191",()=>this.previous()),o(e.findNext,"\u2193",()=>this.next()),o(e.close,"\xD7",()=>this.closeBar())),n.addEventListener("input",()=>this.find(n.value)),t.addEventListener("keydown",r=>{r.stopPropagation(),r.key==="Escape"?(r.preventDefault(),this.closeBar()):r.key==="Enter"&&(r.preventDefault(),r.shiftKey?this.previous():this.next())}),this.grid.renderer.root.append(t),this.bar=t,n.focus()}closeBar(){this.bar?.remove(),this.bar=null,this.countEl=null,this.clear(),this.grid.renderer.gridEl.focus({preventScroll:!0})}};var wr=864e5;function Te(i,e){if(!i.length||e<=0)return[];let t=()=>Array.from({length:e},(r,s)=>i[s%i.length]);if(i.every(r=>typeof r=="number"&&!Number.isNaN(r))){let r=i;if(r.length===1)return t();let s=r[1]-r[0];if(!r.every((l,d)=>d===0||Math.abs(l-r[d-1]-s)<1e-9))return t();let a=r[r.length-1];return Array.from({length:e},(l,d)=>Math.round((a+s*(d+1))*1e12)/1e12)}let n=i.map(r=>r instanceof Date||typeof r=="string"&&/^\d{4}-\d{2}-\d{2}/.test(r)?oe(r):null);if(n.every(Boolean)&&i.length>=2){let r=n.map(a=>Math.round(a.getTime()/wr)),s=r[1]-r[0];if(r.every((a,l)=>l===0||a-r[l-1]===s)){let a=n[n.length-1],l=i[i.length-1]instanceof Date;return Array.from({length:e},(d,c)=>{let u=new Date(a.getFullYear(),a.getMonth(),a.getDate()+s*(c+1));return l?u:Z(u)})}return t()}let o=i[i.length-1];if(typeof o=="string"&&!H(o)&&i.every(r=>typeof r=="string")){let r=/^(.*?)(\d+)$/.exec(o);if(r){let s=r[2].length,a=Number(r[2]);return Array.from({length:e},(l,d)=>`${r[1]}${String(a+d+1).padStart(s,"0")}`)}}return t()}function zt(i){let e=t=>/[\t\n\r"]/.test(t)?`"${t.replace(/"/g,'""')}"`:t;return i.map(t=>t.map(e).join(" ")).join(`\r
|
|
2
|
-
`)}function
|
|
1
|
+
var No={code:"en",noRows:"No rows to show",filter:"Filter",apply:"Apply",reset:"Reset",selectAll:"(Select all)",search:"Search\u2026",blanks:"(Blanks)",value:"Value",valueTo:"To",sortAsc:"Sort ascending",sortDesc:"Sort descending",clearSort:"Clear sort",pinLeft:"Pin left",pinRight:"Pin right",unpin:"Unpin",columnMenu:"Column menu",selectRow:"Select row",selectAllRows:"Select all rows",chooseColumns:"Choose columns",columns:"Columns",autosizeThis:"Autosize this column",autosizeAll:"Autosize all columns",resetColumns:"Reset columns",hideColumn:"Hide column",close:"Close",copy:"Copy",cut:"Cut",copyWithHeaders:"Copy with headers",paste:"Paste",pasteHint:"Clipboard access was blocked. Press Ctrl+V to paste.",required:"This field is required",invalidValue:"Invalid value",and:"And",or:"Or",advancedFilter:"Advanced filter",addCondition:"Add condition",duplicate:"This value is already used",undo:"Undo",redo:"Redo",deleteRows:"Delete selected rows",copyRows:"Copy selected rows",statusRows:"{n} rows",statusFiltered:"{shown} of {total} rows",statusSelected:"{n} selected",count:"Count",sum:"Sum",avg:"Average",min:"Min",max:"Max",findPlaceholder:"Find in grid",noMatches:"No matches",findNext:"Next match",findPrevious:"Previous match",groupPanelHint:"Drag a column header here to group rows",groupByThis:"Group by this column",ungroup:"Remove grouping",expandAll:"Expand all",collapseAll:"Collapse all",pagerRange:"{from}\u2013{to} of {total}",pageOf:"Page {page} of {pages}",pageSize:"Rows per page",firstPage:"First page",previousPage:"Previous page",nextPage:"Next page",lastPage:"Last page",loading:"Loading\u2026",loadFailed:"Could not load rows",filters:"Filters",clearFilters:"Clear all filters",exportCsv:"Export CSV",exportExcel:"Export Excel",print:"Print\u2026",pivot:"Pivot",pivotMode:"Pivot mode",pivotRows:"Row groups",pivotColumns:"Column labels",pivotValues:"Values",total:"Total",addColumn:"Add a column\u2026",chartBar:"Bar chart",chartStacked:"Stacked bar chart",chartLine:"Line chart",chartArea:"Area chart",chartPie:"Pie chart",chartDonut:"Donut chart",chartCombo:"Bar and line chart",chartScatter:"Scatter chart",freeBadge:"Free version",ops:{contains:"Contains",equals:"Equals",notEquals:"Does not equal",startsWith:"Starts with",endsWith:"Ends with",blank:"Blank",notBlank:"Not blank",eq:"Equals",ne:"Does not equal",lt:"Less than",lte:"Less than or equal",gt:"Greater than",gte:"Greater than or equal",between:"Between",before:"Before",after:"After"}},se=No;var gn=new Set;function O(i){gn.has(i)||(gn.add(i),console.warn(`[FreeGrid] ${i}`))}var we=new Map([["en",se]]);function Et(i){we.set(i.code,i)}function mn(i){let e=i.toLowerCase();for(let n of we.keys())if(n.toLowerCase()===e)return n;let t=e.split("-")[0];if(t==="zh"){if(/-(tw|hk|mo|hant)(-|$)/.test(e)&&we.has("zh-TW"))return"zh-TW";if(we.has("zh-CN"))return"zh-CN"}for(let n of we.keys())if(n.toLowerCase().split("-")[0]===t)return n}function Oo(){return typeof navigator>"u"?[]:navigator.languages?.length?navigator.languages:navigator.language?[navigator.language]:[]}function Ho(i){return{...se,...i,code:i.code??"en",ops:{...se.ops,...i.ops??{}}}}function Ve(i,e=Oo()){if(i&&typeof i=="object")return Ho(i);if(typeof i=="string"){let t=mn(i);return t?we.get(t):(O(`locale "${i}" is not registered \u2014 import it from "@freegridjs/core/locales/${i}" and pass the pack (or call registerLocale). Falling back to "en".`),se)}for(let t of e){let n=mn(t);if(n)return we.get(n)}return se}var Bo={code:"de",noRows:"Keine Zeilen vorhanden",filter:"Filter",apply:"Anwenden",reset:"Zur\xFCcksetzen",selectAll:"(Alle ausw\xE4hlen)",search:"Suchen\u2026",blanks:"(Leer)",value:"Wert",valueTo:"Bis",sortAsc:"Aufsteigend sortieren",sortDesc:"Absteigend sortieren",clearSort:"Sortierung aufheben",pinLeft:"Links fixieren",pinRight:"Rechts fixieren",unpin:"Fixierung l\xF6sen",columnMenu:"Spaltenmen\xFC",selectRow:"Zeile ausw\xE4hlen",selectAllRows:"Alle Zeilen ausw\xE4hlen",chooseColumns:"Spalten ausw\xE4hlen",columns:"Spalten",autosizeThis:"Diese Spalte automatisch anpassen",autosizeAll:"Alle Spalten automatisch anpassen",resetColumns:"Spalten zur\xFCcksetzen",hideColumn:"Spalte ausblenden",close:"Schlie\xDFen",copy:"Kopieren",cut:"Ausschneiden",copyWithHeaders:"Mit \xDCberschriften kopieren",paste:"Einf\xFCgen",pasteHint:"Der Browser hat die Zwischenablage blockiert. Dr\xFCcken Sie Ctrl+V zum Einf\xFCgen.",required:"Dieses Feld ist erforderlich",invalidValue:"Ung\xFCltiger Wert",and:"Und",or:"Oder",advancedFilter:"Erweiterter Filter",addCondition:"Bedingung hinzuf\xFCgen",duplicate:"Dieser Wert wird bereits verwendet",undo:"R\xFCckg\xE4ngig",redo:"Wiederholen",deleteRows:"Ausgew\xE4hlte Zeilen l\xF6schen",copyRows:"Ausgew\xE4hlte Zeilen kopieren",statusRows:"{n} Zeilen",statusFiltered:"{shown} von {total} Zeilen",statusSelected:"{n} ausgew\xE4hlt",count:"Anzahl",sum:"Summe",avg:"Mittelwert",min:"Min",max:"Max",findPlaceholder:"Im Raster suchen",noMatches:"Keine Treffer",findNext:"N\xE4chster Treffer",findPrevious:"Vorheriger Treffer",groupPanelHint:"Spalten\xFCberschrift hierher ziehen, um zu gruppieren",groupByThis:"Nach dieser Spalte gruppieren",ungroup:"Gruppierung aufheben",expandAll:"Alle aufklappen",collapseAll:"Alle zuklappen",pagerRange:"{from}\u2013{to} von {total}",pageOf:"Seite {page} von {pages}",pageSize:"Zeilen pro Seite",firstPage:"Erste Seite",previousPage:"Vorherige Seite",nextPage:"N\xE4chste Seite",lastPage:"Letzte Seite",loading:"Wird geladen\u2026",loadFailed:"Zeilen konnten nicht geladen werden",filters:"Filter",clearFilters:"Alle Filter entfernen",exportCsv:"Als CSV exportieren",exportExcel:"Nach Excel exportieren",print:"Drucken\u2026",pivot:"Pivot",pivotMode:"Pivot-Modus",pivotRows:"Zeilengruppen",pivotColumns:"Spaltenbeschriftungen",pivotValues:"Werte",total:"Gesamt",addColumn:"Spalte hinzuf\xFCgen\u2026",chartBar:"Balkendiagramm",chartStacked:"Gestapelte Balken",chartLine:"Liniendiagramm",chartArea:"Fl\xE4chendiagramm",chartPie:"Kreisdiagramm",chartDonut:"Ringdiagramm",chartCombo:"Balken- und Liniendiagramm",chartScatter:"Streudiagramm",freeBadge:"Kostenlose Version",ops:{contains:"Enth\xE4lt",equals:"Gleich",notEquals:"Ungleich",startsWith:"Beginnt mit",endsWith:"Endet mit",blank:"Leer",notBlank:"Nicht leer",eq:"Gleich",ne:"Ungleich",lt:"Kleiner als",lte:"Kleiner oder gleich",gt:"Gr\xF6\xDFer als",gte:"Gr\xF6\xDFer oder gleich",between:"Zwischen",before:"Vor",after:"Nach"}},wn=Bo;var Go={code:"es",noRows:"No hay filas para mostrar",filter:"Filtro",apply:"Aplicar",reset:"Restablecer",selectAll:"(Seleccionar todo)",search:"Buscar\u2026",blanks:"(Vac\xEDos)",value:"Valor",valueTo:"Hasta",sortAsc:"Orden ascendente",sortDesc:"Orden descendente",clearSort:"Quitar orden",pinLeft:"Fijar a la izquierda",pinRight:"Fijar a la derecha",unpin:"Desfijar",columnMenu:"Men\xFA de columna",selectRow:"Seleccionar fila",selectAllRows:"Seleccionar todas las filas",chooseColumns:"Elegir columnas",columns:"Columnas",autosizeThis:"Ajustar esta columna",autosizeAll:"Ajustar todas las columnas",resetColumns:"Restablecer columnas",hideColumn:"Ocultar columna",close:"Cerrar",copy:"Copiar",cut:"Cortar",copyWithHeaders:"Copiar con encabezados",paste:"Pegar",pasteHint:"El navegador bloque\xF3 el portapapeles. Pulsa Ctrl+V para pegar.",required:"Este campo es obligatorio",invalidValue:"Valor no v\xE1lido",and:"Y",or:"O",advancedFilter:"Filtro avanzado",addCondition:"A\xF1adir condici\xF3n",duplicate:"Este valor ya est\xE1 en uso",undo:"Deshacer",redo:"Rehacer",deleteRows:"Eliminar filas seleccionadas",copyRows:"Copiar filas seleccionadas",statusRows:"{n} filas",statusFiltered:"{shown} de {total} filas",statusSelected:"{n} seleccionadas",count:"Recuento",sum:"Suma",avg:"Promedio",min:"M\xEDn.",max:"M\xE1x.",findPlaceholder:"Buscar en la tabla",noMatches:"Sin coincidencias",findNext:"Siguiente",findPrevious:"Anterior",groupPanelHint:"Arrastre aqu\xED un encabezado de columna para agrupar",groupByThis:"Agrupar por esta columna",ungroup:"Quitar agrupaci\xF3n",expandAll:"Expandir todo",collapseAll:"Contraer todo",pagerRange:"{from}\u2013{to} de {total}",pageOf:"P\xE1gina {page} de {pages}",pageSize:"Filas por p\xE1gina",firstPage:"Primera p\xE1gina",previousPage:"P\xE1gina anterior",nextPage:"P\xE1gina siguiente",lastPage:"\xDAltima p\xE1gina",loading:"Cargando\u2026",loadFailed:"No se pudieron cargar las filas",filters:"Filtros",clearFilters:"Quitar todos los filtros",exportCsv:"Exportar CSV",exportExcel:"Exportar a Excel",print:"Imprimir\u2026",pivot:"Tabla din\xE1mica",pivotMode:"Modo tabla din\xE1mica",pivotRows:"Grupos de filas",pivotColumns:"Etiquetas de columna",pivotValues:"Valores",total:"Total",addColumn:"A\xF1adir columna\u2026",chartBar:"Gr\xE1fico de barras",chartStacked:"Barras apiladas",chartLine:"Gr\xE1fico de l\xEDneas",chartArea:"Gr\xE1fico de \xE1reas",chartPie:"Gr\xE1fico circular",chartDonut:"Gr\xE1fico de anillo",chartCombo:"Gr\xE1fico de barras y l\xEDneas",chartScatter:"Gr\xE1fico de dispersi\xF3n",freeBadge:"Versi\xF3n gratuita",ops:{contains:"Contiene",equals:"Igual a",notEquals:"Distinto de",startsWith:"Empieza por",endsWith:"Termina en",blank:"Vac\xEDo",notBlank:"No vac\xEDo",eq:"Igual a",ne:"Distinto de",lt:"Menor que",lte:"Menor o igual que",gt:"Mayor que",gte:"Mayor o igual que",between:"Entre",before:"Antes de",after:"Despu\xE9s de"}},vn=Go;var zo={code:"fr",noRows:"Aucune ligne \xE0 afficher",filter:"Filtre",apply:"Appliquer",reset:"R\xE9initialiser",selectAll:"(Tout s\xE9lectionner)",search:"Rechercher\u2026",blanks:"(Vides)",value:"Valeur",valueTo:"\xC0",sortAsc:"Tri croissant",sortDesc:"Tri d\xE9croissant",clearSort:"Annuler le tri",pinLeft:"\xC9pingler \xE0 gauche",pinRight:"\xC9pingler \xE0 droite",unpin:"D\xE9s\xE9pingler",columnMenu:"Menu de colonne",selectRow:"S\xE9lectionner la ligne",selectAllRows:"S\xE9lectionner toutes les lignes",chooseColumns:"Choisir les colonnes",columns:"Colonnes",autosizeThis:"Ajuster cette colonne",autosizeAll:"Ajuster toutes les colonnes",resetColumns:"R\xE9initialiser les colonnes",hideColumn:"Masquer la colonne",close:"Fermer",copy:"Copier",cut:"Couper",copyWithHeaders:"Copier avec les en-t\xEAtes",paste:"Coller",pasteHint:"Le navigateur a bloqu\xE9 le presse-papiers. Appuyez sur Ctrl+V pour coller.",required:"Ce champ est obligatoire",invalidValue:"Valeur non valide",and:"Et",or:"Ou",advancedFilter:"Filtre avanc\xE9",addCondition:"Ajouter une condition",duplicate:"Cette valeur est d\xE9j\xE0 utilis\xE9e",undo:"Annuler",redo:"R\xE9tablir",deleteRows:"Supprimer les lignes s\xE9lectionn\xE9es",copyRows:"Copier les lignes s\xE9lectionn\xE9es",statusRows:"{n} lignes",statusFiltered:"{shown} sur {total} lignes",statusSelected:"{n} s\xE9lectionn\xE9es",count:"Nombre",sum:"Somme",avg:"Moyenne",min:"Min",max:"Max",findPlaceholder:"Rechercher dans la grille",noMatches:"Aucun r\xE9sultat",findNext:"Suivant",findPrevious:"Pr\xE9c\xE9dent",groupPanelHint:"Faites glisser un en-t\xEAte de colonne ici pour regrouper",groupByThis:"Regrouper par cette colonne",ungroup:"Supprimer le regroupement",expandAll:"Tout d\xE9velopper",collapseAll:"Tout r\xE9duire",pagerRange:"{from}\u2013{to} sur {total}",pageOf:"Page {page} sur {pages}",pageSize:"Lignes par page",firstPage:"Premi\xE8re page",previousPage:"Page pr\xE9c\xE9dente",nextPage:"Page suivante",lastPage:"Derni\xE8re page",loading:"Chargement\u2026",loadFailed:"Impossible de charger les lignes",filters:"Filtres",clearFilters:"Effacer tous les filtres",exportCsv:"Exporter en CSV",exportExcel:"Exporter vers Excel",print:"Imprimer\u2026",pivot:"Tableau crois\xE9",pivotMode:"Mode tableau crois\xE9",pivotRows:"Groupes de lignes",pivotColumns:"\xC9tiquettes de colonnes",pivotValues:"Valeurs",total:"Total",addColumn:"Ajouter une colonne\u2026",chartBar:"Histogramme",chartStacked:"Histogramme empil\xE9",chartLine:"Courbes",chartArea:"Aires",chartPie:"Secteurs",chartDonut:"Graphique en anneau",chartCombo:"Graphique barres et lignes",chartScatter:"Nuage de points",freeBadge:"Version gratuite",ops:{contains:"Contient",equals:"\xC9gal \xE0",notEquals:"Diff\xE9rent de",startsWith:"Commence par",endsWith:"Se termine par",blank:"Vide",notBlank:"Non vide",eq:"\xC9gal \xE0",ne:"Diff\xE9rent de",lt:"Inf\xE9rieur \xE0",lte:"Inf\xE9rieur ou \xE9gal \xE0",gt:"Sup\xE9rieur \xE0",gte:"Sup\xE9rieur ou \xE9gal \xE0",between:"Entre",before:"Avant",after:"Apr\xE8s"}},yn=zo;var Vo={code:"ja",noRows:"\u8868\u793A\u3059\u308B\u30C7\u30FC\u30BF\u304C\u3042\u308A\u307E\u305B\u3093",filter:"\u30D5\u30A3\u30EB\u30BF\u30FC",apply:"\u9069\u7528",reset:"\u30EA\u30BB\u30C3\u30C8",selectAll:"(\u3059\u3079\u3066\u9078\u629E)",search:"\u691C\u7D22\u2026",blanks:"(\u7A7A\u767D)",value:"\u5024",valueTo:"\u7D42\u4E86\u5024",sortAsc:"\u6607\u9806\u3067\u4E26\u3079\u66FF\u3048",sortDesc:"\u964D\u9806\u3067\u4E26\u3079\u66FF\u3048",clearSort:"\u4E26\u3079\u66FF\u3048\u3092\u89E3\u9664",pinLeft:"\u5DE6\u306B\u56FA\u5B9A",pinRight:"\u53F3\u306B\u56FA\u5B9A",unpin:"\u56FA\u5B9A\u3092\u89E3\u9664",columnMenu:"\u5217\u30E1\u30CB\u30E5\u30FC",selectRow:"\u884C\u3092\u9078\u629E",selectAllRows:"\u3059\u3079\u3066\u306E\u884C\u3092\u9078\u629E",chooseColumns:"\u5217\u3092\u9078\u629E",columns:"\u5217",autosizeThis:"\u3053\u306E\u5217\u306E\u5E45\u3092\u81EA\u52D5\u8ABF\u6574",autosizeAll:"\u3059\u3079\u3066\u306E\u5217\u306E\u5E45\u3092\u81EA\u52D5\u8ABF\u6574",resetColumns:"\u5217\u3092\u30EA\u30BB\u30C3\u30C8",hideColumn:"\u5217\u3092\u975E\u8868\u793A",close:"\u9589\u3058\u308B",copy:"\u30B3\u30D4\u30FC",cut:"\u5207\u308A\u53D6\u308A",copyWithHeaders:"\u30D8\u30C3\u30C0\u30FC\u4ED8\u304D\u3067\u30B3\u30D4\u30FC",paste:"\u8CBC\u308A\u4ED8\u3051",pasteHint:"\u30D6\u30E9\u30A6\u30B6\u30FC\u304C\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9\u3078\u306E\u30A2\u30AF\u30BB\u30B9\u3092\u30D6\u30ED\u30C3\u30AF\u3057\u307E\u3057\u305F\u3002Ctrl+V \u3067\u8CBC\u308A\u4ED8\u3051\u3066\u304F\u3060\u3055\u3044\u3002",required:"\u3053\u306E\u9805\u76EE\u306F\u5FC5\u9808\u3067\u3059",invalidValue:"\u7121\u52B9\u306A\u5024\u3067\u3059",and:"\u304B\u3064",or:"\u307E\u305F\u306F",advancedFilter:"\u8A73\u7D30\u30D5\u30A3\u30EB\u30BF\u30FC",addCondition:"\u6761\u4EF6\u3092\u8FFD\u52A0",duplicate:"\u3053\u306E\u5024\u306F\u3059\u3067\u306B\u4F7F\u308F\u308C\u3066\u3044\u307E\u3059",undo:"\u5143\u306B\u623B\u3059",redo:"\u3084\u308A\u76F4\u3057",deleteRows:"\u9078\u629E\u3057\u305F\u884C\u3092\u524A\u9664",copyRows:"\u9078\u629E\u3057\u305F\u884C\u3092\u30B3\u30D4\u30FC",statusRows:"{n} \u884C",statusFiltered:"{total} \u884C\u4E2D {shown} \u884C",statusSelected:"{n} \u4EF6\u9078\u629E",count:"\u30C7\u30FC\u30BF\u306E\u500B\u6570",sum:"\u5408\u8A08",avg:"\u5E73\u5747",min:"\u6700\u5C0F",max:"\u6700\u5927",findPlaceholder:"\u30B0\u30EA\u30C3\u30C9\u5185\u3092\u691C\u7D22",noMatches:"\u4E00\u81F4\u306A\u3057",findNext:"\u6B21\u3092\u691C\u7D22",findPrevious:"\u524D\u3092\u691C\u7D22",groupPanelHint:"\u5217\u898B\u51FA\u3057\u3092\u3053\u3053\u306B\u30C9\u30E9\u30C3\u30B0\u3057\u3066\u30B0\u30EB\u30FC\u30D7\u5316",groupByThis:"\u3053\u306E\u5217\u3067\u30B0\u30EB\u30FC\u30D7\u5316",ungroup:"\u30B0\u30EB\u30FC\u30D7\u5316\u3092\u89E3\u9664",expandAll:"\u3059\u3079\u3066\u5C55\u958B",collapseAll:"\u3059\u3079\u3066\u6298\u308A\u305F\u305F\u3080",pagerRange:"{total} \u4EF6\u4E2D {from}\u2013{to} \u4EF6",pageOf:"{pages} \u30DA\u30FC\u30B8\u4E2D {page} \u30DA\u30FC\u30B8",pageSize:"1 \u30DA\u30FC\u30B8\u306E\u884C\u6570",firstPage:"\u6700\u521D\u306E\u30DA\u30FC\u30B8",previousPage:"\u524D\u306E\u30DA\u30FC\u30B8",nextPage:"\u6B21\u306E\u30DA\u30FC\u30B8",lastPage:"\u6700\u5F8C\u306E\u30DA\u30FC\u30B8",loading:"\u8AAD\u307F\u8FBC\u307F\u4E2D\u2026",loadFailed:"\u884C\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093\u3067\u3057\u305F",filters:"\u30D5\u30A3\u30EB\u30BF\u30FC",clearFilters:"\u3059\u3079\u3066\u306E\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u89E3\u9664",exportCsv:"CSV \u306B\u66F8\u304D\u51FA\u3059",exportExcel:"Excel \u306B\u66F8\u304D\u51FA\u3059",print:"\u5370\u5237\u2026",pivot:"\u30D4\u30DC\u30C3\u30C8",pivotMode:"\u30D4\u30DC\u30C3\u30C8\u30E2\u30FC\u30C9",pivotRows:"\u884C\u30B0\u30EB\u30FC\u30D7",pivotColumns:"\u5217\u30E9\u30D9\u30EB",pivotValues:"\u5024",total:"\u5408\u8A08",addColumn:"\u5217\u3092\u8FFD\u52A0\u2026",chartBar:"\u68D2\u30B0\u30E9\u30D5",chartStacked:"\u7A4D\u307F\u4E0A\u3052\u68D2\u30B0\u30E9\u30D5",chartLine:"\u6298\u308C\u7DDA\u30B0\u30E9\u30D5",chartArea:"\u9762\u30B0\u30E9\u30D5",chartPie:"\u5186\u30B0\u30E9\u30D5",chartDonut:"\u30C9\u30FC\u30CA\u30C4\u30B0\u30E9\u30D5",chartCombo:"\u68D2\u30FB\u6298\u308C\u7DDA\u30B0\u30E9\u30D5",chartScatter:"\u6563\u5E03\u56F3",freeBadge:"\u7121\u6599\u7248\u3092\u4F7F\u7528\u4E2D",ops:{contains:"\u542B\u3080",equals:"\u7B49\u3057\u3044",notEquals:"\u7B49\u3057\u304F\u306A\u3044",startsWith:"\u3067\u59CB\u307E\u308B",endsWith:"\u3067\u7D42\u308F\u308B",blank:"\u7A7A\u767D",notBlank:"\u7A7A\u767D\u4EE5\u5916",eq:"\u7B49\u3057\u3044",ne:"\u7B49\u3057\u304F\u306A\u3044",lt:"\u3088\u308A\u5C0F\u3055\u3044",lte:"\u4EE5\u4E0B",gt:"\u3088\u308A\u5927\u304D\u3044",gte:"\u4EE5\u4E0A",between:"\u7BC4\u56F2\u5185",before:"\u3088\u308A\u524D",after:"\u3088\u308A\u5F8C"}},bn=Vo;var qo={code:"ko",noRows:"\uD45C\uC2DC\uD560 \uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4",filter:"\uD544\uD130",apply:"\uC801\uC6A9",reset:"\uCD08\uAE30\uD654",selectAll:"(\uC804\uCCB4 \uC120\uD0DD)",search:"\uAC80\uC0C9\u2026",blanks:"(\uBE48 \uAC12)",value:"\uAC12",valueTo:"\uB05D \uAC12",sortAsc:"\uC624\uB984\uCC28\uC21C \uC815\uB82C",sortDesc:"\uB0B4\uB9BC\uCC28\uC21C \uC815\uB82C",clearSort:"\uC815\uB82C \uD574\uC81C",pinLeft:"\uC67C\uCABD \uACE0\uC815",pinRight:"\uC624\uB978\uCABD \uACE0\uC815",unpin:"\uACE0\uC815 \uD574\uC81C",columnMenu:"\uCEEC\uB7FC \uBA54\uB274",selectRow:"\uD589 \uC120\uD0DD",selectAllRows:"\uC804\uCCB4 \uD589 \uC120\uD0DD",chooseColumns:"\uCEEC\uB7FC \uC120\uD0DD",columns:"\uCEEC\uB7FC",autosizeThis:"\uC774 \uCEEC\uB7FC \uB108\uBE44 \uC790\uB3D9 \uB9DE\uCDA4",autosizeAll:"\uBAA8\uB4E0 \uCEEC\uB7FC \uB108\uBE44 \uC790\uB3D9 \uB9DE\uCDA4",resetColumns:"\uCEEC\uB7FC \uCD08\uAE30\uD654",hideColumn:"\uCEEC\uB7FC \uC228\uAE30\uAE30",close:"\uB2EB\uAE30",copy:"\uBCF5\uC0AC",cut:"\uC798\uB77C\uB0B4\uAE30",copyWithHeaders:"\uD5E4\uB354 \uD3EC\uD568 \uBCF5\uC0AC",paste:"\uBD99\uC5EC\uB123\uAE30",pasteHint:"\uBE0C\uB77C\uC6B0\uC800\uAC00 \uD074\uB9BD\uBCF4\uB4DC \uC811\uADFC\uC744 \uB9C9\uC558\uC2B5\uB2C8\uB2E4. Ctrl+V\uB85C \uBD99\uC5EC\uB123\uC73C\uC138\uC694.",required:"\uD544\uC218 \uC785\uB825 \uD56D\uBAA9\uC785\uB2C8\uB2E4",invalidValue:"\uC62C\uBC14\uB978 \uAC12\uC774 \uC544\uB2D9\uB2C8\uB2E4",and:"\uADF8\uB9AC\uACE0",or:"\uB610\uB294",advancedFilter:"\uACE0\uAE09 \uD544\uD130",addCondition:"\uC870\uAC74 \uCD94\uAC00",duplicate:"\uC774\uBBF8 \uC0AC\uC6A9 \uC911\uC778 \uAC12\uC785\uB2C8\uB2E4",undo:"\uC2E4\uD589 \uCDE8\uC18C",redo:"\uB2E4\uC2DC \uC2E4\uD589",deleteRows:"\uC120\uD0DD\uD55C \uD589 \uC0AD\uC81C",copyRows:"\uC120\uD0DD\uD55C \uD589 \uBCF5\uC0AC",statusRows:"{n}\uD589",statusFiltered:"{total}\uD589 \uC911 {shown}\uD589",statusSelected:"{n}\uAC1C \uC120\uD0DD",count:"\uAC1C\uC218",sum:"\uD569\uACC4",avg:"\uD3C9\uADE0",min:"\uCD5C\uC18C",max:"\uCD5C\uB300",findPlaceholder:"\uADF8\uB9AC\uB4DC\uC5D0\uC11C \uCC3E\uAE30",noMatches:"\uC77C\uCE58 \uD56D\uBAA9 \uC5C6\uC74C",findNext:"\uB2E4\uC74C \uCC3E\uAE30",findPrevious:"\uC774\uC804 \uCC3E\uAE30",groupPanelHint:"\uC5F4 \uBA38\uB9AC\uAE00\uC744 \uC5EC\uAE30\uB85C \uB04C\uC5B4\uC640 \uD589\uC744 \uBB36\uC73C\uC138\uC694",groupByThis:"\uC774 \uC5F4\uB85C \uBB36\uAE30",ungroup:"\uBB36\uAE30 \uD574\uC81C",expandAll:"\uBAA8\uB450 \uD3BC\uCE58\uAE30",collapseAll:"\uBAA8\uB450 \uC811\uAE30",pagerRange:"{total}\uAC1C \uC911 {from}\u2013{to}",pageOf:"{pages}\uCABD \uC911 {page}\uCABD",pageSize:"\uCABD\uB2F9 \uD589 \uC218",firstPage:"\uCCAB \uCABD",previousPage:"\uC774\uC804 \uCABD",nextPage:"\uB2E4\uC74C \uCABD",lastPage:"\uB9C8\uC9C0\uB9C9 \uCABD",loading:"\uBD88\uB7EC\uC624\uB294 \uC911\u2026",loadFailed:"\uD589\uC744 \uBD88\uB7EC\uC624\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4",filters:"\uD544\uD130",clearFilters:"\uD544\uD130 \uBAA8\uB450 \uC9C0\uC6B0\uAE30",exportCsv:"CSV\uB85C \uB0B4\uBCF4\uB0B4\uAE30",exportExcel:"\uC5D1\uC140\uB85C \uB0B4\uBCF4\uB0B4\uAE30",print:"\uC778\uC1C4\u2026",pivot:"\uD53C\uBC97",pivotMode:"\uD53C\uBC97 \uBAA8\uB4DC",pivotRows:"\uD589 \uADF8\uB8F9",pivotColumns:"\uC5F4 \uB808\uC774\uBE14",pivotValues:"\uAC12",total:"\uD569\uACC4",addColumn:"\uCEEC\uB7FC \uCD94\uAC00\u2026",chartBar:"\uB9C9\uB300 \uCC28\uD2B8",chartStacked:"\uB204\uC801 \uB9C9\uB300 \uCC28\uD2B8",chartLine:"\uAEBE\uC740\uC120 \uCC28\uD2B8",chartArea:"\uC601\uC5ED \uCC28\uD2B8",chartPie:"\uC6D0\uD615 \uCC28\uD2B8",chartDonut:"\uB3C4\uB11B \uCC28\uD2B8",chartCombo:"\uB9C9\uB300\xB7\uAEBE\uC740\uC120 \uCC28\uD2B8",chartScatter:"\uBD84\uC0B0\uD615 \uCC28\uD2B8",freeBadge:"\uBB34\uB8CC \uC0AC\uC6A9 \uC911",ops:{contains:"\uD3EC\uD568",equals:"\uAC19\uC74C",notEquals:"\uAC19\uC9C0 \uC54A\uC74C",startsWith:"\uC2DC\uC791 \uBB38\uC790",endsWith:"\uB05D \uBB38\uC790",blank:"\uBE48 \uAC12",notBlank:"\uBE48 \uAC12 \uC544\uB2D8",eq:"\uAC19\uC74C",ne:"\uAC19\uC9C0 \uC54A\uC74C",lt:"\uBBF8\uB9CC",lte:"\uC774\uD558",gt:"\uCD08\uACFC",gte:"\uC774\uC0C1",between:"\uBC94\uC704",before:"\uC774\uC804",after:"\uC774\uD6C4"}},xn=qo;var Wo={code:"zh-CN",noRows:"\u6CA1\u6709\u53EF\u663E\u793A\u7684\u6570\u636E",filter:"\u7B5B\u9009",apply:"\u5E94\u7528",reset:"\u91CD\u7F6E",selectAll:"(\u5168\u9009)",search:"\u641C\u7D22\u2026",blanks:"(\u7A7A\u767D)",value:"\u503C",valueTo:"\u81F3",sortAsc:"\u5347\u5E8F\u6392\u5E8F",sortDesc:"\u964D\u5E8F\u6392\u5E8F",clearSort:"\u6E05\u9664\u6392\u5E8F",pinLeft:"\u56FA\u5B9A\u5728\u5DE6\u4FA7",pinRight:"\u56FA\u5B9A\u5728\u53F3\u4FA7",unpin:"\u53D6\u6D88\u56FA\u5B9A",columnMenu:"\u5217\u83DC\u5355",selectRow:"\u9009\u62E9\u884C",selectAllRows:"\u9009\u62E9\u6240\u6709\u884C",chooseColumns:"\u9009\u62E9\u5217",columns:"\u5217",autosizeThis:"\u81EA\u52A8\u8C03\u6574\u6B64\u5217\u5BBD\u5EA6",autosizeAll:"\u81EA\u52A8\u8C03\u6574\u6240\u6709\u5217\u5BBD\u5EA6",resetColumns:"\u91CD\u7F6E\u5217",hideColumn:"\u9690\u85CF\u5217",close:"\u5173\u95ED",copy:"\u590D\u5236",cut:"\u526A\u5207",copyWithHeaders:"\u8FDE\u540C\u6807\u9898\u590D\u5236",paste:"\u7C98\u8D34",pasteHint:"\u6D4F\u89C8\u5668\u963B\u6B62\u4E86\u526A\u8D34\u677F\u8BBF\u95EE\u3002\u8BF7\u6309 Ctrl+V \u7C98\u8D34\u3002",required:"\u6B64\u9879\u4E3A\u5FC5\u586B\u9879",invalidValue:"\u503C\u65E0\u6548",and:"\u4E14",or:"\u6216",advancedFilter:"\u9AD8\u7EA7\u7B5B\u9009",addCondition:"\u6DFB\u52A0\u6761\u4EF6",duplicate:"\u8BE5\u503C\u5DF2\u88AB\u4F7F\u7528",undo:"\u64A4\u9500",redo:"\u91CD\u505A",deleteRows:"\u5220\u9664\u6240\u9009\u884C",copyRows:"\u590D\u5236\u6240\u9009\u884C",statusRows:"{n} \u884C",statusFiltered:"{total} \u884C\u4E2D\u7684 {shown} \u884C",statusSelected:"\u5DF2\u9009 {n} \u884C",count:"\u8BA1\u6570",sum:"\u6C42\u548C",avg:"\u5E73\u5747\u503C",min:"\u6700\u5C0F\u503C",max:"\u6700\u5927\u503C",findPlaceholder:"\u5728\u8868\u683C\u4E2D\u67E5\u627E",noMatches:"\u65E0\u5339\u914D\u9879",findNext:"\u4E0B\u4E00\u4E2A",findPrevious:"\u4E0A\u4E00\u4E2A",groupPanelHint:"\u5C06\u5217\u6807\u9898\u62D6\u5230\u6B64\u5904\u4EE5\u5206\u7EC4",groupByThis:"\u6309\u6B64\u5217\u5206\u7EC4",ungroup:"\u53D6\u6D88\u5206\u7EC4",expandAll:"\u5168\u90E8\u5C55\u5F00",collapseAll:"\u5168\u90E8\u6298\u53E0",pagerRange:"\u7B2C {from}\u2013{to} \u6761\uFF0C\u5171 {total} \u6761",pageOf:"\u7B2C {page} \u9875\uFF0C\u5171 {pages} \u9875",pageSize:"\u6BCF\u9875\u884C\u6570",firstPage:"\u9996\u9875",previousPage:"\u4E0A\u4E00\u9875",nextPage:"\u4E0B\u4E00\u9875",lastPage:"\u672B\u9875",loading:"\u52A0\u8F7D\u4E2D\u2026",loadFailed:"\u65E0\u6CD5\u52A0\u8F7D\u6570\u636E",filters:"\u7B5B\u9009",clearFilters:"\u6E05\u9664\u6240\u6709\u7B5B\u9009",exportCsv:"\u5BFC\u51FA CSV",exportExcel:"\u5BFC\u51FA Excel",print:"\u6253\u5370\u2026",pivot:"\u6570\u636E\u900F\u89C6",pivotMode:"\u900F\u89C6\u6A21\u5F0F",pivotRows:"\u884C\u5206\u7EC4",pivotColumns:"\u5217\u6807\u7B7E",pivotValues:"\u503C",total:"\u603B\u8BA1",addColumn:"\u6DFB\u52A0\u5217\u2026",chartBar:"\u67F1\u72B6\u56FE",chartStacked:"\u5806\u79EF\u67F1\u72B6\u56FE",chartLine:"\u6298\u7EBF\u56FE",chartArea:"\u9762\u79EF\u56FE",chartPie:"\u997C\u56FE",chartDonut:"\u73AF\u5F62\u56FE",chartCombo:"\u67F1\u7EBF\u7EC4\u5408\u56FE",chartScatter:"\u6563\u70B9\u56FE",freeBadge:"\u514D\u8D39\u4F7F\u7528\u4E2D",ops:{contains:"\u5305\u542B",equals:"\u7B49\u4E8E",notEquals:"\u4E0D\u7B49\u4E8E",startsWith:"\u5F00\u5934\u662F",endsWith:"\u7ED3\u5C3E\u662F",blank:"\u4E3A\u7A7A",notBlank:"\u4E0D\u4E3A\u7A7A",eq:"\u7B49\u4E8E",ne:"\u4E0D\u7B49\u4E8E",lt:"\u5C0F\u4E8E",lte:"\u5C0F\u4E8E\u6216\u7B49\u4E8E",gt:"\u5927\u4E8E",gte:"\u5927\u4E8E\u6216\u7B49\u4E8E",between:"\u4ECB\u4E8E",before:"\u65E9\u4E8E",after:"\u665A\u4E8E"}},Cn=Wo;var Uo={code:"zh-TW",noRows:"\u6C92\u6709\u53EF\u986F\u793A\u7684\u8CC7\u6599",filter:"\u7BE9\u9078",apply:"\u5957\u7528",reset:"\u91CD\u8A2D",selectAll:"(\u5168\u9078)",search:"\u641C\u5C0B\u2026",blanks:"(\u7A7A\u767D)",value:"\u503C",valueTo:"\u81F3",sortAsc:"\u905E\u589E\u6392\u5E8F",sortDesc:"\u905E\u6E1B\u6392\u5E8F",clearSort:"\u6E05\u9664\u6392\u5E8F",pinLeft:"\u56FA\u5B9A\u5728\u5DE6\u5074",pinRight:"\u56FA\u5B9A\u5728\u53F3\u5074",unpin:"\u53D6\u6D88\u56FA\u5B9A",columnMenu:"\u6B04\u4F4D\u9078\u55AE",selectRow:"\u9078\u53D6\u5217",selectAllRows:"\u9078\u53D6\u6240\u6709\u5217",chooseColumns:"\u9078\u64C7\u6B04\u4F4D",columns:"\u6B04\u4F4D",autosizeThis:"\u81EA\u52D5\u8ABF\u6574\u6B64\u6B04\u5BEC",autosizeAll:"\u81EA\u52D5\u8ABF\u6574\u6240\u6709\u6B04\u5BEC",resetColumns:"\u91CD\u8A2D\u6B04\u4F4D",hideColumn:"\u96B1\u85CF\u6B04\u4F4D",close:"\u95DC\u9589",copy:"\u8907\u88FD",cut:"\u526A\u4E0B",copyWithHeaders:"\u9023\u540C\u6A19\u984C\u8907\u88FD",paste:"\u8CBC\u4E0A",pasteHint:"\u7121\u6CD5\u5B58\u53D6\u526A\u8CBC\u7C3F\u3002\u8ACB\u6309 Ctrl+V \u8CBC\u4E0A\u3002",required:"\u6B64\u6B04\u4F4D\u70BA\u5FC5\u586B",invalidValue:"\u503C\u7121\u6548",and:"\u4E14",or:"\u6216",advancedFilter:"\u9032\u968E\u7BE9\u9078",addCondition:"\u65B0\u589E\u689D\u4EF6",duplicate:"\u6B64\u503C\u5DF2\u88AB\u4F7F\u7528",undo:"\u5FA9\u539F",redo:"\u91CD\u505A",deleteRows:"\u522A\u9664\u9078\u53D6\u7684\u5217",copyRows:"\u8907\u88FD\u9078\u53D6\u7684\u5217",statusRows:"{n} \u5217",statusFiltered:"{total} \u5217\u4E2D\u7684 {shown} \u5217",statusSelected:"\u5DF2\u9078\u53D6 {n} \u5217",count:"\u7B46\u6578",sum:"\u5408\u8A08",avg:"\u5E73\u5747",min:"\u6700\u5C0F",max:"\u6700\u5927",findPlaceholder:"\u5728\u8868\u683C\u4E2D\u5C0B\u627E",noMatches:"\u6C92\u6709\u7B26\u5408\u7684\u7D50\u679C",findNext:"\u4E0B\u4E00\u500B",findPrevious:"\u4E0A\u4E00\u500B",groupPanelHint:"\u5C07\u6B04\u4F4D\u6A19\u984C\u62D6\u66F3\u5230\u9019\u88E1\u4EE5\u5206\u7D44",groupByThis:"\u4F9D\u6B64\u6B04\u4F4D\u5206\u7D44",ungroup:"\u53D6\u6D88\u5206\u7D44",expandAll:"\u5168\u90E8\u5C55\u958B",collapseAll:"\u5168\u90E8\u647A\u758A",pagerRange:"{from}\u2013{to}\uFF0C\u5171 {total} \u7B46",pageOf:"\u7B2C {page} \u9801\uFF0C\u5171 {pages} \u9801",pageSize:"\u6BCF\u9801\u5217\u6578",firstPage:"\u7B2C\u4E00\u9801",previousPage:"\u4E0A\u4E00\u9801",nextPage:"\u4E0B\u4E00\u9801",lastPage:"\u6700\u5F8C\u4E00\u9801",loading:"\u8F09\u5165\u4E2D\u2026",loadFailed:"\u7121\u6CD5\u8F09\u5165\u8CC7\u6599",filters:"\u7BE9\u9078",clearFilters:"\u6E05\u9664\u6240\u6709\u7BE9\u9078",exportCsv:"\u532F\u51FA CSV",exportExcel:"\u532F\u51FA Excel",print:"\u5217\u5370\u2026",pivot:"\u6A1E\u7D10\u5206\u6790",pivotMode:"\u6A1E\u7D10\u5206\u6790\u6A21\u5F0F",pivotRows:"\u5217\u7FA4\u7D44",pivotColumns:"\u6B04\u6A19\u7C64",pivotValues:"\u503C",total:"\u7E3D\u8A08",addColumn:"\u65B0\u589E\u6B04\u4F4D\u2026",chartBar:"\u76F4\u689D\u5716",chartStacked:"\u5806\u758A\u76F4\u689D\u5716",chartLine:"\u6298\u7DDA\u5716",chartArea:"\u5340\u57DF\u5716",chartPie:"\u5713\u5F62\u5716",chartDonut:"\u74B0\u5708\u5716",chartCombo:"\u76F4\u689D\u8207\u6298\u7DDA\u5716",chartScatter:"\u6563\u4F48\u5716",freeBadge:"\u514D\u8CBB\u7248",ops:{contains:"\u5305\u542B",equals:"\u7B49\u65BC",notEquals:"\u4E0D\u7B49\u65BC",startsWith:"\u958B\u982D\u70BA",endsWith:"\u7D50\u5C3E\u70BA",blank:"\u7A7A\u767D",notBlank:"\u975E\u7A7A\u767D",eq:"\u7B49\u65BC",ne:"\u4E0D\u7B49\u65BC",lt:"\u5C0F\u65BC",lte:"\u5C0F\u65BC\u6216\u7B49\u65BC",gt:"\u5927\u65BC",gte:"\u5927\u65BC\u6216\u7B49\u65BC",between:"\u4ECB\u65BC",before:"\u65E9\u65BC",after:"\u665A\u65BC"}},Rn=Uo;var Ko={code:"vi",noRows:"Kh\xF4ng c\xF3 d\u1EEF li\u1EC7u",filter:"L\u1ECDc",apply:"\xC1p d\u1EE5ng",reset:"\u0110\u1EB7t l\u1EA1i",selectAll:"(Ch\u1ECDn t\u1EA5t c\u1EA3)",search:"T\xECm\u2026",blanks:"(Tr\u1ED1ng)",value:"Gi\xE1 tr\u1ECB",valueTo:"\u0110\u1EBFn",sortAsc:"S\u1EAFp x\u1EBFp t\u0103ng d\u1EA7n",sortDesc:"S\u1EAFp x\u1EBFp gi\u1EA3m d\u1EA7n",clearSort:"B\u1ECF s\u1EAFp x\u1EBFp",pinLeft:"Ghim tr\xE1i",pinRight:"Ghim ph\u1EA3i",unpin:"B\u1ECF ghim",columnMenu:"Menu c\u1ED9t",selectRow:"Ch\u1ECDn d\xF2ng",selectAllRows:"Ch\u1ECDn t\u1EA5t c\u1EA3 d\xF2ng",chooseColumns:"Ch\u1ECDn c\u1ED9t",columns:"C\u1ED9t",autosizeThis:"T\u1EF1 \u0111\u1ED9ng ch\u1EC9nh \u0111\u1ED9 r\u1ED9ng c\u1ED9t n\xE0y",autosizeAll:"T\u1EF1 \u0111\u1ED9ng ch\u1EC9nh \u0111\u1ED9 r\u1ED9ng t\u1EA5t c\u1EA3 c\u1ED9t",resetColumns:"\u0110\u1EB7t l\u1EA1i c\u1ED9t",hideColumn:"\u1EA8n c\u1ED9t",close:"\u0110\xF3ng",copy:"Sao ch\xE9p",cut:"C\u1EAFt",copyWithHeaders:"Sao ch\xE9p k\xE8m ti\xEAu \u0111\u1EC1",paste:"D\xE1n",pasteHint:"Kh\xF4ng truy c\u1EADp \u0111\u01B0\u1EE3c b\u1ED9 nh\u1EDB t\u1EA1m. Nh\u1EA5n Ctrl+V \u0111\u1EC3 d\xE1n.",required:"Tr\u01B0\u1EDDng n\xE0y l\xE0 b\u1EAFt bu\u1ED9c",invalidValue:"Gi\xE1 tr\u1ECB kh\xF4ng h\u1EE3p l\u1EC7",and:"V\xE0",or:"Ho\u1EB7c",advancedFilter:"L\u1ECDc n\xE2ng cao",addCondition:"Th\xEAm \u0111i\u1EC1u ki\u1EC7n",duplicate:"Gi\xE1 tr\u1ECB n\xE0y \u0111\xE3 \u0111\u01B0\u1EE3c d\xF9ng",undo:"Ho\xE0n t\xE1c",redo:"L\xE0m l\u1EA1i",deleteRows:"X\xF3a c\xE1c d\xF2ng \u0111\xE3 ch\u1ECDn",copyRows:"Sao ch\xE9p c\xE1c d\xF2ng \u0111\xE3 ch\u1ECDn",statusRows:"{n} d\xF2ng",statusFiltered:"{shown} / {total} d\xF2ng",statusSelected:"\u0110\xE3 ch\u1ECDn {n}",count:"S\u1ED1 l\u01B0\u1EE3ng",sum:"T\u1ED5ng",avg:"Trung b\xECnh",min:"Nh\u1ECF nh\u1EA5t",max:"L\u1EDBn nh\u1EA5t",findPlaceholder:"T\xECm trong b\u1EA3ng",noMatches:"Kh\xF4ng t\xECm th\u1EA5y",findNext:"K\u1EBFt qu\u1EA3 ti\u1EBFp",findPrevious:"K\u1EBFt qu\u1EA3 tr\u01B0\u1EDBc",groupPanelHint:"K\xE9o ti\xEAu \u0111\u1EC1 c\u1ED9t v\xE0o \u0111\xE2y \u0111\u1EC3 nh\xF3m d\xF2ng",groupByThis:"Nh\xF3m theo c\u1ED9t n\xE0y",ungroup:"B\u1ECF nh\xF3m",expandAll:"M\u1EDF r\u1ED9ng t\u1EA5t c\u1EA3",collapseAll:"Thu g\u1ECDn t\u1EA5t c\u1EA3",pagerRange:"{from}\u2013{to} / {total}",pageOf:"Trang {page} / {pages}",pageSize:"S\u1ED1 d\xF2ng m\u1ED7i trang",firstPage:"Trang \u0111\u1EA7u",previousPage:"Trang tr\u01B0\u1EDBc",nextPage:"Trang sau",lastPage:"Trang cu\u1ED1i",loading:"\u0110ang t\u1EA3i\u2026",loadFailed:"Kh\xF4ng t\u1EA3i \u0111\u01B0\u1EE3c d\u1EEF li\u1EC7u",filters:"B\u1ED9 l\u1ECDc",clearFilters:"X\xF3a t\u1EA5t c\u1EA3 b\u1ED9 l\u1ECDc",exportCsv:"Xu\u1EA5t CSV",exportExcel:"Xu\u1EA5t Excel",print:"In\u2026",pivot:"Pivot",pivotMode:"Ch\u1EBF \u0111\u1ED9 pivot",pivotRows:"Nh\xF3m d\xF2ng",pivotColumns:"Nh\xE3n c\u1ED9t",pivotValues:"Gi\xE1 tr\u1ECB",total:"T\u1ED5ng c\u1ED9ng",addColumn:"Th\xEAm c\u1ED9t\u2026",chartBar:"Bi\u1EC3u \u0111\u1ED3 c\u1ED9t",chartStacked:"Bi\u1EC3u \u0111\u1ED3 c\u1ED9t ch\u1ED3ng",chartLine:"Bi\u1EC3u \u0111\u1ED3 \u0111\u01B0\u1EDDng",chartArea:"Bi\u1EC3u \u0111\u1ED3 v\xF9ng",chartPie:"Bi\u1EC3u \u0111\u1ED3 tr\xF2n",chartDonut:"Bi\u1EC3u \u0111\u1ED3 v\xE0nh khuy\xEAn",chartCombo:"Bi\u1EC3u \u0111\u1ED3 c\u1ED9t v\xE0 \u0111\u01B0\u1EDDng",chartScatter:"Bi\u1EC3u \u0111\u1ED3 ph\xE2n t\xE1n",freeBadge:"B\u1EA3n mi\u1EC5n ph\xED",ops:{contains:"Ch\u1EE9a",equals:"B\u1EB1ng",notEquals:"Kh\xE1c",startsWith:"B\u1EAFt \u0111\u1EA7u b\u1EB1ng",endsWith:"K\u1EBFt th\xFAc b\u1EB1ng",blank:"Tr\u1ED1ng",notBlank:"Kh\xF4ng tr\u1ED1ng",eq:"B\u1EB1ng",ne:"Kh\xE1c",lt:"Nh\u1ECF h\u01A1n",lte:"Nh\u1ECF h\u01A1n ho\u1EB7c b\u1EB1ng",gt:"L\u1EDBn h\u01A1n",gte:"L\u1EDBn h\u01A1n ho\u1EB7c b\u1EB1ng",between:"Trong kho\u1EA3ng",before:"Tr\u01B0\u1EDBc",after:"Sau"}},kn=Ko;var jo={code:"th",noRows:"\u0E44\u0E21\u0E48\u0E21\u0E35\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25",filter:"\u0E15\u0E31\u0E27\u0E01\u0E23\u0E2D\u0E07",apply:"\u0E43\u0E0A\u0E49",reset:"\u0E23\u0E35\u0E40\u0E0B\u0E47\u0E15",selectAll:"(\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14)",search:"\u0E04\u0E49\u0E19\u0E2B\u0E32\u2026",blanks:"(\u0E27\u0E48\u0E32\u0E07)",value:"\u0E04\u0E48\u0E32",valueTo:"\u0E16\u0E36\u0E07",sortAsc:"\u0E40\u0E23\u0E35\u0E22\u0E07\u0E08\u0E32\u0E01\u0E19\u0E49\u0E2D\u0E22\u0E44\u0E1B\u0E21\u0E32\u0E01",sortDesc:"\u0E40\u0E23\u0E35\u0E22\u0E07\u0E08\u0E32\u0E01\u0E21\u0E32\u0E01\u0E44\u0E1B\u0E19\u0E49\u0E2D\u0E22",clearSort:"\u0E25\u0E49\u0E32\u0E07\u0E01\u0E32\u0E23\u0E40\u0E23\u0E35\u0E22\u0E07",pinLeft:"\u0E15\u0E23\u0E36\u0E07\u0E0B\u0E49\u0E32\u0E22",pinRight:"\u0E15\u0E23\u0E36\u0E07\u0E02\u0E27\u0E32",unpin:"\u0E40\u0E25\u0E34\u0E01\u0E15\u0E23\u0E36\u0E07",columnMenu:"\u0E40\u0E21\u0E19\u0E39\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C",selectRow:"\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E41\u0E16\u0E27",selectAllRows:"\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E17\u0E38\u0E01\u0E41\u0E16\u0E27",chooseColumns:"\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C",columns:"\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C",autosizeThis:"\u0E1B\u0E23\u0E31\u0E1A\u0E04\u0E27\u0E32\u0E21\u0E01\u0E27\u0E49\u0E32\u0E07\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C\u0E19\u0E35\u0E49\u0E2D\u0E31\u0E15\u0E42\u0E19\u0E21\u0E31\u0E15\u0E34",autosizeAll:"\u0E1B\u0E23\u0E31\u0E1A\u0E04\u0E27\u0E32\u0E21\u0E01\u0E27\u0E49\u0E32\u0E07\u0E17\u0E38\u0E01\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C\u0E2D\u0E31\u0E15\u0E42\u0E19\u0E21\u0E31\u0E15\u0E34",resetColumns:"\u0E23\u0E35\u0E40\u0E0B\u0E47\u0E15\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C",hideColumn:"\u0E0B\u0E48\u0E2D\u0E19\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C",close:"\u0E1B\u0E34\u0E14",copy:"\u0E04\u0E31\u0E14\u0E25\u0E2D\u0E01",cut:"\u0E15\u0E31\u0E14",copyWithHeaders:"\u0E04\u0E31\u0E14\u0E25\u0E2D\u0E01\u0E1E\u0E23\u0E49\u0E2D\u0E21\u0E2B\u0E31\u0E27\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C",paste:"\u0E27\u0E32\u0E07",pasteHint:"\u0E40\u0E02\u0E49\u0E32\u0E16\u0E36\u0E07\u0E04\u0E25\u0E34\u0E1B\u0E1A\u0E2D\u0E23\u0E4C\u0E14\u0E44\u0E21\u0E48\u0E44\u0E14\u0E49 \u0E01\u0E14 Ctrl+V \u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E27\u0E32\u0E07",required:"\u0E15\u0E49\u0E2D\u0E07\u0E01\u0E23\u0E2D\u0E01\u0E0A\u0E48\u0E2D\u0E07\u0E19\u0E35\u0E49",invalidValue:"\u0E04\u0E48\u0E32\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07",and:"\u0E41\u0E25\u0E30",or:"\u0E2B\u0E23\u0E37\u0E2D",advancedFilter:"\u0E15\u0E31\u0E27\u0E01\u0E23\u0E2D\u0E07\u0E02\u0E31\u0E49\u0E19\u0E2A\u0E39\u0E07",addCondition:"\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E40\u0E07\u0E37\u0E48\u0E2D\u0E19\u0E44\u0E02",duplicate:"\u0E04\u0E48\u0E32\u0E19\u0E35\u0E49\u0E16\u0E39\u0E01\u0E43\u0E0A\u0E49\u0E41\u0E25\u0E49\u0E27",undo:"\u0E40\u0E25\u0E34\u0E01\u0E17\u0E33",redo:"\u0E17\u0E33\u0E0B\u0E49\u0E33",deleteRows:"\u0E25\u0E1A\u0E41\u0E16\u0E27\u0E17\u0E35\u0E48\u0E40\u0E25\u0E37\u0E2D\u0E01",copyRows:"\u0E04\u0E31\u0E14\u0E25\u0E2D\u0E01\u0E41\u0E16\u0E27\u0E17\u0E35\u0E48\u0E40\u0E25\u0E37\u0E2D\u0E01",statusRows:"{n} \u0E41\u0E16\u0E27",statusFiltered:"{shown} \u0E08\u0E32\u0E01 {total} \u0E41\u0E16\u0E27",statusSelected:"\u0E40\u0E25\u0E37\u0E2D\u0E01 {n} \u0E41\u0E16\u0E27",count:"\u0E08\u0E33\u0E19\u0E27\u0E19",sum:"\u0E1C\u0E25\u0E23\u0E27\u0E21",avg:"\u0E04\u0E48\u0E32\u0E40\u0E09\u0E25\u0E35\u0E48\u0E22",min:"\u0E15\u0E48\u0E33\u0E2A\u0E38\u0E14",max:"\u0E2A\u0E39\u0E07\u0E2A\u0E38\u0E14",findPlaceholder:"\u0E04\u0E49\u0E19\u0E2B\u0E32\u0E43\u0E19\u0E15\u0E32\u0E23\u0E32\u0E07",noMatches:"\u0E44\u0E21\u0E48\u0E1E\u0E1A",findNext:"\u0E16\u0E31\u0E14\u0E44\u0E1B",findPrevious:"\u0E01\u0E48\u0E2D\u0E19\u0E2B\u0E19\u0E49\u0E32",groupPanelHint:"\u0E25\u0E32\u0E01\u0E2B\u0E31\u0E27\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C\u0E21\u0E32\u0E17\u0E35\u0E48\u0E19\u0E35\u0E48\u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E08\u0E31\u0E14\u0E01\u0E25\u0E38\u0E48\u0E21",groupByThis:"\u0E08\u0E31\u0E14\u0E01\u0E25\u0E38\u0E48\u0E21\u0E15\u0E32\u0E21\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C\u0E19\u0E35\u0E49",ungroup:"\u0E40\u0E25\u0E34\u0E01\u0E08\u0E31\u0E14\u0E01\u0E25\u0E38\u0E48\u0E21",expandAll:"\u0E02\u0E22\u0E32\u0E22\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14",collapseAll:"\u0E22\u0E38\u0E1A\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14",pagerRange:"{from}\u2013{to} \u0E08\u0E32\u0E01 {total}",pageOf:"\u0E2B\u0E19\u0E49\u0E32 {page} \u0E08\u0E32\u0E01 {pages}",pageSize:"\u0E41\u0E16\u0E27\u0E15\u0E48\u0E2D\u0E2B\u0E19\u0E49\u0E32",firstPage:"\u0E2B\u0E19\u0E49\u0E32\u0E41\u0E23\u0E01",previousPage:"\u0E2B\u0E19\u0E49\u0E32\u0E01\u0E48\u0E2D\u0E19",nextPage:"\u0E2B\u0E19\u0E49\u0E32\u0E16\u0E31\u0E14\u0E44\u0E1B",lastPage:"\u0E2B\u0E19\u0E49\u0E32\u0E2A\u0E38\u0E14\u0E17\u0E49\u0E32\u0E22",loading:"\u0E01\u0E33\u0E25\u0E31\u0E07\u0E42\u0E2B\u0E25\u0E14\u2026",loadFailed:"\u0E42\u0E2B\u0E25\u0E14\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E2A\u0E33\u0E40\u0E23\u0E47\u0E08",filters:"\u0E15\u0E31\u0E27\u0E01\u0E23\u0E2D\u0E07",clearFilters:"\u0E25\u0E49\u0E32\u0E07\u0E15\u0E31\u0E27\u0E01\u0E23\u0E2D\u0E07\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14",exportCsv:"\u0E2A\u0E48\u0E07\u0E2D\u0E2D\u0E01 CSV",exportExcel:"\u0E2A\u0E48\u0E07\u0E2D\u0E2D\u0E01 Excel",print:"\u0E1E\u0E34\u0E21\u0E1E\u0E4C\u2026",pivot:"Pivot",pivotMode:"\u0E42\u0E2B\u0E21\u0E14 Pivot",pivotRows:"\u0E01\u0E25\u0E38\u0E48\u0E21\u0E41\u0E16\u0E27",pivotColumns:"\u0E1B\u0E49\u0E32\u0E22\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C",pivotValues:"\u0E04\u0E48\u0E32",total:"\u0E23\u0E27\u0E21",addColumn:"\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C\u2026",chartBar:"\u0E41\u0E1C\u0E19\u0E20\u0E39\u0E21\u0E34\u0E41\u0E17\u0E48\u0E07",chartStacked:"\u0E41\u0E1C\u0E19\u0E20\u0E39\u0E21\u0E34\u0E41\u0E17\u0E48\u0E07\u0E0B\u0E49\u0E2D\u0E19",chartLine:"\u0E41\u0E1C\u0E19\u0E20\u0E39\u0E21\u0E34\u0E40\u0E2A\u0E49\u0E19",chartArea:"\u0E41\u0E1C\u0E19\u0E20\u0E39\u0E21\u0E34\u0E1E\u0E37\u0E49\u0E19\u0E17\u0E35\u0E48",chartPie:"\u0E41\u0E1C\u0E19\u0E20\u0E39\u0E21\u0E34\u0E27\u0E07\u0E01\u0E25\u0E21",chartDonut:"\u0E41\u0E1C\u0E19\u0E20\u0E39\u0E21\u0E34\u0E42\u0E14\u0E19\u0E31\u0E17",chartCombo:"\u0E41\u0E1C\u0E19\u0E20\u0E39\u0E21\u0E34\u0E41\u0E17\u0E48\u0E07\u0E41\u0E25\u0E30\u0E40\u0E2A\u0E49\u0E19",chartScatter:"\u0E41\u0E1C\u0E19\u0E20\u0E39\u0E21\u0E34\u0E01\u0E23\u0E30\u0E08\u0E32\u0E22",freeBadge:"\u0E23\u0E38\u0E48\u0E19\u0E1F\u0E23\u0E35",ops:{contains:"\u0E21\u0E35\u0E04\u0E33\u0E27\u0E48\u0E32",equals:"\u0E40\u0E17\u0E48\u0E32\u0E01\u0E31\u0E1A",notEquals:"\u0E44\u0E21\u0E48\u0E40\u0E17\u0E48\u0E32\u0E01\u0E31\u0E1A",startsWith:"\u0E02\u0E36\u0E49\u0E19\u0E15\u0E49\u0E19\u0E14\u0E49\u0E27\u0E22",endsWith:"\u0E25\u0E07\u0E17\u0E49\u0E32\u0E22\u0E14\u0E49\u0E27\u0E22",blank:"\u0E27\u0E48\u0E32\u0E07",notBlank:"\u0E44\u0E21\u0E48\u0E27\u0E48\u0E32\u0E07",eq:"\u0E40\u0E17\u0E48\u0E32\u0E01\u0E31\u0E1A",ne:"\u0E44\u0E21\u0E48\u0E40\u0E17\u0E48\u0E32\u0E01\u0E31\u0E1A",lt:"\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32",lte:"\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\u0E2B\u0E23\u0E37\u0E2D\u0E40\u0E17\u0E48\u0E32\u0E01\u0E31\u0E1A",gt:"\u0E21\u0E32\u0E01\u0E01\u0E27\u0E48\u0E32",gte:"\u0E21\u0E32\u0E01\u0E01\u0E27\u0E48\u0E32\u0E2B\u0E23\u0E37\u0E2D\u0E40\u0E17\u0E48\u0E32\u0E01\u0E31\u0E1A",between:"\u0E23\u0E30\u0E2B\u0E27\u0E48\u0E32\u0E07",before:"\u0E01\u0E48\u0E2D\u0E19",after:"\u0E2B\u0E25\u0E31\u0E07"}},Sn=jo;var _o={code:"id",noRows:"Tidak ada data",filter:"Filter",apply:"Terapkan",reset:"Atur ulang",selectAll:"(Pilih semua)",search:"Cari\u2026",blanks:"(Kosong)",value:"Nilai",valueTo:"Sampai",sortAsc:"Urutkan naik",sortDesc:"Urutkan turun",clearSort:"Hapus urutan",pinLeft:"Sematkan kiri",pinRight:"Sematkan kanan",unpin:"Lepas sematan",columnMenu:"Menu kolom",selectRow:"Pilih baris",selectAllRows:"Pilih semua baris",chooseColumns:"Pilih kolom",columns:"Kolom",autosizeThis:"Sesuaikan lebar kolom ini",autosizeAll:"Sesuaikan lebar semua kolom",resetColumns:"Atur ulang kolom",hideColumn:"Sembunyikan kolom",close:"Tutup",copy:"Salin",cut:"Potong",copyWithHeaders:"Salin dengan judul",paste:"Tempel",pasteHint:"Akses papan klip diblokir. Tekan Ctrl+V untuk menempel.",required:"Kolom ini wajib diisi",invalidValue:"Nilai tidak valid",and:"Dan",or:"Atau",advancedFilter:"Filter lanjutan",addCondition:"Tambah kondisi",duplicate:"Nilai ini sudah dipakai",undo:"Urungkan",redo:"Ulangi",deleteRows:"Hapus baris terpilih",copyRows:"Salin baris terpilih",statusRows:"{n} baris",statusFiltered:"{shown} dari {total} baris",statusSelected:"{n} dipilih",count:"Jumlah data",sum:"Total",avg:"Rata-rata",min:"Min",max:"Maks",findPlaceholder:"Cari di tabel",noMatches:"Tidak ditemukan",findNext:"Berikutnya",findPrevious:"Sebelumnya",groupPanelHint:"Seret judul kolom ke sini untuk mengelompokkan",groupByThis:"Kelompokkan menurut kolom ini",ungroup:"Hapus pengelompokan",expandAll:"Buka semua",collapseAll:"Tutup semua",pagerRange:"{from}\u2013{to} dari {total}",pageOf:"Halaman {page} dari {pages}",pageSize:"Baris per halaman",firstPage:"Halaman pertama",previousPage:"Halaman sebelumnya",nextPage:"Halaman berikutnya",lastPage:"Halaman terakhir",loading:"Memuat\u2026",loadFailed:"Gagal memuat data",filters:"Filter",clearFilters:"Hapus semua filter",exportCsv:"Ekspor CSV",exportExcel:"Ekspor Excel",print:"Cetak\u2026",pivot:"Pivot",pivotMode:"Mode pivot",pivotRows:"Grup baris",pivotColumns:"Label kolom",pivotValues:"Nilai",total:"Total",addColumn:"Tambah kolom\u2026",chartBar:"Diagram batang",chartStacked:"Diagram batang bertumpuk",chartLine:"Diagram garis",chartArea:"Diagram area",chartPie:"Diagram lingkaran",chartDonut:"Diagram donat",chartCombo:"Diagram batang dan garis",chartScatter:"Diagram sebar",freeBadge:"Versi gratis",ops:{contains:"Berisi",equals:"Sama dengan",notEquals:"Tidak sama dengan",startsWith:"Diawali",endsWith:"Diakhiri",blank:"Kosong",notBlank:"Tidak kosong",eq:"Sama dengan",ne:"Tidak sama dengan",lt:"Kurang dari",lte:"Kurang dari atau sama dengan",gt:"Lebih dari",gte:"Lebih dari atau sama dengan",between:"Di antara",before:"Sebelum",after:"Sesudah"}},Mn=_o;var Xo={code:"ru",noRows:"\u041D\u0435\u0442 \u0434\u0430\u043D\u043D\u044B\u0445",filter:"\u0424\u0438\u043B\u044C\u0442\u0440",apply:"\u041F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C",reset:"\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C",selectAll:"(\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0432\u0441\u0435)",search:"\u041F\u043E\u0438\u0441\u043A\u2026",blanks:"(\u041F\u0443\u0441\u0442\u044B\u0435)",value:"\u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435",valueTo:"\u041F\u043E",sortAsc:"\u041F\u043E \u0432\u043E\u0437\u0440\u0430\u0441\u0442\u0430\u043D\u0438\u044E",sortDesc:"\u041F\u043E \u0443\u0431\u044B\u0432\u0430\u043D\u0438\u044E",clearSort:"\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0441\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0443",pinLeft:"\u0417\u0430\u043A\u0440\u0435\u043F\u0438\u0442\u044C \u0441\u043B\u0435\u0432\u0430",pinRight:"\u0417\u0430\u043A\u0440\u0435\u043F\u0438\u0442\u044C \u0441\u043F\u0440\u0430\u0432\u0430",unpin:"\u041E\u0442\u043A\u0440\u0435\u043F\u0438\u0442\u044C",columnMenu:"\u041C\u0435\u043D\u044E \u0441\u0442\u043E\u043B\u0431\u0446\u0430",selectRow:"\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443",selectAllRows:"\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0432\u0441\u0435 \u0441\u0442\u0440\u043E\u043A\u0438",chooseColumns:"\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0441\u0442\u043E\u043B\u0431\u0446\u044B",columns:"\u0421\u0442\u043E\u043B\u0431\u0446\u044B",autosizeThis:"\u041F\u043E\u0434\u043E\u0431\u0440\u0430\u0442\u044C \u0448\u0438\u0440\u0438\u043D\u0443 \u0441\u0442\u043E\u043B\u0431\u0446\u0430",autosizeAll:"\u041F\u043E\u0434\u043E\u0431\u0440\u0430\u0442\u044C \u0448\u0438\u0440\u0438\u043D\u0443 \u0432\u0441\u0435\u0445 \u0441\u0442\u043E\u043B\u0431\u0446\u043E\u0432",resetColumns:"\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0441\u0442\u043E\u043B\u0431\u0446\u044B",hideColumn:"\u0421\u043A\u0440\u044B\u0442\u044C \u0441\u0442\u043E\u043B\u0431\u0435\u0446",close:"\u0417\u0430\u043A\u0440\u044B\u0442\u044C",copy:"\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C",cut:"\u0412\u044B\u0440\u0435\u0437\u0430\u0442\u044C",copyWithHeaders:"\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0441 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430\u043C\u0438",paste:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044C",pasteHint:"\u0414\u043E\u0441\u0442\u0443\u043F \u043A \u0431\u0443\u0444\u0435\u0440\u0443 \u043E\u0431\u043C\u0435\u043D\u0430 \u0437\u0430\u043F\u0440\u0435\u0449\u0451\u043D. \u041D\u0430\u0436\u043C\u0438\u0442\u0435 Ctrl+V, \u0447\u0442\u043E\u0431\u044B \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044C.",required:"\u041E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E\u0435 \u043F\u043E\u043B\u0435",invalidValue:"\u041D\u0435\u0434\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435",and:"\u0418",or:"\u0418\u043B\u0438",advancedFilter:"\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u043D\u044B\u0439 \u0444\u0438\u043B\u044C\u0442\u0440",addCondition:"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0443\u0441\u043B\u043E\u0432\u0438\u0435",duplicate:"\u042D\u0442\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0443\u0436\u0435 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F",undo:"\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C",redo:"\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u044C",deleteRows:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0435 \u0441\u0442\u0440\u043E\u043A\u0438",copyRows:"\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0435 \u0441\u0442\u0440\u043E\u043A\u0438",statusRows:"\u0421\u0442\u0440\u043E\u043A: {n}",statusFiltered:"{shown} \u0438\u0437 {total} \u0441\u0442\u0440\u043E\u043A",statusSelected:"\u0412\u044B\u0431\u0440\u0430\u043D\u043E: {n}",count:"\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E",sum:"\u0421\u0443\u043C\u043C\u0430",avg:"\u0421\u0440\u0435\u0434\u043D\u0435\u0435",min:"\u041C\u0438\u043D.",max:"\u041C\u0430\u043A\u0441.",findPlaceholder:"\u041D\u0430\u0439\u0442\u0438 \u0432 \u0442\u0430\u0431\u043B\u0438\u0446\u0435",noMatches:"\u041D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E",findNext:"\u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0435",findPrevious:"\u041F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0435\u0435",groupPanelHint:"\u041F\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u0435 \u0441\u044E\u0434\u0430 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A \u0441\u0442\u043E\u043B\u0431\u0446\u0430 \u0434\u043B\u044F \u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0438",groupByThis:"\u0413\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u043E \u044D\u0442\u043E\u043C\u0443 \u0441\u0442\u043E\u043B\u0431\u0446\u0443",ungroup:"\u0423\u0431\u0440\u0430\u0442\u044C \u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0443",expandAll:"\u0420\u0430\u0437\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u0432\u0441\u0435",collapseAll:"\u0421\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u0432\u0441\u0435",pagerRange:"{from}\u2013{to} \u0438\u0437 {total}",pageOf:"\u0421\u0442\u0440\u0430\u043D\u0438\u0446\u0430 {page} \u0438\u0437 {pages}",pageSize:"\u0421\u0442\u0440\u043E\u043A \u043D\u0430 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0435",firstPage:"\u041F\u0435\u0440\u0432\u0430\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430",previousPage:"\u041F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0430\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430",nextPage:"\u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0430\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430",lastPage:"\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u044F\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430",loading:"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430\u2026",loadFailed:"\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u0434\u0430\u043D\u043D\u044B\u0435",filters:"\u0424\u0438\u043B\u044C\u0442\u0440\u044B",clearFilters:"\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0432\u0441\u0435 \u0444\u0438\u043B\u044C\u0442\u0440\u044B",exportCsv:"\u042D\u043A\u0441\u043F\u043E\u0440\u0442 \u0432 CSV",exportExcel:"\u042D\u043A\u0441\u043F\u043E\u0440\u0442 \u0432 Excel",print:"\u041F\u0435\u0447\u0430\u0442\u044C\u2026",pivot:"\u0421\u0432\u043E\u0434\u043D\u0430\u044F",pivotMode:"\u0420\u0435\u0436\u0438\u043C \u0441\u0432\u043E\u0434\u043D\u043E\u0439 \u0442\u0430\u0431\u043B\u0438\u0446\u044B",pivotRows:"\u0413\u0440\u0443\u043F\u043F\u044B \u0441\u0442\u0440\u043E\u043A",pivotColumns:"\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0438 \u0441\u0442\u043E\u043B\u0431\u0446\u043E\u0432",pivotValues:"\u0417\u043D\u0430\u0447\u0435\u043D\u0438\u044F",total:"\u0418\u0442\u043E\u0433\u043E",addColumn:"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0441\u0442\u043E\u043B\u0431\u0435\u0446\u2026",chartBar:"\u0413\u0438\u0441\u0442\u043E\u0433\u0440\u0430\u043C\u043C\u0430",chartStacked:"\u0413\u0438\u0441\u0442\u043E\u0433\u0440\u0430\u043C\u043C\u0430 \u0441 \u043D\u0430\u043A\u043E\u043F\u043B\u0435\u043D\u0438\u0435\u043C",chartLine:"\u0413\u0440\u0430\u0444\u0438\u043A",chartArea:"\u0414\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u0430 \u0441 \u043E\u0431\u043B\u0430\u0441\u0442\u044F\u043C\u0438",chartPie:"\u041A\u0440\u0443\u0433\u043E\u0432\u0430\u044F \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u0430",chartDonut:"\u041A\u043E\u043B\u044C\u0446\u0435\u0432\u0430\u044F \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u0430",chartCombo:"\u0413\u0438\u0441\u0442\u043E\u0433\u0440\u0430\u043C\u043C\u0430 \u0438 \u0433\u0440\u0430\u0444\u0438\u043A",chartScatter:"\u0422\u043E\u0447\u0435\u0447\u043D\u0430\u044F \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u0430",freeBadge:"\u0411\u0435\u0441\u043F\u043B\u0430\u0442\u043D\u0430\u044F \u0432\u0435\u0440\u0441\u0438\u044F",ops:{contains:"\u0421\u043E\u0434\u0435\u0440\u0436\u0438\u0442",equals:"\u0420\u0430\u0432\u043D\u043E",notEquals:"\u041D\u0435 \u0440\u0430\u0432\u043D\u043E",startsWith:"\u041D\u0430\u0447\u0438\u043D\u0430\u0435\u0442\u0441\u044F \u0441",endsWith:"\u0417\u0430\u043A\u0430\u043D\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u043D\u0430",blank:"\u041F\u0443\u0441\u0442\u043E",notBlank:"\u041D\u0435 \u043F\u0443\u0441\u0442\u043E",eq:"\u0420\u0430\u0432\u043D\u043E",ne:"\u041D\u0435 \u0440\u0430\u0432\u043D\u043E",lt:"\u041C\u0435\u043D\u044C\u0448\u0435",lte:"\u041C\u0435\u043D\u044C\u0448\u0435 \u0438\u043B\u0438 \u0440\u0430\u0432\u043D\u043E",gt:"\u0411\u043E\u043B\u044C\u0448\u0435",gte:"\u0411\u043E\u043B\u044C\u0448\u0435 \u0438\u043B\u0438 \u0440\u0430\u0432\u043D\u043E",between:"\u041C\u0435\u0436\u0434\u0443",before:"\u0414\u043E",after:"\u041F\u043E\u0441\u043B\u0435"}},En=Xo;var Yo={code:"pt-BR",noRows:"Nenhuma linha para mostrar",filter:"Filtro",apply:"Aplicar",reset:"Limpar",selectAll:"(Selecionar tudo)",search:"Pesquisar\u2026",blanks:"(Vazios)",value:"Valor",valueTo:"At\xE9",sortAsc:"Ordenar crescente",sortDesc:"Ordenar decrescente",clearSort:"Remover ordena\xE7\xE3o",pinLeft:"Fixar \xE0 esquerda",pinRight:"Fixar \xE0 direita",unpin:"Desafixar",columnMenu:"Menu da coluna",selectRow:"Selecionar linha",selectAllRows:"Selecionar todas as linhas",chooseColumns:"Escolher colunas",columns:"Colunas",autosizeThis:"Ajustar largura desta coluna",autosizeAll:"Ajustar largura de todas as colunas",resetColumns:"Redefinir colunas",hideColumn:"Ocultar coluna",close:"Fechar",copy:"Copiar",cut:"Recortar",copyWithHeaders:"Copiar com cabe\xE7alhos",paste:"Colar",pasteHint:"O acesso \xE0 \xE1rea de transfer\xEAncia foi bloqueado. Pressione Ctrl+V para colar.",required:"Campo obrigat\xF3rio",invalidValue:"Valor inv\xE1lido",and:"E",or:"Ou",advancedFilter:"Filtro avan\xE7ado",addCondition:"Adicionar condi\xE7\xE3o",duplicate:"Este valor j\xE1 est\xE1 em uso",undo:"Desfazer",redo:"Refazer",deleteRows:"Excluir linhas selecionadas",copyRows:"Copiar linhas selecionadas",statusRows:"{n} linhas",statusFiltered:"{shown} de {total} linhas",statusSelected:"{n} selecionadas",count:"Contagem",sum:"Soma",avg:"M\xE9dia",min:"M\xEDn.",max:"M\xE1x.",findPlaceholder:"Localizar na tabela",noMatches:"Nenhum resultado",findNext:"Pr\xF3ximo",findPrevious:"Anterior",groupPanelHint:"Arraste um cabe\xE7alho de coluna aqui para agrupar",groupByThis:"Agrupar por esta coluna",ungroup:"Remover agrupamento",expandAll:"Expandir tudo",collapseAll:"Recolher tudo",pagerRange:"{from}\u2013{to} de {total}",pageOf:"P\xE1gina {page} de {pages}",pageSize:"Linhas por p\xE1gina",firstPage:"Primeira p\xE1gina",previousPage:"P\xE1gina anterior",nextPage:"Pr\xF3xima p\xE1gina",lastPage:"\xDAltima p\xE1gina",loading:"Carregando\u2026",loadFailed:"N\xE3o foi poss\xEDvel carregar as linhas",filters:"Filtros",clearFilters:"Limpar todos os filtros",exportCsv:"Exportar CSV",exportExcel:"Exportar Excel",print:"Imprimir\u2026",pivot:"Piv\xF4",pivotMode:"Modo piv\xF4",pivotRows:"Grupos de linhas",pivotColumns:"R\xF3tulos de coluna",pivotValues:"Valores",total:"Total",addColumn:"Adicionar coluna\u2026",chartBar:"Gr\xE1fico de barras",chartStacked:"Gr\xE1fico de barras empilhadas",chartLine:"Gr\xE1fico de linhas",chartArea:"Gr\xE1fico de \xE1rea",chartPie:"Gr\xE1fico de pizza",chartDonut:"Gr\xE1fico de rosca",chartCombo:"Gr\xE1fico de barras e linhas",chartScatter:"Gr\xE1fico de dispers\xE3o",freeBadge:"Vers\xE3o gratuita",ops:{contains:"Cont\xE9m",equals:"Igual a",notEquals:"Diferente de",startsWith:"Come\xE7a com",endsWith:"Termina com",blank:"Vazio",notBlank:"N\xE3o vazio",eq:"Igual a",ne:"Diferente de",lt:"Menor que",lte:"Menor ou igual a",gt:"Maior que",gte:"Maior ou igual a",between:"Entre",before:"Antes de",after:"Depois de"}},Ln=Yo;var Jo={code:"it",noRows:"Nessuna riga da mostrare",filter:"Filtro",apply:"Applica",reset:"Reimposta",selectAll:"(Seleziona tutto)",search:"Cerca\u2026",blanks:"(Vuoti)",value:"Valore",valueTo:"A",sortAsc:"Ordine crescente",sortDesc:"Ordine decrescente",clearSort:"Rimuovi ordinamento",pinLeft:"Blocca a sinistra",pinRight:"Blocca a destra",unpin:"Sblocca",columnMenu:"Menu colonna",selectRow:"Seleziona riga",selectAllRows:"Seleziona tutte le righe",chooseColumns:"Scegli colonne",columns:"Colonne",autosizeThis:"Adatta larghezza di questa colonna",autosizeAll:"Adatta larghezza di tutte le colonne",resetColumns:"Ripristina colonne",hideColumn:"Nascondi colonna",close:"Chiudi",copy:"Copia",cut:"Taglia",copyWithHeaders:"Copia con intestazioni",paste:"Incolla",pasteHint:"Accesso agli appunti bloccato. Premi Ctrl+V per incollare.",required:"Campo obbligatorio",invalidValue:"Valore non valido",and:"E",or:"O",advancedFilter:"Filtro avanzato",addCondition:"Aggiungi condizione",duplicate:"Questo valore \xE8 gi\xE0 in uso",undo:"Annulla",redo:"Ripeti",deleteRows:"Elimina righe selezionate",copyRows:"Copia righe selezionate",statusRows:"{n} righe",statusFiltered:"{shown} di {total} righe",statusSelected:"{n} selezionate",count:"Conteggio",sum:"Somma",avg:"Media",min:"Min",max:"Max",findPlaceholder:"Trova nella tabella",noMatches:"Nessun risultato",findNext:"Successivo",findPrevious:"Precedente",groupPanelHint:"Trascina qui un'intestazione di colonna per raggruppare",groupByThis:"Raggruppa per questa colonna",ungroup:"Rimuovi raggruppamento",expandAll:"Espandi tutto",collapseAll:"Comprimi tutto",pagerRange:"{from}\u2013{to} di {total}",pageOf:"Pagina {page} di {pages}",pageSize:"Righe per pagina",firstPage:"Prima pagina",previousPage:"Pagina precedente",nextPage:"Pagina successiva",lastPage:"Ultima pagina",loading:"Caricamento\u2026",loadFailed:"Impossibile caricare le righe",filters:"Filtri",clearFilters:"Rimuovi tutti i filtri",exportCsv:"Esporta CSV",exportExcel:"Esporta Excel",print:"Stampa\u2026",pivot:"Pivot",pivotMode:"Modalit\xE0 pivot",pivotRows:"Gruppi di righe",pivotColumns:"Etichette di colonna",pivotValues:"Valori",total:"Totale",addColumn:"Aggiungi colonna\u2026",chartBar:"Grafico a barre",chartStacked:"Grafico a barre in pila",chartLine:"Grafico a linee",chartArea:"Grafico ad area",chartPie:"Grafico a torta",chartDonut:"Grafico ad anello",chartCombo:"Grafico a barre e linee",chartScatter:"Grafico a dispersione",freeBadge:"Versione gratuita",ops:{contains:"Contiene",equals:"Uguale a",notEquals:"Diverso da",startsWith:"Inizia con",endsWith:"Finisce con",blank:"Vuoto",notBlank:"Non vuoto",eq:"Uguale a",ne:"Diverso da",lt:"Minore di",lte:"Minore o uguale a",gt:"Maggiore di",gte:"Maggiore o uguale a",between:"Tra",before:"Prima di",after:"Dopo"}},Tn=Jo;var te="__fg_select__",In={id:te,header:"",width:44,minWidth:44,maxWidth:44,pinned:"left",sortable:!1,resizable:!1,filter:!1},ve="__fg_drag__",Dn={id:ve,header:"",width:28,minWidth:28,maxWidth:28,pinned:"left",sortable:!1,resizable:!1,filter:!1,chooser:!1},fe="__fg_rownum__",$n=(i=52,e="#")=>({id:fe,header:e,width:i,minWidth:i,maxWidth:i,pinned:"left",sortable:!1,resizable:!1,filter:!1,chooser:!1}),D=i=>i===te||i===ve||i===fe,Zo=120,Qo=40,er=["left","center","right"];function oe(i){if(D(i.id)||i.filter===!1)return null;if(i.filter)return i.filter;switch(i.type){case"number":return"number";case"date":return"date";case"boolean":return"set";default:return"text"}}function ae(i,e,t){let n=i.editable;if(typeof n!="function")return!!n;try{return!!n({value:i.valueGetter?i.valueGetter(e):i.field?e[i.field]:void 0,row:e,rowIndex:t,column:i})}catch{return!1}}var ye=i=>i.id!==te&&i.sortable!==!1,Ue=i=>i.id!==te&&i.resizable!==!1;function qe(i,e){let t=i.minWidth??Qo,n=i.maxWidth??1/0;return Math.round(Math.min(n,Math.max(t,e)))}function An(i){return i.children?1+Math.max(0,...i.children.map(An)):1}var We=class{constructor(e){this.depth=1;this.roots_=[];this.defs=[];this.byId=new Map;this.containerWidth=0;this.layout={left:[],center:[],right:[]};this.leafById=new Map;this.setDefs(e)}setDefs(e){this.defs=e,this.byId=new Map;let t=0,n=(r,s,a)=>{let l=Array.isArray(r.children)&&r.children.length>0,d=t++,c=r.id??(l?`g${d}`:r.field);if(c||(c=`c${d}`,O(`column #${d} has neither "field" nor "id"; using "${c}"`)),this.byId.has(c)){let g=1;for(;this.byId.has(`${c}_${g}`);)g++;O(`duplicate column id "${c}"; renamed to "${c}_${g}"`),c=`${c}_${g}`}let u={id:c,def:r,parent:s,children:null,depth:a,width:qe(r,r.width??Zo),flex:r.flex&&r.flex>0?r.flex:null,hide:r.hide??!1,pinned:r.pinned??s?.pinned??null,open:!!r.openByDefault};return this.byId.set(c,u),l&&(u.children=o(r.children).map(g=>n(g,u,a+1))),u},o=r=>{let s=r.filter(a=>a!==null&&typeof a=="object");return s.length!==r.length&&O("columns contain entries that are not objects; they were skipped"),s};this.roots_=o(e).map(r=>n(r,null,0)),this.depth=Math.max(1,...this.roots_.map(An)),this.relayout()}setContainerWidth(e){if(e===this.containerWidth)return!1;this.containerWidth=e;let t=this.displayed().map(n=>n.width).join();return this.relayout(),t!==this.displayed().map(n=>n.width).join()}roots(){return this.roots_}reset(){this.setDefs(this.defs)}region(e){return this.layout[e]}displayed(){return[...this.layout.left,...this.layout.center,...this.layout.right]}regionWidth(e){let t=this.layout[e],n=t[t.length-1];return n?n.left+n.width:0}getColumn(e){return this.leafById.get(e)}getNode(e){return this.byId.get(e)}siblings(e){let t=this.byId.get(e);return t?t.parent?t.parent.children:this.roots_:[]}setWidth(e,t){let n=this.byId.get(e);return!n||n.children?0:(n.flex=null,n.width=qe(n.def,t),this.relayout(),n.width)}setPinned(e,t){let n=this.byId.get(e);!n||n.children||D(e)||(n.pinned=t,this.relayout())}setHide(e,t){let n=this.byId.get(e);!n||n.children||(n.hide=t,this.relayout())}move(e,t){let n=this.siblings(e),o=n.findIndex(s=>s.id===e);if(o<0)return;let[r]=n.splice(o,1);n.splice(Math.max(0,Math.min(n.length,t)),0,r),this.relayout()}headerCells(e){let t=[],n=new Map;for(let o of this.layout[e]){let r=[];for(let s=o.node.parent;s;s=s.parent)r.unshift(s);for(let s of r){let a=n.get(s.id);if(a){a.width+=o.width;continue}let l={id:s.id,label:s.def.header??"",isGroup:!0,column:null,node:s,row:s.depth,rowSpan:1,left:o.left,width:o.width};n.set(s.id,l),t.push(l)}t.push({id:o.id,label:o.def.header??o.def.field??"",isGroup:!1,column:o,node:o.node,row:o.node.depth,rowSpan:this.depth-o.node.depth,left:o.left,width:o.width})}return t}getState(){return this.leafNodes().filter(e=>!D(e.id)).map(e=>({colId:e.id,width:this.leafById.get(e.id)?.width??e.width,hide:!!e.hide,pinned:e.pinned??null}))}applyState(e){let t=new Map;e.forEach((r,s)=>{t.set(r.colId,s);let a=this.byId.get(r.colId);!a||a.children||D(r.colId)||(typeof r.width=="number"&&Number.isFinite(r.width)&&(a.flex=null,a.width=qe(a.def,r.width)),typeof r.hide=="boolean"&&(a.hide=r.hide),"pinned"in r&&(a.pinned=r.pinned==="left"||r.pinned==="right"?r.pinned:null))}),t.set(fe,-3),t.set(ve,-2),t.set(te,-1);let n=r=>r.children?Math.min(1/0,...r.children.map(n)):t.get(r.id)??1/0,o=r=>{let s=r.map((a,l)=>({n:a,i:l,r:n(a)}));s.sort((a,l)=>a.r===l.r?a.i-l.i:a.r-l.r),r.splice(0,r.length,...s.map(a=>a.n));for(let a of r)a.children&&o(a.children)};o(this.roots_),this.relayout()}leafNodes(){let e=[],t=n=>n.children?n.children.forEach(t):e.push(n);return this.roots_.forEach(t),e}isCollapsible(e){return!!e.children?.some(t=>t.def.columnGroupShow==="open"||t.def.columnGroupShow==="closed")}setGroupOpen(e,t){let n=this.byId.get(e);return!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?.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(){let e=this.leafNodes().filter(l=>!l.hide&&this.shownByGroups(l)),t=e.reduce((l,d)=>l+(d.flex?0:d.width),0),n=e.reduce((l,d)=>l+(d.flex??0),0),o=Math.max(0,this.containerWidth-t),r=l=>l.flex?qe(l.def,Math.floor(o*l.flex/n)):l.width,s={left:[],center:[],right:[]};this.leafById=new Map;let a=0;for(let l of er){let d=0;for(let c of e){if((c.pinned??"center")!==l)continue;let u={id:c.id,def:c.def,node:c,width:r(c),region:l,left:d,index:a++};d+=u.width,s[l].push(u),this.leafById.set(c.id,u)}}this.layout=s}};var X=class extends Error{constructor(t){super(t);this.code=t}};function tr(i){let e=[],t=0;for(;t<i.length;){let n=i[t];if(/\s/.test(n))t++;else if(/[0-9.]/.test(n)){let o=/^(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?/i.exec(i.slice(t));if(!o)throw new X("#ERROR!");e.push({t:"num",v:Number(o[0])}),t+=o[0].length}else if(n==='"'){let o="";for(t++;;){if(t>=i.length)throw new X("#ERROR!");if(i[t]==='"'){if(i[t+1]==='"'){o+='"',t+=2;continue}t++;break}o+=i[t++]}e.push({t:"str",v:o})}else if(n==="["){let o=i.indexOf("]",t);if(o<0)throw new X("#ERROR!");e.push({t:"id",v:i.slice(t+1,o)}),t=o+1}else if(/[A-Za-z_À-]/.test(n)){let o=/^[A-Za-z_À-][\wÀ-]*/.exec(i.slice(t));e.push({t:"id",v:o[0]}),t+=o[0].length}else{let o=i.slice(t,t+2);if(o==="<>"||o==="<="||o===">=")e.push({t:"op",v:o}),t+=2;else if("+-*/%^&=<>(),".includes(n))e.push({t:"op",v:n}),t++;else throw new X("#ERROR!")}}return e}var Ke=i=>i==null||i==="";function _(i){if(typeof i=="number")return i;if(typeof i=="boolean")return i?1:0;if(Ke(i))return 0;if(typeof i=="string"&&i.trim()!==""&&Number.isFinite(Number(i)))return Number(i);throw new X("#VALUE!")}var je=i=>Ke(i)?"":typeof i=="boolean"?i?"TRUE":"FALSE":String(i);function nr(i,e){let t=Math.trunc(e),n=+`${Math.round(+`${Math.abs(i)}e${t}`)}e${-t}`;return i<0?-n:n}var Pn={ROUND:i=>nr(_(i[0]),i.length>1?_(i[1]):0),ABS:i=>Math.abs(_(i[0])),MIN:i=>i.length?Math.min(...i.map(_)):0,MAX:i=>i.length?Math.max(...i.map(_)):0,SUM:i=>i.reduce((e,t)=>e+_(t),0),AVG:i=>{if(!i.length)throw new X("#DIV/0!");return i.reduce((e,t)=>e+_(t),0)/i.length}};function or(i,e){return(typeof i=="number"||Ke(i))&&(typeof e=="number"||Ke(e))?_(i)-_(e):je(i).localeCompare(je(e),void 0,{sensitivity:"accent"})}var Lt=class{constructor(e,t){this.tokens=e;this.resolve=t;this.i=0}parse(){let e=this.comparison();if(this.i<this.tokens.length)throw new 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)){let n=or(e,this.concat());return t==="="?n===0:t==="<>"?n!==0:t==="<"?n<0:t===">"?n>0:t==="<="?n<=0:n>=0}return e}concat(){let e=this.additive();for(;this.take("&");)e=je(e)+je(this.additive());return e}additive(){let e=this.multiplicative();for(;;)if(this.take("+"))e=_(e)+_(this.multiplicative());else if(this.take("-"))e=_(e)-_(this.multiplicative());else return e}multiplicative(){let e=this.unary();for(;;)if(this.take("*"))e=_(e)*_(this.unary());else if(this.take("/")||this.take("%")){let t=this.tokens[this.i-1].v,n=_(this.unary());if(n===0)throw new X("#DIV/0!");e=t==="/"?_(e)/n:_(e)%n}else return e}unary(){return this.take("-")?-_(this.unary()):this.take("+")?_(this.unary()):this.power()}power(){let e=this.primary();return this.take("^")?_(e)**_(this.unary()):e}primary(){let e=this.tokens[this.i++];if(!e)throw new X("#ERROR!");if(e.t==="num"||e.t==="str")return 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 o=t.toUpperCase();if(o==="IF"){if(n.length<2)throw new X("#ERROR!");return(typeof n[0]=="boolean"?n[0]:_(n[0])!==0)?n[1]:n.length>2?n[2]:!1}let r=Object.hasOwn(Pn,o)?Pn[o]:void 0;if(!r)throw new X("#NAME?");return r(n)}return/^(true|false)$/i.test(t)?t.toLowerCase()==="true":this.resolve(t)}},rr=32;function Tt(i,e,t=new Set,n=0,o=new Map){try{let r=a=>{if(!e||!Object.hasOwn(e,a))throw new X("#REF!");let l=e[a];if(typeof l=="string"&&l.startsWith("=")){if(t.has(a)||n>=rr)throw new X("#CYCLE!");let d;if(o.has(a)?d=o.get(a):(d=Tt(l,e,new Set([...t,a]),n+1,o),o.set(a,d)),typeof d=="string"&&/^#[A-Z/0]+[!?]$/.test(d))throw new X(d);return d}return l},s=new Lt(tr(i.slice(1)),r).parse();return typeof s=="number"&&!Number.isFinite(s)?"#NUM!":s}catch(r){return r instanceof X?r.code:"#ERROR!"}}var Ce=i=>typeof i=="string"&&i.length>1&&i.startsWith("=");function B(i,e){if(i.valueGetter)try{return i.valueGetter(e)}catch{O(`valueGetter of column "${i.id??i.field}" threw; rendering an empty cell`);return}if(i.field==null)return;let t=e[i.field];return i.formulas&&Ce(t)?Tt(t,e,new Set([i.field])):t}var Ie=["left","center","right"],Fn=[[">=","gte"],["<=","lte"],["<>","ne"],["!=","ne"],[">","gt"],["<","lt"],["=","eq"]],Nn=[[">","after"],["<","before"],["=","equals"]],ir=/^(.+?)\s*(?:~|\.\.)\s*(.+)$/,It=i=>{let e=Number(i.replace(/[,\s₩$€¥]/g,""));return i.trim()!==""&&Number.isFinite(e)?e:null},Dt=i=>{let e=/^(\d{4})[-./]\s*(\d{1,2})[-./]\s*(\d{1,2})\.?$/.exec(i.trim());if(!e)return null;let t=Number(e[1]),n=Number(e[2]),o=Number(e[3]);return n<1||n>12||o<1||o>new Date(Date.UTC(t,n,0)).getUTCDate()?null:`${e[1]}-${e[2].padStart(2,"0")}-${e[3].padStart(2,"0")}`};function sr(i,e){let t=e.trim();if(!t)return null;if(i==="text")return{type:"text",op:"contains",value:t};let n=ir.exec(t);if(i==="number"){if(n){let l=It(n[1]),d=It(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=Fn.find(([l])=>t.startsWith(l)),a=It(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=Dt(n[1]),a=Dt(n[2]);return!s||!a?void 0:{type:"date",op:"between",value:s<a?s:a,valueTo:s<a?a:s}}let o=Nn.find(([s])=>t.startsWith(s)),r=Dt(o?t.slice(o[0].length):t);return r?{type:"date",op:o?o[1]:"equals",value:r}:void 0}function ar(i){if(!i)return"";if(i.type==="text")return i.op==="contains"?i.value??"":"";if(i.type==="number"){if(i.op==="between")return`${i.value}~${i.valueTo}`;let e=Fn.find(([,t])=>t===i.op)?.[0];return e&&i.value!==void 0?`${e==="="?"":e}${i.value}`:""}if(i.type==="date"){if(i.op==="between")return`${i.value}~${i.valueTo}`;let e=Nn.find(([,t])=>t===i.op)?.[0];return e&&i.value?`${e==="="?"":e}${i.value}`:""}return""}var _e=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 Ie)this.inners[n]=x("div","fg-filter-row",{role:"row"}),t[n].append(this.inners[n])}get height(){return Math.round(this.grid.renderer.opts.rowHeight*.95)}render(){let{columns:e,store:t}=this.grid,n=this.height,o=e.displayed(),r=`${n}|${t.state.locale.code}|${o.map(s=>`${s.id}:${s.left}:${s.width}:${s.region}`).join(",")}`;if(r!==this.layout){this.layout=r;for(let s of Ie){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 Ie)for(let n of this.inners[t].querySelectorAll("[data-col]")){let o=n.dataset.col,r=e[o];if(n.closest(".fg-filter-cell").classList.toggle("fg-filter-active",!!r),!(n===n.ownerDocument.activeElement||n.getRootNode().activeElement===n)){if(n instanceof HTMLSelectElement){let s=r?.type==="set"&&r.values.length===1?JSON.stringify(r.values[0]):"";[...n.options].some(a=>a.value===s)&&(n.value=s)}else n.value=ar(r);n.classList.remove("fg-filter-bad")}}}}refreshLists(){for(let e of Ie)for(let t of this.inners[e].querySelectorAll("select[data-col]")){let n=this.grid.columns.getNode(t.dataset.col)?.def;if(!n)continue;let o=t.value;if(this.fillOptions(t,n),o&&![...t.options].some(r=>r.value===o)){let r=x("option","",{value:o});r.textContent=String(JSON.parse(o)),t.append(r)}t.value=o}}fillOptions(e,t){let n=x("option","",{value:""});n.textContent=this.grid.store.state.locale.selectAll;let o=this.distinct(t).map(r=>{let s=x("option","",{value:JSON.stringify(r)});return s.textContent=r===!0?"\u2713":r===!1?"\u2717":String(r),s});e.replaceChildren(n,...o)}cell(e,t){let n=x("div","fg-filter-cell");n.style.left=`${e.left}px`,n.style.width=`${e.width}px`,n.style.height=`${t}px`;let o=D(e.id)?null:oe(e.def);if(!o)return n;let s=`${this.grid.store.state.locale.filter}: ${e.def.header??e.def.field??e.id}`;if(o==="set"){let d=x("select","fg-filter-input",{"aria-label":s});return d.dataset.col=e.id,this.fillOptions(d,e.def),d.addEventListener("change",()=>{this.grid.setFilter(e.id,d.value?{type:"set",values:[JSON.parse(d.value)]}:null)}),n.append(d),n}let a=x("input","fg-filter-input",{type:"text","aria-label":s,spellcheck:"false",autocomplete:"off"});a.dataset.col=e.id,o==="number"&&(a.placeholder=">0, 10~20"),o==="date"&&(a.placeholder=">2026-01-01");let l=()=>{let d=sr(o,a.value);a.classList.toggle("fg-filter-bad",d===void 0),d!==void 0&&this.grid.setFilter(e.id,d)};return a.addEventListener("input",()=>{clearTimeout(this.timers.get(e.id)),this.timers.set(e.id,window.setTimeout(l,200))}),a.addEventListener("keydown",d=>{d.stopPropagation(),d.key==="Enter"?(clearTimeout(this.timers.get(e.id)),l()):d.key==="Escape"&&(a.value="",clearTimeout(this.timers.get(e.id)),l())}),n.append(a),n}distinct(e){let t=new Map;for(let n of this.grid.store.state.data){let o=B(e,n);if(o==null||o==="")continue;let r=JSON.stringify(o);if(t.has(r)||t.set(r,o),t.size>=200)break}return[...t.values()].sort((n,o)=>String(n).localeCompare(String(o)))}setTransform(e){this.inners.center.style.transform=`translateX(${-e}px)`}destroy(){for(let e of this.timers.values())clearTimeout(e);for(let e of Ie)this.inners[e].remove()}};function q(i){return i==null||typeof i=="string"&&i.trim()===""||typeof i=="number"&&Number.isNaN(i)}var On=i=>String(i).padStart(2,"0");function Q(i){if(q(i))return null;if(typeof i=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(i))return i;let e=i instanceof Date?i:new Date(i);return Number.isNaN(e.getTime())?null:`${e.getFullYear()}-${On(e.getMonth()+1)}-${On(e.getDate())}`}function Z(i){return q(i)?"":i instanceof Date?Q(i)??"":String(i)}var le=()=>!0;function Xe(i){switch(i.type){case"combined":{let e=(Array.isArray(i.conditions)?i.conditions:[]).map(Xe);return e.length?i.operator==="or"?t=>e.some(n=>n(t)):t=>e.every(n=>n(t)):le}case"text":{let e=(i.value??"").toLowerCase(),t=n=>q(n)?"":String(n).toLowerCase();switch(i.op){case"contains":return n=>t(n).includes(e);case"equals":return n=>t(n)===e;case"notEquals":return n=>t(n)!==e;case"startsWith":return n=>t(n).startsWith(e);case"endsWith":return n=>t(n).endsWith(e);case"blank":return q;case"notBlank":return n=>!q(n)}return le}case"number":{let e=n=>q(n)?NaN:Number(n);if(i.op==="blank")return n=>Number.isNaN(e(n));if(i.op==="notBlank")return n=>!Number.isNaN(e(n));let t=i.value;if(t==null||Number.isNaN(t))return le;switch(i.op){case"eq":return n=>e(n)===t;case"ne":return n=>e(n)!==t;case"lt":return n=>e(n)<t;case"lte":return n=>e(n)<=t;case"gt":return n=>e(n)>t;case"gte":return n=>e(n)>=t;case"between":{let n=i.valueTo;if(n==null||Number.isNaN(n))return le;let o=Math.min(t,n),r=Math.max(t,n);return s=>{let a=e(s);return a>=o&&a<=r}}}return le}case"date":{if(i.op==="blank")return n=>Q(n)===null;if(i.op==="notBlank")return n=>Q(n)!==null;let e=i.value;if(!e)return le;let t=n=>Q(n);switch(i.op){case"equals":return n=>t(n)===e;case"before":return n=>{let o=t(n);return o!==null&&o<e};case"after":return n=>{let o=t(n);return o!==null&&o>e};case"between":{let n=i.valueTo;if(!n)return le;let o=e<n?e:n,r=e<n?n:e;return s=>{let a=t(s);return a!==null&&a>=o&&a<=r}}}return le}case"set":{let e=new Set(i.values.map(Z));return t=>e.has(Z(t))}}return le}function Hn(i){let e=i.trim().toLowerCase();return e?e.split(/\s+/):[]}function Bn(i,e){return i.every(t=>e.includes(t))}function $t(i,e,t){let n=[];for(let o of Array.isArray(i?.conditions)?i.conditions:[]){if(!o||typeof o!="object")continue;if("conditions"in o){let a=$t(o,e,t);a&&n.push(a);continue}let r=e(o.colId);if(!r||!o.model)continue;let s=Xe(o.model);n.push(a=>s(t(r,a)))}return n.length?i.operator==="or"?o=>n.some(r=>r(o)):o=>n.every(r=>r(o)):null}var Gn=new Map;function lr(i){if(i==="integer")return{maximumFractionDigits:0};if(i==="percent")return{style:"percent"};if(i.startsWith("currency:"))return{style:"currency",currency:i.slice(9)};if(!/^[#0,]*(\.[#0]+)?%?$/.test(i)||!/[#0]/.test(i))return null;let e=i.endsWith("%"),t=e?i.slice(0,-1):i,n=t.includes(".")?t.split(".")[1]:"";return{useGrouping:t.includes(","),minimumFractionDigits:(n.match(/0/g)??[]).length,maximumFractionDigits:n.length,...e?{style:"percent"}:{}}}var Ye={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 ie(i){if(q(i))return null;if(i instanceof Date)return Number.isNaN(i.getTime())?null:i;if(typeof i=="string"){let t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(i);if(t)return new Date(Number(t[1]),Number(t[2])-1,Number(t[3]))}if(typeof i!="string"&&typeof i!="number")return null;let e=new Date(i);return Number.isNaN(e.getTime())?null:e}function dr(i,e,t){switch(i){case"number":{let n={};if(typeof e=="string"){let r=lr(e);r||O(`unknown number format "${e}"`),n=r??{}}else e&&(n=e);let o=new Intl.NumberFormat(t,n);return r=>{if(q(r))return"";let s=typeof r=="number"?r:Number(r);return Number.isNaN(s)?String(r):o.format(s)}}case"date":{if(t.toLowerCase().startsWith("ko")&&(e===void 0||e==="date"||e==="datetime")){let r=a=>String(a).padStart(2,"0"),s=e==="datetime";return a=>{let l=ie(a);if(!l)return q(a)?"":String(a);let d=`${l.getFullYear()}-${r(l.getMonth()+1)}-${r(l.getDate())}`;return s?`${d} ${r(l.getHours())}:${r(l.getMinutes())}`:d}}let n=Ye.date;typeof e=="string"?(Ye[e]||O(`unknown date format "${e}"`),n=Ye[e]??Ye.date):e&&(n=e);let o=new Intl.DateTimeFormat(t,n);return r=>{let s=ie(r);return s?o.format(s):q(r)?"":String(r)}}case"boolean":return n=>n===!0?"\u2713":n===!1?"\u2717":"";default:return n=>q(n)?"":n instanceof Date?n.toISOString():String(n)}}function K(i,e){if(i.sparkline)return r=>Array.isArray(r)?r.join(", "):r==null?"":String(r);let t=i.format,n=`${e}|${i.type??"text"}|${typeof t=="string"?t:JSON.stringify(t??null)}`,o=Gn.get(n);return o||(o=dr(i.type,t,e),Gn.set(n,o)),o}function At(i){let e=[];for(let t of i){if(q(t)||t instanceof Date)continue;let n=typeof t=="number"?t:Number(t);Number.isNaN(n)||e.push(n)}return e}function zn(i,e){let t=i.filter(o=>o instanceof Date&&!Number.isNaN(o.getTime()));if(t.length)return t.reduce((o,r)=>(e?r>o:r<o)?r:o);let n=At(i);return n.length?e?Math.max(...n):Math.min(...n):null}function pe(i,e,t){if(typeof i=="function")return i(e,t);switch(i){case"sum":return At(e).reduce((n,o)=>n+o,0);case"avg":{let n=At(e);return n.length?n.reduce((o,r)=>o+r,0)/n.length:null}case"min":return zn(e,!1);case"max":return zn(e,!0);case"count":return t.length}return null}function De(i){return typeof i=="object"&&i!==null&&"agg"in i?i:{agg:i}}function Vn(i,e,t){let n=new Map,o=(r,s)=>{let a=n.get(r);return a||n.set(r,a=e.map(l=>B(s,l))),a};return i.map(r=>{let s={};for(let[a,l]of Object.entries(r.columns??{})){let d=t(a);d&&(s[a]=pe(De(l).agg,o(a,d),e))}return s})}function $e(i,e,t,n,o){if(!i)return 1;let r=1;try{r=Math.floor(Number(i({value:B(e,t),row:t,rowIndex:n})))}catch{r=1}return Number.isFinite(r)?Math.max(1,Math.min(o,r)):1}function Je(i,e){let t=i.length,n=new Int32Array(t),o=new Int32Array(t);if(e.rowSpan){for(let a=0;a<t;){let l=$e(e.rowSpan,e,i[a],a,t-a);for(let d=a;d<a+l;d++)n[d]=a,o[d]=a+l-1;a+=l}return{start:n,end:o}}let r=typeof e.merge=="function"?(a,l)=>{try{return!!e.merge(B(e,i[a]),B(e,i[l]),i[a],i[l])}catch{return!1}}:(()=>{let a=i.map(l=>{let d=B(e,l);return q(d)?null:Z(d)});return(l,d)=>a[l]!==null&&a[l]===a[d]})(),s=0;for(let a=1;a<=t;a++)if(!(a<t&&r(a-1,a))){for(let l=s;l<a;l++)n[l]=s,o[l]=a-1;s=a}return{start:n,end:o}}function qn(i,e,t,n,o=4){if(n<=0||t<=0)return{first:0,last:-1};let r=Math.max(0,Math.floor(i/t)-o),s=Math.floor((i+e)/t);return{first:Math.min(r,n-1),last:Math.min(n-1,s+o)}}function Ze(i,e,t,n,o=2){let r=i.length;if(!r)return{first:0,last:-1};let s=0,a=r-1;for(;s<a;){let c=s+a>>1;i[c]+e[c]<=t?s=c+1:a=c}let l=s,d=t+n;for(a=r-1;s<a;){let c=s+a+1>>1;i[c]<d?s=c:a=c-1}return{first:Math.max(0,l-o),last:Math.min(r-1,Math.max(l,s)+o)}}function Wn(i,e,t,n,o=4){if(n<=0)return{first:0,last:-1};let r=0,s=n-1;for(;r<s;){let d=r+s>>1;i[d+1]<=e?r=d+1:s=d}let a=r,l=e+t;for(s=n-1;r<s;){let d=r+s+1>>1;i[d]<l?r=d:s=d-1}return{first:Math.max(0,a-o),last:Math.min(n-1,r+o)}}var ee=["left","center","right"],Un=6,cr=8,Pt=2,ur='<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>',Ft='<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 hr='<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 x(i,e="",t={}){let n=document.createElement(i);e&&(n.className=e);for(let[o,r]of Object.entries(t))n.setAttribute(o,r);return n}var Qe=class{constructor(e,t,n){this.grid=t;this.opts=n;this.filterRow=null;this.activeCellId="";this.idBase=`fg${Math.random().toString(36).slice(2,8)}`;this.painted={left:new Map,center:new Map,right:new Map};this.pool={left:[],center:[],right:[]};this.frame=0;this.headerDirty=!0;this.version=0;this.lastRange={first:0,last:-1};this.summaryEl=null;this.summaryPanes=null;this.summaryInners=null;this.canvasSummary={left:[],center:[],right:[]};this.topOffset=0;this.pinnedTop=null;this.pinnedBottom=null;this.statusEl=null;this.statusKey="";this.pagerEl=null;this.cards=null;this.cardMode=!1;this.pagerKey="";this.offsets=null;this.details=new Map;this.firstDataId="";this.rowHeights=new Map;this.heightsVersion=0;this.groupLabelId="";this.onScroll=()=>{this.frame&&cancelAnimationFrame(this.frame),this.frame=0,this.render(),this.grid.events.emit("scroll",this.getScroll())};this.onSideWheel=e=>{e.deltaY&&(e.preventDefault(),this.scroller.scrollTop+=e.deltaY)};this.overlayKey="";this.heightFn=null;this.onCardClick=e=>{let t=e.target,n=t.closest(".fg-card");if(!n)return;let o=Number(n.dataset.row),r=this.grid.rowModel.getRow(o);if(!r||r.kind)return;if(t.closest(".fg-card-check")){this.grid.selectFromClick(o,!0,!1),this.invalidate({rows:!0});return}let s=t.closest(".fg-card-value")?.dataset.col,a=s?this.grid.columns.getColumn(s):void 0;a&&this.grid.events.emit("cellClick",{row:r.data,rowIndex:o,colId:a.id,value:B(a.def,r.data),event:e})};this.root=x("div","",{tabindex:"-1"}),this.root.addEventListener("focus",()=>this.gridEl.focus({preventScroll:!0})),this.gridEl=x("div","fg-grid",{role:"grid",tabindex:"0"}),this.headerEl=x("div","fg-header",{role:"rowgroup"}),this.bodyEl=x("div","fg-body",{role:"rowgroup"});let o=r=>({left:x("div",`${r} ${r}-left`),center:x("div",`${r} ${r}-center`),right:x("div",`${r} ${r}-right`)});this.headerPanes=o("fg-header-pane"),this.headerInners=o("fg-header-inner");for(let r of ee)this.headerInners[r].setAttribute("role","row");this.bodyPanes=o("fg-body-pane"),this.canvases=o("fg-canvas");for(let r of ee)this.headerPanes[r].dataset.region=r,this.bodyPanes[r].dataset.region=r,this.headerPanes[r].append(this.headerInners[r]),this.bodyPanes[r].append(this.canvases[r]),this.headerEl.append(this.headerPanes[r]),this.bodyEl.append(this.bodyPanes[r]);this.scroller=this.bodyPanes.center,t.options.filterRow&&(this.filterRow=new _e(t,this.headerPanes)),this.overlay=x("div","fg-overlay",{"aria-live":"polite"}),this.main=x("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(){return this.cards?.scroller??this.scroller}getScroll(){let e=this.activeScroller;return{top:e.scrollTop,left:e.scrollLeft}}setScroll(e){let t=this.activeScroller;typeof e?.top=="number"&&Number.isFinite(e.top)&&(t.scrollTop=Math.max(0,e.top)),typeof e?.left=="number"&&Number.isFinite(e.left)&&(t.scrollLeft=Math.max(0,e.left))}applyFont(e,t){e?this.root.style.setProperty("--fg-font-size",`${e}px`):this.root.style.removeProperty("--fg-font-size"),t?this.root.style.setProperty("--fg-font",t):this.root.style.removeProperty("--fg-font")}applyTheme(){let e=this.grid.options.direction==="rtl";this.root.className=`fg-root fg-theme-${this.grid.store.state.theme}${e?" fg-rtl":""}${this.cardMode?" fg-card-mode":""}${this.grid.density!=="normal"?` fg-density-${this.grid.density}`:""}`,this.root.setAttribute("dir",e?"rtl":"ltr")}get rtl(){return this.grid.options.direction==="rtl"}invalidate(e={}){e.header&&(this.headerDirty=!0),e.rows&&this.version++,this.schedule()}schedule(){this.frame||(this.frame=requestAnimationFrame(()=>{this.frame=0,this.render()}))}render(){let{columns:e,rowModel:t,store:n,options:o}=this.grid,{rowHeight:r,headerHeight:s}=this.opts,a=this.scroller.offsetWidth-this.scroller.clientWidth;e.setContainerWidth(Math.max(0,this.main.clientWidth-a))&&(this.headerDirty=!0,this.version++);let l=t.getRowCount(),d=!!this.grid.options.autoRowHeight&&!t.server,c=t.layout(r,this.detailHeight(),d?this.rowHeights:void 0,this.heightsVersion,t.server?void 0:this.heightOf);if(this.offsets=c.uniform?null:c.offsets,this.firstDataId=e.displayed().find(R=>!D(R.id))?.id??"",this.groupLabelId=e.region("center").find(R=>!D(R.id))?.id??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(),g=u?u.opts.rows.length:0,f=u?.opts.position??"bottom",b=u?u.opts.pinned!==!1:!1;this.topOffset=u&&!b&&f==="top"?g*r:0;let w=u&&!b&&f==="bottom"?g*r:0;this.syncSummaryPane(u&&b?f:null,g*r);let m=e.depth*s+(this.filterRow?.height??0);this.headerEl.style.height=`${m}px`;for(let R of ee){let k=e.regionWidth(R);R!=="center"&&(this.headerPanes[R].style.width=this.bodyPanes[R].style.width=`${k}px`,this.headerPanes[R].hidden=this.bodyPanes[R].hidden=k===0),this.canvases[R].style.width=`${k}px`,this.canvases[R].style.height=`${this.rowsHeight(l)+this.topOffset+w}px`}o.autoHeight&&!this.useCards()&&(this.root.classList.add("fg-auto-height"),this.bodyEl.style.height=`${this.rowsHeight(l)+this.topOffset+w+Math.max(0,this.scroller.offsetHeight-this.scroller.clientHeight)}px`);let h=this.scroller.offsetHeight-this.scroller.clientHeight;this.bodyPanes.left.style.marginBottom=this.bodyPanes.right.style.marginBottom=`${h}px`;let p=this.gridEl;p.setAttribute("role",o.treeData||this.grid.getGroupBy().length?"treegrid":"grid"),p.setAttribute("aria-rowcount",String(l+e.depth+(this.filterRow?1:0))),p.setAttribute("aria-colcount",String(e.displayed().length)),o.rowSelection==="multiple"&&p.setAttribute("aria-multiselectable","true"),this.headerDirty&&(this.headerDirty=!1,this.renderHeader()),this.filterRow?.render(),this.renderRows(l),this.updateActiveCell(),d&&this.measureRows(),this.renderSummary(l,u&&u.opts.rows,u?.values??[],b,f),this.pinnedTop=this.renderPinned(this.pinnedTop,"top",this.grid.pinnedRows.top),this.pinnedBottom=this.renderPinned(this.pinnedBottom,"bottom",this.grid.pinnedRows.bottom),this.renderStatusBar(t.dataCount()),this.renderPager(),this.orderSections(u&&b?f:null),this.paintOverlay(l),this.overlay.style.top=`${m}px`;let{scrollTop:v,scrollLeft:y}=this.scroller;this.bodyPanes.left.scrollTop=this.bodyPanes.right.scrollTop=v,this.headerInners.center.style.transform=`translateX(${-y}px)`,this.filterRow?.setTransform(y),this.summaryInners&&(this.summaryInners.center.style.transform=`translateX(${-y}px)`);for(let R of[this.pinnedTop,this.pinnedBottom])R&&(R.inners.center.style.transform=`translateX(${-y}px)`);this.grid.fillHandle.update()}orderSections(e){let t=[e==="top"?this.summaryEl:null,this.pinnedTop?.el??null].filter(s=>!!s),n=[this.pinnedBottom?.el??null,e==="bottom"?this.summaryEl:null].filter(s=>!!s),o=[this.statusEl,this.pagerEl].filter(s=>!!s);for(let s of t)s.nextElementSibling!==this.bodyEl&&!t.includes(s.nextElementSibling)&&this.gridEl.insertBefore(s,this.bodyEl);let r=this.bodyEl;for(let s=t.length-1;s>=0;s--)r.previousElementSibling!==t[s]&&this.gridEl.insertBefore(t[s],r),r=t[s];r=this.bodyEl;for(let s of n)r.nextElementSibling!==s&&r.after(s),r=s;r=this.gridEl;for(let s of o)r.nextElementSibling!==s&&r.after(s),r=s}paintOverlay(e){let{grid:t}=this,{store:n,rowModel:o,options:r}=t,s=t.forcedOverlay??(e>0?null:o.loading()?"loading":"noRows");if(this.overlay.hidden=!s,!s){this.overlayKey="";return}let a=!o.server&&n.state.data.length>0,l=s==="loading"?r.loadingOverlay:r.noRowsOverlay,d=`${s}|${a}|${n.state.locale.code}`;if(d!==this.overlayKey)if(this.overlayKey=d,this.overlay.classList.toggle("fg-overlay-custom",typeof l=="function"),l==null)this.overlay.textContent=s==="loading"?n.state.locale.loading:n.state.locale.noRows;else if(typeof l=="string")this.overlay.textContent=l;else try{let c=l({filtered:a});typeof c=="string"?this.overlay.textContent=c:this.overlay.replaceChildren(c)}catch{O(`${s==="loading"?"loadingOverlay":"noRowsOverlay"} threw`),this.overlay.textContent=s==="loading"?n.state.locale.loading:n.state.locale.noRows}}updateActiveCell(){let e=this.activeCellId?this.root.getRootNode().getElementById?.(this.activeCellId)??null: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?.el.remove(),null;let o=e??new Nt(`fg-pinned-rows fg-pinned-${t}`),{columns:r}=this.grid,s=this.opts.rowHeight;o.size(r,n.length*s,this.scroller.offsetWidth-this.scroller.clientWidth);let a=r.region("center"),l=Ze(a.map(d=>d.left),a.map(d=>d.width),this.scroller.scrollLeft,this.scroller.clientWidth,Pt);for(let d of ee){let c=d==="center"?a.slice(l.first,l.last+1):r.region(d);o.inners[d].replaceChildren(...n.map((u,g)=>{let f=x("div","fg-row fg-row-pinned",{role:"row"});f.style.transform=`translateY(${g*s}px)`,f.style.height=`${s}px`;let b={id:`pinned-${t}-${g}`,data:u,sourceIndex:-1};for(let w of c){let m=x("div","fg-cell",{role:"gridcell"});D(w.id)?(m.style.left=`${w.left}px`,m.style.width=`${w.width}px`):this.paintCell(m,b,-1,w,!1,!1),f.append(m)}return f}))}return o}renderStatusBar(e){if(!this.grid.options.statusBar){this.statusEl?.remove(),this.statusEl=null;return}let{grid:t}=this,n=t.store.state,o=t.rowModel.server?e:t.viewRows().length,r=`${this.version}|${e}|${o}|${n.selected.size}|${JSON.stringify(n.range)}|${n.locale.code}`;if(this.statusEl&&r===this.statusKey)return;this.statusKey=r,this.statusEl??(this.statusEl=x("div","fg-statusbar",{role:"status","aria-live":"polite"}));let s=n.locale,a=new Intl.NumberFormat(s.code,{maximumFractionDigits:2}),l=x("span","fg-status-rows");l.textContent=(e===o?s.statusRows.replace("{n}",a.format(o)):s.statusFiltered.replace("{shown}",a.format(e)).replace("{total}",a.format(o)))+(n.selected.size?` \xB7 ${s.statusSelected.replace("{n}",a.format(n.selected.size))}`:"");let d=x("span","fg-status-aggs"),c=t.rangeAggregates();if(c&&c.cells>1){let u=[`${s.count} ${a.format(c.count)}`];c.numbers&&u.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=u.join(" ")}this.statusEl.replaceChildren(l,d)}renderHeader(){let{columns:e,store:t}=this.grid,{sort:n,filters:o,locale:r}=t.state;for(let s of ee){let a=this.headerInners[s];a.style.width=`${e.regionWidth(s)}px`,a.style.height=`${e.depth*this.opts.headerHeight}px`,a.replaceChildren(...e.headerCells(s).map(l=>this.headerCell(l,n,o,r)))}}headerCell(e,t,n,o){let r=this.opts.headerHeight,s=x("div",e.isGroup?"fg-header-cell fg-header-group":"fg-header-cell",{role:"columnheader"});if(s.dataset.col=e.id,s.style.left=`${e.left}px`,s.style.top=`${e.row*r}px`,s.style.width=`${e.width}px`,s.style.height=`${e.rowSpan*r}px`,D(e.id))return e.id===fe&&(s.classList.add("fg-header-rownum"),s.textContent=e.label),e.id===te&&(s.classList.add("fg-header-select"),s.append(this.selectAllBox(o))),s;let a=x("span","fg-header-label"),l=e.node.def;if(a.textContent=e.label,l.headerRenderer)try{let g=l.headerRenderer({header:e.label,column:l});typeof g=="string"?a.innerHTML=g:a.replaceChildren(g)}catch{O(`headerRenderer of column "${e.id}" threw; showing the plain header`),a.textContent=e.label}let d=null;if(e.isGroup&&this.grid.columns.isCollapsible(e.node)){let g=e.node.open,f=x("button",g?"fg-colgroup-toggle fg-expanded":"fg-colgroup-toggle",{type:"button",tabindex:"-1","aria-expanded":String(g),"aria-label":g?o.collapseAll:o.expandAll});f.textContent=g?"\u2212":"+",f.addEventListener("click",b=>{b.stopPropagation(),this.grid.setColumnGroupOpened(e.id,!g)}),s.classList.add("fg-header-collapsible"),d=f}if(l.headerClass)try{let g=typeof l.headerClass=="function"?l.headerClass(l):l.headerClass;g&&s.classList.add(...g.split(/\s+/).filter(Boolean))}catch{O(`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;(c.wrapHeaderText??this.grid.options.wrapHeaderText)&&s.classList.add("fg-header-wrap"),s.setAttribute("aria-colindex",String(e.column.index+1)),(c.align??(c.type==="number"?"right":"left"))==="right"&&s.classList.add("fg-align-right");let u=t.findIndex(g=>g.colId===e.id);if(s.setAttribute("aria-sort",u<0?"none":t[u].dir==="asc"?"ascending":"descending"),ye(c)&&s.classList.add("fg-sortable"),u>=0){let g=x("span","fg-sort-icon");if(g.textContent=t[u].dir==="asc"?"\u2191":"\u2193",t.length>1){let f=x("sup");f.textContent=String(u+1),g.append(f)}s.append(g)}if(ye(c)||oe(c)){let g=!!n[e.id],f=x("button",g?"fg-menu-btn fg-filter-active":"fg-menu-btn",{type:"button",tabindex:"-1","aria-label":o.columnMenu});f.innerHTML=g?hr:ur,s.append(f)}return Ue(c)&&s.append(x("div","fg-resize",{"aria-hidden":"true"})),s}selectAllBox(e){let t=this.grid.selectableRows(),n=this.grid.store.state.selected,o=0;for(let s of t)n.has(s.id)&&o++;let r=x("input","fg-checkbox fg-select-all",{type:"checkbox",tabindex:"-1","aria-label":e.selectAllRows});return r.checked=t.length>0&&o===t.length,r.indeterminate=o>0&&o<t.length,r.hidden=this.grid.options.rowSelection!=="multiple"||this.grid.options.headerCheckbox===!1,r}renderRows(e){let{columns:t,rowModel:n,store:o}=this.grid,{selected:r,focus:s}=o.state,a=this.grid.allRangeBounds(),l=this.grid.mergeSpans(),d=Math.max(0,this.scroller.scrollTop-this.topOffset),c=this.grid.options.autoHeight&&!n.server?{first:0,last:e-1}:this.offsets?Wn(this.offsets,d,this.scroller.clientHeight,e,Un):qn(d,this.scroller.clientHeight,this.opts.rowHeight,e,Un);this.lastRange=c;let u=t.region("center"),g=Ze(u.map(f=>f.left),u.map(f=>f.width),this.scroller.scrollLeft,this.scroller.clientWidth,Pt);u.some(f=>f.def.colSpan)&&(g.first=Math.max(0,g.first-cr));for(let f of ee){let b=f==="center"?u.slice(g.first,g.last+1):t.region(f),w=this.painted[f];for(let[h,p]of w)h>=c.first&&h<=c.last&&b.length||(p.el.remove(),this.pool[f].push(p.el),w.delete(h));if(!b.length)continue;let m=f==="center"?`${g.first}-${g.last}`:"";for(let h=c.first;h<=c.last;h++){let p=n.getRow(h),v=r.has(p.id),y=s&&s.rowIndex===h?s.colId:"",R=a.filter(S=>h>=S.r1&&h<=S.r2),k=R.map(S=>`${S.c1}-${S.c2}`).join(","),L=this.mergeState(l,b,h,c.first),C=p.kind==="detail"?`${this.scroller.scrollLeft}:${this.scroller.clientWidth}`:"",E=`${p.id}|${this.version}|${m}|${v?1:0}${p.kind==="group"?`:${this.grid.selectionVersion}`:""}|${y}|${k}|${L}|${C}`,M=w.get(h);if(!M){let S=this.pool[f].pop()??x("div","fg-row",{role:"row"});this.canvases[f].append(S),M={el:S,key:""},w.set(h,M)}M.key!==E&&(M.key=E,M.el.dataset.kind!==(p.kind??"")&&(M.el.replaceChildren(),M.el.dataset.kind=p.kind??""),p.kind==="group"?this.paintGroupRow(M.el,p,h,b,y):p.kind==="detail"?this.paintDetailRow(M.el,p,h,f):p.kind==="loading"?this.paintLoadingRow(M.el,h,b):this.paintRow(M.el,p,h,b,v,y,R,l,c.first))}}}mergeState(e,t,n,o){if(!e.size)return"";let r="";for(let s of t){let a=e.get(s.id);if(!a)continue;let l=a.start[n],d=a.end[n];r+=l===d?"n":n===Math.max(l,o)?`d${l}`:"h"}return r}paintRow(e,t,n,o,r,s,a,l=new Map,d=0){let c=this.opts.rowHeight;for(e.className=`fg-row${n%2?" fg-row-odd":""}${r?" fg-row-selected":""}${this.grid.tracker.created.has(t.data)?" fg-row-created":""}${this.grid.editor.editingRow(t.id)?" fg-row-editing":""}`,this.placeRow(e,n),this.grid.options.rowSelection&&e.setAttribute("aria-selected",String(r)),t.level!==void 0?e.setAttribute("aria-level",String(t.level+1)):e.removeAttribute("aria-level"),t.hasChildren?e.setAttribute("aria-expanded",String(!!t.expanded)):e.removeAttribute("aria-expanded");e.childElementCount>o.length;)e.lastElementChild.remove();for(;e.childElementCount<o.length;)e.append(x("div","fg-cell",{role:"gridcell"}));let u=!1,g=o.length?this.grid.columns.region(o[0].region):[],f=g.some(m=>m.def.colSpan),b=-1,w=f?new Map(g.map((m,h)=>[m.id,h])):null;o.forEach((m,h)=>{let p=e.children[h];if(this.paintCell(p,t,n,m,r,s===m.id),w){let y=w.get(m.id);if(y<=b)p.classList.add("fg-cell-span-hidden");else if(m.def.colSpan&&!D(m.id)){let R=$e(m.def.colSpan,m.def,t.data,n,g.length-y);if(R>1){b=y+R-1;let k=0;for(let L=y;L<=b;L++)k+=g[L].width;p.style.width=`${k}px`,p.classList.add("fg-cell-colspan")}}}m.id===this.firstDataId&&this.decorate(p,t),p.style.top=p.style.height=p.style.bottom="";let v=l.get(m.id);v&&v.start[n]!==v.end[n]&&(n===Math.max(v.start[n],d)?(p.classList.add("fg-cell-merged"),p.style.top=`${-(this.rowTop(n)-this.rowTop(v.start[n]))}px`,p.style.height=`${this.rowTop(v.end[n])+this.rowH(v.end[n])-this.rowTop(v.start[n])}px`,p.style.bottom="auto",u=!0):p.classList.add("fg-cell-merge-hidden")),!D(m.id)&&a.some(y=>m.index>=y.c1&&m.index<=y.c2)&&p.classList.add("fg-cell-range")}),e.style.zIndex=u?"1":""}paintCell(e,t,n,o,r,s){let a=this.grid.store.state.locale;e.style.left=`${o.left}px`,e.style.width=`${o.width}px`,e.dataset.col=o.id,e.setAttribute("aria-colindex",String(o.index+1));let l=s?"fg-cell fg-cell-focused":"fg-cell";if(o.id===fe){e.className=`${l} fg-cell-rownum`;let f=n>=0&&!t.kind?this.grid.rowNumber(n):null;e.textContent=f===null?"":String(f);return}if(o.id===ve){e.className=`${l} fg-cell-drag`;let f=x("span",this.grid.canMoveRows()?"fg-drag-handle":"fg-drag-handle fg-drag-disabled",{"aria-hidden":"true"});f.textContent="\u22EE\u22EE",e.replaceChildren(f);return}if(o.id===te){e.className=`${l} fg-cell-select`;let f=x("input","fg-checkbox",{type:"checkbox",tabindex:"-1","aria-label":a.selectRow});f.checked=r,n>=0&&!t.kind&&!this.grid.rowSelectable(t.data)&&(f.disabled=!0,e.classList.add("fg-cell-select-locked")),e.replaceChildren(f);return}let d=o.def,c=B(d,t.data),u=K(d,a.code)(c);l+=` fg-align-${d.align??(d.type==="number"?"right":d.type==="boolean"?"center":"left")}`;let g={value:c,formatted:u,row:t.data,rowIndex:n,column:d};if(d.cellClass)try{let f=typeof d.cellClass=="function"?d.cellClass(g):d.cellClass;f&&(l+=` ${f}`)}catch{O(`cellClass of column "${o.id}" threw`)}if(this.grid.tracker.isDirty(t.data,d.field)&&(l+=" fg-cell-dirty"),d.wrapText&&(l+=" fg-cell-wrap"),typeof d.editable=="function"&&n>=0&&!ae(d,t.data,n)&&(l+=" fg-cell-readonly"),n>=0&&(l+=this.grid.finder.classFor(n,o.id)),this.grid.isFlashing(t.id,o.id)&&(l+=" fg-cell-flash"),e.className=l,d.sparkline&&!d.renderer){let f=Array.isArray(c)?c.map(Number).filter(Number.isFinite):[];f.length?e.replaceChildren(fr(f,d.sparkline===!0?{}:d.sparkline,o.width,this.opts.rowHeight)):e.replaceChildren(),e.setAttribute("aria-label",Array.isArray(c)?c.join(", "):"");return}if(!d.renderer){e.textContent=u;return}try{let f=d.renderer(g);typeof f=="string"?e.innerHTML=f:e.replaceChildren(f)}catch{O(`renderer of column "${o.id}" threw; rendering an empty cell`),e.textContent=""}}cellAt(e){let t=e instanceof Element?e.closest(".fg-cell"):null,n=t?.parentElement;return!t||!n?.dataset.row||!t.dataset.col||t.closest(".fg-root")!==this.root?null:{rowIndex:Number(n.dataset.row),colId:t.dataset.col}}ensureVisible(e,t){let n=this.scroller,o=this.rowTop(e),r=o+Math.min(this.rowH(e),n.clientHeight||1/0);o<n.scrollTop?n.scrollTop=o:r>n.scrollTop+n.clientHeight&&(n.scrollTop=r-n.clientHeight);let s=t?this.grid.columns.getColumn(t):void 0;s?.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){if(!e){this.summaryEl?.remove(),this.summaryEl=this.summaryPanes=this.summaryInners=null;return}if(!this.summaryEl){let o=r=>({left:x("div",`${r} ${r}-left`),center:x("div",`${r} ${r}-center`),right:x("div",`${r} ${r}-right`)});this.summaryEl=x("div","fg-summary",{role:"rowgroup"}),this.summaryPanes=o("fg-summary-pane"),this.summaryInners=o("fg-summary-inner");for(let r of ee)this.summaryPanes[r].append(this.summaryInners[r]),this.summaryEl.append(this.summaryPanes[r])}this.summaryEl.className=`fg-summary fg-summary-${e}`,this.summaryEl.style.height=`${t}px`;for(let o of ee){let r=this.grid.columns.regionWidth(o);o!=="center"&&(this.summaryPanes[o].style.width=`${r}px`,this.summaryPanes[o].hidden=r===0),this.summaryInners[o].style.width=`${r}px`,this.summaryInners[o].style.height=`${t}px`}let n=this.scroller.offsetWidth-this.scroller.clientWidth;this.summaryPanes.center.style.marginRight=`${n}px`}renderSummary(e,t,n,o,r){for(let u of ee){for(let g of this.canvasSummary[u])g.remove();this.canvasSummary[u]=[]}if(!t)return;let{columns:s}=this.grid,a=this.opts.rowHeight,l=s.region("center"),d=Ze(l.map(u=>u.left),l.map(u=>u.width),this.scroller.scrollLeft,this.scroller.clientWidth,Pt),c=s.displayed().filter(u=>!D(u.id));for(let u of ee){let g=u==="center"?l.slice(d.first,d.last+1):s.region(u),f=t.map((b,w)=>{let m=b.label!=null?c.find(v=>!(v.id in(b.columns??{})))?.id??null:null,h=x("div","fg-row fg-summary-row",{role:"row"}),p=o||r==="top"?w*a:this.rowsHeight(e)+w*a;h.style.transform=`translateY(${p}px)`,h.style.height=`${a}px`;for(let v of g)h.append(this.summaryCell(v,b,n[w]??{},m));return h});o?this.summaryInners[u].replaceChildren(...f):(this.canvases[u].append(...f),this.canvasSummary[u]=f)}}summaryCell(e,t,n,o){let r=x("div","fg-cell",{role:"gridcell"});r.style.left=`${e.left}px`,r.style.width=`${e.width}px`,r.dataset.col=e.id;let s=e.def,a=s.align??(s.type==="number"?"right":s.type==="boolean"?"center":"left");r.className=`fg-cell fg-align-${a}`;let l=t.columns?.[e.id];if(l===void 0)return e.id===o&&(r.textContent=t.label??"",r.classList.add("fg-summary-label")),r;let d=n[e.id],c=De(l),u=this.grid.store.state.locale.code,g;if(d==null||d==="")g="";else if(typeof d=="string")g=d;else if(c.agg==="count")g=new Intl.NumberFormat(u).format(d);else{let f=s.type??(typeof d=="number"?"number":d instanceof Date?"date":void 0);g=K({...s,type:f,format:c.format??s.format},u)(d)}return r.textContent=c.prefix&&g?`${c.prefix} ${g}`:g,r}get heightOf(){let e=this.grid.options.getRowHeight;if(e)return this.heightFn??(this.heightFn=t=>{try{return e(t)??void 0}catch{return}})}invalidateHeights(){this.heightOf&&this.heightsVersion++,this.rowHeights.size&&(this.rowHeights.clear(),this.heightsVersion++)}measureRows(){let e=this.opts.rowHeight,t=new Map;for(let o of ee)for(let[r,s]of this.painted[o]){let a=this.grid.rowModel.getRow(r);if(!a||a.kind)continue;let l=t.get(r)??e;for(let d of s.el.querySelectorAll(".fg-cell-wrap"))d.classList.contains("fg-cell-merged")||d.classList.contains("fg-cell-merge-hidden")||(l=Math.max(l,Math.ceil(d.scrollHeight)));t.set(r,l)}let n=!1;for(let[o,r]of t){let s=this.grid.rowModel.getRow(o).id,a=this.rowHeights.get(s)??e;Math.abs(a-r)>1&&(r===e?this.rowHeights.delete(s):this.rowHeights.set(s,r),n=!0)}n&&(this.heightsVersion++,this.version++,this.schedule())}detailHeight(){let e=this.grid.options.detailHeight;return typeof e=="number"&&e>0?e:240}rowTop(e){return(this.offsets?this.offsets[e]:e*this.opts.rowHeight)+this.topOffset}rowH(e){return this.offsets?this.offsets[e+1]-this.offsets[e]:this.opts.rowHeight}rowsHeight(e){return this.offsets?this.offsets[e]:e*this.opts.rowHeight}placeRow(e,t){e.style.transform=`translateY(${this.rowTop(t)}px)`,e.style.height=`${this.rowH(t)}px`,e.dataset.row=String(t),e.setAttribute("aria-rowindex",String(t+1+this.grid.columns.depth+(this.filterRow?1:0)))}decorate(e,t){let{grid:n}=this,o=n.store.state.locale,r=t.level??0,s=!!n.options.treeData,a=n.canExpandDetail(t.data);if(!s&&!a&&!r)return;e.classList.add("fg-cell-lead"),e.style.setProperty("--fg-level",String(r));let l=[];if(s)if(t.hasChildren){let d=x("button",t.expanded?"fg-tree-toggle fg-expanded":t.loading?"fg-tree-toggle fg-tree-loading":"fg-tree-toggle",{type:"button",tabindex:"-1","aria-label":t.expanded?o.collapseAll:o.expandAll,"aria-expanded":String(!!t.expanded)});t.loading&&d.setAttribute("aria-busy","true"),d.innerHTML=Ft,l.push(d)}else l.push(x("span","fg-tree-spacer",{"aria-hidden":"true"}));if(a){let d=n.isDetailExpanded(t.data),c=x("button",d?"fg-detail-toggle fg-expanded":"fg-detail-toggle",{type:"button",tabindex:"-1","aria-expanded":String(d),"aria-label":d?o.collapseAll:o.expandAll});c.innerHTML=Ft,l.push(c)}e.prepend(...l)}paintGroupRow(e,t,n,o,r){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((t.level??0)+1)),e.setAttribute("aria-expanded",String(s.expanded)),e.removeAttribute("aria-selected"),e.style.zIndex="";e.childElementCount>o.length;)e.lastElementChild.remove();for(;e.childElementCount<o.length;)e.append(x("div","fg-cell",{role:"gridcell"}));o.forEach((d,c)=>{let u=e.children[c];u.style.left=`${d.left}px`,u.style.width=`${d.width}px`,u.style.top=u.style.height=u.style.bottom="",u.style.removeProperty("--fg-level"),u.dataset.col=d.id,u.setAttribute("aria-colindex",String(d.index+1));let g=r===d.id?" fg-cell-focused":"";if(d.id===te){if(u.className=`fg-cell fg-cell-select${g}`,a.options.rowSelection!=="multiple"){u.replaceChildren();return}let m=a.groupSelection(t),h=x("input","fg-checkbox",{type:"checkbox",tabindex:"-1","aria-label":l.selectAllRows});h.checked=m==="all",h.indeterminate=m==="some",u.replaceChildren(h);return}if(d.id===this.groupLabelId){u.className=`fg-cell fg-group-cell${g}`,u.style.setProperty("--fg-level",String(t.level??0));let m=x("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});m.innerHTML=Ft;let h=a.columns.getNode(s.colId)?.def,p=x("span","fg-group-label"),v=q(s.value)?l.blanks:h?K(h,l.code)(s.value):String(s.value),y=new Intl.NumberFormat(l.code),R=s.count??(s.aggregates?null:s.rows.length);p.textContent=`${h?.header??h?.field??s.colId}: ${v}${R==null?"":` (${y.format(R)})`}`,u.replaceChildren(m,p);return}let f=d.def,b=f.align??(f.type==="number"?"right":f.type==="boolean"?"center":"left");u.className=`fg-cell fg-align-${b}${g}`;let w=f.aggFunc&&!D(d.id)?a.groupAggregate(t,d.id):void 0;if(w==null||w==="")u.textContent="";else if(f.aggFunc==="count")u.textContent=new Intl.NumberFormat(l.code).format(w);else{let m=f.type??(typeof w=="number"?"number":w instanceof Date?"date":void 0);u.textContent=K({...f,type:m},l.code)(w)}u.textContent&&u.classList.add("fg-cell-agg")})}paintDetailRow(e,t,n,o){if(e.className="fg-row fg-row-detail",this.placeRow(e,n),e.style.zIndex="",o!=="center"){e.replaceChildren();return}let r=t.detailOf,s=this.details.get(r.id);if(!s){s=x("div","fg-detail");try{let a=this.grid.options.detailRenderer?.({row:r.data,rowIndex:n-1});typeof a=="string"?s.innerHTML=a:a&&s.append(a)}catch{O("detailRenderer threw; showing an empty panel")}this.details.set(r.id,s)}s.style.left=`${this.scroller.scrollLeft}px`,s.style.width=`${this.scroller.clientWidth||this.grid.columns.regionWidth("center")}px`,(e.firstChild!==s||e.childNodes.length!==1)&&e.replaceChildren(s)}paintLoadingRow(e,t,n){e.className="fg-row fg-row-loading",this.placeRow(e,t),e.setAttribute("aria-busy","true"),e.style.zIndex="",e.replaceChildren(...n.map(o=>{let r=x("div","fg-cell",{role:"gridcell"});return r.style.left=`${o.left}px`,r.style.width=`${o.width}px`,r.dataset.col=o.id,D(o.id)||r.append(x("span","fg-skeleton",{"aria-hidden":"true"})),r}))}renderPager(){let{grid:e}=this,t=e.options.pagination;if(!t){this.pagerEl?.remove(),this.pagerEl=null;return}let n=e.store.state.locale,o=e.getPage(),r=e.getPageSize(),s=e.getPageCount(),a=e.rowModel.fullCount(),l=typeof t=="object"&&Array.isArray(t.pageSizes)?t.pageSizes.filter(h=>Number.isInteger(h)&&h>0):[],d=`${o}|${r}|${s}|${a}|${n.code}|${l.join(",")}`;if(this.pagerEl&&d===this.pagerKey)return;this.pagerKey=d,this.pagerEl||(this.pagerEl=x("div","fg-pager",{role:"navigation"}),this.pagerEl.addEventListener("click",h=>{let p=h.target.closest("button[data-action]")?.dataset.action,v=e.getPage();p==="first"?e.setPage(0):p==="prev"?e.setPage(v-1):p==="next"?e.setPage(v+1):p==="last"&&e.setPage(e.getPageCount()-1)}),this.pagerEl.addEventListener("change",h=>{let p=h.target;p.classList.contains("fg-pager-size")&&e.setPageSize(Number(p.value))})),this.pagerEl.setAttribute("aria-label",n.pageSize);let c=new Intl.NumberFormat(n.code),u=a?o*r+1:0,g=Math.min(a,(o+1)*r),f=x("span","fg-pager-range");f.textContent=n.pagerRange.replace("{from}",c.format(u)).replace("{to}",c.format(g)).replace("{total}",c.format(a));let b=[f,x("span","fg-pager-spacer")];if(l.length){let h=x("label","fg-pager-size-label");h.textContent=n.pageSize;let p=x("select","fg-pager-size");for(let v of[...new Set([...l,r])].sort((y,R)=>y-R)){let y=x("option");y.value=String(v),y.textContent=c.format(v),y.selected=v===r,p.append(y)}h.append(p),b.push(h)}let w=(h,p,v,y)=>{let R=x("button","fg-pager-btn",{type:"button","aria-label":v,title:v});return R.dataset.action=h,R.textContent=p,R.disabled=y,R},m=x("span","fg-pager-page",{"aria-live":"polite"});m.textContent=n.pageOf.replace("{page}",c.format(o+1)).replace("{pages}",c.format(s)),b.push(w("first","\xAB",n.firstPage,o===0),w("prev","\u2039",n.previousPage,o===0),m,w("next","\u203A",n.nextPage,o>=s-1),w("last","\xBB",n.lastPage,o>=s-1)),this.pagerEl.replaceChildren(...b)}showFreeBadge(){if(this.root.querySelector(".fg-free-badge"))return;let e=x("a","fg-free-badge",{href:"https://freegrid.app/pricing/",target:"_blank",rel:"noopener"});e.innerHTML='<svg viewBox="0 0 32 32" width="14" height="14" aria-hidden="true"><rect width="32" height="32" rx="7" fill="#0E1726"/><path d="M7 11.5h18M7 16.5h18M7 21.5h18M13 7v18" stroke="#fff" stroke-width="2" stroke-linecap="round"/><rect x="14" y="12.5" width="11" height="3" rx="1" fill="#F2A900"/></svg>';let t=x("span");t.textContent=`FreeGrid \xB7 ${this.grid.store.state.locale.freeBadge}`,e.append(t),this.root.append(e)}useCards(){let e=this.grid.options.cardView,t=e===!0?640:typeof e=="number"?e:-1,n=t>0&&this.main.clientWidth<t;return n!==this.cardMode&&(this.cardMode=n,this.root.classList.toggle("fg-card-mode",n),!n&&this.cards&&(this.cards.scroller.remove(),this.cards=null),this.version++),n}renderCards(e){let{grid:t}=this;if(!this.cards){let w=x("div","fg-cards",{role:"list"}),m=x("div","fg-cards-canvas");w.append(m),this.main.insertBefore(w,this.overlay),w.addEventListener("scroll",()=>{this.schedule(),this.grid.events.emit("scroll",this.getScroll())},{passive:!0}),w.addEventListener("click",this.onCardClick),this.cards={scroller:w,canvas:m}}let{scroller:n,canvas:o}=this.cards,r=t.columns.displayed().filter(w=>!D(w.id)),s=Math.round(this.opts.rowHeight*.75),a=!!t.options.rowSelection,l=20+r.length*s+(a?s:0),d=10;o.style.height=`${e*(l+d)}px`;let c=Math.max(0,Math.floor(n.scrollTop/(l+d))-2),u=Math.min(e-1,Math.ceil((n.scrollTop+(n.clientHeight||800))/(l+d))+2),{selected:g,locale:f}=t.store.state,b=[];for(let w=c;w<=u;w++){let m=t.rowModel.getRow(w);if(!m)continue;let h=x("div",m.kind?"fg-card fg-card-other":g.has(m.id)?"fg-card fg-card-selected":"fg-card",{role:"listitem"});if(h.dataset.row=String(w),h.style.transform=`translateY(${w*(l+d)}px)`,h.style.height=`${l}px`,h.style.setProperty("--fg-card-line",`${s}px`),m.kind==="group"&&m.group){let p=t.columns.getNode(m.group.colId)?.def;h.textContent=`${p?.header??m.group.colId}: ${String(m.group.value??f.blanks)} (${m.group.rows.length})`}else if(!m.kind){if(a){let p=x("label","fg-card-head"),v=x("input","fg-card-check fg-checkbox",{type:"checkbox","aria-label":f.selectRow});v.checked=g.has(m.id),v.disabled=!t.rowSelectable(m.data),p.append(v,document.createTextNode(`#${w+1}`)),h.append(p)}for(let p of r){let v=x("div","fg-card-line"),y=x("span","fg-card-label");y.textContent=p.def.header??p.def.field??p.id;let R=x("span","fg-card-value");R.dataset.col=p.id;let k=B(p.def,m.data),L=K(p.def,f.code)(k);if(p.def.renderer)try{let C=p.def.renderer({value:k,formatted:L,row:m.data,rowIndex:w,column:p.def});typeof C=="string"?R.innerHTML=C:R.replaceChildren(C)}catch{R.textContent=L}else R.textContent=L;v.append(y,R),h.append(v)}}b.push(h)}o.replaceChildren(...b)}dropDetail(e){e===void 0?this.details.clear():this.details.delete(e)}renderedRange(){return this.lastRange}measureText(e,t){let n=getComputedStyle(this.main),o=parseFloat(getComputedStyle(this.root).getPropertyValue("--fg-font-size"))||13;this.measureCtx===void 0&&(this.measureCtx=document.createElement("canvas").getContext("2d"));let r=this.measureCtx;return r?(r.font=`${t?600:400} ${o}px ${n.fontFamily||"sans-serif"}`,r.measureText(e).width):e.length*o*.6}scrollToRow(e){this.scroller.scrollTop=this.rowTop(Math.max(0,Math.min(e,this.grid.rowModel.getRowCount())))}pageRows(){return Math.max(1,Math.floor(this.scroller.clientHeight/this.opts.rowHeight))}destroy(){this.filterRow?.destroy(),this.frame&&cancelAnimationFrame(this.frame),this.scroller.removeEventListener("scroll",this.onScroll),this.root.remove()}},Nt=class{constructor(e){let t=n=>({left:x("div",`${n} ${n}-left`),center:x("div",`${n} ${n}-center`),right:x("div",`${n} ${n}-right`)});this.el=x("div",e,{role:"rowgroup"}),this.panes=t("fg-section-pane"),this.inners=t("fg-section-inner");for(let n of ee)this.panes[n].append(this.inners[n]),this.el.append(this.panes[n])}size(e,t,n){this.el.style.height=`${t}px`;for(let o of ee){let r=e.regionWidth(o);o!=="center"&&(this.panes[o].style.width=`${r}px`,this.panes[o].hidden=r===0),this.inners[o].style.width=`${r}px`,this.inners[o].style.height=`${t}px`}this.panes.center.style.marginRight=`${n}px`}},Kn="http://www.w3.org/2000/svg";function fr(i,e,t,n){let o=Math.max(20,t-16),r=Math.max(10,n-14),s=document.createElementNS(Kn,"svg");s.setAttribute("class","fg-sparkline"),s.setAttribute("width",String(o)),s.setAttribute("height",String(r)),s.setAttribute("viewBox",`0 0 ${o} ${r}`),s.setAttribute("aria-hidden","true");let a=e.color??"var(--fg-accent)",l=e.type==="bar",d=l?Math.min(0,...i):Math.min(...i),c=l?Math.max(0,...i):Math.max(...i);d===c&&(d-=1,c+=1);let u=c-d,g=h=>r-1-(h-d)/u*(r-2),f=(h,p)=>{let v=document.createElementNS(Kn,h);for(let[y,R]of Object.entries(p))v.setAttribute(y,String(R));return s.append(v),v};if(e.type==="bar"){let h=o/i.length;return i.forEach((p,v)=>f("rect",{x:v*h+1,y:Math.min(g(p),g(0)),width:Math.max(1,h-2),height:Math.max(1,Math.abs(g(p)-g(0))),fill:p<0?"#ef4444":a})),s}let b=i.length>1?(o-2)/(i.length-1):0,w=i.map((h,p)=>`${1+p*b},${g(h)}`).join(" ");e.type==="area"&&f("polygon",{points:`1,${r} ${w} ${1+(i.length-1)*b},${r}`,fill:a,"fill-opacity":.2}),f("polyline",{points:w,fill:"none",stroke:a,"stroke-width":1.5,"stroke-linejoin":"round"});let m=i.length-1;return f("circle",{cx:1+m*b,cy:g(i[m]),r:2,fill:a}),s}var pr=4,et=class{constructor(e){this.grid=e;this.onClick=e=>{let n=e.target.closest(".fg-group-chip-remove")?.closest(".fg-group-chip")?.dataset.col;n&&this.grid.setGroupBy(this.grid.getGroupBy().filter(o=>o!==n))};this.onPointerDown=e=>{let t=e.target,n=t.closest(".fg-group-chip");if(e.button!==0||!n||t.closest("button"))return;let o=n.dataset.col,r=e.clientX,s=!1,a=d=>{!s&&Math.abs(d.clientX-r)<pr||(s=!0,n.classList.add("fg-dragging"))},l=d=>{if(window.removeEventListener("pointermove",a),window.removeEventListener("pointerup",l),n.classList.remove("fg-dragging"),!s)return;let u=[...this.el.querySelectorAll(".fg-group-chip")].filter(f=>f!==n).filter(f=>{let b=f.getBoundingClientRect();return d.clientX>b.left+b.width/2}).length,g=this.grid.getGroupBy().filter(f=>f!==o);g.splice(u,0,o),this.grid.setGroupBy(g)};window.addEventListener("pointermove",a),window.addEventListener("pointerup",l)};this.el=x("div","fg-group-panel",{role:"toolbar"}),e.renderer.main.insertBefore(this.el,e.renderer.gridEl),this.el.addEventListener("click",this.onClick),this.el.addEventListener("pointerdown",this.onPointerDown),this.refresh()}contains(e,t){let n=this.el.getBoundingClientRect();return e>=n.left&&e<=n.right&&t>=n.top&&t<=n.bottom}highlight(e){this.el.classList.toggle("fg-group-panel-over",e)}refresh(){let{grid:e}=this,t=e.store.state.locale;this.el.setAttribute("aria-label",t.groupByThis);let n=e.getGroupBy();if(!n.length){let o=x("span","fg-group-hint");o.textContent=t.groupPanelHint,this.el.replaceChildren(o);return}this.el.replaceChildren(...n.map((o,r)=>{let s=e.columns.getNode(o)?.def,a=x("span","fg-group-chip");a.dataset.col=o;let l=x("span","fg-group-chip-label");l.textContent=s?.header??s?.field??o;let d=x("button","fg-group-chip-remove",{type:"button","aria-label":`${t.ungroup}: ${l.textContent}`});if(d.textContent="\xD7",a.append(l,d),r<n.length-1){let c=x("span","fg-group-sep",{"aria-hidden":"true"});return c.textContent="\u203A",[a,c]}return[a]}).flat())}destroy(){this.el.removeEventListener("click",this.onClick),this.el.removeEventListener("pointerdown",this.onPointerDown),this.el.remove()}};var Re=class{constructor(){this.listeners=new Map}on(e,t){let n=this.listeners.get(e);return n||this.listeners.set(e,n=new Set),n.add(t),()=>{n.delete(t)}}emit(e,t){let n=this.listeners.get(e);if(n)for(let o of[...n])try{o(t)}catch(r){console.error("[FreeGrid] event listener threw",r)}}clear(){this.listeners.clear()}};function ne(i){let e=i.getRootNode();return typeof ShadowRoot<"u"&&e instanceof ShadowRoot?e:document.body}function Ae(i,e,t){let n=i.getRootNode();return(typeof n.elementFromPoint=="function"?n.elementFromPoint(e,t):null)??document.elementFromPoint(e,t)}function jn(i){return i.getRootNode().activeElement??document.activeElement}function ge(i,...e){let t=typeof i.composedPath=="function"?i.composedPath():[];return t.length?e.some(n=>!!n&&t.includes(n)):e.some(n=>!!n&&n.contains(i.target))}var Ot=new Set(["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Tab","Home","End","PageUp","PageDown"]);function Ht(i,e,t,n){let o=s=>Math.max(0,Math.min(n.rows-1,s)),r=s=>Math.max(0,Math.min(n.cols-1,s));switch(i){case"ArrowUp":return{rowIndex:o(t.rowIndex-1),colIndex:t.colIndex};case"ArrowDown":return{rowIndex:o(t.rowIndex+1),colIndex:t.colIndex};case"ArrowLeft":return{rowIndex:t.rowIndex,colIndex:r(t.colIndex-1)};case"ArrowRight":return{rowIndex:t.rowIndex,colIndex:r(t.colIndex+1)};case"PageUp":return{rowIndex:o(t.rowIndex-n.pageRows),colIndex:t.colIndex};case"PageDown":return{rowIndex:o(t.rowIndex+n.pageRows),colIndex:t.colIndex};case"Home":return{rowIndex:e.ctrl?0:t.rowIndex,colIndex:0};case"End":return{rowIndex:e.ctrl?n.rows-1:t.rowIndex,colIndex:n.cols-1};case"Tab":{let s=t.rowIndex*n.cols+t.colIndex+(e.shift?-1:1);return s<0||s>=n.rows*n.cols?null:{rowIndex:Math.floor(s/n.cols),colIndex:s%n.cols}}default:return null}}var tt=new Map,_n=i=>i?tt.get(i):void 0;var gr={Enter:"edit",F2:"edit",Delete:"clear",Backspace:"clear","Ctrl+Z":"undo","Ctrl+Y":"redo","Ctrl+Shift+Z":"redo","Ctrl+F":"find"};function mr(i){let e=[];return(i.ctrlKey||i.metaKey)&&e.push("Ctrl"),i.altKey&&e.push("Alt"),i.shiftKey&&i.key.length>1&&e.push("Shift"),i.shiftKey&&i.key.length===1&&(i.ctrlKey||i.metaKey)&&e.push("Shift"),e.push(i.key.length===1?i.key.toUpperCase():i.key),e.join("+")}var wr=3;function vr(i,e){return i.renderer.rtl?e.key==="ArrowLeft"?"ArrowRight":e.key==="ArrowRight"?"ArrowLeft":e.key:e.key}function Xn(i){let{renderer:e}=i,t=e.bodyEl,n=e.root,o=C=>vr(i,C),r="mouse",s=0,a=!1,l=C=>{let E=e.cellAt(C.target);if(!E)return null;let M=i.rowModel.getRow(E.rowIndex),S=i.columns.getColumn(E.colId);if(!M||!S)return null;let I=D(S.id)?void 0:B(S.def,M.data);return{row:M.data,rowIndex:E.rowIndex,colId:E.colId,value:I,event:C}},d=C=>{let E=C.target.closest?.(".fg-group-toggle, .fg-tree-toggle, .fg-detail-toggle"),M=E&&e.cellAt(C.target);if(!M)return!1;e.gridEl.focus({preventScroll:!0}),i.setFocus(M.rowIndex,M.colId),i.setRange(null);let S=i.rowModel.getRow(M.rowIndex);return E.classList.contains("fg-detail-toggle")?i.setDetailExpanded(S.data,!i.isDetailExpanded(S.data)):i.toggleRow(M.rowIndex),!0},c=C=>{if(d(C))return;let E=i.store.state.focus,M=e.cellAt(C.target);if(M&&i.rowModel.getRow(M.rowIndex)?.kind){M.colId===te&&i.rowModel.getRow(M.rowIndex).kind==="group"&&i.toggleGroupSelection(i.rowModel.getRow(M.rowIndex)),e.gridEl.focus({preventScroll:!0}),i.setFocus(M.rowIndex,M.colId),i.setRange(null);return}let S=l(C);if(!S)return;if(e.gridEl.focus({preventScroll:!0}),S.colId===fe){let F=i.columns.displayed().filter(P=>!D(P.id));F.length&&(i.setFocus(S.rowIndex,F[0].id),i.setRange({start:{rowIndex:S.rowIndex,colId:F[0].id},end:{rowIndex:S.rowIndex,colId:F[F.length-1].id}}));return}let I=a;a=!1;let $=i.store.state.focus,A=S.colId===te;if(!I)if(C.shiftKey&&$&&!A&&!D($.colId)&&i.options.rangeSelection!==!1)i.setRange({start:$,end:{rowIndex:S.rowIndex,colId:S.colId}},!0);else if((C.ctrlKey||C.metaKey)&&!A&&!D(S.colId)&&i.options.rangeSelection!==!1){let F={rowIndex:S.rowIndex,colId:S.colId};i.addRange({start:F,end:F}),i.setFocus(S.rowIndex,S.colId)}else i.setFocus(S.rowIndex,S.colId),i.setRange(null);i.options.rowSelection&&!I&&i.selectFromClick(S.rowIndex,A||C.ctrlKey||C.metaKey,C.shiftKey),i.events.emit("cellClick",S),r==="touch"&&!I&&E&&E.rowIndex===S.rowIndex&&E.colId===S.colId&&i.editor.canEdit(S.rowIndex,S.colId)&&(i.columns.getColumn(S.colId).def.type==="boolean"?i.applyEdit(S.rowIndex,S.colId,S.value!==!0):i.editor.start(S.rowIndex,S.colId))},u=C=>{if(C.target.closest?.("button"))return;let E=e.cellAt(C.target),M=E&&i.rowModel.getRow(E.rowIndex);if(M?.kind==="group"){i.toggleRow(E.rowIndex);return}if(M?.kind)return;let S=l(C);if(!S||(i.events.emit("cellDoubleClick",S),!i.editor.canEdit(S.rowIndex,S.colId)))return;i.columns.getColumn(S.colId).def.type==="boolean"?i.applyEdit(S.rowIndex,S.colId,S.value!==!0):i.editor.start(S.rowIndex,S.colId)},g={...gr};for(let[C,E]of Object.entries(i.options.keymap??{}))g[C]=E===!1?"none":E;let f=C=>{let E=i.store.state.focus,M=g[mr(C)];if(M==="none")return!1;switch(M){case"edit":return!E||!i.editor.canEdit(E.rowIndex,E.colId)||i.columns.getColumn(E.colId).def.type==="boolean"?!1:(i.editor.start(E.rowIndex,E.colId),!0);case"clear":return i.clearCells(),!0;case"undo":return i.undo(),!0;case"redo":return i.redo(),!0;case"copy":return i.copyToClipboard(!1),!0;case"cut":return i.cutToClipboard(),!0;case"selectAll":return i.selectAllCells(),!0;case"find":return i.options.findBar===!1?!1:(i.finder.openBar(),!0);case"paste":return navigator.clipboard?.readText?.().then(I=>i.pasteText(I),()=>{}),!0}if(!E||!i.editor.canEdit(E.rowIndex,E.colId))return!1;let S=i.columns.getColumn(E.colId).def;if(C.key===" "&&S.type==="boolean"&&!C.ctrlKey&&!C.metaKey){let I=i.rowModel.getRow(E.rowIndex).data;return i.applyEdit(E.rowIndex,E.colId,I[S.field]!==!0),!0}return C.key.length===1&&C.key!==" "&&!C.ctrlKey&&!C.metaKey&&!C.altKey&&S.type!=="boolean"?(i.editor.start(E.rowIndex,E.colId,C.key),!0):!1},b=C=>{let E=i.store.state.focus;if(!E||C.ctrlKey||C.metaKey||C.altKey||C.shiftKey)return!1;let M=i.rowModel.getRow(E.rowIndex);if(!i.isExpandable(M))return!1;let S=M.kind==="group";if(!S&&E.colId!==i.columns.displayed().find(A=>!D(A.id))?.id)return!1;let I=!!(M.group?.expanded??M.expanded),$=i.expandKey(M);if(S&&(C.key==="Enter"||C.key===" "))i.setGroupExpanded($,!I);else if(o(C)==="ArrowRight"&&!I)i.setGroupExpanded($,!0);else if(o(C)==="ArrowLeft"&&I)i.setGroupExpanded($,!1);else return!1;return!0},w=C=>{let E=e.cellAt(C.target);if(!E||E.colId!==ve)return!1;C.preventDefault();let M=i.rowModel.getRow(E.rowIndex);if(!M||M.kind||!i.canMoveRows())return!0;let S=M.data,I=x("div","fg-row-drop-marker"),$=null;n.classList.add("fg-row-dragging");let A=P=>{let T=Ae(n,P.clientX,P.clientY),H=T?.closest(".fg-root"),N=H===n?i:_n(H),z=i.dragOptions.group;if($=null,I.remove(),!N||!H||N!==i&&(!z||N.dragOptions.group!==z||!N.options.rowDrag))return;let W=T.closest(".fg-row[data-row]"),G=W?.getBoundingClientRect(),V=null,U="after",Y;if(W&&G){let re=N.rowModel.getRow(Number(W.dataset.row));if(!re||re.kind==="group")return;V=re.detailOf?.data??re.data;let Te=(P.clientY-G.top)/G.height;re.kind==="detail"?U="after":N.options.treeData?U=Te<.25?"before":Te>.75?"after":"inside":U=Te<.5?"before":"after",Y=U==="before"?G.top:G.bottom}else{if(!T.closest(".fg-body"))return;let re=H.querySelectorAll(".fg-body-pane-center .fg-row[data-row]");Y=re.length?Math.max(...[...re].map(Te=>Te.getBoundingClientRect().bottom)):H.querySelector(".fg-body").getBoundingClientRect().top}if(!N.canDropRow(S,V,U,i))return;$={into:N,target:V,position:U};let J=H.getBoundingClientRect().top;I.classList.toggle("fg-row-drop-inside",U==="inside"),I.style.top=`${U==="inside"?G.top-J:Y-J-1}px`,I.style.height=U==="inside"?`${G.height}px`:"",H.append(I)},F=()=>{window.removeEventListener("pointermove",A),window.removeEventListener("pointerup",F),window.removeEventListener("pointercancel",F),n.classList.remove("fg-row-dragging"),I.remove(),$&&$.into.dropRow(S,$.target,$.position,i)};return window.addEventListener("pointermove",A),window.addEventListener("pointerup",F),window.addEventListener("pointercancel",F),!0},m=C=>{let E=e.cellAt(C.target);if(!E)return;let M=C.clientX,S=C.clientY,I=()=>{clearTimeout(s),window.removeEventListener("pointermove",$),window.removeEventListener("pointerup",I),window.removeEventListener("pointercancel",I)},$=A=>{Math.hypot(A.clientX-M,A.clientY-S)>8&&I()};clearTimeout(s),s=window.setTimeout(()=>{I(),i.options.contextMenu!==!1&&(a=!0,D(E.colId)||(i.setFocus(E.rowIndex,E.colId),i.rangeContains(E.rowIndex,E.colId)||i.setRange({start:E,end:E})),i.contextMenu.open(M,S,E.rowIndex,E.colId))},550),window.addEventListener("pointermove",$),window.addEventListener("pointerup",I),window.addEventListener("pointercancel",I)},h=C=>{if(r=C.pointerType||"mouse",r==="touch"){m(C);return}if(C.button===0&&w(C)||i.options.rangeSelection===!1||C.button!==0||C.shiftKey||C.target.closest("input, a, button"))return;let E=e.cellAt(C.target);if(!E||D(E.colId))return;let M=C.clientX,S=C.clientY,I=C.ctrlKey||C.metaKey,$=!1,A=P=>{if(!$&&Math.hypot(P.clientX-M,P.clientY-S)<wr)return;let T=e.cellAt(Ae(n,P.clientX,P.clientY));!T||D(T.colId)||($||($=!0,n.classList.add("fg-range-dragging"),I&&i.addRange({start:E,end:E}),i.setFocus(E.rowIndex,E.colId)),i.setRange({start:E,end:T},I))},F=()=>{window.removeEventListener("pointermove",A),window.removeEventListener("pointerup",F),n.classList.remove("fg-range-dragging"),$&&(a=!0)};window.addEventListener("pointermove",A),window.addEventListener("pointerup",F)},p=C=>{if(C.target!==n&&C.target!==e.gridEl)return;let E=i.columns.displayed(),M=i.rowModel.getRowCount();if(!E.length||!M)return;if(b(C)){C.preventDefault();return}if(f(C)){C.preventDefault();return}let S=i.store.state.focus,I=C.ctrlKey||C.metaKey;if(C.key==="Escape"&&i.store.state.range){C.preventDefault(),i.setRange(null);return}if(I&&C.key.toLowerCase()==="a"&&i.options.rangeSelection!==!1){C.preventDefault(),i.selectAllCells();return}if(C.key==="ContextMenu"||C.key==="F10"&&C.shiftKey){C.preventDefault(),i.contextMenu.openAtFocus();return}if(C.key===" "&&S&&i.options.rowSelection){C.preventDefault(),i.selectFromClick(Math.min(S.rowIndex,M-1),!0,C.shiftKey);return}let $={rows:M,cols:E.length,pageRows:e.pageRows()},A=E.findIndex(H=>!D(H.id));if(i.options.rangeSelection!==!1&&C.shiftKey&&C.key!=="Tab"&&Ot.has(C.key)){let H=S??{rowIndex:0,colId:E[A].id},N=i.store.state.range,z=N?.end??H,W={rowIndex:Math.min(z.rowIndex,M-1),colIndex:Math.max(0,E.findIndex(U=>U.id===z.colId))},G=Ht(o(C),{ctrl:I,shift:!1},W,$);if(!G)return;C.preventDefault();let V=E[Math.max(A,G.colIndex)].id;S||i.setFocus(H.rowIndex,H.colId),i.setRange({start:N?.start??H,end:{rowIndex:G.rowIndex,colId:V}}),e.ensureVisible(G.rowIndex,V);return}let P;if(!S)P=Ot.has(C.key)&&C.key!=="Tab"?{rowIndex:0,colIndex:0}:null;else{let H=Math.max(0,E.findIndex(N=>N.id===S.colId));P=Ht(o(C),{ctrl:I,shift:C.shiftKey},{rowIndex:Math.min(S.rowIndex,M-1),colIndex:H},$)}if(!P)return;C.preventDefault();let T=E[P.colIndex].id;i.setFocus(P.rowIndex,T),i.setRange(null),e.ensureVisible(P.rowIndex,T)},v=C=>C.target?.closest?.(".fg-editor, input, textarea, select, [contenteditable]"),y=C=>C.target?.closest?.(".fg-root")!==n,R=C=>{if(v(C)||y(C))return;let E=i.selectionTSV(!1);!E||!C.clipboardData||(C.clipboardData.setData("text/plain",E),C.preventDefault())},k=C=>{if(v(C)||y(C))return;let E=i.selectionTSV(!1);!E||!C.clipboardData||(C.clipboardData.setData("text/plain",E),C.preventDefault(),i.clearCells(!0))},L=C=>{if(v(C)||y(C))return;let E=C.clipboardData?.getData("text/plain");E&&(C.preventDefault(),i.pasteText(E))};return t.addEventListener("click",c),t.addEventListener("dblclick",u),t.addEventListener("pointerdown",h),n.addEventListener("keydown",p),n.addEventListener("copy",R),n.addEventListener("paste",L),n.addEventListener("cut",k),()=>{t.removeEventListener("click",c),t.removeEventListener("dblclick",u),t.removeEventListener("pointerdown",h),n.removeEventListener("keydown",p),n.removeEventListener("copy",R),n.removeEventListener("paste",L),n.removeEventListener("cut",k)}}var nt=class{constructor(e){this.grid=e;this.open=new Set;this.el=x("div","fg-filters-panel")}refresh(){let{grid:e}=this,t=e.store.state.locale,n=e.store.state.filters,o=x("div","fg-filters-head"),r=x("span","fg-filters-title");r.textContent=t.filters;let s=x("button","fg-btn fg-filters-clear",{type:"button"});s.textContent=t.clearFilters,s.disabled=!Object.keys(n).length,s.addEventListener("click",()=>{for(let l of Object.keys(e.store.state.filters))e.setFilter(l,null)}),o.append(r,s);let a=x("div","fg-filters-list");for(let l of e.columns.displayed()){if(D(l.id)||!oe(l.def))continue;let d=x("details",n[l.id]?"fg-filters-item fg-filter-on":"fg-filters-item");d.dataset.col=l.id,d.open=this.open.has(l.id);let c=x("summary");c.textContent=l.def.header??l.def.field??l.id,d.append(c);let u=()=>{if(d.querySelector(".fg-filter"))return;let g=e.menu.filterSection(l.id,()=>{});g&&d.append(g)};d.open&&u(),d.addEventListener("toggle",()=>{d.open?(this.open.add(l.id),u()):this.open.delete(l.id)}),a.append(d)}this.el.replaceChildren(o,a)}};var yr=["sum","avg","min","max","count"],ot=class{constructor(e){this.grid=e;this.draft={rows:[],columns:[],values:[]};this.el=x("div","fg-pivot-panel")}apply(){this.grid.getPivot()?this.grid.setPivot(this.draft):this.refresh()}refresh(){let{grid:e}=this,t=e.store.state.locale,n=e.getPivot();n&&(this.draft={rows:[...n.rows],columns:[...n.columns??[]],values:n.values.map(d=>({colId:d.colId,aggFunc:typeof d.aggFunc=="string"?d.aggFunc:"sum"}))});let o=e.sourceLeaves(),r=d=>{let c=o.find(u=>u.id===d)?.def;return c?.header??c?.field??d},s=x("label","fg-pivot-mode"),a=x("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,c)=>{let u=x("div","fg-pivot-zone");u.dataset.zone=d;let g=x("div","fg-pivot-zone-title");g.textContent=c;let f=x("div","fg-pivot-chips"),b=d==="values"?this.draft.values.map(h=>h.colId):this.draft[d];b.forEach((h,p)=>{let v=x("span","fg-group-chip");v.dataset.col=h;let y=x("span","fg-group-chip-label");if(y.textContent=r(h),v.append(y),d==="values"){let k=x("select","fg-pivot-agg",{"aria-label":`${r(h)} ${t.pivotValues}`});for(let L of yr){let C=x("option");C.value=L,C.textContent=t[L],k.append(C)}k.value=this.draft.values[p].aggFunc,k.addEventListener("change",()=>{this.draft.values[p].aggFunc=k.value,this.apply()}),v.append(k)}let R=x("button","fg-group-chip-remove",{type:"button","aria-label":`${t.ungroup}: ${r(h)}`});R.textContent="\xD7",R.addEventListener("click",()=>{d==="values"?this.draft.values.splice(p,1):this.draft[d].splice(p,1),this.apply()}),v.append(R),f.append(v)});let w=x("select","fg-pivot-add",{"aria-label":`${c}: ${t.addColumn}`}),m=x("option");m.value="",m.textContent=t.addColumn,w.append(m);for(let h of o){if(b.includes(h.id)||d==="values"&&h.def.type!=="number")continue;let p=x("option");p.value=h.id,p.textContent=r(h.id),w.append(p)}return w.addEventListener("change",()=>{w.value&&(d==="values"?this.draft.values.push({colId:w.value,aggFunc:"sum"}):this.draft[d].push(w.value),this.apply())}),u.append(g,f,w),u};this.el.replaceChildren(s,l("rows",t.pivotRows),l("columns",t.pivotColumns),l("values",t.pivotValues))}};var br=4,rt=i=>!D(i.id)&&(i.children?i.children.some(rt):i.def.chooser!==!1),Bt=i=>i.def.header??i.def.field??i.id,it=class{constructor(e){this.grid=e;this.collapsed=new Set;this.el=x("div","fg-chooser"),this.search=x("input","fg-input fg-chooser-search",{type:"search"});let t=x("label","fg-chooser-all");this.allBox=x("input","fg-checkbox",{type:"checkbox"}),this.allText=x("span"),t.append(this.allBox,this.allText),this.list=x("div","fg-chooser-list",{role:"tree"}),this.el.append(this.search,t,this.list),this.search.addEventListener("input",()=>this.refresh()),this.allBox.addEventListener("change",()=>this.setVisible(this.matchingLeaves(),this.allBox.checked)),this.list.addEventListener("change",n=>{let o=n.target,r=this.nodeOf(o);r&&this.setVisible(this.leavesOf(r),o.checked)}),this.list.addEventListener("click",n=>{let o=n.target.closest(".fg-chooser-caret"),r=o&&this.nodeOf(o);r&&(this.collapsed.has(r.id)?this.collapsed.delete(r.id):this.collapsed.add(r.id),this.refresh())}),this.list.addEventListener("pointerdown",n=>this.onPointerDown(n)),this.refresh()}refresh(){let e=this.grid.store.state.locale;this.search.placeholder=e.search,this.search.setAttribute("aria-label",e.search),this.allText.textContent=e.selectAll;let t=this.query(),n=[],o=(a,l)=>{for(let d of a)!rt(d)||t&&!this.subtreeMatches(d,t)||(n.push(this.item(d,l)),d.children&&(t||!this.collapsed.has(d.id))&&o(d.children,l+1))};o(this.grid.columns.roots(),0),this.list.replaceChildren(...n);let r=this.matchingLeaves(),s=r.filter(a=>!a.hide).length;this.allBox.checked=r.length>0&&s===r.length,this.allBox.indeterminate=s>0&&s<r.length}query(){return this.search.value.trim().toLowerCase()}subtreeMatches(e,t){for(let n=e;n;n=n.parent)if(Bt(n).toLowerCase().includes(t))return!0;return!!e.children&&e.children.some(n=>rt(n)&&this.subtreeMatches(n,t))}leavesOf(e){return rt(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){let t=e.closest(".fg-chooser-item")?.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=x("div",e.children?"fg-chooser-item fg-chooser-group":"fg-chooser-item",{role:"treeitem"});n.dataset.col=e.id,n.style.paddingLeft=`${6+t*16}px`;let o=x("span","fg-chooser-handle",{"aria-hidden":"true"});if(o.textContent="\u22EE\u22EE",n.append(o),e.children){let d=!this.collapsed.has(e.id),c=x("button","fg-chooser-caret",{type:"button",tabindex:"-1","aria-hidden":"true"});c.textContent=d?"\u25BE":"\u25B8",n.setAttribute("aria-expanded",String(d)),n.append(c)}let r=this.leavesOf(e),s=r.filter(d=>!d.hide).length,a=x("input","fg-checkbox",{type:"checkbox","aria-label":Bt(e)});a.checked=r.length>0&&s===r.length,a.indeterminate=s>0&&s<r.length,a.disabled=r.every(d=>d.def.lockVisible);let l=x("span","fg-chooser-label");if(l.textContent=Bt(e),n.append(a,l),!e.children&&e.pinned){let d=x("span","fg-chooser-pin");d.textContent=e.pinned==="left"?"\u21E4":"\u21E5",n.append(d)}return n}onPointerDown(e){let n=e.target.closest(".fg-chooser-handle")?.closest(".fg-chooser-item"),o=n&&this.nodeOf(n);if(!n||!o||e.button!==0)return;e.preventDefault();let r=new Set(this.grid.columns.siblings(o.id).map(f=>f.id).filter(f=>f!==o.id)),s=[...this.list.querySelectorAll(".fg-chooser-item")].filter(f=>r.has(f.dataset.col)),a=e.clientY,l=!1,d=-1,c=x("div","fg-chooser-marker"),u=f=>{if(!l){if(Math.abs(f.clientY-a)<br||!s.length)return;l=!0,n.classList.add("fg-dragging"),this.list.append(c)}d=s.filter(m=>{let h=m.getBoundingClientRect();return f.clientY>h.top+h.height/2}).length;let b=this.list.getBoundingClientRect().top-this.list.scrollTop,w=d<s.length?s[d].getBoundingClientRect().top:s[s.length-1].getBoundingClientRect().bottom;c.style.top=`${w-b-1}px`},g=()=>{if(window.removeEventListener("pointermove",u),window.removeEventListener("pointerup",g),c.remove(),n.classList.remove("fg-dragging"),!l||d<0)return;let f=this.grid.columns.siblings(o.id).map(m=>m.id).filter(m=>m!==o.id),b=d<s.length?f.indexOf(s[d].dataset.col):f.indexOf(s[s.length-1].dataset.col)+1;b=Math.max(f.filter(D).length,b);let w=this.grid.columns.siblings(o.id).findIndex(m=>m.id===o.id);b!==w&&(this.grid.columns.move(o.id,b),this.grid.layoutChanged(),this.grid.events.emit("columnMove",{colId:o.id,toIndex:b}))};window.addEventListener("pointermove",u),window.addEventListener("pointerup",g)}},st=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=x("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=x("div","fg-chooser-head"),o=x("span","fg-menu-title");o.textContent=e.chooseColumns;let r=x("button","fg-chooser-close",{type:"button","aria-label":e.close});r.textContent="\xD7",r.addEventListener("click",()=>this.close()),n.append(o,r),this.panel=new it(this.grid),t.append(n,this.panel.el),ne(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()};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(){this.panel?.refresh()}close(){for(let e of this.off)e();this.off=[],this.popup?.remove(),this.popup=null,this.panel=null}},at=class{constructor(e,t,n=["columns","filters"]){this.grid=e;this.tabs=new Map;this.el=x("div","fg-sidebar"),this.panelHost=x("div","fg-sidebar-panel"),this.columns=new it(e),this.filters=new nt(e),this.pivot=new ot(e);let o=n.filter(s=>s==="columns"||s==="filters"||s==="pivot");o.length||o.push("columns"),this.current=o[0];let r=x("div","fg-sidebar-tabs",{role:"tablist"});for(let s of o){let a=x("button","fg-sidebar-tab",{type:"button",role:"tab"});a.dataset.panel=s,a.addEventListener("click",()=>this.toggle(!(this.isOpen&&this.current===s),s)),this.tabs.set(s,a),r.append(a)}this.el.append(this.panelHost,r),e.renderer.root.append(this.el),this.panelHost.hidden=!t,this.show(),this.refresh()}get isOpen(){return!this.panelHost.hidden}show(){this.panelHost.replaceChildren(this.current==="filters"?this.filters.el:this.current==="pivot"?this.pivot.el:this.columns.el)}toggle(e=!this.isOpen,t){t&&this.tabs.has(t)&&t!==this.current&&(this.current=t,this.show()),this.panelHost.hidden=!e,this.syncTabs(),this.grid.renderer.invalidate({header:!0,rows:!0})}syncTabs(){for(let[e,t]of this.tabs){let n=this.isOpen&&e===this.current;t.setAttribute("aria-expanded",String(n)),t.setAttribute("aria-selected",String(n))}}refresh(){let e=this.grid.store.state.locale;for(let[t,n]of this.tabs)n.textContent=t==="filters"?e.filters:t==="pivot"?e.pivot:e.columns;this.syncTabs(),this.columns.refresh(),this.filters.refresh(),this.pivot.refresh()}};var xr=()=>typeof navigator<"u"&&/Mac|iPhone|iPad/.test(navigator.platform||navigator.userAgent||""),ke=i=>xr()?`\u2318${i}`:`Ctrl+${i}`,lt=class{constructor(e){this.grid=e;this.popup=null;this.off=[];let t=e.renderer.root,n=o=>this.onContextMenu(o);t.addEventListener("contextmenu",n),this.detach=()=>t.removeEventListener("contextmenu",n)}destroy(){this.close(),this.detach()}onContextMenu(e){let{grid:t}=this;if(t.options.contextMenu===!1)return;let n=e.target,o=n.closest(".fg-header-cell");if(o){let s=o.dataset.col;if(!s||D(s)||o.classList.contains("fg-header-group"))return;e.preventDefault(),this.close(),t.menu.open(s,o);return}let r=t.renderer.cellAt(n);r&&(e.preventDefault(),t.renderer.gridEl.focus({preventScroll:!0}),!D(r.colId)&&!t.rangeContains(r.rowIndex,r.colId)&&(t.setFocus(r.rowIndex,r.colId),t.setRange({start:r,end:r})),this.open(e.clientX,e.clientY,r.rowIndex,r.colId))}openAtFocus(){let e=this.grid.store.state.focus;if(!e||this.grid.options.contextMenu===!1)return;let t=this.grid.renderer.root.getBoundingClientRect(),o=this.grid.renderer.root.querySelector(`.fg-row[data-row="${e.rowIndex}"] .fg-cell[data-col="${CSS.escape(e.colId)}"]`)?.getBoundingClientRect()??t;this.open(o.left+8,o.bottom,e.rowIndex,e.colId)}defaultItems(e){let{grid:t}=this,n=t.store.state.locale,o=t.columns.getNode(e),r=o?.def,s=!!r&&!D(e),a=[{label:n.copy,shortcut:ke("C"),action:()=>t.copyToClipboard(!1)},{label:n.copyWithHeaders,action:()=>t.copyToClipboard(!0)},{label:n.cut,shortcut:ke("X"),action:()=>t.cutToClipboard()},...t.store.state.selected.size?[{label:n.copyRows,action:()=>t.copyToClipboard(!1,!0)}]:[],{label:n.paste,shortcut:ke("V"),action:()=>this.pasteFromClipboard()}];(t.history.canUndo()||t.history.canRedo())&&a.push("separator",{label:n.undo,shortcut:ke("Z"),action:()=>t.undo(),disabled:!t.history.canUndo()},{label:n.redo,shortcut:ke("Y"),action:()=>t.redo(),disabled:!t.history.canRedo()}),t.options.rowSelection&&t.store.state.selected.size&&a.push({label:n.deleteRows,action:()=>t.api.removeSelectedRows()}),s&&(a.push("separator",{label:n.autosizeThis,action:()=>t.autoSize([e])}),r.lockVisible||a.push({label:n.hideColumn,action:()=>t.setColumnsVisible([e],!1)}),a.push({label:n.pinLeft,action:()=>t.setPinned(e,"left"),disabled:o.pinned==="left"},{label:n.pinRight,action:()=>t.setPinned(e,"right"),disabled:o.pinned==="right"},{label:n.unpin,action:()=>t.setPinned(e,null),disabled:!o.pinned})),a.push("separator"),t.options.rowSelection==="multiple"&&a.push({label:n.selectAllRows,action:()=>t.api.selectAll()}),a.push({label:n.chooseColumns,action:()=>t.chooser.open()});let l=t.rangeBounds();return l&&(l.r2>l.r1||l.c2>l.c1)&&a.push("separator",{label:n.chartBar,action:()=>t.api.createChart({type:"bar"})},{label:n.chartLine,action:()=>t.api.createChart({type:"line"})},{label:n.chartPie,action:()=>t.api.createChart({type:"pie"})}),a.push("separator",{label:n.exportCsv,action:()=>t.api.exportCsv()},{label:n.exportExcel,action:()=>t.api.exportXlsx()}),t.options.advancedFilter!==!1&&!t.options.pivot&&a.push("separator",{label:`${n.advancedFilter}\u2026`,action:()=>t.filterBuilder.open()}),a.push("separator",{label:n.print,action:()=>t.api.print()}),a}pasteFromClipboard(){let e=typeof navigator<"u"?navigator.clipboard:void 0,t=()=>this.grid.toast(this.grid.store.state.locale.pasteHint.replace("Ctrl+V",ke("V")));if(!e?.readText)return t();e.readText().then(n=>this.grid.pasteText(n),t)}open(e,t,n,o){this.close(),this.grid.menu.close();let{grid:r}=this,s=r.rowModel.getRow(n),a=r.columns.getColumn(o),l=this.defaultItems(o),d={row:s?.data??null,rowIndex:n,colId:o,value:s&&a&&!D(o)?B(a.def,s.data):void 0,defaultItems:l},c=r.options.contextMenu,u=l;if(typeof c=="function")try{u=c(d)}catch{u=l}let g=r.store.state.locale,f=x("div",`fg-menu fg-context-menu fg-theme-${r.store.state.theme}`,{role:"menu","aria-label":g.columnMenu});r.applyFontTo(f);let b=!0;for(let y of u){if(y==="separator"){b||f.append(x("div","fg-cm-sep",{role:"separator"})),b=!0;continue}let R=x("button","fg-menu-item fg-cm-item",{type:"button",role:"menuitem"}),k=x("span","fg-cm-label");if(k.textContent=y.label,R.append(k),y.shortcut){let L=x("span","fg-cm-shortcut");L.textContent=y.shortcut,R.append(L)}R.disabled=!!y.disabled,R.addEventListener("click",()=>{this.close(),y.action()}),f.append(R),b=!1}f.lastElementChild?.classList.contains("fg-cm-sep")&&f.lastElementChild.remove(),ne(this.grid.renderer.root).append(f);let w=f.offsetWidth||220,m=f.offsetHeight||300;f.style.left=`${Math.max(4,Math.min(e,window.innerWidth-w-4))}px`,f.style.top=`${Math.max(4,Math.min(t,window.innerHeight-m-4))}px`,this.popup=f;let h=y=>{ge(y,f)||this.close()},p=y=>{if(y.key==="Escape"){this.close(),r.renderer.gridEl.focus();return}if(y.key!=="ArrowDown"&&y.key!=="ArrowUp")return;let R=[...f.querySelectorAll("button:not(:disabled)")],k=R.indexOf(jn(f));R[(k+(y.key==="ArrowDown"?1:R.length-1)+R.length)%R.length]?.focus(),y.preventDefault()},v=()=>this.close();document.addEventListener("pointerdown",h,!0),document.addEventListener("keydown",p,!0),r.renderer.scroller.addEventListener("scroll",v,{passive:!0}),this.off.push(()=>document.removeEventListener("pointerdown",h,!0),()=>document.removeEventListener("keydown",p,!0),()=>r.renderer.scroller.removeEventListener("scroll",v)),f.querySelector("button:not(:disabled)")?.focus()}close(){for(let e of this.off)e();this.off=[],this.popup?.remove(),this.popup=null}};var dt=class{constructor(e){this.grid=e;this.onDown=e=>{if(e.button!==0)return;e.preventDefault(),e.stopPropagation();let t=this.source();if(!t)return;let{grid:n}=this,o=null,r=n.renderer.root,s=l=>{let d=n.renderer.cellAt(Ae(n.renderer.root,l.clientX,l.clientY)),c=d&&n.columns.getColumn(d.colId);if(!d||!c||D(c.id))return;let u=d.rowIndex>t.r2?d.rowIndex-t.r2:d.rowIndex<t.r1?d.rowIndex-t.r1:0,g=c.index>t.c2?c.index-t.c2:c.index<t.c1?c.index-t.c1:0;!u&&!g?o=null:Math.abs(u)>=Math.abs(g)?o={r1:Math.min(t.r1,d.rowIndex),r2:Math.max(t.r2,d.rowIndex),c1:t.c1,c2:t.c2}:o={r1:t.r1,r2:t.r2,c1:Math.min(t.c1,c.index),c2:Math.max(t.c2,c.index)},this.showPreview(o)},a=()=>{if(window.removeEventListener("pointermove",s),window.removeEventListener("pointerup",a),this.preview.remove(),r.classList.remove("fg-range-dragging"),!o)return;let l=n.columns.displayed();n.fillRange({start:{rowIndex:o.r1,colId:l[o.c1].id},end:{rowIndex:o.r2,colId:l[o.c2].id}})};r.classList.add("fg-range-dragging"),window.addEventListener("pointermove",s),window.addEventListener("pointerup",a)};this.handle=x("div","fg-fill-handle",{"aria-hidden":"true"}),this.preview=x("div","fg-fill-preview",{"aria-hidden":"true"}),this.handle.addEventListener("pointerdown",this.onDown)}enabled(){let e=this.grid.options;return e.fillHandle!==!1&&e.rangeSelection!==!1}source(){let e=this.grid.rangeBounds();if(e)return e;let t=this.grid.store.state.focus,n=t&&this.grid.columns.getColumn(t.colId);return!t||!n||D(n.id)?null:{r1:t.rowIndex,r2:t.rowIndex,c1:n.index,c2:n.index}}cellEl(e,t){let n=this.grid.columns.displayed()[t];return n?this.grid.renderer.root.querySelector(`.fg-body .fg-row[data-row="${e}"] .fg-cell[data-col="${CSS.escape(n.id)}"]`):null}update(){let e=this.enabled()?this.source():null,t=this.grid.columns.displayed(),o=!!e&&t.slice(e.c1,e.c2+1).some(a=>a.def.editable&&a.def.field)&&e?this.cellEl(e.r2,e.c2):null;if(!o){this.handle.remove();return}let r=this.grid.renderer.root.getBoundingClientRect(),s=o.getBoundingClientRect();this.handle.style.left=`${(this.grid.renderer.rtl?s.left:s.right)-r.left-4}px`,this.handle.style.top=`${s.bottom-r.top-4}px`,this.handle.isConnected||this.grid.renderer.root.append(this.handle)}showPreview(e){let t=e&&this.cellEl(e.r1,e.c1),n=e&&this.cellEl(e.r2,e.c2);if(!t||!n){this.preview.remove();return}let o=this.grid.renderer.root.getBoundingClientRect(),r=t.getBoundingClientRect(),s=n.getBoundingClientRect();Object.assign(this.preview.style,{left:`${r.left-o.left}px`,top:`${r.top-o.top}px`,width:`${s.right-r.left}px`,height:`${s.bottom-r.top}px`}),this.preview.isConnected||this.grid.renderer.root.append(this.preview)}destroy(){this.handle.remove(),this.preview.remove()}};var Cr=1e4,ct=class{constructor(e){this.grid=e;this.matches=[];this.lookup=new Map;this.index=-1;this.query="";this.bar=null;this.countEl=null}get active(){return!!this.query}classFor(e,t){if(!this.query)return"";let n=this.lookup.get(`${e}|${t}`);return n===void 0?"":n===this.index?" fg-cell-match fg-cell-match-current":" fg-cell-match"}find(e){if(this.query=e.trim().toLowerCase(),this.matches=[],this.lookup.clear(),this.index=-1,this.query){let{grid:t}=this,n=t.store.state.locale.code,o=t.columns.displayed().filter(a=>!D(a.id)),r=o.map(a=>K(a.def,n)),s=t.rowModel.rows();e:for(let a=0;a<s.length;a++)if(!s[a].kind){for(let l=0;l<o.length;l++)if(r[l](B(o[l].def,s[a].data)).toLowerCase().includes(this.query)&&(this.lookup.set(`${a}|${o[l].id}`,this.matches.length),this.matches.push({rowIndex:a,colId:o[l].id}),this.matches.length>=Cr))break e}this.matches.length&&this.go(0)}return this.updateCount(),this.grid.renderer.invalidate({rows:!0}),this.matches.length}refresh(){this.query&&this.find(this.query)}next(){this.matches.length&&this.go((this.index+1)%this.matches.length)}previous(){this.matches.length&&this.go((this.index-1+this.matches.length)%this.matches.length)}clear(){this.query="",this.matches=[],this.lookup.clear(),this.index=-1,this.grid.renderer.invalidate({rows:!0})}go(e){this.index=e;let t=this.matches[e];this.grid.setFocus(t.rowIndex,t.colId),this.grid.renderer.ensureVisible(t.rowIndex,t.colId),this.updateCount(),this.grid.renderer.invalidate({rows:!0})}updateCount(){if(!this.countEl)return;let e=this.grid.store.state.locale;this.countEl.textContent=this.query?this.matches.length?`${this.index+1}/${this.matches.length}`:e.noMatches:""}openBar(){if(this.grid.options.findBar===!1)return;if(this.bar){this.bar.querySelector("input").focus();return}let e=this.grid.store.state.locale,t=x("div","fg-findbar",{role:"search"}),n=x("input","fg-input",{type:"search",placeholder:e.findPlaceholder,"aria-label":e.findPlaceholder});this.countEl=x("span","fg-findbar-count",{"aria-live":"polite"});let o=(r,s,a)=>{let l=x("button","fg-findbar-btn",{type:"button","aria-label":r,title:r});return l.textContent=s,l.addEventListener("click",a),l};t.append(n,this.countEl,o(e.findPrevious,"\u2191",()=>this.previous()),o(e.findNext,"\u2193",()=>this.next()),o(e.close,"\xD7",()=>this.closeBar())),n.addEventListener("input",()=>this.find(n.value)),t.addEventListener("keydown",r=>{r.stopPropagation(),r.key==="Escape"?(r.preventDefault(),this.closeBar()):r.key==="Enter"&&(r.preventDefault(),r.shiftKey?this.previous():this.next())}),this.grid.renderer.root.append(t),this.bar=t,n.focus()}closeBar(){this.bar?.remove(),this.bar=null,this.countEl=null,this.clear(),this.grid.renderer.gridEl.focus({preventScroll:!0})}};var Rr=864e5;function Pe(i,e){if(!i.length||e<=0)return[];let t=()=>Array.from({length:e},(r,s)=>i[s%i.length]);if(i.every(r=>typeof r=="number"&&!Number.isNaN(r))){let r=i;if(r.length===1)return t();let s=r[1]-r[0];if(!r.every((l,d)=>d===0||Math.abs(l-r[d-1]-s)<1e-9))return t();let a=r[r.length-1];return Array.from({length:e},(l,d)=>Math.round((a+s*(d+1))*1e12)/1e12)}let n=i.map(r=>r instanceof Date||typeof r=="string"&&/^\d{4}-\d{2}-\d{2}/.test(r)?ie(r):null);if(n.every(Boolean)&&i.length>=2){let r=n.map(a=>Math.round(a.getTime()/Rr)),s=r[1]-r[0];if(r.every((a,l)=>l===0||a-r[l-1]===s)){let a=n[n.length-1],l=i[i.length-1]instanceof Date;return Array.from({length:e},(d,c)=>{let u=new Date(a.getFullYear(),a.getMonth(),a.getDate()+s*(c+1));return l?u:Q(u)})}return t()}let o=i[i.length-1];if(typeof o=="string"&&!q(o)&&i.every(r=>typeof r=="string")){let r=/^(.*?)(\d+)$/.exec(o);if(r){let s=r[2].length,a=Number(r[2]);return Array.from({length:e},(l,d)=>`${r[1]}${String(a+d+1).padStart(s,"0")}`)}}return t()}function Gt(i){let e=t=>/[\t\n\r"]/.test(t)?`"${t.replace(/"/g,'""')}"`:t;return i.map(t=>t.map(e).join(" ")).join(`\r
|
|
2
|
+
`)}function Jn(i){return zt(i," ")}function zt(i,e){if(!i)return[];let t=[],n=[],o="",r=0,s=!1,a=!0;for(;r<i.length;){let l=i[r];if(s){if(l==='"'){if(i[r+1]==='"'){o+='"',r+=2;continue}s=!1,r++;continue}o+=l,r++;continue}if(l==='"'&&a){s=!0,a=!1,r++;continue}if(l===e){n.push(o),o="",a=!0,r++;continue}if(l==="\r"||l===`
|
|
3
3
|
`){n.push(o),t.push(n),n=[],o="",a=!0,r+=l==="\r"&&i[r+1]===`
|
|
4
|
-
`?2:1;continue}o+=l,a=!1,r++}return(o!==""||n.length||!a)&&(n.push(o),t.push(n)),t}function ct(i,e,t){if(H(e))return"";if(Array.isArray(e))return e.join(", ");switch(i.type){case"number":{let n=typeof e=="number"?e:Number(e);return Number.isNaN(n)?String(e):String(n)}case"date":return Z(e)??String(e);case"boolean":return e===!0?"TRUE":e===!1?"FALSE":String(e);default:return W(i,t)(e)}}var vr=new Set(["true","1","y","yes","\uC608","o","on"]),yr=new Set(["false","0","n","no","\uC544\uB2C8\uC624","x","off"]);function br(i){let e=i.trim();if(!e)return{ok:!0,value:null};let t=!1;/^\(.*\)$/.test(e)&&(t=!0,e=e.slice(1,-1));let n=e.endsWith("%");if(n&&(e=e.slice(0,-1)),e=e.replace(/[\s,₩$€£¥원]/g,""),!/^[-+]?(\d+\.?\d*|\.\d+)(e[-+]?\d+)?$/i.test(e))return{ok:!1};let o=Number(e);return n&&(o/=100),t&&(o=-o),{ok:!0,value:Math.round(o*1e12)/1e12}}function jn(i,e,t){let n=new Date(i,e-1,t);return n.getFullYear()===i&&n.getMonth()===e-1&&n.getDate()===t?n:null}function xr(i,e){let t=i.trim();if(!t)return{ok:!0,value:null};let n=null,o=/^(\d{4})\s*[-./년]\s*(\d{1,2})\s*[-./월]\s*(\d{1,2})\s*[.일]?$/.exec(t);return o?n=jn(+o[1],+o[2],+o[3]):(o=/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/.exec(t))?n=jn(+o[3],+o[1],+o[2]):/^\d{4}-\d{2}-\d{2}T/.test(t)&&(n=oe(t)),n?{ok:!0,value:e instanceof Date?n:Z(n)}:{ok:!1}}function ut(i,e,t){switch(i.type){case"number":return br(e);case"date":return xr(e,t);case"boolean":{let n=e.trim().toLowerCase();return n?vr.has(n)?{ok:!0,value:!0}:yr.has(n)?{ok:!0,value:!1}:{ok:!1}:{ok:!0,value:null}}default:return{ok:!0,value:e}}}var Cr=i=>i.map(e=>e!==null&&typeof e=="object"&&"value"in e?e:{value:e,label:String(e),disabled:!1}),me=i=>String(i).padStart(2,"0");function Rr(i){let e=i instanceof Date?i:typeof i=="string"&&i?new Date(i):null;return!e||Number.isNaN(e.getTime())?"":`${e.getFullYear()}-${me(e.getMonth()+1)}-${me(e.getDate())}T${me(e.getHours())}:${me(e.getMinutes())}`}function kr(i){if(i instanceof Date)return`${me(i.getHours())}:${me(i.getMinutes())}`;let e=typeof i=="string"?/(\d{1,2}):(\d{2})/.exec(i):null;return e?`${me(Number(e[1]))}:${e[2]}`:""}var ht=class{constructor(e){this.grid=e;this.cur=null;this.session=null;e.events.on("focusChange",({rowIndex:t})=>{this.session&&!this.cur&&this.grid.rowModel.getRow(t)?.data!==this.session.row&&this.endRow(!0)})}get rowMode(){return this.grid.options.editType==="row"}editingRow(e){return this.session?.id===e}beginRow(e,t){this.session?.row!==e&&(this.session&&this.endRow(!0),this.session={row:e,id:this.grid.rowModel.idOf(e),before:{...e}},this.grid.renderer.invalidate({rows:!0}),this.grid.events.emit("rowEditStart",{row:e,rowIndex:t}))}endRow(e){let t=this.session;if(!t)return;this.cur&&(e?this.commit(null):this.close(!1)),this.session=null;let{grid:n}=this,o=n.rowModel.indexOfId(t.id),r=n.columns.displayed().filter(a=>a.def.field&&!I(a.id));if(!e){let a=[];for(let l of r){let d=l.def.field;Object.is(t.row[d],t.before[d])||n.writeCell(a,t.row,d,l.id,o,t.before[d])}n.endCellTx(a)}let s=r.filter(a=>!Object.is(t.row[a.def.field],t.before[a.def.field])).map(a=>({colId:a.id,oldValue:t.before[a.def.field],newValue:t.row[a.def.field]}));n.renderer.invalidate({rows:!0}),n.events.emit("rowEditStop",{row:t.row,rowIndex:o,committed:e,changes:s})}get active(){return this.cur&&{rowIndex:this.cur.rowIndex,colId:this.cur.colId}}canEdit(e,t){if(I(t))return!1;let n=this.grid.columns.getColumn(t);if(!n?.def.field||e<0||e>=this.grid.rowModel.getRowCount())return!1;let o=this.grid.rowModel.getRow(e);return!o.kind&&ie(n.def,o.data,e)}start(e,t,n){if(this.cur&&this.commit(null),!this.canEdit(e,t))return!1;let{grid:o}=this;if(o.veto("beforeEdit",{row:o.rowModel.getRow(e).data,rowIndex:e,colId:t}))return!1;let{renderer:r}=o,s=o.columns.getColumn(t),a=s.def,l=o.rowModel.getRow(e).data,d=l[a.field];this.rowMode&&this.beginRow(l,e),o.setFocus(e,t),r.ensureVisible(e,t),r.render();let c=r.root.querySelector(`.fg-row[data-row="${e}"] .fg-cell[data-col="${CSS.escape(t)}"]`),u=r.root.getBoundingClientRect(),p=c?.getBoundingClientRect(),h=y("div","fg-editor");h.style.left=`${(p?.left??u.left)-u.left}px`,h.style.top=`${(p?.top??u.top)-u.top}px`,h.style.width=`${p?.width||s.width}px`,h.style.height=`${p?.height||r.opts.rowHeight}px`;let v,w,m=()=>{},f=a.editor;if(typeof f=="function"){let k=f({value:d,row:l,column:a,initialText:n});v=k.el,w=()=>({value:k.getValue()}),m=()=>k.destroy?.(),h.append(v),queueMicrotask(()=>k.focus?.())}else if(f?.type==="select"){let k=Cr(typeof f.options=="function"?f.options(l):f.options),E=y("select","fg-editor-control");k.forEach((b,S)=>{let L=y("option");L.value=String(S),L.textContent=b.label??String(b.value),L.disabled=!!b.disabled,E.append(L)}),E.selectedIndex=Math.max(0,k.findIndex(b=>Object.is(b.value,d))),v=E,w=()=>({value:k[E.selectedIndex]?.value??null}),h.append(E)}else if(f?.type==="time"||f?.type==="datetime"||!f&&a.type==="date"&&a.format==="datetime"){let k=f?.type==="time",E=y("input","fg-editor-control",{type:k?"time":"datetime-local"});E.value=k?kr(d):Rr(d),v=E,w=()=>E.value?k?{value:E.value}:{value:d instanceof Date?new Date(E.value):E.value}:{value:null},h.append(E)}else{let E=f?.type==="textarea"?y("textarea","fg-editor-control"):y("input","fg-editor-control");E instanceof HTMLInputElement&&(E.type=a.type==="date"&&n===void 0?"date":"text",a.type==="number"&&(E.inputMode="decimal"));let b=a.type==="date"?Z(d)??"":H(d)?"":String(d);E.value=n??b,v=E,w=()=>({text:E.value}),h.append(E)}v.setAttribute("aria-label",a.header??a.field??t);let g=y("div","fg-editor-msg",{role:"alert"});h.append(g);let C=k=>{if(k.stopPropagation(),k.key==="Escape")k.preventDefault(),this.cancel();else if(k.key==="Enter"){if(v instanceof HTMLTextAreaElement&&!(k.ctrlKey||k.metaKey))return;k.preventDefault(),this.commit(k.shiftKey?"up":"down")}else k.key==="Tab"&&(k.preventDefault(),this.commit(k.shiftKey?"left":"right"))},x=k=>{this.cur?.wrap===h&&!h.contains(k.relatedTarget)&&this.commit(null)},R=()=>this.commit(null);return h.addEventListener("keydown",C),h.addEventListener("focusout",x),r.scroller.addEventListener("scroll",R,{passive:!0}),r.root.append(h),this.cur={rowIndex:e,colId:t,row:l,def:a,wrap:h,read:w,dispose:()=>{h.removeEventListener("keydown",C),h.removeEventListener("focusout",x),r.scroller.removeEventListener("scroll",R),m(),h.remove()}},typeof f!="function"&&(v.focus(),n===void 0&&v instanceof HTMLInputElement&&v.type==="text"&&v.select()),o.events.emit("editStart",{rowIndex:e,colId:t}),!0}commit(e){let t=this.cur;if(!t)return!1;let{grid:n}=this,o=n.store.state.locale,r=t.def.field,s=t.row[r],a=t.read(),l;if("text"in a&&t.def.formulas&&ye(a.text.trim()))l=a.text.trim();else if("text"in a){let c=ut(t.def,a.text,s);if(!c.ok)return this.fail(a.text,o.invalidValue);l=c.value}else l=a.value;let d=n.cellError(t.def,t.row,l);return d!==null?this.fail(l,d):(this.close(!0),n.applyEdit(t.rowIndex,t.colId,l),this.session&&(e==="down"||e==="up")&&this.endRow(!0),this.move(t.rowIndex,t.colId,e),!0)}cancel(){this.close(!1),this.session&&this.endRow(!1)}fail(e,t){let n=this.cur;return n.wrap.classList.add("fg-editor-invalid"),n.wrap.querySelector(".fg-editor-msg").textContent=t,this.grid.events.emit("validationFailed",{rowIndex:n.rowIndex,colId:n.colId,value:e,message:t}),!1}close(e){let t=this.cur;t&&(this.cur=null,t.dispose(),this.grid.renderer.gridEl.focus({preventScroll:!0}),this.grid.events.emit("editStop",{rowIndex:t.rowIndex,colId:t.colId,committed:e}))}move(e,t,n){if(!n)return;let{grid:o}=this,r=o.rowModel.getRowCount();if(n==="down"||n==="up"){let c=Math.max(0,Math.min(r-1,e+(n==="down"?1:-1)));o.setFocus(c,t),o.renderer.ensureVisible(c,t);return}let s=o.columns.displayed().filter(c=>this.canEdit(e,c.id)||c.def.editable);if(!s.length)return;let a=n==="right"?1:-1,l=e,d=s.findIndex(c=>c.id===t)+a;d>=s.length&&(d=0,this.session||l++),d<0&&(d=s.length-1,this.session||l--),!(l<0||l>=r)&&this.start(l,s[d].id)}};var ft=class{constructor(e=200){this.limit=e;this.entries=[];this.index=0}push(e){this.entries.splice(this.index),this.entries.push(e),this.entries.length>this.limit&&this.entries.shift(),this.index=this.entries.length}canUndo(){return this.index>0}canRedo(){return this.index<this.entries.length}undo(){return this.canUndo()?(this.entries[--this.index].undo(),!0):!1}redo(){return this.canRedo()?(this.entries[this.index++].redo(),!0):!1}clear(){this.entries=[],this.index=0}};var Xn=(i,e)=>i instanceof Date&&e instanceof Date?i.getTime()===e.getTime():Object.is(i,e),pt=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&&!Xn(n[t],e[t])}diff(e,t){let n=this.originals.get(e);return n?t.filter(o=>!Xn(n[o],e[o])):[]}get size(){return this.originals.size+this.created.size+this.deleted.size}reset(){this.originals.clear(),this.created.clear(),this.deleted.clear()}};function Ie(i){return{r1:Math.min(i.start.rowIndex,i.end.rowIndex),r2:Math.max(i.start.rowIndex,i.end.rowIndex),c1:Math.min(i.start.colIndex,i.end.colIndex),c2:Math.max(i.start.colIndex,i.end.colIndex)}}function Yn(i,e,t){return e>=i.r1&&e<=i.r2&&t>=i.c1&&t<=i.c2}var Sr=5;function Zn(i,e){let t=o=>i(o),n=o=>{window.removeEventListener("pointermove",t),window.removeEventListener("pointerup",n),window.removeEventListener("pointercancel",n),e(o)};window.addEventListener("pointermove",t),window.addEventListener("pointerup",n),window.addEventListener("pointercancel",n)}function Mr(i,e,t){let n=i.columns.getColumn(t);if(!n)return;let o=e.clientX,r=n.width;i.renderer.root.classList.add("fg-resizing"),Zn(s=>{i.columns.setWidth(t,r+(s.clientX-o)*(i.renderer.rtl?-1:1)),i.layoutChanged()},()=>{i.renderer.root.classList.remove("fg-resizing");let s=i.columns.getColumn(t)?.width??r;s!==r&&i.events.emit("columnResize",{colId:t,width:s})})}function Er(i,e){let t=i.columns.getNode(e);return!!i.groupPanel&&!!t&&!t.children&&!i.options.treeData&&!i.getGroupBy().includes(e)}function Lr(i,e,t,n){let o=new Set(i.columns.siblings(e).map(l=>l.id).filter(l=>l!==e&&!I(l))),r=[...n.querySelectorAll(".fg-header-cell")].filter(l=>o.has(l.dataset.col)).map(l=>({id:l.dataset.col,el:l})),s=y("div",`fg-drag-ghost fg-theme-${i.store.state.theme}`);s.textContent=t.querySelector(".fg-header-label")?.textContent??"",i.applyFontTo(s),te(i.renderer.root).append(s);let a=y("div","fg-drop-marker");return a.style.height=`${i.renderer.headerEl.offsetHeight}px`,i.renderer.root.append(a),t.classList.add("fg-dragging"),{ghost:s,marker:a,cell:t,sibs:r,target:-1,overPanel:!1}}function Tr(i,e,t,n,o){t.ghost.style.transform=`translate(${n+12}px, ${o+8}px)`,t.overPanel=Er(i,e)&&!!i.groupPanel?.contains(n,o),i.groupPanel?.highlight(t.overPanel),t.marker.hidden=t.overPanel;let r=0;for(let c of t.sibs){let u=c.el.getBoundingClientRect();(i.renderer.rtl?n<u.left+u.width/2:n>u.left+u.width/2)&&r++}t.target=r;let s=i.renderer.root.getBoundingClientRect().left,a=c=>i.renderer.rtl?c.getBoundingClientRect().right:c.getBoundingClientRect().left,l=c=>i.renderer.rtl?c.getBoundingClientRect().left:c.getBoundingClientRect().right,d=r<t.sibs.length?a(t.sibs[r].el):t.sibs.length?l(t.sibs[t.sibs.length-1].el):a(t.cell);t.marker.style.left=`${d-s-1}px`}function Ir(i,e,t){if(t.ghost.remove(),t.marker.remove(),t.cell.classList.remove("fg-dragging"),t.overPanel){i.groupPanel?.highlight(!1),i.setGroupBy([...i.getGroupBy(),e]);return}if(t.target<0||!t.sibs.length)return;let n=i.columns.siblings(e),o=n.findIndex(a=>a.id===e),r=n.map(a=>a.id).filter(a=>a!==e),s=t.target<t.sibs.length?r.indexOf(t.sibs[t.target].id):r.indexOf(t.sibs[t.sibs.length-1].id)+1;s=Math.max(r.filter(I).length,s),s!==o&&(i.columns.move(e,s),i.layoutChanged(),i.events.emit("columnMove",{colId:e,toIndex:s}))}function Dr(i,e,t,n){let o=i.columns.getNode(t),r=n.closest(".fg-header-pane");if(!o||!r)return;let s=e.clientX,a=null;Zn(l=>{if(!a){if(Math.abs(l.clientX-s)<Sr)return;a=Lr(i,t,n,r)}Tr(i,t,a,l.clientX,l.clientY)},l=>{a?Ir(i,t,a):!o.children&&ge(o.def)&&i.toggleSort(t,l.shiftKey||l.ctrlKey||l.metaKey)})}function Jn(i){let e=i.renderer.headerEl,t=o=>{if(o.button!==0)return;let r=o.target,s=r.closest(".fg-header-cell"),a=s?.dataset.col;!s||!a||I(a)||r.closest(".fg-menu-btn")||r.closest("button, a, input, select, textarea, [data-fg-no-sort]")&&r.closest(".fg-header-label")||(o.preventDefault(),r.closest(".fg-resize")?Mr(i,o,a):Dr(i,o,a,s))},n=o=>{let r=o.target,s=r.closest(".fg-menu-btn");if(s){let a=s.closest(".fg-header-cell")?.dataset.col;a&&i.menu.toggle(a,s);return}r.closest(".fg-select-all")&&i.toggleSelectAll()};return e.addEventListener("pointerdown",t),e.addEventListener("click",n),()=>{e.removeEventListener("pointerdown",t),e.removeEventListener("click",n)}}var Pr=/^[=+\-@\t\r]/;function Qn(i,e=","){let t=n=>{let o=n.value;return n.text&&Pr.test(o)&&(o=`'${o}`),o.includes(e)||/["\r\n]/.test(o)||/^\s|\s$/.test(o)?`"${o.replace(/"/g,'""')}"`:o};return i.map(n=>n.map(t).join(e)).join(`\r
|
|
5
|
-
`)}function Vt(i){let e=i.slice(0,i.search(/\r?\n|$/)),t=s=>e.split(s).length-1,n=t(" "),o=t(";"),r=t(",");return n&&n>=r&&n>=o?" ":o>r?";":","}function qt(i,e=Vt(i)){return
|
|
6
|
-
`,
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
`?2:1;continue}o+=l,a=!1,r++}return(o!==""||n.length||!a)&&(n.push(o),t.push(n)),t}function ut(i,e,t){if(q(e))return"";if(Array.isArray(e))return e.join(", ");switch(i.type){case"number":{let n=typeof e=="number"?e:Number(e);return Number.isNaN(n)?String(e):String(n)}case"date":return Q(e)??String(e);case"boolean":return e===!0?"TRUE":e===!1?"FALSE":String(e);default:return K(i,t)(e)}}var kr=new Set(["true","1","y","yes","\uC608","o","on"]),Sr=new Set(["false","0","n","no","\uC544\uB2C8\uC624","x","off"]);function Mr(i){let e=i.trim();if(!e)return{ok:!0,value:null};let t=!1;/^\(.*\)$/.test(e)&&(t=!0,e=e.slice(1,-1));let n=e.endsWith("%");if(n&&(e=e.slice(0,-1)),e=e.replace(/[\s,₩$€£¥원]/g,""),!/^[-+]?(\d+\.?\d*|\.\d+)(e[-+]?\d+)?$/i.test(e))return{ok:!1};let o=Number(e);return n&&(o/=100),t&&(o=-o),{ok:!0,value:Math.round(o*1e12)/1e12}}function Yn(i,e,t){let n=new Date(i,e-1,t);return n.getFullYear()===i&&n.getMonth()===e-1&&n.getDate()===t?n:null}function Er(i,e){let t=i.trim();if(!t)return{ok:!0,value:null};let n=null,o=/^(\d{4})\s*[-./년]\s*(\d{1,2})\s*[-./월]\s*(\d{1,2})\s*[.일]?$/.exec(t);return o?n=Yn(+o[1],+o[2],+o[3]):(o=/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/.exec(t))?n=Yn(+o[3],+o[1],+o[2]):/^\d{4}-\d{2}-\d{2}T/.test(t)&&(n=ie(t)),n?{ok:!0,value:e instanceof Date?n:Q(n)}:{ok:!1}}function ht(i,e,t){switch(i.type){case"number":return Mr(e);case"date":return Er(e,t);case"boolean":{let n=e.trim().toLowerCase();return n?kr.has(n)?{ok:!0,value:!0}:Sr.has(n)?{ok:!0,value:!1}:{ok:!1}:{ok:!0,value:null}}default:return{ok:!0,value:e}}}var Lr=i=>i.map(e=>e!==null&&typeof e=="object"&&"value"in e?e:{value:e,label:String(e),disabled:!1}),be=i=>String(i).padStart(2,"0");function Tr(i){let e=i instanceof Date?i:typeof i=="string"&&i?new Date(i):null;return!e||Number.isNaN(e.getTime())?"":`${e.getFullYear()}-${be(e.getMonth()+1)}-${be(e.getDate())}T${be(e.getHours())}:${be(e.getMinutes())}`}function Ir(i){if(i instanceof Date)return`${be(i.getHours())}:${be(i.getMinutes())}`;let e=typeof i=="string"?/(\d{1,2}):(\d{2})/.exec(i):null;return e?`${be(Number(e[1]))}:${e[2]}`:""}var ft=class{constructor(e){this.grid=e;this.cur=null;this.session=null;e.events.on("focusChange",({rowIndex:t})=>{this.session&&!this.cur&&this.grid.rowModel.getRow(t)?.data!==this.session.row&&this.endRow(!0)})}get rowMode(){return this.grid.options.editType==="row"}editingRow(e){return this.session?.id===e}beginRow(e,t){this.session?.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,o=n.rowModel.indexOfId(t.id),r=n.columns.displayed().filter(a=>a.def.field&&!D(a.id));if(!e){let a=[];for(let l of r){let d=l.def.field;Object.is(t.row[d],t.before[d])||n.writeCell(a,t.row,d,l.id,o,t.before[d])}n.endCellTx(a),n.history.rollback(t.undoMark)}let s=r.filter(a=>!Object.is(t.row[a.def.field],t.before[a.def.field])).map(a=>({colId:a.id,oldValue:t.before[a.def.field],newValue:t.row[a.def.field]}));n.renderer.invalidate({rows:!0}),n.events.emit("rowEditStop",{row:t.row,rowIndex:o,committed:e,changes:s})}get active(){return this.cur&&{rowIndex:this.cur.rowIndex,colId:this.cur.colId}}canEdit(e,t){if(D(t))return!1;let n=this.grid.columns.getColumn(t);if(!n?.def.field||e<0||e>=this.grid.rowModel.getRowCount())return!1;let o=this.grid.rowModel.getRow(e);return!o.kind&&ae(n.def,o.data,e)}start(e,t,n){if(this.cur&&!this.commit(null)||!this.canEdit(e,t))return!1;let{grid:o}=this;if(o.veto("beforeEdit",{row:o.rowModel.getRow(e).data,rowIndex:e,colId:t}))return!1;let{renderer:r}=o,a=o.columns.getColumn(t).def,l=o.rowModel.getRow(e).data,d=l[a.field];this.rowMode&&this.beginRow(l,e),o.setFocus(e,t),r.ensureVisible(e,t),r.render();let c=x("div","fg-editor");this.place(c,e,t);let u,g,f=()=>{},b=a.editor;if(typeof b=="function"){let v=b({value:d,row:l,column:a,initialText:n});u=v.el,g=()=>({value:v.getValue()}),f=()=>v.destroy?.(),c.append(u),queueMicrotask(()=>v.focus?.())}else if(b?.type==="select"){let v=Lr(typeof b.options=="function"?b.options(l):b.options),y=x("select","fg-editor-control");v.forEach((R,k)=>{let L=x("option");L.value=String(k),L.textContent=R.label??String(R.value),L.disabled=!!R.disabled,y.append(L)}),y.selectedIndex=Math.max(0,v.findIndex(R=>Object.is(R.value,d))),u=y,g=()=>({value:v[y.selectedIndex]?.value??null}),c.append(y)}else if(b?.type==="time"||b?.type==="datetime"||!b&&a.type==="date"&&a.format==="datetime"){let v=b?.type==="time",y=x("input","fg-editor-control",{type:v?"time":"datetime-local"});y.value=v?Ir(d):Tr(d),u=y,g=()=>y.value?v?{value:y.value}:{value:d instanceof Date?new Date(y.value):y.value}:{value:null},c.append(y)}else{let y=b?.type==="textarea"?x("textarea","fg-editor-control"):x("input","fg-editor-control");y instanceof HTMLInputElement&&(y.type=a.type==="date"&&n===void 0?"date":"text",a.type==="number"&&(y.inputMode="decimal"));let R=a.type==="date"?Q(d)??"":q(d)?"":String(d);y.value=n??R,u=y,g=()=>({text:y.value}),c.append(y)}u.setAttribute("aria-label",a.header??a.field??t);let w=x("div","fg-editor-msg",{role:"alert"});c.append(w);let m=v=>{if(v.stopPropagation(),v.key==="Escape")v.preventDefault(),this.cancel();else if(v.key==="Enter"){if(u instanceof HTMLTextAreaElement&&!(v.ctrlKey||v.metaKey))return;v.preventDefault(),this.commit(v.shiftKey?"up":"down")}else v.key==="Tab"&&(v.preventDefault(),this.commit(v.shiftKey?"left":"right"))},h=v=>{this.cur?.wrap===c&&!c.contains(v.relatedTarget)&&this.commit(null)},p=()=>this.commit(null);return c.addEventListener("keydown",m),c.addEventListener("focusout",h),r.scroller.addEventListener("scroll",p,{passive:!0}),r.root.append(c),this.cur={rowIndex:e,colId:t,row:l,def:a,wrap:c,read:g,dispose:()=>{c.removeEventListener("keydown",m),c.removeEventListener("focusout",h),r.scroller.removeEventListener("scroll",p),f(),c.remove()}},typeof b!="function"&&(u.focus(),n===void 0&&u instanceof HTMLInputElement&&u.type==="text"&&u.select()),o.events.emit("editStart",{rowIndex:e,colId:t}),!0}place(e,t,n){let{renderer:o}=this.grid,r=o.root.querySelector(`.fg-row[data-row="${t}"] .fg-cell[data-col="${CSS.escape(n)}"]`),s=o.root.getBoundingClientRect(),a=r?.getBoundingClientRect();return e.style.left=`${(a?.left??s.left)-s.left}px`,e.style.top=`${(a?.top??s.top)-s.top}px`,e.style.width=`${a?.width||this.grid.columns.getColumn(n)?.width}px`,e.style.height=`${a?.height||o.opts.rowHeight}px`,!!r}indexOf(e){let t=this.grid.rowModel,n=t.indexOfId(t.idOf(e));return n>=0&&t.getRow(n)?.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,o=n.store.state.locale,r=t.def.field,s=t.row[r],a=t.read(),l;if("text"in a&&t.def.formulas&&Ce(a.text.trim()))l=a.text.trim();else if("text"in a){let u=ht(t.def,a.text,s);if(!u.ok)return this.fail(a.text,o.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(){this.cur?.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){if(!n)return;let{grid:o}=this,r=o.rowModel.getRowCount();if(n==="down"||n==="up"){let c=Math.max(0,Math.min(r-1,e+(n==="down"?1:-1)));o.setFocus(c,t),o.renderer.ensureVisible(c,t);return}let s=o.columns.displayed().filter(c=>this.canEdit(e,c.id)||c.def.editable);if(!s.length)return;let a=n==="right"?1:-1,l=e,d=s.findIndex(c=>c.id===t)+a;d>=s.length&&(d=0,this.session||l++),d<0&&(d=s.length-1,this.session||l--),!(l<0||l>=r)&&this.start(l,s[d].id)}};var pt=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(){return this.entries[this.index-1]??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 Zn=(i,e)=>i instanceof Date&&e instanceof Date?i.getTime()===e.getTime():Object.is(i,e),gt=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&&!Zn(n[t],e[t])}diff(e,t){let n=this.originals.get(e);return n?t.filter(o=>!Zn(n[o],e[o])):[]}commit(e,t){for(let n of t)this.deleted.delete(n);for(let[n,o]of e)this.created.delete(n),this.originals.set(n,{...o})}get size(){return this.originals.size+this.created.size+this.deleted.size}reset(){this.originals.clear(),this.created.clear(),this.deleted.clear()}};function Fe(i){return{r1:Math.min(i.start.rowIndex,i.end.rowIndex),r2:Math.max(i.start.rowIndex,i.end.rowIndex),c1:Math.min(i.start.colIndex,i.end.colIndex),c2:Math.max(i.start.colIndex,i.end.colIndex)}}function Qn(i,e,t){return e>=i.r1&&e<=i.r2&&t>=i.c1&&t<=i.c2}var Dr=5;function eo(i,e){let t=o=>i(o),n=o=>{window.removeEventListener("pointermove",t),window.removeEventListener("pointerup",n),window.removeEventListener("pointercancel",n),e(o)};window.addEventListener("pointermove",t),window.addEventListener("pointerup",n),window.addEventListener("pointercancel",n)}function $r(i,e,t){let n=i.columns.getColumn(t);if(!n)return;let o=e.clientX,r=n.width;i.renderer.root.classList.add("fg-resizing"),eo(s=>{i.columns.setWidth(t,r+(s.clientX-o)*(i.renderer.rtl?-1:1)),i.layoutChanged()},()=>{i.renderer.root.classList.remove("fg-resizing");let s=i.columns.getColumn(t)?.width??r;s!==r&&i.events.emit("columnResize",{colId:t,width:s})})}function Ar(i,e){let t=i.columns.getNode(e);return!!i.groupPanel&&!!t&&!t.children&&!i.options.treeData&&!i.getGroupBy().includes(e)}function Pr(i,e,t,n){let o=new Set(i.columns.siblings(e).map(l=>l.id).filter(l=>l!==e&&!D(l))),r=[...n.querySelectorAll(".fg-header-cell")].filter(l=>o.has(l.dataset.col)).map(l=>({id:l.dataset.col,el:l})),s=x("div",`fg-drag-ghost fg-theme-${i.store.state.theme}`);s.textContent=t.querySelector(".fg-header-label")?.textContent??"",i.applyFontTo(s),ne(i.renderer.root).append(s);let a=x("div","fg-drop-marker");return a.style.height=`${i.renderer.headerEl.offsetHeight}px`,i.renderer.root.append(a),t.classList.add("fg-dragging"),{ghost:s,marker:a,cell:t,sibs:r,target:-1,overPanel:!1}}function Fr(i,e,t,n,o){t.ghost.style.transform=`translate(${n+12}px, ${o+8}px)`,t.overPanel=Ar(i,e)&&!!i.groupPanel?.contains(n,o),i.groupPanel?.highlight(t.overPanel),t.marker.hidden=t.overPanel;let r=0;for(let c of t.sibs){let u=c.el.getBoundingClientRect();(i.renderer.rtl?n<u.left+u.width/2:n>u.left+u.width/2)&&r++}t.target=r;let s=i.renderer.root.getBoundingClientRect().left,a=c=>i.renderer.rtl?c.getBoundingClientRect().right:c.getBoundingClientRect().left,l=c=>i.renderer.rtl?c.getBoundingClientRect().left:c.getBoundingClientRect().right,d=r<t.sibs.length?a(t.sibs[r].el):t.sibs.length?l(t.sibs[t.sibs.length-1].el):a(t.cell);t.marker.style.left=`${d-s-1}px`}function Nr(i,e,t){if(t.ghost.remove(),t.marker.remove(),t.cell.classList.remove("fg-dragging"),t.overPanel){i.groupPanel?.highlight(!1),i.setGroupBy([...i.getGroupBy(),e]);return}if(t.target<0||!t.sibs.length)return;let n=i.columns.siblings(e),o=n.findIndex(a=>a.id===e),r=n.map(a=>a.id).filter(a=>a!==e),s=t.target<t.sibs.length?r.indexOf(t.sibs[t.target].id):r.indexOf(t.sibs[t.sibs.length-1].id)+1;s=Math.max(r.filter(D).length,s),s!==o&&(i.columns.move(e,s),i.layoutChanged(),i.events.emit("columnMove",{colId:e,toIndex:s}))}function Or(i,e,t,n){let o=i.columns.getNode(t),r=n.closest(".fg-header-pane");if(!o||!r)return;let s=e.clientX,a=null;eo(l=>{if(!a){if(Math.abs(l.clientX-s)<Dr)return;a=Pr(i,t,n,r)}Fr(i,t,a,l.clientX,l.clientY)},l=>{a?Nr(i,t,a):!o.children&&ye(o.def)&&i.toggleSort(t,l.shiftKey||l.ctrlKey||l.metaKey)})}function to(i){let e=i.renderer.headerEl,t=o=>{if(o.button!==0)return;let r=o.target,s=r.closest(".fg-header-cell"),a=s?.dataset.col;!s||!a||D(a)||r.closest(".fg-menu-btn")||r.closest("button, a, input, select, textarea, [data-fg-no-sort]")&&r.closest(".fg-header-label")||(o.preventDefault(),r.closest(".fg-resize")?$r(i,o,a):Or(i,o,a,s))},n=o=>{let r=o.target,s=r.closest(".fg-menu-btn");if(s){let a=s.closest(".fg-header-cell")?.dataset.col;a&&i.menu.toggle(a,s);return}r.closest(".fg-select-all")&&i.toggleSelectAll()};return e.addEventListener("pointerdown",t),e.addEventListener("click",n),()=>{e.removeEventListener("pointerdown",t),e.removeEventListener("click",n)}}function no(i,e,t){return typeof i=="number"&&typeof e=="number"?i-e:i instanceof Date&&e instanceof Date?i.getTime()-e.getTime():typeof i=="boolean"&&typeof e=="boolean"?Number(i)-Number(e):t.compare(String(i),String(e))}function Hr(i,e){if(q(e))return null;if(i.type==="number"){let t=typeof e=="number"?e:Number(e);return Number.isNaN(t)?null:t}return i.type==="date"?ie(e)?.getTime()??null:e}function de(i,e,t){let n=q(i),o=q(e);return n||o?n===o?0:n?1:-1:no(i,e,t)}function oo(i,e,t,n){let o=e.map(a=>({def:t(a.colId),mul:a.dir==="desc"?-1:1})).filter(a=>!!a.def);if(!o.length)return i;let r=o.map(a=>i.map(l=>{let d=B(a.def,l.data);return a.def.comparator?d:Hr(a.def,d)})),s=i.map((a,l)=>l);return s.sort((a,l)=>{for(let d=0;d<o.length;d++){let{def:c,mul:u}=o[d],g=r[d][a],f=r[d][l],b;if(c.comparator)try{b=(Number(c.comparator(g,f,i[a].data,i[l].data))||0)*u}catch{O(`comparator of column "${c.id??c.field}" threw; treating values as equal`),b=0}else{let w=q(g),m=q(f);b=w||m?w===m?0:w?1:-1:no(g,f,n)*u}if(b)return b}return a-l}),s.map(a=>i[a])}var Br=/^[=+\-@\t\r]/;function ro(i,e=","){let t=n=>{let o=n.value;return n.text&&Br.test(o)&&(o=`'${o}`),o.includes(e)||/["\r\n]/.test(o)||/^\s|\s$/.test(o)?`"${o.replace(/"/g,'""')}"`:o};return i.map(n=>n.map(t).join(e)).join(`\r
|
|
5
|
+
`)}function Vt(i){let e=i.slice(0,i.search(/\r?\n|$/)),t=s=>e.split(s).length-1,n=t(" "),o=t(";"),r=t(",");return n&&n>=r&&n>=o?" ":o>r?";":","}function qt(i,e=Vt(i)){return zt(i.replace(/^\uFEFF/,""),e)}var Gr=(()=>{let i=new Uint32Array(256);for(let e=0;e<256;e++){let t=e;for(let n=0;n<8;n++)t=t&1?3988292384^t>>>1:t>>>1;i[e]=t>>>0}return i})();function zr(i){let e=4294967295;for(let t=0;t<i.length;t++)e=Gr[(e^i[t])&255]^e>>>8;return(e^4294967295)>>>0}var io=new TextEncoder;function so(i){let e=i.map(c=>{let u=io.encode(c.name),g=typeof c.data=="string"?io.encode(c.data):c.data;return{name:u,data:g,crc:zr(g),offset:0}}),t=e.reduce((c,u)=>c+30+u.name.length+u.data.length,0),n=e.reduce((c,u)=>c+46+u.name.length,0),o=new Uint8Array(t+n+22),r=new DataView(o.buffer),s=0,a=0,l=33;for(let c of e)c.offset=s,r.setUint32(s,67324752,!0),r.setUint16(s+4,20,!0),r.setUint16(s+6,2048,!0),r.setUint16(s+8,0,!0),r.setUint16(s+10,a,!0),r.setUint16(s+12,l,!0),r.setUint32(s+14,c.crc,!0),r.setUint32(s+18,c.data.length,!0),r.setUint32(s+22,c.data.length,!0),r.setUint16(s+26,c.name.length,!0),r.setUint16(s+28,0,!0),o.set(c.name,s+30),o.set(c.data,s+30+c.name.length),s+=30+c.name.length+c.data.length;let d=s;for(let c of e)r.setUint32(s,33639248,!0),r.setUint16(s+4,20,!0),r.setUint16(s+6,20,!0),r.setUint16(s+8,2048,!0),r.setUint16(s+10,0,!0),r.setUint16(s+12,a,!0),r.setUint16(s+14,l,!0),r.setUint32(s+16,c.crc,!0),r.setUint32(s+20,c.data.length,!0),r.setUint32(s+24,c.data.length,!0),r.setUint16(s+28,c.name.length,!0),r.setUint16(s+30,0,!0),r.setUint16(s+32,0,!0),r.setUint16(s+34,0,!0),r.setUint16(s+36,0,!0),r.setUint32(s+38,0,!0),r.setUint32(s+42,c.offset,!0),o.set(c.name,s+46),s+=46+c.name.length;return r.setUint32(s,101010256,!0),r.setUint16(s+8,e.length,!0),r.setUint16(s+10,e.length,!0),r.setUint32(s+12,s-d,!0),r.setUint32(s+16,d,!0),o}var mt=i=>i.length>4&&i[0]===80&&i[1]===75&&i[2]===3&&i[3]===4,ao=i=>new Error(`Zip file is too large: it unpacks to more than ${i>=1048576?`${Math.round(i/1048576)} MB`:`${i} bytes`}`);async function Vr(i,e){if(typeof DecompressionStream>"u")throw new Error("This browser cannot read compressed xlsx files (no DecompressionStream)");let n=new Response(i).body.pipeThrough(new DecompressionStream("deflate-raw")).getReader(),o=[],r=0;for(;;){let{done:l,value:d}=await n.read();if(l)break;if(r+=d.length,r>e)throw await n.cancel().catch(()=>{}),ao(e);o.push(d)}let s=new Uint8Array(r),a=0;for(let l of o)s.set(l,a),a+=l.length;return s}async function lo(i,e={}){let t=e.maxBytes??209715200,n=e.maxEntries??1e4,o=new DataView(i.buffer,i.byteOffset,i.byteLength),r=-1;for(let u=i.length-22;u>=Math.max(0,i.length-65557);u--)if(o.getUint32(u,!0)===101010256){r=u;break}if(r<0)throw new Error("Not a zip file");let s=o.getUint16(r+10,!0);if(s>n)throw new Error(`Zip file has too many entries (${s}, at most ${n})`);let a=o.getUint32(r+16,!0),l=new TextDecoder,d=new Map,c=0;for(let u=0;u<s;u++){if(o.getUint32(a,!0)!==33639248)throw new Error("Broken zip directory");let g=o.getUint16(a+10,!0),f=o.getUint32(a+20,!0),b=o.getUint16(a+28,!0),w=o.getUint16(a+30,!0),m=o.getUint16(a+32,!0),h=o.getUint32(a+42,!0),p=l.decode(i.subarray(a+46,a+46+b)),v=o.getUint16(h+26,!0),y=o.getUint16(h+28,!0),R=h+30+v+y,k=i.subarray(R,R+f),L;if(g===0)L=k;else if(g===8)L=await Vr(k,t-c);else throw new Error(`Unsupported zip compression ${g}`);if(c+=L.length,c>t)throw ao(t);d.set(p,L),a+=46+b+w+m}return d}function Wt(i){let e="";for(let t=i+1;t>0;t=Math.floor((t-1)/26))e=String.fromCharCode(65+(t-1)%26)+e;return e}var co=Date.UTC(1899,11,30),uo=864e5;function qr(i){return(Date.UTC(i.getFullYear(),i.getMonth(),i.getDate(),i.getHours(),i.getMinutes(),i.getSeconds(),i.getMilliseconds())-co)/uo}function Wr(i){let e=new Date(Math.round(i*uo)+co);return new Date(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds())}var Ur=/[\u0000-\u0008\u000b\u000c\u000e-\u001f]/g,wt=i=>i.replace(Ur,"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,"""),Se=`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
6
|
+
`,Ut="http://schemas.openxmlformats.org/spreadsheetml/2006/main",Me="http://schemas.openxmlformats.org/officeDocument/2006/relationships";function Kr(i){let e=new Set;return i.map((t,n)=>{let o=(t.name??`Sheet${n+1}`).replace(/[[\]:*?/\\]/g," ").slice(0,31).trim()||`Sheet${n+1}`,r=o;for(let s=2;e.has(r.toLowerCase());s++)r=`${o.slice(0,28)} (${s})`;return e.add(r.toLowerCase()),r})}function Ee(i){let e=new Map([["General",0]]),t=[],n=['<xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0"/>'],o=new Map([["General||||",0]]),r=['<font><sz val="11"/><name val="Calibri"/></font>','<font><b/><sz val="11"/><name val="Calibri"/></font>'],s=new Map([["0|",0],["1|",1]]),a=['<fill><patternFill patternType="none"/></fill>','<fill><patternFill patternType="gray125"/></fill>','<fill><patternFill patternType="solid"><fgColor rgb="FFF2F4F7"/><bgColor indexed="64"/></patternFill></fill>'],l=new Map([["FFF2F4F7",2]]),d=h=>h&&/^[0-9a-f]{8}$/i.test(h)?h.toUpperCase():h&&/^[0-9a-f]{6}$/i.test(h)?`FF${h.toUpperCase()}`:"",c=(h,p)=>{let v=`${h?1:0}|${p}`,y=s.get(v);return y===void 0&&(y=r.length,r.push(`<font>${h?"<b/>":""}<sz val="11"/>${p?`<color rgb="${p}"/>`:""}<name val="Calibri"/></font>`),s.set(v,y)),y},u=h=>{if(!h)return 0;let p=l.get(h);return p===void 0&&(p=a.length,a.push(`<fill><patternFill patternType="solid"><fgColor rgb="${h}"/><bgColor indexed="64"/></patternFill></fill>`),l.set(h,p)),p},g=(h,p)=>{let v=d(p.color),y=p.header?"FFF2F4F7":d(p.fill),R=!!(p.bold||p.header),k=p.align==="left"||p.align==="center"||p.align==="right"?p.align:"",L=`${h}|${R?1:""}|${v}|${y}|${k}`,C=o.get(L);if(C!==void 0)return C;let E=e.get(h);E===void 0&&(E=164+t.length,t.push(h),e.set(h,E));let M=c(R,v),S=u(y),I=`numFmtId="${E}" fontId="${M}" fillId="${S}" borderId="0" xfId="0"`+(E?' applyNumberFormat="1"':"")+(M?' applyFont="1"':"")+(S?' applyFill="1"':"")+(k?' applyAlignment="1"':"");return C=n.length,n.push(k?`<xf ${I}><alignment horizontal="${k}"/></xf>`:`<xf ${I}/>`),o.set(L,C),C},f=Kr(i),b=i.map(h=>{let p=h.rows.map((M,S)=>{let I=M.map(($,A)=>{let F=$!==null&&typeof $=="object"&&!($ instanceof Date)?$:{v:$},P=`${Wt(A)}${S+1}`,T=F.v,H=F.fmt??"General";T instanceof Date&&(Number.isNaN(T.getTime())?T=null:(H==="General"&&(H="yyyy-mm-dd"),T=qr(T)));let N=g(H,F),z=N?` s="${N}"`:"";return T==null||T===""?z?`<c r="${P}"${z}/>`:"":typeof T=="number"?Number.isFinite(T)?`<c r="${P}"${z}><v>${T}</v></c>`:"":typeof T=="boolean"?`<c r="${P}"${z} t="b"><v>${T?1:0}</v></c>`:`<c r="${P}"${z} t="inlineStr"><is><t xml:space="preserve">${wt(String(T))}</t></is></c>`}).join("");return`<row r="${S+1}">${I}</row>`}).join(""),v=Math.max(0,...h.rows.map(M=>M.length)),y=h.freezeRows??0,R=y?`<sheetViews><sheetView workbookViewId="0"><pane ySplit="${y}" topLeftCell="A${y+1}" activePane="bottomLeft" state="frozen"/></sheetView></sheetViews>`:'<sheetViews><sheetView workbookViewId="0"/></sheetViews>',k=h.widths?.length?`<cols>${h.widths.map((M,S)=>`<col min="${S+1}" max="${S+1}" width="${Math.max(4,Math.min(120,M)).toFixed(1)}" customWidth="1"/>`).join("")}</cols>`:"",L=h.autoFilter&&v&&y&&h.rows.length>=y?`<autoFilter ref="A${y}:${Wt(v-1)}${h.rows.length}"/>`:"",C=(h.merges??[]).filter(M=>typeof M=="string"&&/^[A-Z]{1,3}\d{1,7}:[A-Z]{1,3}\d{1,7}$/.test(M)),E=C.length?`<mergeCells count="${C.length}">${C.map(M=>`<mergeCell ref="${M}"/>`).join("")}</mergeCells>`:"";return`${Se}<worksheet xmlns="${Ut}" xmlns:r="${Me}">${R}<sheetFormatPr defaultRowHeight="15"/>${k}<sheetData>${p}</sheetData>${L}${E}</worksheet>`}),w=`${Se}<styleSheet xmlns="${Ut}">`+(t.length?`<numFmts count="${t.length}">${t.map((h,p)=>`<numFmt numFmtId="${164+p}" formatCode="${wt(h)}"/>`).join("")}</numFmts>`:"")+`<fonts count="${r.length}">${r.join("")}</fonts><fills count="${a.length}">${a.join("")}</fills><borders count="1"><border><left/><right/><top/><bottom/><diagonal/></border></borders><cellStyleXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0"/></cellStyleXfs><cellXfs count="${n.length}">${n.join("")}</cellXfs><cellStyles count="1"><cellStyle name="Normal" xfId="0" builtinId="0"/></cellStyles></styleSheet>`,m=[{name:"[Content_Types].xml",data:`${Se}<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/><Default Extension="xml" ContentType="application/xml"/><Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/><Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"/>`+i.map((h,p)=>`<Override PartName="/xl/worksheets/sheet${p+1}.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/>`).join("")+"</Types>"},{name:"_rels/.rels",data:`${Se}<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="${Me}/officeDocument" Target="xl/workbook.xml"/></Relationships>`},{name:"xl/workbook.xml",data:`${Se}<workbook xmlns="${Ut}" xmlns:r="${Me}"><sheets>`+f.map((h,p)=>`<sheet name="${wt(h)}" sheetId="${p+1}" r:id="rId${p+1}"/>`).join("")+"</sheets>"+(i.some(h=>h.autoFilter&&h.freezeRows)?`<definedNames>${i.map((h,p)=>{let v=Math.max(0,...h.rows.map(y=>y.length));return h.autoFilter&&h.freezeRows&&v?`<definedName name="_xlnm._FilterDatabase" localSheetId="${p}" hidden="1">'${wt(f[p].replace(/'/g,"''"))}'!$A$${h.freezeRows}:$${Wt(v-1)}$${h.rows.length}</definedName>`:""}).join("")}</definedNames>`:"")+"</workbook>"},{name:"xl/_rels/workbook.xml.rels",data:`${Se}<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">`+i.map((h,p)=>`<Relationship Id="rId${p+1}" Type="${Me}/worksheet" Target="worksheets/sheet${p+1}.xml"/>`).join("")+`<Relationship Id="rId${i.length+1}" Type="${Me}/styles" Target="styles.xml"/></Relationships>`},{name:"xl/styles.xml",data:w},...b.map((h,p)=>({name:`xl/worksheets/sheet${p+1}.xml`,data:h}))];return so(m)}var jr=new Set([14,15,16,17,18,19,20,21,22,27,30,36,45,46,47,50,57]);function _r(i){let e=i.replace(/"[^"]*"/g,"").replace(/\[[^\]]*\]/g,"").replace(/\\./g,"");return/[dmyhs]/i.test(e)&&!/^[#0.,%\s]*$/.test(e)}function Ne(i){return i?new DOMParser().parseFromString(new TextDecoder().decode(i),"application/xml"):null}var ce=(i,e)=>[...i.getElementsByTagNameNS("*",e)];function Xr(i){let e=0;for(let t of i){let n=t.charCodeAt(0);if(n<65||n>90)break;e=e*26+(n-64)}return e-1}var Yr=1048576,Jr=16384;async function Kt(i){let e=i instanceof Uint8Array?i:new Uint8Array(i);if(!mt(e))throw new Error("Not an xlsx file");let t=await lo(e),n=Ne(t.get("xl/workbook.xml"));if(!n)throw new Error("xlsx has no workbook");let o=Ne(t.get("xl/_rels/workbook.xml.rels")),r=new Map(o?ce(o,"Relationship").map(f=>[f.getAttribute("Id")??"",f.getAttribute("Target")??""]):[]),s=Ne(t.get("xl/sharedStrings.xml")),a=s?ce(s,"si").map(f=>ce(f,"t").map(b=>b.textContent??"").join("")):[],l=Ne(t.get("xl/styles.xml")),d=new Map(l?ce(l,"numFmt").map(f=>[Number(f.getAttribute("numFmtId")),f.getAttribute("formatCode")??""]):[]),c=l?ce(l,"cellXfs")[0]:void 0,u=(c?[...c.children].filter(f=>f.localName==="xf"):[]).map(f=>{let b=Number(f.getAttribute("numFmtId")??0);return jr.has(b)||d.has(b)&&_r(d.get(b))}),g=[];for(let f of ce(n,"sheet")){let b=f.getAttribute("r:id")??f.getAttributeNS(Me,"id")??"",w=r.get(b)??"";w=w.startsWith("/")?w.slice(1):`xl/${w}`;let m=Ne(t.get(w)),h=[];if(m){for(let p of ce(m,"row")){let v=Number(p.getAttribute("r")??h.length+1)-1;if(!Number.isInteger(v)||v<0||v>=Yr)continue;let y=[],R=0;for(let k of[...p.children].filter(L=>L.localName==="c")){let L=k.getAttribute("r"),C=L?Xr(L):R;if(C<0||C>=Jr)continue;R=C+1;let E=k.getAttribute("t"),M=ce(k,"v")[0]?.textContent??null,S=null;if(E==="s")S=M===null?null:a[Number(M)]??"";else if(E==="inlineStr")S=ce(k,"t").map(I=>I.textContent??"").join("");else if(E==="b")S=M==="1";else if(E==="str"||E==="e")S=M;else if(M!==null&&M!==""){let I=Number(M);S=u[Number(k.getAttribute("s")??0)]?Wr(I):I}y[C]=S}for(let k=0;k<y.length;k++)y[k]===void 0&&(y[k]=null);h[v]=y}for(let p=0;p<h.length;p++)h[p]||(h[p]=[])}g.push({name:f.getAttribute("name")??`Sheet${g.length+1}`,rows:h})}return g}function jt(i,e){return Array.isArray(e)?e.flatMap(t=>{let n=i.columns.getNode(t);return!n||n.children||D(t)?(O(`export: unknown column "${t}"`),[]):[{id:t,def:n.def,node:n,width:i.columns.getColumn(t)?.width??n.width}]}):i.columns.displayed().filter(t=>!D(t.id)).map(t=>({id:t.id,def:t.def,node:t.node,width:t.width}))}function _t(i,e){return e==="selected"?i.selectedRows():e==="all"?i.rowModel.server?i.rowModel.dataRows().map(t=>t.data):i.viewRows():i.rowModel.dataRows().map(t=>t.data)}var Le=(i,e)=>i.header??i.field??e,Zr=["left","center","right"],Qr=/^[+-]?(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?$/i,ue=i=>String(i??"").replace(/[&<>"]/g,e=>({"&":"&","<":"<",">":">",'"':"""})[e]),ei=["A4","A3","A5","B4","B5","letter","legal"],ti=760,ni=i=>`"${i.replace(/[\\"<\n\r]/g,e=>e===`
|
|
7
|
+
`?"\\A ":e==="\r"?"":`\\${e.charCodeAt(0).toString(16)} `)}"`,ho=i=>i?`#${i.slice(2)}`:"";function oi(i,e,t){let n=[],o=0,r=i.store.state.sort,s=i.collator(),a=(l,d)=>{if(d>=t.length){for(let b of l)n.push({kind:"row",row:b,n:++o});return}let c=t[d],u=i.columns.getNode(c)?.def;if(!u)return a(l,d+1);let g=new Map;for(let b of l){let w=B(u,b),m=q(w)?"":Z(w),h=g.get(m);h||g.set(m,h={value:w,rows:[]}),h.rows.push(b)}let f=r.find(b=>b.colId===c)?.dir==="desc"?-1:1;for(let b of[...g.values()].sort((w,m)=>de(w.value,m.value,s)*f))n.push({kind:"group",colId:c,value:b.value,rows:b.rows,level:d}),a(b.rows,d+1)};return a(e,0),n}var ri=`
|
|
8
|
+
* { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
|
|
9
|
+
body { font: 10.5px/1.45 system-ui, 'Pretendard', 'Malgun Gothic', 'Apple SD Gothic Neo', sans-serif; color: #111827; margin: 0; }
|
|
10
|
+
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; }
|
|
11
|
+
h1 { font-size: 17px; margin: 0; letter-spacing: -.01em; }
|
|
12
|
+
.sub { margin: 3px 0 0; color: #4b5563; font-size: 11px; }
|
|
13
|
+
.printed { margin: 0; color: #6b7280; font-size: 9.5px; white-space: nowrap; }
|
|
10
14
|
table { border-collapse: collapse; width: 100%; }
|
|
11
|
-
|
|
12
|
-
th {
|
|
15
|
+
table.fit { table-layout: fixed; }
|
|
16
|
+
th, td { padding: 4px 7px; border-bottom: 1px solid #e5e7eb; vertical-align: top; overflow-wrap: anywhere; font-variant-numeric: tabular-nums; }
|
|
17
|
+
th { background: #f3f4f6; color: #374151; font-weight: 600; text-align: left; vertical-align: bottom; border-bottom: 1.5px solid #9ca3af; border-left: 1px solid #e5e7eb; }
|
|
18
|
+
th.span { text-align: center; }
|
|
19
|
+
th:first-child { border-left: 0; }
|
|
13
20
|
thead { display: table-header-group; }
|
|
14
|
-
tr { page-break-inside: avoid; }
|
|
15
|
-
</style></head><body>${e.title?`<h1>${c}</h1>`:""}<table><thead>${e.headers===!1?"":a.join("")}</thead><tbody>${d}</tbody></table></body></html>`}function io(i){if(typeof document>"u")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(),$("printing is not supported in this environment");return}t.open(),t.write(i),t.close();let n=e.contentWindow,o=()=>setTimeout(()=>e.remove(),1e3);n.addEventListener("afterprint",o),setTimeout(()=>{try{n.focus(),n.print()}catch{$("printing is not supported in this environment")}o()},50)}function Yt(i,e={}){let t=jt(i,e.columns),n=i.store.state.locale.code,o=typeof e.separator=="string"&&e.separator.length===1?e.separator:",",r=_t(i,e.rows).map(s=>t.map(a=>{let l=N(a.def,s),d=a.def.type;return{value:ct(a.def,l,n),text:!(d==="number"||d==="date"||d==="boolean")||typeof l=="string"}}));return e.headers!==!1&&r.unshift(t.map(s=>({value:Ae(s.def,s.id),text:!0}))),Qn(r,o)}function qr(i){let e=i.format;if(i.type==="date")return e==="datetime"?"yyyy-mm-dd hh:mm":e==="time"?"hh:mm":"yyyy-mm-dd";if(i.type!=="number"||e==null)return null;if(typeof e=="string")return e==="integer"?"#,##0":e==="percent"?"0%":e.startsWith("currency:")?"#,##0.##":/^[#0,.%]+$/.test(e)?e:null;let t=e,n=t.maximumFractionDigits??t.minimumFractionDigits,o=n?`.${"0".repeat(Math.min(10,n))}`:"";return t.style==="percent"?`0${o}%`:`${t.useGrouping===!1?"0":"#,##0"}${o}`}function wt(i){let e=/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(i.trim());if(e)return`FF${(e[1].length===3?[...e[1]].map(r=>r+r).join(""):e[1]).toUpperCase()}`;let t=/^rgba?\(\s*(\d+)[\s,]+(\d+)[\s,]+(\d+)(?:[\s,/]+([\d.]+%?))?\s*\)$/i.exec(i.trim());return!t||!((t[4]===void 0?1:t[4].endsWith("%")?parseFloat(t[4])/100:parseFloat(t[4]))>0)?"":`FF${[t[1],t[2],t[3]].map(o=>Math.min(255,Number(o)).toString(16).padStart(2,"0")).join("").toUpperCase()}`}function Wr(i){let e=i.renderer.root;if(typeof getComputedStyle!="function"||!e.isConnected)return{of:()=>({}),dispose:()=>{}};let t=document.createElement("div");t.className="fg-row",t.style.cssText="position:absolute;left:-9999px;top:0;visibility:hidden;pointer-events:none";let n=document.createElement("div");t.append(n),e.append(t);let o=a=>{n.className=a?`fg-cell ${a}`:"fg-cell";let l=getComputedStyle(n),d=l.fontWeight;return{color:l.color,fill:l.backgroundColor,bold:d==="bold"||Number(d)>=600}},r=o(""),s=new Map;return{of(a){let l=s.get(a);if(!l){let d=o(a);l={},d.color!==r.color&&wt(d.color)&&(l.color=wt(d.color)),d.fill!==r.fill&&wt(d.fill)&&(l.fill=wt(d.fill)),d.bold&&!r.bold&&(l.bold=!0),s.set(a,l)}return l},dispose:()=>t.remove()}}function Zt(i,e={}){return Se([Jt(i,e)])}function Jt(i,e={}){let t=jt(i,e.columns),n=i.store.state.locale.code,o=[],r=[],s=0;if(e.headers!==!1){let m=t.map(g=>{let C=[];for(let x=g.node;x;x=x.parent)C.unshift(x);return C});s=Math.max(1,...m.map(g=>g.length));let f=g=>{let C="";for(let x=g+1;x>0;x=Math.floor((x-1)/26))C=String.fromCharCode(65+(x-1)%26)+C;return C};for(let g=0;g<s;g++){let C=[];for(let x=0;x<t.length;x++){let R=m[x],k=R.length-1;if(g<k){let E=R[g],b=x>0?m[x-1][g]:null;if(C.push({v:b===E?null:Ae(E.def,E.id),header:!0}),b!==E){let S=x;for(;S+1<t.length&&m[S+1][g]===E;)S++;S>x&&r.push(`${f(x)}${g+1}:${f(S)}${g+1}`)}}else g===k?(C.push({v:Ae(t[x].def,t[x].id),header:!0}),s-1>g&&r.push(`${f(x)}${g+1}:${f(x)}${s}`)):C.push({v:null,header:!0})}o.push(C)}}let a=t.map(m=>qr(m.def)),l=t.map(m=>W(m.def,n)),d=_t(i,e.rows),c=e.styles!==!1,u=c&&t.some(m=>m.def.cellClass)?Wr(i):null,p=(m,f,g)=>{if(H(g))return null;let C=a[f]??void 0;switch(m.def.type){case"number":{let x=typeof g=="number"?g:Number(g);return Number.isFinite(x)?{v:x,fmt:C}:String(g)}case"date":{let x=oe(g);return x?{v:x,fmt:C}:String(g)}case"boolean":return typeof g=="boolean"?g:String(g);default:return l[f](g)}};try{d.forEach((m,f)=>{o.push(t.map((g,C)=>{let x=N(g.def,m),R=p(g,C,x);if(!c)return R;let k=g.def.align?{align:g.def.align}:{};if(u&&g.def.cellClass){let E;try{E=typeof g.def.cellClass=="function"?g.def.cellClass({value:x,formatted:l[C](x),row:m,rowIndex:f,column:g.def}):g.def.cellClass}catch{E=void 0}E&&(k={...k,...u.of(E)})}return Object.keys(k).length?R!==null&&typeof R=="object"&&!(R instanceof Date)?{...R,...k}:{v:R,...k}:R}))})}finally{u?.dispose()}let h=new Set,v=m=>{let f="";for(let g=m+1;g>0;g=Math.floor((g-1)/26))f=String.fromCharCode(65+(g-1)%26)+f;return f},w=(m,f,g,C)=>{for(let x=m;x<=g;x++)for(let R=f;R<=C;R++)if(h.has(`${x},${R}`))return;for(let x=m;x<=g;x++)for(let R=f;R<=C;R++)h.add(`${x},${R}`);r.push(`${v(f)}${s+m+1}:${v(C)}${s+g+1}`)};return d.forEach((m,f)=>t.forEach((g,C)=>{let x=g.def.colSpan?Ee(g.def.colSpan,g.def,m,f,t.length-C):1;x>1&&w(f,C,f,C+x-1)})),t.forEach((m,f)=>{if(!m.def.merge&&!m.def.rowSpan)return;let g=Ye(d,m.def);for(let C=0;C<d.length;C++)g.start[C]===C&&g.end[C]>C&&w(C,f,g.end[C],f)}),{name:e.sheetName??"Sheet1",rows:o,widths:t.map(m=>Math.round(m.width/7)),merges:r,freezeRows:s,autoFilter:s>0}}function $e(i,e,t){if(typeof URL>"u"||typeof URL.createObjectURL!="function"||typeof document>"u"){$("downloads are not supported in this environment");return}let n=URL.createObjectURL(new Blob(e,{type:t})),o=document.createElement("a");o.href=n,o.download=i,o.style.display="none",document.body.append(o),o.click(),o.remove(),setTimeout(()=>URL.revokeObjectURL(n),1e3)}var vt=i=>String(i??"").trim().toLowerCase();function Kr(i){return i==null?"":i instanceof Date?i.getHours()||i.getMinutes()||i.getSeconds()?i.toISOString():Z(i)??"":String(i)}async function so(i,e,t={}){let n=e instanceof Uint8Array?e:new Uint8Array(e instanceof ArrayBuffer?e:await e.arrayBuffer()),o;if(gt(n)){let w=await Ut(n),m=typeof t.sheet=="string"?w.find(f=>f.name===t.sheet):w[typeof t.sheet=="number"?t.sheet:0];if(!m)throw new Error(`Sheet ${String(t.sheet)} not found`);o=m.rows}else{let w=new TextDecoder().decode(n);o=qt(w,Vt(w))}if(!o.length)return{rows:[],skipped:0};let r=[],s=w=>w.forEach(m=>m.children?s(m.children):!I(m.id)&&m.def.field&&r.push(m));s(i.columns.roots());let a=w=>{let m=vt(w);return m?r.find(f=>vt(f.def.header)===m)??r.find(f=>vt(f.def.field)===m||vt(f.id)===m)??null:null},l=1,d=new Set(o[0].map(a).filter(Boolean));for(;l<Math.min(o.length,5);){let m=(o[l]??[]).filter(g=>g!=null&&String(g).trim()!==""),f=m.map(a).filter(g=>g&&!d.has(g));if(!m.length||!m.every(g=>typeof g=="string")||!f.length)break;f.forEach(g=>d.add(g)),l++}let c=Math.max(...o.slice(0,l).map(w=>w?.length??0)),u=Array.from({length:c},(w,m)=>{for(let f=l-1;f>=0;f--){let g=o[f]?.[m];if(g!=null&&String(g).trim()!=="")return a(g)}return null}),p=i.store.state.data[0],h=0,v=[];for(let w of o.slice(l)){if(!w||w.every(f=>f==null||String(f).trim()===""))continue;let m={};u.forEach((f,g)=>{if(!f)return;let C=f.def,x=Kr(w[g]),R=i.acceptText(C,m,x,p?.[C.field]);R.ok?x===""&&(R.value===null||R.value==="")||(m[C.field]=R.value):h++}),v.push(m)}return t.mode==="replace"?i.setData(v):i.addRows(v),{rows:v,skipped:h}}var Ur="http://www.w3.org/2000/svg";var Qt=["var(--fg-accent, #2563eb)","#f59e0b","#10b981","#ef4444","#8b5cf6","#06b6d4","#ec4899","#84cc16","#f97316","#64748b","#14b8a6","#a855f7"],he=i=>Qt[i%Qt.length];function q(i,e={},t=""){let n=document.createElementNS(Ur,i);t&&n.setAttribute("class",t);for(let[o,r]of Object.entries(e))n.setAttribute(o,String(r));return n}function Fe(i,e){let t=q("title");t.textContent=e,i.append(t)}function en(i,e,t=5){let n=Math.min(0,i),o=Math.max(0,e);n===o&&(o=n+1);let r=(o-n)/t,s=10**Math.floor(Math.log10(r)),a=[1,2,5,10].map(d=>d*s).find(d=>d>=r);n=Math.floor(n/a)*a,o=Math.ceil(o/a)*a;let l=[];for(let d=n;d<=o+a/2;d+=a)l.push(Math.round(d/a)*a);return l}function tn(i,e){let t=new Intl.NumberFormat(e.locale,{maximumFractionDigits:2}),n=new Intl.NumberFormat(e.locale,{notation:"compact",maximumFractionDigits:1}),o=q("svg",{viewBox:"0 0 640 360",role:"img",preserveAspectRatio:"xMidYMid meet"},`fg-chart fg-chart-is-${e.type}`);e.title&&o.setAttribute("aria-label",e.title);let r=e.series.slice(0,Qt.length),s=e.categories,a=16;if(e.title){let M=q("text",{x:320,y:22,"text-anchor":"middle"},"fg-chart-title");M.textContent=e.title,o.append(M),a=36}let l=q("g",{},"fg-chart-legend"),d=e.type==="pie"||e.type==="donut",c=d?s:e.type==="scatter"?r.slice(1).map(M=>M.name):r.map(M=>M.name),u=16;c.forEach((M,T)=>{let P=q("g",{transform:`translate(${u},350)`},"fg-chart-legend-item");P.append(q("rect",{x:0,y:-9,width:10,height:10,rx:2,fill:he(T)}));let F=q("text",{x:14,y:0});F.textContent=M,P.append(F),l.append(P),u+=24+Math.min(140,M.length*7)});let p=308;if(e.type==="scatter"){jr(o,e,r,a,p,t,n),o.append(l),i.replaceChildren(o);return}if(d){let M=(r[0]?.values??[]).map(O=>O!==null&&O>0?O:0),T=M.reduce((O,z)=>O+z,0),P=640/2,F=(a+p)/2,A=Math.max(10,(p-a)/2-6),D=-Math.PI/2;M.forEach((O,z)=>{if(!O||!T)return;let B=D+O/T*Math.PI*2,X=B-D>Math.PI?1:0,V=K=>`${P+A*Math.cos(K)},${F+A*Math.sin(K)}`,G=O===T?`M${P-A},${F}a${A},${A} 0 1,0 ${2*A},0a${A},${A} 0 1,0 ${-2*A},0`:`M${P},${F}L${V(D)}A${A},${A} 0 ${X} 1 ${V(B)}Z`,_=q("path",{d:G,fill:he(z)},"fg-chart-slice");Fe(_,`${s[z]}: ${t.format(O)} (${Math.round(O/T*1e3)/10}%)`),o.append(_),D=B}),e.type==="donut"&&o.append(q("circle",{cx:P,cy:F,r:A*.58,fill:"var(--fg-bg, #fff)"},"fg-chart-donut-hole")),o.append(l),i.replaceChildren(o);return}let h=e.type==="stackedBar",v=0,w=0;s.forEach((M,T)=>{let P=0,F=0;for(let A of r){let D=A.values[T];D==null||!Number.isFinite(D)||(h?D>=0?P+=D:F+=D:(w=Math.max(w,D),v=Math.min(v,D)))}h&&(w=Math.max(w,P),v=Math.min(v,F))});let m=en(v,w),f=m[0],g=m[m.length-1],C=56,x=624,R=M=>p-(M-f)/(g-f)*(p-a),k=q("g",{},"fg-chart-axis");for(let M of m){k.append(q("line",{x1:C,x2:x,y1:R(M),y2:R(M)},M===0?"fg-chart-zero":"fg-chart-grid"));let T=q("text",{x:C-6,y:R(M)+4,"text-anchor":"end"});T.textContent=n.format(M),k.append(T)}let E=(x-C)/Math.max(1,s.length),b=Math.max(1,Math.ceil(s.length/Math.floor((x-C)/56)));s.forEach((M,T)=>{if(T%b)return;let P=q("text",{x:C+E*(T+.5),y:p+16,"text-anchor":"middle"}),F=Math.max(3,Math.min(12,Math.floor(E*b/10)));P.textContent=M.length>F?`${M.slice(0,F-1)}\u2026`:M,k.append(P)}),o.append(k);let S=q("g",{},"fg-chart-plot"),L=e.type==="combo";if(L){let M=E*.6,T=r[0];s.forEach((P,F)=>{let A=T?.values[F];if(A==null||!Number.isFinite(A))return;let D=C+E*F+(E-M)/2,O=q("rect",{x:D,y:Math.min(R(0),R(A)),width:Math.max(1,M-2),height:Math.max(.5,Math.abs(R(A)-R(0))),fill:he(0),rx:2},"fg-chart-bar");Fe(O,`${T.name} \xB7 ${P}: ${t.format(A)}`),S.append(O)})}if(e.type==="bar"||h){let M=E*.72,T=h?M:M/Math.max(1,r.length);s.forEach((P,F)=>{let A=0,D=0;r.forEach((O,z)=>{let B=O.values[F];if(B==null||!Number.isFinite(B))return;let X=0,V=B;h&&(X=B>=0?A:D,V=X+B,B>=0?A=V:D=V);let G=C+E*F+(E-M)/2+(h?0:T*z),_=q("rect",{x:G,y:Math.min(R(X),R(V)),width:Math.max(1,T-2),height:Math.max(.5,Math.abs(R(V)-R(X))),fill:he(z),rx:2},"fg-chart-bar");Fe(_,`${O.name} \xB7 ${P}: ${t.format(B)}`),S.append(_)})})}else r.forEach((M,T)=>{if(L&&T===0)return;let P=M.values.map((D,O)=>D==null||!Number.isFinite(D)?null:[C+E*(O+.5),R(D),D]),F="",A=!1;for(let D of P){if(!D){A=!1;continue}F+=`${A?"L":"M"}${D[0]},${D[1]}`,A=!0}if(e.type==="area"){let D=P.filter(O=>!!O);if(D.length){let O=`M${D[0][0]},${R(0)}${D.map(z=>`L${z[0]},${z[1]}`).join("")}L${D[D.length-1][0]},${R(0)}Z`;S.append(q("path",{d:O,fill:he(T),"fill-opacity":.18},"fg-chart-area"))}}S.append(q("path",{d:F,fill:"none",stroke:he(T),"stroke-width":2.2,"stroke-linejoin":"round"},"fg-chart-line")),P.forEach((D,O)=>{if(!D)return;let z=q("circle",{cx:D[0],cy:D[1],r:3.5,fill:he(T)},"fg-chart-point");Fe(z,`${M.name} \xB7 ${s[O]}: ${t.format(D[2])}`),S.append(z)})});o.append(S,l),i.replaceChildren(o)}function jr(i,e,t,n,o,r,s){let a=t[0]?.values??[],l=t.slice(1),d=R=>R!=null&&Number.isFinite(R),c=a.filter(d),u=l.flatMap(R=>R.values.filter(d));if(!c.length||!u.length)return;let p=en(Math.min(...c),Math.max(...c)),h=en(Math.min(...u),Math.max(...u)),v=56,w=624,m=R=>v+(R-p[0])/(p[p.length-1]-p[0])*(w-v),f=R=>o-(R-h[0])/(h[h.length-1]-h[0])*(o-n),g=q("g",{},"fg-chart-axis");for(let R of h){g.append(q("line",{x1:v,x2:w,y1:f(R),y2:f(R)},R===0?"fg-chart-zero":"fg-chart-grid"));let k=q("text",{x:v-6,y:f(R)+4,"text-anchor":"end"});k.textContent=s.format(R),g.append(k)}p.forEach((R,k)=>{let E=k===0?"start":k===p.length-1?"end":"middle",b=q("text",{x:m(R),y:o+16,"text-anchor":E});b.textContent=s.format(R),g.append(b)});let C=q("text",{x:w,y:o+32,"text-anchor":"end"},"fg-chart-axis-name");C.textContent=`${t[0]?.name??""} \u2192`,g.append(C),i.append(g);let x=q("g",{},"fg-chart-plot");a.forEach((R,k)=>{d(R)&&l.forEach((E,b)=>{let S=E.values[k];if(!d(S))return;let L=q("circle",{cx:m(R),cy:f(S),r:4,fill:he(b),"fill-opacity":.8},"fg-chart-point");Fe(L,`${e.categories[k]??""}: ${t[0].name} ${r.format(R)}, ${E.name} ${r.format(S)}`),x.append(L)})}),i.append(x)}var _r=12,ao=500,nn=["bar","stackedBar","line","area","combo","pie","donut","scatter"],yt=class{constructor(e){this.grid=e;this.handles=new Set}create(e={}){let{grid:t}=this,n=nn.includes(e.type)?e.type:"bar",o=()=>t.store.state.locale,r=e.range??t.store.state.range,s=null;if(r){let w=t.columns.getColumn(r.start.colId),m=t.columns.getColumn(r.end.colId);if(w&&m){let f=Ie({start:{rowIndex:r.start.rowIndex,colIndex:w.index},end:{rowIndex:r.end.rowIndex,colIndex:m.index}}),g=[];for(let C=f.r1;C<=f.r2&&g.length<ao;C++){let x=t.rowModel.getRow(C);x&&!x.kind&&g.push(x.data)}s={rows:g,colIds:t.columns.displayed().slice(f.c1,f.c2+1).filter(C=>!I(C.id)).map(C=>C.id)}}}let a=()=>{let w=s?s.rows:t.rowModel.dataRows().slice(0,ao).map(k=>k.data),m=(s?s.colIds.map(k=>t.columns.getColumn(k)):t.columns.displayed().filter(k=>!I(k.id))).filter(k=>!!k),f=m[0]&&m[0].def.type!=="number"?m[0]:s?null:m.find(k=>k.def.type!=="number")??null,g=k=>!!k.node.parent&&k.node.parent.id==="pivotgroup|total",C=m.filter(k=>k!==f&&k.def.type==="number"&&(s||!g(k))).slice(0,_r),x=k=>{let E=[];for(let b=k.node.parent;b;b=b.parent)E.unshift(b.def.header??b.id);return E.push(k.def.header??k.def.field??k.id),E.join(" \xB7 ")},R=f?W(f.def,o().code):null;return{categories:w.map((k,E)=>f&&R?R(N(f.def,k)):String(E+1)),series:C.map(k=>({name:x(k),values:w.map(E=>{let b=N(k.def,E),S=typeof b=="number"?b:b==null||b===""?NaN:Number(b);return Number.isFinite(S)?S:null})}))}},l=y("div","fg-chart-body"),d=null,c=()=>tn(l,{type:n,title:e.title,locale:o().code,...a()}),u=w=>({bar:o().chartBar,stackedBar:o().chartStacked,line:o().chartLine,area:o().chartArea,pie:o().chartPie,donut:o().chartDonut,combo:o().chartCombo,scatter:o().chartScatter})[w],p=()=>d?.querySelectorAll(".fg-chart-type").forEach(w=>w.setAttribute("aria-pressed",String(w.dataset.type===n)));if(e.container)e.container.append(l);else{d=y("div","fg-chart-panel",{role:"dialog","aria-label":e.title??u(n)});let w=y("div","fg-chart-head");for(let f of nn){let g=y("button","fg-chart-type",{type:"button",title:u(f)});g.dataset.type=f,g.textContent=u(f),g.addEventListener("click",()=>v.setType(f)),w.append(g)}let m=y("button","fg-chooser-close",{type:"button","aria-label":o().close});m.textContent="\xD7",m.addEventListener("click",()=>v.destroy()),w.append(y("span","fg-chart-spacer"),m),d.append(w,l),t.renderer.root.append(d)}let h=[t.events.on("cellValueChanged",()=>c()),t.events.on("rowsAdded",()=>c()),t.events.on("rowsRemoved",()=>c())];s||h.push(t.events.on("sortChange",()=>c()),t.events.on("filterChange",()=>c()));let v={el:l,setType:w=>{nn.includes(w)&&(n=w,p(),c())},update:()=>c(),destroy:()=>{h.forEach(w=>w()),(d??l).remove(),this.handles.delete(v)}};return this.handles.add(v),p(),c(),v}destroy(){for(let e of[...this.handles])e.destroy()}};function lo(i,e,t){return typeof i=="number"&&typeof e=="number"?i-e:i instanceof Date&&e instanceof Date?i.getTime()-e.getTime():typeof i=="boolean"&&typeof e=="boolean"?Number(i)-Number(e):t.compare(String(i),String(e))}function Xr(i,e){if(H(e))return null;if(i.type==="number"){let t=typeof e=="number"?e:Number(e);return Number.isNaN(t)?null:t}return i.type==="date"?oe(e)?.getTime()??null:e}function we(i,e,t){let n=H(i),o=H(e);return n||o?n===o?0:n?1:-1:lo(i,e,t)}function co(i,e,t,n){let o=e.map(a=>({def:t(a.colId),mul:a.dir==="desc"?-1:1})).filter(a=>!!a.def);if(!o.length)return i;let r=o.map(a=>i.map(l=>{let d=N(a.def,l.data);return a.def.comparator?d:Xr(a.def,d)})),s=i.map((a,l)=>l);return s.sort((a,l)=>{for(let d=0;d<o.length;d++){let{def:c,mul:u}=o[d],p=r[d][a],h=r[d][l],v;if(c.comparator)try{v=(Number(c.comparator(p,h,i[a].data,i[l].data))||0)*u}catch{$(`comparator of column "${c.id??c.field}" threw; treating values as equal`),v=0}else{let w=H(p),m=H(h);v=w||m?w===m?0:w?1:-1:lo(p,h,n)*u}if(v)return v}return a-l}),s.map(a=>i[a])}var uo=new WeakMap,Yr=i=>typeof i=="function"?"custom":i;function on(i,e){return{rows:(i.rows??[]).filter(e),columns:(i.columns??[]).filter(e),values:(i.values??[]).filter(t=>t&&e(t.colId)).map(t=>({colId:t.colId,aggFunc:t.aggFunc??"sum"})),totals:i.totals!==!1}}function ho(i,e,t,n,o){let r=on(e,C=>!!t(C)),s=new Intl.Collator(o,{numeric:!0,sensitivity:"base"}),a=C=>t(C),l=(C,x)=>C.map(R=>Y(N(a(R),x))).join(""),d=new Map;for(let C of i){let x=l(r.columns,C);d.has(x)||d.set(x,r.columns.map(R=>N(a(R),C)))}let c=[...d.entries()].sort((C,x)=>{for(let R=0;R<r.columns.length;R++){let k=we(C[1][R],x[1][R],s);if(k)return k}return 0});r.columns.length||c.splice(0,c.length,["",[]]);let u=[],p=(C,x,R)=>{let k=r.values[x],E=a(k.colId),b=`pivot|${R}|${x}`;u.push({id:b,comboKey:C,valueIndex:x});let S=M=>C===null||l(r.columns,M)===C,L=k.aggFunc;return{id:b,field:b,header:`${E.header??E.field??k.colId} (${n.agg(Yr(L))})`,type:"number",format:L==="count"?"integer":E.format,width:130,aggFunc:(M,T)=>{let P=T.flatMap(F=>uo.get(F)??[]).filter(S);return P.length?be(L,P.map(F=>N(E,F)),P):null}}},h=[],v=(C,x)=>{if(H(x))return n.blank;let R=a(C);return R.type==="number"&&!R.format?String(x):W(R,o)(x)};if(!r.columns.length)r.values.forEach((C,x)=>h.push(p("",x,0)));else{let C=(x,R,k)=>{let E=[],b=0;for(;b<x.length;){let S=x[b][1][R],L=Y(S),M=b;for(;M<x.length&&Y(x[M][1][R])===L;)M++;let T=x.slice(b,M),P=R===r.columns.length-1?r.values.map((F,A)=>p(T[0][0],A,k+b)):C(T,R+1,k+b);E.push({id:`pivotgroup|${R}|${k+b}`,header:v(r.columns[R],S),children:P}),b=M}return E};h.push(...C(c,0,0)),r.totals&&r.values.length&&h.push({id:"pivotgroup|total",header:n.total,children:r.values.map((x,R)=>p(null,R,"total"))})}let w=new Map;for(let C of i){let x=l(r.rows,C),R=w.get(x);R||w.set(x,R={values:r.rows.map(k=>N(a(k),C)),src:[]}),R.src.push(C)}let f=[...w.values()].sort((C,x)=>{for(let R=0;R<r.rows.length;R++){let k=we(C.values[R],x.values[R],s);if(k)return k}return 0}).map(C=>{let x={};r.rows.forEach((k,E)=>{x[a(k).field??k]=C.values[E]});let R=new Map;if(r.columns.length)for(let k of C.src){let E=l(r.columns,k),b=R.get(E);b||R.set(E,b=[]),b.push(k)}for(let k of u){let E=r.values[k.valueIndex],b=k.comboKey===null||!r.columns.length?C.src:R.get(k.comboKey)??[],S=a(E.colId);x[k.id]=b.length?be(E.aggFunc,b.map(L=>N(S,L)),b):null}return uo.set(x,C.src),x});return{columns:[...r.rows.map(C=>{let x=a(C);return{id:C,field:x.field??C,header:x.header??x.field??C,type:x.type,format:x.format,width:x.width??140}}),...h],rows:f,groupBy:r.rows.slice(0,-1)}}var bt="1.0.0";var Zr={kty:"EC",crv:"P-256",x:"sUTKkglZmk-HMKPNub8p7AeLBKesHCU8irIkw9rJlbE",y:"j0U_aKRDR7iApY9UpaD3hUemhBLZJwDv9-QiT_hUyw8"},rn="https://freegrid.app/pricing/",fo="https://freegrid.app/api/usage",Jr="https://freegrid.app/api/domain-status",po=i=>{let e=atob(i.replace(/-/g,"+").replace(/_/g,"/")+"=".repeat((4-i.length%4)%4));return Uint8Array.from(e,t=>t.charCodeAt(0))};function an(i){let e=i.toLowerCase().replace(/^\[|\]$/g,"");return!e||e==="localhost"||e==="127.0.0.1"||e==="::1"||e==="0.0.0.0"||e.endsWith(".localhost")||e.endsWith(".test")||e.endsWith(".local")||/^(10|192\.168|172\.(1[6-9]|2\d|3[01]))\./.test(e)}function Qr(i,e){let t=i.toLowerCase().replace(/\.$/,"");return e.some(n=>{let o=n.toLowerCase().replace(/\.$/,""),r=o.startsWith("*."),s=r?o.slice(2):o;return s?t===s||t===`www.${s}`?!0:r&&t.endsWith(`.${s}`):!1})}var ei=i=>`${i.getFullYear()}-${String(i.getMonth()+1).padStart(2,"0")}-${String(i.getDate()).padStart(2,"0")}`;async function vo(i,e,t={}){let n=typeof i=="string"?i.trim().split("."):[];if(n.length!==3||n[0]!=="FG1")return{ok:!1,reason:"format"};let o;try{if(o=JSON.parse(new TextDecoder().decode(po(n[1]))),!Array.isArray(o.domains)||typeof o.expires!="string")return{ok:!1,reason:"format"}}catch{return{ok:!1,reason:"format"}}let r=typeof crypto<"u"?crypto.subtle:void 0;if(!r)return{ok:!1,reason:"unsupported",info:o};try{let s=await r.importKey("jwk",t.publicKey??Zr,{name:"ECDSA",namedCurve:"P-256"},!1,["verify"]),a=new TextEncoder().encode(`${n[0]}.${n[1]}`);if(!await r.verify({name:"ECDSA",hash:"SHA-256"},s,po(n[2]),a))return{ok:!1,reason:"signature",info:o}}catch{return{ok:!1,reason:"signature",info:o}}return ei(t.now??new Date)>o.expires?{ok:!1,reason:"expired",info:o}:Qr(e,o.domains)?{ok:!0,info:o}:{ok:!1,reason:"domain",info:o}}var sn,go=new Map,Ne=null;function ti(i){sn=i}var mo={missing:`FreeGrid is free for personal use. Company use needs a domain license (\u20A9200,000 per domain per year): ${rn}
|
|
16
|
-
|
|
17
|
-
${rn}`),!1},()=>!1):(console.info(mo.missing),wo({version:bt,licensed:!1},e),o=Promise.resolve(!1)),go.set(n,o),o)}function oi(i=typeof location<"u"?location.hostname:""){if(an(i)||typeof fetch!="function")return Promise.resolve(!1);if(Ne)return Ne;let e=new Date().toISOString().slice(0,10),t=null;try{t=typeof localStorage<"u"?localStorage:null;let n=JSON.parse(t?.getItem("freegrid:badge")??"null");if(n&&n.host===i&&n.day===e)return Ne=Promise.resolve(n.show)}catch{}return Ne=fetch(Jr,{mode:"cors",credentials:"omit"}).then(n=>n.ok?n.json():{badge:!1}).then(n=>{let o=n.badge===!0;try{t?.setItem("freegrid:badge",JSON.stringify({host:i,day:e,show:o}))}catch{}return o},()=>!1),Ne}async function yo(i,e=typeof location<"u"?location.hostname:""){return await ni(i,e)?!1:oi(e)}var Oe={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"]},bo=["blank","notBlank"],ln=500,xt=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){this.close();let n=this.grid.columns.getNode(e);if(!n||n.children||I(e))return;let o=this.grid.store.state.locale,r=n.def,s=y("div",`fg-menu fg-theme-${this.grid.store.state.theme}`,{role:"dialog","aria-label":o.columnMenu});this.grid.applyFontTo(s),ge(r)&&s.append(this.section([[o.sortAsc,()=>this.grid.setSort([{colId:e,dir:"asc"}])],[o.sortDesc,()=>this.grid.setSort([{colId:e,dir:"desc"}])],[o.clearSort,()=>this.grid.setSort(this.grid.store.state.sort.filter(w=>w.colId!==e))]])),s.append(this.section([[o.pinLeft,()=>this.grid.setPinned(e,"left")],[o.pinRight,()=>this.grid.setPinned(e,"right")],[o.unpin,()=>this.grid.setPinned(e,null)]]));let a=this.grid.getGroupBy();if(!this.grid.options.treeData&&(this.grid.options.groupPanel||a.length)){let w=a.includes(e)?[[o.ungroup,()=>this.grid.setGroupBy(a.filter(m=>m!==e))]]:[[o.groupByThis,()=>this.grid.setGroupBy([...a,e])]];a.length&&w.push([o.expandAll,()=>this.grid.expandAll(!0)],[o.collapseAll,()=>this.grid.expandAll(!1)]),s.append(this.section(w))}let l=[[o.autosizeThis,()=>this.grid.autoSize([e])],[o.autosizeAll,()=>this.grid.autoSize()]];r.lockVisible||l.push([o.hideColumn,()=>this.grid.setColumnsVisible([e],!1)]),l.push([o.chooseColumns,()=>this.grid.chooser.open()],[o.resetColumns,()=>this.grid.resetColumns()]),s.append(this.section(l));let d=this.filterSection(e,()=>this.close());d&&s.append(d),te(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 p=Math.max(4,Math.min(c.bottom+4,window.innerHeight-240));s.style.top=`${p}px`,s.style.maxHeight=`${Math.max(160,window.innerHeight-p-8)}px`,this.popup=s,this.colId=e;let h=w=>{ue(w,s,t)||this.close()},v=w=>{w.key==="Escape"&&(this.close(),this.grid.renderer.gridEl.focus())};document.addEventListener("pointerdown",h,!0),document.addEventListener("keydown",v,!0),this.off.push(()=>document.removeEventListener("pointerdown",h,!0),()=>document.removeEventListener("keydown",v,!0)),s.querySelector(".fg-filter-value:not([hidden]), .fg-set-search, .fg-menu-item")?.focus()}filterSection(e,t){let n=this.grid.columns.getNode(e);if(!n||n.children)return null;let o=this.grid.store.state.locale,r=ne(n.def);return r==="set"?this.setFilter(e,o,t):r?this.conditionFilter(e,r,o,t):null}close(){for(let e of this.off)e();this.off=[],this.popup?.remove(),this.popup=null,this.colId=null}section(e){let t=y("div","fg-menu-section");for(let[n,o]of e){let r=y("button","fg-menu-item",{type:"button"});r.textContent=n,r.addEventListener("click",()=>{o(),this.close()}),t.append(r)}return t}actions(e,t,n,o){let r=y("div","fg-menu-actions"),s=y("button","fg-btn",{type:"button"});s.textContent=t.reset,s.addEventListener("click",()=>{this.grid.setFilter(e,null),o()});let a=y("button","fg-btn fg-btn-primary",{type:"button"});return a.textContent=t.apply,a.addEventListener("click",n),r.append(s,a),r}title(e){let t=y("div","fg-menu-title");return t.textContent=e.filter,t}conditionRow(e,t,n,o,r){let s=y("div","fg-filter-cond"),a=y("select","fg-filter-op",{"aria-label":t.filter});if(o){let h=y("option");h.value="",h.textContent="\u2014",a.append(h)}for(let h of Oe[e]){let v=y("option");v.value=h,v.textContent=t.ops[h],a.append(v)}a.value=n?.op??(o?"":Oe[e][0]);let l=e==="text"?"text":e,d=y("input","fg-input fg-filter-value",{type:l,placeholder:t.value,"aria-label":t.value}),c=y("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||bo.includes(a.value),c.hidden=a.value!=="between"};a.addEventListener("change",u),u();for(let h of[d,c])h.addEventListener("keydown",v=>v.key==="Enter"&&r());return s.append(a,d,c),{row:s,read:()=>{let h=a.value;if(!h)return null;let v=!bo.includes(h);if(e==="number"){let w=d.value===""?void 0:Number(d.value),m=c.value===""?void 0:Number(c.value);return!v||w!==void 0?{type:e,op:h,value:w,valueTo:m}:null}return e==="date"?!v||d.value?{type:e,op:h,value:d.value||void 0,valueTo:c.value||void 0}:null:!v||d.value?{type:e,op:h,value:d.value}:null}}}conditionFilter(e,t,n,o){let r=this.grid.store.state.filters[e],s=r?.type==="combined"?r.conditions:r?[r]:[],a=s[0]?.type===t?s[0]:void 0,l=s[1]?.type===t?s[1]:void 0,d=y("div","fg-menu-section fg-filter"),c=()=>{let w=u.read(),m=p.read(),f=h.querySelector("input:checked")?.value==="or"?"or":"and",g=w&&m?{type:"combined",operator:f,conditions:[w,m]}:w??m;this.grid.setFilter(e,g),o()},u=this.conditionRow(t,n,a,!1,c),p=this.conditionRow(t,n,l,!0,c),h=y("div","fg-filter-join",{role:"radiogroup"}),v=`fg-join-${e}-${Math.random().toString(36).slice(2,7)}`;for(let w of["and","or"]){let m=y("label"),f=y("input","",{type:"radio",name:v,value:w});f.checked=(r?.type==="combined"?r.operator:"and")===w,m.append(f,` ${n[w]}`),h.append(m)}return d.append(this.title(n),u.row,h,p.row,this.actions(e,n,c,o)),d}setFilter(e,t,n){let{grid:o}=this,r=o.columns.getNode(e).def,s=W(r,t.code),a=o.collator(),l=new Map;for(let k of o.rowModel.allNodes()){let E=N(r,k.data),b=Y(E);l.has(b)||l.set(b,E)}let d=[...l.entries()].sort((k,E)=>we(k[1],E[1],a)),c=o.store.state.filters[e],u=new Set(c?.type==="set"?c.values.map(Y).filter(k=>l.has(k)):l.keys()),p=(k,E)=>k===""?t.blanks:s(E),h=y("div","fg-menu-section fg-filter fg-set-filter"),v=y("input","fg-input fg-set-search",{type:"search",placeholder:t.search,"aria-label":t.search}),w=y("label","fg-set-item fg-set-all"),m=y("input","fg-checkbox",{type:"checkbox"});w.append(m,document.createTextNode(t.selectAll));let f=y("div","fg-set-list"),g=()=>{let k=v.value.trim().toLowerCase();return k?d.filter(([E,b])=>p(E,b).toLowerCase().includes(k)):d},C=()=>{let k=g(),E=k.filter(([b])=>u.has(b)).length;m.checked=E>0&&E===k.length,m.indeterminate=E>0&&E<k.length},x=()=>{let k=g();if(f.replaceChildren(...k.slice(0,ln).map(([E,b])=>{let S=y("label","fg-set-item"),L=y("input","fg-checkbox",{type:"checkbox"});return L.checked=u.has(E),L.addEventListener("change",()=>{L.checked?u.add(E):u.delete(E),C()}),S.append(L,document.createTextNode(p(E,b))),S})),k.length>ln){let E=y("div","fg-set-more");E.textContent=`\u2026 +${k.length-ln}`,f.append(E)}C()};m.addEventListener("change",()=>{for(let[k]of g())m.checked?u.add(k):u.delete(k);x()}),v.addEventListener("input",x);let R=()=>{o.setFilter(e,u.size===l.size?null:{type:"set",values:d.filter(([k])=>u.has(k)).map(([,k])=>k)}),n()};return v.addEventListener("keydown",k=>k.key==="Enter"&&R()),x(),h.append(this.title(t),v,w,f,this.actions(e,t,R,n)),h}};var xo=new WeakMap,ri=0;function ve(i){let e=xo.get(i);return e||xo.set(i,e=`r${++ri}`),e}var Ct=class{constructor(e){this.deps=e;this.stats={filterRuns:0,sortRuns:0};this.server=!1;this.full=[];this.last={};this.nodes=[];this.filtered=[];this.sorted=[];this.display=[];this.indexById=null;this.layoutCache=null}update(e){let t=this.deps.collator(),n=e.display,o=!!n?.getParentId!=!!this.last.display?.getParentId,r=e.data!==this.last.data,s=r||o||e.filters!==this.last.filters||e.quickFilter!==this.last.quickFilter||e.advancedFilter!==this.last.advancedFilter,a=s||e.sort!==this.last.sort||t!==this.last.collator,l=a||n?.version!==this.last.displayVersion||n?.groupBy!==this.last.display?.groupBy;if(r){let u=this.deps.getRowId;this.nodes=e.data.map((p,h)=>({id:u?String(u(p)):ve(p),data:p,sourceIndex:h}))}s&&(this.filtered=this.filter(e),this.stats.filterRuns++),a&&(this.sorted=co(this.filtered,e.sort,u=>this.deps.columnDef(u),t),this.stats.sortRuns++),l&&(this.full=n?this.buildDisplay(n,e.sort,t):this.sorted);let d=e.page??null,c=this.last.page??null;(l||d?.index!==c?.index||d?.size!==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?.version}}invalidate(){this.last={}}fullCount(){return this.full.length}dataCount(){return this.sorted.length}loading(){return!1}getRowCount(){return this.display.length}getRow(e){return this.display[e]}rows(){return this.display}dataRows(){return this.sorted}allNodes(){return this.nodes}idOf(e){return this.deps.getRowId?String(this.deps.getRowId(e)):ve(e)}indexOfId(e){return this.indexById||(this.indexById=new Map(this.display.map((t,n)=>[t.id,n]))),this.indexById.get(e)??-1}layout(e,t,n,o=0,r){let s=this.layoutCache;if(s&&s.rows===this.display&&s.rh===e&&s.dh===t&&s.hv===o)return s;let a=this.display.length,l=new Float64Array(a+1),d=!0,c=n&&n.size?n:null;for(let u=0;u<a;u++){let p=this.display[u],h=e;if(p.kind==="detail")h=t;else if(!p.kind){c&&(h=c.get(p.id)??e);let v=r?.(p.data);typeof v=="number"&&v>0&&(h=c?Math.max(h,v):v)}h!==e&&(d=!1),l[u+1]=l[u]+h}return this.layoutCache={rows:this.display,rh:e,dh:t,hv:o,offsets:l,uniform:d},this.layoutCache}filter(e){let t=Object.entries(e.filters).map(([c,u])=>({def:this.deps.columnDef(c),pred:_e(u)})).filter(c=>!!c.def),n=Fn(e.quickFilter),o=n.length?this.deps.quickColumns():[],r=e.advancedFilter?Dt(e.advancedFilter,c=>this.deps.columnDef(c),N):null;if(!t.length&&!n.length&&!r)return this.nodes;let s=this.nodes.filter(c=>{for(let u of t)if(!u.pred(N(u.def,c.data)))return!1;if(r&&!r(c.data))return!1;if(n.length){let u=o.map(p=>this.deps.format(p,N(p,c.data))).join("").toLowerCase();if(!Nn(n,u))return!1}return!0}),a=e.display?.getParentId;if(!a)return s;let l=new Map(this.nodes.map(c=>[c.id,c])),d=new Set(s);for(let c of s){let u=a(c.data),p=new Set;for(;u!=null&&!p.has(u);){p.add(u);let h=l.get(String(u));if(!h)break;d.add(h),u=a(h.data)}}return this.nodes.filter(c=>d.has(c))}isOpen(e,t,n){let o=e.expanded.get(t);return o!==void 0?o:e.defaultExpanded===-1||n<e.defaultExpanded}withDetails(e,t,n){for(let o of t)n.push(o),e.detailOpen.has(o.id)&&(!e.isMaster||e.isMaster(o.data))&&n.push({id:`detail:${o.id}`,data:{},sourceIndex:-1,kind:"detail",detailOf:o})}buildDisplay(e,t,n){let o=[];if(e.getParentId)return this.buildTree(e,o),o;let r=e.groupBy.filter(a=>this.deps.columnDef(a));if(!r.length)return e.detailOpen.size?(this.withDetails(e,this.sorted,o),o):this.sorted;let s=(a,l,d)=>{let c=r[l],u=this.deps.columnDef(c),p=new Map;for(let w of a){let m=N(u,w.data),f=H(m)?"":Y(m),g=p.get(f);g||p.set(f,g={value:m,nodes:[]}),g.nodes.push(w)}let h=t.find(w=>w.colId===c)?.dir==="desc"?-1:1,v=[...p.entries()].sort((w,m)=>we(w[1].value,m[1].value,n)*h);for(let[w,m]of v){let f=`${d}${c}:${w}`,g=this.isOpen(e,f,l);o.push({id:`group:${f}`,data:{},sourceIndex:-1,kind:"group",level:l,group:{key:f,colId:c,value:m.value,rows:m.nodes.map(C=>C.data),expanded:g}}),g&&(l+1<r.length?s(m.nodes,l+1,`${f}|`):this.withDetails(e,m.nodes.map(C=>({...C,level:l+1})),o))}};return s(this.sorted,0,""),o}buildTree(e,t){let n=new Set(this.sorted.map(a=>a.id)),o=new Map,r=[];for(let a of this.sorted){let l=e.getParentId(a.data),d=l==null?null:String(l);if(d!==null&&n.has(d)&&d!==a.id){let c=o.get(d);c||o.set(d,c=[]),c.push(a)}else r.push(a)}let s=(a,l,d)=>{for(let c of a){if(d.has(c.id))continue;let u=o.get(c.id)??[],p=!u.length&&!!e.lazyChildren?.(c.id,c.data),h=u.length>0&&this.isOpen(e,c.id,l),v={...c,level:l,hasChildren:u.length>0||p,expanded:h};p&&e.loading?.has(c.id)&&(v.loading=!0),this.withDetails(e,[v],t),h&&s(u,l+1,new Set([...d,c.id]))}};s(r,0,new Set)}};var ii=1e4,Rt=class{constructor(e,t,n,o,r){this.datasource=e;this.getRowId=t;this.groupBy=n;this.query=o;this.onChange=r;this.levels=new Map;this.gen=0;this.display=null;this.ids=null;this.version=0;this.builtFor=-1}matches(e,t){return e.join("")===this.groupBy.join("")&&t.sort===this.query.sort&&t.filters===this.query.filters&&t.quickFilter===this.query.quickFilter&&t.advancedFilter===this.query.advancedFilter}purge(){this.gen++,this.levels.clear(),this.touch()}touch(){this.version++,this.display=null,this.ids=null}load(e,t,n){if(this.levels.has(e))return;let o=this.gen;this.levels.set(e,{state:"loading",nodes:[]});let r=n>=this.groupBy.length,s=this.query,a;try{a=Promise.resolve(this.datasource.getRows({start:0,end:ii,sort:[...s.sort],filters:{...s.filters},quickFilter:s.quickFilter,advancedFilter:s.advancedFilter,groupBy:[...this.groupBy],groupKeys:[...t]}))}catch(l){a=Promise.reject(l)}a.then(l=>{if(o!==this.gen)return;let d=Array.isArray(l?.rows)?l.rows.filter(u=>u!==null&&typeof u=="object"):[];Array.isArray(l?.rows)||$("datasource.getRows must resolve to { rows: Row[] }");let c=r?d.map((u,p)=>({id:this.getRowId?String(this.getRowId(u)):ve(u),data:u,sourceIndex:p,level:n})):d.map(u=>{let p=this.groupBy[n],h=u[p],v=`${e?`${e}|`:""}${p}:${Y(h)}`,w=typeof u.count=="number"?u.count:typeof u.childCount=="number"?u.childCount:void 0;return{id:`group:${v}`,data:{},sourceIndex:-1,kind:"group",level:n,group:{key:v,colId:p,value:h,rows:[],expanded:!1,count:w,aggregates:u,keys:[...t,h]}}});this.levels.set(e,{state:"loaded",nodes:c}),this.touch(),this.onChange()},()=>{o===this.gen&&(this.levels.set(e,{state:"failed",nodes:[]}),this.touch(),this.onChange())})}isOpen(e,t,n){let o=e.expanded.get(t);return o!==void 0?o:e.defaultExpanded===-1||n<e.defaultExpanded}rows(e,t){if(this.display&&this.builtFor===t)return this.display;let n=[],o=(r,s,a)=>{let l=this.levels.get(r);if(!l){this.load(r,s,a),n.push({id:`loading:${r}`,data:{},sourceIndex:-1,kind:"loading",level:a});return}if(l.state!=="loaded"){l.state==="loading"&&n.push({id:`loading:${r}`,data:{},sourceIndex:-1,kind:"loading",level:a});return}for(let d of l.nodes){if(d.kind!=="group"){n.push(d);continue}let c=d.group,u=this.isOpen(e,c.key,a),p={...d,group:{...c,expanded:u}};n.push(p),u&&o(c.key,c.keys??[],a+1)}};return o("",[],0),this.display=n,this.builtFor=t,this.ids=null,n}dataRows(){let e=[];for(let t of this.levels.values())for(let n of t.nodes)n.kind||e.push(n);return e}dataCount(){let e=this.levels.get("");return e?.state==="loaded"&&e.nodes.every(t=>typeof t.group?.count=="number")?e.nodes.reduce((t,n)=>t+(n.group?.count??0),0):this.dataRows().length}loading(){for(let e of this.levels.values())if(e.state==="loading")return!0;return!1}indexOf(e){return this.display?(this.ids||(this.ids=new Map,this.display.forEach((t,n)=>this.ids.set(t.id,n))),this.ids.get(e)??-1):-1}};var si=3e3,ai=new Float64Array(0),He=class{constructor(e){this.deps=e;this.stats={filterRuns:0,sortRuns:0};this.server=!0;this.blocks=new Map;this.total=null;this.loadedEnd=0;this.gen=0;this.query=null;this.page=null;this.lastBlock=0;this.version=0;this.cache=null;this.groups=null;this.displayIn=null}get bs(){return this.page?this.page.size:this.deps.blockSize}get base(){return this.page?this.page.index*this.page.size:0}update(e){let t=e.display?.groupBy??[];if(t.length&&!e.display?.getParentId){let a={sort:e.sort,filters:e.filters,quickFilter:e.quickFilter,advancedFilter:e.advancedFilter??null};(!this.groups||!this.groups.matches(t,a))&&(this.groups=new Rt(this.deps.datasource,this.deps.getRowId,[...t],a,()=>this.deps.onLoaded(0,0,null)),this.touch()),this.displayIn=e.display??null,this.query=null;return}this.groups&&(this.groups=null,this.query=null,this.touch());let n=this.query,o=!n||n.sort!==e.sort||n.filters!==e.filters||n.quickFilter!==e.quickFilter||n.advancedFilter!==(e.advancedFilter??null),r=e.page??null,s=(r?.size??0)!==(this.page?.size??0);this.query={sort:e.sort,filters:e.filters,quickFilter:e.quickFilter,advancedFilter:e.advancedFilter??null},this.page=r?{...r}:null,(o||s)&&this.purge(),this.ensure(Math.floor(this.base/this.bs))}invalidate(){}purge(){if(this.groups){this.groups.purge();return}this.gen++,this.blocks.clear(),this.total=null,this.loadedEnd=0,this.touch(),this.query&&this.ensure(Math.floor(this.base/this.bs))}touch(){this.version++,this.cache=null}fullCount(){if(this.total!==null)return this.total;if(!this.loadedEnd)return 0;let e=this.blocks.get(Math.floor((this.loadedEnd-1)/this.bs));return this.loadedEnd+(e&&e.nodes.length<this.bs?0:this.bs)}getRowCount(){if(this.groups)return this.groupRows().length;let e=this.fullCount();return this.page?Math.max(0,Math.min(this.page.size,e-this.base)):e}dataCount(){return this.groups?this.groups.dataCount():this.fullCount()}loading(){if(this.groups)return this.groups.loading();for(let e of this.blocks.values())if(e.state==="loading")return!0;return!1}placeholder(e){return{id:`loading:${e}`,data:{},sourceIndex:-1,kind:"loading"}}peek(e){let t=Math.floor(e/this.bs),n=this.blocks.get(t);return n?.state==="loaded"?n.nodes[e-t*this.bs]??null:null}groupRows(){return this.groups.rows(this.displayIn,this.displayIn.version*1e6+this.groups.version)}getRow(e){if(this.groups)return this.groupRows()[e];let t=this.base+e,n=this.peek(t);return n||(e>=0&&e<this.getRowCount()&&this.ensure(Math.floor(t/this.bs)),this.placeholder(t))}ensure(e){let t=this.blocks.get(e);if(t&&(t.state!=="failed"||Date.now()<(t.retryAt??0))||this.total!==null&&e*this.bs>=this.total&&e>0)return;let n=e*this.bs,o=n+this.bs,r=this.gen;this.lastBlock=e,this.blocks.set(e,{state:"loading",nodes:[]});let s=this.query,a=d=>{r===this.gen&&(this.blocks.set(e,{state:"failed",nodes:[],retryAt:Date.now()+si}),this.deps.onFailed(n,o,d))},l;try{l=Promise.resolve(this.deps.datasource.getRows({start:n,end:o,sort:[...s.sort],filters:{...s.filters},quickFilter:s.quickFilter,advancedFilter:s.advancedFilter}))}catch(d){l=Promise.reject(d)}l.then(d=>{if(r!==this.gen)return;let c=Array.isArray(d?.rows)?d.rows.filter(h=>h!==null&&typeof h=="object"):null;if(!c){$("datasource.getRows must resolve to { rows: Row[], total?: number }"),a(new Error("invalid datasource response"));return}let u=this.deps.getRowId,p=c.slice(0,this.bs).map((h,v)=>({id:u?String(u(h)):ve(h),data:h,sourceIndex:n+v}));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,o)=>Math.abs(o-this.lastBlock)-Math.abs(n-this.lastBlock));for(let n of t){if(this.blocks.size<=e)break;this.blocks.get(n).state!=="loading"&&this.blocks.delete(n)}}built(){if(this.cache?.ver===this.version)return this.cache;let e=[];for(let n of[...this.blocks.keys()].sort((o,r)=>o-r)){let o=this.blocks.get(n);o.state==="loaded"&&e.push(...o.nodes)}let t=new Map;for(let n of e)t.set(n.id,n.sourceIndex);return this.cache={ver:this.version,data:e,rows:null,ids:t},this.cache}rows(){if(this.groups)return this.groupRows();let e=this.built();if(!e.rows){let t=this.getRowCount();e.rows=new Array(t);for(let n=0;n<t;n++)e.rows[n]=this.peek(this.base+n)??this.placeholder(this.base+n)}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)):ve(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:ai,uniform:!0}}};function Co(i){let e=i.idAt(i.index);if(i.mode==="single"){let t=new Set;return i.toggle&&i.selected.has(e)||t.add(e),{selected:t,anchorIndex:i.index}}if(i.range&&i.anchorIndex!=null){let t=i.toggle?new Set(i.selected):new Set,n=Math.min(i.anchorIndex,i.index),o=Math.max(i.anchorIndex,i.index);for(let r=n;r<=o;r++)t.add(i.idAt(r));return{selected:t,anchorIndex:i.anchorIndex}}if(i.toggle){let t=new Set(i.selected);return t.has(e)?t.delete(e):t.add(e),{selected:t,anchorIndex:i.index}}return{selected:new Set([e]),anchorIndex:i.index}}var kt=class{constructor(e){this.bus=new xe;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 li=500;function Ro(i){let e=i.renderer.root,t=0,n=null,o=null,r=()=>{clearTimeout(t),n?.remove(),n=null,o=null},s=c=>{let u=c.dataset.col;if(!u||I(u))return null;let p=i.columns.getNode(u);if(!p)return null;if(c.classList.contains("fg-header-cell"))return p.def.headerTooltip??null;let h=c.closest(".fg-row[data-row]");if(!h||!c.closest(".fg-body"))return null;let v=Number(h.dataset.row),w=i.rowModel.getRow(v);if(!w||w.kind)return null;let m=p.def,f=N(m,w.data),g=W(m,i.store.state.locale.code)(f);if(typeof m.tooltip=="function")try{let C=m.tooltip({value:f,formatted:g,row:w.data,rowIndex:v,column:m});return C?String(C):null}catch{return $(`tooltip of column "${u}" threw`),null}return m.tooltip===!0?g||null:i.options.overflowTooltip!==!1&&m.tooltip!==!1&&c.scrollWidth>c.clientWidth+1&&c.textContent||null},a=(c,u)=>{n?.remove(),n=y("div",`fg-tooltip fg-theme-${i.store.state.theme}`,{role:"tooltip"}),n.textContent=u,i.applyFontTo(n),te(e).append(n);let p=c.getBoundingClientRect(),h=n.offsetWidth,v=n.offsetHeight,w=window.innerWidth||1024,m=window.innerHeight||768,f=p.bottom+6+v>m?p.top-v-6:p.bottom+6;n.style.left=`${Math.max(4,Math.min(w-h-4,p.left))}px`,n.style.top=`${Math.max(4,f)}px`},l=c=>{let u=c.target.closest?.(".fg-cell, .fg-header-cell");!u||u===o||!e.contains(u)||(r(),o=u,t=window.setTimeout(()=>{if(o!==u||!u.isConnected)return;let p=s(u);p&&a(u,p)},li))},d=c=>{let u=c.relatedTarget;o&&u&&o.contains(u)||r()};return e.addEventListener("pointerover",l),e.addEventListener("pointerout",d),e.addEventListener("pointerdown",r),e.addEventListener("keydown",r),e.addEventListener("wheel",r,{passive:!0}),()=>{r(),e.removeEventListener("pointerover",l),e.removeEventListener("pointerout",d),e.removeEventListener("pointerdown",r),e.removeEventListener("keydown",r),e.removeEventListener("wheel",r)}}var ko=["blank","notBlank"],St=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&&!I(e.id)&&ne(e.def)).map(e=>{let t=ne(e.def),n=t==="number"?"number":t==="date"?"date":"text";return{id:e.id,label:e.def.header??e.def.field??e.id,kind:n}})}open(){this.close();let{grid:e}=this,t=e.store.state.locale,n=this.columns(),o=y("div",`fg-menu fg-filter-builder fg-theme-${e.store.state.theme}`,{role:"dialog","aria-label":t.advancedFilter});e.applyFontTo(o);let r=y("div","fg-chooser-head"),s=y("span","fg-menu-title");s.textContent=t.advancedFilter;let a=y("button","fg-chooser-close",{type:"button","aria-label":t.close});a.textContent="\xD7",a.addEventListener("click",()=>this.close()),r.append(s,a);let l=e.store.state.advancedFilter,d=y("div","fg-filter-join",{role:"radiogroup"}),c=`fg-fb-join-${Math.random().toString(36).slice(2,7)}`;for(let S of["and","or"]){let L=y("label"),M=y("input","",{type:"radio",name:c,value:S});M.checked=(l?.operator??"and")===S,L.append(M,` ${t[S]}`),d.append(L)}let u=y("div","fg-fb-list"),p=[],h=S=>{p.splice(p.indexOf(S),1),S.el.remove()},v=S=>{let L=y("div","fg-fb-row"),M=y("select","fg-filter-op fg-fb-col",{"aria-label":t.columns});for(let V of n){let G=y("option");G.value=V.id,G.textContent=V.label,M.append(G)}let T=y("select","fg-filter-op fg-fb-op",{"aria-label":t.filter}),P=y("input","fg-input fg-fb-value",{type:"text",placeholder:t.value,"aria-label":t.value}),F=y("input","fg-input fg-fb-value-to",{type:"text",placeholder:t.valueTo,"aria-label":t.valueTo}),A=y("button","fg-chooser-close fg-fb-remove",{type:"button","aria-label":t.close});A.textContent="\xD7";let D=()=>n.find(V=>V.id===M.value)?.kind??"text",O=V=>{let G=D();T.replaceChildren(...Oe[G].map(K=>{let Q=y("option");return Q.value=K,Q.textContent=t.ops[K],Q})),V&&Oe[G].includes(V)&&(T.value=V);let _=G==="text"?"text":G;P.type=F.type=_,z()},z=()=>{P.hidden=ko.includes(T.value),F.hidden=T.value!=="between"};M.addEventListener("change",()=>O(T.value)),T.addEventListener("change",z),S&&n.some(V=>V.id===S.colId)&&(M.value=S.colId);let B=S?.model;O(B?.op),B?.value!=null&&(P.value=String(B.value)),B?.valueTo!=null&&(F.value=String(B.valueTo)),L.append(M,T,P,F,A);let X={el:L,read:()=>{let V=D(),G=T.value,_=!ko.includes(G),K=null;if(V==="number"){let Q=P.value===""?void 0:Number(P.value),Be=F.value===""?void 0:Number(F.value);(!_||Q!==void 0&&!Number.isNaN(Q))&&(K=G==="between"?{type:"number",op:G,value:Q,valueTo:Be}:{type:"number",op:G,value:Q})}else V==="date"?(!_||P.value)&&(K=G==="between"?{type:"date",op:G,value:P.value,valueTo:F.value}:{type:"date",op:G,value:P.value||void 0}):(!_||P.value)&&(K={type:"text",op:G,value:P.value});return K?{colId:M.value,model:K}:null}};return A.addEventListener("click",()=>h(X)),X},w=S=>{let L=y("div","fg-fb-row fg-fb-group"),M=y("span","fg-fb-group-label");M.textContent=`( ${S.conditions.length} \xD7 ${t[S.operator]} )`;let T=y("button","fg-chooser-close fg-fb-remove",{type:"button","aria-label":t.close});T.textContent="\xD7",L.append(M,T);let P={el:L,read:()=>S};return T.addEventListener("click",()=>h(P)),P},m=S=>{p.push(S),u.append(S.el)};for(let S of l?.conditions??[])m("conditions"in S?w(S):v(S));let f=y("button","fg-btn fg-fb-add",{type:"button"});f.textContent=`+ ${t.addCondition}`,f.addEventListener("click",()=>{let S=v();m(S),S.el.querySelector(".fg-fb-value").focus()});let g=y("div","fg-menu-actions"),C=y("button","fg-btn",{type:"button"});C.textContent=t.reset,C.addEventListener("click",()=>{e.setAdvancedFilter(null),this.close()});let x=y("button","fg-btn fg-btn-primary",{type:"button"});x.textContent=t.apply,x.addEventListener("click",()=>{let S=p.map(M=>M.read()).filter(M=>!!M),L=d.querySelector("input:checked")?.value==="or"?"or":"and";e.setAdvancedFilter(S.length?{operator:L,conditions:S}:null),this.close()}),g.append(C,x),o.append(r,d,u,f,g),te(e.renderer.root).append(o);let R=e.renderer.root.getBoundingClientRect(),k=o.offsetWidth||460;o.style.left=`${Math.max(4,Math.min(R.left+24,(window.innerWidth||1024)-k-4))}px`,o.style.top=`${Math.max(4,R.top+24)}px`,this.popup=o,p.length||f.click();let E=S=>{ue(S,o)||this.close()},b=S=>{S.key==="Escape"&&this.close()};document.addEventListener("pointerdown",E,!0),document.addEventListener("keydown",b,!0),this.off.push(()=>document.removeEventListener("pointerdown",E,!0),()=>document.removeEventListener("keydown",b,!0))}close(){for(let e of this.off)e();this.off=[],this.popup?.remove(),this.popup=null}};var So=i=>Math.round(i*2.75),Mo=i=>Math.round(i*3.1),dn=13,cn={compact:[.8,.85],normal:[1,1],comfortable:[1.25,1.15]},di=[],ci=100,ui=new Map;function le(i){return i.every(e=>e!==null&&typeof e=="object")?i:($("data contains entries that are not objects; they were skipped"),i.filter(e=>e!==null&&typeof e=="object"))}var un=class{constructor(e,t){this.options=t;this.events=new xe;this.pinnedRows={top:[],bottom:[]};this.spanCache=null;this.editVersion=0;this.tracker=new pt;this.history=new ft;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 yt(this);this.sourceDefs=[];this.pivotCfg=null;this.pivotData=null;this.savedGroup=null;this.page=0;this.pageSize=ci;this.forcedOverlay=null;this.filterBuilder=new St(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)=>{if(this.treeLoaded.has(e))return!1;try{return!!this.options.treeData?.hasChildren?.(t)}catch{return!1}};this.density="normal";this.selectionVersion=0;Array.isArray(t.columns)||$("options.columns must be an array"),t.data!=null&&!Array.isArray(t.data)&&$("options.data must be an array"),this.store=new kt({data:Array.isArray(t.data)?le(t.data):[],sort:[],filters:{},quickFilter:"",selected:new Set,anchorId:null,focus:null,range:null,extraRanges:[],advancedFilter:null,locale:ze(t.locale),theme:t.theme??"light"}),this.sourceDefs=Array.isArray(t.columns)?t.columns:[],this.columns=new Ve(this.withSelect(this.sourceDefs));let n=t.pagination;n&&typeof n=="object"&&n.pageSize!==void 0&&(Number.isInteger(n.pageSize)&&n.pageSize>0?this.pageSize=n.pageSize:$("pagination.pageSize must be a positive integer")),t.datasource&&typeof t.datasource.getRows!="function"&&$("datasource.getRows must be a function"),this.rowModel=t.datasource&&typeof t.datasource.getRows=="function"?new He({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:(s,a,l)=>this.serverLoaded(s,a,l),onFailed:(s,a,l)=>this.serverFailed(s,a,l)}):new Ct({getRowId:t.getRowId,columnDef:s=>this.columns.getNode(s)?.def,quickColumns:()=>this.columns.displayed().filter(s=>!I(s.id)).map(s=>s.def),format:(s,a)=>W(s,this.store.state.locale.code)(a),collator:()=>this.collator()}),this.groupBy=this.validGroupBy(t.groupBy??[]),this.defaultExpanded=t.groupDefaultExpanded??0,t.treeData&&!t.getRowId&&$("treeData needs getRowId so parent ids can be matched"),this.updateRows(),this.summaryOpts=t.summary??null,this.refreshSummary();let o=t.fontSize!=null&&t.fontSize>0?t.fontSize:null;t.fontSize!=null&&!(t.fontSize>0)&&$("fontSize must be a positive number"),this.font={size:o,family:t.fontFamily??null};let r=o??dn;if(this.renderer=new Je(e,this,{rowHeight:t.rowHeight??Math.round(So(r)*cn[this.densityOf(t.density)][0]),headerHeight:t.headerHeight??Math.round(Mo(r)*cn[this.densityOf(t.density)][1])}),this.density=this.densityOf(t.density),this.renderer.applyTheme(),this.renderer.applyFont(this.font.size,this.font.family),this.menu=new xt(this),this.chooser=new it(this),this.contextMenu=new at(this),this.editor=new ht(this),this.finder=new dt(this),this.fillHandle=new lt(this),this.groupPanel=t.groupPanel?new Qe(this):null,this.pinnedRows={top:le(t.pinnedTopRows??[]),bottom:le(t.pinnedBottomRows??[])},this.sideBar=t.sideBar?new st(this,typeof t.sideBar=="object"&&!!t.sideBar.open,(typeof t.sideBar=="object"?t.sideBar.panels:void 0)??(t.pivot||t.pivotPanel?["columns","filters","pivot"]:void 0)):null,this.disposers.push(this.store.bus.on("change",s=>this.onChange(s)),Jn(this),Un(this),()=>this.menu.close(),()=>this.chooser.close(),()=>this.contextMenu.destroy(),()=>this.editor.cancel(),()=>this.fillHandle.destroy(),()=>this.groupPanel?.destroy(),()=>this.charts.destroy(),()=>this.filterBuilder.close(),Ro(this)),typeof ResizeObserver<"u"){let s=new ResizeObserver(()=>this.renderer.schedule());s.observe(this.renderer.main),this.disposers.push(()=>s.disconnect())}t.pivot&&this.setPivot(t.pivot),yo(t.licenseKey).then(s=>{s&&!this.destroyed&&this.renderer.showFreeBadge()}),this.renderer.render(),this.api=this.createApi(),et.set(this.renderer.root,this)}collator(){let e=this.store.state.locale.code;return this.collatorCache?.code!==e&&(this.collatorCache={code:e,collator:new Intl.Collator(e,{numeric:!0,sensitivity:"base"})}),this.collatorCache.collator}layoutChanged(){this.renderer.invalidateHeights(),this.renderer.invalidate({header:!0,rows:!0}),this.refreshChoosers()}columnsChanged(){this.rowModel.invalidate(),this.updateRows(),this.refreshSummary(),this.renderer.invalidate({header:!0,rows:!0}),this.refreshChoosers()}display(){return{groupBy:this.options.treeData?di:this.groupBy,getParentId:this.options.treeData?.getParentId,expanded:this.expanded,defaultExpanded:this.defaultExpanded,detailOpen:this.options.detailRenderer?this.detailOpen:new Set,isMaster:this.options.isRowMaster,lazyChildren:this.options.treeData?.hasChildren?this.lazyChildren:void 0,loading:this.treeLoading,version:this.displayVersion}}updateRows(){let e=!!this.options.pagination,t=this.pivotData??this.store.state.data;this.rowModel.update({...this.store.state,data:t,display:this.display(),page:e?{index:this.page,size:this.pageSize}:null}),e&&this.page>=this.getPageCount()&&(this.page=this.getPageCount()-1,this.rowModel.update({...this.store.state,data:t,display:this.display(),page:{index:this.page,size:this.pageSize}}))}viewRows(){return this.pivotData??this.store.state.data}sourceLeaves(){let e=[],t=n=>{for(let o of n)!o||typeof o!="object"||(Array.isArray(o.children)?t(o.children):(o.id??o.field)&&e.push({id:o.id??o.field,def:o}))};return t(this.sourceDefs),e}getPivot(){let e=this.pivotCfg;if(!e)return null;let t={rows:[...e.rows],columns:[...e.columns],values:e.values.map(n=>({...n}))};return e.totals||(t.totals=!1),t}setPivot(e){if(e&&this.clientOnly("pivot"))return;if(e&&(typeof e!="object"||!Array.isArray(e.rows)||!Array.isArray(e.values))){$("setPivot: expected { rows: string[], values: [...] }");return}if(this.editor.cancel(),!e){if(!this.pivotCfg)return;this.pivotCfg=null,this.pivotData=null,this.columns.setDefs(this.withSelect(this.sourceDefs)),this.savedGroup&&(this.groupBy=this.savedGroup.groupBy,this.expanded=this.savedGroup.expanded,this.defaultExpanded=this.savedGroup.defaultExpanded,this.savedGroup=null),this.afterPivotSwitch();return}let t=new Set(this.sourceLeaves().map(n=>n.id));this.pivotCfg||(this.savedGroup={groupBy:this.groupBy,expanded:this.expanded,defaultExpanded:this.defaultExpanded}),this.pivotCfg=on(e,n=>t.has(n)),this.expanded=new Map,this.defaultExpanded=-1,this.rebuildPivot(!1),this.afterPivotSwitch()}afterPivotSwitch(){this.page=0,this.store.set({sort:[],filters:{},range:null,focus:null}),this.rowModel.invalidate(),this.updateRows(),this.displayVersion++,this.updateRows(),this.groupPanel?.refresh(),this.renderer.invalidate({header:!0,rows:!0}),this.refreshChoosers(),this.events.emit("pivotChange",{pivot:this.getPivot()})}rebuildPivot(e=!0){let t=this.pivotCfg;if(!t)return;let n=this.store.state.locale,o=new Map(this.sourceLeaves().map(d=>[d.id,d.def])),r={sum:n.sum,avg:n.avg,min:n.min,max:n.max,count:n.count},s=ho(this.store.state.data,t,d=>o.get(d),{total:n.total,blank:n.blanks,agg:d=>r[d]??d},n.code);if(this.pivotData=s.rows,this.columns.setDefs(this.withSelect(s.columns)),this.groupBy=s.groupBy,!e)return;let a=d=>!!this.columns.getNode(d),l=this.store.state;(l.sort.some(d=>!a(d.colId))||Object.keys(l.filters).some(d=>!a(d)))&&this.store.set({sort:l.sort.filter(d=>a(d.colId)),filters:Object.fromEntries(Object.entries(l.filters).filter(([d])=>a(d)))}),this.rowModel.invalidate(),this.displayVersion++,this.updateRows(),this.renderer.invalidate({header:!0,rows:!0}),this.refreshChoosers()}isFlashing(e,t){return this.flashing.size>0&&this.flashing.has(`${e}\0${t}`)}flash(e){let t=Date.now()+1e3;for(let o of e)this.flashing.set(o,t);if(this.flashTimer)return;let n=()=>{let o=Date.now();for(let[r,s]of this.flashing)s<=o&&this.flashing.delete(r);this.renderer.invalidate({rows:!0}),this.flashTimer=this.flashing.size&&!this.destroyed?window.setTimeout(n,250):0};this.flashTimer=window.setTimeout(n,1e3)}applyTransaction(e){let t={added:[],updated:[],removed:[],notFound:[]};if(this.clientOnly("applyTransaction")||!e||typeof e!="object")return t;let n=this.store.state.data,o=this.options.getRowId,r=h=>{if(!h||typeof h!="object")return null;if(n.includes(h))return this.rowModel.idOf(h);try{return o?String(o(h)):null}catch{return null}},s=new Map(n.map(h=>[this.rowModel.idOf(h),h])),a=new Set;for(let h of e.remove??[]){let v=r(h),w=v===null?void 0:s.get(v);w&&!a.has(w)?(a.add(w),t.removed.push(w)):w||t.notFound.push(h)}let l=new Map;for(let h of this.columns.getState()){let v=this.columns.getNode(h.colId)?.def.field;v&&l.set(v,[...l.get(v)??[],h.colId])}let d=[];for(let h of e.update??[]){let v=r(h),w=v===null?void 0:s.get(v);if(!w||a.has(w)){t.notFound.push(h);continue}for(let[m,f]of Object.entries(h))if(!Object.is(w[m],f)){w[m]=f;for(let g of l.get(m)??[])d.push(`${v}\0${g}`)}t.updated.push(w)}let c=le(Array.isArray(e.add)?e.add:[]);if(t.added.push(...c),!t.added.length&&!t.updated.length&&!t.removed.length)return t.notFound.length&&this.events.emit("transactionApplied",t),t;let u=a.size?n.filter(h=>!a.has(h)):[...n],p=typeof e.addIndex=="number"?Math.max(0,Math.min(u.length,Math.floor(e.addIndex))):u.length;u.splice(p,0,...c),this.editVersion++,this.renderer.invalidateHeights(),this.keepRange=!0;try{this.replaceData(u)}finally{this.keepRange=!1}return d.length&&this.options.flashCells!==!1&&this.flash(d),this.events.emit("transactionApplied",t),t}applyTransactionAsync(e){!e||typeof e!="object"||(this.txQueue.push(e),!this.txTimer&&(this.txTimer=window.setTimeout(()=>{this.txTimer=0;let t=this.txQueue;this.txQueue=[],!(this.destroyed||!t.length)&&this.applyTransaction({add:t.flatMap(n=>n.add??[]),addIndex:t.find(n=>typeof n.addIndex=="number")?.addIndex,update:t.flatMap(n=>n.update??[]),remove:t.flatMap(n=>n.remove??[])})},50)))}setAdvancedFilter(e){let t=e&&typeof e=="object"&&Array.isArray(e.conditions)&&e.conditions.length?e:null;t!==this.store.state.advancedFilter&&(this.store.set({advancedFilter:t}),this.events.emit("advancedFilterChange",{advancedFilter:t}))}setColumnGroupOpened(e,t){this.columns.setGroupOpen(e,!!t)&&(this.layoutChanged(),this.events.emit("columnGroupOpened",{groupId:e,open:!!t}))}getState(){let e=this.store.state,t={columns:this.columns.getState(),columnGroups:this.columns.groupOpenState(),advancedFilter:e.advancedFilter?JSON.parse(JSON.stringify(e.advancedFilter)):null,sort:e.sort.map(n=>({...n})),filters:JSON.parse(JSON.stringify(e.filters)),quickFilter:e.quickFilter,groupBy:[...this.groupBy],pivot:this.pivotCfg?JSON.parse(JSON.stringify(this.pivotCfg)):null,expanded:Object.fromEntries(this.expanded),selected:[...e.selected]};return this.options.pagination&&(t.page=this.page,t.pageSize=this.pageSize),t}setState(e,t={}){if(!e||typeof e!="object")return;let n=r=>e[r]!==void 0&&(!t.parts||t.parts.includes(r)),o=r=>!!this.columns.getNode(r);if(n("columns")&&Array.isArray(e.columns)&&(this.columns.applyState(e.columns.filter(r=>r&&o(r.colId))),this.columnsChanged()),n("columnGroups")&&e.columnGroups&&typeof e.columnGroups=="object")for(let[r,s]of Object.entries(e.columnGroups))typeof s=="boolean"&&this.setColumnGroupOpened(r,s);if(n("groupBy")&&Array.isArray(e.groupBy)&&this.setGroupBy(e.groupBy.filter(o)),n("pivot")&&this.setPivot(e.pivot??null),n("sort")&&Array.isArray(e.sort)&&this.setSort(e.sort.filter(r=>r&&o(r.colId))),n("filters")&&e.filters&&typeof e.filters=="object"){let r=Object.fromEntries(Object.entries(e.filters).filter(([s])=>o(s)));this.store.set({filters:r}),this.events.emit("filterChange",{filters:{...r}})}if(n("advancedFilter")&&this.setAdvancedFilter(e.advancedFilter??null),n("quickFilter")&&typeof e.quickFilter=="string"&&this.store.set({quickFilter:e.quickFilter}),n("expanded")&&e.expanded&&typeof e.expanded=="object"&&(this.expanded=new Map(Object.entries(e.expanded).filter(([,r])=>typeof r=="boolean")),this.displayChanged()),n("pageSize")&&typeof e.pageSize=="number"&&this.setPageSize(e.pageSize),n("page")&&typeof e.page=="number"&&this.setPage(e.page),n("selected")&&Array.isArray(e.selected)){let r=new Set(this.rowModel.allNodes().map(s=>s.id));this.setSelected(new Set(e.selected.map(String).filter(s=>r.has(s))))}}rowNumber(e){let t=this.rowModel.rows();if(this.rowNumberCache?.rows!==t){let o=new Int32Array(t.length),r=0;t.forEach((s,a)=>{o[a]=s.kind?0:++r}),this.rowNumberCache={rows:t,nums:o}}let n=this.rowNumberCache.nums[e];return n?n+(this.options.pagination&&!this.rowModel.server?this.page*this.pageSize:0):null}getPage(){return this.options.pagination?this.page:0}getPageSize(){return this.options.pagination?this.pageSize:this.rowModel.fullCount()}getPageCount(){return this.options.pagination?Math.max(1,Math.ceil(this.rowModel.fullCount()/this.pageSize)):1}setPage(e){if(!this.options.pagination||!Number.isFinite(e))return;let t=Math.max(0,Math.min(this.getPageCount()-1,Math.floor(e)));t!==this.page&&(this.veto("beforePageChange",{page:t,pageSize:this.pageSize})||(this.page=t,this.pageMoved()))}setPageSize(e){if(!this.options.pagination)return;if(!Number.isInteger(e)||e<=0){$("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 He&&(this.rowModel.purge(),this.renderer.invalidate({rows:!0}))}serverLoaded(e,t,n){this.destroyed||(this.renderer.invalidate({header:!0,rows:!0}),this.events.emit("rowsLoaded",n===null?{start:e,end:t}:{start:e,end:t,total:n}))}serverFailed(e,t,n){this.destroyed||($(`datasource.getRows failed for rows ${e}\u2013${t}`),this.toast(this.store.state.locale.loadFailed),this.renderer.invalidate({rows:!0}),this.events.emit("rowsLoadFailed",{start:e,end:t,error:n}))}syncScroll(e,t){if(!e||typeof e.setScrollPosition!="function"||e===this.api)return()=>{};let n=new Map,o=a=>`${a.top},${a.left}`,r=(a,l)=>a.on("scroll",d=>{if(n.get(a)===o(d)){n.delete(a);return}l.setScrollPosition(t==="vertical"?{top:d.top}:t==="horizontal"?{left:d.left}:d),n.set(l,o(l.getScrollPosition()))}),s=[r(this.api,e),r(e,this.api)];return()=>{for(let a of s)a()}}veto(e,t){let n=!1;return this.events.emit(e,{...t,cancel:()=>{n=!0}}),n}clientOnly(e){return this.rowModel.server?($(`${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||I(t)?($(`groupBy: unknown column "${t}"`),!1):!0}):[]}getGroupBy(){return[...this.groupBy]}setGroupBy(e){let t=this.validGroupBy(e);t.join("")!==this.groupBy.join("")&&(this.groupBy=t,this.page=0,this.groupPanel?.refresh(),this.displayChanged(),this.events.emit("groupChange",{groupBy:[...t]}))}isExpandable(e){return!!e&&(e.kind==="group"||!!e.hasChildren)}expandKey(e){return e.group?e.group.key:e.id}loadChildren(e){let t=this.options.treeData,n=e.id;if(this.treeLoading.has(n))return;if(typeof t.loadChildren!="function"){$("treeData.hasChildren needs treeData.loadChildren");return}this.treeLoading.add(n),this.displayChanged();let o=()=>(this.treeLoading.delete(n),!this.destroyed&&this.store.state.data.includes(e.data));Promise.resolve().then(()=>t.loadChildren(e.data)).then(r=>{if(!o())return;let s=le(Array.isArray(r)?r:[]);this.treeLoaded.add(n),this.expanded.set(n,!0),s.length&&this.replaceData([...this.store.state.data,...s]),this.displayChanged(),this.events.emit("childrenLoaded",{row:e.data,rows:s}),this.events.emit("groupToggle",{key:n,expanded:!0})},r=>{o()&&($(`treeData.loadChildren failed for row "${n}"`),this.displayChanged(),this.events.emit("childrenLoadFailed",{row:e.data,error:r}))})}setGroupExpanded(e,t){let n=this.rowModel.rows().find(r=>this.isExpandable(r)&&this.expandKey(r)===e);if((n?!!(n.group?.expanded??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){let t=this.rowModel.getRow(e);this.isExpandable(t)&&this.setGroupExpanded(this.expandKey(t),!(t.group?.expanded??t.expanded))}expandAll(e=!0){this.expanded.clear(),this.defaultExpanded=e?-1:0,this.displayChanged()}groupAggregate(e,t){let n=this.columns.getNode(t)?.def;if(!e.group||!n?.aggFunc)return;if(e.group.aggregates)return e.group.aggregates[t]??(n.field?e.group.aggregates[n.field]:void 0);this.aggCache.ver!==this.editVersion&&(this.aggCache={ver:this.editVersion,map:new WeakMap});let o=this.aggCache.map.get(e.group);if(o||this.aggCache.map.set(e.group,o=new Map),!o.has(t)){let r=e.group.rows;try{o.set(t,be(n.aggFunc,r.map(s=>N(n,s)),r))}catch{$(`aggFunc of column "${t}" threw`),o.set(t,null)}}return o.get(t)}canExpandDetail(e){if(!this.options.detailRenderer)return!1;try{return!this.options.isRowMaster||!!this.options.isRowMaster(e)}catch{return!1}}isDetailExpanded(e){return!!e&&typeof e=="object"&&this.detailOpen.has(this.rowModel.idOf(e))}setDetailExpanded(e,t){if(!e||typeof e!="object"||t&&!this.canExpandDetail(e))return;let n=this.rowModel.idOf(e);this.detailOpen.has(n)!==t&&(t?this.detailOpen.add(n):(this.detailOpen.delete(n),this.renderer.dropDetail(n)),this.displayChanged(),this.events.emit("detailToggle",{row:e,expanded:t}))}canMoveRows(){let e=this.store.state,t=this.options.treeData;return!this.rowModel.server&&!e.sort.length&&!Object.keys(e.filters).length&&!e.quickFilter.trim()&&!this.groupBy.length&&(!t||typeof t.setParentId=="function")}get dragOptions(){let e=this.options.rowDrag;return e&&typeof e=="object"?e:{}}parentOf(e){let t=null;try{t=this.options.treeData.getParentId(e)}catch{t=null}return t==null?null:String(t)}rawParent(e){try{return this.options.treeData.getParentId(e)??null}catch{return null}}idValue(e){let t=this.rowModel.idOf(e);for(let o of this.store.state.data){let r=this.rawParent(o);if(r!==null&&String(r)===t)return r}return this.store.state.data.some(o=>typeof this.rawParent(o)=="number")&&t.trim()!==""&&Number.isFinite(Number(t))?Number(t):t}canDropRow(e,t,n,o=this){if(!this.canMoveRows()||t===e)return!1;if(o===this&&this.options.treeData&&t){let s=this.rowModel.idOf(e),a=new Set;for(let l=this.rowModel.idOf(t);l!==null&&!a.has(l);){if(l===s)return!1;a.add(l);let d=this.rowModel.allNodes().find(c=>c.id===l);l=d?this.parentOf(d.data):null}}let r=this.dragOptions.canDrop;if(!r)return!0;try{return r({row:e,target:t,position:n,fromOtherGrid:o!==this})!==!1}catch{return $("rowDrag.canDrop threw; the drop was refused"),!1}}dropRow(e,t,n="after",o=this){if(this.clientOnly("dropRow")||!e||typeof e!="object")return!1;let r=this.options.treeData;!r&&n==="inside"&&(n="after");let s=this.store.state.data,a=o!==this,l=a?-1:s.indexOf(e);if(!a&&l<0||t&&!s.includes(t)||a&&(!o.canMoveRows()||s.includes(e))||!this.canDropRow(e,t,n,o))return!1;let d=r?this.rawParent(e):null,c=!r||!t?null:n==="inside"?t:this.store.state.data.find(f=>this.rowModel.idOf(f)===this.parentOf(t))??null,u=c?this.idValue(c):null,p=s.filter(f=>f!==e),h=!t||n==="inside"?p.length:p.indexOf(t)+(n==="after"?1:0);p.splice(h,0,e);let v=p.some((f,g)=>f!==s[g]);if(!a&&!v&&String(d??"")===String(u??""))return!1;let w=(f,g)=>{try{r.setParentId(e,f,g)}catch{$("treeData.setParentId threw")}},m=r?this.store.state.data.find(f=>this.rowModel.idOf(f)===this.parentOf(e))??null:null;return a?(o.removeRows([e]),r&&w(u,c),this.addRows([e],h)):(r&&w(u,c),this.replaceData(p),this.history.push({undo:()=>{r&&w(d,m),this.replaceData(s)},redo:()=>{r&&w(u,c),this.replaceData(p)}}),this.events.emit("rowDragEnd",{row:e,fromIndex:l,toIndex:h})),this.events.emit("rowDrop",{row:e,target:t,position:n,fromOtherGrid:a,fromGrid:a?o.api:null}),!0}moveRow(e,t,n=!0){if(this.clientOnly("moveRow")||!this.canMoveRows())return!1;let o=this.store.state.data,r=o.indexOf(e);if(r<0||!Number.isFinite(t))return!1;let s=Math.max(0,Math.min(o.length-1,Math.floor(t)));if(s===r)return!1;let a=[...o];return a.splice(r,1),a.splice(s,0,e),this.replaceData(a),n&&this.history.push({undo:()=>this.moveRow(e,r,!1),redo:()=>this.moveRow(e,s,!1)}),this.events.emit("rowDragEnd",{row:e,fromIndex:r,toIndex:s}),!0}setFont(e){let t=this.font.size;e.size!==void 0&&(typeof e.size=="number"&&e.size>0?t=e.size:$("setFont: size must be a positive number"));let n=e.family===void 0?this.font.family:e.family||null;this.font={size:t,family:n};let o=t??dn;this.applyAutoHeights(o),this.renderer.applyFont(t,n),this.renderer.invalidateHeights(),this.menu.close(),this.layoutChanged()}densityOf(e){return e==="compact"||e==="comfortable"?e:"normal"}applyAutoHeights(e){let[t,n]=cn[this.density];this.options.rowHeight==null&&(this.renderer.opts.rowHeight=Math.round(So(e)*t)),this.options.headerHeight==null&&(this.renderer.opts.headerHeight=Math.round(Mo(e)*n))}setDensity(e){let t=this.densityOf(e);t!==this.density&&(this.density=t,this.renderer.applyTheme(),this.applyAutoHeights(this.font.size??dn),this.renderer.invalidateHeights(),this.layoutChanged())}applyFontTo(e){this.font.size&&e.style.setProperty("--fg-font-size",`${this.font.size}px`),this.font.family&&e.style.setProperty("--fg-font",this.font.family)}summary(){return this.summaryOpts&&this.summaryOpts.rows?.length?{opts:this.summaryOpts,values:this.summaryValues}:null}setSummary(e){if(e&&!Array.isArray(e.rows)){$("setSummary: summary.rows must be an array");return}this.summaryOpts=e,this.refreshSummary(),this.renderer.invalidate({header:!0,rows:!0})}refreshSummary(){let e=this.summaryOpts;if(!e?.rows?.length){this.summaryValues=[];return}let t=e.scope??"filtered",n=t==="all"?this.rowModel.allNodes().map(o=>o.data):t==="selected"?this.selectedRows():this.rowModel.dataRows().map(o=>o.data);this.summaryValues=Bn(e.rows,n,o=>this.columns.getNode(o)?.def)}dataColumns(){return this.columns.displayed().filter(e=>!I(e.id))}validRange(e){if(!e||this.options.rangeSelection===!1)return null;let t=this.rowModel.getRowCount(),n=o=>!!o&&!I(o.colId)&&!!this.columns.getColumn(o.colId)&&o.rowIndex>=0&&o.rowIndex<t;return n(e.start)&&n(e.end)?{start:{...e.start},end:{...e.end}}:null}setRange(e,t=!1){let n=this.validRange(e),o=t||!this.store.state.extraRanges.length?this.store.state.extraRanges:[],r=this.store.state.range;JSON.stringify(r)===JSON.stringify(n)&&o===this.store.state.extraRanges||(this.store.set({range:n,extraRanges:o}),this.events.emit("rangeChange",{range:n&&{start:{...n.start},end:{...n.end}}}))}addRange(e){let{range:t,focus:n}=this.store.state,o=this.validRange(t??(n?{start:n,end:n}:null));o&&this.store.set({extraRanges:[...this.store.state.extraRanges,o]}),this.setRange(e,!0)}getRanges(){let e=[...this.store.state.extraRanges];return this.store.state.range&&e.push(this.store.state.range),e.map(t=>({start:{...t.start},end:{...t.end}}))}setRanges(e){let t=(Array.isArray(e)?e:[]).map(n=>this.validRange(n)).filter(n=>!!n);this.store.set({extraRanges:t.slice(0,-1)}),this.setRange(t[t.length-1]??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:Ie({start:{rowIndex:e.start.rowIndex,colIndex:t.index},end:{rowIndex:e.end.rowIndex,colIndex:n.index}})}rangeBounds(){return this.boundsOf(this.store.state.range)}allRangeBounds(){return[...this.store.state.extraRanges,this.store.state.range].map(e=>this.boundsOf(e)).filter(e=>!!e)}rangeContains(e,t){let n=this.columns.getColumn(t);return!!n&&this.allRangeBounds().some(o=>Yn(o,e,n.index))}selectAllCells(){let e=this.dataColumns(),t=this.rowModel.getRowCount();!e.length||!t||(this.store.state.focus||this.setFocus(0,e[0].id),this.setRange({start:{rowIndex:0,colId:e[0].id},end:{rowIndex:t-1,colId:e[e.length-1].id}}))}selectionTSV(e,t=!1){let n=this.store.state.locale.code,o=this.columns.displayed(),r=t?null:this.rangeBounds(),s=t,a,l,d=t?[]:this.allRangeBounds();if(d.length>1){let u=d.every(h=>h.c1===d[0].c1&&h.c2===d[0].c2),p=d.every(h=>h.r1===d[0].r1&&h.r2===d[0].r2);if(u||p){let h=[...d].sort((m,f)=>u?m.r1-f.r1:m.c1-f.c1),v=h.map(m=>this.rangeMatrix(m)),w=u?v.flat():v[0].map((m,f)=>v.flatMap(g=>g[f]??[]));return e&&w.unshift((u?h.slice(0,1):h).flatMap(m=>this.rangeHeaders(m))),zt(w)}}if(r){a=[];for(let u=r.r1;u<=r.r2;u++){let p=this.rowModel.getRow(u);p.kind||a.push(p.data)}l=o.slice(r.c1,r.c2+1).filter(u=>!I(u.id))}else if(s){let u=this.store.state.selected;a=this.rowModel.dataRows().filter(p=>u.has(p.id)).map(p=>p.data),l=this.dataColumns()}else{let u=this.store.state.focus,p=u&&this.columns.getColumn(u.colId),h=u&&this.rowModel.getRow(u.rowIndex);if(!p||!h||h.kind||I(p.id))return"";a=[h.data],l=[p]}let c=a.map(u=>l.map(p=>this.copyCell(p.def,u,n)));return e&&c.unshift(l.map(u=>u.def.header??u.def.field??u.id)),zt(c)}rangeHeaders(e){return this.columns.displayed().slice(e.c1,e.c2+1).filter(t=>!I(t.id)).map(t=>t.def.header??t.def.field??t.id)}rangeMatrix(e){let t=this.columns.displayed().slice(e.c1,e.c2+1).filter(r=>!I(r.id)),n=this.store.state.locale.code,o=[];for(let r=e.r1;r<=e.r2;r++){let s=this.rowModel.getRow(r);s&&!s.kind&&o.push(t.map(a=>this.copyCell(a.def,s.data,n)))}return o}copyCell(e,t,n){let o=N(e,t),r=e.copyable;if(r===!1)return"";if(typeof r=="function"){let s=!1;try{s=r({value:o,row:t,column:e})!==!1}catch{s=!1}if(!s)return""}return ct(e,o,n)}cutToClipboard(){let e=this.copyToClipboard(!1);return e&&this.clearCells(),e}copyToClipboard(e,t=!1){let n=this.selectionTSV(e,t);if(n&&typeof navigator<"u"&&navigator.clipboard?.writeText)try{navigator.clipboard.writeText(n)?.catch?.(()=>{})}catch{}return n}pasteText(e){let t=_n(e),n={changed:0,skipped:0};if(!t.length)return n;let o=this.columns.displayed(),r=this.rowModel.getRowCount(),s=this.rangeBounds(),a=this.store.state.focus,l=a&&this.columns.getColumn(a.colId),d,c;if(s)d=s.r1,c=s.c1;else if(a&&l&&!I(l.id))d=a.rowIndex,c=l.index;else return n;let u=[],p=t.length===1&&t[0].length===1,h=p&&s?s.r2-s.r1+1:t.length,v=p&&s?s.c2-s.c1+1:Math.max(...t.map(w=>w.length));for(let w=0;w<h;w++){let m=d+w;if(m>=r)break;let f=this.rowModel.getRow(m);if(!f.kind)for(let g=0;g<v;g++){let C=o[c+g];if(!C)break;if(I(C.id))continue;let x=p&&s?t[0][0]:t[w]?.[g];if(x===void 0)continue;let R=C.def;if(!R.field||!ie(R,f.data,m)){n.skipped++;continue}let k=f.data[R.field],E=this.acceptText(R,f.data,x,k);if(!E.ok){n.skipped++;continue}this.writeCell(u,f.data,R.field,C.id,m,E.value)&&n.changed++}}return this.endCellTx(u),this.events.emit("paste",{...n}),n}acceptText(e,t,n,o){let r,s=e.editor;if(s&&typeof s=="object"&&s.type==="select"){let a=(typeof s.options=="function"?s.options(t):s.options)??[],l=n.trim().toLowerCase(),d=a.map(c=>c!==null&&typeof c=="object"&&"value"in c?c:{value:c,label:String(c),disabled:!1}).find(c=>String(c.value).toLowerCase()===l||(c.label??"").toLowerCase()===l);if(!d||d.disabled)return{ok:!1};r=d.value}else if(e.formulas&&ye(n.trim()))r=n.trim();else{let a=ut(e,n,o);if(!a.ok)return a;r=a.value}return this.cellError(e,t,r)!==null?{ok:!1}:{ok:!0,value:r}}cellError(e,t,n){let o=this.store.state.locale;if(e.required&&H(n))return o.required;if(e.unique&&e.field&&!H(n)){let r=n instanceof Date?n.getTime():String(n),s=e.field;if(this.store.state.data.some(a=>{if(a===t)return!1;let l=a[s];return!H(l)&&(l instanceof Date?l.getTime():String(l))===r}))return o.duplicate}if(e.validate){let r;try{r=e.validate(n,t)}catch{r=o.invalidValue}if(r!==!0)return typeof r=="string"&&r?r:o.invalidValue}return null}validateAll(){let e=[],t=this.columns.getState().map(n=>({id:n.colId,def:this.columns.getNode(n.colId).def})).filter(n=>n.def.field&&n.def.editable&&(n.def.required||n.def.unique||n.def.validate));return this.store.state.data.forEach((n,o)=>{let r=this.rowModel.idOf(n),s=this.rowModel.indexOfId(r);for(let a of t){if(!ie(a.def,n,s<0?o:s))continue;let l=this.cellError(a.def,n,n[a.def.field]);l!==null&&e.push({row:n,rowIndex:s,colId:a.id,message:l})}}),e}mergeSpans(){if(this.rowModel.server||!this.columns.displayed().some(r=>r.def.merge||r.def.rowSpan))return ui;let e=this.rowModel.rows(),t=this.editVersion*1e6+this.columns.displayed().length;if(this.spanCache&&this.spanCache.rows===e&&this.spanCache.ver===t)return this.spanCache.spans;let n=new Map,o=this.columns.displayed().filter(r=>r.def.merge||r.def.rowSpan);if(o.length&&!e.some(r=>r.kind)){let r=e.map(s=>s.data);for(let s of o)n.set(s.id,Ye(r,s.def))}return this.spanCache={rows:e,ver:t,spans:n},n}rangeAggregates(){let e=this.allRangeBounds();if(!e.length)return null;let t=this.columns.displayed(),n={cells:0,count:0,numbers:0,sum:0,min:1/0,max:-1/0},o=e.length>1?new Set:null;for(let r of e)for(let s=r.r1;s<=r.r2;s++){let a=this.rowModel.getRow(s);if(!a||a.kind)continue;let l=a.data;for(let d of t.slice(r.c1,r.c2+1)){if(I(d.id))continue;if(o){let u=`${s},${d.index}`;if(o.has(u))continue;o.add(u)}n.cells++;let c=N(d.def,l);if(!H(c)&&(n.count++,typeof c=="number"||d.def.type==="number"&&!Number.isNaN(Number(c)))){let u=Number(c);n.numbers++,n.sum+=u,u<n.min&&(n.min=u),u>n.max&&(n.max=u)}}}return n}fillRange(e){let t=this.rangeBounds()??(()=>{let u=this.store.state.focus,p=u&&this.columns.getColumn(u.colId);return u&&p&&!I(p.id)?{r1:u.rowIndex,r2:u.rowIndex,c1:p.index,c2:p.index}:null})(),n=this.columns.getColumn(e.start.colId),o=this.columns.getColumn(e.end.colId);if(!t||!n||!o)return;let r=Ie({start:{rowIndex:e.start.rowIndex,colIndex:n.index},end:{rowIndex:e.end.rowIndex,colIndex:o.index}}),s=this.rowModel.getRowCount();r.r1=Math.max(0,r.r1),r.r2=Math.min(s-1,r.r2);let a=this.columns.displayed(),l=[],d=(u,p,h)=>{let v=a[p],w=this.rowModel.getRow(u),m=v?.def;!w||w.kind||!m?.field||I(v.id)||!ie(m,w.data,u)||this.cellError(m,w.data,h)===null&&this.writeCell(l,w.data,m.field,v.id,u,h)},c=(u,p)=>N(a[p].def,this.rowModel.getRow(u).data);if(r.r1<t.r1||r.r2>t.r2)for(let u=t.c1;u<=t.c2;u++){let p=[],h=[];for(let v=t.r1;v<=t.r2;v++)p.push(c(v,u));for(let v=t.r2;v>=t.r1;v--)h.push(c(v,u));Te(p,r.r2-t.r2).forEach((v,w)=>d(t.r2+1+w,u,v)),Te(h,t.r1-r.r1).forEach((v,w)=>d(t.r1-1-w,u,v))}else if(r.c1<t.c1||r.c2>t.c2)for(let u=t.r1;u<=t.r2;u++){let p=[],h=[];for(let v=t.c1;v<=t.c2;v++)p.push(c(u,v));for(let v=t.c2;v>=t.c1;v--)h.push(c(u,v));Te(p,r.c2-t.c2).forEach((v,w)=>d(u,t.c2+1+w,v)),Te(h,t.c1-r.c1).forEach((v,w)=>d(u,t.c1-1-w,v))}else return;this.endCellTx(l),this.setRange({start:{rowIndex:r.r1,colId:a[r.c1].id},end:{rowIndex:r.r2,colId:a[r.c2].id}})}setPinnedRows(e){e.top&&(this.pinnedRows.top=le(e.top)),e.bottom&&(this.pinnedRows.bottom=le(e.bottom)),this.renderer.invalidate({rows:!0})}writeCell(e,t,n,o,r,s){let a=t[n];return Object.is(a,s)||this.veto("beforeCellChange",{row:t,rowIndex:r,colId:o,oldValue:a,newValue:s})?!1:(this.tracker.beforeChange(t),t[n]=s,e.push({row:t,field:n,colId:o,oldValue:a,newValue:s}),this.events.emit("cellValueChanged",{row:t,rowIndex:r,colId:o,oldValue:a,newValue:s}),!0)}endCellTx(e){if(!e.length)return;let t=(n,o)=>{for(let r of n){let s=r.row[r.field];r.row[r.field]=r[o],this.events.emit("cellValueChanged",{row:r.row,rowIndex:this.rowModel.indexOfId(this.rowModel.idOf(r.row)),colId:r.colId,oldValue:s,newValue:r[o]})}this.afterDataEdit()};this.history.push({undo:()=>t([...e].reverse(),"oldValue"),redo:()=>t(e,"newValue")}),this.afterDataEdit()}afterDataEdit(){this.renderer.invalidateHeights(),this.editVersion++,this.refreshSummary(),this.renderer.invalidate({rows:!0})}applyEdit(e,t,n){let o=this.rowModel.getRow(e),r=this.columns.getColumn(t)?.def;if(!o||!r?.field)return;let s=[];this.writeCell(s,o.data,r.field,t,e,n),this.endCellTx(s)}clearCells(){let e=this.columns.displayed(),t=this.allRangeBounds(),n=this.store.state.focus,o=n?this.columns.getColumn(n.colId)?.index:void 0,r=t.length?t:n&&o!==void 0?[{r1:n.rowIndex,r2:n.rowIndex,c1:o,c2:o}]:[];if(!r.length)return;let s=[];for(let a of r)for(let l=a.r1;l<=a.r2;l++){let d=this.rowModel.getRow(l);for(let c=a.c1;c<=a.c2;c++){let u=e[c]?.def;d&&!d.kind&&u?.field&&ie(u,d.data,l)&&this.writeCell(s,d.data,u.field,e[c].id,l,null)}}this.endCellTx(s)}replaceData(e){this.store.set({data:e});let t=new Set(this.rowModel.allNodes().map(s=>s.id)),n=this.store.state.selected;[...n].some(s=>!t.has(s))&&this.setSelected(new Set([...n].filter(s=>t.has(s))));let o=this.rowModel.getRowCount(),r=this.store.state.focus;r&&r.rowIndex>=o&&this.store.set({focus:o?{...r,rowIndex:o-1}:null})}addRows(e,t,n=!0){if(this.clientOnly("addRows"))return[];let o=le(Array.isArray(e)?e:[]);if(!o.length)return[];let r=[...this.store.state.data],s=t===void 0?r.length:Math.max(0,Math.min(r.length,t));r.splice(s,0,...o);for(let a of o)this.tracker.created.add(a);return this.replaceData(r),n&&this.history.push({undo:()=>this.removeRows(o,!1),redo:()=>this.addRows(o,s,!1)}),this.events.emit("rowsAdded",{rows:[...o]}),o}removeRows(e,t=!0){if(this.clientOnly("removeRows"))return[];let n=this.store.state.data,o=typeof e=="function"?e:(l=>d=>l.has(d))(new Set(e)),r=[];if(n.forEach((l,d)=>{let c=!1;try{c=!!o(l)}catch{c=!1}c&&r.push({row:l,index:d})}),!r.length)return[];let s=new Set(r.map(l=>l.row)),a=new Set(r.filter(l=>this.tracker.created.has(l.row)).map(l=>l.row));for(let{row:l,index:d}of r)a.has(l)?this.tracker.created.delete(l):this.tracker.deleted.set(l,d);return this.replaceData(n.filter(l=>!s.has(l))),t&&this.history.push({undo:()=>{let l=[...this.store.state.data];for(let{row:d,index:c}of r)l.splice(Math.min(c,l.length),0,d),this.tracker.deleted.delete(d),a.has(d)&&this.tracker.created.add(d);this.replaceData(l)},redo:()=>this.removeRows([...s],!1)}),this.events.emit("rowsRemoved",{rows:r.map(l=>l.row)}),r.map(l=>l.row)}trackedFields(){let e=[],t=n=>{for(let o of n)o.children?t(o.children):o.def.field&&!I(o.id)&&e.push({field:o.def.field,colId:o.id})};return t(this.columns.roots()),e}getChanges(){let e=this.trackedFields(),t=[];for(let[n,o]of this.tracker.originals)if(!this.tracker.deleted.has(n))for(let r of this.tracker.diff(n,e.map(s=>s.field)))t.push({row:n,colId:e.find(s=>s.field===r).colId,oldValue:o[r],newValue:n[r]});return t}getModifiedRows(){let e=this.trackedFields().map(n=>n.field),t=this.store.state.data;return{created:t.filter(n=>this.tracker.created.has(n)),updated:t.filter(n=>this.tracker.originals.has(n)&&this.tracker.diff(n,e).length>0),deleted:[...this.tracker.deleted.keys()]}}hasChanges(){let e=this.getModifiedRows();return e.created.length+e.updated.length+e.deleted.length>0}commitChanges(){this.tracker.reset(),this.renderer.invalidate({rows:!0})}revertChanges(){this.editor.cancel();for(let[n,o]of this.tracker.originals)Object.assign(n,o);let e=this.store.state.data.filter(n=>!this.tracker.created.has(n)),t=[...this.tracker.deleted.entries()].sort((n,o)=>n[1]-o[1]);e=[...e];for(let[n,o]of t)e.splice(Math.min(o,e.length),0,n);this.tracker.reset(),this.history.clear(),this.replaceData(e),this.afterDataEdit()}undo(){this.editor.cancel(),this.history.undo()}redo(){this.editor.cancel(),this.history.redo()}toast(e){let t=y("div","fg-toast",{role:"status"});t.textContent=e,this.renderer.root.append(t),setTimeout(()=>t.remove(),3500)}refreshChoosers(){this.chooser.refresh(),this.sideBar?.refresh()}setColumnsVisible(e,t){let n=[];for(let o of e){let r=this.columns.getNode(o);!r||r.children||r.hide===!t||(this.columns.setHide(o,!t),n.push(o))}if(n.length){this.columnsChanged();for(let o of n)this.events.emit("columnVisible",{colId:o,visible:t})}}autoSize(e){let t=(e?e.map(l=>this.columns.getColumn(l)):this.columns.displayed()).filter(l=>!!l&&qe(l.def)),{first:n,last:o}=this.renderer.renderedRange(),r=this.store.state.locale.code,s=66,a=24;for(let l of t){let d=this.renderer.measureText(l.def.header??l.def.field??"",!0)+s,c=W(l.def,r);for(let p=n;p<=o;p++){let h=this.rowModel.getRow(p);h&&(d=Math.max(d,this.renderer.measureText(c(N(l.def,h.data)),!1)+a))}let u=this.columns.setWidth(l.id,Math.ceil(d));this.events.emit("columnResize",{colId:l.id,width:u})}this.layoutChanged()}resetColumns(){this.columns.reset(),this.columnsChanged()}setSort(e){let t=e.filter(n=>{let o=this.columns.getNode(n.colId);return!o||o.children?($(`setSort: unknown column "${n.colId}"`),!1):n.dir==="asc"||n.dir==="desc"});this.veto("beforeSort",{sort:t.map(n=>({...n}))})||(this.store.set({sort:t}),this.events.emit("sortChange",{sort:[...t]}))}toggleSort(e,t){let n=this.store.state.sort,o=n.find(a=>a.colId===e),r=o?o.dir==="asc"?"desc":null:"asc",s;t?r?o?s=n.map(a=>a.colId===e?{colId:e,dir:r}:a):s=[...n,{colId:e,dir:r}]:s=n.filter(a=>a.colId!==e):s=r?[{colId:e,dir:r}]:[],this.setSort(s)}setFilter(e,t){let n=this.columns.getNode(e);if(!n||n.children){$(`setFilter: unknown column "${e}"`);return}if(this.veto("beforeFilter",{colId:e,model:t}))return;let o={...this.store.state.filters};t?o[e]=t:delete o[e],this.store.set({filters:o}),this.events.emit("filterChange",{filters:{...o}})}setPinned(e,t){this.columns.setPinned(e,t),this.layoutChanged()}setFocus(e,t){let n=this.store.state.focus;n&&n.rowIndex===e&&n.colId===t||(this.store.set({focus:{rowIndex:e,colId:t}}),this.events.emit("focusChange",{rowIndex:e,colId:t}))}setSelected(e,t=this.store.state.anchorId){this.selectionVersion++,this.store.set({selected:e,anchorId:t}),this.events.emit("selectionChange",{selected:this.selectedRows()})}rowSelectable(e){let t=this.options.isRowSelectable;if(!t)return!0;try{return!!t(e)}catch{return!1}}groupMemberIds(e){if(e.group)return e.group.rows.filter(a=>this.rowSelectable(a)).map(a=>this.rowModel.idOf(a));let t=this.options.treeData?.getParentId;if(!t)return[];let n=new Map;for(let a of this.store.state.data){let l=null;try{l=t(a)}catch{l=null}if(l==null)continue;let d=String(l),c=n.get(d);c?c.push(a):n.set(d,[a])}let o=[],r=new Set([e.id]),s=[e.id];for(;s.length;)for(let a of n.get(s.shift())??[]){let l=this.rowModel.idOf(a);r.has(l)||(r.add(l),s.push(l),this.rowSelectable(a)&&o.push(l))}return o}groupSelection(e){let t=this.groupMemberIds(e),n=this.store.state.selected,o=t.filter(r=>n.has(r)).length;return o===0?"none":o===t.length?"all":"some"}toggleGroupSelection(e){if(this.options.rowSelection!=="multiple")return;let t=this.groupMemberIds(e),n=new Set(this.store.state.selected),o=t.length>0&&t.every(r=>n.has(r));for(let r of t)o?n.delete(r):n.add(r);this.setSelected(n)}selectFromClick(e,t,n){let o=this.options.rowSelection;if(!o||e<0||e>=this.rowModel.getRowCount())return;let r=this.rowModel.getRow(e);if(r.kind||!this.rowSelectable(r.data))return;let s=Co({selected:this.store.state.selected,anchorIndex:this.anchorIndex(),mode:o,index:e,idAt:a=>this.rowModel.getRow(a).id,toggle:t,range:n});if(this.rowModel.rows()!==this.rowModel.dataRows()||this.options.isRowSelectable)for(let a of s.selected){if(this.store.state.selected.has(a))continue;let l=this.rowModel.indexOfId(a),d=l>=0?this.rowModel.getRow(l):null;d&&(d.kind||!this.rowSelectable(d.data))&&s.selected.delete(a)}if(o==="multiple"&&this.options.groupSelectsChildren&&this.options.treeData&&r.hasChildren){let a=s.selected.has(r.id);for(let l of this.groupMemberIds(r))a?s.selected.add(l):s.selected.delete(l)}this.setSelected(s.selected,this.rowModel.getRow(s.anchorIndex)?.id??null)}anchorIndex(){let e=this.store.state.anchorId;if(e==null)return null;let t=this.rowModel.indexOfId(e);return t<0?null:t}selectableRows(){let e=this.rowModel.dataRows();return this.options.isRowSelectable?e.filter(t=>this.rowSelectable(t.data)):e}toggleSelectAll(){let e=this.selectableRows(),t=this.store.state.selected,n=e.length>0&&e.every(r=>t.has(r.id)),o=new Set(t);for(let r of e)n?o.delete(r.id):o.add(r.id);this.setSelected(o)}selectedRows(){let e=this.store.state.selected;return e.size?this.rowModel.allNodes().filter(t=>e.has(t.id)).map(t=>t.data):[]}withSelect(e){let t=[],n=this.options.rowNumbers;if(n){let o=typeof n=="object"?n:{};t.push(Tn(typeof o.width=="number"&&o.width>0?o.width:void 0,typeof o.header=="string"?o.header:void 0))}return this.options.rowDrag&&t.push(Ln),this.options.rowSelection&&t.push(En),[...t,...e]}setData(e,t){if(this.clientOnly("setData"))return;if(!Array.isArray(e)){$("setData: rows must be an array");return}this.editor.cancel(),this.tracker.reset(),this.history.clear(),this.detailOpen.clear(),this.treeLoaded.clear(),this.treeLoading.clear(),this.renderer.dropDetail(),this.store.set({data:le(e)}),t?.scrollToTop&&this.renderer.setScroll({top:0,left:0});let n=this.store.state.selected;if(n.size)if(this.options.getRowId){let s=new Set(this.rowModel.allNodes().map(l=>l.id)),a=new Set([...n].filter(l=>s.has(l)));a.size!==n.size&&this.setSelected(a)}else this.setSelected(new Set,null);let o=this.rowModel.getRowCount(),r=this.store.state.focus;r&&r.rowIndex>=o&&this.store.set({focus:o?{...r,rowIndex:o-1}:null})}setColumns(e){if(!Array.isArray(e)){$("setColumns: columns must be an array");return}if(this.menu.close(),this.sourceDefs=e,this.pivotCfg){this.rebuildPivot();return}this.columns.setDefs(this.withSelect(e));let t=o=>!!this.columns.getNode(o),n=this.groupBy.filter(t);n.length!==this.groupBy.length&&(this.groupBy=n,this.groupPanel?.refresh(),this.events.emit("groupChange",{groupBy:[...n]})),this.store.set({sort:this.store.state.sort.filter(o=>t(o.colId)),filters:Object.fromEntries(Object.entries(this.store.state.filters).filter(([o])=>t(o))),focus:null}),this.columnsChanged()}onChange(e){let t=(...o)=>o.some(r=>e.includes(r));this.pivotCfg&&t("data","locale")&&this.rebuildPivot(!1),t("locale")&&(this.menu.close(),this.chooser.close(),this.sideBar?.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")&&this.summaryOpts?.scope==="selected")&&this.refreshSummary(),t("locale")&&this.groupPanel?.refresh(),t("filters")&&this.sideBar?.refresh(),t("theme")&&this.renderer.applyTheme(),this.renderer.invalidate({header:t("sort","filters","quickFilter","advancedFilter","locale","selected","data"),rows:t("data","sort","filters","quickFilter","advancedFilter","locale")})}createApi(){let e=t=>((...n)=>{if(this.destroyed){$("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??""})),getSelectedRows:e(()=>this.selectedRows()),selectAll:e(()=>this.setSelected(new Set([...this.store.state.selected,...this.selectableRows().map(t=>t.id)]))),deselectAll:e(()=>this.setSelected(new Set,null)),getDisplayedRowCount:e(()=>this.rowModel.getRowCount()),scrollToRow:e(t=>this.renderer.scrollToRow(t)),validate:e(()=>this.validateAll()),setDensity:e(t=>this.setDensity(t)),getDensity:e(()=>this.density),showOverlay:e(t=>{this.forcedOverlay=t==="loading"||t==="noRows"?t:null,this.renderer.invalidate()}),getXlsxSheet:e(t=>Jt(this,t)),print:e(t=>io(Xt(this,t))),getPrintHtml:e(t=>Xt(this,t)),setColumnGroupOpened:e((t,n)=>this.setColumnGroupOpened(t,n)),setAdvancedFilter:e(t=>this.setAdvancedFilter(t)),getAdvancedFilter:e(()=>this.store.state.advancedFilter?JSON.parse(JSON.stringify(this.store.state.advancedFilter)):null),openFilterBuilder:e(()=>this.filterBuilder.open()),isColumnGroupOpened:e(t=>!!this.columns.getNode(t)?.open),applyTransaction:e(t=>this.applyTransaction(t)),applyTransactionAsync:e(t=>this.applyTransactionAsync(t)),getState:e(()=>this.getState()),setState:e((t,n)=>this.setState(t,n)),getScrollPosition:e(()=>this.renderer.getScroll()),setScrollPosition:e(t=>this.renderer.setScroll(t??{})),syncScroll:e((t,n="both")=>this.syncScroll(t,n)),setTheme:e(t=>this.store.set({theme:t})),setLocale:e(t=>this.store.set({locale:ze(t)})),setFont:e(t=>this.setFont(t)),setColumnVisible:e((t,n)=>this.setColumnsVisible([t],n)),autoSizeColumns:e(t=>this.autoSize(t)),resetColumnState:e(()=>this.resetColumns()),openColumnChooser:e(()=>this.chooser.open()),closeColumnChooser:e(()=>this.chooser.close()),toggleSideBar:e((t,n)=>this.sideBar?.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?.headers,!!t?.rows)),pasteText:e(t=>this.pasteText(t)),cutSelection:e(()=>this.cutToClipboard()),stopRowEdit:e(t=>this.editor.endRow(!t)),startEdit:e((t,n)=>this.editor.start(t,n)),stopEdit:e(t=>t?this.editor.cancel():void this.editor.commit(null)),addRows:e((t,n)=>this.addRows(t,n)),removeRows:e(t=>this.removeRows(t)),removeSelectedRows:e(()=>this.removeRows(this.selectedRows())),getModifiedRows:e(()=>this.getModifiedRows()),getChanges:e(()=>this.getChanges()),hasChanges:e(()=>this.hasChanges()),commitChanges:e(()=>this.commitChanges()),revertChanges:e(()=>this.revertChanges()),undo:e(()=>this.undo()),redo:e(()=>this.redo()),canUndo:e(()=>this.history.canUndo()),canRedo:e(()=>this.history.canRedo()),fillRange:e(t=>this.fillRange(t)),setPinnedRows:e(t=>this.setPinnedRows(t)),find:e(t=>this.finder.find(t)),findNext:e(()=>this.finder.next()),findPrevious:e(()=>this.finder.previous()),clearFind:e(()=>this.finder.clear()),setGroupBy:e(t=>this.setGroupBy(t)),getGroupBy:e(()=>this.getGroupBy()),setGroupExpanded:e((t,n)=>this.setGroupExpanded(t,n)),expandAll:e(()=>this.expandAll(!0)),collapseAll:e(()=>this.expandAll(!1)),setDetailExpanded:e((t,n)=>this.setDetailExpanded(t,n)),isDetailExpanded:e(t=>this.isDetailExpanded(t)),moveRow:e((t,n)=>this.moveRow(t,n)),dropRow:e((t,n,o)=>this.dropRow(t,n,o)),setPage:e(t=>this.setPage(t)),getPage:e(()=>this.getPage()),getPageCount:e(()=>this.getPageCount()),setPageSize:e(t=>this.setPageSize(t)),getPageSize:e(()=>this.getPageSize()),refreshRows:e(()=>this.refreshRows()),setPivot:e(t=>this.setPivot(t)),getPivot:e(()=>this.getPivot()),createChart:e(t=>this.charts.create(t)),getCsv:e(t=>Yt(this,t)),exportCsv:e((t="export.csv",n)=>$e(t,["\uFEFF",Yt(this,n)],"text/csv;charset=utf-8")),getXlsx:e(t=>Zt(this,t)),exportXlsx:e((t="export.xlsx",n)=>$e(t,[Zt(this,n)],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")),importFile:e((t,n)=>so(this,t,n)),on:e((t,n)=>this.events.on(t,n)),destroy:()=>this.destroy()}}destroy(){if(!this.destroyed){this.destroyed=!0,et.delete(this.renderer.root),clearTimeout(this.flashTimer),clearTimeout(this.txTimer);for(let e of this.disposers)e();this.renderer.destroy(),this.events.clear()}}};function hi(i,e){return new un(i,e).api}function Eo(i){let e=(Array.isArray(i)?i:[]).filter(t=>t&&t.grid&&typeof t.grid.getXlsxSheet=="function");return e.length?Se(e.map((t,n)=>t.grid.getXlsxSheet({...t.options,sheetName:t.sheetName??t.options?.sheetName??`Sheet${n+1}`}))):($("buildWorkbook: no grids given; the file has one empty sheet"),Se([{name:"Sheet1",rows:[]}]))}function fi(i,e){$e(i||"export.xlsx",[Eo(e)],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")}var pi=i=>typeof i=="function"?i():i??{};async function Lo(i,e,t,n){let o=i,r={method:e,credentials:n.credentials??"same-origin",headers:{Accept:"application/json",...pi(n.headers)}};if(e==="GET"){let l=new URLSearchParams;for(let[d,c]of Object.entries(t))l.set(d,typeof c=="string"?c:JSON.stringify(c));o+=(i.includes("?")?"&":"?")+l.toString()}else r.headers["Content-Type"]="application/json",r.body=JSON.stringify(t);let s=await fetch(o,r);if(!s.ok)throw new Error(`HTTP ${s.status} from ${i}`);let a=await s.text();return a?JSON.parse(a):null}function gi(i){if(Array.isArray(i))return{rows:i};let e=i??{},t=[e.rows,e.list,e.content,e.data,e.items,e.resultList].find(Array.isArray),n=[e.total,e.totalCount,e.totalElements,e.totCnt,e.count].find(o=>typeof o=="number");return{rows:t??[],total:n}}function To(i,e={}){return{async getRows(t){let n=Math.max(1,t.end-t.start),o={start:t.start,end:t.end,page:Math.floor(t.start/n),size:n,sort:t.sort,filters:t.filters,quickFilter:t.quickFilter,...e.params?.()??{}},r=await Lo(i,e.method??"POST",o,e);return(e.transform??gi)(r)}}}async function mi(i,e,t={}){if(!i.hasChanges())return null;let{created:n,updated:o,deleted:r}=i.getModifiedRows(),s=await Lo(e,"POST",{created:n,updated:o,deleted:r,...t.params?.()??{}},t);return i.commitChanges(),s}async function wi(i,e,t={}){let{rows:n}=await To(e,t).getRows({start:0,end:t.maxRows??1e4,sort:[],filters:{},quickFilter:""});return i.setData(n),n}function vi(i=document){let e=i.querySelector('meta[name="_csrf"]')?.content,t=i.querySelector('meta[name="_csrf_header"]')?.content||"X-CSRF-TOKEN";return e?{[t]:e}:{}}var yi={en:re,ko:vn,"zh-CN":yn,"zh-TW":bn,ja:wn,es:gn,fr:mn,de:pn,vi:xn,th:Cn,id:Rn,ru:kn,"pt-BR":Sn,it:Mn};for(let i of Object.values(yi))Mt(i);export{Eo as buildWorkbook,hi as createGrid,vi as csrfHeaders,re as en,fi as exportWorkbook,wi as loadData,yi as locales,qt as parseCsv,Ut as readXlsx,Mt as registerLocale,tn as renderChart,ze as resolveLocale,To as restDatasource,mi as saveChanges,ti as setLicenseKey,vo as verifyLicense,bt as version,Se as writeXlsx};
|
|
21
|
+
tr { break-inside: avoid; page-break-inside: avoid; }
|
|
22
|
+
.num { text-align: right; color: #9ca3af; }
|
|
23
|
+
tr.group td { background: #eef2f7; font-weight: 600; border-top: 1px solid #cbd5e1; break-after: avoid; page-break-after: avoid; }
|
|
24
|
+
tr.group.level-0 td { background: #e2e8f0; }
|
|
25
|
+
tr.total td { font-weight: 700; background: #f3f4f6; border-top: 1.5px solid #111827; border-bottom: 0; }
|
|
26
|
+
`;function Xt(i,e={}){let t=jt(i,e.columns),n=i.store.state.locale,o=n.code,r=t.map(T=>K(T.def,o)),s=new Intl.NumberFormat(o),a=e.rowNumbers??!!i.options.rowNumbers,l=T=>Zr.includes(T.align)?T.align:T.type==="number"?"right":T.type==="boolean"?"center":"left",d=t.map(T=>{let H=[];for(let N=T.node;N;N=N.parent)H.unshift(N);return H}),c=Math.max(1,...d.map(T=>T.length)),u=[];for(let T=0;T<c;T++){let H=T===0&&a?`<th class="num" rowspan="${c}">#</th>`:"";for(let N=0;N<t.length;N++){let z=d[N],W=z.length-1;if(T<W){let G=z[T];if(N>0&&d[N-1][T]===G)continue;let V=1;for(;N+V<t.length&&d[N+V][T]===G;)V++;H+=`<th colspan="${V}"${V>1?' class="span"':""}>${ue(Le(G.def,G.id))}</th>`}else if(T===W){let G=l(t[N].def);H+=`<th colspan="1" rowspan="${c-T}"${G==="left"?"":` style="text-align:${G}"`}>${ue(Le(t[N].def,t[N].id))}</th>`}}u.push(`<tr>${H}</tr>`)}let g=(T,H,N,z)=>{if(N==null||N==="")return"";if(z==="count")return s.format(N);let W=T.def.type??(typeof N=="number"?"number":N instanceof Date?"date":void 0);return W===T.def.type?r[H](N):K({...T.def,type:W},o)(N)},f=(T,H,N,z=0)=>{let W=0;for(;W<t.length-1&&!N[W];)W++;W=Math.max(1,W);let G=a?'<td class="num"></td>':"";G+=`<td colspan="${W}"${z?` style="padding-left:${7+z*14}px"`:""}>${ue(H)}</td>`;for(let V=W;V<t.length;V++)G+=`<td style="text-align:${l(t[V].def)}">${ue(N[V]??"")}</td>`;return`<tr class="${T}">${G}</tr>`},b=_t(i,e.rows),w=e.groups!==!1&&!i.rowModel.server&&!i.options.treeData?i.getGroupBy():[],m=e.styles!==!1&&t.some(T=>T.def.cellClass)?po(i):null,h="";try{for(let T of oi(i,b,w)){if(T.kind==="group"){let z=i.columns.getNode(T.colId)?.def,W=q(T.value)?n.blanks:z?K(z,o)(T.value):String(T.value),G=`${z?Le(z,T.colId):T.colId}: ${W} (${s.format(T.rows.length)})`,V=t.map((U,Y)=>{if(!(!U.def.aggFunc||w.includes(U.id)))try{return g(U,Y,pe(U.def.aggFunc,T.rows.map(J=>B(U.def,J)),T.rows),U.def.aggFunc)||void 0}catch{return}});h+=f(`group level-${Math.min(T.level,5)}`,G,V,T.level);continue}let H=T.row,N=a?`<td class="num">${T.n}</td>`:"";t.forEach((z,W)=>{let G=B(z.def,H),V=q(G)?"":r[W](G),U=`text-align:${l(z.def)}`;if(m&&z.def.cellClass){let Y;try{Y=typeof z.def.cellClass=="function"?z.def.cellClass({value:G,formatted:V,row:H,rowIndex:T.n-1,column:z.def}):z.def.cellClass}catch{Y=void 0}if(Y){let J=m.of(Y);J.color&&(U+=`;color:${ho(J.color)}`),J.fill&&(U+=`;background:${ho(J.fill)}`),J.bold&&(U+=";font-weight:600")}}N+=`<td style="${U}">${ue(V)}</td>`}),h+=`<tr>${N}</tr>`}}finally{m?.dispose()}let p="",v=e.summary!==!1?i.summary():null;v&&v.opts.rows.forEach((T,H)=>{let N=t.map((z,W)=>{let G=T.columns?.[z.id];return G===void 0?void 0:g(z,W,v.values[H]?.[z.id],De(G).agg)||void 0});p+=f("total",T.label??"",N)});let y=t.map(T=>Math.max(1,T.width)),R=y.reduce((T,H)=>T+H,0),k=ei.includes(e.paper)?e.paper:"A4",L=e.orientation==="portrait"||e.orientation==="landscape"?e.orientation:R+(a?40:0)>ti?"landscape":"portrait",C=e.fitToWidth!==!1,E=C?`<colgroup>${a?'<col style="width:40px">':""}${y.map(T=>`<col style="width:${Math.round(T/R*1e3)/10}%">`).join("")}</colgroup>`:"",M=ue(e.title??document.title??""),S=e.printedAt!==!1?new Intl.DateTimeFormat(o,{dateStyle:"medium",timeStyle:"short"}).format(new Date):"",I=e.title||e.subtitle?`<div>${e.title?`<h1>${M}</h1>`:""}${e.subtitle?`<p class="sub">${ue(e.subtitle)}</p>`:""}</div>`:"<div></div>",$=e.title||e.subtitle||S?`<header>${I}${S?`<p class="printed">${ue(S)}</p>`:""}</header>`:"",A="font: 8.5px system-ui, sans-serif; color: #6b7280;",F=[`size: ${k} ${L}; margin: 12mm 12mm 14mm;`,e.footer?`@bottom-left { content: ${ni(e.footer)}; ${A} }`:"",e.pageNumbers!==!1?`@bottom-right { content: counter(page) " / " counter(pages); ${A} }`:""].join(" "),P=e.striped!==!1?"tbody tr:not(.group):nth-child(even) td { background: #f9fafb; }":"";return`<!doctype html><html lang="${ue(o)}"><head><meta charset="utf-8"><title>${M}</title><style>
|
|
27
|
+
@page { ${F} }${ri}${P}
|
|
28
|
+
</style></head><body>${$}<table${C?' class="fit"':""}>${E}<thead>${e.headers===!1?"":u.join("")}</thead><tbody>${h}</tbody>${p?`<tfoot>${p}</tfoot>`:""}</table></body></html>`}function fo(i){if(typeof document>"u")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(),O("printing is not supported in this environment");return}t.open(),t.write(i),t.close();let n=e.contentWindow,o=()=>setTimeout(()=>e.remove(),1e3);n.addEventListener("afterprint",o),setTimeout(()=>{try{n.focus(),n.print()}catch{O("printing is not supported in this environment")}o()},50)}function Yt(i,e={}){let t=jt(i,e.columns),n=i.store.state.locale.code,o=typeof e.separator=="string"&&e.separator.length===1?e.separator:",",r=_t(i,e.rows).map(s=>t.map(a=>{let l=B(a.def,s),d=a.def.type,c=ut(a.def,l,n);return{value:c,text:!(d==="number"||d==="date"||d==="boolean")||typeof l=="string"&&!Qr.test(c)}}));return e.headers!==!1&&r.unshift(t.map(s=>({value:Le(s.def,s.id),text:!0}))),ro(r,o)}function ii(i){let e=i.format;if(i.type==="date")return e==="datetime"?"yyyy-mm-dd hh:mm":e==="time"?"hh:mm":"yyyy-mm-dd";if(i.type!=="number"||e==null)return null;if(typeof e=="string")return e==="integer"?"#,##0":e==="percent"?"0%":e.startsWith("currency:")?"#,##0.##":/^[#0,.%]+$/.test(e)?e:null;let t=e,n=t.maximumFractionDigits??t.minimumFractionDigits,o=n?`.${"0".repeat(Math.min(10,n))}`:"";return t.style==="percent"?`0${o}%`:`${t.useGrouping===!1?"0":"#,##0"}${o}`}function vt(i){let e=/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(i.trim());if(e)return`FF${(e[1].length===3?[...e[1]].map(r=>r+r).join(""):e[1]).toUpperCase()}`;let t=/^rgba?\(\s*(\d+)[\s,]+(\d+)[\s,]+(\d+)(?:[\s,/]+([\d.]+%?))?\s*\)$/i.exec(i.trim());return!t||!((t[4]===void 0?1:t[4].endsWith("%")?parseFloat(t[4])/100:parseFloat(t[4]))>0)?"":`FF${[t[1],t[2],t[3]].map(o=>Math.min(255,Number(o)).toString(16).padStart(2,"0")).join("").toUpperCase()}`}function po(i){let e=i.renderer.root;if(typeof getComputedStyle!="function"||!e.isConnected)return{of:()=>({}),dispose:()=>{}};let t=document.createElement("div");t.className="fg-row",t.style.cssText="position:absolute;left:-9999px;top:0;visibility:hidden;pointer-events:none";let n=document.createElement("div");t.append(n),e.append(t);let o=a=>{n.className=a?`fg-cell ${a}`:"fg-cell";let l=getComputedStyle(n),d=l.fontWeight;return{color:l.color,fill:l.backgroundColor,bold:d==="bold"||Number(d)>=600}},r=o(""),s=new Map;return{of(a){let l=s.get(a);if(!l){let d=o(a);l={},d.color!==r.color&&vt(d.color)&&(l.color=vt(d.color)),d.fill!==r.fill&&vt(d.fill)&&(l.fill=vt(d.fill)),d.bold&&!r.bold&&(l.bold=!0),s.set(a,l)}return l},dispose:()=>t.remove()}}function Jt(i,e={}){return Ee([Zt(i,e)])}function Zt(i,e={}){let t=jt(i,e.columns),n=i.store.state.locale.code,o=[],r=[],s=0;if(e.headers!==!1){let m=t.map(p=>{let v=[];for(let y=p.node;y;y=y.parent)v.unshift(y);return v});s=Math.max(1,...m.map(p=>p.length));let h=p=>{let v="";for(let y=p+1;y>0;y=Math.floor((y-1)/26))v=String.fromCharCode(65+(y-1)%26)+v;return v};for(let p=0;p<s;p++){let v=[];for(let y=0;y<t.length;y++){let R=m[y],k=R.length-1;if(p<k){let L=R[p],C=y>0?m[y-1][p]:null;if(v.push({v:C===L?null:Le(L.def,L.id),header:!0}),C!==L){let E=y;for(;E+1<t.length&&m[E+1][p]===L;)E++;E>y&&r.push(`${h(y)}${p+1}:${h(E)}${p+1}`)}}else p===k?(v.push({v:Le(t[y].def,t[y].id),header:!0}),s-1>p&&r.push(`${h(y)}${p+1}:${h(y)}${s}`)):v.push({v:null,header:!0})}o.push(v)}}let a=t.map(m=>ii(m.def)),l=t.map(m=>K(m.def,n)),d=_t(i,e.rows),c=e.styles!==!1,u=c&&t.some(m=>m.def.cellClass)?po(i):null,g=(m,h,p)=>{if(q(p))return null;let v=a[h]??void 0;switch(m.def.type){case"number":{let y=typeof p=="number"?p:Number(p);return Number.isFinite(y)?{v:y,fmt:v}:String(p)}case"date":{let y=ie(p);return y?{v:y,fmt:v}:String(p)}case"boolean":return typeof p=="boolean"?p:String(p);default:return l[h](p)}};try{d.forEach((m,h)=>{o.push(t.map((p,v)=>{let y=B(p.def,m),R=g(p,v,y);if(!c)return R;let k=p.def.align?{align:p.def.align}:{};if(u&&p.def.cellClass){let L;try{L=typeof p.def.cellClass=="function"?p.def.cellClass({value:y,formatted:l[v](y),row:m,rowIndex:h,column:p.def}):p.def.cellClass}catch{L=void 0}L&&(k={...k,...u.of(L)})}return Object.keys(k).length?R!==null&&typeof R=="object"&&!(R instanceof Date)?{...R,...k}:{v:R,...k}:R}))})}finally{u?.dispose()}let f=new Set,b=m=>{let h="";for(let p=m+1;p>0;p=Math.floor((p-1)/26))h=String.fromCharCode(65+(p-1)%26)+h;return h},w=(m,h,p,v)=>{for(let y=m;y<=p;y++)for(let R=h;R<=v;R++)if(f.has(`${y},${R}`))return;for(let y=m;y<=p;y++)for(let R=h;R<=v;R++)f.add(`${y},${R}`);r.push(`${b(h)}${s+m+1}:${b(v)}${s+p+1}`)};return d.forEach((m,h)=>t.forEach((p,v)=>{let y=p.def.colSpan?$e(p.def.colSpan,p.def,m,h,t.length-v):1;y>1&&w(h,v,h,v+y-1)})),t.forEach((m,h)=>{if(!m.def.merge&&!m.def.rowSpan)return;let p=Je(d,m.def);for(let v=0;v<d.length;v++)p.start[v]===v&&p.end[v]>v&&w(v,h,p.end[v],h)}),{name:e.sheetName??"Sheet1",rows:o,widths:t.map(m=>Math.round(m.width/7)),merges:r,freezeRows:s,autoFilter:s>0}}function Oe(i,e,t){if(typeof URL>"u"||typeof URL.createObjectURL!="function"||typeof document>"u"){O("downloads are not supported in this environment");return}let n=URL.createObjectURL(new Blob(e,{type:t})),o=document.createElement("a");o.href=n,o.download=i,o.style.display="none",document.body.append(o),o.click(),o.remove(),setTimeout(()=>URL.revokeObjectURL(n),1e3)}var yt=i=>String(i??"").trim().toLowerCase();function si(i){return i==null?"":i instanceof Date?i.getHours()||i.getMinutes()||i.getSeconds()?i.toISOString():Q(i)??"":String(i)}async function go(i,e,t={}){let n=e instanceof Uint8Array?e:new Uint8Array(e instanceof ArrayBuffer?e:await e.arrayBuffer()),o;if(mt(n)){let w=await Kt(n),m=typeof t.sheet=="string"?w.find(h=>h.name===t.sheet):w[typeof t.sheet=="number"?t.sheet:0];if(!m)throw new Error(`Sheet ${String(t.sheet)} not found`);o=m.rows}else{let w=new TextDecoder().decode(n);o=qt(w,Vt(w))}if(!o.length)return{rows:[],skipped:0};let r=[],s=w=>w.forEach(m=>m.children?s(m.children):!D(m.id)&&m.def.field&&r.push(m));s(i.columns.roots());let a=w=>{let m=yt(w);return m?r.find(h=>yt(h.def.header)===m)??r.find(h=>yt(h.def.field)===m||yt(h.id)===m)??null:null},l=1,d=new Set(o[0].map(a).filter(Boolean));for(;l<Math.min(o.length,5);){let m=(o[l]??[]).filter(p=>p!=null&&String(p).trim()!==""),h=m.map(a).filter(p=>p&&!d.has(p));if(!m.length||!m.every(p=>typeof p=="string")||!h.length)break;h.forEach(p=>d.add(p)),l++}let c=Math.max(...o.slice(0,l).map(w=>w?.length??0)),u=Array.from({length:c},(w,m)=>{for(let h=l-1;h>=0;h--){let p=o[h]?.[m];if(p!=null&&String(p).trim()!=="")return a(p)}return null}),g=i.store.state.data[0],f=0,b=[];for(let w of o.slice(l)){if(!w||w.every(h=>h==null||String(h).trim()===""))continue;let m={};u.forEach((h,p)=>{if(!h)return;let v=h.def,y=si(w[p]),R=i.acceptText(v,m,y,g?.[v.field]);R.ok?y===""&&(R.value===null||R.value==="")||(m[v.field]=R.value):f++}),b.push(m)}return t.mode==="replace"?i.setData(b):i.addRows(b),{rows:b,skipped:f}}var ai="http://www.w3.org/2000/svg";var Qt=["var(--fg-accent, #2563eb)","#f59e0b","#10b981","#ef4444","#8b5cf6","#06b6d4","#ec4899","#84cc16","#f97316","#64748b","#14b8a6","#a855f7"],me=i=>Qt[i%Qt.length];function j(i,e={},t=""){let n=document.createElementNS(ai,i);t&&n.setAttribute("class",t);for(let[o,r]of Object.entries(e))n.setAttribute(o,String(r));return n}function He(i,e){let t=j("title");t.textContent=e,i.append(t)}function en(i,e,t=5){let n=Math.min(0,i),o=Math.max(0,e);n===o&&(o=n+1);let r=(o-n)/t,s=10**Math.floor(Math.log10(r)),a=[1,2,5,10].map(d=>d*s).find(d=>d>=r);n=Math.floor(n/a)*a,o=Math.ceil(o/a)*a;let l=[];for(let d=n;d<=o+a/2;d+=a)l.push(Math.round(d/a)*a);return l}function tn(i,e){let t=new Intl.NumberFormat(e.locale,{maximumFractionDigits:2}),n=new Intl.NumberFormat(e.locale,{notation:"compact",maximumFractionDigits:1}),o=j("svg",{viewBox:"0 0 640 360",role:"img",preserveAspectRatio:"xMidYMid meet"},`fg-chart fg-chart-is-${e.type}`);e.title&&o.setAttribute("aria-label",e.title);let r=e.series.slice(0,Qt.length),s=e.categories,a=16;if(e.title){let S=j("text",{x:320,y:22,"text-anchor":"middle"},"fg-chart-title");S.textContent=e.title,o.append(S),a=36}let l=j("g",{},"fg-chart-legend"),d=e.type==="pie"||e.type==="donut",c=d?s:e.type==="scatter"?r.slice(1).map(S=>S.name):r.map(S=>S.name),u=16;c.forEach((S,I)=>{let $=j("g",{transform:`translate(${u},350)`},"fg-chart-legend-item");$.append(j("rect",{x:0,y:-9,width:10,height:10,rx:2,fill:me(I)}));let A=j("text",{x:14,y:0});A.textContent=S,$.append(A),l.append($),u+=24+Math.min(140,S.length*7)});let g=308;if(e.type==="scatter"){li(o,e,r,a,g,t,n),o.append(l),i.replaceChildren(o);return}if(d){let S=(r[0]?.values??[]).map(T=>T!==null&&T>0?T:0),I=S.reduce((T,H)=>T+H,0),$=640/2,A=(a+g)/2,F=Math.max(10,(g-a)/2-6),P=-Math.PI/2;S.forEach((T,H)=>{if(!T||!I)return;let N=P+T/I*Math.PI*2,z=N-P>Math.PI?1:0,W=U=>`${$+F*Math.cos(U)},${A+F*Math.sin(U)}`,G=T===I?`M${$-F},${A}a${F},${F} 0 1,0 ${2*F},0a${F},${F} 0 1,0 ${-2*F},0`:`M${$},${A}L${W(P)}A${F},${F} 0 ${z} 1 ${W(N)}Z`,V=j("path",{d:G,fill:me(H)},"fg-chart-slice");He(V,`${s[H]}: ${t.format(T)} (${Math.round(T/I*1e3)/10}%)`),o.append(V),P=N}),e.type==="donut"&&o.append(j("circle",{cx:$,cy:A,r:F*.58,fill:"var(--fg-bg, #fff)"},"fg-chart-donut-hole")),o.append(l),i.replaceChildren(o);return}let f=e.type==="stackedBar",b=0,w=0;s.forEach((S,I)=>{let $=0,A=0;for(let F of r){let P=F.values[I];P==null||!Number.isFinite(P)||(f?P>=0?$+=P:A+=P:(w=Math.max(w,P),b=Math.min(b,P)))}f&&(w=Math.max(w,$),b=Math.min(b,A))});let m=en(b,w),h=m[0],p=m[m.length-1],v=56,y=624,R=S=>g-(S-h)/(p-h)*(g-a),k=j("g",{},"fg-chart-axis");for(let S of m){k.append(j("line",{x1:v,x2:y,y1:R(S),y2:R(S)},S===0?"fg-chart-zero":"fg-chart-grid"));let I=j("text",{x:v-6,y:R(S)+4,"text-anchor":"end"});I.textContent=n.format(S),k.append(I)}let L=(y-v)/Math.max(1,s.length),C=Math.max(1,Math.ceil(s.length/Math.floor((y-v)/56)));s.forEach((S,I)=>{if(I%C)return;let $=j("text",{x:v+L*(I+.5),y:g+16,"text-anchor":"middle"}),A=Math.max(3,Math.min(12,Math.floor(L*C/10)));$.textContent=S.length>A?`${S.slice(0,A-1)}\u2026`:S,k.append($)}),o.append(k);let E=j("g",{},"fg-chart-plot"),M=e.type==="combo";if(M){let S=L*.6,I=r[0];s.forEach(($,A)=>{let F=I?.values[A];if(F==null||!Number.isFinite(F))return;let P=v+L*A+(L-S)/2,T=j("rect",{x:P,y:Math.min(R(0),R(F)),width:Math.max(1,S-2),height:Math.max(.5,Math.abs(R(F)-R(0))),fill:me(0),rx:2},"fg-chart-bar");He(T,`${I.name} \xB7 ${$}: ${t.format(F)}`),E.append(T)})}if(e.type==="bar"||f){let S=L*.72,I=f?S:S/Math.max(1,r.length);s.forEach(($,A)=>{let F=0,P=0;r.forEach((T,H)=>{let N=T.values[A];if(N==null||!Number.isFinite(N))return;let z=0,W=N;f&&(z=N>=0?F:P,W=z+N,N>=0?F=W:P=W);let G=v+L*A+(L-S)/2+(f?0:I*H),V=j("rect",{x:G,y:Math.min(R(z),R(W)),width:Math.max(1,I-2),height:Math.max(.5,Math.abs(R(W)-R(z))),fill:me(H),rx:2},"fg-chart-bar");He(V,`${T.name} \xB7 ${$}: ${t.format(N)}`),E.append(V)})})}else r.forEach((S,I)=>{if(M&&I===0)return;let $=S.values.map((P,T)=>P==null||!Number.isFinite(P)?null:[v+L*(T+.5),R(P),P]),A="",F=!1;for(let P of $){if(!P){F=!1;continue}A+=`${F?"L":"M"}${P[0]},${P[1]}`,F=!0}if(e.type==="area"){let P=$.filter(T=>!!T);if(P.length){let T=`M${P[0][0]},${R(0)}${P.map(H=>`L${H[0]},${H[1]}`).join("")}L${P[P.length-1][0]},${R(0)}Z`;E.append(j("path",{d:T,fill:me(I),"fill-opacity":.18},"fg-chart-area"))}}E.append(j("path",{d:A,fill:"none",stroke:me(I),"stroke-width":2.2,"stroke-linejoin":"round"},"fg-chart-line")),$.forEach((P,T)=>{if(!P)return;let H=j("circle",{cx:P[0],cy:P[1],r:3.5,fill:me(I)},"fg-chart-point");He(H,`${S.name} \xB7 ${s[T]}: ${t.format(P[2])}`),E.append(H)})});o.append(E,l),i.replaceChildren(o)}function li(i,e,t,n,o,r,s){let a=t[0]?.values??[],l=t.slice(1),d=R=>R!=null&&Number.isFinite(R),c=a.filter(d),u=l.flatMap(R=>R.values.filter(d));if(!c.length||!u.length)return;let g=en(Math.min(...c),Math.max(...c)),f=en(Math.min(...u),Math.max(...u)),b=56,w=624,m=R=>b+(R-g[0])/(g[g.length-1]-g[0])*(w-b),h=R=>o-(R-f[0])/(f[f.length-1]-f[0])*(o-n),p=j("g",{},"fg-chart-axis");for(let R of f){p.append(j("line",{x1:b,x2:w,y1:h(R),y2:h(R)},R===0?"fg-chart-zero":"fg-chart-grid"));let k=j("text",{x:b-6,y:h(R)+4,"text-anchor":"end"});k.textContent=s.format(R),p.append(k)}g.forEach((R,k)=>{let L=k===0?"start":k===g.length-1?"end":"middle",C=j("text",{x:m(R),y:o+16,"text-anchor":L});C.textContent=s.format(R),p.append(C)});let v=j("text",{x:w,y:o+32,"text-anchor":"end"},"fg-chart-axis-name");v.textContent=`${t[0]?.name??""} \u2192`,p.append(v),i.append(p);let y=j("g",{},"fg-chart-plot");a.forEach((R,k)=>{d(R)&&l.forEach((L,C)=>{let E=L.values[k];if(!d(E))return;let M=j("circle",{cx:m(R),cy:h(E),r:4,fill:me(C),"fill-opacity":.8},"fg-chart-point");He(M,`${e.categories[k]??""}: ${t[0].name} ${r.format(R)}, ${L.name} ${r.format(E)}`),y.append(M)})}),i.append(y)}var di=12,mo=500,nn=["bar","stackedBar","line","area","combo","pie","donut","scatter"],bt=class{constructor(e){this.grid=e;this.handles=new Set}create(e={}){let{grid:t}=this,n=nn.includes(e.type)?e.type:"bar",o=()=>t.store.state.locale,r=e.range??t.store.state.range,s=null;if(r){let w=t.columns.getColumn(r.start.colId),m=t.columns.getColumn(r.end.colId);if(w&&m){let h=Fe({start:{rowIndex:r.start.rowIndex,colIndex:w.index},end:{rowIndex:r.end.rowIndex,colIndex:m.index}}),p=[];for(let v=h.r1;v<=h.r2&&p.length<mo;v++){let y=t.rowModel.getRow(v);y&&!y.kind&&p.push(y.data)}s={rows:p,colIds:t.columns.displayed().slice(h.c1,h.c2+1).filter(v=>!D(v.id)).map(v=>v.id)}}}let a=()=>{let w=s?s.rows:t.rowModel.dataRows().slice(0,mo).map(k=>k.data),m=(s?s.colIds.map(k=>t.columns.getColumn(k)):t.columns.displayed().filter(k=>!D(k.id))).filter(k=>!!k),h=m[0]&&m[0].def.type!=="number"?m[0]:s?null:m.find(k=>k.def.type!=="number")??null,p=k=>!!k.node.parent&&k.node.parent.id==="pivotgroup|total",v=m.filter(k=>k!==h&&k.def.type==="number"&&(s||!p(k))).slice(0,di),y=k=>{let L=[];for(let C=k.node.parent;C;C=C.parent)L.unshift(C.def.header??C.id);return L.push(k.def.header??k.def.field??k.id),L.join(" \xB7 ")},R=h?K(h.def,o().code):null;return{categories:w.map((k,L)=>h&&R?R(B(h.def,k)):String(L+1)),series:v.map(k=>({name:y(k),values:w.map(L=>{let C=B(k.def,L),E=typeof C=="number"?C:C==null||C===""?NaN:Number(C);return Number.isFinite(E)?E:null})}))}},l=x("div","fg-chart-body"),d=null,c=()=>tn(l,{type:n,title:e.title,locale:o().code,...a()}),u=w=>({bar:o().chartBar,stackedBar:o().chartStacked,line:o().chartLine,area:o().chartArea,pie:o().chartPie,donut:o().chartDonut,combo:o().chartCombo,scatter:o().chartScatter})[w],g=()=>d?.querySelectorAll(".fg-chart-type").forEach(w=>w.setAttribute("aria-pressed",String(w.dataset.type===n)));if(e.container)e.container.append(l);else{d=x("div","fg-chart-panel",{role:"dialog","aria-label":e.title??u(n)});let w=x("div","fg-chart-head");for(let h of nn){let p=x("button","fg-chart-type",{type:"button",title:u(h)});p.dataset.type=h,p.textContent=u(h),p.addEventListener("click",()=>b.setType(h)),w.append(p)}let m=x("button","fg-chooser-close",{type:"button","aria-label":o().close});m.textContent="\xD7",m.addEventListener("click",()=>b.destroy()),w.append(x("span","fg-chart-spacer"),m),d.append(w,l),t.renderer.root.append(d)}let f=[t.events.on("cellValueChanged",()=>c()),t.events.on("rowsAdded",()=>c()),t.events.on("rowsRemoved",()=>c())];s||f.push(t.events.on("sortChange",()=>c()),t.events.on("filterChange",()=>c()));let b={el:l,setType:w=>{nn.includes(w)&&(n=w,g(),c())},update:()=>c(),destroy:()=>{f.forEach(w=>w()),(d??l).remove(),this.handles.delete(b)}};return this.handles.add(b),g(),c(),b}destroy(){for(let e of[...this.handles])e.destroy()}};var wo=new WeakMap,ci=i=>typeof i=="function"?"custom":i;function on(i,e){return{rows:(i.rows??[]).filter(e),columns:(i.columns??[]).filter(e),values:(i.values??[]).filter(t=>t&&e(t.colId)).map(t=>({colId:t.colId,aggFunc:t.aggFunc??"sum"})),totals:i.totals!==!1}}function vo(i,e,t,n,o){let r=on(e,v=>!!t(v)),s=new Intl.Collator(o,{numeric:!0,sensitivity:"base"}),a=v=>t(v),l=(v,y)=>v.map(R=>Z(B(a(R),y))).join(""),d=new Map;for(let v of i){let y=l(r.columns,v);d.has(y)||d.set(y,r.columns.map(R=>B(a(R),v)))}let c=[...d.entries()].sort((v,y)=>{for(let R=0;R<r.columns.length;R++){let k=de(v[1][R],y[1][R],s);if(k)return k}return 0});r.columns.length||c.splice(0,c.length,["",[]]);let u=[],g=(v,y,R)=>{let k=r.values[y],L=a(k.colId),C=`pivot|${R}|${y}`;u.push({id:C,comboKey:v,valueIndex:y});let E=S=>v===null||l(r.columns,S)===v,M=k.aggFunc;return{id:C,field:C,header:`${L.header??L.field??k.colId} (${n.agg(ci(M))})`,type:"number",format:M==="count"?"integer":L.format,width:130,aggFunc:(S,I)=>{let $=I.flatMap(A=>wo.get(A)??[]).filter(E);return $.length?pe(M,$.map(A=>B(L,A)),$):null}}},f=[],b=(v,y)=>{if(q(y))return n.blank;let R=a(v);return R.type==="number"&&!R.format?String(y):K(R,o)(y)};if(!r.columns.length)r.values.forEach((v,y)=>f.push(g("",y,0)));else{let v=(y,R,k)=>{let L=[],C=0;for(;C<y.length;){let E=y[C][1][R],M=Z(E),S=C;for(;S<y.length&&Z(y[S][1][R])===M;)S++;let I=y.slice(C,S),$=R===r.columns.length-1?r.values.map((A,F)=>g(I[0][0],F,k+C)):v(I,R+1,k+C);L.push({id:`pivotgroup|${R}|${k+C}`,header:b(r.columns[R],E),children:$}),C=S}return L};f.push(...v(c,0,0)),r.totals&&r.values.length&&f.push({id:"pivotgroup|total",header:n.total,children:r.values.map((y,R)=>g(null,R,"total"))})}let w=new Map;for(let v of i){let y=l(r.rows,v),R=w.get(y);R||w.set(y,R={values:r.rows.map(k=>B(a(k),v)),src:[]}),R.src.push(v)}let h=[...w.values()].sort((v,y)=>{for(let R=0;R<r.rows.length;R++){let k=de(v.values[R],y.values[R],s);if(k)return k}return 0}).map(v=>{let y={};r.rows.forEach((k,L)=>{y[a(k).field??k]=v.values[L]});let R=new Map;if(r.columns.length)for(let k of v.src){let L=l(r.columns,k),C=R.get(L);C||R.set(L,C=[]),C.push(k)}for(let k of u){let L=r.values[k.valueIndex],C=k.comboKey===null||!r.columns.length?v.src:R.get(k.comboKey)??[],E=a(L.colId);y[k.id]=C.length?pe(L.aggFunc,C.map(M=>B(E,M)),C):null}return wo.set(y,v.src),y});return{columns:[...r.rows.map(v=>{let y=a(v);return{id:v,field:y.field??v,header:y.header??y.field??v,type:y.type,format:y.format,width:y.width??140}}),...f],rows:h,groupBy:r.rows.slice(0,-1)}}var xt="1.1.0";var ui={kty:"EC",crv:"P-256",x:"sUTKkglZmk-HMKPNub8p7AeLBKesHCU8irIkw9rJlbE",y:"j0U_aKRDR7iApY9UpaD3hUemhBLZJwDv9-QiT_hUyw8"},rn="https://freegrid.app/pricing/",yo="https://freegrid.app/api/usage",hi="https://freegrid.app/api/domain-status",bo=i=>{let e=atob(i.replace(/-/g,"+").replace(/_/g,"/")+"=".repeat((4-i.length%4)%4));return Uint8Array.from(e,t=>t.charCodeAt(0))};function an(i){let e=i.toLowerCase().replace(/^\[|\]$/g,"");return!e||e==="localhost"||e==="127.0.0.1"||e==="::1"||e==="0.0.0.0"||e.endsWith(".localhost")||e.endsWith(".test")||e.endsWith(".local")||/^(10|192\.168|172\.(1[6-9]|2\d|3[01]))\./.test(e)}function fi(i,e){let t=i.toLowerCase().replace(/\.$/,"");return e.some(n=>{let o=n.toLowerCase().replace(/\.$/,""),r=o.startsWith("*."),s=r?o.slice(2):o;return s?t===s||t===`www.${s}`?!0:r&&t.endsWith(`.${s}`):!1})}var pi=i=>{let e=typeof i=="string"?/^(\d{4})-(\d{2})-(\d{2})$/.exec(i):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])},gi=i=>`${i.getFullYear()}-${String(i.getMonth()+1).padStart(2,"0")}-${String(i.getDate()).padStart(2,"0")}`;async function ko(i,e,t={}){let n=typeof i=="string"?i.trim().split("."):[];if(n.length!==3||n[0]!=="FG1")return{ok:!1,reason:"format"};let o;try{if(o=JSON.parse(new TextDecoder().decode(bo(n[1]))),!Array.isArray(o.domains)||!pi(o.expires))return{ok:!1,reason:"format"}}catch{return{ok:!1,reason:"format"}}let r=typeof crypto<"u"?crypto.subtle:void 0;if(!r)return{ok:!1,reason:"unsupported",info:o};try{let s=await r.importKey("jwk",t.publicKey??ui,{name:"ECDSA",namedCurve:"P-256"},!1,["verify"]),a=new TextEncoder().encode(`${n[0]}.${n[1]}`);if(!await r.verify({name:"ECDSA",hash:"SHA-256"},s,bo(n[2]),a))return{ok:!1,reason:"signature",info:o}}catch{return{ok:!1,reason:"signature",info:o}}return gi(t.now??new Date)>o.expires?{ok:!1,reason:"expired",info:o}:fi(e,o.domains)?{ok:!0,info:o}:{ok:!1,reason:"domain",info:o}}var sn,xo=new Map,Be=null;function mi(i){sn=i}var Co={missing:`FreeGrid is free for personal use. Company use needs a domain license (\u20A9200,000 per domain per year): ${rn}
|
|
29
|
+
FreeGrid\uB294 \uAC1C\uC778\uC5D0\uAC8C \uBB34\uB8CC\uC785\uB2C8\uB2E4. \uD68C\uC0AC\uC5D0\uC11C \uC4F0\uB824\uBA74 \uB3C4\uBA54\uC778 \uB77C\uC774\uC120\uC2A4(\uB3C4\uBA54\uC778\uB2F9 \uC5F0 20\uB9CC \uC6D0)\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4: ${rn}`,format:"FreeGrid: the license key is not in the right format. / \uB77C\uC774\uC120\uC2A4 \uD0A4 \uD615\uC2DD\uC774 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.",signature:"FreeGrid: the license key could not be verified. / \uB77C\uC774\uC120\uC2A4 \uD0A4\uB97C \uD655\uC778\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.",expired:"FreeGrid: the license key has expired. / \uB77C\uC774\uC120\uC2A4 \uAE30\uAC04\uC774 \uB05D\uB0AC\uC2B5\uB2C8\uB2E4.",domain:"FreeGrid: the license key is for a different domain. / \uB2E4\uB978 \uB3C4\uBA54\uC778\uC6A9 \uB77C\uC774\uC120\uC2A4 \uD0A4\uC785\uB2C8\uB2E4."};function Ro(i,e=typeof location<"u"?location.hostname:""){try{if(an(e)||typeof navigator>"u")return;let t=new Date().toISOString().slice(0,10),n=`${e}|${t}|${i.licensed?1:0}`,o=typeof localStorage<"u"?localStorage:null;if(o?.getItem("freegrid:usage")===n)return;o?.setItem("freegrid:usage",n);let r=JSON.stringify({version:i.version,licensed:i.licensed,company:i.company,url:`${location.origin}${location.pathname}`});typeof navigator.sendBeacon=="function"?navigator.sendBeacon(yo,r):typeof fetch=="function"&&fetch(yo,{method:"POST",body:r,mode:"no-cors",keepalive:!0}).catch(()=>{})}catch{}}function wi(i=sn,e=typeof location<"u"?location.hostname:""){if(an(e))return Promise.resolve(!0);let t=i??sn,n=`${t??""}@${e}`,o=xo.get(n);return o||(t?o=ko(t,e).then(r=>{if(Ro({version:xt,licensed:r.ok,company:r.ok?r.info.company:void 0},e),r.ok||r.reason==="unsupported")return r.ok||r.reason==="unsupported";let s=r.info?` (${r.info.domains.join(", ")}, ${r.info.expires})`:"";return console.warn(`${Co[r.reason]}${s}
|
|
30
|
+
${rn}`),!1},()=>!1):(console.info(Co.missing),Ro({version:xt,licensed:!1},e),o=Promise.resolve(!1)),xo.set(n,o),o)}function vi(i=typeof location<"u"?location.hostname:""){if(an(i)||typeof fetch!="function")return Promise.resolve(!1);if(Be)return Be;let e=new Date().toISOString().slice(0,10),t=null;try{t=typeof localStorage<"u"?localStorage:null;let n=JSON.parse(t?.getItem("freegrid:badge")??"null");if(n&&n.host===i&&n.day===e)return Be=Promise.resolve(n.show)}catch{}return Be=fetch(hi,{mode:"cors",credentials:"omit"}).then(n=>n.ok?n.json():{badge:!1}).then(n=>{let o=n.badge===!0;try{t?.setItem("freegrid:badge",JSON.stringify({host:i,day:e,show:o}))}catch{}return o},()=>!1),Be}async function So(i,e=typeof location<"u"?location.hostname:""){return await wi(i,e)?!1:vi(e)}var Ge={text:["contains","equals","notEquals","startsWith","endsWith","blank","notBlank"],number:["eq","ne","lt","lte","gt","gte","between","blank","notBlank"],date:["equals","before","after","between","blank","notBlank"]},Mo=["blank","notBlank"],ln=500,Ct=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){this.close();let n=this.grid.columns.getNode(e);if(!n||n.children||D(e))return;let o=this.grid.store.state.locale,r=n.def,s=x("div",`fg-menu fg-theme-${this.grid.store.state.theme}`,{role:"dialog","aria-label":o.columnMenu});this.grid.applyFontTo(s),ye(r)&&s.append(this.section([[o.sortAsc,()=>this.grid.setSort([{colId:e,dir:"asc"}])],[o.sortDesc,()=>this.grid.setSort([{colId:e,dir:"desc"}])],[o.clearSort,()=>this.grid.setSort(this.grid.store.state.sort.filter(w=>w.colId!==e))]])),s.append(this.section([[o.pinLeft,()=>this.grid.setPinned(e,"left")],[o.pinRight,()=>this.grid.setPinned(e,"right")],[o.unpin,()=>this.grid.setPinned(e,null)]]));let a=this.grid.getGroupBy();if(!this.grid.options.treeData&&(this.grid.options.groupPanel||a.length)){let w=a.includes(e)?[[o.ungroup,()=>this.grid.setGroupBy(a.filter(m=>m!==e))]]:[[o.groupByThis,()=>this.grid.setGroupBy([...a,e])]];a.length&&w.push([o.expandAll,()=>this.grid.expandAll(!0)],[o.collapseAll,()=>this.grid.expandAll(!1)]),s.append(this.section(w))}let l=[[o.autosizeThis,()=>this.grid.autoSize([e])],[o.autosizeAll,()=>this.grid.autoSize()]];r.lockVisible||l.push([o.hideColumn,()=>this.grid.setColumnsVisible([e],!1)]),l.push([o.chooseColumns,()=>this.grid.chooser.open()],[o.resetColumns,()=>this.grid.resetColumns()]),s.append(this.section(l));let d=this.filterSection(e,()=>this.close());d&&s.append(d),ne(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 g=Math.max(4,Math.min(c.bottom+4,window.innerHeight-240));s.style.top=`${g}px`,s.style.maxHeight=`${Math.max(160,window.innerHeight-g-8)}px`,this.popup=s,this.colId=e;let f=w=>{ge(w,s,t)||this.close()},b=w=>{w.key==="Escape"&&(this.close(),this.grid.renderer.gridEl.focus())};document.addEventListener("pointerdown",f,!0),document.addEventListener("keydown",b,!0),this.off.push(()=>document.removeEventListener("pointerdown",f,!0),()=>document.removeEventListener("keydown",b,!0)),s.querySelector(".fg-filter-value:not([hidden]), .fg-set-search, .fg-menu-item")?.focus()}filterSection(e,t){let n=this.grid.columns.getNode(e);if(!n||n.children)return null;let o=this.grid.store.state.locale,r=oe(n.def);return r==="set"?this.setFilter(e,o,t):r?this.conditionFilter(e,r,o,t):null}close(){for(let e of this.off)e();this.off=[],this.popup?.remove(),this.popup=null,this.colId=null}section(e){let t=x("div","fg-menu-section");for(let[n,o]of e){let r=x("button","fg-menu-item",{type:"button"});r.textContent=n,r.addEventListener("click",()=>{o(),this.close()}),t.append(r)}return t}actions(e,t,n,o){let r=x("div","fg-menu-actions"),s=x("button","fg-btn",{type:"button"});s.textContent=t.reset,s.addEventListener("click",()=>{this.grid.setFilter(e,null),o()});let a=x("button","fg-btn fg-btn-primary",{type:"button"});return a.textContent=t.apply,a.addEventListener("click",n),r.append(s,a),r}title(e){let t=x("div","fg-menu-title");return t.textContent=e.filter,t}conditionRow(e,t,n,o,r){let s=x("div","fg-filter-cond"),a=x("select","fg-filter-op",{"aria-label":t.filter});if(o){let f=x("option");f.value="",f.textContent="\u2014",a.append(f)}for(let f of Ge[e]){let b=x("option");b.value=f,b.textContent=t.ops[f],a.append(b)}a.value=n?.op??(o?"":Ge[e][0]);let l=e==="text"?"text":e,d=x("input","fg-input fg-filter-value",{type:l,placeholder:t.value,"aria-label":t.value}),c=x("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||Mo.includes(a.value),c.hidden=a.value!=="between"};a.addEventListener("change",u),u();for(let f of[d,c])f.addEventListener("keydown",b=>b.key==="Enter"&&r());return s.append(a,d,c),{row:s,read:()=>{let f=a.value;if(!f)return null;let b=!Mo.includes(f);if(e==="number"){let w=d.value===""?void 0:Number(d.value),m=c.value===""?void 0:Number(c.value);return!b||w!==void 0?{type:e,op:f,value:w,valueTo:m}:null}return e==="date"?!b||d.value?{type:e,op:f,value:d.value||void 0,valueTo:c.value||void 0}:null:!b||d.value?{type:e,op:f,value:d.value}:null}}}conditionFilter(e,t,n,o){let r=this.grid.store.state.filters[e],s=r?.type==="combined"?r.conditions:r?[r]:[],a=s[0]?.type===t?s[0]:void 0,l=s[1]?.type===t?s[1]:void 0,d=x("div","fg-menu-section fg-filter"),c=()=>{let w=u.read(),m=g.read(),h=f.querySelector("input:checked")?.value==="or"?"or":"and",p=w&&m?{type:"combined",operator:h,conditions:[w,m]}:w??m;this.grid.setFilter(e,p),o()},u=this.conditionRow(t,n,a,!1,c),g=this.conditionRow(t,n,l,!0,c),f=x("div","fg-filter-join",{role:"radiogroup"}),b=`fg-join-${e}-${Math.random().toString(36).slice(2,7)}`;for(let w of["and","or"]){let m=x("label"),h=x("input","",{type:"radio",name:b,value:w});h.checked=(r?.type==="combined"?r.operator:"and")===w,m.append(h,` ${n[w]}`),f.append(m)}return d.append(this.title(n),u.row,f,g.row,this.actions(e,n,c,o)),d}setFilter(e,t,n){let{grid:o}=this,r=o.columns.getNode(e).def,s=K(r,t.code),a=o.collator(),l=new Map;for(let k of o.rowModel.allNodes()){let L=B(r,k.data),C=Z(L);l.has(C)||l.set(C,L)}let d=[...l.entries()].sort((k,L)=>de(k[1],L[1],a)),c=o.store.state.filters[e],u=new Set(c?.type==="set"?c.values.map(Z).filter(k=>l.has(k)):l.keys()),g=(k,L)=>k===""?t.blanks:s(L),f=x("div","fg-menu-section fg-filter fg-set-filter"),b=x("input","fg-input fg-set-search",{type:"search",placeholder:t.search,"aria-label":t.search}),w=x("label","fg-set-item fg-set-all"),m=x("input","fg-checkbox",{type:"checkbox"});w.append(m,document.createTextNode(t.selectAll));let h=x("div","fg-set-list"),p=()=>{let k=b.value.trim().toLowerCase();return k?d.filter(([L,C])=>g(L,C).toLowerCase().includes(k)):d},v=()=>{let k=p(),L=k.filter(([C])=>u.has(C)).length;m.checked=L>0&&L===k.length,m.indeterminate=L>0&&L<k.length},y=()=>{let k=p();if(h.replaceChildren(...k.slice(0,ln).map(([L,C])=>{let E=x("label","fg-set-item"),M=x("input","fg-checkbox",{type:"checkbox"});return M.checked=u.has(L),M.addEventListener("change",()=>{M.checked?u.add(L):u.delete(L),v()}),E.append(M,document.createTextNode(g(L,C))),E})),k.length>ln){let L=x("div","fg-set-more");L.textContent=`\u2026 +${k.length-ln}`,h.append(L)}v()};m.addEventListener("change",()=>{for(let[k]of p())m.checked?u.add(k):u.delete(k);y()}),b.addEventListener("input",y);let R=()=>{o.setFilter(e,u.size===l.size?null:{type:"set",values:d.filter(([k])=>u.has(k)).map(([,k])=>k)}),n()};return b.addEventListener("keydown",k=>k.key==="Enter"&&R()),y(),f.append(this.title(t),b,w,h,this.actions(e,t,R,n)),f}};var Eo=new WeakMap,yi=0;function xe(i){let e=Eo.get(i);return e||Eo.set(i,e=`r${++yi}`),e}var Rt=class{constructor(e){this.deps=e;this.stats={filterRuns:0,sortRuns:0};this.server=!1;this.full=[];this.last={};this.nodes=[];this.filtered=[];this.sorted=[];this.display=[];this.indexById=null;this.layoutCache=null}update(e){let t=this.deps.collator(),n=e.display,o=!!n?.getParentId!=!!this.last.display?.getParentId,r=e.data!==this.last.data,s=r||o||e.filters!==this.last.filters||e.quickFilter!==this.last.quickFilter||e.advancedFilter!==this.last.advancedFilter,a=s||e.sort!==this.last.sort||t!==this.last.collator,l=a||n?.version!==this.last.displayVersion||n?.groupBy!==this.last.display?.groupBy;if(r){let u=this.deps.getRowId;this.nodes=e.data.map((g,f)=>({id:u?String(u(g)):xe(g),data:g,sourceIndex:f}))}s&&(this.filtered=this.filter(e),this.stats.filterRuns++),a&&(this.sorted=oo(this.filtered,e.sort,u=>this.deps.columnDef(u),t),this.stats.sortRuns++),l&&(this.full=n?this.buildDisplay(n,e.sort,t):this.sorted);let d=e.page??null,c=this.last.page??null;(l||d?.index!==c?.index||d?.size!==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?.version}}invalidate(){this.last={}}fullCount(){return this.full.length}dataCount(){return this.sorted.length}loading(){return!1}getRowCount(){return this.display.length}getRow(e){return this.display[e]}rows(){return this.display}dataRows(){return this.sorted}allNodes(){return this.nodes}idOf(e){return this.deps.getRowId?String(this.deps.getRowId(e)):xe(e)}indexOfId(e){return this.indexById||(this.indexById=new Map(this.display.map((t,n)=>[t.id,n]))),this.indexById.get(e)??-1}layout(e,t,n,o=0,r){let s=this.layoutCache;if(s&&s.rows===this.display&&s.rh===e&&s.dh===t&&s.hv===o)return s;let a=this.display.length,l=new Float64Array(a+1),d=!0,c=n&&n.size?n:null;for(let u=0;u<a;u++){let g=this.display[u],f=e;if(g.kind==="detail")f=t;else if(!g.kind){c&&(f=c.get(g.id)??e);let b=r?.(g.data);typeof b=="number"&&b>0&&(f=c?Math.max(f,b):b)}f!==e&&(d=!1),l[u+1]=l[u]+f}return this.layoutCache={rows:this.display,rh:e,dh:t,hv:o,offsets:l,uniform:d},this.layoutCache}filter(e){let t=Object.entries(e.filters).map(([c,u])=>({def:this.deps.columnDef(c),pred:Xe(u)})).filter(c=>!!c.def),n=Hn(e.quickFilter),o=n.length?this.deps.quickColumns():[],r=e.advancedFilter?$t(e.advancedFilter,c=>this.deps.columnDef(c),B):null;if(!t.length&&!n.length&&!r)return this.nodes;let s=this.nodes.filter(c=>{for(let u of t)if(!u.pred(B(u.def,c.data)))return!1;if(r&&!r(c.data))return!1;if(n.length){let u=o.map(g=>this.deps.format(g,B(g,c.data))).join("").toLowerCase();if(!Bn(n,u))return!1}return!0}),a=e.display?.getParentId;if(!a)return s;let l=new Map(this.nodes.map(c=>[c.id,c])),d=new Set(s);for(let c of s){let u=a(c.data),g=new Set;for(;u!=null&&!g.has(u);){g.add(u);let f=l.get(String(u));if(!f)break;d.add(f),u=a(f.data)}}return this.nodes.filter(c=>d.has(c))}isOpen(e,t,n){let o=e.expanded.get(t);return o!==void 0?o:e.defaultExpanded===-1||n<e.defaultExpanded}withDetails(e,t,n){for(let o of t)n.push(o),e.detailOpen.has(o.id)&&(!e.isMaster||e.isMaster(o.data))&&n.push({id:`detail:${o.id}`,data:{},sourceIndex:-1,kind:"detail",detailOf:o})}buildDisplay(e,t,n){let o=[];if(e.getParentId)return this.buildTree(e,o),o;let r=e.groupBy.filter(a=>this.deps.columnDef(a));if(!r.length)return e.detailOpen.size?(this.withDetails(e,this.sorted,o),o):this.sorted;let s=(a,l,d)=>{let c=r[l],u=this.deps.columnDef(c),g=new Map;for(let w of a){let m=B(u,w.data),h=q(m)?"":Z(m),p=g.get(h);p||g.set(h,p={value:m,nodes:[]}),p.nodes.push(w)}let f=t.find(w=>w.colId===c)?.dir==="desc"?-1:1,b=[...g.entries()].sort((w,m)=>de(w[1].value,m[1].value,n)*f);for(let[w,m]of b){let h=`${d}${c}:${w}`,p=this.isOpen(e,h,l);o.push({id:`group:${h}`,data:{},sourceIndex:-1,kind:"group",level:l,group:{key:h,colId:c,value:m.value,rows:m.nodes.map(v=>v.data),expanded:p}}),p&&(l+1<r.length?s(m.nodes,l+1,`${h}|`):this.withDetails(e,m.nodes.map(v=>({...v,level:l+1})),o))}};return s(this.sorted,0,""),o}buildTree(e,t){let n=new Set(this.sorted.map(a=>a.id)),o=new Map,r=[];for(let a of this.sorted){let l=e.getParentId(a.data),d=l==null?null:String(l);if(d!==null&&n.has(d)&&d!==a.id){let c=o.get(d);c||o.set(d,c=[]),c.push(a)}else r.push(a)}let s=(a,l,d)=>{for(let c of a){if(d.has(c.id))continue;let u=o.get(c.id)??[],g=!u.length&&!!e.lazyChildren?.(c.id,c.data),f=u.length>0&&this.isOpen(e,c.id,l),b={...c,level:l,hasChildren:u.length>0||g,expanded:f};g&&e.loading?.has(c.id)&&(b.loading=!0),this.withDetails(e,[b],t),f&&s(u,l+1,new Set([...d,c.id]))}};s(r,0,new Set)}};var bi=1e4,dn=1e5,xi=4,cn=3e3,kt=class{constructor(e,t,n,o,r,s){this.datasource=e;this.getRowId=t;this.groupBy=n;this.query=o;this.onChange=r;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<xi&&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:o,gen:r}){let s=n>=this.groupBy.length,a=this.query,l=o+bi,d;try{d=Promise.resolve(this.datasource.getRows({start:o,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=>{if(r!==this.gen)return;let u=Array.isArray(c?.rows)?c.rows.filter(m=>m!==null&&typeof m=="object"):[];Array.isArray(c?.rows)||O("datasource.getRows must resolve to { rows: Row[] }");let g=s?u.map((m,h)=>({id:this.getRowId?String(this.getRowId(m)):xe(m),data:m,sourceIndex:o+h,level:n})):u.map(m=>{let h=this.groupBy[n],p=m[h],v=`${e?`${e}|`:""}${h}:${Z(p)}`,y=typeof m.count=="number"?m.count:typeof m.childCount=="number"?m.childCount:void 0;return{id:`group:${v}`,data:{},sourceIndex:-1,kind:"group",level:n,group:{key:v,colId:h,value:p,rows:[],expanded:!1,count:y,aggregates:m,keys:[...t,p]}}}),f=o?[...this.levels.get(e)?.nodes??[],...g]:g,b=typeof c?.total=="number"&&c.total>=0?c.total:null,w=u.length>0&&(b!==null?f.length<b:u.length>=l-o);w&&f.length<dn?(this.levels.set(e,{state:"loading",nodes:f}),this.fetch({path:e,keys:t,level:n,start:f.length,gen:r})):(w&&O(`a server group level has more than ${dn} rows; only the first ${dn} are shown`),this.levels.set(e,{state:"loaded",nodes:f})),this.touch(),this.onChange()},c=>{r===this.gen&&(this.levels.set(e,{state:"failed",nodes:[],retryAt:Date.now()+cn}),this.touch(),this.onFailed(o,l,c))})}isOpen(e,t,n){let o=e.expanded.get(t);return o!==void 0?o: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 o=[],r=0,s=(a,l,d)=>{let c=this.levels.get(a);if(c?.state==="failed"&&n>=(c.retryAt??0)&&(this.levels.delete(a),c=void 0),!c){this.load(a,l,d),o.push({id:`loading:${a}`,data:{},sourceIndex:-1,kind:"loading",level:d});return}if(c.state==="failed"){let u=c.retryAt??0;r=r?Math.min(r,u):u;return}for(let u of c.nodes){if(u.kind!=="group"){o.push(u);continue}let g=u.group,f=this.isOpen(e,g.key,d),b={...u,group:{...g,expanded:f}};o.push(b),f&&s(g.key,g.keys??[],d+1)}c.state==="loading"&&o.push({id:`loading:${a}`,data:{},sourceIndex:-1,kind:"loading",level:d})};return s("",[],0),this.retryAt=r,this.display=o,this.builtFor=t,this.ids=null,o}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?.state==="loaded"&&e.nodes.every(t=>typeof t.group?.count=="number")?e.nodes.reduce((t,n)=>t+(n.group?.count??0),0):this.dataRows().length}loading(){for(let e of this.levels.values())if(e.state==="loading")return!0;return!1}indexOf(e){return this.display?(this.ids||(this.ids=new Map,this.display.forEach((t,n)=>this.ids.set(t.id,n))),this.ids.get(e)??-1):-1}};var Ci=new Float64Array(0),ze=class{constructor(e){this.deps=e;this.stats={filterRuns:0,sortRuns:0};this.server=!0;this.blocks=new Map;this.total=null;this.loadedEnd=0;this.gen=0;this.query=null;this.page=null;this.lastBlock=0;this.version=0;this.cache=null;this.groups=null;this.displayIn=null}get bs(){return this.page?this.page.size:this.deps.blockSize}get base(){return this.page?this.page.index*this.page.size:0}update(e){let t=e.display?.groupBy??[];if(t.length&&!e.display?.getParentId){let a={sort:e.sort,filters:e.filters,quickFilter:e.quickFilter,advancedFilter:e.advancedFilter??null};(!this.groups||!this.groups.matches(t,a))&&(this.groups?.dispose(),this.groups=new kt(this.deps.datasource,this.deps.getRowId,[...t],a,()=>this.deps.onLoaded(0,0,null),(l,d,c)=>this.deps.onFailed(l,d,c)),this.touch()),this.displayIn=e.display??null,this.query=null;return}this.groups&&(this.groups.dispose(),this.groups=null,this.query=null,this.touch());let n=this.query,o=!n||n.sort!==e.sort||n.filters!==e.filters||n.quickFilter!==e.quickFilter||n.advancedFilter!==(e.advancedFilter??null),r=e.page??null,s=(r?.size??0)!==(this.page?.size??0);this.query={sort:e.sort,filters:e.filters,quickFilter:e.quickFilter,advancedFilter:e.advancedFilter??null},this.page=r?{...r}:null,(o||s)&&this.purge(),this.ensure(Math.floor(this.base/this.bs))}invalidate(){}purge(){if(this.groups){this.groups.purge();return}this.gen++,this.blocks.clear(),this.total=null,this.loadedEnd=0,this.touch(),this.query&&this.ensure(Math.floor(this.base/this.bs))}touch(){this.version++,this.cache=null}fullCount(){if(this.total!==null)return this.total;if(!this.loadedEnd)return 0;let e=this.blocks.get(Math.floor((this.loadedEnd-1)/this.bs));return this.loadedEnd+(e&&e.nodes.length<this.bs?0:this.bs)}getRowCount(){if(this.groups)return this.groupRows().length;let e=this.fullCount();return this.page?Math.max(0,Math.min(this.page.size,e-this.base)):e}dataCount(){return this.groups?this.groups.dataCount():this.fullCount()}loading(){if(this.groups)return this.groups.loading();for(let e of this.blocks.values())if(e.state==="loading")return!0;return!1}placeholder(e){return{id:`loading:${e}`,data:{},sourceIndex:-1,kind:"loading"}}peek(e){let t=Math.floor(e/this.bs),n=this.blocks.get(t);return n?.state==="loaded"?n.nodes[e-t*this.bs]??null:null}groupRows(){return this.groups.rows(this.displayIn,this.displayIn.version*1e6+this.groups.version)}getRow(e){if(this.groups)return this.groupRows()[e];let t=this.base+e,n=this.peek(t);return n||(e>=0&&e<this.getRowCount()&&this.ensure(Math.floor(t/this.bs)),this.placeholder(t))}ensure(e){let t=this.blocks.get(e);if(t&&(t.state!=="failed"||Date.now()<(t.retryAt??0))||this.total!==null&&e*this.bs>=this.total&&e>0)return;let n=e*this.bs,o=n+this.bs,r=this.gen;this.lastBlock=e,this.blocks.set(e,{state:"loading",nodes:[]});let s=this.query,a=d=>{r===this.gen&&(this.blocks.set(e,{state:"failed",nodes:[],retryAt:Date.now()+cn}),this.deps.onFailed(n,o,d))},l;try{l=Promise.resolve(this.deps.datasource.getRows({start:n,end:o,sort:[...s.sort],filters:{...s.filters},quickFilter:s.quickFilter,advancedFilter:s.advancedFilter}))}catch(d){l=Promise.reject(d)}l.then(d=>{if(r!==this.gen)return;let c=Array.isArray(d?.rows)?d.rows.filter(f=>f!==null&&typeof f=="object"):null;if(!c){O("datasource.getRows must resolve to { rows: Row[], total?: number }"),a(new Error("invalid datasource response"));return}let u=this.deps.getRowId,g=c.slice(0,this.bs).map((f,b)=>({id:u?String(u(f)):xe(f),data:f,sourceIndex:n+b}));this.blocks.set(e,{state:"loaded",nodes:g}),typeof d.total=="number"&&d.total>=0?this.total=d.total:g.length<this.bs&&(this.total=n+g.length),this.loadedEnd=Math.max(this.loadedEnd,n+g.length),this.evict(),this.touch(),this.deps.onLoaded(n,n+g.length,this.total)},a)}evict(){let e=Math.max(2,this.deps.maxBlocks);if(this.blocks.size<=e)return;let t=[...this.blocks.keys()].sort((n,o)=>Math.abs(o-this.lastBlock)-Math.abs(n-this.lastBlock));for(let n of t){if(this.blocks.size<=e)break;this.blocks.get(n).state!=="loading"&&this.blocks.delete(n)}}built(){if(this.cache?.ver===this.version)return this.cache;let e=[];for(let n of[...this.blocks.keys()].sort((o,r)=>o-r)){let o=this.blocks.get(n);o.state==="loaded"&&e.push(...o.nodes)}let t=new Map;for(let n of e)t.set(n.id,n.sourceIndex);return this.cache={ver:this.version,data:e,rows:null,ids:t},this.cache}rows(){if(this.groups)return this.groupRows();let e=this.built();if(!e.rows){let t=this.getRowCount();e.rows=new Array(t);for(let n=0;n<t;n++)e.rows[n]=this.peek(this.base+n)??this.placeholder(this.base+n)}return e.rows}dataRows(){return this.groups?this.groups.dataRows():this.built().data}allNodes(){return this.groups?this.groups.dataRows():this.built().data}idOf(e){return this.deps.getRowId?String(this.deps.getRowId(e)):xe(e)}indexOfId(e){if(this.groups)return this.groupRows(),this.groups.indexOf(e);let t=this.built().ids.get(e);if(t===void 0)return-1;let n=t-this.base;return n>=0&&n<this.getRowCount()?n:-1}layout(){return{offsets:Ci,uniform:!0}}};function Lo(i){let e=i.idAt(i.index);if(i.mode==="single"){let t=new Set;return i.toggle&&i.selected.has(e)||t.add(e),{selected:t,anchorIndex:i.index}}if(i.range&&i.anchorIndex!=null){let t=i.toggle?new Set(i.selected):new Set,n=Math.min(i.anchorIndex,i.index),o=Math.max(i.anchorIndex,i.index);for(let r=n;r<=o;r++)t.add(i.idAt(r));return{selected:t,anchorIndex:i.anchorIndex}}if(i.toggle){let t=new Set(i.selected);return t.has(e)?t.delete(e):t.add(e),{selected:t,anchorIndex:i.index}}return{selected:new Set([e]),anchorIndex:i.index}}var St=class{constructor(e){this.bus=new Re;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 Ri=500;function To(i){let e=i.renderer.root,t=0,n=null,o=null,r=()=>{clearTimeout(t),n?.remove(),n=null,o=null},s=c=>{let u=c.dataset.col;if(!u||D(u))return null;let g=i.columns.getNode(u);if(!g)return null;if(c.classList.contains("fg-header-cell"))return g.def.headerTooltip??null;let f=c.closest(".fg-row[data-row]");if(!f||!c.closest(".fg-body"))return null;let b=Number(f.dataset.row),w=i.rowModel.getRow(b);if(!w||w.kind)return null;let m=g.def,h=B(m,w.data),p=K(m,i.store.state.locale.code)(h);if(typeof m.tooltip=="function")try{let v=m.tooltip({value:h,formatted:p,row:w.data,rowIndex:b,column:m});return v?String(v):null}catch{return O(`tooltip of column "${u}" threw`),null}return m.tooltip===!0?p||null:i.options.overflowTooltip!==!1&&m.tooltip!==!1&&c.scrollWidth>c.clientWidth+1&&c.textContent||null},a=(c,u)=>{n?.remove(),n=x("div",`fg-tooltip fg-theme-${i.store.state.theme}`,{role:"tooltip"}),n.textContent=u,i.applyFontTo(n),ne(e).append(n);let g=c.getBoundingClientRect(),f=n.offsetWidth,b=n.offsetHeight,w=window.innerWidth||1024,m=window.innerHeight||768,h=g.bottom+6+b>m?g.top-b-6:g.bottom+6;n.style.left=`${Math.max(4,Math.min(w-f-4,g.left))}px`,n.style.top=`${Math.max(4,h)}px`},l=c=>{let u=c.target.closest?.(".fg-cell, .fg-header-cell");!u||u===o||!e.contains(u)||(r(),o=u,t=window.setTimeout(()=>{if(o!==u||!u.isConnected)return;let g=s(u);g&&a(u,g)},Ri))},d=c=>{let u=c.relatedTarget;o&&u&&o.contains(u)||r()};return e.addEventListener("pointerover",l),e.addEventListener("pointerout",d),e.addEventListener("pointerdown",r),e.addEventListener("keydown",r),e.addEventListener("wheel",r,{passive:!0}),()=>{r(),e.removeEventListener("pointerover",l),e.removeEventListener("pointerout",d),e.removeEventListener("pointerdown",r),e.removeEventListener("keydown",r),e.removeEventListener("wheel",r)}}var Io=["blank","notBlank"],Mt=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&&!D(e.id)&&oe(e.def)).map(e=>{let t=oe(e.def),n=t==="number"?"number":t==="date"?"date":"text";return{id:e.id,label:e.def.header??e.def.field??e.id,kind:n}})}open(){this.close();let{grid:e}=this,t=e.store.state.locale,n=this.columns(),o=x("div",`fg-menu fg-filter-builder fg-theme-${e.store.state.theme}`,{role:"dialog","aria-label":t.advancedFilter});e.applyFontTo(o);let r=x("div","fg-chooser-head"),s=x("span","fg-menu-title");s.textContent=t.advancedFilter;let a=x("button","fg-chooser-close",{type:"button","aria-label":t.close});a.textContent="\xD7",a.addEventListener("click",()=>this.close()),r.append(s,a);let l=e.store.state.advancedFilter,d=x("div","fg-filter-join",{role:"radiogroup"}),c=`fg-fb-join-${Math.random().toString(36).slice(2,7)}`;for(let M of["and","or"]){let S=x("label"),I=x("input","",{type:"radio",name:c,value:M});I.checked=(l?.operator??"and")===M,S.append(I,` ${t[M]}`),d.append(S)}let u=x("div","fg-fb-list"),g=[],f=M=>{g.splice(g.indexOf(M),1),M.el.remove()},b=M=>{let S=x("div","fg-fb-row"),I=x("select","fg-filter-op fg-fb-col",{"aria-label":t.columns});for(let G of n){let V=x("option");V.value=G.id,V.textContent=G.label,I.append(V)}let $=x("select","fg-filter-op fg-fb-op",{"aria-label":t.filter}),A=x("input","fg-input fg-fb-value",{type:"text",placeholder:t.value,"aria-label":t.value}),F=x("input","fg-input fg-fb-value-to",{type:"text",placeholder:t.valueTo,"aria-label":t.valueTo}),P=x("button","fg-chooser-close fg-fb-remove",{type:"button","aria-label":t.close});P.textContent="\xD7";let T=()=>n.find(G=>G.id===I.value)?.kind??"text",H=G=>{let V=T();$.replaceChildren(...Ge[V].map(Y=>{let J=x("option");return J.value=Y,J.textContent=t.ops[Y],J})),G&&Ge[V].includes(G)&&($.value=G);let U=V==="text"?"text":V;A.type=F.type=U,N()},N=()=>{A.hidden=Io.includes($.value),F.hidden=$.value!=="between"};I.addEventListener("change",()=>H($.value)),$.addEventListener("change",N),M&&n.some(G=>G.id===M.colId)&&(I.value=M.colId);let z=M?.model;H(z?.op),z?.value!=null&&(A.value=String(z.value)),z?.valueTo!=null&&(F.value=String(z.valueTo)),S.append(I,$,A,F,P);let W={el:S,read:()=>{let G=T(),V=$.value,U=!Io.includes(V),Y=null;if(G==="number"){let J=A.value===""?void 0:Number(A.value),re=F.value===""?void 0:Number(F.value);(!U||J!==void 0&&!Number.isNaN(J))&&(Y=V==="between"?{type:"number",op:V,value:J,valueTo:re}:{type:"number",op:V,value:J})}else G==="date"?(!U||A.value)&&(Y=V==="between"?{type:"date",op:V,value:A.value,valueTo:F.value}:{type:"date",op:V,value:A.value||void 0}):(!U||A.value)&&(Y={type:"text",op:V,value:A.value});return Y?{colId:I.value,model:Y}:null}};return P.addEventListener("click",()=>f(W)),W},w=(M,S)=>{let I=x("div","fg-fb-row fg-fb-group"),$=x("span","fg-fb-group-label");$.textContent=S;let A=x("button","fg-chooser-close fg-fb-remove",{type:"button","aria-label":t.close});A.textContent="\xD7",I.append($,A);let F={el:I,read:()=>M};return A.addEventListener("click",()=>f(F)),F},m=M=>{if("conditions"in M)return w(M,`( ${M.conditions.length} \xD7 ${t[M.operator]} )`);let S=n.find(A=>A.id===M.colId),I=M.model;if(S&&I&&(I.type==="text"||I.type==="number"||I.type==="date"))return b(M);let $=I?.type==="set"?I.values.map(String).join(", "):I?.type==="combined"?`( ${I.conditions.length} \xD7 ${t[I.operator]} )`:"";return w(M,`${S?.label??M.colId}: ${$}`)},h=M=>{g.push(M),u.append(M.el)};for(let M of l?.conditions??[])h(m(M));let p=x("button","fg-btn fg-fb-add",{type:"button"});p.textContent=`+ ${t.addCondition}`,p.addEventListener("click",()=>{let M=b();h(M),M.el.querySelector(".fg-fb-value").focus()});let v=x("div","fg-menu-actions"),y=x("button","fg-btn",{type:"button"});y.textContent=t.reset,y.addEventListener("click",()=>{e.setAdvancedFilter(null),this.close()});let R=x("button","fg-btn fg-btn-primary",{type:"button"});R.textContent=t.apply,R.addEventListener("click",()=>{let M=g.map(I=>I.read()).filter(I=>!!I),S=d.querySelector("input:checked")?.value==="or"?"or":"and";e.setAdvancedFilter(M.length?{operator:S,conditions:M}:null),this.close()}),v.append(y,R),o.append(r,d,u,p,v),ne(e.renderer.root).append(o);let k=e.renderer.root.getBoundingClientRect(),L=o.offsetWidth||460;o.style.left=`${Math.max(4,Math.min(k.left+24,(window.innerWidth||1024)-L-4))}px`,o.style.top=`${Math.max(4,k.top+24)}px`,this.popup=o,g.length||p.click();let C=M=>{ge(M,o)||this.close()},E=M=>{M.key==="Escape"&&this.close()};document.addEventListener("pointerdown",C,!0),document.addEventListener("keydown",E,!0),this.off.push(()=>document.removeEventListener("pointerdown",C,!0),()=>document.removeEventListener("keydown",E,!0))}close(){for(let e of this.off)e();this.off=[],this.popup?.remove(),this.popup=null}};var Do=i=>Math.round(i*2.75),$o=i=>Math.round(i*3.1),un=13,hn={compact:[.8,.85],normal:[1,1],comfortable:[1.25,1.15]},ki=[],Si=100,Mi=new Map;function he(i){return i.every(e=>e!==null&&typeof e=="object")?i:(O("data contains entries that are not objects; they were skipped"),i.filter(e=>e!==null&&typeof e=="object"))}var fn=class{constructor(e,t){this.options=t;this.events=new Re;this.pinnedRows={top:[],bottom:[]};this.spanCache=null;this.editVersion=0;this.tracker=new gt;this.history=new pt;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 bt(this);this.sourceDefs=[];this.pivotCfg=null;this.pivotData=null;this.savedGroup=null;this.page=0;this.pageSize=Si;this.forcedOverlay=null;this.filterBuilder=new Mt(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)=>{if(this.treeLoaded.has(e))return!1;try{return!!this.options.treeData?.hasChildren?.(t)}catch{return!1}};this.density="normal";this.selectionVersion=0;Array.isArray(t.columns)||O("options.columns must be an array"),t.data!=null&&!Array.isArray(t.data)&&O("options.data must be an array"),this.store=new St({data:Array.isArray(t.data)?he(t.data):[],sort:[],filters:{},quickFilter:"",selected:new Set,anchorId:null,focus:null,range:null,extraRanges:[],advancedFilter:null,locale:Ve(t.locale),theme:t.theme??"light"}),this.sourceDefs=Array.isArray(t.columns)?t.columns:[],this.columns=new We(this.withSelect(this.sourceDefs));let n=t.pagination;n&&typeof n=="object"&&n.pageSize!==void 0&&(Number.isInteger(n.pageSize)&&n.pageSize>0?this.pageSize=n.pageSize:O("pagination.pageSize must be a positive integer")),t.datasource&&typeof t.datasource.getRows!="function"&&O("datasource.getRows must be a function"),this.rowModel=t.datasource&&typeof t.datasource.getRows=="function"?new ze({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:(s,a,l)=>this.serverLoaded(s,a,l),onFailed:(s,a,l)=>this.serverFailed(s,a,l)}):new Rt({getRowId:t.getRowId,columnDef:s=>this.columns.getNode(s)?.def,quickColumns:()=>this.columns.displayed().filter(s=>!D(s.id)).map(s=>s.def),format:(s,a)=>K(s,this.store.state.locale.code)(a),collator:()=>this.collator()}),this.groupBy=this.validGroupBy(t.groupBy??[]),this.defaultExpanded=t.groupDefaultExpanded??0,t.treeData&&!t.getRowId&&O("treeData needs getRowId so parent ids can be matched"),this.updateRows(),this.summaryOpts=t.summary??null,this.refreshSummary();let o=t.fontSize!=null&&t.fontSize>0?t.fontSize:null;t.fontSize!=null&&!(t.fontSize>0)&&O("fontSize must be a positive number"),this.font={size:o,family:t.fontFamily??null};let r=o??un;if(this.renderer=new Qe(e,this,{rowHeight:t.rowHeight??Math.round(Do(r)*hn[this.densityOf(t.density)][0]),headerHeight:t.headerHeight??Math.round($o(r)*hn[this.densityOf(t.density)][1])}),this.density=this.densityOf(t.density),this.renderer.applyTheme(),this.renderer.applyFont(this.font.size,this.font.family),this.menu=new Ct(this),this.chooser=new st(this),this.contextMenu=new lt(this),this.editor=new ft(this),this.finder=new ct(this),this.fillHandle=new dt(this),this.groupPanel=t.groupPanel?new et(this):null,this.pinnedRows={top:he(t.pinnedTopRows??[]),bottom:he(t.pinnedBottomRows??[])},this.sideBar=t.sideBar?new at(this,typeof t.sideBar=="object"&&!!t.sideBar.open,(typeof t.sideBar=="object"?t.sideBar.panels:void 0)??(t.pivot||t.pivotPanel?["columns","filters","pivot"]:void 0)):null,this.disposers.push(this.store.bus.on("change",s=>this.onChange(s)),to(this),Xn(this),()=>this.menu.close(),()=>this.chooser.close(),()=>this.contextMenu.destroy(),()=>this.editor.destroy(),()=>this.fillHandle.destroy(),()=>this.groupPanel?.destroy(),()=>this.charts.destroy(),()=>this.filterBuilder.close(),To(this)),typeof ResizeObserver<"u"){let s=new ResizeObserver(()=>this.renderer.schedule());s.observe(this.renderer.main),this.disposers.push(()=>s.disconnect())}t.pivot&&this.setPivot(t.pivot),So(t.licenseKey).then(s=>{s&&!this.destroyed&&this.renderer.showFreeBadge()}),this.renderer.render(),this.api=this.createApi(),tt.set(this.renderer.root,this)}collator(){let e=this.store.state.locale.code;return this.collatorCache?.code!==e&&(this.collatorCache={code:e,collator:new Intl.Collator(e,{numeric:!0,sensitivity:"base"})}),this.collatorCache.collator}layoutChanged(){this.renderer.invalidateHeights(),this.renderer.invalidate({header:!0,rows:!0}),this.refreshChoosers()}columnsChanged(){this.rowModel.invalidate(),this.updateRows(),this.refreshSummary(),this.renderer.invalidate({header:!0,rows:!0}),this.refreshChoosers()}display(){return{groupBy:this.options.treeData?ki:this.groupBy,getParentId:this.options.treeData?.getParentId,expanded:this.expanded,defaultExpanded:this.defaultExpanded,detailOpen:this.options.detailRenderer?this.detailOpen:new Set,isMaster:this.options.isRowMaster,lazyChildren:this.options.treeData?.hasChildren?this.lazyChildren:void 0,loading:this.treeLoading,version:this.displayVersion}}updateRows(){let e=!!this.options.pagination,t=this.pivotData??this.store.state.data;this.rowModel.update({...this.store.state,data:t,display:this.display(),page:e?{index:this.page,size:this.pageSize}:null}),e&&this.page>=this.getPageCount()&&(this.page=this.getPageCount()-1,this.rowModel.update({...this.store.state,data:t,display:this.display(),page:{index:this.page,size:this.pageSize}}))}viewRows(){return this.pivotData??this.store.state.data}sourceLeaves(){let e=[],t=n=>{for(let o of n)!o||typeof o!="object"||(Array.isArray(o.children)?t(o.children):(o.id??o.field)&&e.push({id:o.id??o.field,def:o}))};return t(this.sourceDefs),e}getPivot(){let e=this.pivotCfg;if(!e)return null;let t={rows:[...e.rows],columns:[...e.columns],values:e.values.map(n=>({...n}))};return e.totals||(t.totals=!1),t}setPivot(e){if(e&&this.clientOnly("pivot"))return;if(e&&(typeof e!="object"||!Array.isArray(e.rows)||!Array.isArray(e.values))){O("setPivot: expected { rows: string[], values: [...] }");return}if(this.editor.cancel(),!e){if(!this.pivotCfg)return;this.pivotCfg=null,this.pivotData=null,this.columns.setDefs(this.withSelect(this.sourceDefs)),this.savedGroup&&(this.groupBy=this.savedGroup.groupBy,this.expanded=this.savedGroup.expanded,this.defaultExpanded=this.savedGroup.defaultExpanded,this.savedGroup=null),this.afterPivotSwitch();return}let t=new Set(this.sourceLeaves().map(n=>n.id));this.pivotCfg||(this.savedGroup={groupBy:this.groupBy,expanded:this.expanded,defaultExpanded:this.defaultExpanded}),this.pivotCfg=on(e,n=>t.has(n)),this.expanded=new Map,this.defaultExpanded=-1,this.rebuildPivot(!1),this.afterPivotSwitch()}afterPivotSwitch(){this.page=0,this.store.set({sort:[],filters:{},range:null,focus:null}),this.rowModel.invalidate(),this.updateRows(),this.displayVersion++,this.updateRows(),this.groupPanel?.refresh(),this.renderer.invalidate({header:!0,rows:!0}),this.refreshChoosers(),this.events.emit("pivotChange",{pivot:this.getPivot()})}rebuildPivot(e=!0){let t=this.pivotCfg;if(!t)return;let n=this.store.state.locale,o=new Map(this.sourceLeaves().map(d=>[d.id,d.def])),r={sum:n.sum,avg:n.avg,min:n.min,max:n.max,count:n.count},s=vo(this.store.state.data,t,d=>o.get(d),{total:n.total,blank:n.blanks,agg:d=>r[d]??d},n.code);if(this.pivotData=s.rows,this.columns.setDefs(this.withSelect(s.columns)),this.groupBy=s.groupBy,!e)return;let a=d=>!!this.columns.getNode(d),l=this.store.state;(l.sort.some(d=>!a(d.colId))||Object.keys(l.filters).some(d=>!a(d)))&&this.store.set({sort:l.sort.filter(d=>a(d.colId)),filters:Object.fromEntries(Object.entries(l.filters).filter(([d])=>a(d)))}),this.rowModel.invalidate(),this.displayVersion++,this.updateRows(),this.renderer.invalidate({header:!0,rows:!0}),this.refreshChoosers()}isFlashing(e,t){return this.flashing.size>0&&this.flashing.has(`${e}\0${t}`)}flash(e){let t=Date.now()+1e3;for(let o of e)this.flashing.set(o,t);if(this.flashTimer)return;let n=()=>{let o=Date.now();for(let[r,s]of this.flashing)s<=o&&this.flashing.delete(r);this.renderer.invalidate({rows:!0}),this.flashTimer=this.flashing.size&&!this.destroyed?window.setTimeout(n,250):0};this.flashTimer=window.setTimeout(n,1e3)}applyTransaction(e){return!e||typeof e!="object"?{added:[],updated:[],removed:[],notFound:[]}:this.applyTransactions([e])}applyTransactions(e){let t={added:[],updated:[],removed:[],notFound:[]};if(this.clientOnly("applyTransaction"))return t;let n=new Map;for(let l of this.columns.getState()){let d=this.columns.getNode(l.colId)?.def.field;d&&n.set(d,[...n.get(d)??[],l.colId])}let o=[],r=this.store.state.data,s=new Set(r),a=new Map(r.map(l=>[this.rowModel.idOf(l),l]));for(let l of e)l&&typeof l=="object"&&(r=this.txStep(l,r,{present:s,byId:a},t,o,n));if(!t.added.length&&!t.updated.length&&!t.removed.length)return t.notFound.length&&this.events.emit("transactionApplied",t),t;this.editVersion++,this.renderer.invalidateHeights(),this.keepRange=!0;try{this.replaceData(r===this.store.state.data?[...r]:r)}finally{this.keepRange=!1}return this.editor.sync(),o.length&&this.options.flashCells!==!1&&this.flash(o),this.events.emit("transactionApplied",t),t}txStep(e,t,n,o,r,s){let a=this.options.getRowId,{present:l,byId:d}=n,c=w=>{if(!w||typeof w!="object")return null;if(l.has(w))return this.rowModel.idOf(w);try{return a?String(a(w)):null}catch{return null}},u=new Set;for(let w of e.remove??[]){let m=c(w),h=m===null?void 0:d.get(m);h&&!u.has(h)?(u.add(h),l.delete(h),d.delete(m),o.removed.push(h),this.tracker.created.delete(h),this.tracker.originals.delete(h)):h||o.notFound.push(w)}for(let w of e.update??[]){let m=c(w),h=m===null?void 0:d.get(m);if(!h||u.has(h)){o.notFound.push(w);continue}let p=this.tracker.originals.get(h);for(let[v,y]of Object.entries(w))if(p&&(p[v]=y),!Object.is(h[v],y)){h[v]=y;for(let R of s.get(v)??[])r.push(`${m}\0${R}`)}o.updated.push(h)}let g=he(Array.isArray(e.add)?e.add:[]);o.added.push(...g);for(let w of g)l.add(w),d.set(this.rowModel.idOf(w),w);if(!u.size&&!g.length)return t;let f=u.size?t.filter(w=>!u.has(w)):[...t],b=typeof e.addIndex=="number"?Math.max(0,Math.min(f.length,Math.floor(e.addIndex))):f.length;return f.splice(b,0,...g),f}applyTransactionAsync(e){!e||typeof e!="object"||(this.txQueue.push(e),!this.txTimer&&(this.txTimer=window.setTimeout(()=>{this.txTimer=0;let t=this.txQueue;this.txQueue=[],!(this.destroyed||!t.length)&&this.applyTransactions(t)},50)))}setAdvancedFilter(e){let t=e&&typeof e=="object"&&Array.isArray(e.conditions)&&e.conditions.length?e:null;t!==this.store.state.advancedFilter&&(this.store.set({advancedFilter:t}),this.events.emit("advancedFilterChange",{advancedFilter:t}))}setColumnGroupOpened(e,t){this.columns.setGroupOpen(e,!!t)&&(this.layoutChanged(),this.events.emit("columnGroupOpened",{groupId:e,open:!!t}))}getState(){let e=this.store.state,t=this.savedGroup?.groupBy??this.groupBy,n=this.savedGroup?.expanded??this.expanded,o={columns:this.columns.getState(),columnGroups:this.columns.groupOpenState(),advancedFilter:e.advancedFilter?JSON.parse(JSON.stringify(e.advancedFilter)):null,sort:e.sort.map(r=>({...r})),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.options.pagination&&(o.page=this.page,o.pageSize=this.pageSize),o}setState(e,t={}){if(!e||typeof e!="object")return;let n=r=>e[r]!==void 0&&(!t.parts||t.parts.includes(r)),o=r=>!!this.columns.getNode(r);if(n("columns")&&Array.isArray(e.columns)&&(this.columns.applyState(e.columns.filter(r=>r&&o(r.colId))),this.columnsChanged()),n("columnGroups")&&e.columnGroups&&typeof e.columnGroups=="object")for(let[r,s]of Object.entries(e.columnGroups))typeof s=="boolean"&&this.setColumnGroupOpened(r,s);if(n("groupBy")&&Array.isArray(e.groupBy)&&this.setGroupBy(e.groupBy.filter(o)),n("pivot")&&this.setPivot(e.pivot??null),n("sort")&&Array.isArray(e.sort)&&this.setSort(e.sort.filter(r=>r&&o(r.colId))),n("filters")&&e.filters&&typeof e.filters=="object"){let r=Object.fromEntries(Object.entries(e.filters).filter(([s])=>o(s)));this.store.set({filters:r}),this.events.emit("filterChange",{filters:{...r}})}if(n("advancedFilter")&&this.setAdvancedFilter(e.advancedFilter??null),n("quickFilter")&&typeof e.quickFilter=="string"&&this.store.set({quickFilter:e.quickFilter}),n("expanded")&&e.expanded&&typeof e.expanded=="object"){let r=new Map(Object.entries(e.expanded).filter(([,s])=>typeof s=="boolean"));this.savedGroup?this.savedGroup.expanded=r:(this.expanded=r,this.displayChanged())}if(n("pageSize")&&typeof e.pageSize=="number"&&this.setPageSize(e.pageSize),n("page")&&typeof e.page=="number"&&this.setPage(e.page),n("selected")&&Array.isArray(e.selected)){let r=new Set(this.rowModel.allNodes().map(s=>s.id));this.setSelected(new Set(e.selected.map(String).filter(s=>r.has(s))))}}rowNumber(e){let t=this.rowModel.rows();if(this.rowNumberCache?.rows!==t){let o=new Int32Array(t.length),r=0;t.forEach((s,a)=>{o[a]=s.kind?0:++r}),this.rowNumberCache={rows:t,nums:o}}let n=this.rowNumberCache.nums[e];return n?n+(this.options.pagination&&!this.rowModel.server?this.page*this.pageSize:0):null}getPage(){return this.options.pagination?this.page:0}getPageSize(){return this.options.pagination?this.pageSize:this.rowModel.fullCount()}getPageCount(){return this.options.pagination?Math.max(1,Math.ceil(this.rowModel.fullCount()/this.pageSize)):1}setPage(e){if(!this.options.pagination||!Number.isFinite(e))return;let t=Math.max(0,Math.min(this.getPageCount()-1,Math.floor(e)));t!==this.page&&(this.veto("beforePageChange",{page:t,pageSize:this.pageSize})||(this.page=t,this.pageMoved()))}setPageSize(e){if(!this.options.pagination)return;if(!Number.isInteger(e)||e<=0){O("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 ze&&(this.rowModel.purge(),this.renderer.invalidate({rows:!0}))}serverLoaded(e,t,n){this.destroyed||(this.renderer.invalidate({header:!0,rows:!0}),this.events.emit("rowsLoaded",n===null?{start:e,end:t}:{start:e,end:t,total:n}))}serverFailed(e,t,n){this.destroyed||(O(`datasource.getRows failed for rows ${e}\u2013${t}`),this.toast(this.store.state.locale.loadFailed),this.renderer.invalidate({rows:!0}),this.events.emit("rowsLoadFailed",{start:e,end:t,error:n}))}syncScroll(e,t){if(!e||typeof e.setScrollPosition!="function"||e===this.api)return()=>{};let n=new Map,o=a=>`${a.top},${a.left}`,r=(a,l)=>a.on("scroll",d=>{if(n.get(a)===o(d)){n.delete(a);return}l.setScrollPosition(t==="vertical"?{top:d.top}:t==="horizontal"?{left:d.left}:d),n.set(l,o(l.getScrollPosition()))}),s=[r(this.api,e),r(e,this.api)];return()=>{for(let a of s)a()}}veto(e,t){let n=!1;return this.events.emit(e,{...t,cancel:()=>{n=!0}}),n}clientOnly(e){return this.rowModel.server?(O(`${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||D(t)?(O(`groupBy: unknown column "${t}"`),!1):!0}):[]}getGroupBy(){return[...this.groupBy]}setGroupBy(e){let t=this.validGroupBy(e);t.join("")!==this.groupBy.join("")&&(this.groupBy=t,this.page=0,this.groupPanel?.refresh(),this.displayChanged(),this.events.emit("groupChange",{groupBy:[...t]}))}isExpandable(e){return!!e&&(e.kind==="group"||!!e.hasChildren)}expandKey(e){return e.group?e.group.key:e.id}loadChildren(e){let t=this.options.treeData,n=e.id;if(this.treeLoading.has(n))return;if(typeof t.loadChildren!="function"){O("treeData.hasChildren needs treeData.loadChildren");return}this.treeLoading.add(n),this.displayChanged();let o=()=>(this.treeLoading.delete(n),!this.destroyed&&this.store.state.data.includes(e.data));Promise.resolve().then(()=>t.loadChildren(e.data)).then(r=>{if(!o())return;let s=he(Array.isArray(r)?r:[]);this.treeLoaded.add(n),this.expanded.set(n,!0),s.length&&this.replaceData([...this.store.state.data,...s]),this.displayChanged(),this.events.emit("childrenLoaded",{row:e.data,rows:s}),this.events.emit("groupToggle",{key:n,expanded:!0})},r=>{o()&&(O(`treeData.loadChildren failed for row "${n}"`),this.displayChanged(),this.events.emit("childrenLoadFailed",{row:e.data,error:r}))})}setGroupExpanded(e,t){let n=this.rowModel.rows().find(r=>this.isExpandable(r)&&this.expandKey(r)===e);if((n?!!(n.group?.expanded??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){let t=this.rowModel.getRow(e);this.isExpandable(t)&&this.setGroupExpanded(this.expandKey(t),!(t.group?.expanded??t.expanded))}expandAll(e=!0){this.expanded.clear(),this.defaultExpanded=e?-1:0,this.displayChanged()}groupAggregate(e,t){let n=this.columns.getNode(t)?.def;if(!e.group||!n?.aggFunc)return;if(e.group.aggregates)return e.group.aggregates[t]??(n.field?e.group.aggregates[n.field]:void 0);this.aggCache.ver!==this.editVersion&&(this.aggCache={ver:this.editVersion,map:new WeakMap});let o=this.aggCache.map.get(e.group);if(o||this.aggCache.map.set(e.group,o=new Map),!o.has(t)){let r=e.group.rows;try{o.set(t,pe(n.aggFunc,r.map(s=>B(n,s)),r))}catch{O(`aggFunc of column "${t}" threw`),o.set(t,null)}}return o.get(t)}canExpandDetail(e){if(!this.options.detailRenderer)return!1;try{return!this.options.isRowMaster||!!this.options.isRowMaster(e)}catch{return!1}}isDetailExpanded(e){return!!e&&typeof e=="object"&&this.detailOpen.has(this.rowModel.idOf(e))}setDetailExpanded(e,t){if(!e||typeof e!="object"||t&&!this.canExpandDetail(e))return;let n=this.rowModel.idOf(e);this.detailOpen.has(n)!==t&&(t?this.detailOpen.add(n):(this.detailOpen.delete(n),this.renderer.dropDetail(n)),this.displayChanged(),this.events.emit("detailToggle",{row:e,expanded:t}))}canMoveRows(){let e=this.store.state,t=this.options.treeData;return!this.rowModel.server&&!e.sort.length&&!Object.keys(e.filters).length&&!e.quickFilter.trim()&&!this.groupBy.length&&(!t||typeof t.setParentId=="function")}get dragOptions(){let e=this.options.rowDrag;return e&&typeof e=="object"?e:{}}parentOf(e){let t=null;try{t=this.options.treeData.getParentId(e)}catch{t=null}return t==null?null:String(t)}rawParent(e){try{return this.options.treeData.getParentId(e)??null}catch{return null}}idValue(e){let t=this.rowModel.idOf(e);for(let o of this.store.state.data){let r=this.rawParent(o);if(r!==null&&String(r)===t)return r}return this.store.state.data.some(o=>typeof this.rawParent(o)=="number")&&t.trim()!==""&&Number.isFinite(Number(t))?Number(t):t}canDropRow(e,t,n,o=this){if(!this.canMoveRows()||t===e)return!1;if(o===this&&this.options.treeData&&t){let s=this.rowModel.idOf(e),a=new Set;for(let l=this.rowModel.idOf(t);l!==null&&!a.has(l);){if(l===s)return!1;a.add(l);let d=this.rowModel.allNodes().find(c=>c.id===l);l=d?this.parentOf(d.data):null}}let r=this.dragOptions.canDrop;if(!r)return!0;try{return r({row:e,target:t,position:n,fromOtherGrid:o!==this})!==!1}catch{return O("rowDrag.canDrop threw; the drop was refused"),!1}}dropRow(e,t,n="after",o=this){if(this.clientOnly("dropRow")||!e||typeof e!="object")return!1;let r=this.options.treeData;!r&&n==="inside"&&(n="after");let s=this.store.state.data,a=o!==this,l=a?-1:s.indexOf(e);if(!a&&l<0||t&&!s.includes(t)||a&&(!o.canMoveRows()||s.includes(e))||!this.canDropRow(e,t,n,o))return!1;let d=r?this.rawParent(e):null,c=!r||!t?null:n==="inside"?t:this.store.state.data.find(h=>this.rowModel.idOf(h)===this.parentOf(t))??null,u=c?this.idValue(c):null,g=s.filter(h=>h!==e),f=!t||n==="inside"?g.length:g.indexOf(t)+(n==="after"?1:0);g.splice(f,0,e);let b=g.some((h,p)=>h!==s[p]);if(!a&&!b&&String(d??"")===String(u??""))return!1;let w=(h,p)=>{try{r.setParentId(e,h,p)}catch{O("treeData.setParentId threw")}},m=r?this.store.state.data.find(h=>this.rowModel.idOf(h)===this.parentOf(e))??null:null;return a?(o.removeRows([e]),r&&w(u,c),this.addRows([e],f)):(r&&w(u,c),this.replaceData(g),this.history.push({undo:()=>{r&&w(d,m),this.replaceData(s)},redo:()=>{r&&w(u,c),this.replaceData(g)}}),this.events.emit("rowDragEnd",{row:e,fromIndex:l,toIndex:f})),this.events.emit("rowDrop",{row:e,target:t,position:n,fromOtherGrid:a,fromGrid:a?o.api:null}),!0}moveRow(e,t,n=!0){if(this.clientOnly("moveRow")||!this.canMoveRows())return!1;let o=this.store.state.data,r=o.indexOf(e);if(r<0||!Number.isFinite(t))return!1;let s=Math.max(0,Math.min(o.length-1,Math.floor(t)));if(s===r)return!1;let a=[...o];return a.splice(r,1),a.splice(s,0,e),this.replaceData(a),n&&this.history.push({undo:()=>this.moveRow(e,r,!1),redo:()=>this.moveRow(e,s,!1)}),this.events.emit("rowDragEnd",{row:e,fromIndex:r,toIndex:s}),!0}setFont(e){let t=this.font.size;e.size!==void 0&&(typeof e.size=="number"&&e.size>0?t=e.size:O("setFont: size must be a positive number"));let n=e.family===void 0?this.font.family:e.family||null;this.font={size:t,family:n};let o=t??un;this.applyAutoHeights(o),this.renderer.applyFont(t,n),this.renderer.invalidateHeights(),this.menu.close(),this.layoutChanged()}densityOf(e){return e==="compact"||e==="comfortable"?e:"normal"}applyAutoHeights(e){let[t,n]=hn[this.density];this.options.rowHeight==null&&(this.renderer.opts.rowHeight=Math.round(Do(e)*t)),this.options.headerHeight==null&&(this.renderer.opts.headerHeight=Math.round($o(e)*n))}setDensity(e){let t=this.densityOf(e);t!==this.density&&(this.density=t,this.renderer.applyTheme(),this.applyAutoHeights(this.font.size??un),this.renderer.invalidateHeights(),this.layoutChanged())}applyFontTo(e){this.font.size&&e.style.setProperty("--fg-font-size",`${this.font.size}px`),this.font.family&&e.style.setProperty("--fg-font",this.font.family)}summary(){return this.summaryOpts&&this.summaryOpts.rows?.length?{opts:this.summaryOpts,values:this.summaryValues}:null}setSummary(e){if(e&&!Array.isArray(e.rows)){O("setSummary: summary.rows must be an array");return}this.summaryOpts=e,this.refreshSummary(),this.renderer.invalidate({header:!0,rows:!0})}refreshSummary(){let e=this.summaryOpts;if(!e?.rows?.length){this.summaryValues=[];return}let t=e.scope??"filtered",n=t==="all"?this.rowModel.allNodes().map(o=>o.data):t==="selected"?this.selectedRows():this.rowModel.dataRows().map(o=>o.data);this.summaryValues=Vn(e.rows,n,o=>this.columns.getNode(o)?.def)}dataColumns(){return this.columns.displayed().filter(e=>!D(e.id))}validRange(e){if(!e||this.options.rangeSelection===!1)return null;let t=this.rowModel.getRowCount(),n=o=>!!o&&!D(o.colId)&&!!this.columns.getColumn(o.colId)&&o.rowIndex>=0&&o.rowIndex<t;return n(e.start)&&n(e.end)?{start:{...e.start},end:{...e.end}}:null}setRange(e,t=!1){let n=this.validRange(e),o=t||!this.store.state.extraRanges.length?this.store.state.extraRanges:[],r=this.store.state.range;JSON.stringify(r)===JSON.stringify(n)&&o===this.store.state.extraRanges||(this.store.set({range:n,extraRanges:o}),this.events.emit("rangeChange",{range:n&&{start:{...n.start},end:{...n.end}}}))}addRange(e){let{range:t,focus:n}=this.store.state,o=this.validRange(t??(n?{start:n,end:n}:null));o&&this.store.set({extraRanges:[...this.store.state.extraRanges,o]}),this.setRange(e,!0)}getRanges(){let e=[...this.store.state.extraRanges];return this.store.state.range&&e.push(this.store.state.range),e.map(t=>({start:{...t.start},end:{...t.end}}))}setRanges(e){let t=(Array.isArray(e)?e:[]).map(n=>this.validRange(n)).filter(n=>!!n);this.store.set({extraRanges:t.slice(0,-1)}),this.setRange(t[t.length-1]??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:Fe({start:{rowIndex:e.start.rowIndex,colIndex:t.index},end:{rowIndex:e.end.rowIndex,colIndex:n.index}})}rangeBounds(){return this.boundsOf(this.store.state.range)}allRangeBounds(){return[...this.store.state.extraRanges,this.store.state.range].map(e=>this.boundsOf(e)).filter(e=>!!e)}rangeContains(e,t){let n=this.columns.getColumn(t);return!!n&&this.allRangeBounds().some(o=>Qn(o,e,n.index))}selectAllCells(){let e=this.dataColumns(),t=this.rowModel.getRowCount();!e.length||!t||(this.store.state.focus||this.setFocus(0,e[0].id),this.setRange({start:{rowIndex:0,colId:e[0].id},end:{rowIndex:t-1,colId:e[e.length-1].id}}))}selectionTSV(e,t=!1){let n=this.store.state.locale.code,o=this.columns.displayed(),r=t?null:this.rangeBounds(),s=t,a,l,d=t?[]:this.allRangeBounds();if(d.length>1){let u=d.every(f=>f.c1===d[0].c1&&f.c2===d[0].c2),g=d.every(f=>f.r1===d[0].r1&&f.r2===d[0].r2);if(this.rangesStack(d)){let f=[...d].sort((m,h)=>u?m.r1-h.r1:m.c1-h.c1),b=f.map(m=>this.rangeMatrix(m)),w=u?b.flat():b[0].map((m,h)=>b.flatMap(p=>p[h]??[]));return e&&w.unshift((u?f.slice(0,1):f).flatMap(m=>this.rangeHeaders(m))),Gt(w)}}if(r){a=[];for(let u=r.r1;u<=r.r2;u++){let g=this.rowModel.getRow(u);g.kind||a.push(g.data)}l=o.slice(r.c1,r.c2+1).filter(u=>!D(u.id))}else if(s){let u=this.store.state.selected;a=this.rowModel.dataRows().filter(g=>u.has(g.id)).map(g=>g.data),l=this.dataColumns()}else{let u=this.store.state.focus,g=u&&this.columns.getColumn(u.colId),f=u&&this.rowModel.getRow(u.rowIndex);if(!g||!f||f.kind||D(g.id))return"";a=[f.data],l=[g]}let c=a.map(u=>l.map(g=>this.copyCell(g.def,u,n)));return e&&c.unshift(l.map(u=>u.def.header??u.def.field??u.id)),Gt(c)}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=>!D(t.id)).map(t=>t.def.header??t.def.field??t.id)}rangeMatrix(e){let t=this.columns.displayed().slice(e.c1,e.c2+1).filter(r=>!D(r.id)),n=this.store.state.locale.code,o=[];for(let r=e.r1;r<=e.r2;r++){let s=this.rowModel.getRow(r);s&&!s.kind&&o.push(t.map(a=>this.copyCell(a.def,s.data,n)))}return o}copyCell(e,t,n){return this.copyAllowed(e,t)?ut(e,B(e,t),n):""}copyAllowed(e,t){let n=e.copyable;if(typeof n!="function")return n!==!1;try{return n({value:B(e,t),row:t,column:e})!==!1}catch{return!1}}cutToClipboard(){let e=this.copyToClipboard(!1);return e&&this.clearCells(!0),e}copyToClipboard(e,t=!1){let n=this.selectionTSV(e,t);if(n&&typeof navigator<"u"&&navigator.clipboard?.writeText)try{navigator.clipboard.writeText(n)?.catch?.(()=>{})}catch{}return n}pasteText(e){let t=Jn(e),n={changed:0,skipped:0};if(!t.length)return n;let o=this.columns.displayed(),r=this.rowModel.getRowCount(),s=this.rangeBounds(),a=this.store.state.focus,l=a&&this.columns.getColumn(a.colId),d,c;if(s)d=s.r1,c=s.c1;else if(a&&l&&!D(l.id))d=a.rowIndex,c=l.index;else return n;let u=[],g=t.length===1&&t[0].length===1,f=g&&s?s.r2-s.r1+1:t.length,b=g&&s?s.c2-s.c1+1:Math.max(...t.map(w=>w.length));for(let w=0;w<f;w++){let m=d+w;if(m>=r)break;let h=this.rowModel.getRow(m);if(!h.kind)for(let p=0;p<b;p++){let v=o[c+p];if(!v)break;if(D(v.id))continue;let y=g&&s?t[0][0]:t[w]?.[p];if(y===void 0)continue;let R=v.def;if(!R.field||!ae(R,h.data,m)){n.skipped++;continue}let k=h.data[R.field],L=this.acceptText(R,h.data,y,k);if(!L.ok){n.skipped++;continue}this.writeCell(u,h.data,R.field,v.id,m,L.value)&&n.changed++}}return this.endCellTx(u),this.events.emit("paste",{...n}),n}acceptText(e,t,n,o){let r,s=e.editor;if(s&&typeof s=="object"&&s.type==="select"){let a=(typeof s.options=="function"?s.options(t):s.options)??[],l=n.trim().toLowerCase(),d=a.map(c=>c!==null&&typeof c=="object"&&"value"in c?c:{value:c,label:String(c),disabled:!1}).find(c=>String(c.value).toLowerCase()===l||(c.label??"").toLowerCase()===l);if(!d||d.disabled)return{ok:!1};r=d.value}else if(e.formulas&&Ce(n.trim()))r=n.trim();else{let a=ht(e,n,o);if(!a.ok)return a;r=a.value}return this.cellError(e,t,r)!==null?{ok:!1}:{ok:!0,value:r}}cellError(e,t,n){let o=this.store.state.locale;if(e.required&&q(n))return o.required;if(e.unique&&e.field&&!q(n)){let r=n instanceof Date?n.getTime():String(n),s=e.field;if(this.store.state.data.some(a=>{if(a===t)return!1;let l=a[s];return!q(l)&&(l instanceof Date?l.getTime():String(l))===r}))return o.duplicate}if(e.validate){let r;try{r=e.validate(n,t)}catch{r=o.invalidValue}if(r!==!0)return typeof r=="string"&&r?r:o.invalidValue}return null}validateAll(){let e=[],t=this.columns.getState().map(n=>({id:n.colId,def:this.columns.getNode(n.colId).def})).filter(n=>n.def.field&&n.def.editable&&(n.def.required||n.def.unique||n.def.validate));return this.store.state.data.forEach((n,o)=>{let r=this.rowModel.idOf(n),s=this.rowModel.indexOfId(r);for(let a of t){if(!ae(a.def,n,s<0?o:s))continue;let l=this.cellError(a.def,n,n[a.def.field]);l!==null&&e.push({row:n,rowIndex:s,colId:a.id,message:l})}}),e}mergeSpans(){if(this.rowModel.server||!this.columns.displayed().some(r=>r.def.merge||r.def.rowSpan))return Mi;let e=this.rowModel.rows(),t=this.editVersion*1e6+this.columns.displayed().length;if(this.spanCache&&this.spanCache.rows===e&&this.spanCache.ver===t)return this.spanCache.spans;let n=new Map,o=this.columns.displayed().filter(r=>r.def.merge||r.def.rowSpan);if(o.length&&!e.some(r=>r.kind)){let r=e.map(s=>s.data);for(let s of o)n.set(s.id,Je(r,s.def))}return this.spanCache={rows:e,ver:t,spans:n},n}rangeAggregates(){let e=this.allRangeBounds();if(!e.length)return null;let t=this.columns.displayed(),n={cells:0,count:0,numbers:0,sum:0,min:1/0,max:-1/0},o=e.length>1?new Set:null;for(let r of e)for(let s=r.r1;s<=r.r2;s++){let a=this.rowModel.getRow(s);if(!a||a.kind)continue;let l=a.data;for(let d of t.slice(r.c1,r.c2+1)){if(D(d.id))continue;if(o){let u=`${s},${d.index}`;if(o.has(u))continue;o.add(u)}n.cells++;let c=B(d.def,l);if(!q(c)&&(n.count++,typeof c=="number"||d.def.type==="number"&&!Number.isNaN(Number(c)))){let u=Number(c);n.numbers++,n.sum+=u,u<n.min&&(n.min=u),u>n.max&&(n.max=u)}}}return n}fillRange(e){let t=this.rangeBounds()??(()=>{let u=this.store.state.focus,g=u&&this.columns.getColumn(u.colId);return u&&g&&!D(g.id)?{r1:u.rowIndex,r2:u.rowIndex,c1:g.index,c2:g.index}:null})(),n=this.columns.getColumn(e.start.colId),o=this.columns.getColumn(e.end.colId);if(!t||!n||!o)return;let r=Fe({start:{rowIndex:e.start.rowIndex,colIndex:n.index},end:{rowIndex:e.end.rowIndex,colIndex:o.index}}),s=this.rowModel.getRowCount();r.r1=Math.max(0,r.r1),r.r2=Math.min(s-1,r.r2);let a=this.columns.displayed(),l=[],d=(u,g,f)=>{let b=a[g],w=this.rowModel.getRow(u),m=b?.def;!w||w.kind||!m?.field||D(b.id)||!ae(m,w.data,u)||this.cellError(m,w.data,f)===null&&this.writeCell(l,w.data,m.field,b.id,u,f)},c=(u,g)=>B(a[g].def,this.rowModel.getRow(u).data);if(r.r1<t.r1||r.r2>t.r2)for(let u=t.c1;u<=t.c2;u++){let g=[],f=[];for(let b=t.r1;b<=t.r2;b++)g.push(c(b,u));for(let b=t.r2;b>=t.r1;b--)f.push(c(b,u));Pe(g,r.r2-t.r2).forEach((b,w)=>d(t.r2+1+w,u,b)),Pe(f,t.r1-r.r1).forEach((b,w)=>d(t.r1-1-w,u,b))}else if(r.c1<t.c1||r.c2>t.c2)for(let u=t.r1;u<=t.r2;u++){let g=[],f=[];for(let b=t.c1;b<=t.c2;b++)g.push(c(u,b));for(let b=t.c2;b>=t.c1;b--)f.push(c(u,b));Pe(g,r.c2-t.c2).forEach((b,w)=>d(u,t.c2+1+w,b)),Pe(f,t.c1-r.c1).forEach((b,w)=>d(u,t.c1-1-w,b))}else return;this.endCellTx(l),this.setRange({start:{rowIndex:r.r1,colId:a[r.c1].id},end:{rowIndex:r.r2,colId:a[r.c2].id}})}setPinnedRows(e){e.top&&(this.pinnedRows.top=he(e.top)),e.bottom&&(this.pinnedRows.bottom=he(e.bottom)),this.renderer.invalidate({rows:!0})}writeCell(e,t,n,o,r,s){let a=t[n];return Object.is(a,s)||this.veto("beforeCellChange",{row:t,rowIndex:r,colId:o,oldValue:a,newValue:s})?!1:(this.tracker.beforeChange(t),t[n]=s,e.push({row:t,field:n,colId:o,oldValue:a,newValue:s}),this.events.emit("cellValueChanged",{row:t,rowIndex:r,colId:o,oldValue:a,newValue:s}),!0)}endCellTx(e){if(!e.length)return;let t=(n,o)=>{for(let r of n){let s=r.row[r.field];r.row[r.field]=r[o],this.events.emit("cellValueChanged",{row:r.row,rowIndex:this.rowModel.indexOfId(this.rowModel.idOf(r.row)),colId:r.colId,oldValue:s,newValue:r[o]})}this.afterDataEdit()};this.history.push({undo:()=>t([...e].reverse(),"oldValue"),redo:()=>t(e,"newValue")}),this.afterDataEdit()}afterDataEdit(){this.renderer.invalidateHeights(),this.editVersion++,this.refreshSummary(),this.renderer.invalidate({rows:!0})}applyEdit(e,t,n){let o=this.rowModel.getRow(e),r=this.columns.getColumn(t)?.def;if(!o||!r?.field)return;let s=[];this.writeCell(s,o.data,r.field,t,e,n),this.endCellTx(s)}clearCells(e=!1){let t=this.columns.displayed(),n=this.allRangeBounds();if(e&&!this.rangesStack(n)){let l=this.rangeBounds();n=l?[l]:[]}let o=this.store.state.focus,r=o?this.columns.getColumn(o.colId)?.index:void 0,s=n.length?n:o&&r!==void 0?[{r1:o.rowIndex,r2:o.rowIndex,c1:r,c2:r}]:[];if(!s.length)return;let a=[];for(let l of s)for(let d=l.r1;d<=l.r2;d++){let c=this.rowModel.getRow(d);for(let u=l.c1;u<=l.c2;u++){let g=t[u]?.def;c&&!c.kind&&g?.field&&ae(g,c.data,d)&&(!e||this.copyAllowed(g,c.data))&&this.writeCell(a,c.data,g.field,t[u].id,d,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 o=this.rowModel.getRowCount(),r=this.store.state.focus;r&&r.rowIndex>=o&&this.store.set({focus:o?{...r,rowIndex:o-1}:null})}addRows(e,t,n=!0){if(this.clientOnly("addRows"))return[];let o=he(Array.isArray(e)?e:[]);if(!o.length)return[];let r=[...this.store.state.data],s=t===void 0?r.length:Math.max(0,Math.min(r.length,t));r.splice(s,0,...o);for(let a of o)this.tracker.created.add(a);return this.replaceData(r),n&&this.history.push({undo:()=>this.removeRows(o,!1),redo:()=>this.addRows(o,s,!1)}),this.events.emit("rowsAdded",{rows:[...o]}),o}removeRows(e,t=!0){if(this.clientOnly("removeRows"))return[];let n=this.store.state.data,o=typeof e=="function"?e:(l=>d=>l.has(d))(new Set(e)),r=[];if(n.forEach((l,d)=>{let c=!1;try{c=!!o(l)}catch{c=!1}c&&r.push({row:l,index:d})}),!r.length)return[];let s=new Set(r.map(l=>l.row)),a=new Set(r.filter(l=>this.tracker.created.has(l.row)).map(l=>l.row));for(let{row:l,index:d}of r)a.has(l)?this.tracker.created.delete(l):this.tracker.deleted.set(l,d);return this.replaceData(n.filter(l=>!s.has(l))),t&&this.history.push({undo:()=>{let l=[...this.store.state.data];for(let{row:d,index:c}of r)l.splice(Math.min(c,l.length),0,d),this.tracker.deleted.delete(d),a.has(d)&&this.tracker.created.add(d);this.replaceData(l)},redo:()=>this.removeRows([...s],!1)}),this.events.emit("rowsRemoved",{rows:r.map(l=>l.row)}),r.map(l=>l.row)}trackedFields(){let e=[],t=n=>{for(let o of n)o.children?t(o.children):o.def.field&&!D(o.id)&&e.push({field:o.def.field,colId:o.id})};return t(this.columns.roots()),e}getChanges(){let e=this.trackedFields(),t=[];for(let[n,o]of this.tracker.originals)if(!this.tracker.deleted.has(n))for(let r of this.tracker.diff(n,e.map(s=>s.field)))t.push({row:n,colId:e.find(s=>s.field===r).colId,oldValue:o[r],newValue:n[r]});return t}getModifiedRows(){let e=this.trackedFields().map(n=>n.field),t=this.store.state.data;return{created:t.filter(n=>this.tracker.created.has(n)),updated:t.filter(n=>this.tracker.originals.has(n)&&this.tracker.diff(n,e).length>0),deleted:[...this.tracker.deleted.keys()]}}hasChanges(){let e=this.getModifiedRows();return e.created.length+e.updated.length+e.deleted.length>0}commitChanges(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,o]of this.tracker.originals)Object.assign(n,o);let e=this.store.state.data.filter(n=>!this.tracker.created.has(n)),t=[...this.tracker.deleted.entries()].sort((n,o)=>n[1]-o[1]);e=[...e];for(let[n,o]of t)e.splice(Math.min(o,e.length),0,n);this.tracker.reset(),this.history.clear(),this.replaceData(e),this.afterDataEdit()}undo(){this.editor.cancel(),this.history.undo()}redo(){this.editor.cancel(),this.history.redo()}toast(e){let t=x("div","fg-toast",{role:"status"});t.textContent=e,this.renderer.root.append(t),setTimeout(()=>t.remove(),3500)}refreshChoosers(){this.chooser.refresh(),this.sideBar?.refresh()}setColumnsVisible(e,t){let n=[];for(let o of e){let r=this.columns.getNode(o);!r||r.children||r.hide===!t||(this.columns.setHide(o,!t),n.push(o))}if(n.length){this.columnsChanged();for(let o of n)this.events.emit("columnVisible",{colId:o,visible:t})}}autoSize(e){let t=(e?e.map(l=>this.columns.getColumn(l)):this.columns.displayed()).filter(l=>!!l&&Ue(l.def)),{first:n,last:o}=this.renderer.renderedRange(),r=this.store.state.locale.code,s=66,a=24;for(let l of t){let d=this.renderer.measureText(l.def.header??l.def.field??"",!0)+s,c=K(l.def,r);for(let g=n;g<=o;g++){let f=this.rowModel.getRow(g);f&&(d=Math.max(d,this.renderer.measureText(c(B(l.def,f.data)),!1)+a))}let u=this.columns.setWidth(l.id,Math.ceil(d));this.events.emit("columnResize",{colId:l.id,width:u})}this.layoutChanged()}resetColumns(){this.columns.reset(),this.columnsChanged()}setSort(e){let t=e.filter(n=>{let o=this.columns.getNode(n.colId);return!o||o.children?(O(`setSort: unknown column "${n.colId}"`),!1):n.dir==="asc"||n.dir==="desc"});this.veto("beforeSort",{sort:t.map(n=>({...n}))})||(this.store.set({sort:t}),this.events.emit("sortChange",{sort:[...t]}))}toggleSort(e,t){let n=this.store.state.sort,o=n.find(a=>a.colId===e),r=o?o.dir==="asc"?"desc":null:"asc",s;t?r?o?s=n.map(a=>a.colId===e?{colId:e,dir:r}:a):s=[...n,{colId:e,dir:r}]:s=n.filter(a=>a.colId!==e):s=r?[{colId:e,dir:r}]:[],this.setSort(s)}setFilter(e,t){let n=this.columns.getNode(e);if(!n||n.children){O(`setFilter: unknown column "${e}"`);return}if(this.veto("beforeFilter",{colId:e,model:t}))return;let o={...this.store.state.filters};t?o[e]=t:delete o[e],this.store.set({filters:o}),this.events.emit("filterChange",{filters:{...o}})}setPinned(e,t){this.columns.setPinned(e,t),this.layoutChanged()}setFocus(e,t){let n=this.store.state.focus;n&&n.rowIndex===e&&n.colId===t||(this.store.set({focus:{rowIndex:e,colId:t}}),this.events.emit("focusChange",{rowIndex:e,colId:t}))}setSelected(e,t=this.store.state.anchorId){this.selectionVersion++,this.store.set({selected:e,anchorId:t}),this.events.emit("selectionChange",{selected:this.selectedRows()})}rowSelectable(e){let t=this.options.isRowSelectable;if(!t)return!0;try{return!!t(e)}catch{return!1}}groupMemberIds(e){if(e.group)return e.group.rows.filter(a=>this.rowSelectable(a)).map(a=>this.rowModel.idOf(a));let t=this.options.treeData?.getParentId;if(!t)return[];let n=new Map;for(let a of this.store.state.data){let l=null;try{l=t(a)}catch{l=null}if(l==null)continue;let d=String(l),c=n.get(d);c?c.push(a):n.set(d,[a])}let o=[],r=new Set([e.id]),s=[e.id];for(;s.length;)for(let a of n.get(s.shift())??[]){let l=this.rowModel.idOf(a);r.has(l)||(r.add(l),s.push(l),this.rowSelectable(a)&&o.push(l))}return o}groupSelection(e){let t=this.groupMemberIds(e),n=this.store.state.selected,o=t.filter(r=>n.has(r)).length;return o===0?"none":o===t.length?"all":"some"}toggleGroupSelection(e){if(this.options.rowSelection!=="multiple")return;let t=this.groupMemberIds(e),n=new Set(this.store.state.selected),o=t.length>0&&t.every(r=>n.has(r));for(let r of t)o?n.delete(r):n.add(r);this.setSelected(n)}selectFromClick(e,t,n){let o=this.options.rowSelection;if(!o||e<0||e>=this.rowModel.getRowCount())return;let r=this.rowModel.getRow(e);if(r.kind||!this.rowSelectable(r.data))return;let s=Lo({selected:this.store.state.selected,anchorIndex:this.anchorIndex(),mode:o,index:e,idAt:a=>this.rowModel.getRow(a).id,toggle:t,range:n});if(this.rowModel.rows()!==this.rowModel.dataRows()||this.options.isRowSelectable)for(let a of s.selected){if(this.store.state.selected.has(a))continue;let l=this.rowModel.indexOfId(a),d=l>=0?this.rowModel.getRow(l):null;d&&(d.kind||!this.rowSelectable(d.data))&&s.selected.delete(a)}if(o==="multiple"&&this.options.groupSelectsChildren&&this.options.treeData&&r.hasChildren){let a=s.selected.has(r.id);for(let l of this.groupMemberIds(r))a?s.selected.add(l):s.selected.delete(l)}this.setSelected(s.selected,this.rowModel.getRow(s.anchorIndex)?.id??null)}anchorIndex(){let e=this.store.state.anchorId;if(e==null)return null;let t=this.rowModel.indexOfId(e);return t<0?null:t}selectableRows(){let e=this.rowModel.dataRows();return this.options.isRowSelectable?e.filter(t=>this.rowSelectable(t.data)):e}toggleSelectAll(){let e=this.selectableRows(),t=this.store.state.selected,n=e.length>0&&e.every(r=>t.has(r.id)),o=new Set(t);for(let r of e)n?o.delete(r.id):o.add(r.id);this.setSelected(o)}selectedRows(){let e=this.store.state.selected;return e.size?this.rowModel.allNodes().filter(t=>e.has(t.id)).map(t=>t.data):[]}withSelect(e){let t=[],n=this.options.rowNumbers;if(n){let o=typeof n=="object"?n:{};t.push($n(typeof o.width=="number"&&o.width>0?o.width:void 0,typeof o.header=="string"?o.header:void 0))}return this.options.rowDrag&&t.push(Dn),this.options.rowSelection&&t.push(In),[...t,...e]}setData(e,t){if(this.clientOnly("setData"))return;if(!Array.isArray(e)){O("setData: rows must be an array");return}this.editor.cancel(),this.tracker.reset(),this.history.clear(),this.detailOpen.clear(),this.treeLoaded.clear(),this.treeLoading.clear(),this.renderer.dropDetail(),this.store.set({data:he(e)}),t?.scrollToTop&&this.renderer.setScroll({top:0,left:0});let n=this.store.state.selected;if(n.size)if(this.options.getRowId){let s=new Set(this.rowModel.allNodes().map(l=>l.id)),a=new Set([...n].filter(l=>s.has(l)));a.size!==n.size&&this.setSelected(a)}else this.setSelected(new Set,null);let o=this.rowModel.getRowCount(),r=this.store.state.focus;r&&r.rowIndex>=o&&this.store.set({focus:o?{...r,rowIndex:o-1}:null})}setColumns(e){if(!Array.isArray(e)){O("setColumns: columns must be an array");return}if(this.menu.close(),this.sourceDefs=e,this.pivotCfg){this.rebuildPivot();return}this.columns.setDefs(this.withSelect(e));let t=o=>!!this.columns.getNode(o),n=this.groupBy.filter(t);n.length!==this.groupBy.length&&(this.groupBy=n,this.groupPanel?.refresh(),this.events.emit("groupChange",{groupBy:[...n]})),this.store.set({sort:this.store.state.sort.filter(o=>t(o.colId)),filters:Object.fromEntries(Object.entries(this.store.state.filters).filter(([o])=>t(o))),focus:null}),this.columnsChanged()}onChange(e){let t=(...o)=>o.some(r=>e.includes(r));this.pivotCfg&&t("data","locale")&&this.rebuildPivot(!1),t("locale")&&(this.menu.close(),this.chooser.close(),this.sideBar?.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")&&this.summaryOpts?.scope==="selected")&&this.refreshSummary(),t("locale")&&this.groupPanel?.refresh(),t("filters")&&this.sideBar?.refresh(),t("theme")&&this.renderer.applyTheme(),this.renderer.invalidate({header:t("sort","filters","quickFilter","advancedFilter","locale","selected","data"),rows:t("data","sort","filters","quickFilter","advancedFilter","locale")})}createApi(){let e=t=>((...n)=>{if(this.destroyed){O("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??""})),getSelectedRows:e(()=>this.selectedRows()),selectAll:e(()=>this.setSelected(new Set([...this.store.state.selected,...this.selectableRows().map(t=>t.id)]))),deselectAll:e(()=>this.setSelected(new Set,null)),getDisplayedRowCount:e(()=>this.rowModel.getRowCount()),scrollToRow:e(t=>this.renderer.scrollToRow(t)),validate:e(()=>this.validateAll()),setDensity:e(t=>this.setDensity(t)),getDensity:e(()=>this.density),showOverlay:e(t=>{this.forcedOverlay=t==="loading"||t==="noRows"?t:null,this.renderer.invalidate()}),getXlsxSheet:e(t=>Zt(this,t)),print:e(t=>fo(Xt(this,t))),getPrintHtml:e(t=>Xt(this,t)),setColumnGroupOpened:e((t,n)=>this.setColumnGroupOpened(t,n)),setAdvancedFilter:e(t=>this.setAdvancedFilter(t)),getAdvancedFilter:e(()=>this.store.state.advancedFilter?JSON.parse(JSON.stringify(this.store.state.advancedFilter)):null),openFilterBuilder:e(()=>this.filterBuilder.open()),isColumnGroupOpened:e(t=>!!this.columns.getNode(t)?.open),applyTransaction:e(t=>this.applyTransaction(t)),applyTransactionAsync:e(t=>this.applyTransactionAsync(t)),getState:e(()=>this.getState()),setState:e((t,n)=>this.setState(t,n)),getScrollPosition:e(()=>this.renderer.getScroll()),setScrollPosition:e(t=>this.renderer.setScroll(t??{})),syncScroll:e((t,n="both")=>this.syncScroll(t,n)),setTheme:e(t=>this.store.set({theme:t})),setLocale:e(t=>this.store.set({locale:Ve(t)})),setFont:e(t=>this.setFont(t)),setColumnVisible:e((t,n)=>this.setColumnsVisible([t],n)),autoSizeColumns:e(t=>this.autoSize(t)),resetColumnState:e(()=>this.resetColumns()),openColumnChooser:e(()=>this.chooser.open()),closeColumnChooser:e(()=>this.chooser.close()),toggleSideBar:e((t,n)=>this.sideBar?.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?.headers,!!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.finder.find(t)),findNext:e(()=>this.finder.next()),findPrevious:e(()=>this.finder.previous()),clearFind:e(()=>this.finder.clear()),setGroupBy:e(t=>this.setGroupBy(t)),getGroupBy:e(()=>this.getGroupBy()),setGroupExpanded:e((t,n)=>this.setGroupExpanded(t,n)),expandAll:e(()=>this.expandAll(!0)),collapseAll:e(()=>this.expandAll(!1)),setDetailExpanded:e((t,n)=>this.setDetailExpanded(t,n)),isDetailExpanded:e(t=>this.isDetailExpanded(t)),moveRow:e((t,n)=>this.moveRow(t,n)),dropRow:e((t,n,o)=>this.dropRow(t,n,o)),setPage:e(t=>this.setPage(t)),getPage:e(()=>this.getPage()),getPageCount:e(()=>this.getPageCount()),setPageSize:e(t=>this.setPageSize(t)),getPageSize:e(()=>this.getPageSize()),refreshRows:e(()=>this.refreshRows()),setPivot:e(t=>this.setPivot(t)),getPivot:e(()=>this.getPivot()),createChart:e(t=>this.charts.create(t)),getCsv:e(t=>Yt(this,t)),exportCsv:e((t="export.csv",n)=>Oe(t,["\uFEFF",Yt(this,n)],"text/csv;charset=utf-8")),getXlsx:e(t=>Jt(this,t)),exportXlsx:e((t="export.xlsx",n)=>Oe(t,[Jt(this,n)],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")),importFile:e((t,n)=>go(this,t,n)),on:e((t,n)=>this.events.on(t,n)),destroy:()=>this.destroy()}}destroy(){if(!this.destroyed){this.destroyed=!0,tt.delete(this.renderer.root),clearTimeout(this.flashTimer),clearTimeout(this.txTimer);for(let e of this.disposers)e();this.renderer.destroy(),this.events.clear()}}};function Ei(i,e){return new fn(i,e).api}function Ao(i){let e=(Array.isArray(i)?i:[]).filter(t=>t&&t.grid&&typeof t.grid.getXlsxSheet=="function");return e.length?Ee(e.map((t,n)=>t.grid.getXlsxSheet({...t.options,sheetName:t.sheetName??t.options?.sheetName??`Sheet${n+1}`}))):(O("buildWorkbook: no grids given; the file has one empty sheet"),Ee([{name:"Sheet1",rows:[]}]))}function Li(i,e){Oe(i||"export.xlsx",[Ao(e)],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")}var Ti=i=>typeof i=="function"?i():i??{};async function Po(i,e,t,n){let o=i,r=i.split(/[?#]/)[0],s={method:e,credentials:n.credentials??"same-origin",headers:{Accept:"application/json",...Ti(n.headers)}};if(e==="GET"){let d=new URLSearchParams;for(let[c,u]of Object.entries(t))u!==void 0&&d.set(c,typeof u=="string"?u:JSON.stringify(u));o+=(i.includes("?")?"&":"?")+d.toString()}else s.headers["Content-Type"]="application/json",s.body=JSON.stringify(t);let a=await fetch(o,s);if(!a.ok)throw new Error(`HTTP ${a.status} from ${r}`);let l=await a.text();if(!l)return null;try{return JSON.parse(l)}catch{throw new Error(`HTTP ${a.status} from ${r}: the response is not JSON`)}}function Ii(i){if(Array.isArray(i))return{rows:i};let e=i??{},t=[e.rows,e.list,e.content,e.data,e.items,e.resultList].find(Array.isArray),n=[e.total,e.totalCount,e.totalElements,e.totCnt,e.count].find(o=>typeof o=="number");return{rows:(t??[]).filter(o=>o!==null&&typeof o=="object"),total:n}}function Fo(i,e={}){return{async getRows(t){let n=Math.max(1,t.end-t.start),o={start:t.start,end:t.end,page:Math.floor(t.start/n),size:n,sort:t.sort,filters:t.filters,quickFilter:t.quickFilter,advancedFilter:t.advancedFilter??void 0,groupBy:t.groupBy,groupKeys:t.groupKeys,...e.params?.()??{}},r=await Po(i,e.method??"POST",o,e);return(e.transform??Ii)(r)}}}var pn=new WeakMap;function Di(i,e,t={}){let n=pn.get(i);if(n)return n;if(!i.hasChanges())return Promise.resolve(null);let{created:o,updated:r,deleted:s}=i.getModifiedRows(),a=new Map([...o,...r].map(d=>[d,{...d}])),l=(async()=>{let d=await Po(e,"POST",{created:o,updated:r,deleted:s,...t.params?.()??{}},t);return i.commitChanges({rows:a,deleted:s}),d})().finally(()=>pn.delete(i));return pn.set(i,l),l}async function $i(i,e,t={}){let{rows:n}=await Fo(e,t).getRows({start:0,end:t.maxRows??1e4,sort:[],filters:{},quickFilter:""});return i.setData(n),n}function Ai(i=document){let e=i.querySelector('meta[name="_csrf"]')?.content,t=i.querySelector('meta[name="_csrf_header"]')?.content||"X-CSRF-TOKEN";return e?{[t]:e}:{}}var Pi={en:se,ko:xn,"zh-CN":Cn,"zh-TW":Rn,ja:bn,es:vn,fr:yn,de:wn,vi:kn,th:Sn,id:Mn,ru:En,"pt-BR":Ln,it:Tn};for(let i of Object.values(Pi))Et(i);export{Ao as buildWorkbook,Ei as createGrid,Ai as csrfHeaders,se as en,Li as exportWorkbook,$i as loadData,Pi as locales,qt as parseCsv,Kt as readXlsx,Et as registerLocale,tn as renderChart,Ve as resolveLocale,Fo as restDatasource,Di as saveChanges,mi as setLicenseKey,ko as verifyLicense,xt as version,Ee as writeXlsx};
|