@inandu-solutions/grid-vue 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -45,8 +45,8 @@ const columns: InanduGridColumn[] = [{ field: 'name', headerText: 'Name' }, { fi
45
45
  - **CRUD / business apps** that need sortable, filterable, editable tables without pulling in a
46
46
  full enterprise grid framework.
47
47
  - **Admin dashboards** that need grouping, aggregates and CSV/Excel/PDF export out of the box.
48
- - **Data-heavy Vue apps** that need virtual scroll for large datasets, without the bundle size of a
49
- kitchen-sink grid.
48
+ - **Data-heavy Vue apps** that need virtual scroll, or server-side sort / filter / paging against a
49
+ backend (see [Server-side data](#server-side-data)), without the bundle size of a kitchen-sink grid.
50
50
 
51
51
  **When not to use it:** if you need pivot tables or integrated charting built into the grid itself,
52
52
  this isn't that — see [Not included](#not-included) below.
@@ -63,7 +63,7 @@ scoped slots, emitted events) instead of Angular signals or React hooks.
63
63
 
64
64
  Deliberately *not* a kitchen sink: no pivoting and no integrated charts — those stay out of scope
65
65
  so the core stays small and auditable. Everything else on this page (grouping, aggregates, editing,
66
- export, virtual scroll) is included, free, no enterprise tier.
66
+ export, virtual scroll, paged server-side mode) is included, free, no enterprise tier.
67
67
 
68
68
  ## Commercial add-ons
69
69
 
@@ -99,6 +99,8 @@ composable — covers:
99
99
  shift-click across cells to select a rectangular block; `Ctrl+C` copies the whole range as TSV
100
100
  when `clipboard` is also on
101
101
  - Row virtualization (`virtual-scroll`) for large datasets
102
+ - Server-side sort / search / filter / paging (`server-side` + `useInanduGridServer`) — paged only;
103
+ grid-angular's server-side infinite scroll isn't ported. See [Server-side data](#server-side-data)
102
104
 
103
105
  Two things work slightly differently from grid-angular because they need a real browser layout
104
106
  engine that a unit-test environment can't provide: virtual scroll's row height isn't
@@ -140,6 +142,41 @@ const headless = useInanduGrid(() => ({ rows: rows.value, columns, pageSize: 25
140
142
  Events: `selection-change`, `row-save`, `row-create`, `row-delete`, `rows-delete`, `cells-paste`,
141
143
  `row-order-change`, `cell-range-change`, `cell-ranges-change`.
142
144
 
145
+ ## Server-side data
146
+
147
+ For tables too big to load whole, let the backend sort, filter and page, and keep the grid's UI
148
+ unchanged:
149
+
150
+ ```vue
151
+ <script setup lang="ts">
152
+ import { InanduGrid, useInanduGridServer } from '@inandu-solutions/grid-vue';
153
+
154
+ const server = useInanduGridServer({ url: '/api/products' });
155
+ </script>
156
+
157
+ <template>
158
+ <InanduGrid
159
+ :rows="server.rows.value"
160
+ :columns="columns"
161
+ :page-size="25"
162
+ :server-side="{ totalItems: server.total.value }"
163
+ @query-change="server.setQuery"
164
+ />
165
+ </template>
166
+ ```
167
+
168
+ `useInanduGridServer` turns the grid's page / sort / search / column filters into a query string
169
+ (`?page=2&pageSize=25&sort=-price&q=cable&price_gte=20`), aborts superseded requests, debounces typing,
170
+ and keeps the previous page on screen while the next loads. It expects `{ data: [...], total: n }`.
171
+ That is exactly what [`Inandu.Grid.Extensions`](https://github.com/inandusolutions/inandu-grid-extensions)
172
+ (.NET / EF Core) returns from one `ToInanduGrid()` call — [request contract](https://github.com/inandusolutions/inandu-grid-extensions/blob/main/docs/request-contract.md) —
173
+ but any backend that speaks the same params works. Runnable example: [`examples/server-side`](examples/server-side).
174
+
175
+ In `serverSide` mode grouping, tree data, virtual scroll, `extraRowFilter` and column aggregate
176
+ totals are off (they would only ever see one page), and a column's Excel-style value checklist lists
177
+ the values on the current page. Use `buildInanduGridQuery(query)` if you'd rather do the fetching
178
+ yourself, and `fetcher` / `init` on the composable for auth headers or a custom client.
179
+
143
180
  ## Development
144
181
 
145
182
  ```bash
@@ -1,6 +1,6 @@
1
1
  import { VNodeChild } from 'vue';
2
2
  import { InanduGridColumnFilterValue, InanduGridRow } from '../core';
3
- import { InanduCellRenderContext, InanduEditRenderContext, InanduGridCellPaste, InanduGridColumn, InanduGridRowSave, InanduHeaderRenderContext } from '../composables/useInanduGrid';
3
+ import { InanduCellRenderContext, InanduEditRenderContext, InanduGridCellPaste, InanduGridColumn, InanduGridRowSave, InanduGridServerQuery, InanduHeaderRenderContext } from '../composables/useInanduGrid';
4
4
  import { InanduGridCellRangeSelection } from './types';
5
5
  type __VLS_Props = {
6
6
  rows: InanduGridRow[];
@@ -69,6 +69,10 @@ type __VLS_Props = {
69
69
  singleDetailExpand?: boolean;
70
70
  /** An extra per-row predicate ANDed onto the free-text + column filters — same as grid-angular's `extraRowFilter`. Lets a caller layer its own filtering (e.g. an advanced-filter query) on top of the grid's own. Unset: no extra filtering. */
71
71
  extraRowFilter?: (row: InanduGridRow) => boolean;
72
+ /** Server-side mode: `rows` is the current page as sorted/filtered/paged by the server and `totalItems` is the full match count. See `useInanduGridServer`. Needs `pageSize` > 0. */
73
+ serverSide?: {
74
+ totalItems: number;
75
+ };
72
76
  /**
73
77
  * Opt-in row virtualization for large datasets — only rows scrolled into view (plus a small
74
78
  * overscan runway) are actually mounted. Bypasses pagination entirely, same as grouping.
@@ -187,6 +191,7 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
187
191
  pasteAt: (anchorRowIndex: number, anchorField: string, text: string) => void;
188
192
  };
189
193
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
194
+ queryChange: (query: InanduGridServerQuery) => any;
190
195
  selectionChange: (selectedRows: InanduGridRow[]) => any;
191
196
  rowSave: (event: InanduGridRowSave) => any;
192
197
  rowCreate: (values: Record<string, unknown>) => any;
@@ -197,6 +202,7 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
197
202
  cellRangesChange: (selections: InanduGridCellRangeSelection[]) => any;
198
203
  rowOrderChange: (rows: InanduGridRow[]) => any;
199
204
  }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
205
+ onQueryChange?: ((query: InanduGridServerQuery) => any) | undefined;
200
206
  onSelectionChange?: ((selectedRows: InanduGridRow[]) => any) | undefined;
201
207
  onRowSave?: ((event: InanduGridRowSave) => any) | undefined;
202
208
  onRowCreate?: ((values: Record<string, unknown>) => any) | undefined;
@@ -77,6 +77,18 @@ export interface InanduGridCellPaste {
77
77
  field: string;
78
78
  value: unknown;
79
79
  }
80
+ /**
81
+ * What `onQueryChange` emits in `serverSide` mode: the grid's whole request state, ready for
82
+ * `useInanduGridServer` (or a hand-rolled fetch) to turn into a query string. `page` is 0-based,
83
+ * like the composable's own `page`.
84
+ */
85
+ export interface InanduGridServerQuery {
86
+ page: number;
87
+ pageSize: number;
88
+ sortCriteria: InanduGridSort[];
89
+ filterValues: Record<string, InanduGridColumnFilterValue>;
90
+ filterQuery: string;
91
+ }
80
92
  export interface InanduGridSort {
81
93
  field: string;
82
94
  direction: 'asc' | 'desc';
@@ -138,6 +150,18 @@ export interface UseInanduGridOptions {
138
150
  virtualScroll?: boolean;
139
151
  /** An extra per-row predicate ANDed onto the free-text + column filters — same as grid-angular's `extraRowFilter`. Lets a caller layer its own filtering (e.g. an advanced-filter query) on top of the grid's own. Unset: no extra filtering. */
140
152
  extraRowFilter?: (row: InanduGridRow) => boolean;
153
+ /**
154
+ * Server-side mode: `rows` is already the current page, as sorted/filtered/paged by the server
155
+ * (see `useInanduGridServer`). The composable keeps owning the sort / filter / search / page
156
+ * *state* so `<InanduGrid>`'s controls work unchanged, but stops applying it to `rows` and reads
157
+ * the page count from `totalItems`. Grouping, tree data, virtual scroll, `extraRowFilter` and
158
+ * column-aggregate totals are not available (they would only see one page). Unset: client-side.
159
+ */
160
+ serverSide?: {
161
+ totalItems: number;
162
+ };
163
+ /** `serverSide` only: called once on setup and again whenever page, sort, filters or search change. */
164
+ onQueryChange?: (query: InanduGridServerQuery) => void;
141
165
  }
142
166
  /**
143
167
  * Headless engine for the grid: owns sort + per-column filter + pagination state and derives
@@ -0,0 +1,53 @@
1
+ import { ShallowRef } from 'vue';
2
+ import { InanduGridRow } from '../core';
3
+ import { InanduGridServerQuery } from './useInanduGrid';
4
+ export interface InanduGridQueryOptions {
5
+ /** Extra params appended after the grid's own (a tenant id, a fixed filter, ...). */
6
+ extraParams?: Record<string, string>;
7
+ }
8
+ /**
9
+ * Turns the grid's request state into the query string `Inandu.Grid.Extensions` (the .NET package)
10
+ * parses — the contract is documented at
11
+ * https://github.com/inandusolutions/inandu-grid-extensions/blob/main/docs/request-contract.md.
12
+ *
13
+ * Param order is deterministic (page, pageSize, sort, q, then column filters in field order) so the
14
+ * result can be compared as a plain string.
15
+ */
16
+ export declare function buildInanduGridQuery(query: InanduGridServerQuery, options?: InanduGridQueryOptions): URLSearchParams;
17
+ export interface InanduGridServerOptions extends InanduGridQueryOptions {
18
+ /** The endpoint, e.g. `/api/products`. The grid's params are appended as a query string. */
19
+ url: string;
20
+ /** Passed to `fetch` (auth headers, `credentials`, ...). */
21
+ init?: RequestInit;
22
+ /** Replaces `fetch` — handy for tests or a typed API client. Must honour `signal`. */
23
+ fetcher?: (url: string, init: RequestInit) => Promise<Response>;
24
+ /** Wait this long after the last change before requesting (typing in the search box). The first request is never delayed. Default: 200. */
25
+ debounceMs?: number;
26
+ }
27
+ export interface InanduGridServerResult {
28
+ /** The current page. The previous page stays here while the next one loads, so the table doesn't flash empty. */
29
+ rows: ShallowRef<InanduGridRow[]>;
30
+ /** Total rows matching the filters, across all pages. Also kept during a reload. */
31
+ total: ShallowRef<number>;
32
+ loading: ShallowRef<boolean>;
33
+ error: ShallowRef<Error | undefined>;
34
+ /** Wire this to `<InanduGrid @query-change>` / `useInanduGrid`'s `onQueryChange`. */
35
+ setQuery: (query: InanduGridServerQuery) => void;
36
+ /** Re-issues the last request (after an edit, say). */
37
+ reload: () => void;
38
+ }
39
+ /**
40
+ * Data layer for `serverSide` mode. Pair it with the grid:
41
+ *
42
+ * ```vue
43
+ * <script setup>
44
+ * const server = useInanduGridServer({ url: '/api/products' });
45
+ * </script>
46
+ * <InanduGrid :rows="server.rows.value" :columns="columns" :page-size="25"
47
+ * :server-side="{ totalItems: server.total.value }" @query-change="server.setQuery" />
48
+ * ```
49
+ *
50
+ * Expects the `Inandu.Grid.Extensions` response shape, `{ data: [...], total: n }`. A request that
51
+ * is superseded by a newer one is aborted, and a late response from it is ignored.
52
+ */
53
+ export declare function useInanduGridServer(options: InanduGridServerOptions): InanduGridServerResult;
@@ -1,3 +1,3 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("vue");var t=/^(\d+)?\.(\d+)-(\d+)$/;function n(e,n,r){let i={},a=r?t.exec(r):null;return a?(a[1]&&(i.minimumIntegerDigits=Number(a[1])),i.minimumFractionDigits=Number(a[2]),i.maximumFractionDigits=Number(a[3])):i.maximumFractionDigits=3,new Intl.NumberFormat(n||void 0,i).format(e)}function r(e){return e instanceof Date?e:typeof e==`string`?new Date(e.replace(/^(\d{4}-\d{2}-\d{2}) (\d{2}:\d{2})/,`$1T$2`)):new Date(e)}var i=/YYYY|sss|MM|DD|HH|mm|ss/g;function a(e,t){let n=(e,t=2)=>String(e).padStart(t,`0`);return t.replace(i,t=>{switch(t){case`YYYY`:return String(e.getFullYear());case`MM`:return n(e.getMonth()+1);case`DD`:return n(e.getDate());case`HH`:return n(e.getHours());case`mm`:return n(e.getMinutes());case`ss`:return n(e.getSeconds());case`sss`:return n(e.getMilliseconds(),3);default:return t}})}function o(e,t,i,o,s=n){if(e==null)return``;switch(t){case`number`:{let t=typeof e==`number`?e:Number(e);return Number.isNaN(t)?String(e):s(t,o,i||void 0)}case`date`:{let t=r(e);return Number.isNaN(t.getTime())?String(e):a(t,i||`YYYY-MM-DD`)}case`boolean`:{let[t,n]=(i||`true|false`).split(`|`);return e?t:n}default:return String(e)}}function s(e,t,n){return e==null&&t==null?0:e==null?-1:t==null?1:e instanceof Date&&t instanceof Date?e.getTime()-t.getTime():typeof e==`number`&&typeof t==`number`?e-t:String(e).localeCompare(String(t),n||void 0)}function c(e,t){let{getChildren:n,isExpanded:r,match:i,compare:a}=t,o=[],s=new Map,c=e=>{if(!i)return!0;let t=s.get(e);if(t!==void 0)return t;let r=i(e);if(!r){let t=n(e);r=!!t&&t.some(c)}return s.set(e,r),r},l=(e,t)=>{let s=i?e.filter(c):[...e];a&&(s=s.slice().sort(a));for(let e of s){let a=n(e),s=(a?i?a.filter(c):a:[]).length>0,u=s&&(i?!0:r(e));o.push({row:e,depth:t,expandable:s,expanded:u}),u&&l(a,t+1)}};return l(e,0),o}function l(e,t){let n=[],r=e=>{for(let i of e){n.push(i);let e=t(i);e&&e.length&&r(e)}};return r(e),n}function u(e){return e?Object.values(e).some(e=>Array.isArray(e)?!0:!!e):!1}function d(e,t,n,i,a){let s=t[e.field()];if(n.values!==void 0)return n.values.includes(o(s,e.type(),e.format(),i,a));switch(e.type()){case`number`:{let e=!!n.min,t=!!n.max;if(!e&&!t)return!0;let r=typeof s==`number`?s:Number(s);return!(s==null||Number.isNaN(r)||e&&r<Number(n.min)||t&&r>Number(n.max))}case`date`:{let e=!!n.from,t=!!n.to;if(!e&&!t)return!0;if(s==null)return!1;let i=r(s);if(Number.isNaN(i.getTime())||e&&i<new Date(n.from))return!1;if(t){let e=new Date(n.to);if(e.setHours(23,59,59,999),i>e)return!1}return!0}case`boolean`:return!n.bool||!!s==(n.bool===`true`);default:{let t=(n.text??``).trim().toLowerCase();return!t||o(s,e.type(),e.format(),i,a).toLowerCase().includes(t)}}}var f={sum:`Σ`,avg:`x̄`,min:`min`,max:`max`,count:`#`};function p(e,t){let n={};for(let r of t){let t=r.field(),i=r.aggregate();if(i===`count`){n[t]=e.length;continue}let a=e.map(e=>e[t]).filter(e=>e!=null&&e!==``&&typeof e!=`boolean`).map(e=>Number(e)).filter(e=>Number.isFinite(e));if(a.length===0)n[t]=0;else switch(i){case`sum`:n[t]=a.reduce((e,t)=>e+t,0);break;case`avg`:n[t]=a.reduce((e,t)=>e+t,0)/a.length;break;case`min`:n[t]=a.reduce((e,t)=>t<e?t:e,1/0);break;case`max`:n[t]=a.reduce((e,t)=>t>e?t:e,-1/0)}}return n}function m(e,t){switch(t){case`number`:{if(e===``||e===void 0)return;let t=Number(e);return Number.isNaN(t)?void 0:t}case`date`:{let t=typeof e==`string`?/^(\d{4})-(\d{2})-(\d{2})$/.exec(e):null,n=t?new Date(Number(t[1]),Number(t[2])-1,Number(t[3])):new Date(e);return Number.isNaN(n.getTime())?void 0:n}case`boolean`:return!!e;default:return e}}function ee(e,t){return t===`boolean`?e.trim().toLowerCase()===`true`:m(e,t)}function h(e){return e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}function g(e){return/[",\r\n]/.test(e)?`"`+e.replace(/"/g,`""`)+`"`:e}function _(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`)}function te(e,t,n){if(e.getTextWidth(t)<=n)return t;let r=t;for(;r.length>0&&e.getTextWidth(r+`…`)>n;)r=r.slice(0,-1);return r+`…`}function v(e,t,n){let r=e instanceof Blob?e:new Blob([e],{type:n}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=t,a.click(),URL.revokeObjectURL(i)}var y={MsgNoData:`No data`,MsgFirstPage:`First page`,MsgPreviousPage:`Previous page`,MsgNextPage:`Next page`,MsgLastPage:`Last page`,MsgSortBy:`Sort by {{column}}`,MsgPageOf:`Page {{page}} of {{total}}`,MsgFilterPlaceholder:`Search`,MsgFilterColumn:`Filter {{column}}`,MsgFilterMin:`Min`,MsgFilterMax:`Max`,MsgFilterFrom:`From`,MsgFilterTo:`To`,MsgAll:`All`,MsgCancelFilter:`Cancel filter`,MsgCancelAllFilters:`Clear filters`,MsgGroupByHint:`Drag a column header here to group by it`,MsgGroupedBy:`Grouped by {{column}}`,MsgGroupHeader:`{{column}}: {{value}} ({{count}})`,MsgCancelGrouping:`Cancel grouping`,MsgSelectAll:`Select all rows`,MsgSelectRow:`Select row {{index}}`,MsgExportCsv:`Export CSV`,MsgExportExcel:`Export Excel`,MsgExportPdf:`Export PDF`,MsgPrint:`Print`,MsgToggleColumns:`Columns`,MsgToggleColumn:`Toggle {{column}}`,MsgEditCell:`Edit {{column}}`,MsgEditRow:`Edit`,MsgSaveRow:`Save`,MsgCancelRowEdit:`Cancel`,MsgDeleteRow:`Delete`,MsgAddRow:`Add row`,MsgLoading:`Loading…`,MsgDragRow:`Drag to reorder row`,MsgAutosizeColumn:`Double-click to fit column to content`,MsgExpandDetail:`Expand row details`,MsgCollapseDetail:`Collapse row details`,MsgDeleteSelected:`Delete selected ({{count}})`,MsgValidationRequired:`This field is required`,MsgValidationMin:`Must be at least {{min}}`,MsgValidationMax:`Must be at most {{max}}`,MsgValidationPattern:`Invalid format`},b={MsgNoData:`Sin datos`,MsgFirstPage:`Primera página`,MsgPreviousPage:`Página anterior`,MsgNextPage:`Página siguiente`,MsgLastPage:`Última página`,MsgSortBy:`Ordenar por {{column}}`,MsgPageOf:`Página {{page}} de {{total}}`,MsgFilterPlaceholder:`Buscar`,MsgFilterColumn:`Filtrar {{column}}`,MsgFilterMin:`Mín`,MsgFilterMax:`Máx`,MsgFilterFrom:`Desde`,MsgFilterTo:`Hasta`,MsgAll:`Todos`,MsgCancelFilter:`Cancelar filtro`,MsgCancelAllFilters:`Cancelar filtros`,MsgGroupByHint:`Arrastra el encabezado de una columna aquí para agrupar por ella`,MsgGroupedBy:`Agrupado por {{column}}`,MsgGroupHeader:`{{column}}: {{value}} ({{count}})`,MsgCancelGrouping:`Cancelar agrupación`,MsgSelectAll:`Seleccionar todas las filas`,MsgSelectRow:`Seleccionar fila {{index}}`,MsgExportCsv:`Exportar CSV`,MsgExportExcel:`Exportar Excel`,MsgExportPdf:`Exportar PDF`,MsgPrint:`Imprimir`,MsgToggleColumns:`Columnas`,MsgToggleColumn:`Mostrar u ocultar {{column}}`,MsgEditCell:`Editar {{column}}`,MsgEditRow:`Editar`,MsgSaveRow:`Guardar`,MsgCancelRowEdit:`Cancelar`,MsgDeleteRow:`Eliminar`,MsgAddRow:`Agregar fila`,MsgLoading:`Cargando…`,MsgDragRow:`Arrastrar para reordenar fila`,MsgAutosizeColumn:`Doble clic para ajustar la columna al contenido`,MsgExpandDetail:`Expandir detalle de fila`,MsgCollapseDetail:`Contraer detalle de fila`,MsgDeleteSelected:`Eliminar seleccionados ({{count}})`,MsgValidationRequired:`Este campo es obligatorio`,MsgValidationMin:`Debe ser como mínimo {{min}}`,MsgValidationMax:`Debe ser como máximo {{max}}`,MsgValidationPattern:`Formato inválido`},x={MsgNoData:`Aucune donnée`,MsgFirstPage:`Première page`,MsgPreviousPage:`Page précédente`,MsgNextPage:`Page suivante`,MsgLastPage:`Dernière page`,MsgSortBy:`Trier par {{column}}`,MsgPageOf:`Page {{page}} sur {{total}}`,MsgFilterPlaceholder:`Rechercher`,MsgFilterColumn:`Filtrer {{column}}`,MsgFilterMin:`Min`,MsgFilterMax:`Max`,MsgFilterFrom:`De`,MsgFilterTo:`À`,MsgAll:`Tous`,MsgCancelFilter:`Annuler le filtre`,MsgCancelAllFilters:`Effacer les filtres`,MsgGroupByHint:`Faites glisser l'en-tête d'une colonne ici pour regrouper par celle-ci`,MsgGroupedBy:`Regroupé par {{column}}`,MsgGroupHeader:`{{column}} : {{value}} ({{count}})`,MsgCancelGrouping:`Annuler le regroupement`,MsgSelectAll:`Sélectionner toutes les lignes`,MsgSelectRow:`Sélectionner la ligne {{index}}`,MsgExportCsv:`Exporter CSV`,MsgExportExcel:`Exporter Excel`,MsgExportPdf:`Exporter PDF`,MsgPrint:`Imprimer`,MsgToggleColumns:`Colonnes`,MsgToggleColumn:`Afficher/masquer {{column}}`,MsgEditCell:`Modifier {{column}}`,MsgEditRow:`Modifier`,MsgSaveRow:`Enregistrer`,MsgCancelRowEdit:`Annuler`,MsgDeleteRow:`Supprimer`,MsgAddRow:`Ajouter une ligne`,MsgLoading:`Chargement…`,MsgDragRow:`Glisser pour réordonner la ligne`,MsgAutosizeColumn:`Double-cliquez pour ajuster la colonne au contenu`,MsgExpandDetail:`Développer les détails de la ligne`,MsgCollapseDetail:`Réduire les détails de la ligne`,MsgDeleteSelected:`Supprimer la sélection ({{count}})`,MsgValidationRequired:`Ce champ est obligatoire`,MsgValidationMin:`Doit être au moins {{min}}`,MsgValidationMax:`Doit être au plus {{max}}`,MsgValidationPattern:`Format invalide`},S={MsgNoData:`Nessun dato`,MsgFirstPage:`Prima pagina`,MsgPreviousPage:`Pagina precedente`,MsgNextPage:`Pagina successiva`,MsgLastPage:`Ultima pagina`,MsgSortBy:`Ordina per {{column}}`,MsgPageOf:`Pagina {{page}} di {{total}}`,MsgFilterPlaceholder:`Cerca`,MsgFilterColumn:`Filtra {{column}}`,MsgFilterMin:`Min`,MsgFilterMax:`Max`,MsgFilterFrom:`Da`,MsgFilterTo:`A`,MsgAll:`Tutti`,MsgCancelFilter:`Annulla filtro`,MsgCancelAllFilters:`Cancella filtri`,MsgGroupByHint:`Trascina qui l'intestazione di una colonna per raggruppare per essa`,MsgGroupedBy:`Raggruppato per {{column}}`,MsgGroupHeader:`{{column}}: {{value}} ({{count}})`,MsgCancelGrouping:`Annulla raggruppamento`,MsgSelectAll:`Seleziona tutte le righe`,MsgSelectRow:`Seleziona riga {{index}}`,MsgExportCsv:`Esporta CSV`,MsgExportExcel:`Esporta Excel`,MsgExportPdf:`Esporta PDF`,MsgPrint:`Stampa`,MsgToggleColumns:`Colonne`,MsgToggleColumn:`Mostra/nascondi {{column}}`,MsgEditCell:`Modifica {{column}}`,MsgEditRow:`Modifica`,MsgSaveRow:`Salva`,MsgCancelRowEdit:`Annulla`,MsgDeleteRow:`Elimina`,MsgAddRow:`Aggiungi riga`,MsgLoading:`Caricamento…`,MsgDragRow:`Trascina per riordinare la riga`,MsgAutosizeColumn:`Doppio clic per adattare la colonna al contenuto`,MsgExpandDetail:`Espandi dettagli riga`,MsgCollapseDetail:`Comprimi dettagli riga`,MsgDeleteSelected:`Elimina selezionati ({{count}})`,MsgValidationRequired:`Questo campo è obbligatorio`,MsgValidationMin:`Deve essere almeno {{min}}`,MsgValidationMax:`Deve essere al massimo {{max}}`,MsgValidationPattern:`Formato non valido`},C={MsgNoData:`暂无数据`,MsgFirstPage:`首页`,MsgPreviousPage:`上一页`,MsgNextPage:`下一页`,MsgLastPage:`末页`,MsgSortBy:`按{{column}}排序`,MsgPageOf:`第 {{page}} 页,共 {{total}} 页`,MsgFilterPlaceholder:`搜索`,MsgFilterColumn:`筛选{{column}}`,MsgFilterMin:`最小`,MsgFilterMax:`最大`,MsgFilterFrom:`从`,MsgFilterTo:`到`,MsgAll:`全部`,MsgCancelFilter:`取消筛选`,MsgCancelAllFilters:`清除所有筛选`,MsgGroupByHint:`将列标题拖到此处以按其分组`,MsgGroupedBy:`按{{column}}分组`,MsgGroupHeader:`{{column}}: {{value}} ({{count}})`,MsgCancelGrouping:`取消分组`,MsgSelectAll:`选择所有行`,MsgSelectRow:`选择第 {{index}} 行`,MsgExportCsv:`导出 CSV`,MsgExportExcel:`导出 Excel`,MsgExportPdf:`导出 PDF`,MsgPrint:`打印`,MsgToggleColumns:`列`,MsgToggleColumn:`显示/隐藏{{column}}`,MsgEditCell:`编辑{{column}}`,MsgEditRow:`编辑`,MsgSaveRow:`保存`,MsgCancelRowEdit:`取消`,MsgDeleteRow:`删除`,MsgAddRow:`添加行`,MsgLoading:`加载中…`,MsgDragRow:`拖动以重新排序行`,MsgAutosizeColumn:`双击以使列适应内容`,MsgExpandDetail:`展开行详情`,MsgCollapseDetail:`收起行详情`,MsgDeleteSelected:`删除所选 ({{count}})`,MsgValidationRequired:`此字段为必填项`,MsgValidationMin:`不得小于 {{min}}`,MsgValidationMax:`不得大于 {{max}}`,MsgValidationPattern:`格式无效`},w={en:y,es:b,fr:x,it:S,zh:C};function T(e,t){return t?e.replace(/\{\{(\w+)\}\}/g,(e,n)=>n in t?String(t[n]):e):e}function ne(e){let t=w[e.split(`-`)[0]]??y;return(e,n)=>T(t[e]??y[e],n)}function re(e){return{field:()=>e.field,type:()=>e.type??`string`,format:()=>e.format??``,order:()=>e.order,aggregate:()=>e.aggregate??``}}function E(t){let n=n=>(0,e.computed)(()=>(0,e.toValue)(t)[n]),i=n(`rows`),a=n(`columns`),f=(0,e.computed)(()=>(0,e.toValue)(t).locale??`en`),h=n(`lang`),g=(0,e.computed)(()=>(0,e.toValue)(t).pageSize??0),_=(0,e.computed)(()=>(0,e.toValue)(t).selectable??!1),te=n(`treeChildrenKey`),v=(0,e.computed)(()=>(0,e.toValue)(t).treeDefaultExpanded??`none`),y=(0,e.computed)(()=>(0,e.toValue)(t).virtualScroll??!1),b=n(`extraRowFilter`),x=()=>(0,e.toValue)(t),S=(0,e.shallowRef)([]),C=(0,e.shallowRef)({}),w=(0,e.shallowRef)(``),T=(0,e.shallowRef)(0),E=(0,e.shallowRef)(void 0),D=(0,e.shallowRef)(new Set),O=(0,e.shallowRef)(void 0),k=(0,e.shallowRef)(!1),A=(0,e.shallowRef)({}),j=(0,e.shallowRef)({}),M=(0,e.shallowRef)(!1),N=(0,e.shallowRef)(new Set),ie=(0,e.shallowRef)(void 0),P=(0,e.shallowRef)(void 0),F=(0,e.shallowRef)({}),I=(0,e.shallowRef)({}),L=(0,e.shallowRef)(void 0),R=(0,e.shallowRef)(new Set),z=(0,e.shallowRef)(new Set),B,V=(0,e.computed)(()=>ne(h.value??f.value)),H=(0,e.computed)(()=>{let e=ie.value;if(!e)return a.value;let t=new Map(a.value.map(e=>[e.field,e])),n=[];for(let r of e){let e=t.get(r);e&&(n.push(e),t.delete(r))}return n.push(...t.values()),n}),U=(0,e.computed)(()=>N.value.size===0?H.value:H.value.filter(e=>!N.value.has(e.field))),W=(0,e.computed)(()=>H.value.filter(e=>e.hideable!==!1));function G(e){let t=H.value.map(e=>e.field),n=new Set(t),r=e.filter(e=>n.has(e)),i=new Set(r),a=t.filter(e=>!i.has(e));ie.value=[...r,...a]}function ae(e){P.value=e}function oe(e){let t=P.value;if(P.value=void 0,!t||t===e)return;let n=H.value.find(e=>e.field===t);if(!n||n.reorder===!1)return;let r=H.value.map(e=>e.field),i=r.indexOf(t),a=r.indexOf(e);i!==-1&&a!==-1&&(r.splice(i,1),i<a&&a--,r.splice(a,0,t),G(r))}function se(e){return N.value.has(e)}function ce(e){if(N.value.has(e)){let t=new Set(N.value);t.delete(e),N.value=t}else U.value.length<=1||(N.value=new Set(N.value).add(e))}let K=(0,e.computed)(()=>U.value.filter(e=>e.editable));function le(e){T.value=0,w.value=e}let q=(0,e.computed)(()=>new Map(U.value.map(e=>[e.field,re(e)]))),ue=(0,e.computed)(()=>U.value.filter(e=>e.aggregate).map(e=>q.value.get(e.field)));function de(e,t){T.value=0,C.value={...C.value,[e]:t}}function fe(){T.value=0,C.value={}}function pe(e,t){return U.value.some(n=>{let r=q.value.get(n.field);return o(e[n.field],r.type(),r.format(),f.value).toLowerCase().includes(t)})}function me(e,t){return t.every(([t,n])=>{let r=q.value.get(t);return!r||d(r,e,n,f.value)})}function J(e,t){for(let{field:n,direction:r}of S.value){let i=s(e[n],t[n],f.value)*(r===`asc`?1:-1);if(i!==0)return i}return 0}let Y=(0,e.computed)(()=>{let e=i.value,t=w.value.trim().toLowerCase();t&&(e=e.filter(e=>pe(e,t)));let n=Object.entries(C.value).filter(([,e])=>u(e));n.length>0&&(e=e.filter(e=>me(e,n)));let r=b.value;return r&&(e=e.filter(r)),S.value.length>0&&(e=[...e].sort(J)),e}),he=(0,e.computed)(()=>{let e=E.value;if(!e)return null;let t=q.value.get(e);if(!t)return null;let n=new Map;for(let r of Y.value){let i=o(r[e],t.type(),t.format(),f.value),a=n.get(i);a?a.push(r):n.set(i,[r])}return Array.from(n.entries()).map(([e,t])=>({key:e,rows:t,aggregates:p(t,ue.value)}))}),X=(0,e.computed)(()=>p(Y.value,ue.value)),Z=(0,e.computed)(()=>!!te.value&&!E.value&&!y.value);function Q(e){let t=te.value,n=t?e[t]:void 0;return Array.isArray(n)?n:void 0}let ge=(0,e.computed)(()=>{if(!Z.value)return[];let e=w.value.trim().toLowerCase(),t=Object.entries(C.value).filter(([,e])=>u(e)),n=b.value,r=e||t.length>0||n?r=>e&&!pe(r,e)||!me(r,t)?!1:!n||n(r):void 0,a=S.value.length>0?J:void 0,o=R.value;return c(i.value,{getChildren:Q,isExpanded:e=>o.has(e),match:r,compare:a})});(0,e.watch)([Z,i,v],()=>{if(!Z.value||B===i.value)return;B=i.value;let e=v.value;if(e===`none`){R.value=new Set;return}let t=new Set;if(e===`all`)for(let e of l(i.value,Q))Q(e)?.length&&t.add(e);else{let n=(r,i)=>{if(!(i>=e))for(let e of r){let r=Q(e);r?.length&&(t.add(e),n(r,i+1))}};n(i.value,0)}R.value=t},{immediate:!0,flush:`sync`});function _e(e){return R.value.has(e)}function ve(e){let t=new Set(R.value);t.has(e)?t.delete(e):t.add(e),R.value=t}function ye(e){if(!e){R.value=new Set;return}let t=new Set;for(let e of l(i.value,Q))Q(e)?.length&&t.add(e);R.value=t}let be=(0,e.computed)(()=>y.value&&!E.value),xe=(0,e.computed)(()=>g.value>0&&!E.value&&!Z.value&&!be.value),Se=(0,e.computed)(()=>xe.value?Math.max(1,Math.ceil(Y.value.length/g.value)):1),Ce=(0,e.computed)(()=>Math.min(T.value,Se.value-1)),we=(0,e.computed)(()=>{if(Z.value)return ge.value.map(e=>e.row);if(!xe.value)return Y.value;let e=Ce.value*g.value;return Y.value.slice(e,e+g.value)}),$=(0,e.computed)(()=>E.value?Y.value:we.value);function Te(e){return D.value.has(e)}function Ee(e){let t=new Set(D.value);t.has(e)?t.delete(e):t.add(e),D.value=t}let De=(0,e.computed)(()=>$.value.length>0&&$.value.every(e=>D.value.has(e))),Oe=(0,e.computed)(()=>!De.value&&$.value.some(e=>D.value.has(e)));function ke(){let e=!De.value,t=new Set(D.value);for(let n of $.value)e?t.add(n):t.delete(n);D.value=t}function Ae(){D.value=new Set}function je(e,t=!1){T.value=0;let n=S.value,r=n.findIndex(t=>t.field===e);if(t){if(r===-1){S.value=[...n,{field:e,direction:`asc`}];return}let t=[...n];t[r]={field:e,direction:n[r].direction===`asc`?`desc`:`asc`},S.value=t}else n.length===1&&n[0].field===e?S.value=[{field:e,direction:n[0].direction===`asc`?`desc`:`asc`}]:S.value=[{field:e,direction:`asc`}]}function Me(e){S.value=e}function Ne(e){return S.value.find(t=>t.field===e)?.direction}function Pe(e){if(S.value.length<2)return;let t=S.value.findIndex(t=>t.field===e);return t===-1?void 0:t+1}function Fe(e){return O.value===e}function Ie(e){return k.value?!0:O.value!==void 0&&O.value!==e}function Le(e,t){let n=t.type??`string`;if(n===`boolean`)return!!e[t.field];if(n===`date`){let n=r(e[t.field]);if(Number.isNaN(n.getTime()))return``;let i=e=>String(e).padStart(2,`0`);return`${n.getFullYear()}-${i(n.getMonth()+1)}-${i(n.getDate())}`}let i=e[t.field];return i==null?``:String(i)}function Re(e){let t={};for(let n of K.value)t[n.field]=Le(e,n);O.value=e,A.value=t,j.value={}}function ze(){O.value=void 0,A.value={},j.value={}}function Be(e,t){A.value={...A.value,[e]:t}}function Ve(e,t,n,r){let i=V.value;if(e.required&&(t===``||t==null))return i(`MsgValidationRequired`);if((e.type??`string`)===`number`&&typeof n==`number`){if(e.min!==void 0&&n<e.min)return i(`MsgValidationMin`,{min:e.min});if(e.max!==void 0&&n>e.max)return i(`MsgValidationMax`,{max:e.max})}if(e.pattern&&typeof t==`string`&&t!==``){let n;try{n=new RegExp(e.pattern)}catch{n=void 0}if(n&&!n.test(t))return i(`MsgValidationPattern`)}return e.validator?e.validator(n,r):null}function He(e,t,n={}){return Ve(e,t,t,n)}async function Ue(e){let t=K.value,n={};for(let r of t)n[r.field]=m(e[r.field],r.type??`string`);let r={},i={},a=[];for(let o of t){let t=o.field,s=Ve(o,e[t],n[t],n);s?r[t]=s:o.asyncValidator?a.push(o.asyncValidator(n[t],n).then(e=>{e?r[t]=e:n[t]!==void 0&&(i[t]=n[t])})):n[t]!==void 0&&(i[t]=n[t])}if(a.length>0){M.value=!0;try{await Promise.all(a)}finally{M.value=!1}}return{errors:r,values:i}}async function We(e){if(O.value!==e)return;let{errors:t,values:n}=await Ue(A.value);O.value===e&&(Object.keys(t).length>0?j.value=t:(O.value=void 0,A.value={},j.value={},x().onRowSave?.({row:e,values:n})))}function Ge(e){let t=x().deleteConfirmMessage;(!t||window.confirm(t))&&x().onRowDelete?.(e)}function Ke(){let e=x().bulkDeleteConfirmMessage;if(e&&!window.confirm(e))return;let t=Array.from(D.value);Ae(),x().onRowsDelete?.(t)}function qe(){k.value=!0,A.value={},j.value={}}function Je(){k.value=!1,A.value={},j.value={}}async function Ye(){if(!k.value)return;let{errors:e,values:t}=await Ue(A.value);k.value&&(Object.keys(e).length>0?j.value=e:(k.value=!1,A.value={},j.value={},x().onRowCreate?.(t)))}function Xe(e,t){let n=we.value[e],r=q.value.get(t);return!n||!r?``:o(n[t],r.type(),r.format(),f.value)}function Ze(e,t,n){let r=U.value,i=we.value,a=r.findIndex(e=>e.field===t);if(e===-1||a===-1)return;let o=[];n.replace(/\r\n$|\r$|\n$/,``).split(/\r\n|\r|\n/).map(e=>e.split(` `)).forEach((t,n)=>{let s=i[e+n];s&&t.forEach((e,t)=>{let n=r[a+t];n&&n.editable&&o.push({row:s,field:n.field,value:ee(e,n.type??`string`)})})}),o.length>0&&x().onCellsPaste?.(o)}function Qe(e){let t=F.value[e];return t===void 0?H.value.find(t=>t.field===e)?.width??80:t}function $e(e){return F.value[e]!==void 0}function et(e,t){H.value.some(t=>t.field===e)&&(F.value={...F.value,[e]:Math.max(30,t)})}function tt(e){L.value=e}function nt(e){return z.value.has(e)}function rt(e){let t=z.value,n=x().singleDetailExpand?new Set:new Set(t);t.has(e)?n.delete(e):n.add(e),z.value=n}function it(e){let t=L.value;if(L.value=void 0,!t||t===e)return;let n=[...Y.value],r=n.indexOf(t),i=n.indexOf(e);r!==-1&&i!==-1&&(n.splice(r,1),r<i&&i--,n.splice(i,0,t),x().onRowOrderChange?.(n))}function at(e){let t=I.value[e];if(t===`left`||t===`right`)return t;if(t!==`none`)return H.value.find(t=>t.field===e)?.pinned}function ot(e,t){I.value={...I.value,[e]:t??`none`}}function st(e){let t=_.value?36:0;for(let n of U.value){if(n.field===e)break;at(n.field)===`left`&&(t+=Qe(n.field))}return t}function ct(e){let t=0,n=!1;for(let r of U.value)r.field===e?n=!0:n&&at(r.field)===`right`&&(t+=Qe(r.field));return t}function lt(e){T.value=e}function ut(e){E.value=e}return{get visibleColumns(){return U.value},get allColumns(){return H.value},stickyOffset:st,stickyOffsetRight:ct,columnPinnedSide:at,setColumnPinned:ot,get hideableColumns(){return W.value},isColumnHidden:se,toggleColumnVisibility:ce,setColumnOrder:G,get draggingField(){return P.value},onColumnDragStart:ae,onColumnDrop:oe,effectiveWidth:Qe,isColumnResized:$e,setColumnWidth:et,get draggingRow(){return L.value},onRowDragStart:tt,onRowDrop:it,get hasTreeData(){return Z.value},get treeRows(){return ge.value},isTreeRowExpanded:_e,toggleTreeRow:ve,setAllTreeRowsExpanded:ye,isRowExpanded:nt,toggleRowExpanded:rt,get hasVirtualScroll(){return be.value},get visibleRows(){return we.value},get exportRows(){return $.value},get sortedRows(){return Y.value},get filteredRowCount(){return Y.value.length},get locale(){return f.value},get sortCriteria(){return S.value},setSort:Me,toggleSort:je,sortDirectionFor:Ne,sortPriorityFor:Pe,get filterValues(){return C.value},setFilterValue:de,clearAllFilters:fe,get filterQuery(){return w.value},setFilterQuery:le,get page(){return Ce.value},setPage:lt,get pageCount(){return xe.value?Se.value:1},get groupByField(){return E.value},setGroupByField:ut,get groups(){return he.value},get totals(){return X.value},get selectedRows(){return D.value},isRowSelected:Te,toggleRowSelection:Ee,get allSelected(){return De.value},get someSelected(){return Oe.value},toggleSelectAll:ke,clearSelection:Ae,get editableColumns(){return K.value},get editingRow(){return O.value},get isAddingRow(){return k.value},get rowDraft(){return A.value},get fieldErrors(){return j.value},get isValidating(){return M.value},isEditingRow:Fe,isAnotherRowEditing:Ie,startEditingRow:Re,cancelRowEdit:ze,setRowDraftValue:Be,saveRow:We,deleteRow:Ge,deleteSelectedRows:Ke,startAddingRow:qe,cancelAddRow:Je,saveNewRow:Ye,validateCell:He,copyCellText:Xe,pasteAt:Ze}}function D(e){return e.headerText||e.field}function O(e,t,n){return o(t[e.field],e.type??`string`,e.format??``,n)}function k(e,t,n){return``+[t.map(e=>g(D(e))).join(`,`),...e.map(e=>t.map(t=>g(O(t,e,n))).join(`,`))].join(`\r
2
- `)}function A(e,t,n,r=`inandu-grid`){v(k(e,t,n),`${r}-export.csv`,`text/csv;charset=utf-8;`)}function j(e,t,n){let r=(e,t)=>{let n=t[e.field];return e.type===`number`&&typeof n==`number`&&Number.isFinite(n)?n:void 0},i=(e,t)=>{let i=r(e,t);return i===void 0?`<Cell><Data ss:Type="String">${_(O(e,t,n))}</Data></Cell>`:`<Cell><Data ss:Type="Number">${i}</Data></Cell>`},a=`<Row ss:StyleID="header">${t.map(e=>`<Cell><Data ss:Type="String">${_(D(e))}</Data></Cell>`).join(``)}</Row>`,o=e.map(e=>`<Row>${t.map(t=>i(t,e)).join(``)}</Row>`).join(``);return`<?xml version="1.0"?><?mso-application progid="Excel.Sheet"?><Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"><Styles><Style ss:ID="header"><Font ss:Bold="1"/></Style></Styles><Worksheet ss:Name="Sheet1"><Table>`+a+o+`</Table></Worksheet></Workbook>`}function M(e,t,n,r=`inandu-grid`){v(j(e,t,n),`${r}-export.xls`,`application/vnd.ms-excel`)}function N(e,t,n,r=`inandu-grid`){let i=t.map(e=>`<th>${_(D(e))}</th>`).join(``),a=e.map(e=>`<tr>${t.map(t=>`<td>${_(O(t,e,n))}</td>`).join(``)}</tr>`).join(``),o=`<!doctype html><html><head><meta charset="utf-8"><title>${_(r)}</title><style>table{border-collapse:collapse;width:100%}th,td{border:1px solid #333;padding:4px 8px;text-align:left}th{background:#eee}</style></head><body><table><thead><tr>${i}</tr></thead><tbody>${a}</tbody></table></body></html>`,s=window.open(``,`_blank`);s&&(s.document.write(o),s.document.close(),s.focus(),setTimeout(()=>s.print(),0))}async function ie(e,t,n,r=`inandu-grid`){let{jsPDF:i}=await import(`jspdf`),a=t.map(D),o=new i({orientation:`landscape`}),s=o.internal.pageSize.getWidth()-20,c=o.internal.pageSize.getHeight()-10,l=s/(t.length||1),u=10,d=(e,t)=>{o.setFont(`helvetica`,t?`bold`:`normal`);let n=10;e.forEach(e=>{o.text(te(o,e,l-4),n+2,u+6),n+=l}),u+=8};d(a,!0);for(let r of e)u+8>c&&(o.addPage(),u=10,d(a,!0)),d(t.map(e=>O(e,r,n)),!1);v(o.output(`blob`),`${r}-export.pdf`)}function P(e,t,n){let r=typeof CSS<`u`&&CSS.escape?CSS.escape(t):h(t),i=Array.from(e.querySelectorAll(`td[data-field="${r}"]`)),a=e.querySelector(`th[data-field="${r}"]`),o=i[0]??a??e,s=getComputedStyle(o),c=document.createElement(`span`);c.style.cssText=`position:absolute;left:-9999px;top:-9999px;visibility:hidden;white-space:pre;pointer-events:none`,c.style.font=s.font||`${s.fontStyle} ${s.fontWeight} ${s.fontSize}/${s.lineHeight} ${s.fontFamily}`,c.style.letterSpacing=s.letterSpacing,document.body.appendChild(c);let l=(parseFloat(s.paddingLeft)||0)+(parseFloat(s.paddingRight)||0)+2,u=0;c.textContent=n||t,u=Math.max(u,c.offsetWidth+44);for(let e of i)c.textContent=(e.textContent??``).replace(/\s+/g,` `).trim(),u=Math.max(u,c.offsetWidth+l);return c.remove(),i.length||a?Math.ceil(u):0}var F={class:`inandu-grid-edit-cell`},I=[`aria-label`,`checked`],L=[`aria-label`,`type`,`value`],R={key:2,class:`inandu-grid-field-error`},z=(0,e.defineComponent)({__name:`EditCell`,props:{column:{},value:{},error:{},t:{type:Function}},emits:[`change`],setup(t,{emit:n}){let r=t,i=n,a=(0,e.computed)(()=>r.column.type??`string`),o=(0,e.computed)(()=>r.t(`MsgEditCell`,{column:r.column.headerText??r.column.field})),s=(0,e.computed)(()=>typeof r.value==`string`?r.value:``);return(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`span`,F,[a.value===`boolean`?((0,e.openBlock)(),(0,e.createElementBlock)(`input`,{key:0,"aria-label":o.value,type:`checkbox`,checked:!!t.value,onChange:r[0]||=e=>i(`change`,e.target.checked)},null,40,I)):((0,e.openBlock)(),(0,e.createElementBlock)(`input`,{key:1,"aria-label":o.value,type:a.value===`date`?`date`:a.value===`number`?`number`:`text`,value:s.value,onInput:r[1]||=e=>i(`change`,e.target.value)},null,40,L)),t.error?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,R,(0,e.toDisplayString)(t.error),1)):(0,e.createCommentVNode)(``,!0)]))}}),B=(0,e.defineComponent)({name:`InanduGridRenderNodes`,props:{nodes:{type:null,default:null}},setup(e){return()=>e.nodes}}),V=[`data-row-index`],H={key:0},U=[`aria-label`,`title`],W={key:1},G=[`aria-label`],ae=[`aria-label`,`checked`],oe=[`data-field`,`tabindex`,`onMousedown`,`onMouseenter`],se={key:3,class:`inandu-grid-row-actions`},ce=[`disabled`],K=[`disabled`],le=[`disabled`],q=[`disabled`],ue={key:0,class:`inandu-grid-detail-row`},de=[`colspan`],fe=(0,e.defineComponent)({__name:`DataRow`,props:{ctx:{},row:{},rowIndex:{},hasRowDragHandle:{type:Boolean,default:!1},isDragOverRow:{type:Boolean,default:!1},hasMasterDetail:{type:Boolean,default:!1},isRowExpanded:{type:Boolean,default:!1}},emits:[`rowDragStart`,`rowDragOver`,`rowDragLeave`,`rowDrop`,`toggleExpanded`],setup(t,{emit:n}){let r=t,i=n,a=(0,e.computed)(()=>r.ctx.isEditingRow(r.row)),o=(0,e.computed)(()=>r.isRowExpanded?r.ctx.t(`MsgCollapseDetail`):r.ctx.t(`MsgExpandDetail`));function s(e){r.hasRowDragHandle&&(e.preventDefault(),i(`rowDragOver`))}function c(e){r.hasRowDragHandle&&(e.preventDefault(),i(`rowDrop`))}function l(e){i(`rowDragStart`),e.dataTransfer?.setData(`text/plain`,`row`)}function u(e,t){r.ctx.cellRangeSelection&&r.ctx.onCellRangeMouseDown(e,r.rowIndex,t)}function d(e){r.ctx.cellRangeSelection&&r.ctx.onCellRangeMouseEnter(r.rowIndex,e)}return(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,null,[(0,e.createElementVNode)(`tr`,{"data-row-index":t.rowIndex,class:(0,e.normalizeClass)(t.isDragOverRow?`inandu-drag-over`:void 0),onDragover:s,onDragleave:r[6]||=e=>t.hasRowDragHandle&&i(`rowDragLeave`),onDrop:c},[t.hasMasterDetail?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,H,[(0,e.createElementVNode)(`button`,{type:`button`,class:`inandu-grid-detail-toggle`,"aria-label":o.value,title:o.value,onClick:r[0]||=e=>i(`toggleExpanded`)},(0,e.toDisplayString)(t.isRowExpanded?`▾`:`▸`),9,U)])):(0,e.createCommentVNode)(``,!0),t.hasRowDragHandle?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,W,[(0,e.createElementVNode)(`span`,{class:`inandu-grid-row-drag-handle`,"aria-label":t.ctx.t(`MsgDragRow`),draggable:`true`,onDragstart:l},`⋮⋮`,40,G)])):(0,e.createCommentVNode)(``,!0),t.ctx.selectable?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,{key:2,style:(0,e.normalizeStyle)(t.ctx.selectColumnStyle)},[(0,e.createElementVNode)(`input`,{"aria-label":t.ctx.t(`MsgSelectRow`,{index:t.rowIndex+1}),type:`checkbox`,checked:t.ctx.isRowSelected(t.row),onChange:r[1]||=e=>t.ctx.toggleRowSelection(t.row)},null,40,ae)],4)):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.ctx.columns,(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`td`,{key:n.field,style:(0,e.normalizeStyle)(t.ctx.columnStyle(n)),"data-field":n.field,tabindex:t.ctx.clipboard?0:void 0,class:(0,e.normalizeClass)(t.ctx.cellRangeSelection&&t.ctx.isCellInRange(t.rowIndex,r)?`inandu-cell-range-selected`:void 0),onMousedown:e=>u(e,r),onMouseenter:e=>d(r)},[a.value&&n.editable?((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:0},[t.ctx.editorContent(n,t.row)===void 0?((0,e.openBlock)(),(0,e.createBlock)(z,{key:1,column:n,value:t.ctx.rowDraft[n.field],error:t.ctx.fieldErrors[n.field],t:t.ctx.t,onChange:e=>t.ctx.setRowDraftValue(n.field,e)},null,8,[`column`,`value`,`error`,`t`,`onChange`])):((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(B),{key:0,nodes:t.ctx.editorContent(n,t.row)},null,8,[`nodes`]))],64)):((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(B),{key:1,nodes:t.ctx.cellContent(n,t.row)},null,8,[`nodes`]))],46,oe))),128)),t.ctx.hasRowActions?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,se,[a.value?((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:0},[(0,e.createElementVNode)(`button`,{type:`button`,disabled:t.ctx.isValidating,onClick:r[2]||=e=>t.ctx.saveRow(t.row)},(0,e.toDisplayString)(t.ctx.t(`MsgSaveRow`)),9,ce),(0,e.createElementVNode)(`button`,{type:`button`,disabled:t.ctx.isValidating,onClick:r[3]||=e=>t.ctx.cancelRowEdit()},(0,e.toDisplayString)(t.ctx.t(`MsgCancelRowEdit`)),9,K)],64)):((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:1},[t.ctx.editableColumnCount>0?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:0,type:`button`,disabled:t.ctx.isAnotherRowEditing(t.row),onClick:r[4]||=e=>t.ctx.startEditingRow(t.row)},(0,e.toDisplayString)(t.ctx.t(`MsgEditRow`)),9,le)):(0,e.createCommentVNode)(``,!0),t.ctx.deletable?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:1,type:`button`,disabled:t.ctx.isAnotherRowEditing(t.row),onClick:r[5]||=e=>t.ctx.deleteRow(t.row)},(0,e.toDisplayString)(t.ctx.t(`MsgDeleteRow`)),9,q)):(0,e.createCommentVNode)(``,!0)],64))])):(0,e.createCommentVNode)(``,!0)],42,V),t.hasMasterDetail&&t.isRowExpanded?((0,e.openBlock)(),(0,e.createElementBlock)(`tr`,ue,[(0,e.createElementVNode)(`td`,{colspan:t.ctx.columns.length+t.ctx.extraColumnCount},[(0,e.createVNode)((0,e.unref)(B),{nodes:t.ctx.detailContent(t.row)},null,8,[`nodes`])],8,de)])):(0,e.createCommentVNode)(``,!0)],64))}}),pe={key:0,class:`inandu-grid-filter-range`},me=[`aria-label`,`value`],J=[`aria-label`,`value`],Y={key:1,class:`inandu-grid-filter-range`},he=[`aria-label`,`value`],X=[`aria-label`,`value`],Z=[`aria-label`,`value`],Q={value:``},ge=[`aria-label`,`value`],_e=(0,e.defineComponent)({__name:`FilterControl`,props:{column:{},value:{},t:{type:Function}},emits:[`change`],setup(t,{emit:n}){let r=t,i=n,a=(0,e.computed)(()=>r.column.type??`string`),o=(0,e.computed)(()=>r.t(`MsgFilterColumn`,{column:r.column.headerText??r.column.field}));function s(e){return e.target.value}return(n,r)=>a.value===`number`?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,pe,[(0,e.createElementVNode)(`input`,{"aria-label":`${o.value} ${t.t(`MsgFilterMin`)}`,type:`number`,value:t.value?.min??``,onInput:r[0]||=e=>i(`change`,{min:s(e)})},null,40,me),(0,e.createElementVNode)(`input`,{"aria-label":`${o.value} ${t.t(`MsgFilterMax`)}`,type:`number`,value:t.value?.max??``,onInput:r[1]||=e=>i(`change`,{max:s(e)})},null,40,J)])):a.value===`date`?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,Y,[(0,e.createElementVNode)(`input`,{"aria-label":`${o.value} ${t.t(`MsgFilterFrom`)}`,type:`date`,value:t.value?.from??``,onInput:r[2]||=e=>i(`change`,{from:s(e)})},null,40,he),(0,e.createElementVNode)(`input`,{"aria-label":`${o.value} ${t.t(`MsgFilterTo`)}`,type:`date`,value:t.value?.to??``,onInput:r[3]||=e=>i(`change`,{to:s(e)})},null,40,X)])):a.value===`boolean`?((0,e.openBlock)(),(0,e.createElementBlock)(`select`,{key:2,"aria-label":o.value,value:t.value?.bool??``,onChange:r[4]||=e=>i(`change`,{bool:s(e)})},[(0,e.createElementVNode)(`option`,Q,(0,e.toDisplayString)(t.t(`MsgAll`)),1),r[6]||=(0,e.createElementVNode)(`option`,{value:`true`},`true`,-1),r[7]||=(0,e.createElementVNode)(`option`,{value:`false`},`false`,-1)],40,Z)):((0,e.openBlock)(),(0,e.createElementBlock)(`input`,{key:3,"aria-label":o.value,type:`text`,value:t.value?.text??``,onInput:r[5]||=e=>i(`change`,{text:s(e)})},null,40,ge))}}),ve={class:`inandu-grid-vue`},ye={class:`inandu-grid-search`},be=[`aria-label`,`placeholder`,`value`],xe={class:`inandu-grid-toolbar`},Se={key:3,class:`inandu-grid-column-toggle`},Ce=[`aria-label`,`checked`,`onChange`],we={key:0,class:`inandu-grid-group-by`},$=[`value`],Te={value:``},Ee=[`value`],De={key:0},Oe={key:1},ke=[`aria-label`,`checked`,`indeterminate`],Ae=[`data-field`,`draggable`,`aria-label`,`onDragstart`,`onDragover`,`onDragleave`,`onDrop`,`onClick`],je={key:0,class:`inandu-grid-sort-priority`},Me=[`onMousedown`,`onDblclick`],Ne={key:3},Pe={class:`inandu-grid-filter-row`},Fe={key:0},Ie={key:1},Le={key:3},Re={key:0,class:`inandu-grid-new-row`},ze={key:1,class:`inandu-grid-row-actions`},Be=[`disabled`],Ve=[`disabled`],He={key:1},Ue=[`colspan`],We=[`aria-level`,`aria-expanded`],Ge=[`aria-label`,`checked`,`onChange`],Ke=[`aria-label`,`title`,`onClick`],qe={key:1,class:`inandu-grid-tree-toggle-spacer`,"aria-hidden":`true`},Je={key:1,class:`inandu-grid-row-actions`},Ye={class:`inandu-grid-group-row`},Xe=[`colspan`],Ze={key:0,class:`inandu-grid-group-aggregates`},Qe={key:0,"aria-hidden":`true`},$e=[`colspan`],et={key:1,"aria-hidden":`true`},tt=[`colspan`],nt={key:0},rt={class:`inandu-grid-totals-row`},it={key:0},at={key:1},ot={key:3},st={key:1,class:`inandu-grid-pagination`},ct=[`disabled`],lt=[`disabled`],ut=(0,e.defineComponent)({name:`InanduGrid`,__name:`InanduGrid`,props:{rows:{},columns:{},locale:{default:`en`},lang:{},pageSize:{default:0},selectable:{type:Boolean},exportable:{type:Boolean},exportFilenameBase:{default:`inandu-grid`},deletable:{type:Boolean},deleteConfirmMessage:{},bulkDeleteConfirmMessage:{},creatable:{type:Boolean},clipboard:{type:Boolean},cellRangeSelection:{type:Boolean},multiRange:{type:Boolean},columnToggle:{type:Boolean},rowReorder:{type:Boolean},treeChildrenKey:{},treeDefaultExpanded:{default:`none`},renderDetail:{},singleDetailExpand:{type:Boolean},extraRowFilter:{},virtualScroll:{type:Boolean},virtualRowHeight:{default:40},height:{default:400},overscan:{default:4},autosize:{type:Boolean}},emits:[`selectionChange`,`rowSave`,`rowCreate`,`rowDelete`,`rowsDelete`,`cellsPaste`,`cellRangeChange`,`cellRangesChange`,`rowOrderChange`],setup(t,{expose:n,emit:r}){function i(e,t){return{minRow:Math.min(e.row,t.row),maxRow:Math.max(e.row,t.row),minCol:Math.min(e.col,t.col),maxCol:Math.max(e.col,t.col)}}function a(e,t,n){return t>=e.minRow&&t<=e.maxRow&&n>=e.minCol&&n<=e.maxCol}let s=t,c=r,l=(0,e.useSlots)(),u=E(()=>({rows:s.rows,columns:s.columns,locale:s.locale,lang:s.lang,pageSize:s.pageSize,selectable:s.selectable,deleteConfirmMessage:s.deleteConfirmMessage,bulkDeleteConfirmMessage:s.bulkDeleteConfirmMessage,onRowSave:e=>c(`rowSave`,e),onRowCreate:e=>c(`rowCreate`,e),onRowDelete:e=>c(`rowDelete`,e),onRowsDelete:e=>c(`rowsDelete`,e),onCellsPaste:e=>c(`cellsPaste`,e),onRowOrderChange:e=>c(`rowOrderChange`,e),treeChildrenKey:s.treeChildrenKey,treeDefaultExpanded:s.treeDefaultExpanded,singleDetailExpand:s.singleDetailExpand,extraRowFilter:s.extraRowFilter,virtualScroll:s.virtualScroll}));n({grid:u});let d=(0,e.computed)(()=>ne(s.lang??s.locale)),p=(0,e.shallowRef)(void 0),m=(0,e.shallowRef)(void 0),ee=(0,e.shallowRef)(0),h=(0,e.shallowRef)(null);(0,e.watch)(()=>u.selectedRows,e=>c(`selectionChange`,Array.from(e)),{immediate:!0});let g;function _(e,t){e.preventDefault(),g?.();let n=e.clientX,r=u.effectiveWidth(t),i=e=>u.setColumnWidth(t,r+(e.clientX-n)),a=()=>g?.();window.addEventListener(`mousemove`,i),window.addEventListener(`mouseup`,a),g=()=>{window.removeEventListener(`mousemove`,i),window.removeEventListener(`mouseup`,a),g=void 0}}function te(e,t){if(!s.autosize||!h.value)return;e.preventDefault(),e.stopPropagation();let n=P(h.value,t.field,t.headerText??t.field);n>0&&u.setColumnWidth(t.field,Math.min(600,n))}let v=(0,e.computed)(()=>s.cellRangeSelection&&!u.groupByField&&!u.hasVirtualScroll&&!u.hasTreeData),y=(0,e.shallowRef)(void 0),b=(0,e.shallowRef)(void 0),x=(0,e.shallowRef)([]),S=!1,C=(0,e.computed)(()=>y.value&&b.value?i(y.value,b.value):void 0),w=(0,e.computed)(()=>C.value?[...x.value,C.value]:x.value);function T(e,t){return w.value.some(n=>a(n,e,t))}function re(e){return{rows:u.visibleRows.slice(e.minRow,e.maxRow+1),fields:u.visibleColumns.slice(e.minCol,e.maxCol+1).map(e=>e.field)}}(0,e.watch)([v,w,()=>u.visibleRows,()=>u.visibleColumns],()=>{v.value&&(c(`cellRangeChange`,C.value?re(C.value):void 0),c(`cellRangesChange`,w.value.map(re)))},{immediate:!0});function D(e,t,n){e.button===0&&(S=!0,s.multiRange&&(e.ctrlKey||e.metaKey)&&!e.shiftKey?(C.value&&(x.value=[...x.value,C.value]),y.value={row:t,col:n}):(!e.shiftKey||!y.value)&&(x.value=[],y.value={row:t,col:n}),b.value={row:t,col:n})}function O(e,t){S&&(b.value={row:e,col:t})}let k=()=>{S=!1};(0,e.watch)(v,(e,t,n)=>{e&&(document.addEventListener(`mouseup`,k),n(()=>document.removeEventListener(`mouseup`,k)))},{immediate:!0}),(0,e.onBeforeUnmount)(()=>g?.());function j(e){let t=u.visibleRows.slice(e.minRow,e.maxRow+1),n=u.visibleColumns.slice(e.minCol,e.maxCol+1);return t.map(e=>n.map(t=>o(e[t.field],t.type??`string`,t.format??``,s.locale)).join(` `)).join(`
3
- `)}let F=(0,e.computed)(()=>u.visibleColumns.filter(e=>e.aggregate)),I=(0,e.computed)(()=>u.visibleColumns.filter(e=>e.groupable!==!1)),L=(0,e.computed)(()=>u.groups?u.groups.length===0:u.visibleRows.length===0),R=(0,e.computed)(()=>u.editableColumns.length>0||s.deletable||s.creatable),V=(0,e.computed)(()=>s.rowReorder&&!u.groupByField&&!u.hasVirtualScroll),H=(0,e.computed)(()=>(!!l.detail||!!s.renderDetail)&&!u.groupByField&&!u.hasVirtualScroll),U=(0,e.computed)(()=>+!!H.value+ +!!V.value+ +!!s.selectable+ +!!R.value),W=(0,e.computed)(()=>u.visibleColumns.length+U.value),G=(0,e.computed)(()=>u.hasVirtualScroll?Math.max(0,Math.floor(ee.value/s.virtualRowHeight)-s.overscan):0),ae=(0,e.computed)(()=>u.hasVirtualScroll?Math.min(u.visibleRows.length,Math.ceil((ee.value+s.height)/s.virtualRowHeight)+s.overscan):u.visibleRows.length),oe=(0,e.computed)(()=>u.hasVirtualScroll?u.visibleRows.slice(G.value,ae.value):u.visibleRows),se=(0,e.computed)(()=>G.value*s.virtualRowHeight),ce=(0,e.computed)(()=>(u.visibleRows.length-ae.value)*s.virtualRowHeight);function K(e){u.hasVirtualScroll&&(ee.value=e.currentTarget.scrollTop)}function le(e,t){u.setFilterValue(e,{...u.filterValues[e],...t})}function q(e){let t=e.width!==void 0||u.isColumnResized(e.field)?{width:`${u.effectiveWidth(e.field)}px`}:{},n=u.columnPinnedSide(e.field);return n===`left`?{...t,position:`sticky`,left:`${u.stickyOffset(e.field)}px`,zIndex:1}:n===`right`?{...t,position:`sticky`,right:`${u.stickyOffsetRight(e.field)}px`,zIndex:1}:t}function ue(e,t){u.onColumnDragStart(t),e.dataTransfer?.setData(`text/plain`,t)}function de(e,t){e.preventDefault(),p.value=t}function pe(e){p.value===e&&(p.value=void 0)}function me(e,t){e.preventDefault(),p.value=void 0,u.onColumnDrop(t)}let J=(0,e.computed)(()=>s.selectable?{position:`sticky`,left:`0px`,zIndex:1}:void 0);function Y(e,t){let n=e.aggregate,r=t[e.field];if(!n||r===void 0)return``;let i=n===`count`?String(r):o(r,`number`,e.format??``,s.locale);return`${e.headerText??e.field} ${f[n]}: ${i}`}function he(e){let t={title:e.headerText??e.field,field:e.field},n=l[`header-${e.field}`];return n?n(t):e.renderHeader?e.renderHeader(t):t.title}function X(e,t){let n={value:t[e.field],row:t,field:e.field},r=l[`cell-${e.field}`];return r?r(n):e.renderCell?e.renderCell(n):o(t[e.field],e.type??`string`,e.format??``,s.locale)}function Z(e,t){let n=l[`editor-${e.field}`];if(!n&&!e.renderEditor)return;let r={value:u.rowDraft[e.field],row:t,field:e.field,setValue:t=>u.setRowDraftValue(e.field,t),error:u.fieldErrors[e.field]};return n?n(r):e.renderEditor(r)}function Q(e){return l.detail?l.detail({row:e}):s.renderDetail?.(e)}function ge(e,t){u.toggleColumnVisibility(t),e.target.checked=!u.isColumnHidden(t)}function ut(e){if(!s.clipboard||!(e.ctrlKey||e.metaKey))return;let t=e.key.toLowerCase();if(t!==`c`&&t!==`v`)return;let n=e.target;if(n instanceof HTMLInputElement||n instanceof HTMLTextAreaElement||n instanceof HTMLSelectElement)return;let r=n.closest(`td[data-field]`),i=r?.getAttribute(`data-field`),a=r?.closest(`tr`)?.getAttribute(`data-row-index`);if(!r||!i||a==null)return;let o=Number(a);if(e.preventDefault(),t===`c`){let e=C.value,t=v.value&&e&&(e.minRow!==e.maxRow||e.minCol!==e.maxCol)?j(e):void 0;navigator.clipboard?.writeText(t??u.copyCellText(o,i))?.catch(()=>void 0)}else navigator.clipboard?.readText()?.then(e=>u.pasteAt(o,i,e)).catch(()=>void 0)}function dt(e,t){return e.id==null?t:String(e.id)}let ft=(0,e.computed)(()=>({columns:u.visibleColumns,t:d.value,selectable:s.selectable,selectColumnStyle:J.value,columnStyle:q,isRowSelected:u.isRowSelected,toggleRowSelection:u.toggleRowSelection,hasRowActions:R.value,editableColumnCount:u.editableColumns.length,isEditingRow:u.isEditingRow,isAnotherRowEditing:u.isAnotherRowEditing,startEditingRow:u.startEditingRow,cancelRowEdit:u.cancelRowEdit,saveRow:e=>void u.saveRow(e),deleteRow:u.deleteRow,deletable:s.deletable,rowDraft:u.rowDraft,fieldErrors:u.fieldErrors,isValidating:u.isValidating,setRowDraftValue:u.setRowDraftValue,cellContent:X,editorContent:Z,detailContent:Q,clipboard:s.clipboard,cellRangeSelection:v.value,isCellInRange:T,onCellRangeMouseDown:D,onCellRangeMouseEnter:O,extraColumnCount:U.value}));return(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,ve,[(0,e.createElementVNode)(`div`,ye,[(0,e.createElementVNode)(`input`,{"aria-label":d.value(`MsgFilterPlaceholder`),type:`text`,placeholder:`${d.value(`MsgFilterPlaceholder`)}…`,value:(0,e.unref)(u).filterQuery,onInput:r[0]||=t=>(0,e.unref)(u).setFilterQuery(t.target.value)},null,40,be)]),(0,e.createElementVNode)(`div`,xe,[t.exportable?((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:0},[(0,e.createElementVNode)(`button`,{type:`button`,onClick:r[1]||=n=>(0,e.unref)(A)((0,e.unref)(u).exportRows,(0,e.unref)(u).visibleColumns,t.locale,t.exportFilenameBase)},(0,e.toDisplayString)(d.value(`MsgExportCsv`)),1),(0,e.createElementVNode)(`button`,{type:`button`,onClick:r[2]||=n=>(0,e.unref)(M)((0,e.unref)(u).exportRows,(0,e.unref)(u).visibleColumns,t.locale,t.exportFilenameBase)},(0,e.toDisplayString)(d.value(`MsgExportExcel`)),1),(0,e.createElementVNode)(`button`,{type:`button`,onClick:r[3]||=n=>void(0,e.unref)(ie)((0,e.unref)(u).exportRows,(0,e.unref)(u).visibleColumns,t.locale,t.exportFilenameBase)},(0,e.toDisplayString)(d.value(`MsgExportPdf`)),1),(0,e.createElementVNode)(`button`,{type:`button`,onClick:r[4]||=n=>(0,e.unref)(N)((0,e.unref)(u).exportRows,(0,e.unref)(u).visibleColumns,t.locale,t.exportFilenameBase)},(0,e.toDisplayString)(d.value(`MsgPrint`)),1)],64)):(0,e.createCommentVNode)(``,!0),t.creatable&&(0,e.unref)(u).editableColumns.length>0&&!(0,e.unref)(u).isAddingRow?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:1,type:`button`,onClick:r[5]||=t=>(0,e.unref)(u).startAddingRow()},(0,e.toDisplayString)(d.value(`MsgAddRow`)),1)):(0,e.createCommentVNode)(``,!0),t.selectable&&t.deletable&&(0,e.unref)(u).selectedRows.size>0?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:2,type:`button`,onClick:r[6]||=t=>(0,e.unref)(u).deleteSelectedRows()},(0,e.toDisplayString)(d.value(`MsgDeleteSelected`,{count:(0,e.unref)(u).selectedRows.size})),1)):(0,e.createCommentVNode)(``,!0),t.columnToggle?((0,e.openBlock)(),(0,e.createElementBlock)(`details`,Se,[(0,e.createElementVNode)(`summary`,null,(0,e.toDisplayString)(d.value(`MsgToggleColumns`)),1),(0,e.createElementVNode)(`ul`,null,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)((0,e.unref)(u).hideableColumns,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`li`,{key:t.field},[(0,e.createElementVNode)(`label`,null,[(0,e.createElementVNode)(`input`,{"aria-label":d.value(`MsgToggleColumn`,{column:t.headerText??t.field}),type:`checkbox`,checked:!(0,e.unref)(u).isColumnHidden(t.field),onChange:e=>ge(e,t.field)},null,40,Ce),(0,e.createTextVNode)(` `+(0,e.toDisplayString)(t.headerText??t.field),1)])]))),128))])])):(0,e.createCommentVNode)(``,!0)]),I.value.length>0?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,we,[(0,e.createElementVNode)(`label`,null,[(0,e.createTextVNode)((0,e.toDisplayString)((0,e.unref)(u).groupByField?d.value(`MsgGroupedBy`,{column:I.value.find(t=>t.field===(0,e.unref)(u).groupByField)?.headerText??(0,e.unref)(u).groupByField}):d.value(`MsgGroupByHint`))+` `,1),(0,e.createElementVNode)(`select`,{"aria-label":`Group by`,value:(0,e.unref)(u).groupByField??``,onChange:r[7]||=t=>(0,e.unref)(u).setGroupByField(t.target.value||void 0)},[(0,e.createElementVNode)(`option`,Te,(0,e.toDisplayString)(d.value(`MsgCancelGrouping`)),1),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(I.value,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`option`,{key:t.field,value:t.field},(0,e.toDisplayString)(t.headerText??t.field),9,Ee))),128))],40,$)])])):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)((0,e.unref)(u).hasVirtualScroll?`inandu-grid-viewport`:void 0),style:(0,e.normalizeStyle)((0,e.unref)(u).hasVirtualScroll?{height:`${t.height}px`,overflow:`auto`}:void 0),onScroll:K},[(0,e.createElementVNode)(`table`,{ref_key:`tableRef`,ref:h,class:`inandu-grid`,onKeydown:ut},[(0,e.createElementVNode)(`thead`,null,[(0,e.createElementVNode)(`tr`,null,[H.value?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,De)):(0,e.createCommentVNode)(``,!0),V.value?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,Oe)):(0,e.createCommentVNode)(``,!0),t.selectable?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,{key:2,style:(0,e.normalizeStyle)(J.value)},[(0,e.createElementVNode)(`input`,{"aria-label":d.value(`MsgSelectAll`),type:`checkbox`,checked:(0,e.unref)(u).allSelected,indeterminate:(0,e.unref)(u).someSelected,onChange:r[8]||=t=>(0,e.unref)(u).toggleSelectAll()},null,40,ke)],4)):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)((0,e.unref)(u).visibleColumns,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`th`,{key:t.field,"data-field":t.field,style:(0,e.normalizeStyle)(q(t)),class:(0,e.normalizeClass)(p.value===t.field?`inandu-drag-over`:void 0),draggable:t.reorder!==!1,"aria-label":d.value(`MsgSortBy`,{column:t.headerText??t.field}),onDragstart:e=>ue(e,t.field),onDragover:e=>de(e,t.field),onDragleave:e=>pe(t.field),onDrop:e=>me(e,t.field),onClick:n=>(0,e.unref)(u).toggleSort(t.field,n.shiftKey)},[(0,e.createVNode)((0,e.unref)(B),{nodes:he(t)},null,8,[`nodes`]),(0,e.createTextVNode)((0,e.toDisplayString)((0,e.unref)(u).sortDirectionFor(t.field)?(0,e.unref)(u).sortDirectionFor(t.field)===`asc`?` ▲`:` ▼`:``),1),(0,e.unref)(u).sortPriorityFor(t.field)===void 0?(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createElementBlock)(`sup`,je,(0,e.toDisplayString)((0,e.unref)(u).sortPriorityFor(t.field)),1)),(0,e.createElementVNode)(`span`,{class:`inandu-grid-resize-handle`,draggable:`false`,onMousedown:e=>_(e,t.field),onDblclick:e=>te(e,t),onClick:r[9]||=(0,e.withModifiers)(()=>{},[`stop`])},null,40,Me)],46,Ae))),128)),R.value?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,Ne)):(0,e.createCommentVNode)(``,!0)]),(0,e.createElementVNode)(`tr`,Pe,[H.value?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,Fe)):(0,e.createCommentVNode)(``,!0),V.value?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,Ie)):(0,e.createCommentVNode)(``,!0),t.selectable?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,{key:2,style:(0,e.normalizeStyle)(J.value)},null,4)):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)((0,e.unref)(u).visibleColumns,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`th`,{key:t.field,style:(0,e.normalizeStyle)(q(t))},[(0,e.createVNode)(_e,{column:t,value:(0,e.unref)(u).filterValues[t.field],t:d.value,onChange:e=>le(t.field,e)},null,8,[`column`,`value`,`t`,`onChange`])],4))),128)),R.value?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,Le)):(0,e.createCommentVNode)(``,!0)])]),(0,e.createElementVNode)(`tbody`,null,[(0,e.unref)(u).isAddingRow?((0,e.openBlock)(),(0,e.createElementBlock)(`tr`,Re,[t.selectable?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,{key:0,style:(0,e.normalizeStyle)(J.value)},null,4)):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)((0,e.unref)(u).visibleColumns,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`td`,{key:t.field,style:(0,e.normalizeStyle)(q(t))},[t.editable?((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:0},[Z(t,{})===void 0?((0,e.openBlock)(),(0,e.createBlock)(z,{key:1,column:t,value:(0,e.unref)(u).rowDraft[t.field],error:(0,e.unref)(u).fieldErrors[t.field],t:d.value,onChange:n=>(0,e.unref)(u).setRowDraftValue(t.field,n)},null,8,[`column`,`value`,`error`,`t`,`onChange`])):((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(B),{key:0,nodes:Z(t,{})},null,8,[`nodes`]))],64)):(0,e.createCommentVNode)(``,!0)],4))),128)),R.value?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,ze,[(0,e.createElementVNode)(`button`,{type:`button`,disabled:(0,e.unref)(u).isValidating,onClick:r[10]||=t=>void(0,e.unref)(u).saveNewRow()},(0,e.toDisplayString)(d.value(`MsgSaveRow`)),9,Be),(0,e.createElementVNode)(`button`,{type:`button`,disabled:(0,e.unref)(u).isValidating,onClick:r[11]||=t=>(0,e.unref)(u).cancelAddRow()},(0,e.toDisplayString)(d.value(`MsgCancelRowEdit`)),9,Ve)])):(0,e.createCommentVNode)(``,!0)])):(0,e.createCommentVNode)(``,!0),L.value?((0,e.openBlock)(),(0,e.createElementBlock)(`tr`,He,[(0,e.createElementVNode)(`td`,{colspan:W.value},(0,e.toDisplayString)(d.value(`MsgNoData`)),9,Ue)])):(0,e.unref)(u).hasTreeData?((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,{key:2},(0,e.renderList)((0,e.unref)(u).treeRows,(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`tr`,{key:dt(n.row,r),"aria-level":n.depth+1,"aria-expanded":n.expandable?(0,e.unref)(u).isTreeRowExpanded(n.row):void 0},[t.selectable?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,{key:0,style:(0,e.normalizeStyle)(J.value)},[(0,e.createElementVNode)(`input`,{"aria-label":d.value(`MsgSelectRow`,{index:r+1}),type:`checkbox`,checked:(0,e.unref)(u).isRowSelected(n.row),onChange:t=>(0,e.unref)(u).toggleRowSelection(n.row)},null,40,Ge)],4)):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)((0,e.unref)(u).visibleColumns,(t,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`td`,{key:t.field,style:(0,e.normalizeStyle)(q(t))},[r===0?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,{key:0,class:`inandu-grid-tree-cell`,style:(0,e.normalizeStyle)({paddingInlineStart:`${n.depth*16}px`})},[n.expandable?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:0,type:`button`,class:`inandu-grid-tree-toggle`,"aria-label":(0,e.unref)(u).isTreeRowExpanded(n.row)?d.value(`MsgCollapseDetail`):d.value(`MsgExpandDetail`),title:(0,e.unref)(u).isTreeRowExpanded(n.row)?d.value(`MsgCollapseDetail`):d.value(`MsgExpandDetail`),onClick:t=>(0,e.unref)(u).toggleTreeRow(n.row)},(0,e.toDisplayString)((0,e.unref)(u).isTreeRowExpanded(n.row)?`▾`:`▸`),9,Ke)):((0,e.openBlock)(),(0,e.createElementBlock)(`span`,qe)),(0,e.createVNode)((0,e.unref)(B),{nodes:X(t,n.row)},null,8,[`nodes`])],4)):((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(B),{key:1,nodes:X(t,n.row)},null,8,[`nodes`]))],4))),128)),R.value?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,Je)):(0,e.createCommentVNode)(``,!0)],8,We))),128)):(0,e.unref)(u).groups?((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,{key:3},(0,e.renderList)((0,e.unref)(u).groups,t=>((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:t.key},[(0,e.createElementVNode)(`tr`,Ye,[(0,e.createElementVNode)(`td`,{colspan:W.value},[(0,e.createElementVNode)(`strong`,null,(0,e.toDisplayString)(t.key),1),(0,e.createTextVNode)(` (`+(0,e.toDisplayString)(t.rows.length)+`) `,1),F.value.length>0?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,Ze,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(F.value,n=>((0,e.openBlock)(),(0,e.createElementBlock)(`span`,{key:n.field},` · `+(0,e.toDisplayString)(Y(n,t.aggregates)),1))),128))])):(0,e.createCommentVNode)(``,!0)],8,Xe)]),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.rows,(n,r)=>((0,e.openBlock)(),(0,e.createBlock)(fe,{key:dt(n,`${t.key}:${r}`),ctx:ft.value,row:n,"row-index":r},null,8,[`ctx`,`row`,`row-index`]))),128))],64))),128)):((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:4},[(0,e.unref)(u).hasVirtualScroll&&se.value>0?((0,e.openBlock)(),(0,e.createElementBlock)(`tr`,Qe,[(0,e.createElementVNode)(`td`,{style:(0,e.normalizeStyle)({height:`${se.value}px`,padding:0,border:`none`}),colspan:W.value},null,12,$e)])):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(oe.value,(t,n)=>((0,e.openBlock)(),(0,e.createBlock)(fe,{key:dt(t,G.value+n),ctx:ft.value,row:t,"row-index":G.value+n,"has-row-drag-handle":V.value,"is-drag-over-row":(0,e.unref)(u).draggingRow!==void 0&&m.value===t,"has-master-detail":H.value,"is-row-expanded":(0,e.unref)(u).isRowExpanded(t),onRowDragStart:n=>(0,e.unref)(u).onRowDragStart(t),onRowDragOver:e=>m.value=t,onRowDragLeave:e=>m.value===t&&(m.value=void 0),onRowDrop:n=>(0,e.unref)(u).onRowDrop(t),onToggleExpanded:n=>(0,e.unref)(u).toggleRowExpanded(t)},null,8,[`ctx`,`row`,`row-index`,`has-row-drag-handle`,`is-drag-over-row`,`has-master-detail`,`is-row-expanded`,`onRowDragStart`,`onRowDragOver`,`onRowDragLeave`,`onRowDrop`,`onToggleExpanded`]))),128)),(0,e.unref)(u).hasVirtualScroll&&ce.value>0?((0,e.openBlock)(),(0,e.createElementBlock)(`tr`,et,[(0,e.createElementVNode)(`td`,{style:(0,e.normalizeStyle)({height:`${ce.value}px`,padding:0,border:`none`}),colspan:W.value},null,12,tt)])):(0,e.createCommentVNode)(``,!0)],64))]),F.value.length>0&&!(0,e.unref)(u).hasVirtualScroll?((0,e.openBlock)(),(0,e.createElementBlock)(`tfoot`,nt,[(0,e.createElementVNode)(`tr`,rt,[H.value?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,it)):(0,e.createCommentVNode)(``,!0),V.value?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,at)):(0,e.createCommentVNode)(``,!0),t.selectable?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,{key:2,style:(0,e.normalizeStyle)(J.value)},null,4)):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)((0,e.unref)(u).visibleColumns,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`td`,{key:t.field,style:(0,e.normalizeStyle)(q(t))},(0,e.toDisplayString)(t.aggregate?Y(t,(0,e.unref)(u).totals):``),5))),128)),R.value?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,ot)):(0,e.createCommentVNode)(``,!0)])])):(0,e.createCommentVNode)(``,!0)],544)],38),t.pageSize>0&&!(0,e.unref)(u).groupByField&&!(0,e.unref)(u).hasVirtualScroll?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,st,[(0,e.createElementVNode)(`button`,{type:`button`,disabled:(0,e.unref)(u).page===0,onClick:r[12]||=t=>(0,e.unref)(u).setPage((0,e.unref)(u).page-1)},`‹ `+(0,e.toDisplayString)(d.value(`MsgPreviousPage`)),9,ct),(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(d.value(`MsgPageOf`,{page:(0,e.unref)(u).page+1,total:(0,e.unref)(u).pageCount}))+` (`+(0,e.toDisplayString)((0,e.unref)(u).filteredRowCount)+`)`,1),(0,e.createElementVNode)(`button`,{type:`button`,disabled:(0,e.unref)(u).page>=(0,e.unref)(u).pageCount-1,onClick:r[13]||=t=>(0,e.unref)(u).setPage((0,e.unref)(u).page+1)},(0,e.toDisplayString)(d.value(`MsgNextPage`))+` ›`,9,lt)])):(0,e.createCommentVNode)(``,!0)]))}});exports.AGGREGATE_SYMBOLS=f,exports.INANDU_GRID_TRANSLATIONS=w,exports.InanduGrid=ut,exports.buildCsv=k,exports.buildExcelXml=j,exports.compareCellValues=s,exports.computeGroupAggregates=p,exports.createTranslator=ne,exports.en=y,exports.es=b,exports.exportCsv=A,exports.exportExcel=M,exports.exportPdf=ie,exports.formatCellValue=o,exports.fr=x,exports.interpolate=T,exports.it=S,exports.matchesColumnFilter=d,exports.measureColumnContentWidth=P,exports.printTable=N,exports.useInanduGrid=E,exports.zh=C;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("vue");var t=/^(\d+)?\.(\d+)-(\d+)$/;function n(e,n,r){let i={},a=r?t.exec(r):null;return a?(a[1]&&(i.minimumIntegerDigits=Number(a[1])),i.minimumFractionDigits=Number(a[2]),i.maximumFractionDigits=Number(a[3])):i.maximumFractionDigits=3,new Intl.NumberFormat(n||void 0,i).format(e)}function r(e){return e instanceof Date?e:typeof e==`string`?new Date(e.replace(/^(\d{4}-\d{2}-\d{2}) (\d{2}:\d{2})/,`$1T$2`)):new Date(e)}var i=/YYYY|sss|MM|DD|HH|mm|ss/g;function a(e,t){let n=(e,t=2)=>String(e).padStart(t,`0`);return t.replace(i,t=>{switch(t){case`YYYY`:return String(e.getFullYear());case`MM`:return n(e.getMonth()+1);case`DD`:return n(e.getDate());case`HH`:return n(e.getHours());case`mm`:return n(e.getMinutes());case`ss`:return n(e.getSeconds());case`sss`:return n(e.getMilliseconds(),3);default:return t}})}function o(e,t,i,o,s=n){if(e==null)return``;switch(t){case`number`:{let t=typeof e==`number`?e:Number(e);return Number.isNaN(t)?String(e):s(t,o,i||void 0)}case`date`:{let t=r(e);return Number.isNaN(t.getTime())?String(e):a(t,i||`YYYY-MM-DD`)}case`boolean`:{let[t,n]=(i||`true|false`).split(`|`);return e?t:n}default:return String(e)}}function s(e,t,n){return e==null&&t==null?0:e==null?-1:t==null?1:e instanceof Date&&t instanceof Date?e.getTime()-t.getTime():typeof e==`number`&&typeof t==`number`?e-t:String(e).localeCompare(String(t),n||void 0)}function c(e,t){let{getChildren:n,isExpanded:r,match:i,compare:a}=t,o=[],s=new Map,c=e=>{if(!i)return!0;let t=s.get(e);if(t!==void 0)return t;let r=i(e);if(!r){let t=n(e);r=!!t&&t.some(c)}return s.set(e,r),r},l=(e,t)=>{let s=i?e.filter(c):[...e];a&&(s=s.slice().sort(a));for(let e of s){let a=n(e),s=(a?i?a.filter(c):a:[]).length>0,u=s&&(i?!0:r(e));o.push({row:e,depth:t,expandable:s,expanded:u}),u&&l(a,t+1)}};return l(e,0),o}function l(e,t){let n=[],r=e=>{for(let i of e){n.push(i);let e=t(i);e&&e.length&&r(e)}};return r(e),n}function u(e){return e?Object.values(e).some(e=>Array.isArray(e)?!0:!!e):!1}function d(e,t,n,i,a){let s=t[e.field()];if(n.values!==void 0)return n.values.includes(o(s,e.type(),e.format(),i,a));switch(e.type()){case`number`:{let e=!!n.min,t=!!n.max;if(!e&&!t)return!0;let r=typeof s==`number`?s:Number(s);return!(s==null||Number.isNaN(r)||e&&r<Number(n.min)||t&&r>Number(n.max))}case`date`:{let e=!!n.from,t=!!n.to;if(!e&&!t)return!0;if(s==null)return!1;let i=r(s);if(Number.isNaN(i.getTime())||e&&i<new Date(n.from))return!1;if(t){let e=new Date(n.to);if(e.setHours(23,59,59,999),i>e)return!1}return!0}case`boolean`:return!n.bool||!!s==(n.bool===`true`);default:{let t=(n.text??``).trim().toLowerCase();return!t||o(s,e.type(),e.format(),i,a).toLowerCase().includes(t)}}}var f={sum:`Σ`,avg:`x̄`,min:`min`,max:`max`,count:`#`};function p(e,t){let n={};for(let r of t){let t=r.field(),i=r.aggregate();if(i===`count`){n[t]=e.length;continue}let a=e.map(e=>e[t]).filter(e=>e!=null&&e!==``&&typeof e!=`boolean`).map(e=>Number(e)).filter(e=>Number.isFinite(e));if(a.length===0)n[t]=0;else switch(i){case`sum`:n[t]=a.reduce((e,t)=>e+t,0);break;case`avg`:n[t]=a.reduce((e,t)=>e+t,0)/a.length;break;case`min`:n[t]=a.reduce((e,t)=>t<e?t:e,1/0);break;case`max`:n[t]=a.reduce((e,t)=>t>e?t:e,-1/0)}}return n}function m(e,t){switch(t){case`number`:{if(e===``||e===void 0)return;let t=Number(e);return Number.isNaN(t)?void 0:t}case`date`:{let t=typeof e==`string`?/^(\d{4})-(\d{2})-(\d{2})$/.exec(e):null,n=t?new Date(Number(t[1]),Number(t[2])-1,Number(t[3])):new Date(e);return Number.isNaN(n.getTime())?void 0:n}case`boolean`:return!!e;default:return e}}function ee(e,t){return t===`boolean`?e.trim().toLowerCase()===`true`:m(e,t)}function te(e){return e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}function h(e){return/[",\r\n]/.test(e)?`"`+e.replace(/"/g,`""`)+`"`:e}function g(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`)}function ne(e,t,n){if(e.getTextWidth(t)<=n)return t;let r=t;for(;r.length>0&&e.getTextWidth(r+`…`)>n;)r=r.slice(0,-1);return r+`…`}function _(e,t,n){let r=e instanceof Blob?e:new Blob([e],{type:n}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=t,a.click(),URL.revokeObjectURL(i)}var v={MsgNoData:`No data`,MsgFirstPage:`First page`,MsgPreviousPage:`Previous page`,MsgNextPage:`Next page`,MsgLastPage:`Last page`,MsgSortBy:`Sort by {{column}}`,MsgPageOf:`Page {{page}} of {{total}}`,MsgFilterPlaceholder:`Search`,MsgFilterColumn:`Filter {{column}}`,MsgFilterMin:`Min`,MsgFilterMax:`Max`,MsgFilterFrom:`From`,MsgFilterTo:`To`,MsgAll:`All`,MsgCancelFilter:`Cancel filter`,MsgCancelAllFilters:`Clear filters`,MsgGroupByHint:`Drag a column header here to group by it`,MsgGroupedBy:`Grouped by {{column}}`,MsgGroupHeader:`{{column}}: {{value}} ({{count}})`,MsgCancelGrouping:`Cancel grouping`,MsgSelectAll:`Select all rows`,MsgSelectRow:`Select row {{index}}`,MsgExportCsv:`Export CSV`,MsgExportExcel:`Export Excel`,MsgExportPdf:`Export PDF`,MsgPrint:`Print`,MsgToggleColumns:`Columns`,MsgToggleColumn:`Toggle {{column}}`,MsgEditCell:`Edit {{column}}`,MsgEditRow:`Edit`,MsgSaveRow:`Save`,MsgCancelRowEdit:`Cancel`,MsgDeleteRow:`Delete`,MsgAddRow:`Add row`,MsgLoading:`Loading…`,MsgDragRow:`Drag to reorder row`,MsgAutosizeColumn:`Double-click to fit column to content`,MsgExpandDetail:`Expand row details`,MsgCollapseDetail:`Collapse row details`,MsgDeleteSelected:`Delete selected ({{count}})`,MsgValidationRequired:`This field is required`,MsgValidationMin:`Must be at least {{min}}`,MsgValidationMax:`Must be at most {{max}}`,MsgValidationPattern:`Invalid format`},y={MsgNoData:`Sin datos`,MsgFirstPage:`Primera página`,MsgPreviousPage:`Página anterior`,MsgNextPage:`Página siguiente`,MsgLastPage:`Última página`,MsgSortBy:`Ordenar por {{column}}`,MsgPageOf:`Página {{page}} de {{total}}`,MsgFilterPlaceholder:`Buscar`,MsgFilterColumn:`Filtrar {{column}}`,MsgFilterMin:`Mín`,MsgFilterMax:`Máx`,MsgFilterFrom:`Desde`,MsgFilterTo:`Hasta`,MsgAll:`Todos`,MsgCancelFilter:`Cancelar filtro`,MsgCancelAllFilters:`Cancelar filtros`,MsgGroupByHint:`Arrastra el encabezado de una columna aquí para agrupar por ella`,MsgGroupedBy:`Agrupado por {{column}}`,MsgGroupHeader:`{{column}}: {{value}} ({{count}})`,MsgCancelGrouping:`Cancelar agrupación`,MsgSelectAll:`Seleccionar todas las filas`,MsgSelectRow:`Seleccionar fila {{index}}`,MsgExportCsv:`Exportar CSV`,MsgExportExcel:`Exportar Excel`,MsgExportPdf:`Exportar PDF`,MsgPrint:`Imprimir`,MsgToggleColumns:`Columnas`,MsgToggleColumn:`Mostrar u ocultar {{column}}`,MsgEditCell:`Editar {{column}}`,MsgEditRow:`Editar`,MsgSaveRow:`Guardar`,MsgCancelRowEdit:`Cancelar`,MsgDeleteRow:`Eliminar`,MsgAddRow:`Agregar fila`,MsgLoading:`Cargando…`,MsgDragRow:`Arrastrar para reordenar fila`,MsgAutosizeColumn:`Doble clic para ajustar la columna al contenido`,MsgExpandDetail:`Expandir detalle de fila`,MsgCollapseDetail:`Contraer detalle de fila`,MsgDeleteSelected:`Eliminar seleccionados ({{count}})`,MsgValidationRequired:`Este campo es obligatorio`,MsgValidationMin:`Debe ser como mínimo {{min}}`,MsgValidationMax:`Debe ser como máximo {{max}}`,MsgValidationPattern:`Formato inválido`},b={MsgNoData:`Aucune donnée`,MsgFirstPage:`Première page`,MsgPreviousPage:`Page précédente`,MsgNextPage:`Page suivante`,MsgLastPage:`Dernière page`,MsgSortBy:`Trier par {{column}}`,MsgPageOf:`Page {{page}} sur {{total}}`,MsgFilterPlaceholder:`Rechercher`,MsgFilterColumn:`Filtrer {{column}}`,MsgFilterMin:`Min`,MsgFilterMax:`Max`,MsgFilterFrom:`De`,MsgFilterTo:`À`,MsgAll:`Tous`,MsgCancelFilter:`Annuler le filtre`,MsgCancelAllFilters:`Effacer les filtres`,MsgGroupByHint:`Faites glisser l'en-tête d'une colonne ici pour regrouper par celle-ci`,MsgGroupedBy:`Regroupé par {{column}}`,MsgGroupHeader:`{{column}} : {{value}} ({{count}})`,MsgCancelGrouping:`Annuler le regroupement`,MsgSelectAll:`Sélectionner toutes les lignes`,MsgSelectRow:`Sélectionner la ligne {{index}}`,MsgExportCsv:`Exporter CSV`,MsgExportExcel:`Exporter Excel`,MsgExportPdf:`Exporter PDF`,MsgPrint:`Imprimer`,MsgToggleColumns:`Colonnes`,MsgToggleColumn:`Afficher/masquer {{column}}`,MsgEditCell:`Modifier {{column}}`,MsgEditRow:`Modifier`,MsgSaveRow:`Enregistrer`,MsgCancelRowEdit:`Annuler`,MsgDeleteRow:`Supprimer`,MsgAddRow:`Ajouter une ligne`,MsgLoading:`Chargement…`,MsgDragRow:`Glisser pour réordonner la ligne`,MsgAutosizeColumn:`Double-cliquez pour ajuster la colonne au contenu`,MsgExpandDetail:`Développer les détails de la ligne`,MsgCollapseDetail:`Réduire les détails de la ligne`,MsgDeleteSelected:`Supprimer la sélection ({{count}})`,MsgValidationRequired:`Ce champ est obligatoire`,MsgValidationMin:`Doit être au moins {{min}}`,MsgValidationMax:`Doit être au plus {{max}}`,MsgValidationPattern:`Format invalide`},x={MsgNoData:`Nessun dato`,MsgFirstPage:`Prima pagina`,MsgPreviousPage:`Pagina precedente`,MsgNextPage:`Pagina successiva`,MsgLastPage:`Ultima pagina`,MsgSortBy:`Ordina per {{column}}`,MsgPageOf:`Pagina {{page}} di {{total}}`,MsgFilterPlaceholder:`Cerca`,MsgFilterColumn:`Filtra {{column}}`,MsgFilterMin:`Min`,MsgFilterMax:`Max`,MsgFilterFrom:`Da`,MsgFilterTo:`A`,MsgAll:`Tutti`,MsgCancelFilter:`Annulla filtro`,MsgCancelAllFilters:`Cancella filtri`,MsgGroupByHint:`Trascina qui l'intestazione di una colonna per raggruppare per essa`,MsgGroupedBy:`Raggruppato per {{column}}`,MsgGroupHeader:`{{column}}: {{value}} ({{count}})`,MsgCancelGrouping:`Annulla raggruppamento`,MsgSelectAll:`Seleziona tutte le righe`,MsgSelectRow:`Seleziona riga {{index}}`,MsgExportCsv:`Esporta CSV`,MsgExportExcel:`Esporta Excel`,MsgExportPdf:`Esporta PDF`,MsgPrint:`Stampa`,MsgToggleColumns:`Colonne`,MsgToggleColumn:`Mostra/nascondi {{column}}`,MsgEditCell:`Modifica {{column}}`,MsgEditRow:`Modifica`,MsgSaveRow:`Salva`,MsgCancelRowEdit:`Annulla`,MsgDeleteRow:`Elimina`,MsgAddRow:`Aggiungi riga`,MsgLoading:`Caricamento…`,MsgDragRow:`Trascina per riordinare la riga`,MsgAutosizeColumn:`Doppio clic per adattare la colonna al contenuto`,MsgExpandDetail:`Espandi dettagli riga`,MsgCollapseDetail:`Comprimi dettagli riga`,MsgDeleteSelected:`Elimina selezionati ({{count}})`,MsgValidationRequired:`Questo campo è obbligatorio`,MsgValidationMin:`Deve essere almeno {{min}}`,MsgValidationMax:`Deve essere al massimo {{max}}`,MsgValidationPattern:`Formato non valido`},S={MsgNoData:`暂无数据`,MsgFirstPage:`首页`,MsgPreviousPage:`上一页`,MsgNextPage:`下一页`,MsgLastPage:`末页`,MsgSortBy:`按{{column}}排序`,MsgPageOf:`第 {{page}} 页,共 {{total}} 页`,MsgFilterPlaceholder:`搜索`,MsgFilterColumn:`筛选{{column}}`,MsgFilterMin:`最小`,MsgFilterMax:`最大`,MsgFilterFrom:`从`,MsgFilterTo:`到`,MsgAll:`全部`,MsgCancelFilter:`取消筛选`,MsgCancelAllFilters:`清除所有筛选`,MsgGroupByHint:`将列标题拖到此处以按其分组`,MsgGroupedBy:`按{{column}}分组`,MsgGroupHeader:`{{column}}: {{value}} ({{count}})`,MsgCancelGrouping:`取消分组`,MsgSelectAll:`选择所有行`,MsgSelectRow:`选择第 {{index}} 行`,MsgExportCsv:`导出 CSV`,MsgExportExcel:`导出 Excel`,MsgExportPdf:`导出 PDF`,MsgPrint:`打印`,MsgToggleColumns:`列`,MsgToggleColumn:`显示/隐藏{{column}}`,MsgEditCell:`编辑{{column}}`,MsgEditRow:`编辑`,MsgSaveRow:`保存`,MsgCancelRowEdit:`取消`,MsgDeleteRow:`删除`,MsgAddRow:`添加行`,MsgLoading:`加载中…`,MsgDragRow:`拖动以重新排序行`,MsgAutosizeColumn:`双击以使列适应内容`,MsgExpandDetail:`展开行详情`,MsgCollapseDetail:`收起行详情`,MsgDeleteSelected:`删除所选 ({{count}})`,MsgValidationRequired:`此字段为必填项`,MsgValidationMin:`不得小于 {{min}}`,MsgValidationMax:`不得大于 {{max}}`,MsgValidationPattern:`格式无效`},C={en:v,es:y,fr:b,it:x,zh:S};function w(e,t){return t?e.replace(/\{\{(\w+)\}\}/g,(e,n)=>n in t?String(t[n]):e):e}function re(e){let t=C[e.split(`-`)[0]]??v;return(e,n)=>w(t[e]??v[e],n)}function ie(e){return{field:()=>e.field,type:()=>e.type??`string`,format:()=>e.format??``,order:()=>e.order,aggregate:()=>e.aggregate??``}}function T(t){let n=n=>(0,e.computed)(()=>(0,e.toValue)(t)[n]),i=n(`rows`),a=n(`columns`),f=(0,e.computed)(()=>(0,e.toValue)(t).locale??`en`),te=n(`lang`),h=(0,e.computed)(()=>(0,e.toValue)(t).pageSize??0),g=(0,e.computed)(()=>(0,e.toValue)(t).selectable??!1),ne=n(`treeChildrenKey`),_=(0,e.computed)(()=>(0,e.toValue)(t).treeDefaultExpanded??`none`),v=(0,e.computed)(()=>(0,e.toValue)(t).virtualScroll??!1),y=n(`extraRowFilter`),b=n(`serverSide`),x=(0,e.computed)(()=>!!b.value),S=()=>(0,e.toValue)(t),C=(0,e.shallowRef)([]),w=(0,e.shallowRef)({}),T=(0,e.shallowRef)(``),E=(0,e.shallowRef)(0),D=(0,e.shallowRef)(void 0),O=(0,e.computed)(()=>x.value?void 0:D.value),k=(0,e.shallowRef)(new Set),A=(0,e.shallowRef)(void 0),j=(0,e.shallowRef)(!1),M=(0,e.shallowRef)({}),N=(0,e.shallowRef)({}),ae=(0,e.shallowRef)(!1),P=(0,e.shallowRef)(new Set),F=(0,e.shallowRef)(void 0),I=(0,e.shallowRef)(void 0),L=(0,e.shallowRef)({}),oe=(0,e.shallowRef)({}),R=(0,e.shallowRef)(void 0),z=(0,e.shallowRef)(new Set),B=(0,e.shallowRef)(new Set),se,V=(0,e.computed)(()=>re(te.value??f.value)),H=(0,e.computed)(()=>{let e=F.value;if(!e)return a.value;let t=new Map(a.value.map(e=>[e.field,e])),n=[];for(let r of e){let e=t.get(r);e&&(n.push(e),t.delete(r))}return n.push(...t.values()),n}),U=(0,e.computed)(()=>P.value.size===0?H.value:H.value.filter(e=>!P.value.has(e.field))),ce=(0,e.computed)(()=>H.value.filter(e=>e.hideable!==!1));function le(e){let t=H.value.map(e=>e.field),n=new Set(t),r=e.filter(e=>n.has(e)),i=new Set(r),a=t.filter(e=>!i.has(e));F.value=[...r,...a]}function ue(e){I.value=e}function de(e){let t=I.value;if(I.value=void 0,!t||t===e)return;let n=H.value.find(e=>e.field===t);if(!n||n.reorder===!1)return;let r=H.value.map(e=>e.field),i=r.indexOf(t),a=r.indexOf(e);i!==-1&&a!==-1&&(r.splice(i,1),i<a&&a--,r.splice(a,0,t),le(r))}function fe(e){return P.value.has(e)}function W(e){if(P.value.has(e)){let t=new Set(P.value);t.delete(e),P.value=t}else U.value.length<=1||(P.value=new Set(P.value).add(e))}let pe=(0,e.computed)(()=>U.value.filter(e=>e.editable));function me(e){E.value=0,T.value=e}let G=(0,e.computed)(()=>new Map(U.value.map(e=>[e.field,ie(e)]))),he=(0,e.computed)(()=>U.value.filter(e=>e.aggregate).map(e=>G.value.get(e.field)));function ge(e,t){E.value=0,w.value={...w.value,[e]:t}}function K(){E.value=0,w.value={}}function _e(e,t){return U.value.some(n=>{let r=G.value.get(n.field);return o(e[n.field],r.type(),r.format(),f.value).toLowerCase().includes(t)})}function ve(e,t){return t.every(([t,n])=>{let r=G.value.get(t);return!r||d(r,e,n,f.value)})}function q(e,t){for(let{field:n,direction:r}of C.value){let i=s(e[n],t[n],f.value)*(r===`asc`?1:-1);if(i!==0)return i}return 0}let J=(0,e.computed)(()=>{let e=i.value;if(x.value)return e;let t=T.value.trim().toLowerCase();t&&(e=e.filter(e=>_e(e,t)));let n=Object.entries(w.value).filter(([,e])=>u(e));n.length>0&&(e=e.filter(e=>ve(e,n)));let r=y.value;return r&&(e=e.filter(r)),C.value.length>0&&(e=[...e].sort(q)),e}),ye=(0,e.computed)(()=>{let e=O.value;if(!e)return null;let t=G.value.get(e);if(!t)return null;let n=new Map;for(let r of J.value){let i=o(r[e],t.type(),t.format(),f.value),a=n.get(i);a?a.push(r):n.set(i,[r])}return Array.from(n.entries()).map(([e,t])=>({key:e,rows:t,aggregates:p(t,he.value)}))}),be=(0,e.computed)(()=>p(J.value,he.value)),Y=(0,e.computed)(()=>!!ne.value&&!O.value&&!v.value&&!x.value);function X(e){let t=ne.value,n=t?e[t]:void 0;return Array.isArray(n)?n:void 0}let xe=(0,e.computed)(()=>{if(!Y.value)return[];let e=T.value.trim().toLowerCase(),t=Object.entries(w.value).filter(([,e])=>u(e)),n=y.value,r=e||t.length>0||n?r=>e&&!_e(r,e)||!ve(r,t)?!1:!n||n(r):void 0,a=C.value.length>0?q:void 0,o=z.value;return c(i.value,{getChildren:X,isExpanded:e=>o.has(e),match:r,compare:a})});(0,e.watch)([Y,i,_],()=>{if(!Y.value||se===i.value)return;se=i.value;let e=_.value;if(e===`none`){z.value=new Set;return}let t=new Set;if(e===`all`)for(let e of l(i.value,X))X(e)?.length&&t.add(e);else{let n=(r,i)=>{if(!(i>=e))for(let e of r){let r=X(e);r?.length&&(t.add(e),n(r,i+1))}};n(i.value,0)}z.value=t},{immediate:!0,flush:`sync`});function Se(e){return z.value.has(e)}function Ce(e){let t=new Set(z.value);t.has(e)?t.delete(e):t.add(e),z.value=t}function we(e){if(!e){z.value=new Set;return}let t=new Set;for(let e of l(i.value,X))X(e)?.length&&t.add(e);z.value=t}let Te=(0,e.computed)(()=>v.value&&!O.value&&!x.value),Ee=(0,e.computed)(()=>h.value>0&&!O.value&&!Y.value&&!Te.value),De=(0,e.computed)(()=>b.value?b.value.totalItems:J.value.length),Oe=(0,e.computed)(()=>Ee.value?Math.max(1,Math.ceil(De.value/h.value)):1),ke=(0,e.computed)(()=>x.value?E.value:Math.min(E.value,Oe.value-1)),Z=(0,e.computed)(()=>{if(Y.value)return xe.value.map(e=>e.row);if(!Ee.value||x.value)return J.value;let e=ke.value*h.value;return J.value.slice(e,e+h.value)});(0,e.watch)([x,ke,h,C,w,T],()=>{x.value&&S().onQueryChange?.({page:ke.value,pageSize:h.value,sortCriteria:C.value,filterValues:w.value,filterQuery:T.value})},{immediate:!0});let Q=(0,e.computed)(()=>O.value?J.value:Z.value);function Ae(e){return k.value.has(e)}function je(e){let t=new Set(k.value);t.has(e)?t.delete(e):t.add(e),k.value=t}let Me=(0,e.computed)(()=>Q.value.length>0&&Q.value.every(e=>k.value.has(e))),Ne=(0,e.computed)(()=>!Me.value&&Q.value.some(e=>k.value.has(e)));function Pe(){let e=!Me.value,t=new Set(k.value);for(let n of Q.value)e?t.add(n):t.delete(n);k.value=t}function Fe(){k.value=new Set}function Ie(e,t=!1){E.value=0;let n=C.value,r=n.findIndex(t=>t.field===e);if(t){if(r===-1){C.value=[...n,{field:e,direction:`asc`}];return}let t=[...n];t[r]={field:e,direction:n[r].direction===`asc`?`desc`:`asc`},C.value=t}else n.length===1&&n[0].field===e?C.value=[{field:e,direction:n[0].direction===`asc`?`desc`:`asc`}]:C.value=[{field:e,direction:`asc`}]}function Le(e){C.value=e}function Re(e){return C.value.find(t=>t.field===e)?.direction}function ze(e){if(C.value.length<2)return;let t=C.value.findIndex(t=>t.field===e);return t===-1?void 0:t+1}function Be(e){return A.value===e}function Ve(e){return j.value?!0:A.value!==void 0&&A.value!==e}function He(e,t){let n=t.type??`string`;if(n===`boolean`)return!!e[t.field];if(n===`date`){let n=r(e[t.field]);if(Number.isNaN(n.getTime()))return``;let i=e=>String(e).padStart(2,`0`);return`${n.getFullYear()}-${i(n.getMonth()+1)}-${i(n.getDate())}`}let i=e[t.field];return i==null?``:String(i)}function Ue(e){let t={};for(let n of pe.value)t[n.field]=He(e,n);A.value=e,M.value=t,N.value={}}function We(){A.value=void 0,M.value={},N.value={}}function Ge(e,t){M.value={...M.value,[e]:t}}function Ke(e,t,n,r){let i=V.value;if(e.required&&(t===``||t==null))return i(`MsgValidationRequired`);if((e.type??`string`)===`number`&&typeof n==`number`){if(e.min!==void 0&&n<e.min)return i(`MsgValidationMin`,{min:e.min});if(e.max!==void 0&&n>e.max)return i(`MsgValidationMax`,{max:e.max})}if(e.pattern&&typeof t==`string`&&t!==``){let n;try{n=new RegExp(e.pattern)}catch{n=void 0}if(n&&!n.test(t))return i(`MsgValidationPattern`)}return e.validator?e.validator(n,r):null}function qe(e,t,n={}){return Ke(e,t,t,n)}async function Je(e){let t=pe.value,n={};for(let r of t)n[r.field]=m(e[r.field],r.type??`string`);let r={},i={},a=[];for(let o of t){let t=o.field,s=Ke(o,e[t],n[t],n);s?r[t]=s:o.asyncValidator?a.push(o.asyncValidator(n[t],n).then(e=>{e?r[t]=e:n[t]!==void 0&&(i[t]=n[t])})):n[t]!==void 0&&(i[t]=n[t])}if(a.length>0){ae.value=!0;try{await Promise.all(a)}finally{ae.value=!1}}return{errors:r,values:i}}async function Ye(e){if(A.value!==e)return;let{errors:t,values:n}=await Je(M.value);A.value===e&&(Object.keys(t).length>0?N.value=t:(A.value=void 0,M.value={},N.value={},S().onRowSave?.({row:e,values:n})))}function Xe(e){let t=S().deleteConfirmMessage;(!t||window.confirm(t))&&S().onRowDelete?.(e)}function Ze(){let e=S().bulkDeleteConfirmMessage;if(e&&!window.confirm(e))return;let t=Array.from(k.value);Fe(),S().onRowsDelete?.(t)}function Qe(){j.value=!0,M.value={},N.value={}}function $e(){j.value=!1,M.value={},N.value={}}async function et(){if(!j.value)return;let{errors:e,values:t}=await Je(M.value);j.value&&(Object.keys(e).length>0?N.value=e:(j.value=!1,M.value={},N.value={},S().onRowCreate?.(t)))}function tt(e,t){let n=Z.value[e],r=G.value.get(t);return!n||!r?``:o(n[t],r.type(),r.format(),f.value)}function nt(e,t,n){let r=U.value,i=Z.value,a=r.findIndex(e=>e.field===t);if(e===-1||a===-1)return;let o=[];n.replace(/\r\n$|\r$|\n$/,``).split(/\r\n|\r|\n/).map(e=>e.split(` `)).forEach((t,n)=>{let s=i[e+n];s&&t.forEach((e,t)=>{let n=r[a+t];n&&n.editable&&o.push({row:s,field:n.field,value:ee(e,n.type??`string`)})})}),o.length>0&&S().onCellsPaste?.(o)}function rt(e){let t=L.value[e];return t===void 0?H.value.find(t=>t.field===e)?.width??80:t}function it(e){return L.value[e]!==void 0}function at(e,t){H.value.some(t=>t.field===e)&&(L.value={...L.value,[e]:Math.max(30,t)})}function ot(e){R.value=e}function st(e){return B.value.has(e)}function ct(e){let t=B.value,n=S().singleDetailExpand?new Set:new Set(t);t.has(e)?n.delete(e):n.add(e),B.value=n}function lt(e){let t=R.value;if(R.value=void 0,!t||t===e)return;let n=[...J.value],r=n.indexOf(t),i=n.indexOf(e);r!==-1&&i!==-1&&(n.splice(r,1),r<i&&i--,n.splice(i,0,t),S().onRowOrderChange?.(n))}function ut(e){let t=oe.value[e];if(t===`left`||t===`right`)return t;if(t!==`none`)return H.value.find(t=>t.field===e)?.pinned}function dt(e,t){oe.value={...oe.value,[e]:t??`none`}}function $(e){let t=g.value?36:0;for(let n of U.value){if(n.field===e)break;ut(n.field)===`left`&&(t+=rt(n.field))}return t}function ft(e){let t=0,n=!1;for(let r of U.value)r.field===e?n=!0:n&&ut(r.field)===`right`&&(t+=rt(r.field));return t}function pt(e){E.value=e}function mt(e){D.value=e}return{get visibleColumns(){return U.value},get allColumns(){return H.value},stickyOffset:$,stickyOffsetRight:ft,columnPinnedSide:ut,setColumnPinned:dt,get hideableColumns(){return ce.value},isColumnHidden:fe,toggleColumnVisibility:W,setColumnOrder:le,get draggingField(){return I.value},onColumnDragStart:ue,onColumnDrop:de,effectiveWidth:rt,isColumnResized:it,setColumnWidth:at,get draggingRow(){return R.value},onRowDragStart:ot,onRowDrop:lt,get hasTreeData(){return Y.value},get treeRows(){return xe.value},isTreeRowExpanded:Se,toggleTreeRow:Ce,setAllTreeRowsExpanded:we,isRowExpanded:st,toggleRowExpanded:ct,get hasVirtualScroll(){return Te.value},get visibleRows(){return Z.value},get exportRows(){return Q.value},get sortedRows(){return J.value},get filteredRowCount(){return De.value},get locale(){return f.value},get sortCriteria(){return C.value},setSort:Le,toggleSort:Ie,sortDirectionFor:Re,sortPriorityFor:ze,get filterValues(){return w.value},setFilterValue:ge,clearAllFilters:K,get filterQuery(){return T.value},setFilterQuery:me,get page(){return ke.value},setPage:pt,get pageCount(){return Ee.value?Oe.value:1},get groupByField(){return O.value},setGroupByField:mt,get groups(){return ye.value},get totals(){return be.value},get selectedRows(){return k.value},isRowSelected:Ae,toggleRowSelection:je,get allSelected(){return Me.value},get someSelected(){return Ne.value},toggleSelectAll:Pe,clearSelection:Fe,get editableColumns(){return pe.value},get editingRow(){return A.value},get isAddingRow(){return j.value},get rowDraft(){return M.value},get fieldErrors(){return N.value},get isValidating(){return ae.value},isEditingRow:Be,isAnotherRowEditing:Ve,startEditingRow:Ue,cancelRowEdit:We,setRowDraftValue:Ge,saveRow:Ye,deleteRow:Xe,deleteSelectedRows:Ze,startAddingRow:Qe,cancelAddRow:$e,saveNewRow:et,validateCell:qe,copyCellText:tt,pasteAt:nt}}function E(e){return e.headerText||e.field}function D(e,t,n){return o(t[e.field],e.type??`string`,e.format??``,n)}function O(e,t,n){return``+[t.map(e=>h(E(e))).join(`,`),...e.map(e=>t.map(t=>h(D(t,e,n))).join(`,`))].join(`\r
2
+ `)}function k(e,t,n,r=`inandu-grid`){_(O(e,t,n),`${r}-export.csv`,`text/csv;charset=utf-8;`)}function A(e,t,n){let r=(e,t)=>{let n=t[e.field];return e.type===`number`&&typeof n==`number`&&Number.isFinite(n)?n:void 0},i=(e,t)=>{let i=r(e,t);return i===void 0?`<Cell><Data ss:Type="String">${g(D(e,t,n))}</Data></Cell>`:`<Cell><Data ss:Type="Number">${i}</Data></Cell>`},a=`<Row ss:StyleID="header">${t.map(e=>`<Cell><Data ss:Type="String">${g(E(e))}</Data></Cell>`).join(``)}</Row>`,o=e.map(e=>`<Row>${t.map(t=>i(t,e)).join(``)}</Row>`).join(``);return`<?xml version="1.0"?><?mso-application progid="Excel.Sheet"?><Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"><Styles><Style ss:ID="header"><Font ss:Bold="1"/></Style></Styles><Worksheet ss:Name="Sheet1"><Table>`+a+o+`</Table></Worksheet></Workbook>`}function j(e,t,n,r=`inandu-grid`){_(A(e,t,n),`${r}-export.xls`,`application/vnd.ms-excel`)}function M(e,t,n,r=`inandu-grid`){let i=t.map(e=>`<th>${g(E(e))}</th>`).join(``),a=e.map(e=>`<tr>${t.map(t=>`<td>${g(D(t,e,n))}</td>`).join(``)}</tr>`).join(``),o=`<!doctype html><html><head><meta charset="utf-8"><title>${g(r)}</title><style>table{border-collapse:collapse;width:100%}th,td{border:1px solid #333;padding:4px 8px;text-align:left}th{background:#eee}</style></head><body><table><thead><tr>${i}</tr></thead><tbody>${a}</tbody></table></body></html>`,s=window.open(``,`_blank`);s&&(s.document.write(o),s.document.close(),s.focus(),setTimeout(()=>s.print(),0))}async function N(e,t,n,r=`inandu-grid`){let{jsPDF:i}=await import(`jspdf`),a=t.map(E),o=new i({orientation:`landscape`}),s=o.internal.pageSize.getWidth()-20,c=o.internal.pageSize.getHeight()-10,l=s/(t.length||1),u=10,d=(e,t)=>{o.setFont(`helvetica`,t?`bold`:`normal`);let n=10;e.forEach(e=>{o.text(ne(o,e,l-4),n+2,u+6),n+=l}),u+=8};d(a,!0);for(let r of e)u+8>c&&(o.addPage(),u=10,d(a,!0)),d(t.map(e=>D(e,r,n)),!1);_(o.output(`blob`),`${r}-export.pdf`)}function ae(e,t,n){let r=typeof CSS<`u`&&CSS.escape?CSS.escape(t):te(t),i=Array.from(e.querySelectorAll(`td[data-field="${r}"]`)),a=e.querySelector(`th[data-field="${r}"]`),o=i[0]??a??e,s=getComputedStyle(o),c=document.createElement(`span`);c.style.cssText=`position:absolute;left:-9999px;top:-9999px;visibility:hidden;white-space:pre;pointer-events:none`,c.style.font=s.font||`${s.fontStyle} ${s.fontWeight} ${s.fontSize}/${s.lineHeight} ${s.fontFamily}`,c.style.letterSpacing=s.letterSpacing,document.body.appendChild(c);let l=(parseFloat(s.paddingLeft)||0)+(parseFloat(s.paddingRight)||0)+2,u=0;c.textContent=n||t,u=Math.max(u,c.offsetWidth+44);for(let e of i)c.textContent=(e.textContent??``).replace(/\s+/g,` `).trim(),u=Math.max(u,c.offsetWidth+l);return c.remove(),i.length||a?Math.ceil(u):0}var P={class:`inandu-grid-edit-cell`},F=[`aria-label`,`checked`],I=[`aria-label`,`type`,`value`],L={key:2,class:`inandu-grid-field-error`},oe=(0,e.defineComponent)({__name:`EditCell`,props:{column:{},value:{},error:{},t:{type:Function}},emits:[`change`],setup(t,{emit:n}){let r=t,i=n,a=(0,e.computed)(()=>r.column.type??`string`),o=(0,e.computed)(()=>r.t(`MsgEditCell`,{column:r.column.headerText??r.column.field})),s=(0,e.computed)(()=>typeof r.value==`string`?r.value:``);return(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`span`,P,[a.value===`boolean`?((0,e.openBlock)(),(0,e.createElementBlock)(`input`,{key:0,"aria-label":o.value,type:`checkbox`,checked:!!t.value,onChange:r[0]||=e=>i(`change`,e.target.checked)},null,40,F)):((0,e.openBlock)(),(0,e.createElementBlock)(`input`,{key:1,"aria-label":o.value,type:a.value===`date`?`date`:a.value===`number`?`number`:`text`,value:s.value,onInput:r[1]||=e=>i(`change`,e.target.value)},null,40,I)),t.error?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,L,(0,e.toDisplayString)(t.error),1)):(0,e.createCommentVNode)(``,!0)]))}}),R=(0,e.defineComponent)({name:`InanduGridRenderNodes`,props:{nodes:{type:null,default:null}},setup(e){return()=>e.nodes}}),z=[`data-row-index`],B={key:0},se=[`aria-label`,`title`],V={key:1},H=[`aria-label`],U=[`aria-label`,`checked`],ce=[`data-field`,`tabindex`,`onMousedown`,`onMouseenter`],le={key:3,class:`inandu-grid-row-actions`},ue=[`disabled`],de=[`disabled`],fe=[`disabled`],W=[`disabled`],pe={key:0,class:`inandu-grid-detail-row`},me=[`colspan`],G=(0,e.defineComponent)({__name:`DataRow`,props:{ctx:{},row:{},rowIndex:{},hasRowDragHandle:{type:Boolean,default:!1},isDragOverRow:{type:Boolean,default:!1},hasMasterDetail:{type:Boolean,default:!1},isRowExpanded:{type:Boolean,default:!1}},emits:[`rowDragStart`,`rowDragOver`,`rowDragLeave`,`rowDrop`,`toggleExpanded`],setup(t,{emit:n}){let r=t,i=n,a=(0,e.computed)(()=>r.ctx.isEditingRow(r.row)),o=(0,e.computed)(()=>r.isRowExpanded?r.ctx.t(`MsgCollapseDetail`):r.ctx.t(`MsgExpandDetail`));function s(e){r.hasRowDragHandle&&(e.preventDefault(),i(`rowDragOver`))}function c(e){r.hasRowDragHandle&&(e.preventDefault(),i(`rowDrop`))}function l(e){i(`rowDragStart`),e.dataTransfer?.setData(`text/plain`,`row`)}function u(e,t){r.ctx.cellRangeSelection&&r.ctx.onCellRangeMouseDown(e,r.rowIndex,t)}function d(e){r.ctx.cellRangeSelection&&r.ctx.onCellRangeMouseEnter(r.rowIndex,e)}return(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,null,[(0,e.createElementVNode)(`tr`,{"data-row-index":t.rowIndex,class:(0,e.normalizeClass)(t.isDragOverRow?`inandu-drag-over`:void 0),onDragover:s,onDragleave:r[6]||=e=>t.hasRowDragHandle&&i(`rowDragLeave`),onDrop:c},[t.hasMasterDetail?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,B,[(0,e.createElementVNode)(`button`,{type:`button`,class:`inandu-grid-detail-toggle`,"aria-label":o.value,title:o.value,onClick:r[0]||=e=>i(`toggleExpanded`)},(0,e.toDisplayString)(t.isRowExpanded?`▾`:`▸`),9,se)])):(0,e.createCommentVNode)(``,!0),t.hasRowDragHandle?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,V,[(0,e.createElementVNode)(`span`,{class:`inandu-grid-row-drag-handle`,"aria-label":t.ctx.t(`MsgDragRow`),draggable:`true`,onDragstart:l},`⋮⋮`,40,H)])):(0,e.createCommentVNode)(``,!0),t.ctx.selectable?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,{key:2,style:(0,e.normalizeStyle)(t.ctx.selectColumnStyle)},[(0,e.createElementVNode)(`input`,{"aria-label":t.ctx.t(`MsgSelectRow`,{index:t.rowIndex+1}),type:`checkbox`,checked:t.ctx.isRowSelected(t.row),onChange:r[1]||=e=>t.ctx.toggleRowSelection(t.row)},null,40,U)],4)):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.ctx.columns,(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`td`,{key:n.field,style:(0,e.normalizeStyle)(t.ctx.columnStyle(n)),"data-field":n.field,tabindex:t.ctx.clipboard?0:void 0,class:(0,e.normalizeClass)(t.ctx.cellRangeSelection&&t.ctx.isCellInRange(t.rowIndex,r)?`inandu-cell-range-selected`:void 0),onMousedown:e=>u(e,r),onMouseenter:e=>d(r)},[a.value&&n.editable?((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:0},[t.ctx.editorContent(n,t.row)===void 0?((0,e.openBlock)(),(0,e.createBlock)(oe,{key:1,column:n,value:t.ctx.rowDraft[n.field],error:t.ctx.fieldErrors[n.field],t:t.ctx.t,onChange:e=>t.ctx.setRowDraftValue(n.field,e)},null,8,[`column`,`value`,`error`,`t`,`onChange`])):((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(R),{key:0,nodes:t.ctx.editorContent(n,t.row)},null,8,[`nodes`]))],64)):((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(R),{key:1,nodes:t.ctx.cellContent(n,t.row)},null,8,[`nodes`]))],46,ce))),128)),t.ctx.hasRowActions?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,le,[a.value?((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:0},[(0,e.createElementVNode)(`button`,{type:`button`,disabled:t.ctx.isValidating,onClick:r[2]||=e=>t.ctx.saveRow(t.row)},(0,e.toDisplayString)(t.ctx.t(`MsgSaveRow`)),9,ue),(0,e.createElementVNode)(`button`,{type:`button`,disabled:t.ctx.isValidating,onClick:r[3]||=e=>t.ctx.cancelRowEdit()},(0,e.toDisplayString)(t.ctx.t(`MsgCancelRowEdit`)),9,de)],64)):((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:1},[t.ctx.editableColumnCount>0?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:0,type:`button`,disabled:t.ctx.isAnotherRowEditing(t.row),onClick:r[4]||=e=>t.ctx.startEditingRow(t.row)},(0,e.toDisplayString)(t.ctx.t(`MsgEditRow`)),9,fe)):(0,e.createCommentVNode)(``,!0),t.ctx.deletable?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:1,type:`button`,disabled:t.ctx.isAnotherRowEditing(t.row),onClick:r[5]||=e=>t.ctx.deleteRow(t.row)},(0,e.toDisplayString)(t.ctx.t(`MsgDeleteRow`)),9,W)):(0,e.createCommentVNode)(``,!0)],64))])):(0,e.createCommentVNode)(``,!0)],42,z),t.hasMasterDetail&&t.isRowExpanded?((0,e.openBlock)(),(0,e.createElementBlock)(`tr`,pe,[(0,e.createElementVNode)(`td`,{colspan:t.ctx.columns.length+t.ctx.extraColumnCount},[(0,e.createVNode)((0,e.unref)(R),{nodes:t.ctx.detailContent(t.row)},null,8,[`nodes`])],8,me)])):(0,e.createCommentVNode)(``,!0)],64))}}),he={key:0,class:`inandu-grid-filter-range`},ge=[`aria-label`,`value`],K=[`aria-label`,`value`],_e={key:1,class:`inandu-grid-filter-range`},ve=[`aria-label`,`value`],q=[`aria-label`,`value`],J=[`aria-label`,`value`],ye={value:``},be=[`aria-label`,`value`],Y=(0,e.defineComponent)({__name:`FilterControl`,props:{column:{},value:{},t:{type:Function}},emits:[`change`],setup(t,{emit:n}){let r=t,i=n,a=(0,e.computed)(()=>r.column.type??`string`),o=(0,e.computed)(()=>r.t(`MsgFilterColumn`,{column:r.column.headerText??r.column.field}));function s(e){return e.target.value}return(n,r)=>a.value===`number`?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,he,[(0,e.createElementVNode)(`input`,{"aria-label":`${o.value} ${t.t(`MsgFilterMin`)}`,type:`number`,value:t.value?.min??``,onInput:r[0]||=e=>i(`change`,{min:s(e)})},null,40,ge),(0,e.createElementVNode)(`input`,{"aria-label":`${o.value} ${t.t(`MsgFilterMax`)}`,type:`number`,value:t.value?.max??``,onInput:r[1]||=e=>i(`change`,{max:s(e)})},null,40,K)])):a.value===`date`?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,_e,[(0,e.createElementVNode)(`input`,{"aria-label":`${o.value} ${t.t(`MsgFilterFrom`)}`,type:`date`,value:t.value?.from??``,onInput:r[2]||=e=>i(`change`,{from:s(e)})},null,40,ve),(0,e.createElementVNode)(`input`,{"aria-label":`${o.value} ${t.t(`MsgFilterTo`)}`,type:`date`,value:t.value?.to??``,onInput:r[3]||=e=>i(`change`,{to:s(e)})},null,40,q)])):a.value===`boolean`?((0,e.openBlock)(),(0,e.createElementBlock)(`select`,{key:2,"aria-label":o.value,value:t.value?.bool??``,onChange:r[4]||=e=>i(`change`,{bool:s(e)})},[(0,e.createElementVNode)(`option`,ye,(0,e.toDisplayString)(t.t(`MsgAll`)),1),r[6]||=(0,e.createElementVNode)(`option`,{value:`true`},`true`,-1),r[7]||=(0,e.createElementVNode)(`option`,{value:`false`},`false`,-1)],40,J)):((0,e.openBlock)(),(0,e.createElementBlock)(`input`,{key:3,"aria-label":o.value,type:`text`,value:t.value?.text??``,onInput:r[5]||=e=>i(`change`,{text:s(e)})},null,40,be))}}),X={class:`inandu-grid-vue`},xe={class:`inandu-grid-search`},Se=[`aria-label`,`placeholder`,`value`],Ce={class:`inandu-grid-toolbar`},we={key:3,class:`inandu-grid-column-toggle`},Te=[`aria-label`,`checked`,`onChange`],Ee={key:0,class:`inandu-grid-group-by`},De=[`value`],Oe={value:``},ke=[`value`],Z={key:0},Q={key:1},Ae=[`aria-label`,`checked`,`indeterminate`],je=[`data-field`,`draggable`,`aria-label`,`onDragstart`,`onDragover`,`onDragleave`,`onDrop`,`onClick`],Me={key:0,class:`inandu-grid-sort-priority`},Ne=[`onMousedown`,`onDblclick`],Pe={key:3},Fe={class:`inandu-grid-filter-row`},Ie={key:0},Le={key:1},Re={key:3},ze={key:0,class:`inandu-grid-new-row`},Be={key:1,class:`inandu-grid-row-actions`},Ve=[`disabled`],He=[`disabled`],Ue={key:1},We=[`colspan`],Ge=[`aria-level`,`aria-expanded`],Ke=[`aria-label`,`checked`,`onChange`],qe=[`aria-label`,`title`,`onClick`],Je={key:1,class:`inandu-grid-tree-toggle-spacer`,"aria-hidden":`true`},Ye={key:1,class:`inandu-grid-row-actions`},Xe={class:`inandu-grid-group-row`},Ze=[`colspan`],Qe={key:0,class:`inandu-grid-group-aggregates`},$e={key:0,"aria-hidden":`true`},et=[`colspan`],tt={key:1,"aria-hidden":`true`},nt=[`colspan`],rt={key:0},it={class:`inandu-grid-totals-row`},at={key:0},ot={key:1},st={key:3},ct={key:1,class:`inandu-grid-pagination`},lt=[`disabled`],ut=[`disabled`],dt=(0,e.defineComponent)({name:`InanduGrid`,__name:`InanduGrid`,props:{rows:{},columns:{},locale:{default:`en`},lang:{},pageSize:{default:0},selectable:{type:Boolean},exportable:{type:Boolean},exportFilenameBase:{default:`inandu-grid`},deletable:{type:Boolean},deleteConfirmMessage:{},bulkDeleteConfirmMessage:{},creatable:{type:Boolean},clipboard:{type:Boolean},cellRangeSelection:{type:Boolean},multiRange:{type:Boolean},columnToggle:{type:Boolean},rowReorder:{type:Boolean},treeChildrenKey:{},treeDefaultExpanded:{default:`none`},renderDetail:{},singleDetailExpand:{type:Boolean},extraRowFilter:{},serverSide:{},virtualScroll:{type:Boolean},virtualRowHeight:{default:40},height:{default:400},overscan:{default:4},autosize:{type:Boolean}},emits:[`queryChange`,`selectionChange`,`rowSave`,`rowCreate`,`rowDelete`,`rowsDelete`,`cellsPaste`,`cellRangeChange`,`cellRangesChange`,`rowOrderChange`],setup(t,{expose:n,emit:r}){function i(e,t){return{minRow:Math.min(e.row,t.row),maxRow:Math.max(e.row,t.row),minCol:Math.min(e.col,t.col),maxCol:Math.max(e.col,t.col)}}function a(e,t,n){return t>=e.minRow&&t<=e.maxRow&&n>=e.minCol&&n<=e.maxCol}let s=t,c=r,l=(0,e.useSlots)(),u=T(()=>({rows:s.rows,columns:s.columns,locale:s.locale,lang:s.lang,pageSize:s.pageSize,selectable:s.selectable,deleteConfirmMessage:s.deleteConfirmMessage,bulkDeleteConfirmMessage:s.bulkDeleteConfirmMessage,onRowSave:e=>c(`rowSave`,e),onRowCreate:e=>c(`rowCreate`,e),onRowDelete:e=>c(`rowDelete`,e),onRowsDelete:e=>c(`rowsDelete`,e),onCellsPaste:e=>c(`cellsPaste`,e),onRowOrderChange:e=>c(`rowOrderChange`,e),treeChildrenKey:s.treeChildrenKey,treeDefaultExpanded:s.treeDefaultExpanded,singleDetailExpand:s.singleDetailExpand,extraRowFilter:s.extraRowFilter,virtualScroll:s.virtualScroll,serverSide:s.serverSide,onQueryChange:e=>c(`queryChange`,e)}));n({grid:u});let d=(0,e.computed)(()=>re(s.lang??s.locale)),p=(0,e.shallowRef)(void 0),m=(0,e.shallowRef)(void 0),ee=(0,e.shallowRef)(0),te=(0,e.shallowRef)(null);(0,e.watch)(()=>u.selectedRows,e=>c(`selectionChange`,Array.from(e)),{immediate:!0});let h;function g(e,t){e.preventDefault(),h?.();let n=e.clientX,r=u.effectiveWidth(t),i=e=>u.setColumnWidth(t,r+(e.clientX-n)),a=()=>h?.();window.addEventListener(`mousemove`,i),window.addEventListener(`mouseup`,a),h=()=>{window.removeEventListener(`mousemove`,i),window.removeEventListener(`mouseup`,a),h=void 0}}function ne(e,t){if(!s.autosize||!te.value)return;e.preventDefault(),e.stopPropagation();let n=ae(te.value,t.field,t.headerText??t.field);n>0&&u.setColumnWidth(t.field,Math.min(600,n))}let _=(0,e.computed)(()=>s.cellRangeSelection&&!u.groupByField&&!u.hasVirtualScroll&&!u.hasTreeData),v=(0,e.shallowRef)(void 0),y=(0,e.shallowRef)(void 0),b=(0,e.shallowRef)([]),x=!1,S=(0,e.computed)(()=>v.value&&y.value?i(v.value,y.value):void 0),C=(0,e.computed)(()=>S.value?[...b.value,S.value]:b.value);function w(e,t){return C.value.some(n=>a(n,e,t))}function ie(e){return{rows:u.visibleRows.slice(e.minRow,e.maxRow+1),fields:u.visibleColumns.slice(e.minCol,e.maxCol+1).map(e=>e.field)}}(0,e.watch)([_,C,()=>u.visibleRows,()=>u.visibleColumns],()=>{_.value&&(c(`cellRangeChange`,S.value?ie(S.value):void 0),c(`cellRangesChange`,C.value.map(ie)))},{immediate:!0});function E(e,t,n){e.button===0&&(x=!0,s.multiRange&&(e.ctrlKey||e.metaKey)&&!e.shiftKey?(S.value&&(b.value=[...b.value,S.value]),v.value={row:t,col:n}):(!e.shiftKey||!v.value)&&(b.value=[],v.value={row:t,col:n}),y.value={row:t,col:n})}function D(e,t){x&&(y.value={row:e,col:t})}let O=()=>{x=!1};(0,e.watch)(_,(e,t,n)=>{e&&(document.addEventListener(`mouseup`,O),n(()=>document.removeEventListener(`mouseup`,O)))},{immediate:!0}),(0,e.onBeforeUnmount)(()=>h?.());function A(e){let t=u.visibleRows.slice(e.minRow,e.maxRow+1),n=u.visibleColumns.slice(e.minCol,e.maxCol+1);return t.map(e=>n.map(t=>o(e[t.field],t.type??`string`,t.format??``,s.locale)).join(` `)).join(`
3
+ `)}let P=(0,e.computed)(()=>u.visibleColumns.filter(e=>e.aggregate)),F=(0,e.computed)(()=>s.serverSide?[]:u.visibleColumns.filter(e=>e.groupable!==!1)),I=(0,e.computed)(()=>u.groups?u.groups.length===0:u.visibleRows.length===0),L=(0,e.computed)(()=>u.editableColumns.length>0||s.deletable||s.creatable),z=(0,e.computed)(()=>s.rowReorder&&!u.groupByField&&!u.hasVirtualScroll),B=(0,e.computed)(()=>(!!l.detail||!!s.renderDetail)&&!u.groupByField&&!u.hasVirtualScroll),se=(0,e.computed)(()=>+!!B.value+ +!!z.value+ +!!s.selectable+ +!!L.value),V=(0,e.computed)(()=>u.visibleColumns.length+se.value),H=(0,e.computed)(()=>u.hasVirtualScroll?Math.max(0,Math.floor(ee.value/s.virtualRowHeight)-s.overscan):0),U=(0,e.computed)(()=>u.hasVirtualScroll?Math.min(u.visibleRows.length,Math.ceil((ee.value+s.height)/s.virtualRowHeight)+s.overscan):u.visibleRows.length),ce=(0,e.computed)(()=>u.hasVirtualScroll?u.visibleRows.slice(H.value,U.value):u.visibleRows),le=(0,e.computed)(()=>H.value*s.virtualRowHeight),ue=(0,e.computed)(()=>(u.visibleRows.length-U.value)*s.virtualRowHeight);function de(e){u.hasVirtualScroll&&(ee.value=e.currentTarget.scrollTop)}function fe(e,t){u.setFilterValue(e,{...u.filterValues[e],...t})}function W(e){let t=e.width!==void 0||u.isColumnResized(e.field)?{width:`${u.effectiveWidth(e.field)}px`}:{},n=u.columnPinnedSide(e.field);return n===`left`?{...t,position:`sticky`,left:`${u.stickyOffset(e.field)}px`,zIndex:1}:n===`right`?{...t,position:`sticky`,right:`${u.stickyOffsetRight(e.field)}px`,zIndex:1}:t}function pe(e,t){u.onColumnDragStart(t),e.dataTransfer?.setData(`text/plain`,t)}function me(e,t){e.preventDefault(),p.value=t}function he(e){p.value===e&&(p.value=void 0)}function ge(e,t){e.preventDefault(),p.value=void 0,u.onColumnDrop(t)}let K=(0,e.computed)(()=>s.selectable?{position:`sticky`,left:`0px`,zIndex:1}:void 0);function _e(e,t){let n=e.aggregate,r=t[e.field];if(!n||r===void 0)return``;let i=n===`count`?String(r):o(r,`number`,e.format??``,s.locale);return`${e.headerText??e.field} ${f[n]}: ${i}`}function ve(e){let t={title:e.headerText??e.field,field:e.field},n=l[`header-${e.field}`];return n?n(t):e.renderHeader?e.renderHeader(t):t.title}function q(e,t){let n={value:t[e.field],row:t,field:e.field},r=l[`cell-${e.field}`];return r?r(n):e.renderCell?e.renderCell(n):o(t[e.field],e.type??`string`,e.format??``,s.locale)}function J(e,t){let n=l[`editor-${e.field}`];if(!n&&!e.renderEditor)return;let r={value:u.rowDraft[e.field],row:t,field:e.field,setValue:t=>u.setRowDraftValue(e.field,t),error:u.fieldErrors[e.field]};return n?n(r):e.renderEditor(r)}function ye(e){return l.detail?l.detail({row:e}):s.renderDetail?.(e)}function be(e,t){u.toggleColumnVisibility(t),e.target.checked=!u.isColumnHidden(t)}function dt(e){if(!s.clipboard||!(e.ctrlKey||e.metaKey))return;let t=e.key.toLowerCase();if(t!==`c`&&t!==`v`)return;let n=e.target;if(n instanceof HTMLInputElement||n instanceof HTMLTextAreaElement||n instanceof HTMLSelectElement)return;let r=n.closest(`td[data-field]`),i=r?.getAttribute(`data-field`),a=r?.closest(`tr`)?.getAttribute(`data-row-index`);if(!r||!i||a==null)return;let o=Number(a);if(e.preventDefault(),t===`c`){let e=S.value,t=_.value&&e&&(e.minRow!==e.maxRow||e.minCol!==e.maxCol)?A(e):void 0;navigator.clipboard?.writeText(t??u.copyCellText(o,i))?.catch(()=>void 0)}else navigator.clipboard?.readText()?.then(e=>u.pasteAt(o,i,e)).catch(()=>void 0)}function $(e,t){return e.id==null?t:String(e.id)}let ft=(0,e.computed)(()=>({columns:u.visibleColumns,t:d.value,selectable:s.selectable,selectColumnStyle:K.value,columnStyle:W,isRowSelected:u.isRowSelected,toggleRowSelection:u.toggleRowSelection,hasRowActions:L.value,editableColumnCount:u.editableColumns.length,isEditingRow:u.isEditingRow,isAnotherRowEditing:u.isAnotherRowEditing,startEditingRow:u.startEditingRow,cancelRowEdit:u.cancelRowEdit,saveRow:e=>void u.saveRow(e),deleteRow:u.deleteRow,deletable:s.deletable,rowDraft:u.rowDraft,fieldErrors:u.fieldErrors,isValidating:u.isValidating,setRowDraftValue:u.setRowDraftValue,cellContent:q,editorContent:J,detailContent:ye,clipboard:s.clipboard,cellRangeSelection:_.value,isCellInRange:w,onCellRangeMouseDown:E,onCellRangeMouseEnter:D,extraColumnCount:se.value}));return(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,X,[(0,e.createElementVNode)(`div`,xe,[(0,e.createElementVNode)(`input`,{"aria-label":d.value(`MsgFilterPlaceholder`),type:`text`,placeholder:`${d.value(`MsgFilterPlaceholder`)}…`,value:(0,e.unref)(u).filterQuery,onInput:r[0]||=t=>(0,e.unref)(u).setFilterQuery(t.target.value)},null,40,Se)]),(0,e.createElementVNode)(`div`,Ce,[t.exportable?((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:0},[(0,e.createElementVNode)(`button`,{type:`button`,onClick:r[1]||=n=>(0,e.unref)(k)((0,e.unref)(u).exportRows,(0,e.unref)(u).visibleColumns,t.locale,t.exportFilenameBase)},(0,e.toDisplayString)(d.value(`MsgExportCsv`)),1),(0,e.createElementVNode)(`button`,{type:`button`,onClick:r[2]||=n=>(0,e.unref)(j)((0,e.unref)(u).exportRows,(0,e.unref)(u).visibleColumns,t.locale,t.exportFilenameBase)},(0,e.toDisplayString)(d.value(`MsgExportExcel`)),1),(0,e.createElementVNode)(`button`,{type:`button`,onClick:r[3]||=n=>void(0,e.unref)(N)((0,e.unref)(u).exportRows,(0,e.unref)(u).visibleColumns,t.locale,t.exportFilenameBase)},(0,e.toDisplayString)(d.value(`MsgExportPdf`)),1),(0,e.createElementVNode)(`button`,{type:`button`,onClick:r[4]||=n=>(0,e.unref)(M)((0,e.unref)(u).exportRows,(0,e.unref)(u).visibleColumns,t.locale,t.exportFilenameBase)},(0,e.toDisplayString)(d.value(`MsgPrint`)),1)],64)):(0,e.createCommentVNode)(``,!0),t.creatable&&(0,e.unref)(u).editableColumns.length>0&&!(0,e.unref)(u).isAddingRow?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:1,type:`button`,onClick:r[5]||=t=>(0,e.unref)(u).startAddingRow()},(0,e.toDisplayString)(d.value(`MsgAddRow`)),1)):(0,e.createCommentVNode)(``,!0),t.selectable&&t.deletable&&(0,e.unref)(u).selectedRows.size>0?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:2,type:`button`,onClick:r[6]||=t=>(0,e.unref)(u).deleteSelectedRows()},(0,e.toDisplayString)(d.value(`MsgDeleteSelected`,{count:(0,e.unref)(u).selectedRows.size})),1)):(0,e.createCommentVNode)(``,!0),t.columnToggle?((0,e.openBlock)(),(0,e.createElementBlock)(`details`,we,[(0,e.createElementVNode)(`summary`,null,(0,e.toDisplayString)(d.value(`MsgToggleColumns`)),1),(0,e.createElementVNode)(`ul`,null,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)((0,e.unref)(u).hideableColumns,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`li`,{key:t.field},[(0,e.createElementVNode)(`label`,null,[(0,e.createElementVNode)(`input`,{"aria-label":d.value(`MsgToggleColumn`,{column:t.headerText??t.field}),type:`checkbox`,checked:!(0,e.unref)(u).isColumnHidden(t.field),onChange:e=>be(e,t.field)},null,40,Te),(0,e.createTextVNode)(` `+(0,e.toDisplayString)(t.headerText??t.field),1)])]))),128))])])):(0,e.createCommentVNode)(``,!0)]),F.value.length>0?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Ee,[(0,e.createElementVNode)(`label`,null,[(0,e.createTextVNode)((0,e.toDisplayString)((0,e.unref)(u).groupByField?d.value(`MsgGroupedBy`,{column:F.value.find(t=>t.field===(0,e.unref)(u).groupByField)?.headerText??(0,e.unref)(u).groupByField}):d.value(`MsgGroupByHint`))+` `,1),(0,e.createElementVNode)(`select`,{"aria-label":`Group by`,value:(0,e.unref)(u).groupByField??``,onChange:r[7]||=t=>(0,e.unref)(u).setGroupByField(t.target.value||void 0)},[(0,e.createElementVNode)(`option`,Oe,(0,e.toDisplayString)(d.value(`MsgCancelGrouping`)),1),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(F.value,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`option`,{key:t.field,value:t.field},(0,e.toDisplayString)(t.headerText??t.field),9,ke))),128))],40,De)])])):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)((0,e.unref)(u).hasVirtualScroll?`inandu-grid-viewport`:void 0),style:(0,e.normalizeStyle)((0,e.unref)(u).hasVirtualScroll?{height:`${t.height}px`,overflow:`auto`}:void 0),onScroll:de},[(0,e.createElementVNode)(`table`,{ref_key:`tableRef`,ref:te,class:`inandu-grid`,onKeydown:dt},[(0,e.createElementVNode)(`thead`,null,[(0,e.createElementVNode)(`tr`,null,[B.value?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,Z)):(0,e.createCommentVNode)(``,!0),z.value?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,Q)):(0,e.createCommentVNode)(``,!0),t.selectable?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,{key:2,style:(0,e.normalizeStyle)(K.value)},[(0,e.createElementVNode)(`input`,{"aria-label":d.value(`MsgSelectAll`),type:`checkbox`,checked:(0,e.unref)(u).allSelected,indeterminate:(0,e.unref)(u).someSelected,onChange:r[8]||=t=>(0,e.unref)(u).toggleSelectAll()},null,40,Ae)],4)):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)((0,e.unref)(u).visibleColumns,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`th`,{key:t.field,"data-field":t.field,style:(0,e.normalizeStyle)(W(t)),class:(0,e.normalizeClass)(p.value===t.field?`inandu-drag-over`:void 0),draggable:t.reorder!==!1,"aria-label":d.value(`MsgSortBy`,{column:t.headerText??t.field}),onDragstart:e=>pe(e,t.field),onDragover:e=>me(e,t.field),onDragleave:e=>he(t.field),onDrop:e=>ge(e,t.field),onClick:n=>(0,e.unref)(u).toggleSort(t.field,n.shiftKey)},[(0,e.createVNode)((0,e.unref)(R),{nodes:ve(t)},null,8,[`nodes`]),(0,e.createTextVNode)((0,e.toDisplayString)((0,e.unref)(u).sortDirectionFor(t.field)?(0,e.unref)(u).sortDirectionFor(t.field)===`asc`?` ▲`:` ▼`:``),1),(0,e.unref)(u).sortPriorityFor(t.field)===void 0?(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createElementBlock)(`sup`,Me,(0,e.toDisplayString)((0,e.unref)(u).sortPriorityFor(t.field)),1)),(0,e.createElementVNode)(`span`,{class:`inandu-grid-resize-handle`,draggable:`false`,onMousedown:e=>g(e,t.field),onDblclick:e=>ne(e,t),onClick:r[9]||=(0,e.withModifiers)(()=>{},[`stop`])},null,40,Ne)],46,je))),128)),L.value?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,Pe)):(0,e.createCommentVNode)(``,!0)]),(0,e.createElementVNode)(`tr`,Fe,[B.value?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,Ie)):(0,e.createCommentVNode)(``,!0),z.value?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,Le)):(0,e.createCommentVNode)(``,!0),t.selectable?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,{key:2,style:(0,e.normalizeStyle)(K.value)},null,4)):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)((0,e.unref)(u).visibleColumns,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`th`,{key:t.field,style:(0,e.normalizeStyle)(W(t))},[(0,e.createVNode)(Y,{column:t,value:(0,e.unref)(u).filterValues[t.field],t:d.value,onChange:e=>fe(t.field,e)},null,8,[`column`,`value`,`t`,`onChange`])],4))),128)),L.value?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,Re)):(0,e.createCommentVNode)(``,!0)])]),(0,e.createElementVNode)(`tbody`,null,[(0,e.unref)(u).isAddingRow?((0,e.openBlock)(),(0,e.createElementBlock)(`tr`,ze,[t.selectable?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,{key:0,style:(0,e.normalizeStyle)(K.value)},null,4)):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)((0,e.unref)(u).visibleColumns,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`td`,{key:t.field,style:(0,e.normalizeStyle)(W(t))},[t.editable?((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:0},[J(t,{})===void 0?((0,e.openBlock)(),(0,e.createBlock)(oe,{key:1,column:t,value:(0,e.unref)(u).rowDraft[t.field],error:(0,e.unref)(u).fieldErrors[t.field],t:d.value,onChange:n=>(0,e.unref)(u).setRowDraftValue(t.field,n)},null,8,[`column`,`value`,`error`,`t`,`onChange`])):((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(R),{key:0,nodes:J(t,{})},null,8,[`nodes`]))],64)):(0,e.createCommentVNode)(``,!0)],4))),128)),L.value?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,Be,[(0,e.createElementVNode)(`button`,{type:`button`,disabled:(0,e.unref)(u).isValidating,onClick:r[10]||=t=>void(0,e.unref)(u).saveNewRow()},(0,e.toDisplayString)(d.value(`MsgSaveRow`)),9,Ve),(0,e.createElementVNode)(`button`,{type:`button`,disabled:(0,e.unref)(u).isValidating,onClick:r[11]||=t=>(0,e.unref)(u).cancelAddRow()},(0,e.toDisplayString)(d.value(`MsgCancelRowEdit`)),9,He)])):(0,e.createCommentVNode)(``,!0)])):(0,e.createCommentVNode)(``,!0),I.value?((0,e.openBlock)(),(0,e.createElementBlock)(`tr`,Ue,[(0,e.createElementVNode)(`td`,{colspan:V.value},(0,e.toDisplayString)(d.value(`MsgNoData`)),9,We)])):(0,e.unref)(u).hasTreeData?((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,{key:2},(0,e.renderList)((0,e.unref)(u).treeRows,(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`tr`,{key:$(n.row,r),"aria-level":n.depth+1,"aria-expanded":n.expandable?(0,e.unref)(u).isTreeRowExpanded(n.row):void 0},[t.selectable?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,{key:0,style:(0,e.normalizeStyle)(K.value)},[(0,e.createElementVNode)(`input`,{"aria-label":d.value(`MsgSelectRow`,{index:r+1}),type:`checkbox`,checked:(0,e.unref)(u).isRowSelected(n.row),onChange:t=>(0,e.unref)(u).toggleRowSelection(n.row)},null,40,Ke)],4)):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)((0,e.unref)(u).visibleColumns,(t,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`td`,{key:t.field,style:(0,e.normalizeStyle)(W(t))},[r===0?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,{key:0,class:`inandu-grid-tree-cell`,style:(0,e.normalizeStyle)({paddingInlineStart:`${n.depth*16}px`})},[n.expandable?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:0,type:`button`,class:`inandu-grid-tree-toggle`,"aria-label":(0,e.unref)(u).isTreeRowExpanded(n.row)?d.value(`MsgCollapseDetail`):d.value(`MsgExpandDetail`),title:(0,e.unref)(u).isTreeRowExpanded(n.row)?d.value(`MsgCollapseDetail`):d.value(`MsgExpandDetail`),onClick:t=>(0,e.unref)(u).toggleTreeRow(n.row)},(0,e.toDisplayString)((0,e.unref)(u).isTreeRowExpanded(n.row)?`▾`:`▸`),9,qe)):((0,e.openBlock)(),(0,e.createElementBlock)(`span`,Je)),(0,e.createVNode)((0,e.unref)(R),{nodes:q(t,n.row)},null,8,[`nodes`])],4)):((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(R),{key:1,nodes:q(t,n.row)},null,8,[`nodes`]))],4))),128)),L.value?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,Ye)):(0,e.createCommentVNode)(``,!0)],8,Ge))),128)):(0,e.unref)(u).groups?((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,{key:3},(0,e.renderList)((0,e.unref)(u).groups,t=>((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:t.key},[(0,e.createElementVNode)(`tr`,Xe,[(0,e.createElementVNode)(`td`,{colspan:V.value},[(0,e.createElementVNode)(`strong`,null,(0,e.toDisplayString)(t.key),1),(0,e.createTextVNode)(` (`+(0,e.toDisplayString)(t.rows.length)+`) `,1),P.value.length>0?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,Qe,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(P.value,n=>((0,e.openBlock)(),(0,e.createElementBlock)(`span`,{key:n.field},` · `+(0,e.toDisplayString)(_e(n,t.aggregates)),1))),128))])):(0,e.createCommentVNode)(``,!0)],8,Ze)]),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.rows,(n,r)=>((0,e.openBlock)(),(0,e.createBlock)(G,{key:$(n,`${t.key}:${r}`),ctx:ft.value,row:n,"row-index":r},null,8,[`ctx`,`row`,`row-index`]))),128))],64))),128)):((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:4},[(0,e.unref)(u).hasVirtualScroll&&le.value>0?((0,e.openBlock)(),(0,e.createElementBlock)(`tr`,$e,[(0,e.createElementVNode)(`td`,{style:(0,e.normalizeStyle)({height:`${le.value}px`,padding:0,border:`none`}),colspan:V.value},null,12,et)])):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(ce.value,(t,n)=>((0,e.openBlock)(),(0,e.createBlock)(G,{key:$(t,H.value+n),ctx:ft.value,row:t,"row-index":H.value+n,"has-row-drag-handle":z.value,"is-drag-over-row":(0,e.unref)(u).draggingRow!==void 0&&m.value===t,"has-master-detail":B.value,"is-row-expanded":(0,e.unref)(u).isRowExpanded(t),onRowDragStart:n=>(0,e.unref)(u).onRowDragStart(t),onRowDragOver:e=>m.value=t,onRowDragLeave:e=>m.value===t&&(m.value=void 0),onRowDrop:n=>(0,e.unref)(u).onRowDrop(t),onToggleExpanded:n=>(0,e.unref)(u).toggleRowExpanded(t)},null,8,[`ctx`,`row`,`row-index`,`has-row-drag-handle`,`is-drag-over-row`,`has-master-detail`,`is-row-expanded`,`onRowDragStart`,`onRowDragOver`,`onRowDragLeave`,`onRowDrop`,`onToggleExpanded`]))),128)),(0,e.unref)(u).hasVirtualScroll&&ue.value>0?((0,e.openBlock)(),(0,e.createElementBlock)(`tr`,tt,[(0,e.createElementVNode)(`td`,{style:(0,e.normalizeStyle)({height:`${ue.value}px`,padding:0,border:`none`}),colspan:V.value},null,12,nt)])):(0,e.createCommentVNode)(``,!0)],64))]),P.value.length>0&&!(0,e.unref)(u).hasVirtualScroll?((0,e.openBlock)(),(0,e.createElementBlock)(`tfoot`,rt,[(0,e.createElementVNode)(`tr`,it,[B.value?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,at)):(0,e.createCommentVNode)(``,!0),z.value?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,ot)):(0,e.createCommentVNode)(``,!0),t.selectable?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,{key:2,style:(0,e.normalizeStyle)(K.value)},null,4)):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)((0,e.unref)(u).visibleColumns,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`td`,{key:t.field,style:(0,e.normalizeStyle)(W(t))},(0,e.toDisplayString)(t.aggregate?_e(t,(0,e.unref)(u).totals):``),5))),128)),L.value?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,st)):(0,e.createCommentVNode)(``,!0)])])):(0,e.createCommentVNode)(``,!0)],544)],38),t.pageSize>0&&!(0,e.unref)(u).groupByField&&!(0,e.unref)(u).hasVirtualScroll?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,ct,[(0,e.createElementVNode)(`button`,{type:`button`,disabled:(0,e.unref)(u).page===0,onClick:r[12]||=t=>(0,e.unref)(u).setPage((0,e.unref)(u).page-1)},`‹ `+(0,e.toDisplayString)(d.value(`MsgPreviousPage`)),9,lt),(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(d.value(`MsgPageOf`,{page:(0,e.unref)(u).page+1,total:(0,e.unref)(u).pageCount}))+` (`+(0,e.toDisplayString)((0,e.unref)(u).filteredRowCount)+`)`,1),(0,e.createElementVNode)(`button`,{type:`button`,disabled:(0,e.unref)(u).page>=(0,e.unref)(u).pageCount-1,onClick:r[13]||=t=>(0,e.unref)(u).setPage((0,e.unref)(u).page+1)},(0,e.toDisplayString)(d.value(`MsgNextPage`))+` ›`,9,ut)])):(0,e.createCommentVNode)(``,!0)]))}});function $(e,t={}){let n=new URLSearchParams;n.set(`page`,String(e.page+1)),e.pageSize>0&&n.set(`pageSize`,String(e.pageSize)),e.sortCriteria.length>0&&n.set(`sort`,e.sortCriteria.map(e=>(e.direction===`desc`?`-`:``)+e.field).join(`,`));let r=e.filterQuery.trim();r&&n.set(`q`,r);for(let[t,r]of Object.entries(e.filterValues))u(r)&&(r.values&&r.values.length>0?n.set(`${t}_in`,r.values.join(`,`)):(r.text&&n.set(`${t}_contains`,r.text),r.min&&n.set(`${t}_gte`,r.min),r.max&&n.set(`${t}_lte`,r.max),r.from&&n.set(`${t}_gte`,r.from),r.to&&n.set(`${t}_lte`,r.to),(r.bool===`true`||r.bool===`false`)&&n.set(`${t}_eq`,r.bool)));for(let[e,r]of Object.entries(t.extraParams??{}))n.set(e,r);return n}function ft(t){let n=(0,e.shallowRef)(void 0),r=(0,e.shallowRef)([]),i=(0,e.shallowRef)(0),a=(0,e.shallowRef)(!1),o=(0,e.shallowRef)(void 0),s=(0,e.shallowRef)(0),c=!1,l;function u(e){l?.();let n=new AbortController,s=async()=>{u(!0),o.value=void 0;try{let a=$(e,{extraParams:t.extraParams}).toString(),o=t.url+(t.url.includes(`?`)?`&`:`?`)+a,s={...t.init,signal:n.signal},c=await(t.fetcher??fetch)(o,s);if(!c.ok)throw Error(`Request failed: ${c.status} ${c.statusText}`);let l=await c.json();if(n.signal.aborted)return;r.value=l.data??[],i.value=l.total??0}catch(e){if(n.signal.aborted)return;o.value=e instanceof Error?e:Error(String(e))}finally{n.signal.aborted||u(!1)}};function u(e){a.value=e}let d=c?t.debounceMs??200:0;c=!0;let f=setTimeout(s,d);l=()=>{clearTimeout(f),n.abort()}}return(0,e.watch)([n,s],()=>{n.value&&u(n.value)}),(0,e.onScopeDispose)(()=>l?.(),!0),{rows:r,total:i,loading:a,error:o,setQuery:e=>{n.value=e},reload:()=>{s.value+=1}}}exports.AGGREGATE_SYMBOLS=f,exports.INANDU_GRID_TRANSLATIONS=C,exports.InanduGrid=dt,exports.buildCsv=O,exports.buildExcelXml=A,exports.buildInanduGridQuery=$,exports.compareCellValues=s,exports.computeGroupAggregates=p,exports.createTranslator=re,exports.en=v,exports.es=y,exports.exportCsv=k,exports.exportExcel=j,exports.exportPdf=N,exports.formatCellValue=o,exports.fr=b,exports.interpolate=w,exports.it=x,exports.matchesColumnFilter=d,exports.measureColumnContentWidth=ae,exports.printTable=M,exports.useInanduGrid=T,exports.useInanduGridServer=ft,exports.zh=S;