@inandu-solutions/grid-vue 0.2.2 → 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
- kept in sync feature-for-feature 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)
@@ -59,7 +63,7 @@ this isn't that — see [Not included](#not-included) below.
59
63
 
60
64
  ## Angular and React versions
61
65
 
62
- [`inandu-grid`](https://github.com/inandusolutions/inandu-grid) is the original, feature-complete,
66
+ [`inandu-grid`](https://github.com/inandusolutions/inandu-grid) is the original, reference implementation,
63
67
  MIT-licensed Angular grid this repo is ported from, and
64
68
  [`inandu-grid-react`](https://github.com/inandusolutions/inandu-grid-react) is its React port — same
65
69
  feature set, same core logic, adapted for Vue's composition API (`computed`/`shallowRef`, SFCs,
@@ -85,10 +89,10 @@ which also has tabs for inline editing and tree data.
85
89
 
86
90
  ## Features
87
91
 
88
- **Feature-complete with grid-angular and grid-react.** 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
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,
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
 
@@ -107,7 +111,7 @@ composable — covers:
107
111
  - Master-detail — a `#detail="{ row }"` slot (or a `renderDetail` render-function prop)
108
112
  - Custom cell / header / edit-control rendering per column — `#cell-<field>`, `#header-<field>` and
109
113
  `#editor-<field>` scoped slots, or `renderCell` / `renderHeader` / `renderEditor` render functions
110
- on the column definition — without losing sorting, resizing, or validation
114
+ on the column definition — without losing sorting, resizing, or validation. Note: the editor's `value` is always the raw control shape (text), so keep array/object cell values as delimited strings (or read `row[field]`) - see `InanduEditRenderContext`.
111
115
  - Excel-style cell range selection (`cell-range-selection`, `multi-range`) — click-and-drag or
112
116
  shift-click across cells to select a rectangular block; `Ctrl+C` copies the whole range as TSV
113
117
  when `clipboard` is also on
@@ -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;
@@ -216,9 +225,9 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
216
225
  locale: string;
217
226
  pageSize: number;
218
227
  treeDefaultExpanded: number | "none" | "all";
228
+ height: number;
219
229
  exportFilenameBase: string;
220
230
  virtualRowHeight: number;
221
- height: number;
222
231
  overscan: number;
223
232
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
224
233
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -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
  /**
@@ -58,7 +59,11 @@ export interface InanduHeaderRenderContext {
58
59
  title: string;
59
60
  field: string;
60
61
  }
61
- /** Passed to a column's `renderEditor` / `#editor-<field>` slot. `row` is `{}` for the add-new-row draft. */
62
+ /**
63
+ * Passed to a column's `renderEditor` / `#editor-<field>` slot. `row` is `{}` for the add-new-row draft.
64
+ *
65
+ * Because `value` is always the raw control shape, a cell that holds an array or an object arrives as text (`String(raw)`: `['a','b']` becomes `"a,b"`, `{ ... }` becomes `"[object Object]"`). Store such values as strings (comma-joined, `from..to`, ...) and let the editor parse and format them - as grid-pro's multiselect (`joinWith`) and date-range (`sep`) editors do - or read the original typed value from `row[field]`.
66
+ */
62
67
  export interface InanduEditRenderContext {
63
68
  value: unknown;
64
69
  row: InanduGridRow;
@@ -148,8 +153,15 @@ export interface UseInanduGridOptions {
148
153
  * `<InanduGrid>` component's job, not this composable's — it has no way to observe scroll state itself.
149
154
  */
150
155
  virtualScroll?: boolean;
151
- /** An extra per-row predicate ANDed onto the free-text + column filters — same as grid-angular's `extraRowFilter`. Lets a caller layer its own filtering (e.g. an advanced-filter query) on top of the grid's own. Unset: no extra filtering. */
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. */
152
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;
153
165
  /**
154
166
  * Server-side mode: `rows` is already the current page, as sorted/filtered/paged by the server
155
167
  * (see `useInanduGridServer`). The composable keeps owning the sort / filter / search / page
@@ -230,6 +242,7 @@ export declare function useInanduGrid(options: MaybeRefOrGetter<UseInanduGridOpt
230
242
  readonly totals: Record<string, number>;
231
243
  readonly selectedRows: Set<InanduGridRow>;
232
244
  isRowSelected: (row: InanduGridRow) => boolean;
245
+ rowKeyOf: (row: InanduGridRow) => string;
233
246
  toggleRowSelection: (row: InanduGridRow) => void;
234
247
  readonly allSelected: boolean;
235
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)({}),oe=(0,e.shallowRef)({}),R=(0,e.shallowRef)(void 0),z=(0,e.shallowRef)(new Set),B=(0,e.shallowRef)(new Set),se,V=(0,e.computed)(()=>re(te.value??f.value)),H=(0,e.computed)(()=>{let e=F.value;if(!e)return a.value;let t=new Map(a.value.map(e=>[e.field,e])),n=[];for(let r of e){let e=t.get(r);e&&(n.push(e),t.delete(r))}return n.push(...t.values()),n}),U=(0,e.computed)(()=>P.value.size===0?H.value:H.value.filter(e=>!P.value.has(e.field))),ce=(0,e.computed)(()=>H.value.filter(e=>e.hideable!==!1));function le(e){let t=H.value.map(e=>e.field),n=new Set(t),r=e.filter(e=>n.has(e)),i=new Set(r),a=t.filter(e=>!i.has(e));F.value=[...r,...a]}function ue(e){I.value=e}function de(e){let t=I.value;if(I.value=void 0,!t||t===e)return;let n=H.value.find(e=>e.field===t);if(!n||n.reorder===!1)return;let r=H.value.map(e=>e.field),i=r.indexOf(t),a=r.indexOf(e);i!==-1&&a!==-1&&(r.splice(i,1),i<a&&a--,r.splice(a,0,t),le(r))}function fe(e){return P.value.has(e)}function W(e){if(P.value.has(e)){let t=new Set(P.value);t.delete(e),P.value=t}else U.value.length<=1||(P.value=new Set(P.value).add(e))}let pe=(0,e.computed)(()=>U.value.filter(e=>e.editable));function me(e){E.value=0,T.value=e}let G=(0,e.computed)(()=>new Map(U.value.map(e=>[e.field,ie(e)]))),he=(0,e.computed)(()=>U.value.filter(e=>e.aggregate).map(e=>G.value.get(e.field)));function ge(e,t){E.value=0,w.value={...w.value,[e]:t}}function K(){E.value=0,w.value={}}function _e(e,t){return U.value.some(n=>{let r=G.value.get(n.field);return o(e[n.field],r.type(),r.format(),f.value).toLowerCase().includes(t)})}function ve(e,t){return t.every(([t,n])=>{let r=G.value.get(t);return!r||d(r,e,n,f.value)})}function q(e,t){for(let{field:n,direction:r}of C.value){let i=s(e[n],t[n],f.value)*(r===`asc`?1:-1);if(i!==0)return i}return 0}let J=(0,e.computed)(()=>{let e=i.value;if(x.value)return e;let t=T.value.trim().toLowerCase();t&&(e=e.filter(e=>_e(e,t)));let n=Object.entries(w.value).filter(([,e])=>u(e));n.length>0&&(e=e.filter(e=>ve(e,n)));let r=y.value;return r&&(e=e.filter(r)),C.value.length>0&&(e=[...e].sort(q)),e}),ye=(0,e.computed)(()=>{let e=O.value;if(!e)return null;let t=G.value.get(e);if(!t)return null;let n=new Map;for(let r of J.value){let i=o(r[e],t.type(),t.format(),f.value),a=n.get(i);a?a.push(r):n.set(i,[r])}return Array.from(n.entries()).map(([e,t])=>({key:e,rows:t,aggregates:p(t,he.value)}))}),be=(0,e.computed)(()=>p(J.value,he.value)),Y=(0,e.computed)(()=>!!ne.value&&!O.value&&!v.value&&!x.value);function X(e){let t=ne.value,n=t?e[t]:void 0;return Array.isArray(n)?n:void 0}let xe=(0,e.computed)(()=>{if(!Y.value)return[];let e=T.value.trim().toLowerCase(),t=Object.entries(w.value).filter(([,e])=>u(e)),n=y.value,r=e||t.length>0||n?r=>e&&!_e(r,e)||!ve(r,t)?!1:!n||n(r):void 0,a=C.value.length>0?q:void 0,o=z.value;return c(i.value,{getChildren:X,isExpanded:e=>o.has(e),match:r,compare:a})});(0,e.watch)([Y,i,_],()=>{if(!Y.value||se===i.value)return;se=i.value;let e=_.value;if(e===`none`){z.value=new Set;return}let t=new Set;if(e===`all`)for(let e of l(i.value,X))X(e)?.length&&t.add(e);else{let n=(r,i)=>{if(!(i>=e))for(let e of r){let r=X(e);r?.length&&(t.add(e),n(r,i+1))}};n(i.value,0)}z.value=t},{immediate:!0,flush:`sync`});function Se(e){return z.value.has(e)}function Ce(e){let t=new Set(z.value);t.has(e)?t.delete(e):t.add(e),z.value=t}function we(e){if(!e){z.value=new Set;return}let t=new Set;for(let e of l(i.value,X))X(e)?.length&&t.add(e);z.value=t}let Te=(0,e.computed)(()=>v.value&&!O.value&&!x.value),Ee=(0,e.computed)(()=>h.value>0&&!O.value&&!Y.value&&!Te.value),De=(0,e.computed)(()=>b.value?b.value.totalItems:J.value.length),Oe=(0,e.computed)(()=>Ee.value?Math.max(1,Math.ceil(De.value/h.value)):1),ke=(0,e.computed)(()=>x.value?E.value:Math.min(E.value,Oe.value-1)),Z=(0,e.computed)(()=>{if(Y.value)return xe.value.map(e=>e.row);if(!Ee.value||x.value)return J.value;let e=ke.value*h.value;return J.value.slice(e,e+h.value)});(0,e.watch)([x,ke,h,C,w,T],()=>{x.value&&S().onQueryChange?.({page:ke.value,pageSize:h.value,sortCriteria:C.value,filterValues:w.value,filterQuery:T.value})},{immediate:!0});let Q=(0,e.computed)(()=>O.value?J.value:Z.value);function Ae(e){return k.value.has(e)}function je(e){let t=new Set(k.value);t.has(e)?t.delete(e):t.add(e),k.value=t}let Me=(0,e.computed)(()=>Q.value.length>0&&Q.value.every(e=>k.value.has(e))),Ne=(0,e.computed)(()=>!Me.value&&Q.value.some(e=>k.value.has(e)));function Pe(){let e=!Me.value,t=new Set(k.value);for(let n of Q.value)e?t.add(n):t.delete(n);k.value=t}function Fe(){k.value=new Set}function Ie(e,t=!1){E.value=0;let n=C.value,r=n.findIndex(t=>t.field===e);if(t){if(r===-1){C.value=[...n,{field:e,direction:`asc`}];return}let t=[...n];t[r]={field:e,direction:n[r].direction===`asc`?`desc`:`asc`},C.value=t}else n.length===1&&n[0].field===e?C.value=[{field:e,direction:n[0].direction===`asc`?`desc`:`asc`}]:C.value=[{field:e,direction:`asc`}]}function Le(e){C.value=e}function Re(e){return C.value.find(t=>t.field===e)?.direction}function ze(e){if(C.value.length<2)return;let t=C.value.findIndex(t=>t.field===e);return t===-1?void 0:t+1}function Be(e){return A.value===e}function Ve(e){return j.value?!0:A.value!==void 0&&A.value!==e}function He(e,t){let n=t.type??`string`;if(n===`boolean`)return!!e[t.field];if(n===`date`){let n=r(e[t.field]);if(Number.isNaN(n.getTime()))return``;let i=e=>String(e).padStart(2,`0`);return`${n.getFullYear()}-${i(n.getMonth()+1)}-${i(n.getDate())}`}let i=e[t.field];return i==null?``:String(i)}function Ue(e){let t={};for(let n of pe.value)t[n.field]=He(e,n);A.value=e,M.value=t,N.value={}}function We(){A.value=void 0,M.value={},N.value={}}function Ge(e,t){M.value={...M.value,[e]:t}}function Ke(e,t,n,r){let i=V.value;if(e.required&&(t===``||t==null))return i(`MsgValidationRequired`);if((e.type??`string`)===`number`&&typeof n==`number`){if(e.min!==void 0&&n<e.min)return i(`MsgValidationMin`,{min:e.min});if(e.max!==void 0&&n>e.max)return i(`MsgValidationMax`,{max:e.max})}if(e.pattern&&typeof t==`string`&&t!==``){let n;try{n=new RegExp(e.pattern)}catch{n=void 0}if(n&&!n.test(t))return i(`MsgValidationPattern`)}return e.validator?e.validator(n,r):null}function qe(e,t,n={}){return Ke(e,t,t,n)}async function Je(e){let t=pe.value,n={};for(let r of t)n[r.field]=m(e[r.field],r.type??`string`);let r={},i={},a=[];for(let o of t){let t=o.field,s=Ke(o,e[t],n[t],n);s?r[t]=s:o.asyncValidator?a.push(o.asyncValidator(n[t],n).then(e=>{e?r[t]=e:n[t]!==void 0&&(i[t]=n[t])})):n[t]!==void 0&&(i[t]=n[t])}if(a.length>0){ae.value=!0;try{await Promise.all(a)}finally{ae.value=!1}}return{errors:r,values:i}}async function Ye(e){if(A.value!==e)return;let{errors:t,values:n}=await Je(M.value);A.value===e&&(Object.keys(t).length>0?N.value=t:(A.value=void 0,M.value={},N.value={},S().onRowSave?.({row:e,values:n})))}function Xe(e){let t=S().deleteConfirmMessage;(!t||window.confirm(t))&&S().onRowDelete?.(e)}function Ze(){let e=S().bulkDeleteConfirmMessage;if(e&&!window.confirm(e))return;let t=Array.from(k.value);Fe(),S().onRowsDelete?.(t)}function Qe(){j.value=!0,M.value={},N.value={}}function $e(){j.value=!1,M.value={},N.value={}}async function et(){if(!j.value)return;let{errors:e,values:t}=await Je(M.value);j.value&&(Object.keys(e).length>0?N.value=e:(j.value=!1,M.value={},N.value={},S().onRowCreate?.(t)))}function tt(e,t){let n=Z.value[e],r=G.value.get(t);return!n||!r?``:o(n[t],r.type(),r.format(),f.value)}function nt(e,t,n){let r=U.value,i=Z.value,a=r.findIndex(e=>e.field===t);if(e===-1||a===-1)return;let o=[];n.replace(/\r\n$|\r$|\n$/,``).split(/\r\n|\r|\n/).map(e=>e.split(` `)).forEach((t,n)=>{let s=i[e+n];s&&t.forEach((e,t)=>{let n=r[a+t];n&&n.editable&&o.push({row:s,field:n.field,value:ee(e,n.type??`string`)})})}),o.length>0&&S().onCellsPaste?.(o)}function rt(e){let t=L.value[e];return t===void 0?H.value.find(t=>t.field===e)?.width??80:t}function it(e){return L.value[e]!==void 0}function at(e,t){H.value.some(t=>t.field===e)&&(L.value={...L.value,[e]:Math.max(30,t)})}function ot(e){R.value=e}function st(e){return B.value.has(e)}function ct(e){let t=B.value,n=S().singleDetailExpand?new Set:new Set(t);t.has(e)?n.delete(e):n.add(e),B.value=n}function lt(e){let t=R.value;if(R.value=void 0,!t||t===e)return;let n=[...J.value],r=n.indexOf(t),i=n.indexOf(e);r!==-1&&i!==-1&&(n.splice(r,1),r<i&&i--,n.splice(i,0,t),S().onRowOrderChange?.(n))}function ut(e){let t=oe.value[e];if(t===`left`||t===`right`)return t;if(t!==`none`)return H.value.find(t=>t.field===e)?.pinned}function dt(e,t){oe.value={...oe.value,[e]:t??`none`}}function $(e){let t=g.value?36:0;for(let n of U.value){if(n.field===e)break;ut(n.field)===`left`&&(t+=rt(n.field))}return t}function ft(e){let t=0,n=!1;for(let r of U.value)r.field===e?n=!0:n&&ut(r.field)===`right`&&(t+=rt(r.field));return t}function pt(e){E.value=e}function mt(e){D.value=e}return{get visibleColumns(){return U.value},get allColumns(){return H.value},stickyOffset:$,stickyOffsetRight:ft,columnPinnedSide:ut,setColumnPinned:dt,get hideableColumns(){return ce.value},isColumnHidden:fe,toggleColumnVisibility:W,setColumnOrder:le,get draggingField(){return I.value},onColumnDragStart:ue,onColumnDrop:de,effectiveWidth:rt,isColumnResized:it,setColumnWidth:at,get draggingRow(){return R.value},onRowDragStart:ot,onRowDrop:lt,get hasTreeData(){return Y.value},get treeRows(){return xe.value},isTreeRowExpanded:Se,toggleTreeRow:Ce,setAllTreeRowsExpanded:we,isRowExpanded:st,toggleRowExpanded:ct,get hasVirtualScroll(){return Te.value},get visibleRows(){return Z.value},get exportRows(){return Q.value},get sortedRows(){return J.value},get filteredRowCount(){return De.value},get locale(){return f.value},get sortCriteria(){return C.value},setSort:Le,toggleSort:Ie,sortDirectionFor:Re,sortPriorityFor:ze,get filterValues(){return w.value},setFilterValue:ge,clearAllFilters:K,get filterQuery(){return T.value},setFilterQuery:me,get page(){return ke.value},setPage:pt,get pageCount(){return Ee.value?Oe.value:1},get groupByField(){return O.value},setGroupByField:mt,get groups(){return ye.value},get totals(){return be.value},get selectedRows(){return k.value},isRowSelected:Ae,toggleRowSelection:je,get allSelected(){return Me.value},get someSelected(){return Ne.value},toggleSelectAll:Pe,clearSelection:Fe,get editableColumns(){return pe.value},get editingRow(){return A.value},get isAddingRow(){return j.value},get rowDraft(){return M.value},get fieldErrors(){return N.value},get isValidating(){return ae.value},isEditingRow:Be,isAnotherRowEditing:Ve,startEditingRow:Ue,cancelRowEdit:We,setRowDraftValue:Ge,saveRow:Ye,deleteRow:Xe,deleteSelectedRows:Ze,startAddingRow:Qe,cancelAddRow:$e,saveNewRow:et,validateCell:qe,copyCellText:tt,pasteAt:nt}}function E(e){return e.headerText||e.field}function D(e,t,n){return o(t[e.field],e.type??`string`,e.format??``,n)}function O(e,t,n){return``+[t.map(e=>h(E(e))).join(`,`),...e.map(e=>t.map(t=>h(D(t,e,n))).join(`,`))].join(`\r
2
- `)}function k(e,t,n,r=`inandu-grid`){_(O(e,t,n),`${r}-export.csv`,`text/csv;charset=utf-8;`)}function A(e,t,n){let r=(e,t)=>{let n=t[e.field];return e.type===`number`&&typeof n==`number`&&Number.isFinite(n)?n:void 0},i=(e,t)=>{let i=r(e,t);return i===void 0?`<Cell><Data ss:Type="String">${g(D(e,t,n))}</Data></Cell>`:`<Cell><Data ss:Type="Number">${i}</Data></Cell>`},a=`<Row ss:StyleID="header">${t.map(e=>`<Cell><Data ss:Type="String">${g(E(e))}</Data></Cell>`).join(``)}</Row>`,o=e.map(e=>`<Row>${t.map(t=>i(t,e)).join(``)}</Row>`).join(``);return`<?xml version="1.0"?><?mso-application progid="Excel.Sheet"?><Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"><Styles><Style ss:ID="header"><Font ss:Bold="1"/></Style></Styles><Worksheet ss:Name="Sheet1"><Table>`+a+o+`</Table></Worksheet></Workbook>`}function j(e,t,n,r=`inandu-grid`){_(A(e,t,n),`${r}-export.xls`,`application/vnd.ms-excel`)}function M(e,t,n,r=`inandu-grid`){let i=t.map(e=>`<th>${g(E(e))}</th>`).join(``),a=e.map(e=>`<tr>${t.map(t=>`<td>${g(D(t,e,n))}</td>`).join(``)}</tr>`).join(``),o=`<!doctype html><html><head><meta charset="utf-8"><title>${g(r)}</title><style>table{border-collapse:collapse;width:100%}th,td{border:1px solid #333;padding:4px 8px;text-align:left}th{background:#eee}</style></head><body><table><thead><tr>${i}</tr></thead><tbody>${a}</tbody></table></body></html>`,s=window.open(``,`_blank`);s&&(s.document.write(o),s.document.close(),s.focus(),setTimeout(()=>s.print(),0))}async function N(e,t,n,r=`inandu-grid`){let{jsPDF:i}=await import(`jspdf`),a=t.map(E),o=new i({orientation:`landscape`}),s=o.internal.pageSize.getWidth()-20,c=o.internal.pageSize.getHeight()-10,l=s/(t.length||1),u=10,d=(e,t)=>{o.setFont(`helvetica`,t?`bold`:`normal`);let n=10;e.forEach(e=>{o.text(ne(o,e,l-4),n+2,u+6),n+=l}),u+=8};d(a,!0);for(let r of e)u+8>c&&(o.addPage(),u=10,d(a,!0)),d(t.map(e=>D(e,r,n)),!1);_(o.output(`blob`),`${r}-export.pdf`)}function ae(e,t,n){let r=typeof CSS<`u`&&CSS.escape?CSS.escape(t):te(t),i=Array.from(e.querySelectorAll(`td[data-field="${r}"]`)),a=e.querySelector(`th[data-field="${r}"]`),o=i[0]??a??e,s=getComputedStyle(o),c=document.createElement(`span`);c.style.cssText=`position:absolute;left:-9999px;top:-9999px;visibility:hidden;white-space:pre;pointer-events:none`,c.style.font=s.font||`${s.fontStyle} ${s.fontWeight} ${s.fontSize}/${s.lineHeight} ${s.fontFamily}`,c.style.letterSpacing=s.letterSpacing,document.body.appendChild(c);let l=(parseFloat(s.paddingLeft)||0)+(parseFloat(s.paddingRight)||0)+2,u=0;c.textContent=n||t,u=Math.max(u,c.offsetWidth+44);for(let e of i)c.textContent=(e.textContent??``).replace(/\s+/g,` `).trim(),u=Math.max(u,c.offsetWidth+l);return c.remove(),i.length||a?Math.ceil(u):0}var P={class:`inandu-grid-edit-cell`},F=[`aria-label`,`checked`],I=[`aria-label`,`type`,`value`],L={key:2,class:`inandu-grid-field-error`},oe=(0,e.defineComponent)({__name:`EditCell`,props:{column:{},value:{},error:{},t:{type:Function}},emits:[`change`],setup(t,{emit:n}){let r=t,i=n,a=(0,e.computed)(()=>r.column.type??`string`),o=(0,e.computed)(()=>r.t(`MsgEditCell`,{column:r.column.headerText??r.column.field})),s=(0,e.computed)(()=>typeof r.value==`string`?r.value:``);return(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`span`,P,[a.value===`boolean`?((0,e.openBlock)(),(0,e.createElementBlock)(`input`,{key:0,"aria-label":o.value,type:`checkbox`,checked:!!t.value,onChange:r[0]||=e=>i(`change`,e.target.checked)},null,40,F)):((0,e.openBlock)(),(0,e.createElementBlock)(`input`,{key:1,"aria-label":o.value,type:a.value===`date`?`date`:a.value===`number`?`number`:`text`,value:s.value,onInput:r[1]||=e=>i(`change`,e.target.value)},null,40,I)),t.error?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,L,(0,e.toDisplayString)(t.error),1)):(0,e.createCommentVNode)(``,!0)]))}}),R=(0,e.defineComponent)({name:`InanduGridRenderNodes`,props:{nodes:{type:null,default:null}},setup(e){return()=>e.nodes}}),z=[`data-row-index`],B={key:0},se=[`aria-label`,`title`],V={key:1},H=[`aria-label`],U=[`aria-label`,`checked`],ce=[`data-field`,`tabindex`,`onMousedown`,`onMouseenter`],le={key:3,class:`inandu-grid-row-actions`},ue=[`disabled`],de=[`disabled`],fe=[`disabled`],W=[`disabled`],pe={key:0,class:`inandu-grid-detail-row`},me=[`colspan`],G=(0,e.defineComponent)({__name:`DataRow`,props:{ctx:{},row:{},rowIndex:{},hasRowDragHandle:{type:Boolean,default:!1},isDragOverRow:{type:Boolean,default:!1},hasMasterDetail:{type:Boolean,default:!1},isRowExpanded:{type:Boolean,default:!1}},emits:[`rowDragStart`,`rowDragOver`,`rowDragLeave`,`rowDrop`,`toggleExpanded`],setup(t,{emit:n}){let r=t,i=n,a=(0,e.computed)(()=>r.ctx.isEditingRow(r.row)),o=(0,e.computed)(()=>r.isRowExpanded?r.ctx.t(`MsgCollapseDetail`):r.ctx.t(`MsgExpandDetail`));function s(e){r.hasRowDragHandle&&(e.preventDefault(),i(`rowDragOver`))}function c(e){r.hasRowDragHandle&&(e.preventDefault(),i(`rowDrop`))}function l(e){i(`rowDragStart`),e.dataTransfer?.setData(`text/plain`,`row`)}function u(e,t){r.ctx.cellRangeSelection&&r.ctx.onCellRangeMouseDown(e,r.rowIndex,t)}function d(e){r.ctx.cellRangeSelection&&r.ctx.onCellRangeMouseEnter(r.rowIndex,e)}return(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,null,[(0,e.createElementVNode)(`tr`,{"data-row-index":t.rowIndex,class:(0,e.normalizeClass)(t.isDragOverRow?`inandu-drag-over`:void 0),onDragover:s,onDragleave:r[6]||=e=>t.hasRowDragHandle&&i(`rowDragLeave`),onDrop:c},[t.hasMasterDetail?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,B,[(0,e.createElementVNode)(`button`,{type:`button`,class:`inandu-grid-detail-toggle`,"aria-label":o.value,title:o.value,onClick:r[0]||=e=>i(`toggleExpanded`)},(0,e.toDisplayString)(t.isRowExpanded?`▾`:`▸`),9,se)])):(0,e.createCommentVNode)(``,!0),t.hasRowDragHandle?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,V,[(0,e.createElementVNode)(`span`,{class:`inandu-grid-row-drag-handle`,"aria-label":t.ctx.t(`MsgDragRow`),draggable:`true`,onDragstart:l},`⋮⋮`,40,H)])):(0,e.createCommentVNode)(``,!0),t.ctx.selectable?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,{key:2,style:(0,e.normalizeStyle)(t.ctx.selectColumnStyle)},[(0,e.createElementVNode)(`input`,{"aria-label":t.ctx.t(`MsgSelectRow`,{index:t.rowIndex+1}),type:`checkbox`,checked:t.ctx.isRowSelected(t.row),onChange:r[1]||=e=>t.ctx.toggleRowSelection(t.row)},null,40,U)],4)):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.ctx.columns,(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`td`,{key:n.field,style:(0,e.normalizeStyle)(t.ctx.columnStyle(n)),"data-field":n.field,tabindex:t.ctx.clipboard?0:void 0,class:(0,e.normalizeClass)(t.ctx.cellRangeSelection&&t.ctx.isCellInRange(t.rowIndex,r)?`inandu-cell-range-selected`:void 0),onMousedown:e=>u(e,r),onMouseenter:e=>d(r)},[a.value&&n.editable?((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:0},[t.ctx.editorContent(n,t.row)===void 0?((0,e.openBlock)(),(0,e.createBlock)(oe,{key:1,column:n,value:t.ctx.rowDraft[n.field],error:t.ctx.fieldErrors[n.field],t:t.ctx.t,onChange:e=>t.ctx.setRowDraftValue(n.field,e)},null,8,[`column`,`value`,`error`,`t`,`onChange`])):((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(R),{key:0,nodes:t.ctx.editorContent(n,t.row)},null,8,[`nodes`]))],64)):((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(R),{key:1,nodes:t.ctx.cellContent(n,t.row)},null,8,[`nodes`]))],46,ce))),128)),t.ctx.hasRowActions?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,le,[a.value?((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:0},[(0,e.createElementVNode)(`button`,{type:`button`,disabled:t.ctx.isValidating,onClick:r[2]||=e=>t.ctx.saveRow(t.row)},(0,e.toDisplayString)(t.ctx.t(`MsgSaveRow`)),9,ue),(0,e.createElementVNode)(`button`,{type:`button`,disabled:t.ctx.isValidating,onClick:r[3]||=e=>t.ctx.cancelRowEdit()},(0,e.toDisplayString)(t.ctx.t(`MsgCancelRowEdit`)),9,de)],64)):((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:1},[t.ctx.editableColumnCount>0?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:0,type:`button`,disabled:t.ctx.isAnotherRowEditing(t.row),onClick:r[4]||=e=>t.ctx.startEditingRow(t.row)},(0,e.toDisplayString)(t.ctx.t(`MsgEditRow`)),9,fe)):(0,e.createCommentVNode)(``,!0),t.ctx.deletable?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:1,type:`button`,disabled:t.ctx.isAnotherRowEditing(t.row),onClick:r[5]||=e=>t.ctx.deleteRow(t.row)},(0,e.toDisplayString)(t.ctx.t(`MsgDeleteRow`)),9,W)):(0,e.createCommentVNode)(``,!0)],64))])):(0,e.createCommentVNode)(``,!0)],42,z),t.hasMasterDetail&&t.isRowExpanded?((0,e.openBlock)(),(0,e.createElementBlock)(`tr`,pe,[(0,e.createElementVNode)(`td`,{colspan:t.ctx.columns.length+t.ctx.extraColumnCount},[(0,e.createVNode)((0,e.unref)(R),{nodes:t.ctx.detailContent(t.row)},null,8,[`nodes`])],8,me)])):(0,e.createCommentVNode)(``,!0)],64))}}),he={key:0,class:`inandu-grid-filter-range`},ge=[`aria-label`,`value`],K=[`aria-label`,`value`],_e={key:1,class:`inandu-grid-filter-range`},ve=[`aria-label`,`value`],q=[`aria-label`,`value`],J=[`aria-label`,`value`],ye={value:``},be=[`aria-label`,`value`],Y=(0,e.defineComponent)({__name:`FilterControl`,props:{column:{},value:{},t:{type:Function}},emits:[`change`],setup(t,{emit:n}){let r=t,i=n,a=(0,e.computed)(()=>r.column.type??`string`),o=(0,e.computed)(()=>r.t(`MsgFilterColumn`,{column:r.column.headerText??r.column.field}));function s(e){return e.target.value}return(n,r)=>a.value===`number`?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,he,[(0,e.createElementVNode)(`input`,{"aria-label":`${o.value} ${t.t(`MsgFilterMin`)}`,type:`number`,value:t.value?.min??``,onInput:r[0]||=e=>i(`change`,{min:s(e)})},null,40,ge),(0,e.createElementVNode)(`input`,{"aria-label":`${o.value} ${t.t(`MsgFilterMax`)}`,type:`number`,value:t.value?.max??``,onInput:r[1]||=e=>i(`change`,{max:s(e)})},null,40,K)])):a.value===`date`?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,_e,[(0,e.createElementVNode)(`input`,{"aria-label":`${o.value} ${t.t(`MsgFilterFrom`)}`,type:`date`,value:t.value?.from??``,onInput:r[2]||=e=>i(`change`,{from:s(e)})},null,40,ve),(0,e.createElementVNode)(`input`,{"aria-label":`${o.value} ${t.t(`MsgFilterTo`)}`,type:`date`,value:t.value?.to??``,onInput:r[3]||=e=>i(`change`,{to:s(e)})},null,40,q)])):a.value===`boolean`?((0,e.openBlock)(),(0,e.createElementBlock)(`select`,{key:2,"aria-label":o.value,value:t.value?.bool??``,onChange:r[4]||=e=>i(`change`,{bool:s(e)})},[(0,e.createElementVNode)(`option`,ye,(0,e.toDisplayString)(t.t(`MsgAll`)),1),r[6]||=(0,e.createElementVNode)(`option`,{value:`true`},`true`,-1),r[7]||=(0,e.createElementVNode)(`option`,{value:`false`},`false`,-1)],40,J)):((0,e.openBlock)(),(0,e.createElementBlock)(`input`,{key:3,"aria-label":o.value,type:`text`,value:t.value?.text??``,onInput:r[5]||=e=>i(`change`,{text:s(e)})},null,40,be))}}),X={class:`inandu-grid-vue`},xe={class:`inandu-grid-search`},Se=[`aria-label`,`placeholder`,`value`],Ce={class:`inandu-grid-toolbar`},we={key:3,class:`inandu-grid-column-toggle`},Te=[`aria-label`,`checked`,`onChange`],Ee={key:0,class:`inandu-grid-group-by`},De=[`value`],Oe={value:``},ke=[`value`],Z={key:0},Q={key:1},Ae=[`aria-label`,`checked`,`indeterminate`],je=[`data-field`,`draggable`,`aria-label`,`onDragstart`,`onDragover`,`onDragleave`,`onDrop`,`onClick`],Me={key:0,class:`inandu-grid-sort-priority`},Ne=[`onMousedown`,`onDblclick`],Pe={key:3},Fe={class:`inandu-grid-filter-row`},Ie={key:0},Le={key:1},Re={key:3},ze={key:0,class:`inandu-grid-new-row`},Be={key:1,class:`inandu-grid-row-actions`},Ve=[`disabled`],He=[`disabled`],Ue={key:1},We=[`colspan`],Ge=[`aria-level`,`aria-expanded`],Ke=[`aria-label`,`checked`,`onChange`],qe=[`aria-label`,`title`,`onClick`],Je={key:1,class:`inandu-grid-tree-toggle-spacer`,"aria-hidden":`true`},Ye={key:1,class:`inandu-grid-row-actions`},Xe={class:`inandu-grid-group-row`},Ze=[`colspan`],Qe={key:0,class:`inandu-grid-group-aggregates`},$e={key:0,"aria-hidden":`true`},et=[`colspan`],tt={key:1,"aria-hidden":`true`},nt=[`colspan`],rt={key:0},it={class:`inandu-grid-totals-row`},at={key:0},ot={key:1},st={key:3},ct={key:1,class:`inandu-grid-pagination`},lt=[`disabled`],ut=[`disabled`],dt=(0,e.defineComponent)({name:`InanduGrid`,__name:`InanduGrid`,props:{rows:{},columns:{},locale:{default:`en`},lang:{},pageSize:{default:0},selectable:{type:Boolean},exportable:{type:Boolean},exportFilenameBase:{default:`inandu-grid`},deletable:{type:Boolean},deleteConfirmMessage:{},bulkDeleteConfirmMessage:{},creatable:{type:Boolean},clipboard:{type:Boolean},cellRangeSelection:{type:Boolean},multiRange:{type:Boolean},columnToggle:{type:Boolean},rowReorder:{type:Boolean},treeChildrenKey:{},treeDefaultExpanded:{default:`none`},renderDetail:{},singleDetailExpand:{type:Boolean},extraRowFilter:{},serverSide:{},virtualScroll:{type:Boolean},virtualRowHeight:{default:40},height:{default:400},overscan:{default:4},autosize:{type:Boolean}},emits:[`queryChange`,`selectionChange`,`rowSave`,`rowCreate`,`rowDelete`,`rowsDelete`,`cellsPaste`,`cellRangeChange`,`cellRangesChange`,`rowOrderChange`],setup(t,{expose:n,emit:r}){function i(e,t){return{minRow:Math.min(e.row,t.row),maxRow:Math.max(e.row,t.row),minCol:Math.min(e.col,t.col),maxCol:Math.max(e.col,t.col)}}function a(e,t,n){return t>=e.minRow&&t<=e.maxRow&&n>=e.minCol&&n<=e.maxCol}let s=t,c=r,l=(0,e.useSlots)(),u=T(()=>({rows:s.rows,columns:s.columns,locale:s.locale,lang:s.lang,pageSize:s.pageSize,selectable:s.selectable,deleteConfirmMessage:s.deleteConfirmMessage,bulkDeleteConfirmMessage:s.bulkDeleteConfirmMessage,onRowSave:e=>c(`rowSave`,e),onRowCreate:e=>c(`rowCreate`,e),onRowDelete:e=>c(`rowDelete`,e),onRowsDelete:e=>c(`rowsDelete`,e),onCellsPaste:e=>c(`cellsPaste`,e),onRowOrderChange:e=>c(`rowOrderChange`,e),treeChildrenKey:s.treeChildrenKey,treeDefaultExpanded:s.treeDefaultExpanded,singleDetailExpand:s.singleDetailExpand,extraRowFilter:s.extraRowFilter,virtualScroll:s.virtualScroll,serverSide:s.serverSide,onQueryChange:e=>c(`queryChange`,e)}));n({grid:u});let d=(0,e.computed)(()=>re(s.lang??s.locale)),p=(0,e.shallowRef)(void 0),m=(0,e.shallowRef)(void 0),ee=(0,e.shallowRef)(0),te=(0,e.shallowRef)(null);(0,e.watch)(()=>u.selectedRows,e=>c(`selectionChange`,Array.from(e)),{immediate:!0});let h;function g(e,t){e.preventDefault(),h?.();let n=e.clientX,r=u.effectiveWidth(t),i=e=>u.setColumnWidth(t,r+(e.clientX-n)),a=()=>h?.();window.addEventListener(`mousemove`,i),window.addEventListener(`mouseup`,a),h=()=>{window.removeEventListener(`mousemove`,i),window.removeEventListener(`mouseup`,a),h=void 0}}function ne(e,t){if(!s.autosize||!te.value)return;e.preventDefault(),e.stopPropagation();let n=ae(te.value,t.field,t.headerText??t.field);n>0&&u.setColumnWidth(t.field,Math.min(600,n))}let _=(0,e.computed)(()=>s.cellRangeSelection&&!u.groupByField&&!u.hasVirtualScroll&&!u.hasTreeData),v=(0,e.shallowRef)(void 0),y=(0,e.shallowRef)(void 0),b=(0,e.shallowRef)([]),x=!1,S=(0,e.computed)(()=>v.value&&y.value?i(v.value,y.value):void 0),C=(0,e.computed)(()=>S.value?[...b.value,S.value]:b.value);function w(e,t){return C.value.some(n=>a(n,e,t))}function ie(e){return{rows:u.visibleRows.slice(e.minRow,e.maxRow+1),fields:u.visibleColumns.slice(e.minCol,e.maxCol+1).map(e=>e.field)}}(0,e.watch)([_,C,()=>u.visibleRows,()=>u.visibleColumns],()=>{_.value&&(c(`cellRangeChange`,S.value?ie(S.value):void 0),c(`cellRangesChange`,C.value.map(ie)))},{immediate:!0});function E(e,t,n){e.button===0&&(x=!0,s.multiRange&&(e.ctrlKey||e.metaKey)&&!e.shiftKey?(S.value&&(b.value=[...b.value,S.value]),v.value={row:t,col:n}):(!e.shiftKey||!v.value)&&(b.value=[],v.value={row:t,col:n}),y.value={row:t,col:n})}function D(e,t){x&&(y.value={row:e,col:t})}let O=()=>{x=!1};(0,e.watch)(_,(e,t,n)=>{e&&(document.addEventListener(`mouseup`,O),n(()=>document.removeEventListener(`mouseup`,O)))},{immediate:!0}),(0,e.onBeforeUnmount)(()=>h?.());function A(e){let t=u.visibleRows.slice(e.minRow,e.maxRow+1),n=u.visibleColumns.slice(e.minCol,e.maxCol+1);return t.map(e=>n.map(t=>o(e[t.field],t.type??`string`,t.format??``,s.locale)).join(` `)).join(`
3
- `)}let P=(0,e.computed)(()=>u.visibleColumns.filter(e=>e.aggregate)),F=(0,e.computed)(()=>s.serverSide?[]:u.visibleColumns.filter(e=>e.groupable!==!1)),I=(0,e.computed)(()=>u.groups?u.groups.length===0:u.visibleRows.length===0),L=(0,e.computed)(()=>u.editableColumns.length>0||s.deletable||s.creatable),z=(0,e.computed)(()=>s.rowReorder&&!u.groupByField&&!u.hasVirtualScroll),B=(0,e.computed)(()=>(!!l.detail||!!s.renderDetail)&&!u.groupByField&&!u.hasVirtualScroll),se=(0,e.computed)(()=>+!!B.value+ +!!z.value+ +!!s.selectable+ +!!L.value),V=(0,e.computed)(()=>u.visibleColumns.length+se.value),H=(0,e.computed)(()=>u.hasVirtualScroll?Math.max(0,Math.floor(ee.value/s.virtualRowHeight)-s.overscan):0),U=(0,e.computed)(()=>u.hasVirtualScroll?Math.min(u.visibleRows.length,Math.ceil((ee.value+s.height)/s.virtualRowHeight)+s.overscan):u.visibleRows.length),ce=(0,e.computed)(()=>u.hasVirtualScroll?u.visibleRows.slice(H.value,U.value):u.visibleRows),le=(0,e.computed)(()=>H.value*s.virtualRowHeight),ue=(0,e.computed)(()=>(u.visibleRows.length-U.value)*s.virtualRowHeight);function de(e){u.hasVirtualScroll&&(ee.value=e.currentTarget.scrollTop)}function fe(e,t){u.setFilterValue(e,{...u.filterValues[e],...t})}function W(e){let t=e.width!==void 0||u.isColumnResized(e.field)?{width:`${u.effectiveWidth(e.field)}px`}:{},n=u.columnPinnedSide(e.field);return n===`left`?{...t,position:`sticky`,left:`${u.stickyOffset(e.field)}px`,zIndex:1}:n===`right`?{...t,position:`sticky`,right:`${u.stickyOffsetRight(e.field)}px`,zIndex:1}:t}function pe(e,t){u.onColumnDragStart(t),e.dataTransfer?.setData(`text/plain`,t)}function me(e,t){e.preventDefault(),p.value=t}function he(e){p.value===e&&(p.value=void 0)}function ge(e,t){e.preventDefault(),p.value=void 0,u.onColumnDrop(t)}let K=(0,e.computed)(()=>s.selectable?{position:`sticky`,left:`0px`,zIndex:1}:void 0);function _e(e,t){let n=e.aggregate,r=t[e.field];if(!n||r===void 0)return``;let i=n===`count`?String(r):o(r,`number`,e.format??``,s.locale);return`${e.headerText??e.field} ${f[n]}: ${i}`}function ve(e){let t={title:e.headerText??e.field,field:e.field},n=l[`header-${e.field}`];return n?n(t):e.renderHeader?e.renderHeader(t):t.title}function q(e,t){let n={value:t[e.field],row:t,field:e.field},r=l[`cell-${e.field}`];return r?r(n):e.renderCell?e.renderCell(n):o(t[e.field],e.type??`string`,e.format??``,s.locale)}function J(e,t){let n=l[`editor-${e.field}`];if(!n&&!e.renderEditor)return;let r={value:u.rowDraft[e.field],row:t,field:e.field,setValue:t=>u.setRowDraftValue(e.field,t),error:u.fieldErrors[e.field]};return n?n(r):e.renderEditor(r)}function ye(e){return l.detail?l.detail({row:e}):s.renderDetail?.(e)}function be(e,t){u.toggleColumnVisibility(t),e.target.checked=!u.isColumnHidden(t)}function dt(e){if(!s.clipboard||!(e.ctrlKey||e.metaKey))return;let t=e.key.toLowerCase();if(t!==`c`&&t!==`v`)return;let n=e.target;if(n instanceof HTMLInputElement||n instanceof HTMLTextAreaElement||n instanceof HTMLSelectElement)return;let r=n.closest(`td[data-field]`),i=r?.getAttribute(`data-field`),a=r?.closest(`tr`)?.getAttribute(`data-row-index`);if(!r||!i||a==null)return;let o=Number(a);if(e.preventDefault(),t===`c`){let e=S.value,t=_.value&&e&&(e.minRow!==e.maxRow||e.minCol!==e.maxCol)?A(e):void 0;navigator.clipboard?.writeText(t??u.copyCellText(o,i))?.catch(()=>void 0)}else navigator.clipboard?.readText()?.then(e=>u.pasteAt(o,i,e)).catch(()=>void 0)}function $(e,t){return e.id==null?t:String(e.id)}let ft=(0,e.computed)(()=>({columns:u.visibleColumns,t:d.value,selectable:s.selectable,selectColumnStyle:K.value,columnStyle:W,isRowSelected:u.isRowSelected,toggleRowSelection:u.toggleRowSelection,hasRowActions:L.value,editableColumnCount:u.editableColumns.length,isEditingRow:u.isEditingRow,isAnotherRowEditing:u.isAnotherRowEditing,startEditingRow:u.startEditingRow,cancelRowEdit:u.cancelRowEdit,saveRow:e=>void u.saveRow(e),deleteRow:u.deleteRow,deletable:s.deletable,rowDraft:u.rowDraft,fieldErrors:u.fieldErrors,isValidating:u.isValidating,setRowDraftValue:u.setRowDraftValue,cellContent:q,editorContent:J,detailContent:ye,clipboard:s.clipboard,cellRangeSelection:_.value,isCellInRange:w,onCellRangeMouseDown:E,onCellRangeMouseEnter:D,extraColumnCount:se.value}));return(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,X,[(0,e.createElementVNode)(`div`,xe,[(0,e.createElementVNode)(`input`,{"aria-label":d.value(`MsgFilterPlaceholder`),type:`text`,placeholder:`${d.value(`MsgFilterPlaceholder`)}…`,value:(0,e.unref)(u).filterQuery,onInput:r[0]||=t=>(0,e.unref)(u).setFilterQuery(t.target.value)},null,40,Se)]),(0,e.createElementVNode)(`div`,Ce,[t.exportable?((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:0},[(0,e.createElementVNode)(`button`,{type:`button`,onClick:r[1]||=n=>(0,e.unref)(k)((0,e.unref)(u).exportRows,(0,e.unref)(u).visibleColumns,t.locale,t.exportFilenameBase)},(0,e.toDisplayString)(d.value(`MsgExportCsv`)),1),(0,e.createElementVNode)(`button`,{type:`button`,onClick:r[2]||=n=>(0,e.unref)(j)((0,e.unref)(u).exportRows,(0,e.unref)(u).visibleColumns,t.locale,t.exportFilenameBase)},(0,e.toDisplayString)(d.value(`MsgExportExcel`)),1),(0,e.createElementVNode)(`button`,{type:`button`,onClick:r[3]||=n=>void(0,e.unref)(N)((0,e.unref)(u).exportRows,(0,e.unref)(u).visibleColumns,t.locale,t.exportFilenameBase)},(0,e.toDisplayString)(d.value(`MsgExportPdf`)),1),(0,e.createElementVNode)(`button`,{type:`button`,onClick:r[4]||=n=>(0,e.unref)(M)((0,e.unref)(u).exportRows,(0,e.unref)(u).visibleColumns,t.locale,t.exportFilenameBase)},(0,e.toDisplayString)(d.value(`MsgPrint`)),1)],64)):(0,e.createCommentVNode)(``,!0),t.creatable&&(0,e.unref)(u).editableColumns.length>0&&!(0,e.unref)(u).isAddingRow?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:1,type:`button`,onClick:r[5]||=t=>(0,e.unref)(u).startAddingRow()},(0,e.toDisplayString)(d.value(`MsgAddRow`)),1)):(0,e.createCommentVNode)(``,!0),t.selectable&&t.deletable&&(0,e.unref)(u).selectedRows.size>0?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:2,type:`button`,onClick:r[6]||=t=>(0,e.unref)(u).deleteSelectedRows()},(0,e.toDisplayString)(d.value(`MsgDeleteSelected`,{count:(0,e.unref)(u).selectedRows.size})),1)):(0,e.createCommentVNode)(``,!0),t.columnToggle?((0,e.openBlock)(),(0,e.createElementBlock)(`details`,we,[(0,e.createElementVNode)(`summary`,null,(0,e.toDisplayString)(d.value(`MsgToggleColumns`)),1),(0,e.createElementVNode)(`ul`,null,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)((0,e.unref)(u).hideableColumns,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`li`,{key:t.field},[(0,e.createElementVNode)(`label`,null,[(0,e.createElementVNode)(`input`,{"aria-label":d.value(`MsgToggleColumn`,{column:t.headerText??t.field}),type:`checkbox`,checked:!(0,e.unref)(u).isColumnHidden(t.field),onChange:e=>be(e,t.field)},null,40,Te),(0,e.createTextVNode)(` `+(0,e.toDisplayString)(t.headerText??t.field),1)])]))),128))])])):(0,e.createCommentVNode)(``,!0)]),F.value.length>0?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Ee,[(0,e.createElementVNode)(`label`,null,[(0,e.createTextVNode)((0,e.toDisplayString)((0,e.unref)(u).groupByField?d.value(`MsgGroupedBy`,{column:F.value.find(t=>t.field===(0,e.unref)(u).groupByField)?.headerText??(0,e.unref)(u).groupByField}):d.value(`MsgGroupByHint`))+` `,1),(0,e.createElementVNode)(`select`,{"aria-label":`Group by`,value:(0,e.unref)(u).groupByField??``,onChange:r[7]||=t=>(0,e.unref)(u).setGroupByField(t.target.value||void 0)},[(0,e.createElementVNode)(`option`,Oe,(0,e.toDisplayString)(d.value(`MsgCancelGrouping`)),1),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(F.value,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`option`,{key:t.field,value:t.field},(0,e.toDisplayString)(t.headerText??t.field),9,ke))),128))],40,De)])])):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)((0,e.unref)(u).hasVirtualScroll?`inandu-grid-viewport`:void 0),style:(0,e.normalizeStyle)((0,e.unref)(u).hasVirtualScroll?{height:`${t.height}px`,overflow:`auto`}:void 0),onScroll:de},[(0,e.createElementVNode)(`table`,{ref_key:`tableRef`,ref:te,class:`inandu-grid`,onKeydown:dt},[(0,e.createElementVNode)(`thead`,null,[(0,e.createElementVNode)(`tr`,null,[B.value?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,Z)):(0,e.createCommentVNode)(``,!0),z.value?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,Q)):(0,e.createCommentVNode)(``,!0),t.selectable?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,{key:2,style:(0,e.normalizeStyle)(K.value)},[(0,e.createElementVNode)(`input`,{"aria-label":d.value(`MsgSelectAll`),type:`checkbox`,checked:(0,e.unref)(u).allSelected,indeterminate:(0,e.unref)(u).someSelected,onChange:r[8]||=t=>(0,e.unref)(u).toggleSelectAll()},null,40,Ae)],4)):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)((0,e.unref)(u).visibleColumns,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`th`,{key:t.field,"data-field":t.field,style:(0,e.normalizeStyle)(W(t)),class:(0,e.normalizeClass)(p.value===t.field?`inandu-drag-over`:void 0),draggable:t.reorder!==!1,"aria-label":d.value(`MsgSortBy`,{column:t.headerText??t.field}),onDragstart:e=>pe(e,t.field),onDragover:e=>me(e,t.field),onDragleave:e=>he(t.field),onDrop:e=>ge(e,t.field),onClick:n=>(0,e.unref)(u).toggleSort(t.field,n.shiftKey)},[(0,e.createVNode)((0,e.unref)(R),{nodes:ve(t)},null,8,[`nodes`]),(0,e.createTextVNode)((0,e.toDisplayString)((0,e.unref)(u).sortDirectionFor(t.field)?(0,e.unref)(u).sortDirectionFor(t.field)===`asc`?` ▲`:` ▼`:``),1),(0,e.unref)(u).sortPriorityFor(t.field)===void 0?(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createElementBlock)(`sup`,Me,(0,e.toDisplayString)((0,e.unref)(u).sortPriorityFor(t.field)),1)),(0,e.createElementVNode)(`span`,{class:`inandu-grid-resize-handle`,draggable:`false`,onMousedown:e=>g(e,t.field),onDblclick:e=>ne(e,t),onClick:r[9]||=(0,e.withModifiers)(()=>{},[`stop`])},null,40,Ne)],46,je))),128)),L.value?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,Pe)):(0,e.createCommentVNode)(``,!0)]),(0,e.createElementVNode)(`tr`,Fe,[B.value?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,Ie)):(0,e.createCommentVNode)(``,!0),z.value?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,Le)):(0,e.createCommentVNode)(``,!0),t.selectable?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,{key:2,style:(0,e.normalizeStyle)(K.value)},null,4)):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)((0,e.unref)(u).visibleColumns,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`th`,{key:t.field,style:(0,e.normalizeStyle)(W(t))},[(0,e.createVNode)(Y,{column:t,value:(0,e.unref)(u).filterValues[t.field],t:d.value,onChange:e=>fe(t.field,e)},null,8,[`column`,`value`,`t`,`onChange`])],4))),128)),L.value?((0,e.openBlock)(),(0,e.createElementBlock)(`th`,Re)):(0,e.createCommentVNode)(``,!0)])]),(0,e.createElementVNode)(`tbody`,null,[(0,e.unref)(u).isAddingRow?((0,e.openBlock)(),(0,e.createElementBlock)(`tr`,ze,[t.selectable?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,{key:0,style:(0,e.normalizeStyle)(K.value)},null,4)):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)((0,e.unref)(u).visibleColumns,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`td`,{key:t.field,style:(0,e.normalizeStyle)(W(t))},[t.editable?((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:0},[J(t,{})===void 0?((0,e.openBlock)(),(0,e.createBlock)(oe,{key:1,column:t,value:(0,e.unref)(u).rowDraft[t.field],error:(0,e.unref)(u).fieldErrors[t.field],t:d.value,onChange:n=>(0,e.unref)(u).setRowDraftValue(t.field,n)},null,8,[`column`,`value`,`error`,`t`,`onChange`])):((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(R),{key:0,nodes:J(t,{})},null,8,[`nodes`]))],64)):(0,e.createCommentVNode)(``,!0)],4))),128)),L.value?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,Be,[(0,e.createElementVNode)(`button`,{type:`button`,disabled:(0,e.unref)(u).isValidating,onClick:r[10]||=t=>void(0,e.unref)(u).saveNewRow()},(0,e.toDisplayString)(d.value(`MsgSaveRow`)),9,Ve),(0,e.createElementVNode)(`button`,{type:`button`,disabled:(0,e.unref)(u).isValidating,onClick:r[11]||=t=>(0,e.unref)(u).cancelAddRow()},(0,e.toDisplayString)(d.value(`MsgCancelRowEdit`)),9,He)])):(0,e.createCommentVNode)(``,!0)])):(0,e.createCommentVNode)(``,!0),I.value?((0,e.openBlock)(),(0,e.createElementBlock)(`tr`,Ue,[(0,e.createElementVNode)(`td`,{colspan:V.value},(0,e.toDisplayString)(d.value(`MsgNoData`)),9,We)])):(0,e.unref)(u).hasTreeData?((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,{key:2},(0,e.renderList)((0,e.unref)(u).treeRows,(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`tr`,{key:$(n.row,r),"aria-level":n.depth+1,"aria-expanded":n.expandable?(0,e.unref)(u).isTreeRowExpanded(n.row):void 0},[t.selectable?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,{key:0,style:(0,e.normalizeStyle)(K.value)},[(0,e.createElementVNode)(`input`,{"aria-label":d.value(`MsgSelectRow`,{index:r+1}),type:`checkbox`,checked:(0,e.unref)(u).isRowSelected(n.row),onChange:t=>(0,e.unref)(u).toggleRowSelection(n.row)},null,40,Ke)],4)):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)((0,e.unref)(u).visibleColumns,(t,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`td`,{key:t.field,style:(0,e.normalizeStyle)(W(t))},[r===0?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,{key:0,class:`inandu-grid-tree-cell`,style:(0,e.normalizeStyle)({paddingInlineStart:`${n.depth*16}px`})},[n.expandable?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:0,type:`button`,class:`inandu-grid-tree-toggle`,"aria-label":(0,e.unref)(u).isTreeRowExpanded(n.row)?d.value(`MsgCollapseDetail`):d.value(`MsgExpandDetail`),title:(0,e.unref)(u).isTreeRowExpanded(n.row)?d.value(`MsgCollapseDetail`):d.value(`MsgExpandDetail`),onClick:t=>(0,e.unref)(u).toggleTreeRow(n.row)},(0,e.toDisplayString)((0,e.unref)(u).isTreeRowExpanded(n.row)?`▾`:`▸`),9,qe)):((0,e.openBlock)(),(0,e.createElementBlock)(`span`,Je)),(0,e.createVNode)((0,e.unref)(R),{nodes:q(t,n.row)},null,8,[`nodes`])],4)):((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(R),{key:1,nodes:q(t,n.row)},null,8,[`nodes`]))],4))),128)),L.value?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,Ye)):(0,e.createCommentVNode)(``,!0)],8,Ge))),128)):(0,e.unref)(u).groups?((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,{key:3},(0,e.renderList)((0,e.unref)(u).groups,t=>((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:t.key},[(0,e.createElementVNode)(`tr`,Xe,[(0,e.createElementVNode)(`td`,{colspan:V.value},[(0,e.createElementVNode)(`strong`,null,(0,e.toDisplayString)(t.key),1),(0,e.createTextVNode)(` (`+(0,e.toDisplayString)(t.rows.length)+`) `,1),P.value.length>0?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,Qe,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(P.value,n=>((0,e.openBlock)(),(0,e.createElementBlock)(`span`,{key:n.field},` · `+(0,e.toDisplayString)(_e(n,t.aggregates)),1))),128))])):(0,e.createCommentVNode)(``,!0)],8,Ze)]),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.rows,(n,r)=>((0,e.openBlock)(),(0,e.createBlock)(G,{key:$(n,`${t.key}:${r}`),ctx:ft.value,row:n,"row-index":r},null,8,[`ctx`,`row`,`row-index`]))),128))],64))),128)):((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:4},[(0,e.unref)(u).hasVirtualScroll&&le.value>0?((0,e.openBlock)(),(0,e.createElementBlock)(`tr`,$e,[(0,e.createElementVNode)(`td`,{style:(0,e.normalizeStyle)({height:`${le.value}px`,padding:0,border:`none`}),colspan:V.value},null,12,et)])):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(ce.value,(t,n)=>((0,e.openBlock)(),(0,e.createBlock)(G,{key:$(t,H.value+n),ctx:ft.value,row:t,"row-index":H.value+n,"has-row-drag-handle":z.value,"is-drag-over-row":(0,e.unref)(u).draggingRow!==void 0&&m.value===t,"has-master-detail":B.value,"is-row-expanded":(0,e.unref)(u).isRowExpanded(t),onRowDragStart:n=>(0,e.unref)(u).onRowDragStart(t),onRowDragOver:e=>m.value=t,onRowDragLeave:e=>m.value===t&&(m.value=void 0),onRowDrop:n=>(0,e.unref)(u).onRowDrop(t),onToggleExpanded:n=>(0,e.unref)(u).toggleRowExpanded(t)},null,8,[`ctx`,`row`,`row-index`,`has-row-drag-handle`,`is-drag-over-row`,`has-master-detail`,`is-row-expanded`,`onRowDragStart`,`onRowDragOver`,`onRowDragLeave`,`onRowDrop`,`onToggleExpanded`]))),128)),(0,e.unref)(u).hasVirtualScroll&&ue.value>0?((0,e.openBlock)(),(0,e.createElementBlock)(`tr`,tt,[(0,e.createElementVNode)(`td`,{style:(0,e.normalizeStyle)({height:`${ue.value}px`,padding:0,border:`none`}),colspan:V.value},null,12,nt)])):(0,e.createCommentVNode)(``,!0)],64))]),P.value.length>0&&!(0,e.unref)(u).hasVirtualScroll?((0,e.openBlock)(),(0,e.createElementBlock)(`tfoot`,rt,[(0,e.createElementVNode)(`tr`,it,[B.value?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,at)):(0,e.createCommentVNode)(``,!0),z.value?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,ot)):(0,e.createCommentVNode)(``,!0),t.selectable?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,{key:2,style:(0,e.normalizeStyle)(K.value)},null,4)):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)((0,e.unref)(u).visibleColumns,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`td`,{key:t.field,style:(0,e.normalizeStyle)(W(t))},(0,e.toDisplayString)(t.aggregate?_e(t,(0,e.unref)(u).totals):``),5))),128)),L.value?((0,e.openBlock)(),(0,e.createElementBlock)(`td`,st)):(0,e.createCommentVNode)(``,!0)])])):(0,e.createCommentVNode)(``,!0)],544)],38),t.pageSize>0&&!(0,e.unref)(u).groupByField&&!(0,e.unref)(u).hasVirtualScroll?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,ct,[(0,e.createElementVNode)(`button`,{type:`button`,disabled:(0,e.unref)(u).page===0,onClick:r[12]||=t=>(0,e.unref)(u).setPage((0,e.unref)(u).page-1)},`‹ `+(0,e.toDisplayString)(d.value(`MsgPreviousPage`)),9,lt),(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(d.value(`MsgPageOf`,{page:(0,e.unref)(u).page+1,total:(0,e.unref)(u).pageCount}))+` (`+(0,e.toDisplayString)((0,e.unref)(u).filteredRowCount)+`)`,1),(0,e.createElementVNode)(`button`,{type:`button`,disabled:(0,e.unref)(u).page>=(0,e.unref)(u).pageCount-1,onClick:r[13]||=t=>(0,e.unref)(u).setPage((0,e.unref)(u).page+1)},(0,e.toDisplayString)(d.value(`MsgNextPage`))+` ›`,9,ut)])):(0,e.createCommentVNode)(``,!0)]))}});function $(e,t={}){let n=new URLSearchParams;n.set(`page`,String(e.page+1)),e.pageSize>0&&n.set(`pageSize`,String(e.pageSize)),e.sortCriteria.length>0&&n.set(`sort`,e.sortCriteria.map(e=>(e.direction===`desc`?`-`:``)+e.field).join(`,`));let r=e.filterQuery.trim();r&&n.set(`q`,r);for(let[t,r]of Object.entries(e.filterValues))u(r)&&(r.values&&r.values.length>0?n.set(`${t}_in`,r.values.join(`,`)):(r.text&&n.set(`${t}_contains`,r.text),r.min&&n.set(`${t}_gte`,r.min),r.max&&n.set(`${t}_lte`,r.max),r.from&&n.set(`${t}_gte`,r.from),r.to&&n.set(`${t}_lte`,r.to),(r.bool===`true`||r.bool===`false`)&&n.set(`${t}_eq`,r.bool)));for(let[e,r]of Object.entries(t.extraParams??{}))n.set(e,r);return n}function ft(t){let n=(0,e.shallowRef)(void 0),r=(0,e.shallowRef)([]),i=(0,e.shallowRef)(0),a=(0,e.shallowRef)(!1),o=(0,e.shallowRef)(void 0),s=(0,e.shallowRef)(0),c=!1,l;function u(e){l?.();let n=new AbortController,s=async()=>{u(!0),o.value=void 0;try{let a=$(e,{extraParams:t.extraParams}).toString(),o=t.url+(t.url.includes(`?`)?`&`:`?`)+a,s={...t.init,signal:n.signal},c=await(t.fetcher??fetch)(o,s);if(!c.ok)throw Error(`Request failed: ${c.status} ${c.statusText}`);let l=await c.json();if(n.signal.aborted)return;r.value=l.data??[],i.value=l.total??0}catch(e){if(n.signal.aborted)return;o.value=e instanceof Error?e:Error(String(e))}finally{n.signal.aborted||u(!1)}};function u(e){a.value=e}let d=c?t.debounceMs??200:0;c=!0;let f=setTimeout(s,d);l=()=>{clearTimeout(f),n.abort()}}return(0,e.watch)([n,s],()=>{n.value&&u(n.value)}),(0,e.onScopeDispose)(()=>l?.(),!0),{rows:r,total:i,loading:a,error:o,setQuery:e=>{n.value=e},reload:()=>{s.value+=1}}}exports.AGGREGATE_SYMBOLS=f,exports.INANDU_GRID_TRANSLATIONS=C,exports.InanduGrid=dt,exports.buildCsv=O,exports.buildExcelXml=A,exports.buildInanduGridQuery=$,exports.compareCellValues=s,exports.computeGroupAggregates=p,exports.createTranslator=re,exports.en=v,exports.es=y,exports.exportCsv=k,exports.exportExcel=j,exports.exportPdf=N,exports.formatCellValue=o,exports.fr=b,exports.interpolate=w,exports.it=x,exports.matchesColumnFilter=d,exports.measureColumnContentWidth=ae,exports.printTable=M,exports.useInanduGrid=T,exports.useInanduGridServer=ft,exports.zh=S;
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}});