@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.85 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 M;const{onRelease:s,childRef:a}=l,{enabled:g,drag:Y,mode:i,cell:I}=t.getSelectionOptions(l.selectable),c=n.useRef(null),T=n.useRef(null),y=n.useRef({clientX:0,clientY:0,scrollX:0,scrollY:0,pressedElement:null}),[p,v]=n.useState(null),K=n.useRef(void 0),R=n.useRef(!1),E=n.useRef(!1),_=n.useCallback(u=>{const{event:e}=u;if(E.current=t.isInNonSelectable(e.originalEvent.target),E.current||!c.current)return;K.current=t.relativeContextElement(c.current.element);const r=c.current.element&&c.current.element.ownerDocument;if(!r)return;e.originalEvent.stopImmediatePropagation();const o=r.elementFromPoint(e.clientX,e.clientY);y.current={clientY:e.clientY,clientX:e.clientX,scrollX:e.scrollX,scrollY:e.scrollY,pressedElement:o}},[]),H=n.useCallback(u=>{const{event:e}=u,{clientX:r,clientY:o}=y.current;if(!E.current&&!(!Y||i==="single")&&((Math.abs(o-e.clientY)>5||Math.abs(r-e.clientX)>5)&&(R.current=!0),e.originalEvent.stopImmediatePropagation(),R.current)){const b=t.getOffset(K.current);v({top:Math.min(o,e.clientY)-b.top,left:Math.min(r,e.clientX)-b.left,width:Math.abs(e.clientX-r),height:Math.abs(e.clientY-o)})}},[v,Y,i]),z=n.useCallback(u=>{const{event:e}=u,{clientX:r,clientY:o,scrollX:b,scrollY:B,pressedElement:G}=y.current;if(E.current||!c.current)return;const h=c.current.element&&c.current.element.ownerDocument;if(h){if(e.originalEvent.stopImmediatePropagation(),R.current){const m=e.scrollY-B,D=e.scrollX-b,x=Math.min(o,e.clientY),d=Math.min(r,e.clientX),f=Math.max(o,e.clientY),J=Math.max(r,e.clientX),X=T.current;if(!X)return;X.style.visibility="hidden";const L=h.elementFromPoint(d,x),P=m>0||D>0?G:L,C=h.elementFromPoint(J,f);if(X.style.visibility="",!P||!C)return;const S=t.closestTagName(P,"TD"),Q=t.closestTagName(S,"TR"),w=t.closestTagName(C,"TD"),U=t.closestTagName(w,"TR"),O=t.getColumnIndex(S),N=t.getRowIndex(Q),k=t.getColumnIndex(w),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:I,isDrag:!0})}else{const m=h.elementFromPoint(r,o);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:I,isDrag:!1})}v(null),R.current=!1,y.current={clientX:0,clientY:0,scrollX:0,scrollY:0,pressedElement:null}}},[v,i,I,s]),A=j.useDocument(T);return g?n.createElement(n.Fragment,null,n.createElement(j.Draggable,{onPress:_,onDrag:H,onRelease:z,ref:c,childRef:a},l.children),p&&Z.createPortal(n.createElement("div",{ref:T,style:{...p,position:"fixed"},className:"k-marquee k-marquee-color"}),(M=A())==null?void 0:M.body)):n.cloneElement(n.Children.only(l.children),{ref:a})};exports.TableSelection=$;