@sheetxl/grid-react 0.7.7 → 0.7.9

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.
@@ -1,12 +1,12 @@
1
1
  (function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode("._sheetxl-grid_h9wwa_7{position:relative;box-sizing:border-box;user-select:none}._sheetxl-grid_h9wwa_7 *{box-sizing:border-box!important}._sheetxl-grid_h9wwa_7 *:focus{outline:none}._sheetxl-grid_h9wwa_7 .cell-container{position:absolute;overflow:visible;white-space:pre}._sheetxl-grid_h9wwa_7 .cell-container>*{inset:0;position:absolute}._sheetxl-grid_h9wwa_7 .sheetxl-stage{contain:strict}._sheetxl-grid_h9wwa_7 .sheetxl-stage>*{contain:strict}")),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();
2
2
  "use strict";/**
3
- * @license @sheetxl/grid-react - Grid React - Advanced grid component for React - v0.7.7
3
+ * @license @sheetxl/grid-react - Grid React - Advanced grid component for React - v0.7.9
4
4
  *
5
5
  * (C) 2025-present SheetXL Inc. & Michael T. Ford
6
6
  * License: The license can be found at https://www.sheetxl.com/license.
7
- */Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const te=require("react/jsx-runtime"),n=require("@sheetxl/utils-react"),l=require("react"),r=require("@sheetxl/utils"),Jn=require("react-dom"),Xt=({itemType:t,index:o,itemSize:i,instanceProps:c,scale:d=1})=>{let u,a,s;t==="column"?(u=c.columnMetadataMap,a=c.lastMeasuredColumnIndex,s=c.recalcColumnIndices):(u=c.rowMetadataMap,a=c.lastMeasuredRowIndex,s=c.recalcRowIndices);const w=s.length>0;if(o>a){let T=0;if(a>=0){const L=u[a];T=L.offset+L.size}for(let L=a+1;L<=o;L++){let M=w?s.includes(L)?i(L)*d:u[L]?.size||i(L)*d:i(L)*d;u[L]={offset:T,size:M},T+=M}t==="column"?c.lastMeasuredColumnIndex=o:c.lastMeasuredRowIndex=o}return u[o],u[o]},Kn=({itemType:t,itemSize:o,itemCount:i,instanceProps:c,offset:d,scale:u})=>{let a,s;t==="column"?(a=c.columnMetadataMap,s=c.lastMeasuredColumnIndex):(a=c.rowMetadataMap,s=c.lastMeasuredRowIndex);let w=0;return w=(s>0?a[s].offset:0)>=d?Qn({itemType:t,itemSize:o,instanceProps:c,high:s,low:0,offset:d,scale:u}):xo({itemType:t,itemSize:o,itemCount:i,instanceProps:c,index:Math.max(0,s),offset:d,scale:u}),w=Math.min(w,i),w},Qn=({itemType:t,itemSize:o,instanceProps:i,high:c,low:d,offset:u,scale:a})=>{for(;d<=c;){const s=d+Math.floor((c-d)/2),w=Xt({itemType:t,itemSize:o,index:s,instanceProps:i,scale:a}).offset;if(w===u)return s;w<u?d=s+1:w>u&&(c=s-1)}return d>0?d-1:0},xo=({itemType:t,itemSize:o,itemCount:i,instanceProps:c,index:d,offset:u,scale:a})=>{let s=1;for(;d<i&&Xt({itemType:t,itemSize:o,index:d,instanceProps:c,scale:a}).offset<u;)d+=s,s*=2;return Qn({itemType:t,itemSize:o,instanceProps:c,high:Math.min(d,i-1),low:Math.floor(d/2),offset:u,scale:a})},eo=t=>{const{rowCount:o,columnCount:i,defaultRowHeight:c,getRowHeight:d,defaultColumnWidth:u,getColumnWidth:a}=t||{},s=l.useRef({columnMetadataMap:{},rowMetadataMap:{},lastMeasuredColumnIndex:-1,lastMeasuredRowIndex:-1,recalcColumnIndices:[],recalcRowIndices:[]}),w=n.useCallbackRef(P=>Kn({itemType:"row",itemCount:o,itemSize:d??(()=>c??20),instanceProps:s.current,offset:P}),[o,d,c]),T=n.useCallbackRef(P=>P===-1?0:Xt({itemType:"row",index:P,itemSize:d??(()=>c??20),instanceProps:s.current}).offset,[d,c]),L=n.useCallbackRef(P=>Xt({itemType:"row",index:P,itemSize:d??(()=>c??20),instanceProps:s.current}).size,[d,c]),M=n.useCallbackRef(P=>Kn({itemType:"column",itemCount:i,itemSize:a??(()=>u??75),instanceProps:s.current,offset:P}),[i,a,u]),D=n.useCallbackRef(P=>P===-1?0:Xt({itemType:"column",index:P,itemSize:a??(()=>u??75),instanceProps:s.current}).offset,[a,u]),A=n.useCallbackRef(P=>Xt({itemType:"column",index:P,itemSize:a??(()=>u??75),instanceProps:s.current}).size,[a,u]),[q,H]=l.useReducer(P=>P+1,0),J=()=>({getRowOffset:T,getColOffset:D,getRowIndex:w,getColIndex:M}),[be,G]=l.useState(()=>t?J():null);return l.useEffect(()=>{G(t?J():null)},[q,o,i,u,c,L,A]),be},On="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ~`!@#$%^&*()-_=+[{]};:'\",<.>/?|\\",Fn=t=>{if(!t)return null;if(t.eventType==="start")return{type:t.eventType};if(t.eventType==="submit")return{type:t.eventType};if(t.eventType==="cancel")return{type:t.eventType};if(t.eventType==="keyboard")return{type:t.eventType,key:t.event.key};if(t.eventType==="pointer")return{type:t.eventType};if(t.eventType==="coordsChange"){const o={type:t.eventType};return t.activeCoords&&(o.activeCoords=t.activeCoords),o}return{type:t.eventType??"unknown"}},po=t=>!0,mo=t=>!!t&&!(t.ctrlKey||t.metaKey||t.altKey||t.isComposing)&&(!(t.shiftKey||t.key!=="F2"&&t.key!==" "&&t.key!=="Backspace")||(!t.shiftKey||t.key!==" ")&&On.indexOf(t.key)!==-1),Co=t=>!!t&&t.type==="dblclick"&&{editMode:!0},So=t=>{const{session:o,refLatestCoords:i,handleSubmitEdit:c,handleCancelEdit:d,cellBounds:u,isInBounds:a,getCellEditor:s,propsEditor:w,borderStrokeFill:T="rgb(33, 115, 70)",borderStrokeWidth:L=2,alignment:M=n.HorizontalAlignment.Left,style:D,...A}=t,q=l.useRef(null),H=l.useRef(null),[J,be]=l.useState(!1),G=o.coords,P=l.useCallback(async ae=>{if(q.current?.getBoundingClientRect()){if(ae.eventType==="keyboard"){const B=ae.event,C=new KeyboardEvent(B.type,{bubbles:!0,cancelable:!0,view:window,key:B.key,code:B.code,location:B.location,repeat:B.repeat,isComposing:B.isComposing,charCode:B.charCode,keyCode:B.keyCode,which:B.which,ctrlKey:B.ctrlKey,shiftKey:B.shiftKey,altKey:B.altKey,metaKey:B.metaKey});C.isSynthetic=!0,C.key,H.current?.dispatchEvent(C)}else ae.eventType==="pointer"||console.warn("unsupported event type",ae);await new Promise(B=>requestAnimationFrame(B))}},[]);l.useEffect(()=>{const ae=H.current;return be(!0),H.current.startEdit?.(o.startEvent),(async()=>{o.editorRefs.push(ae),o.editorRefsDispatchEditorEvent.push(P);const me=[...o.events];for(let B=0;B<me.length;B++)await P(me[B]);o.onMount(ae)})(),()=>{const me=o.editorRefs.indexOf(ae);me!==-1&&o.editorRefs.splice(me,1),o.onUnmount(ae)}},[]);const F=l.useCallback(()=>c(o),[]),se=l.useCallback(()=>{d(o)},[]),U=i.current&&r.CoordUtils.isEqualCells(i.current,G),re=a&&U&&J,ze=s({autoFocus:!!o.startEvent?.autoFocus,...w,onSubmitEdit:F,onCancelEdit:se,ref:H},G),ke=u.x+n.ReactUtils.boundPixel(-L/2),Ae=n.ReactUtils.boundPixel(u.width+L/2,!0);return te.jsx("div",{tabIndex:0,ref:q,style:{background:void 0,...D,opacity:re?D?.opacity??1:0,pointerEvents:"auto",position:"absolute",boxSizing:"border-box",top:`${u.y+n.ReactUtils.boundPixel(-L/2)}px`,height:n.ReactUtils.boundPixel(u.height+L/2,!0),left:`${ke}px`,width:Ae},...A,children:te.jsx("div",{className:"editor-container",style:{position:"absolute",boxSizing:"border-box",left:`${n.ReactUtils.boundPixel(1)}px`,top:`${n.ReactUtils.boundPixel(1)}px`,width:n.ReactUtils.boundPixel(u.width-2,!0),height:n.ReactUtils.boundPixel(u.height-2,!0),outline:`${L}px ${T} solid`,boxShadow:"rgba(60,64,67,.35) 2px 2px 6px 3px",maxHeight:"100%",overflow:"hidden",display:"flex"},children:ze})})},bo=Object.freeze({once:!0});var vo=function(){},to=typeof window<"u",yo=to?l.useLayoutEffect:l.useEffect,Vn={x:0,y:0,width:0,height:0,top:0,left:0,bottom:0,right:0};const no=to&&window.ResizeObserver!==void 0?function(){var t=l.useState(null),o=t[0],i=t[1],c=l.useState(Vn),d=c[0],u=c[1],a=l.useMemo(function(){return new window.ResizeObserver(function(s){if(s[0]){var w=s[0].contentRect,T=w.x,L=w.y,M=w.width,D=w.height,A=w.top,q=w.left,H=w.bottom,J=w.right;u({x:T,y:L,width:M,height:D,top:A,left:q,bottom:H,right:J})}})},[]);return yo(function(){if(o)return a.observe(o),function(){a.disconnect()}},[o]),[i,d]}:function(){return[vo,Vn]},Eo=3,Ro=.5,Io=50,In=t=>({x:t.x,y:t.y,width:t.width,height:t.height,top:t.top,left:t.left,right:t.right,bottom:t.bottom});function oo(t={}){const{threshold:o=Ro,stillnessThreshold:i=Eo,maxHierarchyDepth:c=Io}=t,[d,u]=no(),a=l.useRef(null),[s,w]=l.useReducer(q=>q+1,0),T=l.useRef(void 0),L=l.useRef({x:0,y:0,width:0,height:0,top:0,left:0,right:0,bottom:0}),M=l.useCallback(q=>{a.current=q,typeof d=="function"&&d(q)},[d]),[D,A]=l.useState(u);return l.useEffect(()=>{u&&!D&&A(u)},[u,D]),l.useEffect(()=>{const q=a.current;if(!q)return;let H=!1,J=0;const be=()=>{if(!q)return;const U=q.getBoundingClientRect(),re=L.current;Math.abs(U.x-re.x)>o||Math.abs(U.y-re.y)>o||Math.abs(U.width-re.width)>o||Math.abs(U.height-re.height)>o?(H||(H=!0,A(In(U)),w()),J=0):J++,H&&J>=i&&(H=!1,A(In(U)),w()),L.current=In(U),T.current=requestAnimationFrame(be)};T.current=requestAnimationFrame(be);const G=U=>{H=!0,w()},P=U=>{H=!1,J=i,w()};let F=q;const se=[];for(;F&&F!==document.documentElement&&(F.addEventListener("animationstart",G,!0),F.addEventListener("animationend",P,!0),F.addEventListener("transitionstart",G,!0),F.addEventListener("transitionend",P,!0),se.push(F),F=F.parentElement,!(se.length>c)););return()=>{T.current&&cancelAnimationFrame(T.current),se.forEach(U=>{U.removeEventListener("animationstart",G,!0),U.removeEventListener("animationend",P,!0),U.removeEventListener("transitionstart",G,!0),U.removeEventListener("transitionend",P,!0)})}},[s,u,o,i,c]),[M,D]}const Oe=(t,o,i)=>{if(!t)return o;let c=o;const d=i===r.Direction.Right||i===r.Direction.Down;for(;;){const u=t(c,!d);if(u===0)return c;d?c+=u:c-=u}},un=(t,o,i)=>{const c=[];let d=o;for(;d<=i;){const u=Math.max(0,t(d));u===0?(c.push(d),d++):d+=u}return c},ko=(t,o,i,c,d,u)=>{if(!o)return u;let{rowIndex:a,colIndex:s}=t;switch(c){case r.Direction.Down:{a=Oe(i,Math.min(a+1,u),c);let w=o({rowIndex:a,colIndex:s});for(;!w&&a<u;)a=Oe(i,Math.min(++a,u),c),w=o({rowIndex:a,colIndex:s});return a}case r.Direction.Up:{a=Oe(i,Math.max(a-1,u),c);let w=o({rowIndex:a,colIndex:s});for(;!w&&a>u;)a=Oe(i,Math.max(--a,u),c),w=o({rowIndex:a,colIndex:s});return a}case r.Direction.Right:{s=Oe(i,Math.min(s+1,u),c);let w=o({rowIndex:a,colIndex:s});for(;!w&&s<u;)s=Oe(i,Math.min(++s,u),c),w=o({rowIndex:a,colIndex:s});return s}case r.Direction.Left:{s=Oe(i,Math.max(s-1,u),c);let w=o({rowIndex:a,colIndex:s});for(;!w&&s>u;)s=Oe(i,Math.max(--s,u),c),w=o({rowIndex:a,colIndex:s});return s}default:return u}},Mo=(t,o=()=>!0,i,c,d,u)=>{let{rowIndex:a,colIndex:s}=t;switch(c){case r.Direction.Down:{a=Oe(i,Math.min(a+1,u),c);let w=o?.({rowIndex:a,colIndex:s});for(;w&&a<u;)a=Oe(i,Math.min(++a,u),c),w=o?.({rowIndex:a,colIndex:s});return o?.({rowIndex:a,colIndex:s})?a:a-1}case r.Direction.Up:{a=Oe(i,Math.max(a-1,u),c);let w=o?.({rowIndex:a,colIndex:s});for(;w&&a>u;)a=Oe(i,Math.max(--a,u),c),w=o?.({rowIndex:a,colIndex:s});return o?.({rowIndex:a,colIndex:s})?a:a+1}case r.Direction.Right:{s=Oe(i,Math.min(s+1,u),c);let w=o?.({rowIndex:a,colIndex:s});for(;w&&s<u;)s=Oe(i,Math.min(++s,u),c),w=o?.({rowIndex:a,colIndex:s});return o?.({rowIndex:a,colIndex:s})?s:s-1}case r.Direction.Left:{s=Oe(i,Math.max(s-1,u),c);let w=o?.({rowIndex:a,colIndex:s});for(;w&&s>u;)s=Oe(i,Math.max(--s,u),c),w=o?.({rowIndex:a,colIndex:s});return o?.({rowIndex:a,colIndex:s})?s:s+1}default:return null}},Do=(t,o,i,c,d,u)=>{if(!o)return u;let a,{rowIndex:s,colIndex:w}=t;c===r.Direction.Down?a={rowIndex:s+1,colIndex:w}:c===r.Direction.Up?a={rowIndex:s-1,colIndex:w}:c===r.Direction.Right?a={rowIndex:s,colIndex:w+1}:c===r.Direction.Left&&(a={rowIndex:s,colIndex:w-1});const T=o(t),L=o(a);var M,D;return(D=L,!(M=T)&&!D||!M&&D||M&&!D?ko:Mo)(t,o,i,c,!1,u)??u},Wn=(t,o)=>`${t}:${o}`,jn=(t,o,i,c,d,u)=>{if(i-o>=d-c)return c;let a=c;return t==="nearest"&&(c-o>0?t="start":i-d>0&&(t="end")),t==="start"?a=o:t==="end"?a=i-(d-c):t==="center"&&(a=o+(i-o)/2-(d-c)/2),a<c?Math.max(0,a):a>c?Math.min(a,u-(d-c)):void 0},Hn=(t,o,i,c)=>(console.log("todo: implement convertToVisibleRanges"),t),Pn=(t,o=r.Direction.Right,i,c,d,u=null)=>{if(u&&r.CoordUtils.isEqualSelectionCoords(u,t))return t;const a=t.ranges[t.rangeIndex];if(!r.CoordUtils.isRangesIntersect({rowStart:t.cell.rowIndex,colStart:t.cell.colIndex,rowEnd:t.cell.rowIndex,colEnd:t.cell.colIndex},a))return t;let s={...t.cell},w=t.rangeIndex;switch(o){case r.Direction.Right:s.colIndex=Oe(d,s.colIndex+1,o);break;case r.Direction.Left:s.colIndex=Oe(d,s.colIndex-1,o);break;case r.Direction.Down:s.rowIndex=Oe(c,s.rowIndex+1,o);break;case r.Direction.Up:s.rowIndex=Oe(c,s.rowIndex-1,o)}const T=D=>{if(D){w=t.rangeIndex>=t.ranges.length-1?0:t.rangeIndex+1;const A=t.ranges[w];s={colIndex:A.colStart,rowIndex:A.rowStart}}else{w=t.rangeIndex<=0?t.ranges.length-1:t.rangeIndex-1;const A=t.ranges[w];s={colIndex:A.colEnd,rowIndex:A.rowEnd}}};if(o===r.Direction.Right&&s.colIndex>a.colEnd&&s.rowIndex===a.rowEnd)T(!0);else if(o===r.Direction.Left&&s.colIndex<a.colStart&&s.rowIndex===a.rowStart)T(!1);else if(o===r.Direction.Down&&s.colIndex===a.colEnd&&s.rowIndex>a.rowEnd)T(!0);else if(o===r.Direction.Up&&s.colIndex===a.colStart&&s.rowIndex<a.rowStart)T(!1);else{let D=s.rowIndex,A=s.colIndex;switch(o){case r.Direction.Right:A>a.colEnd&&(D=Oe(c,D+1,o),A=a.colStart,D>a.rowEnd&&(D=a.rowStart));break;case r.Direction.Left:A<a.colStart&&(D=Oe(c,D-1,o),A=a.colEnd,D<a.rowStart&&(D=a.rowEnd));break;case r.Direction.Down:D>a.rowEnd&&(A=Oe(d,A+1,o),D=a.rowStart,A>a.colEnd&&(A=a.colStart));break;case r.Direction.Up:D<a.rowStart&&(A=Oe(d,A-1,o),D=a.rowEnd,A<a.colStart&&(A=a.colEnd))}s={rowIndex:D,colIndex:A}}let L=i(s);if(!r.CoordUtils.isRangeWithinRange(L,a)){const D=r.CoordUtils.intersectRanges(L,a);D&&(L=D)}let M={rowStart:Oe(c,L.rowStart,r.Direction.Down),colStart:Oe(d,L.colStart,r.Direction.Right),rowEnd:Oe(c,L.rowEnd,r.Direction.Up),colEnd:Oe(d,L.colEnd,r.Direction.Left)};if(M.rowStart!==s.rowIndex||M.colStart!==s.colIndex){switch(o){case r.Direction.Right:t.ranges[w].colStart===M.colStart&&t.ranges[w].colEnd===M.colEnd&&(s.rowIndex=M.rowEnd),s.colIndex=M.colEnd;break;case r.Direction.Left:t.ranges[w].colStart===M.colStart&&t.ranges[w].colEnd===M.colEnd&&(s.rowIndex=M.rowStart),s.rowIndex===M.rowStart?s.colIndex=M.colStart+1:s.colIndex=M.colStart;break;case r.Direction.Down:t.ranges[w].rowStart===M.rowStart&&t.ranges[w].rowEnd===M.rowEnd&&(s.colIndex=M.colEnd),s.rowIndex=M.rowEnd;break;case r.Direction.Up:t.ranges[w].rowStart===M.rowStart&&t.ranges[w].rowEnd===M.rowEnd&&(s.colIndex=M.colStart),s.colIndex===M.colStart?s.rowIndex=M.rowStart+1:s.rowIndex=M.rowStart}return Pn({cell:s,ranges:t.ranges,rangeIndex:w},o,i,c,d,u??t)}return{ranges:t.ranges,cell:s,rangeIndex:w}},Nn=(t,o)=>{let i,c=0,d=0;return o.colStart<t.colStart?(i=r.Direction.Left,c=t.colStart-o.colStart,d=o.colStart):o.colEnd>t.colEnd?(i=r.Direction.Right,c=o.colEnd-t.colEnd,d=o.colEnd):o.rowStart<t.rowStart?(i=r.Direction.Up,c=t.rowStart-o.rowStart,d=o.rowStart):o.rowEnd>t.rowEnd&&(i=r.Direction.Down,c=o.rowEnd-t.rowEnd,d=o.rowEnd),{direction:i,amount:c,index:d}},wn=(t,o=!1,i,c)=>{if(!i)return 0;const d=!o,u=d?1:-1;let a=i(d?t:t+1),s=i(d?t+1:t),w=t+(d?2:-1),T=0;for(;(s-a)*u<=0;){if(d&&w-1>c+1||!d&&w+1<c)return T;a=s,s=i(w),w+=u,T++}return T},qn=(t,o,i,c,d)=>{const u={};let a=null,s=null;const w=i.length;for(let T=0;T<w&&i[T]<=d;T++){const L=i[T];if(L<c)continue;const M=a===L?s:o?t.getColOffset(L):t.getRowOffset(L),D=o?t.getColOffset(L+1):t.getRowOffset(L+1);a=L+1,s=D,u[L]=Object.freeze({offset:M,size:D-M,spanIndex:T})}return Object.freeze(u)},Xn=(t,o,i)=>{const c=t.getColOffset(o.colStart)+(i?.left??0),d=t.getRowOffset(o.rowStart)+(i?.top??0);return{x:c,y:d,width:t.getColOffset(o.colEnd+1)+(i?.right??0)-(i?.left??0)-c,height:t.getRowOffset(o.rowEnd+1)+(i?.bottom??0)-(i?.top??0)-d}},Po=(t,o,i)=>{if(!i)return!1;const c=i.x;if(t<c||t>c+i.width)return!1;const d=i.y;return!(o<d||o>d+i.height)},kn=(t,o=!0)=>`M ${n.ReactUtils.boundPixel(t.left)} ${n.ReactUtils.boundPixel(t.top)} L ${n.ReactUtils.boundPixel(t.right,!0)} ${n.ReactUtils.boundPixel(t.top)} L ${n.ReactUtils.boundPixel(t.right,!0)} ${n.ReactUtils.boundPixel(t.bottom,!0)} L ${n.ReactUtils.boundPixel(t.left)} ${n.ReactUtils.boundPixel(t.bottom,!0)} L ${n.ReactUtils.boundPixel(t.left)} ${n.ReactUtils.boundPixel(t.top)} ${o?"Z":""}`,Un=t=>{const{linePoints:o,bounds:i,pathProps:c,style:d,...u}=t;return te.jsx("svg",{width:`${n.ReactUtils.boundPixel(i.width,!0)}`,height:`${n.ReactUtils.boundPixel(i.height,!0)}`,viewBox:`0 0 ${n.ReactUtils.boundPixel(i.width,!0)} ${n.ReactUtils.boundPixel(i.height,!0)}`,style:{position:"absolute",left:`${n.ReactUtils.boundPixel(i.x)}px`,top:`${n.ReactUtils.boundPixel(i.y)}px`,width:`${n.ReactUtils.boundPixel(i.width,!0)}px`,height:`${n.ReactUtils.boundPixel(i.height,!0)}px`,pointerEvents:"none",transitionTimingFunction:"linear",transitionDelay:"0",transitionProperty:"left, top, width, height",willChange:"left, top, width, height, stroke-dashoffset",...d},...u,children:te.jsx("path",{d:`M ${n.ReactUtils.boundPixel(o[0])} ${n.ReactUtils.boundPixel(o[1])} L ${n.ReactUtils.boundPixel(o[2])} ${n.ReactUtils.boundPixel(o[3])}`,fill:"none",vectorEffect:"non-scaling-stroke",stroke:"black",...c})})},ro=t=>{const{x:o=0,y:i=0,width:c=0,height:d=0,fill:u,stroke:a,strokeWidth:s=0,strokeDasharray:w,strokeDashoffset:T,clipPath:L,pathBounds:M,pathProps:D,style:A,...q}=t,H=i,J=o,be=c,G=d;let P=null;if(u){let F=kn({top:0,left:0,bottom:G,right:be});M&&(F=F+" "+kn({top:M.y-H,left:M.x-J,bottom:M.height+M.y-H,right:M.width+M.x-J})),P=[te.jsx("path",{d:F,fill:u,stroke:"none",fillRule:"evenodd"},"fill")]}return te.jsxs("svg",{width:`${n.ReactUtils.boundPixel(c,!0)}`,height:`${n.ReactUtils.boundPixel(d,!0)}`,viewBox:`0 0 ${n.ReactUtils.boundPixel(c,!0)} ${n.ReactUtils.boundPixel(d,!0)}`,preserveAspectRatio:"none",style:{position:"absolute",left:`${n.ReactUtils.boundPixel(o)}px`,top:`${n.ReactUtils.boundPixel(i)}px`,pointerEvents:"none",transitionDuration:"0ms",transitionTimingFunction:"linear",transitionDelay:"0",transitionProperty:"left, top, width, height",willChange:"left, top, width, height, stroke-dashoffset",boxShadow:"rgb(60 64 67 / 5%) 0px 1px 4px 2px, rgb(255 255 255 / 15%) 0px 0px 2px 1px",overflow:"visible",...A},...q,children:[P,te.jsx("path",{d:kn({top:0,left:0,right:be,bottom:G}),fill:"none",strokeDasharray:w,strokeDashoffset:T,stroke:a,vectorEffect:"non-scaling-stroke",strokeWidth:s,...D})]})},Yn=t=>{const{key:o,...i}=t;return te.jsx(zn,{...i},o)},zn=l.memo(t=>{const{stroke:o,fill:i,x:c=0,y:d=0,width:u=0,height:a=0,style:s,isAnimatedStroke:w,animatedStrokeProps:T,range:L,cell:M,...D}=t,A=w||!!T,q={name:"walking-offset",dashGap:2,speed:50,dashLength:8,...T};let H=q.dashGap+q.dashLength;const J=q.speed*H,be=n.useId().replaceAll(":",""),G=`${q.name}-${be}`;let P;return l.useEffect(()=>{if(!A)return;const F=`@keyframes ${G} {
7
+ */Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const te=require("react/jsx-runtime"),n=require("@sheetxl/utils-react"),l=require("react"),r=require("@sheetxl/utils"),Jn=require("react-dom"),Xt=({itemType:t,index:o,itemSize:i,instanceProps:c,scale:d=1})=>{let u,a,s;t==="column"?(u=c.columnMetadataMap,a=c.lastMeasuredColumnIndex,s=c.recalcColumnIndices):(u=c.rowMetadataMap,a=c.lastMeasuredRowIndex,s=c.recalcRowIndices);const w=s.length>0;if(o>a){let T=0;if(a>=0){const L=u[a];T=L.offset+L.size}for(let L=a+1;L<=o;L++){let M=w?s.includes(L)?i(L)*d:u[L]?.size||i(L)*d:i(L)*d;u[L]={offset:T,size:M},T+=M}t==="column"?c.lastMeasuredColumnIndex=o:c.lastMeasuredRowIndex=o}return u[o],u[o]},Kn=({itemType:t,itemSize:o,itemCount:i,instanceProps:c,offset:d,scale:u})=>{let a,s;t==="column"?(a=c.columnMetadataMap,s=c.lastMeasuredColumnIndex):(a=c.rowMetadataMap,s=c.lastMeasuredRowIndex);let w=0;return w=(s>0?a[s].offset:0)>=d?Qn({itemType:t,itemSize:o,instanceProps:c,high:s,low:0,offset:d,scale:u}):xo({itemType:t,itemSize:o,itemCount:i,instanceProps:c,index:Math.max(0,s),offset:d,scale:u}),w=Math.min(w,i),w},Qn=({itemType:t,itemSize:o,instanceProps:i,high:c,low:d,offset:u,scale:a})=>{for(;d<=c;){const s=d+Math.floor((c-d)/2),w=Xt({itemType:t,itemSize:o,index:s,instanceProps:i,scale:a}).offset;if(w===u)return s;w<u?d=s+1:w>u&&(c=s-1)}return d>0?d-1:0},xo=({itemType:t,itemSize:o,itemCount:i,instanceProps:c,index:d,offset:u,scale:a})=>{let s=1;for(;d<i&&Xt({itemType:t,itemSize:o,index:d,instanceProps:c,scale:a}).offset<u;)d+=s,s*=2;return Qn({itemType:t,itemSize:o,instanceProps:c,high:Math.min(d,i-1),low:Math.floor(d/2),offset:u,scale:a})},eo=t=>{const{rowCount:o,columnCount:i,defaultRowHeight:c,getRowHeight:d,defaultColumnWidth:u,getColumnWidth:a}=t||{},s=l.useRef({columnMetadataMap:{},rowMetadataMap:{},lastMeasuredColumnIndex:-1,lastMeasuredRowIndex:-1,recalcColumnIndices:[],recalcRowIndices:[]}),w=n.useCallbackRef(P=>Kn({itemType:"row",itemCount:o,itemSize:d??(()=>c??20),instanceProps:s.current,offset:P}),[o,d,c]),T=n.useCallbackRef(P=>P===-1?0:Xt({itemType:"row",index:P,itemSize:d??(()=>c??20),instanceProps:s.current}).offset,[d,c]),L=n.useCallbackRef(P=>Xt({itemType:"row",index:P,itemSize:d??(()=>c??20),instanceProps:s.current}).size,[d,c]),M=n.useCallbackRef(P=>Kn({itemType:"column",itemCount:i,itemSize:a??(()=>u??75),instanceProps:s.current,offset:P}),[i,a,u]),D=n.useCallbackRef(P=>P===-1?0:Xt({itemType:"column",index:P,itemSize:a??(()=>u??75),instanceProps:s.current}).offset,[a,u]),A=n.useCallbackRef(P=>Xt({itemType:"column",index:P,itemSize:a??(()=>u??75),instanceProps:s.current}).size,[a,u]),[q,N]=l.useReducer(P=>P+1,0),Z=()=>({getRowOffset:T,getColOffset:D,getRowIndex:w,getColIndex:M}),[Ce,_]=l.useState(()=>t?Z():null);return l.useEffect(()=>{_(t?Z():null)},[q,o,i,u,c,L,A]),Ce},On="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ~`!@#$%^&*()-_=+[{]};:'\",<.>/?|\\",Fn=t=>{if(!t)return null;if(t.eventType==="start")return{type:t.eventType};if(t.eventType==="submit")return{type:t.eventType};if(t.eventType==="cancel")return{type:t.eventType};if(t.eventType==="keyboard")return{type:t.eventType,key:t.event.key};if(t.eventType==="pointer")return{type:t.eventType};if(t.eventType==="coordsChange"){const o={type:t.eventType};return t.activeCoords&&(o.activeCoords=t.activeCoords),o}return{type:t.eventType??"unknown"}},po=t=>!0,mo=t=>!!t&&!(t.ctrlKey||t.metaKey||t.altKey||t.isComposing)&&(!(t.shiftKey||t.key!=="F2"&&t.key!==" "&&t.key!=="Backspace")||(!t.shiftKey||t.key!==" ")&&On.indexOf(t.key)!==-1),Co=t=>!!t&&t.type==="dblclick"&&{editMode:!0},So=t=>{const{session:o,refLatestCoords:i,handleSubmitEdit:c,handleCancelEdit:d,cellBounds:u,isInBounds:a,getCellEditor:s,propsEditor:w,borderStrokeFill:T="rgb(33, 115, 70)",borderStrokeWidth:L=2,alignment:M=n.HorizontalAlignment.Left,style:D,...A}=t,q=l.useRef(null),N=l.useRef(null),[Z,Ce]=l.useState(!1),_=o.coords,P=l.useCallback(async ae=>{if(q.current?.getBoundingClientRect()){if(ae.eventType==="keyboard"){const B=ae.event,C=new KeyboardEvent(B.type,{bubbles:!0,cancelable:!0,view:window,key:B.key,code:B.code,location:B.location,repeat:B.repeat,isComposing:B.isComposing,charCode:B.charCode,keyCode:B.keyCode,which:B.which,ctrlKey:B.ctrlKey,shiftKey:B.shiftKey,altKey:B.altKey,metaKey:B.metaKey});C.isSynthetic=!0,C.key,N.current?.dispatchEvent(C)}else ae.eventType==="pointer"||console.warn("unsupported event type",ae);await new Promise(B=>requestAnimationFrame(B))}},[]);l.useEffect(()=>{const ae=N.current;return Ce(!0),N.current.startEdit?.(o.startEvent),(async()=>{o.editorRefs.push(ae),o.editorRefsDispatchEditorEvent.push(P);const pe=[...o.events];for(let B=0;B<pe.length;B++)await P(pe[B]);o.onMount(ae)})(),()=>{const pe=o.editorRefs.indexOf(ae);pe!==-1&&o.editorRefs.splice(pe,1),o.onUnmount(ae)}},[]);const F=l.useCallback(()=>c(o),[]),se=l.useCallback(()=>{d(o)},[]),U=i.current&&r.CoordUtils.isEqualCells(i.current,_),le=a&&U&&Z,Le=s({autoFocus:!!o.startEvent?.autoFocus,...w,onSubmitEdit:F,onCancelEdit:se,ref:N},_),Re=u.x+n.ReactUtils.boundPixel(-L/2),Oe=n.ReactUtils.boundPixel(u.width+L/2,!0);return te.jsx("div",{tabIndex:0,ref:q,style:{background:void 0,...D,opacity:le?D?.opacity??1:0,pointerEvents:"auto",position:"absolute",boxSizing:"border-box",top:`${u.y+n.ReactUtils.boundPixel(-L/2)}px`,height:n.ReactUtils.boundPixel(u.height+L/2,!0),left:`${Re}px`,width:Oe},...A,children:te.jsx("div",{className:"editor-container",style:{position:"absolute",boxSizing:"border-box",left:`${n.ReactUtils.boundPixel(1)}px`,top:`${n.ReactUtils.boundPixel(1)}px`,width:n.ReactUtils.boundPixel(u.width-2,!0),height:n.ReactUtils.boundPixel(u.height-2,!0),outline:`${L}px ${T} solid`,boxShadow:"rgba(60,64,67,.35) 2px 2px 6px 3px",maxHeight:"100%",overflow:"hidden",display:"flex"},children:Le})})},bo=Object.freeze({once:!0});var vo=function(){},to=typeof window<"u",yo=to?l.useLayoutEffect:l.useEffect,Vn={x:0,y:0,width:0,height:0,top:0,left:0,bottom:0,right:0};const no=to&&window.ResizeObserver!==void 0?function(){var t=l.useState(null),o=t[0],i=t[1],c=l.useState(Vn),d=c[0],u=c[1],a=l.useMemo(function(){return new window.ResizeObserver(function(s){if(s[0]){var w=s[0].contentRect,T=w.x,L=w.y,M=w.width,D=w.height,A=w.top,q=w.left,N=w.bottom,Z=w.right;u({x:T,y:L,width:M,height:D,top:A,left:q,bottom:N,right:Z})}})},[]);return yo(function(){if(o)return a.observe(o),function(){a.disconnect()}},[o]),[i,d]}:function(){return[vo,Vn]},Ro=3,Eo=.5,Io=50,In=t=>({x:t.x,y:t.y,width:t.width,height:t.height,top:t.top,left:t.left,right:t.right,bottom:t.bottom});function oo(t={}){const{threshold:o=Eo,stillnessThreshold:i=Ro,maxHierarchyDepth:c=Io}=t,[d,u]=no(),a=l.useRef(null),[s,w]=l.useReducer(q=>q+1,0),T=l.useRef(void 0),L=l.useRef({x:0,y:0,width:0,height:0,top:0,left:0,right:0,bottom:0}),M=l.useCallback(q=>{a.current=q,typeof d=="function"&&d(q)},[d]),[D,A]=l.useState(u);return l.useEffect(()=>{u&&!D&&A(u)},[u,D]),l.useEffect(()=>{const q=a.current;if(!q)return;let N=!1,Z=0;const Ce=()=>{if(!q)return;const U=q.getBoundingClientRect(),le=L.current;Math.abs(U.x-le.x)>o||Math.abs(U.y-le.y)>o||Math.abs(U.width-le.width)>o||Math.abs(U.height-le.height)>o?(N||(N=!0,A(In(U)),w()),Z=0):Z++,N&&Z>=i&&(N=!1,A(In(U)),w()),L.current=In(U),T.current=requestAnimationFrame(Ce)};T.current=requestAnimationFrame(Ce);const _=U=>{N=!0,w()},P=U=>{N=!1,Z=i,w()};let F=q;const se=[];for(;F&&F!==document.documentElement&&(F.addEventListener("animationstart",_,!0),F.addEventListener("animationend",P,!0),F.addEventListener("transitionstart",_,!0),F.addEventListener("transitionend",P,!0),se.push(F),F=F.parentElement,!(se.length>c)););return()=>{T.current&&cancelAnimationFrame(T.current),se.forEach(U=>{U.removeEventListener("animationstart",_,!0),U.removeEventListener("animationend",P,!0),U.removeEventListener("transitionstart",_,!0),U.removeEventListener("transitionend",P,!0)})}},[s,u,o,i,c]),[M,D]}const Te=(t,o,i)=>{if(!t)return o;let c=o;const d=i===r.Direction.Right||i===r.Direction.Down;for(;;){const u=t(c,!d);if(u===0)return c;d?c+=u:c-=u}},un=(t,o,i)=>{const c=[];let d=o;for(;d<=i;){const u=Math.max(0,t(d));u===0?(c.push(d),d++):d+=u}return c},ko=(t,o,i,c,d,u)=>{if(!o)return u;let{rowIndex:a,colIndex:s}=t;switch(c){case r.Direction.Down:{a=Te(i,Math.min(a+1,u),c);let w=o({rowIndex:a,colIndex:s});for(;!w&&a<u;)a=Te(i,Math.min(++a,u),c),w=o({rowIndex:a,colIndex:s});return a}case r.Direction.Up:{a=Te(i,Math.max(a-1,u),c);let w=o({rowIndex:a,colIndex:s});for(;!w&&a>u;)a=Te(i,Math.max(--a,u),c),w=o({rowIndex:a,colIndex:s});return a}case r.Direction.Right:{s=Te(i,Math.min(s+1,u),c);let w=o({rowIndex:a,colIndex:s});for(;!w&&s<u;)s=Te(i,Math.min(++s,u),c),w=o({rowIndex:a,colIndex:s});return s}case r.Direction.Left:{s=Te(i,Math.max(s-1,u),c);let w=o({rowIndex:a,colIndex:s});for(;!w&&s>u;)s=Te(i,Math.max(--s,u),c),w=o({rowIndex:a,colIndex:s});return s}default:return u}},Mo=(t,o=()=>!0,i,c,d,u)=>{let{rowIndex:a,colIndex:s}=t;switch(c){case r.Direction.Down:{a=Te(i,Math.min(a+1,u),c);let w=o?.({rowIndex:a,colIndex:s});for(;w&&a<u;)a=Te(i,Math.min(++a,u),c),w=o?.({rowIndex:a,colIndex:s});return o?.({rowIndex:a,colIndex:s})?a:a-1}case r.Direction.Up:{a=Te(i,Math.max(a-1,u),c);let w=o?.({rowIndex:a,colIndex:s});for(;w&&a>u;)a=Te(i,Math.max(--a,u),c),w=o?.({rowIndex:a,colIndex:s});return o?.({rowIndex:a,colIndex:s})?a:a+1}case r.Direction.Right:{s=Te(i,Math.min(s+1,u),c);let w=o?.({rowIndex:a,colIndex:s});for(;w&&s<u;)s=Te(i,Math.min(++s,u),c),w=o?.({rowIndex:a,colIndex:s});return o?.({rowIndex:a,colIndex:s})?s:s-1}case r.Direction.Left:{s=Te(i,Math.max(s-1,u),c);let w=o?.({rowIndex:a,colIndex:s});for(;w&&s>u;)s=Te(i,Math.max(--s,u),c),w=o?.({rowIndex:a,colIndex:s});return o?.({rowIndex:a,colIndex:s})?s:s+1}default:return null}},Do=(t,o,i,c,d,u)=>{if(!o)return u;let a,{rowIndex:s,colIndex:w}=t;c===r.Direction.Down?a={rowIndex:s+1,colIndex:w}:c===r.Direction.Up?a={rowIndex:s-1,colIndex:w}:c===r.Direction.Right?a={rowIndex:s,colIndex:w+1}:c===r.Direction.Left&&(a={rowIndex:s,colIndex:w-1});const T=o(t),L=o(a);var M,D;return(D=L,!(M=T)&&!D||!M&&D||M&&!D?ko:Mo)(t,o,i,c,!1,u)??u},Wn=(t,o)=>`${t}:${o}`,jn=(t,o,i,c,d,u)=>{if(i-o>=d-c)return c;let a=c;return t==="nearest"&&(c-o>0?t="start":i-d>0&&(t="end")),t==="start"?a=o:t==="end"?a=i-(d-c):t==="center"&&(a=o+(i-o)/2-(d-c)/2),a<c?Math.max(0,a):a>c?Math.min(a,u-(d-c)):void 0},Hn=(t,o,i,c)=>(console.log("todo: implement convertToVisibleRanges"),t),Pn=(t,o=r.Direction.Right,i,c,d,u=null)=>{if(u&&r.CoordUtils.isEqualSelectionCoords(u,t))return t;const a=t.ranges[t.rangeIndex];if(!r.CoordUtils.isRangesIntersect({rowStart:t.cell.rowIndex,colStart:t.cell.colIndex,rowEnd:t.cell.rowIndex,colEnd:t.cell.colIndex},a))return t;let s={...t.cell},w=t.rangeIndex;switch(o){case r.Direction.Right:s.colIndex=Te(d,s.colIndex+1,o);break;case r.Direction.Left:s.colIndex=Te(d,s.colIndex-1,o);break;case r.Direction.Down:s.rowIndex=Te(c,s.rowIndex+1,o);break;case r.Direction.Up:s.rowIndex=Te(c,s.rowIndex-1,o)}const T=D=>{if(D){w=t.rangeIndex>=t.ranges.length-1?0:t.rangeIndex+1;const A=t.ranges[w];s={colIndex:A.colStart,rowIndex:A.rowStart}}else{w=t.rangeIndex<=0?t.ranges.length-1:t.rangeIndex-1;const A=t.ranges[w];s={colIndex:A.colEnd,rowIndex:A.rowEnd}}};if(o===r.Direction.Right&&s.colIndex>a.colEnd&&s.rowIndex===a.rowEnd)T(!0);else if(o===r.Direction.Left&&s.colIndex<a.colStart&&s.rowIndex===a.rowStart)T(!1);else if(o===r.Direction.Down&&s.colIndex===a.colEnd&&s.rowIndex>a.rowEnd)T(!0);else if(o===r.Direction.Up&&s.colIndex===a.colStart&&s.rowIndex<a.rowStart)T(!1);else{let D=s.rowIndex,A=s.colIndex;switch(o){case r.Direction.Right:A>a.colEnd&&(D=Te(c,D+1,o),A=a.colStart,D>a.rowEnd&&(D=a.rowStart));break;case r.Direction.Left:A<a.colStart&&(D=Te(c,D-1,o),A=a.colEnd,D<a.rowStart&&(D=a.rowEnd));break;case r.Direction.Down:D>a.rowEnd&&(A=Te(d,A+1,o),D=a.rowStart,A>a.colEnd&&(A=a.colStart));break;case r.Direction.Up:D<a.rowStart&&(A=Te(d,A-1,o),D=a.rowEnd,A<a.colStart&&(A=a.colEnd))}s={rowIndex:D,colIndex:A}}let L=i(s);if(!r.CoordUtils.isRangeWithinRange(L,a)){const D=r.CoordUtils.intersectRanges(L,a);D&&(L=D)}let M={rowStart:Te(c,L.rowStart,r.Direction.Down),colStart:Te(d,L.colStart,r.Direction.Right),rowEnd:Te(c,L.rowEnd,r.Direction.Up),colEnd:Te(d,L.colEnd,r.Direction.Left)};if(M.rowStart!==s.rowIndex||M.colStart!==s.colIndex){switch(o){case r.Direction.Right:t.ranges[w].colStart===M.colStart&&t.ranges[w].colEnd===M.colEnd&&(s.rowIndex=M.rowEnd),s.colIndex=M.colEnd;break;case r.Direction.Left:t.ranges[w].colStart===M.colStart&&t.ranges[w].colEnd===M.colEnd&&(s.rowIndex=M.rowStart),s.rowIndex===M.rowStart?s.colIndex=M.colStart+1:s.colIndex=M.colStart;break;case r.Direction.Down:t.ranges[w].rowStart===M.rowStart&&t.ranges[w].rowEnd===M.rowEnd&&(s.colIndex=M.colEnd),s.rowIndex=M.rowEnd;break;case r.Direction.Up:t.ranges[w].rowStart===M.rowStart&&t.ranges[w].rowEnd===M.rowEnd&&(s.colIndex=M.colStart),s.colIndex===M.colStart?s.rowIndex=M.rowStart+1:s.rowIndex=M.rowStart}return Pn({cell:s,ranges:t.ranges,rangeIndex:w},o,i,c,d,u??t)}return{ranges:t.ranges,cell:s,rangeIndex:w}},Nn=(t,o)=>{let i,c=0,d=0;return o.colStart<t.colStart?(i=r.Direction.Left,c=t.colStart-o.colStart,d=o.colStart):o.colEnd>t.colEnd?(i=r.Direction.Right,c=o.colEnd-t.colEnd,d=o.colEnd):o.rowStart<t.rowStart?(i=r.Direction.Up,c=t.rowStart-o.rowStart,d=o.rowStart):o.rowEnd>t.rowEnd&&(i=r.Direction.Down,c=o.rowEnd-t.rowEnd,d=o.rowEnd),{direction:i,amount:c,index:d}},wn=(t,o=!1,i,c)=>{if(!i)return 0;const d=!o,u=d?1:-1;let a=i(d?t:t+1),s=i(d?t+1:t),w=t+(d?2:-1),T=0;for(;(s-a)*u<=0;){if(d&&w-1>c+1||!d&&w+1<c)return T;a=s,s=i(w),w+=u,T++}return T},qn=(t,o,i,c,d)=>{const u={};let a=null,s=null;const w=i.length;for(let T=0;T<w&&i[T]<=d;T++){const L=i[T];if(L<c)continue;const M=a===L?s:o?t.getColOffset(L):t.getRowOffset(L),D=o?t.getColOffset(L+1):t.getRowOffset(L+1);a=L+1,s=D,u[L]=Object.freeze({offset:M,size:D-M,spanIndex:T})}return Object.freeze(u)},Xn=(t,o,i)=>{const c=t.getColOffset(o.colStart)+(i?.left??0),d=t.getRowOffset(o.rowStart)+(i?.top??0);return{x:c,y:d,width:t.getColOffset(o.colEnd+1)+(i?.right??0)-(i?.left??0)-c,height:t.getRowOffset(o.rowEnd+1)+(i?.bottom??0)-(i?.top??0)-d}},Po=(t,o,i)=>{if(!i)return!1;const c=i.x;if(t<c||t>c+i.width)return!1;const d=i.y;return!(o<d||o>d+i.height)},kn=(t,o=!0)=>`M ${n.ReactUtils.boundPixel(t.left)} ${n.ReactUtils.boundPixel(t.top)} L ${n.ReactUtils.boundPixel(t.right,!0)} ${n.ReactUtils.boundPixel(t.top)} L ${n.ReactUtils.boundPixel(t.right,!0)} ${n.ReactUtils.boundPixel(t.bottom,!0)} L ${n.ReactUtils.boundPixel(t.left)} ${n.ReactUtils.boundPixel(t.bottom,!0)} L ${n.ReactUtils.boundPixel(t.left)} ${n.ReactUtils.boundPixel(t.top)} ${o?"Z":""}`,Un=t=>{const{linePoints:o,bounds:i,pathProps:c,style:d,...u}=t;return te.jsx("svg",{width:`${n.ReactUtils.boundPixel(i.width,!0)}`,height:`${n.ReactUtils.boundPixel(i.height,!0)}`,viewBox:`0 0 ${n.ReactUtils.boundPixel(i.width,!0)} ${n.ReactUtils.boundPixel(i.height,!0)}`,style:{position:"absolute",left:`${n.ReactUtils.boundPixel(i.x)}px`,top:`${n.ReactUtils.boundPixel(i.y)}px`,width:`${n.ReactUtils.boundPixel(i.width,!0)}px`,height:`${n.ReactUtils.boundPixel(i.height,!0)}px`,pointerEvents:"none",transitionTimingFunction:"linear",transitionDelay:"0",transitionProperty:"left, top, width, height",willChange:"left, top, width, height, stroke-dashoffset",...d},...u,children:te.jsx("path",{d:`M ${n.ReactUtils.boundPixel(o[0])} ${n.ReactUtils.boundPixel(o[1])} L ${n.ReactUtils.boundPixel(o[2])} ${n.ReactUtils.boundPixel(o[3])}`,fill:"none",vectorEffect:"non-scaling-stroke",stroke:"black",...c})})},ro=t=>{const{x:o=0,y:i=0,width:c=0,height:d=0,fill:u,stroke:a,strokeWidth:s=0,strokeDasharray:w,strokeDashoffset:T,clipPath:L,pathBounds:M,pathProps:D,style:A,...q}=t,N=i,Z=o,Ce=c,_=d;let P=null;if(u){let F=kn({top:0,left:0,bottom:_,right:Ce});M&&(F=F+" "+kn({top:M.y-N,left:M.x-Z,bottom:M.height+M.y-N,right:M.width+M.x-Z})),P=[te.jsx("path",{d:F,fill:u,stroke:"none",fillRule:"evenodd"},"fill")]}return te.jsxs("svg",{width:`${n.ReactUtils.boundPixel(c,!0)}`,height:`${n.ReactUtils.boundPixel(d,!0)}`,viewBox:`0 0 ${n.ReactUtils.boundPixel(c,!0)} ${n.ReactUtils.boundPixel(d,!0)}`,preserveAspectRatio:"none",style:{position:"absolute",left:`${n.ReactUtils.boundPixel(o)}px`,top:`${n.ReactUtils.boundPixel(i)}px`,pointerEvents:"none",transitionDuration:"0ms",transitionTimingFunction:"linear",transitionDelay:"0",transitionProperty:"left, top, width, height",willChange:"left, top, width, height, stroke-dashoffset",boxShadow:"rgb(60 64 67 / 5%) 0px 1px 4px 2px, rgb(255 255 255 / 15%) 0px 0px 2px 1px",overflow:"visible",...A},...q,children:[P,te.jsx("path",{d:kn({top:0,left:0,right:Ce,bottom:_}),fill:"none",strokeDasharray:w,strokeDashoffset:T,stroke:a,vectorEffect:"non-scaling-stroke",strokeWidth:s,...D})]})},Yn=t=>{const{key:o,...i}=t;return te.jsx(zn,{...i},o)},zn=l.memo(t=>{const{stroke:o,fill:i,x:c=0,y:d=0,width:u=0,height:a=0,style:s,isAnimatedStroke:w,animatedStrokeProps:T,range:L,cell:M,...D}=t,A=w||!!T,q={name:"walking-offset",dashGap:2,speed:50,dashLength:8,...T};let N=q.dashGap+q.dashLength;const Z=q.speed*N,Ce=n.useId().replaceAll(":",""),_=`${q.name}-${Ce}`;let P;return l.useEffect(()=>{if(!A)return;const F=`@keyframes ${_} {
8
8
  to {
9
9
  stroke-dashoffset: 0px;
10
10
  }
11
- }`,se=document.createElement("style");return se.appendChild(document.createTextNode(F)),document.head.appendChild(se),se.sheet.insertRule(F,0),()=>{document.head.removeChild(se)}},[A]),A&&(P={strokeDasharray:`${q.dashLength}px ${q.dashGap}px`,strokeDashoffset:`${H}px`,animation:`${G} ${J}ms linear infinite`,willChange:"stroke-dashoffset"}),te.jsx(ro,{x:c,y:d,width:u,height:a,stroke:o,fill:i,shapeRendering:"crispEdges",style:{...P,...s},...D})});function lo(t){var o,i,c="";if(typeof t=="string"||typeof t=="number")c+=t;else if(typeof t=="object")if(Array.isArray(t)){var d=t.length;for(o=0;o<d;o++)t[o]&&(i=lo(t[o]))&&(c&&(c+=" "),c+=i)}else for(i in t)t[i]&&(c&&(c+=" "),c+=i);return c}function Wt(){for(var t,o,i=0,c="",d=arguments.length;i<d;i++)(t=arguments[i])&&(o=lo(t))&&(c&&(c+=" "),c+=o);return c}zn.displayName="Selection";const Tn=l.memo(l.forwardRef((t,o)=>{const{x:i=0,y:c=0,borderWidth:d=1,size:u=6,borderStroke:a,corner:s,style:w,className:T,background:L,...M}=t;if(i===0||c===0)return null;let D=!0,A=!0,q=!0,H=!0;switch(s){case"tl":D=!1,A=!1;break;case"bl":D=!1,H=!1;break;case"br":q=!1,H=!1;break;case"tr":A=!1,q=!1}return te.jsx("div",{className:Wt("fill-handle",T),style:{position:"absolute",left:i-(u+(D?d:0))/2,top:c-(u+(A?d:0))/2,width:u,height:u,borderLeft:D?`${d}px ${a}`:void 0,borderTop:A?`${d}px ${a}`:void 0,borderRight:q?`${d}px ${a}`:void 0,borderBottom:H?`${d}px ${a}`:void 0,background:L,cursor:"crosshair",pointerEvents:"all",transitionDuration:"0ms",transitionTimingFunction:"linear",transitionDelay:"0",transitionProperty:"left, top",willChange:"left, top",...w},tabIndex:-1,...M})}));function Mn(t,o){if(typeof t=="function")return t(o);t&&(t.current=o)}Tn.displayName="FillHandle";var Uo=parseInt(l.version.split(".")[0],10)>=19?function(t){return o=>{const i=[];for(const c of t){const d=Mn(c,o),u=typeof d=="function";i.push(u?d:()=>Mn(c,null))}return()=>{for(const c of i)c()}}}:function(t){return o=>{for(const i of t)Mn(i,o)}};const To=n.ReactUtils.detectIt().supportsTouchEvents,fn=l.memo(l.forwardRef((t,o)=>{const{range:i,view:c,anchor:d,borderStroke:u="rgb(33, 115, 70)",background:a="white",borderWidth:s=1.5,size:w=22,style:T,className:L,selectionTouchPointerHandler:M,onTouchSelectStart:D,onTouchSelectEnd:A,currentTouchAnchor:q,scrollableElement:H,scrollableRoot:J,...be}=t;if(!To)return null;const G=n.useCallbackRef(D,[D]),P=n.useCallbackRef(A,[A]),{bounds:F,coordsPivot:se,key:U}=l.useMemo(()=>{if(!i||!c)return null;let Ce=null,Z=null;switch(d){case"tl":Ce={colIndex:i.colEnd,rowIndex:i.rowEnd},Z={colIndex:i.colStart,rowIndex:i.rowStart};break;case"br":Ce={colIndex:i.colStart,rowIndex:i.rowStart},Z={colIndex:i.colEnd,rowIndex:i.rowEnd};break;case"t":case"l":Ce={colIndex:i.colEnd,rowIndex:i.rowEnd};break;case"b":Ce={colIndex:i.colStart,rowIndex:i.rowStart};break;case"r":Ce={colIndex:i.colStart,rowIndex:i.rowEnd}}let z=c.getRangeCoordsBounds(Z?{rowStart:Z.rowIndex,colStart:Z.colIndex,rowEnd:Z.rowIndex,colEnd:Z.colIndex}:i);const X=c.getBounds(),Ct=c.getViewportSize(),ft=X.x,it=X.y,ot=Ct.width,de=Ct.height;switch(d){case"tl":break;case"br":z.x=z.x+z.width,z.y=z.y+z.height;break;case"t":z.x=ot/2-ft;break;case"b":z.x=ot/2-ft,z.y=z.y+z.height;break;case"l":z.y=de/2-it;break;case"r":z.x=z.x+z.width,z.y=de/2-it}const Pt=c.toClipBounds(z,0);return!Pt||Pt.width<=0||Pt.height<=0||z.x<0||z.y<0||z.x>ot||z.y>de?{bounds:null,coordsAnchor:null,coordsPivot:null,key:null}:{bounds:z,coordsAnchor:null,coordsPivot:Ce,key:"touchSelect-"+c.getAnchor()+"-"+d}},[i,c,d]),re=l.useRef(null),ze=l.useMemo(()=>{const Ce=Z=>d==="t"||d==="b"?{...Z,colIndex:void 0}:d==="l"||d==="r"?{...Z,rowIndex:void 0}:Z;return{processTouch:!0,consumeTouch:!0,onPointerDown:(Z,z)=>{const X=Ce(c.getCellCoordsFromClient(Z.clientX,Z.clientY));return re.current={coordsPivot:se},G?.(d),M.onSelectionPointerDown(Z,z,c,X,se,!1,!0)},onPointerMoveOrWait:(Z,z,X)=>{const Ct=Ce(c.getCellCoordsFromClient(Z.clientX,Z.clientY));return M.onSelectionPointerMoveOrWait(Z,z,X,c,Ct,re.current?.coordsPivot,!0,!0)},onPointerUp:(Z,z,X)=>(re.current=null,P?.(d),M.onPointerUp(Z,z,X))}},[M,i,c,d]),ke=n.useSynchronizedPointerHandler(ze),[Ae,{y:ae,x:me}]=oo(),B=l.useRef(null),{getPortalContainer:C,isFullscreen:Ke}=n.useFullscreenPortal(),[Ve,ee]=l.useState(null);return l.useEffect(()=>{const Ce=B.current?.getBoundingClientRect();if(!Ce||!F)return void ee(null);let Z=0,z=0,X=H;for(;X;)Z+=X.scrollLeft,z+=X.scrollTop,X=J&&X===J.parentElement?null:X.parentElement;ee(Jn.createPortal(te.jsx("div",{className:Wt("touch-select-handle",L),ref:o,style:{position:"absolute",left:Z+(Ce?.x??0)-(w+s)/2,top:z+(Ce?.y??0)-(w+s)/2,width:w,height:w,borderWidth:`${s}px`,border:u,borderRadius:"50%",background:a,boxShadow:`0 0 0 1.5px ${a}`,cursor:"grab",pointerEvents:"all",opacity:q?0:1,transitionDuration:"160ms",transitionProperty:"opacity",...T},tabIndex:-1,onPointerDown:ke,...be}),J??C(),U))},[ae,me,F?.x,F?.y,F?.width,F?.height,L,q,a,w,s,u,H,Ke]),F?te.jsxs(te.Fragment,{children:[te.jsx("div",{ref:Uo([Ae,B]),style:{position:"absolute",left:F.x,top:F.y,opacity:0}}),Ve]}):null}));fn.displayName="TouchSelectHandle";const It=-10,Lo=Object.freeze({rowStart:0,colStart:0,rowEnd:0,colEnd:0}),io=Object.freeze({colIndex:0,rowIndex:0}),Ln=Object.freeze([]),vt=t=>{if(t&&t.cell&&t.ranges&&t.rangeIndex>-1&&t.rangeIndex<=t.ranges.length)return t;const o={cell:null,ranges:t?.ranges??Ln};return o.rangeIndex=t?.rangeIndex??o.ranges.length-1,o.cell=t?.cell,!o.cell&&o.ranges.length>0&&(o.cell={rowIndex:o.ranges[o.rangeIndex].rowStart,colIndex:o.ranges[o.rangeIndex].colStart}),o.cell||(o.cell=io),r.CoordUtils.isEqualSelectionCoords(o,t)?t:o},hn=(t,o,i)=>{const c=t.getVisibleRangeCoords(),d=t.getScrollOrientation();!d.horizontal&&(o.colIndex>c.colEnd||o.colIndex<c.colStart)&&(o={...o,colIndex:o.colIndex>c.colEnd?c.colEnd+1:c.colEnd-1},t=i.current.getViewFromLocation(r.AnchorLocation.Center)),!d.vertical&&(o.rowIndex>c.rowEnd||o.rowIndex<c.rowStart)&&(o={...o,rowIndex:o.rowIndex>c.rowEnd?c.rowEnd+1:c.rowEnd-1},t=i.current.getViewFromLocation(r.AnchorLocation.Center)),t.scrollCellCoordsIntoView(o)},Oo=()=>!1;function gn(t,o){if(!t)throw new Error("Invariant failed")}const _n={"sheetxl-grid":"_sheetxl-grid_h9wwa_7"},zo=Object.freeze({top:0,left:0}),Ao=Object.freeze({bottom:-4,right:-4}),$o=Object.freeze({horizontal:!0,vertical:!0}),Gn=[r.AnchorLocation.TopLeft,r.AnchorLocation.Top,r.AnchorLocation.Left,r.AnchorLocation.Center],zt=3e3,Dn={},An=l.memo(l.forwardRef((t,o)=>{const{width:i,height:c,rowCount:d=1,columnCount:u=1,defaultRowHeight:a,defaultColumnWidth:s,getRowHeight:w,getColumnWidth:T,layout:L,onViewportScroll:M,onImmediateScroll:D,showGridLines:A=!0,gridLineColor:q="rgb(224, 224, 224)",gridLineRowsProps:H,gridLineColumnsProps:J,clipCells:be=!0,cursor:G,freezeLeft:P=0,freezeTop:F=0,freezeLeftProps:se,freezeTopProps:U,cellRenderer:re,onViewportChange:ze,onFirstRender:ke,overlayRenderer:Ae,overlayProps:ae,overlays:me,overlaysProps:B,allowOverlaysOverflow:C=!1,stageProps:Ke,stageWrapper:Ve=null,hiddenRowsAt:ee,hiddenColumnsAt:Ce,hiddenCellAt:Z,getVisibleCells:z,zoom:X=1,enableMouseWheel:Ct=!0,onWheelScroll:ft,getCellCoordsAsRangeCoords:it=r.CoordUtils.cellToRange,scrollPoint:ot=zo,style:de={},...Pt}=t;gn(re),gn(!t?.children);const O=n.useCallbackRef(D,[D]),E=n.useCallbackRef(ze,[ze]),Ee=n.useCallbackRef(M,[M]),ne=n.useCallbackRef(ft,[ft]),he=n.useCallbackRef(ke,[ke]),$e=l.useRef(null),Ze=l.useRef(null),pt=l.useRef(null),[Je,Tt]=l.useReducer(x=>x+1,0),[ct,b]=l.useState({left:ot?.left??0,top:ot?.top??0,horizontalScrollDirection:null,verticalScrollDirection:null}),oe=l.useRef(null),Be=l.useRef(ct),{top:rt,left:qe,verticalScrollDirection:jt,horizontalScrollDirection:$t}=ct,St=l.useRef(!1),Yt=eo({rowCount:d,columnCount:u,defaultRowHeight:a,defaultColumnWidth:s,getRowHeight:w,getColumnWidth:T}),At=l.useRef(null),Me=l.useMemo(()=>{const x=L||Yt;return At.current=null,{getColOffset:S=>x.getColOffset(S)*X,getColIndex:S=>x.getColIndex(S/X),getRowOffset:S=>x.getRowOffset(S)*X,getRowIndex:S=>x.getRowIndex(S/X)}},[Yt,L,X]),Ut=(x,S,R)=>{const v=(S?.left??0)+0,y=(S?.top??0)+0;return{getColOffset:$=>x.getColOffset($)-v,getColIndex:$=>x.getColIndex($+v),getRowOffset:$=>x.getRowOffset($)-y,getRowIndex:$=>x.getRowIndex($+y)}},at=n.useCallbackRef((x,S=!1)=>wn(x,S,Me.getRowOffset,S?0:d),[d,Me?.getRowOffset]),kt=n.useCallbackRef(ee??at,[ee]),en=n.useCallbackRef((x,S=!1)=>wn(x,S,Me.getColOffset,S?u:0),[u,Me?.getColOffset]),Ht=n.useCallbackRef(Ce??en,[Ce]),We=l.useMemo(()=>Math.min(i??800,Me.getColOffset(u)),[Me.getColOffset,u,i]),Fe=l.useMemo(()=>Math.min(c??600,Me.getRowOffset(d)),[Me.getRowOffset,d,c]),Ft=l.useCallback(x=>{r.CommonUtils.canUseDOM&&setTimeout(()=>{$e.current?.focus({preventScroll:!0,...x})},0)},[]),dt=l.useCallback(x=>$e.current?.contains(x)||Ze.current?.contains(x),[]);l.useEffect(()=>{St.current&&(oe.current&&oe.current.left!==Be.current?.left&&oe.current.top!==Be.current?.top||(oe.current=null,Ee?.({left:qe,top:rt})))},[qe,rt]);const Lt=n.useCallbackRef(()=>({top:rt,left:qe}),[rt,qe]),Re=l.useMemo(()=>{const x=[];let S=0,R=0;typeof F=="number"?S=F:(S=F.index??0,R=(F.scrollOffset??0)*X);const v=R,y=Me.getRowOffset(S),$=y-v;if(S>0){const He=Ut(Me,{top:R+Me.getRowOffset(0)}),ge=Me.getRowIndex(v),ye=Me.getRowIndex(y-1);let De;x[1]={minIndex:ge,maxIndex:ye,minCoord:0,maxCoord:S-1,minBounds:0,maxBounds:$,visibleIndices:()=>De||(De=Object.freeze(un(kt,ge,ye)),De),layout:He,maxVirtualBounds:y,scrollOffset:R,freezeOffset:R}}const ie=Math.max(0,Fe-$),N=Ut(Me,{top:rt+$}),le=N.getRowIndex(0),Y=N.getRowIndex(ie);let Ie;return x[0]={minIndex:le,maxIndex:Y,minCoord:S,maxCoord:d-1,minBounds:$,maxBounds:ie,visibleIndices:()=>Ie||(Ie=Object.freeze(un(kt,le,Y)),Ie),layout:N,maxVirtualBounds:Me.getRowOffset(d),scrollOffset:rt,freezeOffset:(S>0?Me.getRowOffset(S):0)-R},x},[Me.getRowIndex,Me.getRowOffset,kt,Fe,d,F,rt,X]),je=l.useMemo(()=>{const x=[];let S=0,R=0;typeof P=="number"?S=P:(S=P.index??0,R=(P.scrollOffset??0)*X);const v=R,y=Me.getColOffset(S),$=y-v;if(S>0){const He=Ut(Me,{left:R+Me.getColOffset(0)}),ge=Me.getColIndex(v),ye=Me.getColIndex(y-1);let De;x[1]={minIndex:ge,maxIndex:ye,minCoord:0,maxCoord:S-1,minBounds:0,maxBounds:$,visibleIndices:()=>De||(De=Object.freeze(un(Ht,ge,ye)),De),layout:He,maxVirtualBounds:y,scrollOffset:R,freezeOffset:R}}const ie=Math.max(0,We-$),N=Ut(Me,{left:qe+$}),le=N.getColIndex(0),Y=N.getColIndex(ie);let Ie;return x[0]={minIndex:le,maxIndex:Y,minCoord:S,maxCoord:u-1,minBounds:$,maxBounds:ie,visibleIndices:()=>Ie||(Ie=Object.freeze(un(Ht,le,Y)),Ie),layout:N,maxVirtualBounds:Me.getColOffset(u),scrollOffset:qe,freezeOffset:(S>0?Me.getColOffset(S):0)-R},x},[Me.getColIndex,Me.getColOffset,Ht,We,u,P,qe,X]),lt=l.useRef({}),gt=l.useRef([]),ve=l.useMemo(()=>{let x={};const S=(v,y,$,ie,N)=>{const le={vertical:ie?.vertical||!1,horizontal:ie?.horizontal||!1};if(v>=je.length||y>=Re.length)return null;const Y={rowStart:Re[y].minIndex,colStart:je[v].minIndex,rowEnd:Re[y].maxIndex,colEnd:je[v].maxIndex};if(Y.rowStart>Y.rowEnd||Y.colStart>Y.colEnd)return null;const Ie={getColIndex:xe=>je[v].layout.getColIndex(xe),getColOffset:xe=>je[v].layout.getColOffset(xe),getRowIndex:xe=>Re[y].layout.getRowIndex(xe),getRowOffset:xe=>Re[y].layout.getRowOffset(xe)},He=Object.freeze({left:N?.left??0,top:N?.top??0,right:N?.right??0,bottom:N?.bottom??0}),ge=Object.freeze({x:je[v].minBounds,y:Re[y].minBounds,width:je[v].maxBounds,height:Re[y].maxBounds}),ye=(xe,Ne)=>Xn(Ie,xe??Y,Ne),De={width:je[v].maxVirtualBounds,height:Re[y].maxVirtualBounds},we={left:je[v].scrollOffset,top:Re[y].scrollOffset},wt={left:je[v].freezeOffset,top:Re[y].freezeOffset},Qe={width:We,height:Fe};let Te=null,Se=null;const Xe=(wt.top+(ie.vertical?we.top:0))/X,xt=(wt.left+(ie.horizontal?we.left:0))/X;return{getStage:()=>$e.current??null,getVisibleRangeCoords:()=>Y,toClipBounds:(xe,Ne)=>{let Et,Le=0;return Ne===void 0||typeof Ne=="number"?(Et=ye(Y),Le=Ne):Et=Ne,((Ye,Ue,Pe=0)=>{if(Ye.x>Ue.width||Ye.y>Ue.height)return null;const st={left:Ye.x,top:Ye.y,bottom:Ye.height+Ye.y,right:Ye.width+Ye.x},et={left:Ue.x+Pe,top:Ue.y+Pe,bottom:Ue.height-2*Pe+Ue.y,right:Ue.width-2*Pe+Ue.x},ut={left:Math.max(st.left,et.left),top:Math.max(st.top,et.top),bottom:Math.min(st.bottom,et.bottom),right:Math.min(st.right,et.right)},Rt={x:ut.left,y:ut.top,width:ut.right-ut.left,height:ut.bottom-ut.top};return Rt.height<0||Rt.width<0?null:Rt})(xe??{x:0,y:0,width:ge.width,height:ge.height},Et,Le)},toViewBounds:xe=>xt===0&&Xe===0&&X===1?xe:{x:(xe.x-xt)*X,y:(xe.y-Xe)*X,width:xe.width*X,height:xe.height*X},toAbsoluteBounds:xe=>xt===0&&Xe===0&&X===1?xe:{x:xe.x/X+xt,y:xe.y/X+Xe,width:xe.width/X,height:xe.height/X},getRelativePointFromClient:(xe,Ne)=>{const Et=Nt(xe,Ne);return{x:Et.x-ge.x,y:Et.y-ge.y}},getLayout:()=>Ie,getCellCoordsAsRangeCoords:it,getVisibleColumns:()=>je[v].visibleIndices(),getVisibleRows:()=>Re[y].visibleIndices(),getVisibleColumnOffsets:()=>(Te||(Te=qn(je[v].layout,!0,je[v].visibleIndices(),Y.colStart,Y.colEnd)),Te),getVisibleRowOffsets:()=>(Se||(Se=qn(Re[y].layout,!1,Re[y].visibleIndices(),Y.rowStart,Y.rowEnd)),Se),getTotalRangeCoords:()=>({colStart:je[v].minCoord,colEnd:je[v].maxCoord,rowStart:Re[y].minCoord,rowEnd:Re[y].maxCoord}),getRangeCoordsBounds:ye,scrollCellCoordsIntoView:(xe,Ne)=>_t(xe,Ne,$),getCellCoordsFromClient:(xe,Ne,Et=!1)=>{const Le=Nt(xe,Ne);if(!Le)return null;const Ye=Ie.getColIndex(Le.x-ge.x),Ue={rowIndex:Ie.getRowIndex(Le.y-ge.y),colIndex:Ye};if(Et)return Ue;const Pe=it(Ue);return{rowIndex:Pe.rowStart,colIndex:Pe.colStart}},getZoom:()=>X,getAnchor:()=>$,getBounds:()=>ge,getInsets:()=>He,getTotalSize:()=>De,getViewportSize:()=>Qe,getScrollTopLeft:()=>we,getFreezeTopLeft:()=>wt,getScrollOrientation:()=>le,allViews:()=>x}};let R=x[r.AnchorLocation.Center]=S(0,0,r.AnchorLocation.Center,$o,Ao);return R&&(x[r.AnchorLocation.Center]=R),R=S(0,1,r.AnchorLocation.Top,{horizontal:!0}),R&&(x[r.AnchorLocation.Top]=R),R=S(1,0,r.AnchorLocation.Left,{vertical:!0}),R&&(x[r.AnchorLocation.Left]=R),R=S(1,1,r.AnchorLocation.TopLeft,{}),R&&(x[r.AnchorLocation.TopLeft]=R),lt.current=null,x=Object.freeze(x)},[Re,je,it]),Bt=Object.keys(ve),yt=je[0]?.maxVirtualBounds??0,_e=Re[0]?.maxVirtualBounds??0,mt=l.useMemo(()=>({left:je[1]?je[1].layout.getColOffset(je[1].maxIndex+1):0,top:Re[1]?Re[1].layout.getRowOffset(Re[1].maxIndex+1):0}),[ve]);l.useEffect(()=>{if(gt.current.length>0){for(let x=0;x<gt.current.length;x++)gt.current[x]();gt.current=[]}},[ve]);const bt=n.useCallbackRef(()=>({containerWidth:We,containerHeight:Fe,totalWidth:yt,totalHeight:_e}),[We,Fe,Me]);l.useEffect(()=>{!oe.current&&St.current&&E({top:rt,left:qe,width:We,height:Fe,totalWidth:yt,totalHeight:_e})},[rt,qe,yt,_e]),l.useEffect(()=>{St.current&&E({top:rt,left:qe,width:We,height:Fe,totalWidth:yt,totalHeight:_e})},[We,Fe]);const Nt=l.useCallback((x,S)=>{gn(typeof x=="number"&&typeof S=="number");const R=$e.current?.getBoundingClientRect();return R?{x:x-R.x,y:S-R.y}:{x,y:S}},[]),xn=n.useCallbackRef(x=>ve[x]||null,[ve]),pn=n.useCallbackRef((x,S)=>{if(Object.keys(ve).length===1)return ve[r.AnchorLocation.Center];const R=Nt(x,S);if(!R)return null;const{x:v,y}=R;let $=null;const ie=Gn,N=ie.length;for(let le=0;!$&&le<N;le++){const Y=ve[ie[le]];Y&&Po(v,y,Y.getBounds())&&($=Y)}return $||($=ve[r.AnchorLocation.Center]),$},[ve,it]),Ge=n.useCallbackRef(()=>ve[r.AnchorLocation.Center].getVisibleRangeCoords(),[ve[r.AnchorLocation.Center]]),Ot=l.useRef(null),mn=l.useCallback(()=>{Ot.current!==null&&r.CommonUtils.cancelTimeout(Ot.current),Ot.current=r.CommonUtils.requestTimeout(Cn,150)},[]),Cn=l.useCallback(()=>{Ot.current=null,b(x=>{const S={...x,verticalScrollDirection:null,horizontalScrollDirection:null};return Be.current=S,S})},[]),Kt=n.useCallbackRef(x=>{const S=x?.left??x?.[0],R=x?.top??x?.[1];let v=Be.current.left;S!==void 0&&S!==v&&(S>v?(v=Math.max(je?.[1]?.scrollOffset??0,S),v=Math.min(yt-We,v)):v=Math.max(je?.[1]?.scrollOffset??0,S));let y=Be.current.top;if(R!==void 0&&R!==y&&(R>y?(y=Math.max(Re?.[1]?.scrollOffset??0,R),y=Math.min(_e-Fe,y)):y=Math.max(Re?.[1]?.scrollOffset??0,R)),Be.current.left===v&&Be.current.top===y)return;let $=null,ie=null;Be.current.left>v?$=r.Direction.Left:Be.current.left<v&&($=r.Direction.Right),Be.current.top>y?ie=r.Direction.Up:Be.current.top<y&&(ie=r.Direction.Down),r.CommonUtils.throttle(()=>{b(N=>{const le={...N,left:v,top:y,horizontalScrollDirection:$,verticalScrollDirection:ie};return Be.current=le,le})},17)(),oe.current?.top===y&&oe.current?.left===v||(oe.current={left:v,top:y},O({left:v,top:y}),E({left:v,top:y,width:We,height:Fe,totalWidth:yt,totalHeight:_e})),mn()},[yt,_e,Re,je]);l.useEffect(()=>{oe.current||Kt({left:qe,top:rt})},[We,Fe]),l.useEffect(()=>{let x,S,R=!1;Be.current.left>yt&&(x=0,R=!0),Be.current.top>_e&&(S=0,R=!0),R&&Kt({left:x,top:S})},[yt,_e]),l.useLayoutEffect(()=>{oe.current={left:ot?.left,top:ot?.top},Kt(oe.current)},[ot?.left,ot?.top]);const tn=n.useCallbackRef(x=>{let S=x?.left??x?.[0],R=x?.top??x?.[1];if(S===void 0&&R===void 0)return;const v=x?.behavior??"auto";S!==void 0&&(S=Be.current.left+(S??0)),R!==void 0&&(R=Be.current.top+(R??0)),!(Be.current.left===S&&Be.current.top===R)&&Kt({left:S,top:R,behavior:v})},[]),nn=l.useCallback(x=>{let S=null;if(Object.keys(ve).length>1){const R=Gn,v=R.length;for(let y=0;!S&&y<v;y++){const $=ve[R[y]];$&&r.CoordUtils.isCellWithinRange(x,$.getVisibleRangeCoords())&&(S=$)}}return S||(S=ve[r.AnchorLocation.Center]),S},[ve]),_t=n.useCallbackRef((x,S={inline:"nearest",block:"nearest"},R=null)=>{const v={rowIndex:0,colIndex:0,...x};let y=null;if(R!==null){if(y=ve[R],y===null)return new Promise((Qe,Te)=>{Te("Invalid view")})}else y=nn(v);const $=it(v),ie=y.getLayout(),N=ie.getColOffset($.colStart),le=ie.getRowOffset($.rowStart),Y=ie.getColOffset($.colEnd+1),Ie=ie.getRowOffset($.rowEnd+1),He=y.getBounds(),ge=y.getTotalSize(),ye=y.getScrollTopLeft(),De=((Qe,Te,Se=!0)=>{Se=Se===!0?{block:"start",inline:"end"}:Se===!1?{block:"end",inline:"end"}:{block:"end",inline:"end",...Se};const Xe=jn(Se.inline,Qe.x,Qe.x+Qe.width,Te.left,Te.left+Te.width,Te.totalWidth),xt=jn(Se.block,Qe.y,Qe.y+Qe.height,Te.top,Te.top+Te.height,Te.totalHeight);if(Xe!==void 0||xt!==void 0)return{left:Xe,top:xt}})({x:N+ye.left,y:le+ye.top,width:Y-N,height:Ie-le},{left:ye.left,top:ye.top,width:He.width,height:He.height,totalWidth:ge.width,totalHeight:ge.height},S);if(!De)return Promise.resolve({...ye});const we={...De};we.left>qe?we.left+=20:we.left<qe&&(we.left-=0),we.top>rt?we.top+=20:we.top<rt&&(we.top-=0);const wt=y.getScrollOrientation();return wt.horizontal&&x.colIndex!==void 0||delete we.left,wt.vertical&&x.rowIndex!==void 0||delete we.top,new Promise((Qe,Te)=>{try{Kt(we),Qe(we)}catch(Se){Te(Se)}})},[yt,_e,ve,it]),qt=n.useCallbackRef(x=>{const S=x.shiftKey;x.preventDefault();const{deltaX:R,deltaY:v,deltaMode:y}=x;if(pt.current||ne?.(x)===!1)return;let ie=S?v:R,N=v;const le=S||Math.abs(ie)>Math.abs(N);y===1&&(N*=0),pt.current=window.requestAnimationFrame(()=>{pt.current=null,tn(le?{left:ie}:{top:N})})},[ne]),Gt=l.useCallback((x=null)=>{At.current=null,lt.current=null,Tt()},[]);l.useLayoutEffect(()=>{Gt()},[re]);const Vt=n.useImperativeElement(o,()=>({stage:$e.current,focus:Ft,contains:dt,invalidate:Gt,scrollTo:Kt,scrollBy:tn,scrollCellCoordsIntoView:_t,getScrollPosition:Lt,getDimensions:bt,getViewport:Ge,handleWheel:qt,rowCount:d,columnCount:u,getLayout:()=>Me,getRelativePointFromClient:Nt,getViewFromClient:pn,getViewFromCellCoords:nn,getViewFromLocation:xn,onViewChangeOnce:x=>{gt.current.push(x)}}),[d,u,ve]);l.useEffect(()=>(Ct&&Vt.current?.addEventListener("wheel",qt,{passive:!1}),St.current=!0,oe.current=null,()=>{Vt.current?.removeEventListener("wheel",qt)}),[Ct]);const Zt=l.useRef([]),Sn=(x,S)=>{!x||!Ae||(Zt.current=[],S.push(((R,v)=>{const y=`view:${R.getAnchor()}:overlay:${S.length}`,$=Ae?.({key:y,view:R},N=>Zt.current[v]=N);if(!$)return null;const ie=R.getBounds();return te.jsx("div",{style:{position:"absolute",left:"0px",top:"0px",width:`${ie.width}px`,height:`${ie.height}px`,overflow:"hidden"},children:$},`overlay-${R.getAnchor()}-${v}`)})(x,0)))},bn=l.useMemo(()=>{const x={},S=Object.keys(ve),R=S.length;for(let v=0;v<R;v++){const y=S[v],$=[];Sn(ve[y],$),x[y]={overlays:$}}return x},[Je,Ae,d,u,Re,je]),on=(x,S,R,v,y,$,ie)=>{if(!x)return;const N=x.getVisibleColumns(),le=x.getVisibleRows();if(N.length===0||le.length===0)return;let Y=null;if(z)Y=z(x);else{Y=[];const Le=le.length,Ye=N.length;for(let Ue=0;Ue<Le;Ue++){const Pe=le[Ue];for(let st=0;st<Ye;st++){const et={rowIndex:Pe,colIndex:N[st]};if(Z?.(et))continue;const ut={coords:et,range:it(et)};Y.push(ut)}}}const Ie=x.getVisibleColumnOffsets(),He=x.getVisibleRowOffsets(),ge=x.getScrollTopLeft(),ye=x.getFreezeTopLeft(),De=ge.left+ye.left,we=ge.top+ye.top,wt=Math.trunc(De/zt),Qe=Math.trunc(we/zt),Te={},Se=(Le,Ye,Ue,Pe,st)=>{const et=`view:${Le.getAnchor()}:cell:${Wn(Ye.rowIndex,Ye.colIndex)}`,ut=Pe.x,Rt=Pe.y,e=Math.trunc((De+ut)/zt)-wt,h=Math.trunc((we+Rt)/zt)-Qe;Te[h]||(Te[h]={});let g=Te[h][e];g||(g=Te[h][e]=[]);let f=$?.get(et);if(!f){const p=(De+ut)%zt,k=(we+Rt)%zt;f=re({key:et,coords:Ye,bounds:Pe,zoom:X,range:Ue,view:Le,value:st,style:{left:n.ReactUtils.boundPixel(p),top:n.ReactUtils.boundPixel(k),width:n.ReactUtils.boundPixel(Pe.width,!0),height:n.ReactUtils.boundPixel(Pe.height,!0)}})}ie?.set(et,f),g.push(f)},Xe=Y.length;for(let Le=0;Y&&Le<Xe;Le++){const Ye=Y[Le],Ue=Ye?.coords??Ye;if(!Ue)continue;const Pe=Ye?.range??{rowStart:Ue.rowIndex,colStart:Ue.colIndex,rowEnd:Ue.rowIndex,colEnd:Ue.colIndex},st=x.getVisibleRangeCoords();if(!r.CoordUtils.isRangesIntersect(Pe,st)&&!r.CoordUtils.isRangeWithinRange(Pe,st))continue;const et=Pe&&!r.CoordUtils.isSingleCell(Pe);if(!et&&Z?.(Ue))continue;const ut=Ue.rowIndex,Rt=Ue.colIndex,e=He[ut],h=Ie[Rt];let g=null;e&&h&&(g={x:h.offset,y:e.offset,width:h.size,height:e.size});const f=Wn(Pe.rowStart,Pe.colStart);if(et){if(y.has(f))continue;y.add(f),Pe.rowEnd-Pe.rowStart>0&&R.push(Pe),Pe.colEnd-Pe.colStart>0&&v.push(Pe)}if(et&&(g=Xn(x.getLayout(),Pe)),!g){console.warn("no bounds for cell",f);continue}const p=Ye?.value;Se(x,Ue,Pe,g,p)}const xt=De%zt,xe=we%zt,Ne=Object.keys(Te),Et=Ne.length;for(let Le=0;Le<Et;Le++){const Ye=Ne[Le],Ue=Te[Ye];if(!Ue)continue;const Pe=Object.keys(Ue),st=Pe.length;for(let et=0;et<st;et++){const ut=Pe[et],Rt=Ue[ut];if(!Rt)continue;const e=parseInt(Ye),h=parseInt(ut),g=e+Qe,f=h+wt,p=`view:${x.getAnchor()}:segment:${f}:${g}`;S.push(te.jsx("div",{className:"cell-container",style:{transform:`translate(${n.ReactUtils.boundPixel(h*zt-xt,!0)}px, ${n.ReactUtils.boundPixel(e*zt-xe,!0)}px)`,willChange:"transform"},children:Rt},p))}}},Mt=l.useMemo(()=>{const x=At.current,S=new Map,R={},v=Object.keys(ve),y=v.length;for(let $=0;$<y;$++){const ie=v[$],N=[],le=[],Y=[];on(ve[ie],Y,N,le,new Set,x,S),R[ie]={cells:Y,rangesH:N,rangesV:le}}return At.current=S,R},[Je,d,u,Re,je,A,de,be,Z,z,Ce,ee,it]),rn=(x,S,R,v,y)=>{if(!x)return;const $=x.getLayout();if(S){const ie=`view:${x.getAnchor()}:hl:`,N=x.getVisibleRows();if((N?N.length:0)===0)return;const le=y.sort(r.CoordUtils.rowFirstRangeComparator),Y=x.getVisibleRangeCoords(),Ie=0,He=Math.min(x.getBounds().width,$.getColOffset(Y.colEnd+1));let ge=[];for(let ye=0;ye<N.length&&N[ye]<=Y.rowEnd;ye++){const De=N[ye];if(De<Y.rowStart)continue;let we=!1;for(;le.length>0&&le[0].rowStart<=De;){const Se=le.shift();Se.rowEnd>De&&(ge.push(Se),we=!0)}we&&(ge=ge.sort(r.CoordUtils.columnFirstRangeComparator));const wt=$.getRowOffset(De+1);let Qe=Ie;const Te=ge.length;for(let Se=0;Se<Te+1;Se++){let Xe=Qe,xt=He;const xe=ge[Se];Se<Te&&(xt=Math.min(He,$.getColOffset(xe.colStart)),Qe=Math.min(He,$.getColOffset(xe.colEnd+1))),v.push(l.createElement("path",{d:`M ${n.ReactUtils.boundPixel(Xe)} ${n.ReactUtils.boundPixel(wt,!1,R)} L ${n.ReactUtils.boundPixel(xt)} ${n.ReactUtils.boundPixel(wt,!1,R)}`,stroke:q,strokeWidth:1,vectorEffect:"non-scaling-stroke",...H,key:ie+De+":"+Se}))}for(let Se=Te-1;Se>=0;Se--)ge[Se].rowEnd<=N[ye+1]&&ge.splice(Se,1)}}else{const ie=`view:${x.getAnchor()}:vl:`,N=x.getVisibleColumns(),le=N?N.length:0;if(le===0)return;const Y=y.sort(r.CoordUtils.columnFirstRangeComparator),Ie=x.getVisibleRangeCoords(),He=0,ge=Math.min(x.getBounds().height,$.getRowOffset(Ie.rowEnd+1));let ye=[];for(let De=0;De<le&&N[De]<=Ie.colEnd;De++){const we=N[De];if(we<Ie.colStart)continue;let wt=!1;for(;Y.length>0&&Y[0].colStart<=we;){const Xe=Y.shift();Xe.colEnd>we&&(ye.push(Xe),wt=!0)}wt&&(ye=ye.sort(r.CoordUtils.rowFirstRangeComparator));const Qe=$.getColOffset(we+1);let Te=He;const Se=ye.length;for(let Xe=0;Xe<Se+1;Xe++){let xt=Te,xe=ge;const Ne=ye[Xe];Xe<Se&&(xe=Math.min(ge,$.getRowOffset(Ne.rowStart)),Te=Math.min(ge,$.getRowOffset(Ne.rowEnd+1))),v.push(te.jsx("path",{d:`M ${n.ReactUtils.boundPixel(Qe,!1,R)} ${n.ReactUtils.boundPixel(xt)} L ${n.ReactUtils.boundPixel(Qe,!1,R)} ${n.ReactUtils.boundPixel(xe)}`,stroke:q,strokeWidth:1,vectorEffect:"non-scaling-stroke",...J},ie+we+":"+Xe))}for(let Xe=Se-1;Xe>=0;Xe--)ye[Xe].colEnd<=N[De+1]&&ye.splice(Xe,1)}}},Jt=x=>{if(!Mt)return;const S={},R=Bt.length;for(let v=0;v<R;v++){const y=Bt[v],$=ve[y],ie=[];rn($,x,0,ie,x?Mt[y].rangesH:Mt[y].rangesV);const N=$.getRangeCoordsBounds(),le=Math.ceil(N.width),Y=Math.ceil(N.height);S[y]=te.jsx("svg",{width:`${le}`,height:`${Y}`,viewBox:`0 0 ${le} ${Y}`,preserveAspectRatio:"none",shapeRendering:"crispEdges",style:{position:"absolute"},children:ie})}return S},ln=l.useMemo(()=>A===!0||A?.horizontal===!0?Jt(!0):null,[Je,A,Re,F,P,q,H,d,u,We,yt,ve,Mt]),cn=l.useMemo(()=>A===!0||A?.vertical===!0?Jt(!1):null,[Je,A,je,F,P,q,J,d,u,Fe,_e,ve,Mt]),vn=l.useMemo(()=>mt.left===0?null:te.jsx(Un,{linePoints:[0,0,0,Fe+1],bounds:{x:mt.left,y:0,width:1,height:Fe+1},...se}),[Je,mt.left,Fe,se]),yn=l.useMemo(()=>mt.top===0?null:te.jsx(Un,{linePoints:[0,0,We+1,0],bounds:{x:0,y:mt.top,width:We+1,height:1},...U}),[Je,mt.top,We,U]),Qt=l.useMemo(()=>{const x=[],S=v=>{if(!v||!ve[v])return;const y=ve[v].getBounds();return te.jsxs("div",{style:{position:"absolute",pointerEvents:"none",left:y.x,top:y.y,width:y.width,height:y.height,clip:`rect(0, ${y.width+1}px, ${y.height+1}px, 0)`},className:`view view-${v}`,children:[ln?.[v],cn?.[v],Mt?.[v].cells]},`view:${v}`)},R=Bt.length;for(let v=0;v<R;v++)x.push(S(Bt[v]));return te.jsx(te.Fragment,{children:x})},[ve,ln,cn,Mt]),En=l.useMemo(()=>{if(!o)return;const x=(N,le,Y,Ie)=>{if(!Ie||Ie.length===0)return;const He=[],ge=Ie.length;for(let ye=0;ye<ge;ye++){const De=Ie[ye];let we=N?.get(De);we!==Dn&&(we=De(Y)??Dn),le.set(De,we),we&&we!==Dn&&He.push(we)}return He},S=(N,le,Y)=>{if(!Y)return;const Ie=Y.getBounds(),He=Y.getInsets(),ge=Y.getAnchor();return te.jsxs("div",{className:Wt("view",`view-${ge}`,_n.view),style:{position:"absolute",pointerEvents:"none",left:Ie.x-He.left,top:Ie.y-He.top,width:Ie.width-(He.left+He.right),height:Ie.height-(He.top+He.bottom),clipPath:C?"inset(-2px)":"inset(0px)"},children:[x(N,le,Y,me),bn?.[ge].overlays]},`view:${ge}`)},R=lt.current,v={},y=[],$=Object.keys(ve),ie=$.length;for(let N=0;N<ie;N++){const le=$[N],Y=R?.[le],Ie=v[le]=new Map;y.push(S(Y,Ie,ve[le]))}return lt.current=v,y},[Je,ve,C,me]),Rn=l.useMemo(()=>{const{style:x,...S}=Ke??{};return te.jsx("div",{style:{width:We,height:Fe,...x},className:"sheetxl-stage",tabIndex:0,ref:$e,...S,...Pt,children:Ve?Ve(Qt):Qt})},[We,Fe,Qt,Ke,Ve]),sn=l.useRef(!1);return l.useEffect(()=>{!sn.current&&Mt&&(sn.current=!0,he?.(Vt.current))},[Mt]),te.jsxs("div",{className:Wt("sheetxl-grid",_n["sheetxl-grid"]),style:{overflow:"visible",cursor:G,maxWidth:We,maxHeight:Fe,width:We,height:Fe,...de},ref:Vt,children:[Rn,te.jsxs("div",{className:Wt("sheetxl-overlays"),ref:Ze,...B,children:[En,vn,yn]})]})}));An.displayName="BaseGrid";const $n=l.memo(l.forwardRef((t,o)=>{const{width:i,height:c,style:d={},className:u,...a}=t,[s,{width:w,height:T}]=no(),L=i??w,M=c??T;return te.jsx("div",{className:u,style:{...d},children:te.jsx("div",{style:{position:"relative",top:"0px",left:"0px",width:"100%",height:"100%",maxWidth:"100%",maxHeight:"100%",boxSizing:"content-box"},ref:s,children:te.jsx(An,{ref:o,width:L,height:M,...a})})})}));$n.displayName="Grid";const co=l.memo(l.forwardRef((t,o)=>{const{showVerticalScrollbar:i,showHorizontalScrollbar:c,createHorizontalScrollbar:d,createVerticalScrollbar:u,createScrollCorner:a,viewport:s,onScrollViewport:w,style:T={},className:L,onScroll:M,...D}=t,[A,q]=l.useState(null),H=l.useRef(null),J=l.useRef(null);gn(!s),l.useImperativeHandle(o,()=>J.current&&H.current?Object.assign(J.current,H.current):null);const be=l.useCallback(G=>{J.current?.scrollTo(G),w?.(G)},[]);return te.jsx(n.ScrollPane,{className:L,style:T,ref:H,showVerticalScrollbar:i,showHorizontalScrollbar:c,createHorizontalScrollbar:d,createVerticalScrollbar:u,createScrollCorner:a,viewport:A,onScrollViewport:be,children:te.jsx($n,{style:{width:"100%",height:"100%"},...D,onViewportChange:G=>q(G),ref:J})})}));co.displayName="ScrollableGrid";const Zn=()=>!1,so=l.memo(t=>{const{index:o,value:i,zoom:c,zoomScale:d=100,headerText:u=me=>`${me}`,headerStyle:a,headerStyleSelect:s=a,headerStyleSelectAll:w=s,headerStyleHover:T=w,verticalPadding:L=0,horizontalPadding:M=0,isSelected:D=Zn,isSelectedAll:A=Zn,coords:q,bounds:H,range:J,orientation:be,view:G,style:P,...F}=t,se=d/100,U=l.useRef(null),[re,ze]=l.useState(!1),ke=D?.(o)||!1,Ae=A?.(o)?w:ke?s:a;let ae=Ae;if(re){let me=T;typeof T=="function"&&(me=T(Ae)),ae=r.CommonUtils.mergeContentful(Ae,me)}return te.jsx("div",{ref:U,style:{background:ae.fill,color:ae.text?.fill,fontFamily:ae.text?.fontFamily??a.text?.fontFamily,fontSize:96*(ae.text?.fontSize??11)/72*se,fontStyle:ae.text?.fontStyle,fontWeight:ae.text?.fontWeight,lineHeight:1.2,display:"flex",justifyContent:"center",alignItems:"end",pointerEvents:"auto",paddingBottom:`${se}px`,...P,left:P.left-(be===r.RangeOrientation.Column?1:0),top:P.top-(be===r.RangeOrientation.Row?1:0),width:P.width+1,height:P.height+1,overflow:"hidden"},...F,onMouseMove:me=>{n.ReactUtils.detectIt().primaryInput!=="touch"&&me.buttons===0&&ze(!0)},onMouseOut:me=>{ze(!1)},children:u(o)})});so.displayName="HeaderRenderer";const ao="ew-resize",uo="ns-resize",ho=l.memo(l.forwardRef((t,o)=>{const{orientation:i,view:c,index:d,className:u,style:a,disabled:s=!1,disabledResize:w=!1,isNextHidden:T,isHidden:L,isSelected:M,isSelectedAll:D,showTouchDivider:A,headerStyle:q,headerStyleSelect:H,headerStyleSelectAll:J,headerStyleHover:be,bounds:G,onPointerDown:P,onAutoFit:F,...se}=t,U=i===r.RangeOrientation.Column;let re=q;M&&H&&(re=H),D&&J&&(re=J);const ze=n.ReactUtils.detectIt().primaryInput==="touch";let ke=U?14:8,Ae=ke/2,ae=0;T&&(ae=-2),L&&(ae=2),L&&(ke=ke/2+ae,Ae=2*ae);let me=re.dividerStrokeFill??re.strokeFill;return!(M||D)&&ae===0&&(me=`linear-gradient(${U?180:90}deg, ${re.fill}, ${me} 55%, ${me} 100%)`),te.jsxs("div",{className:Wt("header-divider",{disabled:s},u,`index-${d}`),ref:o,onPointerDown:ze?void 0:P,onDoubleClick:ze?void 0:()=>F?.(),style:{top:(U?0:-ke/2+(ae-1))+"px",left:(U?-ke/2+(ae-1):0)+"px",width:U?ke:"calc(100% + 1px)",height:U?"calc(100% + 1px)":ke,position:"absolute",overflow:"visible",pointerEvents:"all",cursor:s||w||ze?void 0:U?ao:uo,...a},...se,children:[te.jsx("div",{style:{position:"relative",top:`${U?0:Ae}px`,left:`${U?Ae:0}px`,width:U?1:"100%",height:U?"100%":1,background:me},onDoubleClick:()=>F?.()}),A&&ze?te.jsx("div",{style:{position:"absolute",cursor:"grab",zIndex:1,borderRadius:"4px",right:U?"-6px":"2px",bottom:U?"2px":"-9px",height:"24px",width:U?"24px":"18px",maxHeight:U?"calc(100% - 4px)":void 0,maxWidth:U?void 0:"calc(100% - 4px)",background:re.fill,border:`${J.edgeStrokeFill} solid 1px`,boxShadow:`0.5px 0.5px 0px 0px ${q.text.fill}`,display:"flex",alignItems:"center",justifyContent:"center"},onPointerDown:P,children:te.jsx("div",{style:{width:"6.4px",height:"12px",backgroundImage:`url("data:image/svg+xml,%3Csvg width='6.4' height='12' viewBox='0 0 9.6 16' version='1.1' fill='${encodeURIComponent(H.text.fill)}' xmlns='http://www.w3.org/2000/svg' xmlns:svg='http://www.w3.org/2000/svg'%3E%3Cpath d='M 9.60008,14.40009 C 9.60008,15.28374 8.88368,16 8.00003,16 7.11639,16 6.40012,15.28374 6.40012,14.40009 c 0,-0.88365 0.71627,-1.60005 1.59991,-1.60005 0.88365,0 1.60005,0.7164 1.60005,1.60005 m 0,-6.40012 c 0,0.88364 -0.7164,1.60004 -1.60005,1.60004 -0.88364,0 -1.59991,-0.7164 -1.59991,-1.60004 0,-0.88365 0.71627,-1.60005 1.59991,-1.60005 0.88365,0 1.60005,0.7164 1.60005,1.60005 m 0,-6.40006 c 0,0.88365 -0.7164,1.60005 -1.60005,1.60005 -0.88364,0 -1.59991,-0.7164 -1.59991,-1.60005 C 6.40012,0.71626 7.11639,0 8.00003,0 8.88368,0 9.60008,0.71626 9.60008,1.59991 M 3.19996,14.40009 C 3.19996,15.28374 2.48369,16 1.60005,16 0.7164,16 0,15.28374 0,14.40009 c 0,-0.88365 0.7164,-1.60005 1.60005,-1.60005 0.88364,0 1.59991,0.7164 1.59991,1.60005 m 0,-6.40012 c 0,0.88364 -0.71627,1.60004 -1.59991,1.60004 C 0.7164,9.60001 0,8.88361 0,7.99997 0,7.11632 0.7164,6.39992 1.60005,6.39992 c 0.88364,0 1.59991,0.7164 1.59991,1.60005 m 0,-6.40006 c 0,0.88365 -0.71627,1.60005 -1.59991,1.60005 C 0.7164,3.19996 0,2.48356 0,1.59991 0,0.71626 0.7164,0 1.60005,0 2.48369,0 3.19996,0.71626 3.19996,1.59991' /%3E%3C/svg%3E%0A")`,backgroundRepeat:"no-repeat",backgroundPosition:"center",transform:U?void 0:"rotate(90deg)"}})}):null]})})),Bo=(t,o)=>te.jsx(ho,{...t,ref:o}),Ko=l.memo(l.forwardRef((t,o)=>{const{orientation:i,view:c,index:d,disabled:u=!1,disabledResize:a=!1,resizeThreshold:s=1,dividerRenderer:w=Bo,onDividerMouseDown:T,onDividerResizeStart:L,onDividerResize:M,onDividerResizeEnd:D,onDividerMouseUp:A,onDividerAutoFit:q,onPointerDown:H,...J}=t,be=n.useCallbackRef(H,[H]),G=n.useCallbackRef(q,[q]),P=i===r.RangeOrientation.Column;let F=P?c.getVisibleColumns():c.getVisibleRows(),se=null;F.length>0&&(P?se=c.getRangeCoordsBounds({rowStart:0,rowEnd:0,colStart:F[0],colEnd:F[F.length-1]}):c.getRangeCoordsBounds({rowStart:F[0],rowEnd:F[F.length-1],colStart:0,colEnd:0}),se=c.toClipBounds(se,It));const U=l.useRef(null),[re,ze]=l.useState(null),ke=(ee,Ce)=>P?ee.clientX-Ce.clientX:ee.clientY-Ce.clientY,Ae=c.getLayout(),ae=P?Ae.getColOffset(d+1):Ae.getRowOffset(d+1),me=n.useSynchronizedPointerHandler({processTouch:!0,onPointerDown:ee=>{if(be?.(ee),!u&&!a){const Ce=P?Ae.getColOffset(d):Ae.getRowOffset(d),Z=ae-Ce;U.current={isResizing:!1,startSize:Z,index:d,view:c,orientation:i,onDividerMouseDown:T,onDividerResizeStart:L,onDividerResize:M,onDividerResizeEnd:D,onDividerMouseUp:A},ze(U.current),T?.(d,Z)}ee.stopPropagation(),ee.preventDefault()},onPointerUp:(ee,Ce,Z)=>{if(!U.current)return;U.current.isResizing&&U.current.onDividerResizeEnd?.(U.current.index,Math.max(0,U.current.startSize+ke(ee,Z)),U.current.startSize);const z=U.current;U.current=null,ze(U.current),z.onDividerMouseUp?.(z.index)},onPointerMoveOrWait:(ee,Ce,Z)=>{if(!U.current)return;const z=ke(ee,Z);U.current.isResizing?U.current.onDividerResize?.(U.current.index,Math.max(0,U.current.startSize+z),U.current.startSize):Math.abs(z)>Math.max(1,s)&&(U.current={...U.current,isResizing:!0},ze(U.current),U.current.onDividerResizeStart?.(U.current.index,Math.max(0,U.current.startSize+z))),ee.stopPropagation(),ee.preventDefault()}}),B=n.useCallbackRef(()=>{G?.(d)},[d]);if(!se)return;const C=w({bounds:se,orientation:i,view:c,index:d,disabled:u,disabledResize:a,onAutoFit:B,onPointerDown:me,...J},o);if(!C)return;const{getPortalContainer:Ke}=n.useFullscreenPortal();let Ve=null;return re&&re.isResizing&&re.index===d&&(Ve=Jn.createPortal(te.jsx("div",{style:{position:"absolute",cursor:P?ao:uo,left:0,top:0,width:"100%",height:"100%"}}),Ke(),"divider:"+d)),te.jsxs(te.Fragment,{children:[Ve,te.jsx("div",{className:Wt("header-divider-anchor"),style:{position:"absolute",pointerEvents:"auto",top:`${P?se.y:ae}px`,left:`${P?ae:se.x}px`,width:(P?0:se.width-1)+"px",height:(P?se.height-1:0)+"px",display:"flex"},tabIndex:-1,children:C})]})}));class Fo{naturalDimensions(o,i={}){const c=document.createElement("div");let d=i?.lineHeight??"1";!i?.lineHeight&&i.paintableText?.fontSize&&(d=Math.ceil(1.2*i.paintableText.fontSize)+"px");const u=document.createElement("div");u.style.visibility="hidden",u.style.position="absolute",u.style.textRendering="geometricprecision",u.style.display="inline-grid",u.style.overflowWrap="break-word",u.style.maxWidth=i.maxWidth?i.maxWidth+"px":"100%",u.style.lineHeight=d,u.style.letterSpacing=(i.paintableText?.letterSpacing??0)+"px",u.style.fontSize=i.paintableText?.fontSize?i.paintableText.fontSize+"px":"unset",u.style.fontFamily=i.paintableText?.fontSize?i.paintableText.fontFamily:"unset",u.style.fontWeight=i.paintableText?.fontWeight?""+i.paintableText.fontWeight:"400",u.style.fontStyle=i.paintableText?.fontStyle?i.paintableText.fontStyle:"normal",u.style.whiteSpace=i.paintableText?.wrap==="wrap"?"break-spaces":"pre",c.appendChild(u);const a=o.split(`
12
- `);for(let w=0;w<a.length;w++){let T=document.createElement("span");u.appendChild(T),T.textContent=a[w]}a.length!==0&&a[a.length-1].length!==0||u.appendChild(document.createElement("br")),document.body.appendChild(u);let s=u.getBoundingClientRect();return u.remove(),{width:s.width,height:s.height,maxLineHeight:1.2*(i.paintableText?.fontSize||1056/72)}}}const fo=(t=void 0)=>Object.freeze({clean:t,dirty:void 0,editMode:!1}),Vo=fo(),Wo=l.memo(l.forwardRef((t,o)=>{const{editState:i=Vo,defaultTextStyle:c,onStartEdit:d,onChangeEdit:u,onSubmitEdit:a,onCancelEdit:s,onDoneEdit:w,containerBounds:T,setNaturalSize:L,onNavigate:M,textProperties:D,style:A,autoFocus:q,...H}=t,J=l.useRef(null),{width:be=0}=T??{},[G,P]=l.useState(()=>i);l.useEffect(()=>{P(i)},[i]);const F=D?.align||"left",se=D?.vAlign||"middle",U=D?.fill||"#040404",re=D?.wrap||"wrap",ze=D?.fontFamily||"Calibri",ke=D?.fontSize||11,Ae=D?.fontWeight||400,ae=D?.fontStyle||"normal",me=G.dirty??G.clean??"";let B=2;const C=96*ke/72,Ke=1.2*C;se==="right"&&(B+=1);const Ve=l.useMemo(()=>new Fo().naturalDimensions(me,{maxWidth:re==="wrap"?be-B:void 0,lineHeight:`${Ke}px`,paintableText:{fontStyle:ae,wrap:re,letterSpacing:-.25}}),[me,re,B,C,ze,Ae,ae,L,be]),ee=l.useCallback(()=>Ve.maxLineHeight?Ve.maxLineHeight+"px":"1.2",[Ve]),[Ce,Z]=l.useState(ee);l.useLayoutEffect(()=>{Z(ee())},[T,Ve]),l.useLayoutEffect(()=>{L?.({width:re==="wrap"?void 0:Ve.width+B,height:Ve.height})},[Ve,L]);const z=n.useCallbackRef(u,[u]),X=n.useCallbackRef(E=>{if(G.dirty===E)return;const Ee={...G};Ee.dirty=E,J.current,P(Ee),z?.(Ee)},[G]),Ct=n.useCallbackRef(E=>{if(G.editMode===E)return;const Ee={...G};Ee.editMode=E,P(Ee),z?.(Ee)},[G]),ft=n.useCallbackRef(()=>{try{return a?.(G),w?.(),!0}catch{return!1}},[a,G]),it=n.useCallbackRef(()=>{P(i),s?.(),w?.()},[s,i]),ot=n.useCallbackRef(E=>{if(!J.current)return;if(E.isDefaultPrevented(),!(E.isTrusted||E.nativeEvent.ctrlKey||E.nativeEvent.metaKey||E.nativeEvent.altKey||E.nativeEvent.isComposing)&&On.indexOf(E.nativeEvent.key)!==-1){const ne={...G};return ne.dirty=E.nativeEvent.key==="Backspace"?"":(ne.dirty??"")+E.key,P(ne),z?.(ne),void E.preventDefault()}const Ee=E.nativeEvent.shiftKey;if(E.which===n.KeyCodes.Escape)return E.preventDefault(),void it();if(E.which===n.KeyCodes.F2)return Ct(!0),void E.preventDefault();if(E.which===n.KeyCodes.Enter&&(E.preventDefault(),ft()&&M?.(Ee?r.Direction.Up:r.Direction.Down)),E.which===n.KeyCodes.Tab)return E.preventDefault(),void(ft()&&M?.(Ee?r.Direction.Left:r.Direction.Right));if(!G.editMode){let ne=null;switch(E.which){case n.KeyCodes.Left:ne=r.Direction.Left;break;case n.KeyCodes.Right:ne=r.Direction.Right;break;case n.KeyCodes.Up:ne=r.Direction.Up;break;case n.KeyCodes.Down:ne=r.Direction.Down}if(ne)return void ft()}},[G,M]),[de,Pt]=l.useState(!q);l.useEffect(()=>{Pt(!1)},[]);const O=n.useImperativeElement(o,()=>({startEdit(E){let Ee=E?.initialSelection;if(!Ee){const he=J.current.value.length??0;Ee={start:he,end:he,direction:"forward"}}J.current?.setSelectionRange(Ee.start,Ee.end,Ee.direction);const ne={...i,editMode:E?.editMode??!1};E?.text!==void 0&&(ne.dirty=E.text),ne.editMode===i.editMode&&ne.dirty===i.dirty||(P(ne),z?.(ne))},submitEdit:()=>ft(),cancelEdit(){it()},autoFocus(){J.current?.focus()},getLineHeight:()=>Ve?.maxLineHeight??Ke,dispatchEvent:E=>J.current.dispatchEvent(E)}),[i,d]);return te.jsx("div",{ref:O,...H,style:{background:"transparent",display:"flex",flexGrow:1,alignSelf:"center",height:Ve.height,maxWidth:"100%",maxHeight:"100%",...A},children:te.jsx("textarea",{spellCheck:"false",ref:J,value:me,autoFocus:!1,disabled:de,name:"cell-editor",autoComplete:"off",autoCapitalize:"off",style:{flex:"1 1 100%",position:"relative",fontSize:`${C}px`,fontFamily:`${ze}`,fontWeight:`${Ae}`,fontStyle:`${ae}`,padding:"0px",marginRight:F==="right"?"3px":"0px",marginLeft:F==="left"?"2px":"0px",lineHeight:Ce,height:Ve.height,textRendering:"geometricPrecision",letterSpacing:"-0.25px",boxSizing:"border-box",borderWidth:0,outline:"none",resize:"none",overflow:"hidden",verticalAlign:"baseline",textAlign:F,background:"transparent",color:U,marginBottom:"0px",userSelect:"text",maxHeight:"100%",whiteSpace:re==="wrap"?"break-spaces":"pre",wordWrap:"break-word"},onChange:E=>{X(E.target.value)},onDoubleClick:E=>{E.isTrusted},onMouseDown:E=>{Ct(!0)},onKeyDown:ot})})})),jo=l.memo(t=>{const{value:o,view:i,bounds:c,range:d,zoom:u,children:a,style:s,...w}=t,T=s?.fontSize||1056/72;return te.jsx("div",{style:{padding:"2px 4px",fontFamily:"Calibri",letterSpacing:-.25,lineHeight:1.2,fontSize:T,...s},...w,children:o})});exports.BaseGrid=An,exports.DefaultCellEditor=Wo,exports.DefaultCellRenderer=jo,exports.DefaultHeaderDivider=ho,exports.FillHandle=Tn,exports.Grid=$n,exports.HeaderDivider=Ko,exports.HeaderRenderer=so,exports.RESET_SCROLL_EVENTS_DEBOUNCE_INTERVAL=150,exports.SELECTION_CLIP_INSETS=It,exports.STANDARD_KEY_CHARS=On,exports.SVGLine=Un,exports.SVGRect=ro,exports.ScrollableGrid=co,exports.Selection=zn,exports.TouchSelectHandle=fn,exports.defaultSelectionRenderer=Yn,exports.getDefaultStringEditState=fo,exports.safeSelectionCoords=vt,exports.useAnimatedMeasure=oo,exports.useCellLayout=eo,exports.useHeaderSelection=({gridRef:t,gridMainRef:o,orientation:i=r.RangeOrientation.Row,headerCount:c,selectionPolicy:d="multiple",newSelectionMode:u="clear",alwaysScrollToActiveCoords:a=!0,onDragStart:s,onDragEnd:w,pointerDownInterceptor:T,pointerMoveInterceptor:L,onPointerUp:M,newSelection:D,modifySelection:A,appendSelection:q,clearSelections:H})=>{const J=c??((i===r.RangeOrientation.Row?t.current?.rowCount:t.current?.columnCount)||0),be=l.useRef(null),G=l.useRef(null),P=l.useRef(!1),F=l.useRef(null),se=l.useCallback(B=>i===r.RangeOrientation.Column?{rowIndex:0,colIndex:B.colIndex}:{rowIndex:B.rowIndex,colIndex:0},[i]),U=l.useCallback(B=>i===r.RangeOrientation.Column?{rowIndex:o.current?o.current.rowCount-1:0,colIndex:B.colIndex}:{rowIndex:B.rowIndex,colIndex:o.current?o.current.columnCount-1:0},[i]),re=B=>{G.current=U(B),A(G.current,be.current)},ze=l.useCallback((B,C)=>{if(!t.current)return;const Ke=t.current.getViewFromClient(B,C)?.getCellCoordsFromClient(B,C);return Ke?(i===r.RangeOrientation.Column?Ke.rowIndex=o.current.getViewport().rowStart:Ke.colIndex=o.current.getViewport().colStart,Ke):void 0},[]),ke=l.useCallback((B,C=!1)=>{let Ke=B;return C||(Ke={...B},i===r.RangeOrientation.Row?delete Ke.colIndex:delete Ke.rowIndex),o.current?.scrollCellCoordsIntoView(Ke)},[i]),Ae=n.useCallbackRef(w,[w]),ae=n.useCallbackRef(s,[s]),me=l.useMemo(()=>({onPointerDown:B=>{if(!t||!t.current||B.nativeEvent.defaultPrevented)return;const C=ze(B.nativeEvent.clientX,B.nativeEvent.clientY);if(!C)return;B.nativeEvent.which,n.MouseButtonCodes.Right;const Ke=B.nativeEvent.shiftKey,Ve=B.nativeEvent.ctrlKey||B.nativeEvent.metaKey;if(T?.(B,C)===!1)return;ae?.(),P.current=!0;const ee=o.current?.getViewFromClient(B.nativeEvent.clientX,B.nativeEvent.clientY),Ce=((Z,z)=>i===r.RangeOrientation.Column?{...Z,rowIndex:z.rowStart}:{...Z,colIndex:z.colStart})(C,ee.getVisibleRangeCoords());if(Ke)re(C);else{if(Ve)return((Z,z=Z,X)=>{be.current=se(Z),G.current=U(z),q(be.current,G.current,X)})(C,C,Ce),void(a&&ke(Ce,!0));((Z,z=Z,X)=>{be.current=se(Z),G.current=U(z),D(be.current,G.current,X)})(C,C,Ce),re(C),a&&ke(Ce,!0)}},onPointerMoveOrWait:r.CommonUtils.throttle(B=>{if(!P.current||!t?.current)return;const C=ze(B.clientX,B.clientY);if(C&&L?.(B,C)!==!1){if(r.CoordUtils.isEqualCells(F.current,C))return H();re(C),ke(C)}},60),onPointerUp:B=>{P.current=!1,Ae?.(),M?.(B)},processTouch:!0,consumeTouch:!0}),[d,a,J,u,H,T,M]);return{onPointerDown:n.useCallbackRef(n.useSynchronizedPointerHandler(me),[]),getCellCoordsFromClient:ze}},exports.useKeyboardEditorOverlay=t=>{const{view:o,canEdit:i=po,getCellEditor:c,onBeforeStartEdit:d,onStartEdit:u,onSubmitEdit:a,onCancelEdit:s,onDoneEdit:w,isEditorStartKeyEvent:T=mo,isEditorStartPointerEvent:L=Co,containerProps:M,borderStrokeFill:D,borderStrokeWidth:A=2,getRangeCoords:q=null,activeCoords:H,alignment:J=n.HorizontalAlignment.Left}=t,[be,G]=l.useState(!1),[P,F]=l.useState(void 0),se=n.useCallbackRef((O,E,Ee,ne,he,$e)=>{if(!E)return null;const Ze=he?.(E,O),pt=O.getRangeCoordsBounds(Ze),Je=O.toClipBounds(pt),Tt=pt,ct=O.getZoom();if(!Je)return null;Ee&&(Ee*=ct),ne&&(ne*=ct);let b=Tt,oe=!1;if(Ee!==void 0){let qe={...Ze},jt=0;for(;!oe&&b.width<=Ee&&jt<20;){jt++,jt>19&&console.warn("max width reached");const $t=O.getTotalRangeCoords(),St=O.getLayout();$e===n.HorizontalAlignment.Left?qe.colEnd+1<$t.colEnd?qe.colEnd=St.getColIndex(b.x+Ee):oe=!0:$e===n.HorizontalAlignment.Right?qe.colStart-1>=0?qe.colStart=St.getColIndex(b.x-(Ee-b.width)):oe=!0:$e===n.HorizontalAlignment.Center&&qe.colEnd+1<$t.colEnd&&qe.colStart-1>=0?(qe.colStart=St.getColIndex(b.x-(Ee-b.width)/2),qe.colEnd=St.getColIndex(b.x+b.width+(Ee-b.width)/2)):oe=!0,oe||(b=O.getRangeCoordsBounds(qe))}}b.height=Tt.height,ne!==void 0&&(b.height=Math.max(ne+1,Tt.height));const{width:Be,height:rt}=O.getViewportSize();return{x:b.x??0,y:b.y??0,height:Math.min(rt-b.y,b.height)+1,width:Math.min(Be-b.x,b.width)+1}},[J]),U=n.useCallbackRef(i,[i]),re=l.useCallback(()=>{o?.getStage()?.focus()},[o]),ze=l.useRef(null),ke=n.useCallbackRef(O=>{d?.(O),z(),G(!0),ze.current=null},[d]),Ae=n.useCallbackRef(O=>{u?.(O.coords)},[u]),ae=n.useCallbackRef(O=>{O.isSubmitted||O.isCancelled||(C.current.isEditorClosed=!0,re(),O.isCancelled=!0,s?.(O.coords),z())},[s]),me=n.useCallbackRef(O=>{if(O.isSubmitted||O.isCancelled)return!1;try{return ze.current=O.coords,O.isEditorClosing=!0,O.isSubmitted=!0,O.isEditorSubmitted||(O.isEditorSubmitted=!0,O.editorRefs[0]?.submitEdit?.()),O.coords,a?.(O.coords),O.isEditorClosed=!0,re(),z(),!0}catch(E){throw O.isEditorClosing=!1,O.isSubmitted=!1,E}},[a]),B=n.useCallbackRef(O=>{G(!1),w?.(O.coords),z()},[w]),C=l.useRef(null),Ke=l.useRef(null),Ve=l.useRef(null),ee=l.useRef([]),[Ce,Z]=l.useReducer(O=>O+1,0),z=l.useCallback(O=>{O&&ee.current.push(O),Z()},[]),X=n.useCallbackRef(O=>{if(O.defaultPrevented||O.isSynthetic||!o)return;const E=o?.getCellCoordsFromClient(O.clientX,O.clientY);E&&z({eventType:"pointer",event:O,coords:E})},[o]),Ct=n.useCallbackRef(O=>{const E=O.nativeEvent;X(E)},[o]),ft=n.useCallbackRef(O=>{if(O.defaultPrevented||O.isSynthetic||!o?.getStage())return;const E=Ke.current;T(O,E)&&(O.stopPropagation(),O.preventDefault()),O.key,z({eventType:"keyboard",event:O,coords:E})},[o]);l.useLayoutEffect(()=>{const O=(ne,he)=>{const $e=he?.cell??ne;if(!$e)return null;const Ze=$e;if(!U($e))return null;ke?.($e);const pt=r.CommonUtils.uuidV4();he=Object.freeze({autoFocus:!0,...he}),Ve.current=$e;const Je={coords:Ze,startEvent:he,uuid:pt,isMounted:!1,isStarted:!1,isSubmitted:!1,isEditorSubmitted:!1,isEditorClosing:!1,isEditorClosed:!1,isCancelled:!1,events:[],editorRefsDispatchEditorEvent:[],editorRefs:[],onMount:Tt=>{Je.isMounted||(Je.isMounted=!0,z())},onUnmount:Tt=>{if(Je.editorRefs.length===0){const ct=()=>{Je.isMounted=!1,z()};if(document.activeElement!==document.body)ct();else{const b=oe=>{oe.defaultPrevented||oe.target!==document.body||ft(oe)};window.addEventListener("keydown",b,!0),o.getStage()?.addEventListener("focusin",()=>{window.removeEventListener("keydown",b),ct()},bo),re()}}}};return Je};if(ee.current.length<=0&&!C.current)return;const E=ee.current[0];Fn(E),(ne=>{const he=[],$e=ne?.length??0;for(let Ze=0;Ze<$e;Ze++){const pt=ne[Ze];he.push(Fn(pt))}})(ee.current),C.current,C.current;let Ee=C.current;if(C.current){if(C.current.isDone)C.current=null;else if(C.current.isSubmitted||C.current.isCancelled){if(C.current.isMounted)return;C.current.isDone||(B(C.current),C.current.isDone=!0)}}if(E){if(E.eventType==="start"){const ne=E,he=ne.startEvent?.cell??Ke.current;C.current&&r.CoordUtils.isEqualCells(C.current.coords,he)||(C.current=O(he,ne.startEvent))}else if(E.eventType==="keyboard"){const ne=E.event;if(C.current){let he=!1;switch(ne.which){case n.KeyCodes.Left:case n.KeyCodes.Right:case n.KeyCodes.Up:case n.KeyCodes.Down:case n.KeyCodes.Enter:case n.KeyCodes.Tab:he=!0}if(!he){C.current.events.push(E);for(let $e=0;$e<C.current.editorRefsDispatchEditorEvent.length;$e++)C.current.editorRefsDispatchEditorEvent[$e](E)}}else if(T(ne,E.coords)){let he;const $e=O(he?.cell??Ke.current,he);$e&&$e.events.push(E),C.current=$e}}else if(E.eventType==="pointer"){const ne=E.event;if(C.current){C.current.events.push(E);for(let he=0;he<C.current.editorRefsDispatchEditorEvent.length;he++)C.current.editorRefsDispatchEditorEvent[he](E)}else{const he=E?.coords??Ke.current,$e=L(ne,he);if($e){let Ze;typeof Ze!="boolean"&&(Ze=$e);const pt=O(he,Ze);pt&&pt.events.push(E),C.current=pt}}}else if(E.eventType==="submit"){if(C.current&&!C.current.isSubmitted&&!C.current.isCancelled){if(!C.current.isMounted)return;me(C.current)}}else if(E.eventType==="cancel"){if(C.current&&!C.current.isSubmitted&&!C.current.isCancelled){if(!C.current.isMounted)return;ae(C.current)}}else if(E.eventType==="coordsChange"){const ne=E;if(Ke.current=ne.activeCoords,C.current,C.current&&!C.current.isSubmitted&&!C.current.isCancelled){if(!C.current.isMounted)return;try{me(C.current)}catch{}}}}ee.current.length>0&&(ee.current.shift(),z()),ee.current.length===0&&(!C.current||C.current.isEditorClosing||C.current.isEditorClosed?!C.current&&Ee&&re():C.current.isMounted&&!C.current.isStarted&&(C.current.isStarted=!0,C.current.startEvent.autoFocus&&(typeof C.current.startEvent.autoFocus=="string"?C.current.editorRefs[0]?.autoFocus(C.current.startEvent.autoFocus):C.current.editorRefs[0]?.autoFocus()),Ae?.(C.current),requestAnimationFrame(()=>{o&&C.current?.coords&&o.scrollCellCoordsIntoView(C.current.coords)})))},[Ce]),l.useEffect(()=>{Ve.current=H;const O=C.current?.coords;r.CoordUtils.isEqualCells(O,H)||(C.current&&(C.current.isEditorClosing=!0),z({eventType:"coordsChange",activeCoords:H}))},[H]);const it=l.useCallback(O=>{ft(O.nativeEvent)},[]),{width:ot=0,height:de=0}=P??{width:0,height:0},Pt=n.useCallbackRef(c,[c]);return{overlay:n.useCallbackRef(O=>{if(!C.current||C.current.isEditorClosed)return C.current,null;C.current.coords;let E=se(O,C.current.coords,ot,de,q,J),Ee=!0;E&&E.width!==0&&E.height!==0||(E={x:0,y:0,width:ot,height:ot},Ee=!1);const ne=O.getZoom(),he={containerBounds:{x:0,y:0,width:E.width/ne,height:E.height/ne},setNaturalSize:F,zoom:ne};return te.jsx(So,{session:C.current,refLatestCoords:Ve,handleSubmitEdit:me,handleCancelEdit:ae,cellBounds:E,borderStrokeWidth:A,borderStrokeFill:D,isInBounds:Ee,getCellEditor:Pt,propsEditor:he,alignment:J,...M},"editor:"+C.current.uuid)},[c,q,Ce,ot,de,J,A,D]),startEdit:l.useCallback(O=>{z({eventType:"start",startEvent:O})},[]),submitEdit:l.useCallback(()=>{z({eventType:"submit"})},[]),cancelEdit:l.useCallback(()=>{z({eventType:"cancel"})},[]),onKeyboardEvent:it,onPointerEvent:Ct,onKeyboardEventNative:ft,onPointerEventNative:X,isEditing:be}},exports.useSelection=({gridRef:t,commands:o,layout:i,selection:c,onSelectionChange:d,onSelectionDragStart:u,onSelectionDragEnd:a,selectionPolicy:s="multiple",newSelectionMode:w="clear",allowDeselectSelection:T=!0,onFillPreview:L,onFillCancel:M,onFillDone:D,onFill:A,disableFillDrag:q=!A,fillHandleBorderColor:H="white",hiddenRowsAt:J,hiddenColumnsAt:be,isContentfulCell:G,contentfulCellFinder:P=Do,getDataCoords:F,alwaysScrollToActiveCoords:se=!1,selectionBounds:U,pointerDownInterceptor:re,pointerMoveInterceptor:ze,mergedRanges:ke,canSelectionSpanMergedCells:Ae=Oo,onMoveDragStart:ae,onMoveDragUpdate:me,onMoveDragEnd:B,onMoveDragDone:C,selectionRenderer:Ke=Yn,disableMoveDrag:Ve=!B,getCellCoordsAsRangeCoords:ee=r.CoordUtils.cellToRange,moveDragHitSize:Ce=6,moveDragOutlineSize:Z=4,selectionBackgroundColor:z="rgba(16, 124, 65, 0.1)",selectionBorderColor:X="rgb(33, 115, 70)",selectionRemoveBorderColor:Ct="rgb(255, 0, 0)",selectionRemoveBackgroundColor:ft="rgba(250, 10, 10, 0.1)",disableTouchSelection:it=!1,touchSelectHandleProps:ot})=>{const de=l.useCallback(()=>({top:U?.top??0,left:U?.left??0,bottom:t.current?.rowCount-1||0,right:t.current?.columnCount-1||0}),[]),Pt=n.useCallbackRef(A,[A]),O=n.useCallbackRef(L,[L]),E=n.useCallbackRef(M,[M]),Ee=n.useCallbackRef(D,[D]),ne=n.useCallbackRef(G,[G]),he=n.useCallbackRef(Ke,[Ke]),$e=n.useCallbackRef((e,h=!1)=>wn(e,h,i.getRowOffset,h?de().bottom:de().top),[i?.getRowOffset]),Ze=n.useCallbackRef(J??$e,[J]),pt=n.useCallbackRef((e,h=!1)=>wn(e,h,i.getColOffset,h?de().right:de().left),[i?.getColOffset]),Je=n.useCallbackRef(be??pt,[be]),[Tt,ct]=l.useState(()=>vt(c)),b=l.useMemo(()=>vt(Tt),[Tt]),oe=l.useRef(b),Be=l.useRef(!0);l.useLayoutEffect(r.CommonUtils.throttle(()=>{ct(e=>{Be.current=!0;const h=vt(c);return r.CoordUtils.isEqualSelectionCoords(h,e)?e:h})},0),[c]),l.useLayoutEffect(()=>{oe.current=b},[b]),l.useEffect(()=>{Be.current||!d||r.CoordUtils.isEqualSelectionCoords(c,b)||d(b)},[b]);const rt=l.useCallback(e=>{ct(h=>{Be.current=!1,h=vt(h);let g=typeof e=="function"?e(h.ranges):e??Ln;if(r.CoordUtils.isEqualRangesArrays(g,h.ranges))return h;let f=Math.max(g.length?0:-1,Math.min(h.rangeIndex,g.length-1)),p=h.cell;f===-1||r.CoordUtils.isCellWithinRange(p,g[f])||(p={rowIndex:g[f].rowStart,colIndex:g[f].colStart}),g.length===1&&r.CoordUtils.isSingleCell(g[0])&&r.CoordUtils.isCellWithinRange(p,g[0])&&(g=[],f=-1);const k={cell:p,ranges:g,rangeIndex:f};return r.CoordUtils.isEqualSelectionCoords(k,h)?h:k})},[]),qe=n.useCallbackRef(e=>{ct(h=>{Be.current=!1,h=vt(h);const g=e??io,f=ee(g);if(!r.CoordUtils.isSingleCell(f)&&h.ranges.length===0)return{ranges:[f],rangeIndex:0,cell:g};if(r.CoordUtils.isEqualCells(g,h.cell))return h;let p=h.ranges,k=h.rangeIndex;h.ranges.length===1&&(r.CoordUtils.isSingleCell(h.ranges[0])&&r.CoordUtils.isCellWithinRange(g,h.ranges[0])||!r.CoordUtils.isCellWithinRange(g,h.ranges[0]))&&(p=[],k=-1);const m={ranges:p,rangeIndex:k,cell:g};return r.CoordUtils.isEqualSelectionCoords(m,h)?h:m})},[ee]),[jt,$t]=l.useState(null),[St,Yt]=l.useState(null),At=l.useRef(null),[Me,Ut]=l.useState(null),at=l.useRef(null),kt=l.useRef(null),[en,Ht]=l.useState(null),We=l.useRef(null),Fe=l.useRef(null),Ft=l.useRef(ke);l.useEffect(()=>{Ft.current=ke},[ke]);const dt=n.useCallbackRef((e,h={inline:"nearest",block:"nearest"})=>{let{rowIndex:g,colIndex:f}=e;g===void 0&&b?.cell&&(g=b.cell.rowIndex),f===void 0&&b?.cell&&(f=b.cell.colIndex),g!==void 0&&f!==void 0&&t.current?.scrollCellCoordsIntoView({rowIndex:g,colIndex:f},h)},[b]),Lt=l.useCallback(e=>{const h=de();return e.rowIndex<h.top||e.colIndex<h.left||e.colIndex>h.right||e.rowIndex>h.bottom},[]),Re=n.useCallbackRef((e,h)=>{if(!t?.current)return null;const g={rowStart:Math.min(e.rowIndex,h.rowIndex),colStart:Math.min(e.colIndex,h.colIndex),rowEnd:Math.max(e.rowIndex,h.rowIndex),colEnd:Math.max(e.colIndex,h.colIndex)};if(Ae?.(g))return g;const p=ee(e),k=ee(h),m={rowStart:Math.min(p.rowStart,k.rowStart),colStart:Math.min(p.colStart,k.colStart),rowEnd:Math.max(p.rowEnd,k.rowEnd),colEnd:Math.max(p.colEnd,k.colEnd)};let _;return typeof Ft.current=="function"?_=Ft.current(m):ke&&(_=ke),_?r.CoordUtils.extendRangeToUnionRanges(m,_):m},[Ae,ee]),je=n.useCallbackRef((e,h,g)=>{const f=e.ranges.length>0?e.ranges[e.rangeIndex]:{rowStart:e.cell.rowIndex,colStart:e.cell.colIndex,rowEnd:e.cell.rowIndex,colEnd:e.cell.colIndex},p={rowStart:Math.min(h.rowIndex??f.rowStart,g.rowIndex??f.rowStart),colStart:Math.min(h.colIndex??f.colStart,g.colIndex??f.colStart),rowEnd:Math.max(h.rowIndex??f.rowEnd,g.rowIndex??f.rowEnd),colEnd:Math.max(h.colIndex??f.colEnd,g.colIndex??f.colEnd)},k={rowIndex:p.rowStart,colIndex:p.colStart},m={rowIndex:p.rowEnd,colIndex:p.colEnd};if(!(Lt(k)||Lt(m)))return Re(k,m)},[Re]),lt=n.useCallbackRef((e,h,g)=>{if(s==="single"||!oe.current)return;const f=je(oe.current,e,h??oe.current.cell);if(!f)return;const p=oe.current.rangeIndex;rt(k=>k.length?k.map((m,_)=>p===_?f:m):[f]),g&&f&&qe({colIndex:f.colStart,rowIndex:f.rowStart})},[]),gt=l.useCallback((e,h,g)=>{if(!oe.current)return;e={...oe.current?.cell,...e},h=h??e;const f=je(oe.current,e,h);if(!f)return;const p={rowIndex:f.rowStart,colIndex:f.colStart},k={...p,...g};w==="clear"?(We.current=k,Bt()):w==="modify"?lt(p):ve(p),qe(k)},[]),ve=l.useCallback((e,h=e,g)=>{s!=="multiple"||!e||Lt(e)||Lt(h)||ct(f=>{Be.current=!1,f=vt(f);const p=Re(e,h);if(!p)return f;let k=f.ranges.length>0?[...f.ranges]:[Re(f.cell,f.cell)];k.push(p);const m={ranges:k,cell:{rowIndex:p.rowStart,colIndex:p.colStart,...g},rangeIndex:k.length-1};return r.CoordUtils.isEqualSelectionCoords(m,f)?f:m})},[]),Bt=()=>{rt(Ln)},yt=n.ReactUtils.detectIt().primaryInput==="touch",_e=l.useRef(null),mt=l.useRef(null),bt=l.useRef(null),Nt=l.useMemo(()=>({onPointerDown:e=>{if(!t||!t.current)return!1;const h=e.nativeEvent,g=t.current.getViewFromClient(h.clientX,h.clientY);if(h.pointerType==="touch"||h.type==="touchstart")return mt.current={topLeft:g.getScrollTopLeft(),point:{x:h.clientX,y:h.clientY}},!0;const f=g.getCellCoordsFromClient(e.nativeEvent.clientX,e.nativeEvent.clientY);if(!f)return!1;_e.current={anchor:g.getAnchor(),coords:f},Fe.current=null;const p=e.nativeEvent.which===n.MouseButtonCodes.Right;if(p&&r.CoordUtils.indexOfCoords(f,b.ranges)!==-1)return!1;const k=e.nativeEvent.shiftKey,m=e.nativeEvent.ctrlKey||e.nativeEvent.metaKey,_=m,K=T,V=b.ranges.length>0,Q=m&&K;if(re?.(e,f,b)===!1)return!1;u?.(oe.current,e.nativeEvent);const pe=!p&&s!=="single";if(k)return lt(f),pe;const j=r.CoordUtils.isEqualCells(f,b.cell);if(_){if(j&&(!Q||!V))return pe;if(m&&r.CoordUtils.indexOfCoords(f,b.ranges)!==-1&&K){at.current=f;const W=Re(f,f);return kt.current=W,Ut(W),pe}return ve(f),pe}se&&dt(f),j&&b.ranges.length===0||gt(f)},onPointerMoveOrWait:r.CommonUtils.throttle((e,h)=>{if(!t?.current||e.pointerType==="touch"||e.type==="touchmove"||!_e.current)return;const g=_e.current.anchor;let f=t.current.getViewFromLocation(g),p=f.getCellCoordsFromClient(e.clientX,e.clientY);if(!r.CoordUtils.isEqualCells(p,_e.current?.coords)&&(_e.current={anchor:g,coords:p},p&&ze?.(e,p,oe.current)!==!1)){if(at.current){const k={rowStart:Math.min(p.rowIndex,at.current.rowIndex),colStart:Math.min(p.colIndex,at.current.colIndex),rowEnd:Math.max(p.rowIndex,at.current.rowIndex),colEnd:Math.max(p.colIndex,at.current.colIndex)},m={rowIndex:k.rowStart,colIndex:k.colStart},_={rowIndex:k.rowEnd,colIndex:k.colEnd};if(Lt(m)||Lt(_))return;const K=Re(m,_);kt.current=K,Ut(K)}else lt(p);bt.current=h,hn(f,p,t)}},60),onPointerUp:e=>{if(_e.current=null,e.pointerType==="touch"||e.type==="touchend"){if(mt.current){const g=t.current.getViewFromClient(mt.current.point.x,mt.current.point.y),f=g.getScrollTopLeft();if(f.left===mt.current.topLeft.left&&f.top===mt.current.topLeft.top){const p=g.getCellCoordsFromClient(mt.current.point.x,mt.current.point.y);gt(p)}}return mt.current=null,void(_e.current=null)}try{a?.(oe.current,e)}catch(g){console.warn(g)}if(!at.current)return;const h=kt.current;at.current=null,kt.current=null,Ut(null),ct(g=>{if(Be.current=!1,(g=vt(g)).ranges.length===0)return g;let f=[],p=-1,k=g.cell;for(let _=0;_<g.ranges.length;_++){const K=g.ranges[_];if(r.CoordUtils.isRangesIntersect(K,h)){const V=r.CommonUtils.subtractRect({top:K.rowStart,left:K.colStart,bottom:K.rowEnd+1,right:K.colEnd+1},{top:h.rowStart,left:h.colStart,bottom:h.rowEnd+1,right:h.colEnd+1});for(let Q=0;Q<V.length;Q++){const pe={rowStart:V[Q].top,colStart:V[Q].left,rowEnd:V[Q].bottom-1,colEnd:V[Q].right-1};f.push(pe),r.CoordUtils.isCellWithinRange(g.cell,pe)&&(p=f.length-1)}}else f.push(K);f.length>0&&p===-1&&r.CoordUtils.isCellWithinRange(g.cell,K)&&(p=f.length-1,k={rowIndex:f[f.length-1].rowStart,colIndex:f[f.length-1].colStart})}const m={cell:k,rangeIndex:p,ranges:f};return r.CoordUtils.isEqualSelectionCoords(m,g)?g:m})},processTouch:!0,consumeTouch:!1}),[b,s,T,se,w]),xn=n.useCallbackRef(n.useSynchronizedPointerHandler(Nt),[]),pn=l.useMemo(()=>({onSelectionPointerDown:(e,h,g,f,p=b.cell,k=se,m=e.nativeEvent.shiftKey,_=!1)=>{if(!t||!t.current)return!1;e.stopPropagation(),e.preventDefault(),e.nativeEvent.stopImmediatePropagation();const K=g??t.current.getViewFromClient(e.nativeEvent.clientX,e.nativeEvent.clientY),V=f??K.getCellCoordsFromClient(e.nativeEvent.clientX,e.nativeEvent.clientY);if(!V)return!1;_e.current={anchor:K.getAnchor(),coords:V},Fe.current=null;const Q=e.nativeEvent.which===n.MouseButtonCodes.Right;if(Q&&r.CoordUtils.indexOfCoords(V,b.ranges)!==-1)return!1;const pe=e.nativeEvent.ctrlKey||e.nativeEvent.metaKey,j=pe,W=T,nt=b.ranges.length>0,I=pe&&W;if(re?.(e,V,b)===!1)return!1;u?.(oe.current,e.nativeEvent);const fe=!Q&&s!=="single";if(m)return lt(V,p,_),fe;const ht=r.CoordUtils.isEqualCells(V,p);if(j){if(ht&&(!I||!nt))return fe;if(I&&r.CoordUtils.indexOfCoords(V,b.ranges)!==-1&&W){at.current=V;const ue=Re(V,V);return kt.current=ue,Ut(ue),fe}return ve(V),fe}k&&dt(V),ht&&b.ranges.length===0||gt(V)},onSelectionPointerMoveOrWait:(e,h,g,f,p,k=b.cell,m=!0,_=!1)=>{if(!t?.current||(e.stopPropagation(),e.preventDefault(),e.stopImmediatePropagation(),!_e.current))return;const K=_e.current.anchor;let V=f??t.current.getViewFromLocation(K),Q=p??V.getCellCoordsFromClient(e.clientX,e.clientY);if(!r.CoordUtils.isEqualCells(Q,_e.current?.coords)&&(_e.current={anchor:K,coords:Q},Q&&ze?.(e,Q,oe.current)!==!1)){if(at.current){const pe={rowStart:Math.min(Q.rowIndex,at.current.rowIndex),colStart:Math.min(Q.colIndex,at.current.colIndex),rowEnd:Math.max(Q.rowIndex,at.current.rowIndex),colEnd:Math.max(Q.colIndex,at.current.colIndex)},j={rowIndex:pe.rowStart,colIndex:pe.colStart},W={rowIndex:pe.rowEnd,colIndex:pe.colEnd};if(Lt(j)||Lt(W))return;const nt=Re(j,W);kt.current=nt,Ut(nt)}else lt(Q,k,_);m&&hn(V,Q,t)}},onPointerUp:e=>{_e.current=null,e.stopPropagation(),e.preventDefault(),e.stopImmediatePropagation();try{a?.(oe.current,e)}catch(g){console.warn(g)}if(!at.current)return;const h=kt.current;at.current=null,kt.current=null,Ut(null),ct(g=>{if(Be.current=!1,(g=vt(g)).ranges.length===0)return g;let f=[],p=-1,k=g.cell;for(let _=0;_<g.ranges.length;_++){const K=g.ranges[_];if(r.CoordUtils.isRangesIntersect(K,h)){const V=r.CommonUtils.subtractRect({top:K.rowStart,left:K.colStart,bottom:K.rowEnd+1,right:K.colEnd+1},{top:h.rowStart,left:h.colStart,bottom:h.rowEnd+1,right:h.colEnd+1});for(let Q=0;Q<V.length;Q++){const pe={rowStart:V[Q].top,colStart:V[Q].left,rowEnd:V[Q].bottom-1,colEnd:V[Q].right-1};f.push(pe),r.CoordUtils.isCellWithinRange(g.cell,pe)&&(p=f.length-1)}}else f.push(K);f.length>0&&p===-1&&r.CoordUtils.isCellWithinRange(g.cell,K)&&(p=f.length-1,k={rowIndex:f[f.length-1].rowStart,colIndex:f[f.length-1].colStart})}const m={cell:k,rangeIndex:p,ranges:f};return r.CoordUtils.isEqualSelectionCoords(m,g)?g:m})}}),[b,s,T,se,w]),Ge=n.useCallbackRef((e,h=!1,g=!1,f=0)=>{if(!t.current||!b.cell)return;let p=b.cell,k=b.cell;if(h&&b.ranges.length>0){const I=b.ranges[b.rangeIndex],fe=b.cell;switch(e){case r.Direction.Up:k={rowIndex:fe.rowIndex===I.rowStart?I.rowEnd:I.rowStart,colIndex:I.colEnd},p={rowIndex:fe.rowIndex===I.rowStart?I.rowStart:I.rowEnd,colIndex:I.colStart};break;case r.Direction.Down:k={rowIndex:fe.rowIndex===I.rowEnd?I.rowStart:I.rowEnd,colIndex:I.colEnd},p={rowIndex:fe.rowIndex===I.rowEnd?I.rowEnd:I.rowStart,colIndex:I.colStart};break;case r.Direction.Left:k={rowIndex:I.rowEnd,colIndex:fe.colIndex===I.colStart?I.colEnd:I.colStart},p={rowIndex:I.rowStart,colIndex:fe.colIndex===I.colStart?I.colStart:I.colEnd};break;case r.Direction.Right:k={rowIndex:I.rowEnd,colIndex:fe.colIndex===I.colEnd?I.colStart:I.colEnd},p={rowIndex:I.rowStart,colIndex:fe.colIndex===I.colEnd?I.colEnd:I.colStart}}}const m=ee(k);let{rowStart:_,colStart:K}=m;const V=de();if(Fe.current)switch(e){case r.Direction.Up:case r.Direction.Down:Fe.current.colIndex>=m.colStart&&Fe.current.colIndex<=m.colEnd&&(K=Fe.current.colIndex);break;case r.Direction.Left:case r.Direction.Right:Fe.current.rowIndex>=m.rowStart&&Fe.current.rowIndex<=m.rowEnd&&(_=Fe.current.rowIndex)}if(!f){switch(e){case r.Direction.Up:_=Oe(Ze,Math.max(m.rowStart-1,V.top),e);break;case r.Direction.Down:_=Oe(Ze,Math.min(m.rowEnd+1,V.bottom),e);break;case r.Direction.Left:K=Oe(Je,Math.max(m.colStart-1,V.left),e);break;case r.Direction.Right:K=Oe(Je,Math.min(m.colEnd+1,V.right),e)}if(g)switch(e){case r.Direction.Up:_=P({...k,colIndex:b.cell.colIndex},ne,Ze,e,!1,Math.max(V.top,Ze(V.top,!1)));break;case r.Direction.Down:_=P({...k,colIndex:b.cell.colIndex},ne,Ze,e,!1,Math.min(V.bottom,V.bottom-Ze(V.bottom,!0)));break;case r.Direction.Left:K=P({...k,rowIndex:b.cell.rowIndex},ne,Je,e,!1,Math.max(V.left,Je(V.left,!1)));break;case r.Direction.Right:K=P({...k,rowIndex:b.cell.rowIndex},ne,Je,e,!1,Math.min(V.right,V.right-Je(V.right,!0)))}}let Q=null;if(f){let I=0;switch(e){case r.Direction.Up:I=i.getRowOffset(_+1),_=Math.max(V.top,i.getRowIndex(I-f)),Q={top:i.getRowOffset(_+1)-(I-t.current.getScrollPosition().top)};break;case r.Direction.Down:I=i.getRowOffset(_),_=Math.min(V.bottom,i.getRowIndex(I+f)),Q={top:i.getRowOffset(_)-(I-t.current.getScrollPosition().top)};break;case r.Direction.Left:I=i.getColOffset(K+1),K=Math.max(V.left,i.getColIndex(I-f)),Q={left:i.getColOffset(K+1)-(I-t.current.getScrollPosition().left)};break;case r.Direction.Right:I=i.getColOffset(K),K=Math.min(V.right,i.getColIndex(I+f)),Q={left:i.getColOffset(K)-(I-t.current.getScrollPosition().left)}}}const pe={rowIndex:_,colIndex:K},j=ee(pe),W={rowIndex:j.rowStart,colIndex:j.colStart};h||(Fe.current=pe);const nt=r.CoordUtils.isEqualCells(We.current,W)&&r.CoordUtils.isEqualCells(We.current,p);if(h&&!nt?lt(W,p):gt(W),Q)t.current.scrollTo(Q);else{if(h&&We.current){const I=de();if(e===r.Direction.Right&&We.current.colIndex===I.left||e===r.Direction.Left&&We.current.colIndex===I.right||e===r.Direction.Up&&We.current.rowIndex===I.bottom||e===r.Direction.Down&&We.current.rowIndex===I.top)return}e===r.Direction.Left||e===r.Direction.Right?dt({colIndex:pe.colIndex}):e!==r.Direction.Up&&e!==r.Direction.Down||dt({rowIndex:pe.rowIndex})}},[b,ee]),Ot=n.useCallbackRef(e=>{if(!t.current)return;if(b.ranges.length===0)return void Ge(e);const h=ee(b.cell);if(r.CoordUtils.isEqualRangesArrays([h],b.ranges))return void Ge(e);const g=Pn(b,e,ee,Ze,Je);ct(f=>{Be.current=!1,f=vt(f);const p={...f,cell:g.cell,rangeIndex:g.rangeIndex};return r.CoordUtils.isEqualSelectionCoords(p,f)?f:p}),g.cell&&dt(g.cell)},[b,ee]),mn=l.useCallback(()=>{const e=de();lt({rowIndex:e.top},{rowIndex:e.bottom})},[]),Cn=l.useCallback(()=>{const e=de();lt({colIndex:e.left},{colIndex:e.right})},[]),Kt=n.useCallbackRef(()=>{b.cell&&t?.current&&dt(b.cell)},[b.cell]),tn=l.useCallback((e=!1)=>{const h={rowIndex:de().top};e?lt(h):gt(h),dt(h)},[]),nn=l.useCallback((e=!1)=>{const h={rowIndex:de().bottom};e?lt(h):gt(h),dt(h)},[]),_t=l.useCallback((e=!1)=>{const h={colIndex:de().left};e?lt(h):gt(h),dt(h)},[]),qt=l.useCallback((e=!1)=>{const h=de(),g={rowIndex:h.top,colIndex:h.left};e?lt(g):gt(g),dt(g)},[]),Gt=l.useCallback((e=!1)=>{const h=de(),g={colIndex:F?.()?.colEnd??h.right};e?lt(g):gt(g),dt(g)},[F]),Vt=l.useCallback((e=!1)=>{const h=de(),g={rowIndex:F?.()?.rowEnd??h.bottom,colIndex:F?.()?.colEnd??h.right};e?lt(g):gt(g),dt(g)},[F]),Zt=n.useCallbackRef(e=>{if(!t.current||b.ranges.length<=1)return;const h=e===r.Direction.Left||e===r.Direction.Up;let g=b.rangeIndex+(h?-1:1);g<0?g=b.ranges.length-1:g>b.ranges.length-1&&(g=0);const f=b.ranges[g],p=Pn({cell:{rowIndex:f.rowEnd,colIndex:f.colEnd},rangeIndex:0,ranges:[f]},r.Direction.Right,ee,Ze,Je);ct(k=>{Be.current=!1,k=vt(k);const m={...k,cell:p.cell,rangeIndex:g};return r.CoordUtils.isEqualSelectionCoords(m,k)?k:m}),p.cell&&dt(p.cell)},[b,ee]),Sn=n.useCallbackRef(()=>{const e=Hn(b);ct(h=>{Be.current=!1,h=vt(h);const g={...h,visibleSelection:e};return r.CoordUtils.isEqualSelectionCoords(g,h)?h:g}),e.cell&&dt(e.cell)},[b,ee]),bn=n.useCallbackRef(()=>{if(!t.current||b.ranges.length===0)return;const e=b.cell,h=b.ranges[b.rangeIndex],g=Hn({cell:e,rangeIndex:0,ranges:[h]}),f=g.ranges[g.rangeIndex];let p;p=f.rowStart===e.rowIndex&&f.colStart===e.colIndex?{rowIndex:f.rowStart,colIndex:f.colEnd}:f.rowStart===e.rowIndex&&f.colEnd===e.colIndex?{rowIndex:f.rowEnd,colIndex:f.colStart}:f.rowEnd===e.rowIndex&&f.colStart===e.colIndex?{rowIndex:f.rowEnd,colIndex:f.colEnd}:{rowIndex:f.rowStart,colIndex:f.colStart},ct(k=>{k=vt(k);const m={...k,cell:p};return r.CoordUtils.isEqualSelectionCoords(m,k)?k:m}),p&&dt(p)},[b,ee]),on=l.useCallback((e=!1)=>{Ge(r.Direction.Down,e,!1,t.current.getDimensions().containerHeight)},[]),Mt=l.useCallback((e=!1)=>{Ge(r.Direction.Up,e,!1,t.current.getDimensions().containerHeight)},[]),rn=l.useCallback((e=!1)=>{Ge(r.Direction.Right,e,!1,t.current.getDimensions().containerWidth)},[]),Jt=l.useCallback((e=!1)=>{Ge(r.Direction.Left,e,!1,t.current.getDimensions().containerWidth)},[]),ln=l.useCallback(()=>{Ot(r.Direction.Left)},[]),cn=l.useCallback(()=>{Ot(r.Direction.Right)},[]),vn=l.useCallback(()=>{Ot(r.Direction.Up)},[]),yn=l.useCallback(()=>{Ot(r.Direction.Down)},[]),Qt=l.useCallback(()=>{Zt(r.Direction.Left)},[]),En=l.useCallback(()=>{Zt(r.Direction.Right)},[]),Rn=l.useCallback(()=>{bn()},[]),sn=l.useCallback(()=>{Ge(r.Direction.Left,!1,!1)},[]),x=l.useCallback(()=>{Ge(r.Direction.Left,!0,!1)},[]),S=l.useCallback(()=>{Ge(r.Direction.Left,!1,!0)},[]),R=l.useCallback(()=>{Ge(r.Direction.Left,!0,!0)},[]),v=l.useCallback(()=>{Ge(r.Direction.Right,!1,!1)},[]),y=l.useCallback(()=>{Ge(r.Direction.Right,!0,!1)},[]),$=l.useCallback(()=>{Ge(r.Direction.Right,!1,!0)},[]),ie=l.useCallback(()=>{Ge(r.Direction.Right,!0,!0)},[]),N=l.useCallback(()=>{Ge(r.Direction.Up,!1,!1)},[]),le=l.useCallback(()=>{Ge(r.Direction.Up,!0,!1)},[]),Y=l.useCallback(()=>{Ge(r.Direction.Up,!1,!0)},[]),Ie=l.useCallback(()=>{Ge(r.Direction.Up,!0,!0)},[]),He=l.useCallback(()=>{Ge(r.Direction.Down,!1,!1)},[]),ge=l.useCallback(()=>{Ge(r.Direction.Down,!0,!1)},[]),ye=l.useCallback(()=>{Ge(r.Direction.Down,!1,!0)},[]),De=l.useCallback(()=>{Ge(r.Direction.Down,!0,!0)},[]),we=l.useCallback(()=>{rt(e=>e.slice(0,-1))},[]),wt=l.useMemo(()=>{const e=de();return((h,g,f,p,k)=>{const m=h.length;for(let _=0;_<m;_++){const K=h[_];if(K.rowStart===g&&K.colStart===f&&K.rowEnd===p&&K.colEnd===k)return!0}return!1})(b.ranges,e.top,e.left,e.bottom,e.right)},[U,b.ranges]),Qe=l.useCallback((e,h=!0)=>{We.current=e,qe(e),h&&e&&t?.current&&dt(e)},[]),Te=n.useCallbackRef((e=!0)=>{const h=At.current;if(!oe.current?.cell)return;const g=oe.current?.ranges,f=oe.current?.cell;if(!f||!h||!h)return;let p=null;if(p=g.length>0?g[g.length-1]:ee(f),p.colEnd>=p.colStart&&p.rowEnd>=p.rowStart){const k=Nn(p,h);let m=e?Pt:O;try{m?.(p,h,k.direction)}catch(_){console.warn(_)}finally{e&&Ee?.()}}},[ee]),Se=l.useRef(null),Xe=l.useMemo(()=>({onPointerDown:(e,h)=>{if(bt.current=h,!t||!t.current)return!1;const g=t.current.getViewFromClient(e.nativeEvent.clientX,e.nativeEvent.clientY),f=g?.getCellCoordsFromClient(e.nativeEvent.clientX,e.nativeEvent.clientY);f&&(e.stopPropagation(),$t("crosshair"),Se.current={anchor:g.getAnchor(),coords:f})},onPointerMoveOrWait:(e,h)=>{if(q||!t?.current||!oe.current||!Se.current)return;const g=Se.current.anchor;let f=t.current.getViewFromLocation(g),p=f.getCellCoordsFromClient(e.clientX,e.clientY);if(!p)return;Se.current={anchor:g,coords:p};const k=oe.current.ranges;let m=Re(oe.current.cell,p);if(!m)return;const _=k.length>0,K=_?k[k.length-1]:ee(oe.current.cell);if(!m)return;const V=m.rowStart<K.rowStart?r.Direction.Up:m.rowEnd>K.rowEnd?r.Direction.Down:m.colEnd>K.colEnd?r.Direction.Right:r.Direction.Left,Q=de();V===r.Direction.Left&&(m={...K,colStart:Math.max(Q.left,m.colStart)}),V===r.Direction.Up&&(m={...K,rowStart:Math.max(Q.top,m.rowStart)}),V===r.Direction.Right&&(m={...K,colEnd:Math.min(Q.right,m.colEnd)}),V===r.Direction.Down&&(m={...K,rowEnd:Math.min(Q.bottom,m.rowEnd)});const pe=Nn(K,m);if(!Ae?.(K)){let j;typeof Ft.current=="function"?j=Ft.current(K):ke&&(j=ke),m=((W,nt,I,fe,ht,ue)=>{const ce={...nt};if(I.length===0)return ce;if(ht===r.Direction.Left){const tt=W.colEnd+1-W.colStart;ce.colStart=W.colStart-Math.ceil(ue/tt)*tt,ce.colStart<fe.left&&(ce.colStart=ce.colStart+Math.ceil((fe.left-ce.colStart)/tt)*tt)}else if(ht===r.Direction.Right){const tt=W.colEnd+1-W.colStart;ce.colEnd=W.colEnd+Math.ceil(ue/tt)*tt,ce.colEnd>fe.right&&(ce.colEnd=ce.colEnd-Math.ceil((fe.right-ce.colEnd)/tt)*tt)}else if(ht===r.Direction.Up){const tt=W.rowEnd+1-W.rowStart;ce.rowStart=W.rowStart-Math.ceil(ue/tt)*tt,ce.rowStart<fe.top&&(ce.rowStart=ce.rowStart+Math.ceil((fe.top-ce.rowStart)/tt)*tt)}else if(ht===r.Direction.Down){const tt=W.rowEnd+1-W.rowStart;ce.rowEnd=W.rowEnd+Math.ceil(ue/tt)*tt,ce.rowEnd>fe.bottom&&(ce.rowEnd=ce.rowEnd-Math.ceil((fe.bottom-ce.rowEnd)/tt)*tt)}return ce})(K,m,j,Q,pe.direction,pe.amount)}if(_&&r.CoordUtils.isRangeWithinRange(m,K)&&(m=null),!r.CoordUtils.isEqualRanges(m,At.current)){if(Yt(m),At.current=m,!m){try{E?.()}catch{}return void Ee?.()}Te(!1)}bt.current=h,hn(f,p,t)},onPointerUp:(e,h)=>{bt.current=h,Promise.resolve(Te(!0)).finally(()=>{Ee?.(),Yt(null),At.current=null,Se.current=null,$t(null),t.current?.focus()})}}),[ee]),xt=n.useSynchronizedPointerHandler(Xe),xe=l.useMemo(()=>({onPointerDown:xt}),[xt]),[Ne,Et]=l.useState(null),Le=l.useRef(null),Ye=l.useMemo(()=>({onPointerDown:(e,h)=>{if(bt.current=h,!t||!t.current)return!1;const g=t.current.getViewFromClient(e.nativeEvent.clientX,e.nativeEvent.clientY),f=g?.getCellCoordsFromClient(e.nativeEvent.clientX,e.nativeEvent.clientY);if(!f)return;if(re?.(e,f,b)===!1)return!1;e.stopPropagation(),$t("default");const p=g.getRelativePointFromClient(0,0),k=oe.current?.ranges[oe.current?.ranges.length-1]??r.CoordUtils.cellToRange(oe.current?.cell),m=g.toClipBounds(g.getRangeCoordsBounds(k)),_={x:0,y:0};m.x-p.x>e.nativeEvent.clientX?_.x=e.nativeEvent.clientX-(m.x-p.x):e.nativeEvent.clientX>=m.x-p.x+m.width&&(_.x=Math.max(0,e.nativeEvent.clientX-(m.x-p.x+m.width))+1),m.y-p.y>e.nativeEvent.clientY?_.y=e.nativeEvent.clientY-(m.y-p.y):e.nativeEvent.clientY>=m.y-p.y+m.height&&(_.y=Math.max(0,e.nativeEvent.clientY-(m.y-p.y+m.height))+1),ae?.(k,e.nativeEvent,h),Le.current={range:k,anchor:g.getAnchor(),cell:f,isMoving:!1,extrusion:_}},onPointerMoveOrWait:(e,h,g)=>{if(Ve||!t?.current||!oe.current||!Le.current)return;const f=e.clientX-g.clientX,p=e.clientY-g.clientY;if(Le.current.isMoving=Le.current.isMoving||Math.abs(f)>Math.max(1,2)||Math.abs(p)>Math.max(1,2)||performance.now()-g.timeStamp>500,!Le.current.isMoving)return;const k=Le.current.anchor,m=Le.current.extrusion;let _=t.current.getViewFromLocation(k),K=_.getCellCoordsFromClient(e.clientX-m.x,e.clientY-m.y,!0);if(!K)return;const V=Le.current.cell,Q=Le.current.range,pe=de(),j=Q.colEnd-Q.colStart+1,W=Math.min(Math.max(0,V.colIndex-Q.colStart),j-1),nt=Math.min(pe.right-j+1,Math.max(pe.left,K.colIndex-W)),I=Q.rowEnd-Q.rowStart+1,fe=Math.min(Math.max(0,V.rowIndex-Q.rowStart),I-1),ht=Math.min(pe.bottom-I+1,Math.max(pe.top,K.rowIndex-fe)),ue={colStart:nt,colEnd:nt+j-1,rowStart:ht,rowEnd:ht+I-1};r.CoordUtils.isEqualRanges(Ne,ue)&&!(ce=>!ce||!bt.current||bt.current.ctrlKey!==ce.ctrlKey||bt.current.shiftKey!==ce.shiftKey||bt.current.altKey!==ce.altKey||bt.current.metaKey!==ce.metaKey)(e)||(Et(ue),me?.(ue,e,h)),bt.current=h,hn(_,K,t)},onPointerUp:(e,h)=>{bt.current=h;const g=()=>{Et(null),Le.current=null,$t(null),t.current?.focus()};if(!Le.current)return void g();const f=Le.current.range,p=Ne;B?.(f,e,h),Promise.resolve(f&&p&&C?.(f,p,e,h)).finally(()=>{g()})}}),[Ne]),Ue=n.useSynchronizedPointerHandler(Ye),Pe=l.useMemo(()=>({onPointerDown:Ue}),[Ue]),st=l.useRef(null),et=l.useMemo(()=>{const e=r.CoordUtils.isEqualSelectionCoords(b,st.current)?st.current:b;return st.current=e,e},[b]),ut=l.useCallback(e=>{let h=null,g="br";const f=[],p={stroke:H,fill:z,strokeWidth:.5},k=(j,W,nt)=>{const I=e.toClipBounds(e.getRangeCoordsBounds(j),It);if(!I)return;I.x=I.width>0?I.x:I.x-p.strokeWidth/2,I.y=I.height>0?I.y:I.y-p.strokeWidth/2,I.width=Math.max(I.width,p.strokeWidth),I.height=Math.max(I.height,p.strokeWidth);const fe={key:`selection-fill-${W}`,range:j,...I,...p};if(nt){const ht=e.getCellCoordsAsRangeCoords(nt);fe.cell=nt,fe.pathBounds=e.toClipBounds(e.getRangeCoordsBounds(ht),It),fe.pathBounds&&(fe.pathBounds.width<=0||fe.pathBounds.height<=0)&&(delete fe.pathBounds,delete fe.cell)}return he(fe)};let m=b?vt(b):null;const _=m?.cell?e.getCellCoordsAsRangeCoords(m?.cell):Lo;!m||m.ranges&&m.ranges.length!==0||(m={ranges:[_],rangeIndex:0,cell:m.cell});for(let j=0;m&&j<m.ranges.length;j++){const W=m.ranges[j],nt=k(W,j,j===m.rangeIndex?m.cell:null);nt&&f.push(nt);const I=2,fe=.5,ht=e.toClipBounds(e.getRangeCoordsBounds(W,{top:0,left:0,right:0,bottom:0}),It);if(ht){const ue=(m.ranges.length,4);f.push(he({range:W,key:`selection-inside-edge-${j}`,x:ht.x-1,y:ht.y-1,width:Math.max(ht.width+1,0),height:Math.max(ht.height+1,0),style:{overflow:"hidden"},stroke:H,strokeWidth:ue}))}if(m.ranges.length===1){const ue=e.toClipBounds(e.getRangeCoordsBounds(W),It);if(ue){Ve||f.push(he({range:W,key:`move-selection-hit-box-${j}`,x:ue.width>1?ue.x:ue.x-(Ce/2+1),y:ue.height>1?ue.y:ue.y-(Ce/2+1),width:Math.max(ue.width+2,1),height:Math.max(ue.height+2,1),stroke:"transparent",style:{boxShadow:"none"},pathProps:{cursor:Ne?void 0:"move",pointerEvents:"stroke"},strokeWidth:Ce,...Pe}));const ce=I;f.push(he({range:W,key:`selection-single-${j}`,x:ue.x-ce/2,y:ue.y-ce/2,width:Math.max(ue.width+ce/2,1),height:Math.max(ue.height+ce/2,1),stroke:X,strokeWidth:ce}))}}else{const ue=e.toClipBounds(e.getRangeCoordsBounds(W,{top:-1,left:-1,right:-2,bottom:-2}),It);ue&&f.push(he({range:W,key:`selection-multi-${j}`,x:ue.width>1?ue.x:ue.x-fe/2,y:ue.height>1?ue.y:ue.y-fe/2,width:Math.max(ue.width,fe)+1,height:Math.max(ue.height,fe)+1,stroke:X,style:{overflow:"hidden"},strokeWidth:2}))}if(m.ranges.length>1&&j===m.rangeIndex){const ue=e.getCellCoordsAsRangeCoords(m.cell),ce=e.toClipBounds(e.getRangeCoordsBounds(ue,{top:1,left:1,right:-1,bottom:-1}),It);ce&&f.push(he({range:W,key:`selection-anchor-${j}`,x:ce.x,y:ce.y,width:Math.max(ce.width,fe),height:Math.max(ce.height,fe),stroke:X,style:{overflow:"hidden"},strokeWidth:2}))}if(j===m.ranges.length-1){h=null,g=null;const ue=W.rowStart===de().top&&W.rowEnd===de().bottom,ce=W.colStart===de().left&&W.colEnd===de().right,tt=e.getRangeCoordsBounds(W);let Dt=null;if(ue||ce){if(Dt=e.toClipBounds(tt,It),Object.keys(e.allViews()).length>1){const an=e.getVisibleRangeCoords(),Bn=e.allViews()[r.AnchorLocation.TopLeft],go=e.allViews()[r.AnchorLocation.Top],wo=e.allViews()[r.AnchorLocation.Left],dn=e.getAnchor();(ce&&(dn===r.AnchorLocation.Top&&Bn||dn===r.AnchorLocation.Center&&wo||!r.CoordUtils.isCellWithinRange({colIndex:W.colStart,rowIndex:W.rowEnd},an)&&!r.CoordUtils.isCellWithinRange({colIndex:W.colStart,rowIndex:W.rowEnd+1},an))||ue&&(dn===r.AnchorLocation.Left&&Bn||dn===r.AnchorLocation.Center&&go||!r.CoordUtils.isCellWithinRange({colIndex:W.colEnd,rowIndex:W.rowStart},an)&&!r.CoordUtils.isCellWithinRange({colIndex:W.colEnd+1,rowIndex:W.rowStart},an)))&&(Dt=null)}}else Dt=e.toClipBounds(tt,It);if(!Dt||Dt.width===0||Dt.height===0)continue;h={x:Dt.x+Dt.width+1,y:Dt.y+Dt.height+1},Dt.width===0||Dt.height===0||W.rowStart===de().top&&W.colStart===de().left&&W.rowEnd===de().bottom&&W.colEnd===de().right||(ue?(h.y=I,g="tr"):ce&&(h.x=I,g="bl"))}}let K=null;if(Me){const j=e.toClipBounds(e.getRangeCoordsBounds(Me,{top:0,left:0,right:0,bottom:0}),It);j&&(K=he({...p,range:Me,key:"remove-selection",x:j.x,y:j.y,width:j.width,height:j.height,strokeWidth:2,stroke:Ct,fill:ft}))}let V=null;if(St){const j=e.toClipBounds(e.getRangeCoordsBounds(St,{top:0,left:0,right:0,bottom:0}),It);j&&(V=he({range:St,key:"selection-fill-outline",x:j.x-2/2,y:j.y-2/2,width:j.width+2/2,height:j.height+2/2,strokeWidth:2,stroke:X,strokeDasharray:"3 2"}))}let Q=null;!q&&h&&!Ne&&(Q=l.createElement(Tn,{...h,corner:g,size:7.5,borderStroke:`${H} solid`,style:{borderRadius:1},background:X,...xe,key:"fillHandle"}));const pe=[...f];if(K&&pe.push(K),V&&pe.push(V),Q&&pe.push(Q),!it&&yt&&m?.ranges.length===1&&m.ranges[m.ranges.length-1]){const j=m.ranges[m.ranges.length-1],W=j.rowStart===de().top&&j.rowEnd===de().bottom,nt=j.colStart===de().left&&j.colEnd===de().right,I={view:e,range:j,borderStroke:`${X} solid`,background:H,selectionTouchPointerHandler:pn,...ot,onTouchSelectStart:fe=>Ht(fe),onTouchSelectEnd:()=>Ht(null),currentTouchAnchor:en};pe.push(te.jsx(fn,{anchor:nt?"b":W?"r":"br",scrollableElement:t.current,...I},"touch-select-handle-after")),pe.push(te.jsx(fn,{anchor:nt?"t":W?"l":"tl",scrollableElement:t.current,...I},"touch-select-handle-before"))}if(Ne){const j=e.toClipBounds(e.getRangeCoordsBounds(Ne,{top:1,left:1,right:1,bottom:1}),It);j&&pe.push(he({range:Ne,key:"selection-move-outline",x:j.x-Z/2,y:j.y-Z/2,width:Math.max(j.width+Z/2,1),height:Math.max(j.height+Z/2,1),stroke:X,style:{boxShadow:"none",transitionDuration:"70ms",transitionTimingFunction:"ease-in",transitionProperty:"left, top, width, height",willChange:"left, top, width, height"},strokeWidth:Z}))}return te.jsx("div",{children:pe},"selection")},[et,Me,q,St,Ve,Ne,de,H,X,z,Ct,ft,it,ot,en]),Rt=l.useMemo(()=>{const e=()=>t.current;return[new n.SimpleCommand("moveToPageDown",e,{label:"Page Down",description:"Shift viewport down one page.",shortcut:[{key:"PageDown"}]},()=>on(!1)),new n.SimpleCommand("selectToPageDown",e,{label:"Select To Page Down",description:"Shift viewport and select down one page.",shortcut:[{key:"PageDown",modifiers:[n.KeyModifiers.Shift]}]},()=>on(!0)),new n.SimpleCommand("moveToPageRight",e,{label:"Page Right",description:"Shift viewport right one page.",shortcut:[{key:"PageDown",modifiers:[n.KeyModifiers.Alt]}]},()=>rn(!1)),new n.SimpleCommand("selectToPageRight",e,{label:"Page Right",description:"Shift viewport right one page.",shortcut:[{key:"PageDown",modifiers:[n.KeyModifiers.Alt,n.KeyModifiers.Shift]}]},()=>rn(!0)),new n.SimpleCommand("moveToPageUp",e,{label:"Page Up",description:"Shift viewport up one page.",shortcut:[{key:"PageUp"}]},()=>Mt(!1)),new n.SimpleCommand("selectToPageUp",e,{label:"Page Up",description:"Shift viewport up one page.",shortcut:[{key:"PageUp",modifiers:[n.KeyModifiers.Shift]}]},()=>Mt(!0)),new n.SimpleCommand("moveToPageLeft",e,{label:"Page Left",description:"Shift viewport left one page.",shortcut:[{key:"PageUp",modifiers:[n.KeyModifiers.Alt]}]},()=>Jt(!1)),new n.SimpleCommand("selectToPageLeft",e,{label:"Page Left",description:"Shift viewport left one page.",shortcut:[{key:"PageUp",modifiers:[n.KeyModifiers.Alt,n.KeyModifiers.Shift]}]},()=>Jt(!0)),new n.SimpleCommand("selectColumn",e,{label:"Select Column",description:"Select the columns for the selected cells.",shortcut:{key:"Space",modifiers:[n.KeyModifiers.Ctrl]}},mn),new n.SimpleCommand("selectRow",e,{label:"Select Row",description:"Select the rows for the selected cells.",shortcut:{key:"Space",modifiers:[n.KeyModifiers.Shift]}},Cn),new n.SimpleCommand("selectToColumnStart",e,{label:"Select To Column Start",description:"Select the columns to the beginning of the sheet."},()=>tn(!0)),new n.SimpleCommand("selectToColumnEnd",e,{label:"Select To Column End",description:"Select the columns to the end of the sheet."},()=>nn(!0)),new n.SimpleCommand("moveToRowStart",e,{label:"Move to Row Home",description:"Move to the beginning of the row.",shortcut:[{key:"Home"}]},()=>_t(!1)),new n.SimpleCommand("selectToRowStart",e,{label:"Select to Row Home",description:"Select to the beginning of the row.",shortcut:[{key:"Home",modifiers:[n.KeyModifiers.Shift]}]},()=>_t(!0)),new n.SimpleCommand("moveToSheetStart",e,{label:"Move to Sheet Home",description:"Move to the beginning of the sheet.",shortcut:[{key:"Home",modifiers:[n.KeyModifiers.Ctrl]}]},()=>qt(!1)),new n.SimpleCommand("selectToSheetStart",e,{label:"Select to Sheet Home",description:"Select to the beginning of the sheet.",shortcut:[{key:"Home",modifiers:[n.KeyModifiers.Ctrl,n.KeyModifiers.Shift]}]},()=>qt(!0)),new n.SimpleCommand("moveToRowEnd",e,{label:"Move to Row End",description:"Move to the end of the row.",shortcut:[{key:"End"}]},()=>Gt(!1)),new n.SimpleCommand("selectToRowEnd",e,{label:"Select to Row End",description:"Select to the end of the row.",shortcut:[{key:"End",modifiers:[n.KeyModifiers.Shift]}]},()=>Gt(!0)),new n.SimpleCommand("moveToSheetEnd",e,{label:"Move to Sheet End",description:"Move to the end of the sheet.",shortcut:[{key:"End",modifiers:[n.KeyModifiers.Ctrl]}]},()=>Vt(!1)),new n.SimpleCommand("selectToSheetEnd",e,{label:"Select to Sheet End",description:"Select to the end of the sheet.",shortcut:[{key:"End",modifiers:[n.KeyModifiers.Ctrl,n.KeyModifiers.Shift]}]},()=>Vt(!0)),new n.SimpleCommand("scrollToActiveCoords",e,{label:"Scroll to Active Cell",description:"Scroll to the Active Cell.",shortcut:{key:"Backspace",modifiers:[n.KeyModifiers.Ctrl]}},Kt),new n.SimpleCommand("scrollToActiveCoordsClearSelection",e,{label:"Scroll to Active Cell",description:"Scroll to the Active Cell and clear selection.",shortcut:{key:"Backspace",modifiers:[n.KeyModifiers.Shift]}},()=>{Bt(),Qe(b.cell,!0)}),new n.SimpleCommand("traverseSelectionRight",e,{label:"Traverse Right",description:"Traverse the selection moving rightward.",shortcut:{key:"Tab"}},cn),new n.SimpleCommand("traverseSelectionLeft",e,{label:"Traverse Left",description:"Traverse the selection moving leftward.",shortcut:{key:"Tab",modifiers:[n.KeyModifiers.Shift]}},ln),new n.SimpleCommand("traverseSelectionDown",e,{label:"Traverse Down",description:"Traverse the selection moving downward.",shortcut:[{key:"Enter"},{key:"NumpadEnter"}]},yn),new n.SimpleCommand("traverseSelectionUp",e,{label:"Traverse Up",description:"Traverse the selection moving upward.",shortcut:[{key:"Enter",modifiers:[n.KeyModifiers.Shift]},{key:"NumpadEnter",modifiers:[n.KeyModifiers.Shift]}]},vn),new n.SimpleCommand("moveLeft",e,{label:"Move Left",description:"Move active cell to the left.",shortcut:[{key:"ArrowLeft"}]},sn),new n.SimpleCommand("selectLeft",e,{label:"Select Left",description:"Extend selection left.",shortcut:[{key:"ArrowLeft",modifiers:[n.KeyModifiers.Shift]}]},x),new n.SimpleCommand("moveContentfulLeft",e,{label:"Move Left Contentful",description:"Move left to the next cell with content.",shortcut:[{key:"ArrowLeft",modifiers:[n.KeyModifiers.Ctrl]}]},S),new n.SimpleCommand("selectContentfulLeft",e,{label:"Select Left Contentful",description:"Extend selection left to the next cell with content.",shortcut:[{key:"ArrowLeft",modifiers:[n.KeyModifiers.Ctrl,n.KeyModifiers.Shift]}]},R),new n.SimpleCommand("moveRight",e,{label:"Move Right",description:"Move active cell to the right.",shortcut:[{key:"ArrowRight"}]},v),new n.SimpleCommand("selectRight",e,{label:"Select Right",description:"Extend selection right.",shortcut:[{key:"ArrowRight",modifiers:[n.KeyModifiers.Shift]}]},y),new n.SimpleCommand("moveContentfulRight",e,{label:"Move Right Contentful",description:"Move right to the next cell with content.",shortcut:[{key:"ArrowRight",modifiers:[n.KeyModifiers.Ctrl]}]},$),new n.SimpleCommand("selectContentfulRight",e,{label:"Select Right Contentful",description:"Extend selection right to the next cell with content.",shortcut:[{key:"ArrowRight",modifiers:[n.KeyModifiers.Ctrl,n.KeyModifiers.Shift]}]},ie),new n.SimpleCommand("moveUp",e,{label:"Move Up",description:"Move active cell to the up.",shortcut:[{key:"ArrowUp"}]},N),new n.SimpleCommand("selectUp",e,{label:"Select Up",description:"Extend selection up.",shortcut:[{key:"ArrowUp",modifiers:[n.KeyModifiers.Shift]}]},le),new n.SimpleCommand("moveContentfulUp",e,{label:"Move Up Contentful",description:"Move up to the next cell with content.",shortcut:[{key:"ArrowUp",modifiers:[n.KeyModifiers.Ctrl]}]},Y),new n.SimpleCommand("selectContentfulUp",e,{label:"Select Up Contentful",description:"Extend selection up to the next cell with content.",shortcut:[{key:"ArrowUp",modifiers:[n.KeyModifiers.Ctrl,n.KeyModifiers.Shift]}]},Ie),new n.SimpleCommand("moveDown",e,{label:"Move Down",description:"Move active cell to the down.",shortcut:[{key:"ArrowDown"}]},He),new n.SimpleCommand("selectDown",e,{label:"Select Down",description:"Extend selection down.",shortcut:[{key:"ArrowDown",modifiers:[n.KeyModifiers.Shift]}]},ge),new n.SimpleCommand("moveContentfulDown",e,{label:"Move Down Contentful",description:"Move down to the next cell with content.",shortcut:[{key:"ArrowDown",modifiers:[n.KeyModifiers.Ctrl]}]},ye),new n.SimpleCommand("selectContentfulDown",e,{label:"Select Down Contentful",description:"Extend selection down to the next cell with content.",shortcut:[{key:"ArrowDown",modifiers:[n.KeyModifiers.Ctrl,n.KeyModifiers.Shift]}]},De),new n.SimpleCommand("selectVisible",e,{label:"Select Visible",description:"Select visible cells only.",shortcut:{key:";",modifiers:[n.KeyModifiers.Alt]}},Sn),new n.SimpleCommand("traverseSelectionPreviousRange",e,{label:"Traverse Previous Range",description:"Traverse the selection to the previous range.",shortcut:{key:"ArrowLeft",modifiers:[n.KeyModifiers.Ctrl,n.KeyModifiers.Alt]}},Qt),new n.SimpleCommand("traverseSelectionNextRange",e,{label:"Traverse Next Range",description:"Traverse the selection to the next range.",shortcut:{key:"ArrowRight",modifiers:[n.KeyModifiers.Ctrl,n.KeyModifiers.Alt]}},En),new n.SimpleCommand("traverseSelectionCorners",e,{label:"Traverse Corners",description:"Traverse the selection through the corners of the selected range.",shortcut:{key:".",modifiers:[n.KeyModifiers.Ctrl]}},Rn)]},[]);return l.useMemo(()=>{o?.addCommands(Rt,!0)},[o]),{selection:et,setSelectionCell:Qe,setSelectionRanges:rt,overlay:ut,cursor:jt,onPointerDown:xn,clearLastSelection:we,newSelection:gt,modifySelection:lt,appendSelection:ve,clearSelections:Bt,isEntire:wt,navigate:Ge,navigateSelection:Ot}};
11
+ }`,se=document.createElement("style");return se.appendChild(document.createTextNode(F)),document.head.appendChild(se),se.sheet.insertRule(F,0),()=>{document.head.removeChild(se)}},[A]),A&&(P={strokeDasharray:`${q.dashLength}px ${q.dashGap}px`,strokeDashoffset:`${N}px`,animation:`${_} ${Z}ms linear infinite`,willChange:"stroke-dashoffset"}),te.jsx(ro,{x:c,y:d,width:u,height:a,stroke:o,fill:i,shapeRendering:"crispEdges",style:{...P,...s},...D})});function lo(t){var o,i,c="";if(typeof t=="string"||typeof t=="number")c+=t;else if(typeof t=="object")if(Array.isArray(t)){var d=t.length;for(o=0;o<d;o++)t[o]&&(i=lo(t[o]))&&(c&&(c+=" "),c+=i)}else for(i in t)t[i]&&(c&&(c+=" "),c+=i);return c}function Wt(){for(var t,o,i=0,c="",d=arguments.length;i<d;i++)(t=arguments[i])&&(o=lo(t))&&(c&&(c+=" "),c+=o);return c}zn.displayName="Selection";const Tn=l.memo(l.forwardRef((t,o)=>{const{x:i=0,y:c=0,borderWidth:d=1,size:u=6,borderStroke:a,corner:s,style:w,className:T,background:L,...M}=t;if(i===0||c===0)return null;let D=!0,A=!0,q=!0,N=!0;switch(s){case"tl":D=!1,A=!1;break;case"bl":D=!1,N=!1;break;case"br":q=!1,N=!1;break;case"tr":A=!1,q=!1}return te.jsx("div",{className:Wt("fill-handle",T),style:{position:"absolute",left:i-(u+(D?d:0))/2,top:c-(u+(A?d:0))/2,width:u,height:u,borderLeft:D?`${d}px ${a}`:void 0,borderTop:A?`${d}px ${a}`:void 0,borderRight:q?`${d}px ${a}`:void 0,borderBottom:N?`${d}px ${a}`:void 0,background:L,cursor:"crosshair",pointerEvents:"all",transitionDuration:"0ms",transitionTimingFunction:"linear",transitionDelay:"0",transitionProperty:"left, top",willChange:"left, top",...w},tabIndex:-1,...M})}));function Mn(t,o){if(typeof t=="function")return t(o);t&&(t.current=o)}Tn.displayName="FillHandle";var Uo=parseInt(l.version.split(".")[0],10)>=19?function(t){return o=>{const i=[];for(const c of t){const d=Mn(c,o),u=typeof d=="function";i.push(u?d:()=>Mn(c,null))}return()=>{for(const c of i)c()}}}:function(t){return o=>{for(const i of t)Mn(i,o)}};const To=n.ReactUtils.detectIt().supportsTouchEvents,fn=l.memo(l.forwardRef((t,o)=>{const{range:i,view:c,anchor:d,borderStroke:u="rgb(33, 115, 70)",background:a="white",borderWidth:s=1.5,size:w=22,style:T,className:L,selectionTouchPointerHandler:M,onTouchSelectStart:D,onTouchSelectEnd:A,currentTouchAnchor:q,scrollableElement:N,scrollableRoot:Z,...Ce}=t;if(!To)return null;const _=n.useCallbackRef(D,[D]),P=n.useCallbackRef(A,[A]),{bounds:F,coordsPivot:se,key:U}=l.useMemo(()=>{if(!i||!c)return null;let me=null,G=null;switch(d){case"tl":me={colIndex:i.colEnd,rowIndex:i.rowEnd},G={colIndex:i.colStart,rowIndex:i.rowStart};break;case"br":me={colIndex:i.colStart,rowIndex:i.rowStart},G={colIndex:i.colEnd,rowIndex:i.rowEnd};break;case"t":case"l":me={colIndex:i.colEnd,rowIndex:i.rowEnd};break;case"b":me={colIndex:i.colStart,rowIndex:i.rowStart};break;case"r":me={colIndex:i.colStart,rowIndex:i.rowEnd}}let z=c.getRangeCoordsBounds(G?{rowStart:G.rowIndex,colStart:G.colIndex,rowEnd:G.rowIndex,colEnd:G.colIndex}:i);const X=c.getBounds(),St=c.getViewportSize(),xt=X.x,ct=X.y,rt=St.width,de=St.height;switch(d){case"tl":break;case"br":z.x=z.x+z.width,z.y=z.y+z.height;break;case"t":z.x=rt/2-xt;break;case"b":z.x=rt/2-xt,z.y=z.y+z.height;break;case"l":z.y=de/2-ct;break;case"r":z.x=z.x+z.width,z.y=de/2-ct}const Pt=c.toClipBounds(z,0);return!Pt||Pt.width<=0||Pt.height<=0||z.x<0||z.y<0||z.x>rt||z.y>de?{bounds:null,coordsAnchor:null,coordsPivot:null,key:null}:{bounds:z,coordsAnchor:null,coordsPivot:me,key:"touchSelect-"+c.getAnchor()+"-"+d}},[i,c,d]),le=l.useRef(null),Le=l.useMemo(()=>{const me=G=>d==="t"||d==="b"?{...G,colIndex:void 0}:d==="l"||d==="r"?{...G,rowIndex:void 0}:G;return{processTouch:!0,consumeTouch:!0,onPointerDown:(G,z)=>{const X=me(c.getCellCoordsFromClient(G.clientX,G.clientY));return le.current={coordsPivot:se},_?.(d),M.onSelectionPointerDown(G,z,c,X,se,!1,!0)},onPointerMoveOrWait:(G,z,X)=>{const St=me(c.getCellCoordsFromClient(G.clientX,G.clientY));return M.onSelectionPointerMoveOrWait(G,z,X,c,St,le.current?.coordsPivot,!0,!0)},onPointerUp:(G,z,X)=>(le.current=null,P?.(d),M.onPointerUp(G,z,X))}},[M,i,c,d]),Re=n.useSynchronizedPointerHandler(Le),[Oe,{y:ae,x:pe}]=oo(),B=l.useRef(null),{getPortalContainer:C,isFullscreen:$e}=n.useFullscreenPortal(),[We,Q]=l.useState(null);return l.useEffect(()=>{const me=B.current?.getBoundingClientRect();if(!me||!F)return void Q(null);let G=0,z=0,X=N;for(;X;)G+=X.scrollLeft,z+=X.scrollTop,X=Z&&X===Z.parentElement?null:X.parentElement;Q(Jn.createPortal(te.jsx("div",{className:Wt("touch-select-handle",L),ref:o,style:{position:"absolute",left:G+(me?.x??0)-(w+s)/2,top:z+(me?.y??0)-(w+s)/2,width:w,height:w,borderWidth:`${s}px`,border:u,borderRadius:"50%",background:a,boxShadow:`0 0 0 1.5px ${a}`,cursor:"grab",pointerEvents:"all",opacity:q?0:1,transitionDuration:"160ms",transitionProperty:"opacity",...T},tabIndex:-1,onPointerDown:Re,...Ce}),Z??C(),U))},[ae,pe,F?.x,F?.y,F?.width,F?.height,L,q,a,w,s,u,N,$e]),F?te.jsxs(te.Fragment,{children:[te.jsx("div",{ref:Uo([Oe,B]),style:{position:"absolute",left:F.x,top:F.y,opacity:0}}),We]}):null}));fn.displayName="TouchSelectHandle";const It=-10,Lo=Object.freeze({rowStart:0,colStart:0,rowEnd:0,colEnd:0}),io=Object.freeze({colIndex:0,rowIndex:0}),Ln=Object.freeze([]),yt=t=>{if(t&&t.cell&&t.ranges&&t.rangeIndex>-1&&t.rangeIndex<=t.ranges.length)return t;const o={cell:null,ranges:t?.ranges??Ln};return o.rangeIndex=t?.rangeIndex??o.ranges.length-1,o.cell=t?.cell,!o.cell&&o.ranges.length>0&&(o.cell={rowIndex:o.ranges[o.rangeIndex].rowStart,colIndex:o.ranges[o.rangeIndex].colStart}),o.cell||(o.cell=io),r.CoordUtils.isEqualSelectionCoords(o,t)?t:o},hn=(t,o,i)=>{const c=t.getVisibleRangeCoords(),d=t.getScrollOrientation();!d.horizontal&&(o.colIndex>c.colEnd||o.colIndex<c.colStart)&&(o={...o,colIndex:o.colIndex>c.colEnd?c.colEnd+1:c.colEnd-1},t=i.current.getViewFromLocation(r.AnchorLocation.Center)),!d.vertical&&(o.rowIndex>c.rowEnd||o.rowIndex<c.rowStart)&&(o={...o,rowIndex:o.rowIndex>c.rowEnd?c.rowEnd+1:c.rowEnd-1},t=i.current.getViewFromLocation(r.AnchorLocation.Center)),t.scrollCellCoordsIntoView(o)},Oo=()=>!1;function gn(t,o){if(!t)throw new Error("Invariant failed")}const _n={"sheetxl-grid":"_sheetxl-grid_h9wwa_7"},zo=Object.freeze({top:0,left:0}),Ao=Object.freeze({bottom:-4,right:-4}),$o=Object.freeze({horizontal:!0,vertical:!0}),Gn=[r.AnchorLocation.TopLeft,r.AnchorLocation.Top,r.AnchorLocation.Left,r.AnchorLocation.Center],zt=3e3,Dn={},An=l.memo(l.forwardRef((t,o)=>{const{width:i,height:c,rowCount:d=1,columnCount:u=1,defaultRowHeight:a,defaultColumnWidth:s,getRowHeight:w,getColumnWidth:T,layout:L,onViewportScroll:M,onImmediateScroll:D,showGridLines:A=!0,gridLineColor:q="rgb(224, 224, 224)",gridLineRowsProps:N,gridLineColumnsProps:Z,clipCells:Ce=!0,cursor:_,freezeLeft:P=0,freezeTop:F=0,freezeLeftProps:se,freezeTopProps:U,cellRenderer:le,onViewportChange:Le,onFirstRender:Re,overlayRenderer:Oe,overlayProps:ae,overlays:pe,overlaysProps:B,allowOverlaysOverflow:C=!1,stageProps:$e,stageWrapper:We=null,hiddenRowsAt:Q,hiddenColumnsAt:me,hiddenCellAt:G,getVisibleCells:z,zoom:X=1,enableMouseWheel:St=!0,onWheelScroll:xt,getCellCoordsAsRangeCoords:ct=r.CoordUtils.cellToRange,scrollPoint:rt=zo,style:de={},...Pt}=t;gn(le),gn(!t?.children);const O=n.useCallbackRef(D,[D]),R=n.useCallbackRef(Le,[Le]),ve=n.useCallbackRef(M,[M]),ne=n.useCallbackRef(xt,[xt]),fe=n.useCallbackRef(Re,[Re]),ze=l.useRef(null),Je=l.useRef(null),mt=l.useRef(null),[Qe,Tt]=l.useReducer(x=>x+1,0),[st,b]=l.useState({left:rt?.left??0,top:rt?.top??0,horizontalScrollDirection:null,verticalScrollDirection:null}),oe=l.useRef(null),Ae=l.useRef(st),{top:lt,left:qe,verticalScrollDirection:jt,horizontalScrollDirection:$t}=st,bt=l.useRef(!1),Yt=eo({rowCount:d,columnCount:u,defaultRowHeight:a,defaultColumnWidth:s,getRowHeight:w,getColumnWidth:T}),At=l.useRef(null),Ee=l.useMemo(()=>{const x=L||Yt;return At.current=null,{getColOffset:S=>x.getColOffset(S)*X,getColIndex:S=>x.getColIndex(S/X),getRowOffset:S=>x.getRowOffset(S)*X,getRowIndex:S=>x.getRowIndex(S/X)}},[Yt,L,X]),Ut=(x,S,E)=>{const v=(S?.left??0)+0,y=(S?.top??0)+0;return{getColOffset:$=>x.getColOffset($)-v,getColIndex:$=>x.getColIndex($+v),getRowOffset:$=>x.getRowOffset($)-y,getRowIndex:$=>x.getRowIndex($+y)}},ut=n.useCallbackRef((x,S=!1)=>wn(x,S,Ee.getRowOffset,S?0:d),[d,Ee?.getRowOffset]),kt=n.useCallbackRef(Q??ut,[Q]),en=n.useCallbackRef((x,S=!1)=>wn(x,S,Ee.getColOffset,S?u:0),[u,Ee?.getColOffset]),Ht=n.useCallbackRef(me??en,[me]),je=l.useMemo(()=>Math.min(i??800,Ee.getColOffset(u)),[Ee.getColOffset,u,i]),Be=l.useMemo(()=>Math.min(c??600,Ee.getRowOffset(d)),[Ee.getRowOffset,d,c]),Ft=l.useCallback(x=>{r.CommonUtils.canUseDOM&&setTimeout(()=>{ze.current?.focus({preventScroll:!0,...x})},0)},[]),ht=l.useCallback(x=>ze.current?.contains(x)||Je.current?.contains(x),[]);l.useEffect(()=>{bt.current&&(oe.current&&oe.current.left!==Ae.current?.left&&oe.current.top!==Ae.current?.top||(oe.current=null,ve?.({left:qe,top:lt})))},[qe,lt]);const Lt=n.useCallbackRef(()=>({top:lt,left:qe}),[lt,qe]),ye=l.useMemo(()=>{const x=[];let S=0,E=0;typeof F=="number"?S=F:(S=F.index??0,E=(F.scrollOffset??0)*X);const v=E,y=Ee.getRowOffset(S),$=y-v;if(S>0){const Ke=Ut(Ee,{top:E+Ee.getRowOffset(0)}),Pe=Ee.getRowIndex(v),Ne=Ee.getRowIndex(y-1);let Ie;x[1]={minIndex:Pe,maxIndex:Ne,minCoord:0,maxCoord:S-1,minBounds:0,maxBounds:$,visibleIndices:()=>Ie||(Ie=Object.freeze(un(kt,Pe,Ne)),Ie),layout:Ke,maxVirtualBounds:y,scrollOffset:E,freezeOffset:E}}const ge=Math.max(0,Be-$),re=Ut(Ee,{top:lt+$}),ue=re.getRowIndex(0),V=re.getRowIndex(ge);let be;return x[0]={minIndex:ue,maxIndex:V,minCoord:S,maxCoord:d-1,minBounds:$,maxBounds:ge,visibleIndices:()=>be||(be=Object.freeze(un(kt,ue,V)),be),layout:re,maxVirtualBounds:Ee.getRowOffset(d),scrollOffset:lt,freezeOffset:(S>0?Ee.getRowOffset(S):0)-E},x},[Ee.getRowIndex,Ee.getRowOffset,kt,Be,d,F,lt,X]),He=l.useMemo(()=>{const x=[];let S=0,E=0;typeof P=="number"?S=P:(S=P.index??0,E=(P.scrollOffset??0)*X);const v=E,y=Ee.getColOffset(S),$=y-v;if(S>0){const Ke=Ut(Ee,{left:E+Ee.getColOffset(0)}),Pe=Ee.getColIndex(v),Ne=Ee.getColIndex(y-1);let Ie;x[1]={minIndex:Pe,maxIndex:Ne,minCoord:0,maxCoord:S-1,minBounds:0,maxBounds:$,visibleIndices:()=>Ie||(Ie=Object.freeze(un(Ht,Pe,Ne)),Ie),layout:Ke,maxVirtualBounds:y,scrollOffset:E,freezeOffset:E}}const ge=Math.max(0,je-$),re=Ut(Ee,{left:qe+$}),ue=re.getColIndex(0),V=re.getColIndex(ge);let be;return x[0]={minIndex:ue,maxIndex:V,minCoord:S,maxCoord:u-1,minBounds:$,maxBounds:ge,visibleIndices:()=>be||(be=Object.freeze(un(Ht,ue,V)),be),layout:re,maxVirtualBounds:Ee.getColOffset(u),scrollOffset:qe,freezeOffset:(S>0?Ee.getColOffset(S):0)-E},x},[Ee.getColIndex,Ee.getColOffset,Ht,je,u,P,qe,X]),it=l.useRef({}),pt=l.useRef([]),Se=l.useMemo(()=>{let x={};const S=(v,y,$,ge,re)=>{const ue={vertical:ge?.vertical||!1,horizontal:ge?.horizontal||!1};if(v>=He.length||y>=ye.length)return null;const V={rowStart:ye[y].minIndex,colStart:He[v].minIndex,rowEnd:ye[y].maxIndex,colEnd:He[v].maxIndex};if(V.rowStart>V.rowEnd||V.colStart>V.colEnd)return null;const be={getColIndex:ee=>He[v].layout.getColIndex(ee),getColOffset:ee=>He[v].layout.getColOffset(ee),getRowIndex:ee=>ye[y].layout.getRowIndex(ee),getRowOffset:ee=>ye[y].layout.getRowOffset(ee)},Ke=Object.freeze({left:re?.left??0,top:re?.top??0,right:re?.right??0,bottom:re?.bottom??0}),Pe=Object.freeze({x:He[v].minBounds,y:ye[y].minBounds,width:He[v].maxBounds,height:ye[y].maxBounds}),Ne=(ee,Ve)=>Xn(be,ee??V,Ve),Ie={width:He[v].maxVirtualBounds,height:ye[y].maxVirtualBounds},ie={left:He[v].scrollOffset,top:ye[y].scrollOffset},et={left:He[v].freezeOffset,top:ye[y].freezeOffset},Xe={width:je,height:Be};let Ue=null,Ye=null;const ft=(et.top+(ge.vertical?ie.top:0))/X,Fe=(et.left+(ge.horizontal?ie.left:0))/X;return{getStage:()=>ze.current??null,getVisibleRangeCoords:()=>V,toClipBounds:(ee,Ve)=>{let at,ke=0;return Ve===void 0||typeof Ve=="number"?(at=Ne(V),ke=Ve):at=Ve,((_e,De,Me=0)=>{if(_e.x>De.width||_e.y>De.height)return null;const dt={left:_e.x,top:_e.y,bottom:_e.height+_e.y,right:_e.width+_e.x},tt={left:De.x+Me,top:De.y+Me,bottom:De.height-2*Me+De.y,right:De.width-2*Me+De.x},gt={left:Math.max(dt.left,tt.left),top:Math.max(dt.top,tt.top),bottom:Math.min(dt.bottom,tt.bottom),right:Math.min(dt.right,tt.right)},Et={x:gt.left,y:gt.top,width:gt.right-gt.left,height:gt.bottom-gt.top};return Et.height<0||Et.width<0?null:Et})(ee??{x:0,y:0,width:Pe.width,height:Pe.height},at,ke)},toViewBounds:ee=>Fe===0&&ft===0&&X===1?ee:{x:(ee.x-Fe)*X,y:(ee.y-ft)*X,width:ee.width*X,height:ee.height*X},toAbsoluteBounds:ee=>Fe===0&&ft===0&&X===1?ee:{x:ee.x/X+Fe,y:ee.y/X+ft,width:ee.width/X,height:ee.height/X},getRelativePointFromClient:(ee,Ve)=>{const at=Nt(ee,Ve);return{x:at.x-Pe.x,y:at.y-Pe.y}},getLayout:()=>be,getCellCoordsAsRangeCoords:ct,getVisibleColumns:()=>He[v].visibleIndices(),getVisibleRows:()=>ye[y].visibleIndices(),getVisibleColumnOffsets:()=>(Ue||(Ue=qn(He[v].layout,!0,He[v].visibleIndices(),V.colStart,V.colEnd)),Ue),getVisibleRowOffsets:()=>(Ye||(Ye=qn(ye[y].layout,!1,ye[y].visibleIndices(),V.rowStart,V.rowEnd)),Ye),getTotalRangeCoords:()=>({colStart:He[v].minCoord,colEnd:He[v].maxCoord,rowStart:ye[y].minCoord,rowEnd:ye[y].maxCoord}),getRangeCoordsBounds:Ne,scrollCellCoordsIntoView:(ee,Ve)=>_t(ee,Ve,$),getCellCoordsFromClient:(ee,Ve,at=!1)=>{const ke=Nt(ee,Ve);if(!ke)return null;const _e=be.getColIndex(ke.x-Pe.x),De={rowIndex:be.getRowIndex(ke.y-Pe.y),colIndex:_e};if(at)return De;const Me=ct(De);return{rowIndex:Me.rowStart,colIndex:Me.colStart}},getZoom:()=>X,getAnchor:()=>$,getBounds:()=>Pe,getInsets:()=>Ke,getTotalSize:()=>Ie,getViewportSize:()=>Xe,getScrollTopLeft:()=>ie,getFreezeTopLeft:()=>et,getScrollOrientation:()=>ue,allViews:()=>x}};let E=x[r.AnchorLocation.Center]=S(0,0,r.AnchorLocation.Center,$o,Ao);return E&&(x[r.AnchorLocation.Center]=E),E=S(0,1,r.AnchorLocation.Top,{horizontal:!0}),E&&(x[r.AnchorLocation.Top]=E),E=S(1,0,r.AnchorLocation.Left,{vertical:!0}),E&&(x[r.AnchorLocation.Left]=E),E=S(1,1,r.AnchorLocation.TopLeft,{}),E&&(x[r.AnchorLocation.TopLeft]=E),it.current=null,x=Object.freeze(x)},[ye,He,ct]),Bt=Object.keys(Se),Rt=He[0]?.maxVirtualBounds??0,Ge=ye[0]?.maxVirtualBounds??0,Ct=l.useMemo(()=>({left:He[1]?He[1].layout.getColOffset(He[1].maxIndex+1):0,top:ye[1]?ye[1].layout.getRowOffset(ye[1].maxIndex+1):0}),[Se]);l.useEffect(()=>{if(pt.current.length>0){for(let x=0;x<pt.current.length;x++)pt.current[x]();pt.current=[]}},[Se]);const vt=n.useCallbackRef(()=>({containerWidth:je,containerHeight:Be,totalWidth:Rt,totalHeight:Ge}),[je,Be,Ee]);l.useEffect(()=>{!oe.current&&bt.current&&R({top:lt,left:qe,width:je,height:Be,totalWidth:Rt,totalHeight:Ge})},[lt,qe,Rt,Ge]),l.useEffect(()=>{bt.current&&R({top:lt,left:qe,width:je,height:Be,totalWidth:Rt,totalHeight:Ge})},[je,Be]);const Nt=l.useCallback((x,S)=>{gn(typeof x=="number"&&typeof S=="number");const E=ze.current?.getBoundingClientRect();return E?{x:x-E.x,y:S-E.y}:{x,y:S}},[]),xn=n.useCallbackRef(x=>Se[x]||null,[Se]),pn=n.useCallbackRef((x,S)=>{if(Object.keys(Se).length===1)return Se[r.AnchorLocation.Center];const E=Nt(x,S);if(!E)return null;const{x:v,y}=E;let $=null;const ge=Gn,re=ge.length;for(let ue=0;!$&&ue<re;ue++){const V=Se[ge[ue]];V&&Po(v,y,V.getBounds())&&($=V)}return $||($=Se[r.AnchorLocation.Center]),$},[Se,ct]),Ze=n.useCallbackRef(()=>Se[r.AnchorLocation.Center].getVisibleRangeCoords(),[Se[r.AnchorLocation.Center]]),Ot=l.useRef(null),mn=l.useCallback(()=>{Ot.current!==null&&r.CommonUtils.cancelTimeout(Ot.current),Ot.current=r.CommonUtils.requestTimeout(Cn,150)},[]),Cn=l.useCallback(()=>{Ot.current=null,b(x=>{const S={...x,verticalScrollDirection:null,horizontalScrollDirection:null};return Ae.current=S,S})},[]),Kt=n.useCallbackRef(x=>{const S=x?.left??x?.[0],E=x?.top??x?.[1];let v=Ae.current.left;S!==void 0&&S!==v&&(S>v?(v=Math.max(He?.[1]?.scrollOffset??0,S),v=Math.min(Rt-je,v)):v=Math.max(He?.[1]?.scrollOffset??0,S));let y=Ae.current.top;if(E!==void 0&&E!==y&&(E>y?(y=Math.max(ye?.[1]?.scrollOffset??0,E),y=Math.min(Ge-Be,y)):y=Math.max(ye?.[1]?.scrollOffset??0,E)),Ae.current.left===v&&Ae.current.top===y)return;let $=null,ge=null;Ae.current.left>v?$=r.Direction.Left:Ae.current.left<v&&($=r.Direction.Right),Ae.current.top>y?ge=r.Direction.Up:Ae.current.top<y&&(ge=r.Direction.Down),r.CommonUtils.throttle(()=>{b(re=>{const ue={...re,left:v,top:y,horizontalScrollDirection:$,verticalScrollDirection:ge};return Ae.current=ue,ue})},17)(),oe.current?.top===y&&oe.current?.left===v||(oe.current={left:v,top:y},O({left:v,top:y}),R({left:v,top:y,width:je,height:Be,totalWidth:Rt,totalHeight:Ge})),mn()},[Rt,Ge,ye,He]);l.useEffect(()=>{oe.current||Kt({left:qe,top:lt})},[je,Be]),l.useEffect(()=>{let x,S,E=!1;Ae.current.left>Rt&&(x=0,E=!0),Ae.current.top>Ge&&(S=0,E=!0),E&&Kt({left:x,top:S})},[Rt,Ge]),l.useLayoutEffect(()=>{oe.current={left:rt?.left,top:rt?.top},Kt(oe.current)},[rt?.left,rt?.top]);const tn=n.useCallbackRef(x=>{let S=x?.left??x?.[0],E=x?.top??x?.[1];if(S===void 0&&E===void 0)return;const v=x?.behavior??"auto";S!==void 0&&(S=Ae.current.left+(S??0)),E!==void 0&&(E=Ae.current.top+(E??0)),!(Ae.current.left===S&&Ae.current.top===E)&&Kt({left:S,top:E,behavior:v})},[]),nn=l.useCallback(x=>{let S=null;if(Object.keys(Se).length>1){const E=Gn,v=E.length;for(let y=0;!S&&y<v;y++){const $=Se[E[y]];$&&r.CoordUtils.isCellWithinRange(x,$.getVisibleRangeCoords())&&(S=$)}}return S||(S=Se[r.AnchorLocation.Center]),S},[Se]),_t=n.useCallbackRef((x,S={inline:"nearest",block:"nearest"},E=null)=>{const v={rowIndex:0,colIndex:0,...x};let y=null;if(E!==null){if(y=Se[E],y===null)return new Promise((Xe,Ue)=>{Ue("Invalid view")})}else y=nn(v);const $=ct(v),ge=y.getLayout(),re=ge.getColOffset($.colStart),ue=ge.getRowOffset($.rowStart),V=ge.getColOffset($.colEnd+1),be=ge.getRowOffset($.rowEnd+1),Ke=y.getBounds(),Pe=y.getTotalSize(),Ne=y.getScrollTopLeft(),Ie=((Xe,Ue,Ye=!0)=>{Ye=Ye===!0?{block:"start",inline:"end"}:Ye===!1?{block:"end",inline:"end"}:{block:"end",inline:"end",...Ye};const ft=jn(Ye.inline,Xe.x,Xe.x+Xe.width,Ue.left,Ue.left+Ue.width,Ue.totalWidth),Fe=jn(Ye.block,Xe.y,Xe.y+Xe.height,Ue.top,Ue.top+Ue.height,Ue.totalHeight);if(ft!==void 0||Fe!==void 0)return{left:ft,top:Fe}})({x:re+Ne.left,y:ue+Ne.top,width:V-re,height:be-ue},{left:Ne.left,top:Ne.top,width:Ke.width,height:Ke.height,totalWidth:Pe.width,totalHeight:Pe.height},S);if(!Ie)return Promise.resolve({...Ne});const ie={...Ie};ie.left>qe?ie.left+=20:ie.left<qe&&(ie.left-=0),ie.top>lt?ie.top+=20:ie.top<lt&&(ie.top-=0);const et=y.getScrollOrientation();return et.horizontal&&x.colIndex!==void 0||delete ie.left,et.vertical&&x.rowIndex!==void 0||delete ie.top,new Promise((Xe,Ue)=>{try{Kt(ie),Xe(ie)}catch(Ye){Ue(Ye)}})},[Rt,Ge,Se,ct]),qt=n.useCallbackRef(x=>{const S=x.shiftKey;x.preventDefault();const{deltaX:E,deltaY:v,deltaMode:y}=x;if(mt.current||ne?.(x)===!1)return;let ge=S?v:E,re=v;const ue=S||Math.abs(ge)>Math.abs(re);y===1&&(re*=0),mt.current=window.requestAnimationFrame(()=>{mt.current=null,tn(ue?{left:ge}:{top:re})})},[ne]),Gt=l.useCallback((x=null)=>{At.current=null,it.current=null,Tt()},[]);l.useLayoutEffect(()=>{Gt()},[le]);const Vt=n.useImperativeElement(o,()=>({stage:ze.current,focus:Ft,contains:ht,invalidate:Gt,scrollTo:Kt,scrollBy:tn,scrollCellCoordsIntoView:_t,getScrollPosition:Lt,getDimensions:vt,getViewport:Ze,handleWheel:qt,rowCount:d,columnCount:u,getLayout:()=>Ee,getRelativePointFromClient:Nt,getViewFromClient:pn,getViewFromCellCoords:nn,getViewFromLocation:xn,onViewChangeOnce:x=>{pt.current.push(x)}}),[d,u,Se]);l.useEffect(()=>(St&&Vt.current?.addEventListener("wheel",qt,{passive:!1}),bt.current=!0,oe.current=null,()=>{Vt.current?.removeEventListener("wheel",qt)}),[St]);const Zt=l.useRef([]),Sn=(x,S)=>{!x||!Oe||(Zt.current=[],S.push(((E,v)=>{const y=`view:${E.getAnchor()}:overlay:${S.length}`,$=Oe?.({key:y,view:E},re=>Zt.current[v]=re);if(!$)return null;const ge=E.getBounds();return te.jsx("div",{style:{position:"absolute",left:"0px",top:"0px",width:`${ge.width}px`,height:`${ge.height}px`,overflow:"hidden"},children:$},`overlay-${E.getAnchor()}-${v}`)})(x,0)))},bn=l.useMemo(()=>{const x={},S=Object.keys(Se),E=S.length;for(let v=0;v<E;v++){const y=S[v],$=[];Sn(Se[y],$),x[y]={overlays:$}}return x},[Qe,Oe,d,u,ye,He]),on=(x,S,E,v,y,$,ge)=>{if(!x)return;const re=x.getVisibleColumns(),ue=x.getVisibleRows();if(re.length===0||ue.length===0)return;let V=null;if(z)V=z(x);else{V=[];const ke=ue.length,_e=re.length;for(let De=0;De<ke;De++){const Me=ue[De];for(let dt=0;dt<_e;dt++){const tt={rowIndex:Me,colIndex:re[dt]};if(G?.(tt))continue;const gt={coords:tt,range:ct(tt)};V.push(gt)}}}const be=x.getVisibleColumnOffsets(),Ke=x.getVisibleRowOffsets(),Pe=x.getScrollTopLeft(),Ne=x.getFreezeTopLeft(),Ie=Pe.left+Ne.left,ie=Pe.top+Ne.top,et=Math.trunc(Ie/zt),Xe=Math.trunc(ie/zt),Ue={},Ye=(ke,_e,De,Me,dt)=>{const tt=`view:${ke.getAnchor()}:cell:${Wn(_e.rowIndex,_e.colIndex)}`,gt=Me.x,Et=Me.y,e=Math.trunc((Ie+gt)/zt)-et,h=Math.trunc((ie+Et)/zt)-Xe;Ue[h]||(Ue[h]={});let g=Ue[h][e];g||(g=Ue[h][e]=[]);let f=$?.get(tt);if(!f){const p=(Ie+gt)%zt,k=(ie+Et)%zt;f=le({key:tt,coords:_e,bounds:Me,zoom:X,range:De,view:ke,value:dt,style:{left:n.ReactUtils.boundPixel(p),top:n.ReactUtils.boundPixel(k),width:n.ReactUtils.boundPixel(Me.width,!0),height:n.ReactUtils.boundPixel(Me.height,!0)}})}ge?.set(tt,f),g.push(f)},ft=V.length;for(let ke=0;V&&ke<ft;ke++){const _e=V[ke],De=_e?.coords??_e;if(!De)continue;const Me=_e?.range??{rowStart:De.rowIndex,colStart:De.colIndex,rowEnd:De.rowIndex,colEnd:De.colIndex},dt=x.getVisibleRangeCoords();if(!r.CoordUtils.isRangesIntersect(Me,dt)&&!r.CoordUtils.isRangeWithinRange(Me,dt))continue;const tt=Me&&!r.CoordUtils.isSingleCell(Me);if(!tt&&G?.(De))continue;const gt=De.rowIndex,Et=De.colIndex,e=Ke[gt],h=be[Et];let g=null;e&&h&&(g={x:h.offset,y:e.offset,width:h.size,height:e.size});const f=Wn(Me.rowStart,Me.colStart);if(tt){if(y.has(f))continue;y.add(f),Me.rowEnd-Me.rowStart>0&&E.push(Me),Me.colEnd-Me.colStart>0&&v.push(Me)}if(tt&&(g=Xn(x.getLayout(),Me)),!g){console.warn("no bounds for cell",f);continue}const p=_e?.value;Ye(x,De,Me,g,p)}const Fe=Ie%zt,ee=ie%zt,Ve=Object.keys(Ue),at=Ve.length;for(let ke=0;ke<at;ke++){const _e=Ve[ke],De=Ue[_e];if(!De)continue;const Me=Object.keys(De),dt=Me.length;for(let tt=0;tt<dt;tt++){const gt=Me[tt],Et=De[gt];if(!Et)continue;const e=parseInt(_e),h=parseInt(gt),g=e+Xe,f=h+et,p=`view:${x.getAnchor()}:segment:${f}:${g}`;S.push(te.jsx("div",{className:"cell-container",style:{transform:`translate(${n.ReactUtils.boundPixel(h*zt-Fe,!0)}px, ${n.ReactUtils.boundPixel(e*zt-ee,!0)}px)`,willChange:"transform"},children:Et},p))}}},Mt=l.useMemo(()=>{const x=At.current,S=new Map,E={},v=Object.keys(Se),y=v.length;for(let $=0;$<y;$++){const ge=v[$],re=[],ue=[],V=[];on(Se[ge],V,re,ue,new Set,x,S),E[ge]={cells:V,rangesH:re,rangesV:ue}}return At.current=S,E},[Qe,d,u,ye,He,A,de,Ce,G,z,me,Q,ct]),rn=(x,S,E,v,y)=>{if(!x)return;const $=x.getLayout(),ge=window.devicePixelRatio||1,re=String(1/ge);if(S){const ue=`view:${x.getAnchor()}:hl:`,V=x.getVisibleRows();if((V?V.length:0)===0)return;const be=y.sort(r.CoordUtils.rowFirstRangeComparator),Ke=x.getVisibleRangeCoords(),Pe=0,Ne=Math.min(x.getBounds().width,$.getColOffset(Ke.colEnd+1));let Ie=[];for(let ie=0;ie<V.length&&V[ie]<=Ke.rowEnd;ie++){const et=V[ie];if(et<Ke.rowStart)continue;let Xe=!1;for(;be.length>0&&be[0].rowStart<=et;){const Fe=be.shift();Fe.rowEnd>et&&(Ie.push(Fe),Xe=!0)}Xe&&(Ie=Ie.sort(r.CoordUtils.columnFirstRangeComparator));const Ue=$.getRowOffset(et+1);let Ye=Pe;const ft=Ie.length;for(let Fe=0;Fe<ft+1;Fe++){let ee=Ye,Ve=Ne;const at=Ie[Fe];Fe<ft&&(Ve=Math.min(Ne,$.getColOffset(at.colStart)),Ye=Math.min(Ne,$.getColOffset(at.colEnd+1))),v.push(l.createElement("path",{d:`M ${n.ReactUtils.boundPixel(ee)} ${n.ReactUtils.boundPixel(Ue,!1,E)} L ${n.ReactUtils.boundPixel(Ve)} ${n.ReactUtils.boundPixel(Ue,!1,E)}`,stroke:q,strokeWidth:re,vectorEffect:"non-scaling-stroke",...N,key:ue+et+":"+Fe}))}for(let Fe=ft-1;Fe>=0;Fe--)Ie[Fe].rowEnd<=V[ie+1]&&Ie.splice(Fe,1)}}else{const ue=`view:${x.getAnchor()}:vl:`,V=x.getVisibleColumns(),be=V?V.length:0;if(be===0)return;const Ke=y.sort(r.CoordUtils.columnFirstRangeComparator),Pe=x.getVisibleRangeCoords(),Ne=0,Ie=Math.min(x.getBounds().height,$.getRowOffset(Pe.rowEnd+1));let ie=[];for(let et=0;et<be&&V[et]<=Pe.colEnd;et++){const Xe=V[et];if(Xe<Pe.colStart)continue;let Ue=!1;for(;Ke.length>0&&Ke[0].colStart<=Xe;){const ee=Ke.shift();ee.colEnd>Xe&&(ie.push(ee),Ue=!0)}Ue&&(ie=ie.sort(r.CoordUtils.rowFirstRangeComparator));const Ye=$.getColOffset(Xe+1);let ft=Ne;const Fe=ie.length;for(let ee=0;ee<Fe+1;ee++){let Ve=ft,at=Ie;const ke=ie[ee];ee<Fe&&(at=Math.min(Ie,$.getRowOffset(ke.rowStart)),ft=Math.min(Ie,$.getRowOffset(ke.rowEnd+1))),v.push(te.jsx("path",{d:`M ${n.ReactUtils.boundPixel(Ye,!1,E)} ${n.ReactUtils.boundPixel(Ve)} L ${n.ReactUtils.boundPixel(Ye,!1,E)} ${n.ReactUtils.boundPixel(at)}`,stroke:q,strokeWidth:re,vectorEffect:"non-scaling-stroke",...Z},ue+Xe+":"+ee))}for(let ee=Fe-1;ee>=0;ee--)ie[ee].colEnd<=V[et+1]&&ie.splice(ee,1)}}},Jt=x=>{if(!Mt)return;const S={},E=Bt.length;for(let v=0;v<E;v++){const y=Bt[v],$=Se[y],ge=[];rn($,x,0,ge,x?Mt[y].rangesH:Mt[y].rangesV);const re=$.getRangeCoordsBounds(),ue=Math.ceil(re.width),V=Math.ceil(re.height);S[y]=te.jsx("svg",{width:`${ue}`,height:`${V}`,viewBox:`0 0 ${ue} ${V}`,preserveAspectRatio:"none",shapeRendering:"crispEdges",style:{position:"absolute"},children:ge})}return S},ln=l.useMemo(()=>A===!0||A?.horizontal===!0?Jt(!0):null,[Qe,A,ye,F,P,q,N,d,u,je,Rt,Se,Mt]),cn=l.useMemo(()=>A===!0||A?.vertical===!0?Jt(!1):null,[Qe,A,He,F,P,q,Z,d,u,Be,Ge,Se,Mt]),vn=l.useMemo(()=>Ct.left===0?null:te.jsx(Un,{linePoints:[0,0,0,Be+1],bounds:{x:Ct.left,y:0,width:1,height:Be+1},...se}),[Qe,Ct.left,Be,se]),yn=l.useMemo(()=>Ct.top===0?null:te.jsx(Un,{linePoints:[0,0,je+1,0],bounds:{x:0,y:Ct.top,width:je+1,height:1},...U}),[Qe,Ct.top,je,U]),Qt=l.useMemo(()=>{const x=[],S=v=>{if(!v||!Se[v])return;const y=Se[v].getBounds();return te.jsxs("div",{style:{position:"absolute",pointerEvents:"none",left:y.x,top:y.y,width:y.width,height:y.height,clip:`rect(0, ${y.width+1}px, ${y.height+1}px, 0)`},className:`view view-${v}`,children:[ln?.[v],cn?.[v],Mt?.[v].cells]},`view:${v}`)},E=Bt.length;for(let v=0;v<E;v++)x.push(S(Bt[v]));return te.jsx(te.Fragment,{children:x})},[Se,ln,cn,Mt]),Rn=l.useMemo(()=>{if(!o)return;const x=(re,ue,V,be)=>{if(!be||be.length===0)return;const Ke=[],Pe=be.length;for(let Ne=0;Ne<Pe;Ne++){const Ie=be[Ne];let ie=re?.get(Ie);ie!==Dn&&(ie=Ie(V)??Dn),ue.set(Ie,ie),ie&&ie!==Dn&&Ke.push(ie)}return Ke},S=(re,ue,V)=>{if(!V)return;const be=V.getBounds(),Ke=V.getInsets(),Pe=V.getAnchor();return te.jsxs("div",{className:Wt("view",`view-${Pe}`,_n.view),style:{position:"absolute",pointerEvents:"none",left:be.x-Ke.left,top:be.y-Ke.top,width:be.width-(Ke.left+Ke.right),height:be.height-(Ke.top+Ke.bottom),clipPath:C?"inset(-2px)":"inset(0px)"},children:[x(re,ue,V,pe),bn?.[Pe].overlays]},`view:${Pe}`)},E=it.current,v={},y=[],$=Object.keys(Se),ge=$.length;for(let re=0;re<ge;re++){const ue=$[re],V=E?.[ue],be=v[ue]=new Map;y.push(S(V,be,Se[ue]))}return it.current=v,y},[Qe,Se,C,pe]),En=l.useMemo(()=>{const{style:x,...S}=$e??{};return te.jsx("div",{style:{width:je,height:Be,...x},className:"sheetxl-stage",tabIndex:0,ref:ze,...S,...Pt,children:We?We(Qt):Qt})},[je,Be,Qt,$e,We]),sn=l.useRef(!1);return l.useEffect(()=>{!sn.current&&Mt&&(sn.current=!0,fe?.(Vt.current))},[Mt]),te.jsxs("div",{className:Wt("sheetxl-grid",_n["sheetxl-grid"]),style:{overflow:"visible",cursor:_,maxWidth:je,maxHeight:Be,width:je,height:Be,...de},ref:Vt,children:[En,te.jsxs("div",{className:Wt("sheetxl-overlays"),ref:Je,...B,children:[Rn,vn,yn]})]})}));An.displayName="BaseGrid";const $n=l.memo(l.forwardRef((t,o)=>{const{width:i,height:c,style:d={},className:u,...a}=t,[s,{width:w,height:T}]=no(),L=i??w,M=c??T;return te.jsx("div",{className:u,style:{...d},children:te.jsx("div",{style:{position:"relative",top:"0px",left:"0px",width:"100%",height:"100%",maxWidth:"100%",maxHeight:"100%",boxSizing:"content-box"},ref:s,children:te.jsx(An,{ref:o,width:L,height:M,...a})})})}));$n.displayName="Grid";const co=l.memo(l.forwardRef((t,o)=>{const{showVerticalScrollbar:i,showHorizontalScrollbar:c,createHorizontalScrollbar:d,createVerticalScrollbar:u,createScrollCorner:a,viewport:s,onScrollViewport:w,style:T={},className:L,onScroll:M,...D}=t,[A,q]=l.useState(null),N=l.useRef(null),Z=l.useRef(null);gn(!s),l.useImperativeHandle(o,()=>Z.current&&N.current?Object.assign(Z.current,N.current):null);const Ce=l.useCallback(_=>{Z.current?.scrollTo(_),w?.(_)},[]);return te.jsx(n.ScrollPane,{className:L,style:T,ref:N,showVerticalScrollbar:i,showHorizontalScrollbar:c,createHorizontalScrollbar:d,createVerticalScrollbar:u,createScrollCorner:a,viewport:A,onScrollViewport:Ce,children:te.jsx($n,{style:{width:"100%",height:"100%"},...D,onViewportChange:_=>q(_),ref:Z})})}));co.displayName="ScrollableGrid";const Zn=()=>!1,so=l.memo(t=>{const{index:o,value:i,zoom:c,zoomScale:d=100,headerText:u=pe=>`${pe}`,headerStyle:a,headerStyleSelect:s=a,headerStyleSelectAll:w=s,headerStyleHover:T=w,verticalPadding:L=0,horizontalPadding:M=0,isSelected:D=Zn,isSelectedAll:A=Zn,coords:q,bounds:N,range:Z,orientation:Ce,view:_,style:P,...F}=t,se=d/100,U=l.useRef(null),[le,Le]=l.useState(!1),Re=D?.(o)||!1,Oe=A?.(o)?w:Re?s:a;let ae=Oe;if(le){let pe=T;typeof T=="function"&&(pe=T(Oe)),ae=r.CommonUtils.mergeContentful(Oe,pe)}return te.jsx("div",{ref:U,style:{background:ae.fill,color:ae.text?.fill,fontFamily:ae.text?.fontFamily??a.text?.fontFamily,fontSize:96*(ae.text?.fontSize??11)/72*se,fontStyle:ae.text?.fontStyle,fontWeight:ae.text?.fontWeight,lineHeight:1.2,display:"flex",justifyContent:"center",alignItems:"end",pointerEvents:"auto",paddingBottom:`${se}px`,...P,left:P.left-(Ce===r.RangeOrientation.Column?1:0),top:P.top-(Ce===r.RangeOrientation.Row?1:0),width:P.width+1,height:P.height+1,overflow:"hidden"},...F,onMouseMove:pe=>{n.ReactUtils.detectIt().primaryInput!=="touch"&&pe.buttons===0&&Le(!0)},onMouseOut:pe=>{Le(!1)},children:u(o)})});so.displayName="HeaderRenderer";const ao="ew-resize",uo="ns-resize",ho=l.memo(l.forwardRef((t,o)=>{const{orientation:i,view:c,index:d,className:u,style:a,disabled:s=!1,disabledResize:w=!1,isNextHidden:T,isHidden:L,isSelected:M,isSelectedAll:D,showTouchDivider:A,headerStyle:q,headerStyleSelect:N,headerStyleSelectAll:Z,headerStyleHover:Ce,bounds:_,onPointerDown:P,onAutoFit:F,...se}=t,U=i===r.RangeOrientation.Column;let le=q;M&&N&&(le=N),D&&Z&&(le=Z);const Le=n.ReactUtils.detectIt().primaryInput==="touch";let Re=U?14:8,Oe=Re/2,ae=0;T&&(ae=-2),L&&(ae=2),L&&(Re=Re/2+ae,Oe=2*ae);let pe=le.dividerStrokeFill??le.strokeFill;return!(M||D)&&ae===0&&(pe=`linear-gradient(${U?180:90}deg, ${le.fill}, ${pe} 55%, ${pe} 100%)`),te.jsxs("div",{className:Wt("header-divider",{disabled:s},u,`index-${d}`),ref:o,onPointerDown:Le?void 0:P,onDoubleClick:Le?void 0:()=>F?.(),style:{top:(U?0:-Re/2+(ae-1))+"px",left:(U?-Re/2+(ae-1):0)+"px",width:U?Re:"calc(100% + 1px)",height:U?"calc(100% + 1px)":Re,position:"absolute",overflow:"visible",pointerEvents:"all",cursor:s||w||Le?void 0:U?ao:uo,...a},...se,children:[te.jsx("div",{style:{position:"relative",top:`${U?0:Oe}px`,left:`${U?Oe:0}px`,width:U?1:"100%",height:U?"100%":1,background:pe},onDoubleClick:()=>F?.()}),A&&Le?te.jsx("div",{style:{position:"absolute",cursor:"grab",zIndex:1,borderRadius:"4px",right:U?"-6px":"2px",bottom:U?"2px":"-9px",height:"24px",width:U?"24px":"18px",maxHeight:U?"calc(100% - 4px)":void 0,maxWidth:U?void 0:"calc(100% - 4px)",background:le.fill,border:`${Z.edgeStrokeFill} solid 1px`,boxShadow:`0.5px 0.5px 0px 0px ${q.text.fill}`,display:"flex",alignItems:"center",justifyContent:"center"},onPointerDown:P,children:te.jsx("div",{style:{width:"6.4px",height:"12px",backgroundImage:`url("data:image/svg+xml,%3Csvg width='6.4' height='12' viewBox='0 0 9.6 16' version='1.1' fill='${encodeURIComponent(N.text.fill)}' xmlns='http://www.w3.org/2000/svg' xmlns:svg='http://www.w3.org/2000/svg'%3E%3Cpath d='M 9.60008,14.40009 C 9.60008,15.28374 8.88368,16 8.00003,16 7.11639,16 6.40012,15.28374 6.40012,14.40009 c 0,-0.88365 0.71627,-1.60005 1.59991,-1.60005 0.88365,0 1.60005,0.7164 1.60005,1.60005 m 0,-6.40012 c 0,0.88364 -0.7164,1.60004 -1.60005,1.60004 -0.88364,0 -1.59991,-0.7164 -1.59991,-1.60004 0,-0.88365 0.71627,-1.60005 1.59991,-1.60005 0.88365,0 1.60005,0.7164 1.60005,1.60005 m 0,-6.40006 c 0,0.88365 -0.7164,1.60005 -1.60005,1.60005 -0.88364,0 -1.59991,-0.7164 -1.59991,-1.60005 C 6.40012,0.71626 7.11639,0 8.00003,0 8.88368,0 9.60008,0.71626 9.60008,1.59991 M 3.19996,14.40009 C 3.19996,15.28374 2.48369,16 1.60005,16 0.7164,16 0,15.28374 0,14.40009 c 0,-0.88365 0.7164,-1.60005 1.60005,-1.60005 0.88364,0 1.59991,0.7164 1.59991,1.60005 m 0,-6.40012 c 0,0.88364 -0.71627,1.60004 -1.59991,1.60004 C 0.7164,9.60001 0,8.88361 0,7.99997 0,7.11632 0.7164,6.39992 1.60005,6.39992 c 0.88364,0 1.59991,0.7164 1.59991,1.60005 m 0,-6.40006 c 0,0.88365 -0.71627,1.60005 -1.59991,1.60005 C 0.7164,3.19996 0,2.48356 0,1.59991 0,0.71626 0.7164,0 1.60005,0 2.48369,0 3.19996,0.71626 3.19996,1.59991' /%3E%3C/svg%3E%0A")`,backgroundRepeat:"no-repeat",backgroundPosition:"center",transform:U?void 0:"rotate(90deg)"}})}):null]})})),Bo=(t,o)=>te.jsx(ho,{...t,ref:o}),Ko=l.memo(l.forwardRef((t,o)=>{const{orientation:i,view:c,index:d,disabled:u=!1,disabledResize:a=!1,resizeThreshold:s=1,dividerRenderer:w=Bo,onDividerMouseDown:T,onDividerResizeStart:L,onDividerResize:M,onDividerResizeEnd:D,onDividerMouseUp:A,onDividerAutoFit:q,onPointerDown:N,...Z}=t,Ce=n.useCallbackRef(N,[N]),_=n.useCallbackRef(q,[q]),P=i===r.RangeOrientation.Column;let F=P?c.getVisibleColumns():c.getVisibleRows(),se=null;F.length>0&&(P?se=c.getRangeCoordsBounds({rowStart:0,rowEnd:0,colStart:F[0],colEnd:F[F.length-1]}):c.getRangeCoordsBounds({rowStart:F[0],rowEnd:F[F.length-1],colStart:0,colEnd:0}),se=c.toClipBounds(se,It));const U=l.useRef(null),[le,Le]=l.useState(null),Re=(Q,me)=>P?Q.clientX-me.clientX:Q.clientY-me.clientY,Oe=c.getLayout(),ae=P?Oe.getColOffset(d+1):Oe.getRowOffset(d+1),pe=n.useSynchronizedPointerHandler({processTouch:!0,onPointerDown:Q=>{if(Ce?.(Q),!u&&!a){const me=P?Oe.getColOffset(d):Oe.getRowOffset(d),G=ae-me;U.current={isResizing:!1,startSize:G,index:d,view:c,orientation:i,onDividerMouseDown:T,onDividerResizeStart:L,onDividerResize:M,onDividerResizeEnd:D,onDividerMouseUp:A},Le(U.current),T?.(d,G)}Q.stopPropagation(),Q.preventDefault()},onPointerUp:(Q,me,G)=>{if(!U.current)return;U.current.isResizing&&U.current.onDividerResizeEnd?.(U.current.index,Math.max(0,U.current.startSize+Re(Q,G)),U.current.startSize);const z=U.current;U.current=null,Le(U.current),z.onDividerMouseUp?.(z.index)},onPointerMoveOrWait:(Q,me,G)=>{if(!U.current)return;const z=Re(Q,G);U.current.isResizing?U.current.onDividerResize?.(U.current.index,Math.max(0,U.current.startSize+z),U.current.startSize):Math.abs(z)>Math.max(1,s)&&(U.current={...U.current,isResizing:!0},Le(U.current),U.current.onDividerResizeStart?.(U.current.index,Math.max(0,U.current.startSize+z))),Q.stopPropagation(),Q.preventDefault()}}),B=n.useCallbackRef(()=>{_?.(d)},[d]);if(!se)return;const C=w({bounds:se,orientation:i,view:c,index:d,disabled:u,disabledResize:a,onAutoFit:B,onPointerDown:pe,...Z},o);if(!C)return;const{getPortalContainer:$e}=n.useFullscreenPortal();let We=null;return le&&le.isResizing&&le.index===d&&(We=Jn.createPortal(te.jsx("div",{style:{position:"absolute",cursor:P?ao:uo,left:0,top:0,width:"100%",height:"100%"}}),$e(),"divider:"+d)),te.jsxs(te.Fragment,{children:[We,te.jsx("div",{className:Wt("header-divider-anchor"),style:{position:"absolute",pointerEvents:"auto",top:`${P?se.y:ae}px`,left:`${P?ae:se.x}px`,width:(P?0:se.width-1)+"px",height:(P?se.height-1:0)+"px",display:"flex"},tabIndex:-1,children:C})]})}));class Fo{naturalDimensions(o,i={}){const c=document.createElement("div");let d=i?.lineHeight??"1";!i?.lineHeight&&i.paintableText?.fontSize&&(d=Math.ceil(1.2*i.paintableText.fontSize)+"px");const u=document.createElement("div");u.style.visibility="hidden",u.style.position="absolute",u.style.textRendering="geometricprecision",u.style.display="inline-grid",u.style.overflowWrap="break-word",u.style.maxWidth=i.maxWidth?i.maxWidth+"px":"100%",u.style.lineHeight=d,u.style.letterSpacing=(i.paintableText?.letterSpacing??0)+"px",u.style.fontSize=i.paintableText?.fontSize?i.paintableText.fontSize+"px":"unset",u.style.fontFamily=i.paintableText?.fontSize?i.paintableText.fontFamily:"unset",u.style.fontWeight=i.paintableText?.fontWeight?""+i.paintableText.fontWeight:"400",u.style.fontStyle=i.paintableText?.fontStyle?i.paintableText.fontStyle:"normal",u.style.whiteSpace=i.paintableText?.wrap==="wrap"?"break-spaces":"pre",c.appendChild(u);const a=o.split(`
12
+ `);for(let w=0;w<a.length;w++){let T=document.createElement("span");u.appendChild(T),T.textContent=a[w]}a.length!==0&&a[a.length-1].length!==0||u.appendChild(document.createElement("br")),document.body.appendChild(u);let s=u.getBoundingClientRect();return u.remove(),{width:s.width,height:s.height,maxLineHeight:1.2*(i.paintableText?.fontSize||1056/72)}}}const fo=(t=void 0)=>Object.freeze({clean:t,dirty:void 0,editMode:!1}),Vo=fo(),Wo=l.memo(l.forwardRef((t,o)=>{const{editState:i=Vo,defaultTextStyle:c,onStartEdit:d,onChangeEdit:u,onSubmitEdit:a,onCancelEdit:s,onDoneEdit:w,containerBounds:T,setNaturalSize:L,onNavigate:M,textProperties:D,style:A,autoFocus:q,...N}=t,Z=l.useRef(null),{width:Ce=0}=T??{},[_,P]=l.useState(()=>i);l.useEffect(()=>{P(i)},[i]);const F=D?.align||"left",se=D?.vAlign||"middle",U=D?.fill||"#040404",le=D?.wrap||"wrap",Le=D?.fontFamily||"Calibri",Re=D?.fontSize||11,Oe=D?.fontWeight||400,ae=D?.fontStyle||"normal",pe=_.dirty??_.clean??"";let B=2;const C=96*Re/72,$e=1.2*C;se==="right"&&(B+=1);const We=l.useMemo(()=>new Fo().naturalDimensions(pe,{maxWidth:le==="wrap"?Ce-B:void 0,lineHeight:`${$e}px`,paintableText:{fontStyle:ae,wrap:le,letterSpacing:-.25}}),[pe,le,B,C,Le,Oe,ae,L,Ce]),Q=l.useCallback(()=>We.maxLineHeight?We.maxLineHeight+"px":"1.2",[We]),[me,G]=l.useState(Q);l.useLayoutEffect(()=>{G(Q())},[T,We]),l.useLayoutEffect(()=>{L?.({width:le==="wrap"?void 0:We.width+B,height:We.height})},[We,L]);const z=n.useCallbackRef(u,[u]),X=n.useCallbackRef(R=>{if(_.dirty===R)return;const ve={..._};ve.dirty=R,Z.current,P(ve),z?.(ve)},[_]),St=n.useCallbackRef(R=>{if(_.editMode===R)return;const ve={..._};ve.editMode=R,P(ve),z?.(ve)},[_]),xt=n.useCallbackRef(()=>{try{return a?.(_),w?.(),!0}catch{return!1}},[a,_]),ct=n.useCallbackRef(()=>{P(i),s?.(),w?.()},[s,i]),rt=n.useCallbackRef(R=>{if(!Z.current)return;if(R.isDefaultPrevented(),!(R.isTrusted||R.nativeEvent.ctrlKey||R.nativeEvent.metaKey||R.nativeEvent.altKey||R.nativeEvent.isComposing)&&On.indexOf(R.nativeEvent.key)!==-1){const ne={..._};return ne.dirty=R.nativeEvent.key==="Backspace"?"":(ne.dirty??"")+R.key,P(ne),z?.(ne),void R.preventDefault()}const ve=R.nativeEvent.shiftKey;if(R.which===n.KeyCodes.Escape)return R.preventDefault(),void ct();if(R.which===n.KeyCodes.F2)return St(!0),void R.preventDefault();if(R.which===n.KeyCodes.Enter&&(R.preventDefault(),xt()&&M?.(ve?r.Direction.Up:r.Direction.Down)),R.which===n.KeyCodes.Tab)return R.preventDefault(),void(xt()&&M?.(ve?r.Direction.Left:r.Direction.Right));if(!_.editMode){let ne=null;switch(R.which){case n.KeyCodes.Left:ne=r.Direction.Left;break;case n.KeyCodes.Right:ne=r.Direction.Right;break;case n.KeyCodes.Up:ne=r.Direction.Up;break;case n.KeyCodes.Down:ne=r.Direction.Down}if(ne)return void xt()}},[_,M]),[de,Pt]=l.useState(!q);l.useEffect(()=>{Pt(!1)},[]);const O=n.useImperativeElement(o,()=>({startEdit(R){let ve=R?.initialSelection;if(!ve){const fe=Z.current.value.length??0;ve={start:fe,end:fe,direction:"forward"}}Z.current?.setSelectionRange(ve.start,ve.end,ve.direction);const ne={...i,editMode:R?.editMode??!1};R?.text!==void 0&&(ne.dirty=R.text),ne.editMode===i.editMode&&ne.dirty===i.dirty||(P(ne),z?.(ne))},submitEdit:()=>xt(),cancelEdit(){ct()},autoFocus(){Z.current?.focus()},getLineHeight:()=>We?.maxLineHeight??$e,dispatchEvent:R=>Z.current.dispatchEvent(R)}),[i,d]);return te.jsx("div",{ref:O,...N,style:{background:"transparent",display:"flex",flexGrow:1,alignSelf:"center",height:We.height,maxWidth:"100%",maxHeight:"100%",...A},children:te.jsx("textarea",{spellCheck:"false",ref:Z,value:pe,autoFocus:!1,disabled:de,name:"cell-editor",autoComplete:"off",autoCapitalize:"off",style:{flex:"1 1 100%",position:"relative",fontSize:`${C}px`,fontFamily:`${Le}`,fontWeight:`${Oe}`,fontStyle:`${ae}`,padding:"0px",marginRight:F==="right"?"3px":"0px",marginLeft:F==="left"?"2px":"0px",lineHeight:me,height:We.height,textRendering:"geometricPrecision",letterSpacing:"-0.25px",boxSizing:"border-box",borderWidth:0,outline:"none",resize:"none",overflow:"hidden",verticalAlign:"baseline",textAlign:F,background:"transparent",color:U,marginBottom:"0px",userSelect:"text",maxHeight:"100%",whiteSpace:le==="wrap"?"break-spaces":"pre",wordWrap:"break-word"},onChange:R=>{X(R.target.value)},onDoubleClick:R=>{R.isTrusted},onMouseDown:R=>{St(!0)},onKeyDown:rt})})})),jo=l.memo(t=>{const{value:o,view:i,bounds:c,range:d,zoom:u,children:a,style:s,...w}=t,T=s?.fontSize||1056/72;return te.jsx("div",{style:{padding:"2px 4px",fontFamily:"Calibri",letterSpacing:-.25,lineHeight:1.2,fontSize:T,...s},...w,children:o})});exports.BaseGrid=An,exports.DefaultCellEditor=Wo,exports.DefaultCellRenderer=jo,exports.DefaultHeaderDivider=ho,exports.FillHandle=Tn,exports.Grid=$n,exports.HeaderDivider=Ko,exports.HeaderRenderer=so,exports.RESET_SCROLL_EVENTS_DEBOUNCE_INTERVAL=150,exports.SELECTION_CLIP_INSETS=It,exports.STANDARD_KEY_CHARS=On,exports.SVGLine=Un,exports.SVGRect=ro,exports.ScrollableGrid=co,exports.Selection=zn,exports.TouchSelectHandle=fn,exports.defaultSelectionRenderer=Yn,exports.getDefaultStringEditState=fo,exports.safeSelectionCoords=yt,exports.useAnimatedMeasure=oo,exports.useCellLayout=eo,exports.useHeaderSelection=({gridRef:t,gridMainRef:o,orientation:i=r.RangeOrientation.Row,headerCount:c,selectionPolicy:d="multiple",newSelectionMode:u="clear",alwaysScrollToActiveCoords:a=!0,onDragStart:s,onDragEnd:w,pointerDownInterceptor:T,pointerMoveInterceptor:L,onPointerUp:M,newSelection:D,modifySelection:A,appendSelection:q,clearSelections:N})=>{const Z=c??((i===r.RangeOrientation.Row?t.current?.rowCount:t.current?.columnCount)||0),Ce=l.useRef(null),_=l.useRef(null),P=l.useRef(!1),F=l.useRef(null),se=l.useCallback(B=>i===r.RangeOrientation.Column?{rowIndex:0,colIndex:B.colIndex}:{rowIndex:B.rowIndex,colIndex:0},[i]),U=l.useCallback(B=>i===r.RangeOrientation.Column?{rowIndex:o.current?o.current.rowCount-1:0,colIndex:B.colIndex}:{rowIndex:B.rowIndex,colIndex:o.current?o.current.columnCount-1:0},[i]),le=B=>{_.current=U(B),A(_.current,Ce.current)},Le=l.useCallback((B,C)=>{if(!t.current)return;const $e=t.current.getViewFromClient(B,C)?.getCellCoordsFromClient(B,C);return $e?(i===r.RangeOrientation.Column?$e.rowIndex=o.current.getViewport().rowStart:$e.colIndex=o.current.getViewport().colStart,$e):void 0},[]),Re=l.useCallback((B,C=!1)=>{let $e=B;return C||($e={...B},i===r.RangeOrientation.Row?delete $e.colIndex:delete $e.rowIndex),o.current?.scrollCellCoordsIntoView($e)},[i]),Oe=n.useCallbackRef(w,[w]),ae=n.useCallbackRef(s,[s]),pe=l.useMemo(()=>({onPointerDown:B=>{if(!t||!t.current||B.nativeEvent.defaultPrevented)return;const C=Le(B.nativeEvent.clientX,B.nativeEvent.clientY);if(!C)return;B.nativeEvent.which,n.MouseButtonCodes.Right;const $e=B.nativeEvent.shiftKey,We=B.nativeEvent.ctrlKey||B.nativeEvent.metaKey;if(T?.(B,C)===!1)return;ae?.(),P.current=!0;const Q=o.current?.getViewFromClient(B.nativeEvent.clientX,B.nativeEvent.clientY),me=((G,z)=>i===r.RangeOrientation.Column?{...G,rowIndex:z.rowStart}:{...G,colIndex:z.colStart})(C,Q.getVisibleRangeCoords());if($e)le(C);else{if(We)return((G,z=G,X)=>{Ce.current=se(G),_.current=U(z),q(Ce.current,_.current,X)})(C,C,me),void(a&&Re(me,!0));((G,z=G,X)=>{Ce.current=se(G),_.current=U(z),D(Ce.current,_.current,X)})(C,C,me),le(C),a&&Re(me,!0)}},onPointerMoveOrWait:r.CommonUtils.throttle(B=>{if(!P.current||!t?.current)return;const C=Le(B.clientX,B.clientY);if(C&&L?.(B,C)!==!1){if(r.CoordUtils.isEqualCells(F.current,C))return N();le(C),Re(C)}},60),onPointerUp:B=>{P.current=!1,Oe?.(),M?.(B)},processTouch:!0,consumeTouch:!0}),[d,a,Z,u,N,T,M]);return{onPointerDown:n.useCallbackRef(n.useSynchronizedPointerHandler(pe),[]),getCellCoordsFromClient:Le}},exports.useKeyboardEditorOverlay=t=>{const{view:o,canEdit:i=po,getCellEditor:c,onBeforeStartEdit:d,onStartEdit:u,onSubmitEdit:a,onCancelEdit:s,onDoneEdit:w,isEditorStartKeyEvent:T=mo,isEditorStartPointerEvent:L=Co,containerProps:M,borderStrokeFill:D,borderStrokeWidth:A=2,getRangeCoords:q=null,activeCoords:N,alignment:Z=n.HorizontalAlignment.Left}=t,[Ce,_]=l.useState(!1),[P,F]=l.useState(void 0),se=n.useCallbackRef((O,R,ve,ne,fe,ze)=>{if(!R)return null;const Je=fe?.(R,O),mt=O.getRangeCoordsBounds(Je),Qe=O.toClipBounds(mt),Tt=mt,st=O.getZoom();if(!Qe)return null;ve&&(ve*=st),ne&&(ne*=st);let b=Tt,oe=!1;if(ve!==void 0){let qe={...Je},jt=0;for(;!oe&&b.width<=ve&&jt<20;){jt++,jt>19&&console.warn("max width reached");const $t=O.getTotalRangeCoords(),bt=O.getLayout();ze===n.HorizontalAlignment.Left?qe.colEnd+1<$t.colEnd?qe.colEnd=bt.getColIndex(b.x+ve):oe=!0:ze===n.HorizontalAlignment.Right?qe.colStart-1>=0?qe.colStart=bt.getColIndex(b.x-(ve-b.width)):oe=!0:ze===n.HorizontalAlignment.Center&&qe.colEnd+1<$t.colEnd&&qe.colStart-1>=0?(qe.colStart=bt.getColIndex(b.x-(ve-b.width)/2),qe.colEnd=bt.getColIndex(b.x+b.width+(ve-b.width)/2)):oe=!0,oe||(b=O.getRangeCoordsBounds(qe))}}b.height=Tt.height,ne!==void 0&&(b.height=Math.max(ne+1,Tt.height));const{width:Ae,height:lt}=O.getViewportSize();return{x:b.x??0,y:b.y??0,height:Math.min(lt-b.y,b.height)+1,width:Math.min(Ae-b.x,b.width)+1}},[Z]),U=n.useCallbackRef(i,[i]),le=l.useCallback(()=>{o?.getStage()?.focus()},[o]),Le=l.useRef(null),Re=n.useCallbackRef(O=>{d?.(O),z(),_(!0),Le.current=null},[d]),Oe=n.useCallbackRef(O=>{u?.(O.coords)},[u]),ae=n.useCallbackRef(O=>{O.isSubmitted||O.isCancelled||(C.current.isEditorClosed=!0,le(),O.isCancelled=!0,s?.(O.coords),z())},[s]),pe=n.useCallbackRef(O=>{if(O.isSubmitted||O.isCancelled)return!1;try{return Le.current=O.coords,O.isEditorClosing=!0,O.isSubmitted=!0,O.isEditorSubmitted||(O.isEditorSubmitted=!0,O.editorRefs[0]?.submitEdit?.()),O.coords,a?.(O.coords),O.isEditorClosed=!0,le(),z(),!0}catch(R){throw O.isEditorClosing=!1,O.isSubmitted=!1,R}},[a]),B=n.useCallbackRef(O=>{_(!1),w?.(O.coords),z()},[w]),C=l.useRef(null),$e=l.useRef(null),We=l.useRef(null),Q=l.useRef([]),[me,G]=l.useReducer(O=>O+1,0),z=l.useCallback(O=>{O&&Q.current.push(O),G()},[]),X=n.useCallbackRef(O=>{if(O.defaultPrevented||O.isSynthetic||!o)return;const R=o?.getCellCoordsFromClient(O.clientX,O.clientY);R&&z({eventType:"pointer",event:O,coords:R})},[o]),St=n.useCallbackRef(O=>{const R=O.nativeEvent;X(R)},[o]),xt=n.useCallbackRef(O=>{if(O.defaultPrevented||O.isSynthetic||!o?.getStage())return;const R=$e.current;T(O,R)&&(O.stopPropagation(),O.preventDefault()),O.key,z({eventType:"keyboard",event:O,coords:R})},[o]);l.useLayoutEffect(()=>{const O=(ne,fe)=>{const ze=fe?.cell??ne;if(!ze)return null;const Je=ze;if(!U(ze))return null;Re?.(ze);const mt=r.CommonUtils.uuidV4();fe=Object.freeze({autoFocus:!0,...fe}),We.current=ze;const Qe={coords:Je,startEvent:fe,uuid:mt,isMounted:!1,isStarted:!1,isSubmitted:!1,isEditorSubmitted:!1,isEditorClosing:!1,isEditorClosed:!1,isCancelled:!1,events:[],editorRefsDispatchEditorEvent:[],editorRefs:[],onMount:Tt=>{Qe.isMounted||(Qe.isMounted=!0,z())},onUnmount:Tt=>{if(Qe.editorRefs.length===0){const st=()=>{Qe.isMounted=!1,z()};if(document.activeElement!==document.body)st();else{const b=oe=>{oe.defaultPrevented||oe.target!==document.body||xt(oe)};window.addEventListener("keydown",b,!0),o.getStage()?.addEventListener("focusin",()=>{window.removeEventListener("keydown",b),st()},bo),le()}}}};return Qe};if(Q.current.length<=0&&!C.current)return;const R=Q.current[0];Fn(R),(ne=>{const fe=[],ze=ne?.length??0;for(let Je=0;Je<ze;Je++){const mt=ne[Je];fe.push(Fn(mt))}})(Q.current),C.current,C.current;let ve=C.current;if(C.current){if(C.current.isDone)C.current=null;else if(C.current.isSubmitted||C.current.isCancelled){if(C.current.isMounted)return;C.current.isDone||(B(C.current),C.current.isDone=!0)}}if(R){if(R.eventType==="start"){const ne=R,fe=ne.startEvent?.cell??$e.current;C.current&&r.CoordUtils.isEqualCells(C.current.coords,fe)||(C.current=O(fe,ne.startEvent))}else if(R.eventType==="keyboard"){const ne=R.event;if(C.current){let fe=!1;switch(ne.which){case n.KeyCodes.Left:case n.KeyCodes.Right:case n.KeyCodes.Up:case n.KeyCodes.Down:case n.KeyCodes.Enter:case n.KeyCodes.Tab:fe=!0}if(!fe){C.current.events.push(R);for(let ze=0;ze<C.current.editorRefsDispatchEditorEvent.length;ze++)C.current.editorRefsDispatchEditorEvent[ze](R)}}else if(T(ne,R.coords)){let fe;const ze=O(fe?.cell??$e.current,fe);ze&&ze.events.push(R),C.current=ze}}else if(R.eventType==="pointer"){const ne=R.event;if(C.current){C.current.events.push(R);for(let fe=0;fe<C.current.editorRefsDispatchEditorEvent.length;fe++)C.current.editorRefsDispatchEditorEvent[fe](R)}else{const fe=R?.coords??$e.current,ze=L(ne,fe);if(ze){let Je;typeof Je!="boolean"&&(Je=ze);const mt=O(fe,Je);mt&&mt.events.push(R),C.current=mt}}}else if(R.eventType==="submit"){if(C.current&&!C.current.isSubmitted&&!C.current.isCancelled){if(!C.current.isMounted)return;pe(C.current)}}else if(R.eventType==="cancel"){if(C.current&&!C.current.isSubmitted&&!C.current.isCancelled){if(!C.current.isMounted)return;ae(C.current)}}else if(R.eventType==="coordsChange"){const ne=R;if($e.current=ne.activeCoords,C.current,C.current&&!C.current.isSubmitted&&!C.current.isCancelled){if(!C.current.isMounted)return;try{pe(C.current)}catch{}}}}Q.current.length>0&&(Q.current.shift(),z()),Q.current.length===0&&(!C.current||C.current.isEditorClosing||C.current.isEditorClosed?!C.current&&ve&&le():C.current.isMounted&&!C.current.isStarted&&(C.current.isStarted=!0,C.current.startEvent.autoFocus&&(typeof C.current.startEvent.autoFocus=="string"?C.current.editorRefs[0]?.autoFocus(C.current.startEvent.autoFocus):C.current.editorRefs[0]?.autoFocus()),Oe?.(C.current),requestAnimationFrame(()=>{o&&C.current?.coords&&o.scrollCellCoordsIntoView(C.current.coords)})))},[me]),l.useEffect(()=>{We.current=N;const O=C.current?.coords;r.CoordUtils.isEqualCells(O,N)||(C.current&&(C.current.isEditorClosing=!0),z({eventType:"coordsChange",activeCoords:N}))},[N]);const ct=l.useCallback(O=>{xt(O.nativeEvent)},[]),{width:rt=0,height:de=0}=P??{width:0,height:0},Pt=n.useCallbackRef(c,[c]);return{overlay:n.useCallbackRef(O=>{if(!C.current||C.current.isEditorClosed)return C.current,null;C.current.coords;let R=se(O,C.current.coords,rt,de,q,Z),ve=!0;R&&R.width!==0&&R.height!==0||(R={x:0,y:0,width:rt,height:rt},ve=!1);const ne=O.getZoom(),fe={containerBounds:{x:0,y:0,width:R.width/ne,height:R.height/ne},setNaturalSize:F,zoom:ne};return te.jsx(So,{session:C.current,refLatestCoords:We,handleSubmitEdit:pe,handleCancelEdit:ae,cellBounds:R,borderStrokeWidth:A,borderStrokeFill:D,isInBounds:ve,getCellEditor:Pt,propsEditor:fe,alignment:Z,...M},"editor:"+C.current.uuid)},[c,q,me,rt,de,Z,A,D]),startEdit:l.useCallback(O=>{z({eventType:"start",startEvent:O})},[]),submitEdit:l.useCallback(()=>{z({eventType:"submit"})},[]),cancelEdit:l.useCallback(()=>{z({eventType:"cancel"})},[]),onKeyboardEvent:ct,onPointerEvent:St,onKeyboardEventNative:xt,onPointerEventNative:X,isEditing:Ce}},exports.useSelection=({gridRef:t,commands:o,layout:i,selection:c,onSelectionChange:d,onSelectionDragStart:u,onSelectionDragEnd:a,selectionPolicy:s="multiple",newSelectionMode:w="clear",allowDeselectSelection:T=!0,onFillPreview:L,onFillCancel:M,onFillDone:D,onFill:A,disableFillDrag:q=!A,fillHandleBorderColor:N="white",hiddenRowsAt:Z,hiddenColumnsAt:Ce,isContentfulCell:_,contentfulCellFinder:P=Do,getDataCoords:F,alwaysScrollToActiveCoords:se=!1,selectionBounds:U,pointerDownInterceptor:le,pointerMoveInterceptor:Le,mergedRanges:Re,canSelectionSpanMergedCells:Oe=Oo,onMoveDragStart:ae,onMoveDragUpdate:pe,onMoveDragEnd:B,onMoveDragDone:C,selectionRenderer:$e=Yn,disableMoveDrag:We=!B,getCellCoordsAsRangeCoords:Q=r.CoordUtils.cellToRange,moveDragHitSize:me=6,moveDragOutlineSize:G=4,selectionBackgroundColor:z="rgba(16, 124, 65, 0.1)",selectionBorderColor:X="rgb(33, 115, 70)",selectionRemoveBorderColor:St="rgb(255, 0, 0)",selectionRemoveBackgroundColor:xt="rgba(250, 10, 10, 0.1)",disableTouchSelection:ct=!1,touchSelectHandleProps:rt})=>{const de=l.useCallback(()=>({top:U?.top??0,left:U?.left??0,bottom:t.current?.rowCount-1||0,right:t.current?.columnCount-1||0}),[]),Pt=n.useCallbackRef(A,[A]),O=n.useCallbackRef(L,[L]),R=n.useCallbackRef(M,[M]),ve=n.useCallbackRef(D,[D]),ne=n.useCallbackRef(_,[_]),fe=n.useCallbackRef($e,[$e]),ze=n.useCallbackRef((e,h=!1)=>wn(e,h,i.getRowOffset,h?de().bottom:de().top),[i?.getRowOffset]),Je=n.useCallbackRef(Z??ze,[Z]),mt=n.useCallbackRef((e,h=!1)=>wn(e,h,i.getColOffset,h?de().right:de().left),[i?.getColOffset]),Qe=n.useCallbackRef(Ce??mt,[Ce]),[Tt,st]=l.useState(()=>yt(c)),b=l.useMemo(()=>yt(Tt),[Tt]),oe=l.useRef(b),Ae=l.useRef(!0);l.useLayoutEffect(r.CommonUtils.throttle(()=>{st(e=>{Ae.current=!0;const h=yt(c);return r.CoordUtils.isEqualSelectionCoords(h,e)?e:h})},0),[c]),l.useLayoutEffect(()=>{oe.current=b},[b]),l.useEffect(()=>{Ae.current||!d||r.CoordUtils.isEqualSelectionCoords(c,b)||d(b)},[b]);const lt=l.useCallback(e=>{st(h=>{Ae.current=!1,h=yt(h);let g=typeof e=="function"?e(h.ranges):e??Ln;if(r.CoordUtils.isEqualRangesArrays(g,h.ranges))return h;let f=Math.max(g.length?0:-1,Math.min(h.rangeIndex,g.length-1)),p=h.cell;f===-1||r.CoordUtils.isCellWithinRange(p,g[f])||(p={rowIndex:g[f].rowStart,colIndex:g[f].colStart}),g.length===1&&r.CoordUtils.isSingleCell(g[0])&&r.CoordUtils.isCellWithinRange(p,g[0])&&(g=[],f=-1);const k={cell:p,ranges:g,rangeIndex:f};return r.CoordUtils.isEqualSelectionCoords(k,h)?h:k})},[]),qe=n.useCallbackRef(e=>{st(h=>{Ae.current=!1,h=yt(h);const g=e??io,f=Q(g);if(!r.CoordUtils.isSingleCell(f)&&h.ranges.length===0)return{ranges:[f],rangeIndex:0,cell:g};if(r.CoordUtils.isEqualCells(g,h.cell))return h;let p=h.ranges,k=h.rangeIndex;h.ranges.length===1&&(r.CoordUtils.isSingleCell(h.ranges[0])&&r.CoordUtils.isCellWithinRange(g,h.ranges[0])||!r.CoordUtils.isCellWithinRange(g,h.ranges[0]))&&(p=[],k=-1);const m={ranges:p,rangeIndex:k,cell:g};return r.CoordUtils.isEqualSelectionCoords(m,h)?h:m})},[Q]),[jt,$t]=l.useState(null),[bt,Yt]=l.useState(null),At=l.useRef(null),[Ee,Ut]=l.useState(null),ut=l.useRef(null),kt=l.useRef(null),[en,Ht]=l.useState(null),je=l.useRef(null),Be=l.useRef(null),Ft=l.useRef(Re);l.useEffect(()=>{Ft.current=Re},[Re]);const ht=n.useCallbackRef((e,h={inline:"nearest",block:"nearest"})=>{let{rowIndex:g,colIndex:f}=e;g===void 0&&b?.cell&&(g=b.cell.rowIndex),f===void 0&&b?.cell&&(f=b.cell.colIndex),g!==void 0&&f!==void 0&&t.current?.scrollCellCoordsIntoView({rowIndex:g,colIndex:f},h)},[b]),Lt=l.useCallback(e=>{const h=de();return e.rowIndex<h.top||e.colIndex<h.left||e.colIndex>h.right||e.rowIndex>h.bottom},[]),ye=n.useCallbackRef((e,h)=>{if(!t?.current)return null;const g={rowStart:Math.min(e.rowIndex,h.rowIndex),colStart:Math.min(e.colIndex,h.colIndex),rowEnd:Math.max(e.rowIndex,h.rowIndex),colEnd:Math.max(e.colIndex,h.colIndex)};if(Oe?.(g))return g;const p=Q(e),k=Q(h),m={rowStart:Math.min(p.rowStart,k.rowStart),colStart:Math.min(p.colStart,k.colStart),rowEnd:Math.max(p.rowEnd,k.rowEnd),colEnd:Math.max(p.colEnd,k.colEnd)};let Y;return typeof Ft.current=="function"?Y=Ft.current(m):Re&&(Y=Re),Y?r.CoordUtils.extendRangeToUnionRanges(m,Y):m},[Oe,Q]),He=n.useCallbackRef((e,h,g)=>{const f=e.ranges.length>0?e.ranges[e.rangeIndex]:{rowStart:e.cell.rowIndex,colStart:e.cell.colIndex,rowEnd:e.cell.rowIndex,colEnd:e.cell.colIndex},p={rowStart:Math.min(h.rowIndex??f.rowStart,g.rowIndex??f.rowStart),colStart:Math.min(h.colIndex??f.colStart,g.colIndex??f.colStart),rowEnd:Math.max(h.rowIndex??f.rowEnd,g.rowIndex??f.rowEnd),colEnd:Math.max(h.colIndex??f.colEnd,g.colIndex??f.colEnd)},k={rowIndex:p.rowStart,colIndex:p.colStart},m={rowIndex:p.rowEnd,colIndex:p.colEnd};if(!(Lt(k)||Lt(m)))return ye(k,m)},[ye]),it=n.useCallbackRef((e,h,g)=>{if(s==="single"||!oe.current)return;const f=He(oe.current,e,h??oe.current.cell);if(!f)return;const p=oe.current.rangeIndex;lt(k=>k.length?k.map((m,Y)=>p===Y?f:m):[f]),g&&f&&qe({colIndex:f.colStart,rowIndex:f.rowStart})},[]),pt=l.useCallback((e,h,g)=>{if(!oe.current)return;e={...oe.current?.cell,...e},h=h??e;const f=He(oe.current,e,h);if(!f)return;const p={rowIndex:f.rowStart,colIndex:f.colStart},k={...p,...g};w==="clear"?(je.current=k,Bt()):w==="modify"?it(p):Se(p),qe(k)},[]),Se=l.useCallback((e,h=e,g)=>{s!=="multiple"||!e||Lt(e)||Lt(h)||st(f=>{Ae.current=!1,f=yt(f);const p=ye(e,h);if(!p)return f;let k=f.ranges.length>0?[...f.ranges]:[ye(f.cell,f.cell)];k.push(p);const m={ranges:k,cell:{rowIndex:p.rowStart,colIndex:p.colStart,...g},rangeIndex:k.length-1};return r.CoordUtils.isEqualSelectionCoords(m,f)?f:m})},[]),Bt=()=>{lt(Ln)},Rt=n.ReactUtils.detectIt().primaryInput==="touch",Ge=l.useRef(null),Ct=l.useRef(null),vt=l.useRef(null),Nt=l.useMemo(()=>({onPointerDown:e=>{if(!t||!t.current)return!1;const h=e.nativeEvent,g=t.current.getViewFromClient(h.clientX,h.clientY);if(h.pointerType==="touch"||h.type==="touchstart")return Ct.current={topLeft:g.getScrollTopLeft(),point:{x:h.clientX,y:h.clientY}},!0;const f=g.getCellCoordsFromClient(e.nativeEvent.clientX,e.nativeEvent.clientY);if(!f)return!1;Ge.current={anchor:g.getAnchor(),coords:f},Be.current=null;const p=e.nativeEvent.which===n.MouseButtonCodes.Right;if(p&&r.CoordUtils.indexOfCoords(f,b.ranges)!==-1)return!1;const k=e.nativeEvent.shiftKey,m=e.nativeEvent.ctrlKey||e.nativeEvent.metaKey,Y=m,K=T,W=b.ranges.length>0,J=m&&K;if(le?.(e,f,b)===!1)return!1;u?.(oe.current,e.nativeEvent);const xe=!p&&s!=="single";if(k)return it(f),xe;const H=r.CoordUtils.isEqualCells(f,b.cell);if(Y){if(H&&(!J||!W))return xe;if(m&&r.CoordUtils.indexOfCoords(f,b.ranges)!==-1&&K){ut.current=f;const j=ye(f,f);return kt.current=j,Ut(j),xe}return Se(f),xe}se&&ht(f),H&&b.ranges.length===0||pt(f)},onPointerMoveOrWait:r.CommonUtils.throttle((e,h)=>{if(!t?.current||e.pointerType==="touch"||e.type==="touchmove"||!Ge.current)return;const g=Ge.current.anchor;let f=t.current.getViewFromLocation(g),p=f.getCellCoordsFromClient(e.clientX,e.clientY);if(!r.CoordUtils.isEqualCells(p,Ge.current?.coords)&&(Ge.current={anchor:g,coords:p},p&&Le?.(e,p,oe.current)!==!1)){if(ut.current){const k={rowStart:Math.min(p.rowIndex,ut.current.rowIndex),colStart:Math.min(p.colIndex,ut.current.colIndex),rowEnd:Math.max(p.rowIndex,ut.current.rowIndex),colEnd:Math.max(p.colIndex,ut.current.colIndex)},m={rowIndex:k.rowStart,colIndex:k.colStart},Y={rowIndex:k.rowEnd,colIndex:k.colEnd};if(Lt(m)||Lt(Y))return;const K=ye(m,Y);kt.current=K,Ut(K)}else it(p);vt.current=h,hn(f,p,t)}},60),onPointerUp:e=>{if(Ge.current=null,e.pointerType==="touch"||e.type==="touchend"){if(Ct.current){const g=t.current.getViewFromClient(Ct.current.point.x,Ct.current.point.y),f=g.getScrollTopLeft();if(f.left===Ct.current.topLeft.left&&f.top===Ct.current.topLeft.top){const p=g.getCellCoordsFromClient(Ct.current.point.x,Ct.current.point.y);pt(p)}}return Ct.current=null,void(Ge.current=null)}try{a?.(oe.current,e)}catch(g){console.warn(g)}if(!ut.current)return;const h=kt.current;ut.current=null,kt.current=null,Ut(null),st(g=>{if(Ae.current=!1,(g=yt(g)).ranges.length===0)return g;let f=[],p=-1,k=g.cell;for(let Y=0;Y<g.ranges.length;Y++){const K=g.ranges[Y];if(r.CoordUtils.isRangesIntersect(K,h)){const W=r.CommonUtils.subtractRect({top:K.rowStart,left:K.colStart,bottom:K.rowEnd+1,right:K.colEnd+1},{top:h.rowStart,left:h.colStart,bottom:h.rowEnd+1,right:h.colEnd+1});for(let J=0;J<W.length;J++){const xe={rowStart:W[J].top,colStart:W[J].left,rowEnd:W[J].bottom-1,colEnd:W[J].right-1};f.push(xe),r.CoordUtils.isCellWithinRange(g.cell,xe)&&(p=f.length-1)}}else f.push(K);f.length>0&&p===-1&&r.CoordUtils.isCellWithinRange(g.cell,K)&&(p=f.length-1,k={rowIndex:f[f.length-1].rowStart,colIndex:f[f.length-1].colStart})}const m={cell:k,rangeIndex:p,ranges:f};return r.CoordUtils.isEqualSelectionCoords(m,g)?g:m})},processTouch:!0,consumeTouch:!1}),[b,s,T,se,w]),xn=n.useCallbackRef(n.useSynchronizedPointerHandler(Nt),[]),pn=l.useMemo(()=>({onSelectionPointerDown:(e,h,g,f,p=b.cell,k=se,m=e.nativeEvent.shiftKey,Y=!1)=>{if(!t||!t.current)return!1;e.stopPropagation(),e.preventDefault(),e.nativeEvent.stopImmediatePropagation();const K=g??t.current.getViewFromClient(e.nativeEvent.clientX,e.nativeEvent.clientY),W=f??K.getCellCoordsFromClient(e.nativeEvent.clientX,e.nativeEvent.clientY);if(!W)return!1;Ge.current={anchor:K.getAnchor(),coords:W},Be.current=null;const J=e.nativeEvent.which===n.MouseButtonCodes.Right;if(J&&r.CoordUtils.indexOfCoords(W,b.ranges)!==-1)return!1;const xe=e.nativeEvent.ctrlKey||e.nativeEvent.metaKey,H=xe,j=T,ot=b.ranges.length>0,I=xe&&j;if(le?.(e,W,b)===!1)return!1;u?.(oe.current,e.nativeEvent);const we=!J&&s!=="single";if(m)return it(W,p,Y),we;const wt=r.CoordUtils.isEqualCells(W,p);if(H){if(wt&&(!I||!ot))return we;if(I&&r.CoordUtils.indexOfCoords(W,b.ranges)!==-1&&j){ut.current=W;const he=ye(W,W);return kt.current=he,Ut(he),we}return Se(W),we}k&&ht(W),wt&&b.ranges.length===0||pt(W)},onSelectionPointerMoveOrWait:(e,h,g,f,p,k=b.cell,m=!0,Y=!1)=>{if(!t?.current||(e.stopPropagation(),e.preventDefault(),e.stopImmediatePropagation(),!Ge.current))return;const K=Ge.current.anchor;let W=f??t.current.getViewFromLocation(K),J=p??W.getCellCoordsFromClient(e.clientX,e.clientY);if(!r.CoordUtils.isEqualCells(J,Ge.current?.coords)&&(Ge.current={anchor:K,coords:J},J&&Le?.(e,J,oe.current)!==!1)){if(ut.current){const xe={rowStart:Math.min(J.rowIndex,ut.current.rowIndex),colStart:Math.min(J.colIndex,ut.current.colIndex),rowEnd:Math.max(J.rowIndex,ut.current.rowIndex),colEnd:Math.max(J.colIndex,ut.current.colIndex)},H={rowIndex:xe.rowStart,colIndex:xe.colStart},j={rowIndex:xe.rowEnd,colIndex:xe.colEnd};if(Lt(H)||Lt(j))return;const ot=ye(H,j);kt.current=ot,Ut(ot)}else it(J,k,Y);m&&hn(W,J,t)}},onPointerUp:e=>{Ge.current=null,e.stopPropagation(),e.preventDefault(),e.stopImmediatePropagation();try{a?.(oe.current,e)}catch(g){console.warn(g)}if(!ut.current)return;const h=kt.current;ut.current=null,kt.current=null,Ut(null),st(g=>{if(Ae.current=!1,(g=yt(g)).ranges.length===0)return g;let f=[],p=-1,k=g.cell;for(let Y=0;Y<g.ranges.length;Y++){const K=g.ranges[Y];if(r.CoordUtils.isRangesIntersect(K,h)){const W=r.CommonUtils.subtractRect({top:K.rowStart,left:K.colStart,bottom:K.rowEnd+1,right:K.colEnd+1},{top:h.rowStart,left:h.colStart,bottom:h.rowEnd+1,right:h.colEnd+1});for(let J=0;J<W.length;J++){const xe={rowStart:W[J].top,colStart:W[J].left,rowEnd:W[J].bottom-1,colEnd:W[J].right-1};f.push(xe),r.CoordUtils.isCellWithinRange(g.cell,xe)&&(p=f.length-1)}}else f.push(K);f.length>0&&p===-1&&r.CoordUtils.isCellWithinRange(g.cell,K)&&(p=f.length-1,k={rowIndex:f[f.length-1].rowStart,colIndex:f[f.length-1].colStart})}const m={cell:k,rangeIndex:p,ranges:f};return r.CoordUtils.isEqualSelectionCoords(m,g)?g:m})}}),[b,s,T,se,w]),Ze=n.useCallbackRef((e,h=!1,g=!1,f=0)=>{if(!t.current||!b.cell)return;let p=b.cell,k=b.cell;if(h&&b.ranges.length>0){const I=b.ranges[b.rangeIndex],we=b.cell;switch(e){case r.Direction.Up:k={rowIndex:we.rowIndex===I.rowStart?I.rowEnd:I.rowStart,colIndex:I.colEnd},p={rowIndex:we.rowIndex===I.rowStart?I.rowStart:I.rowEnd,colIndex:I.colStart};break;case r.Direction.Down:k={rowIndex:we.rowIndex===I.rowEnd?I.rowStart:I.rowEnd,colIndex:I.colEnd},p={rowIndex:we.rowIndex===I.rowEnd?I.rowEnd:I.rowStart,colIndex:I.colStart};break;case r.Direction.Left:k={rowIndex:I.rowEnd,colIndex:we.colIndex===I.colStart?I.colEnd:I.colStart},p={rowIndex:I.rowStart,colIndex:we.colIndex===I.colStart?I.colStart:I.colEnd};break;case r.Direction.Right:k={rowIndex:I.rowEnd,colIndex:we.colIndex===I.colEnd?I.colStart:I.colEnd},p={rowIndex:I.rowStart,colIndex:we.colIndex===I.colEnd?I.colEnd:I.colStart}}}const m=Q(k);let{rowStart:Y,colStart:K}=m;const W=de();if(Be.current)switch(e){case r.Direction.Up:case r.Direction.Down:Be.current.colIndex>=m.colStart&&Be.current.colIndex<=m.colEnd&&(K=Be.current.colIndex);break;case r.Direction.Left:case r.Direction.Right:Be.current.rowIndex>=m.rowStart&&Be.current.rowIndex<=m.rowEnd&&(Y=Be.current.rowIndex)}if(!f){switch(e){case r.Direction.Up:Y=Te(Je,Math.max(m.rowStart-1,W.top),e);break;case r.Direction.Down:Y=Te(Je,Math.min(m.rowEnd+1,W.bottom),e);break;case r.Direction.Left:K=Te(Qe,Math.max(m.colStart-1,W.left),e);break;case r.Direction.Right:K=Te(Qe,Math.min(m.colEnd+1,W.right),e)}if(g)switch(e){case r.Direction.Up:Y=P({...k,colIndex:b.cell.colIndex},ne,Je,e,!1,Math.max(W.top,Je(W.top,!1)));break;case r.Direction.Down:Y=P({...k,colIndex:b.cell.colIndex},ne,Je,e,!1,Math.min(W.bottom,W.bottom-Je(W.bottom,!0)));break;case r.Direction.Left:K=P({...k,rowIndex:b.cell.rowIndex},ne,Qe,e,!1,Math.max(W.left,Qe(W.left,!1)));break;case r.Direction.Right:K=P({...k,rowIndex:b.cell.rowIndex},ne,Qe,e,!1,Math.min(W.right,W.right-Qe(W.right,!0)))}}let J=null;if(f){let I=0;switch(e){case r.Direction.Up:I=i.getRowOffset(Y+1),Y=Math.max(W.top,i.getRowIndex(I-f)),J={top:i.getRowOffset(Y+1)-(I-t.current.getScrollPosition().top)};break;case r.Direction.Down:I=i.getRowOffset(Y),Y=Math.min(W.bottom,i.getRowIndex(I+f)),J={top:i.getRowOffset(Y)-(I-t.current.getScrollPosition().top)};break;case r.Direction.Left:I=i.getColOffset(K+1),K=Math.max(W.left,i.getColIndex(I-f)),J={left:i.getColOffset(K+1)-(I-t.current.getScrollPosition().left)};break;case r.Direction.Right:I=i.getColOffset(K),K=Math.min(W.right,i.getColIndex(I+f)),J={left:i.getColOffset(K)-(I-t.current.getScrollPosition().left)}}}const xe={rowIndex:Y,colIndex:K},H=Q(xe),j={rowIndex:H.rowStart,colIndex:H.colStart};h||(Be.current=xe);const ot=r.CoordUtils.isEqualCells(je.current,j)&&r.CoordUtils.isEqualCells(je.current,p);if(h&&!ot?it(j,p):pt(j),J)t.current.scrollTo(J);else{if(h&&je.current){const I=de();if(e===r.Direction.Right&&je.current.colIndex===I.left||e===r.Direction.Left&&je.current.colIndex===I.right||e===r.Direction.Up&&je.current.rowIndex===I.bottom||e===r.Direction.Down&&je.current.rowIndex===I.top)return}e===r.Direction.Left||e===r.Direction.Right?ht({colIndex:xe.colIndex}):e!==r.Direction.Up&&e!==r.Direction.Down||ht({rowIndex:xe.rowIndex})}},[b,Q]),Ot=n.useCallbackRef(e=>{if(!t.current)return;if(b.ranges.length===0)return void Ze(e);const h=Q(b.cell);if(r.CoordUtils.isEqualRangesArrays([h],b.ranges))return void Ze(e);const g=Pn(b,e,Q,Je,Qe);st(f=>{Ae.current=!1,f=yt(f);const p={...f,cell:g.cell,rangeIndex:g.rangeIndex};return r.CoordUtils.isEqualSelectionCoords(p,f)?f:p}),g.cell&&ht(g.cell)},[b,Q]),mn=l.useCallback(()=>{const e=de();it({rowIndex:e.top},{rowIndex:e.bottom})},[]),Cn=l.useCallback(()=>{const e=de();it({colIndex:e.left},{colIndex:e.right})},[]),Kt=n.useCallbackRef(()=>{b.cell&&t?.current&&ht(b.cell)},[b.cell]),tn=l.useCallback((e=!1)=>{const h={rowIndex:de().top};e?it(h):pt(h),ht(h)},[]),nn=l.useCallback((e=!1)=>{const h={rowIndex:de().bottom};e?it(h):pt(h),ht(h)},[]),_t=l.useCallback((e=!1)=>{const h={colIndex:de().left};e?it(h):pt(h),ht(h)},[]),qt=l.useCallback((e=!1)=>{const h=de(),g={rowIndex:h.top,colIndex:h.left};e?it(g):pt(g),ht(g)},[]),Gt=l.useCallback((e=!1)=>{const h=de(),g={colIndex:F?.()?.colEnd??h.right};e?it(g):pt(g),ht(g)},[F]),Vt=l.useCallback((e=!1)=>{const h=de(),g={rowIndex:F?.()?.rowEnd??h.bottom,colIndex:F?.()?.colEnd??h.right};e?it(g):pt(g),ht(g)},[F]),Zt=n.useCallbackRef(e=>{if(!t.current||b.ranges.length<=1)return;const h=e===r.Direction.Left||e===r.Direction.Up;let g=b.rangeIndex+(h?-1:1);g<0?g=b.ranges.length-1:g>b.ranges.length-1&&(g=0);const f=b.ranges[g],p=Pn({cell:{rowIndex:f.rowEnd,colIndex:f.colEnd},rangeIndex:0,ranges:[f]},r.Direction.Right,Q,Je,Qe);st(k=>{Ae.current=!1,k=yt(k);const m={...k,cell:p.cell,rangeIndex:g};return r.CoordUtils.isEqualSelectionCoords(m,k)?k:m}),p.cell&&ht(p.cell)},[b,Q]),Sn=n.useCallbackRef(()=>{const e=Hn(b);st(h=>{Ae.current=!1,h=yt(h);const g={...h,visibleSelection:e};return r.CoordUtils.isEqualSelectionCoords(g,h)?h:g}),e.cell&&ht(e.cell)},[b,Q]),bn=n.useCallbackRef(()=>{if(!t.current||b.ranges.length===0)return;const e=b.cell,h=b.ranges[b.rangeIndex],g=Hn({cell:e,rangeIndex:0,ranges:[h]}),f=g.ranges[g.rangeIndex];let p;p=f.rowStart===e.rowIndex&&f.colStart===e.colIndex?{rowIndex:f.rowStart,colIndex:f.colEnd}:f.rowStart===e.rowIndex&&f.colEnd===e.colIndex?{rowIndex:f.rowEnd,colIndex:f.colStart}:f.rowEnd===e.rowIndex&&f.colStart===e.colIndex?{rowIndex:f.rowEnd,colIndex:f.colEnd}:{rowIndex:f.rowStart,colIndex:f.colStart},st(k=>{k=yt(k);const m={...k,cell:p};return r.CoordUtils.isEqualSelectionCoords(m,k)?k:m}),p&&ht(p)},[b,Q]),on=l.useCallback((e=!1)=>{Ze(r.Direction.Down,e,!1,t.current.getDimensions().containerHeight)},[]),Mt=l.useCallback((e=!1)=>{Ze(r.Direction.Up,e,!1,t.current.getDimensions().containerHeight)},[]),rn=l.useCallback((e=!1)=>{Ze(r.Direction.Right,e,!1,t.current.getDimensions().containerWidth)},[]),Jt=l.useCallback((e=!1)=>{Ze(r.Direction.Left,e,!1,t.current.getDimensions().containerWidth)},[]),ln=l.useCallback(()=>{Ot(r.Direction.Left)},[]),cn=l.useCallback(()=>{Ot(r.Direction.Right)},[]),vn=l.useCallback(()=>{Ot(r.Direction.Up)},[]),yn=l.useCallback(()=>{Ot(r.Direction.Down)},[]),Qt=l.useCallback(()=>{Zt(r.Direction.Left)},[]),Rn=l.useCallback(()=>{Zt(r.Direction.Right)},[]),En=l.useCallback(()=>{bn()},[]),sn=l.useCallback(()=>{Ze(r.Direction.Left,!1,!1)},[]),x=l.useCallback(()=>{Ze(r.Direction.Left,!0,!1)},[]),S=l.useCallback(()=>{Ze(r.Direction.Left,!1,!0)},[]),E=l.useCallback(()=>{Ze(r.Direction.Left,!0,!0)},[]),v=l.useCallback(()=>{Ze(r.Direction.Right,!1,!1)},[]),y=l.useCallback(()=>{Ze(r.Direction.Right,!0,!1)},[]),$=l.useCallback(()=>{Ze(r.Direction.Right,!1,!0)},[]),ge=l.useCallback(()=>{Ze(r.Direction.Right,!0,!0)},[]),re=l.useCallback(()=>{Ze(r.Direction.Up,!1,!1)},[]),ue=l.useCallback(()=>{Ze(r.Direction.Up,!0,!1)},[]),V=l.useCallback(()=>{Ze(r.Direction.Up,!1,!0)},[]),be=l.useCallback(()=>{Ze(r.Direction.Up,!0,!0)},[]),Ke=l.useCallback(()=>{Ze(r.Direction.Down,!1,!1)},[]),Pe=l.useCallback(()=>{Ze(r.Direction.Down,!0,!1)},[]),Ne=l.useCallback(()=>{Ze(r.Direction.Down,!1,!0)},[]),Ie=l.useCallback(()=>{Ze(r.Direction.Down,!0,!0)},[]),ie=l.useCallback(()=>{lt(e=>e.slice(0,-1))},[]),et=l.useMemo(()=>{const e=de();return((h,g,f,p,k)=>{const m=h.length;for(let Y=0;Y<m;Y++){const K=h[Y];if(K.rowStart===g&&K.colStart===f&&K.rowEnd===p&&K.colEnd===k)return!0}return!1})(b.ranges,e.top,e.left,e.bottom,e.right)},[U,b.ranges]),Xe=l.useCallback((e,h=!0)=>{je.current=e,qe(e),h&&e&&t?.current&&ht(e)},[]),Ue=n.useCallbackRef((e=!0)=>{const h=At.current;if(!oe.current?.cell)return;const g=oe.current?.ranges,f=oe.current?.cell;if(!f||!h||!h)return;let p=null;if(p=g.length>0?g[g.length-1]:Q(f),p.colEnd>=p.colStart&&p.rowEnd>=p.rowStart){const k=Nn(p,h);let m=e?Pt:O;try{m?.(p,h,k.direction)}catch(Y){console.warn(Y)}finally{e&&ve?.()}}},[Q]),Ye=l.useRef(null),ft=l.useMemo(()=>({onPointerDown:(e,h)=>{if(vt.current=h,!t||!t.current)return!1;const g=t.current.getViewFromClient(e.nativeEvent.clientX,e.nativeEvent.clientY),f=g?.getCellCoordsFromClient(e.nativeEvent.clientX,e.nativeEvent.clientY);f&&(e.stopPropagation(),$t("crosshair"),Ye.current={anchor:g.getAnchor(),coords:f})},onPointerMoveOrWait:(e,h)=>{if(q||!t?.current||!oe.current||!Ye.current)return;const g=Ye.current.anchor;let f=t.current.getViewFromLocation(g),p=f.getCellCoordsFromClient(e.clientX,e.clientY);if(!p)return;Ye.current={anchor:g,coords:p};const k=oe.current.ranges;let m=ye(oe.current.cell,p);if(!m)return;const Y=k.length>0,K=Y?k[k.length-1]:Q(oe.current.cell);if(!m)return;const W=m.rowStart<K.rowStart?r.Direction.Up:m.rowEnd>K.rowEnd?r.Direction.Down:m.colEnd>K.colEnd?r.Direction.Right:r.Direction.Left,J=de();W===r.Direction.Left&&(m={...K,colStart:Math.max(J.left,m.colStart)}),W===r.Direction.Up&&(m={...K,rowStart:Math.max(J.top,m.rowStart)}),W===r.Direction.Right&&(m={...K,colEnd:Math.min(J.right,m.colEnd)}),W===r.Direction.Down&&(m={...K,rowEnd:Math.min(J.bottom,m.rowEnd)});const xe=Nn(K,m);if(!Oe?.(K)){let H;typeof Ft.current=="function"?H=Ft.current(K):Re&&(H=Re),m=((j,ot,I,we,wt,he)=>{const ce={...ot};if(I.length===0)return ce;if(wt===r.Direction.Left){const nt=j.colEnd+1-j.colStart;ce.colStart=j.colStart-Math.ceil(he/nt)*nt,ce.colStart<we.left&&(ce.colStart=ce.colStart+Math.ceil((we.left-ce.colStart)/nt)*nt)}else if(wt===r.Direction.Right){const nt=j.colEnd+1-j.colStart;ce.colEnd=j.colEnd+Math.ceil(he/nt)*nt,ce.colEnd>we.right&&(ce.colEnd=ce.colEnd-Math.ceil((we.right-ce.colEnd)/nt)*nt)}else if(wt===r.Direction.Up){const nt=j.rowEnd+1-j.rowStart;ce.rowStart=j.rowStart-Math.ceil(he/nt)*nt,ce.rowStart<we.top&&(ce.rowStart=ce.rowStart+Math.ceil((we.top-ce.rowStart)/nt)*nt)}else if(wt===r.Direction.Down){const nt=j.rowEnd+1-j.rowStart;ce.rowEnd=j.rowEnd+Math.ceil(he/nt)*nt,ce.rowEnd>we.bottom&&(ce.rowEnd=ce.rowEnd-Math.ceil((we.bottom-ce.rowEnd)/nt)*nt)}return ce})(K,m,H,J,xe.direction,xe.amount)}if(Y&&r.CoordUtils.isRangeWithinRange(m,K)&&(m=null),!r.CoordUtils.isEqualRanges(m,At.current)){if(Yt(m),At.current=m,!m){try{R?.()}catch{}return void ve?.()}Ue(!1)}vt.current=h,hn(f,p,t)},onPointerUp:(e,h)=>{vt.current=h,Promise.resolve(Ue(!0)).finally(()=>{ve?.(),Yt(null),At.current=null,Ye.current=null,$t(null),t.current?.focus()})}}),[Q]),Fe=n.useSynchronizedPointerHandler(ft),ee=l.useMemo(()=>({onPointerDown:Fe}),[Fe]),[Ve,at]=l.useState(null),ke=l.useRef(null),_e=l.useMemo(()=>({onPointerDown:(e,h)=>{if(vt.current=h,!t||!t.current)return!1;const g=t.current.getViewFromClient(e.nativeEvent.clientX,e.nativeEvent.clientY),f=g?.getCellCoordsFromClient(e.nativeEvent.clientX,e.nativeEvent.clientY);if(!f)return;if(le?.(e,f,b)===!1)return!1;e.stopPropagation(),$t("default");const p=g.getRelativePointFromClient(0,0),k=oe.current?.ranges[oe.current?.ranges.length-1]??r.CoordUtils.cellToRange(oe.current?.cell),m=g.toClipBounds(g.getRangeCoordsBounds(k)),Y={x:0,y:0};m.x-p.x>e.nativeEvent.clientX?Y.x=e.nativeEvent.clientX-(m.x-p.x):e.nativeEvent.clientX>=m.x-p.x+m.width&&(Y.x=Math.max(0,e.nativeEvent.clientX-(m.x-p.x+m.width))+1),m.y-p.y>e.nativeEvent.clientY?Y.y=e.nativeEvent.clientY-(m.y-p.y):e.nativeEvent.clientY>=m.y-p.y+m.height&&(Y.y=Math.max(0,e.nativeEvent.clientY-(m.y-p.y+m.height))+1),ae?.(k,e.nativeEvent,h),ke.current={range:k,anchor:g.getAnchor(),cell:f,isMoving:!1,extrusion:Y}},onPointerMoveOrWait:(e,h,g)=>{if(We||!t?.current||!oe.current||!ke.current)return;const f=e.clientX-g.clientX,p=e.clientY-g.clientY;if(ke.current.isMoving=ke.current.isMoving||Math.abs(f)>Math.max(1,2)||Math.abs(p)>Math.max(1,2)||performance.now()-g.timeStamp>500,!ke.current.isMoving)return;const k=ke.current.anchor,m=ke.current.extrusion;let Y=t.current.getViewFromLocation(k),K=Y.getCellCoordsFromClient(e.clientX-m.x,e.clientY-m.y,!0);if(!K)return;const W=ke.current.cell,J=ke.current.range,xe=de(),H=J.colEnd-J.colStart+1,j=Math.min(Math.max(0,W.colIndex-J.colStart),H-1),ot=Math.min(xe.right-H+1,Math.max(xe.left,K.colIndex-j)),I=J.rowEnd-J.rowStart+1,we=Math.min(Math.max(0,W.rowIndex-J.rowStart),I-1),wt=Math.min(xe.bottom-I+1,Math.max(xe.top,K.rowIndex-we)),he={colStart:ot,colEnd:ot+H-1,rowStart:wt,rowEnd:wt+I-1};r.CoordUtils.isEqualRanges(Ve,he)&&!(ce=>!ce||!vt.current||vt.current.ctrlKey!==ce.ctrlKey||vt.current.shiftKey!==ce.shiftKey||vt.current.altKey!==ce.altKey||vt.current.metaKey!==ce.metaKey)(e)||(at(he),pe?.(he,e,h)),vt.current=h,hn(Y,K,t)},onPointerUp:(e,h)=>{vt.current=h;const g=()=>{at(null),ke.current=null,$t(null),t.current?.focus()};if(!ke.current)return void g();const f=ke.current.range,p=Ve;B?.(f,e,h),Promise.resolve(f&&p&&C?.(f,p,e,h)).finally(()=>{g()})}}),[Ve]),De=n.useSynchronizedPointerHandler(_e),Me=l.useMemo(()=>({onPointerDown:De}),[De]),dt=l.useRef(null),tt=l.useMemo(()=>{const e=r.CoordUtils.isEqualSelectionCoords(b,dt.current)?dt.current:b;return dt.current=e,e},[b]),gt=l.useCallback(e=>{let h=null,g="br";const f=[],p={stroke:N,fill:z,strokeWidth:.5},k=(H,j,ot)=>{const I=e.toClipBounds(e.getRangeCoordsBounds(H),It);if(!I)return;I.x=I.width>0?I.x:I.x-p.strokeWidth/2,I.y=I.height>0?I.y:I.y-p.strokeWidth/2,I.width=Math.max(I.width,p.strokeWidth),I.height=Math.max(I.height,p.strokeWidth);const we={key:`selection-fill-${j}`,range:H,...I,...p};if(ot){const wt=e.getCellCoordsAsRangeCoords(ot);we.cell=ot,we.pathBounds=e.toClipBounds(e.getRangeCoordsBounds(wt),It),we.pathBounds&&(we.pathBounds.width<=0||we.pathBounds.height<=0)&&(delete we.pathBounds,delete we.cell)}return fe(we)};let m=b?yt(b):null;const Y=m?.cell?e.getCellCoordsAsRangeCoords(m?.cell):Lo;!m||m.ranges&&m.ranges.length!==0||(m={ranges:[Y],rangeIndex:0,cell:m.cell});for(let H=0;m&&H<m.ranges.length;H++){const j=m.ranges[H],ot=k(j,H,H===m.rangeIndex?m.cell:null);ot&&f.push(ot);const I=2,we=.5,wt=e.toClipBounds(e.getRangeCoordsBounds(j,{top:0,left:0,right:0,bottom:0}),It);if(wt){const he=(m.ranges.length,4);f.push(fe({range:j,key:`selection-inside-edge-${H}`,x:wt.x-1,y:wt.y-1,width:Math.max(wt.width+1,0),height:Math.max(wt.height+1,0),style:{overflow:"hidden"},stroke:N,strokeWidth:he}))}if(m.ranges.length===1){const he=e.toClipBounds(e.getRangeCoordsBounds(j),It);if(he){We||f.push(fe({range:j,key:`move-selection-hit-box-${H}`,x:he.width>1?he.x:he.x-(me/2+1),y:he.height>1?he.y:he.y-(me/2+1),width:Math.max(he.width+2,1),height:Math.max(he.height+2,1),stroke:"transparent",style:{boxShadow:"none"},pathProps:{cursor:Ve?void 0:"move",pointerEvents:"stroke"},strokeWidth:me,...Me}));const ce=I;f.push(fe({range:j,key:`selection-single-${H}`,x:he.x-ce/2,y:he.y-ce/2,width:Math.max(he.width+ce/2,1),height:Math.max(he.height+ce/2,1),stroke:X,strokeWidth:ce}))}}else{const he=e.toClipBounds(e.getRangeCoordsBounds(j,{top:-1,left:-1,right:-2,bottom:-2}),It);he&&f.push(fe({range:j,key:`selection-multi-${H}`,x:he.width>1?he.x:he.x-we/2,y:he.height>1?he.y:he.y-we/2,width:Math.max(he.width,we)+1,height:Math.max(he.height,we)+1,stroke:X,style:{overflow:"hidden"},strokeWidth:2}))}if(m.ranges.length>1&&H===m.rangeIndex){const he=e.getCellCoordsAsRangeCoords(m.cell),ce=e.toClipBounds(e.getRangeCoordsBounds(he,{top:1,left:1,right:-1,bottom:-1}),It);ce&&f.push(fe({range:j,key:`selection-anchor-${H}`,x:ce.x,y:ce.y,width:Math.max(ce.width,we),height:Math.max(ce.height,we),stroke:X,style:{overflow:"hidden"},strokeWidth:2}))}if(H===m.ranges.length-1){h=null,g=null;const he=j.rowStart===de().top&&j.rowEnd===de().bottom,ce=j.colStart===de().left&&j.colEnd===de().right,nt=e.getRangeCoordsBounds(j);let Dt=null;if(he||ce){if(Dt=e.toClipBounds(nt,It),Object.keys(e.allViews()).length>1){const an=e.getVisibleRangeCoords(),Bn=e.allViews()[r.AnchorLocation.TopLeft],go=e.allViews()[r.AnchorLocation.Top],wo=e.allViews()[r.AnchorLocation.Left],dn=e.getAnchor();(ce&&(dn===r.AnchorLocation.Top&&Bn||dn===r.AnchorLocation.Center&&wo||!r.CoordUtils.isCellWithinRange({colIndex:j.colStart,rowIndex:j.rowEnd},an)&&!r.CoordUtils.isCellWithinRange({colIndex:j.colStart,rowIndex:j.rowEnd+1},an))||he&&(dn===r.AnchorLocation.Left&&Bn||dn===r.AnchorLocation.Center&&go||!r.CoordUtils.isCellWithinRange({colIndex:j.colEnd,rowIndex:j.rowStart},an)&&!r.CoordUtils.isCellWithinRange({colIndex:j.colEnd+1,rowIndex:j.rowStart},an)))&&(Dt=null)}}else Dt=e.toClipBounds(nt,It);if(!Dt||Dt.width===0||Dt.height===0)continue;h={x:Dt.x+Dt.width+1,y:Dt.y+Dt.height+1},Dt.width===0||Dt.height===0||j.rowStart===de().top&&j.colStart===de().left&&j.rowEnd===de().bottom&&j.colEnd===de().right||(he?(h.y=I,g="tr"):ce&&(h.x=I,g="bl"))}}let K=null;if(Ee){const H=e.toClipBounds(e.getRangeCoordsBounds(Ee,{top:0,left:0,right:0,bottom:0}),It);H&&(K=fe({...p,range:Ee,key:"remove-selection",x:H.x,y:H.y,width:H.width,height:H.height,strokeWidth:2,stroke:St,fill:xt}))}let W=null;if(bt){const H=e.toClipBounds(e.getRangeCoordsBounds(bt,{top:0,left:0,right:0,bottom:0}),It);H&&(W=fe({range:bt,key:"selection-fill-outline",x:H.x-2/2,y:H.y-2/2,width:H.width+2/2,height:H.height+2/2,strokeWidth:2,stroke:X,strokeDasharray:"3 2"}))}let J=null;!q&&h&&!Ve&&(J=l.createElement(Tn,{...h,corner:g,size:7.5,borderStroke:`${N} solid`,style:{borderRadius:1},background:X,...ee,key:"fillHandle"}));const xe=[...f];if(K&&xe.push(K),W&&xe.push(W),J&&xe.push(J),!ct&&Rt&&m?.ranges.length===1&&m.ranges[m.ranges.length-1]){const H=m.ranges[m.ranges.length-1],j=H.rowStart===de().top&&H.rowEnd===de().bottom,ot=H.colStart===de().left&&H.colEnd===de().right,I={view:e,range:H,borderStroke:`${X} solid`,background:N,selectionTouchPointerHandler:pn,...rt,onTouchSelectStart:we=>Ht(we),onTouchSelectEnd:()=>Ht(null),currentTouchAnchor:en};xe.push(te.jsx(fn,{anchor:ot?"b":j?"r":"br",scrollableElement:t.current,...I},"touch-select-handle-after")),xe.push(te.jsx(fn,{anchor:ot?"t":j?"l":"tl",scrollableElement:t.current,...I},"touch-select-handle-before"))}if(Ve){const H=e.toClipBounds(e.getRangeCoordsBounds(Ve,{top:1,left:1,right:1,bottom:1}),It);H&&xe.push(fe({range:Ve,key:"selection-move-outline",x:H.x-G/2,y:H.y-G/2,width:Math.max(H.width+G/2,1),height:Math.max(H.height+G/2,1),stroke:X,style:{boxShadow:"none",transitionDuration:"70ms",transitionTimingFunction:"ease-in",transitionProperty:"left, top, width, height",willChange:"left, top, width, height"},strokeWidth:G}))}return te.jsx("div",{children:xe},"selection")},[tt,Ee,q,bt,We,Ve,de,N,X,z,St,xt,ct,rt,en]),Et=l.useMemo(()=>{const e=()=>t.current;return[new n.SimpleCommand("moveToPageDown",e,{label:"Page Down",description:"Shift viewport down one page.",shortcut:[{key:"PageDown"}]},()=>on(!1)),new n.SimpleCommand("selectToPageDown",e,{label:"Select To Page Down",description:"Shift viewport and select down one page.",shortcut:[{key:"PageDown",modifiers:[n.KeyModifiers.Shift]}]},()=>on(!0)),new n.SimpleCommand("moveToPageRight",e,{label:"Page Right",description:"Shift viewport right one page.",shortcut:[{key:"PageDown",modifiers:[n.KeyModifiers.Alt]}]},()=>rn(!1)),new n.SimpleCommand("selectToPageRight",e,{label:"Page Right",description:"Shift viewport right one page.",shortcut:[{key:"PageDown",modifiers:[n.KeyModifiers.Alt,n.KeyModifiers.Shift]}]},()=>rn(!0)),new n.SimpleCommand("moveToPageUp",e,{label:"Page Up",description:"Shift viewport up one page.",shortcut:[{key:"PageUp"}]},()=>Mt(!1)),new n.SimpleCommand("selectToPageUp",e,{label:"Page Up",description:"Shift viewport up one page.",shortcut:[{key:"PageUp",modifiers:[n.KeyModifiers.Shift]}]},()=>Mt(!0)),new n.SimpleCommand("moveToPageLeft",e,{label:"Page Left",description:"Shift viewport left one page.",shortcut:[{key:"PageUp",modifiers:[n.KeyModifiers.Alt]}]},()=>Jt(!1)),new n.SimpleCommand("selectToPageLeft",e,{label:"Page Left",description:"Shift viewport left one page.",shortcut:[{key:"PageUp",modifiers:[n.KeyModifiers.Alt,n.KeyModifiers.Shift]}]},()=>Jt(!0)),new n.SimpleCommand("selectColumn",e,{label:"Select Column",description:"Select the columns for the selected cells.",shortcut:{key:"Space",modifiers:[n.KeyModifiers.Ctrl]}},mn),new n.SimpleCommand("selectRow",e,{label:"Select Row",description:"Select the rows for the selected cells.",shortcut:{key:"Space",modifiers:[n.KeyModifiers.Shift]}},Cn),new n.SimpleCommand("selectToColumnStart",e,{label:"Select To Column Start",description:"Select the columns to the beginning of the sheet."},()=>tn(!0)),new n.SimpleCommand("selectToColumnEnd",e,{label:"Select To Column End",description:"Select the columns to the end of the sheet."},()=>nn(!0)),new n.SimpleCommand("moveToRowStart",e,{label:"Move to Row Home",description:"Move to the beginning of the row.",shortcut:[{key:"Home"}]},()=>_t(!1)),new n.SimpleCommand("selectToRowStart",e,{label:"Select to Row Home",description:"Select to the beginning of the row.",shortcut:[{key:"Home",modifiers:[n.KeyModifiers.Shift]}]},()=>_t(!0)),new n.SimpleCommand("moveToSheetStart",e,{label:"Move to Sheet Home",description:"Move to the beginning of the sheet.",shortcut:[{key:"Home",modifiers:[n.KeyModifiers.Ctrl]}]},()=>qt(!1)),new n.SimpleCommand("selectToSheetStart",e,{label:"Select to Sheet Home",description:"Select to the beginning of the sheet.",shortcut:[{key:"Home",modifiers:[n.KeyModifiers.Ctrl,n.KeyModifiers.Shift]}]},()=>qt(!0)),new n.SimpleCommand("moveToRowEnd",e,{label:"Move to Row End",description:"Move to the end of the row.",shortcut:[{key:"End"}]},()=>Gt(!1)),new n.SimpleCommand("selectToRowEnd",e,{label:"Select to Row End",description:"Select to the end of the row.",shortcut:[{key:"End",modifiers:[n.KeyModifiers.Shift]}]},()=>Gt(!0)),new n.SimpleCommand("moveToSheetEnd",e,{label:"Move to Sheet End",description:"Move to the end of the sheet.",shortcut:[{key:"End",modifiers:[n.KeyModifiers.Ctrl]}]},()=>Vt(!1)),new n.SimpleCommand("selectToSheetEnd",e,{label:"Select to Sheet End",description:"Select to the end of the sheet.",shortcut:[{key:"End",modifiers:[n.KeyModifiers.Ctrl,n.KeyModifiers.Shift]}]},()=>Vt(!0)),new n.SimpleCommand("scrollToActiveCoords",e,{label:"Scroll to Active Cell",description:"Scroll to the Active Cell.",shortcut:{key:"Backspace",modifiers:[n.KeyModifiers.Ctrl]}},Kt),new n.SimpleCommand("scrollToActiveCoordsClearSelection",e,{label:"Scroll to Active Cell",description:"Scroll to the Active Cell and clear selection.",shortcut:{key:"Backspace",modifiers:[n.KeyModifiers.Shift]}},()=>{Bt(),Xe(b.cell,!0)}),new n.SimpleCommand("traverseSelectionRight",e,{label:"Traverse Right",description:"Traverse the selection moving rightward.",shortcut:{key:"Tab"}},cn),new n.SimpleCommand("traverseSelectionLeft",e,{label:"Traverse Left",description:"Traverse the selection moving leftward.",shortcut:{key:"Tab",modifiers:[n.KeyModifiers.Shift]}},ln),new n.SimpleCommand("traverseSelectionDown",e,{label:"Traverse Down",description:"Traverse the selection moving downward.",shortcut:[{key:"Enter"},{key:"NumpadEnter"}]},yn),new n.SimpleCommand("traverseSelectionUp",e,{label:"Traverse Up",description:"Traverse the selection moving upward.",shortcut:[{key:"Enter",modifiers:[n.KeyModifiers.Shift]},{key:"NumpadEnter",modifiers:[n.KeyModifiers.Shift]}]},vn),new n.SimpleCommand("moveLeft",e,{label:"Move Left",description:"Move active cell to the left.",shortcut:[{key:"ArrowLeft"}]},sn),new n.SimpleCommand("selectLeft",e,{label:"Select Left",description:"Extend selection left.",shortcut:[{key:"ArrowLeft",modifiers:[n.KeyModifiers.Shift]}]},x),new n.SimpleCommand("moveContentfulLeft",e,{label:"Move Left Contentful",description:"Move left to the next cell with content.",shortcut:[{key:"ArrowLeft",modifiers:[n.KeyModifiers.Ctrl]}]},S),new n.SimpleCommand("selectContentfulLeft",e,{label:"Select Left Contentful",description:"Extend selection left to the next cell with content.",shortcut:[{key:"ArrowLeft",modifiers:[n.KeyModifiers.Ctrl,n.KeyModifiers.Shift]}]},E),new n.SimpleCommand("moveRight",e,{label:"Move Right",description:"Move active cell to the right.",shortcut:[{key:"ArrowRight"}]},v),new n.SimpleCommand("selectRight",e,{label:"Select Right",description:"Extend selection right.",shortcut:[{key:"ArrowRight",modifiers:[n.KeyModifiers.Shift]}]},y),new n.SimpleCommand("moveContentfulRight",e,{label:"Move Right Contentful",description:"Move right to the next cell with content.",shortcut:[{key:"ArrowRight",modifiers:[n.KeyModifiers.Ctrl]}]},$),new n.SimpleCommand("selectContentfulRight",e,{label:"Select Right Contentful",description:"Extend selection right to the next cell with content.",shortcut:[{key:"ArrowRight",modifiers:[n.KeyModifiers.Ctrl,n.KeyModifiers.Shift]}]},ge),new n.SimpleCommand("moveUp",e,{label:"Move Up",description:"Move active cell to the up.",shortcut:[{key:"ArrowUp"}]},re),new n.SimpleCommand("selectUp",e,{label:"Select Up",description:"Extend selection up.",shortcut:[{key:"ArrowUp",modifiers:[n.KeyModifiers.Shift]}]},ue),new n.SimpleCommand("moveContentfulUp",e,{label:"Move Up Contentful",description:"Move up to the next cell with content.",shortcut:[{key:"ArrowUp",modifiers:[n.KeyModifiers.Ctrl]}]},V),new n.SimpleCommand("selectContentfulUp",e,{label:"Select Up Contentful",description:"Extend selection up to the next cell with content.",shortcut:[{key:"ArrowUp",modifiers:[n.KeyModifiers.Ctrl,n.KeyModifiers.Shift]}]},be),new n.SimpleCommand("moveDown",e,{label:"Move Down",description:"Move active cell to the down.",shortcut:[{key:"ArrowDown"}]},Ke),new n.SimpleCommand("selectDown",e,{label:"Select Down",description:"Extend selection down.",shortcut:[{key:"ArrowDown",modifiers:[n.KeyModifiers.Shift]}]},Pe),new n.SimpleCommand("moveContentfulDown",e,{label:"Move Down Contentful",description:"Move down to the next cell with content.",shortcut:[{key:"ArrowDown",modifiers:[n.KeyModifiers.Ctrl]}]},Ne),new n.SimpleCommand("selectContentfulDown",e,{label:"Select Down Contentful",description:"Extend selection down to the next cell with content.",shortcut:[{key:"ArrowDown",modifiers:[n.KeyModifiers.Ctrl,n.KeyModifiers.Shift]}]},Ie),new n.SimpleCommand("selectVisible",e,{label:"Select Visible",description:"Select visible cells only.",shortcut:{key:";",modifiers:[n.KeyModifiers.Alt]}},Sn),new n.SimpleCommand("traverseSelectionPreviousRange",e,{label:"Traverse Previous Range",description:"Traverse the selection to the previous range.",shortcut:{key:"ArrowLeft",modifiers:[n.KeyModifiers.Ctrl,n.KeyModifiers.Alt]}},Qt),new n.SimpleCommand("traverseSelectionNextRange",e,{label:"Traverse Next Range",description:"Traverse the selection to the next range.",shortcut:{key:"ArrowRight",modifiers:[n.KeyModifiers.Ctrl,n.KeyModifiers.Alt]}},Rn),new n.SimpleCommand("traverseSelectionCorners",e,{label:"Traverse Corners",description:"Traverse the selection through the corners of the selected range.",shortcut:{key:".",modifiers:[n.KeyModifiers.Ctrl]}},En)]},[]);return l.useMemo(()=>{o?.addCommands(Et,!0)},[o]),{selection:tt,setSelectionCell:Xe,setSelectionRanges:lt,overlay:gt,cursor:jt,onPointerDown:xn,clearLastSelection:ie,newSelection:pt,modifySelection:it,appendSelection:Se,clearSelections:Bt,isEntire:et,navigate:Ze,navigateSelection:Ot}};