@inandu-solutions/grid-vue 0.2.3 → 0.3.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
@@ -3,8 +3,12 @@
3
3
  **A lightweight Vue 3 data grid with the essentials other grids gate behind a paid enterprise
4
4
  licence — row grouping, aggregates, inline editing and Excel-compatible export — fully MIT.** The
5
5
  Vue port of [`@inandu-solutions/grid-angular`](https://github.com/inandusolutions/inandu-grid),
6
- sharing its core, kept in sync by hand (and with its React sibling,
7
- [`@inandu-solutions/grid-react`](https://github.com/inandusolutions/inandu-grid-react)).
6
+ on the same framework-agnostic core
7
+ ([`@inandu-solutions/grid-core`](https://github.com/inandusolutions/inandu-grid-core)) as its Angular and
8
+ React siblings: one core, three interfaces
9
+ ([how it fits together](https://inandusolutions.github.io/inandu-grid-vue/architecture.html)).
10
+
11
+ <p align="center"><img src="https://raw.githubusercontent.com/inandusolutions/inandu-grid-core/main/docs/architecture.svg" alt="Angular, React and Vue grids on top of one shared core package, which shares its query contract with Inandu.Grid.Extensions on .NET" width="820"></p>
8
12
 
9
13
  [![npm](https://img.shields.io/npm/v/@inandu-solutions/grid-vue.svg)](https://www.npmjs.com/package/@inandu-solutions/grid-vue)
10
14
  [![downloads](https://img.shields.io/npm/dm/@inandu-solutions/grid-vue.svg)](https://www.npmjs.com/package/@inandu-solutions/grid-vue)
@@ -86,9 +90,9 @@ which also has tabs for inline editing and tree data.
86
90
  ## Features
87
91
 
88
92
  **Covers the core feature set of grid-angular; a few Angular-only features are not ported (see the [feature matrix](https://github.com/inandusolutions/inandu-grid/blob/main/docs/feature-matrix.md)).** The framework-agnostic core (sorting,
89
- filtering, aggregation, export, i18n) is ported from grid-angular's
90
- [`core/`](https://github.com/inandusolutions/inandu-grid/tree/main/projects/inandu-grid/src/lib/core)
91
- folder and kept in sync by hand across the three repos. The Vue-specific layer — the
93
+ filtering, aggregation, export, i18n) is the
94
+ [`@inandu-solutions/grid-core`](https://github.com/inandusolutions/inandu-grid-core) package, shared with
95
+ grid-angular and grid-react. The Vue-specific layer — the
92
96
  [`<InanduGrid>`](#api-shape) component and the [`useInanduGrid()`](#api-shape) headless
93
97
  composable — covers:
94
98
 
@@ -190,6 +194,21 @@ totals are off (they would only ever see one page), and a column's Excel-style v
190
194
  the values on the current page. Use `buildInanduGridQuery(query)` if you'd rather do the fetching
191
195
  yourself, and `fetcher` / `init` on the composable for auth headers or a custom client.
192
196
 
197
+ ### Row identity (`rowId`)
198
+
199
+ Selection, tree expansion and master-detail expansion are remembered **by a key**, not by the row object,
200
+ so they survive a page change, a `reload()` and a parent that passes a derived array (`:rows="data.filter(...)"`).
201
+ By default the key is the row's `id` field when it has one; otherwise the row object itself (the previous
202
+ behaviour). Point it somewhere else with `rowId`:
203
+
204
+ ```vue
205
+ <InanduGrid :rows="rows" :columns="columns" row-id="sku" />
206
+ <InanduGrid :rows="rows" :columns="columns" :row-id="row => `${row.orderId}-${row.line}`" />
207
+ ```
208
+
209
+ The key is also the `:key` of each row, so edit state follows a row through sorting, filtering and
210
+ drag-reorder. Give rows a unique key: duplicate ids are your data's problem and Vue will warn about them.
211
+
193
212
  ## Development
194
213
 
195
214
  ```bash
@@ -2,6 +2,7 @@ import { VNodeChild } from 'vue';
2
2
  import { InanduGridColumnFilterValue, InanduGridRow } from '../core';
3
3
  import { InanduCellRenderContext, InanduEditRenderContext, InanduGridCellPaste, InanduGridColumn, InanduGridRowSave, InanduGridServerQuery, InanduHeaderRenderContext } from '../composables/useInanduGrid';
4
4
  import { InanduGridCellRangeSelection } from './types';
5
+ import { InanduGridRowId } from '../composables/rowKey';
5
6
  type __VLS_Props = {
6
7
  rows: InanduGridRow[];
7
8
  columns: InanduGridColumn[];
@@ -67,8 +68,15 @@ type __VLS_Props = {
67
68
  renderDetail?: (row: InanduGridRow) => VNodeChild;
68
69
  /** Collapses any other expanded row first, accordion-style, when a new one expands. Off (any number of rows can be expanded at once) by default. */
69
70
  singleDetailExpand?: boolean;
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
+ /** 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. Keep the function's identity stable (declare it once, or wrap it in `computed`): a new function on every parent render re-filters and re-sorts all rows each time. */
71
72
  extraRowFilter?: (row: InanduGridRow) => boolean;
73
+ /**
74
+ * How a row is identified across data refreshes: a field name (`'sku'`) or a function returning the key.
75
+ * Selection, tree and detail expansion are remembered by it, so they survive a server-side page change or
76
+ * `reload()` and a parent that passes a derived array; it is also the `:key` of the row. Unset: the row's
77
+ * `id` field when it has one, otherwise the row object itself (identity), as before.
78
+ */
79
+ rowId?: InanduGridRowId;
72
80
  /** 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
81
  serverSide?: {
74
82
  totalItems: number;
@@ -117,8 +125,8 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
117
125
  readonly allColumns: InanduGridColumn[];
118
126
  stickyOffset: (field: string) => number;
119
127
  stickyOffsetRight: (field: string) => number;
120
- columnPinnedSide: (field: string) => import('..').InanduColumnStickySide | undefined;
121
- setColumnPinned: (field: string, side: import('..').InanduColumnStickySide | undefined) => void;
128
+ columnPinnedSide: (field: string) => import('@inandu-solutions/grid-core').InanduColumnStickySide | undefined;
129
+ setColumnPinned: (field: string, side: import('@inandu-solutions/grid-core').InanduColumnStickySide | undefined) => void;
122
130
  readonly hideableColumns: InanduGridColumn[];
123
131
  isColumnHidden: (field: string) => boolean;
124
132
  toggleColumnVisibility: (field: string) => void;
@@ -133,7 +141,7 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
133
141
  onRowDragStart: (row: InanduGridRow) => void;
134
142
  onRowDrop: (targetRow: InanduGridRow) => void;
135
143
  readonly hasTreeData: boolean;
136
- readonly treeRows: import('..').TreeVisibleRow<InanduGridRow>[];
144
+ readonly treeRows: import('@inandu-solutions/grid-core').TreeVisibleRow<InanduGridRow>[];
137
145
  isTreeRowExpanded: (row: InanduGridRow) => boolean;
138
146
  toggleTreeRow: (row: InanduGridRow) => void;
139
147
  setAllTreeRowsExpanded: (expanded: boolean) => void;
@@ -164,6 +172,7 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
164
172
  readonly totals: Record<string, number>;
165
173
  readonly selectedRows: Set<InanduGridRow>;
166
174
  isRowSelected: (row: InanduGridRow) => boolean;
175
+ rowKeyOf: (row: InanduGridRow) => string;
167
176
  toggleRowSelection: (row: InanduGridRow) => void;
168
177
  readonly allSelected: boolean;
169
178
  readonly someSelected: boolean;
@@ -0,0 +1,15 @@
1
+ import { InanduGridRow } from '../core';
2
+ /**
3
+ * How the grid identifies a row across renders and data refreshes: the name of a field (`'sku'`) or a
4
+ * function that returns the row's key. Without it, the row's `id` field is used when it is present
5
+ * (not null / undefined), and the row object itself otherwise (identity, the pre-`rowId` behaviour).
6
+ */
7
+ export type InanduGridRowId = string | ((row: InanduGridRow) => string | number);
8
+ /** The stable key for `row`: the id value when there is one, otherwise the row object itself. */
9
+ export declare function createRowKey(rowId: InanduGridRowId | undefined): (row: InanduGridRow) => unknown;
10
+ /**
11
+ * A `:key` for `row`. An id is namespaced by its type (the string `"1"` and the number `1` are different
12
+ * rows, as they are in a `Set`), and a row without an id gets a per-object counter, so keys stay unique
13
+ * and follow the row through sorting, filtering and drag-reorder.
14
+ */
15
+ export declare function toVueKey(key: unknown): string;
@@ -1,3 +1,4 @@
1
+ import { InanduGridRowId } from './rowKey';
1
2
  import { MaybeRefOrGetter, VNodeChild } from 'vue';
2
3
  import { InanduColumnAggregate, InanduColumnStickySide, InanduColumnType, InanduGridColumnFilterValue, InanduGridRow, TreeVisibleRow } from '../core';
3
4
  /**
@@ -152,8 +153,15 @@ export interface UseInanduGridOptions {
152
153
  * `<InanduGrid>` component's job, not this composable's — it has no way to observe scroll state itself.
153
154
  */
154
155
  virtualScroll?: boolean;
155
- /** 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. */
156
+ /** 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. Keep the function's identity stable (declare it once, or wrap it in `computed`): a new function on every parent render re-filters and re-sorts all rows each time. */
156
157
  extraRowFilter?: (row: InanduGridRow) => boolean;
158
+ /**
159
+ * How a row is identified across data refreshes: a field name (`'sku'`) or a function returning the key.
160
+ * Selection, tree expansion and master-detail expansion are remembered by this key, so they survive a
161
+ * server-side page change or `reload()` (which return new row objects) and a parent that passes a derived
162
+ * array. Unset: the row's `id` field when it has one, otherwise the row object itself (identity), as before.
163
+ */
164
+ rowId?: InanduGridRowId;
157
165
  /**
158
166
  * Server-side mode: `rows` is already the current page, as sorted/filtered/paged by the server
159
167
  * (see `useInanduGridServer`). The composable keeps owning the sort / filter / search / page
@@ -234,6 +242,7 @@ export declare function useInanduGrid(options: MaybeRefOrGetter<UseInanduGridOpt
234
242
  readonly totals: Record<string, number>;
235
243
  readonly selectedRows: Set<InanduGridRow>;
236
244
  isRowSelected: (row: InanduGridRow) => boolean;
245
+ rowKeyOf: (row: InanduGridRow) => string;
237
246
  toggleRowSelection: (row: InanduGridRow) => void;
238
247
  readonly allSelected: boolean;
239
248
  readonly someSelected: boolean;
@@ -1,8 +1,8 @@
1
- import { ShallowRef } from 'vue';
1
+ import { MaybeRefOrGetter, ShallowRef } from 'vue';
2
2
  import { InanduGridRow } from '../core';
3
3
  import { InanduGridServerQuery } from './useInanduGrid';
4
4
  export interface InanduGridQueryOptions {
5
- /** Extra params appended after the grid's own (a tenant id, a fixed filter, ...). */
5
+ /** Extra params appended after the grid's own (a tenant id, a fixed filter, ...). A key the grid already sends (`page`, `sort`, a column filter...) is replaced by yours, with a one-time console warning. */
6
6
  extraParams?: Record<string, string>;
7
7
  }
8
8
  /**
@@ -47,7 +47,10 @@ export interface InanduGridServerResult {
47
47
  * :server-side="{ totalItems: server.total.value }" @query-change="server.setQuery" />
48
48
  * ```
49
49
  *
50
+ * `options` may be a plain object, a ref or a getter; `url` and `extraParams` are read on every request, and
51
+ * changing them requests the current query again.
52
+ *
50
53
  * Expects the `Inandu.Grid.Extensions` response shape, `{ data: [...], total: n }`. A request that
51
54
  * is superseded by a newer one is aborted, and a late response from it is ignored.
52
55
  */
53
- export declare function useInanduGridServer(options: InanduGridServerOptions): InanduGridServerResult;
56
+ export declare function useInanduGridServer(optionsSource: MaybeRefOrGetter<InanduGridServerOptions>): InanduGridServerResult;
@@ -1,17 +1 @@
1
- export type { InanduColumnType, InanduColumnStickySide, InanduColumnAggregate, InanduGridRow, InanduGridColumnFilterValue, ColumnConfig, } from './types';
2
- export { MIN_COLUMN_WIDTH, MAX_COLUMN_WIDTH, SELECT_COLUMN_WIDTH, ROW_DRAG_COLUMN_WIDTH, DETAIL_TOGGLE_COLUMN_WIDTH, STATE_STORAGE_PREFIX, } from './constants';
3
- export { coerceToDate, formatDateValue, formatCellValue, defaultNumberFormatter, } from './format';
4
- export type { NumberFormatter } from './format';
5
- export { compareCellValues } from './sort';
6
- export { flattenTree, collectTreeRows } from './tree';
7
- export type { TreeVisibleRow, FlattenTreeOptions } from './tree';
8
- export { hasMeaningfulFilterValue, matchesColumnFilter } from './filter';
9
- export { AGGREGATE_SYMBOLS, computeGroupAggregates } from './aggregate';
10
- export { placeColumnsByOrder } from './columns';
11
- export { parseDraftValue, parsePastedCellValue } from './parse';
12
- export { escapeAttributeSelectorValue } from './dom';
13
- export { escapeCsvValue } from './export/csv';
14
- export { escapeMarkup } from './export/markup';
15
- export { truncatePdfText } from './export/pdf';
16
- export { downloadBlob } from './export/download';
17
- export { en, es, fr, it, zh, INANDU_GRID_TRANSLATIONS } from './i18n';
1
+ export * from '@inandu-solutions/grid-core';
@@ -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 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)({}),R=(0,e.shallowRef)({}),z=(0,e.shallowRef)(void 0),B=(0,e.shallowRef)(new Set),V=(0,e.shallowRef)(new Set),H,U=(0,e.computed)(()=>re(te.value??f.value)),W=(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}),G=(0,e.computed)(()=>P.value.size===0?W.value:W.value.filter(e=>!P.value.has(e.field))),K=(0,e.computed)(()=>W.value.filter(e=>e.hideable!==!1));function oe(e){let t=W.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 se(e){I.value=e}function ce(e){let t=I.value;if(I.value=void 0,!t||t===e)return;let n=W.value.find(e=>e.field===t);if(!n||n.reorder===!1)return;let r=W.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),oe(r))}function le(e){return P.value.has(e)}function ue(e){if(P.value.has(e)){let t=new Set(P.value);t.delete(e),P.value=t}else G.value.length<=1||(P.value=new Set(P.value).add(e))}let de=(0,e.computed)(()=>G.value.filter(e=>e.editable));function q(e){E.value=0,T.value=e}let J=(0,e.computed)(()=>new Map(G.value.map(e=>[e.field,ie(e)]))),fe=(0,e.computed)(()=>G.value.filter(e=>e.aggregate).map(e=>J.value.get(e.field)));function pe(e,t){E.value=0,w.value={...w.value,[e]:t}}function me(){E.value=0,w.value={}}function he(e,t){return G.value.some(n=>{let r=J.value.get(n.field);return o(e[n.field],r.type(),r.format(),f.value).toLowerCase().includes(t)})}function Y(e,t){return t.every(([t,n])=>{let r=J.value.get(t);return!r||d(r,e,n,f.value)})}function ge(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 X=(0,e.computed)(()=>{let e=i.value;if(x.value)return e;let t=T.value.trim().toLowerCase();t&&(e=e.filter(e=>he(e,t)));let n=Object.entries(w.value).filter(([,e])=>u(e));n.length>0&&(e=e.filter(e=>Y(e,n)));let r=y.value;return r&&(e=e.filter(r)),C.value.length>0&&(e=[...e].sort(ge)),e}),_e=(0,e.computed)(()=>{let e=O.value;if(!e)return null;let t=J.value.get(e);if(!t)return null;let n=new Map;for(let r of X.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,fe.value)}))}),ve=(0,e.computed)(()=>p(X.value,fe.value)),Z=(0,e.computed)(()=>!!ne.value&&!O.value&&!v.value&&!x.value);function Q(e){let t=ne.value,n=t?e[t]:void 0;return Array.isArray(n)?n:void 0}let ye=(0,e.computed)(()=>{if(!Z.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&&!he(r,e)||!Y(r,t)?!1:!n||n(r):void 0,a=C.value.length>0?ge:void 0,o=B.value;return c(i.value,{getChildren:Q,isExpanded:e=>o.has(e),match:r,compare:a})});(0,e.watch)([Z,i,_],()=>{if(!Z.value||H===i.value)return;H=i.value;let e=_.value;if(e===`none`){B.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)}B.value=t},{immediate:!0,flush:`sync`});function be(e){return B.value.has(e)}function xe(e){let t=new Set(B.value);t.has(e)?t.delete(e):t.add(e),B.value=t}function Se(e){if(!e){B.value=new Set;return}let t=new Set;for(let e of l(i.value,Q))Q(e)?.length&&t.add(e);B.value=t}let Ce=(0,e.computed)(()=>v.value&&!O.value&&!x.value),we=(0,e.computed)(()=>h.value>0&&!O.value&&!Z.value&&!Ce.value),Te=(0,e.computed)(()=>b.value?b.value.totalItems:X.value.length),Ee=(0,e.computed)(()=>we.value?Math.max(1,Math.ceil(Te.value/h.value)):1),De=(0,e.computed)(()=>x.value?E.value:Math.min(E.value,Ee.value-1)),Oe=(0,e.computed)(()=>{if(Z.value)return ye.value.map(e=>e.row);if(!we.value||x.value)return X.value;let e=De.value*h.value;return X.value.slice(e,e+h.value)});(0,e.watch)([x,De,h,C,w,T],()=>{x.value&&S().onQueryChange?.({page:De.value,pageSize:h.value,sortCriteria:C.value,filterValues:w.value,filterQuery:T.value})},{immediate:!0});let $=(0,e.computed)(()=>O.value?X.value:Oe.value);function ke(e){return k.value.has(e)}function Ae(e){let t=new Set(k.value);t.has(e)?t.delete(e):t.add(e),k.value=t}let je=(0,e.computed)(()=>$.value.length>0&&$.value.every(e=>k.value.has(e))),Me=(0,e.computed)(()=>!je.value&&$.value.some(e=>k.value.has(e)));function Ne(){let e=!je.value,t=new Set(k.value);for(let n of $.value)e?t.add(n):t.delete(n);k.value=t}function Pe(){k.value=new Set}function Fe(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 Ie(e){C.value=e}function Le(e){return C.value.find(t=>t.field===e)?.direction}function Re(e){if(C.value.length<2)return;let t=C.value.findIndex(t=>t.field===e);return t===-1?void 0:t+1}function ze(e){return A.value===e}function Be(e){return j.value?!0:A.value!==void 0&&A.value!==e}function Ve(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 He(e){let t={};for(let n of de.value)t[n.field]=Ve(e,n);A.value=e,M.value=t,N.value={}}function Ue(){A.value=void 0,M.value={},N.value={}}function We(e,t){M.value={...M.value,[e]:t}}function Ge(e,t,n,r){let i=U.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 Ke(e,t,n={}){return Ge(e,t,t,n)}async function qe(e){let t=de.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=Ge(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 Je(e){if(A.value!==e)return;let{errors:t,values:n}=await qe(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 Ye(e){let t=S().deleteConfirmMessage;(!t||window.confirm(t))&&S().onRowDelete?.(e)}function Xe(){let e=S().bulkDeleteConfirmMessage;if(e&&!window.confirm(e))return;let t=Array.from(k.value);Pe(),S().onRowsDelete?.(t)}function Ze(){j.value=!0,M.value={},N.value={}}function Qe(){j.value=!1,M.value={},N.value={}}async function $e(){if(!j.value)return;let{errors:e,values:t}=await qe(M.value);j.value&&(Object.keys(e).length>0?N.value=e:(j.value=!1,M.value={},N.value={},S().onRowCreate?.(t)))}function et(e,t){let n=Oe.value[e],r=J.value.get(t);return!n||!r?``:o(n[t],r.type(),r.format(),f.value)}function tt(e,t,n){let r=G.value,i=Oe.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 nt(e){let t=L.value[e];return t===void 0?W.value.find(t=>t.field===e)?.width??80:t}function rt(e){return L.value[e]!==void 0}function it(e,t){W.value.some(t=>t.field===e)&&(L.value={...L.value,[e]:Math.max(30,t)})}function at(e){z.value=e}function ot(e){return V.value.has(e)}function st(e){let t=V.value,n=S().singleDetailExpand?new Set:new Set(t);t.has(e)?n.delete(e):n.add(e),V.value=n}function ct(e){let t=z.value;if(z.value=void 0,!t||t===e)return;let n=[...X.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 lt(e){let t=R.value[e];if(t===`left`||t===`right`)return t;if(t!==`none`)return W.value.find(t=>t.field===e)?.pinned}function ut(e,t){R.value={...R.value,[e]:t??`none`}}function dt(e){let t=g.value?36:0;for(let n of G.value){if(n.field===e)break;lt(n.field)===`left`&&(t+=nt(n.field))}return t}function ft(e){let t=0,n=!1;for(let r of G.value)r.field===e?n=!0:n&&lt(r.field)===`right`&&(t+=nt(r.field));return t}function pt(e){E.value=e}function mt(e){D.value=e}return{get visibleColumns(){return G.value},get allColumns(){return W.value},stickyOffset:dt,stickyOffsetRight:ft,columnPinnedSide:lt,setColumnPinned:ut,get hideableColumns(){return K.value},isColumnHidden:le,toggleColumnVisibility:ue,setColumnOrder:oe,get draggingField(){return I.value},onColumnDragStart:se,onColumnDrop:ce,effectiveWidth:nt,isColumnResized:rt,setColumnWidth:it,get draggingRow(){return z.value},onRowDragStart:at,onRowDrop:ct,get hasTreeData(){return Z.value},get treeRows(){return ye.value},isTreeRowExpanded:be,toggleTreeRow:xe,setAllTreeRowsExpanded:Se,isRowExpanded:ot,toggleRowExpanded:st,get hasVirtualScroll(){return Ce.value},get visibleRows(){return Oe.value},get exportRows(){return $.value},get sortedRows(){return X.value},get filteredRowCount(){return Te.value},get locale(){return f.value},get sortCriteria(){return C.value},setSort:Ie,toggleSort:Fe,sortDirectionFor:Le,sortPriorityFor:Re,get filterValues(){return w.value},setFilterValue:pe,clearAllFilters:me,get filterQuery(){return T.value},setFilterQuery:q,get page(){return De.value},setPage:pt,get pageCount(){return we.value?Ee.value:1},get groupByField(){return O.value},setGroupByField:mt,get groups(){return _e.value},get totals(){return ve.value},get selectedRows(){return k.value},isRowSelected:ke,toggleRowSelection:Ae,get allSelected(){return je.value},get someSelected(){return Me.value},toggleSelectAll:Ne,clearSelection:Pe,get editableColumns(){return de.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:ze,isAnotherRowEditing:Be,startEditingRow:He,cancelRowEdit:Ue,setRowDraftValue:We,saveRow:Je,deleteRow:Ye,deleteSelectedRows:Xe,startAddingRow:Ze,cancelAddRow:Qe,saveNewRow:$e,validateCell:Ke,copyCellText:et,pasteAt:tt}}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`},R=(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)]))}}),z=(0,e.defineComponent)({name:`InanduGridRenderNodes`,props:{nodes:{type:null,default:null}},setup(e){return()=>e.nodes}}),B=[`data-row-index`,`aria-selected`],V={key:0},H=[`aria-label`,`title`],U={key:1},W=[`aria-label`],G=[`aria-label`,`checked`],K=[`data-field`,`tabindex`,`onMousedown`,`onMouseenter`],oe={key:3,class:`inandu-grid-row-actions`},se=[`disabled`],ce=[`disabled`],le=[`disabled`],ue=[`disabled`],de={key:0,class:`inandu-grid-detail-row`},q=[`colspan`],J=(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,"aria-selected":t.ctx.selectable?t.ctx.isRowSelected(t.row):void 0,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`,V,[(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,H)])):(0,e.createCommentVNode)(``,!0),t.hasRowDragHandle?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,U,[(0,e.createElementVNode)(`span`,{class:`inandu-grid-row-drag-handle`,"aria-label":t.ctx.t(`MsgDragRow`),draggable:`true`,onDragstart:l},`⋮⋮`,40,W)])):(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,G)],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)(R,{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)(z),{key:0,nodes:t.ctx.editorContent(n,t.row)},null,8,[`nodes`]))],64)):((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(z),{key:1,nodes:t.ctx.cellContent(n,t.row)},null,8,[`nodes`]))],46,K))),128)),t.ctx.hasRowActions?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,oe,[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,se),(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,ce)],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,ue)):(0,e.createCommentVNode)(``,!0)],64))])):(0,e.createCommentVNode)(``,!0)],42,B),t.hasMasterDetail&&t.isRowExpanded?((0,e.openBlock)(),(0,e.createElementBlock)(`tr`,de,[(0,e.createElementVNode)(`td`,{colspan:t.ctx.columns.length+t.ctx.extraColumnCount},[(0,e.createVNode)((0,e.unref)(z),{nodes:t.ctx.detailContent(t.row)},null,8,[`nodes`])],8,q)])):(0,e.createCommentVNode)(``,!0)],64))}}),fe={key:0,class:`inandu-grid-filter-range`},pe=[`aria-label`,`value`],me=[`aria-label`,`value`],he={key:1,class:`inandu-grid-filter-range`},Y=[`aria-label`,`value`],ge=[`aria-label`,`value`],X=[`aria-label`,`value`],_e={value:``},ve=[`aria-label`,`value`],Z=(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`,fe,[(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,pe),(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,me)])):a.value===`date`?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,he,[(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,Y),(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,ge)])):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`,_e,(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,X)):((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,ve))}}),Q={class:`inandu-grid-vue`},ye={class:`inandu-grid-sr-only`,role:`status`,"aria-live":`polite`},be={class:`inandu-grid-search`},xe=[`aria-label`,`placeholder`,`value`],Se={class:`inandu-grid-toolbar`},Ce={key:3,class:`inandu-grid-column-toggle`},we=[`aria-label`,`checked`,`onChange`],Te={key:0,class:`inandu-grid-group-by`},Ee=[`value`],De={value:``},Oe=[`value`],$=[`aria-rowcount`],ke={key:0},Ae={key:1},je=[`aria-label`,`checked`,`indeterminate`],Me=[`data-field`,`aria-sort`,`draggable`,`aria-label`,`onDragstart`,`onDragover`,`onDragleave`,`onDrop`,`onClick`],Ne={key:0,class:`inandu-grid-sort-priority`},Pe=[`onMousedown`,`onDblclick`],Fe={key:3},Ie={class:`inandu-grid-filter-row`},Le={key:0},Re={key:1},ze={key:3},Be={key:0,class:`inandu-grid-new-row`},Ve={key:1,class:`inandu-grid-row-actions`},He=[`disabled`],Ue=[`disabled`],We={key:1},Ge=[`colspan`],Ke=[`aria-selected`,`aria-level`,`aria-expanded`],qe=[`aria-label`,`checked`,`onChange`],Je=[`aria-label`,`title`,`onClick`],Ye={key:1,class:`inandu-grid-tree-toggle-spacer`,"aria-hidden":`true`},Xe={key:1,class:`inandu-grid-row-actions`},Ze={class:`inandu-grid-group-row`},Qe=[`colspan`],$e={key:0,class:`inandu-grid-group-aggregates`},et={key:0,"aria-hidden":`true`},tt=[`colspan`],nt={key:1,"aria-hidden":`true`},rt=[`colspan`],it={key:0},at={class:`inandu-grid-totals-row`},ot={key:0},st={key:1},ct={key:3},lt={key:1,class:`inandu-grid-pagination`},ut=[`disabled`],dt=[`disabled`],ft=(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);function L(e){let t=u.sortDirectionFor(e);return t===`asc`?`ascending`:t===`desc`?`descending`:`none`}let B=(0,e.computed)(()=>s.serverSide||s.pageSize>0&&!u.groupByField||u.hasVirtualScroll?(s.serverSide?s.serverSide.totalItems:u.filteredRowCount)+2:void 0),V=(0,e.computed)(()=>u.editableColumns.length>0||s.deletable||s.creatable),H=(0,e.computed)(()=>s.rowReorder&&!u.groupByField&&!u.hasVirtualScroll),U=(0,e.computed)(()=>(!!l.detail||!!s.renderDetail)&&!u.groupByField&&!u.hasVirtualScroll),W=(0,e.computed)(()=>+!!U.value+ +!!H.value+ +!!s.selectable+ +!!V.value),G=(0,e.computed)(()=>u.visibleColumns.length+W.value),K=(0,e.computed)(()=>u.hasVirtualScroll?Math.max(0,Math.floor(ee.value/s.virtualRowHeight)-s.overscan):0),oe=(0,e.computed)(()=>u.hasVirtualScroll?Math.min(u.visibleRows.length,Math.ceil((ee.value+s.height)/s.virtualRowHeight)+s.overscan):u.visibleRows.length),se=(0,e.computed)(()=>u.hasVirtualScroll?u.visibleRows.slice(K.value,oe.value):u.visibleRows),ce=(0,e.computed)(()=>K.value*s.virtualRowHeight),le=(0,e.computed)(()=>(u.visibleRows.length-oe.value)*s.virtualRowHeight);function ue(e){u.hasVirtualScroll&&(ee.value=e.currentTarget.scrollTop)}function de(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 fe(e,t){u.onColumnDragStart(t),e.dataTransfer?.setData(`text/plain`,t)}function pe(e,t){e.preventDefault(),p.value=t}function me(e){p.value===e&&(p.value=void 0)}function he(e,t){e.preventDefault(),p.value=void 0,u.onColumnDrop(t)}let Y=(0,e.computed)(()=>s.selectable?{position:`sticky`,left:`0px`,zIndex:1}:void 0);function ge(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 X(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 _e(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 ve(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 ft(e){return l.detail?l.detail({row:e}):s.renderDetail?.(e)}function pt(e,t){u.toggleColumnVisibility(t),e.target.checked=!u.isColumnHidden(t)}function mt(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 ht(e,t){return e.id==null?t:String(e.id)}let gt=(0,e.computed)(()=>({columns:u.visibleColumns,t:d.value,selectable:s.selectable,selectColumnStyle:Y.value,columnStyle:q,isRowSelected:u.isRowSelected,toggleRowSelection:u.toggleRowSelection,hasRowActions:V.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:_e,editorContent:ve,detailContent:ft,clipboard:s.clipboard,cellRangeSelection:_.value,isCellInRange:w,onCellRangeMouseDown:E,onCellRangeMouseEnter:D,extraColumnCount:W.value}));return(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Q,[(0,e.createElementVNode)(`div`,ye,(0,e.toDisplayString)(I.value?d.value(`MsgNoData`):``),1),(0,e.createElementVNode)(`div`,be,[(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,xe)]),(0,e.createElementVNode)(`div`,Se,[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`,Ce,[(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=>pt(e,t.field)},null,40,we),(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`,Te,[(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`,De,(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,Oe))),128))],40,Ee)])])):(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:ue},[(0,e.createElementVNode)(`table`,{ref_key:`tableRef`,ref:te,class:`inandu-grid`,"aria-rowcount":B.value,onKeydown:mt},[(0,e.createElementVNode)(`thead`,null,[(0,e.createElementVNode)(`tr`,null,[U.value?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,ke)):(0,e.createCommentVNode)(``,!0),H.value?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,Ae)):(0,e.createCommentVNode)(``,!0),t.selectable?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,{key:2,style:(0,e.normalizeStyle)(Y.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,je)],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,"aria-sort":L(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=>fe(e,t.field),onDragover:e=>pe(e,t.field),onDragleave:e=>me(t.field),onDrop:e=>he(e,t.field),onClick:n=>(0,e.unref)(u).toggleSort(t.field,n.shiftKey)},[(0,e.createVNode)((0,e.unref)(z),{nodes:X(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`,Ne,(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,Pe)],46,Me))),128)),V.value?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,Fe)):(0,e.createCommentVNode)(``,!0)]),(0,e.createElementVNode)(`tr`,Ie,[U.value?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,Le)):(0,e.createCommentVNode)(``,!0),H.value?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,Re)):(0,e.createCommentVNode)(``,!0),t.selectable?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,{key:2,style:(0,e.normalizeStyle)(Y.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)(Z,{column:t,value:(0,e.unref)(u).filterValues[t.field],t:d.value,onChange:e=>de(t.field,e)},null,8,[`column`,`value`,`t`,`onChange`])],4))),128)),V.value?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,ze)):(0,e.createCommentVNode)(``,!0)])]),(0,e.createElementVNode)(`tbody`,null,[(0,e.unref)(u).isAddingRow?((0,e.openBlock)(),(0,e.createElementBlock)(`tr`,Be,[t.selectable?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,{key:0,style:(0,e.normalizeStyle)(Y.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},[ve(t,{})===void 0?((0,e.openBlock)(),(0,e.createBlock)(R,{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)(z),{key:0,nodes:ve(t,{})},null,8,[`nodes`]))],64)):(0,e.createCommentVNode)(``,!0)],4))),128)),V.value?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,Ve,[(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,He),(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,Ue)])):(0,e.createCommentVNode)(``,!0)])):(0,e.createCommentVNode)(``,!0),I.value?((0,e.openBlock)(),(0,e.createElementBlock)(`tr`,We,[(0,e.createElementVNode)(`td`,{colspan:G.value},(0,e.toDisplayString)(d.value(`MsgNoData`)),9,Ge)])):(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:ht(n.row,r),"aria-selected":t.selectable?(0,e.unref)(u).isRowSelected(n.row):void 0,"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)(Y.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,qe)],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,Je)):((0,e.openBlock)(),(0,e.createElementBlock)(`span`,Ye)),(0,e.createVNode)((0,e.unref)(z),{nodes:_e(t,n.row)},null,8,[`nodes`])],4)):((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(z),{key:1,nodes:_e(t,n.row)},null,8,[`nodes`]))],4))),128)),V.value?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,Xe)):(0,e.createCommentVNode)(``,!0)],8,Ke))),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`,Ze,[(0,e.createElementVNode)(`td`,{colspan:G.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`,$e,[((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)(ge(n,t.aggregates)),1))),128))])):(0,e.createCommentVNode)(``,!0)],8,Qe)]),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.rows,(n,r)=>((0,e.openBlock)(),(0,e.createBlock)(J,{key:ht(n,`${t.key}:${r}`),ctx:gt.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&&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:G.value},null,12,tt)])):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(se.value,(t,n)=>((0,e.openBlock)(),(0,e.createBlock)(J,{key:ht(t,K.value+n),ctx:gt.value,row:t,"row-index":K.value+n,"has-row-drag-handle":H.value,"is-drag-over-row":(0,e.unref)(u).draggingRow!==void 0&&m.value===t,"has-master-detail":U.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&&le.value>0?((0,e.openBlock)(),(0,e.createElementBlock)(`tr`,nt,[(0,e.createElementVNode)(`td`,{style:(0,e.normalizeStyle)({height:`${le.value}px`,padding:0,border:`none`}),colspan:G.value},null,12,rt)])):(0,e.createCommentVNode)(``,!0)],64))]),P.value.length>0&&!(0,e.unref)(u).hasVirtualScroll?((0,e.openBlock)(),(0,e.createElementBlock)(`tfoot`,it,[(0,e.createElementVNode)(`tr`,at,[U.value?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,ot)):(0,e.createCommentVNode)(``,!0),H.value?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,st)):(0,e.createCommentVNode)(``,!0),t.selectable?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,{key:2,style:(0,e.normalizeStyle)(Y.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?ge(t,(0,e.unref)(u).totals):``),5))),128)),V.value?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,ct)):(0,e.createCommentVNode)(``,!0)])])):(0,e.createCommentVNode)(``,!0)],40,$)],38),t.pageSize>0&&!(0,e.unref)(u).groupByField&&!(0,e.unref)(u).hasVirtualScroll?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,lt,[(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,ut),(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,dt)])):(0,e.createCommentVNode)(``,!0)]))}});function pt(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 mt(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=pt(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=ft,exports.buildCsv=O,exports.buildExcelXml=A,exports.buildInanduGridQuery=pt,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=mt,exports.zh=S;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.defineProperty,t=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,r=Object.prototype.hasOwnProperty,i=(t,n)=>{let r={};for(var i in t)e(r,i,{get:t[i],enumerable:!0});return n||e(r,Symbol.toStringTag,{value:`Module`}),r},a=(i,a,o,s)=>{if(a&&typeof a==`object`||typeof a==`function`)for(var c=n(a),l=0,u=c.length,d;l<u;l++)d=c[l],!r.call(i,d)&&d!==o&&e(i,d,{get:(e=>a[e]).bind(null,d),enumerable:!(s=t(a,d))||s.enumerable});return i},o=(e,t,n)=>(a(e,t,`default`),n&&a(n,t,`default`));let s=require("vue");var c=i({});o(c,require("@inandu-solutions/grid-core"));var l=new WeakMap,u=0;function d(e){if(typeof e==`function`)return t=>e(t)??t;let t=e??`id`;return e=>e[t]??e}function f(e){if(typeof e==`object`&&e){let t=l.get(e);return t===void 0&&(t=++u,l.set(e,t)),`o${t}`}return`${typeof e}:${String(e)}`}function p(e,t){return t?e.replace(/\{\{(\w+)\}\}/g,(e,n)=>n in t?String(t[n]):e):e}function ee(e){let t=e.split(`-`)[0],n=c.INANDU_GRID_TRANSLATIONS[t]??c.en;return(e,t)=>p(n[e]??c.en[e],t)}function te(e){return{field:()=>e.field,type:()=>e.type??`string`,format:()=>e.format??``,order:()=>e.order,aggregate:()=>e.aggregate??``}}function ne(e){let t=t=>(0,s.computed)(()=>(0,s.toValue)(e)[t]),n=t(`rows`),r=t(`columns`),i=(0,s.computed)(()=>(0,s.toValue)(e).locale??`en`),a=t(`lang`),o=(0,s.computed)(()=>(0,s.toValue)(e).pageSize??0),l=(0,s.computed)(()=>(0,s.toValue)(e).selectable??!1),u=t(`treeChildrenKey`),p=(0,s.computed)(()=>(0,s.toValue)(e).treeDefaultExpanded??`none`),ne=(0,s.computed)(()=>(0,s.toValue)(e).virtualScroll??!1),m=t(`extraRowFilter`),h=t(`rowId`),g=(0,s.computed)(()=>d(h.value)),re=t(`serverSide`),_=(0,s.computed)(()=>!!re.value),v=()=>(0,s.toValue)(e),y=(0,s.shallowRef)([]),b=(0,s.shallowRef)({}),x=(0,s.shallowRef)(``),S=(0,s.shallowRef)(0),C=(0,s.shallowRef)(void 0),w=(0,s.computed)(()=>_.value?void 0:C.value),T=(0,s.shallowRef)(new Map),ie=(0,s.computed)(()=>new Set(T.value.values())),E=(0,s.shallowRef)(void 0),D=(0,s.shallowRef)(!1),O=(0,s.shallowRef)({}),k=(0,s.shallowRef)({}),A=(0,s.shallowRef)(!1),j=(0,s.shallowRef)(new Set),ae=(0,s.shallowRef)(void 0),M=(0,s.shallowRef)(void 0),N=(0,s.shallowRef)({}),P=(0,s.shallowRef)({}),F=(0,s.shallowRef)(void 0),I=(0,s.shallowRef)(new Set),L=(0,s.shallowRef)(new Set),oe=new Set,se=(0,s.computed)(()=>ee(a.value??i.value)),R=(0,s.computed)(()=>{let e=ae.value;if(!e)return r.value;let t=new Map(r.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}),z=(0,s.computed)(()=>j.value.size===0?R.value:R.value.filter(e=>!j.value.has(e.field))),B=(0,s.computed)(()=>R.value.filter(e=>e.hideable!==!1));function V(e){let t=R.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));ae.value=[...r,...a]}function ce(e){M.value=e}function H(e){let t=M.value;if(M.value=void 0,!t||t===e)return;let n=R.value.find(e=>e.field===t);if(!n||n.reorder===!1)return;let r=R.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),V(r))}function U(e){return j.value.has(e)}function le(e){if(j.value.has(e)){let t=new Set(j.value);t.delete(e),j.value=t}else z.value.length<=1||(j.value=new Set(j.value).add(e))}let W=(0,s.computed)(()=>z.value.filter(e=>e.editable));function ue(e){S.value=0,x.value=e}let G=(0,s.computed)(()=>new Map(z.value.map(e=>[e.field,te(e)]))),de=(0,s.computed)(()=>z.value.filter(e=>e.aggregate).map(e=>G.value.get(e.field)));function fe(e,t){S.value=0,b.value={...b.value,[e]:t}}function pe(){S.value=0,b.value={}}function me(e,t){return z.value.some(n=>{let r=G.value.get(n.field);return(0,c.formatCellValue)(e[n.field],r.type(),r.format(),i.value).toLowerCase().includes(t)})}function he(e,t){return t.every(([t,n])=>{let r=G.value.get(t);return!r||(0,c.matchesColumnFilter)(r,e,n,i.value)})}function ge(e,t){for(let{field:n,direction:r}of y.value){let a=(0,c.compareCellValues)(e[n],t[n],i.value)*(r===`asc`?1:-1);if(a!==0)return a}return 0}let K=(0,s.computed)(()=>{let e=n.value;if(_.value)return e;let t=x.value.trim().toLowerCase();t&&(e=e.filter(e=>me(e,t)));let r=Object.entries(b.value).filter(([,e])=>(0,c.hasMeaningfulFilterValue)(e));r.length>0&&(e=e.filter(e=>he(e,r)));let i=m.value;return i&&(e=e.filter(i)),y.value.length>0&&(e=[...e].sort(ge)),e}),_e=(0,s.computed)(()=>{let e=w.value;if(!e)return null;let t=G.value.get(e);if(!t)return null;let n=new Map;for(let r of K.value){let a=(0,c.formatCellValue)(r[e],t.type(),t.format(),i.value),o=n.get(a);o?o.push(r):n.set(a,[r])}return Array.from(n.entries()).map(([e,t])=>({key:e,rows:t,aggregates:(0,c.computeGroupAggregates)(t,de.value)}))}),ve=(0,s.computed)(()=>(0,c.computeGroupAggregates)(K.value,de.value)),q=(0,s.computed)(()=>!!u.value&&!w.value&&!ne.value&&!_.value);function J(e){let t=u.value,n=t?e[t]:void 0;return Array.isArray(n)?n:void 0}let ye=(0,s.computed)(()=>{if(!q.value)return[];let e=x.value.trim().toLowerCase(),t=Object.entries(b.value).filter(([,e])=>(0,c.hasMeaningfulFilterValue)(e)),r=m.value,i=e||t.length>0||r?n=>e&&!me(n,e)||!he(n,t)?!1:!r||r(n):void 0,a=y.value.length>0?ge:void 0,o=I.value,s=g.value;return(0,c.flattenTree)(n.value,{getChildren:J,isExpanded:e=>o.has(s(e)),match:i,compare:a})});(0,s.watch)([q,n,p,g],()=>{if(!q.value)return;let e=g.value,t=p.value,r=new Set;if(t===`all`)for(let t of(0,c.collectTreeRows)(n.value,J))J(t)?.length&&r.add(e(t));else if(t!==`none`){let i=(n,a)=>{if(!(a>=t))for(let t of n){let n=J(t);n?.length&&(r.add(e(t)),i(n,a+1))}};i(n.value,0)}let i=[];for(let t of(0,c.collectTreeRows)(n.value,J)){let n=e(t);oe.has(n)||(oe.add(n),r.has(n)&&i.push(n))}if(i.length>0){let e=new Set(I.value);for(let t of i)e.add(t);I.value=e}},{immediate:!0,flush:`sync`});function be(e){return I.value.has(g.value(e))}function xe(e){let t=g.value(e),n=new Set(I.value);n.has(t)?n.delete(t):n.add(t),I.value=n}function Se(e){if(!e){I.value=new Set;return}let t=new Set;for(let e of(0,c.collectTreeRows)(n.value,J))J(e)?.length&&t.add(g.value(e));I.value=t}let Ce=(0,s.computed)(()=>ne.value&&!w.value&&!_.value),we=(0,s.computed)(()=>o.value>0&&!w.value&&!q.value&&!Ce.value),Te=(0,s.computed)(()=>re.value?re.value.totalItems:K.value.length),Ee=(0,s.computed)(()=>we.value?Math.max(1,Math.ceil(Te.value/o.value)):1),Y=(0,s.computed)(()=>_.value?S.value:Math.min(S.value,Ee.value-1)),De=(0,s.computed)(()=>{if(q.value)return ye.value.map(e=>e.row);if(!we.value||_.value)return K.value;let e=Y.value*o.value;return K.value.slice(e,e+o.value)});(0,s.watch)([_,Y,o,y,b,x],()=>{_.value&&v().onQueryChange?.({page:Y.value,pageSize:o.value,sortCriteria:y.value,filterValues:b.value,filterQuery:x.value})},{immediate:!0});let X=(0,s.computed)(()=>w.value?K.value:De.value);function Oe(e){return f(g.value(e))}function ke(e){return T.value.has(g.value(e))}function Ae(e){let t=g.value(e),n=new Map(T.value);n.has(t)?n.delete(t):n.set(t,e),T.value=n}let je=(0,s.computed)(()=>X.value.length>0&&X.value.every(e=>T.value.has(g.value(e)))),Me=(0,s.computed)(()=>!je.value&&X.value.some(e=>T.value.has(g.value(e))));function Ne(){let e=!je.value,t=g.value,n=new Map(T.value);for(let r of X.value)e?n.set(t(r),r):n.delete(t(r));T.value=n}function Pe(){T.value=new Map}(0,s.watch)([n,q,g],()=>{let e=T.value;if(e.size===0)return;let t=g.value,r,i=q.value?(0,c.collectTreeRows)(n.value,J):n.value;for(let n of i??[]){let i=t(n);e.has(i)&&e.get(i)!==n&&(r??=new Map(e),r.set(i,n))}r&&(T.value=r)},{flush:`sync`});function Fe(e,t=!1){S.value=0;let n=y.value,r=n.findIndex(t=>t.field===e);if(t){if(r===-1){y.value=[...n,{field:e,direction:`asc`}];return}let t=[...n];t[r]={field:e,direction:n[r].direction===`asc`?`desc`:`asc`},y.value=t}else n.length===1&&n[0].field===e?y.value=[{field:e,direction:n[0].direction===`asc`?`desc`:`asc`}]:y.value=[{field:e,direction:`asc`}]}function Ie(e){y.value=e}function Le(e){return y.value.find(t=>t.field===e)?.direction}function Re(e){if(y.value.length<2)return;let t=y.value.findIndex(t=>t.field===e);return t===-1?void 0:t+1}function ze(e){return E.value===e}function Be(e){return D.value?!0:E.value!==void 0&&E.value!==e}function Ve(e,t){let n=t.type??`string`;if(n===`boolean`)return!!e[t.field];if(n===`date`){let n=(0,c.coerceToDate)(e[t.field]);if(Number.isNaN(n.getTime()))return``;let r=e=>String(e).padStart(2,`0`);return`${n.getFullYear()}-${r(n.getMonth()+1)}-${r(n.getDate())}`}let r=e[t.field];return r==null?``:String(r)}function He(e){let t={};for(let n of W.value)t[n.field]=Ve(e,n);E.value=e,O.value=t,k.value={}}function Ue(){E.value=void 0,O.value={},k.value={}}function We(e,t){O.value={...O.value,[e]:t}}function Ge(e,t,n,r){let i=se.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 Ke(e,t,n={}){return Ge(e,t,t,n)}async function qe(e){let t=W.value,n={};for(let r of t)n[r.field]=(0,c.parseDraftValue)(e[r.field],r.type??`string`);let r={},i={},a=[];for(let o of t){let t=o.field,s=Ge(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){A.value=!0;try{await Promise.all(a)}finally{A.value=!1}}return{errors:r,values:i}}async function Je(e){if(E.value!==e)return;let{errors:t,values:n}=await qe(O.value);E.value===e&&(Object.keys(t).length>0?k.value=t:(E.value=void 0,O.value={},k.value={},v().onRowSave?.({row:e,values:n})))}function Ye(e){let t=v().deleteConfirmMessage;(!t||window.confirm(t))&&v().onRowDelete?.(e)}function Xe(){let e=v().bulkDeleteConfirmMessage;if(e&&!window.confirm(e))return;let t=Array.from(ie.value);Pe(),v().onRowsDelete?.(t)}function Ze(){D.value=!0,O.value={},k.value={}}function Qe(){D.value=!1,O.value={},k.value={}}async function $e(){if(!D.value)return;let{errors:e,values:t}=await qe(O.value);D.value&&(Object.keys(e).length>0?k.value=e:(D.value=!1,O.value={},k.value={},v().onRowCreate?.(t)))}function et(e,t){let n=De.value[e],r=G.value.get(t);return!n||!r?``:(0,c.formatCellValue)(n[t],r.type(),r.format(),i.value)}function tt(e,t,n){let r=z.value,i=De.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:(0,c.parsePastedCellValue)(e,n.type??`string`)})})}),o.length>0&&v().onCellsPaste?.(o)}function Z(e){let t=N.value[e];return t===void 0?R.value.find(t=>t.field===e)?.width??80:t}function nt(e){return N.value[e]!==void 0}function Q(e,t){R.value.some(t=>t.field===e)&&(N.value={...N.value,[e]:Math.max(c.MIN_COLUMN_WIDTH,t)})}function rt(e){F.value=e}function it(e){return L.value.has(g.value(e))}function at(e){let t=g.value(e),n=L.value,r=v().singleDetailExpand?new Set:new Set(n);n.has(t)?r.delete(t):r.add(t),L.value=r}function ot(e){let t=F.value;if(F.value=void 0,!t||t===e)return;let n=[...K.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),v().onRowOrderChange?.(n))}function $(e){let t=P.value[e];if(t===`left`||t===`right`)return t;if(t!==`none`)return R.value.find(t=>t.field===e)?.pinned}function st(e,t){P.value={...P.value,[e]:t??`none`}}function ct(e){let t=l.value?c.SELECT_COLUMN_WIDTH:0;for(let n of z.value){if(n.field===e)break;$(n.field)===`left`&&(t+=Z(n.field))}return t}function lt(e){let t=0,n=!1;for(let r of z.value)r.field===e?n=!0:n&&$(r.field)===`right`&&(t+=Z(r.field));return t}function ut(e){S.value=e}function dt(e){C.value=e}return{get visibleColumns(){return z.value},get allColumns(){return R.value},stickyOffset:ct,stickyOffsetRight:lt,columnPinnedSide:$,setColumnPinned:st,get hideableColumns(){return B.value},isColumnHidden:U,toggleColumnVisibility:le,setColumnOrder:V,get draggingField(){return M.value},onColumnDragStart:ce,onColumnDrop:H,effectiveWidth:Z,isColumnResized:nt,setColumnWidth:Q,get draggingRow(){return F.value},onRowDragStart:rt,onRowDrop:ot,get hasTreeData(){return q.value},get treeRows(){return ye.value},isTreeRowExpanded:be,toggleTreeRow:xe,setAllTreeRowsExpanded:Se,isRowExpanded:it,toggleRowExpanded:at,get hasVirtualScroll(){return Ce.value},get visibleRows(){return De.value},get exportRows(){return X.value},get sortedRows(){return K.value},get filteredRowCount(){return Te.value},get locale(){return i.value},get sortCriteria(){return y.value},setSort:Ie,toggleSort:Fe,sortDirectionFor:Le,sortPriorityFor:Re,get filterValues(){return b.value},setFilterValue:fe,clearAllFilters:pe,get filterQuery(){return x.value},setFilterQuery:ue,get page(){return Y.value},setPage:ut,get pageCount(){return we.value?Ee.value:1},get groupByField(){return w.value},setGroupByField:dt,get groups(){return _e.value},get totals(){return ve.value},get selectedRows(){return ie.value},isRowSelected:ke,rowKeyOf:Oe,toggleRowSelection:Ae,get allSelected(){return je.value},get someSelected(){return Me.value},toggleSelectAll:Ne,clearSelection:Pe,get editableColumns(){return W.value},get editingRow(){return E.value},get isAddingRow(){return D.value},get rowDraft(){return O.value},get fieldErrors(){return k.value},get isValidating(){return A.value},isEditingRow:ze,isAnotherRowEditing:Be,startEditingRow:He,cancelRowEdit:Ue,setRowDraftValue:We,saveRow:Je,deleteRow:Ye,deleteSelectedRows:Xe,startAddingRow:Ze,cancelAddRow:Qe,saveNewRow:$e,validateCell:Ke,copyCellText:et,pasteAt:tt}}function m(e){return e.headerText||e.field}function h(e,t,n){return(0,c.formatCellValue)(t[e.field],e.type??`string`,e.format??``,n)}function g(e,t,n){return``+[t.map(e=>(0,c.escapeCsvValue)(m(e))).join(`,`),...e.map(e=>t.map(t=>(0,c.escapeCsvValue)(h(t,e,n))).join(`,`))].join(`\r
2
+ `)}function re(e,t,n,r=`inandu-grid`){(0,c.downloadBlob)(g(e,t,n),`${r}-export.csv`,`text/csv;charset=utf-8;`)}function _(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">${(0,c.escapeMarkup)(h(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">${(0,c.escapeMarkup)(m(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 v(e,t,n,r=`inandu-grid`){(0,c.downloadBlob)(_(e,t,n),`${r}-export.xls`,`application/vnd.ms-excel`)}function y(e,t,n,r=`inandu-grid`){let i=t.map(e=>`<th>${(0,c.escapeMarkup)(m(e))}</th>`).join(``),a=e.map(e=>`<tr>${t.map(t=>`<td>${(0,c.escapeMarkup)(h(t,e,n))}</td>`).join(``)}</tr>`).join(``),o=`<!doctype html><html><head><meta charset="utf-8"><title>${(0,c.escapeMarkup)(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 b(e,t,n,r=`inandu-grid`){let{jsPDF:i}=await import(`jspdf`),a=t.map(m),o=new i({orientation:`landscape`}),s=o.internal.pageSize.getWidth()-20,l=o.internal.pageSize.getHeight()-10,u=s/(t.length||1),d=10,f=(e,t)=>{o.setFont(`helvetica`,t?`bold`:`normal`);let n=10;e.forEach(e=>{o.text((0,c.truncatePdfText)(o,e,u-4),n+2,d+6),n+=u}),d+=8};f(a,!0);for(let r of e)d+8>l&&(o.addPage(),d=10,f(a,!0)),f(t.map(e=>h(e,r,n)),!1);(0,c.downloadBlob)(o.output(`blob`),`${r}-export.pdf`)}function x(e,t,n){let r=typeof CSS<`u`&&CSS.escape?CSS.escape(t):(0,c.escapeAttributeSelectorValue)(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),l=document.createElement(`span`);l.style.cssText=`position:absolute;left:-9999px;top:-9999px;visibility:hidden;white-space:pre;pointer-events:none`,l.style.font=s.font||`${s.fontStyle} ${s.fontWeight} ${s.fontSize}/${s.lineHeight} ${s.fontFamily}`,l.style.letterSpacing=s.letterSpacing,document.body.appendChild(l);let u=(parseFloat(s.paddingLeft)||0)+(parseFloat(s.paddingRight)||0)+2,d=0;l.textContent=n||t,d=Math.max(d,l.offsetWidth+44);for(let e of i)l.textContent=(e.textContent??``).replace(/\s+/g,` `).trim(),d=Math.max(d,l.offsetWidth+u);return l.remove(),i.length||a?Math.ceil(d):0}var S={class:`inandu-grid-edit-cell`},C=[`aria-label`,`checked`],w=[`aria-label`,`type`,`value`],T={key:2,class:`inandu-grid-field-error`},ie=(0,s.defineComponent)({__name:`EditCell`,props:{column:{},value:{},error:{},t:{type:Function}},emits:[`change`],setup(e,{emit:t}){let n=e,r=t,i=(0,s.computed)(()=>n.column.type??`string`),a=(0,s.computed)(()=>n.t(`MsgEditCell`,{column:n.column.headerText??n.column.field})),o=(0,s.computed)(()=>typeof n.value==`string`?n.value:``);return(t,n)=>((0,s.openBlock)(),(0,s.createElementBlock)(`span`,S,[i.value===`boolean`?((0,s.openBlock)(),(0,s.createElementBlock)(`input`,{key:0,"aria-label":a.value,type:`checkbox`,checked:!!e.value,onChange:n[0]||=e=>r(`change`,e.target.checked)},null,40,C)):((0,s.openBlock)(),(0,s.createElementBlock)(`input`,{key:1,"aria-label":a.value,type:i.value===`date`?`date`:i.value===`number`?`number`:`text`,value:o.value,onInput:n[1]||=e=>r(`change`,e.target.value)},null,40,w)),e.error?((0,s.openBlock)(),(0,s.createElementBlock)(`span`,T,(0,s.toDisplayString)(e.error),1)):(0,s.createCommentVNode)(``,!0)]))}}),E=(0,s.defineComponent)({name:`InanduGridRenderNodes`,props:{nodes:{type:null,default:null}},setup(e){return()=>e.nodes}}),D=[`data-row-index`,`aria-selected`],O={key:0},k=[`aria-label`,`title`],A={key:1},j=[`aria-label`],ae=[`aria-label`,`checked`],M=[`data-field`,`tabindex`,`onMousedown`,`onMouseenter`],N={key:3,class:`inandu-grid-row-actions`},P=[`disabled`],F=[`disabled`],I=[`disabled`],L=[`disabled`],oe={key:0,class:`inandu-grid-detail-row`},se=[`colspan`],R=(0,s.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(e,{emit:t}){let n=e,r=t,i=(0,s.computed)(()=>n.ctx.isEditingRow(n.row)),a=(0,s.computed)(()=>n.isRowExpanded?n.ctx.t(`MsgCollapseDetail`):n.ctx.t(`MsgExpandDetail`));function o(e){n.hasRowDragHandle&&(e.preventDefault(),r(`rowDragOver`))}function c(e){n.hasRowDragHandle&&(e.preventDefault(),r(`rowDrop`))}function l(e){r(`rowDragStart`),e.dataTransfer?.setData(`text/plain`,`row`)}function u(e,t){n.ctx.cellRangeSelection&&n.ctx.onCellRangeMouseDown(e,n.rowIndex,t)}function d(e){n.ctx.cellRangeSelection&&n.ctx.onCellRangeMouseEnter(n.rowIndex,e)}return(t,n)=>((0,s.openBlock)(),(0,s.createElementBlock)(s.Fragment,null,[(0,s.createElementVNode)(`tr`,{"data-row-index":e.rowIndex,"aria-selected":e.ctx.selectable?e.ctx.isRowSelected(e.row):void 0,class:(0,s.normalizeClass)(e.isDragOverRow?`inandu-drag-over`:void 0),onDragover:o,onDragleave:n[6]||=t=>e.hasRowDragHandle&&r(`rowDragLeave`),onDrop:c},[e.hasMasterDetail?((0,s.openBlock)(),(0,s.createElementBlock)(`td`,O,[(0,s.createElementVNode)(`button`,{type:`button`,class:`inandu-grid-detail-toggle`,"aria-label":a.value,title:a.value,onClick:n[0]||=e=>r(`toggleExpanded`)},(0,s.toDisplayString)(e.isRowExpanded?`▾`:`▸`),9,k)])):(0,s.createCommentVNode)(``,!0),e.hasRowDragHandle?((0,s.openBlock)(),(0,s.createElementBlock)(`td`,A,[(0,s.createElementVNode)(`span`,{class:`inandu-grid-row-drag-handle`,"aria-label":e.ctx.t(`MsgDragRow`),draggable:`true`,onDragstart:l},`⋮⋮`,40,j)])):(0,s.createCommentVNode)(``,!0),e.ctx.selectable?((0,s.openBlock)(),(0,s.createElementBlock)(`td`,{key:2,style:(0,s.normalizeStyle)(e.ctx.selectColumnStyle)},[(0,s.createElementVNode)(`input`,{"aria-label":e.ctx.t(`MsgSelectRow`,{index:e.rowIndex+1}),type:`checkbox`,checked:e.ctx.isRowSelected(e.row),onChange:n[1]||=t=>e.ctx.toggleRowSelection(e.row)},null,40,ae)],4)):(0,s.createCommentVNode)(``,!0),((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(e.ctx.columns,(t,n)=>((0,s.openBlock)(),(0,s.createElementBlock)(`td`,{key:t.field,style:(0,s.normalizeStyle)(e.ctx.columnStyle(t)),"data-field":t.field,tabindex:e.ctx.clipboard?0:void 0,class:(0,s.normalizeClass)(e.ctx.cellRangeSelection&&e.ctx.isCellInRange(e.rowIndex,n)?`inandu-cell-range-selected`:void 0),onMousedown:e=>u(e,n),onMouseenter:e=>d(n)},[i.value&&t.editable?((0,s.openBlock)(),(0,s.createElementBlock)(s.Fragment,{key:0},[e.ctx.editorContent(t,e.row)===void 0?((0,s.openBlock)(),(0,s.createBlock)(ie,{key:1,column:t,value:e.ctx.rowDraft[t.field],error:e.ctx.fieldErrors[t.field],t:e.ctx.t,onChange:n=>e.ctx.setRowDraftValue(t.field,n)},null,8,[`column`,`value`,`error`,`t`,`onChange`])):((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(E),{key:0,nodes:e.ctx.editorContent(t,e.row)},null,8,[`nodes`]))],64)):((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(E),{key:1,nodes:e.ctx.cellContent(t,e.row)},null,8,[`nodes`]))],46,M))),128)),e.ctx.hasRowActions?((0,s.openBlock)(),(0,s.createElementBlock)(`td`,N,[i.value?((0,s.openBlock)(),(0,s.createElementBlock)(s.Fragment,{key:0},[(0,s.createElementVNode)(`button`,{type:`button`,disabled:e.ctx.isValidating,onClick:n[2]||=t=>e.ctx.saveRow(e.row)},(0,s.toDisplayString)(e.ctx.t(`MsgSaveRow`)),9,P),(0,s.createElementVNode)(`button`,{type:`button`,disabled:e.ctx.isValidating,onClick:n[3]||=t=>e.ctx.cancelRowEdit()},(0,s.toDisplayString)(e.ctx.t(`MsgCancelRowEdit`)),9,F)],64)):((0,s.openBlock)(),(0,s.createElementBlock)(s.Fragment,{key:1},[e.ctx.editableColumnCount>0?((0,s.openBlock)(),(0,s.createElementBlock)(`button`,{key:0,type:`button`,disabled:e.ctx.isAnotherRowEditing(e.row),onClick:n[4]||=t=>e.ctx.startEditingRow(e.row)},(0,s.toDisplayString)(e.ctx.t(`MsgEditRow`)),9,I)):(0,s.createCommentVNode)(``,!0),e.ctx.deletable?((0,s.openBlock)(),(0,s.createElementBlock)(`button`,{key:1,type:`button`,disabled:e.ctx.isAnotherRowEditing(e.row),onClick:n[5]||=t=>e.ctx.deleteRow(e.row)},(0,s.toDisplayString)(e.ctx.t(`MsgDeleteRow`)),9,L)):(0,s.createCommentVNode)(``,!0)],64))])):(0,s.createCommentVNode)(``,!0)],42,D),e.hasMasterDetail&&e.isRowExpanded?((0,s.openBlock)(),(0,s.createElementBlock)(`tr`,oe,[(0,s.createElementVNode)(`td`,{colspan:e.ctx.columns.length+e.ctx.extraColumnCount},[(0,s.createVNode)((0,s.unref)(E),{nodes:e.ctx.detailContent(e.row)},null,8,[`nodes`])],8,se)])):(0,s.createCommentVNode)(``,!0)],64))}}),z={key:0,class:`inandu-grid-filter-range`},B=[`aria-label`,`value`],V=[`aria-label`,`value`],ce={key:1,class:`inandu-grid-filter-range`},H=[`aria-label`,`value`],U=[`aria-label`,`value`],le=[`aria-label`,`value`],W={value:``},ue=[`aria-label`,`value`],G=(0,s.defineComponent)({__name:`FilterControl`,props:{column:{},value:{},t:{type:Function}},emits:[`change`],setup(e,{emit:t}){let n=e,r=t,i=(0,s.computed)(()=>n.column.type??`string`),a=(0,s.computed)(()=>n.t(`MsgFilterColumn`,{column:n.column.headerText??n.column.field}));function o(e){return e.target.value}return(t,n)=>i.value===`number`?((0,s.openBlock)(),(0,s.createElementBlock)(`span`,z,[(0,s.createElementVNode)(`input`,{"aria-label":`${a.value} ${e.t(`MsgFilterMin`)}`,type:`number`,value:e.value?.min??``,onInput:n[0]||=e=>r(`change`,{min:o(e)})},null,40,B),(0,s.createElementVNode)(`input`,{"aria-label":`${a.value} ${e.t(`MsgFilterMax`)}`,type:`number`,value:e.value?.max??``,onInput:n[1]||=e=>r(`change`,{max:o(e)})},null,40,V)])):i.value===`date`?((0,s.openBlock)(),(0,s.createElementBlock)(`span`,ce,[(0,s.createElementVNode)(`input`,{"aria-label":`${a.value} ${e.t(`MsgFilterFrom`)}`,type:`date`,value:e.value?.from??``,onInput:n[2]||=e=>r(`change`,{from:o(e)})},null,40,H),(0,s.createElementVNode)(`input`,{"aria-label":`${a.value} ${e.t(`MsgFilterTo`)}`,type:`date`,value:e.value?.to??``,onInput:n[3]||=e=>r(`change`,{to:o(e)})},null,40,U)])):i.value===`boolean`?((0,s.openBlock)(),(0,s.createElementBlock)(`select`,{key:2,"aria-label":a.value,value:e.value?.bool??``,onChange:n[4]||=e=>r(`change`,{bool:o(e)})},[(0,s.createElementVNode)(`option`,W,(0,s.toDisplayString)(e.t(`MsgAll`)),1),n[6]||=(0,s.createElementVNode)(`option`,{value:`true`},`true`,-1),n[7]||=(0,s.createElementVNode)(`option`,{value:`false`},`false`,-1)],40,le)):((0,s.openBlock)(),(0,s.createElementBlock)(`input`,{key:3,"aria-label":a.value,type:`text`,value:e.value?.text??``,onInput:n[5]||=e=>r(`change`,{text:o(e)})},null,40,ue))}}),de={class:`inandu-grid-vue`},fe={class:`inandu-grid-sr-only`,role:`status`,"aria-live":`polite`},pe={class:`inandu-grid-search`},me=[`aria-label`,`placeholder`,`value`],he={class:`inandu-grid-toolbar`},ge={key:3,class:`inandu-grid-column-toggle`},K=[`aria-label`,`checked`,`onChange`],_e={key:0,class:`inandu-grid-group-by`},ve=[`value`],q={value:``},J=[`value`],ye=[`aria-rowcount`],be={key:0},xe={key:1},Se=[`aria-label`,`checked`,`indeterminate`],Ce=[`data-field`,`aria-sort`,`draggable`,`aria-label`,`onDragstart`,`onDragover`,`onDragleave`,`onDrop`,`onClick`],we={key:0,class:`inandu-grid-sort-priority`},Te=[`onMousedown`,`onDblclick`],Ee={key:3},Y={class:`inandu-grid-filter-row`},De={key:0},X={key:1},Oe={key:3},ke={key:0,class:`inandu-grid-new-row`},Ae={key:1,class:`inandu-grid-row-actions`},je=[`disabled`],Me=[`disabled`],Ne={key:1},Pe=[`colspan`],Fe=[`aria-selected`,`aria-level`,`aria-expanded`],Ie=[`aria-label`,`checked`,`onChange`],Le=[`aria-label`,`title`,`onClick`],Re={key:1,class:`inandu-grid-tree-toggle-spacer`,"aria-hidden":`true`},ze={key:1,class:`inandu-grid-row-actions`},Be={class:`inandu-grid-group-row`},Ve=[`colspan`],He={key:0,class:`inandu-grid-group-aggregates`},Ue={key:0,"aria-hidden":`true`},We=[`colspan`],Ge={key:1,"aria-hidden":`true`},Ke=[`colspan`],qe={key:0},Je={class:`inandu-grid-totals-row`},Ye={key:0},Xe={key:1},Ze={key:3},Qe={key:1,class:`inandu-grid-pagination`},$e=[`disabled`],et=[`disabled`],tt=(0,s.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:{},rowId:{},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(e,{expose:t,emit:n}){function r(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 i(e,t,n){return t>=e.minRow&&t<=e.maxRow&&n>=e.minCol&&n<=e.maxCol}let a=e,o=n,l=(0,s.useSlots)(),u=ne(()=>({rows:a.rows,columns:a.columns,locale:a.locale,lang:a.lang,pageSize:a.pageSize,selectable:a.selectable,deleteConfirmMessage:a.deleteConfirmMessage,bulkDeleteConfirmMessage:a.bulkDeleteConfirmMessage,onRowSave:e=>o(`rowSave`,e),onRowCreate:e=>o(`rowCreate`,e),onRowDelete:e=>o(`rowDelete`,e),onRowsDelete:e=>o(`rowsDelete`,e),onCellsPaste:e=>o(`cellsPaste`,e),onRowOrderChange:e=>o(`rowOrderChange`,e),treeChildrenKey:a.treeChildrenKey,treeDefaultExpanded:a.treeDefaultExpanded,singleDetailExpand:a.singleDetailExpand,extraRowFilter:a.extraRowFilter,rowId:a.rowId,virtualScroll:a.virtualScroll,serverSide:a.serverSide,onQueryChange:e=>o(`queryChange`,e)}));t({grid:u});let d=(0,s.computed)(()=>ee(a.lang??a.locale)),f=(0,s.shallowRef)(void 0),p=(0,s.shallowRef)(void 0),te=(0,s.shallowRef)(0),m=(0,s.shallowRef)(null);(0,s.watch)(()=>u.selectedRows,e=>o(`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 _(e,t){if(!a.autosize||!m.value)return;e.preventDefault(),e.stopPropagation();let n=x(m.value,t.field,t.headerText??t.field);n>0&&u.setColumnWidth(t.field,Math.min(c.MAX_COLUMN_WIDTH,n))}let S=(0,s.computed)(()=>a.cellRangeSelection&&!u.groupByField&&!u.hasVirtualScroll&&!u.hasTreeData),C=(0,s.shallowRef)(void 0),w=(0,s.shallowRef)(void 0),T=(0,s.shallowRef)([]),D=!1,O=(0,s.computed)(()=>C.value&&w.value?r(C.value,w.value):void 0),k=(0,s.computed)(()=>O.value?[...T.value,O.value]:T.value);function A(e,t){return k.value.some(n=>i(n,e,t))}function j(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,s.watch)([S,k,()=>u.visibleRows,()=>u.visibleColumns],()=>{S.value&&(o(`cellRangeChange`,O.value?j(O.value):void 0),o(`cellRangesChange`,k.value.map(j)))},{immediate:!0});function ae(e,t,n){e.button===0&&(D=!0,a.multiRange&&(e.ctrlKey||e.metaKey)&&!e.shiftKey?(O.value&&(T.value=[...T.value,O.value]),C.value={row:t,col:n}):e.shiftKey&&C.value||(T.value=[],C.value={row:t,col:n}),w.value={row:t,col:n})}function M(e,t){D&&(w.value={row:e,col:t})}let N=()=>{D=!1};(0,s.watch)(S,(e,t,n)=>{e&&(document.addEventListener(`mouseup`,N),n(()=>document.removeEventListener(`mouseup`,N)))},{immediate:!0}),(0,s.onBeforeUnmount)(()=>h?.());function P(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=>(0,c.formatCellValue)(e[t.field],t.type??`string`,t.format??``,a.locale)).join(` `)).join(`
3
+ `)}let F=(0,s.computed)(()=>u.visibleColumns.filter(e=>e.aggregate)),I=(0,s.computed)(()=>a.serverSide?[]:u.visibleColumns.filter(e=>e.groupable!==!1)),L=(0,s.computed)(()=>u.groups?u.groups.length===0:u.visibleRows.length===0);function oe(e){let t=u.sortDirectionFor(e);return t===`asc`?`ascending`:t===`desc`?`descending`:`none`}let se=(0,s.computed)(()=>a.serverSide||a.pageSize>0&&!u.groupByField||u.hasVirtualScroll?(a.serverSide?a.serverSide.totalItems:u.filteredRowCount)+2:void 0),z=(0,s.computed)(()=>u.editableColumns.length>0||a.deletable||a.creatable),B=(0,s.computed)(()=>a.rowReorder&&!u.groupByField&&!u.hasVirtualScroll),V=(0,s.computed)(()=>(!!l.detail||!!a.renderDetail)&&!u.groupByField&&!u.hasVirtualScroll),ce=(0,s.computed)(()=>+!!V.value+ +!!B.value+ +!!a.selectable+ +!!z.value),H=(0,s.computed)(()=>u.visibleColumns.length+ce.value),U=(0,s.computed)(()=>u.hasVirtualScroll?Math.max(0,Math.floor(te.value/a.virtualRowHeight)-a.overscan):0),le=(0,s.computed)(()=>u.hasVirtualScroll?Math.min(u.visibleRows.length,Math.ceil((te.value+a.height)/a.virtualRowHeight)+a.overscan):u.visibleRows.length),W=(0,s.computed)(()=>u.hasVirtualScroll?u.visibleRows.slice(U.value,le.value):u.visibleRows),ue=(0,s.computed)(()=>U.value*a.virtualRowHeight),tt=(0,s.computed)(()=>(u.visibleRows.length-le.value)*a.virtualRowHeight);function Z(e){u.hasVirtualScroll&&(te.value=e.currentTarget.scrollTop)}function nt(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 rt(e,t){u.onColumnDragStart(t),e.dataTransfer?.setData(`text/plain`,t)}function it(e,t){e.preventDefault(),f.value=t}function at(e){f.value===e&&(f.value=void 0)}function ot(e,t){e.preventDefault(),f.value=void 0,u.onColumnDrop(t)}let $=(0,s.computed)(()=>a.selectable?{position:`sticky`,left:`0px`,zIndex:1}:void 0);function st(e,t){let n=e.aggregate,r=t[e.field];if(!n||r===void 0)return``;let i=n===`count`?String(r):(0,c.formatCellValue)(r,`number`,e.format??``,a.locale);return`${e.headerText??e.field} ${c.AGGREGATE_SYMBOLS[n]}: ${i}`}function ct(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 lt(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):(0,c.formatCellValue)(t[e.field],e.type??`string`,e.format??``,a.locale)}function ut(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 dt(e){return l.detail?l.detail({row:e}):a.renderDetail?.(e)}function ft(e,t){u.toggleColumnVisibility(t),e.target.checked=!u.isColumnHidden(t)}function pt(e){if(!a.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`),o=r?.closest(`tr`)?.getAttribute(`data-row-index`);if(!r||!i||o==null)return;let s=Number(o);if(e.preventDefault(),t===`c`){let e=O.value,t=S.value&&e&&(e.minRow!==e.maxRow||e.minCol!==e.maxCol)?P(e):void 0;navigator.clipboard?.writeText(t??u.copyCellText(s,i))?.catch(()=>void 0)}else navigator.clipboard?.readText()?.then(e=>u.pasteAt(s,i,e)).catch(()=>void 0)}function mt(e){return u.rowKeyOf(e)}let ht=(0,s.computed)(()=>({columns:u.visibleColumns,t:d.value,selectable:a.selectable,selectColumnStyle:$.value,columnStyle:Q,isRowSelected:u.isRowSelected,toggleRowSelection:u.toggleRowSelection,hasRowActions:z.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:a.deletable,rowDraft:u.rowDraft,fieldErrors:u.fieldErrors,isValidating:u.isValidating,setRowDraftValue:u.setRowDraftValue,cellContent:lt,editorContent:ut,detailContent:dt,clipboard:a.clipboard,cellRangeSelection:S.value,isCellInRange:A,onCellRangeMouseDown:ae,onCellRangeMouseEnter:M,extraColumnCount:ce.value}));return(t,n)=>((0,s.openBlock)(),(0,s.createElementBlock)(`div`,de,[(0,s.createElementVNode)(`div`,fe,(0,s.toDisplayString)(L.value?d.value(`MsgNoData`):``),1),(0,s.createElementVNode)(`div`,pe,[(0,s.createElementVNode)(`input`,{"aria-label":d.value(`MsgFilterPlaceholder`),type:`text`,placeholder:`${d.value(`MsgFilterPlaceholder`)}…`,value:(0,s.unref)(u).filterQuery,onInput:n[0]||=e=>(0,s.unref)(u).setFilterQuery(e.target.value)},null,40,me)]),(0,s.createElementVNode)(`div`,he,[e.exportable?((0,s.openBlock)(),(0,s.createElementBlock)(s.Fragment,{key:0},[(0,s.createElementVNode)(`button`,{type:`button`,onClick:n[1]||=t=>(0,s.unref)(re)((0,s.unref)(u).exportRows,(0,s.unref)(u).visibleColumns,e.locale,e.exportFilenameBase)},(0,s.toDisplayString)(d.value(`MsgExportCsv`)),1),(0,s.createElementVNode)(`button`,{type:`button`,onClick:n[2]||=t=>(0,s.unref)(v)((0,s.unref)(u).exportRows,(0,s.unref)(u).visibleColumns,e.locale,e.exportFilenameBase)},(0,s.toDisplayString)(d.value(`MsgExportExcel`)),1),(0,s.createElementVNode)(`button`,{type:`button`,onClick:n[3]||=t=>void(0,s.unref)(b)((0,s.unref)(u).exportRows,(0,s.unref)(u).visibleColumns,e.locale,e.exportFilenameBase)},(0,s.toDisplayString)(d.value(`MsgExportPdf`)),1),(0,s.createElementVNode)(`button`,{type:`button`,onClick:n[4]||=t=>(0,s.unref)(y)((0,s.unref)(u).exportRows,(0,s.unref)(u).visibleColumns,e.locale,e.exportFilenameBase)},(0,s.toDisplayString)(d.value(`MsgPrint`)),1)],64)):(0,s.createCommentVNode)(``,!0),e.creatable&&(0,s.unref)(u).editableColumns.length>0&&!(0,s.unref)(u).isAddingRow?((0,s.openBlock)(),(0,s.createElementBlock)(`button`,{key:1,type:`button`,onClick:n[5]||=e=>(0,s.unref)(u).startAddingRow()},(0,s.toDisplayString)(d.value(`MsgAddRow`)),1)):(0,s.createCommentVNode)(``,!0),e.selectable&&e.deletable&&(0,s.unref)(u).selectedRows.size>0?((0,s.openBlock)(),(0,s.createElementBlock)(`button`,{key:2,type:`button`,onClick:n[6]||=e=>(0,s.unref)(u).deleteSelectedRows()},(0,s.toDisplayString)(d.value(`MsgDeleteSelected`,{count:(0,s.unref)(u).selectedRows.size})),1)):(0,s.createCommentVNode)(``,!0),e.columnToggle?((0,s.openBlock)(),(0,s.createElementBlock)(`details`,ge,[(0,s.createElementVNode)(`summary`,null,(0,s.toDisplayString)(d.value(`MsgToggleColumns`)),1),(0,s.createElementVNode)(`ul`,null,[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)((0,s.unref)(u).hideableColumns,e=>((0,s.openBlock)(),(0,s.createElementBlock)(`li`,{key:e.field},[(0,s.createElementVNode)(`label`,null,[(0,s.createElementVNode)(`input`,{"aria-label":d.value(`MsgToggleColumn`,{column:e.headerText??e.field}),type:`checkbox`,checked:!(0,s.unref)(u).isColumnHidden(e.field),onChange:t=>ft(t,e.field)},null,40,K),(0,s.createTextVNode)(` `+(0,s.toDisplayString)(e.headerText??e.field),1)])]))),128))])])):(0,s.createCommentVNode)(``,!0)]),I.value.length>0?((0,s.openBlock)(),(0,s.createElementBlock)(`div`,_e,[(0,s.createElementVNode)(`label`,null,[(0,s.createTextVNode)((0,s.toDisplayString)((0,s.unref)(u).groupByField?d.value(`MsgGroupedBy`,{column:I.value.find(e=>e.field===(0,s.unref)(u).groupByField)?.headerText??(0,s.unref)(u).groupByField}):d.value(`MsgGroupByHint`))+` `,1),(0,s.createElementVNode)(`select`,{"aria-label":`Group by`,value:(0,s.unref)(u).groupByField??``,onChange:n[7]||=e=>(0,s.unref)(u).setGroupByField(e.target.value||void 0)},[(0,s.createElementVNode)(`option`,q,(0,s.toDisplayString)(d.value(`MsgCancelGrouping`)),1),((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(I.value,e=>((0,s.openBlock)(),(0,s.createElementBlock)(`option`,{key:e.field,value:e.field},(0,s.toDisplayString)(e.headerText??e.field),9,J))),128))],40,ve)])])):(0,s.createCommentVNode)(``,!0),(0,s.createElementVNode)(`div`,{class:(0,s.normalizeClass)((0,s.unref)(u).hasVirtualScroll?`inandu-grid-viewport`:void 0),style:(0,s.normalizeStyle)((0,s.unref)(u).hasVirtualScroll?{height:`${e.height}px`,overflow:`auto`}:void 0),onScroll:Z},[(0,s.createElementVNode)(`table`,{ref_key:`tableRef`,ref:m,class:`inandu-grid`,"aria-rowcount":se.value,onKeydown:pt},[(0,s.createElementVNode)(`thead`,null,[(0,s.createElementVNode)(`tr`,null,[V.value?((0,s.openBlock)(),(0,s.createElementBlock)(`th`,be)):(0,s.createCommentVNode)(``,!0),B.value?((0,s.openBlock)(),(0,s.createElementBlock)(`th`,xe)):(0,s.createCommentVNode)(``,!0),e.selectable?((0,s.openBlock)(),(0,s.createElementBlock)(`th`,{key:2,style:(0,s.normalizeStyle)($.value)},[(0,s.createElementVNode)(`input`,{"aria-label":d.value(`MsgSelectAll`),type:`checkbox`,checked:(0,s.unref)(u).allSelected,indeterminate:(0,s.unref)(u).someSelected,onChange:n[8]||=e=>(0,s.unref)(u).toggleSelectAll()},null,40,Se)],4)):(0,s.createCommentVNode)(``,!0),((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)((0,s.unref)(u).visibleColumns,e=>((0,s.openBlock)(),(0,s.createElementBlock)(`th`,{key:e.field,"data-field":e.field,"aria-sort":oe(e.field),style:(0,s.normalizeStyle)(Q(e)),class:(0,s.normalizeClass)(f.value===e.field?`inandu-drag-over`:void 0),draggable:e.reorder!==!1,"aria-label":d.value(`MsgSortBy`,{column:e.headerText??e.field}),onDragstart:t=>rt(t,e.field),onDragover:t=>it(t,e.field),onDragleave:t=>at(e.field),onDrop:t=>ot(t,e.field),onClick:t=>(0,s.unref)(u).toggleSort(e.field,t.shiftKey)},[(0,s.createVNode)((0,s.unref)(E),{nodes:ct(e)},null,8,[`nodes`]),(0,s.createTextVNode)((0,s.toDisplayString)((0,s.unref)(u).sortDirectionFor(e.field)?(0,s.unref)(u).sortDirectionFor(e.field)===`asc`?` ▲`:` ▼`:``),1),(0,s.unref)(u).sortPriorityFor(e.field)===void 0?(0,s.createCommentVNode)(``,!0):((0,s.openBlock)(),(0,s.createElementBlock)(`sup`,we,(0,s.toDisplayString)((0,s.unref)(u).sortPriorityFor(e.field)),1)),(0,s.createElementVNode)(`span`,{class:`inandu-grid-resize-handle`,draggable:`false`,onMousedown:t=>g(t,e.field),onDblclick:t=>_(t,e),onClick:n[9]||=(0,s.withModifiers)(()=>{},[`stop`])},null,40,Te)],46,Ce))),128)),z.value?((0,s.openBlock)(),(0,s.createElementBlock)(`th`,Ee)):(0,s.createCommentVNode)(``,!0)]),(0,s.createElementVNode)(`tr`,Y,[V.value?((0,s.openBlock)(),(0,s.createElementBlock)(`th`,De)):(0,s.createCommentVNode)(``,!0),B.value?((0,s.openBlock)(),(0,s.createElementBlock)(`th`,X)):(0,s.createCommentVNode)(``,!0),e.selectable?((0,s.openBlock)(),(0,s.createElementBlock)(`th`,{key:2,style:(0,s.normalizeStyle)($.value)},null,4)):(0,s.createCommentVNode)(``,!0),((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)((0,s.unref)(u).visibleColumns,e=>((0,s.openBlock)(),(0,s.createElementBlock)(`th`,{key:e.field,style:(0,s.normalizeStyle)(Q(e))},[(0,s.createVNode)(G,{column:e,value:(0,s.unref)(u).filterValues[e.field],t:d.value,onChange:t=>nt(e.field,t)},null,8,[`column`,`value`,`t`,`onChange`])],4))),128)),z.value?((0,s.openBlock)(),(0,s.createElementBlock)(`th`,Oe)):(0,s.createCommentVNode)(``,!0)])]),(0,s.createElementVNode)(`tbody`,null,[(0,s.unref)(u).isAddingRow?((0,s.openBlock)(),(0,s.createElementBlock)(`tr`,ke,[e.selectable?((0,s.openBlock)(),(0,s.createElementBlock)(`td`,{key:0,style:(0,s.normalizeStyle)($.value)},null,4)):(0,s.createCommentVNode)(``,!0),((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)((0,s.unref)(u).visibleColumns,e=>((0,s.openBlock)(),(0,s.createElementBlock)(`td`,{key:e.field,style:(0,s.normalizeStyle)(Q(e))},[e.editable?((0,s.openBlock)(),(0,s.createElementBlock)(s.Fragment,{key:0},[ut(e,{})===void 0?((0,s.openBlock)(),(0,s.createBlock)(ie,{key:1,column:e,value:(0,s.unref)(u).rowDraft[e.field],error:(0,s.unref)(u).fieldErrors[e.field],t:d.value,onChange:t=>(0,s.unref)(u).setRowDraftValue(e.field,t)},null,8,[`column`,`value`,`error`,`t`,`onChange`])):((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(E),{key:0,nodes:ut(e,{})},null,8,[`nodes`]))],64)):(0,s.createCommentVNode)(``,!0)],4))),128)),z.value?((0,s.openBlock)(),(0,s.createElementBlock)(`td`,Ae,[(0,s.createElementVNode)(`button`,{type:`button`,disabled:(0,s.unref)(u).isValidating,onClick:n[10]||=e=>void(0,s.unref)(u).saveNewRow()},(0,s.toDisplayString)(d.value(`MsgSaveRow`)),9,je),(0,s.createElementVNode)(`button`,{type:`button`,disabled:(0,s.unref)(u).isValidating,onClick:n[11]||=e=>(0,s.unref)(u).cancelAddRow()},(0,s.toDisplayString)(d.value(`MsgCancelRowEdit`)),9,Me)])):(0,s.createCommentVNode)(``,!0)])):(0,s.createCommentVNode)(``,!0),L.value?((0,s.openBlock)(),(0,s.createElementBlock)(`tr`,Ne,[(0,s.createElementVNode)(`td`,{colspan:H.value},(0,s.toDisplayString)(d.value(`MsgNoData`)),9,Pe)])):(0,s.unref)(u).hasTreeData?((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,{key:2},(0,s.renderList)((0,s.unref)(u).treeRows,(t,n)=>((0,s.openBlock)(),(0,s.createElementBlock)(`tr`,{key:mt(t.row),"aria-selected":e.selectable?(0,s.unref)(u).isRowSelected(t.row):void 0,"aria-level":t.depth+1,"aria-expanded":t.expandable?(0,s.unref)(u).isTreeRowExpanded(t.row):void 0},[e.selectable?((0,s.openBlock)(),(0,s.createElementBlock)(`td`,{key:0,style:(0,s.normalizeStyle)($.value)},[(0,s.createElementVNode)(`input`,{"aria-label":d.value(`MsgSelectRow`,{index:n+1}),type:`checkbox`,checked:(0,s.unref)(u).isRowSelected(t.row),onChange:e=>(0,s.unref)(u).toggleRowSelection(t.row)},null,40,Ie)],4)):(0,s.createCommentVNode)(``,!0),((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)((0,s.unref)(u).visibleColumns,(e,n)=>((0,s.openBlock)(),(0,s.createElementBlock)(`td`,{key:e.field,style:(0,s.normalizeStyle)(Q(e))},[n===0?((0,s.openBlock)(),(0,s.createElementBlock)(`span`,{key:0,class:`inandu-grid-tree-cell`,style:(0,s.normalizeStyle)({paddingInlineStart:`${t.depth*16}px`})},[t.expandable?((0,s.openBlock)(),(0,s.createElementBlock)(`button`,{key:0,type:`button`,class:`inandu-grid-tree-toggle`,"aria-label":(0,s.unref)(u).isTreeRowExpanded(t.row)?d.value(`MsgCollapseDetail`):d.value(`MsgExpandDetail`),title:(0,s.unref)(u).isTreeRowExpanded(t.row)?d.value(`MsgCollapseDetail`):d.value(`MsgExpandDetail`),onClick:e=>(0,s.unref)(u).toggleTreeRow(t.row)},(0,s.toDisplayString)((0,s.unref)(u).isTreeRowExpanded(t.row)?`▾`:`▸`),9,Le)):((0,s.openBlock)(),(0,s.createElementBlock)(`span`,Re)),(0,s.createVNode)((0,s.unref)(E),{nodes:lt(e,t.row)},null,8,[`nodes`])],4)):((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(E),{key:1,nodes:lt(e,t.row)},null,8,[`nodes`]))],4))),128)),z.value?((0,s.openBlock)(),(0,s.createElementBlock)(`td`,ze)):(0,s.createCommentVNode)(``,!0)],8,Fe))),128)):(0,s.unref)(u).groups?((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,{key:3},(0,s.renderList)((0,s.unref)(u).groups,e=>((0,s.openBlock)(),(0,s.createElementBlock)(s.Fragment,{key:e.key},[(0,s.createElementVNode)(`tr`,Be,[(0,s.createElementVNode)(`td`,{colspan:H.value},[(0,s.createElementVNode)(`strong`,null,(0,s.toDisplayString)(e.key),1),(0,s.createTextVNode)(` (`+(0,s.toDisplayString)(e.rows.length)+`) `,1),F.value.length>0?((0,s.openBlock)(),(0,s.createElementBlock)(`span`,He,[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(F.value,t=>((0,s.openBlock)(),(0,s.createElementBlock)(`span`,{key:t.field},` · `+(0,s.toDisplayString)(st(t,e.aggregates)),1))),128))])):(0,s.createCommentVNode)(``,!0)],8,Ve)]),((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(e.rows,(e,t)=>((0,s.openBlock)(),(0,s.createBlock)(R,{key:mt(e),ctx:ht.value,row:e,"row-index":t},null,8,[`ctx`,`row`,`row-index`]))),128))],64))),128)):((0,s.openBlock)(),(0,s.createElementBlock)(s.Fragment,{key:4},[(0,s.unref)(u).hasVirtualScroll&&ue.value>0?((0,s.openBlock)(),(0,s.createElementBlock)(`tr`,Ue,[(0,s.createElementVNode)(`td`,{style:(0,s.normalizeStyle)({height:`${ue.value}px`,padding:0,border:`none`}),colspan:H.value},null,12,We)])):(0,s.createCommentVNode)(``,!0),((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(W.value,(e,t)=>((0,s.openBlock)(),(0,s.createBlock)(R,{key:mt(e),ctx:ht.value,row:e,"row-index":U.value+t,"has-row-drag-handle":B.value,"is-drag-over-row":(0,s.unref)(u).draggingRow!==void 0&&p.value===e,"has-master-detail":V.value,"is-row-expanded":(0,s.unref)(u).isRowExpanded(e),onRowDragStart:t=>(0,s.unref)(u).onRowDragStart(e),onRowDragOver:t=>p.value=e,onRowDragLeave:t=>p.value===e&&(p.value=void 0),onRowDrop:t=>(0,s.unref)(u).onRowDrop(e),onToggleExpanded:t=>(0,s.unref)(u).toggleRowExpanded(e)},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,s.unref)(u).hasVirtualScroll&&tt.value>0?((0,s.openBlock)(),(0,s.createElementBlock)(`tr`,Ge,[(0,s.createElementVNode)(`td`,{style:(0,s.normalizeStyle)({height:`${tt.value}px`,padding:0,border:`none`}),colspan:H.value},null,12,Ke)])):(0,s.createCommentVNode)(``,!0)],64))]),F.value.length>0&&!(0,s.unref)(u).hasVirtualScroll?((0,s.openBlock)(),(0,s.createElementBlock)(`tfoot`,qe,[(0,s.createElementVNode)(`tr`,Je,[V.value?((0,s.openBlock)(),(0,s.createElementBlock)(`td`,Ye)):(0,s.createCommentVNode)(``,!0),B.value?((0,s.openBlock)(),(0,s.createElementBlock)(`td`,Xe)):(0,s.createCommentVNode)(``,!0),e.selectable?((0,s.openBlock)(),(0,s.createElementBlock)(`td`,{key:2,style:(0,s.normalizeStyle)($.value)},null,4)):(0,s.createCommentVNode)(``,!0),((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)((0,s.unref)(u).visibleColumns,e=>((0,s.openBlock)(),(0,s.createElementBlock)(`td`,{key:e.field,style:(0,s.normalizeStyle)(Q(e))},(0,s.toDisplayString)(e.aggregate?st(e,(0,s.unref)(u).totals):``),5))),128)),z.value?((0,s.openBlock)(),(0,s.createElementBlock)(`td`,Ze)):(0,s.createCommentVNode)(``,!0)])])):(0,s.createCommentVNode)(``,!0)],40,ye)],38),e.pageSize>0&&!(0,s.unref)(u).groupByField&&!(0,s.unref)(u).hasVirtualScroll?((0,s.openBlock)(),(0,s.createElementBlock)(`div`,Qe,[(0,s.createElementVNode)(`button`,{type:`button`,disabled:(0,s.unref)(u).page===0,onClick:n[12]||=e=>(0,s.unref)(u).setPage((0,s.unref)(u).page-1)},`‹ `+(0,s.toDisplayString)(d.value(`MsgPreviousPage`)),9,$e),(0,s.createElementVNode)(`span`,null,(0,s.toDisplayString)(d.value(`MsgPageOf`,{page:(0,s.unref)(u).page+1,total:(0,s.unref)(u).pageCount}))+` (`+(0,s.toDisplayString)((0,s.unref)(u).filteredRowCount)+`)`,1),(0,s.createElementVNode)(`button`,{type:`button`,disabled:(0,s.unref)(u).page>=(0,s.unref)(u).pageCount-1,onClick:n[13]||=e=>(0,s.unref)(u).setPage((0,s.unref)(u).page+1)},(0,s.toDisplayString)(d.value(`MsgNextPage`))+` ›`,9,et)])):(0,s.createCommentVNode)(``,!0)]))}}),Z=new Set;function nt(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);let i=Object.values(e.filterValues).some(e=>!!e.values&&e.values.some(e=>e===``||e.includes(`,`)||e!==e.trim()));for(let[t,r]of Object.entries(e.filterValues))if(r.values&&r.values.length===0)n.set(`${t}_none`,`1`);else if((0,c.hasMeaningfulFilterValue)(r)){if(r.values&&r.values.length>0){if(i)for(let e of r.values)n.append(`${t}_in`,e);else n.set(`${t}_in`,r.values.join(`,`))}else 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)}i&&n.set(`inEncoding`,`repeat`);for(let[e,r]of Object.entries(t.extraParams??{}))n.has(e)&&!Z.has(e)&&(Z.add(e),console.warn(`[inandu-grid] extraParams.${e} replaces the grid's own "${e}" query parameter.`)),n.set(e,r);return n}function Q(e){let t=()=>(0,s.toValue)(e),n=(0,s.shallowRef)(void 0),r=(0,s.shallowRef)([]),i=(0,s.shallowRef)(0),a=(0,s.shallowRef)(!1),o=(0,s.shallowRef)(void 0),c=(0,s.shallowRef)(0),l=!1,u;function d(e){u?.();let n=new AbortController,s=async()=>{c(!0),o.value=void 0;try{let a=t(),o=nt(e,{extraParams:a.extraParams}).toString(),s=a.url+(a.url.includes(`?`)?`&`:`?`)+o,c={...a.init,signal:n.signal},l=await(a.fetcher??fetch)(s,c);if(!l.ok)throw Error(`Request failed: ${l.status} ${l.statusText}`);let u=await l.json();if(n.signal.aborted)return;r.value=u.data??[],i.value=u.total??0}catch(e){if(n.signal.aborted)return;o.value=e instanceof Error?e:Error(String(e))}finally{n.signal.aborted||c(!1)}};function c(e){a.value=e}let d=l?t().debounceMs??200:0;l=!0;let f=setTimeout(s,d);u=()=>{clearTimeout(f),n.abort()}}return(0,s.watch)([n,c],()=>{n.value&&d(n.value)}),(0,s.watch)(()=>{let e=t();return`${e.url}|${JSON.stringify(e.extraParams??{})}`},()=>{n.value&&d(n.value)}),(0,s.onScopeDispose)(()=>u?.(),!0),{rows:r,total:i,loading:a,error:o,setQuery:e=>{n.value=e},reload:()=>{c.value+=1}}}Object.defineProperty(exports,"AGGREGATE_SYMBOLS",{enumerable:!0,get:function(){return c.AGGREGATE_SYMBOLS}}),Object.defineProperty(exports,"INANDU_GRID_TRANSLATIONS",{enumerable:!0,get:function(){return c.INANDU_GRID_TRANSLATIONS}}),exports.InanduGrid=tt,exports.buildCsv=g,exports.buildExcelXml=_,exports.buildInanduGridQuery=nt,Object.defineProperty(exports,"compareCellValues",{enumerable:!0,get:function(){return c.compareCellValues}}),Object.defineProperty(exports,"computeGroupAggregates",{enumerable:!0,get:function(){return c.computeGroupAggregates}}),exports.createTranslator=ee,Object.defineProperty(exports,"en",{enumerable:!0,get:function(){return c.en}}),Object.defineProperty(exports,"es",{enumerable:!0,get:function(){return c.es}}),exports.exportCsv=re,exports.exportExcel=v,exports.exportPdf=b,Object.defineProperty(exports,"formatCellValue",{enumerable:!0,get:function(){return c.formatCellValue}}),Object.defineProperty(exports,"fr",{enumerable:!0,get:function(){return c.fr}}),exports.interpolate=p,Object.defineProperty(exports,"it",{enumerable:!0,get:function(){return c.it}}),Object.defineProperty(exports,"matchesColumnFilter",{enumerable:!0,get:function(){return c.matchesColumnFilter}}),exports.measureColumnContentWidth=x,exports.printTable=y,exports.useInanduGrid=ne,exports.useInanduGridServer=Q,Object.defineProperty(exports,"zh",{enumerable:!0,get:function(){return c.zh}});