@aiquants/swipe-overlay 1.2.0 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -66,6 +66,7 @@ declare const useTapClick: (onTap: () => void, threshold?: number) => {
66
66
  onPointerDown: (e: React.PointerEvent) => void;
67
67
  onPointerUp: (e: React.PointerEvent) => void;
68
68
  onPointerCancel: () => void;
69
+ onKeyDown: (e: React.KeyboardEvent) => void;
69
70
  onClick: (e: React.MouseEvent) => void;
70
71
  };
71
72
 
package/dist/index.d.ts CHANGED
@@ -66,6 +66,7 @@ declare const useTapClick: (onTap: () => void, threshold?: number) => {
66
66
  onPointerDown: (e: React.PointerEvent) => void;
67
67
  onPointerUp: (e: React.PointerEvent) => void;
68
68
  onPointerCancel: () => void;
69
+ onKeyDown: (e: React.KeyboardEvent) => void;
69
70
  onClick: (e: React.MouseEvent) => void;
70
71
  };
71
72
 
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var E=Object.defineProperty;var F=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var _=Object.prototype.hasOwnProperty;var O=(e,n)=>{for(var t in n)E(e,t,{get:n[t],enumerable:!0})},U=(e,n,t,a)=>{if(n&&typeof n=="object"||typeof n=="function")for(let l of G(n))!_.call(e,l)&&l!==t&&E(e,l,{get:()=>n[l],enumerable:!(a=F(n,l))||a.enumerable});return e};var K=e=>U(E({},"__esModule",{value:!0}),e);var W={};O(W,{SwipeCloseGuardContext:()=>T,useOverlayEscapeStack:()=>X,useSwipeCloseGuard:()=>j,useSwipeGuardState:()=>N,useSwipeToDismissOverlay:()=>z,useTapClick:()=>Q,useTransitionDisplay:()=>J});module.exports=K(W);var r=require("react"),V=120,q=.5,$=40,T=(0,r.createContext)(null),j=()=>(0,r.useContext)(T)??{isBlocked:!1,requestBlock:()=>()=>{}},u=[],k=e=>{if(e.key!=="Escape")return;u[u.length-1]?.onEscape(e)&&(e.preventDefault(),e.stopPropagation())},X=()=>(0,r.useCallback)(e=>{let n=u.findIndex(t=>t.id===e.id);return n>=0&&u.splice(n,1),u.push(e),u.length===1&&typeof document<"u"&&document.addEventListener("keydown",k,!0),()=>{let t=u.findIndex(a=>a.id===e.id);t>=0&&u.splice(t,1),u.length===0&&typeof document<"u"&&document.removeEventListener("keydown",k,!0)}},[]),z=({isOpen:e,onClose:n,isCloseBlocked:t,skipWhenTextSelected:a=!1,swipeThreshold:l=V,flickVelocity:p=q,flickDistance:S=$})=>{let[i,M]=(0,r.useState)(null),[R,m]=(0,r.useState)(!1),h=X(),x=(0,r.useRef)(`overlay-${Math.random().toString(36).slice(2)}`).current,d=(0,r.useRef)({pointerId:null,startX:0,startY:0,isActive:!1,isClosing:!1,lastDelta:0,hasCapture:!1,history:[]}),f=(0,r.useCallback)(()=>t()?!1:(n(),!0),[t,n]),D=(0,r.useRef)(f);D.current=f,(0,r.useEffect)(()=>{if(e)return h({id:x,onEscape:f})},[e,f,h,x]),(0,r.useEffect)(()=>{if(!(i&&e))return;let v=()=>{let o=d.current;o.hasCapture&&o.pointerId!==null&&i.releasePointerCapture?.(o.pointerId),Object.assign(o,{pointerId:null,isActive:!1,isClosing:!1,hasCapture:!1,history:[]}),i.style.transform="",i.style.transition="",m(!1)};d.current={pointerId:null,startX:0,startY:0,isActive:!1,isClosing:!1,lastDelta:0,hasCapture:!1,history:[]},m(!1);let b=o=>{o.pointerType==="mouse"&&o.button!==0||o.target?.closest('[data-overlay-interactive="true"]')||a&&window.getSelection()?.toString().trim()||(i.style.transition="none",m(!0),d.current={pointerId:o.pointerId,startX:o.clientX,startY:o.clientY,isActive:!0,isClosing:!1,lastDelta:0,hasCapture:!1,history:[{x:o.clientX,time:Date.now()}]})},g=o=>{let s=d.current;if(!s.isActive||s.pointerId!==o.pointerId)return;if(a&&window.getSelection()?.toString().trim()){v();return}s.history.push({x:o.clientX,time:Date.now()});let c=o.clientX-s.startX,y=o.clientY-s.startY;if(!s.isClosing){if(Math.abs(c)<4)return;if(Math.abs(c)<Math.abs(y)*1.3||c<=0){v();return}s.isClosing=!0,s.hasCapture||(i.setPointerCapture?.(o.pointerId),s.hasCapture=!0)}s.isClosing&&(o.preventDefault(),s.lastDelta=Math.max(0,c),i.style.transform=`translateX(${Math.min(s.lastDelta,520)}px)`)},w=o=>{let s=d.current;if(s.pointerId!==o.pointerId)return;let c=Date.now(),y=c-100,I=s.history.find(C=>C.time>=y)||s.history[0]||{x:s.startX,time:c},L=c-I.time,Y=o.clientX-I.x,H=L>0?Y/L:0,B=s.lastDelta>l,P=H>p&&s.lastDelta>S;if(s.isClosing&&(B||P)){let C=P?.15:.3;i.style.transition=`transform ${C}s ease-out`,i.style.transform="translateX(100%)",s.hasCapture&&s.pointerId!==null&&i.releasePointerCapture?.(s.pointerId),Object.assign(s,{pointerId:null,isActive:!1,isClosing:!1,hasCapture:!1,history:[]}),m(!1),D.current()}else v()};return i.addEventListener("pointerdown",b),i.addEventListener("pointermove",g),i.addEventListener("pointerup",w),i.addEventListener("pointercancel",v),()=>{i.removeEventListener("pointerdown",b),i.removeEventListener("pointermove",g),i.removeEventListener("pointerup",w),i.removeEventListener("pointercancel",v)}},[e,i,a,l,p,S]);let A=(0,r.useMemo)(()=>({transform:e?"translateX(0px)":"translateX(100%)"}),[e]);return{overlayRef:M,overlayStyle:A,attemptClose:f,isSwiping:R,element:i}},N=()=>{let e=(0,r.useRef)(new Set),[n,t]=(0,r.useState)(!1),a=(0,r.useCallback)(()=>{let p=Symbol("guard");return e.current.add(p),t(!0),()=>{e.current.delete(p),t(e.current.size>0)}},[]),l=(0,r.useCallback)(()=>{e.current.clear(),t(!1)},[]);return{isBlocked:n,requestBlock:a,reset:l}};function J(e,n){let t=(0,r.useRef)(n);return e&&n!==null&&(t.current=n),e?n:t.current}var Q=(e,n=10)=>{let t=(0,r.useRef)(null);return{onPointerDown:a=>{t.current={x:a.clientX,y:a.clientY}},onPointerUp:a=>{if(t.current){let l=Math.hypot(a.clientX-t.current.x,a.clientY-t.current.y);t.current=null,l<n&&(a.preventDefault(),e())}},onPointerCancel:()=>{t.current=null},onClick:a=>a.preventDefault()}};0&&(module.exports={SwipeCloseGuardContext,useOverlayEscapeStack,useSwipeCloseGuard,useSwipeGuardState,useSwipeToDismissOverlay,useTapClick,useTransitionDisplay});
1
+ "use strict";var D=Object.defineProperty;var F=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var K=Object.prototype.hasOwnProperty;var U=(e,o)=>{for(var t in o)D(e,t,{get:o[t],enumerable:!0})},V=(e,o,t,n)=>{if(o&&typeof o=="object"||typeof o=="function")for(let a of G(o))!K.call(e,a)&&a!==t&&D(e,a,{get:()=>o[a],enumerable:!(n=F(o,a))||n.enumerable});return e};var q=e=>V(D({},"__esModule",{value:!0}),e);var ee={};U(ee,{SwipeCloseGuardContext:()=>M,useOverlayEscapeStack:()=>R,useSwipeCloseGuard:()=>$,useSwipeGuardState:()=>J,useSwipeToDismissOverlay:()=>z,useTapClick:()=>Z,useTransitionDisplay:()=>Q});module.exports=q(ee);var r=require("react"),j=120,N=.5,W=40,T=100,M=(0,r.createContext)(null),$=()=>(0,r.useContext)(M)??{isBlocked:!1,requestBlock:()=>()=>{}},c=[],X=e=>{if(e.key!=="Escape")return;c[c.length-1].onEscape(e)&&(e.preventDefault(),e.stopPropagation())},R=()=>(0,r.useCallback)(e=>{let o=c.findIndex(t=>t.id===e.id);return o>=0&&c.splice(o,1),c.push(e),c.length===1&&typeof document<"u"&&document.addEventListener("keydown",X,!0),()=>{let t=c.findIndex(n=>n.id===e.id);t>=0&&c.splice(t,1),c.length===0&&typeof document<"u"&&document.removeEventListener("keydown",X,!0)}},[]),z=({isOpen:e,onClose:o,isCloseBlocked:t,skipWhenTextSelected:n=!1,swipeThreshold:a=j,flickVelocity:f=N,flickDistance:b=W})=>{let[l,A]=(0,r.useState)(null),[Y,v]=(0,r.useState)(!1),g=R(),x=(0,r.useId)(),u=(0,r.useRef)({pointerId:null,startX:0,startY:0,isActive:!1,isClosing:!1,lastDelta:0,capturedPointerId:null,history:[]}),E=(0,r.useCallback)(()=>t()?!1:(o(),!0),[t,o]),C=(0,r.useRef)(E);C.current=E,(0,r.useEffect)(()=>{if(e)return g({id:x,onEscape:()=>C.current()})},[e,g,x]),(0,r.useEffect)(()=>{if(!(l&&e))return;let S=()=>{let s=u.current;if(s.capturedPointerId!==null){try{l.releasePointerCapture(s.capturedPointerId)}catch{}s.capturedPointerId=null}},d=()=>{let s=u.current;S(),Object.assign(s,{pointerId:null,isActive:!1,isClosing:!1,capturedPointerId:null,history:[]}),l.style.transform="",l.style.transition="",v(!1)};u.current={pointerId:null,startX:0,startY:0,isActive:!1,isClosing:!1,lastDelta:0,capturedPointerId:null,history:[]},l.style.transform="",l.style.transition="",v(!1);let h=s=>{s.pointerType==="mouse"&&s.button!==0||s.target.closest('[data-overlay-interactive="true"]')||n&&window.getSelection()?.toString().trim()||(u.current={pointerId:s.pointerId,startX:s.clientX,startY:s.clientY,isActive:!0,isClosing:!1,lastDelta:0,capturedPointerId:null,history:[{x:s.clientX,time:Date.now()}]})},w=s=>{let i=u.current;if(!i.isActive||i.pointerId!==s.pointerId)return;if(n&&window.getSelection()?.toString().trim()){d();return}let y=Date.now();for(i.history.push({x:s.clientX,time:y});i.history.length>2&&i.history[1].time<=y-T;)i.history.shift();let p=s.clientX-i.startX,m=s.clientY-i.startY;if(!i.isClosing){if(Math.abs(p)<4)return;if(Math.abs(p)<Math.abs(m)*1.3||p<=0){d();return}i.isClosing=!0,l.style.transition="none",l.setPointerCapture(s.pointerId),i.capturedPointerId=s.pointerId,v(!0)}i.isClosing&&(s.preventDefault(),i.lastDelta=Math.max(0,p),l.style.transform=`translateX(${Math.min(i.lastDelta,520)}px)`)},P=s=>{let i=u.current;if(i.pointerId!==s.pointerId)return;let y=Date.now(),p=y-T,m=i.history.find(I=>I.time>=p)||i.history[0],k=y-m.time,_=s.clientX-m.x,B=k>0?_/k:0,O=i.lastDelta>a,L=B>f&&i.lastDelta>b;if(i.isClosing&&(O||L))if(C.current()){let I=L?.15:.3;l.style.transition=`transform ${I}s ease-out`,l.style.transform="translateX(100%)",S(),Object.assign(i,{pointerId:null,isActive:!1,isClosing:!1,capturedPointerId:null,history:[]}),v(!1)}else d();else d()};return l.addEventListener("pointerdown",h),l.addEventListener("pointermove",w),l.addEventListener("pointerup",P),l.addEventListener("pointercancel",d),()=>{S(),l.removeEventListener("pointerdown",h),l.removeEventListener("pointermove",w),l.removeEventListener("pointerup",P),l.removeEventListener("pointercancel",d)}},[e,l,n,a,f,b]);let H=(0,r.useMemo)(()=>({transform:e?"translateX(0px)":"translateX(100%)"}),[e]);return{overlayRef:A,overlayStyle:H,attemptClose:E,isSwiping:Y,element:l}},J=()=>{let e=(0,r.useRef)(new Set),[o,t]=(0,r.useState)(!1),n=(0,r.useCallback)(()=>{let f=Symbol("guard");return e.current.add(f),t(!0),()=>{e.current.delete(f),t(e.current.size>0)}},[]),a=(0,r.useCallback)(()=>{e.current.clear(),t(!1)},[]);return{isBlocked:o,requestBlock:n,reset:a}};function Q(e,o){let t=(0,r.useRef)(o);return e&&o!==null&&(t.current=o),e?o:t.current}var Z=(e,o=10)=>{let t=(0,r.useRef)(null);return{onPointerDown:n=>{t.current={x:n.clientX,y:n.clientY}},onPointerUp:n=>{if(t.current){let a=Math.hypot(n.clientX-t.current.x,n.clientY-t.current.y);t.current=null,a<o&&(n.preventDefault(),e())}},onPointerCancel:()=>{t.current=null},onKeyDown:n=>{n.target===n.currentTarget&&(n.key==="Enter"||n.key===" "||n.key==="Spacebar")&&(n.preventDefault(),e())},onClick:n=>n.preventDefault()}};0&&(module.exports={SwipeCloseGuardContext,useOverlayEscapeStack,useSwipeCloseGuard,useSwipeGuardState,useSwipeToDismissOverlay,useTapClick,useTransitionDisplay});
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{createContext as F,useCallback as y,useContext as G,useEffect as T,useMemo as _,useRef as c,useState as S}from"react";var O=120,U=.5,K=40,V=F(null),j=()=>G(V)??{isBlocked:!1,requestBlock:()=>()=>{}},a=[],X=e=>{if(e.key!=="Escape")return;a[a.length-1]?.onEscape(e)&&(e.preventDefault(),e.stopPropagation())},q=()=>y(e=>{let i=a.findIndex(r=>r.id===e.id);return i>=0&&a.splice(i,1),a.push(e),a.length===1&&typeof document<"u"&&document.addEventListener("keydown",X,!0),()=>{let r=a.findIndex(o=>o.id===e.id);r>=0&&a.splice(r,1),a.length===0&&typeof document<"u"&&document.removeEventListener("keydown",X,!0)}},[]),z=({isOpen:e,onClose:i,isCloseBlocked:r,skipWhenTextSelected:o=!1,swipeThreshold:u=O,flickVelocity:p=U,flickDistance:h=K})=>{let[s,M]=S(null),[R,m]=S(!1),x=q(),D=c(`overlay-${Math.random().toString(36).slice(2)}`).current,d=c({pointerId:null,startX:0,startY:0,isActive:!1,isClosing:!1,lastDelta:0,hasCapture:!1,history:[]}),f=y(()=>r()?!1:(i(),!0),[r,i]),b=c(f);b.current=f,T(()=>{if(e)return x({id:D,onEscape:f})},[e,f,x,D]),T(()=>{if(!(s&&e))return;let v=()=>{let n=d.current;n.hasCapture&&n.pointerId!==null&&s.releasePointerCapture?.(n.pointerId),Object.assign(n,{pointerId:null,isActive:!1,isClosing:!1,hasCapture:!1,history:[]}),s.style.transform="",s.style.transition="",m(!1)};d.current={pointerId:null,startX:0,startY:0,isActive:!1,isClosing:!1,lastDelta:0,hasCapture:!1,history:[]},m(!1);let g=n=>{n.pointerType==="mouse"&&n.button!==0||n.target?.closest('[data-overlay-interactive="true"]')||o&&window.getSelection()?.toString().trim()||(s.style.transition="none",m(!0),d.current={pointerId:n.pointerId,startX:n.clientX,startY:n.clientY,isActive:!0,isClosing:!1,lastDelta:0,hasCapture:!1,history:[{x:n.clientX,time:Date.now()}]})},w=n=>{let t=d.current;if(!t.isActive||t.pointerId!==n.pointerId)return;if(o&&window.getSelection()?.toString().trim()){v();return}t.history.push({x:n.clientX,time:Date.now()});let l=n.clientX-t.startX,C=n.clientY-t.startY;if(!t.isClosing){if(Math.abs(l)<4)return;if(Math.abs(l)<Math.abs(C)*1.3||l<=0){v();return}t.isClosing=!0,t.hasCapture||(s.setPointerCapture?.(n.pointerId),t.hasCapture=!0)}t.isClosing&&(n.preventDefault(),t.lastDelta=Math.max(0,l),s.style.transform=`translateX(${Math.min(t.lastDelta,520)}px)`)},I=n=>{let t=d.current;if(t.pointerId!==n.pointerId)return;let l=Date.now(),C=l-100,L=t.history.find(E=>E.time>=C)||t.history[0]||{x:t.startX,time:l},P=l-L.time,Y=n.clientX-L.x,H=P>0?Y/P:0,B=t.lastDelta>u,k=H>p&&t.lastDelta>h;if(t.isClosing&&(B||k)){let E=k?.15:.3;s.style.transition=`transform ${E}s ease-out`,s.style.transform="translateX(100%)",t.hasCapture&&t.pointerId!==null&&s.releasePointerCapture?.(t.pointerId),Object.assign(t,{pointerId:null,isActive:!1,isClosing:!1,hasCapture:!1,history:[]}),m(!1),b.current()}else v()};return s.addEventListener("pointerdown",g),s.addEventListener("pointermove",w),s.addEventListener("pointerup",I),s.addEventListener("pointercancel",v),()=>{s.removeEventListener("pointerdown",g),s.removeEventListener("pointermove",w),s.removeEventListener("pointerup",I),s.removeEventListener("pointercancel",v)}},[e,s,o,u,p,h]);let A=_(()=>({transform:e?"translateX(0px)":"translateX(100%)"}),[e]);return{overlayRef:M,overlayStyle:A,attemptClose:f,isSwiping:R,element:s}},N=()=>{let e=c(new Set),[i,r]=S(!1),o=y(()=>{let p=Symbol("guard");return e.current.add(p),r(!0),()=>{e.current.delete(p),r(e.current.size>0)}},[]),u=y(()=>{e.current.clear(),r(!1)},[]);return{isBlocked:i,requestBlock:o,reset:u}};function J(e,i){let r=c(i);return e&&i!==null&&(r.current=i),e?i:r.current}var Q=(e,i=10)=>{let r=c(null);return{onPointerDown:o=>{r.current={x:o.clientX,y:o.clientY}},onPointerUp:o=>{if(r.current){let u=Math.hypot(o.clientX-r.current.x,o.clientY-r.current.y);r.current=null,u<i&&(o.preventDefault(),e())}},onPointerCancel:()=>{r.current=null},onClick:o=>o.preventDefault()}};export{V as SwipeCloseGuardContext,q as useOverlayEscapeStack,j as useSwipeCloseGuard,N as useSwipeGuardState,z as useSwipeToDismissOverlay,Q as useTapClick,J as useTransitionDisplay};
1
+ import{createContext as F,useCallback as E,useContext as G,useEffect as X,useId as K,useMemo as U,useRef as y,useState as b}from"react";var V=120,q=.5,j=40,M=100,N=F(null),z=()=>G(N)??{isBlocked:!1,requestBlock:()=>()=>{}},l=[],R=e=>{if(e.key!=="Escape")return;l[l.length-1].onEscape(e)&&(e.preventDefault(),e.stopPropagation())},W=()=>E(e=>{let i=l.findIndex(o=>o.id===e.id);return i>=0&&l.splice(i,1),l.push(e),l.length===1&&typeof document<"u"&&document.addEventListener("keydown",R,!0),()=>{let o=l.findIndex(n=>n.id===e.id);o>=0&&l.splice(o,1),l.length===0&&typeof document<"u"&&document.removeEventListener("keydown",R,!0)}},[]),J=({isOpen:e,onClose:i,isCloseBlocked:o,skipWhenTextSelected:n=!1,swipeThreshold:a=V,flickVelocity:p=q,flickDistance:g=j})=>{let[s,A]=b(null),[Y,v]=b(!1),x=W(),h=K(),c=y({pointerId:null,startX:0,startY:0,isActive:!1,isClosing:!1,lastDelta:0,capturedPointerId:null,history:[]}),C=E(()=>o()?!1:(i(),!0),[o,i]),S=y(C);S.current=C,X(()=>{if(e)return x({id:h,onEscape:()=>S.current()})},[e,x,h]),X(()=>{if(!(s&&e))return;let I=()=>{let t=c.current;if(t.capturedPointerId!==null){try{s.releasePointerCapture(t.capturedPointerId)}catch{}t.capturedPointerId=null}},u=()=>{let t=c.current;I(),Object.assign(t,{pointerId:null,isActive:!1,isClosing:!1,capturedPointerId:null,history:[]}),s.style.transform="",s.style.transition="",v(!1)};c.current={pointerId:null,startX:0,startY:0,isActive:!1,isClosing:!1,lastDelta:0,capturedPointerId:null,history:[]},s.style.transform="",s.style.transition="",v(!1);let w=t=>{t.pointerType==="mouse"&&t.button!==0||t.target.closest('[data-overlay-interactive="true"]')||n&&window.getSelection()?.toString().trim()||(c.current={pointerId:t.pointerId,startX:t.clientX,startY:t.clientY,isActive:!0,isClosing:!1,lastDelta:0,capturedPointerId:null,history:[{x:t.clientX,time:Date.now()}]})},P=t=>{let r=c.current;if(!r.isActive||r.pointerId!==t.pointerId)return;if(n&&window.getSelection()?.toString().trim()){u();return}let f=Date.now();for(r.history.push({x:t.clientX,time:f});r.history.length>2&&r.history[1].time<=f-M;)r.history.shift();let d=t.clientX-r.startX,m=t.clientY-r.startY;if(!r.isClosing){if(Math.abs(d)<4)return;if(Math.abs(d)<Math.abs(m)*1.3||d<=0){u();return}r.isClosing=!0,s.style.transition="none",s.setPointerCapture(t.pointerId),r.capturedPointerId=t.pointerId,v(!0)}r.isClosing&&(t.preventDefault(),r.lastDelta=Math.max(0,d),s.style.transform=`translateX(${Math.min(r.lastDelta,520)}px)`)},k=t=>{let r=c.current;if(r.pointerId!==t.pointerId)return;let f=Date.now(),d=f-M,m=r.history.find(D=>D.time>=d)||r.history[0],L=f-m.time,_=t.clientX-m.x,B=L>0?_/L:0,O=r.lastDelta>a,T=B>p&&r.lastDelta>g;if(r.isClosing&&(O||T))if(S.current()){let D=T?.15:.3;s.style.transition=`transform ${D}s ease-out`,s.style.transform="translateX(100%)",I(),Object.assign(r,{pointerId:null,isActive:!1,isClosing:!1,capturedPointerId:null,history:[]}),v(!1)}else u();else u()};return s.addEventListener("pointerdown",w),s.addEventListener("pointermove",P),s.addEventListener("pointerup",k),s.addEventListener("pointercancel",u),()=>{I(),s.removeEventListener("pointerdown",w),s.removeEventListener("pointermove",P),s.removeEventListener("pointerup",k),s.removeEventListener("pointercancel",u)}},[e,s,n,a,p,g]);let H=U(()=>({transform:e?"translateX(0px)":"translateX(100%)"}),[e]);return{overlayRef:A,overlayStyle:H,attemptClose:C,isSwiping:Y,element:s}},Q=()=>{let e=y(new Set),[i,o]=b(!1),n=E(()=>{let p=Symbol("guard");return e.current.add(p),o(!0),()=>{e.current.delete(p),o(e.current.size>0)}},[]),a=E(()=>{e.current.clear(),o(!1)},[]);return{isBlocked:i,requestBlock:n,reset:a}};function Z(e,i){let o=y(i);return e&&i!==null&&(o.current=i),e?i:o.current}var ee=(e,i=10)=>{let o=y(null);return{onPointerDown:n=>{o.current={x:n.clientX,y:n.clientY}},onPointerUp:n=>{if(o.current){let a=Math.hypot(n.clientX-o.current.x,n.clientY-o.current.y);o.current=null,a<i&&(n.preventDefault(),e())}},onPointerCancel:()=>{o.current=null},onKeyDown:n=>{n.target===n.currentTarget&&(n.key==="Enter"||n.key===" "||n.key==="Spacebar")&&(n.preventDefault(),e())},onClick:n=>n.preventDefault()}};export{N as SwipeCloseGuardContext,W as useOverlayEscapeStack,z as useSwipeCloseGuard,Q as useSwipeGuardState,J as useSwipeToDismissOverlay,ee as useTapClick,Z as useTransitionDisplay};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aiquants/swipe-overlay",
3
- "version": "1.2.0",
3
+ "version": "1.2.2",
4
4
  "description": "React hooks and context for swipe-to-dismiss overlay interactions",
5
5
  "keywords": [
6
6
  "react",
@@ -32,12 +32,18 @@
32
32
  "LICENSE"
33
33
  ],
34
34
  "peerDependencies": {
35
- "react": "^19.2.7",
36
- "react-dom": "^19.2.7"
35
+ "react": ">=18.0.0",
36
+ "react-dom": ">=18.0.0"
37
37
  },
38
38
  "devDependencies": {
39
+ "@testing-library/jest-dom": "^6.9.1",
40
+ "@testing-library/react": "^16.3.0",
41
+ "@testing-library/user-event": "^14.6.1",
39
42
  "@types/react": "^19.2.7",
40
43
  "@types/react-dom": "^19.2.3",
44
+ "@vitejs/plugin-react": "^5.1.2",
45
+ "@vitest/coverage-v8": "^3.2.4",
46
+ "jsdom": "^26.1.0",
41
47
  "react": "^19.2.7",
42
48
  "react-dom": "^19.2.7",
43
49
  "rimraf": "^6.1.2",