@gp-grid/vue 0.21.0 → 0.23.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/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/styles.css +1 -1137
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Component, ComputedRef, Ref, ShallowRef, VNode } from "vue";
|
|
2
|
-
import { CellDataType, CellPosition, CellPosition as CellPosition$1, CellRange, CellRange as CellRange$1, CellRendererParams, CellRendererParams as CellRendererParams$1, CellValue, CellValue as CellValue$1, CellValueChangedEvent, CellValueChangedEvent as CellValueChangedEvent$1, ColumnDefinition as ColumnDefinition$1, ColumnFilterModel, ColumnFilterModel as ColumnFilterModel$1, ContainerBounds, DataSource, DataSource as DataSource$1, DataSourceLoadMode, DataSourceRange, DataSourceRequest, DataSourceResponse, DateFilterCondition, DragState, DragState as DragState$1, EditRendererParams, EditRendererParams as EditRendererParams$1, FillHandlePosition, FilterCondition, FilterModel, FilterPopupState, GridCore, GridCore as GridCore$1, GridFilterOperatorLabels, GridInstruction, GridInstruction as GridInstruction$1, GridLabels, GridLabels as GridLabels$1, GridState, GridState as GridState$1, HeaderData, HeaderRendererParams, HeaderRendererParams as HeaderRendererParams$1, HighlightingOptions, KeyEventData, MutableDataSource, MutableDataSource as MutableDataSource$1, NumberFilterCondition, ParallelSortOptions, PointerEventData, RowCacheEviction, RowCacheOptions, RowId, RowId as RowId$1, RowLoadingMode, RowLoadingOptions, RowLoadingOptions as RowLoadingOptions$1, SelectionState, SlotData, SlotData as SlotData$1, SortDirection, SortDirection as SortDirection$1, SortModel, TextFilterCondition, VisibleColumnInfo, buildCellClasses, buildCellClasses as buildCellClasses$1, calculateColumnPositions, createClientDataSource, createDataSourceFromArray, createInitialState, createMutableClientDataSource, createServerDataSource, findColumnAtX, getFieldValue as getCellValue, getTotalWidth,
|
|
2
|
+
import { CellDataType, CellPosition, CellPosition as CellPosition$1, CellRange, CellRange as CellRange$1, CellRendererParams, CellRendererParams as CellRendererParams$1, CellValue, CellValue as CellValue$1, CellValueChangedEvent, CellValueChangedEvent as CellValueChangedEvent$1, ColumnDefinition as ColumnDefinition$1, ColumnFilterModel, ColumnFilterModel as ColumnFilterModel$1, ContainerBounds, DataSource, DataSource as DataSource$1, DataSourceLoadMode, DataSourceRange, DataSourceRequest, DataSourceResponse, DateFilterCondition, DragState, DragState as DragState$1, EditRendererParams, EditRendererParams as EditRendererParams$1, FillHandlePosition, FilterCondition, FilterModel, FilterPopupState, GridCore, GridCore as GridCore$1, GridFilterOperatorLabels, GridInstruction, GridInstruction as GridInstruction$1, GridLabels, GridLabels as GridLabels$1, GridState, GridState as GridState$1, HeaderData, HeaderRendererParams, HeaderRendererParams as HeaderRendererParams$1, HighlightingOptions, KeyEventData, MutableDataSource, MutableDataSource as MutableDataSource$1, NumberFilterCondition, ParallelSortOptions, PointerEventData, RowCacheEviction, RowCacheOptions, RowId, RowId as RowId$1, RowLoadingMode, RowLoadingOptions, RowLoadingOptions as RowLoadingOptions$1, SelectionState, SlotData, SlotData as SlotData$1, SortDirection, SortDirection as SortDirection$1, SortModel, TextFilterCondition, VisibleColumnInfo, buildCellClasses, buildCellClasses as buildCellClasses$1, calculateColumnPositions, createClientDataSource, createDataSourceFromArray, createInitialState, createMutableClientDataSource, createServerDataSource, findColumnAtX, getFieldValue as getCellValue, getTotalWidth, isCellActive, isCellActive as isCellActive$1, isCellEditing, isCellEditing as isCellEditing$1, isCellInFillPreview, isCellInFillPreview as isCellInFillPreview$1, isCellSelected, isCellSelected as isCellSelected$1, isRowVisible } from "@gp-grid/core";
|
|
3
3
|
//#region src/types.d.ts
|
|
4
4
|
/** Row data alias — core's generic defaults to `unknown`, this preserves the name. */
|
|
5
5
|
type Row = unknown;
|
|
@@ -399,4 +399,4 @@ interface RenderHeaderOptions {
|
|
|
399
399
|
*/
|
|
400
400
|
declare function renderHeader(options: RenderHeaderOptions): VNode;
|
|
401
401
|
//#endregion
|
|
402
|
-
export { type CellDataType, type CellPosition, type CellRange, type CellRendererParams, type CellValue, type CellValueChangedEvent, type ColumnDefinition, type ColumnFilterModel, type ContainerBounds, type DataSource, type DataSourceLoadMode, type DataSourceRange, type DataSourceRequest, type DataSourceResponse, type DateFilterCondition, type DragState, type EditRendererParams, type FilterCondition, type FilterModel, type FilterPopupState, _default as GpGrid, _default as default, type GpGridProps, GridCore, type GridFilterOperatorLabels, type GridInstruction, type GridLabels, type GridState, type HeaderData, type HeaderRendererParams, type KeyEventData, type LocalFilterCondition, type MutableDataSource, type NumberFilterCondition, type PointerEventData, type RowCacheEviction, type RowCacheOptions, type RowId, type RowLoadingMode, type RowLoadingOptions, type SelectionState, type SlotData, type SortDirection, type SortModel, type TextFilterCondition, type UseFillHandleOptions, type UseFillHandleResult, type UseFilterConditionsResult, type UseFilterPopupOptions, type UseGpGridOptions, type UseGpGridResult, type UseGridDataOptions, type UseGridDataResult, type UseInputHandlerOptions, type UseInputHandlerResult, type VueCellRenderer, type VueEditRenderer, type VueHeaderRenderer, buildCellClasses, calculateColumnPositions, createClientDataSource, createDataSourceFromArray, createInitialState, createMutableClientDataSource, createServerDataSource, findColumnAtX, getCellValue, getTotalWidth,
|
|
402
|
+
export { type CellDataType, type CellPosition, type CellRange, type CellRendererParams, type CellValue, type CellValueChangedEvent, type ColumnDefinition, type ColumnFilterModel, type ContainerBounds, type DataSource, type DataSourceLoadMode, type DataSourceRange, type DataSourceRequest, type DataSourceResponse, type DateFilterCondition, type DragState, type EditRendererParams, type FilterCondition, type FilterModel, type FilterPopupState, _default as GpGrid, _default as default, type GpGridProps, GridCore, type GridFilterOperatorLabels, type GridInstruction, type GridLabels, type GridState, type HeaderData, type HeaderRendererParams, type KeyEventData, type LocalFilterCondition, type MutableDataSource, type NumberFilterCondition, type PointerEventData, type RowCacheEviction, type RowCacheOptions, type RowId, type RowLoadingMode, type RowLoadingOptions, type SelectionState, type SlotData, type SortDirection, type SortModel, type TextFilterCondition, type UseFillHandleOptions, type UseFillHandleResult, type UseFilterConditionsResult, type UseFilterPopupOptions, type UseGpGridOptions, type UseGpGridResult, type UseGridDataOptions, type UseGridDataResult, type UseInputHandlerOptions, type UseInputHandlerResult, type VueCellRenderer, type VueEditRenderer, type VueHeaderRenderer, buildCellClasses, calculateColumnPositions, createClientDataSource, createDataSourceFromArray, createInitialState, createMutableClientDataSource, createServerDataSource, findColumnAtX, getCellValue, getTotalWidth, isCellActive, isCellEditing, isCellInFillPreview, isCellSelected, isRowVisible, renderCell, renderEditCell, renderHeader, useAutoScroll, useFillHandle, useFilterConditions, useFilterPopup, useGpGrid, useGridData, useGridState, useInputHandler };
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Fragment as e,computed as t,createBlock as n,createCommentVNode as r,createElementBlock as i,createElementVNode as a,createTextVNode as o,createVNode as s,defineComponent as c,h as l,normalizeClass as u,normalizeStyle as d,onMounted as f,onUnmounted as p,openBlock as m,ref as h,renderList as g,resolveDynamicComponent as _,shallowRef as v,toDisplayString as y,unref as b,vModelText as x,watch as S,watchEffect as C,withDirectives as w,withModifiers as T}from"vue";import{GridCore as E,GridCore as D,PendingCellTapController as O,ROW_DRAG_HOLD_MS as k,TAP_SLOP_PX as A,TouchScrollController as j,applyInstruction as M,bindPeekSelectAll as N,buildCellClasses as P,buildCellClasses as F,calculateColumnPositions as I,calculateFillHandlePosition as L,calculateFilterPopupPosition as R,calculateScaledColumnPositions as z,createClientDataSource as B,createClientDataSource as ee,createDataSourceFromArray as V,createDataSourceFromArray as H,createInitialState as U,createInitialState as W,createMutableClientDataSource as te,createMutableClientDataSource as ne,createServerDataSource as re,findColumnAtX as ie,formatCellValue as ae,formatLabel as G,getDateOperatorOptions as oe,getFieldValue as K,getFieldValue as q,getNumberOperatorOptions as J,getTextOperatorOptions as se,getTotalWidth as ce,getTotalWidth as le,gridStyles as ue,groupDistinctValues as de,isBlankCellValue as fe,isCellActive as pe,isCellActive as Y,isCellEditing as me,isCellEditing as X,isCellInFillPreview as Z,isCellInFillPreview as he,isCellSelected as ge,isCellSelected as _e,isRowVisible as ve,labelsForSelectedValues as ye,rawValuesForLabels as be,resolveGridLabels as xe,scrollCellIntoView as Se}from"@gp-grid/core";function Ce(e){let t=v(W(e));return{state:t,applyInstructions:e=>{let n=t.value,r=new Map(n.slots),i=new Map(n.headers),a={pendingScrollTop:null};for(let t of e){let e=M(t,r,i);e&&Object.assign(a,e)}a.slots=r,a.headers=i,t.value={...n,...a}},reset:()=>{t.value=W()}}}function we(e,t){let n=h(null);function r(r,i){n.value&&clearInterval(n.value),n.value=setInterval(()=>{let n=e.value;n&&(n.scrollTop+=i,n.scrollLeft+=r,t?.())},16)}function i(){n.value&&=(clearInterval(n.value),null)}return p(()=>{i()}),{startAutoScroll:r,stopAutoScroll:i}}function Te(e,t,n,r){let{activeCell:i,selectionRange:a,editingCell:o,filterPopupOpen:s,rowHeight:c,headerHeight:l,columnPositions:u,columnWidths:d,visibleColumnsWithIndices:f,slots:m,rowsWrapperOffset:g}=r,_=h({isDragging:!1,dragType:null,fillSourceRange:null,fillTarget:null,columnResize:null,columnMove:null,rowDrag:null}),v=null,y=null,b=null,x=null,C=null,w=e=>{e.preventDefault()},T=new O({getCore:()=>e.value,isBrowser:typeof window<`u`,onTapConfirmed:()=>t.value?.focus()}),{startAutoScroll:E,stopAutoScroll:D}=we(t,()=>{let t=e.value;if(v&&t?.input){let e=j();e&&(t.input.handleDragMove(v,e),_.value=t.input.getDragState())}});S([()=>l,()=>c,u,f],()=>{let t=e.value;if(t?.input){let e=f.value;t.input.updateDeps({getHeaderHeight:()=>l,getRowHeight:()=>c,getColumnPositions:()=>u.value,getColumnCount:()=>e.length,getOriginalColumnIndex:t=>{let n=e[t];return n?n.originalIndex:t}})}},{immediate:!0});function j(){let e=t.value;if(!e)return null;let n=e.getBoundingClientRect();return{top:n.top,left:n.left,width:n.width,height:n.height,scrollTop:e.scrollTop,scrollLeft:e.scrollLeft}}function M(e){return{clientX:e.clientX,clientY:e.clientY,button:e.button,shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,metaKey:e.metaKey,pointerId:e.pointerId,pointerType:e.pointerType}}function N(){y?.();let n=t=>{t.preventDefault();let n=e.value,r=j();if(!n?.input||!r)return;let i=M(t);v=i;let a=n.input.handleDragMove(i,r);a&&(a.autoScroll?E(a.autoScroll.dx,a.autoScroll.dy):D(),_.value=n.input.getDragState())},r=()=>{try{let t=e.value;t?.input&&t.input.handleDragEnd()}finally{let i=e.value,a=i?.input?i.input.getDragState():{isDragging:!1,dragType:null,fillSourceRange:null,fillTarget:null,columnResize:null,columnMove:null,rowDrag:null};_.value=a,v=null,D(),document.removeEventListener(`touchmove`,w),C!==null&&t.value&&(t.value.style.overflow=C,C=null),document.removeEventListener(`pointermove`,n),document.removeEventListener(`pointerup`,r),document.removeEventListener(`pointercancel`,r),y=null}};document.addEventListener(`pointermove`,n,{passive:!1}),document.addEventListener(`pointerup`,r),document.addEventListener(`pointercancel`,r),y=()=>{document.removeEventListener(`pointermove`,n),document.removeEventListener(`pointerup`,r),document.removeEventListener(`pointercancel`,r)}}function P(){b!==null&&(clearTimeout(b),b=null,e.value?.input?.cancelPendingRowDrag()),x=null}function F(n,r,i){let a=e.value;if(!a?.input)return;let o=a.input.handleCellMouseDown(n,r,M(i));if(o.focusContainer&&t.value?.focus(),o.startTap&&T.start(i),o.startDrag===`selection`)a.input.startSelectionDrag(),_.value=a.input.getDragState(),N();else if(o.startDrag===`row-drag`)_.value=a.input.getDragState(),N();else if(o.startDrag===`row-drag-pending`){P(),x={pointerId:i.pointerId,target:i.currentTarget??i.target};let e=i.clientX,n=i.clientY,r=t=>{let r=t.clientX-e,i=t.clientY-n;(Math.abs(r)>A||Math.abs(i)>A)&&(P(),s())},o=()=>{P(),s()},s=()=>{document.removeEventListener(`pointermove`,r),document.removeEventListener(`pointerup`,o),document.removeEventListener(`pointercancel`,o)};document.addEventListener(`pointermove`,r),document.addEventListener(`pointerup`,o,{once:!0}),document.addEventListener(`pointercancel`,o,{once:!0}),b=setTimeout(()=>{b=null,s();let e=x;if(x=null,a.input.confirmPendingRowDrag()){if(t.value&&(C=t.value.style.overflow,t.value.style.overflow=`hidden`),document.addEventListener(`touchmove`,w,{passive:!1}),e)try{e.target.setPointerCapture(e.pointerId)}catch{}_.value=a.input.getDragState(),N()}},k)}}function I(t,n){let r=e.value;r?.input&&r.input.handleCellDoubleClick(t,n)}function L(t){let n=e.value;if(!n?.input)return;let r=n.input.handleFillHandleMouseDown(i.value,a.value,M(t));if(r.preventDefault&&t.preventDefault(),r.stopPropagation&&t.stopPropagation(),r.startDrag===`fill`){try{t.target.setPointerCapture(t.pointerId)}catch{}_.value=n.input.getDragState(),N()}}function R(t,r){let i=e.value;if(!i?.input)return;let a=n.value[t];if(!a)return;let o=a.colId??a.field;i.input.handleHeaderClick(o,r.shiftKey)}function z(t,n,r,i){let a=e.value;if(!a?.input)return;let o=a.input.handleHeaderMouseDown(t,n,r,M(i));if(o.preventDefault&&i.preventDefault(),o.stopPropagation&&i.stopPropagation(),o.startDrag===`column-move`){try{i.target.setPointerCapture(i.pointerId)}catch{}_.value=a.input.getDragState(),N()}}function B(t,n,r){let i=e.value;if(!i?.input)return;let a=i.input.handleHeaderResizeMouseDown(t,n,M(r));a.preventDefault&&r.preventDefault(),a.stopPropagation&&r.stopPropagation(),a.startDrag===`column-resize`&&(_.value=i.input.getDragState(),N())}function ee(n){let r=e.value,a=t.value;if(!r?.input)return;let l=r.input.handleKeyDown({key:n.key,shiftKey:n.shiftKey,ctrlKey:n.ctrlKey,metaKey:n.metaKey},i.value,o.value,s.value);l.preventDefault&&n.preventDefault(),l.scrollToCell&&a&&Se(r,a,l.scrollToCell.row,c,m.value,g.value,{colIndex:l.scrollToCell.col,visibleColumns:f.value,columnPositions:u.value,columnWidths:d.value})}function V(t){let n=e.value;if(n===null||o.value!==null||s.value)return;let r=t.clipboardData?.getData(`text/plain`)??``;n.pasteClipboardText(r)&&t.preventDefault()}function H(n,r){let i=e.value,a=t.value;if(!i?.input||!a)return;let o=i.input.handleWheel(n.deltaY,n.deltaX,r);o&&(n.preventDefault(),a.scrollTop+=o.dy,a.scrollLeft+=o.dx)}return p(()=>{y?.(),y=null,P(),T.cancel(),D(),document.removeEventListener(`touchmove`,w),C!==null&&t.value&&(t.value.style.overflow=C,C=null)}),{handleCellMouseDown:F,handleCellDoubleClick:I,handleFillHandleMouseDown:L,handleHeaderClick:R,handleHeaderMouseDown:z,handleHeaderResizeMouseDown:B,handleKeyDown:ee,handlePaste:V,handleWheel:H,dragState:_}}const Ee=e=>{let{activeCell:n,selectionRange:r,slots:i,columns:a,visibleColumnsWithIndices:o,columnPositions:s,columnWidths:c,rowHeight:l}=e;return{fillHandlePosition:t(()=>L({activeCell:n.value,selectionRange:r.value,slots:i.value,columns:a.value,visibleColumnsWithIndices:o.value,columnPositions:s.value,columnWidths:c.value,rowHeight:l}))}};function De(e,t){let{onClose:n,ignoreSelector:r=`.gp-grid-filter-icon`}=t,i=null,a=null;f(()=>{i=t=>{let i=t.target;r&&i.closest(r)||e.value&&!e.value.contains(i)&&n()},a=e=>{e.key===`Escape`&&n()},requestAnimationFrame(()=>{i&&document.addEventListener(`pointerdown`,i),a&&document.addEventListener(`keydown`,a)})}),p(()=>{i&&document.removeEventListener(`pointerdown`,i),a&&document.removeEventListener(`keydown`,a)})}function Q(e,t=`and`){let n=h([...e]);return{conditions:n,combination:h(t),updateCondition:(e,t)=>{let r=[...n.value];r[e]={...r[e],...t},n.value=r},addCondition:e=>{n.value=[...n.value,{operator:e,value:``,valueTo:``,nextOperator:`and`}]},removeCondition:e=>{n.value=n.value.filter((t,n)=>n!==e)}}}const Oe={class:`gp-grid-filter-content gp-grid-filter-text`},ke={key:0,class:`gp-grid-filter-mode-toggle`},Ae={key:1,class:`gp-grid-filter-info`},je=[`placeholder`],Me={class:`gp-grid-filter-actions`},Ne=[`disabled`],Pe={class:`gp-grid-filter-list`},Fe={key:0,class:`gp-grid-filter-option`},Ie=[`checked`],Le={class:`gp-grid-filter-blank`},Re=[`checked`,`onChange`],ze={key:0,class:`gp-grid-filter-combination`},Be=[`onClick`],Ve=[`onClick`],He={class:`gp-grid-filter-row`},Ue=[`value`,`autofocus`,`onChange`],We=[`value`],Ge=[`value`,`placeholder`,`onInput`],Ke=[`onClick`],qe={class:`gp-grid-filter-buttons`},Je=c({__name:`TextFilterContent`,props:{distinctValues:{},valueFormatter:{type:Function},currentFilter:{},labels:{}},emits:[`apply`,`close`],setup(n,{emit:o}){let s=n,c=o,l=t(()=>se(s.labels)),d=t(()=>de(s.distinctValues,s.valueFormatter)),f=t(()=>d.value.length>100),p=h(t(()=>{if(!s.currentFilter?.conditions[0])return f.value?`condition`:`values`;let e=s.currentFilter.conditions[0];return e.selectedValues&&e.selectedValues.size>0?`values`:`condition`}).value),_=t(()=>{if(!s.currentFilter?.conditions[0])return new Set;let e=s.currentFilter.conditions[0];return e.selectedValues?ye(d.value,e.selectedValues):new Set}),v=t(()=>s.currentFilter?.conditions[0]?s.currentFilter.conditions[0].includeBlank??!0:!0),S=h(``),C=h(new Set(_.value)),T=h(v.value),{conditions:E,combination:D,updateCondition:O,addCondition:k,removeCondition:A}=Q(t(()=>{if(!s.currentFilter?.conditions.length)return[{operator:`contains`,value:``,valueTo:``,nextOperator:`and`}];let e=s.currentFilter.conditions[0];if(e.selectedValues&&e.selectedValues.size>0)return[{operator:`contains`,value:``,valueTo:``,nextOperator:`and`}];let t=s.currentFilter.combination??`and`;return s.currentFilter.conditions.map(e=>{let n=e;return{operator:n.operator,value:n.value??``,valueTo:``,nextOperator:n.nextOperator??t}})}).value,s.currentFilter?.combination??`and`),j=t(()=>{if(!S.value)return d.value;let e=S.value.toLowerCase();return d.value.filter(t=>t.label.toLowerCase().includes(e))}),M=t(()=>s.distinctValues.some(fe)),N=t(()=>j.value.every(e=>C.value.has(e.label))&&(!M.value||T.value));function P(){C.value=new Set(j.value.map(e=>e.label)),M.value&&(T.value=!0)}function F(){C.value=new Set,T.value=!1}function I(e){let t=new Set(C.value);t.has(e)?t.delete(e):t.add(e),C.value=t}function L(){if(p.value===`values`){if(d.value.every(e=>C.value.has(e.label))&&(!M.value||T.value)){c(`apply`,null);return}let e={conditions:[{type:`text`,operator:`equals`,selectedValues:be(d.value,C.value),includeBlank:T.value}],combination:`and`};c(`apply`,e)}else{let e=E.value.filter(e=>e.operator===`blank`||e.operator===`notBlank`||e.value.trim()!==``);if(e.length===0){c(`apply`,null);return}let t={conditions:e.map(e=>({type:`text`,operator:e.operator,value:e.value,nextOperator:e.nextOperator})),combination:`and`};c(`apply`,t)}}function R(){c(`apply`,null)}return(t,o)=>(m(),i(`div`,Oe,[r(` Mode toggle - only show if not too many values `),f.value?r(`v-if`,!0):(m(),i(`div`,ke,[a(`button`,{type:`button`,class:u({active:p.value===`values`}),onClick:o[0]||=e=>p.value=`values`},y(n.labels.valuesMode),3),a(`button`,{type:`button`,class:u({active:p.value===`condition`}),onClick:o[1]||=e=>p.value=`condition`},y(n.labels.conditionMode),3)])),r(` Too many values message `),f.value&&p.value===`condition`?(m(),i(`div`,Ae,y(b(G)(n.labels.tooManyValues,{count:d.value.length})),1)):r(`v-if`,!0),r(` VALUES MODE `),p.value===`values`?(m(),i(e,{key:2},[r(` Search input `),w(a(`input`,{"onUpdate:modelValue":o[2]||=e=>S.value=e,class:`gp-grid-filter-search`,type:`text`,placeholder:n.labels.searchPlaceholder,autofocus:``},null,8,je),[[x,S.value]]),r(` Select all / Deselect all `),a(`div`,Me,[a(`button`,{type:`button`,disabled:N.value,onClick:P},y(n.labels.selectAll),9,Ne),a(`button`,{type:`button`,onClick:F},y(n.labels.deselectAll),1)]),r(` Checkbox list `),a(`div`,Pe,[r(` Blanks option `),M.value?(m(),i(`label`,Fe,[a(`input`,{type:`checkbox`,checked:T.value,onChange:o[3]||=e=>T.value=!T.value},null,40,Ie),a(`span`,Le,y(n.labels.blanks),1)])):r(`v-if`,!0),r(` Values `),(m(!0),i(e,null,g(j.value,e=>(m(),i(`label`,{key:e.label,class:`gp-grid-filter-option`},[a(`input`,{type:`checkbox`,checked:C.value.has(e.label),onChange:t=>I(e.label)},null,40,Re),a(`span`,null,y(e.label),1)]))),128))])],64)):r(`v-if`,!0),r(` CONDITION MODE `),p.value===`condition`?(m(),i(e,{key:3},[(m(!0),i(e,null,g(b(E),(t,o)=>(m(),i(`div`,{key:o,class:`gp-grid-filter-condition`},[r(` Combination toggle (AND/OR) for conditions after the first `),o>0?(m(),i(`div`,ze,[a(`button`,{type:`button`,class:u({active:b(E)[o-1]?.nextOperator===`and`}),onClick:e=>b(O)(o-1,{nextOperator:`and`})},y(n.labels.and),11,Be),a(`button`,{type:`button`,class:u({active:b(E)[o-1]?.nextOperator===`or`}),onClick:e=>b(O)(o-1,{nextOperator:`or`})},y(n.labels.or),11,Ve)])):r(`v-if`,!0),a(`div`,He,[r(` Operator select `),a(`select`,{value:t.operator,autofocus:o===0,onChange:e=>b(O)(o,{operator:e.target.value})},[(m(!0),i(e,null,g(l.value,e=>(m(),i(`option`,{key:e.value,value:e.value},y(e.label),9,We))),128))],40,Ue),r(` Text input (hidden for blank/notBlank) `),t.operator!==`blank`&&t.operator!==`notBlank`?(m(),i(`input`,{key:0,type:`text`,value:t.value,placeholder:n.labels.valuePlaceholder,class:`gp-grid-filter-text-input`,onInput:e=>b(O)(o,{value:e.target.value})},null,40,Ge)):r(`v-if`,!0),r(` Remove button (only if more than one condition) `),b(E).length>1?(m(),i(`button`,{key:1,type:`button`,class:`gp-grid-filter-remove`,onClick:e=>b(A)(o)},y(n.labels.removeCondition),9,Ke)):r(`v-if`,!0)])]))),128)),r(` Add condition button `),a(`button`,{type:`button`,class:`gp-grid-filter-add`,onClick:o[4]||=e=>b(k)(`contains`)},y(n.labels.addCondition),1)],64)):r(`v-if`,!0),r(` Apply/Clear buttons `),a(`div`,qe,[a(`button`,{type:`button`,class:`gp-grid-filter-btn-clear`,onClick:R},y(n.labels.clear),1),a(`button`,{type:`button`,class:`gp-grid-filter-btn-apply`,onClick:L},y(n.labels.apply),1)])]))}}),Ye={class:`gp-grid-filter-content gp-grid-filter-number`},Xe={key:0,class:`gp-grid-filter-combination`},Ze=[`onClick`],Qe=[`onClick`],$e={class:`gp-grid-filter-row`},et=[`value`,`onChange`],tt=[`value`],nt=[`value`,`placeholder`,`onInput`],rt={class:`gp-grid-filter-to`},it=[`value`,`placeholder`,`onInput`],at=[`onClick`],ot={class:`gp-grid-filter-buttons`},st=c({__name:`NumberFilterContent`,props:{currentFilter:{},labels:{}},emits:[`apply`,`close`],setup(n,{emit:o}){let s=n,c=o,l=t(()=>J(s.labels)),{conditions:d,combination:f,updateCondition:p,addCondition:h,removeCondition:_}=Q(t(()=>{if(!s.currentFilter?.conditions.length)return[{operator:`=`,value:``,valueTo:``,nextOperator:`and`}];let e=s.currentFilter.combination??`and`;return s.currentFilter.conditions.map(t=>{let n=t;return{operator:n.operator,value:n.value==null?``:String(n.value),valueTo:n.valueTo==null?``:String(n.valueTo),nextOperator:n.nextOperator??e}})}).value,s.currentFilter?.combination??`and`);function v(){let e=d.value.filter(e=>e.operator===`blank`||e.operator===`notBlank`?!0:e.operator===`between`?e.value!==``&&e.valueTo!==``:e.value!==``);if(e.length===0){c(`apply`,null);return}let t={conditions:e.map(e=>({type:`number`,operator:e.operator,value:e.value?parseFloat(e.value):void 0,valueTo:e.valueTo?parseFloat(e.valueTo):void 0,nextOperator:e.nextOperator})),combination:`and`};c(`apply`,t)}function x(){c(`apply`,null)}return(t,o)=>(m(),i(`div`,Ye,[(m(!0),i(e,null,g(b(d),(t,o)=>(m(),i(`div`,{key:o,class:`gp-grid-filter-condition`},[r(` Combination toggle (AND/OR) for conditions after the first `),o>0?(m(),i(`div`,Xe,[a(`button`,{type:`button`,class:u({active:b(d)[o-1]?.nextOperator===`and`}),onClick:e=>b(p)(o-1,{nextOperator:`and`})},y(n.labels.and),11,Ze),a(`button`,{type:`button`,class:u({active:b(d)[o-1]?.nextOperator===`or`}),onClick:e=>b(p)(o-1,{nextOperator:`or`})},y(n.labels.or),11,Qe)])):r(`v-if`,!0),a(`div`,$e,[r(` Operator select `),a(`select`,{value:t.operator,onChange:e=>b(p)(o,{operator:e.target.value})},[(m(!0),i(e,null,g(l.value,e=>(m(),i(`option`,{key:e.value,value:e.value},y(e.label),9,tt))),128))],40,et),r(` Number input (hidden for blank/notBlank) `),t.operator!==`blank`&&t.operator!==`notBlank`?(m(),i(`input`,{key:0,type:`number`,value:t.value,placeholder:n.labels.valuePlaceholder,onInput:e=>b(p)(o,{value:e.target.value})},null,40,nt)):r(`v-if`,!0),r(` Second number input for "between" `),t.operator===`between`?(m(),i(e,{key:1},[a(`span`,rt,y(n.labels.betweenSeparator),1),a(`input`,{type:`number`,value:t.valueTo,placeholder:n.labels.valuePlaceholder,onInput:e=>b(p)(o,{valueTo:e.target.value})},null,40,it)],64)):r(`v-if`,!0),r(` Remove button (only if more than one condition) `),b(d).length>1?(m(),i(`button`,{key:2,type:`button`,class:`gp-grid-filter-remove`,onClick:e=>b(_)(o)},y(n.labels.removeCondition),9,at)):r(`v-if`,!0)])]))),128)),r(` Add condition button `),a(`button`,{type:`button`,class:`gp-grid-filter-add`,onClick:o[0]||=e=>b(h)(`=`)},y(n.labels.addCondition),1),r(` Apply/Clear buttons `),a(`div`,ot,[a(`button`,{type:`button`,class:`gp-grid-filter-btn-clear`,onClick:x},y(n.labels.clear),1),a(`button`,{type:`button`,class:`gp-grid-filter-btn-apply`,onClick:v},y(n.labels.apply),1)])]))}}),ct={class:`gp-grid-filter-content gp-grid-filter-date`},lt={key:0,class:`gp-grid-filter-combination`},ut=[`onClick`],dt=[`onClick`],ft={class:`gp-grid-filter-row`},pt=[`value`,`onChange`],mt=[`value`],ht=[`value`,`onInput`],gt={class:`gp-grid-filter-to`},_t=[`value`,`onInput`],vt=[`onClick`],yt={class:`gp-grid-filter-buttons`},bt=c({__name:`DateFilterContent`,props:{currentFilter:{},labels:{}},emits:[`apply`,`close`],setup(n,{emit:o}){let s=n,c=o,l=t(()=>oe(s.labels));function d(e){if(!e)return``;let t=typeof e==`string`?new Date(e):e;return isNaN(t.getTime())?``:t.toISOString().split(`T`)[0]}let{conditions:f,combination:p,updateCondition:h,addCondition:_,removeCondition:v}=Q(t(()=>{if(!s.currentFilter?.conditions.length)return[{operator:`=`,value:``,valueTo:``,nextOperator:`and`}];let e=s.currentFilter.combination??`and`;return s.currentFilter.conditions.map(t=>{let n=t;return{operator:n.operator,value:d(n.value),valueTo:d(n.valueTo),nextOperator:n.nextOperator??e}})}).value,s.currentFilter?.combination??`and`);function x(){let e=f.value.filter(e=>e.operator===`blank`||e.operator===`notBlank`?!0:e.operator===`between`?e.value!==``&&e.valueTo!==``:e.value!==``);if(e.length===0){c(`apply`,null);return}let t={conditions:e.map(e=>({type:`date`,operator:e.operator,value:e.value||void 0,valueTo:e.valueTo||void 0,nextOperator:e.nextOperator})),combination:`and`};c(`apply`,t)}function S(){c(`apply`,null)}return(t,o)=>(m(),i(`div`,ct,[(m(!0),i(e,null,g(b(f),(t,o)=>(m(),i(`div`,{key:o,class:`gp-grid-filter-condition`},[r(` Combination toggle (AND/OR) for conditions after the first `),o>0?(m(),i(`div`,lt,[a(`button`,{type:`button`,class:u({active:b(f)[o-1]?.nextOperator===`and`}),onClick:e=>b(h)(o-1,{nextOperator:`and`})},y(n.labels.and),11,ut),a(`button`,{type:`button`,class:u({active:b(f)[o-1]?.nextOperator===`or`}),onClick:e=>b(h)(o-1,{nextOperator:`or`})},y(n.labels.or),11,dt)])):r(`v-if`,!0),a(`div`,ft,[r(` Operator select `),a(`select`,{value:t.operator,onChange:e=>b(h)(o,{operator:e.target.value})},[(m(!0),i(e,null,g(l.value,e=>(m(),i(`option`,{key:e.value,value:e.value},y(e.label),9,mt))),128))],40,pt),r(` Date input (hidden for blank/notBlank) `),t.operator!==`blank`&&t.operator!==`notBlank`?(m(),i(`input`,{key:0,type:`date`,value:t.value,onInput:e=>b(h)(o,{value:e.target.value})},null,40,ht)):r(`v-if`,!0),r(` Second date input for "between" `),t.operator===`between`?(m(),i(e,{key:1},[a(`span`,gt,y(n.labels.betweenSeparator),1),a(`input`,{type:`date`,value:t.valueTo,onInput:e=>b(h)(o,{valueTo:e.target.value})},null,40,_t)],64)):r(`v-if`,!0),r(` Remove button (only if more than one condition) `),b(f).length>1?(m(),i(`button`,{key:2,type:`button`,class:`gp-grid-filter-remove`,onClick:e=>b(v)(o)},y(n.labels.removeCondition),9,vt)):r(`v-if`,!0)])]))),128)),r(` Add condition button `),a(`button`,{type:`button`,class:`gp-grid-filter-add`,onClick:o[0]||=e=>b(_)(`=`)},y(n.labels.addCondition),1),r(` Apply/Clear buttons `),a(`div`,yt,[a(`button`,{type:`button`,class:`gp-grid-filter-btn-clear`,onClick:S},y(n.labels.clear),1),a(`button`,{type:`button`,class:`gp-grid-filter-btn-apply`,onClick:x},y(n.labels.apply),1)])]))}}),xt={class:`gp-grid-filter-header`},St=c({__name:`FilterPopup`,props:{column:{},colIndex:{},containerRef:{},distinctValues:{},currentFilter:{},labels:{}},emits:[`apply`,`close`],setup(o,{emit:c}){let l=o,u=c,g=h(null),_=h(0),v=h(0),x=h(200),S=h(!1);De(g,{onClose:()=>u(`close`),ignoreSelector:`.gp-grid-filter-icon`});let w=t(()=>l.column.colId??l.column.field);function T(e){u(`apply`,w.value,e),u(`close`)}function E(){u(`close`)}let D=t(()=>l.column.cellDataType);t(()=>D.value===`text`||D.value===`object`);let O=t(()=>D.value===`number`),k=t(()=>D.value===`date`||D.value===`dateString`||D.value===`dateTime`||D.value===`dateTimeString`),A=null,j=()=>{let e=l.containerRef,t=g.value;if(!e||!t)return;let n=e.querySelector(`[data-col-index="${l.colIndex}"]`);if(!n)return;let r=R(n,t);_.value=r.top,v.value=r.left,x.value=r.minWidth,S.value=!0},M=()=>{A===null&&(A=requestAnimationFrame(()=>{A=null,j()}))};C(()=>{l.colIndex,j()},{flush:`post`}),f(()=>{window.addEventListener(`scroll`,M,{passive:!0,capture:!0}),window.addEventListener(`resize`,M)}),p(()=>{window.removeEventListener(`scroll`,M,{capture:!0}),window.removeEventListener(`resize`,M),A!==null&&cancelAnimationFrame(A)});let N=t(()=>({position:`fixed`,top:`${_.value}px`,left:`${v.value}px`,minWidth:`${x.value}px`,zIndex:1e4,visibility:S.value?`visible`:`hidden`}));return(t,c)=>(m(),i(`div`,{ref_key:`popupRef`,ref:g,class:`gp-grid-filter-popup`,style:d(N.value)},[a(`div`,xt,y(b(G)(o.labels.filterTitle,{column:o.column.headerName??o.column.field})),1),r(` Number filter `),O.value?(m(),n(st,{key:0,"current-filter":o.currentFilter,labels:o.labels,onApply:T,onClose:E},null,8,[`current-filter`,`labels`])):k.value?(m(),i(e,{key:1},[r(` Date filter `),s(bt,{"current-filter":o.currentFilter,labels:o.labels,onApply:T,onClose:E},null,8,[`current-filter`,`labels`])],2112)):(m(),i(e,{key:2},[r(` Text filter (default) `),s(Je,{"distinct-values":o.distinctValues,"value-formatter":o.column.valueFormatter,"current-filter":o.currentFilter,labels:o.labels,onApply:T,onClose:E},null,8,[`distinct-values`,`value-formatter`,`current-filter`,`labels`])],2112))],4))}}),Ct=e=>e==null||e===``?o(``):typeof e==`string`?o(e):e,$=(e,t)=>typeof e==`function`?Ct(e(t)):l(e,t),wt=e=>{let t=e.cellDataType;return t===`text`||t===`boolean`||t===`object`};function Tt(t){let{column:n,colIndex:r,sortDirection:i,sortIndex:a,sortable:o,filterable:s,hasFilter:c,core:u,container:d,headerRenderers:f,globalHeaderRenderer:p}=t,m={column:n,colIndex:r,sortDirection:i,sortIndex:a,sortable:o,filterable:s,hasFilter:c,onSort:(e,t)=>{u&&o&&u.setSort(n.colId??n.field,e,t)},onFilterClick:()=>{if(u&&s){let e=d?.querySelector(`[data-col-index="${r}"]`);if(e){let t=e.getBoundingClientRect();u.openFilterPopup(r,{top:t.top,left:t.left,width:t.width,height:t.height},wt(n))}}}};if(n.headerRenderer!=null)if(typeof n.headerRenderer==`string`){let e=f[n.headerRenderer];if(e)return $(e,m)}else return $(n.headerRenderer,m);if(p)return $(p,m);let h=[l(`span`,{class:`gp-grid-header-text`},n.headerName??n.field)],g=[];if(o){let e=[l(`span`,{class:`gp-grid-sort-arrows-stack`},[l(`svg`,{class:`gp-grid-sort-arrow-up${i===`asc`?` active`:``}`,width:`8`,height:`6`,viewBox:`0 0 8 6`},[l(`path`,{d:`M4 0L8 6H0L4 0Z`,fill:`currentColor`})]),l(`svg`,{class:`gp-grid-sort-arrow-down${i===`desc`?` active`:``}`,width:`8`,height:`6`,viewBox:`0 0 8 6`},[l(`path`,{d:`M4 6L0 0H8L4 6Z`,fill:`currentColor`})])])];a!==void 0&&a>0&&e.push(l(`span`,{class:`gp-grid-sort-index`},String(a))),g.push(l(`span`,{class:`gp-grid-sort-arrows`},e))}return s&&g.push(l(`span`,{class:`gp-grid-filter-icon${c?` active`:``}`,onPointerdown:e=>{e.stopPropagation(),e.preventDefault(),m.onFilterClick()},onClick:e=>{e.stopPropagation()}},[l(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`currentColor`},[l(`path`,{d:`M4 4h16l-6 8v5l-4 2v-7L4 4z`})])])),g.length>0&&h.push(l(`span`,{class:`gp-grid-header-icons`},g)),l(e,h)}const Et=[`data-col-index`,`onPointerdown`],Dt=[`onPointerdown`],Ot=c({__name:`GridHeader`,props:{headerHeight:{},scrollLeft:{},contentWidth:{},totalWidth:{},isLoading:{type:Boolean},visibleColumnsWithIndices:{},columnPositions:{},columnWidths:{},headers:{},sortingEnabled:{type:Boolean},onHeaderMouseDown:{type:Function},onHeaderResizeMouseDown:{type:Function},coreRef:{},outerContainerRef:{},headerRenderers:{},globalHeaderRenderer:{type:Function}},setup(t){let o=t;return(t,s)=>(m(),i(`div`,{class:u([`gp-grid-header`,{"gp-grid-header--loading":o.isLoading}]),style:d({height:`${o.headerHeight}px`})},[a(`div`,{style:d({position:`absolute`,top:0,left:0,transform:`translateX(${-o.scrollLeft}px)`,width:`${Math.max(o.contentWidth,o.totalWidth)}px`,height:`${o.headerHeight}px`})},[(m(!0),i(e,null,g(o.visibleColumnsWithIndices,({column:e,originalIndex:t},a)=>(m(),i(`div`,{key:e.colId??e.field,class:`gp-grid-header-cell`,"data-col-index":t,style:d({left:`${o.columnPositions[a]}px`,width:`${o.columnWidths[a]}px`,height:`${o.headerHeight}px`}),onPointerdown:e=>o.onHeaderMouseDown(t,o.columnWidths[a]??0,o.headerHeight,e)},[(m(),n(_(b(Tt)({column:e,colIndex:t,sortDirection:o.headers.get(t)?.sortDirection,sortIndex:o.headers.get(t)?.sortIndex,sortable:e.sortable!==!1&&o.sortingEnabled,filterable:e.filterable!==!1,hasFilter:o.headers.get(t)?.hasFilter??!1,core:o.coreRef,container:o.outerContainerRef,headerRenderers:o.headerRenderers,globalHeaderRenderer:o.globalHeaderRenderer})))),e.resizable===!1?r(`v-if`,!0):(m(),i(`div`,{key:0,class:`gp-grid-header-resize-handle`,onPointerdown:T(e=>o.onHeaderResizeMouseDown(t,o.columnWidths[a]??0,e),[`stop`])},null,40,Dt))],44,Et))),128))],4)],6))}});function kt(e){let{column:t,rowData:n,rowIndex:r,colIndex:i,isActive:a,isSelected:o,isEditing:s,cellRenderers:c,globalCellRenderer:u}=e,d=K(n,t.field),f={value:t.valueFormatter?t.valueFormatter(d):d,rowData:n,column:t,rowIndex:r,colIndex:i,isActive:a,isSelected:o,isEditing:s};if(t.cellRenderer!=null)if(typeof t.cellRenderer==`string`){let e=c[t.cellRenderer];if(e)return $(e,f)}else return $(t.cellRenderer,f);return u?$(u,f):l(`span`,{class:`gp-grid-cell-content`},ae(d,t.valueFormatter))}function At(e){let{column:t,rowData:n,rowIndex:r,colIndex:i,initialValue:a,core:s,editRenderers:c,globalEditRenderer:u}=e;if(!s)return o(``);let d=q(n,t.field),f={value:t.valueFormatter?t.valueFormatter(d):d,rowData:n,column:t,rowIndex:r,colIndex:i,isActive:!0,isSelected:!0,isEditing:!0,initialValue:a,onValueChange:e=>s.updateEditValue(e),onCommit:()=>s.commitEdit(),onCancel:()=>s.cancelEdit()};if(t.editRenderer!=null)if(typeof t.editRenderer==`string`){let e=c[t.editRenderer];if(e)return $(e,f)}else return $(t.editRenderer,f);return u?$(u,f):l(`input`,{class:`gp-grid-edit-input`,type:`text`,value:a==null?``:String(a),autofocus:!0,onFocus:e=>e.target.select(),onInput:e=>s.updateEditValue(e.target.value),onKeydown:e=>{e.stopPropagation(),e.key===`Enter`?s.commitEdit():e.key===`Escape`?s.cancelEdit():e.key===`Tab`&&(e.preventDefault(),s.commitEdit(),s.selection.moveFocus(e.shiftKey?`left`:`right`,!1))},onBlur:()=>s.commitEdit()})}const jt=[`data-cell-row`,`data-cell-col`,`onPointerdown`,`onDblclick`,`onMouseenter`],Mt={key:0,class:`gp-grid-error`},Nt={key:1,class:`gp-grid-empty`},Pt=c({__name:`GridBody`,props:{rowHeight:{},totalHeaderHeight:{},contentWidth:{},contentHeight:{},totalWidth:{},rowsWrapperOffset:{},activeCell:{},selectionRange:{},editingCell:{},hoverPosition:{},error:{},isLoading:{type:Boolean},totalRows:{},labels:{},slotsArray:{},visibleColumnsWithIndices:{},columnPositions:{},columnWidths:{},fillHandlePosition:{},dragState:{},onScroll:{type:Function},onWheel:{type:Function},wheelDampening:{},onCellMouseDown:{type:Function},onCellDoubleClick:{type:Function},onCellMouseEnter:{type:Function},onCellMouseLeave:{type:Function},onFillHandleMouseDown:{type:Function},coreRef:{},cellRenderers:{},editRenderers:{},globalCellRenderer:{},globalEditRenderer:{}},setup(t,{expose:o}){let s=t,c=h(null),l=e=>[`gp-grid-row`,...s.coreRef?.highlight?.computeRowClasses(e.rowIndex,e.rowData)??[]].filter(Boolean).join(` `),f=(e,t,n,r,i)=>{let a=X(e,t,s.editingCell),o=F(Y(e,t,s.activeCell),_e(e,t,s.selectionRange),a,he(e,t,s.dragState.dragType===`fill`,s.dragState.fillSourceRange,s.dragState.fillTarget)),c=s.coreRef?.highlight?.computeCombinedCellClasses(e,t,n,r)??[],l=n.rowDrag===!0,u=n.wrapText===!0&&!a;return[o,...c,l?`gp-grid-cell--row-drag-handle`:``,u?`gp-grid-cell--wrap`:``].filter(Boolean).join(` `)};return o({bodyRef:c}),(t,o)=>(m(),i(`div`,{ref_key:`bodyRef`,ref:c,style:{flex:`1`,overflow:`auto`,position:`relative`},onScroll:o[2]||=(...e)=>s.onScroll&&s.onScroll(...e),onWheel:o[3]||=e=>s.onWheel(e,s.wheelDampening)},[r(` Content sizer - provides scroll range `),a(`div`,{style:d({width:`${Math.max(s.contentWidth,s.totalWidth)}px`,height:`${Math.max(s.contentHeight-s.totalHeaderHeight,0)}px`,position:`relative`,minWidth:`100%`})},[r(` Rows wrapper `),a(`div`,{class:`gp-grid-rows-wrapper`,style:d({width:`${Math.max(s.contentWidth,s.totalWidth)}px`,transform:`translateY(${s.rowsWrapperOffset}px)`})},[r(` Row slots `),(m(!0),i(e,null,g(s.slotsArray.filter(e=>e.rowIndex>=0),t=>(m(),i(`div`,{key:t.slotId,class:u(l(t)),style:d({position:`absolute`,top:0,left:0,transform:`translateY(${t.translateY}px)`,width:`${Math.max(s.contentWidth,s.totalWidth)}px`,height:`${s.rowHeight}px`})},[(m(!0),i(e,null,g(s.visibleColumnsWithIndices,({column:a,originalIndex:c},l)=>(m(),i(`div`,{key:`${t.slotId}-${a.colId??a.field}`,class:u(f(t.rowIndex,c,a,t.rowData,s.hoverPosition)),"data-cell-row":t.rowIndex,"data-cell-col":c,style:d({position:`absolute`,left:`${s.columnPositions[l]}px`,top:0,width:`${s.columnWidths[l]}px`,height:`${s.rowHeight}px`}),onPointerdown:e=>s.onCellMouseDown(t.rowIndex,c,e),onDblclick:()=>s.onCellDoubleClick(t.rowIndex,c),onMouseenter:()=>s.onCellMouseEnter(t.rowIndex,c),onMouseleave:o[0]||=(...e)=>s.onCellMouseLeave&&s.onCellMouseLeave(...e)},[r(` Edit mode `),b(X)(t.rowIndex,c,s.editingCell)&&s.editingCell?(m(),n(_(b(At)({column:a,rowData:t.rowData,rowIndex:t.rowIndex,colIndex:c,initialValue:s.editingCell.initialValue,core:s.coreRef,editRenderers:s.editRenderers,globalEditRenderer:s.globalEditRenderer})),{key:0})):(m(),i(e,{key:1},[r(` View mode `),(m(),n(_(b(kt)({column:a,rowData:t.rowData,rowIndex:t.rowIndex,colIndex:c,isActive:b(Y)(t.rowIndex,c,s.activeCell),isSelected:b(_e)(t.rowIndex,c,s.selectionRange),isEditing:!1,cellRenderers:s.cellRenderers,globalCellRenderer:s.globalCellRenderer}))))],64))],46,jt))),128))],6))),128)),r(` Fill handle `),s.fillHandlePosition&&!s.editingCell?(m(),i(`div`,{key:0,class:`gp-grid-fill-handle`,style:d({top:`${s.fillHandlePosition.top}px`,left:`${s.fillHandlePosition.left}px`}),onPointerdown:o[1]||=(...e)=>s.onFillHandleMouseDown&&s.onFillHandleMouseDown(...e)},null,36)):r(`v-if`,!0),r(` Row drop indicator `),s.dragState.dragType===`row-drag`&&s.dragState.rowDrag?.dropTargetIndex!==null?(m(),i(`div`,{key:1,class:`gp-grid-row-drop-indicator`,style:d({transform:`translateY(${s.dragState.rowDrag.dropIndicatorY}px)`,width:`${Math.max(s.contentWidth,s.totalWidth)}px`})},null,4)):r(`v-if`,!0)],4)],4),r(` Error message `),s.error?(m(),i(`div`,Mt,y(b(G)(s.labels.errorPrefix,{message:s.error})),1)):r(`v-if`,!0),r(` Empty state `),!s.isLoading&&!s.error&&s.totalRows===0?(m(),i(`div`,Nt,y(s.labels.emptyState),1)):r(`v-if`,!0)],544))}}),Ft=c({__name:`CellPeek`,props:{peekCell:{},column:{},rowData:{},containerRef:{},cellRenderers:{},globalCellRenderer:{}},emits:[`close`],setup(e,{emit:r}){let a=e,o=r,s=h(null),c=h(0),l=h(0),u=h(0),g=h(!1),v=null,y=()=>{let e=a.containerRef,t=s.value;if(!e||!t)return;let n=e.querySelector(`[data-cell-row="${a.peekCell.row}"][data-cell-col="${a.peekCell.col}"]`);if(!n){o(`close`);return}let r=n.getBoundingClientRect();c.value=r.top,l.value=r.left,u.value=r.width,g.value=!0},b=()=>{v===null&&(v=requestAnimationFrame(()=>{v=null,y()}))},x=e=>{let t=e.target;s.value?.contains(t)||o(`close`)},C=null,w=null;f(()=>{y(),window.addEventListener(`scroll`,b,{passive:!0,capture:!0}),window.addEventListener(`resize`,b),s.value&&(w=N(s.value)),C=requestAnimationFrame(()=>{document.addEventListener(`pointerdown`,x)})}),p(()=>{window.removeEventListener(`scroll`,b,{capture:!0}),window.removeEventListener(`resize`,b),document.removeEventListener(`pointerdown`,x),w?.(),v!==null&&cancelAnimationFrame(v),C!==null&&cancelAnimationFrame(C)}),S(()=>[a.peekCell.row,a.peekCell.col],()=>y(),{flush:`post`});let T=t(()=>({position:`fixed`,top:`${c.value}px`,left:`${l.value}px`,width:`${u.value}px`,visibility:g.value?`visible`:`hidden`})),E=t(()=>kt({column:a.column,rowData:a.rowData,rowIndex:a.peekCell.row,colIndex:a.peekCell.col,isActive:!0,isSelected:!1,isEditing:!1,cellRenderers:a.cellRenderers,globalCellRenderer:a.globalCellRenderer}));return(e,t)=>(m(),i(`div`,{ref_key:`overlayRef`,ref:s,class:`gp-grid-cell-peek`,style:d(T.value)},[(m(),n(_(E.value)))],4))}}),It={key:1,class:`gp-grid-loading`},Lt=c({__name:`GpGrid`,props:{columns:{},dataSource:{},rowData:{},rowHeight:{},headerHeight:{},overscan:{default:3},rowLoading:{},sortingEnabled:{type:Boolean,default:!0},darkMode:{type:Boolean,default:!1},wheelDampening:{default:.1},maxFlingVelocity:{},cellRenderers:{default:()=>({})},editRenderers:{default:()=>({})},headerRenderers:{default:()=>({})},cellRenderer:{},editRenderer:{},headerRenderer:{},initialWidth:{},initialHeight:{},highlighting:{},getRowId:{},onCellValueChanged:{},loadingComponent:{},rowDragEntireRow:{type:Boolean},onRowDragEnd:{},onColumnResized:{},onColumnMoved:{},labels:{}},setup(o,{expose:c}){let l=o,g=h(null),x=h(null),C=t(()=>x.value?.bodyRef??null),w=v(null),T=v(null),E=v(null),O=new j({getCore:()=>w.value,getScrollEl:()=>C.value,isBrowser:typeof window<`u`}),k=h(0),{state:A,applyInstructions:M,reset:N}=Ce({initialWidth:l.initialWidth,initialHeight:l.initialHeight}),P=t(()=>l.headerHeight??l.rowHeight),F=t(()=>xe(l.labels)),I=t(()=>A.value.columns??l.columns),L=t(()=>I.value.map((e,t)=>({column:e,originalIndex:t})).filter(({column:e})=>!e.hidden)),R=t(()=>z(L.value.map(e=>e.column),A.value.viewportWidth)),B=t(()=>R.value.positions),V=t(()=>R.value.widths),U=t(()=>le(B.value)),W=t(()=>Array.from(A.value.slots.values())),{handleCellMouseDown:te,handleCellDoubleClick:ne,handleFillHandleMouseDown:re,handleHeaderClick:ie,handleHeaderMouseDown:ae,handleHeaderResizeMouseDown:G,handleKeyDown:oe,handlePaste:K,handleWheel:q,dragState:J}=Te(w,C,I,{activeCell:t(()=>A.value.activeCell),selectionRange:t(()=>A.value.selectionRange),editingCell:t(()=>A.value.editingCell),filterPopupOpen:t(()=>A.value.filterPopup?.isOpen??!1),rowHeight:l.rowHeight,headerHeight:P.value,columnPositions:B,columnWidths:V,visibleColumnsWithIndices:L,slots:t(()=>A.value.slots),rowsWrapperOffset:t(()=>A.value.rowsWrapperOffset)}),{fillHandlePosition:se}=Ee({activeCell:t(()=>A.value.activeCell),selectionRange:t(()=>A.value.selectionRange),slots:t(()=>A.value.slots),columns:I,visibleColumnsWithIndices:L,columnPositions:B,columnWidths:V,rowHeight:l.rowHeight});function ce(){let e=C.value,t=w.value;!e||!t||t.setViewport(e.scrollTop,e.scrollLeft,e.clientWidth,e.clientHeight)}function ue(){let e=C.value;e&&(k.value=e.scrollLeft),ce()}function de(e,t){let n=w.value;n&&n.setFilter(e,t)}function fe(){let e=w.value;e&&e.closeFilterPopup()}function pe(){w.value?.stopPeek()}let Y=t(()=>{let e=A.value.peekCell;if(!e)return null;let t=I.value[e.col],n=W.value.find(t=>t.rowIndex===e.row);return!t||!n?null:{peek:e,column:t,rowData:n.rowData}});function me(e,t){w.value?.input.handleCellMouseEnter(e,t)}function X(){w.value?.input.handleCellMouseLeave()}function Z(){return l.dataSource??(l.rowData?H(l.rowData):ee([]))}function he(e){E.value&&=(E.value(),null),w.value&&w.value.destroy();let t=new D({columns:l.columns,dataSource:e,rowHeight:l.rowHeight,headerHeight:P.value,overscan:l.overscan,maxFlingVelocity:l.maxFlingVelocity,rowLoading:l.rowLoading,sortingEnabled:l.sortingEnabled,highlighting:l.highlighting,getRowId:l.getRowId,onCellValueChanged:l.onCellValueChanged?e=>l.onCellValueChanged?.(e):void 0,rowDragEntireRow:l.rowDragEntireRow??!1,onRowDragEnd:(e,t)=>l.onRowDragEnd?.(e,t),onColumnResized:(e,t)=>l.onColumnResized?.(e,t),onColumnMoved:(e,t)=>l.onColumnMoved?.(e,t)});w.value=t,O.syncCore(),E.value=t.onBatchInstruction(e=>{M(e)}),t.initialize();let n=C.value;n&&t.setViewport(n.scrollTop,n.scrollLeft,n.clientWidth,n.clientHeight)}return f(()=>{let e=Z();T.value=e,he(e),O.attach();let t=C.value;if(t&&typeof ResizeObserver<`u`){let e=new ResizeObserver(()=>{w.value?.setViewport(t.scrollTop,t.scrollLeft,t.clientWidth,t.clientHeight)});e.observe(t),p(()=>{e.disconnect()})}p(()=>{O.detach(),E.value&&=(E.value(),null),w.value&&=(w.value.destroy(),null),T.value&&=(T.value.destroy?.(),null)})}),S([()=>l.dataSource,()=>l.rowData],()=>{l.rowData&&l.rowData.length>1e4&&T.value&&console.warn(`[gp-grid] rowData prop changed with ${l.rowData.length} rows — this triggers a full rebuild. Use useGridData() for efficient updates.`);let e=Z(),t=T.value;t&&t!==e?(t.destroy?.(),T.value=e,w.value?.setDataSource(e)):t||(T.value=e)}),S(()=>l.dataSource,e=>{if(e){let t=e;if(t.subscribe){let e=t.subscribe(()=>{w.value?.refreshFromTransaction()});p(()=>e())}}},{immediate:!0}),S(()=>A.value.pendingScrollTop,e=>{if(e!==null){let t=C.value;t&&(O.stop(),t.scrollTop=e)}},{flush:`post`}),S(()=>l.highlighting,e=>{w.value?.highlight&&e&&w.value.highlight.updateOptions(e)}),c({core:w}),(t,c)=>(m(),i(`div`,{ref_key:`outerContainerRef`,ref:g,class:u([`gp-grid-container`,{"gp-grid-container--dark":o.darkMode}]),style:{width:`100%`,height:`100%`,position:`relative`,display:`flex`,"flex-direction":`column`},tabindex:`0`,onKeydown:c[0]||=(...e)=>b(oe)&&b(oe)(...e),onPaste:c[1]||=(...e)=>b(K)&&b(K)(...e)},[s(Ot,{"header-height":P.value,"scroll-left":k.value,"content-width":b(A).contentWidth,"total-width":U.value,"is-loading":b(A).isLoading,"visible-columns-with-indices":L.value,"column-positions":B.value,"column-widths":V.value,headers:b(A).headers,"sorting-enabled":o.sortingEnabled,"on-header-mouse-down":b(ae),"on-header-resize-mouse-down":b(G),"core-ref":w.value,"outer-container-ref":g.value,"header-renderers":o.headerRenderers??{},"global-header-renderer":o.headerRenderer},null,8,[`header-height`,`scroll-left`,`content-width`,`total-width`,`is-loading`,`visible-columns-with-indices`,`column-positions`,`column-widths`,`headers`,`sorting-enabled`,`on-header-mouse-down`,`on-header-resize-mouse-down`,`core-ref`,`outer-container-ref`,`header-renderers`,`global-header-renderer`]),s(Pt,{ref_key:`gridBodyComp`,ref:x,"row-height":o.rowHeight,"total-header-height":P.value,"content-width":b(A).contentWidth,"content-height":b(A).contentHeight,"total-width":U.value,"rows-wrapper-offset":b(A).rowsWrapperOffset,"active-cell":b(A).activeCell,"selection-range":b(A).selectionRange,"editing-cell":b(A).editingCell,"hover-position":b(A).hoverPosition,error:b(A).error,"is-loading":b(A).isLoading,"total-rows":b(A).totalRows,labels:F.value,"slots-array":W.value,"visible-columns-with-indices":L.value,"column-positions":B.value,"column-widths":V.value,"fill-handle-position":b(se),"drag-state":b(J),"on-scroll":ue,"on-wheel":b(q),"wheel-dampening":o.wheelDampening,"on-cell-mouse-down":b(te),"on-cell-double-click":b(ne),"on-cell-mouse-enter":me,"on-cell-mouse-leave":X,"on-fill-handle-mouse-down":b(re),"core-ref":w.value,"cell-renderers":o.cellRenderers??{},"edit-renderers":o.editRenderers??{},"global-cell-renderer":o.cellRenderer,"global-edit-renderer":o.editRenderer},null,8,`row-height.total-header-height.content-width.content-height.total-width.rows-wrapper-offset.active-cell.selection-range.editing-cell.hover-position.error.is-loading.total-rows.labels.slots-array.visible-columns-with-indices.column-positions.column-widths.fill-handle-position.drag-state.on-wheel.wheel-dampening.on-cell-mouse-down.on-cell-double-click.on-fill-handle-mouse-down.core-ref.cell-renderers.edit-renderers.global-cell-renderer.global-edit-renderer`.split(`.`)),r(` Loading overlay - positioned outside scrollable area to avoid Firefox sticky issues `),b(A).isLoading?(m(),i(`div`,{key:0,style:d({position:`absolute`,top:`${P.value}px`,left:0,right:0,bottom:0,zIndex:50,pointerEvents:`none`})},[c[3]||=a(`div`,{class:`gp-grid-loading-overlay`},null,-1),l.loadingComponent?(m(),n(_(l.loadingComponent),{key:0,"is-loading":!0})):(m(),i(`div`,It,[...c[2]||=[a(`div`,{class:`gp-grid-loading-spinner`},null,-1)]]))],4)):r(`v-if`,!0),r(` Filter Popup `),b(A).filterPopup?.isOpen&&b(A).filterPopup.column?(m(),n(St,{key:1,column:b(A).filterPopup.column,"col-index":b(A).filterPopup.colIndex,"container-ref":g.value,"distinct-values":b(A).filterPopup.distinctValues,"current-filter":b(A).filterPopup.currentFilter,labels:F.value,onApply:de,onClose:fe},null,8,[`column`,`col-index`,`container-ref`,`distinct-values`,`current-filter`,`labels`])):r(`v-if`,!0),r(` Cell Peek (read-only multi-line overlay on dblclick of non-editable cell) `),Y.value?(m(),n(Ft,{key:2,"peek-cell":Y.value.peek,column:Y.value.column,"row-data":Y.value.rowData,"container-ref":g.value,"cell-renderers":o.cellRenderers??{},"global-cell-renderer":o.cellRenderer,onClose:pe},null,8,[`peek-cell`,`column`,`row-data`,`container-ref`,`cell-renderers`,`global-cell-renderer`])):r(`v-if`,!0),r(` Column resize line `),b(J).dragType===`column-resize`&&b(J).columnResize?(m(),i(`div`,{key:3,class:`gp-grid-column-resize-line`,style:d({left:`${(B.value[L.value.findIndex(e=>e.originalIndex===b(J).columnResize.colIndex)]??0)+b(J).columnResize.currentWidth-k.value}px`})},null,4)):r(`v-if`,!0),r(` Column move ghost `),b(J).dragType===`column-move`&&b(J).columnMove?(m(),i(e,{key:4},[a(`div`,{class:`gp-grid-column-move-ghost`,style:d({left:`${b(J).columnMove.currentX-b(J).columnMove.ghostWidth/2}px`,top:`${b(J).columnMove.currentY-b(J).columnMove.ghostHeight/2}px`,width:`${b(J).columnMove.ghostWidth}px`,height:`${b(J).columnMove.ghostHeight}px`})},y(I.value[b(J).columnMove.sourceColIndex]?.headerName??I.value[b(J).columnMove.sourceColIndex]?.field??``),5),b(J).columnMove.dropTargetIndex===null?r(`v-if`,!0):(m(),i(`div`,{key:0,class:`gp-grid-column-drop-indicator`,style:d({left:`${(B.value[b(J).columnMove.dropTargetIndex]??0)-k.value}px`,height:`${P.value}px`})},null,4))],64)):r(`v-if`,!0),r(` Row drag ghost (fixed position, follows cursor) `),b(J).dragType===`row-drag`&&b(J).rowDrag?(m(),i(`div`,{key:5,class:`gp-grid-row-drag-ghost`,style:d({left:`${b(J).rowDrag.currentX+12}px`,top:`${b(J).rowDrag.currentY-o.rowHeight/2}px`,width:`${Math.min(300,U.value)}px`,height:`${o.rowHeight}px`})},null,4)):r(`v-if`,!0)],34))}});function Rt(e){let n=h(null),r=h(null),i=new j({getCore:()=>r.value,getScrollEl:()=>n.value,isBrowser:typeof window<`u`}),{state:a,applyInstructions:o}=Ce(),s=t(()=>e.headerHeight??e.rowHeight),c=t(()=>e.columns.map((e,t)=>({column:e,originalIndex:t})).filter(({column:e})=>!e.hidden)),l=t(()=>z(c.value.map(e=>e.column),a.value.viewportWidth)),u=t(()=>l.value.positions),d=t(()=>l.value.widths),m=t(()=>le(u.value)),g=t(()=>Array.from(a.value.slots.values())),{handleCellMouseDown:_,handleCellDoubleClick:v,handleFillHandleMouseDown:y,handleHeaderClick:b,handleKeyDown:x,handlePaste:C,handleWheel:w,dragState:T}=Te(r,n,t(()=>e.columns),{activeCell:t(()=>a.value.activeCell),selectionRange:t(()=>a.value.selectionRange),editingCell:t(()=>a.value.editingCell),filterPopupOpen:t(()=>a.value.filterPopup?.isOpen??!1),rowHeight:e.rowHeight,headerHeight:s.value,columnPositions:u,columnWidths:d,visibleColumnsWithIndices:c,slots:t(()=>a.value.slots),rowsWrapperOffset:t(()=>a.value.rowsWrapperOffset)}),E=()=>{let e=n.value,t=r.value;!e||!t||t.setViewport(e.scrollTop,e.scrollLeft,e.clientWidth,e.clientHeight)},O=(e,t)=>{let n=r.value;n&&n.setFilter(e,t)},k=()=>{let e=r.value;e&&e.closeFilterPopup()},A=(e,t)=>{r.value?.input.handleCellMouseEnter(e,t)},M=()=>{r.value?.input.handleCellMouseLeave()};f(()=>{let t=e.dataSource??(e.rowData?H(e.rowData):ee([])),a=new D({columns:e.columns,dataSource:t,rowHeight:e.rowHeight,headerHeight:s.value,overscan:e.overscan??3,maxFlingVelocity:e.maxFlingVelocity,rowLoading:e.rowLoading,sortingEnabled:e.sortingEnabled??!0,highlighting:e.highlighting,getRowId:e.getRowId,onCellValueChanged:e.onCellValueChanged?t=>e.onCellValueChanged?.(t):void 0});r.value=a,i.syncCore();let c=a.onBatchInstruction(e=>{o(e)});a.initialize(),i.attach(),p(()=>i.detach());let l=n.value;if(l){a.setViewport(l.scrollTop,l.scrollLeft,l.clientWidth,l.clientHeight);let e=new ResizeObserver(()=>{a.setViewport(l.scrollTop,l.scrollLeft,l.clientWidth,l.clientHeight)});e.observe(l),p(()=>{e.disconnect(),c(),r.value=null})}}),S(()=>a.value.pendingScrollTop,e=>{if(e!==null){let t=n.value;t&&(i.stop(),t.scrollTop=e)}},{flush:`post`}),S(()=>e.dataSource,e=>{if(e){let t=e;if(t.subscribe){let e=t.subscribe(()=>{r.value?.refresh()});p(()=>e())}}},{immediate:!0}),S(()=>e.highlighting,e=>{r.value?.highlight&&e&&r.value.highlight.updateOptions(e)});let{fillHandlePosition:N}=Ee({activeCell:t(()=>a.value.activeCell),selectionRange:t(()=>a.value.selectionRange),slots:t(()=>a.value.slots),columns:t(()=>e.columns),visibleColumnsWithIndices:c,columnPositions:u,columnWidths:d,rowHeight:e.rowHeight});return{containerRef:n,coreRef:r,state:a,slotsArray:g,totalHeaderHeight:s,columnPositions:u,columnWidths:d,totalWidth:m,fillHandlePosition:N,handleScroll:E,handleCellMouseDown:_,handleCellDoubleClick:v,handleFillHandleMouseDown:y,handleHeaderClick:b,handleKeyDown:x,handlePaste:C,handleWheel:w,handleFilterApply:O,handleFilterPopupClose:k,handleCellMouseEnter:A,handleCellMouseLeave:M,dragState:T,isCellSelected:_e,isCellActive:Y,isCellEditing:X,isCellInFillPreview:he,buildCellClasses:F}}const zt=(e,t)=>{let n=ne(e,{getRowId:t.getRowId,debounceMs:t.debounceMs,useWorker:t.useWorker,parallelSort:t.parallelSort});return p(()=>{n.clear()}),{dataSource:n,updateRow:n.updateRow,addRows:n.addRows,removeRows:n.removeRows,updateCell:n.updateCell,clear:n.clear,getRowById:n.getRowById,getTotalRowCount:n.getTotalRowCount,flushTransactions:n.flushTransactions}};export{Lt as GpGrid,Lt as default,E as GridCore,P as buildCellClasses,I as calculateColumnPositions,B as createClientDataSource,V as createDataSourceFromArray,U as createInitialState,te as createMutableClientDataSource,re as createServerDataSource,ie as findColumnAtX,q as getCellValue,ce as getTotalWidth,ue as gridStyles,pe as isCellActive,me as isCellEditing,Z as isCellInFillPreview,ge as isCellSelected,ve as isRowVisible,kt as renderCell,At as renderEditCell,Tt as renderHeader,we as useAutoScroll,Ee as useFillHandle,Q as useFilterConditions,De as useFilterPopup,Rt as useGpGrid,zt as useGridData,Ce as useGridState,Te as useInputHandler};
|
|
1
|
+
import{Fragment as e,computed as t,createBlock as n,createCommentVNode as r,createElementBlock as i,createElementVNode as a,createTextVNode as o,createVNode as s,defineComponent as c,h as l,normalizeClass as u,normalizeStyle as d,onMounted as f,onUnmounted as p,openBlock as m,ref as h,renderList as g,resolveDynamicComponent as _,shallowRef as v,toDisplayString as y,unref as b,vModelText as x,watch as S,watchEffect as C,withDirectives as w,withModifiers as T}from"vue";import{GridCore as E,GridCore as D,PendingCellTapController as O,ROW_DRAG_HOLD_MS as k,TAP_SLOP_PX as A,TouchScrollController as j,applyInstruction as M,bindPeekSelectAll as N,buildCellClasses as P,buildCellClasses as F,calculateColumnPositions as I,calculateFillHandlePosition as L,calculateFilterPopupPosition as R,calculateScaledColumnPositions as z,createClientDataSource as B,createClientDataSource as ee,createDataSourceFromArray as V,createDataSourceFromArray as H,createInitialState as U,createInitialState as W,createMutableClientDataSource as te,createMutableClientDataSource as ne,createServerDataSource as re,findColumnAtX as ie,formatCellValue as ae,formatLabel as G,getDateOperatorOptions as K,getFieldValue as oe,getFieldValue as se,getNumberOperatorOptions as q,getTextOperatorOptions as ce,getTotalWidth as le,getTotalWidth as ue,groupDistinctValues as de,isBlankCellValue as fe,isCellActive as pe,isCellActive as J,isCellEditing as Y,isCellEditing as X,isCellInFillPreview as me,isCellInFillPreview as Z,isCellSelected as he,isCellSelected as ge,isRowVisible as _e,labelsForSelectedValues as ve,rawValuesForLabels as ye,resolveGridLabels as be,scrollCellIntoView as xe}from"@gp-grid/core";function Se(e){let t=v(W(e));return{state:t,applyInstructions:e=>{let n=t.value,r=new Map(n.slots),i=new Map(n.headers),a={pendingScrollTop:null};for(let t of e){let e=M(t,r,i);e&&Object.assign(a,e)}a.slots=r,a.headers=i,t.value={...n,...a}},reset:()=>{t.value=W()}}}function Ce(e,t){let n=h(null);function r(r,i){n.value&&clearInterval(n.value),n.value=setInterval(()=>{let n=e.value;n&&(n.scrollTop+=i,n.scrollLeft+=r,t?.())},16)}function i(){n.value&&=(clearInterval(n.value),null)}return p(()=>{i()}),{startAutoScroll:r,stopAutoScroll:i}}function we(e,t,n,r){let{activeCell:i,selectionRange:a,editingCell:o,filterPopupOpen:s,rowHeight:c,headerHeight:l,columnPositions:u,columnWidths:d,visibleColumnsWithIndices:f,slots:m,rowsWrapperOffset:g}=r,_=h({isDragging:!1,dragType:null,fillSourceRange:null,fillTarget:null,columnResize:null,columnMove:null,rowDrag:null}),v=null,y=null,b=null,x=null,C=null,w=e=>{e.preventDefault()},T=new O({getCore:()=>e.value,isBrowser:typeof window<`u`,onTapConfirmed:()=>t.value?.focus()}),{startAutoScroll:E,stopAutoScroll:D}=Ce(t,()=>{let t=e.value;if(v&&t?.input){let e=j();e&&(t.input.handleDragMove(v,e),_.value=t.input.getDragState())}});S([()=>l,()=>c,u,f],()=>{let t=e.value;if(t?.input){let e=f.value;t.input.updateDeps({getHeaderHeight:()=>l,getRowHeight:()=>c,getColumnPositions:()=>u.value,getColumnCount:()=>e.length,getOriginalColumnIndex:t=>{let n=e[t];return n?n.originalIndex:t}})}},{immediate:!0});function j(){let e=t.value;if(!e)return null;let n=e.getBoundingClientRect();return{top:n.top,left:n.left,width:n.width,height:n.height,scrollTop:e.scrollTop,scrollLeft:e.scrollLeft}}function M(e){return{clientX:e.clientX,clientY:e.clientY,button:e.button,shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,metaKey:e.metaKey,pointerId:e.pointerId,pointerType:e.pointerType}}function N(){y?.();let n=t=>{t.preventDefault();let n=e.value,r=j();if(!n?.input||!r)return;let i=M(t);v=i;let a=n.input.handleDragMove(i,r);a&&(a.autoScroll?E(a.autoScroll.dx,a.autoScroll.dy):D(),_.value=n.input.getDragState())},r=()=>{try{let t=e.value;t?.input&&t.input.handleDragEnd()}finally{let i=e.value,a=i?.input?i.input.getDragState():{isDragging:!1,dragType:null,fillSourceRange:null,fillTarget:null,columnResize:null,columnMove:null,rowDrag:null};_.value=a,v=null,D(),document.removeEventListener(`touchmove`,w),C!==null&&t.value&&(t.value.style.overflow=C,C=null),document.removeEventListener(`pointermove`,n),document.removeEventListener(`pointerup`,r),document.removeEventListener(`pointercancel`,r),y=null}};document.addEventListener(`pointermove`,n,{passive:!1}),document.addEventListener(`pointerup`,r),document.addEventListener(`pointercancel`,r),y=()=>{document.removeEventListener(`pointermove`,n),document.removeEventListener(`pointerup`,r),document.removeEventListener(`pointercancel`,r)}}function P(){b!==null&&(clearTimeout(b),b=null,e.value?.input?.cancelPendingRowDrag()),x=null}function F(n,r,i){let a=e.value;if(!a?.input)return;let o=a.input.handleCellMouseDown(n,r,M(i));if(o.focusContainer&&t.value?.focus(),o.startTap&&T.start(i),o.startDrag===`selection`)a.input.startSelectionDrag(),_.value=a.input.getDragState(),N();else if(o.startDrag===`row-drag`)_.value=a.input.getDragState(),N();else if(o.startDrag===`row-drag-pending`){P(),x={pointerId:i.pointerId,target:i.currentTarget??i.target};let e=i.clientX,n=i.clientY,r=t=>{let r=t.clientX-e,i=t.clientY-n;(Math.abs(r)>A||Math.abs(i)>A)&&(P(),s())},o=()=>{P(),s()},s=()=>{document.removeEventListener(`pointermove`,r),document.removeEventListener(`pointerup`,o),document.removeEventListener(`pointercancel`,o)};document.addEventListener(`pointermove`,r),document.addEventListener(`pointerup`,o,{once:!0}),document.addEventListener(`pointercancel`,o,{once:!0}),b=setTimeout(()=>{b=null,s();let e=x;if(x=null,a.input.confirmPendingRowDrag()){if(t.value&&(C=t.value.style.overflow,t.value.style.overflow=`hidden`),document.addEventListener(`touchmove`,w,{passive:!1}),e)try{e.target.setPointerCapture(e.pointerId)}catch{}_.value=a.input.getDragState(),N()}},k)}}function I(t,n){let r=e.value;r?.input&&r.input.handleCellDoubleClick(t,n)}function L(t){let n=e.value;if(!n?.input)return;let r=n.input.handleFillHandleMouseDown(i.value,a.value,M(t));if(r.preventDefault&&t.preventDefault(),r.stopPropagation&&t.stopPropagation(),r.startDrag===`fill`){try{t.target.setPointerCapture(t.pointerId)}catch{}_.value=n.input.getDragState(),N()}}function R(t,r){let i=e.value;if(!i?.input)return;let a=n.value[t];if(!a)return;let o=a.colId??a.field;i.input.handleHeaderClick(o,r.shiftKey)}function z(t,n,r,i){let a=e.value;if(!a?.input)return;let o=a.input.handleHeaderMouseDown(t,n,r,M(i));if(o.preventDefault&&i.preventDefault(),o.stopPropagation&&i.stopPropagation(),o.startDrag===`column-move`){try{i.target.setPointerCapture(i.pointerId)}catch{}_.value=a.input.getDragState(),N()}}function B(t,n,r){let i=e.value;if(!i?.input)return;let a=i.input.handleHeaderResizeMouseDown(t,n,M(r));a.preventDefault&&r.preventDefault(),a.stopPropagation&&r.stopPropagation(),a.startDrag===`column-resize`&&(_.value=i.input.getDragState(),N())}function ee(n){let r=e.value,a=t.value;if(!r?.input)return;let l=r.input.handleKeyDown({key:n.key,shiftKey:n.shiftKey,ctrlKey:n.ctrlKey,metaKey:n.metaKey},i.value,o.value,s.value);l.preventDefault&&n.preventDefault(),l.scrollToCell&&a&&xe(r,a,l.scrollToCell.row,c,m.value,g.value,{colIndex:l.scrollToCell.col,visibleColumns:f.value,columnPositions:u.value,columnWidths:d.value})}function V(t){let n=e.value;if(n===null||o.value!==null||s.value)return;let r=t.clipboardData?.getData(`text/plain`)??``;n.pasteClipboardText(r)&&t.preventDefault()}function H(n,r){let i=e.value,a=t.value;if(!i?.input||!a)return;let o=i.input.handleWheel(n.deltaY,n.deltaX,r);o&&(n.preventDefault(),a.scrollTop+=o.dy,a.scrollLeft+=o.dx)}return p(()=>{y?.(),y=null,P(),T.cancel(),D(),document.removeEventListener(`touchmove`,w),C!==null&&t.value&&(t.value.style.overflow=C,C=null)}),{handleCellMouseDown:F,handleCellDoubleClick:I,handleFillHandleMouseDown:L,handleHeaderClick:R,handleHeaderMouseDown:z,handleHeaderResizeMouseDown:B,handleKeyDown:ee,handlePaste:V,handleWheel:H,dragState:_}}const Te=e=>{let{activeCell:n,selectionRange:r,slots:i,columns:a,visibleColumnsWithIndices:o,columnPositions:s,columnWidths:c,rowHeight:l}=e;return{fillHandlePosition:t(()=>L({activeCell:n.value,selectionRange:r.value,slots:i.value,columns:a.value,visibleColumnsWithIndices:o.value,columnPositions:s.value,columnWidths:c.value,rowHeight:l}))}};function Ee(e,t){let{onClose:n,ignoreSelector:r=`.gp-grid-filter-icon`}=t,i=null,a=null;f(()=>{i=t=>{let i=t.target;r&&i.closest(r)||e.value&&!e.value.contains(i)&&n()},a=e=>{e.key===`Escape`&&n()},requestAnimationFrame(()=>{i&&document.addEventListener(`pointerdown`,i),a&&document.addEventListener(`keydown`,a)})}),p(()=>{i&&document.removeEventListener(`pointerdown`,i),a&&document.removeEventListener(`keydown`,a)})}function Q(e,t=`and`){let n=h([...e]);return{conditions:n,combination:h(t),updateCondition:(e,t)=>{let r=[...n.value];r[e]={...r[e],...t},n.value=r},addCondition:e=>{n.value=[...n.value,{operator:e,value:``,valueTo:``,nextOperator:`and`}]},removeCondition:e=>{n.value=n.value.filter((t,n)=>n!==e)}}}const De={class:`gp-grid-filter-content gp-grid-filter-text`},Oe={key:0,class:`gp-grid-filter-mode-toggle`},ke={key:1,class:`gp-grid-filter-info`},Ae=[`placeholder`],je={class:`gp-grid-filter-actions`},Me=[`disabled`],Ne={class:`gp-grid-filter-list`},Pe={key:0,class:`gp-grid-filter-option`},Fe=[`checked`],Ie={class:`gp-grid-filter-blank`},Le=[`checked`,`onChange`],Re={key:0,class:`gp-grid-filter-combination`},ze=[`onClick`],Be=[`onClick`],Ve={class:`gp-grid-filter-row`},He=[`value`,`autofocus`,`onChange`],Ue=[`value`],We=[`value`,`placeholder`,`onInput`],Ge=[`onClick`],Ke={class:`gp-grid-filter-buttons`},qe=c({__name:`TextFilterContent`,props:{distinctValues:{},valueFormatter:{type:Function},currentFilter:{},labels:{}},emits:[`apply`,`close`],setup(n,{emit:o}){let s=n,c=o,l=t(()=>ce(s.labels)),d=t(()=>de(s.distinctValues,s.valueFormatter)),f=t(()=>d.value.length>100),p=h(t(()=>{if(!s.currentFilter?.conditions[0])return f.value?`condition`:`values`;let e=s.currentFilter.conditions[0];return e.selectedValues&&e.selectedValues.size>0?`values`:`condition`}).value),_=t(()=>{if(!s.currentFilter?.conditions[0])return new Set;let e=s.currentFilter.conditions[0];return e.selectedValues?ve(d.value,e.selectedValues):new Set}),v=t(()=>s.currentFilter?.conditions[0]?s.currentFilter.conditions[0].includeBlank??!0:!0),S=h(``),C=h(new Set(_.value)),T=h(v.value),{conditions:E,combination:D,updateCondition:O,addCondition:k,removeCondition:A}=Q(t(()=>{if(!s.currentFilter?.conditions.length)return[{operator:`contains`,value:``,valueTo:``,nextOperator:`and`}];let e=s.currentFilter.conditions[0];if(e.selectedValues&&e.selectedValues.size>0)return[{operator:`contains`,value:``,valueTo:``,nextOperator:`and`}];let t=s.currentFilter.combination??`and`;return s.currentFilter.conditions.map(e=>{let n=e;return{operator:n.operator,value:n.value??``,valueTo:``,nextOperator:n.nextOperator??t}})}).value,s.currentFilter?.combination??`and`),j=t(()=>{if(!S.value)return d.value;let e=S.value.toLowerCase();return d.value.filter(t=>t.label.toLowerCase().includes(e))}),M=t(()=>s.distinctValues.some(fe)),N=t(()=>j.value.every(e=>C.value.has(e.label))&&(!M.value||T.value));function P(){C.value=new Set(j.value.map(e=>e.label)),M.value&&(T.value=!0)}function F(){C.value=new Set,T.value=!1}function I(e){let t=new Set(C.value);t.has(e)?t.delete(e):t.add(e),C.value=t}function L(){if(p.value===`values`){if(d.value.every(e=>C.value.has(e.label))&&(!M.value||T.value)){c(`apply`,null);return}let e={conditions:[{type:`text`,operator:`equals`,selectedValues:ye(d.value,C.value),includeBlank:T.value}],combination:`and`};c(`apply`,e)}else{let e=E.value.filter(e=>e.operator===`blank`||e.operator===`notBlank`||e.value.trim()!==``);if(e.length===0){c(`apply`,null);return}let t={conditions:e.map(e=>({type:`text`,operator:e.operator,value:e.value,nextOperator:e.nextOperator})),combination:`and`};c(`apply`,t)}}function R(){c(`apply`,null)}return(t,o)=>(m(),i(`div`,De,[r(` Mode toggle - only show if not too many values `),f.value?r(`v-if`,!0):(m(),i(`div`,Oe,[a(`button`,{type:`button`,class:u({active:p.value===`values`}),onClick:o[0]||=e=>p.value=`values`},y(n.labels.valuesMode),3),a(`button`,{type:`button`,class:u({active:p.value===`condition`}),onClick:o[1]||=e=>p.value=`condition`},y(n.labels.conditionMode),3)])),r(` Too many values message `),f.value&&p.value===`condition`?(m(),i(`div`,ke,y(b(G)(n.labels.tooManyValues,{count:d.value.length})),1)):r(`v-if`,!0),r(` VALUES MODE `),p.value===`values`?(m(),i(e,{key:2},[r(` Search input `),w(a(`input`,{"onUpdate:modelValue":o[2]||=e=>S.value=e,class:`gp-grid-filter-search`,type:`text`,placeholder:n.labels.searchPlaceholder,autofocus:``},null,8,Ae),[[x,S.value]]),r(` Select all / Deselect all `),a(`div`,je,[a(`button`,{type:`button`,disabled:N.value,onClick:P},y(n.labels.selectAll),9,Me),a(`button`,{type:`button`,onClick:F},y(n.labels.deselectAll),1)]),r(` Checkbox list `),a(`div`,Ne,[r(` Blanks option `),M.value?(m(),i(`label`,Pe,[a(`input`,{type:`checkbox`,checked:T.value,onChange:o[3]||=e=>T.value=!T.value},null,40,Fe),a(`span`,Ie,y(n.labels.blanks),1)])):r(`v-if`,!0),r(` Values `),(m(!0),i(e,null,g(j.value,e=>(m(),i(`label`,{key:e.label,class:`gp-grid-filter-option`},[a(`input`,{type:`checkbox`,checked:C.value.has(e.label),onChange:t=>I(e.label)},null,40,Le),a(`span`,null,y(e.label),1)]))),128))])],64)):r(`v-if`,!0),r(` CONDITION MODE `),p.value===`condition`?(m(),i(e,{key:3},[(m(!0),i(e,null,g(b(E),(t,o)=>(m(),i(`div`,{key:o,class:`gp-grid-filter-condition`},[r(` Combination toggle (AND/OR) for conditions after the first `),o>0?(m(),i(`div`,Re,[a(`button`,{type:`button`,class:u({active:b(E)[o-1]?.nextOperator===`and`}),onClick:e=>b(O)(o-1,{nextOperator:`and`})},y(n.labels.and),11,ze),a(`button`,{type:`button`,class:u({active:b(E)[o-1]?.nextOperator===`or`}),onClick:e=>b(O)(o-1,{nextOperator:`or`})},y(n.labels.or),11,Be)])):r(`v-if`,!0),a(`div`,Ve,[r(` Operator select `),a(`select`,{value:t.operator,autofocus:o===0,onChange:e=>b(O)(o,{operator:e.target.value})},[(m(!0),i(e,null,g(l.value,e=>(m(),i(`option`,{key:e.value,value:e.value},y(e.label),9,Ue))),128))],40,He),r(` Text input (hidden for blank/notBlank) `),t.operator!==`blank`&&t.operator!==`notBlank`?(m(),i(`input`,{key:0,type:`text`,value:t.value,placeholder:n.labels.valuePlaceholder,class:`gp-grid-filter-text-input`,onInput:e=>b(O)(o,{value:e.target.value})},null,40,We)):r(`v-if`,!0),r(` Remove button (only if more than one condition) `),b(E).length>1?(m(),i(`button`,{key:1,type:`button`,class:`gp-grid-filter-remove`,onClick:e=>b(A)(o)},y(n.labels.removeCondition),9,Ge)):r(`v-if`,!0)])]))),128)),r(` Add condition button `),a(`button`,{type:`button`,class:`gp-grid-filter-add`,onClick:o[4]||=e=>b(k)(`contains`)},y(n.labels.addCondition),1)],64)):r(`v-if`,!0),r(` Apply/Clear buttons `),a(`div`,Ke,[a(`button`,{type:`button`,class:`gp-grid-filter-btn-clear`,onClick:R},y(n.labels.clear),1),a(`button`,{type:`button`,class:`gp-grid-filter-btn-apply`,onClick:L},y(n.labels.apply),1)])]))}}),Je={class:`gp-grid-filter-content gp-grid-filter-number`},Ye={key:0,class:`gp-grid-filter-combination`},Xe=[`onClick`],Ze=[`onClick`],Qe={class:`gp-grid-filter-row`},$e=[`value`,`onChange`],et=[`value`],tt=[`value`,`placeholder`,`onInput`],nt={class:`gp-grid-filter-to`},rt=[`value`,`placeholder`,`onInput`],it=[`onClick`],at={class:`gp-grid-filter-buttons`},ot=c({__name:`NumberFilterContent`,props:{currentFilter:{},labels:{}},emits:[`apply`,`close`],setup(n,{emit:o}){let s=n,c=o,l=t(()=>q(s.labels)),{conditions:d,combination:f,updateCondition:p,addCondition:h,removeCondition:_}=Q(t(()=>{if(!s.currentFilter?.conditions.length)return[{operator:`=`,value:``,valueTo:``,nextOperator:`and`}];let e=s.currentFilter.combination??`and`;return s.currentFilter.conditions.map(t=>{let n=t;return{operator:n.operator,value:n.value==null?``:String(n.value),valueTo:n.valueTo==null?``:String(n.valueTo),nextOperator:n.nextOperator??e}})}).value,s.currentFilter?.combination??`and`);function v(){let e=d.value.filter(e=>e.operator===`blank`||e.operator===`notBlank`?!0:e.operator===`between`?e.value!==``&&e.valueTo!==``:e.value!==``);if(e.length===0){c(`apply`,null);return}let t={conditions:e.map(e=>({type:`number`,operator:e.operator,value:e.value?parseFloat(e.value):void 0,valueTo:e.valueTo?parseFloat(e.valueTo):void 0,nextOperator:e.nextOperator})),combination:`and`};c(`apply`,t)}function x(){c(`apply`,null)}return(t,o)=>(m(),i(`div`,Je,[(m(!0),i(e,null,g(b(d),(t,o)=>(m(),i(`div`,{key:o,class:`gp-grid-filter-condition`},[r(` Combination toggle (AND/OR) for conditions after the first `),o>0?(m(),i(`div`,Ye,[a(`button`,{type:`button`,class:u({active:b(d)[o-1]?.nextOperator===`and`}),onClick:e=>b(p)(o-1,{nextOperator:`and`})},y(n.labels.and),11,Xe),a(`button`,{type:`button`,class:u({active:b(d)[o-1]?.nextOperator===`or`}),onClick:e=>b(p)(o-1,{nextOperator:`or`})},y(n.labels.or),11,Ze)])):r(`v-if`,!0),a(`div`,Qe,[r(` Operator select `),a(`select`,{value:t.operator,onChange:e=>b(p)(o,{operator:e.target.value})},[(m(!0),i(e,null,g(l.value,e=>(m(),i(`option`,{key:e.value,value:e.value},y(e.label),9,et))),128))],40,$e),r(` Number input (hidden for blank/notBlank) `),t.operator!==`blank`&&t.operator!==`notBlank`?(m(),i(`input`,{key:0,type:`number`,value:t.value,placeholder:n.labels.valuePlaceholder,onInput:e=>b(p)(o,{value:e.target.value})},null,40,tt)):r(`v-if`,!0),r(` Second number input for "between" `),t.operator===`between`?(m(),i(e,{key:1},[a(`span`,nt,y(n.labels.betweenSeparator),1),a(`input`,{type:`number`,value:t.valueTo,placeholder:n.labels.valuePlaceholder,onInput:e=>b(p)(o,{valueTo:e.target.value})},null,40,rt)],64)):r(`v-if`,!0),r(` Remove button (only if more than one condition) `),b(d).length>1?(m(),i(`button`,{key:2,type:`button`,class:`gp-grid-filter-remove`,onClick:e=>b(_)(o)},y(n.labels.removeCondition),9,it)):r(`v-if`,!0)])]))),128)),r(` Add condition button `),a(`button`,{type:`button`,class:`gp-grid-filter-add`,onClick:o[0]||=e=>b(h)(`=`)},y(n.labels.addCondition),1),r(` Apply/Clear buttons `),a(`div`,at,[a(`button`,{type:`button`,class:`gp-grid-filter-btn-clear`,onClick:x},y(n.labels.clear),1),a(`button`,{type:`button`,class:`gp-grid-filter-btn-apply`,onClick:v},y(n.labels.apply),1)])]))}}),st={class:`gp-grid-filter-content gp-grid-filter-date`},ct={key:0,class:`gp-grid-filter-combination`},lt=[`onClick`],ut=[`onClick`],dt={class:`gp-grid-filter-row`},ft=[`value`,`onChange`],pt=[`value`],mt=[`value`,`onInput`],ht={class:`gp-grid-filter-to`},gt=[`value`,`onInput`],_t=[`onClick`],vt={class:`gp-grid-filter-buttons`},yt=c({__name:`DateFilterContent`,props:{currentFilter:{},labels:{}},emits:[`apply`,`close`],setup(n,{emit:o}){let s=n,c=o,l=t(()=>K(s.labels));function d(e){if(!e)return``;let t=typeof e==`string`?new Date(e):e;return isNaN(t.getTime())?``:t.toISOString().split(`T`)[0]}let{conditions:f,combination:p,updateCondition:h,addCondition:_,removeCondition:v}=Q(t(()=>{if(!s.currentFilter?.conditions.length)return[{operator:`=`,value:``,valueTo:``,nextOperator:`and`}];let e=s.currentFilter.combination??`and`;return s.currentFilter.conditions.map(t=>{let n=t;return{operator:n.operator,value:d(n.value),valueTo:d(n.valueTo),nextOperator:n.nextOperator??e}})}).value,s.currentFilter?.combination??`and`);function x(){let e=f.value.filter(e=>e.operator===`blank`||e.operator===`notBlank`?!0:e.operator===`between`?e.value!==``&&e.valueTo!==``:e.value!==``);if(e.length===0){c(`apply`,null);return}let t={conditions:e.map(e=>({type:`date`,operator:e.operator,value:e.value||void 0,valueTo:e.valueTo||void 0,nextOperator:e.nextOperator})),combination:`and`};c(`apply`,t)}function S(){c(`apply`,null)}return(t,o)=>(m(),i(`div`,st,[(m(!0),i(e,null,g(b(f),(t,o)=>(m(),i(`div`,{key:o,class:`gp-grid-filter-condition`},[r(` Combination toggle (AND/OR) for conditions after the first `),o>0?(m(),i(`div`,ct,[a(`button`,{type:`button`,class:u({active:b(f)[o-1]?.nextOperator===`and`}),onClick:e=>b(h)(o-1,{nextOperator:`and`})},y(n.labels.and),11,lt),a(`button`,{type:`button`,class:u({active:b(f)[o-1]?.nextOperator===`or`}),onClick:e=>b(h)(o-1,{nextOperator:`or`})},y(n.labels.or),11,ut)])):r(`v-if`,!0),a(`div`,dt,[r(` Operator select `),a(`select`,{value:t.operator,onChange:e=>b(h)(o,{operator:e.target.value})},[(m(!0),i(e,null,g(l.value,e=>(m(),i(`option`,{key:e.value,value:e.value},y(e.label),9,pt))),128))],40,ft),r(` Date input (hidden for blank/notBlank) `),t.operator!==`blank`&&t.operator!==`notBlank`?(m(),i(`input`,{key:0,type:`date`,value:t.value,onInput:e=>b(h)(o,{value:e.target.value})},null,40,mt)):r(`v-if`,!0),r(` Second date input for "between" `),t.operator===`between`?(m(),i(e,{key:1},[a(`span`,ht,y(n.labels.betweenSeparator),1),a(`input`,{type:`date`,value:t.valueTo,onInput:e=>b(h)(o,{valueTo:e.target.value})},null,40,gt)],64)):r(`v-if`,!0),r(` Remove button (only if more than one condition) `),b(f).length>1?(m(),i(`button`,{key:2,type:`button`,class:`gp-grid-filter-remove`,onClick:e=>b(v)(o)},y(n.labels.removeCondition),9,_t)):r(`v-if`,!0)])]))),128)),r(` Add condition button `),a(`button`,{type:`button`,class:`gp-grid-filter-add`,onClick:o[0]||=e=>b(_)(`=`)},y(n.labels.addCondition),1),r(` Apply/Clear buttons `),a(`div`,vt,[a(`button`,{type:`button`,class:`gp-grid-filter-btn-clear`,onClick:S},y(n.labels.clear),1),a(`button`,{type:`button`,class:`gp-grid-filter-btn-apply`,onClick:x},y(n.labels.apply),1)])]))}}),bt={class:`gp-grid-filter-header`},xt=c({__name:`FilterPopup`,props:{column:{},colIndex:{},containerRef:{},distinctValues:{},currentFilter:{},labels:{}},emits:[`apply`,`close`],setup(o,{emit:c}){let l=o,u=c,g=h(null),_=h(0),v=h(0),x=h(200),S=h(!1);Ee(g,{onClose:()=>u(`close`),ignoreSelector:`.gp-grid-filter-icon`});let w=t(()=>l.column.colId??l.column.field);function T(e){u(`apply`,w.value,e),u(`close`)}function E(){u(`close`)}let D=t(()=>l.column.cellDataType);t(()=>D.value===`text`||D.value===`object`);let O=t(()=>D.value===`number`),k=t(()=>D.value===`date`||D.value===`dateString`||D.value===`dateTime`||D.value===`dateTimeString`),A=null,j=()=>{let e=l.containerRef,t=g.value;if(!e||!t)return;let n=e.querySelector(`[data-col-index="${l.colIndex}"]`);if(!n)return;let r=R(n,t);_.value=r.top,v.value=r.left,x.value=r.minWidth,S.value=!0},M=()=>{A===null&&(A=requestAnimationFrame(()=>{A=null,j()}))};C(()=>{l.colIndex,j()},{flush:`post`}),f(()=>{window.addEventListener(`scroll`,M,{passive:!0,capture:!0}),window.addEventListener(`resize`,M)}),p(()=>{window.removeEventListener(`scroll`,M,{capture:!0}),window.removeEventListener(`resize`,M),A!==null&&cancelAnimationFrame(A)});let N=t(()=>({position:`fixed`,top:`${_.value}px`,left:`${v.value}px`,minWidth:`${x.value}px`,zIndex:1e4,visibility:S.value?`visible`:`hidden`}));return(t,c)=>(m(),i(`div`,{ref_key:`popupRef`,ref:g,class:`gp-grid-filter-popup`,style:d(N.value)},[a(`div`,bt,y(b(G)(o.labels.filterTitle,{column:o.column.headerName??o.column.field})),1),r(` Number filter `),O.value?(m(),n(ot,{key:0,"current-filter":o.currentFilter,labels:o.labels,onApply:T,onClose:E},null,8,[`current-filter`,`labels`])):k.value?(m(),i(e,{key:1},[r(` Date filter `),s(yt,{"current-filter":o.currentFilter,labels:o.labels,onApply:T,onClose:E},null,8,[`current-filter`,`labels`])],2112)):(m(),i(e,{key:2},[r(` Text filter (default) `),s(qe,{"distinct-values":o.distinctValues,"value-formatter":o.column.valueFormatter,"current-filter":o.currentFilter,labels:o.labels,onApply:T,onClose:E},null,8,[`distinct-values`,`value-formatter`,`current-filter`,`labels`])],2112))],4))}}),St=e=>e==null||e===``?o(``):typeof e==`string`?o(e):e,$=(e,t)=>typeof e==`function`?St(e(t)):l(e,t),Ct=e=>{let t=e.cellDataType;return t===`text`||t===`boolean`||t===`object`};function wt(t){let{column:n,colIndex:r,sortDirection:i,sortIndex:a,sortable:o,filterable:s,hasFilter:c,core:u,container:d,headerRenderers:f,globalHeaderRenderer:p}=t,m={column:n,colIndex:r,sortDirection:i,sortIndex:a,sortable:o,filterable:s,hasFilter:c,onSort:(e,t)=>{u&&o&&u.setSort(n.colId??n.field,e,t)},onFilterClick:()=>{if(u&&s){let e=d?.querySelector(`[data-col-index="${r}"]`);if(e){let t=e.getBoundingClientRect();u.openFilterPopup(r,{top:t.top,left:t.left,width:t.width,height:t.height},Ct(n))}}}};if(n.headerRenderer!=null)if(typeof n.headerRenderer==`string`){let e=f[n.headerRenderer];if(e)return $(e,m)}else return $(n.headerRenderer,m);if(p)return $(p,m);let h=[l(`span`,{class:`gp-grid-header-text`},n.headerName??n.field)],g=[];if(o){let e=[l(`span`,{class:`gp-grid-sort-arrows-stack`},[l(`svg`,{class:`gp-grid-sort-arrow-up${i===`asc`?` active`:``}`,width:`8`,height:`6`,viewBox:`0 0 8 6`},[l(`path`,{d:`M4 0L8 6H0L4 0Z`,fill:`currentColor`})]),l(`svg`,{class:`gp-grid-sort-arrow-down${i===`desc`?` active`:``}`,width:`8`,height:`6`,viewBox:`0 0 8 6`},[l(`path`,{d:`M4 6L0 0H8L4 6Z`,fill:`currentColor`})])])];a!==void 0&&a>0&&e.push(l(`span`,{class:`gp-grid-sort-index`},String(a))),g.push(l(`span`,{class:`gp-grid-sort-arrows`},e))}return s&&g.push(l(`span`,{class:`gp-grid-filter-icon${c?` active`:``}`,onPointerdown:e=>{e.stopPropagation(),e.preventDefault(),m.onFilterClick()},onClick:e=>{e.stopPropagation()}},[l(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`currentColor`},[l(`path`,{d:`M4 4h16l-6 8v5l-4 2v-7L4 4z`})])])),g.length>0&&h.push(l(`span`,{class:`gp-grid-header-icons`},g)),l(e,h)}const Tt=[`data-col-index`,`onPointerdown`],Et=[`onPointerdown`],Dt=c({__name:`GridHeader`,props:{headerHeight:{},scrollLeft:{},contentWidth:{},totalWidth:{},isLoading:{type:Boolean},visibleColumnsWithIndices:{},columnPositions:{},columnWidths:{},headers:{},sortingEnabled:{type:Boolean},onHeaderMouseDown:{type:Function},onHeaderResizeMouseDown:{type:Function},coreRef:{},outerContainerRef:{},headerRenderers:{},globalHeaderRenderer:{type:Function}},setup(t){let o=t;return(t,s)=>(m(),i(`div`,{class:u([`gp-grid-header`,{"gp-grid-header--loading":o.isLoading}]),style:d({height:`${o.headerHeight}px`})},[a(`div`,{style:d({position:`absolute`,top:0,left:0,transform:`translateX(${-o.scrollLeft}px)`,width:`${Math.max(o.contentWidth,o.totalWidth)}px`,height:`${o.headerHeight}px`})},[(m(!0),i(e,null,g(o.visibleColumnsWithIndices,({column:e,originalIndex:t},a)=>(m(),i(`div`,{key:e.colId??e.field,class:`gp-grid-header-cell`,"data-col-index":t,style:d({left:`${o.columnPositions[a]}px`,width:`${o.columnWidths[a]}px`,height:`${o.headerHeight}px`}),onPointerdown:e=>o.onHeaderMouseDown(t,o.columnWidths[a]??0,o.headerHeight,e)},[(m(),n(_(b(wt)({column:e,colIndex:t,sortDirection:o.headers.get(t)?.sortDirection,sortIndex:o.headers.get(t)?.sortIndex,sortable:e.sortable!==!1&&o.sortingEnabled,filterable:e.filterable!==!1,hasFilter:o.headers.get(t)?.hasFilter??!1,core:o.coreRef,container:o.outerContainerRef,headerRenderers:o.headerRenderers,globalHeaderRenderer:o.globalHeaderRenderer})))),e.resizable===!1?r(`v-if`,!0):(m(),i(`div`,{key:0,class:`gp-grid-header-resize-handle`,onPointerdown:T(e=>o.onHeaderResizeMouseDown(t,o.columnWidths[a]??0,e),[`stop`])},null,40,Et))],44,Tt))),128))],4)],6))}});function Ot(e){let{column:t,rowData:n,rowIndex:r,colIndex:i,isActive:a,isSelected:o,isEditing:s,cellRenderers:c,globalCellRenderer:u}=e,d=oe(n,t.field),f={value:t.valueFormatter?t.valueFormatter(d):d,rowData:n,column:t,rowIndex:r,colIndex:i,isActive:a,isSelected:o,isEditing:s};if(t.cellRenderer!=null)if(typeof t.cellRenderer==`string`){let e=c[t.cellRenderer];if(e)return $(e,f)}else return $(t.cellRenderer,f);return u?$(u,f):l(`span`,{class:`gp-grid-cell-content`},ae(d,t.valueFormatter))}function kt(e){let{column:t,rowData:n,rowIndex:r,colIndex:i,initialValue:a,core:s,editRenderers:c,globalEditRenderer:u}=e;if(!s)return o(``);let d=se(n,t.field),f={value:t.valueFormatter?t.valueFormatter(d):d,rowData:n,column:t,rowIndex:r,colIndex:i,isActive:!0,isSelected:!0,isEditing:!0,initialValue:a,onValueChange:e=>s.updateEditValue(e),onCommit:()=>s.commitEdit(),onCancel:()=>s.cancelEdit()};if(t.editRenderer!=null)if(typeof t.editRenderer==`string`){let e=c[t.editRenderer];if(e)return $(e,f)}else return $(t.editRenderer,f);return u?$(u,f):l(`input`,{class:`gp-grid-edit-input`,type:`text`,value:a==null?``:String(a),autofocus:!0,onFocus:e=>e.target.select(),onInput:e=>s.updateEditValue(e.target.value),onKeydown:e=>{e.stopPropagation(),e.key===`Enter`?s.commitEdit():e.key===`Escape`?s.cancelEdit():e.key===`Tab`&&(e.preventDefault(),s.commitEdit(),s.selection.moveFocus(e.shiftKey?`left`:`right`,!1))},onBlur:()=>s.commitEdit()})}const At=[`data-cell-row`,`data-cell-col`,`onPointerdown`,`onDblclick`,`onMouseenter`],jt={key:0,class:`gp-grid-error`},Mt={key:1,class:`gp-grid-empty`},Nt=c({__name:`GridBody`,props:{rowHeight:{},totalHeaderHeight:{},contentWidth:{},contentHeight:{},totalWidth:{},rowsWrapperOffset:{},activeCell:{},selectionRange:{},editingCell:{},hoverPosition:{},error:{},isLoading:{type:Boolean},totalRows:{},labels:{},slotsArray:{},visibleColumnsWithIndices:{},columnPositions:{},columnWidths:{},fillHandlePosition:{},dragState:{},onScroll:{type:Function},onWheel:{type:Function},wheelDampening:{},onCellMouseDown:{type:Function},onCellDoubleClick:{type:Function},onCellMouseEnter:{type:Function},onCellMouseLeave:{type:Function},onFillHandleMouseDown:{type:Function},coreRef:{},cellRenderers:{},editRenderers:{},globalCellRenderer:{},globalEditRenderer:{}},setup(t,{expose:o}){let s=t,c=h(null),l=e=>[`gp-grid-row`,...s.coreRef?.highlight?.computeRowClasses(e.rowIndex,e.rowData)??[]].filter(Boolean).join(` `),f=(e,t,n,r,i)=>{let a=X(e,t,s.editingCell),o=F(J(e,t,s.activeCell),ge(e,t,s.selectionRange),a,Z(e,t,s.dragState.dragType===`fill`,s.dragState.fillSourceRange,s.dragState.fillTarget)),c=s.coreRef?.highlight?.computeCombinedCellClasses(e,t,n,r)??[],l=n.rowDrag===!0,u=n.wrapText===!0&&!a;return[o,...c,l?`gp-grid-cell--row-drag-handle`:``,u?`gp-grid-cell--wrap`:``].filter(Boolean).join(` `)};return o({bodyRef:c}),(t,o)=>(m(),i(`div`,{ref_key:`bodyRef`,ref:c,style:{flex:`1`,overflow:`auto`,position:`relative`},onScroll:o[2]||=(...e)=>s.onScroll&&s.onScroll(...e),onWheel:o[3]||=e=>s.onWheel(e,s.wheelDampening)},[r(` Content sizer - provides scroll range `),a(`div`,{style:d({width:`${Math.max(s.contentWidth,s.totalWidth)}px`,height:`${Math.max(s.contentHeight-s.totalHeaderHeight,0)}px`,position:`relative`,minWidth:`100%`})},[r(` Rows wrapper `),a(`div`,{class:`gp-grid-rows-wrapper`,style:d({width:`${Math.max(s.contentWidth,s.totalWidth)}px`,transform:`translateY(${s.rowsWrapperOffset}px)`})},[r(` Row slots `),(m(!0),i(e,null,g(s.slotsArray.filter(e=>e.rowIndex>=0),t=>(m(),i(`div`,{key:t.slotId,class:u(l(t)),style:d({position:`absolute`,top:0,left:0,transform:`translateY(${t.translateY}px)`,width:`${Math.max(s.contentWidth,s.totalWidth)}px`,height:`${s.rowHeight}px`})},[(m(!0),i(e,null,g(s.visibleColumnsWithIndices,({column:a,originalIndex:c},l)=>(m(),i(`div`,{key:`${t.slotId}-${a.colId??a.field}`,class:u(f(t.rowIndex,c,a,t.rowData,s.hoverPosition)),"data-cell-row":t.rowIndex,"data-cell-col":c,style:d({position:`absolute`,left:`${s.columnPositions[l]}px`,top:0,width:`${s.columnWidths[l]}px`,height:`${s.rowHeight}px`}),onPointerdown:e=>s.onCellMouseDown(t.rowIndex,c,e),onDblclick:()=>s.onCellDoubleClick(t.rowIndex,c),onMouseenter:()=>s.onCellMouseEnter(t.rowIndex,c),onMouseleave:o[0]||=(...e)=>s.onCellMouseLeave&&s.onCellMouseLeave(...e)},[r(` Edit mode `),b(X)(t.rowIndex,c,s.editingCell)&&s.editingCell?(m(),n(_(b(kt)({column:a,rowData:t.rowData,rowIndex:t.rowIndex,colIndex:c,initialValue:s.editingCell.initialValue,core:s.coreRef,editRenderers:s.editRenderers,globalEditRenderer:s.globalEditRenderer})),{key:0})):(m(),i(e,{key:1},[r(` View mode `),(m(),n(_(b(Ot)({column:a,rowData:t.rowData,rowIndex:t.rowIndex,colIndex:c,isActive:b(J)(t.rowIndex,c,s.activeCell),isSelected:b(ge)(t.rowIndex,c,s.selectionRange),isEditing:!1,cellRenderers:s.cellRenderers,globalCellRenderer:s.globalCellRenderer}))))],64))],46,At))),128))],6))),128)),r(` Fill handle `),s.fillHandlePosition&&!s.editingCell?(m(),i(`div`,{key:0,class:`gp-grid-fill-handle`,style:d({top:`${s.fillHandlePosition.top}px`,left:`${s.fillHandlePosition.left}px`}),onPointerdown:o[1]||=(...e)=>s.onFillHandleMouseDown&&s.onFillHandleMouseDown(...e)},null,36)):r(`v-if`,!0),r(` Row drop indicator `),s.dragState.dragType===`row-drag`&&s.dragState.rowDrag?.dropTargetIndex!==null?(m(),i(`div`,{key:1,class:`gp-grid-row-drop-indicator`,style:d({transform:`translateY(${s.dragState.rowDrag.dropIndicatorY}px)`,width:`${Math.max(s.contentWidth,s.totalWidth)}px`})},null,4)):r(`v-if`,!0)],4)],4),r(` Error message `),s.error?(m(),i(`div`,jt,y(b(G)(s.labels.errorPrefix,{message:s.error})),1)):r(`v-if`,!0),r(` Empty state `),!s.isLoading&&!s.error&&s.totalRows===0?(m(),i(`div`,Mt,y(s.labels.emptyState),1)):r(`v-if`,!0)],544))}}),Pt=c({__name:`CellPeek`,props:{peekCell:{},column:{},rowData:{},containerRef:{},cellRenderers:{},globalCellRenderer:{}},emits:[`close`],setup(e,{emit:r}){let a=e,o=r,s=h(null),c=h(0),l=h(0),u=h(0),g=h(!1),v=null,y=()=>{let e=a.containerRef,t=s.value;if(!e||!t)return;let n=e.querySelector(`[data-cell-row="${a.peekCell.row}"][data-cell-col="${a.peekCell.col}"]`);if(!n){o(`close`);return}let r=n.getBoundingClientRect();c.value=r.top,l.value=r.left,u.value=r.width,g.value=!0},b=()=>{v===null&&(v=requestAnimationFrame(()=>{v=null,y()}))},x=e=>{let t=e.target;s.value?.contains(t)||o(`close`)},C=null,w=null;f(()=>{y(),window.addEventListener(`scroll`,b,{passive:!0,capture:!0}),window.addEventListener(`resize`,b),s.value&&(w=N(s.value)),C=requestAnimationFrame(()=>{document.addEventListener(`pointerdown`,x)})}),p(()=>{window.removeEventListener(`scroll`,b,{capture:!0}),window.removeEventListener(`resize`,b),document.removeEventListener(`pointerdown`,x),w?.(),v!==null&&cancelAnimationFrame(v),C!==null&&cancelAnimationFrame(C)}),S(()=>[a.peekCell.row,a.peekCell.col],()=>y(),{flush:`post`});let T=t(()=>({position:`fixed`,top:`${c.value}px`,left:`${l.value}px`,width:`${u.value}px`,visibility:g.value?`visible`:`hidden`})),E=t(()=>Ot({column:a.column,rowData:a.rowData,rowIndex:a.peekCell.row,colIndex:a.peekCell.col,isActive:!0,isSelected:!1,isEditing:!1,cellRenderers:a.cellRenderers,globalCellRenderer:a.globalCellRenderer}));return(e,t)=>(m(),i(`div`,{ref_key:`overlayRef`,ref:s,class:`gp-grid-cell-peek`,style:d(T.value)},[(m(),n(_(E.value)))],4))}}),Ft={key:1,class:`gp-grid-loading`},It=c({__name:`GpGrid`,props:{columns:{},dataSource:{},rowData:{},rowHeight:{},headerHeight:{},overscan:{default:3},rowLoading:{},sortingEnabled:{type:Boolean,default:!0},darkMode:{type:Boolean,default:!1},wheelDampening:{default:.1},maxFlingVelocity:{},cellRenderers:{default:()=>({})},editRenderers:{default:()=>({})},headerRenderers:{default:()=>({})},cellRenderer:{},editRenderer:{},headerRenderer:{},initialWidth:{},initialHeight:{},highlighting:{},getRowId:{},onCellValueChanged:{},loadingComponent:{},rowDragEntireRow:{type:Boolean},onRowDragEnd:{},onColumnResized:{},onColumnMoved:{},labels:{}},setup(o,{expose:c}){let l=o,g=h(null),x=h(null),C=t(()=>x.value?.bodyRef??null),w=v(null),T=v(null),E=v(null),O=new j({getCore:()=>w.value,getScrollEl:()=>C.value,isBrowser:typeof window<`u`}),k=h(0),{state:A,applyInstructions:M,reset:N}=Se({initialWidth:l.initialWidth,initialHeight:l.initialHeight}),P=t(()=>l.headerHeight??l.rowHeight),F=t(()=>be(l.labels)),I=t(()=>A.value.columns??l.columns),L=t(()=>I.value.map((e,t)=>({column:e,originalIndex:t})).filter(({column:e})=>!e.hidden)),R=t(()=>z(L.value.map(e=>e.column),A.value.viewportWidth)),B=t(()=>R.value.positions),V=t(()=>R.value.widths),U=t(()=>ue(B.value)),W=t(()=>Array.from(A.value.slots.values())),{handleCellMouseDown:te,handleCellDoubleClick:ne,handleFillHandleMouseDown:re,handleHeaderClick:ie,handleHeaderMouseDown:ae,handleHeaderResizeMouseDown:G,handleKeyDown:K,handlePaste:oe,handleWheel:se,dragState:q}=we(w,C,I,{activeCell:t(()=>A.value.activeCell),selectionRange:t(()=>A.value.selectionRange),editingCell:t(()=>A.value.editingCell),filterPopupOpen:t(()=>A.value.filterPopup?.isOpen??!1),rowHeight:l.rowHeight,headerHeight:P.value,columnPositions:B,columnWidths:V,visibleColumnsWithIndices:L,slots:t(()=>A.value.slots),rowsWrapperOffset:t(()=>A.value.rowsWrapperOffset)}),{fillHandlePosition:ce}=Te({activeCell:t(()=>A.value.activeCell),selectionRange:t(()=>A.value.selectionRange),slots:t(()=>A.value.slots),columns:I,visibleColumnsWithIndices:L,columnPositions:B,columnWidths:V,rowHeight:l.rowHeight});function le(){let e=C.value,t=w.value;!e||!t||t.setViewport(e.scrollTop,e.scrollLeft,e.clientWidth,e.clientHeight)}function de(){let e=C.value;e&&(k.value=e.scrollLeft),le()}function fe(e,t){let n=w.value;n&&n.setFilter(e,t)}function pe(){let e=w.value;e&&e.closeFilterPopup()}function J(){w.value?.stopPeek()}let Y=t(()=>{let e=A.value.peekCell;if(!e)return null;let t=I.value[e.col],n=W.value.find(t=>t.rowIndex===e.row);return!t||!n?null:{peek:e,column:t,rowData:n.rowData}});function X(e,t){w.value?.input.handleCellMouseEnter(e,t)}function me(){w.value?.input.handleCellMouseLeave()}function Z(){return l.dataSource??(l.rowData?H(l.rowData):ee([]))}function he(e){E.value&&=(E.value(),null),w.value&&w.value.destroy();let t=new D({columns:l.columns,dataSource:e,rowHeight:l.rowHeight,headerHeight:P.value,overscan:l.overscan,maxFlingVelocity:l.maxFlingVelocity,rowLoading:l.rowLoading,sortingEnabled:l.sortingEnabled,highlighting:l.highlighting,getRowId:l.getRowId,onCellValueChanged:l.onCellValueChanged?e=>l.onCellValueChanged?.(e):void 0,rowDragEntireRow:l.rowDragEntireRow??!1,onRowDragEnd:(e,t)=>l.onRowDragEnd?.(e,t),onColumnResized:(e,t)=>l.onColumnResized?.(e,t),onColumnMoved:(e,t)=>l.onColumnMoved?.(e,t)});w.value=t,O.syncCore(),E.value=t.onBatchInstruction(e=>{M(e)}),t.initialize();let n=C.value;n&&t.setViewport(n.scrollTop,n.scrollLeft,n.clientWidth,n.clientHeight)}return f(()=>{let e=Z();T.value=e,he(e),O.attach();let t=C.value;if(t&&typeof ResizeObserver<`u`){let e=new ResizeObserver(()=>{w.value?.setViewport(t.scrollTop,t.scrollLeft,t.clientWidth,t.clientHeight)});e.observe(t),p(()=>{e.disconnect()})}p(()=>{O.detach(),E.value&&=(E.value(),null),w.value&&=(w.value.destroy(),null),T.value&&=(T.value.destroy?.(),null)})}),S([()=>l.dataSource,()=>l.rowData],()=>{l.rowData&&l.rowData.length>1e4&&T.value&&console.warn(`[gp-grid] rowData prop changed with ${l.rowData.length} rows — this triggers a full rebuild. Use useGridData() for efficient updates.`);let e=Z(),t=T.value;t&&t!==e?(t.destroy?.(),T.value=e,w.value?.setDataSource(e)):t||(T.value=e)}),S(()=>l.dataSource,e=>{if(e){let t=e;if(t.subscribe){let e=t.subscribe(()=>{w.value?.refreshFromTransaction()});p(()=>e())}}},{immediate:!0}),S(()=>A.value.pendingScrollTop,e=>{if(e!==null){let t=C.value;t&&(O.stop(),t.scrollTop=e)}},{flush:`post`}),S(()=>l.highlighting,e=>{w.value?.highlight&&e&&w.value.highlight.updateOptions(e)}),c({core:w}),(t,c)=>(m(),i(`div`,{ref_key:`outerContainerRef`,ref:g,class:u([`gp-grid-container`,{"gp-grid-container--dark":o.darkMode}]),style:{width:`100%`,height:`100%`,position:`relative`,display:`flex`,"flex-direction":`column`},tabindex:`0`,onKeydown:c[0]||=(...e)=>b(K)&&b(K)(...e),onPaste:c[1]||=(...e)=>b(oe)&&b(oe)(...e)},[s(Dt,{"header-height":P.value,"scroll-left":k.value,"content-width":b(A).contentWidth,"total-width":U.value,"is-loading":b(A).isLoading,"visible-columns-with-indices":L.value,"column-positions":B.value,"column-widths":V.value,headers:b(A).headers,"sorting-enabled":o.sortingEnabled,"on-header-mouse-down":b(ae),"on-header-resize-mouse-down":b(G),"core-ref":w.value,"outer-container-ref":g.value,"header-renderers":o.headerRenderers??{},"global-header-renderer":o.headerRenderer},null,8,[`header-height`,`scroll-left`,`content-width`,`total-width`,`is-loading`,`visible-columns-with-indices`,`column-positions`,`column-widths`,`headers`,`sorting-enabled`,`on-header-mouse-down`,`on-header-resize-mouse-down`,`core-ref`,`outer-container-ref`,`header-renderers`,`global-header-renderer`]),s(Nt,{ref_key:`gridBodyComp`,ref:x,"row-height":o.rowHeight,"total-header-height":P.value,"content-width":b(A).contentWidth,"content-height":b(A).contentHeight,"total-width":U.value,"rows-wrapper-offset":b(A).rowsWrapperOffset,"active-cell":b(A).activeCell,"selection-range":b(A).selectionRange,"editing-cell":b(A).editingCell,"hover-position":b(A).hoverPosition,error:b(A).error,"is-loading":b(A).isLoading,"total-rows":b(A).totalRows,labels:F.value,"slots-array":W.value,"visible-columns-with-indices":L.value,"column-positions":B.value,"column-widths":V.value,"fill-handle-position":b(ce),"drag-state":b(q),"on-scroll":de,"on-wheel":b(se),"wheel-dampening":o.wheelDampening,"on-cell-mouse-down":b(te),"on-cell-double-click":b(ne),"on-cell-mouse-enter":X,"on-cell-mouse-leave":me,"on-fill-handle-mouse-down":b(re),"core-ref":w.value,"cell-renderers":o.cellRenderers??{},"edit-renderers":o.editRenderers??{},"global-cell-renderer":o.cellRenderer,"global-edit-renderer":o.editRenderer},null,8,`row-height.total-header-height.content-width.content-height.total-width.rows-wrapper-offset.active-cell.selection-range.editing-cell.hover-position.error.is-loading.total-rows.labels.slots-array.visible-columns-with-indices.column-positions.column-widths.fill-handle-position.drag-state.on-wheel.wheel-dampening.on-cell-mouse-down.on-cell-double-click.on-fill-handle-mouse-down.core-ref.cell-renderers.edit-renderers.global-cell-renderer.global-edit-renderer`.split(`.`)),r(` Loading overlay - positioned outside scrollable area to avoid Firefox sticky issues `),b(A).isLoading?(m(),i(`div`,{key:0,style:d({position:`absolute`,top:`${P.value}px`,left:0,right:0,bottom:0,zIndex:50,pointerEvents:`none`})},[c[3]||=a(`div`,{class:`gp-grid-loading-overlay`},null,-1),l.loadingComponent?(m(),n(_(l.loadingComponent),{key:0,"is-loading":!0})):(m(),i(`div`,Ft,[...c[2]||=[a(`div`,{class:`gp-grid-loading-spinner`},null,-1)]]))],4)):r(`v-if`,!0),r(` Filter Popup `),b(A).filterPopup?.isOpen&&b(A).filterPopup.column?(m(),n(xt,{key:1,column:b(A).filterPopup.column,"col-index":b(A).filterPopup.colIndex,"container-ref":g.value,"distinct-values":b(A).filterPopup.distinctValues,"current-filter":b(A).filterPopup.currentFilter,labels:F.value,onApply:fe,onClose:pe},null,8,[`column`,`col-index`,`container-ref`,`distinct-values`,`current-filter`,`labels`])):r(`v-if`,!0),r(` Cell Peek (read-only multi-line overlay on dblclick of non-editable cell) `),Y.value?(m(),n(Pt,{key:2,"peek-cell":Y.value.peek,column:Y.value.column,"row-data":Y.value.rowData,"container-ref":g.value,"cell-renderers":o.cellRenderers??{},"global-cell-renderer":o.cellRenderer,onClose:J},null,8,[`peek-cell`,`column`,`row-data`,`container-ref`,`cell-renderers`,`global-cell-renderer`])):r(`v-if`,!0),r(` Column resize line `),b(q).dragType===`column-resize`&&b(q).columnResize?(m(),i(`div`,{key:3,class:`gp-grid-column-resize-line`,style:d({left:`${(B.value[L.value.findIndex(e=>e.originalIndex===b(q).columnResize.colIndex)]??0)+b(q).columnResize.currentWidth-k.value}px`})},null,4)):r(`v-if`,!0),r(` Column move ghost `),b(q).dragType===`column-move`&&b(q).columnMove?(m(),i(e,{key:4},[a(`div`,{class:`gp-grid-column-move-ghost`,style:d({left:`${b(q).columnMove.currentX-b(q).columnMove.ghostWidth/2}px`,top:`${b(q).columnMove.currentY-b(q).columnMove.ghostHeight/2}px`,width:`${b(q).columnMove.ghostWidth}px`,height:`${b(q).columnMove.ghostHeight}px`})},y(I.value[b(q).columnMove.sourceColIndex]?.headerName??I.value[b(q).columnMove.sourceColIndex]?.field??``),5),b(q).columnMove.dropTargetIndex===null?r(`v-if`,!0):(m(),i(`div`,{key:0,class:`gp-grid-column-drop-indicator`,style:d({left:`${(B.value[b(q).columnMove.dropTargetIndex]??0)-k.value}px`,height:`${P.value}px`})},null,4))],64)):r(`v-if`,!0),r(` Row drag ghost (fixed position, follows cursor) `),b(q).dragType===`row-drag`&&b(q).rowDrag?(m(),i(`div`,{key:5,class:`gp-grid-row-drag-ghost`,style:d({left:`${b(q).rowDrag.currentX+12}px`,top:`${b(q).rowDrag.currentY-o.rowHeight/2}px`,width:`${Math.min(300,U.value)}px`,height:`${o.rowHeight}px`})},null,4)):r(`v-if`,!0)],34))}});function Lt(e){let n=h(null),r=h(null),i=new j({getCore:()=>r.value,getScrollEl:()=>n.value,isBrowser:typeof window<`u`}),{state:a,applyInstructions:o}=Se(),s=t(()=>e.headerHeight??e.rowHeight),c=t(()=>e.columns.map((e,t)=>({column:e,originalIndex:t})).filter(({column:e})=>!e.hidden)),l=t(()=>z(c.value.map(e=>e.column),a.value.viewportWidth)),u=t(()=>l.value.positions),d=t(()=>l.value.widths),m=t(()=>ue(u.value)),g=t(()=>Array.from(a.value.slots.values())),{handleCellMouseDown:_,handleCellDoubleClick:v,handleFillHandleMouseDown:y,handleHeaderClick:b,handleKeyDown:x,handlePaste:C,handleWheel:w,dragState:T}=we(r,n,t(()=>e.columns),{activeCell:t(()=>a.value.activeCell),selectionRange:t(()=>a.value.selectionRange),editingCell:t(()=>a.value.editingCell),filterPopupOpen:t(()=>a.value.filterPopup?.isOpen??!1),rowHeight:e.rowHeight,headerHeight:s.value,columnPositions:u,columnWidths:d,visibleColumnsWithIndices:c,slots:t(()=>a.value.slots),rowsWrapperOffset:t(()=>a.value.rowsWrapperOffset)}),E=()=>{let e=n.value,t=r.value;!e||!t||t.setViewport(e.scrollTop,e.scrollLeft,e.clientWidth,e.clientHeight)},O=(e,t)=>{let n=r.value;n&&n.setFilter(e,t)},k=()=>{let e=r.value;e&&e.closeFilterPopup()},A=(e,t)=>{r.value?.input.handleCellMouseEnter(e,t)},M=()=>{r.value?.input.handleCellMouseLeave()};f(()=>{let t=e.dataSource??(e.rowData?H(e.rowData):ee([])),a=new D({columns:e.columns,dataSource:t,rowHeight:e.rowHeight,headerHeight:s.value,overscan:e.overscan??3,maxFlingVelocity:e.maxFlingVelocity,rowLoading:e.rowLoading,sortingEnabled:e.sortingEnabled??!0,highlighting:e.highlighting,getRowId:e.getRowId,onCellValueChanged:e.onCellValueChanged?t=>e.onCellValueChanged?.(t):void 0});r.value=a,i.syncCore();let c=a.onBatchInstruction(e=>{o(e)});a.initialize(),i.attach(),p(()=>i.detach());let l=n.value;if(l){a.setViewport(l.scrollTop,l.scrollLeft,l.clientWidth,l.clientHeight);let e=new ResizeObserver(()=>{a.setViewport(l.scrollTop,l.scrollLeft,l.clientWidth,l.clientHeight)});e.observe(l),p(()=>{e.disconnect(),c(),r.value=null})}}),S(()=>a.value.pendingScrollTop,e=>{if(e!==null){let t=n.value;t&&(i.stop(),t.scrollTop=e)}},{flush:`post`}),S(()=>e.dataSource,e=>{if(e){let t=e;if(t.subscribe){let e=t.subscribe(()=>{r.value?.refresh()});p(()=>e())}}},{immediate:!0}),S(()=>e.highlighting,e=>{r.value?.highlight&&e&&r.value.highlight.updateOptions(e)});let{fillHandlePosition:N}=Te({activeCell:t(()=>a.value.activeCell),selectionRange:t(()=>a.value.selectionRange),slots:t(()=>a.value.slots),columns:t(()=>e.columns),visibleColumnsWithIndices:c,columnPositions:u,columnWidths:d,rowHeight:e.rowHeight});return{containerRef:n,coreRef:r,state:a,slotsArray:g,totalHeaderHeight:s,columnPositions:u,columnWidths:d,totalWidth:m,fillHandlePosition:N,handleScroll:E,handleCellMouseDown:_,handleCellDoubleClick:v,handleFillHandleMouseDown:y,handleHeaderClick:b,handleKeyDown:x,handlePaste:C,handleWheel:w,handleFilterApply:O,handleFilterPopupClose:k,handleCellMouseEnter:A,handleCellMouseLeave:M,dragState:T,isCellSelected:ge,isCellActive:J,isCellEditing:X,isCellInFillPreview:Z,buildCellClasses:F}}const Rt=(e,t)=>{let n=ne(e,{getRowId:t.getRowId,debounceMs:t.debounceMs,useWorker:t.useWorker,parallelSort:t.parallelSort});return p(()=>{n.clear()}),{dataSource:n,updateRow:n.updateRow,addRows:n.addRows,removeRows:n.removeRows,updateCell:n.updateCell,clear:n.clear,getRowById:n.getRowById,getTotalRowCount:n.getTotalRowCount,flushTransactions:n.flushTransactions}};export{It as GpGrid,It as default,E as GridCore,P as buildCellClasses,I as calculateColumnPositions,B as createClientDataSource,V as createDataSourceFromArray,U as createInitialState,te as createMutableClientDataSource,re as createServerDataSource,ie as findColumnAtX,se as getCellValue,le as getTotalWidth,pe as isCellActive,Y as isCellEditing,me as isCellInFillPreview,he as isCellSelected,_e as isRowVisible,Ot as renderCell,kt as renderEditCell,wt as renderHeader,Ce as useAutoScroll,Te as useFillHandle,Q as useFilterConditions,Ee as useFilterPopup,Lt as useGpGrid,Rt as useGridData,Se as useGridState,we as useInputHandler};
|