@inandu-solutions/grid-react 0.1.0 → 0.1.1
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 +11 -8
- package/dist/hooks/useInanduGrid.d.ts +8 -0
- package/dist/inandu-grid-react.cjs +2 -2
- package/dist/inandu-grid-react.js +452 -432
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -4,13 +4,16 @@ The React port of [`@inandu-solutions/grid-angular`](https://github.com/inanduso
|
|
|
4
4
|
a standalone data grid: sorting, filtering, grouping, pagination, virtual scroll, inline editing,
|
|
5
5
|
CSV/Excel/PDF export and i18n, with a deliberately small dependency footprint.
|
|
6
6
|
|
|
7
|
-
[](https://www.npmjs.com/package/@inandu-solutions/grid-react)
|
|
8
|
+
[](https://www.npmjs.com/package/@inandu-solutions/grid-react)
|
|
9
|
+
[](https://bundlephobia.com/package/@inandu-solutions/grid-react)
|
|
10
|
+
[](LICENSE)
|
|
8
11
|

|
|
9
12
|
[](https://stackblitz.com/github/inandusolutions/inandu-grid-react/tree/main/examples/stackblitz)
|
|
10
13
|
|
|
11
|
-
**Feature-complete with grid-angular —
|
|
12
|
-
below). The framework-agnostic core (sorting,
|
|
13
|
-
ported from grid-angular's
|
|
14
|
+
**Feature-complete with grid-angular — published on npm as `@inandu-solutions/grid-react`, `0.x`
|
|
15
|
+
while the API settles** (see the "Package" bullet below). The framework-agnostic core (sorting,
|
|
16
|
+
filtering, aggregation, export, i18n) is ported from grid-angular's
|
|
14
17
|
[`core/`](https://github.com/inandusolutions/inandu-grid/tree/main/projects/inandu-grid/src/lib/core)
|
|
15
18
|
folder and kept in sync by hand across the two repos. The React-specific layer — the `<InanduGrid>`
|
|
16
19
|
component and the `useInanduGrid()` headless hook — covers sorting (single- and, via shift-click,
|
|
@@ -37,11 +40,11 @@ and doesn't cover.
|
|
|
37
40
|
- **Commercial add-ons for React:** `@inandu-solutions/grid-pro-react` *(private, paid, not released
|
|
38
41
|
yet)* — the React port of `@inandu-solutions/grid-pro`, depends on this package the same way
|
|
39
42
|
grid-pro depends on grid-angular.
|
|
40
|
-
- **Package:**
|
|
41
|
-
(MIT) —
|
|
43
|
+
- **Package:** [`@inandu-solutions/grid-react`](https://www.npmjs.com/package/@inandu-solutions/grid-react)
|
|
44
|
+
(MIT) — `0.x` while the API settles; expect breaking changes between minors until `1.0.0`.
|
|
42
45
|
- **⚡ StackBlitz:** [a minimal editable example](https://stackblitz.com/github/inandusolutions/inandu-grid-react/tree/main/examples/stackblitz) —
|
|
43
|
-
the grid in a bare React app; edit `src/App.tsx`
|
|
44
|
-
|
|
46
|
+
the grid in a bare React app installing `@inandu-solutions/grid-react` from npm; edit `src/App.tsx`
|
|
47
|
+
and it updates live ([source](examples/stackblitz)).
|
|
45
48
|
|
|
46
49
|
## Development
|
|
47
50
|
|
|
@@ -114,8 +114,12 @@ export interface UseInanduGridOptions {
|
|
|
114
114
|
*/
|
|
115
115
|
export declare function useInanduGrid({ rows, columns, locale, lang, pageSize, selectable, deleteConfirmMessage, bulkDeleteConfirmMessage, onRowSave, onRowCreate, onRowDelete, onRowsDelete, onCellsPaste, onRowOrderChange, treeChildrenKey, treeDefaultExpanded, singleDetailExpand, virtualScroll, }: UseInanduGridOptions): {
|
|
116
116
|
visibleColumns: InanduGridColumn[];
|
|
117
|
+
/** Every column in current drag-reorder order, hidden ones included — same as grid-angular's `displayColumns()`. Most rendering should use `visibleColumns` instead; this is for callers (like a saved-view restore) that need to address a currently-hidden column too. */
|
|
118
|
+
allColumns: InanduGridColumn[];
|
|
117
119
|
stickyOffset: (field: string) => number;
|
|
118
120
|
stickyOffsetRight: (field: string) => number;
|
|
121
|
+
columnPinnedSide: (field: string) => InanduColumnStickySide | undefined;
|
|
122
|
+
setColumnPinned: (field: string, side: InanduColumnStickySide | undefined) => void;
|
|
119
123
|
hideableColumns: InanduGridColumn[];
|
|
120
124
|
isColumnHidden: (field: string) => boolean;
|
|
121
125
|
toggleColumnVisibility: (field: string) => void;
|
|
@@ -140,7 +144,10 @@ export declare function useInanduGrid({ rows, columns, locale, lang, pageSize, s
|
|
|
140
144
|
visibleRows: InanduGridRow[];
|
|
141
145
|
/** Same "what's on screen right now" set the select-all checkbox and CSV/Excel/PDF export use — the current page, or every group's rows while grouped. */
|
|
142
146
|
exportRows: InanduGridRow[];
|
|
147
|
+
/** Every row matching the current filter and sort, in sort order, regardless of pagination or grouping — same as grid-angular's `sortedData()`. Unlike `exportRows`, this never stops at one page: a full-dataset export/print reads from here instead. */
|
|
148
|
+
sortedRows: InanduGridRow[];
|
|
143
149
|
filteredRowCount: number;
|
|
150
|
+
locale: string;
|
|
144
151
|
sortCriteria: InanduGridSort[];
|
|
145
152
|
setSort: import('react').Dispatch<import('react').SetStateAction<InanduGridSort[]>>;
|
|
146
153
|
toggleSort: (field: string, additive?: boolean) => void;
|
|
@@ -148,6 +155,7 @@ export declare function useInanduGrid({ rows, columns, locale, lang, pageSize, s
|
|
|
148
155
|
sortPriorityFor: (field: string) => number | undefined;
|
|
149
156
|
filterValues: Record<string, InanduGridColumnFilterValue>;
|
|
150
157
|
setFilterValue: (field: string, value: InanduGridColumnFilterValue) => void;
|
|
158
|
+
clearAllFilters: () => void;
|
|
151
159
|
filterQuery: string;
|
|
152
160
|
setFilterQuery: (query: string) => void;
|
|
153
161
|
page: number;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("react"),t=require("react/jsx-runtime");var n=/^(\d+)?\.(\d+)-(\d+)$/;function r(e,t,r){let i={},a=r?n.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(t||void 0,i).format(e)}function i(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 a=/YYYY|sss|MM|DD|HH|mm|ss/g;function o(e,t){let n=(e,t=2)=>String(e).padStart(t,`0`);return t.replace(a,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 s(e,t,n,a,s=r){if(e==null)return``;switch(t){case`number`:{let t=typeof e==`number`?e:Number(e);return Number.isNaN(t)?String(e):s(t,a,n||void 0)}case`date`:{let t=i(e);return Number.isNaN(t.getTime())?String(e):o(t,n||`YYYY-MM-DD`)}case`boolean`:{let[t,r]=(n||`true|false`).split(`|`);return e?t:r}default:return String(e)}}function c(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 l(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 u(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 d(e){return e?Object.values(e).some(e=>Array.isArray(e)?!0:!!e):!1}function f(e,t,n,r,a){let o=t[e.field()];if(n.values!==void 0)return n.values.includes(s(o,e.type(),e.format(),r,a));switch(e.type()){case`number`:{let e=!!n.min,t=!!n.max;if(!e&&!t)return!0;let r=typeof o==`number`?o:Number(o);return!(o==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(o==null)return!1;let r=i(o);if(Number.isNaN(r.getTime())||e&&r<new Date(n.from))return!1;if(t){let e=new Date(n.to);if(e.setHours(23,59,59,999),r>e)return!1}return!0}case`boolean`:return!n.bool||!!o==(n.bool===`true`);default:{let t=(n.text??``).trim().toLowerCase();return!t||s(o,e.type(),e.format(),r,a).toLowerCase().includes(t)}}}var ee={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;continue}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 h(e,t){return t===`boolean`?e.trim().toLowerCase()===`true`:m(e,t)}function g(e){return/[",\r\n]/.test(e)?`"`+e.replace(/"/g,`""`)+`"`:e}function _(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`)}function v(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 y(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 b={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`},te={MsgNoData:`Sin datos`,MsgFirstPage:`Primera página`,MsgPreviousPage:`Página anterior`,MsgNextPage:`Página siguiente`,MsgLastPage:`Última página`,MsgSortBy:`Ordenar por {{column}}`,MsgPageOf:`Página {{page}} de {{total}}`,MsgFilterPlaceholder:`Buscar`,MsgFilterColumn:`Filtrar {{column}}`,MsgFilterMin:`Mín`,MsgFilterMax:`Máx`,MsgFilterFrom:`Desde`,MsgFilterTo:`Hasta`,MsgAll:`Todos`,MsgCancelFilter:`Cancelar filtro`,MsgCancelAllFilters:`Cancelar filtros`,MsgGroupByHint:`Arrastra el encabezado de una columna aquí para agrupar por ella`,MsgGroupedBy:`Agrupado por {{column}}`,MsgGroupHeader:`{{column}}: {{value}} ({{count}})`,MsgCancelGrouping:`Cancelar agrupación`,MsgSelectAll:`Seleccionar todas las filas`,MsgSelectRow:`Seleccionar fila {{index}}`,MsgExportCsv:`Exportar CSV`,MsgExportExcel:`Exportar Excel`,MsgExportPdf:`Exportar PDF`,MsgPrint:`Imprimir`,MsgToggleColumns:`Columnas`,MsgToggleColumn:`Mostrar u ocultar {{column}}`,MsgEditCell:`Editar {{column}}`,MsgEditRow:`Editar`,MsgSaveRow:`Guardar`,MsgCancelRowEdit:`Cancelar`,MsgDeleteRow:`Eliminar`,MsgAddRow:`Agregar fila`,MsgLoading:`Cargando…`,MsgDragRow:`Arrastrar para reordenar fila`,MsgAutosizeColumn:`Doble clic para ajustar la columna al contenido`,MsgExpandDetail:`Expandir detalle de fila`,MsgCollapseDetail:`Contraer detalle de fila`,MsgDeleteSelected:`Eliminar seleccionados ({{count}})`,MsgValidationRequired:`Este campo es obligatorio`,MsgValidationMin:`Debe ser como mínimo {{min}}`,MsgValidationMax:`Debe ser como máximo {{max}}`,MsgValidationPattern:`Formato inválido`},x={MsgNoData:`Aucune donnée`,MsgFirstPage:`Première page`,MsgPreviousPage:`Page précédente`,MsgNextPage:`Page suivante`,MsgLastPage:`Dernière page`,MsgSortBy:`Trier par {{column}}`,MsgPageOf:`Page {{page}} sur {{total}}`,MsgFilterPlaceholder:`Rechercher`,MsgFilterColumn:`Filtrer {{column}}`,MsgFilterMin:`Min`,MsgFilterMax:`Max`,MsgFilterFrom:`De`,MsgFilterTo:`À`,MsgAll:`Tous`,MsgCancelFilter:`Annuler le filtre`,MsgCancelAllFilters:`Effacer les filtres`,MsgGroupByHint:`Faites glisser l'en-tête d'une colonne ici pour regrouper par celle-ci`,MsgGroupedBy:`Regroupé par {{column}}`,MsgGroupHeader:`{{column}} : {{value}} ({{count}})`,MsgCancelGrouping:`Annuler le regroupement`,MsgSelectAll:`Sélectionner toutes les lignes`,MsgSelectRow:`Sélectionner la ligne {{index}}`,MsgExportCsv:`Exporter CSV`,MsgExportExcel:`Exporter Excel`,MsgExportPdf:`Exporter PDF`,MsgPrint:`Imprimer`,MsgToggleColumns:`Colonnes`,MsgToggleColumn:`Afficher/masquer {{column}}`,MsgEditCell:`Modifier {{column}}`,MsgEditRow:`Modifier`,MsgSaveRow:`Enregistrer`,MsgCancelRowEdit:`Annuler`,MsgDeleteRow:`Supprimer`,MsgAddRow:`Ajouter une ligne`,MsgLoading:`Chargement…`,MsgDragRow:`Glisser pour réordonner la ligne`,MsgAutosizeColumn:`Double-cliquez pour ajuster la colonne au contenu`,MsgExpandDetail:`Développer les détails de la ligne`,MsgCollapseDetail:`Réduire les détails de la ligne`,MsgDeleteSelected:`Supprimer la sélection ({{count}})`,MsgValidationRequired:`Ce champ est obligatoire`,MsgValidationMin:`Doit être au moins {{min}}`,MsgValidationMax:`Doit être au plus {{max}}`,MsgValidationPattern:`Format invalide`},ne={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:b,es:te,fr:x,it:ne,zh:S};function re(e,t){return t?e.replace(/\{\{(\w+)\}\}/g,(e,n)=>n in t?String(t[n]):e):e}function ie(e){let t=C[e.split(`-`)[0]]??b;return(e,n)=>re(t[e]??b[e],n)}function ae(e){return{field:()=>e.field,type:()=>e.type??`string`,format:()=>e.format??``,order:()=>e.order,aggregate:()=>e.aggregate??``}}function oe({rows:t,columns:n,locale:r=`en`,lang:a,pageSize:o=0,selectable:ee=!1,deleteConfirmMessage:g,bulkDeleteConfirmMessage:_,onRowSave:v,onRowCreate:y,onRowDelete:b,onRowsDelete:te,onCellsPaste:x,onRowOrderChange:ne,treeChildrenKey:S,treeDefaultExpanded:C=`none`,singleDetailExpand:re=!1,virtualScroll:oe=!1}){let[w,T]=(0,e.useState)([]),[E,se]=(0,e.useState)({}),[D,ce]=(0,e.useState)(``),[le,O]=(0,e.useState)(0),[k,ue]=(0,e.useState)(void 0),[A,de]=(0,e.useState)(new Set),[j,fe]=(0,e.useState)(void 0),[M,pe]=(0,e.useState)(!1),[N,P]=(0,e.useState)({}),[me,F]=(0,e.useState)({}),[he,ge]=(0,e.useState)(!1),[I,_e]=(0,e.useState)(new Set),[L,R]=(0,e.useState)(void 0),[z,ve]=(0,e.useState)(void 0),[ye,be]=(0,e.useState)({}),[xe,Se]=(0,e.useState)(void 0),[Ce,B]=(0,e.useState)(new Set),[we,V]=(0,e.useState)(new Set),Te=(0,e.useRef)(void 0),H=(0,e.useMemo)(()=>ie(a??r),[a,r]),U=(0,e.useMemo)(()=>{if(!L)return n;let e=new Map(n.map(e=>[e.field,e])),t=[];for(let n of L){let r=e.get(n);r&&(t.push(r),e.delete(n))}return t.push(...e.values()),t},[n,L]),W=(0,e.useMemo)(()=>I.size===0?U:U.filter(e=>!I.has(e.field)),[U,I]),Ee=(0,e.useMemo)(()=>U.filter(e=>e.hideable!==!1),[U]);function De(e){let t=U.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));R([...r,...a])}function Oe(e){ve(e)}function ke(e){let t=z;if(ve(void 0),!t||t===e)return;let n=U.find(e=>e.field===t);if(!n||n.reorder===!1)return;let r=U.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),De(r))}function Ae(e){return I.has(e)}function je(e){if(I.has(e)){_e(t=>{let n=new Set(t);return n.delete(e),n});return}W.length<=1||_e(t=>new Set(t).add(e))}let Me=(0,e.useMemo)(()=>W.filter(e=>e.editable),[W]);function Ne(e){O(0),ce(e)}let G=(0,e.useMemo)(()=>new Map(W.map(e=>[e.field,ae(e)])),[W]),K=(0,e.useMemo)(()=>W.filter(e=>e.aggregate).map(e=>G.get(e.field)),[W,G]);function Pe(e,t){O(0),se(n=>({...n,[e]:t}))}let q=(0,e.useMemo)(()=>{let e=t,n=D.trim().toLowerCase();n&&(e=e.filter(e=>W.some(t=>{let i=G.get(t.field);return s(e[t.field],i.type(),i.format(),r).toLowerCase().includes(n)})));let i=Object.entries(E).filter(([,e])=>d(e));return i.length>0&&(e=e.filter(e=>i.every(([t,n])=>{let i=G.get(t);return!i||f(i,e,n,r)}))),w.length>0&&(e=[...e].sort((e,t)=>{for(let{field:n,direction:i}of w){let a=i===`asc`?1:-1,o=c(e[n],t[n],r)*a;if(o!==0)return o}return 0})),e},[t,W,G,D,E,w,r]),Fe=(0,e.useMemo)(()=>{if(!k)return null;let e=G.get(k);if(!e)return null;let t=new Map;for(let n of q){let i=s(n[k],e.type(),e.format(),r),a=t.get(i);a?a.push(n):t.set(i,[n])}return Array.from(t.entries()).map(([e,t])=>({key:e,rows:t,aggregates:p(t,K)}))},[q,k,G,K,r]),Ie=(0,e.useMemo)(()=>p(q,K),[q,K]),J=!!S&&!k&&!oe;function Y(e){let t=S?e[S]:void 0;return Array.isArray(t)?t:void 0}let Le=(0,e.useMemo)(()=>{if(!J)return[];let e=D.trim().toLowerCase(),n=Object.entries(E).filter(([,e])=>d(e));return l(t,{getChildren:Y,isExpanded:e=>Ce.has(e),match:e||n.length>0?t=>e&&!W.some(n=>{let i=G.get(n.field);return s(t[n.field],i.type(),i.format(),r).toLowerCase().includes(e)})?!1:n.every(([e,n])=>{let i=G.get(e);return!i||f(i,t,n,r)}):void 0,compare:w.length>0?(e,t)=>{for(let{field:n,direction:i}of w){let a=c(e[n],t[n],r)*(i===`asc`?1:-1);if(a!==0)return a}return 0}:void 0})},[J,t,S,W,G,D,E,w,Ce,r]);(0,e.useEffect)(()=>{if(!J||Te.current===t)return;if(Te.current=t,C===`none`){B(new Set);return}let e=new Set;if(C===`all`)for(let n of u(t,Y))Y(n)?.length&&e.add(n);else{let n=(t,r)=>{if(!(r>=C))for(let i of t){let t=Y(i);t?.length&&(e.add(i),n(t,r+1))}};n(t,0)}B(e)},[J,t,C]);function Re(e){return Ce.has(e)}function ze(e){B(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}function Be(e){if(!e){B(new Set);return}let n=new Set;for(let e of u(t,Y))Y(e)?.length&&n.add(e);B(n)}let Ve=oe&&!k,He=o>0&&!k&&!J&&!Ve,Ue=He?Math.max(1,Math.ceil(q.length/o)):1,We=Math.min(le,Ue-1),Ge=(0,e.useMemo)(()=>{if(J)return Le.map(e=>e.row);if(!He)return q;let e=We*o;return q.slice(e,e+o)},[J,Le,q,He,o,We]),X=k?q:Ge;function Ke(e){return A.has(e)}function qe(e){de(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}let Je=X.length>0&&X.every(e=>A.has(e)),Ye=!Je&&X.some(e=>A.has(e));function Xe(){let e=!Je;de(t=>{let n=new Set(t);for(let t of X)e?n.add(t):n.delete(t);return n})}function Ze(){de(new Set)}function Qe(e,t=!1){O(0),T(n=>{let r=n.findIndex(t=>t.field===e);if(t){if(r===-1)return[...n,{field:e,direction:`asc`}];let t=[...n];return t[r]={field:e,direction:n[r].direction===`asc`?`desc`:`asc`},t}return n.length===1&&n[0].field===e?[{field:e,direction:n[0].direction===`asc`?`desc`:`asc`}]:[{field:e,direction:`asc`}]})}function $e(e){return w.find(t=>t.field===e)?.direction}function et(e){if(w.length<2)return;let t=w.findIndex(t=>t.field===e);return t===-1?void 0:t+1}function tt(e){return j===e}function nt(e){return M?!0:j!==void 0&&j!==e}function Z(e,t){let n=t.type??`string`;if(n===`boolean`)return!!e[t.field];if(n===`date`){let n=i(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 Q(e){let t={};for(let n of Me)t[n.field]=Z(e,n);fe(e),P(t),F({})}function rt(){fe(void 0),P({}),F({})}function it(e,t){P(n=>({...n,[e]:t}))}function at(e,t,n,r){if(e.required&&(t===``||t==null))return H(`MsgValidationRequired`);if((e.type??`string`)===`number`&&typeof n==`number`){if(e.min!==void 0&&n<e.min)return H(`MsgValidationMin`,{min:e.min});if(e.max!==void 0&&n>e.max)return H(`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 H(`MsgValidationPattern`)}return e.validator?e.validator(n,r):null}function ot(e,t,n={}){return at(e,t,t,n)}async function $(e){let t={};for(let n of Me)t[n.field]=m(e[n.field],n.type??`string`);let n={},r={},i=[];for(let a of Me){let o=a.field,s=at(a,e[o],t[o],t);if(s){n[o]=s;continue}if(!a.asyncValidator){t[o]!==void 0&&(r[o]=t[o]);continue}i.push(a.asyncValidator(t[o],t).then(e=>{e?n[o]=e:t[o]!==void 0&&(r[o]=t[o])}))}if(i.length>0){ge(!0);try{await Promise.all(i)}finally{ge(!1)}}return{errors:n,values:r}}async function st(e){if(j!==e)return;let{errors:t,values:n}=await $(N);if(j===e){if(Object.keys(t).length>0){F(t);return}fe(void 0),P({}),F({}),v?.({row:e,values:n})}}function ct(e){(!g||window.confirm(g))&&b?.(e)}function lt(){if(_&&!window.confirm(_))return;let e=Array.from(A);Ze(),te?.(e)}function ut(){pe(!0),P({}),F({})}function dt(){pe(!1),P({}),F({})}async function ft(){if(!M)return;let{errors:e,values:t}=await $(N);if(M){if(Object.keys(e).length>0){F(e);return}pe(!1),P({}),F({}),y?.(t)}}function pt(e,t){let n=Ge[e],i=G.get(t);return!n||!i?``:s(n[t],i.type(),i.format(),r)}function mt(e,t,n){let r=W.findIndex(e=>e.field===t);if(e===-1||r===-1)return;let i=[];n.replace(/\r\n$|\r$|\n$/,``).split(/\r\n|\r|\n/).map(e=>e.split(` `)).forEach((t,n)=>{let a=Ge[e+n];a&&t.forEach((e,t)=>{let n=W[r+t];n&&n.editable&&i.push({row:a,field:n.field,value:h(e,n.type??`string`)})})}),i.length>0&&x?.(i)}function ht(e){return ye[e]===void 0?U.find(t=>t.field===e)?.width??80:ye[e]}function gt(e){return ye[e]!==void 0}function _t(e,t){U.some(t=>t.field===e)&&be(n=>({...n,[e]:Math.max(30,t)}))}function vt(e){Se(e)}function yt(e){return we.has(e)}function bt(e){V(t=>{let n=re?new Set:new Set(t);return t.has(e)?n.delete(e):n.add(e),n})}function xt(e){let t=xe;if(Se(void 0),!t||t===e)return;let n=[...q],r=n.indexOf(t),i=n.indexOf(e);r!==-1&&i!==-1&&(n.splice(r,1),r<i&&i--,n.splice(i,0,t),ne?.(n))}function St(e){let t=ee?36:0;for(let n of W){if(n.field===e)break;n.pinned===`left`&&(t+=ht(n.field))}return t}function Ct(e){let t=0,n=!1;for(let r of W){if(r.field===e){n=!0;continue}n&&r.pinned===`right`&&(t+=ht(r.field))}return t}return{visibleColumns:W,stickyOffset:St,stickyOffsetRight:Ct,hideableColumns:Ee,isColumnHidden:Ae,toggleColumnVisibility:je,setColumnOrder:De,draggingField:z,onColumnDragStart:Oe,onColumnDrop:ke,effectiveWidth:ht,isColumnResized:gt,setColumnWidth:_t,draggingRow:xe,onRowDragStart:vt,onRowDrop:xt,hasTreeData:J,treeRows:Le,isTreeRowExpanded:Re,toggleTreeRow:ze,setAllTreeRowsExpanded:Be,isRowExpanded:yt,toggleRowExpanded:bt,hasVirtualScroll:Ve,visibleRows:Ge,exportRows:X,filteredRowCount:q.length,sortCriteria:w,setSort:T,toggleSort:Qe,sortDirectionFor:$e,sortPriorityFor:et,filterValues:E,setFilterValue:Pe,filterQuery:D,setFilterQuery:Ne,page:We,setPage:O,pageCount:He?Ue:1,groupByField:k,setGroupByField:ue,groups:Fe,totals:Ie,selectedRows:A,isRowSelected:Ke,toggleRowSelection:qe,allSelected:Je,someSelected:Ye,toggleSelectAll:Xe,clearSelection:Ze,editableColumns:Me,editingRow:j,isAddingRow:M,rowDraft:N,fieldErrors:me,isValidating:he,isEditingRow:tt,isAnotherRowEditing:nt,startEditingRow:Q,cancelRowEdit:rt,setRowDraftValue:it,saveRow:st,deleteRow:ct,deleteSelectedRows:lt,startAddingRow:ut,cancelAddRow:dt,saveNewRow:ft,validateCell:ot,copyCellText:pt,pasteAt:mt}}function w(e){return e.headerText||e.field}function T(e,t,n){return s(t[e.field],e.type??`string`,e.format??``,n)}function E(e,t,n){return``+[t.map(e=>g(w(e))).join(`,`),...e.map(e=>t.map(t=>g(T(t,e,n))).join(`,`))].join(`\r
|
|
2
|
-
`)}function se(e,t,n,r=`inandu-grid`){y(E(e,t,n),`${r}-export.csv`,`text/csv;charset=utf-8;`)}function D(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">${_(T(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">${_(w(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 ce(e,t,n,r=`inandu-grid`){y(D(e,t,n),`${r}-export.xls`,`application/vnd.ms-excel`)}function le(e,t,n,r=`inandu-grid`){let i=t.map(e=>`<th>${_(w(e))}</th>`).join(``),a=e.map(e=>`<tr>${t.map(t=>`<td>${_(T(t,e,n))}</td>`).join(``)}</tr>`).join(``),o=`<!doctype html><html><head><meta charset="utf-8"><title>${_(r)}</title><style>table{border-collapse:collapse;width:100%}th,td{border:1px solid #333;padding:4px 8px;text-align:left}th{background:#eee}</style></head><body><table><thead><tr>${i}</tr></thead><tbody>${a}</tbody></table></body></html>`,s=window.open(``,`_blank`);s&&(s.document.write(o),s.document.close(),s.focus(),setTimeout(()=>s.print(),0))}async function O(e,t,n,r=`inandu-grid`){let{jsPDF:i}=await Promise.resolve().then(()=>require("./jspdf.es.min-D_8zJvYC.cjs")),a=t.map(w),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(v(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=>T(e,r,n)),!1);y(o.output(`blob`),`${r}-export.pdf`)}function k(e,t,n){let r=typeof CSS<`u`&&CSS.escape?CSS.escape(t):t.replace(/"/g,`\\"`),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}function ue({rows:n,columns:r,locale:i=`en`,lang:a,pageSize:o=0,selectable:c=!1,onSelectionChange:l,exportable:u=!1,exportFilenameBase:d=`inandu-grid`,deletable:f=!1,deleteConfirmMessage:p,bulkDeleteConfirmMessage:m,creatable:h=!1,onRowSave:g,onRowCreate:_,onRowDelete:v,onRowsDelete:y,clipboard:b=!1,onCellsPaste:te,columnToggle:x=!1,rowReorder:ne=!1,onRowOrderChange:S,treeChildrenKey:C,treeDefaultExpanded:re=`none`,renderDetail:ae,singleDetailExpand:w=!1,virtualScroll:T=!1,virtualRowHeight:E=40,height:D=400,overscan:ue=4,autosize:M=!1}){let{visibleColumns:N,hideableColumns:P,isColumnHidden:me,toggleColumnVisibility:F,onColumnDragStart:he,onColumnDrop:ge,effectiveWidth:I,isColumnResized:_e,setColumnWidth:L,visibleRows:R,exportRows:z,filteredRowCount:ve,toggleSort:ye,sortDirectionFor:be,sortPriorityFor:xe,filterValues:Se,setFilterValue:Ce,filterQuery:B,setFilterQuery:we,page:V,setPage:Te,pageCount:H,groupByField:U,setGroupByField:W,groups:Ee,totals:De,selectedRows:Oe,isRowSelected:ke,toggleRowSelection:Ae,allSelected:je,someSelected:Me,toggleSelectAll:Ne,editableColumns:G,isAddingRow:K,rowDraft:Pe,fieldErrors:q,isValidating:Fe,isEditingRow:Ie,isAnotherRowEditing:J,startEditingRow:Y,cancelRowEdit:Le,setRowDraftValue:Re,saveRow:ze,deleteRow:Be,deleteSelectedRows:Ve,startAddingRow:He,cancelAddRow:Ue,saveNewRow:We,copyCellText:Ge,pasteAt:X,stickyOffset:Ke,stickyOffsetRight:qe,draggingRow:Je,onRowDragStart:Ye,onRowDrop:Xe,hasTreeData:Ze,treeRows:Qe,isTreeRowExpanded:$e,toggleTreeRow:et,isRowExpanded:tt,toggleRowExpanded:nt,hasVirtualScroll:Z}=oe({rows:n,columns:r,locale:i,lang:a,pageSize:o,selectable:c,deleteConfirmMessage:p,bulkDeleteConfirmMessage:m,onRowSave:g,onRowCreate:_,onRowDelete:v,onRowsDelete:y,onCellsPaste:te,onRowOrderChange:S,treeChildrenKey:C,treeDefaultExpanded:re,singleDetailExpand:w,virtualScroll:T}),Q=(0,e.useMemo)(()=>ie(a??i),[a,i]),[rt,it]=(0,e.useState)(void 0),[at,ot]=(0,e.useState)(void 0),[$,st]=(0,e.useState)(null),[ct,lt]=(0,e.useState)(0),ut=(0,e.useRef)(null);(0,e.useEffect)(()=>{l?.(Array.from(Oe))},[Oe,l]),(0,e.useEffect)(()=>{if(!$)return;let e=e=>{L($.field,$.startWidth+(e.clientX-$.startX))},t=()=>st(null);return window.addEventListener(`mousemove`,e),window.addEventListener(`mouseup`,t),()=>{window.removeEventListener(`mousemove`,e),window.removeEventListener(`mouseup`,t)}},[$,L]);function dt(e,t){e.preventDefault(),st({field:t,startX:e.clientX,startWidth:I(t)})}function ft(e,t){if(!M||!ut.current)return;e.preventDefault(),e.stopPropagation();let n=k(ut.current,t.field,t.headerText??t.field);n>0&&L(t.field,Math.min(600,n))}let pt=N.filter(e=>e.aggregate),mt=N.filter(e=>e.groupable!==!1),ht=Ee?Ee.length===0:R.length===0,gt=G.length>0||f||h,_t=ne&&!U&&!Z,vt=!!ae&&!U&&!Z,yt=+!!vt+ +!!_t+ +!!c+ +!!gt,bt=Z?Math.max(0,Math.floor(ct/E)-ue):0,xt=Z?Math.min(R.length,Math.ceil((ct+D)/E)+ue):R.length,St=Z?R.slice(bt,xt):R,Ct=bt*E,wt=(R.length-xt)*E;function Tt(e,t){Ce(e,{...Se[e],...t})}function Et(e){let t=e.width!==void 0||_e(e.field)?{width:I(e.field)}:{};return e.pinned===`left`?{...t,position:`sticky`,left:Ke(e.field),zIndex:1}:e.pinned===`right`?{...t,position:`sticky`,right:qe(e.field),zIndex:1}:t}function Dt(e,t){he(t),e.dataTransfer.setData(`text/plain`,t)}function Ot(e,t){e.preventDefault(),it(t)}function kt(e,t){e.preventDefault(),it(void 0),ge(t)}let At=c?{position:`sticky`,left:0,zIndex:1}:void 0;function jt(e,t){let n=e.aggregate,r=t[e.field];if(!n||r===void 0)return``;let a=n===`count`?String(r):s(r,`number`,e.format??``,i);return`${e.headerText??e.field} ${ee[n]}: ${a}`}function Mt(e){if(!b||!(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);e.preventDefault(),t===`c`?navigator.clipboard?.writeText(Ge(o,i))?.catch(()=>void 0):navigator.clipboard?.readText()?.then(e=>X(o,i,e)).catch(()=>void 0)}let Nt={columns:N,locale:i,t:Q,selectable:c,selectColumnStyle:At,columnStyle:Et,isRowSelected:ke,toggleRowSelection:Ae,hasRowActions:gt,editableColumns:G,isEditingRow:Ie,isAnotherRowEditing:J,startEditingRow:Y,cancelRowEdit:Le,saveRow:ze,deleteRow:Be,deletable:f,rowDraft:Pe,fieldErrors:q,isValidating:Fe,setRowDraftValue:Re};return(0,t.jsxs)(`div`,{className:`inandu-grid-react`,children:[(0,t.jsx)(`div`,{className:`inandu-grid-search`,children:(0,t.jsx)(`input`,{"aria-label":Q(`MsgFilterPlaceholder`),type:`text`,placeholder:`${Q(`MsgFilterPlaceholder`)}…`,value:B,onChange:e=>we(e.target.value)})}),(0,t.jsxs)(`div`,{className:`inandu-grid-toolbar`,children:[u&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(`button`,{type:`button`,onClick:()=>se(z,N,i,d),children:Q(`MsgExportCsv`)}),(0,t.jsx)(`button`,{type:`button`,onClick:()=>ce(z,N,i,d),children:Q(`MsgExportExcel`)}),(0,t.jsx)(`button`,{type:`button`,onClick:()=>void O(z,N,i,d),children:Q(`MsgExportPdf`)}),(0,t.jsx)(`button`,{type:`button`,onClick:()=>le(z,N,i,d),children:Q(`MsgPrint`)})]}),h&&G.length>0&&!K&&(0,t.jsx)(`button`,{type:`button`,onClick:He,children:Q(`MsgAddRow`)}),c&&f&&Oe.size>0&&(0,t.jsx)(`button`,{type:`button`,onClick:Ve,children:Q(`MsgDeleteSelected`,{count:Oe.size})}),x&&(0,t.jsxs)(`details`,{className:`inandu-grid-column-toggle`,children:[(0,t.jsx)(`summary`,{children:Q(`MsgToggleColumns`)}),(0,t.jsx)(`ul`,{children:P.map(e=>(0,t.jsx)(`li`,{children:(0,t.jsxs)(`label`,{children:[(0,t.jsx)(`input`,{"aria-label":Q(`MsgToggleColumn`,{column:e.headerText??e.field}),type:`checkbox`,checked:!me(e.field),onChange:()=>F(e.field)}),` `,e.headerText??e.field]})},e.field))})]})]}),mt.length>0&&(0,t.jsx)(`div`,{className:`inandu-grid-group-by`,children:(0,t.jsxs)(`label`,{children:[U?Q(`MsgGroupedBy`,{column:mt.find(e=>e.field===U)?.headerText??U}):Q(`MsgGroupByHint`),` `,(0,t.jsxs)(`select`,{"aria-label":`Group by`,value:U??``,onChange:e=>W(e.target.value||void 0),children:[(0,t.jsx)(`option`,{value:``,children:Q(`MsgCancelGrouping`)}),mt.map(e=>(0,t.jsx)(`option`,{value:e.field,children:e.headerText??e.field},e.field))]})]})}),(0,t.jsx)(`div`,{className:Z?`inandu-grid-viewport`:void 0,style:Z?{height:D,overflow:`auto`}:void 0,onScroll:Z?e=>lt(e.currentTarget.scrollTop):void 0,children:(0,t.jsxs)(`table`,{ref:ut,className:`inandu-grid`,onKeyDown:Mt,children:[(0,t.jsxs)(`thead`,{children:[(0,t.jsxs)(`tr`,{children:[vt&&(0,t.jsx)(`th`,{}),_t&&(0,t.jsx)(`th`,{}),c&&(0,t.jsx)(`th`,{style:At,children:(0,t.jsx)(`input`,{"aria-label":Q(`MsgSelectAll`),type:`checkbox`,checked:je,ref:e=>{e&&(e.indeterminate=Me)},onChange:Ne})}),N.map(e=>{let n=be(e.field),r=xe(e.field);return(0,t.jsxs)(`th`,{"data-field":e.field,style:Et(e),className:rt===e.field?`inandu-drag-over`:void 0,draggable:e.reorder!==!1,onDragStart:t=>Dt(t,e.field),onDragOver:t=>Ot(t,e.field),onDragLeave:()=>it(t=>t===e.field?void 0:t),onDrop:t=>kt(t,e.field),onClick:t=>ye(e.field,t.shiftKey),"aria-label":Q(`MsgSortBy`,{column:e.headerText??e.field}),children:[e.headerText??e.field,n?n===`asc`?` ▲`:` ▼`:``,r!==void 0&&(0,t.jsx)(`sup`,{className:`inandu-grid-sort-priority`,children:r}),(0,t.jsx)(`span`,{className:`inandu-grid-resize-handle`,onMouseDown:t=>dt(t,e.field),onDoubleClick:t=>ft(t,e),onClick:e=>e.stopPropagation(),draggable:!1})]},e.field)}),gt&&(0,t.jsx)(`th`,{})]}),(0,t.jsxs)(`tr`,{className:`inandu-grid-filter-row`,children:[vt&&(0,t.jsx)(`th`,{}),_t&&(0,t.jsx)(`th`,{}),c&&(0,t.jsx)(`th`,{style:At}),N.map(e=>(0,t.jsx)(`th`,{style:Et(e),children:(0,t.jsx)(pe,{column:e,value:Se[e.field],onChange:t=>Tt(e.field,t),t:Q})},e.field)),gt&&(0,t.jsx)(`th`,{})]})]}),(0,t.jsxs)(`tbody`,{children:[K&&(0,t.jsx)(de,{...Nt,onSave:()=>void We(),onCancel:Ue}),ht?(0,t.jsx)(`tr`,{children:(0,t.jsx)(`td`,{colSpan:N.length+yt,children:Q(`MsgNoData`)})}):Ze?Qe.map((e,n)=>(0,t.jsx)(fe,{node:e,rowIndex:n,isTreeRowExpanded:$e,toggleTreeRow:et,...Nt},e.row.id==null?n:String(e.row.id))):Ee?Ee.map(e=>(0,t.jsx)(j,{group:e,aggregateColumns:pt,aggregateLabel:jt,extraColumnCount:yt,...Nt},e.key)):(0,t.jsxs)(t.Fragment,{children:[Z&&Ct>0&&(0,t.jsx)(`tr`,{"aria-hidden":`true`,children:(0,t.jsx)(`td`,{style:{height:Ct,padding:0,border:`none`},colSpan:N.length+yt})}),St.map((e,n)=>{let r=bt+n;return(0,t.jsx)(A,{row:e,rowIndex:r,clipboard:b,hasRowDragHandle:_t,isDragOverRow:Je!==void 0&&at===e,onRowDragStart:()=>Ye(e),onRowDragOver:()=>ot(e),onRowDragLeave:()=>ot(t=>t===e?void 0:t),onRowDrop:()=>Xe(e),hasMasterDetail:vt,isRowExpanded:tt(e),toggleRowExpanded:()=>nt(e),renderDetail:ae,extraColumnCount:yt,...Nt},e.id==null?r:String(e.id))}),Z&&wt>0&&(0,t.jsx)(`tr`,{"aria-hidden":`true`,children:(0,t.jsx)(`td`,{style:{height:wt,padding:0,border:`none`},colSpan:N.length+yt})})]})]}),pt.length>0&&!Z&&(0,t.jsx)(`tfoot`,{children:(0,t.jsxs)(`tr`,{className:`inandu-grid-totals-row`,children:[vt&&(0,t.jsx)(`td`,{}),_t&&(0,t.jsx)(`td`,{}),c&&(0,t.jsx)(`td`,{style:At}),N.map(e=>(0,t.jsx)(`td`,{style:Et(e),children:e.aggregate?jt(e,De):``},e.field)),gt&&(0,t.jsx)(`td`,{})]})})]})}),o>0&&!U&&!Z&&(0,t.jsxs)(`div`,{className:`inandu-grid-pagination`,children:[(0,t.jsxs)(`button`,{type:`button`,disabled:V===0,onClick:()=>Te(V-1),children:[`‹ `,Q(`MsgPreviousPage`)]}),(0,t.jsxs)(`span`,{children:[Q(`MsgPageOf`,{page:V+1,total:H}),` (`,ve,`)`]}),(0,t.jsxs)(`button`,{type:`button`,disabled:V>=H-1,onClick:()=>Te(V+1),children:[Q(`MsgNextPage`),` ›`]})]})]})}function A({row:e,rowIndex:n,columns:r,locale:i,t:a,selectable:o,selectColumnStyle:c,columnStyle:l,isRowSelected:u,toggleRowSelection:d,hasRowActions:f,editableColumns:ee,isEditingRow:p,isAnotherRowEditing:m,startEditingRow:h,cancelRowEdit:g,saveRow:_,deleteRow:v,deletable:y,rowDraft:b,fieldErrors:te,isValidating:x,setRowDraftValue:ne,clipboard:S=!1,hasRowDragHandle:C=!1,isDragOverRow:re=!1,onRowDragStart:ie,onRowDragOver:ae,onRowDragLeave:oe,onRowDrop:w,hasMasterDetail:T=!1,isRowExpanded:E=!1,toggleRowExpanded:se,renderDetail:D,extraColumnCount:ce=0}){let le=p(e),O=a(E?`MsgCollapseDetail`:`MsgExpandDetail`);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(`tr`,{"data-row-index":S?n:void 0,className:re?`inandu-drag-over`:void 0,onDragOver:C?e=>{e.preventDefault(),ae?.()}:void 0,onDragLeave:C?oe:void 0,onDrop:C?e=>{e.preventDefault(),w?.()}:void 0,children:[T&&(0,t.jsx)(`td`,{children:(0,t.jsx)(`button`,{type:`button`,className:`inandu-grid-detail-toggle`,"aria-label":O,title:O,onClick:se,children:E?`▾`:`▸`})}),C&&(0,t.jsx)(`td`,{children:(0,t.jsx)(`span`,{className:`inandu-grid-row-drag-handle`,"aria-label":a(`MsgDragRow`),draggable:!0,onDragStart:e=>{ie?.(),e.dataTransfer.setData(`text/plain`,`row`)},children:`⋮⋮`})}),o&&(0,t.jsx)(`td`,{style:c,children:(0,t.jsx)(`input`,{"aria-label":a(`MsgSelectRow`,{index:n+1}),type:`checkbox`,checked:u(e),onChange:()=>d(e)})}),r.map(n=>(0,t.jsx)(`td`,{style:l(n),"data-field":n.field,tabIndex:S?0:void 0,children:le&&n.editable?(0,t.jsx)(M,{column:n,value:b[n.field],error:te[n.field],onChange:e=>ne(n.field,e),t:a}):s(e[n.field],n.type??`string`,n.format??``,i)},n.field)),f&&(0,t.jsx)(`td`,{className:`inandu-grid-row-actions`,children:le?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(`button`,{type:`button`,disabled:x,onClick:()=>_(e),children:a(`MsgSaveRow`)}),(0,t.jsx)(`button`,{type:`button`,disabled:x,onClick:g,children:a(`MsgCancelRowEdit`)})]}):(0,t.jsxs)(t.Fragment,{children:[ee.length>0&&(0,t.jsx)(`button`,{type:`button`,disabled:m(e),onClick:()=>h(e),children:a(`MsgEditRow`)}),y&&(0,t.jsx)(`button`,{type:`button`,disabled:m(e),onClick:()=>v(e),children:a(`MsgDeleteRow`)})]})})]}),T&&E&&(0,t.jsx)(`tr`,{className:`inandu-grid-detail-row`,children:(0,t.jsx)(`td`,{colSpan:r.length+ce,children:D?.(e)})})]})}function de({columns:e,t:n,selectable:r,selectColumnStyle:i,columnStyle:a,hasRowActions:o,rowDraft:s,fieldErrors:c,isValidating:l,setRowDraftValue:u,onSave:d,onCancel:f}){return(0,t.jsxs)(`tr`,{className:`inandu-grid-new-row`,children:[r&&(0,t.jsx)(`td`,{style:i}),e.map(e=>(0,t.jsx)(`td`,{style:a(e),children:e.editable?(0,t.jsx)(M,{column:e,value:s[e.field],error:c[e.field],onChange:t=>u(e.field,t),t:n}):null},e.field)),o&&(0,t.jsxs)(`td`,{className:`inandu-grid-row-actions`,children:[(0,t.jsx)(`button`,{type:`button`,disabled:l,onClick:d,children:n(`MsgSaveRow`)}),(0,t.jsx)(`button`,{type:`button`,disabled:l,onClick:f,children:n(`MsgCancelRowEdit`)})]})]})}function j({group:e,columns:n,aggregateColumns:r,aggregateLabel:i,extraColumnCount:a,...o}){return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(`tr`,{className:`inandu-grid-group-row`,children:(0,t.jsxs)(`td`,{colSpan:n.length+a,children:[(0,t.jsx)(`strong`,{children:e.key}),` (`,e.rows.length,`)`,r.length>0&&(0,t.jsx)(`span`,{className:`inandu-grid-group-aggregates`,children:r.map(n=>(0,t.jsxs)(`span`,{children:[` · `,i(n,e.aggregates)]},n.field))})]})}),e.rows.map((r,i)=>(0,t.jsx)(A,{row:r,rowIndex:i,columns:n,...o},r.id==null?`${e.key}:${i}`:String(r.id)))]})}function fe({node:e,rowIndex:n,columns:r,locale:i,t:a,selectable:o,selectColumnStyle:c,columnStyle:l,isRowSelected:u,toggleRowSelection:d,hasRowActions:f,isTreeRowExpanded:ee,toggleTreeRow:p}){let{row:m,depth:h,expandable:g}=e,_=ee(m),v=a(_?`MsgCollapseDetail`:`MsgExpandDetail`);return(0,t.jsxs)(`tr`,{"aria-level":h+1,"aria-expanded":g?_:void 0,children:[o&&(0,t.jsx)(`td`,{style:c,children:(0,t.jsx)(`input`,{"aria-label":a(`MsgSelectRow`,{index:n+1}),type:`checkbox`,checked:u(m),onChange:()=>d(m)})}),r.map((e,n)=>(0,t.jsx)(`td`,{style:l(e),children:n===0?(0,t.jsxs)(`span`,{className:`inandu-grid-tree-cell`,style:{paddingInlineStart:h*16},children:[g?(0,t.jsx)(`button`,{type:`button`,className:`inandu-grid-tree-toggle`,"aria-label":v,title:v,onClick:()=>p(m),children:_?`▾`:`▸`}):(0,t.jsx)(`span`,{className:`inandu-grid-tree-toggle-spacer`,"aria-hidden":`true`}),s(m[e.field],e.type??`string`,e.format??``,i)]}):s(m[e.field],e.type??`string`,e.format??``,i)},e.field)),f&&(0,t.jsx)(`td`,{className:`inandu-grid-row-actions`})]})}function M({column:e,value:n,error:r,onChange:i,t:a}){let o=e.type??`string`,s=a(`MsgEditCell`,{column:e.headerText??e.field});return(0,t.jsxs)(`span`,{className:`inandu-grid-edit-cell`,children:[o===`boolean`?(0,t.jsx)(`input`,{"aria-label":s,type:`checkbox`,checked:!!n,onChange:e=>i(e.target.checked)}):o===`date`?(0,t.jsx)(`input`,{"aria-label":s,type:`date`,value:typeof n==`string`?n:``,onChange:e=>i(e.target.value)}):(0,t.jsx)(`input`,{"aria-label":s,type:o===`number`?`number`:`text`,value:typeof n==`string`?n:``,onChange:e=>i(e.target.value)}),r&&(0,t.jsx)(`span`,{className:`inandu-grid-field-error`,children:r})]})}function pe({column:e,value:n,onChange:r,t:i}){let a=e.type??`string`,o=i(`MsgFilterColumn`,{column:e.headerText??e.field});return a===`number`?(0,t.jsxs)(`span`,{className:`inandu-grid-filter-range`,children:[(0,t.jsx)(`input`,{"aria-label":`${o} ${i(`MsgFilterMin`)}`,type:`number`,value:n?.min??``,onChange:e=>r({min:e.target.value})}),(0,t.jsx)(`input`,{"aria-label":`${o} ${i(`MsgFilterMax`)}`,type:`number`,value:n?.max??``,onChange:e=>r({max:e.target.value})})]}):a===`date`?(0,t.jsxs)(`span`,{className:`inandu-grid-filter-range`,children:[(0,t.jsx)(`input`,{"aria-label":`${o} ${i(`MsgFilterFrom`)}`,type:`date`,value:n?.from??``,onChange:e=>r({from:e.target.value})}),(0,t.jsx)(`input`,{"aria-label":`${o} ${i(`MsgFilterTo`)}`,type:`date`,value:n?.to??``,onChange:e=>r({to:e.target.value})})]}):a===`boolean`?(0,t.jsxs)(`select`,{"aria-label":o,value:n?.bool??``,onChange:e=>r({bool:e.target.value}),children:[(0,t.jsx)(`option`,{value:``,children:i(`MsgAll`)}),(0,t.jsx)(`option`,{value:`true`,children:`true`}),(0,t.jsx)(`option`,{value:`false`,children:`false`})]}):(0,t.jsx)(`input`,{"aria-label":o,type:`text`,value:n?.text??``,onChange:e=>r({text:e.target.value})})}exports.AGGREGATE_SYMBOLS=ee,exports.INANDU_GRID_TRANSLATIONS=C,exports.InanduGrid=ue,exports.buildCsv=E,exports.buildExcelXml=D,exports.compareCellValues=c,exports.computeGroupAggregates=p,exports.createTranslator=ie,exports.en=b,exports.es=te,exports.exportCsv=se,exports.exportExcel=ce,exports.exportPdf=O,exports.formatCellValue=s,exports.fr=x,exports.interpolate=re,exports.it=ne,exports.matchesColumnFilter=f,exports.measureColumnContentWidth=k,exports.printTable=le,exports.useInanduGrid=oe,exports.zh=S;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("react"),t=require("react/jsx-runtime");var n=/^(\d+)?\.(\d+)-(\d+)$/;function r(e,t,r){let i={},a=r?n.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(t||void 0,i).format(e)}function i(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 a=/YYYY|sss|MM|DD|HH|mm|ss/g;function o(e,t){let n=(e,t=2)=>String(e).padStart(t,`0`);return t.replace(a,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 s(e,t,n,a,s=r){if(e==null)return``;switch(t){case`number`:{let t=typeof e==`number`?e:Number(e);return Number.isNaN(t)?String(e):s(t,a,n||void 0)}case`date`:{let t=i(e);return Number.isNaN(t.getTime())?String(e):o(t,n||`YYYY-MM-DD`)}case`boolean`:{let[t,r]=(n||`true|false`).split(`|`);return e?t:r}default:return String(e)}}function c(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 l(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 u(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 d(e){return e?Object.values(e).some(e=>Array.isArray(e)?!0:!!e):!1}function f(e,t,n,r,a){let o=t[e.field()];if(n.values!==void 0)return n.values.includes(s(o,e.type(),e.format(),r,a));switch(e.type()){case`number`:{let e=!!n.min,t=!!n.max;if(!e&&!t)return!0;let r=typeof o==`number`?o:Number(o);return!(o==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(o==null)return!1;let r=i(o);if(Number.isNaN(r.getTime())||e&&r<new Date(n.from))return!1;if(t){let e=new Date(n.to);if(e.setHours(23,59,59,999),r>e)return!1}return!0}case`boolean`:return!n.bool||!!o==(n.bool===`true`);default:{let t=(n.text??``).trim().toLowerCase();return!t||s(o,e.type(),e.format(),r,a).toLowerCase().includes(t)}}}var ee={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;continue}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 h(e,t){return t===`boolean`?e.trim().toLowerCase()===`true`:m(e,t)}function g(e){return/[",\r\n]/.test(e)?`"`+e.replace(/"/g,`""`)+`"`:e}function _(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`)}function v(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 y(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 b={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`},te={MsgNoData:`Sin datos`,MsgFirstPage:`Primera página`,MsgPreviousPage:`Página anterior`,MsgNextPage:`Página siguiente`,MsgLastPage:`Última página`,MsgSortBy:`Ordenar por {{column}}`,MsgPageOf:`Página {{page}} de {{total}}`,MsgFilterPlaceholder:`Buscar`,MsgFilterColumn:`Filtrar {{column}}`,MsgFilterMin:`Mín`,MsgFilterMax:`Máx`,MsgFilterFrom:`Desde`,MsgFilterTo:`Hasta`,MsgAll:`Todos`,MsgCancelFilter:`Cancelar filtro`,MsgCancelAllFilters:`Cancelar filtros`,MsgGroupByHint:`Arrastra el encabezado de una columna aquí para agrupar por ella`,MsgGroupedBy:`Agrupado por {{column}}`,MsgGroupHeader:`{{column}}: {{value}} ({{count}})`,MsgCancelGrouping:`Cancelar agrupación`,MsgSelectAll:`Seleccionar todas las filas`,MsgSelectRow:`Seleccionar fila {{index}}`,MsgExportCsv:`Exportar CSV`,MsgExportExcel:`Exportar Excel`,MsgExportPdf:`Exportar PDF`,MsgPrint:`Imprimir`,MsgToggleColumns:`Columnas`,MsgToggleColumn:`Mostrar u ocultar {{column}}`,MsgEditCell:`Editar {{column}}`,MsgEditRow:`Editar`,MsgSaveRow:`Guardar`,MsgCancelRowEdit:`Cancelar`,MsgDeleteRow:`Eliminar`,MsgAddRow:`Agregar fila`,MsgLoading:`Cargando…`,MsgDragRow:`Arrastrar para reordenar fila`,MsgAutosizeColumn:`Doble clic para ajustar la columna al contenido`,MsgExpandDetail:`Expandir detalle de fila`,MsgCollapseDetail:`Contraer detalle de fila`,MsgDeleteSelected:`Eliminar seleccionados ({{count}})`,MsgValidationRequired:`Este campo es obligatorio`,MsgValidationMin:`Debe ser como mínimo {{min}}`,MsgValidationMax:`Debe ser como máximo {{max}}`,MsgValidationPattern:`Formato inválido`},x={MsgNoData:`Aucune donnée`,MsgFirstPage:`Première page`,MsgPreviousPage:`Page précédente`,MsgNextPage:`Page suivante`,MsgLastPage:`Dernière page`,MsgSortBy:`Trier par {{column}}`,MsgPageOf:`Page {{page}} sur {{total}}`,MsgFilterPlaceholder:`Rechercher`,MsgFilterColumn:`Filtrer {{column}}`,MsgFilterMin:`Min`,MsgFilterMax:`Max`,MsgFilterFrom:`De`,MsgFilterTo:`À`,MsgAll:`Tous`,MsgCancelFilter:`Annuler le filtre`,MsgCancelAllFilters:`Effacer les filtres`,MsgGroupByHint:`Faites glisser l'en-tête d'une colonne ici pour regrouper par celle-ci`,MsgGroupedBy:`Regroupé par {{column}}`,MsgGroupHeader:`{{column}} : {{value}} ({{count}})`,MsgCancelGrouping:`Annuler le regroupement`,MsgSelectAll:`Sélectionner toutes les lignes`,MsgSelectRow:`Sélectionner la ligne {{index}}`,MsgExportCsv:`Exporter CSV`,MsgExportExcel:`Exporter Excel`,MsgExportPdf:`Exporter PDF`,MsgPrint:`Imprimer`,MsgToggleColumns:`Colonnes`,MsgToggleColumn:`Afficher/masquer {{column}}`,MsgEditCell:`Modifier {{column}}`,MsgEditRow:`Modifier`,MsgSaveRow:`Enregistrer`,MsgCancelRowEdit:`Annuler`,MsgDeleteRow:`Supprimer`,MsgAddRow:`Ajouter une ligne`,MsgLoading:`Chargement…`,MsgDragRow:`Glisser pour réordonner la ligne`,MsgAutosizeColumn:`Double-cliquez pour ajuster la colonne au contenu`,MsgExpandDetail:`Développer les détails de la ligne`,MsgCollapseDetail:`Réduire les détails de la ligne`,MsgDeleteSelected:`Supprimer la sélection ({{count}})`,MsgValidationRequired:`Ce champ est obligatoire`,MsgValidationMin:`Doit être au moins {{min}}`,MsgValidationMax:`Doit être au plus {{max}}`,MsgValidationPattern:`Format invalide`},ne={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:b,es:te,fr:x,it:ne,zh:S};function re(e,t){return t?e.replace(/\{\{(\w+)\}\}/g,(e,n)=>n in t?String(t[n]):e):e}function ie(e){let t=C[e.split(`-`)[0]]??b;return(e,n)=>re(t[e]??b[e],n)}function ae(e){return{field:()=>e.field,type:()=>e.type??`string`,format:()=>e.format??``,order:()=>e.order,aggregate:()=>e.aggregate??``}}function oe({rows:t,columns:n,locale:r=`en`,lang:a,pageSize:o=0,selectable:ee=!1,deleteConfirmMessage:g,bulkDeleteConfirmMessage:_,onRowSave:v,onRowCreate:y,onRowDelete:b,onRowsDelete:te,onCellsPaste:x,onRowOrderChange:ne,treeChildrenKey:S,treeDefaultExpanded:C=`none`,singleDetailExpand:re=!1,virtualScroll:oe=!1}){let[w,T]=(0,e.useState)([]),[E,se]=(0,e.useState)({}),[D,ce]=(0,e.useState)(``),[le,O]=(0,e.useState)(0),[k,ue]=(0,e.useState)(void 0),[A,de]=(0,e.useState)(new Set),[j,fe]=(0,e.useState)(void 0),[M,pe]=(0,e.useState)(!1),[N,P]=(0,e.useState)({}),[me,F]=(0,e.useState)({}),[he,ge]=(0,e.useState)(!1),[I,_e]=(0,e.useState)(new Set),[ve,L]=(0,e.useState)(void 0),[R,ye]=(0,e.useState)(void 0),[be,xe]=(0,e.useState)({}),[Se,Ce]=(0,e.useState)({}),[we,Te]=(0,e.useState)(void 0),[Ee,z]=(0,e.useState)(new Set),[De,Oe]=(0,e.useState)(new Set),B=(0,e.useRef)(void 0),ke=(0,e.useMemo)(()=>ie(a??r),[a,r]),V=(0,e.useMemo)(()=>{if(!ve)return n;let e=new Map(n.map(e=>[e.field,e])),t=[];for(let n of ve){let r=e.get(n);r&&(t.push(r),e.delete(n))}return t.push(...e.values()),t},[n,ve]),H=(0,e.useMemo)(()=>I.size===0?V:V.filter(e=>!I.has(e.field)),[V,I]),Ae=(0,e.useMemo)(()=>V.filter(e=>e.hideable!==!1),[V]);function je(e){let t=V.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));L([...r,...a])}function Me(e){ye(e)}function Ne(e){let t=R;if(ye(void 0),!t||t===e)return;let n=V.find(e=>e.field===t);if(!n||n.reorder===!1)return;let r=V.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),je(r))}function Pe(e){return I.has(e)}function Fe(e){if(I.has(e)){_e(t=>{let n=new Set(t);return n.delete(e),n});return}H.length<=1||_e(t=>new Set(t).add(e))}let U=(0,e.useMemo)(()=>H.filter(e=>e.editable),[H]);function Ie(e){O(0),ce(e)}let W=(0,e.useMemo)(()=>new Map(H.map(e=>[e.field,ae(e)])),[H]),Le=(0,e.useMemo)(()=>H.filter(e=>e.aggregate).map(e=>W.get(e.field)),[H,W]);function Re(e,t){O(0),se(n=>({...n,[e]:t}))}function ze(){O(0),se({})}let G=(0,e.useMemo)(()=>{let e=t,n=D.trim().toLowerCase();n&&(e=e.filter(e=>H.some(t=>{let i=W.get(t.field);return s(e[t.field],i.type(),i.format(),r).toLowerCase().includes(n)})));let i=Object.entries(E).filter(([,e])=>d(e));return i.length>0&&(e=e.filter(e=>i.every(([t,n])=>{let i=W.get(t);return!i||f(i,e,n,r)}))),w.length>0&&(e=[...e].sort((e,t)=>{for(let{field:n,direction:i}of w){let a=i===`asc`?1:-1,o=c(e[n],t[n],r)*a;if(o!==0)return o}return 0})),e},[t,H,W,D,E,w,r]),Be=(0,e.useMemo)(()=>{if(!k)return null;let e=W.get(k);if(!e)return null;let t=new Map;for(let n of G){let i=s(n[k],e.type(),e.format(),r),a=t.get(i);a?a.push(n):t.set(i,[n])}return Array.from(t.entries()).map(([e,t])=>({key:e,rows:t,aggregates:p(t,Le)}))},[G,k,W,Le,r]),Ve=(0,e.useMemo)(()=>p(G,Le),[G,Le]),K=!!S&&!k&&!oe;function q(e){let t=S?e[S]:void 0;return Array.isArray(t)?t:void 0}let He=(0,e.useMemo)(()=>{if(!K)return[];let e=D.trim().toLowerCase(),n=Object.entries(E).filter(([,e])=>d(e));return l(t,{getChildren:q,isExpanded:e=>Ee.has(e),match:e||n.length>0?t=>e&&!H.some(n=>{let i=W.get(n.field);return s(t[n.field],i.type(),i.format(),r).toLowerCase().includes(e)})?!1:n.every(([e,n])=>{let i=W.get(e);return!i||f(i,t,n,r)}):void 0,compare:w.length>0?(e,t)=>{for(let{field:n,direction:i}of w){let a=c(e[n],t[n],r)*(i===`asc`?1:-1);if(a!==0)return a}return 0}:void 0})},[K,t,S,H,W,D,E,w,Ee,r]);(0,e.useEffect)(()=>{if(!K||B.current===t)return;if(B.current=t,C===`none`){z(new Set);return}let e=new Set;if(C===`all`)for(let n of u(t,q))q(n)?.length&&e.add(n);else{let n=(t,r)=>{if(!(r>=C))for(let i of t){let t=q(i);t?.length&&(e.add(i),n(t,r+1))}};n(t,0)}z(e)},[K,t,C]);function Ue(e){return Ee.has(e)}function We(e){z(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}function Ge(e){if(!e){z(new Set);return}let n=new Set;for(let e of u(t,q))q(e)?.length&&n.add(e);z(n)}let Ke=oe&&!k,qe=o>0&&!k&&!K&&!Ke,Je=qe?Math.max(1,Math.ceil(G.length/o)):1,Ye=Math.min(le,Je-1),Xe=(0,e.useMemo)(()=>{if(K)return He.map(e=>e.row);if(!qe)return G;let e=Ye*o;return G.slice(e,e+o)},[K,He,G,qe,o,Ye]),J=k?G:Xe;function Ze(e){return A.has(e)}function Qe(e){de(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}let $e=J.length>0&&J.every(e=>A.has(e)),et=!$e&&J.some(e=>A.has(e));function tt(){let e=!$e;de(t=>{let n=new Set(t);for(let t of J)e?n.add(t):n.delete(t);return n})}function nt(){de(new Set)}function rt(e,t=!1){O(0),T(n=>{let r=n.findIndex(t=>t.field===e);if(t){if(r===-1)return[...n,{field:e,direction:`asc`}];let t=[...n];return t[r]={field:e,direction:n[r].direction===`asc`?`desc`:`asc`},t}return n.length===1&&n[0].field===e?[{field:e,direction:n[0].direction===`asc`?`desc`:`asc`}]:[{field:e,direction:`asc`}]})}function it(e){return w.find(t=>t.field===e)?.direction}function at(e){if(w.length<2)return;let t=w.findIndex(t=>t.field===e);return t===-1?void 0:t+1}function Y(e){return j===e}function X(e){return M?!0:j!==void 0&&j!==e}function ot(e,t){let n=t.type??`string`;if(n===`boolean`)return!!e[t.field];if(n===`date`){let n=i(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 st(e){let t={};for(let n of U)t[n.field]=ot(e,n);fe(e),P(t),F({})}function ct(){fe(void 0),P({}),F({})}function lt(e,t){P(n=>({...n,[e]:t}))}function Z(e,t,n,r){if(e.required&&(t===``||t==null))return ke(`MsgValidationRequired`);if((e.type??`string`)===`number`&&typeof n==`number`){if(e.min!==void 0&&n<e.min)return ke(`MsgValidationMin`,{min:e.min});if(e.max!==void 0&&n>e.max)return ke(`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 ke(`MsgValidationPattern`)}return e.validator?e.validator(n,r):null}function ut(e,t,n={}){return Z(e,t,t,n)}async function dt(e){let t={};for(let n of U)t[n.field]=m(e[n.field],n.type??`string`);let n={},r={},i=[];for(let a of U){let o=a.field,s=Z(a,e[o],t[o],t);if(s){n[o]=s;continue}if(!a.asyncValidator){t[o]!==void 0&&(r[o]=t[o]);continue}i.push(a.asyncValidator(t[o],t).then(e=>{e?n[o]=e:t[o]!==void 0&&(r[o]=t[o])}))}if(i.length>0){ge(!0);try{await Promise.all(i)}finally{ge(!1)}}return{errors:n,values:r}}async function ft(e){if(j!==e)return;let{errors:t,values:n}=await dt(N);if(j===e){if(Object.keys(t).length>0){F(t);return}fe(void 0),P({}),F({}),v?.({row:e,values:n})}}function pt(e){(!g||window.confirm(g))&&b?.(e)}function mt(){if(_&&!window.confirm(_))return;let e=Array.from(A);nt(),te?.(e)}function ht(){pe(!0),P({}),F({})}function gt(){pe(!1),P({}),F({})}async function _t(){if(!M)return;let{errors:e,values:t}=await dt(N);if(M){if(Object.keys(e).length>0){F(e);return}pe(!1),P({}),F({}),y?.(t)}}function vt(e,t){let n=Xe[e],i=W.get(t);return!n||!i?``:s(n[t],i.type(),i.format(),r)}function Q(e,t,n){let r=H.findIndex(e=>e.field===t);if(e===-1||r===-1)return;let i=[];n.replace(/\r\n$|\r$|\n$/,``).split(/\r\n|\r|\n/).map(e=>e.split(` `)).forEach((t,n)=>{let a=Xe[e+n];a&&t.forEach((e,t)=>{let n=H[r+t];n&&n.editable&&i.push({row:a,field:n.field,value:h(e,n.type??`string`)})})}),i.length>0&&x?.(i)}function $(e){return be[e]===void 0?V.find(t=>t.field===e)?.width??80:be[e]}function yt(e){return be[e]!==void 0}function bt(e,t){V.some(t=>t.field===e)&&xe(n=>({...n,[e]:Math.max(30,t)}))}function xt(e){Te(e)}function St(e){return De.has(e)}function Ct(e){Oe(t=>{let n=re?new Set:new Set(t);return t.has(e)?n.delete(e):n.add(e),n})}function wt(e){let t=we;if(Te(void 0),!t||t===e)return;let n=[...G],r=n.indexOf(t),i=n.indexOf(e);r!==-1&&i!==-1&&(n.splice(r,1),r<i&&i--,n.splice(i,0,t),ne?.(n))}function Tt(e){let t=Se[e];if(t===`left`||t===`right`)return t;if(t!==`none`)return V.find(t=>t.field===e)?.pinned}function Et(e,t){Ce(n=>({...n,[e]:t??`none`}))}function Dt(e){let t=ee?36:0;for(let n of H){if(n.field===e)break;Tt(n.field)===`left`&&(t+=$(n.field))}return t}function Ot(e){let t=0,n=!1;for(let r of H){if(r.field===e){n=!0;continue}n&&Tt(r.field)===`right`&&(t+=$(r.field))}return t}return{visibleColumns:H,allColumns:V,stickyOffset:Dt,stickyOffsetRight:Ot,columnPinnedSide:Tt,setColumnPinned:Et,hideableColumns:Ae,isColumnHidden:Pe,toggleColumnVisibility:Fe,setColumnOrder:je,draggingField:R,onColumnDragStart:Me,onColumnDrop:Ne,effectiveWidth:$,isColumnResized:yt,setColumnWidth:bt,draggingRow:we,onRowDragStart:xt,onRowDrop:wt,hasTreeData:K,treeRows:He,isTreeRowExpanded:Ue,toggleTreeRow:We,setAllTreeRowsExpanded:Ge,isRowExpanded:St,toggleRowExpanded:Ct,hasVirtualScroll:Ke,visibleRows:Xe,exportRows:J,sortedRows:G,filteredRowCount:G.length,locale:r,sortCriteria:w,setSort:T,toggleSort:rt,sortDirectionFor:it,sortPriorityFor:at,filterValues:E,setFilterValue:Re,clearAllFilters:ze,filterQuery:D,setFilterQuery:Ie,page:Ye,setPage:O,pageCount:qe?Je:1,groupByField:k,setGroupByField:ue,groups:Be,totals:Ve,selectedRows:A,isRowSelected:Ze,toggleRowSelection:Qe,allSelected:$e,someSelected:et,toggleSelectAll:tt,clearSelection:nt,editableColumns:U,editingRow:j,isAddingRow:M,rowDraft:N,fieldErrors:me,isValidating:he,isEditingRow:Y,isAnotherRowEditing:X,startEditingRow:st,cancelRowEdit:ct,setRowDraftValue:lt,saveRow:ft,deleteRow:pt,deleteSelectedRows:mt,startAddingRow:ht,cancelAddRow:gt,saveNewRow:_t,validateCell:ut,copyCellText:vt,pasteAt:Q}}function w(e){return e.headerText||e.field}function T(e,t,n){return s(t[e.field],e.type??`string`,e.format??``,n)}function E(e,t,n){return``+[t.map(e=>g(w(e))).join(`,`),...e.map(e=>t.map(t=>g(T(t,e,n))).join(`,`))].join(`\r
|
|
2
|
+
`)}function se(e,t,n,r=`inandu-grid`){y(E(e,t,n),`${r}-export.csv`,`text/csv;charset=utf-8;`)}function D(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">${_(T(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">${_(w(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 ce(e,t,n,r=`inandu-grid`){y(D(e,t,n),`${r}-export.xls`,`application/vnd.ms-excel`)}function le(e,t,n,r=`inandu-grid`){let i=t.map(e=>`<th>${_(w(e))}</th>`).join(``),a=e.map(e=>`<tr>${t.map(t=>`<td>${_(T(t,e,n))}</td>`).join(``)}</tr>`).join(``),o=`<!doctype html><html><head><meta charset="utf-8"><title>${_(r)}</title><style>table{border-collapse:collapse;width:100%}th,td{border:1px solid #333;padding:4px 8px;text-align:left}th{background:#eee}</style></head><body><table><thead><tr>${i}</tr></thead><tbody>${a}</tbody></table></body></html>`,s=window.open(``,`_blank`);s&&(s.document.write(o),s.document.close(),s.focus(),setTimeout(()=>s.print(),0))}async function O(e,t,n,r=`inandu-grid`){let{jsPDF:i}=await Promise.resolve().then(()=>require("./jspdf.es.min-D_8zJvYC.cjs")),a=t.map(w),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(v(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=>T(e,r,n)),!1);y(o.output(`blob`),`${r}-export.pdf`)}function k(e,t,n){let r=typeof CSS<`u`&&CSS.escape?CSS.escape(t):t.replace(/"/g,`\\"`),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}function ue({rows:n,columns:r,locale:i=`en`,lang:a,pageSize:o=0,selectable:c=!1,onSelectionChange:l,exportable:u=!1,exportFilenameBase:d=`inandu-grid`,deletable:f=!1,deleteConfirmMessage:p,bulkDeleteConfirmMessage:m,creatable:h=!1,onRowSave:g,onRowCreate:_,onRowDelete:v,onRowsDelete:y,clipboard:b=!1,onCellsPaste:te,columnToggle:x=!1,rowReorder:ne=!1,onRowOrderChange:S,treeChildrenKey:C,treeDefaultExpanded:re=`none`,renderDetail:ae,singleDetailExpand:w=!1,virtualScroll:T=!1,virtualRowHeight:E=40,height:D=400,overscan:ue=4,autosize:M=!1}){let{visibleColumns:N,hideableColumns:P,isColumnHidden:me,toggleColumnVisibility:F,onColumnDragStart:he,onColumnDrop:ge,effectiveWidth:I,isColumnResized:_e,setColumnWidth:ve,visibleRows:L,exportRows:R,filteredRowCount:ye,toggleSort:be,sortDirectionFor:xe,sortPriorityFor:Se,filterValues:Ce,setFilterValue:we,filterQuery:Te,setFilterQuery:Ee,page:z,setPage:De,pageCount:Oe,groupByField:B,setGroupByField:ke,groups:V,totals:H,selectedRows:Ae,isRowSelected:je,toggleRowSelection:Me,allSelected:Ne,someSelected:Pe,toggleSelectAll:Fe,editableColumns:U,isAddingRow:Ie,rowDraft:W,fieldErrors:Le,isValidating:Re,isEditingRow:ze,isAnotherRowEditing:G,startEditingRow:Be,cancelRowEdit:Ve,setRowDraftValue:K,saveRow:q,deleteRow:He,deleteSelectedRows:Ue,startAddingRow:We,cancelAddRow:Ge,saveNewRow:Ke,copyCellText:qe,pasteAt:Je,stickyOffset:Ye,stickyOffsetRight:Xe,columnPinnedSide:J,draggingRow:Ze,onRowDragStart:Qe,onRowDrop:$e,hasTreeData:et,treeRows:tt,isTreeRowExpanded:nt,toggleTreeRow:rt,isRowExpanded:it,toggleRowExpanded:at,hasVirtualScroll:Y}=oe({rows:n,columns:r,locale:i,lang:a,pageSize:o,selectable:c,deleteConfirmMessage:p,bulkDeleteConfirmMessage:m,onRowSave:g,onRowCreate:_,onRowDelete:v,onRowsDelete:y,onCellsPaste:te,onRowOrderChange:S,treeChildrenKey:C,treeDefaultExpanded:re,singleDetailExpand:w,virtualScroll:T}),X=(0,e.useMemo)(()=>ie(a??i),[a,i]),[ot,st]=(0,e.useState)(void 0),[ct,lt]=(0,e.useState)(void 0),[Z,ut]=(0,e.useState)(null),[dt,ft]=(0,e.useState)(0),pt=(0,e.useRef)(null);(0,e.useEffect)(()=>{l?.(Array.from(Ae))},[Ae,l]),(0,e.useEffect)(()=>{if(!Z)return;let e=e=>{ve(Z.field,Z.startWidth+(e.clientX-Z.startX))},t=()=>ut(null);return window.addEventListener(`mousemove`,e),window.addEventListener(`mouseup`,t),()=>{window.removeEventListener(`mousemove`,e),window.removeEventListener(`mouseup`,t)}},[Z,ve]);function mt(e,t){e.preventDefault(),ut({field:t,startX:e.clientX,startWidth:I(t)})}function ht(e,t){if(!M||!pt.current)return;e.preventDefault(),e.stopPropagation();let n=k(pt.current,t.field,t.headerText??t.field);n>0&&ve(t.field,Math.min(600,n))}let gt=N.filter(e=>e.aggregate),_t=N.filter(e=>e.groupable!==!1),vt=V?V.length===0:L.length===0,Q=U.length>0||f||h,$=ne&&!B&&!Y,yt=!!ae&&!B&&!Y,bt=+!!yt+ +!!$+ +!!c+ +!!Q,xt=Y?Math.max(0,Math.floor(dt/E)-ue):0,St=Y?Math.min(L.length,Math.ceil((dt+D)/E)+ue):L.length,Ct=Y?L.slice(xt,St):L,wt=xt*E,Tt=(L.length-St)*E;function Et(e,t){we(e,{...Ce[e],...t})}function Dt(e){let t=e.width!==void 0||_e(e.field)?{width:I(e.field)}:{},n=J(e.field);return n===`left`?{...t,position:`sticky`,left:Ye(e.field),zIndex:1}:n===`right`?{...t,position:`sticky`,right:Xe(e.field),zIndex:1}:t}function Ot(e,t){he(t),e.dataTransfer.setData(`text/plain`,t)}function kt(e,t){e.preventDefault(),st(t)}function At(e,t){e.preventDefault(),st(void 0),ge(t)}let jt=c?{position:`sticky`,left:0,zIndex:1}:void 0;function Mt(e,t){let n=e.aggregate,r=t[e.field];if(!n||r===void 0)return``;let a=n===`count`?String(r):s(r,`number`,e.format??``,i);return`${e.headerText??e.field} ${ee[n]}: ${a}`}function Nt(e){if(!b||!(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);e.preventDefault(),t===`c`?navigator.clipboard?.writeText(qe(o,i))?.catch(()=>void 0):navigator.clipboard?.readText()?.then(e=>Je(o,i,e)).catch(()=>void 0)}let Pt={columns:N,locale:i,t:X,selectable:c,selectColumnStyle:jt,columnStyle:Dt,isRowSelected:je,toggleRowSelection:Me,hasRowActions:Q,editableColumns:U,isEditingRow:ze,isAnotherRowEditing:G,startEditingRow:Be,cancelRowEdit:Ve,saveRow:q,deleteRow:He,deletable:f,rowDraft:W,fieldErrors:Le,isValidating:Re,setRowDraftValue:K};return(0,t.jsxs)(`div`,{className:`inandu-grid-react`,children:[(0,t.jsx)(`div`,{className:`inandu-grid-search`,children:(0,t.jsx)(`input`,{"aria-label":X(`MsgFilterPlaceholder`),type:`text`,placeholder:`${X(`MsgFilterPlaceholder`)}…`,value:Te,onChange:e=>Ee(e.target.value)})}),(0,t.jsxs)(`div`,{className:`inandu-grid-toolbar`,children:[u&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(`button`,{type:`button`,onClick:()=>se(R,N,i,d),children:X(`MsgExportCsv`)}),(0,t.jsx)(`button`,{type:`button`,onClick:()=>ce(R,N,i,d),children:X(`MsgExportExcel`)}),(0,t.jsx)(`button`,{type:`button`,onClick:()=>void O(R,N,i,d),children:X(`MsgExportPdf`)}),(0,t.jsx)(`button`,{type:`button`,onClick:()=>le(R,N,i,d),children:X(`MsgPrint`)})]}),h&&U.length>0&&!Ie&&(0,t.jsx)(`button`,{type:`button`,onClick:We,children:X(`MsgAddRow`)}),c&&f&&Ae.size>0&&(0,t.jsx)(`button`,{type:`button`,onClick:Ue,children:X(`MsgDeleteSelected`,{count:Ae.size})}),x&&(0,t.jsxs)(`details`,{className:`inandu-grid-column-toggle`,children:[(0,t.jsx)(`summary`,{children:X(`MsgToggleColumns`)}),(0,t.jsx)(`ul`,{children:P.map(e=>(0,t.jsx)(`li`,{children:(0,t.jsxs)(`label`,{children:[(0,t.jsx)(`input`,{"aria-label":X(`MsgToggleColumn`,{column:e.headerText??e.field}),type:`checkbox`,checked:!me(e.field),onChange:()=>F(e.field)}),` `,e.headerText??e.field]})},e.field))})]})]}),_t.length>0&&(0,t.jsx)(`div`,{className:`inandu-grid-group-by`,children:(0,t.jsxs)(`label`,{children:[B?X(`MsgGroupedBy`,{column:_t.find(e=>e.field===B)?.headerText??B}):X(`MsgGroupByHint`),` `,(0,t.jsxs)(`select`,{"aria-label":`Group by`,value:B??``,onChange:e=>ke(e.target.value||void 0),children:[(0,t.jsx)(`option`,{value:``,children:X(`MsgCancelGrouping`)}),_t.map(e=>(0,t.jsx)(`option`,{value:e.field,children:e.headerText??e.field},e.field))]})]})}),(0,t.jsx)(`div`,{className:Y?`inandu-grid-viewport`:void 0,style:Y?{height:D,overflow:`auto`}:void 0,onScroll:Y?e=>ft(e.currentTarget.scrollTop):void 0,children:(0,t.jsxs)(`table`,{ref:pt,className:`inandu-grid`,onKeyDown:Nt,children:[(0,t.jsxs)(`thead`,{children:[(0,t.jsxs)(`tr`,{children:[yt&&(0,t.jsx)(`th`,{}),$&&(0,t.jsx)(`th`,{}),c&&(0,t.jsx)(`th`,{style:jt,children:(0,t.jsx)(`input`,{"aria-label":X(`MsgSelectAll`),type:`checkbox`,checked:Ne,ref:e=>{e&&(e.indeterminate=Pe)},onChange:Fe})}),N.map(e=>{let n=xe(e.field),r=Se(e.field);return(0,t.jsxs)(`th`,{"data-field":e.field,style:Dt(e),className:ot===e.field?`inandu-drag-over`:void 0,draggable:e.reorder!==!1,onDragStart:t=>Ot(t,e.field),onDragOver:t=>kt(t,e.field),onDragLeave:()=>st(t=>t===e.field?void 0:t),onDrop:t=>At(t,e.field),onClick:t=>be(e.field,t.shiftKey),"aria-label":X(`MsgSortBy`,{column:e.headerText??e.field}),children:[e.headerText??e.field,n?n===`asc`?` ▲`:` ▼`:``,r!==void 0&&(0,t.jsx)(`sup`,{className:`inandu-grid-sort-priority`,children:r}),(0,t.jsx)(`span`,{className:`inandu-grid-resize-handle`,onMouseDown:t=>mt(t,e.field),onDoubleClick:t=>ht(t,e),onClick:e=>e.stopPropagation(),draggable:!1})]},e.field)}),Q&&(0,t.jsx)(`th`,{})]}),(0,t.jsxs)(`tr`,{className:`inandu-grid-filter-row`,children:[yt&&(0,t.jsx)(`th`,{}),$&&(0,t.jsx)(`th`,{}),c&&(0,t.jsx)(`th`,{style:jt}),N.map(e=>(0,t.jsx)(`th`,{style:Dt(e),children:(0,t.jsx)(pe,{column:e,value:Ce[e.field],onChange:t=>Et(e.field,t),t:X})},e.field)),Q&&(0,t.jsx)(`th`,{})]})]}),(0,t.jsxs)(`tbody`,{children:[Ie&&(0,t.jsx)(de,{...Pt,onSave:()=>void Ke(),onCancel:Ge}),vt?(0,t.jsx)(`tr`,{children:(0,t.jsx)(`td`,{colSpan:N.length+bt,children:X(`MsgNoData`)})}):et?tt.map((e,n)=>(0,t.jsx)(fe,{node:e,rowIndex:n,isTreeRowExpanded:nt,toggleTreeRow:rt,...Pt},e.row.id==null?n:String(e.row.id))):V?V.map(e=>(0,t.jsx)(j,{group:e,aggregateColumns:gt,aggregateLabel:Mt,extraColumnCount:bt,...Pt},e.key)):(0,t.jsxs)(t.Fragment,{children:[Y&&wt>0&&(0,t.jsx)(`tr`,{"aria-hidden":`true`,children:(0,t.jsx)(`td`,{style:{height:wt,padding:0,border:`none`},colSpan:N.length+bt})}),Ct.map((e,n)=>{let r=xt+n;return(0,t.jsx)(A,{row:e,rowIndex:r,clipboard:b,hasRowDragHandle:$,isDragOverRow:Ze!==void 0&&ct===e,onRowDragStart:()=>Qe(e),onRowDragOver:()=>lt(e),onRowDragLeave:()=>lt(t=>t===e?void 0:t),onRowDrop:()=>$e(e),hasMasterDetail:yt,isRowExpanded:it(e),toggleRowExpanded:()=>at(e),renderDetail:ae,extraColumnCount:bt,...Pt},e.id==null?r:String(e.id))}),Y&&Tt>0&&(0,t.jsx)(`tr`,{"aria-hidden":`true`,children:(0,t.jsx)(`td`,{style:{height:Tt,padding:0,border:`none`},colSpan:N.length+bt})})]})]}),gt.length>0&&!Y&&(0,t.jsx)(`tfoot`,{children:(0,t.jsxs)(`tr`,{className:`inandu-grid-totals-row`,children:[yt&&(0,t.jsx)(`td`,{}),$&&(0,t.jsx)(`td`,{}),c&&(0,t.jsx)(`td`,{style:jt}),N.map(e=>(0,t.jsx)(`td`,{style:Dt(e),children:e.aggregate?Mt(e,H):``},e.field)),Q&&(0,t.jsx)(`td`,{})]})})]})}),o>0&&!B&&!Y&&(0,t.jsxs)(`div`,{className:`inandu-grid-pagination`,children:[(0,t.jsxs)(`button`,{type:`button`,disabled:z===0,onClick:()=>De(z-1),children:[`‹ `,X(`MsgPreviousPage`)]}),(0,t.jsxs)(`span`,{children:[X(`MsgPageOf`,{page:z+1,total:Oe}),` (`,ye,`)`]}),(0,t.jsxs)(`button`,{type:`button`,disabled:z>=Oe-1,onClick:()=>De(z+1),children:[X(`MsgNextPage`),` ›`]})]})]})}function A({row:e,rowIndex:n,columns:r,locale:i,t:a,selectable:o,selectColumnStyle:c,columnStyle:l,isRowSelected:u,toggleRowSelection:d,hasRowActions:f,editableColumns:ee,isEditingRow:p,isAnotherRowEditing:m,startEditingRow:h,cancelRowEdit:g,saveRow:_,deleteRow:v,deletable:y,rowDraft:b,fieldErrors:te,isValidating:x,setRowDraftValue:ne,clipboard:S=!1,hasRowDragHandle:C=!1,isDragOverRow:re=!1,onRowDragStart:ie,onRowDragOver:ae,onRowDragLeave:oe,onRowDrop:w,hasMasterDetail:T=!1,isRowExpanded:E=!1,toggleRowExpanded:se,renderDetail:D,extraColumnCount:ce=0}){let le=p(e),O=a(E?`MsgCollapseDetail`:`MsgExpandDetail`);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(`tr`,{"data-row-index":S?n:void 0,className:re?`inandu-drag-over`:void 0,onDragOver:C?e=>{e.preventDefault(),ae?.()}:void 0,onDragLeave:C?oe:void 0,onDrop:C?e=>{e.preventDefault(),w?.()}:void 0,children:[T&&(0,t.jsx)(`td`,{children:(0,t.jsx)(`button`,{type:`button`,className:`inandu-grid-detail-toggle`,"aria-label":O,title:O,onClick:se,children:E?`▾`:`▸`})}),C&&(0,t.jsx)(`td`,{children:(0,t.jsx)(`span`,{className:`inandu-grid-row-drag-handle`,"aria-label":a(`MsgDragRow`),draggable:!0,onDragStart:e=>{ie?.(),e.dataTransfer.setData(`text/plain`,`row`)},children:`⋮⋮`})}),o&&(0,t.jsx)(`td`,{style:c,children:(0,t.jsx)(`input`,{"aria-label":a(`MsgSelectRow`,{index:n+1}),type:`checkbox`,checked:u(e),onChange:()=>d(e)})}),r.map(n=>(0,t.jsx)(`td`,{style:l(n),"data-field":n.field,tabIndex:S?0:void 0,children:le&&n.editable?(0,t.jsx)(M,{column:n,value:b[n.field],error:te[n.field],onChange:e=>ne(n.field,e),t:a}):s(e[n.field],n.type??`string`,n.format??``,i)},n.field)),f&&(0,t.jsx)(`td`,{className:`inandu-grid-row-actions`,children:le?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(`button`,{type:`button`,disabled:x,onClick:()=>_(e),children:a(`MsgSaveRow`)}),(0,t.jsx)(`button`,{type:`button`,disabled:x,onClick:g,children:a(`MsgCancelRowEdit`)})]}):(0,t.jsxs)(t.Fragment,{children:[ee.length>0&&(0,t.jsx)(`button`,{type:`button`,disabled:m(e),onClick:()=>h(e),children:a(`MsgEditRow`)}),y&&(0,t.jsx)(`button`,{type:`button`,disabled:m(e),onClick:()=>v(e),children:a(`MsgDeleteRow`)})]})})]}),T&&E&&(0,t.jsx)(`tr`,{className:`inandu-grid-detail-row`,children:(0,t.jsx)(`td`,{colSpan:r.length+ce,children:D?.(e)})})]})}function de({columns:e,t:n,selectable:r,selectColumnStyle:i,columnStyle:a,hasRowActions:o,rowDraft:s,fieldErrors:c,isValidating:l,setRowDraftValue:u,onSave:d,onCancel:f}){return(0,t.jsxs)(`tr`,{className:`inandu-grid-new-row`,children:[r&&(0,t.jsx)(`td`,{style:i}),e.map(e=>(0,t.jsx)(`td`,{style:a(e),children:e.editable?(0,t.jsx)(M,{column:e,value:s[e.field],error:c[e.field],onChange:t=>u(e.field,t),t:n}):null},e.field)),o&&(0,t.jsxs)(`td`,{className:`inandu-grid-row-actions`,children:[(0,t.jsx)(`button`,{type:`button`,disabled:l,onClick:d,children:n(`MsgSaveRow`)}),(0,t.jsx)(`button`,{type:`button`,disabled:l,onClick:f,children:n(`MsgCancelRowEdit`)})]})]})}function j({group:e,columns:n,aggregateColumns:r,aggregateLabel:i,extraColumnCount:a,...o}){return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(`tr`,{className:`inandu-grid-group-row`,children:(0,t.jsxs)(`td`,{colSpan:n.length+a,children:[(0,t.jsx)(`strong`,{children:e.key}),` (`,e.rows.length,`)`,r.length>0&&(0,t.jsx)(`span`,{className:`inandu-grid-group-aggregates`,children:r.map(n=>(0,t.jsxs)(`span`,{children:[` · `,i(n,e.aggregates)]},n.field))})]})}),e.rows.map((r,i)=>(0,t.jsx)(A,{row:r,rowIndex:i,columns:n,...o},r.id==null?`${e.key}:${i}`:String(r.id)))]})}function fe({node:e,rowIndex:n,columns:r,locale:i,t:a,selectable:o,selectColumnStyle:c,columnStyle:l,isRowSelected:u,toggleRowSelection:d,hasRowActions:f,isTreeRowExpanded:ee,toggleTreeRow:p}){let{row:m,depth:h,expandable:g}=e,_=ee(m),v=a(_?`MsgCollapseDetail`:`MsgExpandDetail`);return(0,t.jsxs)(`tr`,{"aria-level":h+1,"aria-expanded":g?_:void 0,children:[o&&(0,t.jsx)(`td`,{style:c,children:(0,t.jsx)(`input`,{"aria-label":a(`MsgSelectRow`,{index:n+1}),type:`checkbox`,checked:u(m),onChange:()=>d(m)})}),r.map((e,n)=>(0,t.jsx)(`td`,{style:l(e),children:n===0?(0,t.jsxs)(`span`,{className:`inandu-grid-tree-cell`,style:{paddingInlineStart:h*16},children:[g?(0,t.jsx)(`button`,{type:`button`,className:`inandu-grid-tree-toggle`,"aria-label":v,title:v,onClick:()=>p(m),children:_?`▾`:`▸`}):(0,t.jsx)(`span`,{className:`inandu-grid-tree-toggle-spacer`,"aria-hidden":`true`}),s(m[e.field],e.type??`string`,e.format??``,i)]}):s(m[e.field],e.type??`string`,e.format??``,i)},e.field)),f&&(0,t.jsx)(`td`,{className:`inandu-grid-row-actions`})]})}function M({column:e,value:n,error:r,onChange:i,t:a}){let o=e.type??`string`,s=a(`MsgEditCell`,{column:e.headerText??e.field});return(0,t.jsxs)(`span`,{className:`inandu-grid-edit-cell`,children:[o===`boolean`?(0,t.jsx)(`input`,{"aria-label":s,type:`checkbox`,checked:!!n,onChange:e=>i(e.target.checked)}):o===`date`?(0,t.jsx)(`input`,{"aria-label":s,type:`date`,value:typeof n==`string`?n:``,onChange:e=>i(e.target.value)}):(0,t.jsx)(`input`,{"aria-label":s,type:o===`number`?`number`:`text`,value:typeof n==`string`?n:``,onChange:e=>i(e.target.value)}),r&&(0,t.jsx)(`span`,{className:`inandu-grid-field-error`,children:r})]})}function pe({column:e,value:n,onChange:r,t:i}){let a=e.type??`string`,o=i(`MsgFilterColumn`,{column:e.headerText??e.field});return a===`number`?(0,t.jsxs)(`span`,{className:`inandu-grid-filter-range`,children:[(0,t.jsx)(`input`,{"aria-label":`${o} ${i(`MsgFilterMin`)}`,type:`number`,value:n?.min??``,onChange:e=>r({min:e.target.value})}),(0,t.jsx)(`input`,{"aria-label":`${o} ${i(`MsgFilterMax`)}`,type:`number`,value:n?.max??``,onChange:e=>r({max:e.target.value})})]}):a===`date`?(0,t.jsxs)(`span`,{className:`inandu-grid-filter-range`,children:[(0,t.jsx)(`input`,{"aria-label":`${o} ${i(`MsgFilterFrom`)}`,type:`date`,value:n?.from??``,onChange:e=>r({from:e.target.value})}),(0,t.jsx)(`input`,{"aria-label":`${o} ${i(`MsgFilterTo`)}`,type:`date`,value:n?.to??``,onChange:e=>r({to:e.target.value})})]}):a===`boolean`?(0,t.jsxs)(`select`,{"aria-label":o,value:n?.bool??``,onChange:e=>r({bool:e.target.value}),children:[(0,t.jsx)(`option`,{value:``,children:i(`MsgAll`)}),(0,t.jsx)(`option`,{value:`true`,children:`true`}),(0,t.jsx)(`option`,{value:`false`,children:`false`})]}):(0,t.jsx)(`input`,{"aria-label":o,type:`text`,value:n?.text??``,onChange:e=>r({text:e.target.value})})}exports.AGGREGATE_SYMBOLS=ee,exports.INANDU_GRID_TRANSLATIONS=C,exports.InanduGrid=ue,exports.buildCsv=E,exports.buildExcelXml=D,exports.compareCellValues=c,exports.computeGroupAggregates=p,exports.createTranslator=ie,exports.en=b,exports.es=te,exports.exportCsv=se,exports.exportExcel=ce,exports.exportPdf=O,exports.formatCellValue=s,exports.fr=x,exports.interpolate=re,exports.it=ne,exports.matchesColumnFilter=f,exports.measureColumnContentWidth=k,exports.printTable=le,exports.useInanduGrid=oe,exports.zh=S;
|