@progress/kendo-react-data-tools
Version:
Includes React Pager & React Filter component, an intuitive interface to create complex filter descriptions. KendoReact Data Tools package
10 lines (9 loc) • 3.71 kB
JavaScript
/**
* @license
*-------------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the package root for more information
*-------------------------------------------------------------------------------------------
*/
"use client";
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const V=require("react"),W=require("react-dom"),j=require("@progress/kendo-react-common"),t=require("./utils.js");function F(l){const s=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(l){for(const a in l)if(a!=="default"){const g=Object.getOwnPropertyDescriptor(l,a);Object.defineProperty(s,a,g.get?g:{enumerable:!0,get:()=>l[a]})}}return s.default=l,Object.freeze(s)}const n=F(V),Z=F(W),$=l=>{var C;const{onRelease:s,childRef:a}=l,{enabled:g,drag:I,mode:i,cell:T}=t.getSelectionOptions(l.selectable),o=n.useRef(null),X=n.useRef(null),y=n.useRef({clientX:0,clientY:0,scrollX:0,scrollY:0,pressedElement:null}),[K,R]=n.useState(null),M=n.useRef(),b=n.useRef(!1),v=n.useRef(!1),_=n.useCallback(u=>{const{event:e}=u;if(v.current=t.isInNonSelectable(e.originalEvent.target),v.current||!o.current)return;M.current=t.relativeContextElement(o.current.element);const r=o.current.element&&o.current.element.ownerDocument;if(!r)return;const c=r.elementFromPoint(e.clientX,e.clientY);y.current={clientY:e.clientY,clientX:e.clientX,scrollX:e.scrollX,scrollY:e.scrollY,pressedElement:c}},[]),H=n.useCallback(u=>{const{event:e}=u,{clientX:r,clientY:c}=y.current;if(!v.current&&!(!I||i==="single")&&((Math.abs(c-e.clientY)>5||Math.abs(r-e.clientX)>5)&&(b.current=!0),b.current)){const E=t.getOffset(M.current);R({top:Math.min(c,e.clientY)-E.top,left:Math.min(r,e.clientX)-E.left,width:Math.abs(e.clientX-r),height:Math.abs(e.clientY-c)})}},[R,I,i]),z=n.useCallback(u=>{const{event:e}=u,{clientX:r,clientY:c,scrollX:E,scrollY:B,pressedElement:G}=y.current;if(v.current||!o.current)return;const h=o.current.element&&o.current.element.ownerDocument;if(h){if(b.current){const m=e.scrollY-B,D=e.scrollX-E,x=Math.min(c,e.clientY),d=Math.min(r,e.clientX),f=Math.max(c,e.clientY),J=Math.max(r,e.clientX),Y=X.current;if(!Y)return;Y.style.visibility="hidden";const L=h.elementFromPoint(d,x),S=m>0||D>0?G:L,w=h.elementFromPoint(J,f);if(Y.style.visibility="",!S||!w)return;const P=t.closestTagName(S,"TD"),Q=t.closestTagName(P,"TR"),p=t.closestTagName(w,"TD"),U=t.closestTagName(p,"TR"),O=t.getColumnIndex(P),N=t.getRowIndex(Q),k=t.getColumnIndex(p),q=t.getRowIndex(U);O!==void 0&&N!==void 0&&k!==void 0&&q!==void 0&&s({nativeEvent:e.originalEvent,startRowIndex:N,startColIndex:O,endRowIndex:q,endColIndex:k,altKey:e.altKey,shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,metaKey:e.metaKey,mode:i,cell:T,isDrag:!0})}else{const m=h.elementFromPoint(r,c);if(!m)return;const D=t.closestTagName(m,"TD"),x=t.closestTagName(m,"TR"),d=t.getColumnIndex(D),f=t.getRowIndex(x);D&&x&&f!==void 0&&d!==void 0&&s({nativeEvent:e.originalEvent,startRowIndex:f,startColIndex:d,endRowIndex:f,endColIndex:d,altKey:e.altKey,shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,metaKey:e.metaKey,mode:i,cell:T,isDrag:!1})}R(null),b.current=!1,y.current={clientX:0,clientY:0,scrollX:0,scrollY:0,pressedElement:null}}},[R,i,T,s]),A=j.useDocument(X);return g?n.createElement(n.Fragment,null,n.createElement(j.Draggable,{onPress:_,onDrag:H,onRelease:z,ref:o,childRef:a},l.children),K&&Z.createPortal(n.createElement("div",{ref:X,style:{...K,position:"fixed"},className:"k-marquee k-marquee-color"}),(C=A())==null?void 0:C.body)):n.cloneElement(n.Children.only(l.children),{ref:a})};exports.TableSelection=$;