UNPKG

@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.86 kB
/** * @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 W=require("react"),Z=require("react-dom"),F=require("@progress/kendo-react-common"),t=require("./utils.js");function _(l){const c=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(l){for(const s in l)if(s!=="default"){const y=Object.getOwnPropertyDescriptor(l,s);Object.defineProperty(c,s,y.get?y:{enumerable:!0,get:()=>l[s]})}}return c.default=l,Object.freeze(c)}const n=_(W),$=_(Z),ee=l=>{var M;const{onRelease:c,childRef:s}=l,{enabled:y,drag:Y,mode:u,cell:I}=t.getSelectionOptions(l.selectable),i=n.useRef(null),T=n.useRef(null),v=n.useRef({clientX:0,clientY:0,scrollX:0,scrollY:0,pressedElement:null}),[p,R]=n.useState(null),K=n.useRef(void 0),E=n.useRef(!1),b=n.useRef(!1),H=n.useCallback(m=>{var a;const{event:e}=m;if(b.current=t.isInNonSelectable(e.originalEvent.target),b.current||!i.current)return;K.current=t.relativeContextElement(i.current.element);const r=(a=i.current.element)==null?void 0:a.ownerDocument;if(!r)return;e.originalEvent.stopImmediatePropagation();const o=r.elementFromPoint(e.clientX,e.clientY);v.current={clientY:e.clientY,clientX:e.clientX,scrollX:e.scrollX,scrollY:e.scrollY,pressedElement:o}},[]),z=n.useCallback(m=>{const{event:e}=m,{clientX:r,clientY:o}=v.current;if(!b.current&&!(!Y||u==="single")&&((Math.abs(o-e.clientY)>5||Math.abs(r-e.clientX)>5)&&(E.current=!0),e.originalEvent.stopImmediatePropagation(),E.current)){const a=t.getOffset(K.current);R({top:Math.min(o,e.clientY)-a.top,left:Math.min(r,e.clientX)-a.left,width:Math.abs(e.clientX-r),height:Math.abs(e.clientY-o)})}},[R,Y,u]),A=n.useCallback(m=>{var P;const{event:e}=m,{clientX:r,clientY:o,scrollX:a,scrollY:G,pressedElement:J}=v.current;if(b.current||!i.current)return;const h=(P=i.current.element)==null?void 0:P.ownerDocument;if(h){if(e.originalEvent.stopImmediatePropagation(),E.current){const d=e.scrollY-G,D=e.scrollX-a,x=Math.min(o,e.clientY),f=Math.min(r,e.clientX),g=Math.max(o,e.clientY),L=Math.max(r,e.clientX),X=T.current;if(!X)return;X.style.visibility="hidden";const Q=h.elementFromPoint(f,x),C=d>0||D>0?J:Q,S=h.elementFromPoint(L,g);if(X.style.visibility="",!C||!S)return;const w=t.closestTagName(C,"TD"),U=t.closestTagName(w,"TR"),O=t.closestTagName(S,"TD"),V=t.closestTagName(O,"TR"),N=t.getColumnIndex(w),k=t.getRowIndex(U),q=t.getColumnIndex(O),j=t.getRowIndex(V);N!==void 0&&k!==void 0&&q!==void 0&&j!==void 0&&c({nativeEvent:e.originalEvent,startRowIndex:k,startColIndex:N,endRowIndex:j,endColIndex:q,altKey:e.altKey,shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,metaKey:e.metaKey,mode:u,cell:I,isDrag:!0})}else{const d=h.elementFromPoint(r,o);if(!d)return;const D=t.closestTagName(d,"TD"),x=t.closestTagName(d,"TR"),f=t.getColumnIndex(D),g=t.getRowIndex(x);D&&x&&g!==void 0&&f!==void 0&&c({nativeEvent:e.originalEvent,startRowIndex:g,startColIndex:f,endRowIndex:g,endColIndex:f,altKey:e.altKey,shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,metaKey:e.metaKey,mode:u,cell:I,isDrag:!1})}R(null),E.current=!1,v.current={clientX:0,clientY:0,scrollX:0,scrollY:0,pressedElement:null}}},[R,u,I,c]),B=F.useDocument(T);return y?n.createElement(n.Fragment,null,n.createElement(F.Draggable,{onPress:H,onDrag:z,onRelease:A,ref:i,childRef:s},l.children),p&&$.createPortal(n.createElement("div",{ref:T,style:{...p,position:"fixed"},className:"k-marquee k-marquee-color"}),(M=B())==null?void 0:M.body)):n.cloneElement(n.Children.only(l.children),{ref:s})};exports.TableSelection=ee;