@nice2dev/ui 1.0.5 → 1.0.6

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.
Files changed (49) hide show
  1. package/README.md +253 -207
  2. package/dist/NiceButton-B5RXLDwI.cjs +1 -0
  3. package/dist/NiceButton-DmTHNHet.js +450 -0
  4. package/dist/NiceErrorBoundary-D1hh5GGe.js +732 -0
  5. package/dist/NiceErrorBoundary-Dta4TGee.cjs +1 -0
  6. package/dist/NiceModuleLifecyclePanel-BapdidD6.js +4776 -0
  7. package/dist/NiceModuleLifecyclePanel-CsFsm534.cjs +1 -0
  8. package/dist/NicePinCodeInput-4q8yULuo.js +13359 -0
  9. package/dist/NicePinCodeInput-eD2q8nGa.cjs +692 -0
  10. package/dist/NicePinCodeInput.css +1 -0
  11. package/dist/NiceSavedQueryPanel-DUw8plYP.js +5666 -0
  12. package/dist/NiceSavedQueryPanel-xpk09zy1.cjs +596 -0
  13. package/dist/NiceSavedQueryPanel.css +1 -0
  14. package/dist/NiceStockChart-CHlOnWzN.cjs +287 -0
  15. package/dist/NiceStockChart-Cpmv9_Cc.js +2341 -0
  16. package/dist/NiceStockChart.css +1 -0
  17. package/dist/NiceToggle-C1UKGXmJ.js +209 -0
  18. package/dist/NiceToggle-lVi-ETi0.cjs +1 -0
  19. package/dist/NiceWindow-D1awkyFl.js +1636 -0
  20. package/dist/NiceWindow-yARTUJsg.cjs +1 -0
  21. package/dist/charts.cjs +1 -0
  22. package/dist/charts.d.ts +1043 -0
  23. package/dist/charts.mjs +23 -0
  24. package/dist/core-CfXsl755.js +16305 -0
  25. package/dist/core-DGJSUW64.cjs +96 -0
  26. package/dist/data.cjs +1 -0
  27. package/dist/data.d.ts +2003 -0
  28. package/dist/data.mjs +21 -0
  29. package/dist/editors.cjs +1 -0
  30. package/dist/editors.d.ts +2728 -0
  31. package/dist/editors.mjs +66 -0
  32. package/dist/feedback.cjs +1 -0
  33. package/dist/feedback.d.ts +339 -0
  34. package/dist/feedback.mjs +16 -0
  35. package/dist/index-C853adw1.cjs +6199 -0
  36. package/dist/index-CNwVELPJ.js +62857 -0
  37. package/dist/index-CUx_-gKK.cjs +1 -0
  38. package/dist/index-x8mRM4Jc.js +17 -0
  39. package/dist/index.cjs +1 -7866
  40. package/dist/index.css +1 -0
  41. package/dist/index.d.ts +1160 -2
  42. package/dist/index.mjs +972 -105889
  43. package/dist/navigation.cjs +1 -0
  44. package/dist/navigation.d.ts +1862 -0
  45. package/dist/navigation.mjs +519 -0
  46. package/dist/overlays.cjs +1 -0
  47. package/dist/overlays.d.ts +706 -0
  48. package/dist/overlays.mjs +26 -0
  49. package/package.json +31 -1
@@ -0,0 +1,596 @@
1
+ "use strict";const e=require("react/jsx-runtime"),t=require("react"),Te=require("./core-DGJSUW64.cjs"),li=require("./index-CUx_-gKK.cjs"),We=require("./NiceButton-B5RXLDwI.cjs");function oi({columns:n,data:a,striped:r,compact:s,emptyText:c,className:u,style:f,accessMode:l,id:x,displayStyle:D}){if(Te.useNiceAccessMode(l,x)==="hidden")return null;const G=Te.useComponentDisplayStyle("table",D),w=Te.useComponentDisplayClass("table",D),[B,H]=t.useState(null),M=t.useMemo(()=>B?[...a].sort((_,N)=>{const o=_[B.field]??"",R=N[B.field]??"",$=typeof o=="number"?o-R:String(o).localeCompare(String(R));return B.dir==="desc"?-$:$}):a,[a,B]),P=_=>{H(N=>N?.field===_?N.dir==="asc"?{field:_,dir:"desc"}:null:{field:_,dir:"asc"})};return e.jsx("div",{className:`nice-table-wrapper ${u||""}`,style:{...G,...f},children:e.jsxs("table",{className:`nice-table nice-table--ds-${w} ${r?"nice-table--striped":""} ${s?"nice-table--compact":""}`,"aria-rowcount":M.length,"aria-colcount":n.length,children:[e.jsx("thead",{children:e.jsx("tr",{children:n.map(_=>{const N=_.sortable?B?.field===_.field?B.dir==="asc"?"ascending":"descending":"none":void 0;return e.jsxs("th",{style:{width:_.width,textAlign:_.align},className:_.sortable?"th--sortable":void 0,onClick:()=>_.sortable&&P(_.field),scope:"col","aria-sort":N,children:[_.header,_.sortable&&B?.field===_.field&&e.jsx("span",{className:"nice-table__sort-icon","aria-hidden":"true",children:B.dir==="asc"?"↑":"↓"})]},_.field)})})}),e.jsx("tbody",{children:M.length===0?e.jsx("tr",{children:e.jsx("td",{colSpan:n.length,className:"nice-table__empty",children:c||"No data"})}):M.map((_,N)=>e.jsx("tr",{children:n.map(o=>e.jsx("td",{style:{textAlign:o.align},children:o.render?o.render(_[o.field],_):String(_[o.field]??"")},o.field))},N))})]})})}function Un(n,a,r){const s=n.map(c=>c[a]).filter(c=>typeof c=="number");if(s.length===0)return r==="count"?"0":"";switch(r){case"sum":return s.reduce((c,u)=>c+u,0).toLocaleString();case"avg":return(s.reduce((c,u)=>c+u,0)/s.length).toLocaleString(void 0,{maximumFractionDigits:2});case"count":return String(n.length);case"min":return Math.min(...s).toLocaleString();case"max":return Math.max(...s).toLocaleString()}}function sn(n){return n.includes(",")||n.includes('"')||n.includes(`
2
+ `)?`"${n.replace(/"/g,'""')}"`:n}function xn({columns:n,data:a,keyField:r="id",dataSource:s,sortable:c=!0,sortField:u,sortDirection:f,onSort:l,selectable:x,selectedKeys:D,onSelectionChange:A,pagination:G,pageSize:w=10,page:B,onPageChange:H,totalRows:M,searchable:P,searchPlaceholder:_,virtualScroll:N,rowHeight:o=40,groupBy:R,groupRender:$,onCellEdit:K,exportCsv:ee,exportFilename:he="export",detailRow:b,expandedRowKeys:ne,onExpandedRowChange:te,columnReorder:ae,onColumnReorder:V,columnResize:W,rowDraggable:g,onRowReorder:I,striped:m,compact:_e,loading:be,emptyText:T,toolbar:Z,onRowClick:ce,pinnedTopKeys:se,pinnedBottomKeys:xe,colSpan:z,showStatusBar:me,contextMenuItems:Ce,onContextMenuAction:tt,printFriendly:ve,keyboardNavigation:we,focusedCell:Ve,onFocusedCellChange:st,cellRangeSelection:L,selectedCellRange:Me,onCellRangeChange:S,clipboard:ie,clipboardFormat:le="text",onBeforeCopy:Q,onCopy:De,onPaste:Ee,quickFilters:Ze,activeQuickFilters:ue,onQuickFilterChange:ye,columnGroups:Et,stateStorageKey:fe,initialState:Ct,onStateChange:k,flashRowKeys:Y,flashDuration:ge=500,autoFitColumns:nt,showColumnStats:bt,rowIndicator:Ne,frozenRows:Oe,className:it,style:mt,accessMode:Be,id:jt,displayStyle:Bt}){const At=Te.useNiceAccessMode(Be,jt);if(At==="hidden")return null;const Gt=At==="readOnly"||At==="disabled",{t:ze}=Te.useNiceTranslation();Te.useComponentDisplayStyle("table",Bt),Te.useComponentDisplayClass("table",Bt);const Je=Te.useNiceDataSource(s??null,{autoLoad:!!s,defaultPageSize:w}),Ge=!!s,Lt=Ge?Je.data:a??[],Rt=Ge?Je.loading:be,[Xt,Qt]=t.useState({field:"",dir:null}),[Ht,ht]=t.useState(1),[cn,Yt]=t.useState(new Set),[Pt,Vt]=t.useState(""),[ct,en]=t.useState(w),[d,h]=t.useState(null),[C,O]=t.useState(null),[q,E]=t.useState(new Set),[U,re]=t.useState(0),oe=t.useRef(null),[Ue,Le]=t.useState(new Set),ke=ne??Ue,[Pe,$t]=t.useState({}),[vt,Xe]=t.useState(null),[yt,Mt]=t.useState(null),[Kt,Ft]=t.useState(null),[wt,ln]=t.useState(null),[Tt,kt]=t.useState([]),[Jt,Ot]=t.useState(null),[bn,Zt]=t.useState(new Set),[wn,kn]=t.useState(null),tn=t.useRef(null),pt=Ve??Kt,rt=Me??wt,at=ue??Tt;t.useEffect(()=>{if(!fe)return;const i=localStorage.getItem(`nice-datagrid-${fe}`);if(i&&!Ct)try{const p=JSON.parse(i);p.columnWidths&&$t(p.columnWidths),p.expandedGroups&&E(new Set(p.expandedGroups))}catch{}},[fe,Ct]),t.useEffect(()=>{if(!Y?.size)return;Zt(new Set(Y));const i=setTimeout(()=>Zt(new Set),ge);return()=>clearTimeout(i)},[Y,ge]),t.useEffect(()=>{if(!yt)return;const i=()=>Mt(null);return document.addEventListener("click",i),()=>document.removeEventListener("click",i)},[yt]);const on=t.useCallback((i,p)=>{Ce?.length&&(i.preventDefault(),Mt({x:i.clientX,y:i.clientY,row:p}))},[Ce]),dn=t.useCallback(i=>{const p=new Set(ke);p.has(i)?p.delete(i):p.add(i),te?te(p):Le(p)},[ke,te]),un=t.useCallback((i,p)=>{if(!W)return;p.preventDefault();const y=p.clientX,F=p.target.closest("th")?.offsetWidth??100,de=X=>{const $e=Math.max(40,F+X.clientX-y);$t(Re=>({...Re,[i]:$e}))},pe=()=>{document.removeEventListener("mousemove",de),document.removeEventListener("mouseup",pe)};document.addEventListener("mousemove",de),document.addEventListener("mouseup",pe)},[W]),Nt=Ge?Je.sort[0]?.field??"":u??Xt.field,lt=Ge?Je.sort[0]?.direction??null:f??Xt.dir,St=Ge?Je.page:B??Ht,ot=D??cn;t.useCallback(()=>{if(!fe)return;const i={columnWidths:Pe,sortField:Nt||void 0,sortDirection:lt,pageSize:ct,expandedGroups:Array.from(q)};localStorage.setItem(`nice-datagrid-${fe}`,JSON.stringify(i)),k?.(i)},[fe,Pe,Nt,lt,ct,q,k]);const dt=t.useMemo(()=>n.filter(i=>!i.hidden),[n]),nn=t.useMemo(()=>dt.filter(i=>i.pinned==="left"),[dt]),an=t.useMemo(()=>dt.filter(i=>i.pinned==="right"),[dt]),zt=t.useMemo(()=>dt.filter(i=>!i.pinned),[dt]),Ae=t.useMemo(()=>[...nn,...zt,...an],[nn,zt,an]),mn=t.useMemo(()=>dt.some(i=>i.aggregate),[dt]),qt=nn.length>0||an.length>0,v=t.useCallback(i=>{const p=Nt===i?lt==="asc"?"desc":lt==="desc"?null:"asc":"asc";Ge?p?Je.setSortField(i,p):Je.setSort([]):l?l(i,p):Qt({field:i,dir:p})},[Nt,lt,Ge,Je,l]),J=t.useMemo(()=>{if(Ge)return Lt;let i=[...Lt];if(Pt){const p=Pt.toLowerCase();i=i.filter(y=>dt.some(j=>String(y[j.field]??"").toLowerCase().includes(p)))}return!l&&Nt&&lt&&i.sort((p,y)=>{const j=p[Nt]??"",F=y[Nt]??"",de=typeof j=="number"?j-F:String(j).localeCompare(String(F));return lt==="desc"?-de:de}),i},[Lt,Pt,dt,Nt,lt,l,Ge]),je=Ge?Je.totalCount:M??J.length,Se=Ge?Je.pageSize:ct,ut=Math.max(1,Math.ceil(je/Se)),Qe=Ge?J:G&&!M?J.slice((St-1)*Se,St*Se):J,ft=t.useCallback(i=>{Ge?Je.setPage(i):H?H(i):ht(i)},[Ge,Je,H]),He=t.useMemo(()=>Qe.map(i=>String(i[r])),[Qe,r]),Ut=He.length>0&&He.every(i=>ot.has(i)),Sn=He.some(i=>ot.has(i)),Cn=t.useCallback(()=>{const i=new Set(ot);Ut?He.forEach(p=>i.delete(p)):He.forEach(p=>i.add(p)),A?A(i):Yt(i)},[Ut,He,ot,A]),Mn=t.useCallback(i=>{const p=new Set(ot);p.has(i)?p.delete(i):p.add(i),A?A(p):Yt(p)},[ot,A]),Dn=({field:i})=>Nt!==i||!lt?e.jsx("span",{className:"nice-table__sort-icon",style:{opacity:.3},children:"↕"}):e.jsx("span",{className:"nice-table__sort-icon",children:lt==="asc"?"↑":"↓"}),gt=t.useMemo(()=>{if(!R)return Qe.map((y,j)=>({type:"data",row:y,key:String(y[r]??j)}));const i=new Map;Qe.forEach(y=>{const j=y[R];i.has(j)||i.set(j,[]),i.get(j).push(y)});const p=[];return i.forEach((y,j)=>{const F=`__group_${String(j)}`,de=q.has(F);p.push({type:"group",value:j,rows:y,expanded:de,key:F}),de&&y.forEach((pe,X)=>p.push({type:"data",row:pe,key:String(pe[r]??`${F}_${X}`)}))}),p},[Qe,R,r,q]),{pinnedTopRows:Qn,pinnedBottomRows:Yn,normalRows:Jn}=t.useMemo(()=>{if(!se?.size&&!xe?.size)return{pinnedTopRows:[],pinnedBottomRows:[],normalRows:gt};const i=[],p=[],y=[];for(const j of gt){if(j.type==="data"){const F=j.key;if(se?.has(F)){i.push(j);continue}if(xe?.has(F)){p.push(j);continue}}y.push(j)}return{pinnedTopRows:i,pinnedBottomRows:p,normalRows:y}},[gt,se,xe]),In=t.useCallback(i=>{E(p=>{const y=new Set(p);return y.has(i)?y.delete(i):y.add(i),y})},[]),Hn=t.useMemo(()=>{if(!N)return gt;const i=oe.current?.clientHeight??400,p=Math.ceil(i/o),y=Math.max(0,Math.floor(U/o)-3),j=Math.min(gt.length-1,y+p+6);return gt.slice(y,j+1).map((F,de)=>({...F,_vIdx:y+de}))},[N,gt,U,o]),hn=t.useCallback((i,p,y)=>{!K||Gt||(h({rowKey:i,field:p}),O(y))},[K]),En=t.useCallback(()=>{d&&K&&K(d.rowKey,d.field,C),h(null),O(null)},[d,C,K]),ei=t.useCallback(()=>{h(null),O(null)},[]),ti=t.useCallback(()=>{const i=dt,p=i.map(X=>sn(X.header)).join(","),y=J.map(X=>i.map($e=>sn(String(X[$e.field]??""))).join(",")),j=[p,...y].join(`
3
+ `),F=new Blob(["\uFEFF"+j],{type:"text/csv;charset=utf-8;"}),de=URL.createObjectURL(F),pe=document.createElement("a");pe.href=de,pe.download=`${he}.csv`,pe.click(),URL.revokeObjectURL(de)},[dt,J,he]),pn=t.useCallback(i=>{st?st(i):Ft(i)},[st]),fn=t.useCallback(i=>{S?S(i):ln(i)},[S]),_t=t.useMemo(()=>gt.filter(i=>i.type==="data").map(i=>i.key),[gt]),ni=t.useCallback(i=>{if(!we||d||!pt)return;const p=_t.indexOf(pt.rowKey),y=Ae.findIndex(pe=>pe.field===pt.field);if(p<0||y<0)return;let j=p,F=y;switch(i.key){case"ArrowUp":j=Math.max(0,p-1);break;case"ArrowDown":j=Math.min(_t.length-1,p+1);break;case"ArrowLeft":F=Math.max(0,y-1);break;case"ArrowRight":F=Math.min(Ae.length-1,y+1);break;case"Tab":i.preventDefault(),i.shiftKey?F=Math.max(0,y-1):F=Math.min(Ae.length-1,y+1);break;case"Enter":const pe=Ae[y];if(pe.editable&&K){const X=Qe.find($e=>String($e[r])===pt.rowKey);X&&hn(pt.rowKey,pe.field,X[pe.field])}return;case"Escape":pn(null),fn(null);return;case"Home":i.ctrlKey&&(j=0),F=0;break;case"End":i.ctrlKey&&(j=_t.length-1),F=Ae.length-1;break;case"PageUp":j=Math.max(0,p-ct);break;case"PageDown":j=Math.min(_t.length-1,p+ct);break;default:return}i.preventDefault();const de={rowKey:_t[j],field:Ae[F].field};if(pn(de),i.shiftKey&&L){const pe=rt?.start??pt;fn({start:pe,end:de})}else fn(null)},[we,d,pt,_t,Ae,L,rt,pn,fn,K,Qe,r,hn,ct]),An=t.useCallback(()=>{let i=[],p=[];if(rt){const y=_t.indexOf(rt.start.rowKey),j=_t.indexOf(rt.end.rowKey),F=Math.min(y,j),de=Math.max(y,j),pe=Ae.findIndex(Ke=>Ke.field===rt.start.field),X=Ae.findIndex(Ke=>Ke.field===rt.end.field),$e=Math.min(pe,X),Re=Math.max(pe,X);p=Ae.slice($e,Re+1).map(Ke=>Ke.field),i=Qe.filter(Ke=>{const Fe=_t.indexOf(String(Ke[r]));return Fe>=F&&Fe<=de})}else ot.size>0&&(i=Qe.filter(y=>ot.has(String(y[r]))),p=Ae.map(y=>y.field));return{rows:i,fields:p}},[rt,_t,Ae,Qe,r,ot]),Rn=t.useCallback((i,p,y)=>{const j=Ae.filter(F=>p.includes(F.field));switch(y){case"json":return JSON.stringify(i.map(Fe=>Object.fromEntries(p.map(qe=>[qe,Fe[qe]]))),null,2);case"csv":const F=j.map(Fe=>sn(Fe.header)).join(","),de=i.map(Fe=>j.map(qe=>sn(String(Fe[qe.field]??""))).join(",")).join(`
4
+ `);return F+`
5
+ `+de;case"html":const pe=j.map(Fe=>`<th>${Fe.header}</th>`).join(""),X=i.map(Fe=>`<tr>${j.map(qe=>`<td>${Fe[qe.field]??""}</td>`).join("")}</tr>`).join("");return`<table><thead><tr>${pe}</tr></thead><tbody>${X}</tbody></table>`;case"markdown":const $e="| "+j.map(Fe=>Fe.header).join(" | ")+" |",Re="| "+j.map(()=>"---").join(" | ")+" |",Ke=i.map(Fe=>"| "+j.map(qe=>Fe[qe.field]??"").join(" | ")+" |").join(`
6
+ `);return $e+`
7
+ `+Re+`
8
+ `+Ke;default:return i.map(Fe=>j.map(qe=>Fe[qe.field]??"").join(" ")).join(`
9
+ `)}},[Ae]),vn=t.useCallback(async()=>{if(!ie)return;const{rows:i,fields:p}=An();if(!i.length||Q?.(i,p)===!1)return;const y=Rn(i,p,le);await navigator.clipboard.writeText(y),De?.(i,p,le)},[ie,An,Q,Rn,le,De]),$n=t.useCallback(async()=>{if(!ie||!pt||!Ee)return;const p=(await navigator.clipboard.readText()).split(`
10
+ `).map(y=>y.split(" "));Ee(p,pt)},[ie,pt,Ee]);t.useEffect(()=>{if(!ie||!tn.current)return;const i=p=>{tn.current?.contains(document.activeElement)&&(p.type==="copy"&&(p.preventDefault(),vn()),p.type==="paste"&&(p.preventDefault(),$n()))};return document.addEventListener("copy",i),document.addEventListener("paste",i),()=>{document.removeEventListener("copy",i),document.removeEventListener("paste",i)}},[ie,vn,$n]);const ii=t.useCallback(i=>{const p=at.includes(i)?at.filter(y=>y!==i):[...at,i];ye?ye(p):kt(p)},[at,ye]),ai=t.useMemo(()=>{if(!Ze?.length||!at.length)return J;const i=Ze.filter(p=>at.includes(p.key));return J.filter(p=>i.every(y=>y.filter(p)))},[J,Ze,at]);Ze?.length,t.useCallback(i=>{const p=J.map($e=>$e[i]).filter($e=>$e!=null),y=p.filter($e=>typeof $e=="number");if(y.length===0){const $e=new Set(p).size;return{count:p.length,unique:$e,type:"text"}}const j=y.reduce(($e,Re)=>$e+Re,0),F=j/y.length,de=Math.min(...y),pe=Math.max(...y),X=Math.sqrt(y.reduce(($e,Re)=>$e+(Re-F)**2,0)/y.length);return{count:y.length,sum:j,avg:F,min:de,max:pe,stdDev:X,type:"numeric"}},[J]);const si=t.useCallback((i,p,y)=>{if(!i.cellVisualization)return null;const j=Number(p);if(isNaN(j))return null;const F=i.visualMin??0,de=i.visualMax??100,pe=Math.max(0,Math.min(100,(j-F)/(de-F)*100));switch(i.cellVisualization){case"progress":return e.jsxs("div",{className:"nice-datagrid__cell-progress",style:{display:"flex",alignItems:"center",gap:8},children:[e.jsx("div",{style:{flex:1,height:6,background:"var(--border-color)",borderRadius:3,overflow:"hidden"},children:e.jsx("div",{style:{width:`${pe}%`,height:"100%",background:pe>80?"var(--color-success)":pe>50?"var(--color-primary)":"var(--color-warning)",transition:"width 0.3s ease"}})}),e.jsxs("span",{style:{fontSize:"0.75rem",minWidth:32,textAlign:"right"},children:[Math.round(pe),"%"]})]});case"rating":const X=Math.round(j/de*5);return e.jsx("div",{className:"nice-datagrid__cell-rating",children:[1,2,3,4,5].map(zn=>e.jsx("span",{style:{color:zn<=X?"var(--color-warning)":"var(--text-muted)",fontSize:"0.85rem"},children:"★"},zn))});case"trend":const $e=i.visualMin??j,Re=j-$e,Ke=Re>0?"↑":Re<0?"↓":"→",Fe=Re>0?"var(--color-success)":Re<0?"var(--color-danger)":"var(--text-muted)";return e.jsxs("span",{style:{color:Fe,fontWeight:500},children:[Ke," ",Math.abs(Re).toFixed(1),"%"]});case"heatmap":const qe=pe/100,Wt=`rgba(${Math.round(255*qe)}, ${Math.round(100*(1-qe))}, ${Math.round(50*(1-qe))}, 0.6)`;return e.jsx("span",{style:{background:Wt,padding:"2px 8px",borderRadius:4},children:j});default:return null}},[]),ri=t.useCallback((i,p,y)=>{if(!i.conditionalFormats?.length)return{};for(const j of i.conditionalFormats)if(j.when(p,y,i.field))return{className:j.className,style:{...j.style,backgroundColor:j.backgroundColor,color:j.color}};return{}},[]),yn=t.useCallback((i,p)=>{if(!qt||!i.pinned)return{};const y={position:"sticky",zIndex:2,background:"var(--bg-primary, #fff)"};if(i.pinned==="left"){let j=0;for(let F=0;F<p;F++){const de=Ae[F];de.pinned==="left"&&(j+=typeof de.width=="number"?de.width:parseInt(String(de.width)||"100",10))}x&&p===0&&(j=36),y.left=j}else{let j=0;for(let F=Ae.length-1;F>p;F--){const de=Ae[F];de.pinned==="right"&&(j+=typeof de.width=="number"?de.width:parseInt(String(de.width)||"100",10))}y.right=j}return y},[qt,Ae,x]),Tn=(i,p,y,j)=>{if(d?.rowKey===y&&d?.field===i.field)return i.editor?i.editor(C,p,X=>O(X)):e.jsx("input",{className:"nice-datagrid__edit-input",autoFocus:!0,value:C??"",onChange:X=>O(X.target.value),onBlur:En,onKeyDown:X=>{X.key==="Enter"&&En(),X.key==="Escape"&&ei()}});const de=si(i,p[i.field],p);return de||(i.render?i.render(p[i.field],p,j):String(p[i.field]??""))},ci=(i,p,y,j)=>{const F=pt?.rowKey===y&&pt?.field===i.field,de=rt&&(()=>{const $e=_t.indexOf(rt.start.rowKey),Re=_t.indexOf(rt.end.rowKey),Ke=_t.indexOf(y),Fe=Ae.findIndex(Wt=>Wt.field===rt.start.field),qe=Ae.findIndex(Wt=>Wt.field===rt.end.field);return Ke>=Math.min($e,Re)&&Ke<=Math.max($e,Re)&&j>=Math.min(Fe,qe)&&j<=Math.max(Fe,qe)})(),pe=ri(i,p[i.field],p);return{className:[pe.className,F&&"nice-datagrid__cell--focused",de&&"nice-datagrid__cell--in-range"].filter(Boolean).join(" "),style:{...yn(i,j),textAlign:i.align,...pe.style,...F?{outline:"2px solid var(--color-primary)",outlineOffset:-2}:{},...de?{background:"var(--color-primary-light, rgba(59,130,246,0.15))"}:{}}}},gn=Ae.length+(x?1:0)+(b?1:0)+(g?1:0)+(Ne?1:0),Nn=(i,p,y)=>{const{row:j,key:F}=i,de=ot.has(F),pe=ke.has(F),X=bn.has(F),$e=[de&&"nice-datagrid__row--selected",vt===p&&"nice-datagrid__row--dragging",y&&"nice-datagrid__row--pinned",X&&"nice-datagrid__row--flash"].filter(Boolean).join(" ");return e.jsxs(t.Fragment,{children:[e.jsxs("tr",{className:$e,onClick:()=>ce?.(j),onContextMenu:Re=>on(Re,j),style:ce?{cursor:"pointer"}:void 0,draggable:g,onDragStart:g?()=>Xe(p):void 0,onDragOver:g?Re=>Re.preventDefault():void 0,onDrop:g&&I&&vt!=null?()=>{I(vt,p),Xe(null)}:void 0,onDragEnd:g?()=>Xe(null):void 0,children:[Ne&&e.jsx("td",{className:"nice-datagrid__row-indicator",style:{width:32,padding:"0 4px"},children:Ne(j)}),b&&e.jsx("td",{className:"nice-datagrid__expand-col",onClick:Re=>{Re.stopPropagation(),dn(F)},children:e.jsx("span",{className:"nice-datagrid__expand-btn",children:pe?"▾":"▸"})}),g&&e.jsx("td",{className:"nice-datagrid__drag-handle",style:{cursor:"grab",textAlign:"center",color:"var(--text-muted)"},children:"⠿"}),x&&e.jsx("td",{className:"nice-datagrid__checkbox",onClick:Re=>Re.stopPropagation(),style:qt?{position:"sticky",left:0,zIndex:1,background:"var(--bg-primary, #fff)"}:void 0,children:e.jsx("input",{type:"checkbox",checked:de,onChange:()=>Mn(F),"aria-label":`Select row ${F}`})}),(()=>{let Re=0;return Ae.map((Ke,Fe)=>{if(Re>0)return Re--,null;const qe=z?z(j,Ke,Fe):void 0;qe&&qe>1&&(Re=qe-1);const Wt=ci(Ke,j,F,Fe);return e.jsx("td",{colSpan:qe,className:Wt.className,style:Wt.style,onClick:we?()=>pn({rowKey:F,field:Ke.field}):void 0,onDoubleClick:Ke.editable&&K?()=>hn(F,Ke.field,j[Ke.field]):void 0,children:Tn(Ke,j,F,p)},Ke.field)})})()]}),b&&pe&&e.jsx("tr",{className:"nice-datagrid__detail-row",children:e.jsx("td",{colSpan:gn,children:b(j)})})]},F)};return e.jsxs("div",{ref:tn,className:`nice-datagrid ${ve?"nice-datagrid--print":""} ${it||""}`,style:mt,role:"grid","aria-label":ze("datagrid.title","Data Grid"),"aria-rowcount":gt.length,"aria-colcount":dt.length,"aria-busy":Rt||void 0,tabIndex:we?0:void 0,onKeyDown:we?ni:void 0,children:[(P||Z||ee||Ze?.length)&&e.jsxs("div",{className:"nice-datagrid__toolbar",children:[P&&e.jsx("div",{className:"nice-datagrid__search",children:e.jsx("input",{type:"text",value:Ge?Je.search:Pt,"aria-label":ze("controls.search","Search"),onChange:i=>{Ge?Je.setSearch(i.target.value):(Vt(i.target.value),ft(1))},placeholder:_||ze("controls.search","Search...")})}),Ze&&Ze.length>0&&e.jsx("div",{className:"nice-datagrid__quick-filters",style:{display:"flex",gap:6,flexWrap:"wrap"},children:Ze.map(i=>e.jsxs("button",{className:`nice-datagrid__quick-filter ${at.includes(i.key)?"nice-datagrid__quick-filter--active":""}`,onClick:()=>ii(i.key),style:{display:"inline-flex",alignItems:"center",gap:4,padding:"3px 10px",fontSize:"0.75rem",border:"1px solid var(--border-color)",borderRadius:12,background:at.includes(i.key)?`var(--color-${i.color||"primary"})`:"var(--bg-primary)",color:at.includes(i.key)?"#fff":"inherit",cursor:"pointer",transition:"all 0.15s ease"},children:[i.icon&&e.jsx("span",{children:i.icon}),i.label]},i.key))}),ie&&e.jsx("button",{className:"nice-btn nice-btn--sm nice-btn--ghost",onClick:vn,title:ze("controls.copy","Copy selected"),style:{marginLeft:4},children:"📋"}),ee&&e.jsx("button",{className:"nice-btn nice-btn--sm",onClick:ti,title:ze("controls.exportCsv","Export CSV"),children:"CSV ↓"}),Z]}),e.jsxs("div",{ref:oe,className:`nice-datagrid__table-wrap ${N?"nice-datagrid__table-wrap--virtual":""}`,style:N?{maxHeight:Math.min(gt.length*o,600),overflowY:"auto"}:void 0,onScroll:N?i=>re(i.currentTarget.scrollTop):void 0,children:[N&&e.jsxs("div",{style:{height:gt.length*o,position:"relative"},children:[e.jsx("table",{className:`${m?"nice-table--striped":""} ${_e?"nice-table--compact":""}`,style:{position:"sticky",top:0,zIndex:3},children:e.jsx("thead",{children:e.jsxs("tr",{children:[b&&e.jsx("th",{className:"nice-datagrid__expand-col",style:{width:36}}),g&&e.jsx("th",{style:{width:28}}),x&&e.jsx("th",{className:"nice-datagrid__checkbox",style:qt?{position:"sticky",left:0,zIndex:3,background:"var(--bg-primary, #fff)"}:void 0,children:e.jsx("input",{type:"checkbox",checked:Ut,ref:i=>{i&&(i.indeterminate=Sn&&!Ut)},onChange:Cn,"aria-label":ze("controls.selectAll","Select all")})}),Ae.map((i,p)=>e.jsxs("th",{style:{width:Pe[i.field]||i.width,minWidth:i.minWidth,textAlign:i.align,position:"relative",...yn(i,p)},className:c&&i.sortable!==!1?"nice-datagrid__th--sortable":void 0,onClick:()=>c&&i.sortable!==!1&&v(i.field),children:[i.header,c&&i.sortable!==!1&&e.jsx(Dn,{field:i.field}),W&&e.jsx("span",{className:"nice-datagrid__resize-handle",onMouseDown:y=>{y.stopPropagation(),un(i.field,y)}})]},i.field))]})})}),Hn.map((i,p)=>{const y=i._vIdx??0;if(i.type==="group"){const X=i;return e.jsxs("div",{className:"nice-datagrid__group-row",style:{position:"absolute",top:y*o,height:o,left:0,right:0},onClick:()=>In(X.key),children:[e.jsx("span",{className:"nice-datagrid__group-toggle",children:X.expanded?"▾":"▸"}),$?$(X.value,X.rows):e.jsxs(e.Fragment,{children:[String(X.value)," (",X.rows.length,")"]})]},X.key)}const{row:j,key:F}=i,de=ot.has(F),pe=ke.has(F);return e.jsxs(t.Fragment,{children:[e.jsxs("div",{className:`nice-datagrid__vrow ${de?"nice-datagrid__row--selected":""} ${vt===p?"nice-datagrid__row--dragging":""}`,style:{position:"absolute",top:y*o,height:o,left:0,right:0,display:"flex",alignItems:"center"},onClick:()=>ce?.(j),draggable:g,onDragStart:g?()=>Xe(p):void 0,onDragOver:g?X=>X.preventDefault():void 0,onDrop:g&&I&&vt!=null?()=>{I(vt,p),Xe(null)}:void 0,onDragEnd:g?()=>Xe(null):void 0,children:[b&&e.jsx("div",{className:"nice-datagrid__expand-col",style:{width:36,flexShrink:0,textAlign:"center",cursor:"pointer"},onClick:X=>{X.stopPropagation(),dn(F)},children:e.jsx("span",{className:"nice-datagrid__expand-btn",children:pe?"▾":"▸"})}),g&&e.jsx("div",{style:{width:28,flexShrink:0,cursor:"grab",textAlign:"center",color:"var(--text-muted)"},children:"⠿"}),x&&e.jsx("div",{className:"nice-datagrid__checkbox",style:{width:36,flexShrink:0},onClick:X=>X.stopPropagation(),children:e.jsx("input",{type:"checkbox",checked:de,onChange:()=>Mn(F)})}),Ae.map(X=>e.jsx("div",{className:"nice-datagrid__vcell",style:{width:Pe[X.field]||X.width||"auto",flex:Pe[X.field]||X.width?`0 0 ${typeof(Pe[X.field]||X.width)=="number"?(Pe[X.field]||X.width)+"px":Pe[X.field]||X.width}`:1,textAlign:X.align,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",padding:"0 8px"},onDoubleClick:X.editable&&K?()=>hn(F,X.field,j[X.field]):void 0,children:Tn(X,j,F,y)},X.field))]}),b&&pe&&e.jsx("div",{className:"nice-datagrid__detail-row",style:{position:"absolute",top:(y+1)*o,left:0,right:0,padding:"8px 12px",background:"var(--bg-secondary, #f8f8f8)"},children:b(j)})]},F)})]}),!N&&e.jsxs("table",{className:`${m?"nice-table--striped":""} ${_e?"nice-table--compact":""}`,children:[e.jsx("thead",{children:e.jsxs("tr",{children:[b&&e.jsx("th",{className:"nice-datagrid__expand-col",style:{width:36}}),g&&e.jsx("th",{style:{width:28}}),x&&e.jsx("th",{className:"nice-datagrid__checkbox",style:qt?{position:"sticky",left:0,zIndex:3,background:"var(--bg-primary, #fff)"}:void 0,children:e.jsx("input",{type:"checkbox",checked:Ut,ref:i=>{i&&(i.indeterminate=Sn&&!Ut)},onChange:Cn,"aria-label":ze("controls.selectAll","Select all")})}),Ae.map((i,p)=>{const y=c&&i.sortable!==!1,j=y?Nt===i.field?lt==="asc"?"ascending":lt==="desc"?"descending":"none":"none":void 0;return e.jsxs("th",{style:{width:Pe[i.field]||i.width,minWidth:i.minWidth,textAlign:i.align,position:"relative",...yn(i,p)},className:y?"nice-datagrid__th--sortable":void 0,onClick:()=>y&&v(i.field),"aria-sort":j,scope:"col",children:[i.header,y&&e.jsx(Dn,{field:i.field}),W&&e.jsx("span",{className:"nice-datagrid__resize-handle",onMouseDown:F=>{F.stopPropagation(),un(i.field,F)}})]},i.field)})]})}),e.jsx("tbody",{children:Rt?e.jsx("tr",{children:e.jsx("td",{colSpan:gn,className:"nice-datagrid__empty",children:e.jsx("div",{className:"nice-spinner nice-spinner--md",style:{margin:"0 auto"}})})}):gt.length===0?e.jsx("tr",{children:e.jsx("td",{colSpan:gn,className:"nice-datagrid__empty",children:T||ze("controls.noData","No data available")})}):e.jsxs(e.Fragment,{children:[Qn.map((i,p)=>i.type==="data"&&Nn(i,p,"top")),Jn.map((i,p)=>{if(i.type==="group"){const y=i;return e.jsx("tr",{className:"nice-datagrid__group-row",onClick:()=>In(y.key),children:e.jsxs("td",{colSpan:gn,className:"nice-datagrid__group-cell",children:[e.jsx("span",{className:"nice-datagrid__group-toggle",children:y.expanded?"▾":"▸"}),$?$(y.value,y.rows):e.jsxs(e.Fragment,{children:[String(y.value)," (",y.rows.length,")"]})]})},y.key)}return Nn(i,p)}),Yn.map((i,p)=>i.type==="data"&&Nn(i,p,"bottom"))]})}),mn&&!Rt&&Qe.length>0&&e.jsx("tfoot",{children:e.jsxs("tr",{className:"nice-datagrid__aggregate-row",children:[x&&e.jsx("td",{}),Ae.map(i=>e.jsx("td",{style:{textAlign:i.align,fontWeight:600},children:i.aggregate?(i.aggregateLabel||i.aggregate.toUpperCase())+": "+Un(J,i.field,i.aggregate):""},i.field))]})})]})]}),G&&e.jsxs("div",{className:"nice-datagrid__footer",children:[e.jsxs("span",{children:[ze("controls.showing","Showing")," ",(St-1)*Se+1,"–",Math.min(St*Se,je)," ",ze("controls.of","of")," ",je]}),e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8},children:[e.jsx("select",{value:Se,onChange:i=>{const p=Number(i.target.value);Ge?Je.setPageSize(p):(en(p),ft(1))},style:{padding:"2px 6px",border:"1px solid var(--border-color)",borderRadius:4,background:"var(--bg-primary)",color:"var(--text-primary)",font:"inherit",fontSize:"0.8125rem"},children:[5,10,25,50,100].map(i=>e.jsx("option",{value:i,children:i},i))}),e.jsxs("div",{style:{display:"flex",gap:2},children:[e.jsx("button",{className:"nice-pagination__btn",disabled:St<=1,onClick:()=>ft(St-1),children:"‹"}),e.jsxs("span",{style:{padding:"0 8px",display:"flex",alignItems:"center"},children:[St," / ",ut]}),e.jsx("button",{className:"nice-pagination__btn",disabled:St>=ut,onClick:()=>ft(St+1),children:"›"})]})]})]}),me&&!Rt&&e.jsxs("div",{className:"nice-datagrid__status-bar",children:[e.jsxs("span",{children:[ze("controls.totalRows","Total rows"),": ",je]}),x&&ot.size>0&&e.jsxs("span",{children:[ze("controls.selected","Selected"),": ",ot.size]})]}),yt&&Ce&&e.jsx("div",{className:"nice-datagrid__context-menu",style:{position:"fixed",left:yt.x,top:yt.y,zIndex:9999},onClick:i=>i.stopPropagation(),children:Ce.map(i=>e.jsxs("button",{className:"nice-datagrid__context-item",disabled:i.disabled,onClick:()=>{tt?.(i.key,yt.row),Mt(null)},children:[i.icon&&e.jsx("span",{className:"nice-datagrid__context-icon",children:i.icon}),i.label]},i.key))})]})}xn.displayName="NiceDataGrid";const di=Object.freeze(Object.defineProperty({__proto__:null,NiceDataGrid:xn},Symbol.toStringTag,{value:"Module"}));function ui(n,a){return n.filter(r=>a.every(s=>{const c=r[s.field],u=s.value;switch(s.operator){case"eq":return c===u;case"ne":return c!==u;case"gt":return typeof c=="number"&&typeof u=="number"&&c>u;case"gte":return typeof c=="number"&&typeof u=="number"&&c>=u;case"lt":return typeof c=="number"&&typeof u=="number"&&c<u;case"lte":return typeof c=="number"&&typeof u=="number"&&c<=u;case"contains":return String(c).toLowerCase().includes(String(u).toLowerCase());case"startsWith":return String(c).toLowerCase().startsWith(String(u).toLowerCase());case"endsWith":return String(c).toLowerCase().endsWith(String(u).toLowerCase());default:return!0}}))}function mi(n){return n.map(a=>({field:a.field,type:a.dataType||"string",label:typeof a.header=="string"?a.header:a.field}))}function hi(n,a){const{enableAI:r=!0,aiModel:s,enableNLSearch:c=!0,enableInsights:u=!0,nlPlaceholder:f,onAIFilter:l,onInsights:x,showAISearchBar:D=!0,exampleQueries:A=["Show items from last week","Filter by status = active","Orders over $1000",'Names starting with "A"'],columns:G,data:w,...B}=n,[H,M]=t.useState(""),[P,_]=t.useState([]),[N,o]=t.useState([]),[R,$]=t.useState(!1),[K,ee]=t.useState(null),he=t.useRef(null),{t:b}=li.Na(),ne=Te.useNiceAI(),{parseFilter:te,isLoading:ae}=Te.useNaturalLanguageFilter(),V=r&&ne.isConfigured,W=P.length>0?ui(w||[],P):w,g=t.useCallback(async Z=>{if(!V||!c||!Z.trim())return;ee(Z);const ce=mi(G);try{const se=await te(Z,ce);_(se),l?.(Z,se)}catch{_([])}},[V,c,G,te,l]),I=t.useCallback(()=>{_([]),ee(null),M("")},[]),m=t.useCallback(()=>P,[P]),_e=t.useCallback(async()=>{if(!V||!u||!w?.length)return[];try{const Z=await ne.complete([{role:"user",content:`Analyze this data and provide 3-5 key insights. Data sample (${w.length} total rows): ${JSON.stringify(w.slice(0,20))}
11
+
12
+ Columns: ${G.map(ce=>ce.field).join(", ")}
13
+
14
+ Return a JSON array of insight strings. Be specific with numbers and trends.`}],{temperature:.3,maxTokens:500});try{const ce=JSON.parse(Z.content),se=Array.isArray(ce)?ce:[];return o(se),x?.(se),se}catch{return[]}}catch{return[]}},[V,u,w,G,ne,x]),be=Z=>{Z.preventDefault(),H.trim()&&g(H)},T=Z=>{M(Z),g(Z)};return t.useImperativeHandle(a,()=>({applyNLFilter:g,clearAIFilters:I,getAIFilters:m,generateInsights:_e})),e.jsxs("div",{className:"nice-data-grid-ai","data-testid":n["data-testid"],children:[D&&V&&c&&e.jsxs("div",{className:"nice-data-grid-ai__search-bar",children:[e.jsx("div",{className:"nice-data-grid-ai__search-left",children:e.jsx("span",{className:"nice-data-grid-ai__badge",children:"AI"})}),e.jsxs("form",{onSubmit:be,className:"nice-data-grid-ai__search-form",children:[e.jsxs("div",{className:"nice-data-grid-ai__input-wrapper",children:[e.jsx("span",{className:"nice-data-grid-ai__search-icon",children:"🔍"}),e.jsx("input",{ref:he,type:"text",value:H,onChange:Z=>M(Z.target.value),placeholder:f||b("dataGridAI.searchPlaceholder","Search with natural language..."),className:"nice-data-grid-ai__input",disabled:ae}),ae&&e.jsx("span",{className:"nice-data-grid-ai__loading-spinner"}),H&&!ae&&e.jsx("button",{type:"button",className:"nice-data-grid-ai__clear-input",onClick:()=>M(""),children:"✕"})]}),e.jsx("button",{type:"submit",className:"nice-data-grid-ai__search-btn",disabled:ae||!H.trim(),children:ae?b("dataGridAI.searching","Searching..."):b("dataGridAI.search","Search")})]}),u&&e.jsxs("button",{type:"button",className:"nice-data-grid-ai__insights-btn",onClick:()=>{_e(),$(!0)},disabled:ae||!w?.length,title:b("dataGridAI.generateInsights","Generate AI Insights"),children:["💡 ",b("dataGridAI.insights","Insights")]})]}),D&&V&&c&&!K&&A.length>0&&e.jsxs("div",{className:"nice-data-grid-ai__examples",children:[e.jsx("span",{className:"nice-data-grid-ai__examples-label",children:b("dataGridAI.tryAsking","Try asking:")}),e.jsx("div",{className:"nice-data-grid-ai__examples-list",children:A.slice(0,4).map((Z,ce)=>e.jsxs("button",{type:"button",className:"nice-data-grid-ai__example",onClick:()=>T(Z),children:['"',Z,'"']},ce))})]}),K&&P.length>0&&e.jsxs("div",{className:"nice-data-grid-ai__active-filter",children:[e.jsxs("div",{className:"nice-data-grid-ai__filter-info",children:[e.jsx("span",{className:"nice-data-grid-ai__filter-icon",children:"🎯"}),e.jsxs("span",{className:"nice-data-grid-ai__filter-query",children:['"',K,'"']}),e.jsxs("span",{className:"nice-data-grid-ai__filter-count",children:["(",W?.length||0," ",b("dataGridAI.results","results"),")"]})]}),e.jsx("div",{className:"nice-data-grid-ai__filter-badges",children:P.map((Z,ce)=>e.jsxs("span",{className:"nice-data-grid-ai__filter-badge",children:[Z.field," ",Z.operator," ",String(Z.value)]},ce))}),e.jsxs("button",{type:"button",className:"nice-data-grid-ai__clear-filter",onClick:I,children:["✕ ",b("dataGridAI.clearFilter","Clear")]})]}),e.jsx("div",{className:"nice-data-grid-ai__grid-wrapper",children:e.jsx(xn,{columns:G,data:W,...B})}),R&&e.jsxs("div",{className:"nice-data-grid-ai__insights-panel",children:[e.jsxs("div",{className:"nice-data-grid-ai__insights-header",children:[e.jsxs("h4",{children:["💡 ",b("dataGridAI.aiInsights","AI Insights")]}),e.jsx("button",{type:"button",className:"nice-data-grid-ai__insights-close",onClick:()=>$(!1),children:"✕"})]}),e.jsx("div",{className:"nice-data-grid-ai__insights-body",children:ae?e.jsx("div",{className:"nice-data-grid-ai__insights-loading",children:b("dataGridAI.analyzing","Analyzing data...")}):N.length>0?e.jsx("ul",{className:"nice-data-grid-ai__insights-list",children:N.map((Z,ce)=>e.jsxs("li",{className:"nice-data-grid-ai__insight",children:[e.jsx("span",{className:"nice-data-grid-ai__insight-bullet",children:"•"}),Z]},ce))}):e.jsx("div",{className:"nice-data-grid-ai__insights-empty",children:b("dataGridAI.noInsights","Click to generate insights from your data")})}),e.jsx("div",{className:"nice-data-grid-ai__insights-footer",children:e.jsxs("button",{type:"button",className:"nice-data-grid-ai__refresh-insights",onClick:()=>_e(),disabled:ae,children:["🔄 ",b("dataGridAI.refresh","Refresh")]})})]})]})}const pi=t.forwardRef(hi),fi=({items:n,selectedKeys:a=[],onSelectionChange:r,selectionMode:s="none",searchable:c,searchPlaceholder:u,grouped:f,groupField:l="group",reorderable:x,onReorder:D,onItemClick:A,renderItem:G,showCheckboxes:w,loading:B,emptyText:H,size:M="md",bordered:P=!0,swipeActions:_,className:N,style:o,accessMode:R,id:$})=>{if(Te.useNiceAccessMode(R,$)==="hidden")return null;const{t:ee}=Te.useNiceTranslation(),[he,b]=t.useState(""),[ne,te]=t.useState(null),[ae,V]=t.useState(null),W=t.useRef(null),g=t.useMemo(()=>{if(!he)return n;const T=he.toLowerCase();return n.filter(Z=>Z.text.toLowerCase().includes(T))},[n,he]),I=t.useMemo(()=>{if(!f)return null;const T=new Map;return g.forEach(Z=>{const ce=String(Z[l]??"");T.has(ce)||T.set(ce,[]),T.get(ce).push(Z)}),T},[g,f,l]),m=t.useCallback(T=>{r&&(s==="single"?r(a.includes(T)?[]:[T]):s==="multiple"&&r(a.includes(T)?a.filter(Z=>Z!==T):[...a,T]))},[a,s,r]),_e=t.useCallback(T=>{ne!==null&&ne!==T&&D&&D(ne,T),te(null)},[ne,D]),be=(T,Z)=>{const ce=a.includes(T.key),se=ae===T.key;return e.jsxs("li",{className:`nice-list__item ${ce?"nice-list__item--selected":""} ${T.disabled?"nice-list__item--disabled":""} ${se?"nice-list__item--swiped":""}`,onClick:()=>{T.disabled||(m(T.key),A?.(T))},draggable:x,onDragStart:()=>te(Z),onDragOver:xe=>xe.preventDefault(),onDrop:()=>_e(Z),onTouchStart:_?.length?xe=>{W.current={x:xe.touches[0].clientX,key:T.key}}:void 0,onTouchEnd:_?.length?xe=>{if(!W.current)return;const z=xe.changedTouches[0].clientX-W.current.x;z<-50&&W.current.key===T.key?V(T.key):z>50&&V(null),W.current=null}:void 0,role:s!=="none"?"option":void 0,"aria-selected":s!=="none"?ce:void 0,children:[e.jsxs("div",{className:"nice-list__item-content",children:[w&&s!=="none"&&e.jsx("input",{type:"checkbox",checked:ce,readOnly:!0,tabIndex:-1,className:"nice-list__checkbox"}),G?G(T):e.jsxs(e.Fragment,{children:[T.icon&&e.jsx("span",{className:"nice-list__icon",children:T.icon}),e.jsx("span",{className:"nice-list__text",children:T.text}),T.badge&&e.jsx("span",{className:"nice-list__badge",children:T.badge})]})]}),_&&se&&e.jsx("div",{className:"nice-list__swipe-actions",children:_.map(xe=>e.jsx("button",{className:"nice-list__swipe-btn",style:xe.color?{backgroundColor:xe.color}:void 0,onClick:z=>{z.stopPropagation(),xe.onClick(T),V(null)},children:xe.label},xe.key))})]},T.key)};return e.jsxs("div",{className:`nice-list nice-list--${M} ${P?"nice-list--bordered":""} ${N||""}`,style:o,children:[c&&e.jsx("div",{className:"nice-list__search",children:e.jsx("input",{type:"text",value:he,onChange:T=>b(T.target.value),placeholder:u||ee("controls.search","Search...")})}),B?e.jsx("div",{className:"nice-list__loading",children:e.jsx("div",{className:"nice-spinner nice-spinner--sm"})}):g.length===0?e.jsx("div",{className:"nice-list__empty",children:H||ee("controls.noData","No data available")}):I?e.jsx("div",{role:"listbox",children:Array.from(I.entries()).map(([T,Z])=>e.jsxs("div",{className:"nice-list__group",children:[e.jsx("div",{className:"nice-list__group-header",children:T}),e.jsx("ul",{className:"nice-list__items",children:Z.map((ce,se)=>be(ce,se))})]},T))}):e.jsx("ul",{className:"nice-list__items",role:"listbox",children:g.map((T,Z)=>be(T,Z))})]})};function Wn(n){const a=[];if(n.children)for(const r of n.children)a.push(r.key),a.push(...Wn(r));return a}function jn(n,a){if(!n.children||n.children.length===0)return a.has(n.key)?"checked":"unchecked";let r=!0,s=a.has(n.key);for(const c of n.children){const u=jn(c,a);u==="checked"?s=!0:(u==="indeterminate"&&(s=!0),r=!1)}return r&&s?"checked":s?"indeterminate":"unchecked"}const gi=({nodes:n,selectedKeys:a=[],expandedKeys:r,onSelectionChange:s,onExpandedChange:c,selectionMode:u="none",showCheckboxes:f,searchable:l,searchPlaceholder:x,onNodeClick:D,renderNode:A,showLines:G,loading:w,className:B,style:H,accessMode:M,id:P,draggable:_,onNodeDrop:N,onLoadChildren:o,contextMenuItems:R,onContextMenuAction:$,editable:K,onNodeEdit:ee})=>{if(Te.useNiceAccessMode(M,P)==="hidden")return null;const{t:b}=Te.useNiceTranslation(),[ne,te]=t.useState([]),[ae,V]=t.useState(""),[W,g]=t.useState(new Set),[I,m]=t.useState(new Map),[_e,be]=t.useState(null),[T,Z]=t.useState(null),[ce,se]=t.useState(null),[xe,z]=t.useState(""),me=t.useRef(null),Ce=r??ne,tt=t.useMemo(()=>new Set(a),[a]),ve=t.useCallback(async(S,ie)=>{const le=!Ce.includes(S),Q=le?[...Ce,S]:Ce.filter(De=>De!==S);if(c?c(Q):te(Q),le&&o&&!ie.children?.length&&ie.leaf!==!0&&!I.has(S)){g(Ee=>new Set(Ee).add(S));const De=await o(ie);m(Ee=>new Map(Ee).set(S,De)),g(Ee=>{const Ze=new Set(Ee);return Ze.delete(S),Ze})}},[Ce,c,o,I]),we=t.useCallback((S,ie)=>{if(s){if(u==="single")s(a.includes(S)?[]:[S]);else if(u==="multiple")if(f&&ie.children?.length){const le=Wn(ie),Q=[S,...le];if(jn(ie,tt)==="checked")s(a.filter(Ee=>!Q.includes(Ee)));else{const Ee=new Set([...a,...Q]);s(Array.from(Ee))}}else s(a.includes(S)?a.filter(le=>le!==S):[...a,S])}},[a,u,s,f,tt]),Ve=t.useCallback(S=>{if(!ae)return!0;const ie=ae.toLowerCase();return S.text.toLowerCase().includes(ie)?!0:(I.get(S.key)??S.children)?.some(Q=>Ve(Q))??!1},[ae,I]),st=t.useCallback((S,ie)=>{R?.length&&(S.preventDefault(),Z({x:S.clientX,y:S.clientY,node:ie}))},[R]),L=t.useCallback(()=>{ce&&ee&&ee(ce,xe),se(null)},[ce,xe,ee]),Me=(S,ie)=>{if(ae&&!Ve(S))return null;const le=I.get(S.key)??S.children,Q=le&&le.length>0||S.leaf!==!0&&o&&!le?.length,De=Ce.includes(S.key),Ee=tt.has(S.key),Ze=W.has(S.key),ue=f&&u==="multiple"&&le?.length?jn(S,tt):Ee?"checked":"unchecked";return e.jsxs("li",{className:"nice-tree__node",role:"treeitem","aria-expanded":Q?De:void 0,draggable:_&&!S.disabled,onDragStart:_?ye=>{ye.stopPropagation(),be(S.key)}:void 0,onDragOver:_?ye=>{ye.preventDefault(),ye.stopPropagation()}:void 0,onDrop:_&&_e?ye=>{ye.stopPropagation(),N?.(_e,S.key,"inside"),be(null)}:void 0,onDragEnd:_?()=>be(null):void 0,children:[e.jsxs("div",{className:`nice-tree__row ${Ee?"nice-tree__row--selected":""} ${S.disabled?"nice-tree__row--disabled":""} ${_e===S.key?"nice-tree__row--dragging":""}`,style:{paddingLeft:ie*20+4},onClick:()=>{S.disabled||(we(S.key,S),D?.(S))},onContextMenu:ye=>st(ye,S),onDoubleClick:K&&!S.disabled?()=>{se(S.key),z(S.text)}:void 0,children:[e.jsx("span",{className:`nice-tree__toggle ${Q?De?"nice-tree__toggle--expanded":"":"nice-tree__toggle--leaf"}`,onClick:ye=>{ye.stopPropagation(),Q&&ve(S.key,S)},children:Ze?e.jsx("span",{className:"nice-spinner nice-spinner--xs"}):Q?De?"▾":"▸":""}),f&&u!=="none"&&e.jsx("input",{type:"checkbox",checked:ue==="checked",ref:ye=>{ye&&(ye.indeterminate=ue==="indeterminate")},onChange:()=>we(S.key,S),onClick:ye=>ye.stopPropagation(),tabIndex:-1,className:"nice-tree__checkbox"}),ce===S.key?e.jsx("input",{type:"text",className:"nice-tree__edit-input",value:xe,onChange:ye=>z(ye.target.value),onBlur:L,onKeyDown:ye=>{ye.key==="Enter"&&L(),ye.key==="Escape"&&se(null)},autoFocus:!0,onClick:ye=>ye.stopPropagation()}):A?A(S):e.jsxs(e.Fragment,{children:[S.icon&&e.jsx("span",{className:"nice-tree__icon",children:S.icon}),e.jsx("span",{className:"nice-tree__text",children:S.text})]})]}),le&&le.length>0&&De&&e.jsx("ul",{className:"nice-tree__children",role:"group",children:le.map(ye=>Me(ye,ie+1))})]},S.key)};return e.jsxs("div",{className:`nice-tree ${G?"nice-tree--lines":""} ${B||""}`,style:H,ref:me,onClick:()=>Z(null),children:[l&&e.jsx("div",{className:"nice-tree__search",children:e.jsx("input",{type:"text",value:ae,onChange:S=>V(S.target.value),placeholder:x||b("controls.search","Search..."),"aria-label":x||b("controls.search","Search tree")})}),w?e.jsx("div",{className:"nice-tree__loading",children:e.jsx("div",{className:"nice-spinner nice-spinner--sm"})}):e.jsx("ul",{className:"nice-tree__root",role:"tree",children:n.map(S=>Me(S,0))}),T&&R&&e.jsx("div",{className:"nice-tree__context-menu",style:{position:"fixed",top:T.y,left:T.x,zIndex:9999},children:R.map(S=>e.jsxs("div",{className:`nice-tree__context-item ${S.disabled?"nice-tree__context-item--disabled":""}`,onClick:()=>{S.disabled||($?.(S.key,T.node),Z(null))},children:[S.icon&&e.jsx("span",{children:S.icon}),S.label]},S.key))})]})};function _i(n,a,r){const s=new Map,c=[];return n.forEach(u=>{const f={...u,children:[]};s.set(String(f[a]),f)}),n.forEach(u=>{const f=u[r];f!=null&&s.has(String(f))?s.get(String(f)).children.push(s.get(String(u[a]))):c.push(s.get(String(u[a])))}),c}function xi({columns:n,data:a,keyField:r="key",parentKeyField:s="parentKey",expandedKeys:c,onExpandedChange:u,selectedKeys:f=[],onSelectionChange:l,selectable:x,loading:D,emptyText:A,className:G,style:w,accessMode:B,id:H}){if(Te.useNiceAccessMode(B,H)==="hidden")return null;const{t:P}=Te.useNiceTranslation(),[_,N]=t.useState([]),o=c??_,R=t.useMemo(()=>_i(a,r,s),[a,r,s]),$=t.useMemo(()=>n.filter(b=>!b.hidden),[n]),K=t.useCallback(b=>{const ne=o.includes(b)?o.filter(te=>te!==b):[...o,b];u?u(ne):N(ne)},[o,u]),ee=t.useCallback(b=>{l&&l(f.includes(b)?f.filter(ne=>ne!==b):[...f,b])},[f,l]),he=(b,ne)=>{const te=String(b[r]),ae=b.children&&b.children.length>0,V=o.includes(te),W=f.includes(te);return e.jsxs(t.Fragment,{children:[e.jsxs("tr",{className:W?"nice-treelist__row--selected":"",children:[x&&e.jsx("td",{className:"nice-treelist__checkbox",children:e.jsx("input",{type:"checkbox",checked:W,onChange:()=>ee(te)})}),$.map((g,I)=>e.jsxs("td",{style:{textAlign:g.align},children:[I===0&&e.jsx("span",{style:{display:"inline-block",width:ne*20}}),I===0&&e.jsx("span",{className:"nice-treelist__toggle",onClick:()=>ae&&K(te),style:{cursor:ae?"pointer":"default",width:20,display:"inline-block"},children:ae?V?"▾":"▸":""}),g.render?g.render(b[g.field],b,0):String(b[g.field]??"")]},g.field))]}),ae&&V&&b.children.map(g=>he(g,ne+1))]},te)};return e.jsx("div",{className:`nice-treelist ${G||""}`,style:w,children:e.jsxs("table",{children:[e.jsx("thead",{children:e.jsxs("tr",{children:[x&&e.jsx("th",{className:"nice-treelist__checkbox"}),$.map(b=>e.jsx("th",{style:{width:b.width,minWidth:b.minWidth,textAlign:b.align},children:b.header},b.field))]})}),e.jsx("tbody",{children:D?e.jsx("tr",{children:e.jsx("td",{colSpan:$.length+(x?1:0),className:"nice-treelist__empty",children:e.jsx("div",{className:"nice-spinner nice-spinner--md",style:{margin:"0 auto"}})})}):R.length===0?e.jsx("tr",{children:e.jsx("td",{colSpan:$.length+(x?1:0),className:"nice-treelist__empty",children:A||P("controls.noData","No data available")})}):R.map(b=>he(b,0))})]})})}function bi({items:n,renderCard:a,columns:r=3,gap:s=16,searchable:c,searchField:u="text",searchPlaceholder:f,loading:l,emptyText:x,onCardClick:D,className:A,style:G,accessMode:w,id:B}){if(Te.useNiceAccessMode(w,B)==="hidden")return null;const{t:M}=Te.useNiceTranslation(),[P,_]=t.useState(""),N=t.useMemo(()=>{if(!P)return n;const o=P.toLowerCase();return n.filter(R=>String(R[u]??"").toLowerCase().includes(o))},[n,P,u]);return e.jsxs("div",{className:`nice-cardview ${A||""}`,style:G,children:[c&&e.jsx("div",{className:"nice-cardview__search",children:e.jsx("input",{type:"text",value:P,onChange:o=>_(o.target.value),placeholder:f||M("controls.search","Search...")})}),l?e.jsx("div",{className:"nice-cardview__loading",children:e.jsx("div",{className:"nice-spinner nice-spinner--md"})}):N.length===0?e.jsx("div",{className:"nice-cardview__empty",children:x||M("controls.noData","No data available")}):e.jsx("div",{className:"nice-cardview__grid",style:{display:"grid",gridTemplateColumns:`repeat(${r}, 1fr)`,gap:s},children:N.map(o=>e.jsx("div",{className:"nice-cardview__card",onClick:()=>D?.(o),style:D?{cursor:"pointer"}:void 0,children:a(o)},o.key))})]})}function vi({items:n,tileWidth:a=180,tileHeight:r=180,direction:s="horizontal",renderTile:c,onTileClick:u,loading:f,emptyText:l,className:x,style:D}){const{t:A}=Te.useNiceTranslation();return e.jsx("div",{className:`nice-tileview nice-tileview--${s} ${x||""}`,style:D,children:f?e.jsx("div",{className:"nice-tileview__loading",children:e.jsx("div",{className:"nice-spinner nice-spinner--md"})}):n.length===0?e.jsx("div",{className:"nice-tileview__empty",children:l||A("controls.noData","No data available")}):e.jsx("div",{className:"nice-tileview__container",style:{display:"flex",flexWrap:"wrap",gap:8,flexDirection:s==="vertical"?"column":"row"},children:n.map(G=>e.jsx("div",{className:"nice-tileview__tile",style:{width:a,height:r,cursor:u?"pointer":void 0},onClick:()=>u?.(G),children:c?c(G):e.jsxs(e.Fragment,{children:[G.image&&e.jsx("img",{src:G.image,alt:G.text||"",className:"nice-tileview__image"}),G.text&&e.jsx("div",{className:"nice-tileview__label",children:G.text})]})},G.key))})})}const Ln=[{key:"row",label:"Rows"},{key:"column",label:"Columns"},{key:"data",label:"Values"},{key:"filter",label:"Filters"}],Bn=({fields:n,onChange:a,className:r,style:s})=>{const c=n.filter(l=>!l.area),u=(l,x)=>{a(n.map(D=>D.field===l?{...D,area:x}:D))},f=l=>{a(n.map(x=>x.field===l?{...x,area:void 0}:x))};return e.jsx("div",{className:`nice-field-chooser ${r||""}`,style:s,children:e.jsxs("div",{className:"nice-field-chooser__panel",children:[e.jsxs("div",{className:"nice-field-chooser__section",children:[e.jsx("h4",{children:"Available Fields"}),e.jsx("ul",{children:c.map(l=>e.jsxs("li",{className:"nice-field-chooser__item",children:[e.jsx("span",{children:l.caption}),e.jsx("div",{className:"nice-field-chooser__actions",children:Ln.map(x=>e.jsx("button",{type:"button",className:"nice-btn nice-btn--ghost nice-btn--sm",onClick:()=>u(l.field,x.key),children:x.label},x.key))})]},l.field))})]}),Ln.map(l=>{const x=n.filter(D=>D.area===l.key);return e.jsxs("div",{className:"nice-field-chooser__section",children:[e.jsx("h4",{children:l.label}),e.jsx("ul",{children:x.map(D=>e.jsxs("li",{className:"nice-field-chooser__item",children:[e.jsx("span",{children:D.caption}),e.jsx("button",{type:"button",className:"nice-btn nice-btn--ghost nice-btn--sm",onClick:()=>f(D.field),children:"✕"})]},D.field))})]},l.key)})]})})};function yi(n,a){if(n.length===0)return 0;switch(a){case"sum":return n.reduce((r,s)=>r+s,0);case"count":return n.length;case"avg":return n.reduce((r,s)=>r+s,0)/n.length;case"min":return Math.min(...n);case"max":return Math.max(...n);default:return n.reduce((r,s)=>r+s,0)}}function Pn(n,a){return[...new Set(n.map(r=>String(r[a]??"")))].sort()}const Gn=({data:n,fields:a,onFieldsChange:r,showFieldChooser:s,loading:c,emptyText:u,exportCsv:f,exportFilename:l="pivot-export",onDrillThrough:x,className:D,style:A,accessMode:G,id:w})=>{if(Te.useNiceAccessMode(G,w)==="hidden")return null;const{t:H}=Te.useNiceTranslation(),[M,P]=t.useState(a),[_,N]=t.useState(!1),o=t.useMemo(()=>M.filter(V=>V.area==="row"),[M]),R=t.useMemo(()=>M.filter(V=>V.area==="column"),[M]),$=t.useMemo(()=>M.filter(V=>V.area==="data"),[M]),K=t.useMemo(()=>o.length===0?["Total"]:Pn(n,o[0].field),[n,o]),ee=t.useMemo(()=>R.length===0?["Total"]:Pn(n,R[0].field),[n,R]),he=t.useCallback((V,W,g)=>{let I=n;o.length>0&&(I=I.filter(be=>String(be[o[0].field])===V)),R.length>0&&(I=I.filter(be=>String(be[R[0].field])===W));const m=I.map(be=>Number(be[g.field])||0),_e=yi(m,g.summaryType||"sum");return g.format?g.format(_e):_e},[n,o,R]),b=t.useCallback(V=>{P(V),r?.(V)},[r]),ne=t.useCallback((V,W)=>{let g=n;return o.length>0&&(g=g.filter(I=>String(I[o[0].field])===V)),R.length>0&&(g=g.filter(I=>String(I[R[0].field])===W)),g},[n,o,R]),te=t.useCallback((V,W)=>{x&&x(V,W,ne(V,W))},[x,ne]),ae=t.useCallback(()=>{const V=["",...ee.flatMap(be=>$.length>0?$.map(T=>`${be} - ${T.caption}`):[be])],W=K.map(be=>{const T=ee.flatMap(Z=>$.length>0?$.map(ce=>String(he(be,Z,ce))):["—"]);return[be,...T]}),g=[V,...W].map(be=>be.map(T=>`"${String(T).replace(/"/g,'""')}"`).join(",")).join(`
15
+ `),I=new Blob(["\uFEFF"+g],{type:"text/csv;charset=utf-8;"}),m=URL.createObjectURL(I),_e=document.createElement("a");_e.href=m,_e.download=`${l}.csv`,_e.click(),URL.revokeObjectURL(m)},[ee,K,$,he,l]);return e.jsxs("div",{className:`nice-pivotgrid ${D||""}`,style:A,children:[(s||f)&&e.jsxs("div",{className:"nice-pivotgrid__toolbar",children:[s&&e.jsx("button",{type:"button",className:"nice-btn nice-btn--outline nice-btn--sm",onClick:()=>N(!_),children:H("controls.fieldChooser","Field Chooser")}),f&&e.jsx("button",{type:"button",className:"nice-btn nice-btn--sm",onClick:ae,children:"CSV ↓"})]}),_&&e.jsx(Bn,{fields:M,onChange:b}),c?e.jsx("div",{className:"nice-pivotgrid__loading",children:e.jsx("div",{className:"nice-spinner nice-spinner--md"})}):e.jsx("div",{className:"nice-pivotgrid__table-wrap",children:e.jsxs("table",{className:"nice-pivotgrid__table",children:[e.jsxs("thead",{children:[e.jsxs("tr",{children:[e.jsx("th",{children:o.map(V=>V.caption).join(" / ")||""}),ee.map(V=>e.jsx("th",{colSpan:$.length||1,children:V},V))]}),$.length>1&&e.jsxs("tr",{children:[e.jsx("th",{}),ee.map(V=>$.map(W=>e.jsx("th",{children:W.caption},`${V}-${W.field}`)))]})]}),e.jsx("tbody",{children:K.length===0?e.jsx("tr",{children:e.jsx("td",{colSpan:1+ee.length*Math.max($.length,1),className:"nice-pivotgrid__empty",children:u||H("controls.noData","No data available")})}):K.map(V=>e.jsxs("tr",{children:[e.jsx("td",{className:"nice-pivotgrid__row-header",children:V}),ee.map(W=>$.length>0?$.map(g=>e.jsx("td",{className:`nice-pivotgrid__cell ${x?"nice-pivotgrid__cell--clickable":""}`,onClick:x?()=>te(V,W):void 0,children:he(V,W,g)},`${W}-${g.field}`)):e.jsx("td",{className:"nice-pivotgrid__cell",children:"—"},W))]},V))})]})})]})},Ni=Object.freeze(Object.defineProperty({__proto__:null,NicePivotGrid:Gn},Symbol.toStringTag,{value:"Module"})),Vn=t.forwardRef(({columns:n,cards:a,onCardMove:r,onCardClick:s,renderCard:c,onAddCard:u,disabled:f=!1,size:l="md",collapsible:x=!1,viewMode:D,onViewModeChange:A,collapsedColumns:G,onCollapsedColumnsChange:w,cookies:B=!1,localStorage:H=!0,sessionStorage:M=!1,storageMode:P,storageKey:_,className:N,style:o,id:R,...$},K)=>{const{t:ee}=Te.useNiceTranslation(),[he,b]=t.useState(null),[ne,te]=t.useState(null),ae=Te.useStorageAdapter(_??"nice-kanban"),[V,W]=t.useState(()=>ae.get("state")??{collapsedColumns:[],viewMode:"default"}),g=G??V.collapsedColumns??[],I=D??V.viewMode??"default",m=t.useCallback(z=>{W(me=>{const Ce={...me,...z};return ae.set("state",Ce),Ce})},[ae]),_e=t.useCallback(z=>{const me=g.includes(z)?g.filter(Ce=>Ce!==z):[...g,z];w?w(me):m({collapsedColumns:me})},[g,w,m]);t.useCallback(z=>{A?A(z):m({viewMode:z})},[A,m]);const be=t.useCallback(z=>a.filter(me=>me.column===z).sort((me,Ce)=>(me.order??0)-(Ce.order??0)),[a]),T=t.useCallback((z,me)=>{f||(z.dataTransfer.effectAllowed="move",z.dataTransfer.setData("text/plain",String(me.key)),b({cardKey:me.key,fromColumn:me.column}))},[f]),Z=t.useCallback((z,me)=>{z.preventDefault(),z.dataTransfer.dropEffect="move",te({column:me})},[]),ce=t.useCallback(()=>{te(null)},[]),se=t.useCallback((z,me)=>{if(z.preventDefault(),te(null),!he||f)return;const Ce=be(me);r?.(he.cardKey,me,Ce.length),b(null)},[he,f,be,r]),xe=t.useCallback(()=>{b(null),te(null)},[]);return e.jsx("div",{ref:K,id:R,className:`nice-kanban nice-kanban--${l} nice-kanban--${I} ${f?"nice-kanban--disabled":""} ${N||""}`,style:o,...$,children:n.map(z=>{const me=be(z.key),Ce=ne?.column===z.key,tt=z.limit!=null&&me.length>=z.limit,ve=x&&g.includes(z.key);return e.jsxs("div",{className:`nice-kanban__column ${Ce?"nice-kanban__column--dragover":""} ${ve?"nice-kanban__column--collapsed":""}`,onDragOver:we=>!ve&&Z(we,z.key),onDragLeave:ce,onDrop:we=>!ve&&se(we,z.key),children:[e.jsxs("div",{className:"nice-kanban__column-header",style:z.color?{borderTopColor:z.color}:void 0,onClick:x?()=>_e(z.key):void 0,role:x?"button":void 0,tabIndex:x?0:void 0,onKeyDown:x?we=>{(we.key==="Enter"||we.key===" ")&&_e(z.key)}:void 0,children:[x&&e.jsx("span",{className:"nice-kanban__collapse-icon","aria-hidden":"true",children:ve?"▶":"▼"}),e.jsx("span",{className:"nice-kanban__column-title",children:z.title}),e.jsxs("span",{className:"nice-kanban__column-count",children:[me.length,z.limit!=null&&` / ${z.limit}`]})]}),!ve&&e.jsxs("div",{className:"nice-kanban__column-body",children:[me.map(we=>e.jsx("div",{className:`nice-kanban__card nice-kanban__card--${I} ${he?.cardKey===we.key?"nice-kanban__card--dragging":""}`,draggable:!f,onDragStart:Ve=>T(Ve,we),onDragEnd:xe,onClick:()=>s?.(we),role:"article",children:c?c(we):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"nice-kanban__card-title",children:we.title}),I!=="compact"&&we.description&&e.jsx("div",{className:"nice-kanban__card-desc",children:we.description})]})},we.key)),me.length===0&&e.jsx("div",{className:"nice-kanban__empty",children:ee("kanban.empty","No cards")})]}),!ve&&u&&!tt&&e.jsxs("button",{type:"button",className:"nice-kanban__add",onClick:()=>u(z.key),disabled:f,children:["+ ",ee("kanban.addCard","Add card")]})]},z.key)})})});Vn.displayName="NiceKanbanBoard";function It(...n){return n.filter(Boolean).map(a=>typeof a=="object"?Object.entries(a).filter(([,r])=>r).map(([r])=>r).join(" "):a).join(" ")}const ji=50,wi=[10,25,50,100,200],ki=40,Si=10,Ci=768,Mi=500,Di=10;function xt(n,a){return a.split(".").reduce((r,s)=>r?.[s],n)}function rn(n,a,r="pl-PL"){if(n==null)return"—";switch(a.type){case"number":return new Intl.NumberFormat(r,{minimumFractionDigits:a.format?.includes(".")?a.format.split(".")[1].length:0}).format(n);case"currency":return new Intl.NumberFormat(r,{style:"currency",currency:a.currencyCode||"PLN"}).format(n);case"percent":return new Intl.NumberFormat(r,{style:"percent",minimumFractionDigits:0,maximumFractionDigits:2}).format(n/100);case"date":return new Intl.DateTimeFormat(r,{dateStyle:"short"}).format(new Date(n));case"datetime":return new Intl.DateTimeFormat(r,{dateStyle:"short",timeStyle:"short"}).format(new Date(n));case"boolean":return n?"✓":"✗";case"enum":return a.enumOptions?.find(c=>c.value===n)?.label||String(n);default:return String(n)}}function Ii(n,a,r,s){const[c,u]=t.useState(0),{startIndex:f,endIndex:l,totalHeight:x,offsetY:D}=t.useMemo(()=>{const w=n.length*r,B=Math.ceil(a/r),H=Math.max(0,Math.floor(c/r)-s),M=Math.min(n.length,Math.ceil(c/r)+B+s),P=H*r;return{startIndex:H,endIndex:M,totalHeight:w,offsetY:P}},[n.length,a,r,c,s]),A=t.useMemo(()=>n.slice(f,l),[n,f,l]),G=t.useCallback(w=>{u(w.currentTarget.scrollTop)},[]);return{visibleData:A,totalHeight:x,offsetY:D,handleScroll:G,startIndex:f}}function Ei(n,a){const[r,s]=t.useState(()=>{if(n&&typeof window<"u"){const u=localStorage.getItem(`nice-module-grid-${n}`);if(u)return JSON.parse(u)}return a||{}}),c=t.useCallback(u=>{s(f=>{const l={...f,...u};return n&&typeof window<"u"&&localStorage.setItem(`nice-module-grid-${n}`,JSON.stringify(l)),l})},[n]);return[r,c]}function Ai(n){const[a,r]=t.useState(typeof window<"u"&&window.innerWidth<n);return t.useEffect(()=>{if(typeof window>"u")return;const s=()=>r(window.innerWidth<n);return window.addEventListener("resize",s),()=>window.removeEventListener("resize",s)},[n]),a}function Ri({column:n,sort:a,onSort:r,onResize:s,resizable:c,t:u}){const f=t.useRef(null),[l,x]=t.useState(!1),D=t.useCallback(w=>{if(!c||!s)return;w.preventDefault(),x(!0);const B=w.clientX,H=n.width||150,M=_=>{const N=_.clientX-B,o=Math.max(n.minWidth||50,H+N);s(n.field,Math.min(o,n.maxWidth||1/0))},P=()=>{x(!1),document.removeEventListener("mousemove",M),document.removeEventListener("mouseup",P)};document.addEventListener("mousemove",M),document.addEventListener("mouseup",P)},[n,c,s]),A=a?.direction,G=A==="asc"?"↑":A==="desc"?"↓":null;return e.jsxs("div",{className:It("nice-module-grid__header-cell",n.sortable&&"nice-module-grid__header-cell--sortable",l&&"nice-module-grid__header-cell--resizing"),style:{width:n.width==="auto"?"auto":n.width||150,minWidth:n.minWidth,maxWidth:n.maxWidth,textAlign:n.align},onClick:()=>n.sortable&&r?.(n.field),role:"columnheader","aria-sort":A==="asc"?"ascending":A==="desc"?"descending":"none",title:n.headerTooltip,children:[e.jsx("span",{className:"nice-module-grid__header-text",children:n.header}),G&&e.jsx("span",{className:"nice-module-grid__sort-indicator",children:G}),c&&e.jsx("div",{ref:f,className:"nice-module-grid__resize-handle",onMouseDown:D})]})}function $i({column:n,row:a,rowIndex:r,value:s,locale:c="pl-PL",onClick:u}){if(n.render)return e.jsx("div",{className:"nice-module-grid__cell",style:{textAlign:n.align},onClick:u,children:n.render(s,a,r)});if(n.type==="enum"&&n.enumOptions){const f=n.enumOptions.find(l=>l.value===s);if(f)return e.jsx("div",{className:"nice-module-grid__cell",style:{textAlign:n.align},onClick:u,children:e.jsxs("span",{className:It("nice-module-grid__badge",`nice-module-grid__badge--${f.color||"default"}`),children:[f.icon&&e.jsx("span",{className:"nice-module-grid__badge-icon",children:f.icon}),f.label]})})}if(n.type==="progress"){const f=Math.min(100,Math.max(0,Number(s)||0));return e.jsx("div",{className:"nice-module-grid__cell",style:{textAlign:n.align},onClick:u,children:e.jsxs("div",{className:"nice-module-grid__progress",children:[e.jsx("div",{className:It("nice-module-grid__progress-bar",`nice-module-grid__progress-bar--${n.progressColor||"primary"}`),style:{width:`${f}%`}}),e.jsxs("span",{className:"nice-module-grid__progress-text",children:[f,"%"]})]})})}if(n.type==="rating"){const f=n.maxRating||5,l=Number(s)||0;return e.jsx("div",{className:"nice-module-grid__cell",style:{textAlign:n.align},onClick:u,children:e.jsx("span",{className:"nice-module-grid__rating","aria-label":`${l} out of ${f} stars`,children:Array.from({length:f},(x,D)=>e.jsx("span",{className:It("nice-module-grid__star",D<l&&"nice-module-grid__star--filled"),children:"★"},D))})})}if(n.type==="link"&&n.linkTemplate){const f=n.linkTemplate.replace(/\{\{(\w+)\}\}/g,(l,x)=>xt(a,x)||"");return e.jsx("div",{className:"nice-module-grid__cell",style:{textAlign:n.align},onClick:u,children:e.jsx("a",{href:f,target:n.linkNewTab?"_blank":void 0,rel:n.linkNewTab?"noopener noreferrer":void 0,className:"nice-module-grid__link",children:rn(s,n,c)})})}if(n.type==="image"){const l={xs:24,sm:32,md:48,lg:64}[n.imageSize||"sm"];return e.jsx("div",{className:"nice-module-grid__cell",style:{textAlign:n.align},onClick:u,children:s?e.jsx("img",{src:s,alt:"",className:"nice-module-grid__image",style:{width:l,height:l}}):e.jsx("div",{className:"nice-module-grid__image-placeholder",style:{width:l,height:l}})})}return n.type==="avatar"?e.jsx("div",{className:"nice-module-grid__cell",style:{textAlign:n.align},onClick:u,children:s?e.jsx("img",{src:s,alt:"",className:"nice-module-grid__avatar"}):e.jsx("div",{className:"nice-module-grid__avatar-placeholder",children:"?"})}):n.type==="color"?e.jsx("div",{className:"nice-module-grid__cell",style:{textAlign:n.align},onClick:u,children:e.jsx("span",{className:"nice-module-grid__color-swatch",style:{backgroundColor:s||"transparent"},title:s})}):n.type==="boolean"?e.jsx("div",{className:"nice-module-grid__cell",style:{textAlign:n.align||"center"},onClick:u,children:e.jsx("span",{className:It("nice-module-grid__boolean",s&&"nice-module-grid__boolean--true"),children:s?"✓":"✗"})}):e.jsx("div",{className:"nice-module-grid__cell",style:{textAlign:n.align},onClick:u,children:rn(s,n,c)})}function Ti({row:n,index:a,columns:r,primaryField:s,secondaryField:c,customRender:u,selected:f,onClick:l,locale:x="pl-PL",t:D}){if(u)return e.jsx("div",{className:It("nice-module-grid__mobile-card",f&&"nice-module-grid__mobile-card--selected"),onClick:l,children:u(n,a)});const A=r.find(w=>w.field===s)||r[0],G=r.find(w=>w.field===c)||r[1];return e.jsxs("div",{className:It("nice-module-grid__mobile-card",f&&"nice-module-grid__mobile-card--selected"),onClick:l,role:"row","aria-selected":f,children:[e.jsxs("div",{className:"nice-module-grid__mobile-card-header",children:[e.jsx("div",{className:"nice-module-grid__mobile-card-title",children:rn(xt(n,A?.field||""),A,x)}),G&&e.jsx("div",{className:"nice-module-grid__mobile-card-subtitle",children:rn(xt(n,G.field),G,x)})]}),e.jsx("div",{className:"nice-module-grid__mobile-card-body",children:r.filter(w=>!w.hidden&&w.field!==s&&w.field!==c).slice(0,4).map(w=>e.jsxs("div",{className:"nice-module-grid__mobile-card-field",children:[e.jsx("span",{className:"nice-module-grid__mobile-card-label",children:w.header}),e.jsx("span",{className:"nice-module-grid__mobile-card-value",children:rn(xt(n,w.field),w,x)})]},w.field))})]})}function zi({page:n,pageSize:a,totalRows:r,pageSizeOptions:s,onPageChange:c,t:u}){const f=Math.ceil(r/a),l=(n-1)*a+1,x=Math.min(n*a,r);return e.jsxs("div",{className:"nice-module-grid__pagination",role:"navigation","aria-label":u("pagination.ariaLabel","Pagination"),children:[e.jsxs("div",{className:"nice-module-grid__pagination-info",children:[u("pagination.showing","Showing")," ",l,"–",x," ",u("pagination.of","of")," ",r]}),e.jsxs("div",{className:"nice-module-grid__pagination-controls",children:[e.jsx("select",{className:"nice-module-grid__page-size-select",value:a,onChange:D=>c(1,Number(D.target.value)),"aria-label":u("pagination.rowsPerPage","Rows per page"),children:s.map(D=>e.jsx("option",{value:D,children:D},D))}),e.jsx("button",{className:"nice-module-grid__pagination-btn",onClick:()=>c(1,a),disabled:n===1,"aria-label":u("pagination.first","First"),children:"««"}),e.jsx("button",{className:"nice-module-grid__pagination-btn",onClick:()=>c(n-1,a),disabled:n===1,"aria-label":u("pagination.previous","Previous"),children:"«"}),e.jsxs("span",{className:"nice-module-grid__pagination-page",children:[n," / ",f]}),e.jsx("button",{className:"nice-module-grid__pagination-btn",onClick:()=>c(n+1,a),disabled:n>=f,"aria-label":u("pagination.next","Next"),children:"»"}),e.jsx("button",{className:"nice-module-grid__pagination-btn",onClick:()=>c(f,a),disabled:n>=f,"aria-label":u("pagination.last","Last"),children:"»»"})]})]})}function Li({columns:n}){return e.jsx("div",{className:"nice-module-grid__row nice-module-grid__row--skeleton",role:"row",children:n.filter(a=>!a.hidden).map(a=>e.jsx("div",{className:"nice-module-grid__cell nice-module-grid__cell--skeleton",style:{width:a.width==="auto"?"auto":a.width||150},children:e.jsx("div",{className:"nice-module-grid__skeleton-bar"})},a.field))})}function Pi(n,a){const{columns:r,data:s,keyField:c="id",dataSource:u,onFetch:f,sortable:l=!0,sort:x,onSortChange:D,multiSort:A=!1,filterable:G=!1,filter:w,onFilterChange:B,searchText:H,onSearchChange:M,searchPlaceholder:P="moduleGrid.searchPlaceholder",pagination:_=!0,page:N,pageSize:o,pageSizeOptions:R=wi,totalRows:$,onPageChange:K,virtualScroll:ee=!0,rowHeight:he=ki,overscan:b=Si,selectionMode:ne="none",selectedKeys:te,onSelectionChange:ae,columnReorder:V=!0,onColumnOrderChange:W,columnResize:g=!0,onColumnWidthChange:I,groupBy:m,onGroupByChange:_e,groupRowRender:be,expandAllGroups:T=!1,editable:Z=!1,onCellEdit:ce,onRowEdit:se,editMode:xe="cell",contextMenuItems:z,onContextMenuAction:me,exportable:Ce=!0,exportFormats:tt=["csv","excel"],onExport:ve,preferencesKey:we,initialPreferences:Ve,onPreferencesChange:st,density:L="normal",striped:Me=!0,bordered:S=!1,hoverable:ie=!0,loading:le=!1,emptyState:Q,toolbar:De,onRowClick:Ee,onRowDoubleClick:Ze,rowClassName:ue,rowStyle:ye,mobileCardView:Et=!0,mobileBreakpoint:fe=Ci,mobileCardRender:Ct,mobilePrimaryField:k,mobileSecondaryField:Y,moduleId:ge,permissions:nt,size:bt="medium",skeletonLoading:Ne=!0,skeletonRows:Oe=Di,"aria-label":it,"aria-labelledby":mt,"aria-describedby":Be,className:jt,style:Bt,id:At,testId:Gt}=n,{t:ze}=Te.useNiceTranslation();Te.useNiceAccessMode(),Te.useComponentDisplayStyle("table");const Je=Ai(fe),[Ge,Lt]=Ei(we,Ve),Rt=t.useRef(null),Xt=t.useRef(null),[Qt,Ht]=t.useState([]),[ht,cn]=t.useState(),[Yt,Pt]=t.useState(""),[Vt,ct]=t.useState(1),[en,d]=t.useState(o||ji),[h,C]=t.useState(new Set),[O,q]=t.useState([]),[E,U]=t.useState(0),[re,oe]=t.useState(!1),[Ue,Le]=t.useState(new Set),[ke,Pe]=t.useState(null),[$t,vt]=t.useState({}),Xe=x??Qt,yt=w??ht,Mt=H??Yt,Kt=N??Vt,Ft=o??en,wt=te??h,ln=$??E??s?.length??0,Tt=!!(f||u),kt=t.useMemo(()=>{const v=new Set(Ge.hiddenColumns||[]);return r.filter(J=>!J.hidden&&!v.has(J.field))},[r,Ge.hiddenColumns]),Jt=t.useMemo(()=>{if(Tt)return O;if(!s)return[];let v=[...s];if(Mt){const J=Mt.toLowerCase(),je=r.filter(Se=>Se.searchable!==!1).map(Se=>Se.field);v=v.filter(Se=>je.some(ut=>{const Qe=xt(Se,ut);return String(Qe??"").toLowerCase().includes(J)}))}return Xe.length>0&&v.sort((J,je)=>{for(const Se of Xe){const ut=xt(J,Se.field),Qe=xt(je,Se.field),ft=ut<Qe?-1:ut>Qe?1:0;if(ft!==0)return Se.direction==="asc"?ft:-ft}return 0}),v},[Tt,O,s,Mt,Xe,r]),Ot=t.useMemo(()=>{if(Tt||!_)return Jt;const v=(Kt-1)*Ft;return Jt.slice(v,v+Ft)},[Tt,Jt,_,Kt,Ft]),bn=Rt.current?.clientHeight||400,Zt=ee&&Ot.length>Mi,{visibleData:wn,totalHeight:kn,offsetY:tn,handleScroll:pt,startIndex:rt}=Ii(Ot,bn,he,b),at=Zt?wn:Ot,on=t.useCallback(async()=>{if(f){oe(!0);try{const J=await f({page:Kt,pageSize:Ft,sort:Xe,filter:yt,search:Mt});q(J.data),U(J.total)}catch(v){console.error("NiceModuleGrid fetch error:",v)}finally{oe(!1)}}},[f,Kt,Ft,Xe,yt,Mt]);t.useEffect(()=>{Tt&&on()},[Tt,on]);const dn=t.useCallback(v=>{const J=Xe.find(Se=>Se.field===v);let je;J?J.direction==="asc"?je=Xe.map(Se=>Se.field===v?{...Se,direction:"desc"}:Se):je=Xe.filter(Se=>Se.field!==v):je=A?[...Xe,{field:v,direction:"asc"}]:[{field:v,direction:"asc"}],D?D(je):Ht(je)},[Xe,A,D]),un=t.useCallback((v,J)=>{K?K(v,J):(ct(v),d(J))},[K]),Nt=t.useCallback(v=>{M?M(v):Pt(v),K||ct(1)},[M,K]),lt=t.useCallback((v,J)=>{const je=new Set(wt);if(ne==="single"?(je.clear(),je.add(v)):(ne==="multiple"||ne==="checkbox")&&(je.has(v)?je.delete(v):je.add(v)),ae){const Se=Ot.filter(ut=>je.has(String(xt(ut,c))));ae(je,Se)}else C(je)},[wt,ne,ae,Ot,c]),St=t.useCallback((v,J)=>{vt(je=>({...je,[v]:J})),I?.(v,J),Lt({columnWidths:{...Ge.columnWidths,[v]:J}})},[I,Lt,Ge.columnWidths]),ot=t.useCallback((v,J)=>{z?.length&&(v.preventDefault(),Pe({x:v.clientX,y:v.clientY,row:J}))},[z]),dt=t.useCallback(v=>{ke&&me?.(v,ke.row),Pe(null)},[ke,me]),nn=t.useCallback(async v=>{if(ve)await ve(v,{selectedOnly:wt.size>0,columns:kt.map(J=>J.field)});else if(v==="csv"){const J=kt.map(He=>He.header).join(","),je=Ot.map(He=>kt.map(Ut=>JSON.stringify(xt(He,Ut.field)??"")).join(",")),Se=[J,...je].join(`
16
+ `),ut=new Blob([Se],{type:"text/csv;charset=utf-8;"}),Qe=URL.createObjectURL(ut),ft=document.createElement("a");ft.href=Qe,ft.download=`export-${new Date().toISOString().slice(0,10)}.csv`,ft.click(),URL.revokeObjectURL(Qe)}},[ve,wt,kt,Ot,ze]);t.useEffect(()=>{if(!ke)return;const v=()=>Pe(null);return document.addEventListener("click",v),()=>document.removeEventListener("click",v)},[ke]);const an=t.useCallback(v=>{v.key==="Escape"&&Pe(null)},[]),zt=le||re,Ae=!zt&&at.length===0,mn=Je&&Et,qt=It("nice-module-grid",`nice-module-grid--${L}`,`nice-module-grid--${bt}`,Me&&"nice-module-grid--striped",S&&"nice-module-grid--bordered",ie&&"nice-module-grid--hoverable",zt&&"nice-module-grid--loading",mn&&"nice-module-grid--mobile",jt);return e.jsxs("div",{ref:a,id:At,"data-testid":Gt,className:qt,style:Bt,onKeyDown:an,role:"grid","aria-label":it,"aria-labelledby":mt,"aria-describedby":Be,"aria-rowcount":ln,"aria-colcount":kt.length,"aria-busy":zt,children:[e.jsxs("div",{className:"nice-module-grid__toolbar",children:[e.jsx("div",{className:"nice-module-grid__toolbar-search",children:e.jsx("input",{type:"search",className:"nice-module-grid__search-input",placeholder:P,value:Mt,onChange:v=>Nt(v.target.value),"aria-label":ze("moduleGrid.searchAriaLabel","Search")})}),De,Ce&&e.jsx("div",{className:"nice-module-grid__toolbar-export",children:tt.map(v=>e.jsx("button",{className:"nice-module-grid__export-btn",onClick:()=>nn(v),"aria-label":ze(`moduleGrid.export.${v}`,`Export to ${v.toUpperCase()}`),children:v.toUpperCase()},v))})]}),e.jsx("div",{ref:Rt,className:"nice-module-grid__container",onScroll:Zt?pt:void 0,children:mn?e.jsx("div",{className:"nice-module-grid__mobile-list",children:zt&&Ne?Array.from({length:Oe},(v,J)=>e.jsxs("div",{className:"nice-module-grid__mobile-card nice-module-grid__mobile-card--skeleton",children:[e.jsx("div",{className:"nice-module-grid__skeleton-bar",style:{width:"60%",height:20}}),e.jsx("div",{className:"nice-module-grid__skeleton-bar",style:{width:"40%",height:14}}),e.jsx("div",{className:"nice-module-grid__skeleton-bar",style:{width:"80%",height:14}})]},J)):Ae?e.jsxs("div",{className:"nice-module-grid__empty",children:[Q?.icon&&e.jsx("div",{className:"nice-module-grid__empty-icon",children:Q.icon}),e.jsx("div",{className:"nice-module-grid__empty-title",children:Q?.title||ze("moduleGrid.noData","No data")}),Q?.description&&e.jsx("div",{className:"nice-module-grid__empty-description",children:Q.description}),Q?.action&&e.jsxs("button",{className:"nice-module-grid__empty-action",onClick:Q.action.onClick,children:[Q.action.icon,Q.action.label]})]}):at.map((v,J)=>{const je=String(xt(v,c));return e.jsx(Ti,{row:v,index:rt+J,columns:kt,primaryField:k,secondaryField:Y,customRender:Ct,selected:wt.has(je),onClick:()=>{ne!=="none"&&lt(je,v),Ee?.(v,rt+J)},t:ze},je)})}):e.jsxs("div",{ref:Xt,className:"nice-module-grid__table",children:[e.jsxs("div",{className:"nice-module-grid__header",role:"row",children:[ne==="checkbox"&&e.jsx("div",{className:"nice-module-grid__header-cell nice-module-grid__header-cell--checkbox",children:e.jsx("input",{type:"checkbox",checked:wt.size>0&&wt.size===at.length,onChange:()=>{if(wt.size===at.length)ae?.(new Set,[]),C(new Set);else{const v=new Set(at.map(J=>String(xt(J,c))));ae?.(v,at),C(v)}},"aria-label":ze("moduleGrid.selectAll","Select all")})}),kt.map(v=>e.jsx(Ri,{column:{...v,width:$t[v.field]||v.width},sort:Xe.find(J=>J.field===v.field),onSort:l?dn:void 0,onResize:g?St:void 0,resizable:g,t:ze},v.field))]}),e.jsx("div",{className:"nice-module-grid__body",style:Zt?{height:kn,position:"relative"}:void 0,children:zt&&Ne?Array.from({length:Oe},(v,J)=>e.jsx(Li,{columns:kt},J)):Ae?e.jsxs("div",{className:"nice-module-grid__empty",children:[Q?.icon&&e.jsx("div",{className:"nice-module-grid__empty-icon",children:Q.icon}),e.jsx("div",{className:"nice-module-grid__empty-title",children:Q?.title||ze("moduleGrid.noData","No data")}),Q?.description&&e.jsx("div",{className:"nice-module-grid__empty-description",children:Q.description}),Q?.action&&e.jsxs("button",{className:"nice-module-grid__empty-action",onClick:Q.action.onClick,children:[Q.action.icon,Q.action.label]})]}):e.jsx("div",{style:Zt?{transform:`translateY(${tn}px)`}:void 0,children:at.map((v,J)=>{const je=String(xt(v,c)),Se=rt+J,ut=wt.has(je),Qe=typeof ue=="function"?ue(v,Se):ue,ft=typeof ye=="function"?ye(v,Se):ye;return e.jsxs("div",{className:It("nice-module-grid__row",ut&&"nice-module-grid__row--selected",Qe),style:{...ft,height:he},role:"row","aria-rowindex":Se+1,"aria-selected":ut,onClick:()=>{ne!=="none"&&lt(je,v),Ee?.(v,Se)},onDoubleClick:()=>Ze?.(v,Se),onContextMenu:He=>ot(He,v),children:[ne==="checkbox"&&e.jsx("div",{className:"nice-module-grid__cell nice-module-grid__cell--checkbox",children:e.jsx("input",{type:"checkbox",checked:ut,onChange:()=>lt(je,v),onClick:He=>He.stopPropagation(),"aria-label":ze("moduleGrid.selectRow","Select row")})}),kt.map(He=>e.jsx($i,{column:{...He,width:$t[He.field]||He.width},row:v,rowIndex:Se,value:xt(v,He.field)},He.field))]},je)})})})]})}),_&&ln>0&&e.jsx(zi,{page:Kt,pageSize:Ft,totalRows:Tt?E:Jt.length,pageSizeOptions:R,onPageChange:un,t:ze}),ke&&z&&e.jsx("div",{className:"nice-module-grid__context-menu",style:{left:ke.x,top:ke.y},role:"menu",children:z.filter(v=>typeof v.hidden=="function"?!v.hidden(ke.row):!v.hidden).map(v=>{if(v.divider)return e.jsx("div",{className:"nice-module-grid__context-menu-divider"},v.key);const J=typeof v.disabled=="function"?v.disabled(ke.row):v.disabled;return e.jsxs("button",{className:It("nice-module-grid__context-menu-item",v.danger&&"nice-module-grid__context-menu-item--danger",J&&"nice-module-grid__context-menu-item--disabled"),onClick:()=>{J||(v.onClick?.(ke.row),dt(v.key))},disabled:J,role:"menuitem",children:[v.icon&&e.jsx("span",{className:"nice-module-grid__context-menu-icon",children:v.icon}),v.label]},v.key)})}),zt&&!Ne&&e.jsx("div",{className:"nice-module-grid__loading-overlay",children:e.jsx("div",{className:"nice-module-grid__spinner","aria-label":ze("moduleGrid.loading","Loading")})})]})}const Fi=t.forwardRef(Pi),Oi=`
17
+ .nice-reconciliation {
18
+ display: flex;
19
+ flex-direction: column;
20
+ height: 100%;
21
+ background: var(--nice-bg-primary, #ffffff);
22
+ border: 1px solid var(--nice-border-color, #e5e7eb);
23
+ border-radius: 0.5rem;
24
+ overflow: hidden;
25
+ }
26
+
27
+ .nice-reconciliation__toolbar {
28
+ display: flex;
29
+ align-items: center;
30
+ gap: 0.75rem;
31
+ padding: 0.75rem 1rem;
32
+ background: var(--nice-bg-secondary, #f9fafb);
33
+ border-bottom: 1px solid var(--nice-border-color, #e5e7eb);
34
+ flex-wrap: wrap;
35
+ }
36
+
37
+ .nice-reconciliation__toolbar-group {
38
+ display: flex;
39
+ align-items: center;
40
+ gap: 0.5rem;
41
+ }
42
+
43
+ .nice-reconciliation__toolbar-group--end {
44
+ margin-inline-start: auto;
45
+ }
46
+
47
+ .nice-reconciliation__btn {
48
+ display: inline-flex;
49
+ align-items: center;
50
+ gap: 0.375rem;
51
+ padding: 0.375rem 0.75rem;
52
+ font-size: 0.8125rem;
53
+ font-weight: 500;
54
+ border-radius: 0.375rem;
55
+ cursor: pointer;
56
+ transition: all 0.15s ease;
57
+ border: 1px solid var(--nice-border-color, #d1d5db);
58
+ background: var(--nice-bg-primary, #ffffff);
59
+ color: var(--nice-text-primary);
60
+ }
61
+
62
+ .nice-reconciliation__btn:hover {
63
+ background: var(--nice-bg-hover, #f3f4f6);
64
+ }
65
+
66
+ .nice-reconciliation__btn--primary {
67
+ background: var(--nice-primary, #3b82f6);
68
+ border-color: var(--nice-primary, #3b82f6);
69
+ color: white;
70
+ }
71
+
72
+ .nice-reconciliation__btn--primary:hover {
73
+ background: var(--nice-primary-dark, #2563eb);
74
+ }
75
+
76
+ .nice-reconciliation__btn--success {
77
+ background: var(--nice-success, #10b981);
78
+ border-color: var(--nice-success, #10b981);
79
+ color: white;
80
+ }
81
+
82
+ .nice-reconciliation__btn:disabled {
83
+ opacity: 0.5;
84
+ cursor: not-allowed;
85
+ }
86
+
87
+ .nice-reconciliation__content {
88
+ display: flex;
89
+ flex: 1;
90
+ overflow: hidden;
91
+ }
92
+
93
+ .nice-reconciliation--vertical .nice-reconciliation__content {
94
+ flex-direction: column;
95
+ }
96
+
97
+ .nice-reconciliation__panel {
98
+ flex: 1;
99
+ display: flex;
100
+ flex-direction: column;
101
+ min-width: 0;
102
+ min-height: 0;
103
+ overflow: hidden;
104
+ }
105
+
106
+ .nice-reconciliation__panel--statements {
107
+ border-inline-end: 1px solid var(--nice-border-color, #e5e7eb);
108
+ }
109
+
110
+ .nice-reconciliation--vertical .nice-reconciliation__panel--statements {
111
+ border-inline-end: none;
112
+ border-block-end: 1px solid var(--nice-border-color, #e5e7eb);
113
+ }
114
+
115
+ .nice-reconciliation__panel-header {
116
+ display: flex;
117
+ align-items: center;
118
+ justify-content: space-between;
119
+ padding: 0.75rem 1rem;
120
+ background: var(--nice-bg-secondary, #f9fafb);
121
+ border-bottom: 1px solid var(--nice-border-color, #e5e7eb);
122
+ }
123
+
124
+ .nice-reconciliation__panel-title {
125
+ font-weight: 600;
126
+ font-size: 0.875rem;
127
+ color: var(--nice-text-primary);
128
+ display: flex;
129
+ align-items: center;
130
+ gap: 0.5rem;
131
+ }
132
+
133
+ .nice-reconciliation__panel-badge {
134
+ font-size: 0.75rem;
135
+ font-weight: 500;
136
+ padding: 0.125rem 0.5rem;
137
+ border-radius: 9999px;
138
+ background: var(--nice-bg-tertiary, #e5e7eb);
139
+ color: var(--nice-text-secondary);
140
+ }
141
+
142
+ .nice-reconciliation__panel-content {
143
+ flex: 1;
144
+ overflow: auto;
145
+ }
146
+
147
+ .nice-reconciliation__row {
148
+ display: flex;
149
+ align-items: center;
150
+ gap: 0.75rem;
151
+ padding: 0.625rem 1rem;
152
+ border-bottom: 1px solid var(--nice-border-divider, #f3f4f6);
153
+ cursor: pointer;
154
+ user-select: none;
155
+ transition: background 0.1s ease;
156
+ }
157
+
158
+ .nice-reconciliation__row:hover {
159
+ background: var(--nice-bg-hover, rgba(0, 0, 0, 0.02));
160
+ }
161
+
162
+ .nice-reconciliation__row--selected {
163
+ background: var(--nice-primary-light, rgba(59, 130, 246, 0.1));
164
+ }
165
+
166
+ .nice-reconciliation__row--dragging {
167
+ opacity: 0.6;
168
+ background: var(--nice-primary-light, rgba(59, 130, 246, 0.15));
169
+ }
170
+
171
+ .nice-reconciliation__row--drop-target {
172
+ background: var(--nice-success-light, rgba(16, 185, 129, 0.15));
173
+ box-shadow: inset 0 0 0 2px var(--nice-success, #10b981);
174
+ }
175
+
176
+ .nice-reconciliation__row--matched {
177
+ background: var(--nice-success-light, rgba(16, 185, 129, 0.08));
178
+ }
179
+
180
+ .nice-reconciliation__row--partial {
181
+ background: var(--nice-warning-light, rgba(245, 158, 11, 0.08));
182
+ }
183
+
184
+ .nice-reconciliation__row--unmatched {
185
+ background: transparent;
186
+ }
187
+
188
+ .nice-reconciliation__row--excluded {
189
+ opacity: 0.5;
190
+ background: var(--nice-bg-disabled, #f3f4f6);
191
+ }
192
+
193
+ .nice-reconciliation__status {
194
+ width: 0.5rem;
195
+ height: 0.5rem;
196
+ border-radius: 50%;
197
+ flex-shrink: 0;
198
+ }
199
+
200
+ .nice-reconciliation__status--matched {
201
+ background: var(--nice-success, #10b981);
202
+ }
203
+
204
+ .nice-reconciliation__status--partial {
205
+ background: var(--nice-warning, #f59e0b);
206
+ }
207
+
208
+ .nice-reconciliation__status--unmatched {
209
+ background: var(--nice-danger, #ef4444);
210
+ }
211
+
212
+ .nice-reconciliation__status--excluded {
213
+ background: var(--nice-text-disabled, #9ca3af);
214
+ }
215
+
216
+ .nice-reconciliation__row-main {
217
+ flex: 1;
218
+ min-width: 0;
219
+ }
220
+
221
+ .nice-reconciliation__row-date {
222
+ font-size: 0.75rem;
223
+ color: var(--nice-text-secondary);
224
+ margin-bottom: 0.125rem;
225
+ }
226
+
227
+ .nice-reconciliation__row-description {
228
+ font-size: 0.8125rem;
229
+ color: var(--nice-text-primary);
230
+ white-space: nowrap;
231
+ overflow: hidden;
232
+ text-overflow: ellipsis;
233
+ }
234
+
235
+ .nice-reconciliation__row-counterparty {
236
+ font-size: 0.75rem;
237
+ color: var(--nice-text-tertiary);
238
+ white-space: nowrap;
239
+ overflow: hidden;
240
+ text-overflow: ellipsis;
241
+ }
242
+
243
+ .nice-reconciliation__row-amount {
244
+ font-size: 0.875rem;
245
+ font-weight: 600;
246
+ font-variant-numeric: tabular-nums;
247
+ white-space: nowrap;
248
+ }
249
+
250
+ .nice-reconciliation__row-amount--positive {
251
+ color: var(--nice-success, #10b981);
252
+ }
253
+
254
+ .nice-reconciliation__row-amount--negative {
255
+ color: var(--nice-danger, #ef4444);
256
+ }
257
+
258
+ .nice-reconciliation__confidence {
259
+ display: flex;
260
+ align-items: center;
261
+ gap: 0.25rem;
262
+ font-size: 0.6875rem;
263
+ padding: 0.125rem 0.375rem;
264
+ border-radius: 0.25rem;
265
+ }
266
+
267
+ .nice-reconciliation__confidence--high {
268
+ background: var(--nice-success-light, rgba(16, 185, 129, 0.15));
269
+ color: var(--nice-success-dark, #059669);
270
+ }
271
+
272
+ .nice-reconciliation__confidence--medium {
273
+ background: var(--nice-warning-light, rgba(245, 158, 11, 0.15));
274
+ color: var(--nice-warning-dark, #d97706);
275
+ }
276
+
277
+ .nice-reconciliation__confidence--low {
278
+ background: var(--nice-danger-light, rgba(239, 68, 68, 0.15));
279
+ color: var(--nice-danger-dark, #dc2626);
280
+ }
281
+
282
+ .nice-reconciliation__empty {
283
+ display: flex;
284
+ flex-direction: column;
285
+ align-items: center;
286
+ justify-content: center;
287
+ padding: 3rem 1rem;
288
+ color: var(--nice-text-secondary);
289
+ text-align: center;
290
+ }
291
+
292
+ .nice-reconciliation__empty-icon {
293
+ font-size: 2.5rem;
294
+ margin-bottom: 0.75rem;
295
+ opacity: 0.5;
296
+ }
297
+
298
+ .nice-reconciliation__summary {
299
+ display: flex;
300
+ align-items: center;
301
+ gap: 1.5rem;
302
+ padding: 0.75rem 1rem;
303
+ background: var(--nice-bg-secondary, #f9fafb);
304
+ border-top: 1px solid var(--nice-border-color, #e5e7eb);
305
+ font-size: 0.8125rem;
306
+ flex-wrap: wrap;
307
+ }
308
+
309
+ .nice-reconciliation__summary-item {
310
+ display: flex;
311
+ align-items: center;
312
+ gap: 0.375rem;
313
+ }
314
+
315
+ .nice-reconciliation__summary-label {
316
+ color: var(--nice-text-secondary);
317
+ }
318
+
319
+ .nice-reconciliation__summary-value {
320
+ font-weight: 600;
321
+ color: var(--nice-text-primary);
322
+ font-variant-numeric: tabular-nums;
323
+ }
324
+
325
+ .nice-reconciliation__summary-value--success {
326
+ color: var(--nice-success, #10b981);
327
+ }
328
+
329
+ .nice-reconciliation__summary-value--warning {
330
+ color: var(--nice-warning, #f59e0b);
331
+ }
332
+
333
+ .nice-reconciliation__summary-value--danger {
334
+ color: var(--nice-danger, #ef4444);
335
+ }
336
+
337
+ .nice-reconciliation__resizer {
338
+ width: 4px;
339
+ background: var(--nice-border-color, #e5e7eb);
340
+ cursor: col-resize;
341
+ transition: background 0.15s ease;
342
+ }
343
+
344
+ .nice-reconciliation__resizer:hover {
345
+ background: var(--nice-primary, #3b82f6);
346
+ }
347
+
348
+ .nice-reconciliation--vertical .nice-reconciliation__resizer {
349
+ width: 100%;
350
+ height: 4px;
351
+ cursor: row-resize;
352
+ }
353
+
354
+ .nice-reconciliation__suggestions {
355
+ padding: 0.75rem 1rem;
356
+ background: var(--nice-info-light, rgba(59, 130, 246, 0.08));
357
+ border-bottom: 1px solid var(--nice-info, #3b82f6);
358
+ }
359
+
360
+ .nice-reconciliation__suggestion {
361
+ display: flex;
362
+ align-items: center;
363
+ gap: 0.75rem;
364
+ padding: 0.5rem;
365
+ background: var(--nice-bg-primary, #ffffff);
366
+ border-radius: 0.375rem;
367
+ margin-bottom: 0.5rem;
368
+ }
369
+
370
+ .nice-reconciliation__suggestion:last-child {
371
+ margin-bottom: 0;
372
+ }
373
+
374
+ /* Dark mode */
375
+ .dark .nice-reconciliation {
376
+ background: var(--nice-bg-primary-dark, #111827);
377
+ border-color: var(--nice-border-color-dark, #374151);
378
+ }
379
+
380
+ .dark .nice-reconciliation__toolbar,
381
+ .dark .nice-reconciliation__panel-header,
382
+ .dark .nice-reconciliation__summary {
383
+ background: var(--nice-bg-secondary-dark, #1f2937);
384
+ border-color: var(--nice-border-color-dark, #374151);
385
+ }
386
+
387
+ .dark .nice-reconciliation__row--selected {
388
+ background: rgba(59, 130, 246, 0.2);
389
+ }
390
+
391
+ /* RTL support */
392
+ [dir="rtl"] .nice-reconciliation__row-amount {
393
+ direction: ltr;
394
+ text-align: left;
395
+ }
396
+
397
+ /* Detail Panel */
398
+ .nice-reconciliation__detail-panel {
399
+ position: fixed;
400
+ inset-inline-end: 0;
401
+ top: 0;
402
+ bottom: 0;
403
+ width: 420px;
404
+ max-width: 90vw;
405
+ background: var(--nice-bg-primary, #ffffff);
406
+ box-shadow: -4px 0 24px rgba(0, 0, 0, 0.15);
407
+ z-index: 1000;
408
+ display: flex;
409
+ flex-direction: column;
410
+ transform: translateX(100%);
411
+ transition: transform 0.25s ease-out;
412
+ }
413
+
414
+ .nice-reconciliation__detail-panel--open {
415
+ transform: translateX(0);
416
+ }
417
+
418
+ .nice-reconciliation__detail-header {
419
+ display: flex;
420
+ align-items: center;
421
+ justify-content: space-between;
422
+ padding: 1rem;
423
+ border-bottom: 1px solid var(--nice-border-color, #e5e7eb);
424
+ background: var(--nice-bg-secondary, #f9fafb);
425
+ }
426
+
427
+ .nice-reconciliation__detail-title {
428
+ font-weight: 600;
429
+ font-size: 1rem;
430
+ color: var(--nice-text-primary);
431
+ display: flex;
432
+ align-items: center;
433
+ gap: 0.5rem;
434
+ }
435
+
436
+ .nice-reconciliation__detail-close {
437
+ width: 2rem;
438
+ height: 2rem;
439
+ display: flex;
440
+ align-items: center;
441
+ justify-content: center;
442
+ background: transparent;
443
+ border: none;
444
+ cursor: pointer;
445
+ font-size: 1.25rem;
446
+ color: var(--nice-text-secondary);
447
+ border-radius: 0.375rem;
448
+ transition: all 0.15s ease;
449
+ }
450
+
451
+ .nice-reconciliation__detail-close:hover {
452
+ background: var(--nice-bg-hover, #f3f4f6);
453
+ color: var(--nice-text-primary);
454
+ }
455
+
456
+ .nice-reconciliation__detail-content {
457
+ flex: 1;
458
+ overflow: auto;
459
+ padding: 1rem;
460
+ }
461
+
462
+ .nice-reconciliation__detail-section {
463
+ margin-bottom: 1.5rem;
464
+ }
465
+
466
+ .nice-reconciliation__detail-section-title {
467
+ font-weight: 600;
468
+ font-size: 0.875rem;
469
+ color: var(--nice-text-primary);
470
+ margin-bottom: 0.75rem;
471
+ display: flex;
472
+ align-items: center;
473
+ gap: 0.375rem;
474
+ }
475
+
476
+ .nice-reconciliation__detail-row {
477
+ display: flex;
478
+ justify-content: space-between;
479
+ align-items: flex-start;
480
+ padding: 0.5rem 0;
481
+ border-bottom: 1px solid var(--nice-border-divider, #f3f4f6);
482
+ }
483
+
484
+ .nice-reconciliation__detail-row:last-child {
485
+ border-bottom: none;
486
+ }
487
+
488
+ .nice-reconciliation__detail-label {
489
+ font-size: 0.8125rem;
490
+ color: var(--nice-text-secondary);
491
+ }
492
+
493
+ .nice-reconciliation__detail-value {
494
+ font-size: 0.8125rem;
495
+ font-weight: 500;
496
+ color: var(--nice-text-primary);
497
+ text-align: end;
498
+ max-width: 60%;
499
+ word-break: break-word;
500
+ }
501
+
502
+ .nice-reconciliation__detail-divider {
503
+ height: 1px;
504
+ background: var(--nice-border-color, #e5e7eb);
505
+ margin: 1rem 0;
506
+ }
507
+
508
+ .nice-reconciliation__detail-match-info {
509
+ padding: 0.75rem;
510
+ background: var(--nice-success-light, rgba(16, 185, 129, 0.08));
511
+ border-radius: 0.375rem;
512
+ margin-bottom: 1rem;
513
+ }
514
+
515
+ .nice-reconciliation__detail-match-header {
516
+ display: flex;
517
+ align-items: center;
518
+ gap: 0.5rem;
519
+ font-weight: 600;
520
+ font-size: 0.8125rem;
521
+ color: var(--nice-success-dark, #059669);
522
+ margin-bottom: 0.5rem;
523
+ }
524
+
525
+ .nice-reconciliation__detail-match-detail {
526
+ font-size: 0.75rem;
527
+ color: var(--nice-text-secondary);
528
+ }
529
+
530
+ .nice-reconciliation__detail-side-by-side {
531
+ display: grid;
532
+ grid-template-columns: 1fr 1fr;
533
+ gap: 1rem;
534
+ padding: 0.75rem;
535
+ background: var(--nice-bg-secondary, #f9fafb);
536
+ border-radius: 0.375rem;
537
+ margin-top: 0.75rem;
538
+ }
539
+
540
+ .nice-reconciliation__detail-side-item {
541
+ padding: 0.5rem;
542
+ background: var(--nice-bg-primary, #ffffff);
543
+ border-radius: 0.25rem;
544
+ border: 1px solid var(--nice-border-color, #e5e7eb);
545
+ }
546
+
547
+ .nice-reconciliation__detail-side-label {
548
+ font-size: 0.6875rem;
549
+ font-weight: 500;
550
+ text-transform: uppercase;
551
+ color: var(--nice-text-tertiary);
552
+ margin-bottom: 0.375rem;
553
+ }
554
+
555
+ .nice-reconciliation__detail-side-amount {
556
+ font-size: 1.125rem;
557
+ font-weight: 600;
558
+ font-variant-numeric: tabular-nums;
559
+ }
560
+
561
+ .nice-reconciliation__detail-backdrop {
562
+ position: fixed;
563
+ inset: 0;
564
+ background: rgba(0, 0, 0, 0.3);
565
+ z-index: 999;
566
+ opacity: 0;
567
+ pointer-events: none;
568
+ transition: opacity 0.2s ease;
569
+ }
570
+
571
+ .nice-reconciliation__detail-backdrop--visible {
572
+ opacity: 1;
573
+ pointer-events: auto;
574
+ }
575
+
576
+ .dark .nice-reconciliation__detail-panel {
577
+ background: var(--nice-bg-primary-dark, #111827);
578
+ box-shadow: -4px 0 24px rgba(0, 0, 0, 0.4);
579
+ }
580
+
581
+ .dark .nice-reconciliation__detail-header {
582
+ background: var(--nice-bg-secondary-dark, #1f2937);
583
+ border-color: var(--nice-border-color-dark, #374151);
584
+ }
585
+
586
+ .dark .nice-reconciliation__detail-side-by-side {
587
+ background: var(--nice-bg-secondary-dark, #1f2937);
588
+ }
589
+
590
+ .dark .nice-reconciliation__detail-side-item {
591
+ background: var(--nice-bg-primary-dark, #111827);
592
+ border-color: var(--nice-border-color-dark, #374151);
593
+ }
594
+ `;function Dt(n,a="PLN",r="pl-PL"){return new Intl.NumberFormat(r,{style:"currency",currency:a,minimumFractionDigits:2,maximumFractionDigits:2}).format(n)}function _n(n,a="pl-PL"){return n?(typeof n=="string"?new Date(n):n).toLocaleDateString(a,{year:"numeric",month:"2-digit",day:"2-digit"}):"-"}function Ui(n){return n>=80?"high":n>=50?"medium":"low"}function Wi(){return`match-${Date.now()}-${Math.random().toString(36).slice(2,9)}`}function Bi({item:n,isSelected:a,isDragging:r,isDropTarget:s,suggestion:c,currency:u,locale:f,onSelect:l,onDoubleClick:x,onDragStart:D,onDragEnd:A,onDrop:G,disabled:w}){const B=n.status??"unmatched",H=c?.confidence??n.confidence,M=_=>{_.dataTransfer.setData("text/plain",n.id),_.dataTransfer.setData("source","statement"),_.dataTransfer.effectAllowed="move",D()},P=_=>{_.dataTransfer.types.includes("source")&&_.dataTransfer.getData("source")!=="statement"&&_.preventDefault()};return e.jsxs("div",{className:`nice-reconciliation__row nice-reconciliation__row--${B} ${a?"nice-reconciliation__row--selected":""} ${r?"nice-reconciliation__row--dragging":""} ${s?"nice-reconciliation__row--drop-target":""}`,draggable:!w&&B!=="matched",onDragStart:M,onDragEnd:A,onDragOver:P,onDrop:G,onClick:l,onDoubleClick:x,role:"row","aria-selected":a,tabIndex:0,children:[e.jsx("span",{className:`nice-reconciliation__status nice-reconciliation__status--${B}`}),e.jsxs("div",{className:"nice-reconciliation__row-main",children:[e.jsx("div",{className:"nice-reconciliation__row-date",children:_n(n.date,f)}),e.jsx("div",{className:"nice-reconciliation__row-description",title:n.description,children:n.description}),n.counterparty&&e.jsx("div",{className:"nice-reconciliation__row-counterparty",children:n.counterparty})]}),H!=null&&e.jsxs("span",{className:`nice-reconciliation__confidence nice-reconciliation__confidence--${Ui(H)}`,children:[H,"%"]}),e.jsx("span",{className:`nice-reconciliation__row-amount ${n.amount>=0?"nice-reconciliation__row-amount--positive":"nice-reconciliation__row-amount--negative"}`,children:Dt(n.amount,u,f)})]})}function Gi({item:n,isSelected:a,isDragging:r,isDropTarget:s,currency:c,locale:u,onSelect:f,onDoubleClick:l,onDragStart:x,onDragEnd:D,onDrop:A,disabled:G}){const w=n.status??"unmatched",B=M=>{M.dataTransfer.setData("text/plain",n.id),M.dataTransfer.setData("source","entry"),M.dataTransfer.effectAllowed="move",x()},H=M=>{M.dataTransfer.types.includes("source")&&M.dataTransfer.getData("source")!=="entry"&&M.preventDefault()};return e.jsxs("div",{className:`nice-reconciliation__row nice-reconciliation__row--${w} ${a?"nice-reconciliation__row--selected":""} ${r?"nice-reconciliation__row--dragging":""} ${s?"nice-reconciliation__row--drop-target":""}`,draggable:!G&&w!=="matched",onDragStart:B,onDragEnd:D,onDragOver:H,onDrop:A,onClick:f,onDoubleClick:l,role:"row","aria-selected":a,tabIndex:0,children:[e.jsx("span",{className:`nice-reconciliation__status nice-reconciliation__status--${w}`}),e.jsxs("div",{className:"nice-reconciliation__row-main",children:[e.jsxs("div",{className:"nice-reconciliation__row-date",children:[_n(n.date,u),n.documentNumber&&e.jsxs("span",{children:[" · ",n.documentNumber]})]}),e.jsx("div",{className:"nice-reconciliation__row-description",title:n.description,children:n.description}),n.partyName&&e.jsx("div",{className:"nice-reconciliation__row-counterparty",children:n.partyName})]}),e.jsx("span",{className:`nice-reconciliation__row-amount ${n.amount>=0?"nice-reconciliation__row-amount--positive":"nice-reconciliation__row-amount--negative"}`,children:Dt(n.amount,c,u)})]})}const Vi=t.forwardRef(function(a,r){const{statements:s,entries:c,matches:u,defaultMatches:f=[],suggestions:l=[],config:x={},statementPanelConfig:D,entryPanelConfig:A,onMatch:G,onUnmatch:w,onBatchAction:B,onFilterChange:H,onRequestSuggestions:M,onSelectionChange:P,onComplete:_,size:N="medium",showToolbar:o=!0,showFilters:R=!0,showSummary:$=!0,showSuggestions:K=!0,layout:ee="horizontal",enableDragDrop:he=!0,enableKeyboard:b=!0,enableDetailPanel:ne=!0,loading:te=!1,disabled:ae=!1,readOnly:V=!1,locale:W="pl-PL",labels:g={},className:I,style:m}=a,_e=x.currency??"PLN",[be,T]=t.useState(f),[Z,ce]=t.useState(new Set),[se,xe]=t.useState(new Set),[z,me]=t.useState(null),[Ce,tt]=t.useState(null),[ve,we]=t.useState({}),[Ve,st]=t.useState(null),L=u??be,Me=t.useRef(null),S=t.useRef(null);t.useEffect(()=>{const k="nice-reconciliation-styles";if(!document.getElementById(k)){const Y=document.createElement("style");Y.id=k,Y.textContent=Oi,document.head.appendChild(Y)}},[]);const ie=t.useMemo(()=>{const k=new Set;return L.forEach(Y=>Y.statementIds.forEach(ge=>k.add(ge))),k},[L]),le=t.useMemo(()=>{const k=new Set;return L.forEach(Y=>Y.entryIds.forEach(ge=>k.add(ge))),k},[L]),Q=t.useMemo(()=>{const k=s.filter(Ne=>!ie.has(Ne.id)),Y=c.filter(Ne=>!le.has(Ne.id)),ge=s.reduce((Ne,Oe)=>Ne+Oe.amount,0),nt=c.reduce((Ne,Oe)=>Ne+Oe.amount,0),bt=s.filter(Ne=>ie.has(Ne.id)).reduce((Ne,Oe)=>Ne+Oe.amount,0);return{totalStatements:s.length,totalEntries:c.length,matchedStatements:s.length-k.length,matchedEntries:c.length-Y.length,unmatchedStatements:k.length,unmatchedEntries:Y.length,statementTotal:ge,entryTotal:nt,matchedAmount:bt,unmatchedStatementAmount:k.reduce((Ne,Oe)=>Ne+Oe.amount,0),unmatchedEntryAmount:Y.reduce((Ne,Oe)=>Ne+Oe.amount,0),difference:ge-nt,matchPercentage:s.length>0?Math.round((s.length-k.length)/s.length*100):0,matchCount:L.length,partialMatchCount:L.filter(Ne=>Ne.status==="partial").length,pendingSuggestions:l.length}},[s,c,L,l,ie,le]),De=t.useCallback((k,Y)=>{const ge=s.filter(Be=>k.includes(Be.id)),nt=c.filter(Be=>Y.includes(Be.id));if(ge.length===0||nt.length===0)return null;const bt=ge.reduce((Be,jt)=>Be+jt.amount,0),Ne=nt.reduce((Be,jt)=>Be+jt.amount,0),Oe=Math.abs(bt-Ne),it=x.amountTolerance??.01,mt={id:Wi(),statementIds:k,entryIds:Y,status:Oe<=it?"matched":"partial",statementTotal:bt,entryTotal:Ne,difference:Oe,confidence:Oe<=it?100:Math.max(0,100-Oe/Math.max(Math.abs(bt),1)*100),matchedBy:"user",matchedAt:new Date};return u||T(Be=>[...Be,mt]),G?.(mt,ge,nt),ce(new Set),xe(new Set),mt},[s,c,x.amountTolerance,u,G]),Ee=t.useCallback(k=>{const Y=L.find(ge=>ge.id===k);Y&&(u||T(ge=>ge.filter(nt=>nt.id!==k)),w?.(k,Y.statementIds,Y.entryIds))},[L,u,w]),Ze=t.useCallback(async()=>{const k=[],Y=new Set(ie),ge=new Set(le),nt=x.amountTolerance??.01,bt=x.dateTolerance??3;for(const Ne of s){if(Y.has(Ne.id))continue;const Oe=c.filter(it=>{if(ge.has(it.id)||Math.abs(Ne.amount-it.amount)>nt)return!1;const Be=new Date(Ne.date),jt=new Date(it.date);return!(Math.abs(Be.getTime()-jt.getTime())/(1e3*60*60*24)>bt)});if(Oe.length===1){const it=Oe[0],mt=De([Ne.id],[it.id]);mt&&(k.push(mt),Y.add(Ne.id),ge.add(it.id))}}return B?.("autoMatch",k),k},[s,c,ie,le,x,De,B]),ue=t.useCallback((k,Y,ge,nt)=>{nt!==Y&&(nt==="statement"?De([ge],[k]):De([k],[ge]),me(null),tt(null))},[De]),ye=t.useCallback(()=>{const k=Array.from(Z),Y=Array.from(se);k.length>0&&Y.length>0&&De(k,Y)},[Z,se,De]);t.useEffect(()=>{P?.(Array.from(Z),Array.from(se))},[Z,se,P]),t.useImperativeHandle(r,()=>({getMatches:()=>L,getUnmatchedStatements:()=>s.filter(k=>!ie.has(k.id)),getUnmatchedEntries:()=>c.filter(k=>!le.has(k.id)),createMatch:De,removeMatch:Ee,autoMatch:Ze,getSuggestions:async k=>M?M(k??s.filter(Y=>!ie.has(Y.id)).map(Y=>Y.id)):[],applySuggestion:k=>De([k.statementId],k.entryIds),approveAll:()=>{B?.("approveAll",L)},clearAll:()=>{u||T([]),B?.("clearAll",[])},exportMatched:k=>{B?.("exportMatched",L)},getSummary:()=>Q,reset:()=>{u||T([]),ce(new Set),xe(new Set),we({})},focusStatements:()=>Me.current?.focus(),focusEntries:()=>S.current?.focus()}),[L,s,c,ie,le,De,Ee,Ze,M,B,u,Q]);const Et=t.useMemo(()=>s.filter(k=>{if(ve.status&&ve.status.length>0){const Y=ie.has(k.id)?"matched":"unmatched";if(!ve.status.includes(Y))return!1}if(ve.searchText){const Y=ve.searchText.toLowerCase();if(!k.description.toLowerCase().includes(Y)&&!k.counterparty?.toLowerCase().includes(Y))return!1}return!0}),[s,ve,ie]),fe=t.useMemo(()=>c.filter(k=>{if(ve.status&&ve.status.length>0){const Y=le.has(k.id)?"matched":"unmatched";if(!ve.status.includes(Y))return!1}if(ve.searchText){const Y=ve.searchText.toLowerCase();if(!k.description.toLowerCase().includes(Y)&&!k.partyName?.toLowerCase().includes(Y))return!1}return!0}),[c,ve,le]),Ct=Z.size>0&&se.size>0&&!V&&!ae;return e.jsxs("div",{className:`nice-reconciliation nice-reconciliation--${ee} ${I??""}`,style:m,children:[o&&e.jsxs("div",{className:"nice-reconciliation__toolbar",children:[e.jsxs("div",{className:"nice-reconciliation__toolbar-group",children:[e.jsxs("button",{type:"button",className:"nice-reconciliation__btn nice-reconciliation__btn--primary",onClick:Ze,disabled:ae||V||te,children:["⚡ ",g.autoMatch??"Auto-match"]}),e.jsx("button",{type:"button",className:"nice-reconciliation__btn nice-reconciliation__btn--success",onClick:ye,disabled:!Ct||te,children:"🔗 Match Selected"})]}),e.jsxs("div",{className:"nice-reconciliation__toolbar-group nice-reconciliation__toolbar-group--end",children:[e.jsxs("button",{type:"button",className:"nice-reconciliation__btn",onClick:()=>B?.("approveAll",L),disabled:L.length===0||ae||te,children:["✓ ",g.approveAll??"Approve All"]}),e.jsxs("button",{type:"button",className:"nice-reconciliation__btn",onClick:()=>{u||T([]),B?.("clearAll",[])},disabled:L.length===0||ae||V||te,children:["✕ ",g.clearAll??"Clear All"]})]})]}),e.jsxs("div",{className:"nice-reconciliation__content",children:[e.jsxs("div",{className:"nice-reconciliation__panel nice-reconciliation__panel--statements",children:[e.jsx("div",{className:"nice-reconciliation__panel-header",children:e.jsxs("span",{className:"nice-reconciliation__panel-title",children:["📄 ",g.statementPanelTitle??"Bank Statement",e.jsx("span",{className:"nice-reconciliation__panel-badge",children:Et.length})]})}),e.jsx("div",{ref:Me,className:"nice-reconciliation__panel-content",role:"listbox","aria-multiselectable":"true",children:Et.length===0?e.jsxs("div",{className:"nice-reconciliation__empty",children:[e.jsx("div",{className:"nice-reconciliation__empty-icon",children:"📋"}),g.noStatements??"No statement items"]}):Et.map(k=>e.jsx(Bi,{item:{...k,status:ie.has(k.id)?"matched":"unmatched"},isSelected:Z.has(k.id),isDragging:z===k.id,isDropTarget:Ce===k.id,suggestion:l.find(Y=>Y.statementId===k.id),currency:_e,locale:W,onSelect:()=>{ae||ce(Y=>{const ge=new Set(Y);return ge.has(k.id)?ge.delete(k.id):ge.add(k.id),ge})},onDoubleClick:()=>ne&&st({type:"statement",id:k.id}),onDragStart:()=>me(k.id),onDragEnd:()=>{me(null),tt(null)},onDrop:()=>{z&&z!==k.id&&ue(k.id,"statement",z,"entry")},disabled:ae||V||!he},k.id))})]}),e.jsxs("div",{className:"nice-reconciliation__panel nice-reconciliation__panel--entries",children:[e.jsx("div",{className:"nice-reconciliation__panel-header",children:e.jsxs("span",{className:"nice-reconciliation__panel-title",children:["📒 ",g.entryPanelTitle??"Book Entries",e.jsx("span",{className:"nice-reconciliation__panel-badge",children:fe.length})]})}),e.jsx("div",{ref:S,className:"nice-reconciliation__panel-content",role:"listbox","aria-multiselectable":"true",children:fe.length===0?e.jsxs("div",{className:"nice-reconciliation__empty",children:[e.jsx("div",{className:"nice-reconciliation__empty-icon",children:"📚"}),g.noEntries??"No book entries"]}):fe.map(k=>e.jsx(Gi,{item:{...k,status:le.has(k.id)?"matched":"unmatched"},isSelected:se.has(k.id),isDragging:z===k.id,isDropTarget:Ce===k.id,currency:_e,locale:W,onSelect:()=>{ae||xe(Y=>{const ge=new Set(Y);return ge.has(k.id)?ge.delete(k.id):ge.add(k.id),ge})},onDoubleClick:()=>ne&&st({type:"entry",id:k.id}),onDragStart:()=>me(k.id),onDragEnd:()=>{me(null),tt(null)},onDrop:()=>{z&&z!==k.id&&ue(k.id,"entry",z,"statement")},disabled:ae||V||!he},k.id))})]})]}),$&&e.jsxs("div",{className:"nice-reconciliation__summary",children:[e.jsxs("div",{className:"nice-reconciliation__summary-item",children:[e.jsx("span",{className:"nice-reconciliation__summary-label",children:"Matched:"}),e.jsxs("span",{className:"nice-reconciliation__summary-value nice-reconciliation__summary-value--success",children:[Q.matchedStatements,"/",Q.totalStatements," (",Q.matchPercentage,"%)"]})]}),e.jsxs("div",{className:"nice-reconciliation__summary-item",children:[e.jsx("span",{className:"nice-reconciliation__summary-label",children:"Matched Amount:"}),e.jsx("span",{className:"nice-reconciliation__summary-value",children:Dt(Q.matchedAmount,_e,W)})]}),e.jsxs("div",{className:"nice-reconciliation__summary-item",children:[e.jsx("span",{className:"nice-reconciliation__summary-label",children:"Unmatched:"}),e.jsx("span",{className:"nice-reconciliation__summary-value nice-reconciliation__summary-value--warning",children:Dt(Q.unmatchedStatementAmount,_e,W)})]}),e.jsxs("div",{className:"nice-reconciliation__summary-item",children:[e.jsx("span",{className:"nice-reconciliation__summary-label",children:"Difference:"}),e.jsx("span",{className:`nice-reconciliation__summary-value ${Math.abs(Q.difference)<.01?"nice-reconciliation__summary-value--success":"nice-reconciliation__summary-value--danger"}`,children:Dt(Q.difference,_e,W)})]})]}),ne&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:`nice-reconciliation__detail-backdrop ${Ve?"nice-reconciliation__detail-backdrop--visible":""}`,onClick:()=>st(null)}),e.jsx("div",{className:`nice-reconciliation__detail-panel ${Ve?"nice-reconciliation__detail-panel--open":""}`,children:Ve&&e.jsx(Ki,{type:Ve.type,id:Ve.id,statements:s,entries:c,matches:L,currency:_e,locale:W,labels:g,onClose:()=>st(null)})})]})]})});function Ki({type:n,id:a,statements:r,entries:s,matches:c,currency:u,locale:f,labels:l,onClose:x}){const D=n==="statement"?r.find(M=>M.id===a):s.find(M=>M.id===a),A=n==="statement"?c.find(M=>M.statementIds.includes(a)):c.find(M=>M.entryIds.includes(a)),G=A?n==="statement"?s.filter(M=>A.entryIds.includes(M.id)):r.filter(M=>A.statementIds.includes(M.id)):[];if(!D)return null;const w=n==="statement",B=w?D:null,H=w?null:D;return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"nice-reconciliation__detail-header",children:[e.jsxs("span",{className:"nice-reconciliation__detail-title",children:[w?"📄":"📒"," ",w?l.statementDetails??"Transaction Details":l.entryDetails??"Entry Details"]}),e.jsx("button",{type:"button",className:"nice-reconciliation__detail-close",onClick:x,"aria-label":"Close",children:"✕"})]}),e.jsxs("div",{className:"nice-reconciliation__detail-content",children:[A&&e.jsxs("div",{className:"nice-reconciliation__detail-match-info",children:[e.jsxs("div",{className:"nice-reconciliation__detail-match-header",children:["✓ ",l.matchedWith??"Matched"," (",A.confidence?.toFixed(0)??100,"% confidence)"]}),e.jsx("div",{className:"nice-reconciliation__detail-match-detail",children:A.matchedBy==="ai"?l.matchedByAI??"Matched automatically by AI":l.matchedManually??"Matched manually"}),e.jsxs("div",{className:"nice-reconciliation__detail-side-by-side",children:[e.jsxs("div",{className:"nice-reconciliation__detail-side-item",children:[e.jsx("div",{className:"nice-reconciliation__detail-side-label",children:l.statementTotal??"Statement"}),e.jsx("div",{className:`nice-reconciliation__detail-side-amount ${A.statementTotal>=0?"nice-reconciliation__row-amount--positive":"nice-reconciliation__row-amount--negative"}`,children:Dt(A.statementTotal,u,f)})]}),e.jsxs("div",{className:"nice-reconciliation__detail-side-item",children:[e.jsx("div",{className:"nice-reconciliation__detail-side-label",children:l.entryTotal??"Book Entry"}),e.jsx("div",{className:`nice-reconciliation__detail-side-amount ${A.entryTotal>=0?"nice-reconciliation__row-amount--positive":"nice-reconciliation__row-amount--negative"}`,children:Dt(A.entryTotal,u,f)})]})]}),A.difference>.01&&e.jsxs("div",{className:"nice-reconciliation__detail-row",style:{marginTop:"0.5rem",borderBottom:"none"},children:[e.jsxs("span",{className:"nice-reconciliation__detail-label",children:[l.difference??"Difference",":"]}),e.jsx("span",{className:"nice-reconciliation__detail-value",style:{color:"var(--nice-warning, #f59e0b)"},children:Dt(A.difference,u,f)})]})]}),e.jsxs("div",{className:"nice-reconciliation__detail-section",children:[e.jsxs("div",{className:"nice-reconciliation__detail-section-title",children:["📋"," ",w?l.transactionInfo??"Transaction Information":l.entryInfo??"Entry Information"]}),e.jsxs("div",{className:"nice-reconciliation__detail-row",children:[e.jsxs("span",{className:"nice-reconciliation__detail-label",children:[l.date??"Date",":"]}),e.jsx("span",{className:"nice-reconciliation__detail-value",children:_n(D.date,f)})]}),e.jsxs("div",{className:"nice-reconciliation__detail-row",children:[e.jsxs("span",{className:"nice-reconciliation__detail-label",children:[l.description??"Description",":"]}),e.jsx("span",{className:"nice-reconciliation__detail-value",children:D.description})]}),e.jsxs("div",{className:"nice-reconciliation__detail-row",children:[e.jsxs("span",{className:"nice-reconciliation__detail-label",children:[l.amount??"Amount",":"]}),e.jsx("span",{className:`nice-reconciliation__detail-value ${D.amount>=0?"nice-reconciliation__row-amount--positive":"nice-reconciliation__row-amount--negative"}`,children:Dt(D.amount,u,f)})]}),w&&B?.counterparty&&e.jsxs("div",{className:"nice-reconciliation__detail-row",children:[e.jsxs("span",{className:"nice-reconciliation__detail-label",children:[l.counterparty??"Counterparty",":"]}),e.jsx("span",{className:"nice-reconciliation__detail-value",children:B.counterparty})]}),w&&B?.counterpartyAccount&&e.jsxs("div",{className:"nice-reconciliation__detail-row",children:[e.jsxs("span",{className:"nice-reconciliation__detail-label",children:[l.accountNumber??"Account",":"]}),e.jsx("span",{className:"nice-reconciliation__detail-value",style:{fontFamily:"monospace",fontSize:"0.75rem"},children:B.counterpartyAccount})]}),!w&&H?.partyName&&e.jsxs("div",{className:"nice-reconciliation__detail-row",children:[e.jsxs("span",{className:"nice-reconciliation__detail-label",children:[l.party??"Party",":"]}),e.jsx("span",{className:"nice-reconciliation__detail-value",children:H.partyName})]}),!w&&H?.documentNumber&&e.jsxs("div",{className:"nice-reconciliation__detail-row",children:[e.jsxs("span",{className:"nice-reconciliation__detail-label",children:[l.documentRef??"Document Ref",":"]}),e.jsx("span",{className:"nice-reconciliation__detail-value",children:H.documentNumber})]}),w&&B?.referenceNumber&&e.jsxs("div",{className:"nice-reconciliation__detail-row",children:[e.jsxs("span",{className:"nice-reconciliation__detail-label",children:[l.reference??"Reference",":"]}),e.jsx("span",{className:"nice-reconciliation__detail-value",children:B.referenceNumber})]})]}),G.length>0&&e.jsxs("div",{className:"nice-reconciliation__detail-section",children:[e.jsxs("div",{className:"nice-reconciliation__detail-section-title",children:["🔗"," ",w?l.matchedEntries??"Matched Entries":l.matchedStatements??"Matched Statements"]}),G.map(M=>e.jsxs("div",{style:{padding:"0.5rem",background:"var(--nice-bg-secondary, #f9fafb)",borderRadius:"0.25rem",marginBottom:"0.5rem",fontSize:"0.8125rem"},children:[e.jsx("div",{style:{fontWeight:500,marginBottom:"0.25rem"},children:M.description}),e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",color:"var(--nice-text-secondary)"},children:[e.jsx("span",{children:_n(M.transactionDate??M.postingDate,f)}),e.jsx("span",{style:{fontWeight:600,color:M.amount>=0?"var(--nice-success)":"var(--nice-danger)"},children:Dt(M.amount,u,f)})]})]},M.id))]})]})]})}function Zi(n,a,r){const s=new Map,c=[];n.forEach(f=>s.set(String(f[a]),{data:f,children:[],key:String(f[a]),depth:0})),n.forEach(f=>{const l=f[r],x=s.get(String(f[a]));if(l!=null&&l!==""&&s.has(String(l))){const D=s.get(String(l));x.depth=D.depth+1,D.children.push(x)}else c.push(x)});const u=(f,l)=>{f.forEach(x=>{x.depth=l,u(x.children,l+1)})};return u(c,0),c}function Kn(n,a,r,s=0){return n.map(c=>({data:c,key:String(c[r]),depth:s,children:Array.isArray(c[a])?Kn(c[a],a,r,s+1):[]}))}function qi(n){const a=[],r=s=>{s.forEach(c=>{a.push(c.key),r(c.children)})};return r(n),a}function Xi(n,a){const r=[],s=c=>{c.forEach(u=>{r.push(u),u.children.length>0&&a.has(u.key)&&s(u.children)})};return s(n),r}function Zn(n,a,r){return!a||!r?n:[...n].sort((c,u)=>{const f=c.data[a]??"",l=u.data[a]??"",x=typeof f=="number"&&typeof l=="number"?f-l:String(f).localeCompare(String(l));return r==="desc"?-x:x}).map(c=>({...c,children:Zn(c.children,a,r)}))}function Qi({columns:n,data:a,keyField:r="id",parentKeyField:s="parentId",nested:c=!1,childrenField:u="children",expandedKeys:f,onExpandedChange:l,defaultExpandAll:x=!1,sortable:D=!0,sortField:A,sortDirection:G,onSort:w,selectable:B,selectedKeys:H,onSelectionChange:M,searchable:P,searchPlaceholder:_,striped:N,compact:o,loading:R,emptyText:$,toolbar:K,onRowClick:ee,className:he,style:b}){const{t:ne}=Te.useNiceTranslation(),te=t.useMemo(()=>c?Kn(a,u,r):Zi(a,r,s),[a,r,s,c,u]),ae=t.useMemo(()=>qi(te),[te]),[V,W]=t.useState(()=>x?new Set(ae):new Set),g=f?new Set(f):V,[I,m]=t.useState({field:"",dir:null}),[_e,be]=t.useState(new Set),[T,Z]=t.useState(""),ce=A??I.field,se=G??I.dir,xe=H??_e,z=t.useMemo(()=>n.filter(L=>!L.hidden),[n]),me=t.useCallback(L=>{const Me=ce===L?se==="asc"?"desc":se==="desc"?null:"asc":"asc";w?w(L,Me):m({field:L,dir:Me})},[ce,se,w]),Ce=t.useCallback(L=>{const Me=new Set(g);Me.has(L)?Me.delete(L):Me.add(L),l?l([...Me]):W(Me)},[g,l]),tt=t.useCallback(L=>{const Me=new Set(xe);Me.has(L)?Me.delete(L):Me.add(L),M?M(Me):be(Me)},[xe,M]),ve=t.useMemo(()=>{if(!T)return te;const L=T.toLowerCase(),Me=S=>S.reduce((ie,le)=>{const Q=Me(le.children);return(z.some(Ee=>String(le.data[Ee.field]??"").toLowerCase().includes(L))||Q.length>0)&&ie.push({...le,children:Q}),ie},[]);return Me(te)},[te,T,z]),we=t.useMemo(()=>Zn(ve,ce,se),[ve,ce,se]),Ve=t.useMemo(()=>Xi(we,g),[we,g]),st=({field:L})=>ce!==L||!se?e.jsx("span",{className:"nice-table__sort-icon",style:{opacity:.3},children:"↕"}):e.jsx("span",{className:"nice-table__sort-icon",children:se==="asc"?"↑":"↓"});return e.jsxs("div",{className:`nice-treegrid nice-datagrid ${he||""}`,style:b,children:[(P||K)&&e.jsxs("div",{className:"nice-datagrid__toolbar",children:[P&&e.jsx("div",{className:"nice-datagrid__search",children:e.jsx("input",{type:"text",value:T,onChange:L=>Z(L.target.value),placeholder:_||ne("controls.search","Search...")})}),K]}),e.jsx("div",{className:"nice-datagrid__table-wrap",children:e.jsxs("table",{className:`${N?"nice-table--striped":""} ${o?"nice-table--compact":""}`,children:[e.jsx("thead",{children:e.jsxs("tr",{children:[B&&e.jsx("th",{className:"nice-datagrid__checkbox",style:{width:36}}),z.map(L=>e.jsxs("th",{style:{width:L.width,minWidth:L.minWidth,textAlign:L.align},className:D&&L.sortable!==!1?"nice-datagrid__th--sortable":void 0,onClick:()=>D&&L.sortable!==!1&&me(L.field),children:[L.header,D&&L.sortable!==!1&&e.jsx(st,{field:L.field})]},L.field))]})}),e.jsx("tbody",{children:R?e.jsx("tr",{children:e.jsx("td",{colSpan:z.length+(B?1:0),className:"nice-datagrid__empty",children:e.jsx("div",{className:"nice-spinner nice-spinner--md",style:{margin:"0 auto"}})})}):Ve.length===0?e.jsx("tr",{children:e.jsx("td",{colSpan:z.length+(B?1:0),className:"nice-datagrid__empty",children:$||ne("controls.noData","No data available")})}):Ve.map((L,Me)=>{const S=xe.has(L.key),ie=L.children.length>0,le=g.has(L.key);return e.jsxs("tr",{className:S?"nice-datagrid__row--selected":void 0,onClick:()=>ee?.(L.data),style:ee?{cursor:"pointer"}:void 0,children:[B&&e.jsx("td",{className:"nice-datagrid__checkbox",onClick:Q=>Q.stopPropagation(),children:e.jsx("input",{type:"checkbox",checked:S,onChange:()=>tt(L.key),"aria-label":`Select row ${L.key}`})}),z.map((Q,De)=>e.jsxs("td",{style:{textAlign:Q.align},children:[De===0&&e.jsxs(e.Fragment,{children:[e.jsx("span",{style:{display:"inline-block",width:L.depth*20}}),e.jsx("button",{className:`nice-treegrid__toggle ${ie?"":"nice-treegrid__toggle--leaf"}`,onClick:Ee=>{Ee.stopPropagation(),ie&&Ce(L.key)},tabIndex:ie?0:-1,"aria-expanded":ie?le:void 0,"aria-label":ie?le?"Collapse":"Expand":void 0,children:ie?le?"▾":"▸":""})]}),Q.render?Q.render(L.data[Q.field],L.data,Me):String(L.data[Q.field]??"")]},Q.field))]},L.key)})})]})})]})}function qn(n){let a="",r=n;for(;r>=0;)a=String.fromCharCode(65+r%26)+a,r=Math.floor(r/26)-1;return a}function Ie(n,a){return`${qn(a)}${n+1}`}function et(n){const a=n.match(/^([A-Z]+)(\d+)$/);if(!a)return null;let r=0;for(let s=0;s<a[1].length;s++)r=r*26+(a[1].charCodeAt(s)-64);return{row:parseInt(a[2],10)-1,col:r-1}}function Yi(n,a,r=new Set){const s=n.startsWith("=")?n.slice(1).trim():n,c=(P,_)=>{if(!P||!_)return[];const N=[];for(let o=P.row;o<=_.row;o++)for(let R=P.col;R<=_.col;R++){const $=Ye(Ie(o,R),a,new Set(r));typeof $=="number"&&N.push($)}return N},u=(P,_)=>{if(!P||!_)return[];const N=[];for(let o=P.row;o<=_.row;o++)for(let R=P.col;R<=_.col;R++)N.push(Ye(Ie(o,R),a,new Set(r)));return N},f=s.match(/^(\w+)\(([A-Z]+\d+):([A-Z]+\d+)\)$/i);if(f){const P=f[1].toUpperCase(),_=et(f[2].toUpperCase()),N=et(f[3].toUpperCase());switch(P){case"SUM":return c(_,N).reduce((R,$)=>R+$,0);case"AVG":case"AVERAGE":{const o=c(_,N);return o.length>0?o.reduce((R,$)=>R+$,0)/o.length:0}case"COUNT":return c(_,N).length;case"COUNTA":return u(_,N).filter(o=>o!==null&&o!=="").length;case"COUNTBLANK":return u(_,N).filter(o=>o===null||o==="").length;case"MIN":{const o=c(_,N);return o.length?Math.min(...o):0}case"MAX":{const o=c(_,N);return o.length?Math.max(...o):0}case"MEDIAN":{const o=c(_,N).sort(($,K)=>$-K);if(!o.length)return 0;const R=Math.floor(o.length/2);return o.length%2?o[R]:(o[R-1]+o[R])/2}case"STDEV":{const o=c(_,N);if(o.length<2)return 0;const R=o.reduce(($,K)=>$+K,0)/o.length;return Math.sqrt(o.reduce(($,K)=>$+(K-R)**2,0)/(o.length-1))}case"PRODUCT":{const o=c(_,N);return o.length?o.reduce((R,$)=>R*$,1):0}}}const l=s.match(/^(SUMIF|COUNTIF)\(([A-Z]+\d+):([A-Z]+\d+)\s*,\s*"?([^"]*)"?\)$/i);if(l){const P=l[1].toUpperCase(),_=et(l[2].toUpperCase()),N=et(l[3].toUpperCase()),o=l[4];if(_&&N){let R=0;for(let $=_.row;$<=N.row;$++)for(let K=_.col;K<=N.col;K++){const ee=Ye(Ie($,K),a,new Set(r));(o.startsWith(">")?Number(ee)>Number(o.slice(1)):o.startsWith("<")?Number(ee)<Number(o.slice(1)):String(ee)===o||typeof ee=="number"&&ee===Number(o))&&(R+=P==="SUMIF"?typeof ee=="number"?ee:0:1)}return R}}const x=s.match(/^IF\(([^,]+),\s*([^,]+),\s*([^)]+)\)$/i);if(x){const P=x[1].trim(),_=x[2].trim(),N=x[3].trim(),o=P.match(/^([A-Z]+\d+)\s*([><=!]+)\s*(\S+)$/i);let R=!1;if(o){const ee=Ye(o[1].toUpperCase(),a,new Set(r)),he=isNaN(Number(o[3]))?o[3].replace(/^"|"$/g,""):Number(o[3]),b=o[2],ne=typeof ee=="number"?ee:Number(ee)||0,te=typeof he=="number"?he:Number(he)||0;switch(b){case">":R=ne>te;break;case"<":R=ne<te;break;case">=":R=ne>=te;break;case"<=":R=ne<=te;break;case"=":case"==":R=ne===te;break;case"<>":case"!=":R=ne!==te;break}}const $=R?_:N;if(et($.toUpperCase()))return Ye($.toUpperCase(),a,new Set(r));const K=Number($);return isNaN(K)?$.replace(/^"|"$/g,""):K}const D=s.match(/^CONCAT\((.+)\)$/i);if(D)return D[1].split(",").map(_=>_.trim()).map(_=>{if(_.startsWith('"')&&_.endsWith('"'))return _.slice(1,-1);if(et(_.toUpperCase())){const o=Ye(_.toUpperCase(),a,new Set(r));return o!==null?String(o):""}return _}).join("");const A=s.match(/^VLOOKUP\(([^,]+),\s*([A-Z]+\d+):([A-Z]+\d+),\s*(\d+)\)$/i);if(A){let P;et(A[1].trim().toUpperCase())?P=Ye(A[1].trim().toUpperCase(),a,new Set(r)):P=isNaN(Number(A[1]))?A[1].replace(/^"|"$/g,""):Number(A[1]);const N=et(A[2].toUpperCase()),o=et(A[3].toUpperCase()),R=parseInt(A[4])-1;if(N&&o)for(let $=N.row;$<=o.row;$++){const K=Ye(Ie($,N.col),a,new Set(r));if(String(K)===String(P))return Ye(Ie($,N.col+R),a,new Set(r))}return null}const G=s.match(/^(ABS|ROUND|FLOOR|CEIL|CEILING|SQRT|LEN|UPPER|LOWER|TRIM|INT)\(([^)]+)\)$/i);if(G){const P=G[1].toUpperCase(),_=G[2].trim();let N;switch(et(_.toUpperCase())?N=Ye(_.toUpperCase(),a,new Set(r)):N=isNaN(Number(_))?_.replace(/^"|"$/g,""):Number(_),P){case"ABS":return Math.abs(Number(N)||0);case"ROUND":return Math.round(Number(N)||0);case"FLOOR":return Math.floor(Number(N)||0);case"CEIL":case"CEILING":return Math.ceil(Number(N)||0);case"SQRT":return Math.sqrt(Number(N)||0);case"INT":return Math.trunc(Number(N)||0);case"LEN":return String(N??"").length;case"UPPER":return String(N??"").toUpperCase();case"LOWER":return String(N??"").toLowerCase();case"TRIM":return String(N??"").trim()}}const w=s.match(/^POWER\(([^,]+),\s*([^)]+)\)$/i);if(w){const P=Number(et(w[1].trim().toUpperCase())?Ye(w[1].trim().toUpperCase(),a,new Set(r)):w[1].trim())||0,_=Number(et(w[2].trim().toUpperCase())?Ye(w[2].trim().toUpperCase(),a,new Set(r)):w[2].trim())||0;return Math.pow(P,_)}if(/^NOW\(\)$/i.test(s))return new Date().toISOString();if(/^TODAY\(\)$/i.test(s))return new Date().toISOString().split("T")[0];if(/^PI\(\)$/i.test(s))return Math.PI;const B=s.match(/^([A-Z]+\d+)$/i);if(B)return Ye(B[1].toUpperCase(),a,r);const H=s.match(/^([A-Z]+\d+)\s*([+\-*/])\s*([A-Z]+\d+|\d+\.?\d*)$/i);if(H){const P=H[1].toUpperCase(),_=H[2],N=H[3],o=Ye(P,a,r),$=et(N.toUpperCase())?Ye(N.toUpperCase(),a,r):parseFloat(N),K=typeof o=="number"?o:0,ee=typeof $=="number"?$:0;switch(_){case"+":return K+ee;case"-":return K-ee;case"*":return K*ee;case"/":return ee!==0?K/ee:null}}const M=parseFloat(s);return isNaN(M)?s:M}function Ye(n,a,r){if(r.has(n))return null;r.add(n);const s=a[n];return s?s.formula?Yi(s.formula,a,r):s.value:null}function Fn(n,a){return n==null?"":a==="percent"&&typeof n=="number"?`${(n*100).toFixed(1)}%`:a==="currency"&&typeof n=="number"?`$${n.toFixed(2)}`:String(n)}function On(n){return{name:n,data:{}}}const Xn=t.forwardRef(({sheets:n,activeSheet:a,rows:r=50,cols:s=26,showToolbar:c=!0,showFormulaBar:u=!0,showSheetTabs:f=!0,readOnly:l=!1,onChange:x,onActiveSheetChange:D,onCellSelect:A,onCopy:G,onPaste:w,onInsert:B,onRemove:H,maxUndo:M=50,sortable:P=!1,filterable:_=!1,rangeSelection:N=!0,className:o,style:R,id:$,...K},ee)=>{const he=Te.useControlId($),{t:b}=Te.useNiceTranslation(),[ne,te]=t.useState(()=>n??[On(b("spreadsheet.sheet","Sheet")+" 1")]),[ae,V]=t.useState(0),W=n??ne,g=a??ae,I=W[g]??W[0],[m,_e]=t.useState(null),[be,T]=t.useState(null),[Z,ce]=t.useState(!1),[se,xe]=t.useState(null),[z,me]=t.useState(""),Ce=t.useRef(null),tt=t.useRef(null),[ve,we]=t.useState([]),[Ve,st]=t.useState([]),[L,Me]=t.useState(null),S=t.useRef({x:0,width:80}),[ie,le]=t.useState(null),[Q,De]=t.useState(null),[Ee,Ze]=t.useState("");t.useEffect(()=>{se&&Ce.current&&Ce.current.focus()},[se]);const ue=t.useMemo(()=>{if(!m)return null;const d=be??m;return{startRow:Math.min(m.row,d.row),startCol:Math.min(m.col,d.col),endRow:Math.max(m.row,d.row),endCol:Math.max(m.col,d.col)}},[m,be]),ye=t.useCallback((d,h)=>ue?d>=ue.startRow&&d<=ue.endRow&&h>=ue.startCol&&h<=ue.endCol:!1,[ue]),Et=t.useCallback(d=>{we(h=>{const C=[...h,d.map(O=>({...O,data:{...O.data}}))];return C.length>M?C.slice(-M):C}),st([])},[M]),fe=t.useCallback((d,h=!0)=>{h&&Et(W);const C=d(W);n||te(C),x?.(C)},[W,n,x,Et]),Ct=t.useCallback(()=>{if(ve.length===0)return;const d=ve[ve.length-1];st(h=>[...h,W.map(C=>({...C,data:{...C.data}}))]),we(h=>h.slice(0,-1)),n||te(d),x?.(d)},[ve,W,n,x]),k=t.useCallback(()=>{if(Ve.length===0)return;const d=Ve[Ve.length-1];we(h=>[...h,W.map(C=>({...C,data:{...C.data}}))]),st(h=>h.slice(0,-1)),n||te(d),x?.(d)},[Ve,W,n,x]),Y=t.useCallback(d=>{a||V(d),D?.(d),_e(null),T(null),xe(null)},[a,D]),ge=t.useCallback((d,h,C)=>{const O=Ie(d,h);fe(q=>{const E=q.map((re,oe)=>oe===g?{...re,data:{...re.data}}:re),U=C.startsWith("=");return E[g].data[O]={...E[g].data[O]??{value:null},formula:U?C:void 0,value:U?null:isNaN(Number(C))?C:Number(C)},E})},[g,fe]),nt=t.useCallback((d,h,C)=>{C?.shiftKey&&N&&m?T({row:d,col:h}):(_e({row:d,col:h}),T(null)),xe(null),A?.(g,d,h)},[g,A,N,m]),bt=t.useCallback((d,h,C)=>{C.button===0&&(nt(d,h,C),N&&!C.shiftKey&&ce(!0))},[nt,N]),Ne=t.useCallback((d,h)=>{Z&&T({row:d,col:h})},[Z]);t.useEffect(()=>{if(!Z)return;const d=()=>ce(!1);return document.addEventListener("mouseup",d),()=>document.removeEventListener("mouseup",d)},[Z]);const Oe=t.useCallback((d,h)=>{if(l)return;const C=Ie(d,h),O=I.data[C];O?.readOnly||(xe({row:d,col:h}),me(O?.formula??(O?.value!=null?String(O.value):"")))},[l,I.data]),it=t.useCallback(()=>{se&&(ge(se.row,se.col,z),xe(null))},[se,z,ge]),mt=t.useCallback(d=>{if(d.key==="Enter")it();else if(d.key==="Escape")xe(null);else if(d.key==="Tab"&&(d.preventDefault(),it(),m)){const h=d.shiftKey?Math.max(0,m.col-1):Math.min(s-1,m.col+1);_e({row:m.row,col:h})}},[it,m,s]),Be=t.useCallback((d,h)=>{if(!m)return;const C=ue??{startRow:m.row,startCol:m.col,endRow:m.row,endCol:m.col};fe(O=>{const q=O.map((E,U)=>U===g?{...E,data:{...E.data}}:E);for(let E=C.startRow;E<=C.endRow;E++)for(let U=C.startCol;U<=C.endCol;U++){const re=Ie(E,U);q[g].data[re]={...q[g].data[re]??{value:null},[d]:h}}return q})},[m,ue,g,fe]),jt=t.useCallback(d=>{if(!ue||G?.(ue)===!1)return;const{startRow:h,startCol:C,endRow:O,endCol:q}=ue,E=[];for(let U=h;U<=O;U++){const re=[];for(let oe=C;oe<=q;oe++){const Ue=Ie(U,oe),Le=I.data[Ue],ke=Le?Ye(Ue,I.data,new Set):null;re.push(Fn(ke,Le?.format))}E.push(re.join(" "))}d.clipboardData.setData("text/plain",E.join(`
595
+ `)),d.preventDefault()},[ue,I.data,G]),Bt=t.useCallback(d=>{if(l||!m)return;const h=d.clipboardData.getData("text/plain");if(!h)return;const C=h.split(`
596
+ `).map(O=>O.split(" "));w?.(C,m.row,m.col)!==!1&&(fe(O=>{const q=O.map((E,U)=>U===g?{...E,data:{...E.data}}:E);return C.forEach((E,U)=>{E.forEach((re,oe)=>{const Ue=Ie(m.row+U,m.col+oe),Le=re.startsWith("=");q[g].data[Ue]={...q[g].data[Ue]??{value:null},formula:Le?re:void 0,value:Le?null:isNaN(Number(re))?re:Number(re)}})}),q}),d.preventDefault())},[l,m,g,fe,w]),At=t.useCallback(d=>{fe(h=>h.map((O,q)=>{if(q!==g)return O;const E={};for(const[U,re]of Object.entries(O.data)){const oe=et(U);oe&&(oe.row>d?E[Ie(oe.row+1,oe.col)]=re:E[U]=re)}return{...O,data:E}})),B?.("row",d)},[g,fe,B]),Gt=t.useCallback(d=>{fe(h=>h.map((O,q)=>{if(q!==g)return O;const E={};for(const[U,re]of Object.entries(O.data)){const oe=et(U);oe&&(oe.col>d?E[Ie(oe.row,oe.col+1)]=re:E[U]=re)}return{...O,data:E}})),B?.("column",d)},[g,fe,B]),ze=t.useCallback(d=>{fe(h=>h.map((O,q)=>{if(q!==g)return O;const E={};for(const[U,re]of Object.entries(O.data)){const oe=et(U);oe&&oe.row!==d&&(oe.row>d?E[Ie(oe.row-1,oe.col)]=re:E[U]=re)}return{...O,data:E}})),H?.("row",d)},[g,fe,H]),Je=t.useCallback(d=>{fe(h=>h.map((O,q)=>{if(q!==g)return O;const E={};for(const[U,re]of Object.entries(O.data)){const oe=et(U);oe&&oe.col!==d&&(oe.col>d?E[Ie(oe.row,oe.col-1)]=re:E[U]=re)}return{...O,data:E}})),H?.("column",d)},[g,fe,H]),Ge=t.useCallback((d,h)=>{fe(C=>C.map((q,E)=>{if(E!==g)return q;const U=new Map;for(const[Ue,Le]of Object.entries(q.data)){const ke=et(Ue);ke&&(U.has(ke.row)||U.set(ke.row,{}),U.get(ke.row)[ke.col]=Le)}const re=Array.from(U.entries()).sort((Ue,Le)=>{const ke=Ye(Ie(Ue[0],d),q.data,new Set),Pe=Ye(Ie(Le[0],d),q.data,new Set),$t=typeof ke=="number"?ke:Number(ke),vt=typeof Pe=="number"?Pe:Number(Pe);if(!isNaN($t)&&!isNaN(vt))return h==="asc"?$t-vt:vt-$t;const Xe=String(ke??""),yt=String(Pe??"");return h==="asc"?Xe.localeCompare(yt):yt.localeCompare(Xe)}),oe={};return re.forEach(([,Ue],Le)=>{for(const[ke,Pe]of Object.entries(Ue))oe[Ie(Le,Number(ke))]=Pe}),{...q,data:oe,sortColumn:d,sortDirection:h}}))},[g,fe]),Lt=t.useCallback((d,h)=>{const C=I.conditionalFormats;if(!C?.length)return;const O=Ie(d,h),q=Ye(O,I.data,new Set),E=typeof q=="number"?q:Number(q);for(const U of C){const re=U.range.match(/^([A-Z]+\d+):([A-Z]+\d+)$/i);if(!re)continue;const oe=et(re[1].toUpperCase()),Ue=et(re[2].toUpperCase());if(!oe||!Ue||d<oe.row||d>Ue.row||h<oe.col||h>Ue.col)continue;let Le=!1;switch(U.type){case"greaterThan":Le=!isNaN(E)&&E>Number(U.value);break;case"lessThan":Le=!isNaN(E)&&E<Number(U.value);break;case"equalTo":Le=String(q)===String(U.value);break;case"between":Le=!isNaN(E)&&E>=Number(U.value)&&E<=Number(U.value2);break;case"textContains":Le=String(q).includes(String(U.value));break;case"isEmpty":Le=q===null||q==="";break;case"isNotEmpty":Le=q!==null&&q!=="";break}if(Le)return{backgroundColor:U.style.bgColor,color:U.style.color,fontWeight:U.style.bold?"bold":void 0,fontStyle:U.style.italic?"italic":void 0}}},[I.conditionalFormats,I.data]),Rt=t.useCallback(()=>{const d=`${b("spreadsheet.sheet","Sheet")} ${W.length+1}`;fe(h=>[...h,On(d)]),Y(W.length)},[W.length,fe,Y,b]),Xt=t.useCallback(()=>{W.length<=1||(fe(d=>d.filter((h,C)=>C!==g)),Y(Math.max(0,g-1)))},[W.length,g,fe,Y]),Qt=t.useCallback((d,h)=>{h.trim()&&(fe(C=>C.map((O,q)=>q===d?{...O,name:h.trim()}:O),!1),De(null))},[fe]),Ht=t.useMemo(()=>{if(!m)return"";const d=Ie(m.row,m.col),h=I.data[d];return h?.formula??(h?.value!=null?String(h.value):"")},[m,I.data]),ht=t.useMemo(()=>{if(!ue)return null;const{startRow:d,startCol:h,endRow:C,endCol:O}=ue;if(d===C&&h===O)return null;const q=[];let E=0;for(let U=d;U<=C;U++)for(let re=h;re<=O;re++){const oe=Ie(U,re),Ue=Ye(oe,I.data,new Set);Ue!==null&&Ue!==""&&E++,typeof Ue=="number"&&q.push(Ue)}return q.length===0?{count:E}:{count:E,sum:q.reduce((U,re)=>U+re,0),avg:q.reduce((U,re)=>U+re,0)/q.length,min:Math.min(...q),max:Math.max(...q)}},[ue,I.data]),cn=t.useCallback((d,h)=>{h.preventDefault(),h.stopPropagation(),Me(d),S.current={x:h.clientX,width:I.colWidths?.[d]??80}},[I.colWidths]);t.useEffect(()=>{if(L===null)return;const d=C=>{const O=C.clientX-S.current.x,q=Math.max(30,S.current.width+O);fe(E=>E.map((re,oe)=>oe===g?{...re,colWidths:{...re.colWidths,[L]:q}}:re),!1)},h=()=>Me(null);return document.addEventListener("mousemove",d),document.addEventListener("mouseup",h),()=>{document.removeEventListener("mousemove",d),document.removeEventListener("mouseup",h)}},[L,g,fe]);const Yt=t.useCallback((d,h,C)=>{d.preventDefault(),_e({row:h,col:C}),le({x:d.clientX,y:d.clientY})},[]);t.useEffect(()=>{if(!ie)return;const d=()=>le(null);return document.addEventListener("click",d),()=>document.removeEventListener("click",d)},[ie]);const Pt=t.useCallback(d=>{if((d.ctrlKey||d.metaKey)&&!se){if(d.key==="z"){d.preventDefault(),Ct();return}if(d.key==="y"){d.preventDefault(),k();return}}if(se||!m)return;let{row:h,col:C}=m;switch(d.key){case"ArrowUp":h=Math.max(0,h-1);break;case"ArrowDown":h=Math.min(r-1,h+1);break;case"ArrowLeft":C=Math.max(0,C-1);break;case"ArrowRight":C=Math.min(s-1,C+1);break;case"Enter":Oe(h,C);return;case"Delete":case"Backspace":l||(ue&&(ue.startRow!==ue.endRow||ue.startCol!==ue.endCol)?fe(O=>{const q=O.map((E,U)=>U===g?{...E,data:{...E.data}}:E);for(let E=ue.startRow;E<=ue.endRow;E++)for(let U=ue.startCol;U<=ue.endCol;U++)delete q[g].data[Ie(E,U)];return q}):ge(h,C,""));return;default:if(d.key.length===1&&!d.ctrlKey&&!d.metaKey&&!l){xe({row:h,col:C}),me(d.key);return}return}d.preventDefault(),d.shiftKey&&N?T({row:h,col:C}):(_e({row:h,col:C}),T(null)),A?.(g,h,C)},[se,m,r,s,l,Oe,ge,g,A,Ct,k,ue,fe,N]),Vt=I.frozenRows??0,ct=I.frozenCols??0,en=[{value:"text",label:b("spreadsheet.formatText","Text")},{value:"number",label:b("spreadsheet.formatNumber","Number")},{value:"percent",label:b("spreadsheet.formatPercent","Percent")},{value:"currency",label:b("spreadsheet.formatCurrency","Currency")},{value:"date",label:b("spreadsheet.formatDate","Date")}];return e.jsxs("div",{ref:ee,id:he,className:`nice-spreadsheet ${l?"nice-spreadsheet--readonly":""} ${o??""}`,style:R,onKeyDown:Pt,onCopy:jt,onPaste:Bt,tabIndex:0,role:"application","aria-label":b("spreadsheet.label","Spreadsheet"),...K,children:[c&&!l&&e.jsxs("div",{className:"nice-spreadsheet__toolbar",role:"toolbar",children:[e.jsx(We.NiceButton,{variant:"ghost",size:"sm",onClick:Ct,disabled:ve.length===0,title:b("spreadsheet.undo","Undo"),children:"↩"}),e.jsx(We.NiceButton,{variant:"ghost",size:"sm",onClick:k,disabled:Ve.length===0,title:b("spreadsheet.redo","Redo"),children:"↪"}),e.jsx("span",{className:"nice-spreadsheet__separator"}),e.jsx(We.NiceButton,{variant:I.data[m?Ie(m.row,m.col):""]?.bold?"primary":"ghost",size:"sm",onClick:()=>Be("bold",!I.data[m?Ie(m.row,m.col):""]?.bold),title:b("spreadsheet.bold","Bold"),children:e.jsx("strong",{children:"B"})}),e.jsx(We.NiceButton,{variant:I.data[m?Ie(m.row,m.col):""]?.italic?"primary":"ghost",size:"sm",onClick:()=>Be("italic",!I.data[m?Ie(m.row,m.col):""]?.italic),title:b("spreadsheet.italic","Italic"),children:e.jsx("em",{children:"I"})}),e.jsx("span",{className:"nice-spreadsheet__separator"}),e.jsx(We.NiceButton,{variant:"ghost",size:"sm",onClick:()=>Be("align","left"),title:b("spreadsheet.alignLeft","Align left"),children:"⬅"}),e.jsx(We.NiceButton,{variant:"ghost",size:"sm",onClick:()=>Be("align","center"),title:b("spreadsheet.alignCenter","Center"),children:"⬌"}),e.jsx(We.NiceButton,{variant:"ghost",size:"sm",onClick:()=>Be("align","right"),title:b("spreadsheet.alignRight","Align right"),children:"➡"}),e.jsx("span",{className:"nice-spreadsheet__separator"}),e.jsx(We.NiceColorPicker,{value:I.data[m?Ie(m.row,m.col):""]?.bgColor??"#ffffff",onChange:d=>Be("bgColor",d),title:b("spreadsheet.bgColor","Background color")}),e.jsx(We.NiceColorPicker,{value:I.data[m?Ie(m.row,m.col):""]?.color??"#000000",onChange:d=>Be("color",d),title:b("spreadsheet.textColor","Text color")}),e.jsx("span",{className:"nice-spreadsheet__separator"}),e.jsx(We.NiceSelect,{size:"sm",value:I.data[m?Ie(m.row,m.col):""]?.format??"text",onChange:d=>Be("format",d),options:en,"aria-label":b("spreadsheet.format","Cell format")}),e.jsx("span",{className:"nice-spreadsheet__separator"}),e.jsx(We.NiceButton,{variant:"ghost",size:"sm",onClick:()=>m&&At(m.row),title:b("spreadsheet.insertRow","Insert row"),children:"+↕"}),e.jsx(We.NiceButton,{variant:"ghost",size:"sm",onClick:()=>m&&Gt(m.col),title:b("spreadsheet.insertCol","Insert column"),children:"+↔"}),e.jsx(We.NiceButton,{variant:"ghost",size:"sm",onClick:()=>m&&ze(m.row),title:b("spreadsheet.deleteRow","Delete row"),children:"−↕"}),e.jsx(We.NiceButton,{variant:"ghost",size:"sm",onClick:()=>m&&Je(m.col),title:b("spreadsheet.deleteCol","Delete column"),children:"−↔"})]}),u&&e.jsxs("div",{className:"nice-spreadsheet__formula-bar",children:[e.jsxs("span",{className:"nice-spreadsheet__cell-label",children:[m?Ie(m.row,m.col):"",ue&&ue.startRow!==ue.endRow||ue&&ue.startCol!==ue.endCol?`:${Ie(ue.endRow,ue.endCol)}`:""]}),e.jsx(We.NiceTextInput,{className:"nice-spreadsheet__formula-input",value:se?z:Ht,onChange:d=>{se?me(d):m&&(xe(m),me(d))},onKeyDown:mt,readOnly:l,"aria-label":b("spreadsheet.formulaBar","Formula bar")})]}),e.jsx("div",{className:"nice-spreadsheet__grid",ref:tt,children:e.jsxs("table",{role:"grid","aria-label":I.name,children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{className:"nice-spreadsheet__corner"}),Array.from({length:s},(d,h)=>e.jsxs("th",{className:`nice-spreadsheet__col-header ${h<ct?"nice-spreadsheet__col-header--frozen":""}`,style:{width:I.colWidths?.[h]??80,position:h<ct?"sticky":void 0,left:h<ct?h*80+40:void 0,zIndex:h<ct?3:void 0},children:[e.jsx("span",{children:qn(h)}),P&&e.jsx("span",{className:"nice-spreadsheet__sort-trigger",onClick:()=>Ge(h,I.sortColumn===h&&I.sortDirection==="asc"?"desc":"asc"),title:b("spreadsheet.sort","Sort"),children:I.sortColumn===h?I.sortDirection==="asc"?"▲":"▼":"⇅"}),!l&&e.jsx("span",{className:"nice-spreadsheet__col-resize",onMouseDown:C=>cn(h,C)})]},h))]})}),e.jsx("tbody",{children:Array.from({length:r},(d,h)=>e.jsxs("tr",{className:h<Vt?"nice-spreadsheet__row--frozen":"",style:h<Vt?{position:"sticky",top:h*24,zIndex:2}:void 0,children:[e.jsx("td",{className:"nice-spreadsheet__row-header",children:h+1}),Array.from({length:s},(C,O)=>{const q=Ie(h,O),E=I.data[q];if(E?.mergedInto)return null;const U=m?.row===h&&m?.col===O,re=ye(h,O),oe=se?.row===h&&se?.col===O,Ue=E?Ye(q,I.data,new Set):null,Le=Lt(h,O),ke=h<Vt||O<ct;return e.jsxs("td",{className:`nice-spreadsheet__cell ${U?"nice-spreadsheet__cell--selected":""} ${re&&!U?"nice-spreadsheet__cell--in-range":""} ${E?.readOnly?"nice-spreadsheet__cell--readonly":""} ${ke?"nice-spreadsheet__cell--frozen":""}`,style:{textAlign:E?.align,fontWeight:E?.bold?"bold":void 0,fontStyle:E?.italic?"italic":void 0,backgroundColor:Le?.backgroundColor??E?.bgColor,color:Le?.color??E?.color,width:I.colWidths?.[O],height:I.rowHeights?.[h],position:ke?"sticky":void 0,left:O<ct?O*80+40:void 0,zIndex:ke?1:void 0,...Le},colSpan:E?.colSpan,rowSpan:E?.rowSpan,onMouseDown:Pe=>bt(h,O,Pe),onMouseEnter:()=>Ne(h,O),onDoubleClick:()=>Oe(h,O),onContextMenu:Pe=>Yt(Pe,h,O),role:"gridcell","aria-selected":U,title:E?.comment,children:[E?.comment&&e.jsx("span",{className:"nice-spreadsheet__comment-indicator"}),oe?e.jsx("input",{ref:Ce,className:"nice-spreadsheet__cell-editor",value:z,onChange:Pe=>me(Pe.target.value),onKeyDown:mt,onBlur:it}):Fn(Ue,E?.format)]},O)})]},h))})]})}),ie&&!l&&m&&e.jsxs("div",{className:"nice-spreadsheet__context-menu",style:{position:"fixed",left:ie.x,top:ie.y,zIndex:1e3},children:[e.jsx(We.NiceButton,{variant:"ghost",size:"sm",onClick:()=>{At(m.row),le(null)},children:b("spreadsheet.insertRowAbove","Insert row above")}),e.jsx(We.NiceButton,{variant:"ghost",size:"sm",onClick:()=>{At(m.row+1),le(null)},children:b("spreadsheet.insertRowBelow","Insert row below")}),e.jsx(We.NiceButton,{variant:"ghost",size:"sm",onClick:()=>{Gt(m.col),le(null)},children:b("spreadsheet.insertColLeft","Insert column left")}),e.jsx(We.NiceButton,{variant:"ghost",size:"sm",onClick:()=>{Gt(m.col+1),le(null)},children:b("spreadsheet.insertColRight","Insert column right")}),e.jsx("hr",{className:"nice-spreadsheet__context-sep"}),e.jsx(We.NiceButton,{variant:"ghost",size:"sm",onClick:()=>{ze(m.row),le(null)},children:b("spreadsheet.deleteRow","Delete row")}),e.jsx(We.NiceButton,{variant:"ghost",size:"sm",onClick:()=>{Je(m.col),le(null)},children:b("spreadsheet.deleteCol","Delete column")})]}),ht&&e.jsxs("div",{className:"nice-spreadsheet__status-bar",children:[e.jsxs("span",{children:[b("spreadsheet.count","Count"),": ",ht.count]}),ht.sum!==void 0&&e.jsxs("span",{children:[b("spreadsheet.sum","Sum"),": ",ht.sum.toFixed(2)]}),ht.avg!==void 0&&e.jsxs("span",{children:[b("spreadsheet.avg","Avg"),": ",ht.avg.toFixed(2)]}),ht.min!==void 0&&e.jsxs("span",{children:[b("spreadsheet.min","Min"),": ",ht.min]}),ht.max!==void 0&&e.jsxs("span",{children:[b("spreadsheet.max","Max"),": ",ht.max]})]}),f&&e.jsxs("div",{className:"nice-spreadsheet__tabs",role:"tablist",children:[W.map((d,h)=>e.jsx("span",{className:"nice-spreadsheet__tab-wrapper",children:Q===h?e.jsx(We.NiceTextInput,{className:"nice-spreadsheet__tab-rename",value:Ee,onChange:C=>Ze(C),onBlur:()=>Qt(h,Ee),onKeyDown:C=>{C.key==="Enter"&&Qt(h,Ee),C.key==="Escape"&&De(null)},autoFocus:!0}):e.jsx("span",{onDoubleClick:()=>{l||(De(h),Ze(d.name))},children:e.jsx(We.NiceButton,{variant:h===g?"primary":"ghost",size:"sm",onClick:()=>Y(h),children:d.name})})},h)),!l&&e.jsxs(e.Fragment,{children:[e.jsx(We.NiceButton,{variant:"ghost",size:"sm",onClick:Rt,title:b("spreadsheet.addSheet","Add sheet"),children:"+"}),W.length>1&&e.jsx(We.NiceButton,{variant:"ghost",size:"sm",onClick:Xt,title:b("spreadsheet.removeSheet","Remove sheet"),children:"×"})]})]})]})});Xn.displayName="NiceSpreadsheet";const Ji=({queries:n,currentFilter:a,currentColumns:r,currentSort:s,onLoad:c,onSave:u,onUpdate:f,onDelete:l,onShare:x,onSetDefault:D,allowSharing:A=!0,allowPinning:G=!0,position:w="dropdown",className:B,style:H,"data-testid":M})=>{const[P,_]=t.useState(!1),[N,o]=t.useState(""),[R,$]=t.useState(!1),[K,ee]=t.useState(""),[he,b]=t.useState(""),[ne,te]=t.useState(!1),ae=n.filter(m=>m.name.toLowerCase().includes(N.toLowerCase())),V=ae.filter(m=>!m.isShared),W=ae.filter(m=>m.isShared),g=async()=>{if(K.trim()){$(!0);try{await u({name:K,description:he||void 0,filter:a??{},columns:r,sort:s}),te(!1),ee(""),b("")}finally{$(!1)}}},I=m=>e.jsxs("div",{className:"nice-saved-query__item",children:[m.icon&&e.jsx("span",{className:"nice-saved-query__icon","aria-hidden":"true",children:m.icon}),e.jsx("span",{className:"nice-saved-query__name",children:m.name}),m.isDefault&&e.jsx("span",{className:"nice-saved-query__badge nice-saved-query__badge--default",children:"domyślne"}),m.isShared&&e.jsx("span",{className:"nice-saved-query__badge nice-saved-query__badge--shared",children:"udostępnione"}),m.isPinned&&e.jsx("span",{className:"nice-saved-query__badge nice-saved-query__badge--pinned",children:"przypięte"}),e.jsxs("div",{className:"nice-saved-query__actions",children:[e.jsx("button",{onClick:()=>{c(m),_(!1)},type:"button",children:"Wczytaj"}),D&&e.jsx("button",{onClick:()=>D(m.id),type:"button",title:"Ustaw domyślne",children:"★"}),A&&x&&e.jsx("button",{onClick:()=>x(m.id,[]),type:"button",title:"Udostępnij",children:"↗"}),G&&e.jsx("button",{onClick:()=>f(m.id,{...m}),type:"button",title:"Przypnij",children:"📌"}),e.jsx("button",{onClick:()=>l(m.id),type:"button",title:"Usuń","aria-label":`Usuń zapytanie ${m.name}`,children:"✕"})]})]},m.id);return e.jsxs("div",{className:`nice-saved-query nice-saved-query--${w} ${P?"nice-saved-query--open":""} ${B??""}`,style:H,"data-testid":M,children:[e.jsx("button",{className:"nice-saved-query__trigger",onClick:()=>_(m=>!m),"aria-expanded":P,"aria-haspopup":"listbox",type:"button",children:"Widoki i zapytania"}),P&&e.jsxs("div",{className:"nice-saved-query__panel",role:"dialog","aria-label":"Zarządzanie zapytaniami",children:[e.jsxs("div",{className:"nice-saved-query__search-row",children:[e.jsx("input",{type:"search",placeholder:"Szukaj zapytania…",value:N,onChange:m=>o(m.target.value),"aria-label":"Szukaj zapytania"}),e.jsx("button",{onClick:()=>te(m=>!m),type:"button",children:"+ Zapisz bieżący widok"})]}),ne&&e.jsxs("div",{className:"nice-saved-query__save-form",children:[e.jsx("input",{type:"text",placeholder:"Nazwa zapytania",value:K,onChange:m=>ee(m.target.value),"aria-label":"Nazwa zapytania"}),e.jsx("input",{type:"text",placeholder:"Opis (opcjonalnie)",value:he,onChange:m=>b(m.target.value),"aria-label":"Opis zapytania"}),e.jsx("button",{onClick:g,disabled:R||!K.trim(),type:"button",children:R?"Zapisywanie…":"Zapisz"}),e.jsx("button",{onClick:()=>te(!1),type:"button",children:"Anuluj"})]}),V.length>0&&e.jsxs("section",{className:"nice-saved-query__group","aria-labelledby":"nice-saved-query-mine",children:[e.jsx("h3",{id:"nice-saved-query-mine",className:"nice-saved-query__group-title",children:"Moje"}),V.map(I)]}),W.length>0&&e.jsxs("section",{className:"nice-saved-query__group","aria-labelledby":"nice-saved-query-shared",children:[e.jsx("h3",{id:"nice-saved-query-shared",className:"nice-saved-query__group-title",children:"Udostępnione"}),W.map(I)]}),ae.length===0&&e.jsx("p",{className:"nice-saved-query__empty",children:"Brak zapisanych zapytań"})]})]})};exports.NiceCardView=bi;exports.NiceDataGrid=xn;exports.NiceDataGrid$1=di;exports.NiceDataGridAI=pi;exports.NiceKanbanBoard=Vn;exports.NiceList=fi;exports.NiceModuleGrid=Fi;exports.NicePivotGrid=Gn;exports.NicePivotGrid$1=Ni;exports.NicePivotGridFieldChooser=Bn;exports.NiceReconciliationView=Vi;exports.NiceSavedQueryPanel=Ji;exports.NiceSpreadsheet=Xn;exports.NiceTable=oi;exports.NiceTileView=vi;exports.NiceTreeGrid=Qi;exports.NiceTreeList=xi;exports.NiceTreeView=gi;exports.computeAggregate=Un;exports.escapeCsvField=sn;