react-gridix 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.html +1742 -0
- package/README.md +2080 -0
- package/dist/index.d.ts +287 -81
- package/dist/react-gridix.cjs +2 -1
- package/dist/react-gridix.js +1238 -499
- package/dist/style.css +1 -1
- package/package.json +3 -2
package/dist/react-gridix.cjs
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react/jsx-runtime"),h=require("react"),Ue=require("react-dom"),Xe=h.forwardRef(function({variant:d="primary",size:c="md",loading:k=!1,disabled:_,className:b,children:p,...m},D){const v=["rk-btn",`rk-btn--${d}`,`rk-btn--${c}`,b].filter(Boolean).join(" ");return l.jsxs("button",{ref:D,className:v,disabled:_||k,"aria-busy":k||void 0,...m,children:[k&&l.jsx("span",{className:"rk-spinner","aria-hidden":"true"}),p]})}),Ze=h.forwardRef(function({label:d,error:c,hint:k,id:_,className:b,...p},m){const D=h.useId(),v=_??D,C=c||k?`${v}-desc`:void 0;return l.jsxs("div",{className:["rk-field",b].filter(Boolean).join(" "),children:[d&&l.jsx("label",{className:"rk-label",htmlFor:v,children:d}),l.jsx("input",{ref:m,id:v,className:`rk-input${c?" rk-input--error":""}`,"aria-invalid":c?!0:void 0,"aria-describedby":C,...p}),(c||k)&&l.jsx("span",{id:C,className:c?"rk-error-text":"rk-hint",children:c??k})]})});function et({title:i,footer:d,className:c,children:k,..._}){return l.jsxs("div",{className:["rk-card",c].filter(Boolean).join(" "),..._,children:[i&&l.jsx("div",{className:"rk-card__header",children:i}),l.jsx("div",{className:"rk-card__body",children:k}),d&&l.jsx("div",{className:"rk-card__footer",children:d})]})}function tt({tone:i="neutral",className:d,children:c,...k}){return l.jsx("span",{className:["rk-badge",`rk-badge--${i}`,d].filter(Boolean).join(" "),...k,children:c})}function rt({tone:i="info",title:d,onClose:c,className:k,children:_,...b}){return l.jsxs("div",{role:i==="danger"||i==="warning"?"alert":"status",className:["rk-alert",`rk-alert--${i}`,k].filter(Boolean).join(" "),...b,children:[l.jsxs("div",{className:"rk-alert__content",children:[d&&l.jsx("strong",{className:"rk-alert__title",children:d}),l.jsx("div",{children:_})]}),c&&l.jsx("button",{type:"button",className:"rk-alert__close","aria-label":"Dismiss",onClick:c,children:"×"})]})}function nt({open:i,onClose:d,title:c,footer:k,children:_}){const b=h.useId(),p=h.useRef(null);return h.useEffect(()=>{var C;if(!i)return;const m=document.activeElement;(C=p.current)==null||C.focus();const D=M=>{M.key==="Escape"&&d()};document.addEventListener("keydown",D);const v=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{var M;document.removeEventListener("keydown",D),document.body.style.overflow=v,(M=m==null?void 0:m.focus)==null||M.call(m)}},[i,d]),!i||typeof document>"u"?null:Ue.createPortal(l.jsx("div",{className:"rk-overlay",onMouseDown:m=>m.target===m.currentTarget&&d(),children:l.jsxs("div",{ref:p,role:"dialog","aria-modal":"true","aria-labelledby":c?b:void 0,tabIndex:-1,className:"rk-modal",children:[c&&l.jsxs("div",{className:"rk-modal__header",children:[l.jsx("h2",{id:b,className:"rk-modal__title",children:c}),l.jsx("button",{type:"button",className:"rk-alert__close","aria-label":"Close",onClick:d,children:"×"})]}),l.jsx("div",{className:"rk-modal__body",children:_}),k&&l.jsx("div",{className:"rk-modal__footer",children:k})]})}),document.body)}const H=(...i)=>i.filter(Boolean).join(" ");function lt(){return l.jsx("svg",{viewBox:"0 0 16 16",width:"100%",height:"100%","aria-hidden":"true",focusable:"false",children:l.jsx("path",{d:"M3.5 8.5l3 3 6-7",fill:"none",stroke:"currentColor",strokeWidth:"2.2",strokeLinecap:"round",strokeLinejoin:"round"})})}function it(){return l.jsx("svg",{viewBox:"0 0 16 16",width:"100%",height:"100%","aria-hidden":"true",focusable:"false",children:l.jsx("path",{d:"M4 8h8",fill:"none",stroke:"currentColor",strokeWidth:"2.2",strokeLinecap:"round"})})}function fe({checked:i,onChange:d,indeterminate:c=!1,variant:k="native",disabled:_=!1,label:b,"aria-label":p,id:m,name:D,indicator:v,className:C,style:M,classNames:P={},styles:j={}}){const S=c?"indeterminate":i?"checked":"unchecked";return l.jsxs("label",{className:H("rk-checkbox",`rk-checkbox--${k}`,S==="checked"&&"rk-checkbox--checked",c&&"rk-checkbox--indeterminate",_&&"rk-checkbox--disabled",P.root,C),style:{...j.root,...M},"data-state":S,children:[k==="native"?l.jsx("input",{type:"checkbox",id:m,name:D,ref:K=>{K&&(K.indeterminate=c)},className:H("rk-checkbox__control",P.control),style:j.control,checked:i,disabled:_,"aria-label":p,"data-state":S,onChange:K=>d(K.target.checked)}):l.jsx("button",{type:"button",role:"checkbox",id:m,className:H("rk-checkbox__control",P.control),style:j.control,"aria-checked":c?"mixed":i,"aria-label":p,disabled:_,"data-state":S,onClick:()=>d(!i),children:l.jsx("span",{className:H("rk-checkbox__indicator",v!==void 0&&!c&&"rk-checkbox__indicator--custom",P.indicator),style:j.indicator,"data-state":S,"aria-hidden":"true",children:c?k==="tick"?l.jsx(it,{}):null:v!==void 0?v:k==="tick"?l.jsx(lt,{}):null})}),b!=null&&l.jsx("span",{className:H("rk-checkbox__label",P.label),style:j.label,children:b})]})}const T=(...i)=>i.filter(Boolean).join(" "),Se=(i,d)=>`${typeof i}:${i}\0${d}`;function ue(i,d){const c=d[i.field];return i.valueFormatter?i.valueFormatter(c,d):i.type==="boolean"&&typeof c=="boolean"?c?"Yes":"No":c==null?"":c instanceof Date?c.toLocaleDateString():String(c)}function ot(i,d){return typeof i=="number"&&typeof d=="number"?i-d:i instanceof Date&&d instanceof Date?i.getTime()-d.getTime():typeof i=="boolean"&&typeof d=="boolean"?Number(i)-Number(d):String(i).localeCompare(String(d),void 0,{numeric:!0,sensitivity:"base"})}function at({columns:i,rows:d,getRowId:c,editable:k=!1,enterMovesDown:_=!0,onCellEdit:b,onRowsChange:p,sortable:m=!0,defaultSort:D=null,onSortChange:v,searchable:C=!0,searchPlaceholder:M="Search…",columnFilters:P=!0,pagination:j=!0,paginationPosition:S="bottom",pageSize:K=10,pageSizeOptions:ne=[5,10,25,50],onRowClick:le,toolbar:he,emptyMessage:Ie="No rows to show",striped:Be=!1,checkboxVariant:Te="native",maxHeight:ke,className:$e,style:Me,classNames:I={},styles:w={},rowClassName:ie,rowStyle:oe}){const g=(e,t)=>({className:T(t,I[e]),style:w[e]}),[xe,be]=h.useState(d),V=h.useRef(d);h.useEffect(()=>{V.current=d,be(d)},[d]);const ge=e=>{V.current=e,be(e)},[J,Pe]=h.useState(""),[A,me]=h.useState({}),[N,Ke]=h.useState(D),[Re,q]=h.useState(0),[B,Fe]=h.useState(K),[z,W]=h.useState(null),R=h.useRef(0),Q=h.useRef(null),ae=h.useRef(new Map),pe=h.useMemo(()=>xe.map((e,t)=>({row:e,index:t,id:c?c(e,t):t})),[xe,c]),G=h.useMemo(()=>{const e=J.trim().toLowerCase(),t=Object.entries(A).filter(([,n])=>n.trim()!=="");let r=pe.filter(({row:n})=>e&&!i.some(s=>ue(s,n).toLowerCase().includes(e))?!1:t.every(([o,s])=>{const f=i.find(a=>a.field===o);return f?ue(f,n).toLowerCase().includes(s.trim().toLowerCase()):!0}));if(N){const n=i.find(o=>o.field===N.field);if(n){const o=N.direction==="asc"?1:-1;r=[...r].sort((s,f)=>{const a=s.row[n.field],u=f.row[n.field],x=a==null||a==="",y=u==null||u==="";return x||y?x===y?0:x?1:-1:(n.comparator?n.comparator(a,u,s.row,f.row):ot(a,u))*o})}}return r},[pe,i,J,A,N]);h.useEffect(()=>q(0),[J,A,N,B]);const F=G.length,O=j?Math.max(1,Math.ceil(F/B)):1,E=Math.min(Re,O-1),$=j?G.slice(E*B,E*B+B):G,Le=F===0?0:j?E*B+1:1,Ve=j?Math.min(F,(E+1)*B):F,_e=e=>e.sortable??m,ve=e=>e.filterable??P,U=(e,t,r)=>({value:t[e.field],formattedValue:ue(e,t),row:t,rowIndex:r,field:e.field,column:e}),se=(e,t)=>{const r=e.editable??k;return typeof r=="function"?r(t):!!r},X=(e,t)=>se(e,t)&&!(e.type==="boolean"&&!e.cellEditor),Ae=(e,t)=>{const r=U(e,t.row,t.index),n=se(e,r);return{...r,editable:n,updateValue:o=>n&&ye(t,e,{value:o})}},je=e=>{if(!_e(e))return;let t;!N||N.field!==e.field?t={field:e.field,direction:"asc"}:N.direction==="asc"?t={field:e.field,direction:"desc"}:t=null,Ke(t),v==null||v(t)},Z=(e,t)=>{var r;return(r=ae.current.get(Se(e,t)))==null?void 0:r.focus()},L=()=>{R.current+=1,W(null)},ee=(e,t,r={})=>{if(!X(t,U(t,e.row,e.index)))return!1;const n=e.row[t.field],o=t.cellEditor?n:r.text??(n==null?"":String(n));return Q.current=o,R.current+=1,W({id:e.id,field:t.field,draft:o,session:R.current,select:r.select??"end",invalid:!1}),!0},ye=(e,t,r)=>{const n=V.current[e.index]??e.row,o=n[t.field];let s;if("value"in r)s=r.value;else if(t.valueParser)s=t.valueParser(r.text,n);else if(t.type==="number")if(r.text.trim()==="")s=null;else{const u=Number(r.text);if(!Number.isFinite(u))return!1;s=u}else s=r.text;if(Object.is(s,o))return!0;if(t.validate&&!t.validate(s,n))return!1;const f={...n,[t.field]:s},a=V.current.map((u,x)=>x===e.index?f:u);return ge(a),b==null||b({rowId:e.id,rowIndex:e.index,field:t.field,oldValue:o,newValue:s,row:f}),p==null||p(a),!0},Ne=(e,t,r)=>{const n=$.findIndex(x=>x.id===e.id),o=i.findIndex(x=>x.field===t);if(n<0||o<0)return null;const s=(x,y)=>X(y,U(y,x.row,x.index));if(r==="down"||r==="up"){const x=r==="down"?1:-1;for(let y=n+x;y>=0&&y<$.length;y+=x)if(s($[y],i[o]))return{entry:$[y],col:i[o]};return null}const f=r==="right"?1:-1;let a=n,u=o+f;for(;a>=0&&a<$.length;){for(;u>=0&&u<i.length;){if(s($[a],i[u]))return{entry:$[a],col:i[u]};u+=f}a+=f,u=f>0?0:i.length-1}return null},Y=(e,t,r,n={})=>{const{move:o="none",focus:s=!0}=n;if(!ye(e,t,r))return W(a=>a&&{...a,invalid:!0}),!1;const f=o==="none"?null:Ne(e,t.field,o);return f?ee(f.entry,f.col,{select:"all"}):(L(),s&&Z(e.id,t.field)),!0},qe=(e,t,r)=>{if(e.nativeEvent.isComposing)return;const n=e.currentTarget.value;if(e.key==="Enter"){e.preventDefault();const o=_?e.shiftKey?"up":"down":"none";Y(t,r,{text:n},{move:o})}else if(e.key==="Escape")e.preventDefault(),L(),Z(t.id,r.field);else if(e.key==="Tab"){const o=e.shiftKey?"left":"right";Ne(t,r.field,o)&&(e.preventDefault(),Y(t,r,{text:n},{move:o}))}},ze=(e,t,r,n)=>{e.target!==e.currentTarget||!X(r,n)||(e.key==="Enter"||e.key==="F2"?(e.preventDefault(),ee(t,r)):!r.cellEditor&&e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey&&(e.preventDefault(),ee(t,r,{text:e.key})))},We=(e,t,r)=>t.cellEditor?l.jsx("div",{className:"rk-grid__custom-editor",onBlur:n=>{n.currentTarget.contains(n.relatedTarget)||r.session===R.current&&(Y(e,t,{value:Q.current},{focus:!1})||L())},onKeyDown:n=>{n.key==="Escape"&&(n.preventDefault(),n.stopPropagation(),L(),Z(e.id,t.field))},children:h.createElement(t.cellEditor,{value:r.draft,row:e.row,rowIndex:e.index,field:t.field,column:t,onChange:n=>{Q.current=n,W(o=>o&&o.session===r.session?{...o,draft:n,invalid:!1}:o)},onCommit:(n,o="none")=>{r.session===R.current&&Y(e,t,{value:n===void 0?Q.current:n},{move:o})},onCancel:()=>{L(),Z(e.id,t.field)}})}):l.jsx("input",{autoFocus:!0,className:T("rk-grid__editor",r.invalid&&"rk-grid__editor--invalid",I.editor),style:{textAlign:t.align,...w.editor},value:r.draft===null||r.draft===void 0?"":String(r.draft),inputMode:t.type==="number"?"decimal":void 0,"aria-label":`Edit ${t.headerName??t.field}`,"aria-invalid":r.invalid||void 0,onChange:n=>{const o=n.target.value;W(s=>s&&{...s,draft:o,invalid:!1})},onFocus:n=>{const o=n.currentTarget;r.select==="all"?o.select():o.setSelectionRange(o.value.length,o.value.length)},onBlur:n=>{r.session===R.current&&(Y(e,t,{text:n.currentTarget.value},{focus:!1})||L())},onKeyDown:n=>qe(n,e,t)}),we=e=>{var r,n,o,s,f,a,u,x;const t=e.checkbox??{};return{variant:t.variant??Te,indicator:t.indicator,className:t.className,style:t.style,classNames:{root:T(I.checkbox,(r=t.classNames)==null?void 0:r.root),control:T(I.checkboxControl,(n=t.classNames)==null?void 0:n.control),indicator:T(I.checkboxIndicator,(o=t.classNames)==null?void 0:o.indicator),label:(s=t.classNames)==null?void 0:s.label},styles:{root:{...w.checkbox,...(f=t.styles)==null?void 0:f.root},control:{...w.checkboxControl,...(a=t.styles)==null?void 0:a.control},indicator:{...w.checkboxIndicator,...(u=t.styles)==null?void 0:u.indicator},label:(x=t.styles)==null?void 0:x.label}}},te=e=>e.stopPropagation(),Ge=(e,t)=>l.jsx("span",{className:"rk-grid__checkbox-cell",onClick:te,onDoubleClick:te,children:l.jsx(fe,{...we(e),checked:!!t.value,disabled:!t.editable,"aria-label":`Toggle ${e.headerName??e.field}`,onChange:r=>t.updateValue(r)})}),Ee=e=>G.filter(t=>se(e,U(e,t.row,t.index))),Oe=(e,t)=>{const r=new Map(Ee(e).map(s=>[s.index,s])),n=[],o=V.current.map((s,f)=>{const a=r.get(f);if(!a)return s;const u=s[e.field];if(!!u===t||e.validate&&!e.validate(t,s))return s;const x={...s,[e.field]:t};return n.push({rowId:a.id,rowIndex:f,field:e.field,oldValue:u,newValue:t,row:x}),x});n.length!==0&&(ge(o),n.forEach(s=>b==null?void 0:b(s)),p==null||p(o))},Ye=e=>{const t=Ee(e),r=t.length>0?t:G,n=r.filter(s=>!!s.row[e.field]).length,o=r.length>0&&n===r.length;return l.jsx("span",{className:"rk-grid__header-checkbox",onClick:te,onDoubleClick:te,children:l.jsx(fe,{...we(e),checked:o,indeterminate:n>0&&!o,disabled:t.length===0,label:e.headerName??e.field,onChange:s=>Oe(e,s)})})},He=j&&(S==="top"||S==="both"),Je=!j||S==="bottom"||S==="both",De=e=>l.jsxs("div",{className:T("rk-grid__footer",e==="top"&&"rk-grid__footer--top",I.footer),style:w.footer,"data-position":e,children:[l.jsx("span",{...g("rowCount","rk-grid__count"),children:F===0?"0 rows":`${Le}–${Ve} of ${F}`}),j&&l.jsxs("div",{...g("pagination","rk-grid__pagination"),children:[l.jsxs("label",{className:"rk-grid__page-size-label",children:["Rows per page",l.jsx("select",{value:B,onChange:t=>Fe(Number(t.target.value)),...g("pageSize","rk-grid__page-size"),children:(ne.includes(B)?ne:[...ne,B].sort((t,r)=>t-r)).map(t=>l.jsx("option",{value:t,children:t},t))})]}),l.jsx("button",{type:"button","aria-label":"First page",disabled:E===0,onClick:()=>q(0),...g("pageButton","rk-grid__page-btn"),children:"«"}),l.jsx("button",{type:"button","aria-label":"Previous page",disabled:E===0,onClick:()=>q(E-1),...g("pageButton","rk-grid__page-btn"),children:"‹"}),l.jsxs("span",{...g("pageInfo","rk-grid__page-info"),children:["Page ",E+1," of ",O]}),l.jsx("button",{type:"button","aria-label":"Next page",disabled:E>=O-1,onClick:()=>q(E+1),...g("pageButton","rk-grid__page-btn"),children:"›"}),l.jsx("button",{type:"button","aria-label":"Last page",disabled:E>=O-1,onClick:()=>q(O-1),...g("pageButton","rk-grid__page-btn"),children:"»"})]})]}),Qe=i.some(ve);return l.jsxs("div",{className:T("rk-grid",I.root,$e),style:{...w.root,...Me},children:[(C||he)&&l.jsxs("div",{...g("toolbar","rk-grid__toolbar"),children:[C?l.jsx("input",{type:"search",value:J,onChange:e=>Pe(e.target.value),placeholder:M,"aria-label":"Search all columns",...g("search","rk-grid__search")}):l.jsx("span",{}),he]}),He&&De("top"),l.jsx("div",{...g("scroll","rk-grid__scroll"),style:{...w.scroll,...ke!==void 0?{maxHeight:ke}:null},children:l.jsxs("table",{...g("table","rk-grid__table"),role:"grid",children:[l.jsxs("thead",{...g("thead","rk-grid__thead"),children:[l.jsx("tr",{...g("headerRow","rk-grid__tr"),children:i.map(e=>{const t=(N==null?void 0:N.field)===e.field?N.direction:null,r=_e(e);return l.jsx("th",{scope:"col","aria-sort":t?t==="asc"?"ascending":"descending":r?"none":void 0,tabIndex:r?0:void 0,onClick:()=>je(e),onKeyDown:n=>{r&&n.target===n.currentTarget&&(n.key==="Enter"||n.key===" ")&&(n.preventDefault(),je(e))},className:T("rk-grid__th",r&&"rk-grid__th--sortable",I.headerCell,e.headerClassName),style:{width:e.width,minWidth:e.minWidth,textAlign:e.align,...w.headerCell,...e.headerStyle},children:l.jsxs("span",{className:"rk-grid__th-content",children:[e.headerRenderer?h.createElement(e.headerRenderer,{column:e,sortDirection:t}):e.headerCheckbox&&e.type==="boolean"?Ye(e):e.headerName??e.field,r&&l.jsx("span",{className:"rk-grid__sort","aria-hidden":"true",children:t==="asc"?"▲":t==="desc"?"▼":"↕"})]})},e.field)})}),Qe&&l.jsx("tr",{...g("filterRow","rk-grid__tr"),children:i.map(e=>l.jsx("th",{...g("filterCell","rk-grid__filter-cell"),children:ve(e)&&(e.filterRenderer?h.createElement(e.filterRenderer,{column:e,value:A[e.field]??"",onChange:t=>me(r=>({...r,[e.field]:t}))}):l.jsx("input",{value:A[e.field]??"",onChange:t=>me(r=>({...r,[e.field]:t.target.value})),placeholder:"Filter","aria-label":`Filter ${e.headerName??e.field}`,...g("filterInput","rk-grid__filter-input")}))},e.field))})]}),l.jsx("tbody",{...g("tbody","rk-grid__tbody"),children:$.length===0?l.jsx("tr",{children:l.jsx("td",{colSpan:i.length,...g("empty","rk-grid__empty"),children:Ie})}):$.map((e,t)=>{const{row:r,id:n,index:o}=e,s=typeof ie=="function"?ie(r,o):ie,f=typeof oe=="function"?oe(r,o):oe;return l.jsx("tr",{onClick:le?()=>le(r,o):void 0,className:T("rk-grid__tr","rk-grid__row",Be&&t%2===1&&"rk-grid__row--striped",le&&"rk-grid__row--clickable",I.row,s),style:{...w.row,...f},children:i.map(a=>{const u=Ae(a,e),x=typeof a.cellClassName=="function"?a.cellClassName(u):a.cellClassName,y=typeof a.cellStyle=="function"?a.cellStyle(u):a.cellStyle,de=z!==null&&z.id===n&&z.field===a.field,ce=X(a,u);return l.jsx("td",{ref:re=>{const Ce=Se(n,a.field);re?ae.current.set(Ce,re):ae.current.delete(Ce)},tabIndex:ce?0:void 0,onDoubleClick:ce?()=>ee(e,a):void 0,onKeyDown:re=>ze(re,e,a,u),className:T("rk-grid__td",ce&&"rk-grid__td--editable",de&&"rk-grid__td--editing",I.cell,x),style:{textAlign:a.align,...w.cell,...y},children:de&&z?We(e,a,z):a.cellRenderer?h.createElement(a.cellRenderer,u):a.type==="boolean"&&!a.cellEditor?Ge(a,u):u.formattedValue},a.field)})},n)})})]})}),Je&&De("bottom")]})}exports.Alert=rt;exports.Badge=tt;exports.Button=Xe;exports.Card=et;exports.Checkbox=fe;exports.DataGrid=at;exports.Input=Ze;exports.Modal=nt;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),h=require("react"),yn=require("react-dom"),ye=(...r)=>r.filter(Boolean).join(" ");function vn(){return o.jsx("svg",{viewBox:"0 0 16 16",width:"100%",height:"100%","aria-hidden":"true",focusable:"false",children:o.jsx("path",{d:"M3.5 8.5l3 3 6-7",fill:"none",stroke:"currentColor",strokeWidth:"2.2",strokeLinecap:"round",strokeLinejoin:"round"})})}function jn(){return o.jsx("svg",{viewBox:"0 0 16 16",width:"100%",height:"100%","aria-hidden":"true",focusable:"false",children:o.jsx("path",{d:"M4 8h8",fill:"none",stroke:"currentColor",strokeWidth:"2.2",strokeLinecap:"round"})})}function ee({checked:r,onChange:a,indeterminate:c=!1,variant:d="native",disabled:g=!1,label:f,"aria-label":x,id:_,name:w,indicator:L,className:F,style:b,classNames:C={},styles:E={}}){const M=c?"indeterminate":r?"checked":"unchecked";return o.jsxs("label",{className:ye("rk-checkbox",`rk-checkbox--${d}`,M==="checked"&&"rk-checkbox--checked",c&&"rk-checkbox--indeterminate",g&&"rk-checkbox--disabled",C.root,F),style:{...E.root,...b},"data-state":M,children:[d==="native"?o.jsx("input",{type:"checkbox",id:_,name:w,ref:I=>{I&&(I.indeterminate=c)},className:ye("rk-checkbox__control",C.control),style:E.control,checked:r,disabled:g,"aria-label":x,"data-state":M,onChange:I=>a(I.target.checked)}):o.jsx("button",{type:"button",role:"checkbox",id:_,className:ye("rk-checkbox__control",C.control),style:E.control,"aria-checked":c?"mixed":r,"aria-label":x,disabled:g,"data-state":M,onClick:()=>a(!r),children:o.jsx("span",{className:ye("rk-checkbox__indicator",L!==void 0&&!c&&"rk-checkbox__indicator--custom",C.indicator),style:E.indicator,"data-state":M,"aria-hidden":"true",children:c?d==="tick"?o.jsx(jn,{}):null:L!==void 0?L:d==="tick"?o.jsx(vn,{}):null})}),f!=null&&f!==!1&&f!==""&&o.jsx("span",{className:ye("rk-checkbox__label",C.label),style:E.label,children:f})]})}const wn=/^(\d{4})-(\d{2})-(\d{2})$/,fr=r=>String(r).padStart(2,"0");function we(r){const a=wn.exec(r);if(!a)return null;const[c,d,g]=[Number(a[1]),Number(a[2]),Number(a[3])],f=new Date(c,d-1,g);return f.getFullYear()===c&&f.getMonth()===d-1&&f.getDate()===g?f:null}function U(r){var a;if(r instanceof Date)return Number.isNaN(r.getTime())?null:`${r.getFullYear()}-${fr(r.getMonth()+1)}-${fr(r.getDate())}`;if(typeof r=="number")return Number.isFinite(r)?U(new Date(r)):null;if(typeof r=="string"){const c=r.trim();if(c==="")return null;const d=(a=/^\d{4}-\d{2}-\d{2}/.exec(c))==null?void 0:a[0];if(d)return we(d)?d:null;const g=Date.parse(c);return Number.isNaN(g)?null:U(new Date(g))}return null}function Nn(r,a,c){const d=U(r);return d?we(d).toLocaleDateString(a,c??{year:"numeric",month:"short",day:"numeric"}):r==null?"":String(r)}function En(r,a){var c;return r===""?null:a instanceof Date?we(r):typeof a=="number"?((c=we(r))==null?void 0:c.getTime())??null:r}function ur(r){return r.filterType?r.filterType:r.type==="number"?"number":r.type==="date"?"date":r.type==="boolean"?"select":"text"}const Sn=r=>typeof r=="object"&&r!==null&&!Array.isArray(r);function mr(r){if(r==null)return!1;if(typeof r=="string")return r.trim()!=="";if(Array.isArray(r))return r.length>0;if(Sn(r)){const a=r;return typeof a.min=="number"||typeof a.max=="number"||!!a.from||!!a.to}return!1}function Cn(r,a,c,d){switch(r){case"text":return c.toLowerCase().includes(String(a).trim().toLowerCase());case"exact":return c.toLowerCase()===String(a).trim().toLowerCase();case"number":{const{min:g,max:f}=a,x=typeof d=="number"?d:d==null||d===""?NaN:Number(d);return Number.isNaN(x)?!1:(typeof g!="number"||x>=g)&&(typeof f!="number"||x<=f)}case"date":{const{from:g,to:f}=a,x=U(d);return x?(!g||x>=g)&&(!f||x<=f):!1}case"select":return a.includes(String(d??""))}}function Dn(r,a,c,d){if(r.filterOptions)return r.filterOptions.map(f=>typeof f=="string"?{value:f,label:f}:f);if(r.type==="boolean")return[{value:"true",label:"Yes"},{value:"false",label:"No"}];const g=new Map;for(const f of a){const x=c(f);if(x==null||x==="")continue;const _=String(x);g.has(_)||g.set(_,d(f))}return[...g].map(([f,x])=>({value:f,label:x})).sort((f,x)=>f.label.localeCompare(x.label,void 0,{numeric:!0}))}const Et=typeof window<"u"?h.useLayoutEffect:h.useEffect;function ve(r,a,c){const[d,g]=h.useState(a),f=r!==void 0,x=f?r:d,_=h.useCallback(w=>{f||g(w),c==null||c(w)},[f,c]);return[x,_]}const S=(...r)=>r.filter(Boolean).join(" "),Ze=r=>r.headerName??(r.type==="boolean"?"":r.field),fe=r=>Ze(r)||r.field;function xr({anchorRef:r,open:a,onClose:c,label:d,theme:g,className:f,style:x,children:_}){const w=h.useRef(null),[L,F]=h.useState({top:0,left:0}),b=h.useCallback(()=>{var O;const C=r.current;if(!C)return;const E=C.getBoundingClientRect(),M=((O=w.current)==null?void 0:O.offsetWidth)??260,I=Math.max(8,Math.min(E.left,window.innerWidth-M-8));F({top:E.bottom+6,left:I})},[r]);return Et(()=>{a&&b()},[a,b]),h.useEffect(()=>{if(!a)return;const C=M=>{var O,te;const I=M.target;(O=w.current)!=null&&O.contains(I)||(te=r.current)!=null&&te.contains(I)||c()},E=M=>{var I;M.key==="Escape"&&(c(),(I=r.current)==null||I.focus())};return document.addEventListener("mousedown",C),document.addEventListener("keydown",E),window.addEventListener("resize",b),window.addEventListener("scroll",b,!0),()=>{document.removeEventListener("mousedown",C),document.removeEventListener("keydown",E),window.removeEventListener("resize",b),window.removeEventListener("scroll",b,!0)}},[a,c,b,r]),!a||typeof document>"u"?null:yn.createPortal(o.jsx("div",{ref:w,role:"dialog","aria-label":d,"data-rk-theme":g||void 0,className:S("rk-grid-popup",f),style:{position:"fixed",top:L.top,left:L.left,...x},children:_}),document.body)}const Qe=r=>{if(r.trim()==="")return;const a=Number(r);return Number.isFinite(a)?a:void 0},br=r=>typeof r=="object"&&r!==null&&!Array.isArray(r);function Mn({value:r,onChange:a,label:c,inputClassName:d,inputStyle:g}){const f=br(r)?r:{},[x,_]=h.useState(f.min===void 0?"":String(f.min)),[w,L]=h.useState(f.max===void 0?"":String(f.max));h.useEffect(()=>{Qe(x)!==f.min&&_(f.min===void 0?"":String(f.min)),Qe(w)!==f.max&&L(f.max===void 0?"":String(f.max))},[f.min,f.max]);const F=(b,C)=>{const E=Qe(b),M=Qe(C);a(E===void 0&&M===void 0?void 0:{min:E,max:M})};return o.jsxs("div",{className:"rk-grid__filter-fields",children:[o.jsxs("label",{className:"rk-grid__filter-field",children:[o.jsx("span",{children:"Min"}),o.jsx("input",{autoFocus:!0,type:"number",className:S("rk-grid__filter-input",d),style:g,value:x,"aria-label":`Minimum ${c}`,onChange:b=>{_(b.target.value),F(b.target.value,w)}})]}),o.jsxs("label",{className:"rk-grid__filter-field",children:[o.jsx("span",{children:"Max"}),o.jsx("input",{type:"number",className:S("rk-grid__filter-input",d),style:g,value:w,"aria-label":`Maximum ${c}`,onChange:b=>{L(b.target.value),F(x,b.target.value)}})]})]})}function Tn({value:r,onChange:a,label:c,inputClassName:d,inputStyle:g}){const f=br(r)?r:{},x=(_,w)=>a(!_&&!w?void 0:{from:_||void 0,to:w||void 0});return o.jsxs("div",{className:"rk-grid__filter-fields",children:[o.jsxs("label",{className:"rk-grid__filter-field",children:[o.jsx("span",{children:"From"}),o.jsx("input",{autoFocus:!0,type:"date",className:S("rk-grid__filter-input",d),style:g,value:f.from??"","aria-label":`${c} from`,onChange:_=>x(_.target.value,f.to)})]}),o.jsxs("label",{className:"rk-grid__filter-field",children:[o.jsx("span",{children:"To"}),o.jsx("input",{type:"date",className:S("rk-grid__filter-input",d),style:g,value:f.to??"","aria-label":`${c} to`,onChange:_=>x(f.from,_.target.value)})]})]})}function In({value:r,onChange:a,options:c}){const d=Array.isArray(r)?r:[],g=(f,x)=>{const _=x?[...d,f]:d.filter(w=>w!==f);a(_.length?_:void 0)};return o.jsxs("div",{className:"rk-grid__filter-fields rk-grid__filter-options",role:"group",children:[c.length===0&&o.jsx("span",{className:"rk-grid__filter-empty",children:"No values"}),c.map(f=>o.jsx(ee,{checked:d.includes(f.value),onChange:x=>g(f.value,x),label:f.label??f.value},f.value))]})}function Ln({column:r,label:a,kind:c,value:d,onChange:g,options:f,theme:x,indicatorClassName:_,indicatorStyle:w,popupClassName:L,popupStyle:F,inputClassName:b,inputStyle:C}){const[E,M]=h.useState(!1),I=h.useRef(null),O=mr(d),te=h.useCallback(()=>M(!1),[]),Ne=typeof d=="string"?d:"",et=()=>{if(r.filterRenderer)return h.createElement(r.filterRenderer,{column:r,value:Ne,onChange:W=>g(W||void 0)});switch(c){case"number":return o.jsx(Mn,{value:d,onChange:g,label:a,inputClassName:b,inputStyle:C});case"date":return o.jsx(Tn,{value:d,onChange:g,label:a,inputClassName:b,inputStyle:C});case"select":return o.jsx(In,{value:d,onChange:g,options:f});default:return o.jsx("input",{autoFocus:!0,type:"text",className:S("rk-grid__filter-input",b),style:C,value:Ne,placeholder:r.filterPlaceholder??(c==="exact"?"Exactly…":`Filter ${a}…`),"aria-label":`Filter text for ${a}`,onChange:W=>g(W.target.value||void 0),onKeyDown:W=>{var re;W.key==="Enter"&&(M(!1),(re=I.current)==null||re.focus())}})}};return o.jsxs(o.Fragment,{children:[o.jsx("button",{ref:I,type:"button",className:S("rk-grid__filter-btn",O&&"rk-grid__filter-btn--active",E&&"rk-grid__filter-btn--open",_),style:w,"aria-label":`Filter ${a}`,"aria-haspopup":"dialog","aria-expanded":E,"data-active":O||void 0,onClick:W=>{W.stopPropagation(),M(re=>!re)},onKeyDown:W=>W.stopPropagation(),children:r.filterIndicator?h.createElement(r.filterIndicator,{column:r,active:O,open:E}):o.jsx("span",{className:"rk-grid__filter-dot","aria-hidden":"true"})}),o.jsxs(xr,{anchorRef:I,open:E,onClose:te,label:`Filter ${a}`,theme:x,className:L,style:F,children:[et(),O&&o.jsx("button",{type:"button",className:"rk-grid__filter-clear",onClick:()=>g(void 0),children:"Clear"})]})]})}function Fn({columns:r,hidden:a,onToggle:c,theme:d,className:g,style:f}){const[x,_]=h.useState(!1),w=h.useRef(null),L=h.useCallback(()=>_(!1),[]),F=r.filter(b=>!a.has(b.field)).length;return o.jsxs(o.Fragment,{children:[o.jsx("button",{ref:w,type:"button",className:S("rk-grid__tool-btn",g),style:f,"aria-haspopup":"dialog","aria-expanded":x,onClick:()=>_(b=>!b),children:"Columns"}),o.jsx(xr,{anchorRef:w,open:x,onClose:L,label:"Show or hide columns",theme:d,children:o.jsx("div",{className:"rk-grid__filter-fields rk-grid__filter-options",role:"group","aria-label":"Columns",children:r.filter(b=>b.hideable!==!1).map(b=>{const C=!a.has(b.field);return o.jsx(ee,{checked:C,disabled:C&&F<=1,onChange:E=>c(b.field,!E),label:fe(b)},b.field)})})})]})}const Rn=/^[=+\-@\t\r]/;function $n(r,a,c){if(r==null)return"";let d=String(r);return c&&typeof r=="string"&&Rn.test(d)&&!Number.isFinite(Number(d))&&(d=`'${d}`),d.includes(a)||/["\r\n]/.test(d)?`"${d.replace(/"/g,'""')}"`:d}function On(r,a,c={}){const{delimiter:d=",",sanitize:g=!0}=c,f=x=>x.map(_=>$n(_,d,g)).join(d);return[f(r),...a.map(f)].join(`\r
|
|
2
|
+
`)}function Pn(r,a){if(typeof document>"u")return;const c=new Blob(["\uFEFF",r],{type:"text/csv;charset=utf-8"}),d=URL.createObjectURL(c),g=document.createElement("a");g.href=d,g.download=a,g.style.display="none",document.body.appendChild(g),g.click(),g.remove(),setTimeout(()=>URL.revokeObjectURL(d),1e3)}const St=new Set(["__proto__","prototype","constructor"]),kr=(r,a)=>Object.prototype.hasOwnProperty.call(r,a);function B(r,a){if(r===null||typeof r!="object")return;if(kr(r,a))return r[a];let c=r;for(const d of a.split(".")){if(c==null||typeof c!="object"||St.has(d))return;c=c[d]}return c}function hr(r,a,c){if(Array.isArray(r)){const d=[...r];return d[a]=c,d}return{...r,[a]:c}}function Ct(r,a,c){const d=r??{};if(kr(d,a)||!a.includes("."))return St.has(a)?r:hr(d,a,c);const[g,...f]=a.split(".");if(St.has(g))return r;const x=d[g];return hr(d,g,Ct(x!==null&&typeof x=="object"?x:{},f.join("."),c))}const G=44,An=150,pr=10,Nt=(r,a)=>`${typeof r}:${r}\0${a}`;function je(r,a){const c=B(a,r.field);return r.valueFormatter?r.valueFormatter(c,a):r.type==="boolean"&&typeof c=="boolean"?c?"Yes":"No":r.type==="date"?Nn(c,r.dateLocale,r.dateFormat):c==null?"":c instanceof Date?c.toLocaleDateString():String(c)}function Kn(r,a,c){if(c.type==="date"){const d=U(r)??"",g=U(a)??"";return d<g?-1:d>g?1:0}return typeof r=="number"&&typeof a=="number"?r-a:r instanceof Date&&a instanceof Date?r.getTime()-a.getTime():typeof r=="boolean"&&typeof a=="boolean"?Number(r)-Number(a):String(r).localeCompare(String(a),void 0,{numeric:!0,sensitivity:"base"})}const Bn=r=>r?Array.isArray(r)?r:[r]:[],gr=r=>r.type==="date"&&r.validity.badInput;function Wn({columns:r,rows:a,getRowId:c,editable:d=!1,enterMovesDown:g=!0,onCellEdit:f,onRowsChange:x,rowSelection:_=!1,selectedRowIds:w,defaultSelectedRowIds:L,onSelectionChange:F,isRowSelectable:b,sort:C,defaultSort:E=null,onSortChange:M,multiSort:I=!1,searchable:O=!1,searchPlaceholder:te="Search…",search:Ne,onSearchChange:et,filters:W,onFiltersChange:re,pagination:z=!1,paginationPosition:Ee="bottom",pageSize:_r=10,pageSizeOptions:tt=[5,10,25,50],page:yr,onPageChange:vr,onPageSizeChange:rt,serverSide:K=!1,rowCount:jr,onQueryChange:Dt,queryDebounce:Mt=250,loading:wr,loadingRows:Nr,skeletonRow:Tt,errorMessage:Er="Could not load the data.",columnMenu:It=!1,onColumnVisibilityChange:nt,keyboardNavigation:it=!1,virtualize:V=!1,rowHeight:H=40,overscan:Lt=6,exportable:Se=!1,apiRef:ue,onRowClick:ot,toolbar:Ft,emptyMessage:Sr="No rows to show",striped:Cr=!1,stripeColors:Ce,checkboxVariant:st="native",animateRows:Rt=!0,theme:lt,maxHeight:De,className:Dr,style:Mr,classNames:D={},styles:v={},rowClassName:at,rowStyle:ct}){const T=(e,t)=>({className:S(t,D[e]),style:v[e]}),[Me,$t]=h.useState(a),ne=h.useRef(a);h.useEffect(()=>{ne.current=a,$t(a)},[a]);const Ot=e=>{ne.current=e,$t(e)},[he,Tr]=ve(Ne,"",et),[ie,Ir]=ve(W,{},re),[P,Lr]=ve(C,Bn(E),M),[dt,oe]=ve(yr,0,vr),[R,Fr]=h.useState(_r),Rr=e=>{Fr(e),rt==null||rt(e)},[Te,$r]=h.useState(()=>new Set(r.filter(e=>e.hidden).map(e=>e.field))),Or=(e,t)=>{const n=new Set(Te);t?n.add(e):n.delete(e),$r(n),nt==null||nt([...n])},[ft,Pt]=h.useState({}),[Ie,Pr]=h.useState({}),[Vn,Ar]=h.useState(0),pe=h.useRef(new Map),[ge,se]=h.useState(null),le=h.useRef(0),Le=h.useRef(null),Fe=h.useRef(new Map),[ut,At]=h.useState(null),ht=h.useRef(null),me=h.useRef(null),[pt,Kt]=h.useState({top:0,height:0}),y=h.useMemo(()=>{const e=r.filter(t=>!Te.has(t.field));return[...e.filter(t=>t.pinned==="left"),...e.filter(t=>t.pinned!=="left"&&t.pinned!=="right"),...e.filter(t=>t.pinned==="right")]},[r,Te]),gt=e=>e.sortable===!0,A=_==="single"?"single":_?"multiple":null,xe=y.length+(A?1:0),ae=h.useMemo(()=>Me.map((e,t)=>({row:e,index:t,id:c?c(e,t):t})),[Me,c]),Bt=h.useRef(new Map);ae.forEach(e=>Bt.current.set(e.id,e.row));const Re=h.useMemo(()=>Object.entries(ie).filter(([e,t])=>{const n=y.find(l=>l.field===e);return!!n&&!!n.filterable&&mr(t)}),[ie,y]),[Kr,Br]=h.useState(he);h.useEffect(()=>{if(!K)return;const e=setTimeout(()=>Br(he),Mt);return()=>clearTimeout(e)},[he,K,Mt]);const ce=K?Kr:he,Wt=e=>e.filterRenderer?"text":ur(e),J=h.useMemo(()=>{if(K)return ae;const e=ce.trim().toLowerCase();let t=ae.filter(({row:l})=>e&&!y.some(i=>je(i,l).toLowerCase().includes(e))?!1:Re.every(([i,s])=>{const m=y.find(p=>p.field===i);return Cn(Wt(m),s,je(m,l),B(l,i))}));const n=P.map(l=>({col:y.find(i=>i.field===l.field),dir:l.direction==="asc"?1:-1})).filter(l=>!!l.col);return n.length&&(t=[...t].sort((l,i)=>{for(const{col:s,dir:m}of n){const p=B(l.row,s.field),u=B(i.row,s.field),k=p==null||p==="",N=u==null||u==="";if(k||N){if(k!==N)return k?1:-1;continue}const Xe=s.comparator?s.comparator(p,u,l.row,i.row):Kn(p,u,s);if(Xe!==0)return Xe*m}return 0})),t},[ae,y,ce,Re,P,K]),$e=JSON.stringify([ce,ie,P,R]),Vt=h.useRef($e);h.useEffect(()=>{Vt.current!==$e&&(Vt.current=$e,oe(0))},[$e]);const de=K?jr??ae.length:J.length,Y=z?Math.max(1,Math.ceil(de/R)):1,$=Math.min(dt,Y-1),j=z&&!K?J.slice($*R,$*R+R):J,Wr=de===0?0:z?$*R+1:1,Vr=z?Math.min(de,($+1)*R):de,mt=h.useMemo(()=>({sort:P.filter(e=>{const t=r.find(n=>n.field===e.field);return!!t&>(t)}),filters:Object.fromEntries(Re),search:ce.trim(),page:$,pageSize:R}),[P,r,Re,ce,$,R]),Ur=JSON.stringify(mt),Oe=h.useRef(mt);Oe.current=mt;const Pe=h.useRef(Dt);Pe.current=Dt;const[qr,Ae]=h.useState(!1),[zr,xt]=h.useState(!1),bt=h.useRef(0),Ke=h.useCallback(e=>{var l;const t=++bt.current,n=(l=Pe.current)==null?void 0:l.call(Pe,e);n&&typeof n.then=="function"?(Ae(!0),xt(!1),n.then(()=>{t===bt.current&&Ae(!1)},()=>{t===bt.current&&(Ae(!1),xt(!0))})):(Ae(!1),xt(!1))},[]);h.useEffect(()=>{K&&Ke(Oe.current)},[K,Ur,Ke]),h.useEffect(()=>{K&&z&&dt>Y-1&&oe(Y-1)},[K,z,dt,Y]);const kt=wr??qr,Ut=e=>e.map(t=>Bt.current.get(t)).filter(t=>t!==void 0),[q,Be]=ve(w,L??[],e=>F==null?void 0:F({ids:e,rows:Ut(e)})),_t=h.useMemo(()=>new Set(q),[q]),We=e=>b?b(e):!0,Ve=h.useRef(null),qt=h.useRef(!1),Hr=(e,t)=>{if(!A||!We(e.row))return;if(A==="single"){Be(t?[e.id]:[]),Ve.current=e.id;return}const n=new Set(q),l=qt.current&&Ve.current!==null?j.findIndex(s=>s.id===Ve.current):-1,i=j.findIndex(s=>s.id===e.id);if(l>=0&&i>=0)for(let s=Math.min(l,i);s<=Math.max(l,i);s++)We(j[s].row)&&(t?n.add(j[s].id):n.delete(j[s].id));else t?n.add(e.id):n.delete(e.id);Ve.current=e.id,Be([...n])},be=h.useMemo(()=>J.filter(e=>We(e.row)),[J,b]),zt=be.filter(e=>_t.has(e.id)).length,Ht=be.length>0&&zt===be.length,Jt=e=>{const t=new Set(q);be.forEach(n=>e?t.add(n.id):t.delete(n.id)),Be([...t])},Ue=(e,t,n)=>({value:B(t,e.field),formattedValue:je(e,t),row:t,rowIndex:n,field:e.field,column:e}),yt=(e,t)=>{const n=e.editable??d;return typeof n=="function"?n(t):!!n},qe=(e,t)=>yt(e,t)&&!(e.type==="boolean"&&!e.cellEditor),Jr=(e,t)=>{const n=Ue(e,t.row,t.index),l=yt(e,n);return{...n,editable:l,updateValue:i=>l&&Gt(t,e,{value:i})}},Yt=(e,t)=>{if(!gt(e))return;const n=P.find(s=>s.field===e.field),l=n?n.direction==="asc"?"desc":null:"asc";let i;t&&I?l?n?i=P.map(s=>s.field===e.field?{...s,direction:l}:s):i=[...P,{field:e.field,direction:l}]:i=P.filter(s=>s.field!==e.field):i=l?[{field:e.field,direction:l}]:[],Lr(i)},ze=(e,t)=>{var n;return(n=Fe.current.get(Nt(e,t)))==null?void 0:n.focus()},X=()=>{le.current+=1,se(null)},Yr=e=>{for(const t of ne.current){const n=B(t,e.field);if(n!=null&&n!=="")return n}},He=(e,t,n={})=>{if(!qe(t,Ue(t,e.row,e.index)))return!1;const l=B(e.row,t.field);let i;return t.cellEditor?i=l:t.type==="date"?i=U(l)??"":i=n.text??(l==null?"":String(l)),Le.current=i,le.current+=1,se({id:e.id,field:t.field,draft:i,session:le.current,select:n.select??"end",invalid:!1}),!0},Gt=(e,t,n)=>{const l=ne.current[e.index]??e.row,i=B(l,t.field);let s;if("value"in n)s=n.value;else if(t.valueParser)s=t.valueParser(n.text,l);else if(t.type==="date"){if(n.text!==""&&!we(n.text))return!1;s=En(n.text,i??Yr(t))}else if(t.type==="number")if(n.text.trim()==="")s=null;else{const u=Number(n.text);if(!Number.isFinite(u))return!1;s=u}else s=n.text;if(t.type==="date"){if(U(s)===U(i))return!0;const u=U(s);if(u&&(t.dateMin&&u<t.dateMin||t.dateMax&&u>t.dateMax))return!1}else if(Object.is(s,i))return!0;if(t.validate&&!t.validate(s,l))return!1;const m=Ct(l,t.field,s),p=ne.current.map((u,k)=>k===e.index?m:u);return Ot(p),f==null||f({rowId:e.id,rowIndex:e.index,field:t.field,oldValue:i,newValue:s,row:m}),x==null||x(p),!0},Xt=(e,t,n)=>{const l=j.findIndex(k=>k.id===e.id),i=y.findIndex(k=>k.field===t);if(l<0||i<0)return null;const s=(k,N)=>qe(N,Ue(N,k.row,k.index));if(n==="down"||n==="up"){const k=n==="down"?1:-1;for(let N=l+k;N>=0&&N<j.length;N+=k)if(s(j[N],y[i]))return{entry:j[N],col:y[i]};return null}const m=n==="right"?1:-1;let p=l,u=i+m;for(;p>=0&&p<j.length;){for(;u>=0&&u<y.length;){if(s(j[p],y[u]))return{entry:j[p],col:y[u]};u+=m}p+=m,u=m>0?0:y.length-1}return null},ke=(e,t,n,l={})=>{const{move:i="none",focus:s=!0}=l;if(!Gt(e,t,n))return se(p=>p&&{...p,invalid:!0}),!1;const m=i==="none"?null:Xt(e,t.field,i);return m?He(m.entry,m.col,{select:"all"}):(X(),s&&ze(e.id,t.field)),!0},Gr=(e,t,n)=>{if(e.nativeEvent.isComposing)return;const l=e.currentTarget.value,i=gr(e.currentTarget);if(e.key==="Enter"){if(e.preventDefault(),i)return se(m=>m&&{...m,invalid:!0});const s=g?e.shiftKey?"up":"down":"none";ke(t,n,{text:l},{move:s})}else if(e.key==="Escape")e.preventDefault(),X(),ze(t.id,n.field);else if(e.key==="Tab"&&!i){const s=e.shiftKey?"left":"right";Xt(t,n.field,s)&&(e.preventDefault(),ke(t,n,{text:l},{move:s}))}},Xr=(e,t)=>{var s;const n=j[e],l=y[t];if(!n||!l)return;At({id:n.id,field:l.field}),ht.current=Nt(n.id,l.field);const i=me.current;if(V&&i){const m=((s=i.querySelector("thead"))==null?void 0:s.clientHeight)??0,p=e*H;p<i.scrollTop?i.scrollTo({top:p,behavior:"auto"}):p+H>i.scrollTop+i.clientHeight-m&&i.scrollTo({top:p+H-i.clientHeight+m,behavior:"auto"})}};h.useEffect(()=>{const e=ht.current;if(!e)return;const t=Fe.current.get(e);t&&(ht.current=null,t.focus())});const Qr=(e,t,n)=>{if(!it)return!1;let l=j.findIndex(s=>s.id===t.id),i=y.findIndex(s=>s.field===n.field);if(l<0||i<0)return!1;switch(e.key){case"ArrowDown":l+=1;break;case"ArrowUp":l-=1;break;case"ArrowRight":i+=1;break;case"ArrowLeft":i-=1;break;case"PageDown":l+=pr;break;case"PageUp":l-=pr;break;case"Home":i=0,(e.ctrlKey||e.metaKey)&&(l=0);break;case"End":i=y.length-1,(e.ctrlKey||e.metaKey)&&(l=j.length-1);break;default:return!1}return e.preventDefault(),Xr(Math.max(0,Math.min(j.length-1,l)),Math.max(0,Math.min(y.length-1,i))),!0},Zr=(e,t,n,l)=>{e.target===e.currentTarget&&(Qr(e,t,n)||qe(n,l)&&(e.key==="Enter"||e.key==="F2"?(e.preventDefault(),He(t,n)):!n.cellEditor&&n.type!=="date"&&e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey&&(e.preventDefault(),He(t,n,{text:e.key}))))};Et(()=>{if(!V||!me.current)return;const e=me.current,t=()=>Kt(l=>l.height===e.clientHeight?l:{...l,height:e.clientHeight});if(t(),typeof ResizeObserver>"u")return;const n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[V]);const _e=V&&!kt&&j.length>0,en=pt.height||(typeof De=="number"?De:400),Je=_e?Math.max(0,Math.floor(pt.top/H)-Lt):0,vt=_e?Math.min(j.length,Math.ceil((pt.top+en)/H)+Lt):j.length,tn=_e?j.slice(Je,vt):j,Qt=`${$}|${R}|${JSON.stringify(P)}|${ce}|${JSON.stringify(ie)}`,Zt=h.useRef(!0);h.useEffect(()=>{if(Zt.current){Zt.current=!1;return}const e=me.current;e&&typeof e.scrollTo=="function"&&e.scrollTop>0&&e.scrollTo({top:0,behavior:"smooth"})},[Qt]);const jt=Object.keys(ft).length>0,Ye=e=>ft[e.field]??(typeof e.width=="number"?e.width:An),rn=e=>Math.max(40,typeof e.minWidth=="number"?e.minWidth:60),nn=(e,t)=>{e.preventDefault(),e.stopPropagation();const n={...ft};jt||y.forEach(k=>{var N;return n[k.field]=((N=pe.current.get(k.field))==null?void 0:N.offsetWidth)??Ye(k)});const l=e.clientX,i=n[t.field]??Ye(t),s=e.currentTarget;s.setPointerCapture(e.pointerId),Pt(n);const m=k=>Math.min(t.maxWidth??1/0,Math.max(rn(t),Math.round(k))),p=k=>Pt(N=>({...N,[t.field]:m(i+k.clientX-l)})),u=()=>{s.removeEventListener("pointermove",p),s.removeEventListener("pointerup",u),s.removeEventListener("pointercancel",u)};s.addEventListener("pointermove",p),s.addEventListener("pointerup",u),s.addEventListener("pointercancel",u)};Et(()=>{var i,s;const e={};let t=A&&y.some(m=>m.pinned==="left")?G:0;for(const m of y)m.pinned==="left"&&(e[m.field]=t,t+=((i=pe.current.get(m.field))==null?void 0:i.offsetWidth)??0);let n=0;for(const m of[...y].reverse())m.pinned==="right"&&(e[m.field]=n,n+=((s=pe.current.get(m.field))==null?void 0:s.offsetWidth)??0);const l=Object.keys(e);(l.length!==Object.keys(Ie).length||l.some(m=>e[m]!==Ie[m]))&&Pr(e)}),h.useEffect(()=>{const e=()=>Ar(t=>t+1);return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);const er=y.map(e=>e.pinned).lastIndexOf("left"),on=y.findIndex(e=>e.pinned==="right"),Ge=er>=0,tr=(e,t)=>({className:e.pinned?S("rk-grid__pinned",`rk-grid__pinned--${e.pinned}`,t===er&&"rk-grid__pinned--edge",t===on&&"rk-grid__pinned--edge"):void 0,style:e.pinned==="left"?{left:Ie[e.field]??0}:e.pinned==="right"?{right:Ie[e.field]??0}:void 0}),rr=typeof Se=="object"?Se:{},nr=(e={})=>{const t={...rr,...e},n=t.scope??"filtered",l=n==="page"?j:n==="selected"?ae.filter(p=>_t.has(p.id)):J,i=t.includeHidden?r:y,s=i.map(p=>Ze(p)||p.field),m=l.map(({row:p})=>i.map(u=>{const k=B(p,u.field);return u.exportValue?u.exportValue(k,p):u.type==="date"?U(k)??"":je(u,p)}));return On(s,m,{sanitize:t.sanitize})},ir=(e={})=>{const t={...rr,...e};Pn(nr(e),`${t.filename??"export"}.csv`)};h.useEffect(()=>{ue&&(ue.current={getCsv:nr,exportCsv:ir,getSelectedRows:()=>Ut(q),getSelectedRowIds:()=>q,selectAll:()=>Jt(!0),clearSelection:()=>Be([]),refresh:()=>{K&&Ke(Oe.current)}})}),h.useEffect(()=>()=>{ue&&(ue.current=null)},[ue]);const or=e=>{var n,l,i,s,m,p,u,k;const t=e.checkbox??{};return{variant:t.variant??st,indicator:t.indicator,className:t.className,style:t.style,classNames:{root:S(D.checkbox,(n=t.classNames)==null?void 0:n.root),control:S(D.checkboxControl,(l=t.classNames)==null?void 0:l.control),indicator:S(D.checkboxIndicator,(i=t.classNames)==null?void 0:i.indicator),label:(s=t.classNames)==null?void 0:s.label},styles:{root:{...v.checkbox,...(m=t.styles)==null?void 0:m.root},control:{...v.checkboxControl,...(p=t.styles)==null?void 0:p.control},indicator:{...v.checkboxIndicator,...(u=t.styles)==null?void 0:u.indicator},label:(k=t.styles)==null?void 0:k.label}}},Q=e=>e.stopPropagation(),sn=(e,t)=>o.jsx("span",{className:"rk-grid__checkbox-cell",onClick:Q,onDoubleClick:Q,children:o.jsx(ee,{...or(e),checked:!!t.value,disabled:!t.editable,"aria-label":`Toggle ${fe(e)}`,onChange:n=>t.updateValue(n)})}),sr=e=>J.filter(t=>yt(e,Ue(e,t.row,t.index))),ln=(e,t)=>{const n=new Map(sr(e).map(s=>[s.index,s])),l=[],i=ne.current.map((s,m)=>{const p=n.get(m);if(!p)return s;const u=B(s,e.field);if(!!u===t||e.validate&&!e.validate(t,s))return s;const k=Ct(s,e.field,t);return l.push({rowId:p.id,rowIndex:m,field:e.field,oldValue:u,newValue:t,row:k}),k});l.length!==0&&(Ot(i),l.forEach(s=>f==null?void 0:f(s)),x==null||x(i))},an=e=>{const t=sr(e),n=t.length>0?t:J,l=n.filter(s=>!!B(s.row,e.field)).length,i=n.length>0&&l===n.length;return o.jsx("span",{className:"rk-grid__header-checkbox",onClick:Q,onDoubleClick:Q,children:o.jsx(ee,{...or(e),checked:i,indeterminate:l>0&&!i,disabled:t.length===0,label:Ze(e)||void 0,"aria-label":`Select all ${fe(e)}`,onChange:s=>ln(e,s)})})},cn=(e,t,n)=>{if(t.cellEditor)return o.jsx("div",{className:"rk-grid__custom-editor",onBlur:i=>{i.currentTarget.contains(i.relatedTarget)||n.session===le.current&&(ke(e,t,{value:Le.current},{focus:!1})||X())},onKeyDown:i=>{i.key==="Escape"&&(i.preventDefault(),i.stopPropagation(),X(),ze(e.id,t.field))},children:h.createElement(t.cellEditor,{value:n.draft,row:e.row,rowIndex:e.index,field:t.field,column:t,onChange:i=>{Le.current=i,se(s=>s&&s.session===n.session?{...s,draft:i,invalid:!1}:s)},onCommit:(i,s="none")=>{n.session===le.current&&ke(e,t,{value:i===void 0?Le.current:i},{move:s})},onCancel:()=>{X(),ze(e.id,t.field)}})});const l=t.type==="date";return o.jsx("input",{autoFocus:!0,type:l?"date":"text",min:l?t.dateMin:void 0,max:l?t.dateMax:void 0,className:S("rk-grid__editor",n.invalid&&"rk-grid__editor--invalid",D.editor),style:{textAlign:t.align,...v.editor},value:n.draft===null||n.draft===void 0?"":String(n.draft),inputMode:t.type==="number"?"decimal":void 0,"aria-label":`Edit ${fe(t)}`,"aria-invalid":n.invalid||void 0,onChange:i=>{const s=i.target.value;se(m=>m&&{...m,draft:s,invalid:!1})},onFocus:i=>{const s=i.currentTarget;l||(n.select==="all"?s.select():s.setSelectionRange(s.value.length,s.value.length))},onBlur:i=>{if(n.session===le.current){if(gr(i.currentTarget))return X();ke(e,t,{text:i.currentTarget.value},{focus:!1})||X()}},onKeyDown:i=>Gr(i,e,t)})},dn=h.useMemo(()=>{const e=new Map;for(const t of y)t.filterable&&!t.filterRenderer&&ur(t)==="select"&&e.set(t.field,Dn(t,Me,n=>B(n,t.field),n=>je(t,n)));return e},[y,Me]),fn=Cr||!!Ce,un=Ce?{"--rk-stripe-a":Ce[0],"--rk-stripe-b":Ce[1]}:void 0,hn=z&&(Ee==="top"||Ee==="both"),pn=z&&(Ee==="bottom"||Ee==="both"),gn=O||!!Ft||It||!!Se,lr=e=>o.jsxs("div",{className:S("rk-grid__footer",e==="top"&&"rk-grid__footer--top",D.footer),style:v.footer,"data-position":e,children:[o.jsxs("span",{...T("rowCount","rk-grid__count"),children:[de===0?"0 rows":`${Wr}–${Vr} of ${de}`,A&&q.length>0?` · ${q.length} selected`:""]}),o.jsxs("div",{...T("pagination","rk-grid__pagination"),children:[o.jsxs("label",{className:"rk-grid__page-size-label",children:["Rows per page",o.jsx("select",{value:R,onChange:t=>Rr(Number(t.target.value)),...T("pageSize","rk-grid__page-size"),children:(tt.includes(R)?tt:[...tt,R].sort((t,n)=>t-n)).map(t=>o.jsx("option",{value:t,children:t},t))})]}),o.jsx("button",{type:"button","aria-label":"First page",disabled:$===0,onClick:()=>oe(0),...T("pageButton","rk-grid__page-btn"),children:"«"}),o.jsx("button",{type:"button","aria-label":"Previous page",disabled:$===0,onClick:()=>oe($-1),...T("pageButton","rk-grid__page-btn"),children:"‹"}),o.jsxs("span",{...T("pageInfo","rk-grid__page-info"),children:["Page ",$+1," of ",Y]}),o.jsx("button",{type:"button","aria-label":"Next page",disabled:$>=Y-1,onClick:()=>oe($+1),...T("pageButton","rk-grid__page-btn"),children:"›"}),o.jsx("button",{type:"button","aria-label":"Last page",disabled:$>=Y-1,onClick:()=>oe(Y-1),...T("pageButton","rk-grid__page-btn"),children:"»"})]})]}),mn=e=>o.jsx("tr",{className:"rk-grid__tr rk-grid__skeleton-row","aria-hidden":"true",style:V?{height:H}:void 0,children:Tt?o.jsx("td",{colSpan:xe,className:"rk-grid__td rk-grid__skeleton-cell",children:h.createElement(Tt,{rowIndex:e,columns:y})}):o.jsxs(o.Fragment,{children:[A&&o.jsx("td",{className:"rk-grid__td",children:o.jsx("span",{...T("skeleton","rk-grid__skeleton"),style:{...v.skeleton,width:18}})}),y.map((t,n)=>o.jsx("td",{className:"rk-grid__td",style:{textAlign:t.align},children:o.jsx("span",{...T("skeleton","rk-grid__skeleton"),style:{...v.skeleton,width:`${55+(e*7+n*13)%35}%`}})},t.field))]})},`sk${e}`),xn=(e,t)=>{const{row:n,id:l,index:i}=e,s=typeof at=="function"?at(n,i):at,m=typeof ct=="function"?ct(n,i):ct,p=_t.has(l);return o.jsxs("tr",{onClick:ot?()=>ot(n,i):void 0,"aria-selected":A?p:void 0,className:S("rk-grid__tr","rk-grid__row",fn&&(t%2===0?"rk-grid__row--stripe-a":"rk-grid__row--stripe-b"),Rt&&!V&&"rk-grid__row--enter",p&&"rk-grid__row--selected",ot&&"rk-grid__row--clickable",D.row,s),style:{...Rt&&!V?{"--rk-i":Math.min(t,24)}:null,...V?{height:H}:null,...v.row,...m},children:[A&&o.jsx("td",{className:S("rk-grid__td rk-grid__select-cell",Ge&&"rk-grid__pinned rk-grid__pinned--left"),style:{width:G,minWidth:G,maxWidth:G,...Ge?{left:0}:null},onClick:Q,children:o.jsx("span",{className:"rk-grid__checkbox-cell",onClickCapture:u=>qt.current=u.shiftKey,children:o.jsx(ee,{variant:st,checked:p,disabled:!We(n),"aria-label":A==="single"?"Select row":`Select row ${i+1}`,onChange:u=>Hr(e,u),classNames:{root:D.checkbox,control:D.checkboxControl,indicator:D.checkboxIndicator},styles:{root:v.checkbox,control:v.checkboxControl,indicator:v.checkboxIndicator}})})}),y.map((u,k)=>{const N=Jr(u,e),Xe=typeof u.cellClassName=="function"?u.cellClassName(N):u.cellClassName,kn=typeof u.cellStyle=="function"?u.cellStyle(N):u.cellStyle,ar=ge!==null&&ge.id===l&&ge.field===u.field,wt=qe(u,N),cr=tr(u,k),_n=ut?ut.id===l&&ut.field===u.field:t===0&&k===0;return o.jsx("td",{ref:Z=>{const dr=Nt(l,u.field);Z?Fe.current.set(dr,Z):Fe.current.delete(dr)},tabIndex:it?_n?0:-1:wt?0:void 0,onFocus:it?Z=>Z.target===Z.currentTarget&&At({id:l,field:u.field}):void 0,onDoubleClick:wt?()=>He(e,u):void 0,onKeyDown:Z=>Zr(Z,e,u,N),className:S("rk-grid__td",wt&&"rk-grid__td--editable",ar&&"rk-grid__td--editing",cr.className,D.cell,u.className,Xe),style:{textAlign:u.align,...v.cell,...u.style,...kn,...cr.style},children:ar&&ge?cn(e,u,ge):u.cellRenderer?h.createElement(u.cellRenderer,N):u.type==="boolean"&&!u.cellEditor?sn(u,N):N.formattedValue},u.field)})]},l)},bn=Nr??(z?Math.min(R,20):5);return o.jsxs("div",{className:S("rk-grid",V&&"rk-grid--virtual",D.root,Dr),style:{...un,...v.root,...Mr},"data-rk-theme":lt||void 0,"aria-busy":kt||void 0,children:[gn&&o.jsxs("div",{...T("toolbar","rk-grid__toolbar"),children:[o.jsxs("div",{className:"rk-grid__toolbar-left",children:[O&&o.jsx("input",{type:"search",value:he,onChange:e=>Tr(e.target.value),placeholder:te,"aria-label":"Search all columns",...T("search","rk-grid__search")}),A&&q.length>0&&o.jsxs("span",{className:"rk-grid__selected-count",role:"status",children:[q.length," selected"]})]}),o.jsxs("div",{className:"rk-grid__toolbar-actions",children:[Ft,It&&o.jsx(Fn,{columns:r,hidden:Te,onToggle:Or,theme:lt,className:D.toolButton,style:v.toolButton}),Se&&o.jsx("button",{type:"button",onClick:()=>ir(),...T("toolButton","rk-grid__tool-btn"),children:"Export CSV"})]})]}),hn&&lr("top"),o.jsx("div",{ref:me,...T("scroll","rk-grid__scroll"),onScroll:V?e=>Kt({top:e.currentTarget.scrollTop,height:e.currentTarget.clientHeight}):void 0,style:{...v.scroll,...De!==void 0?{maxHeight:De}:V?{maxHeight:400}:null},children:o.jsxs("table",{...T("table","rk-grid__table"),role:"grid",style:jt?{...v.table,tableLayout:"fixed",width:y.reduce((e,t)=>e+Ye(t),A?G:0),minWidth:"100%"}:v.table,children:[o.jsx("thead",{...T("thead","rk-grid__thead"),children:o.jsxs("tr",{...T("headerRow","rk-grid__tr"),children:[A&&o.jsx("th",{scope:"col",className:S("rk-grid__th rk-grid__select-cell",Ge&&"rk-grid__pinned rk-grid__pinned--left",D.headerCell),style:{width:G,minWidth:G,maxWidth:G,...Ge?{left:0}:null,...v.headerCell},children:A==="multiple"&&o.jsx("span",{className:"rk-grid__checkbox-cell",children:o.jsx(ee,{variant:st,checked:Ht,indeterminate:zt>0&&!Ht,disabled:be.length===0,"aria-label":"Select all rows",onChange:Jt,classNames:{root:D.checkbox,control:D.checkboxControl,indicator:D.checkboxIndicator},styles:{root:v.checkbox,control:v.checkboxControl,indicator:v.checkboxIndicator}})})}),y.map((e,t)=>{const n=P.findIndex(p=>p.field===e.field),l=n>=0?P[n].direction:null,i=gt(e),s=Wt(e),m=tr(e,t);return o.jsxs("th",{ref:p=>{p?pe.current.set(e.field,p):pe.current.delete(e.field)},scope:"col","aria-sort":l?l==="asc"?"ascending":"descending":i?"none":void 0,tabIndex:i?0:void 0,onClick:p=>Yt(e,p.shiftKey),onKeyDown:p=>{i&&p.target===p.currentTarget&&(p.key==="Enter"||p.key===" ")&&(p.preventDefault(),Yt(e,p.shiftKey))},className:S("rk-grid__th",i&&"rk-grid__th--sortable",m.className,D.headerCell,e.className,e.headerClassName),style:{width:jt?Ye(e):e.width,minWidth:e.minWidth,textAlign:e.align,...v.headerCell,...e.style,...e.headerStyle,...m.style},children:[o.jsxs("span",{className:"rk-grid__th-content",children:[e.headerRenderer?h.createElement(e.headerRenderer,{column:e,sortDirection:l}):e.headerCheckbox&&e.type==="boolean"?an(e):Ze(e),e.filterable&&o.jsx(Ln,{column:e,label:fe(e),kind:s,value:ie[e.field],onChange:p=>{const u={...ie};p===void 0?delete u[e.field]:u[e.field]=p,Ir(u)},options:dn.get(e.field)??[],theme:lt,indicatorClassName:S(D.filterIndicator,e.filterIndicatorClassName),indicatorStyle:{...v.filterIndicator,...e.filterIndicatorStyle},popupClassName:S(D.filterPopup,e.filterPopupClassName),popupStyle:{...v.filterPopup,...e.filterPopupStyle},inputClassName:D.filterInput,inputStyle:v.filterInput}),i&&o.jsxs("span",{className:"rk-grid__sort","aria-hidden":"true",children:[l==="asc"?"▲":l==="desc"?"▼":"↕",l&&P.length>1&&o.jsx("sup",{className:"rk-grid__sort-order",children:n+1})]})]}),e.resizable&&o.jsx("span",{className:"rk-grid__resizer",role:"separator","aria-orientation":"vertical","aria-label":`Resize ${fe(e)}`,onPointerDown:p=>nn(p,e),onClick:Q,onDoubleClick:Q})]},e.field)})]})}),o.jsx("tbody",{...T("tbody","rk-grid__tbody"),children:kt?Array.from({length:bn},(e,t)=>mn(t)):zr?o.jsx("tr",{children:o.jsxs("td",{colSpan:xe,...T("empty","rk-grid__empty rk-grid__error"),role:"alert",children:[Er," ",o.jsx("button",{type:"button",className:"rk-grid__tool-btn",onClick:()=>Ke(Oe.current),children:"Retry"})]})}):j.length===0?o.jsx("tr",{children:o.jsx("td",{colSpan:xe,...T("empty","rk-grid__empty"),children:Sr})}):o.jsxs(o.Fragment,{children:[_e&&Je>0&&o.jsx("tr",{"aria-hidden":"true",className:"rk-grid__spacer",children:o.jsx("td",{colSpan:xe,style:{height:Je*H}})}),tn.map((e,t)=>xn(e,Je+t)),_e&&vt<j.length&&o.jsx("tr",{"aria-hidden":"true",className:"rk-grid__spacer",children:o.jsx("td",{colSpan:xe,style:{height:(j.length-vt)*H}})})]})},Qt)]})}),pn&&lr("bottom")]})}exports.Checkbox=ee;exports.DataGrid=Wn;
|