@pravinrd/awesome-grid 0.2.7 → 0.2.8

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
@@ -142,6 +142,7 @@ The component expects a JSON response with `data` and `columns`.
142
142
  | `apiEndpoint` | `string` | required | API URL that returns `data` + `columns`. |
143
143
  | `rowKey` | `string` | required | Unique key field for each row (e.g., `id`). |
144
144
  | `theme` | `"light" \| "dark" \| "purple"` | `"light"` | Theme for the table UI. |
145
+ | `storageKey` | `string` | `apiEndpoint` | Override the IndexedDB key used for persisting preferences. Use a unique value per grid instance to avoid collisions. |
145
146
  | `currency` | `"INR" \| "USD"` | `"INR"` | Currency used for totals row formatting. |
146
147
  | `computedColumns` | `Array<{ key, label, formula }>` | `[]` | Add computed columns from row data. |
147
148
  | `pageSizeOptions` | `number[]` | `[50, 100, 500, 1000, 0]` | Page size choices; `0` means "All". |
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react"),Rt="_container_dihwe_1",Tt="_themeLight_dihwe_10",Et="_themeDark_dihwe_29",Ot="_themePurple_dihwe_48",At="_headerRow_dihwe_67",Mt="_flexRow_dihwe_76",Dt="_toolbarGroup_dihwe_82",Pt="_dropdown_dihwe_86",It="_buttonBase_dihwe_90",$t="_buttonPrimary_dihwe_101",Lt="_buttonDanger_dihwe_111",Bt="_buttonMuted_dihwe_121",Wt="_dropdownToggle_dihwe_142",Ft="_dropdownMenu_dihwe_147",Gt="_dropdownMenuOpen_dihwe_163",zt="_menuItemButton_dihwe_167",Vt="_labelMuted_dihwe_185",Ut="_selectSmall_dihwe_190",Ht="_selectAuto_dihwe_199",Yt="_switchRow_dihwe_203",Jt="_groupingSummary_dihwe_210",qt="_relative_dihwe_217",Xt="_overlay_dihwe_221",Kt="_overlayInner_dihwe_229",Zt="_spinner_dihwe_236",Qt="_tableWrap_dihwe_252",er="_tableWrapAll_dihwe_256",tr="_table_dihwe_252",rr="_tableHead_dihwe_278",nr="_thCellTop_dihwe_282",or="_thCellFilter_dihwe_290",sr="_thInner_dihwe_297",ar="_resizeHandle_dihwe_303",lr="_sortButton_dihwe_328",ir="_iconMuted_dihwe_338",cr="_inlineGroup_dihwe_342",ur="_input_dihwe_350",dr="_rowInteractive_dihwe_362",hr="_groupRow_dihwe_375",mr="_groupRowAnimated_dihwe_382",pr="_groupChildRow_dihwe_386",fr="_groupToggle_dihwe_390",gr="_groupMeta_dihwe_430",wr="_checkbox_dihwe_438",_r="_tfoot_dihwe_447",br="_textCenter_dihwe_455",yr="_paginationWrap_dihwe_459",xr="_pagination_dihwe_459",vr="_pageButton_dihwe_473",kr="_pageButtonActive_dihwe_488",Sr="_backdrop_dihwe_494",Nr="_drawer_dihwe_500",jr="_drawerTitle_dihwe_515",Cr="_drawerSection_dihwe_521",Rr="_drawerSubtitle_dihwe_527",Tr="_sectionToggle_dihwe_534",Er="_sectionBody_dihwe_547",Or="_drawerRow_dihwe_551",Ar="_spacerAuto_dihwe_558",Mr="_srOnly_dihwe_570",s={container:Rt,themeLight:Tt,themeDark:Et,themePurple:Ot,headerRow:At,flexRow:Mt,toolbarGroup:Dt,dropdown:Pt,buttonBase:It,buttonPrimary:$t,buttonDanger:Lt,buttonMuted:Bt,dropdownToggle:Wt,dropdownMenu:Ft,dropdownMenuOpen:Gt,menuItemButton:zt,labelMuted:Vt,selectSmall:Ut,selectAuto:Ht,switchRow:Yt,groupingSummary:Jt,relative:qt,overlay:Xt,overlayInner:Kt,spinner:Zt,tableWrap:Qt,tableWrapAll:er,table:tr,tableHead:rr,thCellTop:nr,thCellFilter:or,thInner:sr,resizeHandle:ar,sortButton:lr,iconMuted:ir,inlineGroup:cr,input:ur,rowInteractive:dr,groupRow:hr,groupRowAnimated:mr,groupChildRow:pr,groupToggle:fr,groupMeta:gr,checkbox:wr,tfoot:_r,textCenter:br,paginationWrap:yr,pagination:xr,pageButton:vr,pageButtonActive:kr,backdrop:Sr,drawer:Nr,drawerTitle:jr,drawerSection:Cr,drawerSubtitle:Rr,sectionToggle:Tr,sectionBody:Er,drawerRow:Or,spacerAuto:Ar,srOnly:Mr};var Pe={exports:{}},ve={};/**
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react"),Mt="_container_dihwe_1",Dt="_themeLight_dihwe_10",Pt="_themeDark_dihwe_29",Lt="_themePurple_dihwe_48",Bt="_headerRow_dihwe_67",It="_flexRow_dihwe_76",$t="_toolbarGroup_dihwe_82",Ft="_dropdown_dihwe_86",Wt="_buttonBase_dihwe_90",zt="_buttonPrimary_dihwe_101",Gt="_buttonDanger_dihwe_111",Ut="_buttonMuted_dihwe_121",Vt="_dropdownToggle_dihwe_142",Ht="_dropdownMenu_dihwe_147",Yt="_dropdownMenuOpen_dihwe_163",qt="_menuItemButton_dihwe_167",Xt="_labelMuted_dihwe_185",Jt="_selectSmall_dihwe_190",Kt="_selectAuto_dihwe_199",Zt="_switchRow_dihwe_203",Qt="_groupingSummary_dihwe_210",er="_relative_dihwe_217",tr="_overlay_dihwe_221",rr="_overlayInner_dihwe_229",nr="_spinner_dihwe_236",or="_tableWrap_dihwe_252",sr="_tableWrapAll_dihwe_256",ar="_table_dihwe_252",lr="_tableHead_dihwe_278",ir="_thCellTop_dihwe_282",cr="_thCellFilter_dihwe_290",ur="_thInner_dihwe_297",dr="_resizeHandle_dihwe_303",hr="_sortButton_dihwe_328",pr="_iconMuted_dihwe_338",mr="_inlineGroup_dihwe_342",fr="_input_dihwe_350",gr="_rowInteractive_dihwe_362",wr="_groupRow_dihwe_375",br="_groupRowAnimated_dihwe_382",yr="_groupChildRow_dihwe_386",_r="_groupToggle_dihwe_390",xr="_groupMeta_dihwe_430",vr="_checkbox_dihwe_438",kr="_tfoot_dihwe_447",jr="_textCenter_dihwe_455",Sr="_paginationWrap_dihwe_459",Nr="_pagination_dihwe_459",Cr="_pageButton_dihwe_473",Rr="_pageButtonActive_dihwe_488",Er="_backdrop_dihwe_494",Tr="_drawer_dihwe_500",Ar="_drawerTitle_dihwe_515",Or="_drawerSection_dihwe_521",Mr="_drawerSubtitle_dihwe_527",Dr="_sectionToggle_dihwe_534",Pr="_sectionBody_dihwe_547",Lr="_drawerRow_dihwe_551",Br="_spacerAuto_dihwe_558",Ir="_srOnly_dihwe_570",s={container:Mt,themeLight:Dt,themeDark:Pt,themePurple:Lt,headerRow:Bt,flexRow:It,toolbarGroup:$t,dropdown:Ft,buttonBase:Wt,buttonPrimary:zt,buttonDanger:Gt,buttonMuted:Ut,dropdownToggle:Vt,dropdownMenu:Ht,dropdownMenuOpen:Yt,menuItemButton:qt,labelMuted:Xt,selectSmall:Jt,selectAuto:Kt,switchRow:Zt,groupingSummary:Qt,relative:er,overlay:tr,overlayInner:rr,spinner:nr,tableWrap:or,tableWrapAll:sr,table:ar,tableHead:lr,thCellTop:ir,thCellFilter:cr,thInner:ur,resizeHandle:dr,sortButton:hr,iconMuted:pr,inlineGroup:mr,input:fr,rowInteractive:gr,groupRow:wr,groupRowAnimated:br,groupChildRow:yr,groupToggle:_r,groupMeta:xr,checkbox:vr,tfoot:kr,textCenter:jr,paginationWrap:Sr,pagination:Nr,pageButton:Cr,pageButtonActive:Rr,backdrop:Er,drawer:Tr,drawerTitle:Ar,drawerSection:Or,drawerSubtitle:Mr,sectionToggle:Dr,sectionBody:Pr,drawerRow:Lr,spacerAuto:Br,srOnly:Ir};var Be={exports:{}},Ne={};/**
2
2
  * @license React
3
3
  * react-jsx-runtime.production.js
4
4
  *
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * This source code is licensed under the MIT license found in the
8
8
  * LICENSE file in the root directory of this source tree.
9
- */var at;function Dr(){if(at)return ve;at=1;var u=Symbol.for("react.transitional.element"),x=Symbol.for("react.fragment");function v(O,k,S){var F=null;if(S!==void 0&&(F=""+S),k.key!==void 0&&(F=""+k.key),"key"in k){S={};for(var U in k)U!=="key"&&(S[U]=k[U])}else S=k;return k=S.ref,{$$typeof:u,type:O,key:F,ref:k!==void 0?k:null,props:S}}return ve.Fragment=x,ve.jsx=v,ve.jsxs=v,ve}var ke={};/**
9
+ */var ct;function $r(){if(ct)return Ne;ct=1;var m=Symbol.for("react.transitional.element"),b=Symbol.for("react.fragment");function h(k,j,N){var C=null;if(N!==void 0&&(C=""+N),j.key!==void 0&&(C=""+j.key),"key"in j){N={};for(var B in j)B!=="key"&&(N[B]=j[B])}else N=j;return j=N.ref,{$$typeof:m,type:k,key:C,ref:j!==void 0?j:null,props:N}}return Ne.Fragment=b,Ne.jsx=h,Ne.jsxs=h,Ne}var Ce={};/**
10
10
  * @license React
11
11
  * react-jsx-runtime.development.js
12
12
  *
@@ -14,11 +14,11 @@
14
14
  *
15
15
  * This source code is licensed under the MIT license found in the
16
16
  * LICENSE file in the root directory of this source tree.
17
- */var lt;function Pr(){return lt||(lt=1,process.env.NODE_ENV!=="production"&&(function(){function u(n){if(n==null)return null;if(typeof n=="function")return n.$$typeof===N?null:n.displayName||n.name||null;if(typeof n=="string")return n;switch(n){case fe:return"Fragment";case Le:return"Profiler";case f:return"StrictMode";case we:return"Suspense";case Y:return"SuspenseList";case Be:return"Activity"}if(typeof n=="object")switch(typeof n.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),n.$$typeof){case se:return"Portal";case Z:return n.displayName||"Context";case W:return(n._context.displayName||"Context")+".Consumer";case ge:var c=n.render;return n=n.displayName,n||(n=c.displayName||c.name||"",n=n!==""?"ForwardRef("+n+")":"ForwardRef"),n;case G:return c=n.displayName||null,c!==null?c:u(n.type)||"Memo";case Q:c=n._payload,n=n._init;try{return u(n(c))}catch{}}return null}function x(n){return""+n}function v(n){try{x(n);var c=!1}catch{c=!0}if(c){c=console;var g=c.error,_=typeof Symbol=="function"&&Symbol.toStringTag&&n[Symbol.toStringTag]||n.constructor.name||"Object";return g.call(c,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",_),x(n)}}function O(n){if(n===fe)return"<>";if(typeof n=="object"&&n!==null&&n.$$typeof===Q)return"<...>";try{var c=u(n);return c?"<"+c+">":"<...>"}catch{return"<...>"}}function k(){var n=_e.A;return n===null?null:n.getOwner()}function S(){return Error("react-stack-top-frame")}function F(n){if(Ce.call(n,"key")){var c=Object.getOwnPropertyDescriptor(n,"key").get;if(c&&c.isReactWarning)return!1}return n.key!==void 0}function U(n,c){function g(){ee||(ee=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",c))}g.isReactWarning=!0,Object.defineProperty(n,"key",{get:g,configurable:!0})}function pe(){var n=u(this.type);return ae[n]||(ae[n]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),n=this.props.ref,n!==void 0?n:null}function ne(n,c,g,_,$,ie){var b=g.ref;return n={$$typeof:je,type:n,key:c,props:g,_owner:_},(b!==void 0?b:null)!==null?Object.defineProperty(n,"ref",{enumerable:!1,get:pe}):Object.defineProperty(n,"ref",{enumerable:!1,value:null}),n._store={},Object.defineProperty(n._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(n,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(n,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:$}),Object.defineProperty(n,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:ie}),Object.freeze&&(Object.freeze(n.props),Object.freeze(n)),n}function K(n,c,g,_,$,ie){var b=c.children;if(b!==void 0)if(_)if(Re(b)){for(_=0;_<b.length;_++)oe(b[_]);Object.freeze&&Object.freeze(b)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else oe(b);if(Ce.call(c,"key")){b=u(n);var j=Object.keys(c).filter(function(V){return V!=="key"});_=0<j.length?"{key: someKey, "+j.join(": ..., ")+": ...}":"{key: someKey}",te[b+_]||(j=0<j.length?"{"+j.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
17
+ */var ut;function Fr(){return ut||(ut=1,process.env.NODE_ENV!=="production"&&(function(){function m(n){if(n==null)return null;if(typeof n=="function")return n.$$typeof===_e?null:n.displayName||n.name||null;if(typeof n=="string")return n;switch(n){case we:return"Fragment";case Fe:return"Profiler";case oe:return"StrictMode";case Z:return"Suspense";case be:return"SuspenseList";case U:return"Activity"}if(typeof n=="object")switch(typeof n.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),n.$$typeof){case ne:return"Portal";case We:return n.displayName||"Context";case w:return(n._context.displayName||"Context")+".Consumer";case G:var c=n.render;return n=n.displayName,n||(n=c.displayName||c.name||"",n=n!==""?"ForwardRef("+n+")":"ForwardRef"),n;case ye:return c=n.displayName||null,c!==null?c:m(n.type)||"Memo";case W:c=n._payload,n=n._init;try{return m(n(c))}catch{}}return null}function b(n){return""+n}function h(n){try{b(n);var c=!1}catch{c=!0}if(c){c=console;var f=c.error,_=typeof Symbol=="function"&&Symbol.toStringTag&&n[Symbol.toStringTag]||n.constructor.name||"Object";return f.call(c,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",_),b(n)}}function k(n){if(n===we)return"<>";if(typeof n=="object"&&n!==null&&n.$$typeof===W)return"<...>";try{var c=m(n);return c?"<"+c+">":"<...>"}catch{return"<...>"}}function j(){var n=xe.A;return n===null?null:n.getOwner()}function N(){return Error("react-stack-top-frame")}function C(n){if(S.call(n,"key")){var c=Object.getOwnPropertyDescriptor(n,"key").get;if(c&&c.isReactWarning)return!1}return n.key!==void 0}function B(n,c){function f(){ke||(ke=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",c))}f.isReactWarning=!0,Object.defineProperty(n,"key",{get:f,configurable:!0})}function fe(){var n=m(this.type);return A[n]||(A[n]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),n=this.props.ref,n!==void 0?n:null}function ge(n,c,f,_,z,le){var y=f.ref;return n={$$typeof:Ee,type:n,key:c,props:f,_owner:_},(y!==void 0?y:null)!==null?Object.defineProperty(n,"ref",{enumerable:!1,get:fe}):Object.defineProperty(n,"ref",{enumerable:!1,value:null}),n._store={},Object.defineProperty(n._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(n,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(n,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:z}),Object.defineProperty(n,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:le}),Object.freeze&&(Object.freeze(n.props),Object.freeze(n)),n}function J(n,c,f,_,z,le){var y=c.children;if(y!==void 0)if(_)if(ze(y)){for(_=0;_<y.length;_++)K(y[_]);Object.freeze&&Object.freeze(y)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else K(y);if(S.call(c,"key")){y=m(n);var H=Object.keys(c).filter(function(I){return I!=="key"});_=0<H.length?"{key: someKey, "+H.join(": ..., ")+": ...}":"{key: someKey}",ae[y+_]||(H=0<H.length?"{"+H.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
18
18
  let props = %s;
19
19
  <%s {...props} />
20
20
  React keys must be passed directly to JSX without using spread:
21
21
  let props = %s;
22
- <%s key={someKey} {...props} />`,_,b,j,b),te[b+_]=!0)}if(b=null,g!==void 0&&(v(g),b=""+g),F(c)&&(v(c.key),b=""+c.key),"key"in c){g={};for(var be in c)be!=="key"&&(g[be]=c[be])}else g=c;return b&&U(g,typeof n=="function"?n.displayName||n.name||"Unknown":n),ne(n,b,g,k(),$,ie)}function oe(n){Ne(n)?n._store&&(n._store.validated=1):typeof n=="object"&&n!==null&&n.$$typeof===Q&&(n._payload.status==="fulfilled"?Ne(n._payload.value)&&n._payload.value._store&&(n._payload.value._store.validated=1):n._store&&(n._store.validated=1))}function Ne(n){return typeof n=="object"&&n!==null&&n.$$typeof===je}var H=l,je=Symbol.for("react.transitional.element"),se=Symbol.for("react.portal"),fe=Symbol.for("react.fragment"),f=Symbol.for("react.strict_mode"),Le=Symbol.for("react.profiler"),W=Symbol.for("react.consumer"),Z=Symbol.for("react.context"),ge=Symbol.for("react.forward_ref"),we=Symbol.for("react.suspense"),Y=Symbol.for("react.suspense_list"),G=Symbol.for("react.memo"),Q=Symbol.for("react.lazy"),Be=Symbol.for("react.activity"),N=Symbol.for("react.client.reference"),_e=H.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,Ce=Object.prototype.hasOwnProperty,Re=Array.isArray,T=console.createTask?console.createTask:function(){return null};H={react_stack_bottom_frame:function(n){return n()}};var ee,ae={},le=H.react_stack_bottom_frame.bind(H,S)(),z=T(O(S)),te={};ke.Fragment=fe,ke.jsx=function(n,c,g){var _=1e4>_e.recentlyCreatedOwnerStacks++;return K(n,c,g,!1,_?Error("react-stack-top-frame"):le,_?T(O(n)):z)},ke.jsxs=function(n,c,g){var _=1e4>_e.recentlyCreatedOwnerStacks++;return K(n,c,g,!0,_?Error("react-stack-top-frame"):le,_?T(O(n)):z)}})()),ke}var it;function Ir(){return it||(it=1,process.env.NODE_ENV==="production"?Pe.exports=Dr():Pe.exports=Pr()),Pe.exports}var r=Ir();const E=(...u)=>u.filter(Boolean).join(" ");function ct({label:u,children:x}){const[v,O]=l.useState(!1),k=l.useRef(null);return l.useEffect(()=>{const S=F=>{k.current&&!k.current.contains(F.target)&&O(!1)};return document.addEventListener("mousedown",S),()=>document.removeEventListener("mousedown",S)},[]),r.jsxs("div",{className:s.dropdown,ref:k,children:[r.jsx("button",{className:E(s.buttonBase,s.buttonPrimary,s.dropdownToggle),type:"button","aria-haspopup":"menu","aria-expanded":v,onClick:()=>O(!v),children:u}),r.jsx("ul",{className:E(s.dropdownMenu,v&&s.dropdownMenuOpen),role:"menu",onClick:()=>O(!1),children:x})]})}const Ve=(u,x="14px system-ui")=>{const O=(Ve.canvas||(Ve.canvas=document.createElement("canvas"))).getContext("2d");return O.font=x,O.measureText(u).width},Se=u=>u.toLowerCase().replace(/[_\s]+(.)?/g,(x,v)=>v?v.toUpperCase():"").replace(/^(.)/,x=>x.toLowerCase()),$r=u=>{if(!u||typeof u!="object")return u;const x={};return Object.keys(u).forEach(v=>{x[Se(v)]=u[v]}),x},q=0,Ie=38,ut=10,Lr=[],$e=80;function Br({apiEndpoint:u,rowKey:x,theme:v="light",computedColumns:O=Lr,currency:k="INR",dateFormat:S={locale:"en-US",options:{year:"numeric",month:"2-digit",day:"2-digit"}},dateSeparator:F="/",pageSizeOptions:U=[50,100,500,1e3,0],defaultPageSize:pe}){const ne=l.useRef(!1),K=l.useRef(!1),oe=l.useRef(!1),Ne=50,[H,je]=l.useState(!0),[se,fe]=l.useState([]),[f,Le]=l.useState([]),[W,Z]=l.useState([]),[ge,we]=l.useState(!1),[Y,G]=l.useState(1),Q=Array.isArray(U)&&U.length>0?U:[50,100,500,1e3,0],Be=pe!==void 0&&Q.includes(pe)?pe:Q[0]||50,[N,_e]=l.useState(Be),[Ce,Re]=l.useState(!1),[T,ee]=l.useState([]),[ae,le]=l.useState({}),[z,te]=l.useState([]),[n,c]=l.useState(()=>{const e=String(v||"light").toLowerCase();return e==="dark"||e==="purple"?e:"light"}),[g,_]=l.useState({groupBy:!1,aggregates:!1}),[$,ie]=l.useState({}),b=l.useDeferredValue($),[j,be]=l.useState({key:null,direction:"asc"}),[V,ye]=l.useState([]),[Te,Ee]=l.useState({}),[dt,M]=l.useTransition(),Ue=l.useRef(null),[ht,mt]=l.useState(0),Oe=l.useRef(null),[He,Ye]=l.useState(0),[Je,pt]=l.useState(0),ce=l.useRef(null),[ft,qe]=l.useState(()=>typeof window>"u"||typeof window.matchMedia!="function"?!1:window.matchMedia("(max-width: 767.98px)").matches),We=String(k||"INR").toUpperCase()==="USD"?"USD":"INR",Xe=We==="USD"?"en-US":"en-IN",Ke=S?.locale||"en-US",Ze=l.useMemo(()=>S?.options||{year:"numeric",month:"2-digit",day:"2-digit"},[S]);l.useEffect(()=>{N>100&&we(!0)},[N]),l.useEffect(()=>{let e=!0;const t=new AbortController;return(async()=>{try{we(!0);const o=new URLSearchParams({page:String(Y),pageSize:String(N)}),a=await fetch(`${u}?${o.toString()}`,{signal:t.signal});if(!a.ok)throw new Error(`Request failed: ${a.status} ${a.statusText}`);const i=await a.json();if(!e)return;const h=(Array.isArray(i?.data)?i.data:[]).map(p=>$r(p)),w=i?.columns||[],y=O.filter(p=>p&&p.key&&typeof p.formula=="function").map(p=>({key:Se(p.key),label:p.label||p.key,formula:p.formula})),m=w.map(p=>{const R=typeof p=="string"?p:p.key;return{key:Se(R),label:p.label||R.replace(/_/g," ").replace(/\b\w/g,B=>B.toUpperCase())}}),C=[...m,...y.filter(p=>!m.some(R=>R.key===p.key)).map(({key:p,label:R})=>({key:p,label:R}))],A=h.map(p=>{const R={...p};return y.forEach(B=>{try{R[B.key]=B.formula(p)}catch(me){R[B.key]="",console.error(`Failed computed column formula for '${B.key}'`,me)}}),R});if(fe(A),Le(C),!ne.current){const p=C.map(R=>R.key);Z(p),ye(p),ne.current=!0}}catch(o){if(o?.name==="AbortError")return;console.error("Failed to load grid data",o)}finally{e&&we(!1)}})(),()=>{e=!1,t.abort()}},[u,Y,N,O]),l.useEffect(()=>{if(f.length>0&&W.length===0){const e=f.map(t=>t.key);Z(e),ye(e),ne.current=!0}},[f,W]),l.useEffect(()=>{if(!f.length)return;const e=f.map(t=>t.key);ye(t=>{const o=t.filter(i=>e.includes(i)),a=e.filter(i=>!o.includes(i));return[...o,...a]}),Z(t=>{if(!t.length)return e;const o=t.filter(i=>e.includes(i)),a=e.filter(i=>!o.includes(i));return[...o,...a]})},[f]),l.useEffect(()=>{if(!f.length)return;const e=new Set(f.map(t=>t.key));ee(t=>t.filter(o=>e.has(o)))},[f]),l.useEffect(()=>{const e=()=>G(1);return window.addEventListener("refreshTable",e),()=>window.removeEventListener("refreshTable",e)},[]),l.useEffect(()=>{if(!u)return;K.current=!1,oe.current=!1;const e=localStorage.getItem(`columnOrder_${u}`),t=localStorage.getItem(`visibleColumns_${u}`),o=localStorage.getItem(`groupByColumns_${u}`),a=localStorage.getItem(`totalColumns_${u}`),i=localStorage.getItem(`theme_${u}`),d=localStorage.getItem(`columnWidths_${u}`);if(e&&(ye(JSON.parse(e)),ne.current=!0),t&&Z(JSON.parse(t)),o&&ee(JSON.parse(o)),a&&(te(JSON.parse(a)),K.current=!0),d&&Ee(JSON.parse(d)),i==="light"||i==="dark"||i==="purple")c(i);else{const h=String(v||"light").toLowerCase();c(h==="dark"||h==="purple"?h:"light")}oe.current=!0},[u,v]),l.useEffect(()=>{u&&oe.current&&(V.length>0&&localStorage.setItem(`columnOrder_${u}`,JSON.stringify(V)),W.length>0&&localStorage.setItem(`visibleColumns_${u}`,JSON.stringify(W)),localStorage.setItem(`groupByColumns_${u}`,JSON.stringify(T)),localStorage.setItem(`totalColumns_${u}`,JSON.stringify(z)),localStorage.setItem(`theme_${u}`,n),localStorage.setItem(`columnWidths_${u}`,JSON.stringify(Te)))},[u,V,W,T,z,n,Te]);const re=(e,t)=>e[t]??"",ue=l.useCallback(e=>{const t=Number(e);return Number.isNaN(t)?"":new Intl.NumberFormat(Xe,{style:"currency",currency:We,maximumFractionDigits:2}).format(t)},[Xe,We]),gt=l.useCallback(e=>{const t=new Date(e);return Number.isNaN(t.getTime())?e??"":new Intl.DateTimeFormat(Ke,Ze).formatToParts(t).filter(a=>a.type==="year"||a.type==="month"||a.type==="day").map(a=>a.value).join(F)},[Ke,Ze,F]),J=l.useCallback(e=>{const t=se[0]?.[e];return t==null?"text":isNaN(Number(t))?isNaN(Date.parse(t))?"text":"date":"number"},[se]),Qe=e=>{const t=new Date(e);return Number.isNaN(t.getTime())?null:`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}`},Ae=l.useMemo(()=>f.filter(e=>J(e.key)==="number"),[f,J]);l.useEffect(()=>{if(!f.length)return;const e=Ae.map(t=>t.key);if(!e.length){te([]);return}te(t=>{const o=new Set(e);return K.current?t.filter(a=>o.has(a)):(K.current=!0,e)})},[f.length,Ae]);const xe=(e,t)=>{M(()=>{ie(o=>({...o,[e]:{...o[e],...t}})),G(1)})},wt=()=>{M(()=>{ie({}),G(1)})},Fe=l.useMemo(()=>se.filter(e=>Object.entries(b).every(([t,o])=>{if(!(o?.value!==void 0&&o?.value!==null&&String(o.value).trim()!==""))return!0;const i=re(e,t);if(o.type==="number"){const d=Number(i),h=Number(o.value),w=o.op||"=";return Number.isNaN(d)||Number.isNaN(h)?!0:w==="="?d===h:w===">"?d>h:w==="<"?d<h:w==="!="?d!==h:!0}if(o.type==="date"){const d=Qe(i),h=Qe(o.value),w=o.op||"=";return!d||!h?!0:w==="="?d===h:w===">"?d>h:w==="<"?d<h:w==="!="?d!==h:!0}return String(i).toLowerCase().includes(String(o.value).toLowerCase())})),[se,b]),_t=e=>{M(()=>{be(t=>({key:e,direction:t.key===e&&t.direction==="asc"?"desc":"asc"}))})},D=l.useMemo(()=>{if(!j.key)return Fe;const e=J(j.key);return[...Fe].sort((t,o)=>{const a=re(t,j.key),i=re(o,j.key),d=e==="date"?new Date(a).getTime():isNaN(Number(a))?a:Number(a),h=e==="date"?new Date(i).getTime():isNaN(Number(i))?i:Number(i);return d<h?j.direction==="asc"?-1:1:d>h?j.direction==="asc"?1:-1:0})},[Fe,j,J]),Me=l.useMemo(()=>{if(!H)return null;const e={};return f.forEach(t=>{J(t.key)==="number"&&z.includes(t.key)&&(e[t.key]=D.reduce((o,a)=>o+Number(a[t.key]||0),0))}),e},[H,D,f,J,z]),De=N===q?D.length:Math.min(N,Ne),Ge=N===q?1:Math.ceil(D.length/De),X=l.useMemo(()=>{if(N===q)return D;const e=(Y-1)*De;return D.slice(e,e+De)},[D,Y,N,De]),P=T.length>0,L=!P&&N===q&&!ft,bt=e=>{M(()=>{ee(t=>t.includes(e)?t.filter(o=>o!==e):[...t,e]),le({}),G(1)})},yt=e=>{le(t=>({...t,[e]:!t[e]}))},xt=e=>{M(()=>{te(t=>t.includes(e)?t.filter(o=>o!==e):[...t,e])})},et=l.useCallback(e=>{const t={};return z.forEach(o=>{const a=e.map(y=>Number(y[o])).filter(y=>!Number.isNaN(y));if(!a.length)return;const i=a.reduce((y,m)=>y+m,0),d=Math.min(...a),h=Math.max(...a),w=i/a.length;t[o]={count:a.length,sum:i,avg:w,min:d,max:h}}),t},[z]),ze=l.useMemo(()=>{if(!P)return[];const e=[],t=D,o=(a,i,d)=>{const h=T[i],w=new Map;a.forEach(y=>{const m=re(y,h),C=m==null||m===""?"(Blank)":String(m);w.has(C)||w.set(C,[]),w.get(C).push(y)}),Array.from(w.entries()).forEach(([y,m],C)=>{const A=`${d}${h}:${y}:${C}`;if(e.push({type:"group",id:A,groupKey:h,groupValue:y,level:i,count:m.length,aggregates:et(m)}),!ae[A]){if(i<T.length-1){o(m,i+1,`${A}|`);return}m.forEach((p,R)=>{const B=p[Se(x)]??p[x]??R;e.push({type:"row",id:`${A}|row:${B}:${R}`,row:p})})}})};return o(t,0,""),e},[P,D,T,ae,et,x]),vt=l.useCallback(e=>{L&&Ye(e.currentTarget.scrollTop)},[L]);l.useLayoutEffect(()=>{if(!L)return;const e=Oe.current;if(!e)return;const t=()=>pt(e.clientHeight||0);return t(),window.addEventListener("resize",t),()=>window.removeEventListener("resize",t)},[L]),l.useEffect(()=>{Ye(0),Oe.current&&(Oe.current.scrollTop=0)},[L,D.length]);const de=l.useMemo(()=>{if(!L)return{start:0,end:X.length,rows:X,topSpacer:0,bottomSpacer:0};const e=X.length,t=Math.ceil((Je||1)/Ie),o=Math.max(0,Math.floor(He/Ie)-ut),a=Math.min(e,o+t+ut*2);return{start:o,end:a,rows:X.slice(o,a),topSpacer:o*Ie,bottomSpacer:Math.max(0,(e-a)*Ie)}},[L,X,He,Je]),tt=l.useCallback(e=>Object.entries(e||{}).map(([t,o])=>`${f.find(i=>i.key===t)?.label||t}: Σ ${ue(o.sum)} | Avg ${ue(o.avg)} | Min ${ue(o.min)} | Max ${ue(o.max)}`),[f,ue]),kt=()=>{try{const e=I.filter(m=>W.includes(m.key)),t=m=>{const A=String(m??"").replace(/"/g,'""');return/[",\n\r]/.test(A)?`"${A}"`:A},o=P?ze.map(m=>{if(m.type==="group"){const p=f.find(me=>me.key===m.groupKey)?.label||m.groupKey,R=tt(m.aggregates).join(" || "),B={};return e.forEach((me,st)=>{if(st===0){B[me.key]=`GROUP ${p}: ${m.groupValue} (${m.count})`;return}B[me.key]=st===1?R:""}),B}const C={},A=m.row;return e.forEach(p=>{C[p.key]=re(A,p.key)}),C}):D.map(m=>{const C={};return e.forEach(A=>{C[A.key]=re(m,A.key)}),C}),a=e.map(m=>t(m.label)).join(","),i=o.map(m=>e.map(C=>t(m[C.key])).join(",")).join(`\r
23
- `),d=`\uFEFF${a}\r
24
- ${i}`,h=new Blob([d],{type:"text/csv;charset=utf-8;"}),w=URL.createObjectURL(h),y=document.createElement("a");y.href=w,y.download="TableData.csv",document.body.appendChild(y),y.click(),document.body.removeChild(y),URL.revokeObjectURL(w)}catch(e){console.error("Failed to export CSV",e)}},rt=(e,t)=>{e.dataTransfer.setData("colKey",t)},nt=(e,t)=>{const o=e.dataTransfer.getData("colKey");!o||o===t||M(()=>{ye(a=>{const i=[...a],d=i.indexOf(o),h=i.indexOf(t);return i.splice(d,1),i.splice(h,0,o),i})})},ot=e=>e.preventDefault(),I=l.useMemo(()=>V.map(e=>f.find(t=>t.key===e)).filter(e=>e&&W.includes(e.key)),[f,V,W]),he=l.useMemo(()=>{const a="14px system-ui",i={};return I.forEach(d=>{const h=Ve(d.label,a),w=Math.min(320,Math.max($e,h+32+48));i[d.key]=Math.max($e,Te[d.key]??w)}),i},[I,Te]);l.useEffect(()=>{if(!f.length)return;const e=new Set(f.map(t=>t.key));Ee(t=>{const o={};return Object.entries(t).forEach(([a,i])=>{e.has(a)&&(o[a]=i)}),o})},[f]);const St=(e,t)=>{if(e.preventDefault(),e.stopPropagation(),e.button!==void 0&&e.button!==0)return;const o=e.clientX,a=he[t]||$e;ce.current={key:t,startX:o,startWidth:a},document.body.style.cursor="col-resize";const i=h=>{if(!ce.current)return;const w=h.clientX-ce.current.startX,y=Math.max($e,ce.current.startWidth+w);Ee(m=>({...m,[ce.current.key]:y}))},d=()=>{ce.current=null,document.body.style.cursor="",window.removeEventListener("pointermove",i),window.removeEventListener("pointerup",d)};window.addEventListener("pointermove",i),window.addEventListener("pointerup",d)},Nt=(e,t)=>{e.preventDefault(),e.stopPropagation(),Ee(o=>{const a={...o};return delete a[t],a})},jt=ge||dt,Ct=n==="dark"?s.themeDark:n==="purple"?s.themePurple:s.themeLight;return l.useLayoutEffect(()=>{const e=()=>{mt(Ue.current?.offsetHeight||0)};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[I.length]),l.useEffect(()=>{if(typeof window>"u"||typeof window.matchMedia!="function")return;const e=window.matchMedia("(max-width: 767.98px)"),t=o=>qe(o.matches);return qe(e.matches),e.addEventListener("change",t),()=>e.removeEventListener("change",t)},[]),r.jsxs("div",{className:E(s.container,Ct),children:[r.jsxs("div",{className:s.headerRow,children:[r.jsxs("div",{className:E(s.flexRow,s.toolbarGroup),children:[r.jsx("label",{className:s.labelMuted,children:"Rows:"}),r.jsx("select",{className:E(s.selectSmall,s.selectAuto),value:N,onChange:e=>M(()=>{_e(Number(e.target.value)),G(1)}),children:Q.map(e=>r.jsx("option",{value:e,children:e===q?"All":e},e))}),r.jsxs("div",{className:s.switchRow,children:[r.jsx("input",{className:s.checkbox,type:"checkbox",checked:H,onChange:e=>M(()=>je(e.target.checked))}),r.jsx("label",{className:s.labelMuted,children:"Show Totals"})]}),r.jsxs("div",{className:s.groupingSummary,children:[r.jsxs("span",{className:s.labelMuted,children:["Group By:"," ",T.length?T.map(e=>f.find(t=>t.key===e)?.label||e).join(" > "):"None"]}),T.length>0&&r.jsx("button",{className:E(s.buttonBase,s.buttonMuted),onClick:()=>{M(()=>{ee([]),le({})})},children:"Clear Groups"})]})]}),r.jsxs("div",{className:E(s.flexRow,s.toolbarGroup),children:[r.jsxs("button",{className:E(s.buttonBase,s.buttonDanger),disabled:!Object.values($).some(e=>e?.value),onClick:wt,children:["✕"," ","Clear Filters"]}),r.jsx(ct,{label:r.jsxs(r.Fragment,{children:["⬇"," Export"]}),children:r.jsx("li",{children:r.jsx("button",{className:s.menuItemButton,onClick:kt,children:"Export to CSV"})})}),r.jsxs("button",{className:E(s.buttonBase,s.buttonMuted),onClick:()=>Re(!0),children:["☰"," ","Columns"]}),r.jsxs(ct,{label:r.jsxs(r.Fragment,{children:["▣"," Theme"]}),children:[r.jsx("li",{children:r.jsxs("button",{className:s.menuItemButton,onClick:()=>c("light"),children:[n==="light"?"✓ ":"","Light"]})}),r.jsx("li",{children:r.jsxs("button",{className:s.menuItemButton,onClick:()=>c("dark"),children:[n==="dark"?"✓ ":"","Dark"]})}),r.jsx("li",{children:r.jsxs("button",{className:s.menuItemButton,onClick:()=>c("purple"),children:[n==="purple"?"✓ ":"","Purple"]})})]})]})]}),r.jsxs("div",{className:s.relative,children:[r.jsx("div",{className:s.srOnly,"aria-live":"polite",children:ge?"Loading table data":"Table updated"}),jt&&r.jsx("div",{className:s.overlay,children:r.jsxs("div",{className:s.overlayInner,style:{top:"15%"},children:[r.jsx("div",{className:s.spinner,role:"status"}),r.jsx("div",{className:s.labelMuted,children:ge?"Loading data...":"Updating..."})]})}),r.jsx("div",{className:E(s.tableWrap,N===q&&s.tableWrapAll),ref:Oe,style:N===q?{maxHeight:"70vh",overflowY:"auto"}:{},onScroll:vt,children:r.jsxs("table",{className:s.table,style:{tableLayout:"fixed"},role:"grid","aria-rowcount":P?ze.length:X.length,"aria-colcount":I.length,children:[r.jsxs("thead",{className:s.tableHead,children:[r.jsx("tr",{ref:Ue,children:I.map(e=>{const t=j.key===e.key,o=t?j.direction==="asc"?"↑":"↓":"⇅";return r.jsxs("th",{scope:"col","aria-sort":t?j.direction==="asc"?"ascending":"descending":"none",draggable:!0,onDragStart:a=>rt(a,e.key),onDragOver:ot,onDrop:a=>nt(a,e.key),style:{width:he[e.key]},className:s.thCellTop,children:[r.jsx("div",{className:s.thInner,children:r.jsxs("button",{type:"button",className:s.sortButton,"aria-label":`Sort by ${e.label}`,onClick:()=>_t(e.key),children:[e.label,r.jsxs("span",{className:s.iconMuted,children:[" ",o]})]})}),r.jsx("span",{className:s.resizeHandle,role:"separator","aria-orientation":"vertical","aria-label":`Resize ${e.label} column`,tabIndex:0,onPointerDown:a=>St(a,e.key),onDoubleClick:a=>Nt(a,e.key)})]},e.key)})}),r.jsx("tr",{children:I.map(e=>r.jsx("th",{style:{top:ht},className:s.thCellFilter,children:J(e.key)==="number"?r.jsxs("div",{className:s.inlineGroup,children:[r.jsxs("select",{className:E(s.selectSmall,s.selectAuto),value:$[e.key]?.op||"=",onChange:t=>xe(e.key,{type:"number",op:t.target.value}),children:[r.jsx("option",{value:"=",children:"="}),r.jsx("option",{value:">",children:">"}),r.jsx("option",{value:"<",children:"<"}),r.jsx("option",{value:"!=",children:"!="})]}),r.jsx("input",{type:"number",className:s.input,value:$[e.key]?.value||"",onChange:t=>xe(e.key,{type:"number",value:t.target.value})})]}):J(e.key)==="date"?r.jsxs("div",{className:s.inlineGroup,children:[r.jsxs("select",{className:E(s.selectSmall,s.selectAuto),value:$[e.key]?.op||"=",onChange:t=>xe(e.key,{type:"date",op:t.target.value}),children:[r.jsx("option",{value:"=",children:"="}),r.jsx("option",{value:">",children:">"}),r.jsx("option",{value:"<",children:"<"}),r.jsx("option",{value:"!=",children:"!="})]}),r.jsx("input",{type:"date",className:s.input,value:$[e.key]?.value||"",onChange:t=>xe(e.key,{type:"date",value:t.target.value})})]}):r.jsx("input",{type:"text",className:s.input,placeholder:"Filter...",value:$[e.key]?.value||"",onChange:t=>xe(e.key,{type:"text",value:t.target.value})})},e.key))})]}),r.jsxs("tbody",{children:[L&&de.topSpacer>0&&r.jsx("tr",{"aria-hidden":"true",children:r.jsx("td",{colSpan:I.length,style:{height:`${de.topSpacer}px`,padding:0}})}),(P?ze:L?de.rows:X).map(e=>{if(P&&e.type==="group"){const o=f.find(d=>d.key===e.groupKey)?.label||e.groupKey,a=!!ae[e.id],i=tt(e.aggregates).join(" || ");return r.jsx("tr",{className:E(s.groupRow,s.groupRowAnimated),children:r.jsx("td",{colSpan:I.length,children:r.jsxs("button",{type:"button",className:s.groupToggle,onClick:()=>yt(e.id),children:[r.jsxs("span",{style:{paddingLeft:`${e.level*18}px`},children:[a?"▶":"▼"," ",o,": ",e.groupValue," (",e.count,")"]}),i&&r.jsxs("span",{className:s.groupMeta,children:[" ",i]})]})})},e.id)}const t=P?e.row:e;return r.jsx("tr",{className:E(s.rowInteractive,P&&s.groupChildRow),tabIndex:0,children:I.map(o=>{const a=re(t,o.key);return typeof a=="boolean"?r.jsx("td",{"data-label":o.label,style:{width:he[o.key]},children:r.jsx("input",{type:"checkbox",checked:a,disabled:!0,className:s.checkbox})},o.key):J(o.key)==="date"?r.jsx("td",{"data-label":o.label,style:{width:he[o.key]},children:gt(a)},o.key):r.jsx("td",{"data-label":o.label,style:{width:he[o.key]},children:a},o.key)})},P?e.id:t[Se(x)]??t[x])}),L&&de.bottomSpacer>0&&r.jsx("tr",{"aria-hidden":"true",children:r.jsx("td",{colSpan:I.length,style:{height:`${de.bottomSpacer}px`,padding:0}})})]}),H&&Me&&Object.keys(Me).length>0&&r.jsxs("tfoot",{className:s.tfoot,children:[r.jsx("tr",{children:r.jsx("td",{colSpan:I.length,className:s.textCenter,children:"Totals"})}),r.jsx("tr",{children:I.map(e=>r.jsx("td",{"data-label":e.label,style:{width:he[e.key]},children:Me[e.key]!==void 0?ue(Me[e.key]):""},e.key))})]})]})})]}),!P&&N!==q&&Ge>1&&r.jsx("div",{className:s.paginationWrap,children:r.jsxs("ul",{className:s.pagination,children:[r.jsx("li",{children:r.jsx("button",{className:s.pageButton,disabled:Y===1,onClick:()=>M(()=>G(e=>e-1)),children:"Prev"})}),Array.from({length:Ge},(e,t)=>r.jsx("li",{children:r.jsx("button",{className:E(s.pageButton,Y===t+1&&s.pageButtonActive),onClick:()=>M(()=>G(t+1)),children:t+1})},t)),r.jsx("li",{children:r.jsx("button",{className:s.pageButton,disabled:Y===Ge,onClick:()=>M(()=>G(e=>e+1)),children:"Next"})})]})}),!P&&N===q&&r.jsxs("div",{className:s.labelMuted,children:["Showing"," ",(L?de.end:X.length).toLocaleString()," of"," ",D.length.toLocaleString()," rows",L?" (virtualized)":""]}),P&&r.jsxs("div",{className:s.labelMuted,children:["Grouped view: ",D.length.toLocaleString()," rows across"," ",T.length," level",T.length>1?"s":""]}),Ce&&r.jsxs(r.Fragment,{children:[r.jsx("div",{className:s.backdrop,onClick:()=>Re(!1)}),r.jsxs("div",{className:s.drawer,children:[r.jsx("h6",{className:s.drawerTitle,children:"Column Settings"}),r.jsx("h6",{className:s.drawerSubtitle,children:"Visible Columns"}),V.map(e=>{const t=f.find(o=>o.key===e);return t?r.jsxs("div",{className:s.drawerRow,draggable:!0,onDragStart:o=>rt(o,t.key),onDragOver:ot,onDrop:o=>nt(o,t.key),children:[r.jsx("input",{type:"checkbox",className:s.checkbox,checked:W.includes(t.key),onChange:()=>M(()=>Z(o=>o.includes(t.key)?o.filter(a=>a!==t.key):[...o,t.key]))}),r.jsx("label",{children:t.label}),r.jsx("span",{className:E(s.spacerAuto,s.iconMuted),children:"⋮"})]},t.key):null}),r.jsxs("div",{className:s.drawerSection,children:[r.jsxs("button",{type:"button",className:s.sectionToggle,"aria-expanded":g.groupBy,onClick:()=>_(e=>({...e,groupBy:!e.groupBy})),children:[r.jsx("span",{children:"Group By Columns"}),r.jsx("span",{className:s.iconMuted,children:g.groupBy?"▲":"▼"})]}),g.groupBy&&r.jsx("div",{className:s.sectionBody,children:V.map(e=>{const t=f.find(o=>o.key===e);return t?r.jsxs("div",{className:s.drawerRow,children:[r.jsx("input",{type:"checkbox",className:s.checkbox,checked:T.includes(t.key),onChange:()=>bt(t.key)}),r.jsx("label",{children:t.label})]},`group-${t.key}`):null})})]}),r.jsxs("div",{className:s.drawerSection,children:[r.jsxs("button",{type:"button",className:s.sectionToggle,"aria-expanded":g.aggregates,onClick:()=>_(e=>({...e,aggregates:!e.aggregates})),children:[r.jsx("span",{children:"Show Total/Aggregate For"}),r.jsx("span",{className:s.iconMuted,children:g.aggregates?"▲":"▼"})]}),g.aggregates&&r.jsxs("div",{className:s.sectionBody,children:[Ae.length===0&&r.jsx("div",{className:s.labelMuted,children:"No numeric columns available."}),V.map(e=>{const t=Ae.find(o=>o.key===e);return t?r.jsxs("div",{className:s.drawerRow,children:[r.jsx("input",{type:"checkbox",className:s.checkbox,checked:z.includes(t.key),onChange:()=>xt(t.key)}),r.jsx("label",{children:t.label})]},`total-${t.key}`):null})]})]})]})]})]})}exports.AwesomeGrid=Br;
22
+ <%s key={someKey} {...props} />`,_,y,H,y),ae[y+_]=!0)}if(y=null,f!==void 0&&(h(f),y=""+f),C(c)&&(h(c.key),y=""+c.key),"key"in c){f={};for(var ie in c)ie!=="key"&&(f[ie]=c[ie])}else f=c;return y&&B(f,typeof n=="function"?n.displayName||n.name||"Unknown":n),ge(n,y,f,j(),z,le)}function K(n){re(n)?n._store&&(n._store.validated=1):typeof n=="object"&&n!==null&&n.$$typeof===W&&(n._payload.status==="fulfilled"?re(n._payload.value)&&n._payload.value._store&&(n._payload.value._store.validated=1):n._store&&(n._store.validated=1))}function re(n){return typeof n=="object"&&n!==null&&n.$$typeof===Ee}var V=l,Ee=Symbol.for("react.transitional.element"),ne=Symbol.for("react.portal"),we=Symbol.for("react.fragment"),oe=Symbol.for("react.strict_mode"),Fe=Symbol.for("react.profiler"),w=Symbol.for("react.consumer"),We=Symbol.for("react.context"),G=Symbol.for("react.forward_ref"),Z=Symbol.for("react.suspense"),be=Symbol.for("react.suspense_list"),ye=Symbol.for("react.memo"),W=Symbol.for("react.lazy"),U=Symbol.for("react.activity"),_e=Symbol.for("react.client.reference"),xe=V.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,S=Object.prototype.hasOwnProperty,ze=Array.isArray,ve=console.createTask?console.createTask:function(){return null};V={react_stack_bottom_frame:function(n){return n()}};var ke,A={},Q=V.react_stack_bottom_frame.bind(V,N)(),se=ve(k(N)),ae={};Ce.Fragment=we,Ce.jsx=function(n,c,f){var _=1e4>xe.recentlyCreatedOwnerStacks++;return J(n,c,f,!1,_?Error("react-stack-top-frame"):Q,_?ve(k(n)):se)},Ce.jsxs=function(n,c,f){var _=1e4>xe.recentlyCreatedOwnerStacks++;return J(n,c,f,!0,_?Error("react-stack-top-frame"):Q,_?ve(k(n)):se)}})()),Ce}var dt;function Wr(){return dt||(dt=1,process.env.NODE_ENV==="production"?Be.exports=$r():Be.exports=Fr()),Be.exports}var r=Wr();const T=(...m)=>m.filter(Boolean).join(" ");function ht({label:m,children:b}){const[h,k]=l.useState(!1),j=l.useRef(null);return l.useEffect(()=>{const N=C=>{j.current&&!j.current.contains(C.target)&&k(!1)};return document.addEventListener("mousedown",N),()=>document.removeEventListener("mousedown",N)},[]),r.jsxs("div",{className:s.dropdown,ref:j,children:[r.jsx("button",{className:T(s.buttonBase,s.buttonPrimary,s.dropdownToggle),type:"button","aria-haspopup":"menu","aria-expanded":h,onClick:()=>k(!h),children:m}),r.jsx("ul",{className:T(s.dropdownMenu,h&&s.dropdownMenuOpen),role:"menu",onClick:()=>k(!1),children:b})]})}const Ye=(m,b="14px system-ui")=>{const k=(Ye.canvas||(Ye.canvas=document.createElement("canvas"))).getContext("2d");return k.font=b,k.measureText(m).width},Re=m=>m.toLowerCase().replace(/[_\s]+(.)?/g,(b,h)=>h?h.toUpperCase():"").replace(/^(.)/,b=>b.toLowerCase()),zr=m=>{if(!m||typeof m!="object")return m;const b={};return Object.keys(m).forEach(h=>{b[Re(h)]=m[h]}),b},q=0,Ie=38,pt=10,Gr=[],$e=80,Ur="awesome-grid",me="preferences",mt=()=>new Promise((m,b)=>{const h=indexedDB.open(Ur,1);h.onupgradeneeded=()=>{const k=h.result;k.objectStoreNames.contains(me)||k.createObjectStore(me)},h.onsuccess=()=>m(h.result),h.onerror=()=>b(h.error)}),Vr=async m=>{if(typeof indexedDB>"u")return null;const b=await mt();return new Promise((h,k)=>{const C=b.transaction(me,"readonly").objectStore(me).get(m);C.onsuccess=()=>h(C.result||null),C.onerror=()=>k(C.error)}).finally(()=>b.close())},Hr=async(m,b)=>{if(typeof indexedDB>"u")return;const h=await mt();return new Promise((k,j)=>{const B=h.transaction(me,"readwrite").objectStore(me).put(b,m);B.onsuccess=()=>k(),B.onerror=()=>j(B.error)}).finally(()=>h.close())};function Yr({apiEndpoint:m,rowKey:b,theme:h="light",storageKey:k,computedColumns:j=Gr,currency:N="INR",dateFormat:C={locale:"en-US",options:{year:"numeric",month:"2-digit",day:"2-digit"}},dateSeparator:B="/",pageSizeOptions:fe=[50,100,500,1e3,0],defaultPageSize:ge}){const J=l.useRef(!1),K=l.useRef(!1),re=l.useRef(!1),V=l.useRef(!1),Ee=50,[ne,we]=l.useState(!0),[oe,Fe]=l.useState([]),[w,We]=l.useState([]),[G,Z]=l.useState([]),[be,ye]=l.useState(!1),[W,U]=l.useState(1),_e=Array.isArray(fe)&&fe.length>0?fe:[50,100,500,1e3,0],xe=ge!==void 0&&_e.includes(ge)?ge:_e[0]||50,[S,ze]=l.useState(xe),[ve,ke]=l.useState(!1),[A,Q]=l.useState([]),[se,ae]=l.useState({}),[n,c]=l.useState([]),[f,_]=l.useState(()=>{const e=String(h||"light").toLowerCase();return e==="dark"||e==="purple"?e:"light"}),[z,le]=l.useState({groupBy:!1,aggregates:!1}),[y,H]=l.useState({}),ie=l.useDeferredValue(y),[I,ft]=l.useState({key:null,direction:"asc"}),[ee,je]=l.useState([]),[Te,Ae]=l.useState({}),[gt,M]=l.useTransition(),qe=l.useRef(null),[wt,bt]=l.useState(0),Oe=l.useRef(null),[Xe,Je]=l.useState(0),[Ke,yt]=l.useState(0),ce=l.useRef(null),[_t,Ze]=l.useState(()=>typeof window>"u"||typeof window.matchMedia!="function"?!1:window.matchMedia("(max-width: 767.98px)").matches),Ge=String(N||"INR").toUpperCase()==="USD"?"USD":"INR",Qe=Ge==="USD"?"en-US":"en-IN",et=C?.locale||"en-US",tt=l.useMemo(()=>C?.options||{year:"numeric",month:"2-digit",day:"2-digit"},[C]),Me=k||m||"awesome-grid";l.useEffect(()=>{S>100&&ye(!0)},[S]),l.useEffect(()=>{let e=!0;const t=new AbortController;return(async()=>{try{ye(!0);const o=new URLSearchParams({page:String(W),pageSize:String(S)}),a=await fetch(`${m}?${o.toString()}`,{signal:t.signal});if(!a.ok)throw new Error(`Request failed: ${a.status} ${a.statusText}`);const i=await a.json();if(!e)return;const g=(Array.isArray(i?.data)?i.data:[]).map(d=>zr(d)),x=i?.columns||[],v=j.filter(d=>d&&d.key&&typeof d.formula=="function").map(d=>({key:Re(d.key),label:d.label||d.key,formula:d.formula})),u=x.map(d=>{const E=typeof d=="string"?d:d.key;return{key:Re(E),label:d.label||E.replace(/_/g," ").replace(/\b\w/g,F=>F.toUpperCase())}}),R=[...u,...v.filter(d=>!u.some(E=>E.key===d.key)).map(({key:d,label:E})=>({key:d,label:E}))],O=g.map(d=>{const E={...d};return v.forEach(F=>{try{E[F.key]=F.formula(d)}catch(pe){E[F.key]="",console.error(`Failed computed column formula for '${F.key}'`,pe)}}),E});if(Fe(O),We(R),!J.current&&!V.current){const d=R.map(E=>E.key);Z(d),je(d),J.current=!0}}catch(o){if(o?.name==="AbortError")return;console.error("Failed to load grid data",o)}finally{e&&ye(!1)}})(),()=>{e=!1,t.abort()}},[m,W,S,j]),l.useEffect(()=>{if(w.length>0&&G.length===0&&!V.current){const e=w.map(t=>t.key);Z(e),je(e),J.current=!0}},[w,G]),l.useEffect(()=>{if(!w.length)return;const e=w.map(t=>t.key);je(t=>{const o=t.filter(i=>e.includes(i)),a=e.filter(i=>!o.includes(i));return[...o,...a]}),Z(t=>{if(!t.length)return e;const o=t.filter(i=>e.includes(i)),a=e.filter(i=>!o.includes(i));return[...o,...a]})},[w]),l.useEffect(()=>{if(!w.length)return;const e=new Set(w.map(t=>t.key));Q(t=>t.filter(o=>e.has(o)))},[w]),l.useEffect(()=>{const e=()=>U(1);return window.addEventListener("refreshTable",e),()=>window.removeEventListener("refreshTable",e)},[]),l.useEffect(()=>{let e=!1;return K.current=!1,re.current=!1,V.current=!1,(async()=>{try{const t=await Vr(Me);if(e)return;if(t&&typeof t=="object")if(V.current=!0,Array.isArray(t.columnOrder)&&(je(t.columnOrder),J.current=!0),Array.isArray(t.visibleColumns)&&Z(t.visibleColumns),Array.isArray(t.groupByColumns)&&Q(t.groupByColumns),Array.isArray(t.totalColumns)&&(c(t.totalColumns),K.current=!0),t.columnWidthOverrides&&typeof t.columnWidthOverrides=="object"&&Ae(t.columnWidthOverrides),t.selectedTheme==="light"||t.selectedTheme==="dark"||t.selectedTheme==="purple")_(t.selectedTheme);else{const o=String(h||"light").toLowerCase();_(o==="dark"||o==="purple"?o:"light")}else{const o=String(h||"light").toLowerCase();_(o==="dark"||o==="purple"?o:"light")}}catch(t){console.error("Failed to load preferences",t)}finally{e||(re.current=!0)}})(),()=>{e=!0}},[Me,h]),l.useEffect(()=>{if(!re.current)return;Hr(Me,{columnOrder:ee,visibleColumns:G,groupByColumns:A,totalColumns:n,selectedTheme:f,columnWidthOverrides:Te}).catch(t=>{console.error("Failed to save preferences",t)})},[Me,ee,G,A,n,f,Te]);const te=(e,t)=>e[t]??"",ue=l.useCallback(e=>{const t=Number(e);return Number.isNaN(t)?"":new Intl.NumberFormat(Qe,{style:"currency",currency:Ge,maximumFractionDigits:2}).format(t)},[Qe,Ge]),xt=l.useCallback(e=>{const t=new Date(e);return Number.isNaN(t.getTime())?e??"":new Intl.DateTimeFormat(et,tt).formatToParts(t).filter(a=>a.type==="year"||a.type==="month"||a.type==="day").map(a=>a.value).join(B)},[et,tt,B]),Y=l.useCallback(e=>{const t=oe[0]?.[e];return t==null?"text":isNaN(Number(t))?isNaN(Date.parse(t))?"text":"date":"number"},[oe]),rt=e=>{const t=new Date(e);return Number.isNaN(t.getTime())?null:`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}`},De=l.useMemo(()=>w.filter(e=>Y(e.key)==="number"),[w,Y]);l.useEffect(()=>{if(!w.length)return;const e=De.map(t=>t.key);if(!e.length){c([]);return}c(t=>{const o=new Set(e);return K.current?t.filter(a=>o.has(a)):(K.current=!0,e)})},[w.length,De]);const Se=(e,t)=>{M(()=>{H(o=>({...o,[e]:{...o[e],...t}})),U(1)})},vt=()=>{M(()=>{H({}),U(1)})},Ue=l.useMemo(()=>oe.filter(e=>Object.entries(ie).every(([t,o])=>{if(!(o?.value!==void 0&&o?.value!==null&&String(o.value).trim()!==""))return!0;const i=te(e,t);if(o.type==="number"){const p=Number(i),g=Number(o.value),x=o.op||"=";return Number.isNaN(p)||Number.isNaN(g)?!0:x==="="?p===g:x===">"?p>g:x==="<"?p<g:x==="!="?p!==g:!0}if(o.type==="date"){const p=rt(i),g=rt(o.value),x=o.op||"=";return!p||!g?!0:x==="="?p===g:x===">"?p>g:x==="<"?p<g:x==="!="?p!==g:!0}return String(i).toLowerCase().includes(String(o.value).toLowerCase())})),[oe,ie]),kt=e=>{M(()=>{ft(t=>({key:e,direction:t.key===e&&t.direction==="asc"?"desc":"asc"}))})},D=l.useMemo(()=>{if(!I.key)return Ue;const e=Y(I.key);return[...Ue].sort((t,o)=>{const a=te(t,I.key),i=te(o,I.key),p=e==="date"?new Date(a).getTime():isNaN(Number(a))?a:Number(a),g=e==="date"?new Date(i).getTime():isNaN(Number(i))?i:Number(i);return p<g?I.direction==="asc"?-1:1:p>g?I.direction==="asc"?1:-1:0})},[Ue,I,Y]),Pe=l.useMemo(()=>{if(!ne)return null;const e={};return w.forEach(t=>{Y(t.key)==="number"&&n.includes(t.key)&&(e[t.key]=D.reduce((o,a)=>o+Number(a[t.key]||0),0))}),e},[ne,D,w,Y,n]),Le=S===q?D.length:Math.min(S,Ee),Ve=S===q?1:Math.ceil(D.length/Le),X=l.useMemo(()=>{if(S===q)return D;const e=(W-1)*Le;return D.slice(e,e+Le)},[D,W,S,Le]),P=A.length>0,$=!P&&S===q&&!_t,jt=e=>{M(()=>{Q(t=>t.includes(e)?t.filter(o=>o!==e):[...t,e]),ae({}),U(1)})},St=e=>{ae(t=>({...t,[e]:!t[e]}))},Nt=e=>{M(()=>{c(t=>t.includes(e)?t.filter(o=>o!==e):[...t,e])})},nt=l.useCallback(e=>{const t={};return n.forEach(o=>{const a=e.map(v=>Number(v[o])).filter(v=>!Number.isNaN(v));if(!a.length)return;const i=a.reduce((v,u)=>v+u,0),p=Math.min(...a),g=Math.max(...a),x=i/a.length;t[o]={count:a.length,sum:i,avg:x,min:p,max:g}}),t},[n]),He=l.useMemo(()=>{if(!P)return[];const e=[],t=D,o=(a,i,p)=>{const g=A[i],x=new Map;a.forEach(v=>{const u=te(v,g),R=u==null||u===""?"(Blank)":String(u);x.has(R)||x.set(R,[]),x.get(R).push(v)}),Array.from(x.entries()).forEach(([v,u],R)=>{const O=`${p}${g}:${v}:${R}`;if(e.push({type:"group",id:O,groupKey:g,groupValue:v,level:i,count:u.length,aggregates:nt(u)}),!se[O]){if(i<A.length-1){o(u,i+1,`${O}|`);return}u.forEach((d,E)=>{const F=d[Re(b)]??d[b]??E;e.push({type:"row",id:`${O}|row:${F}:${E}`,row:d})})}})};return o(t,0,""),e},[P,D,A,se,nt,b]),Ct=l.useCallback(e=>{$&&Je(e.currentTarget.scrollTop)},[$]);l.useLayoutEffect(()=>{if(!$)return;const e=Oe.current;if(!e)return;const t=()=>yt(e.clientHeight||0);return t(),window.addEventListener("resize",t),()=>window.removeEventListener("resize",t)},[$]),l.useEffect(()=>{Je(0),Oe.current&&(Oe.current.scrollTop=0)},[$,D.length]);const de=l.useMemo(()=>{if(!$)return{start:0,end:X.length,rows:X,topSpacer:0,bottomSpacer:0};const e=X.length,t=Math.ceil((Ke||1)/Ie),o=Math.max(0,Math.floor(Xe/Ie)-pt),a=Math.min(e,o+t+pt*2);return{start:o,end:a,rows:X.slice(o,a),topSpacer:o*Ie,bottomSpacer:Math.max(0,(e-a)*Ie)}},[$,X,Xe,Ke]),ot=l.useCallback(e=>Object.entries(e||{}).map(([t,o])=>`${w.find(i=>i.key===t)?.label||t}: Σ ${ue(o.sum)} | Avg ${ue(o.avg)} | Min ${ue(o.min)} | Max ${ue(o.max)}`),[w,ue]),Rt=()=>{try{const e=L.filter(u=>G.includes(u.key)),t=u=>{const O=String(u??"").replace(/"/g,'""');return/[",\n\r]/.test(O)?`"${O}"`:O},o=P?He.map(u=>{if(u.type==="group"){const d=w.find(pe=>pe.key===u.groupKey)?.label||u.groupKey,E=ot(u.aggregates).join(" || "),F={};return e.forEach((pe,it)=>{if(it===0){F[pe.key]=`GROUP ${d}: ${u.groupValue} (${u.count})`;return}F[pe.key]=it===1?E:""}),F}const R={},O=u.row;return e.forEach(d=>{R[d.key]=te(O,d.key)}),R}):D.map(u=>{const R={};return e.forEach(O=>{R[O.key]=te(u,O.key)}),R}),a=e.map(u=>t(u.label)).join(","),i=o.map(u=>e.map(R=>t(u[R.key])).join(",")).join(`\r
23
+ `),p=`\uFEFF${a}\r
24
+ ${i}`,g=new Blob([p],{type:"text/csv;charset=utf-8;"}),x=URL.createObjectURL(g),v=document.createElement("a");v.href=x,v.download="TableData.csv",document.body.appendChild(v),v.click(),document.body.removeChild(v),URL.revokeObjectURL(x)}catch(e){console.error("Failed to export CSV",e)}},st=(e,t)=>{e.dataTransfer.setData("colKey",t)},at=(e,t)=>{const o=e.dataTransfer.getData("colKey");!o||o===t||M(()=>{je(a=>{const i=[...a],p=i.indexOf(o),g=i.indexOf(t);return i.splice(p,1),i.splice(g,0,o),i})})},lt=e=>e.preventDefault(),L=l.useMemo(()=>ee.map(e=>w.find(t=>t.key===e)).filter(e=>e&&G.includes(e.key)),[w,ee,G]),he=l.useMemo(()=>{const a="14px system-ui",i={};return L.forEach(p=>{const g=Ye(p.label,a),x=Math.min(320,Math.max($e,g+32+48));i[p.key]=Math.max($e,Te[p.key]??x)}),i},[L,Te]);l.useEffect(()=>{if(!w.length)return;const e=new Set(w.map(t=>t.key));Ae(t=>{const o={};return Object.entries(t).forEach(([a,i])=>{e.has(a)&&(o[a]=i)}),o})},[w]);const Et=(e,t)=>{if(e.preventDefault(),e.stopPropagation(),e.button!==void 0&&e.button!==0)return;const o=e.clientX,a=he[t]||$e;ce.current={key:t,startX:o,startWidth:a},document.body.style.cursor="col-resize";const i=g=>{if(!ce.current)return;const x=g.clientX-ce.current.startX,v=Math.max($e,ce.current.startWidth+x);Ae(u=>({...u,[ce.current.key]:v}))},p=()=>{ce.current=null,document.body.style.cursor="",window.removeEventListener("pointermove",i),window.removeEventListener("pointerup",p)};window.addEventListener("pointermove",i),window.addEventListener("pointerup",p)},Tt=(e,t)=>{e.preventDefault(),e.stopPropagation(),Ae(o=>{const a={...o};return delete a[t],a})},At=be||gt,Ot=f==="dark"?s.themeDark:f==="purple"?s.themePurple:s.themeLight;return l.useLayoutEffect(()=>{const e=()=>{bt(qe.current?.offsetHeight||0)};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[L.length]),l.useEffect(()=>{if(typeof window>"u"||typeof window.matchMedia!="function")return;const e=window.matchMedia("(max-width: 767.98px)"),t=o=>Ze(o.matches);return Ze(e.matches),e.addEventListener("change",t),()=>e.removeEventListener("change",t)},[]),r.jsxs("div",{className:T(s.container,Ot),children:[r.jsxs("div",{className:s.headerRow,children:[r.jsxs("div",{className:T(s.flexRow,s.toolbarGroup),children:[r.jsx("label",{className:s.labelMuted,children:"Rows:"}),r.jsx("select",{className:T(s.selectSmall,s.selectAuto),value:S,onChange:e=>M(()=>{ze(Number(e.target.value)),U(1)}),children:_e.map(e=>r.jsx("option",{value:e,children:e===q?"All":e},e))}),r.jsxs("div",{className:s.switchRow,children:[r.jsx("input",{className:s.checkbox,type:"checkbox",checked:ne,onChange:e=>M(()=>we(e.target.checked))}),r.jsx("label",{className:s.labelMuted,children:"Show Totals"})]}),r.jsxs("div",{className:s.groupingSummary,children:[r.jsxs("span",{className:s.labelMuted,children:["Group By:"," ",A.length?A.map(e=>w.find(t=>t.key===e)?.label||e).join(" > "):"None"]}),A.length>0&&r.jsx("button",{className:T(s.buttonBase,s.buttonMuted),onClick:()=>{M(()=>{Q([]),ae({})})},children:"Clear Groups"})]})]}),r.jsxs("div",{className:T(s.flexRow,s.toolbarGroup),children:[r.jsxs("button",{className:T(s.buttonBase,s.buttonDanger),disabled:!Object.values(y).some(e=>e?.value),onClick:vt,children:["✕"," ","Clear Filters"]}),r.jsx(ht,{label:r.jsxs(r.Fragment,{children:["⬇"," Export"]}),children:r.jsx("li",{children:r.jsx("button",{className:s.menuItemButton,onClick:Rt,children:"Export to CSV"})})}),r.jsxs("button",{className:T(s.buttonBase,s.buttonMuted),onClick:()=>ke(!0),children:["☰"," ","Columns"]}),r.jsxs(ht,{label:r.jsxs(r.Fragment,{children:["▣"," Theme"]}),children:[r.jsx("li",{children:r.jsxs("button",{className:s.menuItemButton,onClick:()=>_("light"),children:[f==="light"?"✓ ":"","Light"]})}),r.jsx("li",{children:r.jsxs("button",{className:s.menuItemButton,onClick:()=>_("dark"),children:[f==="dark"?"✓ ":"","Dark"]})}),r.jsx("li",{children:r.jsxs("button",{className:s.menuItemButton,onClick:()=>_("purple"),children:[f==="purple"?"✓ ":"","Purple"]})})]})]})]}),r.jsxs("div",{className:s.relative,children:[r.jsx("div",{className:s.srOnly,"aria-live":"polite",children:be?"Loading table data":"Table updated"}),At&&r.jsx("div",{className:s.overlay,children:r.jsxs("div",{className:s.overlayInner,style:{top:"15%"},children:[r.jsx("div",{className:s.spinner,role:"status"}),r.jsx("div",{className:s.labelMuted,children:be?"Loading data...":"Updating..."})]})}),r.jsx("div",{className:T(s.tableWrap,S===q&&s.tableWrapAll),ref:Oe,style:S===q?{maxHeight:"70vh",overflowY:"auto"}:{},onScroll:Ct,children:r.jsxs("table",{className:s.table,style:{tableLayout:"fixed"},role:"grid","aria-rowcount":P?He.length:X.length,"aria-colcount":L.length,children:[r.jsxs("thead",{className:s.tableHead,children:[r.jsx("tr",{ref:qe,children:L.map(e=>{const t=I.key===e.key,o=t?I.direction==="asc"?"↑":"↓":"⇅";return r.jsxs("th",{scope:"col","aria-sort":t?I.direction==="asc"?"ascending":"descending":"none",draggable:!0,onDragStart:a=>st(a,e.key),onDragOver:lt,onDrop:a=>at(a,e.key),style:{width:he[e.key]},className:s.thCellTop,children:[r.jsx("div",{className:s.thInner,children:r.jsxs("button",{type:"button",className:s.sortButton,"aria-label":`Sort by ${e.label}`,onClick:()=>kt(e.key),children:[e.label,r.jsxs("span",{className:s.iconMuted,children:[" ",o]})]})}),r.jsx("span",{className:s.resizeHandle,role:"separator","aria-orientation":"vertical","aria-label":`Resize ${e.label} column`,tabIndex:0,onPointerDown:a=>Et(a,e.key),onDoubleClick:a=>Tt(a,e.key)})]},e.key)})}),r.jsx("tr",{children:L.map(e=>r.jsx("th",{style:{top:wt},className:s.thCellFilter,children:Y(e.key)==="number"?r.jsxs("div",{className:s.inlineGroup,children:[r.jsxs("select",{className:T(s.selectSmall,s.selectAuto),value:y[e.key]?.op||"=",onChange:t=>Se(e.key,{type:"number",op:t.target.value}),children:[r.jsx("option",{value:"=",children:"="}),r.jsx("option",{value:">",children:">"}),r.jsx("option",{value:"<",children:"<"}),r.jsx("option",{value:"!=",children:"!="})]}),r.jsx("input",{type:"number",className:s.input,value:y[e.key]?.value||"",onChange:t=>Se(e.key,{type:"number",value:t.target.value})})]}):Y(e.key)==="date"?r.jsxs("div",{className:s.inlineGroup,children:[r.jsxs("select",{className:T(s.selectSmall,s.selectAuto),value:y[e.key]?.op||"=",onChange:t=>Se(e.key,{type:"date",op:t.target.value}),children:[r.jsx("option",{value:"=",children:"="}),r.jsx("option",{value:">",children:">"}),r.jsx("option",{value:"<",children:"<"}),r.jsx("option",{value:"!=",children:"!="})]}),r.jsx("input",{type:"date",className:s.input,value:y[e.key]?.value||"",onChange:t=>Se(e.key,{type:"date",value:t.target.value})})]}):r.jsx("input",{type:"text",className:s.input,placeholder:"Filter...",value:y[e.key]?.value||"",onChange:t=>Se(e.key,{type:"text",value:t.target.value})})},e.key))})]}),r.jsxs("tbody",{children:[$&&de.topSpacer>0&&r.jsx("tr",{"aria-hidden":"true",children:r.jsx("td",{colSpan:L.length,style:{height:`${de.topSpacer}px`,padding:0}})}),(P?He:$?de.rows:X).map(e=>{if(P&&e.type==="group"){const o=w.find(p=>p.key===e.groupKey)?.label||e.groupKey,a=!!se[e.id],i=ot(e.aggregates).join(" || ");return r.jsx("tr",{className:T(s.groupRow,s.groupRowAnimated),children:r.jsx("td",{colSpan:L.length,children:r.jsxs("button",{type:"button",className:s.groupToggle,onClick:()=>St(e.id),children:[r.jsxs("span",{style:{paddingLeft:`${e.level*18}px`},children:[a?"▶":"▼"," ",o,": ",e.groupValue," (",e.count,")"]}),i&&r.jsxs("span",{className:s.groupMeta,children:[" ",i]})]})})},e.id)}const t=P?e.row:e;return r.jsx("tr",{className:T(s.rowInteractive,P&&s.groupChildRow),tabIndex:0,children:L.map(o=>{const a=te(t,o.key);return typeof a=="boolean"?r.jsx("td",{"data-label":o.label,style:{width:he[o.key]},children:r.jsx("input",{type:"checkbox",checked:a,disabled:!0,className:s.checkbox})},o.key):Y(o.key)==="date"?r.jsx("td",{"data-label":o.label,style:{width:he[o.key]},children:xt(a)},o.key):r.jsx("td",{"data-label":o.label,style:{width:he[o.key]},children:a},o.key)})},P?e.id:t[Re(b)]??t[b])}),$&&de.bottomSpacer>0&&r.jsx("tr",{"aria-hidden":"true",children:r.jsx("td",{colSpan:L.length,style:{height:`${de.bottomSpacer}px`,padding:0}})})]}),ne&&Pe&&Object.keys(Pe).length>0&&r.jsxs("tfoot",{className:s.tfoot,children:[r.jsx("tr",{children:r.jsx("td",{colSpan:L.length,className:s.textCenter,children:"Totals"})}),r.jsx("tr",{children:L.map(e=>r.jsx("td",{"data-label":e.label,style:{width:he[e.key]},children:Pe[e.key]!==void 0?ue(Pe[e.key]):""},e.key))})]})]})})]}),!P&&S!==q&&Ve>1&&r.jsx("div",{className:s.paginationWrap,children:r.jsxs("ul",{className:s.pagination,children:[r.jsx("li",{children:r.jsx("button",{className:s.pageButton,disabled:W===1,onClick:()=>M(()=>U(e=>e-1)),children:"Prev"})}),Array.from({length:Ve},(e,t)=>r.jsx("li",{children:r.jsx("button",{className:T(s.pageButton,W===t+1&&s.pageButtonActive),onClick:()=>M(()=>U(t+1)),children:t+1})},t)),r.jsx("li",{children:r.jsx("button",{className:s.pageButton,disabled:W===Ve,onClick:()=>M(()=>U(e=>e+1)),children:"Next"})})]})}),!P&&S===q&&r.jsxs("div",{className:s.labelMuted,children:["Showing"," ",($?de.end:X.length).toLocaleString()," of"," ",D.length.toLocaleString()," rows",$?" (virtualized)":""]}),P&&r.jsxs("div",{className:s.labelMuted,children:["Grouped view: ",D.length.toLocaleString()," rows across"," ",A.length," level",A.length>1?"s":""]}),ve&&r.jsxs(r.Fragment,{children:[r.jsx("div",{className:s.backdrop,onClick:()=>ke(!1)}),r.jsxs("div",{className:s.drawer,children:[r.jsx("h6",{className:s.drawerTitle,children:"Column Settings"}),r.jsx("h6",{className:s.drawerSubtitle,children:"Visible Columns"}),ee.map(e=>{const t=w.find(o=>o.key===e);return t?r.jsxs("div",{className:s.drawerRow,draggable:!0,onDragStart:o=>st(o,t.key),onDragOver:lt,onDrop:o=>at(o,t.key),children:[r.jsx("input",{type:"checkbox",className:s.checkbox,checked:G.includes(t.key),onChange:()=>M(()=>Z(o=>o.includes(t.key)?o.filter(a=>a!==t.key):[...o,t.key]))}),r.jsx("label",{children:t.label}),r.jsx("span",{className:T(s.spacerAuto,s.iconMuted),children:"⋮"})]},t.key):null}),r.jsxs("div",{className:s.drawerSection,children:[r.jsxs("button",{type:"button",className:s.sectionToggle,"aria-expanded":z.groupBy,onClick:()=>le(e=>({...e,groupBy:!e.groupBy})),children:[r.jsx("span",{children:"Group By Columns"}),r.jsx("span",{className:s.iconMuted,children:z.groupBy?"▲":"▼"})]}),z.groupBy&&r.jsx("div",{className:s.sectionBody,children:ee.map(e=>{const t=w.find(o=>o.key===e);return t?r.jsxs("div",{className:s.drawerRow,children:[r.jsx("input",{type:"checkbox",className:s.checkbox,checked:A.includes(t.key),onChange:()=>jt(t.key)}),r.jsx("label",{children:t.label})]},`group-${t.key}`):null})})]}),r.jsxs("div",{className:s.drawerSection,children:[r.jsxs("button",{type:"button",className:s.sectionToggle,"aria-expanded":z.aggregates,onClick:()=>le(e=>({...e,aggregates:!e.aggregates})),children:[r.jsx("span",{children:"Show Total/Aggregate For"}),r.jsx("span",{className:s.iconMuted,children:z.aggregates?"▲":"▼"})]}),z.aggregates&&r.jsxs("div",{className:s.sectionBody,children:[De.length===0&&r.jsx("div",{className:s.labelMuted,children:"No numeric columns available."}),ee.map(e=>{const t=De.find(o=>o.key===e);return t?r.jsxs("div",{className:s.drawerRow,children:[r.jsx("input",{type:"checkbox",className:s.checkbox,checked:n.includes(t.key),onChange:()=>Nt(t.key)}),r.jsx("label",{children:t.label})]},`total-${t.key}`):null})]})]})]})]})]})}exports.AwesomeGrid=Yr;