flexi-datagrid 1.2.13 → 1.2.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +56 -7
- package/dist/DataTable/components/ConditionFilterPanel.d.ts +8 -0
- package/dist/DataTable/constants.d.ts +8 -0
- package/dist/DataTable/hooks/useColumnFilters.d.ts +10 -2
- package/dist/DataTable/hooks/useDataTableState.d.ts +7 -1
- package/dist/DataTable/index.d.ts +1 -1
- package/dist/DataTable/types.d.ts +17 -0
- package/dist/DataTable/utils/records.d.ts +6 -1
- package/dist/flexi-datagrid.css +1 -1
- package/dist/index.es.js +737 -360
- package/dist/index.umd.js +1 -1
- package/package.json +1 -1
package/dist/index.umd.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("react"),require("lucide-react"),require("react/jsx-runtime"),require("react-dom")):typeof define==`function`&&define.amd?define([`exports`,`react`,`lucide-react`,`react/jsx-runtime`,`react-dom`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.FlexiDataGrid={},e.React,e.LucideReact,e.JSX,e.ReactDOM))})(this,function(e,t,n,r,i){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var a=(0,t.createContext)(null);function o({value:e,children:t}){return(0,r.jsx)(a.Provider,{value:e,children:t})}function s(){let e=(0,t.useContext)(a);if(!e)throw Error(`DataTable components must be rendered inside <DataTable>.`);return e}var c=(...e)=>e.filter(Boolean).join(` `);function l(){let{groupedColumns:e,columnsByKey:i,addGroup:a,removeGroup:o}=s(),[l,u]=(0,t.useState)(!1);return(0,r.jsx)(`div`,{onDragOver:e=>{e.preventDefault(),u(!0)},onDragLeave:()=>u(!1),onDrop:e=>{e.preventDefault(),u(!1);let t=e.dataTransfer.getData(`text/plain`);t&&i.has(t)&&a(t)},className:c(`flexi-groupzone`,l&&`flexi-groupzone--dragover`),children:e.length===0?(0,r.jsx)(`span`,{className:`flexi-groupzone-hint`,children:`Drag a column header here to group your records by that field`}):(0,r.jsxs)(`div`,{className:`flexi-groupzone-chips`,children:[(0,r.jsx)(`span`,{className:`flexi-groupzone-label`,children:`Grouped By:`}),e.map(e=>(0,r.jsxs)(`div`,{className:`flexi-chip`,children:[(0,r.jsx)(`span`,{children:i.get(e)?.header||e}),(0,r.jsx)(`button`,{type:`button`,onClick:()=>o(e),className:`flexi-icon-btn flexi-chip-remove`,children:(0,r.jsx)(n.X,{className:`flexi-icon-xs`})})]},e))]})})}function u(){let{currentPage:e,pageSize:t,totalPages:i,totalCount:a,pageSizeOptions:o,goToPage:c,changePageSize:l}=s();return(0,r.jsxs)(`div`,{className:`flexi-pagination`,children:[(0,r.jsxs)(`div`,{className:`flexi-pagination-size`,children:[(0,r.jsx)(`span`,{children:`Rows per page`}),(0,r.jsx)(`select`,{value:t,onChange:e=>l(Number(e.target.value)),className:`flexi-pagination-select`,children:o.map(e=>(0,r.jsx)(`option`,{value:e,children:e},e))})]}),(0,r.jsx)(`div`,{className:`flexi-pagination-info`,children:a===0?`0 of 0`:`${(e-1)*t+1}–${Math.min(e*t,a)} of ${a}`}),(0,r.jsxs)(`div`,{className:`flexi-pagination-controls`,children:[(0,r.jsx)(`button`,{type:`button`,onClick:()=>c(1),disabled:e===1,className:`flexi-icon-btn`,title:`First page`,children:(0,r.jsx)(n.ChevronsLeft,{className:`flexi-icon-sm`})}),(0,r.jsx)(`button`,{type:`button`,onClick:()=>c(e-1),disabled:e===1,className:`flexi-icon-btn`,title:`Previous page`,children:(0,r.jsx)(n.ChevronLeft,{className:`flexi-icon-sm`})}),(0,r.jsxs)(`span`,{className:`flexi-pagination-page`,children:[`Page `,e,` of `,i]}),(0,r.jsx)(`button`,{type:`button`,onClick:()=>c(e+1),disabled:e===i,className:`flexi-icon-btn`,title:`Next page`,children:(0,r.jsx)(n.ChevronRight,{className:`flexi-icon-sm`})}),(0,r.jsx)(`button`,{type:`button`,onClick:()=>c(i),disabled:e===i,className:`flexi-icon-btn`,title:`Last page`,children:(0,r.jsx)(n.ChevronsRight,{className:`flexi-icon-sm`})})]})]})}var d=[10,25,50,100],f=[],p=[],m=e=>{let t=[];return e.forEach(e=>{e.children&&e.children.length>0?t.push(...m(e.children)):t.push(e)}),t},h=e=>{if(e===!0)return`left`;if(e===`left`||e===`right`)return e},g=e=>{let t={};return e.forEach(e=>{let n=h(e.pinned);n&&(t[e.key]=n)}),t},_=(e,t,n)=>{let r=e=>{let n=t[e];return n===`left`?0:n===`right`?2:1},i=e=>e.map((e,t)=>({col:e,idx:t})).sort((e,t)=>{let i=r(e.col.key)-r(t.col.key);return i===0?(n[e.col.key]??e.idx)-(n[t.col.key]??t.idx):i}).map(({col:e})=>e.children&&e.children.length>0?{...e,children:i(e.children)}:e);return i(e)},v=(e,t,n)=>{let r=e.map(e=>e.key);if(r.includes(t)&&r.includes(n))return e;for(let r of e)if(r.children&&r.children.length>0){let e=v(r.children,t,n);if(e)return e}return null},y=(e,t)=>{let n=t[e.key];if(n!==void 0)return n;let r=e.style?.width||e.headerStyle?.width||`150px`;if(typeof r==`number`)return r;let i=String(r).trim();return/^\d+(\.\d+)?(px)?$/i.test(i)&&parseInt(i,10)||150},b=(e,t,n)=>{let r=e=>{let t=0;return e.forEach(e=>{t=e.children&&e.children.length>0?Math.max(t,1+r(e.children)):Math.max(t,1)}),t},i=r(e),a=Array.from({length:i},()=>[]),o=e=>!e.children||e.children.length===0?t.includes(e.key)||n.includes(e.key)?0:1:e.children.reduce((e,t)=>e+o(t),0),s=(e,n)=>{e.forEach(e=>{if(t.includes(e.key))return;let r=o(e);r!==0&&(e.children&&e.children.length>0?(a[n].push({col:e,rowSpan:1,colSpan:r}),s(e.children,n+1)):a[n].push({col:e,rowSpan:i-n,colSpan:1}))})};s(e,0);let c=a.filter(e=>e.length>0);return c.map((e,t)=>e.map(e=>({...e,rowSpan:Math.min(e.rowSpan,c.length-t)})))},ee=({visibleLeafColumns:e,pinnedColumns:t,columnWidths:n,hasGroups:r,hasActions:i})=>{let a={},o=r?48:0;e.forEach(e=>{t[e.key]===`left`&&(a[e.key]={side:`left`,offset:o},o+=y(e,n))});let s=i?100:0;for(let r=e.length-1;r>=0;r--){let i=e[r];t[i.key]===`right`&&(a[i.key]={side:`right`,offset:s},s+=y(i,n))}return a},x=(e,t,n=!1,r)=>{let i=e[t];if(!i)return r||{};let a=i.side===`right`;return{position:`sticky`,[a?`right`:`left`]:`${i.offset}px`,...n?{top:0}:{},zIndex:n?30:20,background:`#f8fafc`,boxShadow:a?`-2px 0 5px -2px rgba(0,0,0,0.1)`:`2px 0 5px -2px rgba(0,0,0,0.1)`,...r}},S=()=>(0,r.jsx)(`td`,{className:`flexi-row-indent-cell`,style:{position:`sticky`,left:0,zIndex:10}});function C({children:e}){return(0,r.jsx)(`td`,{className:`flexi-actions-cell`,style:{position:`sticky`,right:0},children:(0,r.jsx)(`div`,{className:`flexi-actions-inner`,children:e})})}function w({node:e}){let{rowHeight:t,expandedGroups:i,toggleGroupExpansion:a,totalColumnsCount:o}=s(),c=i[e.path]!==!1;return(0,r.jsxs)(`tr`,{className:`flexi-group-row`,style:{height:t},children:[(0,r.jsx)(`td`,{className:`flexi-group-cell`,style:{position:`sticky`,left:0,zIndex:20,backgroundColor:`rgba(248, 250, 252, 0.9)`,paddingLeft:`${e.depth*12+16}px`},children:(0,r.jsxs)(`button`,{type:`button`,onClick:()=>a(e.path),className:`flexi-group-toggle`,children:[c?(0,r.jsx)(n.ChevronDown,{className:`flexi-icon-md flexi-icon-muted`}):(0,r.jsx)(n.ChevronRight,{className:`flexi-icon-md flexi-icon-muted`}),(0,r.jsx)(`span`,{className:`flexi-group-value`,children:e.groupValue}),(0,r.jsx)(`span`,{className:`flexi-group-count`,children:e.totalItemsCount})]})}),(0,r.jsx)(`td`,{colSpan:Math.max(1,o-1),className:`flexi-group-filler`})]})}function T({record:e,rowIndex:t,className:n}){let{rowHeight:i,hasGroups:a,hasActions:o,actions:l,onRowClick:u,visibleLeafColumns:d,pinnedColumns:f,pinOffsets:p,rowSpanColumns:m,rowSpanInfo:h}=s(),g=h.get(t);return(0,r.jsxs)(`tr`,{className:c(`flexi-row`,u&&`flexi-row--clickable`,n),style:{height:i},onClick:u?n=>u(e,t,n):void 0,children:[a&&(0,r.jsx)(S,{}),d.map(t=>{let n=m?.includes(t.key)?g?.[t.key]:void 0;if(n===`skip`)return null;let i=e[t.key];return(0,r.jsx)(`td`,{rowSpan:typeof n==`number`?n:void 0,className:c(`flexi-cell`,!!f[t.key]&&`flexi-cell--pinned`,t.className),style:x(p,t.key,!1,t.style),children:t.render?t.render(i,e):(0,r.jsx)(`span`,{className:`flexi-cell-text`,children:i})},t.key)}),o&&l&&(0,r.jsx)(C,{children:l(e)})]})}function E({record:e,index:t,className:n}){let{hasGroups:i,hasActions:a,actions:o,pinnedBottomRowData:l,visibleLeafColumns:u,pinnedColumns:d,pinOffsets:f}=s(),p={position:`sticky`,bottom:`${(l.length-1-t)*48}px`,zIndex:45};return(0,r.jsxs)(`tr`,{className:c(`flexi-row`,`flexi-row--pinned-bottom`,n),style:p,children:[i&&(0,r.jsx)(S,{}),u.map(t=>{let n=e[t.key],i=t.pinnedRender??t.render;return(0,r.jsx)(`td`,{className:c(`flexi-cell`,!!d[t.key]&&`flexi-cell--pinned`,t.className),style:x(f,t.key,!1,t.style),children:i?i(n,e):(0,r.jsx)(`span`,{className:`flexi-cell-text`,children:n})},t.key)}),a&&o&&(0,r.jsx)(C,{children:o(e)})]})}function te(){let{pinnedBottomRowData:e,pinnedRowClassName:t}=s();return e.length===0?null:(0,r.jsx)(`tbody`,{className:`flexi-tbody flexi-tbody--pinned-bottom`,children:e.map((e,n)=>(0,r.jsx)(E,{record:e,index:n,className:typeof t==`function`?t(e,n):t},`pinned-bottom-row-${n}`))})}function D(){let{settingsMenu:e}=s();return(0,r.jsx)(`button`,{type:`button`,ref:e.buttonRef,onClick:t=>{t.stopPropagation(),e.toggle()},className:c(`flexi-icon-btn`,e.isOpen&&`flexi-settings-btn--active`),title:`Grid display settings`,children:(0,r.jsx)(n.Settings,{className:`flexi-icon-sm`})})}function ne(){let{gridRootRef:e,settingsMenu:t,displayPinnedIcon:a,toggleDisplayPinnedIcon:o,showGroupBy:c,toggleShowGroupBy:l,initialLeafColumns:u,hiddenColumns:d,toggleColumnVisibility:f,resetControlPanelDefaults:p}=s(),m=e.current;return!t.isOpen||!t.position||!m?null:(0,i.createPortal)((0,r.jsxs)(`div`,{ref:t.menuRef,className:`flexi-settings-menu`,style:{top:t.position.top,right:t.position.right,zIndex:9999},children:[(0,r.jsxs)(`div`,{className:`flexi-settings-section`,children:[(0,r.jsx)(`span`,{className:`flexi-settings-heading`,children:`Action Icons`}),(0,r.jsxs)(`label`,{className:`flexi-filter-option`,children:[(0,r.jsx)(`input`,{type:`checkbox`,className:`flexi-checkbox`,checked:a,onChange:o}),(0,r.jsx)(`span`,{className:`flexi-filter-option-text`,children:`Show pin icon on hover`})]}),(0,r.jsxs)(`label`,{className:`flexi-filter-option`,children:[(0,r.jsx)(`input`,{type:`checkbox`,className:`flexi-checkbox`,checked:c,onChange:l}),(0,r.jsx)(`span`,{className:`flexi-filter-option-text`,children:`Group By`})]})]}),(0,r.jsx)(`div`,{className:`flexi-settings-divider`}),(0,r.jsxs)(`div`,{className:`flexi-settings-section`,children:[(0,r.jsx)(`span`,{className:`flexi-settings-heading`,children:`Columns`}),u.map(e=>(0,r.jsxs)(`label`,{className:`flexi-filter-option`,children:[(0,r.jsx)(`input`,{type:`checkbox`,className:`flexi-checkbox`,checked:!d.includes(e.key),onChange:()=>f(e.key)}),(0,r.jsx)(`span`,{className:`flexi-filter-option-text`,children:e.header})]},e.key))]}),(0,r.jsx)(`div`,{className:`flexi-settings-divider`}),(0,r.jsxs)(`button`,{type:`button`,onClick:p,className:`flexi-settings-reset`,title:`Reset pin icon visibility and hidden columns to their defaults`,children:[(0,r.jsx)(n.RotateCcw,{className:`flexi-icon-sm`}),(0,r.jsx)(`span`,{children:`Reset to defaults`})]})]}),m)}var O=(e,t,n)=>n?.getValue?n.getValue(e):e[t],re=(e,t)=>{let n=typeof t==`function`?t(e):e[t];return n==null?void 0:String(n)},k=(e,t,n)=>{if(!n)return;let r;for(let i in n)n[i](e,t)&&(r=r?`${r} ${i}`:i);return r},A=(e,t,n)=>{let r=e.map(e=>O(e,t,n));return Array.from(new Set(r)).filter(e=>e!=null)},ie=(e,t,n)=>{let r=Object.entries(t).filter(([,e])=>e&&e.length>0);return r.length===0?e:e.filter(e=>r.every(([t,r])=>r.includes(O(e,t,n.get(t)))))},j=e=>e==null||typeof e==`number`&&Number.isNaN(e),M=(e,t)=>typeof e==`number`&&typeof t==`number`?e-t:e instanceof Date&&t instanceof Date?e.getTime()-t.getTime():String(e).localeCompare(String(t),void 0,{numeric:!0,sensitivity:`base`}),ae=(e,t,n,r)=>[...e].sort((e,i)=>{let a=O(e,t,r),o=O(i,t,r);if(a===o)return 0;let s=j(a),c=j(o);if(s&&c)return 0;if(s)return 1;if(c)return-1;let l=M(a,o);return n===`asc`?l:-l});function N(){let{isLoading:e,visibleRows:t,startIndex:n,totalRowCount:i,topSpacerHeight:a,bottomSpacerHeight:o,totalColumnsCount:c,rowKey:l,rowClassRules:u}=s(),d=Math.max(1,c);return e||i===0?(0,r.jsx)(`tbody`,{className:`flexi-tbody`,children:(0,r.jsx)(`tr`,{children:(0,r.jsx)(`td`,{colSpan:d,className:`flexi-empty-cell`,children:e?`Loading records...`:`No records found matching criteria.`})})}):(0,r.jsxs)(`tbody`,{className:`flexi-tbody`,children:[a>0&&(0,r.jsx)(`tr`,{"aria-hidden":`true`,style:{height:a},children:(0,r.jsx)(`td`,{colSpan:d,style:{padding:0,border:`none`,height:a}})}),t.map((e,t)=>{let i=n+t;return e.kind===`group`?(0,r.jsx)(w,{node:e},`group-header-${e.path}-${i}`):(0,r.jsx)(T,{record:e.record,rowIndex:i,className:k(e.record,i,u)},re(e.record,l)??`row-${i}`)}),o>0&&(0,r.jsx)(`tr`,{"aria-hidden":`true`,style:{height:o},children:(0,r.jsx)(`td`,{colSpan:d,style:{padding:0,border:`none`,height:o}})})]})}function oe(){let{hasGroups:e,hasActions:t,visibleLeafColumns:n,columnWidths:i}=s();return(0,r.jsxs)(`colgroup`,{children:[e&&(0,r.jsx)(`col`,{style:{width:`48px`}}),n.map(e=>(0,r.jsx)(`col`,{style:{...e.style,width:y(e,i)}},e.key)),t&&(0,r.jsx)(`col`,{style:{width:`100px`}})]})}function P({columnKey:e}){let{gridRootRef:t,filters:n}=s(),a=t.current,{filterPosition:o}=n;if(!a||!o)return null;let c=n.selectedFilters[e],l=(c?.length||0)>0,u=n.filteredUniqueValues;return(0,i.createPortal)((0,r.jsxs)(`div`,{ref:n.dropdownRef,className:`flexi-filter-dropdown`,style:{top:o.top,left:o.left,zIndex:9999},children:[(0,r.jsx)(`div`,{className:`flexi-filter-search`,children:(0,r.jsx)(`input`,{type:`text`,placeholder:`Search values...`,value:n.filterSearchQuery,onChange:e=>n.setFilterSearchQuery(e.target.value),className:`flexi-input`,onClick:e=>e.stopPropagation()})}),(0,r.jsx)(`div`,{className:`flexi-filter-list`,children:u.length===0?(0,r.jsx)(`div`,{className:`flexi-filter-empty`,children:`No results found`}):u.map((t,i)=>(0,r.jsxs)(`label`,{className:`flexi-filter-option`,children:[(0,r.jsx)(`input`,{type:`checkbox`,className:`flexi-checkbox`,checked:c?.includes(t)||!1,onChange:()=>n.handleFilterChange(e,t)}),(0,r.jsx)(`span`,{className:`flexi-filter-option-text`,children:String(t)})]},i))}),l&&(0,r.jsx)(`div`,{className:`flexi-filter-footer`,children:(0,r.jsx)(`button`,{type:`button`,onClick:()=>n.clearFilter(e),className:`flexi-filter-clear`,children:`Clear Filter`})})]}),a)}function se({col:e,rowSpan:t,colSpan:i}){let{groupBy:a,pinnedColumns:o,pinOffsets:l,displayPinnedIcon:u,togglePin:d,sortState:f,handleSort:p,filters:m,handleDragStart:h,handleDragEnd:g,handleDrop:_,startResize:v}=s(),y=o[e.key],b=!!y,ee=(m.selectedFilters[e.key]?.length||0)>0,S=!e.children||e.children.length===0,C=f.key===e.key,w=a&&S,T=S&&e.resizable!==!1,E=!!e.sortable&&S;return(0,r.jsxs)(`th`,{rowSpan:t,colSpan:i,draggable:!0,onDragStart:t=>h(t,e.key,S),onDragEnd:g,onDragOver:e=>e.preventDefault(),onDrop:t=>_(t,e.key),className:c(`flexi-th`,`flexi-th--draggable`,w&&`flexi-th--group-draggable`,b&&`flexi-th--pinned`,e.className,e.headerClassName),style:x(l,e.key,!0,e.headerStyle),children:[(0,r.jsxs)(`div`,{className:`flexi-th-inner`,children:[(0,r.jsxs)(`div`,{className:c(`flexi-th-label`,E&&`flexi-th-label--sortable`),onClick:()=>E&&p(e.key),children:[(0,r.jsx)(`span`,{className:`flexi-th-text`,children:e.header}),E&&(0,r.jsx)(`span`,{className:c(`flexi-sort-icon`,C&&`flexi-sort-icon--active`),children:C&&f.direction===`asc`?(0,r.jsx)(n.ArrowUp,{className:`flexi-icon-sm`}):C&&f.direction===`desc`?(0,r.jsx)(n.ArrowDown,{className:`flexi-icon-sm`}):(0,r.jsx)(n.ArrowUpDown,{className:`flexi-icon-sm`})})]}),(0,r.jsxs)(`div`,{className:`flexi-th-actions`,children:[S&&e.filterable&&(0,r.jsx)(`button`,{type:`button`,ref:t=>m.registerFilterButton(e.key,t),onClick:t=>{t.stopPropagation(),m.toggleFilterDropdown(e.key)},className:c(`flexi-icon-btn`,`flexi-filter-btn`,ee&&`flexi-filter-btn--active`),children:(0,r.jsx)(n.Filter,{className:`flexi-icon-sm`})}),S&&(u||b||!!e.pinned)&&(0,r.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),d(e.key)},className:c(`flexi-icon-btn`,`flexi-pin-btn`,b&&`flexi-pin-btn--pinned`),title:y===`left`?`Pinned left (click to pin right)`:y===`right`?`Pinned right (click to unpin)`:`Pin column left`,children:b?(0,r.jsx)(n.PinOff,{className:`flexi-icon-sm`}):(0,r.jsx)(n.Pin,{className:`flexi-icon-sm`})})]}),S&&m.activeFilterKey===e.key&&(0,r.jsx)(P,{columnKey:e.key})]}),T&&(0,r.jsx)(`div`,{className:`flexi-th-resizer`,onMouseDown:t=>v(t,e),onClick:e=>e.stopPropagation(),onDragStart:e=>e.preventDefault()})]})}function ce(){let{headerRows:e,hasGroups:t}=s();return(0,r.jsx)(`thead`,{className:`flexi-thead`,children:e.map((n,i)=>(0,r.jsxs)(`tr`,{className:`flexi-header-row`,children:[i===0&&t&&(0,r.jsx)(`th`,{rowSpan:e.length,className:`flexi-group-spacer-th`,style:{position:`sticky`,top:0,left:0,zIndex:35,backgroundColor:`rgb(248, 250, 252)`}}),n.map(({col:e,rowSpan:t,colSpan:n})=>(0,r.jsx)(se,{col:e,rowSpan:t,colSpan:n},e.key))]},`header-row-${i}`))})}var le=(e,t,n,r=0,i=``)=>{if(r>=t.length)return e.map(e=>({kind:`record`,record:e}));let a=t[r],o=n.get(a),s=new Map;return e.forEach(e=>{let t=String(O(e,a,o)??`N/A`),n=s.get(t);n?n.push(e):s.set(t,[e])}),Array.from(s.entries()).sort(([e],[t])=>e.localeCompare(t,void 0,{numeric:!0,sensitivity:`base`})).map(([e,o])=>{let s=i?`${i}➔${e}`:e;return{kind:`group`,groupKey:a,groupValue:e,path:s,depth:r,children:le(o,t,n,r+1,s),totalItemsCount:o.length}})},ue=(e,t)=>{let n=[],r=e=>{e.forEach(e=>{n.push(e),e.kind===`group`&&t[e.path]!==!1&&r(e.children)})};return r(e),n},de=(e,t,n,r)=>{let i=new Map;if(!t||t.length===0)return i;let a=e.map(()=>t.map(()=>!0)),o=null;for(let r=0;r<e.length;r++){let i=e[r];if(i.kind===`group`){o=null;continue}let s=o===null?null:e[o];if(s&&s.kind===`record`){let e=!0;for(let o=0;o<t.length;o++){let c=t[o],l=n.get(c);e&&O(i.record,c,l)===O(s.record,c,l)?a[r][o]=!1:(e=!1,a[r][o]=!0)}}o=r}return t.forEach((t,n)=>{let o=0;for(;o<e.length;){if(e[o].kind===`group`||!a[o][n]){o++;continue}let s=o+1;for(;s<e.length&&e[s].kind!==`group`&&!a[s][n];)s++;if(s-o>1){let e=i.get(r+o)||{};e[t]=s-o,i.set(r+o,e);for(let e=o+1;e<s;e++){let n=i.get(r+e)||{};n[t]=`skip`,i.set(r+e,n)}}o=s}}),i};function F({active:e,resetKey:n,rootRef:r,getAnchor:i,compute:a}){let[o,s]=(0,t.useState)(null),c=(0,t.useRef)(i),l=(0,t.useRef)(a);return c.current=i,l.current=a,(0,t.useEffect)(()=>{if(!e){s(null);return}let t=()=>{let e=c.current(),t=r.current;!e||!t||s(l.current(e.getBoundingClientRect(),t.getBoundingClientRect()))};return t(),window.addEventListener(`scroll`,t,!0),window.addEventListener(`resize`,t),()=>{window.removeEventListener(`scroll`,t,!0),window.removeEventListener(`resize`,t)}},[e,n,r]),o}function I(e,n,r){let i=(0,t.useRef)(n),a=(0,t.useRef)(r);i.current=n,a.current=r,(0,t.useEffect)(()=>{if(!e)return;let t=e=>{let t=e.target,[n,...r]=i.current();n&&(n.contains(t)||r.some(e=>e?.contains(t))||a.current())};return document.addEventListener(`mousedown`,t),()=>document.removeEventListener(`mousedown`,t)},[e])}function fe({data:e,columnsByKey:n,gridRootRef:r}){let[i,a]=(0,t.useState)(null),[o,s]=(0,t.useState)({}),[c,l]=(0,t.useState)(``),u=(0,t.useRef)(new Map),d=(0,t.useRef)(null),f=(0,t.useCallback)((e,t)=>{t?u.current.set(e,t):u.current.delete(e)},[]),p=(0,t.useCallback)(()=>{a(null),l(``)},[]),m=(0,t.useCallback)(e=>{l(``),a(t=>t===e?null:e)},[]);I(i!==null,()=>[d.current,i?u.current.get(i):null],p);let h=F({active:i!==null,resetKey:i,rootRef:r,getAnchor:()=>i?u.current.get(i):null,compute:(e,t)=>({top:e.bottom-t.top+4,left:e.left-t.left})}),g=(0,t.useCallback)((e,t)=>{s(n=>{let r=n[e]||[],i=r.includes(t)?r.filter(e=>e!==t):[...r,t],a={...n,[e]:i};return i.length===0&&delete a[e],a})},[]),_=(0,t.useCallback)(e=>{s(t=>{let n={...t};return delete n[e],n})},[]),v=(0,t.useMemo)(()=>i?A(e,i,n.get(i)):[],[e,i,n]);return{activeFilterKey:i,selectedFilters:o,filterSearchQuery:c,setFilterSearchQuery:l,filterPosition:h,dropdownRef:d,filteredUniqueValues:(0,t.useMemo)(()=>{if(!c.trim())return v;let e=c.toLowerCase();return v.filter(t=>String(t).toLowerCase().includes(e))},[v,c]),registerFilterButton:f,toggleFilterDropdown:m,handleFilterChange:g,clearFilter:_}}function pe({columns:e,pinnedColumns:n,isResizingRef:r,onColumnReorder:i}){let[a,o]=(0,t.useState)({}),s=(0,t.useRef)(null),c=(0,t.useMemo)(()=>_(e,n,a),[e,n,a]);return{reorderedColumns:c,handleDragStart:(0,t.useCallback)((e,t,n)=>{if(r.current){e.preventDefault();return}s.current=t,n&&e.dataTransfer.setData(`text/plain`,t),e.dataTransfer.effectAllowed=`move`},[r]),handleDragEnd:(0,t.useCallback)(()=>{s.current=null},[]),handleDrop:(0,t.useCallback)((t,r)=>{t.preventDefault(),t.stopPropagation();let l=s.current;if(s.current=null,!l||l===r)return;let u=v(c,l,r);if(!u)return;let d=u.map(e=>e.key),f=d.indexOf(l),p=d.indexOf(r);d.splice(p,0,d.splice(f,1)[0]);let h={...a};d.forEach((e,t)=>{h[e]=t}),o(h),i&&i(m(_(e,n,h)).map(e=>e.key))},[c,a,e,n,i])}}function me(e){let[n,r]=(0,t.useState)({}),i=(0,t.useRef)(!1),a=(0,t.useRef)(null),o=(0,t.useRef)(e);return o.current=e,(0,t.useEffect)(()=>()=>a.current?.(),[]),{columnWidths:n,isResizingRef:i,startResize:(0,t.useCallback)((e,t)=>{e.preventDefault(),e.stopPropagation(),a.current?.(),i.current=!0;let s=e.clientX,c=y(t,n),l=t.minWidth??60,u=t.maxWidth,d=n[t.key],f=e=>{let n=Math.max(l,c+(e.clientX-s));u&&(n=Math.min(u,n)),d=n,r(e=>e[t.key]===n?e:{...e,[t.key]:n})},p=()=>{window.removeEventListener(`mousemove`,f),window.removeEventListener(`mouseup`,m),a.current=null},m=()=>{p(),requestAnimationFrame(()=>{i.current=!1}),d!==void 0&&o.current?.(t.key,d)};window.addEventListener(`mousemove`,f),window.addEventListener(`mouseup`,m),a.current=()=>{p(),i.current=!1}},[n])}}function he({defaultHiddenColumns:e,defaultDisplayPinnedIcon:n,onColumnVisibilityChange:r}){let[i,a]=(0,t.useState)(e),[o,s]=(0,t.useState)(n);return{hiddenColumns:i,displayPinnedIcon:o,toggleColumnVisibility:(0,t.useCallback)(e=>{let t=i.includes(e)?i.filter(t=>t!==e):[...i,e];a(t),r?.(t)},[i,r]),toggleDisplayPinnedIcon:(0,t.useCallback)(()=>s(e=>!e),[]),resetControlPanelDefaults:(0,t.useCallback)(()=>{s(n),a(e),r?.(e)},[n,e,r])}}function ge({items:e,enabled:n,defaultPageSize:r,onPageChange:i,resetOn:a}){let[o,s]=(0,t.useState)(1),[c,l]=(0,t.useState)(Math.max(1,Math.floor(r)||1)),u=e.length,d=n?Math.max(1,Math.ceil(u/c)):1;return(0,t.useEffect)(()=>{s(1)},[...a,c,n]),(0,t.useEffect)(()=>{o>d&&s(d)},[o,d]),{currentPage:o,pageSize:c,totalPages:d,totalCount:u,pagedItems:(0,t.useMemo)(()=>{if(!n)return e;let t=(o-1)*c;return e.slice(t,t+c)},[e,n,o,c]),goToPage:(0,t.useCallback)(e=>{let t=Math.min(Math.max(1,e),d);s(t),i?.(t,c)},[d,c,i]),changePageSize:(0,t.useCallback)(e=>{l(e),s(1),i?.(1,e)},[i])}}function _e(e,n){let[r,i]=(0,t.useState)(()=>g(e));return{pinnedColumns:r,togglePin:(0,t.useCallback)(e=>{let t=r[e],a=t?t===`left`?`right`:void 0:`left`,o={...r};a?o[e]=a:delete o[e],i(o),n?.(e,!!a,a)},[r,n])}}function ve(e,n){let[r,i]=(0,t.useState)(e),[a,o]=(0,t.useState)({});return{groupedColumns:r,expandedGroups:a,addGroup:(0,t.useCallback)(e=>{if(!e||r.includes(e))return;let t=[...r,e];i(t),n?.(t)},[r,n]),removeGroup:(0,t.useCallback)(e=>{let t=r.filter(t=>t!==e);i(t),o({}),n?.(t)},[r,n]),toggleGroupExpansion:(0,t.useCallback)(e=>{o(t=>({...t,[e]:t[e]===!1}))},[])}}function ye(e){let[n,r]=(0,t.useState)(!1),i=(0,t.useRef)(null),a=(0,t.useRef)(null),o=(0,t.useCallback)(()=>r(e=>!e),[]);return I(n,()=>[i.current,a.current],(0,t.useCallback)(()=>r(!1),[])),{isOpen:n,position:F({active:n,rootRef:e,getAnchor:()=>a.current,compute:(e,t)=>({top:e.bottom-t.top+4,right:t.right-e.right})}),menuRef:i,buttonRef:a,toggle:o}}function be(){let[e,n]=(0,t.useState)({key:null,direction:null});return{sortState:e,handleSort:(0,t.useCallback)(e=>{n(t=>{let n=`asc`;return t.key===e&&(t.direction===`asc`?n=`desc`:t.direction===`desc`&&(n=null)),{key:n?e:null,direction:n}})},[])}}function xe({containerRef:e,totalRowCount:n,rowHeight:r,overscan:i}){let[a,o]=(0,t.useState)(0),[s,c]=(0,t.useState)(0);return(0,t.useEffect)(()=>{let t=e.current;if(!t)return;let n=()=>o(t.scrollTop);c(t.clientHeight),o(t.scrollTop),t.addEventListener(`scroll`,n,{passive:!0});let r;return typeof ResizeObserver<`u`&&(r=new ResizeObserver(()=>c(t.clientHeight)),r.observe(t)),()=>{t.removeEventListener(`scroll`,n),r?.disconnect()}},[e]),(0,t.useMemo)(()=>{if(s===0||r===`auto`)return{startIndex:0,endIndex:n,topSpacerHeight:0,bottomSpacerHeight:0};let e=r>0?r:1,t=Math.max(0,n-1),o=Math.min(t,Math.floor(a/e)),c=Math.ceil(s/e)+1,l=Math.max(0,o-i),u=Math.min(n,o+c+i);return{startIndex:l,endIndex:u,topSpacerHeight:l*e,bottomSpacerHeight:(n-u)*e}},[a,s,n,r,i])}function Se({columns:e,data:n,rowKey:r,actions:i,isLoading:a,groupBy:o=!1,defaultGroupBy:s=f,onPinChange:c,onGroupChange:l,pinnedBottomRowData:u=p,pinnedRowClassName:h,rowHeight:g=40,overscan:_=8,onColumnResize:v,onColumnReorder:y,rowClassRules:x,onRowClick:S,rowSpanColumns:C,controlPanel:w=!1,defaultDisplayPinnedIcon:T=!1,defaultHiddenColumns:E=f,onColumnVisibilityChange:te,pagination:D=!1,defaultPageSize:ne=10,pageSizeOptions:O=d,onPageChange:re}){let k=(0,t.useRef)(null),A=(0,t.useRef)(null),j=(0,t.useMemo)(()=>m(e),[e]),M=(0,t.useMemo)(()=>{let e=new Map;return j.forEach(t=>e.set(t.key,t)),e},[j]),{pinnedColumns:N,togglePin:oe}=_e(j,c),{columnWidths:P,isResizingRef:se,startResize:ce}=me(v),{reorderedColumns:F,handleDragStart:I,handleDragEnd:Se,handleDrop:Ce}=pe({columns:e,pinnedColumns:N,isResizingRef:se,onColumnReorder:y}),L=he({defaultHiddenColumns:E,defaultDisplayPinnedIcon:T,onColumnVisibilityChange:te}),{hiddenColumns:R}=L,z=ve(s,l),{groupedColumns:we,expandedGroups:B}=z,[Te,V]=(0,t.useState)(o);(0,t.useEffect)(()=>V(o),[o]);let Ee=(0,t.useCallback)(()=>V(e=>!e),[]),{resetControlPanelDefaults:De}=L,Oe=(0,t.useCallback)(()=>{De(),V(o)},[De,o]),ke=Te,H=ke?we:f,U=H.length>0,W=!!i,G=(0,t.useMemo)(()=>m(F).filter(e=>!H.includes(e.key)&&!R.includes(e.key)),[F,H,R]),Ae=(0,t.useMemo)(()=>b(F,H,R),[F,H,R]),je=(0,t.useMemo)(()=>ee({visibleLeafColumns:G,pinnedColumns:N,columnWidths:P,hasGroups:U,hasActions:W}),[G,N,P,U,W]),K=fe({data:n,columnsByKey:M,gridRootRef:k}),{sortState:q,handleSort:Me}=be(),J=ge({items:(0,t.useMemo)(()=>{let e=ie(n,K.selectedFilters,M);return!q.key||!q.direction?e:ae(e,q.key,q.direction,M.get(q.key))},[n,K.selectedFilters,q,M]),enabled:D,defaultPageSize:ne,onPageChange:re,resetOn:[K.selectedFilters,q]}),Ne=(0,t.useMemo)(()=>le(J.pagedItems,H,M),[J.pagedItems,H,M]),Y=(0,t.useMemo)(()=>ue(Ne,B),[Ne,B]),X=Y.length,{startIndex:Z,endIndex:Q,topSpacerHeight:Pe,bottomSpacerHeight:Fe}=xe({containerRef:A,totalRowCount:X,rowHeight:g,overscan:_}),$=(0,t.useMemo)(()=>Y.slice(Z,Q),[Y,Z,Q]),Ie=(0,t.useMemo)(()=>de($,C,M,Z),[$,C,M,Z]),Le=ye(k),Re=G.length+ +!!W+ +!!U;return{gridRootRef:k,tableWrapRef:A,rowKey:r,actions:i,isLoading:!!a,groupBy:ke,showGroupBy:Te,toggleShowGroupBy:Ee,controlPanel:w,rowHeight:g,rowSpanColumns:C,rowClassRules:x,onRowClick:S,pinnedBottomRowData:u,pinnedRowClassName:h,pageSizeOptions:O,paginationEnabled:D,initialLeafColumns:j,columnsByKey:M,visibleLeafColumns:G,headerRows:Ae,pinnedColumns:N,pinOffsets:je,columnWidths:P,togglePin:oe,startResize:ce,handleDragStart:I,handleDragEnd:Se,handleDrop:Ce,hiddenColumns:R,displayPinnedIcon:L.displayPinnedIcon,toggleColumnVisibility:L.toggleColumnVisibility,toggleDisplayPinnedIcon:L.toggleDisplayPinnedIcon,resetControlPanelDefaults:Oe,settingsMenu:Le,groupedColumns:we,expandedGroups:B,addGroup:z.addGroup,removeGroup:z.removeGroup,toggleGroupExpansion:z.toggleGroupExpansion,hasGroups:U,hasActions:W,sortState:q,handleSort:Me,filters:K,currentPage:J.currentPage,pageSize:J.pageSize,totalPages:J.totalPages,totalCount:J.totalCount,goToPage:J.goToPage,changePageSize:J.changePageSize,visibleRows:$,startIndex:Z,totalRowCount:X,topSpacerHeight:Pe,bottomSpacerHeight:Fe,rowSpanInfo:Ie,totalColumnsCount:Re}}var Ce=[`height`,`maxHeight`,`minHeight`];function L(e,n){let[r,i]=(0,t.useState)(0);return(0,t.useLayoutEffect)(()=>{let t=n?e.current?.firstElementChild:null;if(!(t instanceof HTMLElement)){i(0);return}let r=()=>{let e=parseFloat(getComputedStyle(t.nextElementSibling??t).marginTop)||0;i(t.offsetHeight+e)};r();let a=new ResizeObserver(r);return a.observe(t),()=>a.disconnect()},[e,n]),r}function R(e,t){if(!e||t<=0)return e;let n={...e};for(let r of Ce){let i=e[r];i==null||i===``||i===`auto`||i===`none`||(n[r]=`calc(${typeof i==`number`?`${i}px`:String(i)} - ${t}px)`)}return n}function z(e){let t=Se(e),{containerStyle:n,tableStyle:i,bordered:a=!1}=e,s=R(n,L(t.gridRootRef,!!t.groupBy));return(0,r.jsx)(o,{value:t,children:(0,r.jsxs)(`div`,{ref:t.gridRootRef,className:`flexi-root`,children:[t.groupBy&&(0,r.jsx)(l,{}),(0,r.jsxs)(`div`,{ref:t.tableWrapRef,className:`flexi-table-wrap`,style:s,children:[t.controlPanel&&(0,r.jsx)(`div`,{className:`flexi-settings-corner`,children:(0,r.jsx)(`div`,{className:`flexi-settings-corner-inner`,children:(0,r.jsx)(D,{})})}),(0,r.jsxs)(`table`,{className:c(`flexi-table`,a&&`flexi-table--bordered`),style:i,children:[(0,r.jsx)(oe,{}),(0,r.jsx)(ce,{}),(0,r.jsx)(N,{}),(0,r.jsx)(te,{})]})]}),(0,r.jsx)(ne,{}),t.paginationEnabled&&(0,r.jsx)(u,{})]})})}e.DataTable=z});
|
|
1
|
+
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("react"),require("lucide-react"),require("react/jsx-runtime"),require("react-dom")):typeof define==`function`&&define.amd?define([`exports`,`react`,`lucide-react`,`react/jsx-runtime`,`react-dom`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.FlexiDataGrid={},e.React,e.LucideReact,e.JSX,e.ReactDOM))})(this,function(e,t,n,r,i){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var a=(0,t.createContext)(null);function o({value:e,children:t}){return(0,r.jsx)(a.Provider,{value:e,children:t})}function s(){let e=(0,t.useContext)(a);if(!e)throw Error(`DataTable components must be rendered inside <DataTable>.`);return e}var c=(...e)=>e.filter(Boolean).join(` `);function l(){let{groupedColumns:e,columnsByKey:i,addGroup:a,removeGroup:o}=s(),[l,u]=(0,t.useState)(!1);return(0,r.jsx)(`div`,{onDragOver:e=>{e.preventDefault(),u(!0)},onDragLeave:()=>u(!1),onDrop:e=>{e.preventDefault(),u(!1);let t=e.dataTransfer.getData(`text/plain`);t&&i.has(t)&&a(t)},className:c(`flexi-groupzone`,l&&`flexi-groupzone--dragover`),children:e.length===0?(0,r.jsx)(`span`,{className:`flexi-groupzone-hint`,children:`Drag a column header here to group your records by that field`}):(0,r.jsxs)(`div`,{className:`flexi-groupzone-chips`,children:[(0,r.jsx)(`span`,{className:`flexi-groupzone-label`,children:`Grouped By:`}),e.map(e=>(0,r.jsxs)(`div`,{className:`flexi-chip`,children:[(0,r.jsx)(`span`,{children:i.get(e)?.header||e}),(0,r.jsx)(`button`,{type:`button`,onClick:()=>o(e),className:`flexi-icon-btn flexi-chip-remove`,children:(0,r.jsx)(n.X,{className:`flexi-icon-xs`})})]},e))]})})}function u(){let{currentPage:e,pageSize:t,totalPages:i,totalCount:a,pageSizeOptions:o,goToPage:c,changePageSize:l}=s();return(0,r.jsxs)(`div`,{className:`flexi-pagination`,children:[(0,r.jsxs)(`div`,{className:`flexi-pagination-size`,children:[(0,r.jsx)(`span`,{children:`Rows per page`}),(0,r.jsx)(`select`,{value:t,onChange:e=>l(Number(e.target.value)),className:`flexi-pagination-select`,children:o.map(e=>(0,r.jsx)(`option`,{value:e,children:e},e))})]}),(0,r.jsx)(`div`,{className:`flexi-pagination-info`,children:a===0?`0 of 0`:`${(e-1)*t+1}–${Math.min(e*t,a)} of ${a}`}),(0,r.jsxs)(`div`,{className:`flexi-pagination-controls`,children:[(0,r.jsx)(`button`,{type:`button`,onClick:()=>c(1),disabled:e===1,className:`flexi-icon-btn`,title:`First page`,children:(0,r.jsx)(n.ChevronsLeft,{className:`flexi-icon-sm`})}),(0,r.jsx)(`button`,{type:`button`,onClick:()=>c(e-1),disabled:e===1,className:`flexi-icon-btn`,title:`Previous page`,children:(0,r.jsx)(n.ChevronLeft,{className:`flexi-icon-sm`})}),(0,r.jsxs)(`span`,{className:`flexi-pagination-page`,children:[`Page `,e,` of `,i]}),(0,r.jsx)(`button`,{type:`button`,onClick:()=>c(e+1),disabled:e===i,className:`flexi-icon-btn`,title:`Next page`,children:(0,r.jsx)(n.ChevronRight,{className:`flexi-icon-sm`})}),(0,r.jsx)(`button`,{type:`button`,onClick:()=>c(i),disabled:e===i,className:`flexi-icon-btn`,title:`Last page`,children:(0,r.jsx)(n.ChevronsRight,{className:`flexi-icon-sm`})})]})]})}var d=[10,25,50,100],f=[],p=[],m=[{value:`blank`,label:`Blank`,valueCount:0},{value:`notBlank`,label:`Not blank`,valueCount:0}],h={text:[{value:`contains`,label:`Contains`,valueCount:1},{value:`notContains`,label:`Not contains`,valueCount:1},{value:`equals`,label:`Equals`,valueCount:1},{value:`notEqual`,label:`Not equal`,valueCount:1},{value:`startsWith`,label:`Starts with`,valueCount:1},{value:`endsWith`,label:`Ends with`,valueCount:1},...m],number:[{value:`equals`,label:`Equals`,valueCount:1},{value:`notEqual`,label:`Not equal`,valueCount:1},{value:`greaterThan`,label:`Greater than`,valueCount:1},{value:`greaterThanOrEqual`,label:`Greater than or equal`,valueCount:1},{value:`lessThan`,label:`Less than`,valueCount:1},{value:`lessThanOrEqual`,label:`Less than or equal`,valueCount:1},{value:`inRange`,label:`In range`,valueCount:2},...m],date:[{value:`equals`,label:`Equals`,valueCount:1},{value:`notEqual`,label:`Not equal`,valueCount:1},{value:`before`,label:`Before`,valueCount:1},{value:`after`,label:`After`,valueCount:1},{value:`inRange`,label:`In range`,valueCount:2},...m],boolean:[{value:`equals`,label:`Equals`,valueCount:1},{value:`notEqual`,label:`Not equal`,valueCount:1},...m]},g=e=>{let t=[];return e.forEach(e=>{e.children&&e.children.length>0?t.push(...g(e.children)):t.push(e)}),t},_=e=>{if(e===!0)return`left`;if(e===`left`||e===`right`)return e},v=e=>{let t={};return e.forEach(e=>{let n=_(e.pinned);n&&(t[e.key]=n)}),t},y=(e,t,n)=>{let r=e=>{let n=t[e];return n===`left`?0:n===`right`?2:1},i=e=>e.map((e,t)=>({col:e,idx:t})).sort((e,t)=>{let i=r(e.col.key)-r(t.col.key);return i===0?(n[e.col.key]??e.idx)-(n[t.col.key]??t.idx):i}).map(({col:e})=>e.children&&e.children.length>0?{...e,children:i(e.children)}:e);return i(e)},b=(e,t,n)=>{let r=e.map(e=>e.key);if(r.includes(t)&&r.includes(n))return e;for(let r of e)if(r.children&&r.children.length>0){let e=b(r.children,t,n);if(e)return e}return null},x=(e,t)=>{let n=t[e.key];if(n!==void 0)return n;let r=e.style?.width||e.headerStyle?.width||`150px`;if(typeof r==`number`)return r;let i=String(r).trim();return/^\d+(\.\d+)?(px)?$/i.test(i)&&parseInt(i,10)||150},S=(e,t,n)=>{let r=e=>{let t=0;return e.forEach(e=>{t=e.children&&e.children.length>0?Math.max(t,1+r(e.children)):Math.max(t,1)}),t},i=r(e),a=Array.from({length:i},()=>[]),o=e=>!e.children||e.children.length===0?t.includes(e.key)||n.includes(e.key)?0:1:e.children.reduce((e,t)=>e+o(t),0),s=(e,n)=>{e.forEach(e=>{if(t.includes(e.key))return;let r=o(e);r!==0&&(e.children&&e.children.length>0?(a[n].push({col:e,rowSpan:1,colSpan:r}),s(e.children,n+1)):a[n].push({col:e,rowSpan:i-n,colSpan:1}))})};s(e,0);let c=a.filter(e=>e.length>0);return c.map((e,t)=>e.map(e=>({...e,rowSpan:Math.min(e.rowSpan,c.length-t)})))},C=({visibleLeafColumns:e,pinnedColumns:t,columnWidths:n,hasGroups:r,hasActions:i})=>{let a={},o=r?48:0;e.forEach(e=>{t[e.key]===`left`&&(a[e.key]={side:`left`,offset:o},o+=x(e,n))});let s=i?100:0;for(let r=e.length-1;r>=0;r--){let i=e[r];t[i.key]===`right`&&(a[i.key]={side:`right`,offset:s},s+=x(i,n))}return a},w=(e,t,n=!1,r)=>{let i=e[t];if(!i)return r||{};let a=i.side===`right`;return{position:`sticky`,[a?`right`:`left`]:`${i.offset}px`,...n?{top:0}:{},zIndex:n?30:20,background:`#f8fafc`,boxShadow:a?`-2px 0 5px -2px rgba(0,0,0,0.1)`:`2px 0 5px -2px rgba(0,0,0,0.1)`,...r}},T=()=>(0,r.jsx)(`td`,{className:`flexi-row-indent-cell`,style:{position:`sticky`,left:0,zIndex:10}});function E({children:e}){return(0,r.jsx)(`td`,{className:`flexi-actions-cell`,style:{position:`sticky`,right:0},children:(0,r.jsx)(`div`,{className:`flexi-actions-inner`,children:e})})}function D({node:e}){let{rowHeight:t,expandedGroups:i,toggleGroupExpansion:a,totalColumnsCount:o}=s(),c=i[e.path]!==!1;return(0,r.jsxs)(`tr`,{className:`flexi-group-row`,style:{height:t},children:[(0,r.jsx)(`td`,{className:`flexi-group-cell`,style:{position:`sticky`,left:0,zIndex:20,backgroundColor:`rgba(248, 250, 252, 0.9)`,paddingLeft:`${e.depth*12+16}px`},children:(0,r.jsxs)(`button`,{type:`button`,onClick:()=>a(e.path),className:`flexi-group-toggle`,children:[c?(0,r.jsx)(n.ChevronDown,{className:`flexi-icon-md flexi-icon-muted`}):(0,r.jsx)(n.ChevronRight,{className:`flexi-icon-md flexi-icon-muted`}),(0,r.jsx)(`span`,{className:`flexi-group-value`,children:e.groupValue}),(0,r.jsx)(`span`,{className:`flexi-group-count`,children:e.totalItemsCount})]})}),(0,r.jsx)(`td`,{colSpan:Math.max(1,o-1),className:`flexi-group-filler`})]})}function ee({record:e,rowIndex:t,className:n}){let{rowHeight:i,hasGroups:a,hasActions:o,actions:l,onRowClick:u,visibleLeafColumns:d,pinnedColumns:f,pinOffsets:p,rowSpanColumns:m,rowSpanInfo:h}=s(),g=h.get(t);return(0,r.jsxs)(`tr`,{className:c(`flexi-row`,u&&`flexi-row--clickable`,n),style:{height:i},onClick:u?n=>u(e,t,n):void 0,children:[a&&(0,r.jsx)(T,{}),d.map(t=>{let n=m?.includes(t.key)?g?.[t.key]:void 0;if(n===`skip`)return null;let i=e[t.key];return(0,r.jsx)(`td`,{rowSpan:typeof n==`number`?n:void 0,className:c(`flexi-cell`,!!f[t.key]&&`flexi-cell--pinned`,t.className),style:w(p,t.key,!1,t.style),children:t.render?t.render(i,e):(0,r.jsx)(`span`,{className:`flexi-cell-text`,children:i})},t.key)}),o&&l&&(0,r.jsx)(E,{children:l(e)})]})}function te({record:e,index:t,className:n}){let{hasGroups:i,hasActions:a,actions:o,pinnedBottomRowData:l,visibleLeafColumns:u,pinnedColumns:d,pinOffsets:f}=s(),p={position:`sticky`,bottom:`${(l.length-1-t)*48}px`,zIndex:45};return(0,r.jsxs)(`tr`,{className:c(`flexi-row`,`flexi-row--pinned-bottom`,n),style:p,children:[i&&(0,r.jsx)(T,{}),u.map(t=>{let n=e[t.key],i=t.pinnedRender??t.render;return(0,r.jsx)(`td`,{className:c(`flexi-cell`,!!d[t.key]&&`flexi-cell--pinned`,t.className),style:w(f,t.key,!1,t.style),children:i?i(n,e):(0,r.jsx)(`span`,{className:`flexi-cell-text`,children:n})},t.key)}),a&&o&&(0,r.jsx)(E,{children:o(e)})]})}function ne(){let{pinnedBottomRowData:e,pinnedRowClassName:t}=s();return e.length===0?null:(0,r.jsx)(`tbody`,{className:`flexi-tbody flexi-tbody--pinned-bottom`,children:e.map((e,n)=>(0,r.jsx)(te,{record:e,index:n,className:typeof t==`function`?t(e,n):t},`pinned-bottom-row-${n}`))})}function re(){let{settingsMenu:e}=s();return(0,r.jsx)(`button`,{type:`button`,ref:e.buttonRef,onClick:t=>{t.stopPropagation(),e.toggle()},className:c(`flexi-icon-btn`,e.isOpen&&`flexi-settings-btn--active`),title:`Grid display settings`,children:(0,r.jsx)(n.Settings,{className:`flexi-icon-sm`})})}function ie(){let{gridRootRef:e,settingsMenu:t,displayPinnedIcon:a,toggleDisplayPinnedIcon:o,showGroupBy:c,toggleShowGroupBy:l,initialLeafColumns:u,hiddenColumns:d,toggleColumnVisibility:f,resetControlPanelDefaults:p}=s(),m=e.current;return!t.isOpen||!t.position||!m?null:(0,i.createPortal)((0,r.jsxs)(`div`,{ref:t.menuRef,className:`flexi-settings-menu`,style:{top:t.position.top,right:t.position.right,zIndex:9999},children:[(0,r.jsxs)(`div`,{className:`flexi-settings-section`,children:[(0,r.jsx)(`span`,{className:`flexi-settings-heading`,children:`Action Icons`}),(0,r.jsxs)(`label`,{className:`flexi-filter-option`,children:[(0,r.jsx)(`input`,{type:`checkbox`,className:`flexi-checkbox`,checked:a,onChange:o}),(0,r.jsx)(`span`,{className:`flexi-filter-option-text`,children:`Show pin icon on hover`})]}),(0,r.jsxs)(`label`,{className:`flexi-filter-option`,children:[(0,r.jsx)(`input`,{type:`checkbox`,className:`flexi-checkbox`,checked:c,onChange:l}),(0,r.jsx)(`span`,{className:`flexi-filter-option-text`,children:`Group By`})]})]}),(0,r.jsx)(`div`,{className:`flexi-settings-divider`}),(0,r.jsxs)(`div`,{className:`flexi-settings-section`,children:[(0,r.jsx)(`span`,{className:`flexi-settings-heading`,children:`Columns`}),u.map(e=>(0,r.jsxs)(`label`,{className:`flexi-filter-option`,children:[(0,r.jsx)(`input`,{type:`checkbox`,className:`flexi-checkbox`,checked:!d.includes(e.key),onChange:()=>f(e.key)}),(0,r.jsx)(`span`,{className:`flexi-filter-option-text`,children:e.header})]},e.key))]}),(0,r.jsx)(`div`,{className:`flexi-settings-divider`}),(0,r.jsxs)(`button`,{type:`button`,onClick:p,className:`flexi-settings-reset`,title:`Reset pin icon visibility and hidden columns to their defaults`,children:[(0,r.jsx)(n.RotateCcw,{className:`flexi-icon-sm`}),(0,r.jsx)(`span`,{children:`Reset to defaults`})]})]}),m)}var O=(e,t,n)=>n?.getValue?n.getValue(e):e[t],k=(e,t)=>{let n=typeof t==`function`?t(e):e[t];return n==null?void 0:String(n)},ae=(e,t,n)=>{if(!n)return;let r;for(let i in n)n[i](e,t)&&(r=r?`${r} ${i}`:i);return r},A=(e,t,n)=>{let r=e.map(e=>O(e,t,n));return Array.from(new Set(r)).filter(e=>e!=null)},oe=(e,t,n)=>{let r=Object.entries(t).filter(([,e])=>e&&e.length>0);return r.length===0?e:e.filter(e=>r.every(([t,r])=>r.includes(O(e,t,n.get(t)))))},j=(e,t,n)=>{if(n?.filterType)return n.filterType;for(let r of e){let e=O(r,t,n);if(e!=null)return typeof e==`number`?`number`:typeof e==`boolean`?`boolean`:e instanceof Date?`date`:`text`}return`text`},M=e=>e==null||e===``,N=(e,t)=>{if(M(e))return null;if(t===`number`){let t=typeof e==`number`?e:parseFloat(String(e));return Number.isNaN(t)?null:t}if(t===`date`){let t=e instanceof Date?e.getTime():new Date(String(e)).getTime();return Number.isNaN(t)?null:t}return String(e).toLowerCase()},P=(e,t,n)=>{if(t.operator===`blank`)return M(e);if(t.operator===`notBlank`)return!M(e);let r=N(e,n);if(r===null)return!1;let i=N(t.value,n);switch(t.operator){case`contains`:return typeof r==`string`&&i!==null&&r.includes(String(i));case`notContains`:return i===null||typeof r!=`string`||!r.includes(String(i));case`startsWith`:return typeof r==`string`&&i!==null&&r.startsWith(String(i));case`endsWith`:return typeof r==`string`&&i!==null&&r.endsWith(String(i));case`equals`:return i!==null&&r===i;case`notEqual`:return i===null||r!==i;case`greaterThan`:return i!==null&&r>i;case`greaterThanOrEqual`:return i!==null&&r>=i;case`lessThan`:return i!==null&&r<i;case`lessThanOrEqual`:return i!==null&&r<=i;case`before`:return i!==null&&r<i;case`after`:return i!==null&&r>i;case`inRange`:{let e=i,a=N(t.valueTo,n);return e===null||a===null?!1:r>=e&&r<=a}default:return!0}},se=(e,t,n)=>{let r=Object.entries(t).filter(([,e])=>e&&e.conditions.length>0);if(r.length===0)return e;let i=new Map(r.map(([t])=>[t,j(e,t,n.get(t))]));return e.filter(e=>r.every(([t,r])=>{let a=n.get(t),o=i.get(t),s=O(e,t,a),c=r.conditions.map(e=>P(s,e,o));return r.combinator===`OR`?c.some(Boolean):c.every(Boolean)}))},F=e=>e==null||typeof e==`number`&&Number.isNaN(e),ce=(e,t)=>typeof e==`number`&&typeof t==`number`?e-t:e instanceof Date&&t instanceof Date?e.getTime()-t.getTime():String(e).localeCompare(String(t),void 0,{numeric:!0,sensitivity:`base`}),le=(e,t,n,r)=>[...e].sort((e,i)=>{let a=O(e,t,r),o=O(i,t,r);if(a===o)return 0;let s=F(a),c=F(o);if(s&&c)return 0;if(s)return 1;if(c)return-1;let l=ce(a,o);return n===`asc`?l:-l});function I(){let{isLoading:e,visibleRows:t,startIndex:n,totalRowCount:i,topSpacerHeight:a,bottomSpacerHeight:o,totalColumnsCount:c,rowKey:l,rowClassRules:u}=s(),d=Math.max(1,c);return e||i===0?(0,r.jsx)(`tbody`,{className:`flexi-tbody`,children:(0,r.jsx)(`tr`,{children:(0,r.jsx)(`td`,{colSpan:d,className:`flexi-empty-cell`,children:e?`Loading records...`:`No records found matching criteria.`})})}):(0,r.jsxs)(`tbody`,{className:`flexi-tbody`,children:[a>0&&(0,r.jsx)(`tr`,{"aria-hidden":`true`,style:{height:a},children:(0,r.jsx)(`td`,{colSpan:d,style:{padding:0,border:`none`,height:a}})}),t.map((e,t)=>{let i=n+t;return e.kind===`group`?(0,r.jsx)(D,{node:e},`group-header-${e.path}-${i}`):(0,r.jsx)(ee,{record:e.record,rowIndex:i,className:ae(e.record,i,u)},k(e.record,l)??`row-${i}`)}),o>0&&(0,r.jsx)(`tr`,{"aria-hidden":`true`,style:{height:o},children:(0,r.jsx)(`td`,{colSpan:d,style:{padding:0,border:`none`,height:o}})})]})}function ue(){let{hasGroups:e,hasActions:t,visibleLeafColumns:n,columnWidths:i}=s();return(0,r.jsxs)(`colgroup`,{children:[e&&(0,r.jsx)(`col`,{style:{width:`48px`}}),n.map(e=>(0,r.jsx)(`col`,{style:{...e.style,width:x(e,i)}},e.key)),t&&(0,r.jsx)(`col`,{style:{width:`100px`}})]})}function L(e,t){let[n,r]=e?.conditions??[];return{operator1:n?.operator??t,value1:n?.value===void 0?``:String(n.value),value1To:n?.valueTo===void 0?``:String(n.valueTo),useSecondCondition:!!r,combinator:e?.combinator??`AND`,operator2:r?.operator??t,value2:r?.value===void 0?``:String(r.value),value2To:r?.valueTo===void 0?``:String(r.valueTo)}}function R(e,t){if(e!==``)return t===`number`?Number(e):e}function z(e,t,n){let r=e=>t.find(t=>t.value===e)??t[0],i=r(e.operator1),a={operator:e.operator1,value:R(e.value1,n),valueTo:i.valueCount===2?R(e.value1To,n):void 0};if(i.valueCount>0&&a.value===void 0)return null;let o=[a];if(e.useSecondCondition){let t=r(e.operator2),i={operator:e.operator2,value:R(e.value2,n),valueTo:t.valueCount===2?R(e.value2To,n):void 0};(t.valueCount===0||i.value!==void 0)&&o.push(i)}return{conditions:o,combinator:e.combinator}}function B({columnKey:e}){let{filters:n}=s(),i=n.activeColumnFilterType,a=h[i],o=n.conditionFilters[e],[c,l]=(0,t.useState)(()=>L(o,a[0].value));(0,t.useEffect)(()=>{l(L(o,a[0].value))},[e]),(0,t.useEffect)(()=>{let t=setTimeout(()=>{n.setConditionFilter(e,z(c,a,i))},300);return()=>clearTimeout(t)},[c,e,i]);let u=e=>a.find(t=>t.value===e)??a[0],d=u(c.operator1),f=u(c.operator2),p=i===`number`?`number`:i===`date`?`date`:`text`,m=()=>{l(L(void 0,a[0].value)),n.clearConditionFilter(e)},g=(e,t,n,i,a)=>e.valueCount===0?null:(0,r.jsxs)(`div`,{className:`flexi-condition-values`,children:[(0,r.jsx)(`input`,{type:p,className:`flexi-input`,value:t,placeholder:`Value`,onChange:e=>i(e.target.value),onClick:e=>e.stopPropagation()}),e.valueCount===2&&(0,r.jsx)(`input`,{type:p,className:`flexi-input`,value:n,placeholder:`To`,onChange:e=>a(e.target.value),onClick:e=>e.stopPropagation()})]});return(0,r.jsxs)(`div`,{className:`flexi-condition-filter`,children:[(0,r.jsxs)(`div`,{className:`flexi-condition-row`,children:[(0,r.jsx)(`select`,{className:`flexi-input`,value:c.operator1,onClick:e=>e.stopPropagation(),onChange:e=>l(t=>({...t,operator1:e.target.value})),children:a.map(e=>(0,r.jsx)(`option`,{value:e.value,children:e.label},e.value))}),g(d,c.value1,c.value1To,e=>l(t=>({...t,value1:e})),e=>l(t=>({...t,value1To:e})))]}),(0,r.jsxs)(`label`,{className:`flexi-filter-option flexi-condition-toggle`,children:[(0,r.jsx)(`input`,{type:`checkbox`,className:`flexi-checkbox`,checked:c.useSecondCondition,onChange:e=>l(t=>({...t,useSecondCondition:e.target.checked}))}),(0,r.jsx)(`span`,{className:`flexi-filter-option-text`,children:`Add another condition`})]}),c.useSecondCondition&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(`div`,{className:`flexi-condition-combinator`,children:[(0,r.jsxs)(`label`,{children:[(0,r.jsx)(`input`,{type:`radio`,name:`flexi-condition-combinator-${e}`,checked:c.combinator===`AND`,onChange:()=>l(e=>({...e,combinator:`AND`}))}),(0,r.jsx)(`span`,{children:`AND`})]}),(0,r.jsxs)(`label`,{children:[(0,r.jsx)(`input`,{type:`radio`,name:`flexi-condition-combinator-${e}`,checked:c.combinator===`OR`,onChange:()=>l(e=>({...e,combinator:`OR`}))}),(0,r.jsx)(`span`,{children:`OR`})]})]}),(0,r.jsxs)(`div`,{className:`flexi-condition-row`,children:[(0,r.jsx)(`select`,{className:`flexi-input`,value:c.operator2,onClick:e=>e.stopPropagation(),onChange:e=>l(t=>({...t,operator2:e.target.value})),children:a.map(e=>(0,r.jsx)(`option`,{value:e.value,children:e.label},e.value))}),g(f,c.value2,c.value2To,e=>l(t=>({...t,value2:e})),e=>l(t=>({...t,value2To:e})))]})]}),(0,r.jsx)(`div`,{className:`flexi-filter-footer flexi-condition-footer`,children:(0,r.jsx)(`button`,{type:`button`,onClick:m,className:`flexi-filter-clear`,children:`Clear`})})]})}function V({columnKey:e}){let{gridRootRef:t,filters:n}=s(),a=t.current,{filterPosition:o}=n;if(!a||!o)return null;let l=n.selectedFilters[e],u=(l?.length||0)>0,d=n.filteredUniqueValues;return(0,i.createPortal)((0,r.jsxs)(`div`,{ref:n.dropdownRef,className:`flexi-filter-dropdown`,style:{top:o.top,left:o.left,zIndex:9999},children:[(0,r.jsxs)(`div`,{className:`flexi-filter-tabs`,children:[(0,r.jsx)(`button`,{type:`button`,className:c(`flexi-filter-tab`,n.filterTab===`condition`&&`flexi-filter-tab--active`),onClick:()=>n.setFilterTab(`condition`),children:`Filter`}),(0,r.jsx)(`button`,{type:`button`,className:c(`flexi-filter-tab`,n.filterTab===`values`&&`flexi-filter-tab--active`),onClick:()=>n.setFilterTab(`values`),children:`Select`})]}),n.filterTab===`condition`?(0,r.jsx)(B,{columnKey:e}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(`div`,{className:`flexi-filter-search`,children:(0,r.jsx)(`input`,{type:`text`,placeholder:`Search values...`,value:n.filterSearchQuery,onChange:e=>n.setFilterSearchQuery(e.target.value),className:`flexi-input`,onClick:e=>e.stopPropagation()})}),(0,r.jsx)(`div`,{className:`flexi-filter-list`,children:d.length===0?(0,r.jsx)(`div`,{className:`flexi-filter-empty`,children:`No results found`}):d.map((t,i)=>(0,r.jsxs)(`label`,{className:`flexi-filter-option`,children:[(0,r.jsx)(`input`,{type:`checkbox`,className:`flexi-checkbox`,checked:l?.includes(t)||!1,onChange:()=>n.handleFilterChange(e,t)}),(0,r.jsx)(`span`,{className:`flexi-filter-option-text`,children:String(t)})]},i))}),u&&(0,r.jsx)(`div`,{className:`flexi-filter-footer`,children:(0,r.jsx)(`button`,{type:`button`,onClick:()=>n.clearFilter(e),className:`flexi-filter-clear`,children:`Clear Filter`})})]})]}),a)}function H({col:e,rowSpan:t,colSpan:i}){let{groupBy:a,pinnedColumns:o,pinOffsets:l,displayPinnedIcon:u,togglePin:d,sortState:f,handleSort:p,filters:m,handleDragStart:h,handleDragEnd:g,handleDrop:_,startResize:v}=s(),y=o[e.key],b=!!y,x=(m.selectedFilters[e.key]?.length||0)>0||!!m.conditionFilters[e.key],S=!e.children||e.children.length===0,C=f.key===e.key,T=a&&S,E=S&&e.resizable!==!1,D=!!e.sortable&&S;return(0,r.jsxs)(`th`,{rowSpan:t,colSpan:i,draggable:!0,onDragStart:t=>h(t,e.key,S),onDragEnd:g,onDragOver:e=>e.preventDefault(),onDrop:t=>_(t,e.key),className:c(`flexi-th`,`flexi-th--draggable`,T&&`flexi-th--group-draggable`,b&&`flexi-th--pinned`,e.className,e.headerClassName),style:w(l,e.key,!0,e.headerStyle),children:[(0,r.jsxs)(`div`,{className:`flexi-th-inner`,children:[(0,r.jsxs)(`div`,{className:c(`flexi-th-label`,D&&`flexi-th-label--sortable`),onClick:()=>D&&p(e.key),children:[(0,r.jsx)(`span`,{className:`flexi-th-text`,children:e.header}),D&&(0,r.jsx)(`span`,{className:c(`flexi-sort-icon`,C&&`flexi-sort-icon--active`),children:C&&f.direction===`asc`?(0,r.jsx)(n.ArrowUp,{className:`flexi-icon-sm`}):C&&f.direction===`desc`?(0,r.jsx)(n.ArrowDown,{className:`flexi-icon-sm`}):(0,r.jsx)(n.ArrowUpDown,{className:`flexi-icon-sm`})})]}),(0,r.jsxs)(`div`,{className:`flexi-th-actions`,children:[S&&e.filterable&&(0,r.jsx)(`button`,{type:`button`,ref:t=>m.registerFilterButton(e.key,t),onClick:t=>{t.stopPropagation(),m.toggleFilterDropdown(e.key)},className:c(`flexi-icon-btn`,`flexi-filter-btn`,x&&`flexi-filter-btn--active`),children:(0,r.jsx)(n.Filter,{className:`flexi-icon-sm`})}),S&&(u||b||!!e.pinned)&&(0,r.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),d(e.key)},className:c(`flexi-icon-btn`,`flexi-pin-btn`,b&&`flexi-pin-btn--pinned`),title:y===`left`?`Pinned left (click to pin right)`:y===`right`?`Pinned right (click to unpin)`:`Pin column left`,children:b?(0,r.jsx)(n.PinOff,{className:`flexi-icon-sm`}):(0,r.jsx)(n.Pin,{className:`flexi-icon-sm`})})]}),S&&m.activeFilterKey===e.key&&(0,r.jsx)(V,{columnKey:e.key})]}),E&&(0,r.jsx)(`div`,{className:`flexi-th-resizer`,onMouseDown:t=>v(t,e),onClick:e=>e.stopPropagation(),onDragStart:e=>e.preventDefault()})]})}function U(){let{headerRows:e,hasGroups:t}=s();return(0,r.jsx)(`thead`,{className:`flexi-thead`,children:e.map((n,i)=>(0,r.jsxs)(`tr`,{className:`flexi-header-row`,children:[i===0&&t&&(0,r.jsx)(`th`,{rowSpan:e.length,className:`flexi-group-spacer-th`,style:{position:`sticky`,top:0,left:0,zIndex:35,backgroundColor:`rgb(248, 250, 252)`}}),n.map(({col:e,rowSpan:t,colSpan:n})=>(0,r.jsx)(H,{col:e,rowSpan:t,colSpan:n},e.key))]},`header-row-${i}`))})}var de=(e,t,n,r=0,i=``)=>{if(r>=t.length)return e.map(e=>({kind:`record`,record:e}));let a=t[r],o=n.get(a),s=new Map;return e.forEach(e=>{let t=String(O(e,a,o)??`N/A`),n=s.get(t);n?n.push(e):s.set(t,[e])}),Array.from(s.entries()).sort(([e],[t])=>e.localeCompare(t,void 0,{numeric:!0,sensitivity:`base`})).map(([e,o])=>{let s=i?`${i}➔${e}`:e;return{kind:`group`,groupKey:a,groupValue:e,path:s,depth:r,children:de(o,t,n,r+1,s),totalItemsCount:o.length}})},fe=(e,t)=>{let n=[],r=e=>{e.forEach(e=>{n.push(e),e.kind===`group`&&t[e.path]!==!1&&r(e.children)})};return r(e),n},pe=(e,t,n,r)=>{let i=new Map;if(!t||t.length===0)return i;let a=e.map(()=>t.map(()=>!0)),o=null;for(let r=0;r<e.length;r++){let i=e[r];if(i.kind===`group`){o=null;continue}let s=o===null?null:e[o];if(s&&s.kind===`record`){let e=!0;for(let o=0;o<t.length;o++){let c=t[o],l=n.get(c);e&&O(i.record,c,l)===O(s.record,c,l)?a[r][o]=!1:(e=!1,a[r][o]=!0)}}o=r}return t.forEach((t,n)=>{let o=0;for(;o<e.length;){if(e[o].kind===`group`||!a[o][n]){o++;continue}let s=o+1;for(;s<e.length&&e[s].kind!==`group`&&!a[s][n];)s++;if(s-o>1){let e=i.get(r+o)||{};e[t]=s-o,i.set(r+o,e);for(let e=o+1;e<s;e++){let n=i.get(r+e)||{};n[t]=`skip`,i.set(r+e,n)}}o=s}}),i};function W({active:e,resetKey:n,rootRef:r,getAnchor:i,compute:a}){let[o,s]=(0,t.useState)(null),c=(0,t.useRef)(i),l=(0,t.useRef)(a);return c.current=i,l.current=a,(0,t.useEffect)(()=>{if(!e){s(null);return}let t=()=>{let e=c.current(),t=r.current;!e||!t||s(l.current(e.getBoundingClientRect(),t.getBoundingClientRect()))};return t(),window.addEventListener(`scroll`,t,!0),window.addEventListener(`resize`,t),()=>{window.removeEventListener(`scroll`,t,!0),window.removeEventListener(`resize`,t)}},[e,n,r]),o}function G(e,n,r){let i=(0,t.useRef)(n),a=(0,t.useRef)(r);i.current=n,a.current=r,(0,t.useEffect)(()=>{if(!e)return;let t=e=>{let t=e.target,[n,...r]=i.current();n&&(n.contains(t)||r.some(e=>e?.contains(t))||a.current())};return document.addEventListener(`mousedown`,t),()=>document.removeEventListener(`mousedown`,t)},[e])}function me({data:e,columnsByKey:n,gridRootRef:r,onConditionFilterChange:i}){let[a,o]=(0,t.useState)(null),[s,c]=(0,t.useState)(`condition`),[l,u]=(0,t.useState)({}),[d,f]=(0,t.useState)({}),[p,m]=(0,t.useState)(``),h=(0,t.useRef)(new Map),g=(0,t.useRef)(null),_=(0,t.useCallback)((e,t)=>{t?h.current.set(e,t):h.current.delete(e)},[]),v=(0,t.useCallback)(()=>{o(null),m(``)},[]),y=(0,t.useCallback)(e=>{m(``),o(t=>t===e?null:e)},[]);G(a!==null,()=>[g.current,a?h.current.get(a):null],v);let b=W({active:a!==null,resetKey:a,rootRef:r,getAnchor:()=>a?h.current.get(a):null,compute:(e,t)=>({top:e.bottom-t.top+4,left:e.left-t.left})}),x=(0,t.useCallback)((e,t)=>{u(n=>{let r=n[e]||[],i=r.includes(t)?r.filter(e=>e!==t):[...r,t],a={...n,[e]:i};return i.length===0&&delete a[e],a})},[]),S=(0,t.useCallback)(e=>{u(t=>{let n={...t};return delete n[e],n})},[]),C=(0,t.useCallback)((e,t)=>{f(n=>{let r={...n};return!t||t.conditions.length===0?delete r[e]:r[e]=t,i?.(r),r})},[i]),w=(0,t.useCallback)(e=>{f(t=>{let n={...t};return delete n[e],i?.(n),n})},[i]),T=(0,t.useMemo)(()=>a?A(e,a,n.get(a)):[],[e,a,n]),E=(0,t.useMemo)(()=>a?j(e,a,n.get(a)):`text`,[e,a,n]);return{activeFilterKey:a,filterTab:s,setFilterTab:c,selectedFilters:l,conditionFilters:d,filterSearchQuery:p,setFilterSearchQuery:m,filterPosition:b,dropdownRef:g,filteredUniqueValues:(0,t.useMemo)(()=>{if(!p.trim())return T;let e=p.toLowerCase();return T.filter(t=>String(t).toLowerCase().includes(e))},[T,p]),activeColumnFilterType:E,registerFilterButton:_,toggleFilterDropdown:y,handleFilterChange:x,clearFilter:S,setConditionFilter:C,clearConditionFilter:w}}function he({columns:e,pinnedColumns:n,isResizingRef:r,onColumnReorder:i}){let[a,o]=(0,t.useState)({}),s=(0,t.useRef)(null),c=(0,t.useMemo)(()=>y(e,n,a),[e,n,a]);return{reorderedColumns:c,handleDragStart:(0,t.useCallback)((e,t,n)=>{if(r.current){e.preventDefault();return}s.current=t,n&&e.dataTransfer.setData(`text/plain`,t),e.dataTransfer.effectAllowed=`move`},[r]),handleDragEnd:(0,t.useCallback)(()=>{s.current=null},[]),handleDrop:(0,t.useCallback)((t,r)=>{t.preventDefault(),t.stopPropagation();let l=s.current;if(s.current=null,!l||l===r)return;let u=b(c,l,r);if(!u)return;let d=u.map(e=>e.key),f=d.indexOf(l),p=d.indexOf(r);d.splice(p,0,d.splice(f,1)[0]);let m={...a};d.forEach((e,t)=>{m[e]=t}),o(m),i&&i(g(y(e,n,m)).map(e=>e.key))},[c,a,e,n,i])}}function ge(e){let[n,r]=(0,t.useState)({}),i=(0,t.useRef)(!1),a=(0,t.useRef)(null),o=(0,t.useRef)(e);return o.current=e,(0,t.useEffect)(()=>()=>a.current?.(),[]),{columnWidths:n,isResizingRef:i,startResize:(0,t.useCallback)((e,t)=>{e.preventDefault(),e.stopPropagation(),a.current?.(),i.current=!0;let s=e.clientX,c=x(t,n),l=t.minWidth??60,u=t.maxWidth,d=n[t.key],f=e=>{let n=Math.max(l,c+(e.clientX-s));u&&(n=Math.min(u,n)),d=n,r(e=>e[t.key]===n?e:{...e,[t.key]:n})},p=()=>{window.removeEventListener(`mousemove`,f),window.removeEventListener(`mouseup`,m),a.current=null},m=()=>{p(),requestAnimationFrame(()=>{i.current=!1}),d!==void 0&&o.current?.(t.key,d)};window.addEventListener(`mousemove`,f),window.addEventListener(`mouseup`,m),a.current=()=>{p(),i.current=!1}},[n])}}function _e({defaultHiddenColumns:e,defaultDisplayPinnedIcon:n,onColumnVisibilityChange:r}){let[i,a]=(0,t.useState)(e),[o,s]=(0,t.useState)(n);return{hiddenColumns:i,displayPinnedIcon:o,toggleColumnVisibility:(0,t.useCallback)(e=>{let t=i.includes(e)?i.filter(t=>t!==e):[...i,e];a(t),r?.(t)},[i,r]),toggleDisplayPinnedIcon:(0,t.useCallback)(()=>s(e=>!e),[]),resetControlPanelDefaults:(0,t.useCallback)(()=>{s(n),a(e),r?.(e)},[n,e,r])}}function ve({items:e,enabled:n,defaultPageSize:r,onPageChange:i,resetOn:a}){let[o,s]=(0,t.useState)(1),[c,l]=(0,t.useState)(Math.max(1,Math.floor(r)||1)),u=e.length,d=n?Math.max(1,Math.ceil(u/c)):1;return(0,t.useEffect)(()=>{s(1)},[...a,c,n]),(0,t.useEffect)(()=>{o>d&&s(d)},[o,d]),{currentPage:o,pageSize:c,totalPages:d,totalCount:u,pagedItems:(0,t.useMemo)(()=>{if(!n)return e;let t=(o-1)*c;return e.slice(t,t+c)},[e,n,o,c]),goToPage:(0,t.useCallback)(e=>{let t=Math.min(Math.max(1,e),d);s(t),i?.(t,c)},[d,c,i]),changePageSize:(0,t.useCallback)(e=>{l(e),s(1),i?.(1,e)},[i])}}function ye(e,n){let[r,i]=(0,t.useState)(()=>v(e));return{pinnedColumns:r,togglePin:(0,t.useCallback)(e=>{let t=r[e],a=t?t===`left`?`right`:void 0:`left`,o={...r};a?o[e]=a:delete o[e],i(o),n?.(e,!!a,a)},[r,n])}}function be(e,n){let[r,i]=(0,t.useState)(e),[a,o]=(0,t.useState)({});return{groupedColumns:r,expandedGroups:a,addGroup:(0,t.useCallback)(e=>{if(!e||r.includes(e))return;let t=[...r,e];i(t),n?.(t)},[r,n]),removeGroup:(0,t.useCallback)(e=>{let t=r.filter(t=>t!==e);i(t),o({}),n?.(t)},[r,n]),toggleGroupExpansion:(0,t.useCallback)(e=>{o(t=>({...t,[e]:t[e]===!1}))},[])}}function xe(e){let[n,r]=(0,t.useState)(!1),i=(0,t.useRef)(null),a=(0,t.useRef)(null),o=(0,t.useCallback)(()=>r(e=>!e),[]);return G(n,()=>[i.current,a.current],(0,t.useCallback)(()=>r(!1),[])),{isOpen:n,position:W({active:n,rootRef:e,getAnchor:()=>a.current,compute:(e,t)=>({top:e.bottom-t.top+4,right:t.right-e.right})}),menuRef:i,buttonRef:a,toggle:o}}function Se(){let[e,n]=(0,t.useState)({key:null,direction:null});return{sortState:e,handleSort:(0,t.useCallback)(e=>{n(t=>{let n=`asc`;return t.key===e&&(t.direction===`asc`?n=`desc`:t.direction===`desc`&&(n=null)),{key:n?e:null,direction:n}})},[])}}function Ce({containerRef:e,totalRowCount:n,rowHeight:r,overscan:i}){let[a,o]=(0,t.useState)(0),[s,c]=(0,t.useState)(0);return(0,t.useEffect)(()=>{let t=e.current;if(!t)return;let n=()=>o(t.scrollTop);c(t.clientHeight),o(t.scrollTop),t.addEventListener(`scroll`,n,{passive:!0});let r;return typeof ResizeObserver<`u`&&(r=new ResizeObserver(()=>c(t.clientHeight)),r.observe(t)),()=>{t.removeEventListener(`scroll`,n),r?.disconnect()}},[e]),(0,t.useMemo)(()=>{if(s===0||r===`auto`)return{startIndex:0,endIndex:n,topSpacerHeight:0,bottomSpacerHeight:0};let e=r>0?r:1,t=Math.max(0,n-1),o=Math.min(t,Math.floor(a/e)),c=Math.ceil(s/e)+1,l=Math.max(0,o-i),u=Math.min(n,o+c+i);return{startIndex:l,endIndex:u,topSpacerHeight:l*e,bottomSpacerHeight:(n-u)*e}},[a,s,n,r,i])}function we({columns:e,data:n,rowKey:r,actions:i,isLoading:a,groupBy:o=!1,defaultGroupBy:s=f,onPinChange:c,onGroupChange:l,pinnedBottomRowData:u=p,pinnedRowClassName:m,rowHeight:h=40,overscan:_=8,onColumnResize:v,onColumnReorder:y,rowClassRules:b,onRowClick:x,rowSpanColumns:w,controlPanel:T=!1,defaultDisplayPinnedIcon:E=!1,defaultHiddenColumns:D=f,onColumnVisibilityChange:ee,pagination:te=!1,defaultPageSize:ne=10,pageSizeOptions:re=d,onPageChange:ie,onConditionFilterChange:O}){let k=(0,t.useRef)(null),ae=(0,t.useRef)(null),A=(0,t.useMemo)(()=>g(e),[e]),j=(0,t.useMemo)(()=>{let e=new Map;return A.forEach(t=>e.set(t.key,t)),e},[A]),{pinnedColumns:M,togglePin:N}=ye(A,c),{columnWidths:P,isResizingRef:F,startResize:ce}=ge(v),{reorderedColumns:I,handleDragStart:ue,handleDragEnd:L,handleDrop:R}=he({columns:e,pinnedColumns:M,isResizingRef:F,onColumnReorder:y}),z=_e({defaultHiddenColumns:D,defaultDisplayPinnedIcon:E,onColumnVisibilityChange:ee}),{hiddenColumns:B}=z,V=be(s,l),{groupedColumns:H,expandedGroups:U}=V,[W,G]=(0,t.useState)(o);(0,t.useEffect)(()=>G(o),[o]);let we=(0,t.useCallback)(()=>G(e=>!e),[]),{resetControlPanelDefaults:Te}=z,Ee=(0,t.useCallback)(()=>{Te(),G(o)},[Te,o]),De=W,K=De?H:f,q=K.length>0,J=!!i,Y=(0,t.useMemo)(()=>g(I).filter(e=>!K.includes(e.key)&&!B.includes(e.key)),[I,K,B]),Oe=(0,t.useMemo)(()=>S(I,K,B),[I,K,B]),ke=(0,t.useMemo)(()=>C({visibleLeafColumns:Y,pinnedColumns:M,columnWidths:P,hasGroups:q,hasActions:J}),[Y,M,P,q,J]),X=me({data:n,columnsByKey:j,gridRootRef:k,onConditionFilterChange:O}),{sortState:Z,handleSort:Ae}=Se(),Q=ve({items:(0,t.useMemo)(()=>{let e=oe(n,X.selectedFilters,j);return e=se(e,X.conditionFilters,j),!Z.key||!Z.direction?e:le(e,Z.key,Z.direction,j.get(Z.key))},[n,X.selectedFilters,X.conditionFilters,Z,j]),enabled:te,defaultPageSize:ne,onPageChange:ie,resetOn:[X.selectedFilters,X.conditionFilters,Z]}),je=(0,t.useMemo)(()=>de(Q.pagedItems,K,j),[Q.pagedItems,K,j]),Me=(0,t.useMemo)(()=>fe(je,U),[je,U]),Ne=Me.length,{startIndex:$,endIndex:Pe,topSpacerHeight:Fe,bottomSpacerHeight:Ie}=Ce({containerRef:ae,totalRowCount:Ne,rowHeight:h,overscan:_}),Le=(0,t.useMemo)(()=>Me.slice($,Pe),[Me,$,Pe]),Re=(0,t.useMemo)(()=>pe(Le,w,j,$),[Le,w,j,$]),ze=xe(k),Be=Y.length+ +!!J+ +!!q;return{gridRootRef:k,tableWrapRef:ae,rowKey:r,actions:i,isLoading:!!a,groupBy:De,showGroupBy:W,toggleShowGroupBy:we,controlPanel:T,rowHeight:h,rowSpanColumns:w,rowClassRules:b,onRowClick:x,pinnedBottomRowData:u,pinnedRowClassName:m,pageSizeOptions:re,paginationEnabled:te,initialLeafColumns:A,columnsByKey:j,visibleLeafColumns:Y,headerRows:Oe,pinnedColumns:M,pinOffsets:ke,columnWidths:P,togglePin:N,startResize:ce,handleDragStart:ue,handleDragEnd:L,handleDrop:R,hiddenColumns:B,displayPinnedIcon:z.displayPinnedIcon,toggleColumnVisibility:z.toggleColumnVisibility,toggleDisplayPinnedIcon:z.toggleDisplayPinnedIcon,resetControlPanelDefaults:Ee,settingsMenu:ze,groupedColumns:H,expandedGroups:U,addGroup:V.addGroup,removeGroup:V.removeGroup,toggleGroupExpansion:V.toggleGroupExpansion,hasGroups:q,hasActions:J,sortState:Z,handleSort:Ae,filters:X,currentPage:Q.currentPage,pageSize:Q.pageSize,totalPages:Q.totalPages,totalCount:Q.totalCount,goToPage:Q.goToPage,changePageSize:Q.changePageSize,visibleRows:Le,startIndex:$,totalRowCount:Ne,topSpacerHeight:Fe,bottomSpacerHeight:Ie,rowSpanInfo:Re,totalColumnsCount:Be}}var Te=[`height`,`maxHeight`,`minHeight`];function Ee(e,n){let[r,i]=(0,t.useState)(0);return(0,t.useLayoutEffect)(()=>{let t=n?e.current?.firstElementChild:null;if(!(t instanceof HTMLElement)){i(0);return}let r=()=>{let e=parseFloat(getComputedStyle(t.nextElementSibling??t).marginTop)||0;i(t.offsetHeight+e)};r();let a=new ResizeObserver(r);return a.observe(t),()=>a.disconnect()},[e,n]),r}function De(e,t){if(!e||t<=0)return e;let n={...e};for(let r of Te){let i=e[r];i==null||i===``||i===`auto`||i===`none`||(n[r]=`calc(${typeof i==`number`?`${i}px`:String(i)} - ${t}px)`)}return n}function K(e){let t=we(e),{containerStyle:n,tableStyle:i,bordered:a=!1}=e,s=De(n,Ee(t.gridRootRef,!!t.groupBy));return(0,r.jsx)(o,{value:t,children:(0,r.jsxs)(`div`,{ref:t.gridRootRef,className:`flexi-root`,children:[t.groupBy&&(0,r.jsx)(l,{}),(0,r.jsxs)(`div`,{ref:t.tableWrapRef,className:`flexi-table-wrap`,style:s,children:[t.controlPanel&&(0,r.jsx)(`div`,{className:`flexi-settings-corner`,children:(0,r.jsx)(`div`,{className:`flexi-settings-corner-inner`,children:(0,r.jsx)(re,{})})}),(0,r.jsxs)(`table`,{className:c(`flexi-table`,a&&`flexi-table--bordered`),style:i,children:[(0,r.jsx)(ue,{}),(0,r.jsx)(U,{}),(0,r.jsx)(I,{}),(0,r.jsx)(ne,{})]})]}),(0,r.jsx)(ie,{}),t.paginationEnabled&&(0,r.jsx)(u,{})]})})}e.DataTable=K});
|