rege 0.2.0 → 0.4.0

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.ts CHANGED
@@ -1,6 +1,7 @@
1
- import * as reev from 'reev';
2
- import { EventState } from 'reev';
3
- import { D as DragState, H as HoverState, K as KeyState, R as ResizeState, P as PinchState, S as ScrollState, W as WheelState } from './types-dbd32c09.js';
1
+ import * as reev_src from 'reev/src';
2
+ import { EventState } from 'reev/src';
3
+ import { D as DragState, H as HoverState, K as KeyState, R as ResizeState, P as PinchState, S as ScrollState, W as WheelState } from './types-372314b9.js';
4
+ export { b as DragArg, a as DragDevice, c as HoverArg, d as KeyArg, g as PinchArg, f as PinchDevice, e as ResizeArg, h as ScrollConfig, i as WheelConfig } from './types-372314b9.js';
4
5
 
5
6
  declare const EVENT_FOR_DRAG: {
6
7
  touch: {
@@ -44,9 +45,9 @@ declare const EVENT_FOR_HOVER: {
44
45
  up: string;
45
46
  };
46
47
  };
47
- declare const hoverEvent: <El extends Element = Element>(state?: Partial<HoverState<El>>) => EventState<HoverState<El>, reev.ExtractArgs<HoverState<El>>>;
48
+ declare const hoverEvent: <El extends Element = Element>(state?: Partial<HoverState<El>>) => EventState<HoverState<El>, reev_src.ExtractArgs<HoverState<El>>>;
48
49
 
49
- declare const keyEvent: <El extends Element = Element>(state?: Partial<KeyState<El>>) => reev.EventState<KeyState<El>, reev.ExtractArgs<KeyState<El>>>;
50
+ declare const keyEvent: <El extends Element = Element>(state?: Partial<KeyState<El>>) => reev_src.EventState<KeyState<El>, reev_src.ExtractArgs<KeyState<El>>>;
50
51
 
51
52
  declare const resizeEvent: <El extends Element = Element>(state: ResizeState) => EventState<ResizeState<El>, any[]>;
52
53
 
@@ -55,25 +56,24 @@ declare const EVENT_FOR_PINCH: {
55
56
  start: string;
56
57
  move: string;
57
58
  end: string;
58
- up: string;
59
+ cancel: string;
59
60
  };
60
61
  pointer: {
61
62
  start: string;
62
63
  move: string;
63
64
  end: string;
64
- up: string;
65
+ cancel: string;
65
66
  };
66
- mouse: {
67
+ gesture: {
67
68
  start: string;
68
- move: string;
69
+ change: string;
69
70
  end: string;
70
- up: string;
71
71
  };
72
72
  };
73
- declare const pinchEvent: <El extends Element = Element>(state?: Partial<PinchState<El>>) => EventState<PinchState<El>, any[] | unknown[]>;
73
+ declare const pinchEvent: <El extends Element = Element>(config?: Partial<PinchState<El>>) => EventState<PinchState<El>, reev_src.ExtractArgs<PinchState<El>>>;
74
74
 
75
75
  declare const scrollEvent: <El extends Element = Element>(config?: ScrollState) => EventState<ScrollState<El>, any[] | unknown[]>;
76
76
 
77
77
  declare const wheelEvent: <El extends Element = Element>(config?: WheelState) => EventState<WheelState<El>, any[] | unknown[]>;
78
78
 
79
- export { EVENT_FOR_DRAG, EVENT_FOR_HOVER, EVENT_FOR_PINCH, dragEvent, hoverEvent, keyEvent, pinchEvent, resizeEvent, scrollEvent, wheelEvent };
79
+ export { DragState, EVENT_FOR_DRAG, EVENT_FOR_HOVER, EVENT_FOR_PINCH, HoverState, KeyState, PinchState, ResizeState, ScrollState, WheelState, dragEvent, hoverEvent, keyEvent, pinchEvent, resizeEvent, scrollEvent, wheelEvent };
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- var y=Object.defineProperty;var N=Object.getOwnPropertyDescriptor;var Y=Object.getOwnPropertyNames;var X=Object.prototype.hasOwnProperty;var U=(r,t)=>{for(var a in t)y(r,a,{get:t[a],enumerable:!0})},B=(r,t,a,l)=>{if(t&&typeof t=="object"||typeof t=="function")for(let v of Y(t))!X.call(r,v)&&v!==a&&y(r,v,{get:()=>t[v],enumerable:!(l=N(t,v))||l.enumerable});return r};var j=r=>B(y({},"__esModule",{value:!0}),r);var ie={};U(ie,{EVENT_FOR_DRAG:()=>D,EVENT_FOR_HOVER:()=>H,EVENT_FOR_PINCH:()=>T,dragEvent:()=>ee,hoverEvent:()=>te,keyEvent:()=>ne,pinchEvent:()=>ae,resizeEvent:()=>re,scrollEvent:()=>ce,wheelEvent:()=>C});module.exports=j(ie);var R=require("reev");var q=typeof Float32Array<"u"?Float32Array:Array,o=(r=0,t=0,a=new q(2))=>(a[0]=r,a[1]=t,a),m=(r,t,a=o())=>(a[0]=r[0]+t[0],a[1]=r[1]+t[1],a),_=(r,t,a=o())=>(a[0]=r[0]-t[0],a[1]=r[1]-t[1],a),h=(r,t=o())=>(t[0]=r[0],t[1]=r[1],t),V=typeof window<"u"&&!!window.document&&!!window.document.createElement,b=()=>V&&"ontouchstart"in window,J=()=>b()||V&&window.navigator.maxTouchPoints>1,Q=()=>V&&"onpointerdown"in window,Z=()=>V&&"exitPointerLock"in window.document,$=()=>{try{return"constructor"in GestureEvent}catch{return!1}},u={isBrowser:V,get gesture(){return u._gesture??(u._gesture=$())},get touch(){return u._touch??(u._touch=b())},get touchscreen(){return u._touchscreen??(u._touchscreen=J())},get pointer(){return u._pointer??(u._pointer=Q())},get pointerLock(){return u._pointerLock??(u._pointerLock=Z())}},w=(r=!1)=>r&&u.pointerLock?"mouse":u.touch?"touch":u.pointer?"pointer":"mouse",S=(r,t,a)=>{if(t!=="touch")return o(r.clientX,r.clientY,a);let[l]=r.changedTouches;return o(l.clientX,l.clientY,a)};var D={touch:{start:"touchstart",move:"touchmove",end:"touchend",up:"touchcancel"},pointer:{start:"pointerdown",move:"pointermove",end:"pointerup",up:"pointercancel"},mouse:{start:"mousedown",move:"mousemove",end:"mouseup",up:"mousecancel"}},ee=(r={})=>{let t=()=>{o(0,0,e.value),o(0,0,e._value),o(0,0,e.delta),o(0,0,e.movement)},a=()=>{e.isDragStart=e.active&&!e._active,e.isDragging=e.active&&e._active,e.isDragEnd=!e.active&&e._active},l=n=>{e.event=n,e.active=!0,S(n,e.device,e.value),e.target.setPointerCapture&&"pointerId"in n&&e.target.setPointerCapture(n.pointerId),e.onDrag(e)},v=n=>{e.event=n,e._active=e.active,h(e.value,e._value),S(n,e.device,e.value),e._active&&(_(e.value,e._value,e.delta),m(e.offset,e.delta,e.offset),m(e.movement,e.delta,e.movement)),e.onDrag(e)},c=n=>{e.event=n,e.active=!1,t(),e.target.releasePointerCapture&&"pointerId"in n&&e.target.releasePointerCapture(n.pointerId),e.onDrag(e)},i=n=>{e.target=n;let{start:E,move:g,end:s,up:p}=D[e.device];n.addEventListener(E,e.onDragStart),n.addEventListener(g,e.onDragging),n.addEventListener(s,e.onDragEnd),n.addEventListener(p,e.onDragEnd)},f=()=>{let n=e.target;if(!n)return;let{start:E,move:g,end:s,up:p}=D[e.device];n.removeEventListener(E,e.onDragStart),n.removeEventListener(g,e.onDragging),n.removeEventListener(s,e.onDragEnd),n.removeEventListener(p,e.onDragEnd)},d=n=>{e(r),n?e.onMount(n):e.onClean()},e=(0,R.event)({_active:!1,active:!1,device:w(),_value:o(0,0),value:o(0,0),delta:o(0,0),offset:o(0,0),movement:o(0,0),target:null,event:null,memo:{},isDragStart:!1,isDragging:!1,isDragEnd:!1,onDrag:a,onDragStart:l,onDragging:v,onDragEnd:c,onMount:i,onClean:f,ref:d});return e};var M=require("reev");var H={touch:{start:"touchstart",move:"touchmove",end:"touchend",up:"touchcancel"},pointer:{start:"pointerenter",move:"pointermove",end:"pointerleave",up:"pointercancel"},mouse:{start:"mouseenter",move:"mousemove",end:"mouseleave",up:"mousecancel"}},te=(r={})=>{let t=()=>{o(0,0,e.value),o(0,0,e._value),o(0,0,e.delta),o(0,0,e.movement)},a=()=>{e.isHoverStart=!e._active&&e.active,e.isHovering=e._active&&e.active,e.isHoverEnd=e._active&&!e.active},l=n=>{e.event=n,e.active=!0,S(n,e.device,e.value),e.onHover(e)},v=n=>{e.event=n,e._active=e.active,h(e.value,e._value),S(n,e.device,e.value),e._active&&(_(e.value,e._value,e.delta),m(e.offset,e.delta,e.offset),m(e.movement,e.delta,e.movement)),e.onHover(e)},c=n=>{e.event=n,e._active=!0,e.active=!1,t(),e.onHover(e)},i=n=>{e.target=n;let{start:E,move:g,end:s,up:p}=H[e.device];n.addEventListener(E,e.onHoverStart),n.addEventListener(g,e.onHovering),n.addEventListener(s,e.onHoverEnd),n.addEventListener(p,e.onHoverEnd)},f=()=>{let n=e.target;if(!n)return;let{start:E,move:g,end:s,up:p}=H[e.device];n.removeEventListener(E,e.onHoverStart),n.removeEventListener(g,e.onHovering),n.removeEventListener(s,e.onHoverEnd),n.removeEventListener(p,e.onHoverEnd)},d=n=>{e(r),n?e.onMount(n):e.onClean()},e=(0,M.event)({_active:!1,active:!1,device:w(),_value:o(0,0),value:o(0,0),delta:o(0,0),offset:o(0,0),movement:o(0,0),target:null,event:null,memo:{},isHoverStart:!1,isHovering:!1,isHoverEnd:!1,onHover:a,onHoverStart:l,onHovering:v,onHoverEnd:c,onMount:i,onClean:f,ref:d});return e};var z=require("reev"),ne=(r={})=>{let c=(0,z.event)({onKeydown:i=>{c.event=i,c.key=i.key,c.code=i.code,c.onKey?.(c)},onMount:i=>{i||(i=i||window),c.target=i,i.setAttribute("tabindex","1"),i.addEventListener("keydown",c.onKeydown)},onClean:()=>{let i=c.target;i&&i.removeEventListener("keydown",c.onKeydown)},ref:i=>{c(r),i?c.onMount(i):c.onClean()}});return c};var K=require("reev"),oe=100,re=r=>{let t=i=>()=>{},c=(0,K.event)({observer:null,listener:()=>{},onResize:()=>{},onMount:i=>{let f=d=>{if(d.target!==i)return;let e=setTimeout(t(d),oe);c.listener(),c.listener=()=>clearTimeout(e)};c.observer=new ResizeObserver(d=>{d.forEach(f)}),c.observer.observe(i)},onClean:()=>{},ref:i=>{c(r),i?c.onMount(i):c.onClean(null)}});return c};var O=(r=!1)=>{if(!u.touch&&u.gesture)return"gesture";if(u.touch&&r)return"touch";if(u.touchscreen){if(u.pointer)return"pointer";if(u.touch)return"touch"}return"wheel"};var I=40,A=800,W=(r,t)=>{if(!(r instanceof WheelEvent))return o(0,0,t);let{deltaX:a,deltaY:l,deltaMode:v}=r;return v===1?(a*=I,l*=I):v===2&&(a*=A,l*=A),o(a,l,t)};var F=require("reev"),C=r=>{let t=()=>{o(0,0,e.value),o(0,0,e._value),o(0,0,e.delta),o(0,0,e.movement)},a=()=>{e.isWheelStart=e.active&&!e._active,e.isWheeling=e.active&&e._active,e.isWheelEnd=!e.active&&e._active},l=n=>{e.event=n,e.active=!0,W(n,e.delta),e.onWheel(e)},v=n=>{let E=setTimeout(()=>e.onWheelEnd(n),e.timeout);if(e.clearTimeout(),e.clearTimeout=()=>clearTimeout(E),e.event=n,!e.active){e.onWheelStart(n);return}e._active=e.active,h(e.value,e._value),W(n,e.delta),m(e.offset,e.delta,e.offset),m(e.movement,e.delta,e.movement),e.onWheel(e)},c=n=>{e.event=n,e.active=!1,t(),e.onWheel(e)},i=n=>{e.target=n,n.addEventListener("wheel",e.onWheeling)},f=()=>{let n=e.target;n&&n.removeEventListener("wheel",e.onWheeling)},d=n=>{e(r),n?e.onMount(n):e.onClean(null)},e=(0,F.event)({active:!1,_active:!1,_value:o(0,0),value:o(0,0),delta:o(0,0),offset:o(0,0),movement:o(0,0),target:null,event:null,timeout:100,clearTimeout:()=>{},memo:{},isWheelStart:!1,isWheeling:!1,isWheelEnd:!1,onWheel:a,onWheelStart:l,onWheeling:v,onWheelEnd:c,onMount:i,onClean:f,ref:d});return e};var T={touch:{start:"touchstart",move:"touchmove",end:"touchend",up:"touchcancel"},pointer:{start:"pointerdown",move:"pointermove",end:"pointerup",up:"pointercancel"},mouse:{start:"mousedown",move:"mousemove",end:"mouseup",up:"mousecancel"}},ae=(r={})=>{let t=C(),a=()=>{o(0,0,t.value),o(0,0,t._value),o(0,0,t.delta),o(0,0,t.movement)},l=()=>{t.isPinchStart=!t._active&&t.active,t.isPinching=t._active&&t.active,t.isPinchEnd=t._active&&!t.active},v=s=>{t.event=s,t.active=!0,S(s,t.device,t.value),t.onPinch(t)},c=s=>{t.event=s,t._active=t.active,h(t.value,t._value),S(s,t.device,t.value),t._active&&(_(t.value,t._value,t.delta),m(t.offset,t.delta,t.offset),m(t.movement,t.delta,t.movement)),t.onPinch(t)},i=s=>{t.event=s,t._active=!0,t.active=!1,a(),t.onPinch(t)},f=()=>{t.onPinch(t)},d=()=>{t.onPinch(t)},e=()=>{t.onPinch(t)},n=s=>{if(t.target=s,t.device==="wheel")return;let{start:p,move:P,end:x,up:L}=T[t.device];s.addEventListener(p,t.onPinchStart),s.addEventListener(P,t.onPinching),s.addEventListener(x,t.onPinchEnd),s.addEventListener(L,t.onPinchEnd)},E=()=>{let s=t.target;if(!s||t.device==="wheel")return;let{start:p,move:P,end:x,up:L}=T[t.device];s.removeEventListener(p,t.onPinchStart),s.removeEventListener(P,t.onPinching),s.removeEventListener(x,t.onPinchEnd),s.removeEventListener(L,t.onPinchEnd)},g=()=>{t(r)};return t({_active:!1,active:!1,device:O(),_rotate:0,rotate:0,_size:1,size:1,_scale:o(1,1),scale:o(1,1),_value:o(),value:o(),delta:o(),offset:o(),movement:o(),target:null,event:null,memo:{},isPinchStart:!1,isPinching:!1,isPinchEnd:!1,onWheelStart:f,onWheeling:d,onWheelEnd:e,onPinch:l,onPinchStart:v,onPinching:c,onPinchEnd:i,onMount:n,onClean:E,ref:g}),t};var k=(r,t=o())=>{let{scrollX:a,scrollLeft:l}=r.currentTarget,{scrollY:v,scrollTop:c}=r.currentTarget;return o(a??l??0,v??c??0,t)};var G=require("reev"),ce=r=>{let t=()=>{o(0,0,e.value),o(0,0,e._value),o(0,0,e.delta),o(0,0,e.movement)},a=()=>{e.isScrollStart=e.active&&!e._active,e.isScrolling=e.active&&e._active,e.isScrollEnd=!e.active&&e._active},l=n=>{e.event=n,e.active=!0,k(n,e.value),e.onScroll(e)},v=n=>{let E=setTimeout(()=>e.onScrollEnd(n),e.timeout);if(e.clearTimeout(),e.clearTimeout=()=>clearTimeout(E),!e.active){e.onScrollStart(n);return}e.event=n,e._active=e.active,h(e.value,e._value),k(n,e.value),e._active&&(_(e.value,e._value,e.delta),m(e.offset,e.delta,e.offset),m(e.movement,e.delta,e.movement)),e.onScroll(e)},c=n=>{e.event=n,e.active=!1,t(),e.onScroll(e)},i=n=>{e.target=n,window.addEventListener("scroll",e.onScrolling)},f=()=>{window.removeEventListener("scroll",e.onScrolling)},d=n=>{e(r),n?e.onMount(n):e.onClean(null)},e=(0,G.event)({active:!1,_active:!1,_value:o(0,0),value:o(0,0),delta:o(0,0),offset:o(0,0),movement:o(0,0),target:null,event:null,memo:{},timeout:100,clearTimeout:()=>{},isScrollStart:!1,isScrolling:!1,isScrollEnd:!1,onScroll:a,onScrollStart:l,onScrolling:v,onScrollEnd:c,onMount:i,onClean:f,ref:d});return e};0&&(module.exports={EVENT_FOR_DRAG,EVENT_FOR_HOVER,EVENT_FOR_PINCH,dragEvent,hoverEvent,keyEvent,pinchEvent,resizeEvent,scrollEvent,wheelEvent});
1
+ var A=Object.defineProperty;var ie=Object.getOwnPropertyDescriptor;var se=Object.getOwnPropertyNames;var ae=Object.prototype.hasOwnProperty;var ce=(i,a)=>{for(var c in a)A(i,c,{get:a[c],enumerable:!0})},le=(i,a,c,d)=>{if(a&&typeof a=="object"||typeof a=="function")for(let m of se(a))!ae.call(i,m)&&m!==c&&A(i,m,{get:()=>a[m],enumerable:!(d=ie(a,m))||d.enumerable});return i};var ve=i=>le(A({},"__esModule",{value:!0}),i);var ye={};ce(ye,{EVENT_FOR_DRAG:()=>k,EVENT_FOR_HOVER:()=>H,EVENT_FOR_PINCH:()=>T,dragEvent:()=>pe,hoverEvent:()=>he,keyEvent:()=>ge,pinchEvent:()=>Ve,resizeEvent:()=>Le,scrollEvent:()=>Te,wheelEvent:()=>Pe});module.exports=ve(ye);var X=require("reev/src");var ue=typeof Float32Array<"u"?Float32Array:Array,o=(i=0,a=0,c=new ue(2))=>(c[0]=i,c[1]=a,c),h=(i,a,c=o())=>(c[0]=i[0]+a[0],c[1]=i[1]+a[1],c),x=(i,a,c=o())=>(c[0]=i[0]-a[0],c[1]=i[1]-a[1],c),_=(i,a=o())=>(a[0]=i[0],a[1]=i[1],a),y=typeof window<"u"&&!!window.document&&!!window.document.createElement,G=()=>y&&"ontouchstart"in window,de=()=>G()||y&&window.navigator.maxTouchPoints>1,me=()=>y&&"onpointerdown"in window,Ee=()=>y&&"exitPointerLock"in window.document,fe=()=>{try{return"constructor"in GestureEvent}catch{return!1}},f={isBrowser:y,get gesture(){return f._gesture??(f._gesture=fe())},get touch(){return f._touch??(f._touch=G())},get touchscreen(){return f._touchscreen??(f._touchscreen=de())},get pointer(){return f._pointer??(f._pointer=me())},get pointerLock(){return f._pointerLock??(f._pointerLock=Ee())}},D=(i=!1)=>i&&f.pointerLock?"mouse":f.touch?"touch":f.pointer?"pointer":"mouse",P=(i,a,c)=>{if(a!=="touch")return o(i.clientX,i.clientY,c);let[d]=i.changedTouches;return o(d.clientX,d.clientY,c)};var k={touch:{start:"touchstart",move:"touchmove",end:"touchend",up:"touchcancel"},pointer:{start:"pointerdown",move:"pointermove",end:"pointerup",up:"pointercancel"},mouse:{start:"mousedown",move:"mousemove",end:"mouseup",up:"mousecancel"}},pe=(i={})=>{let a=()=>{o(0,0,e.value),o(0,0,e._value),o(0,0,e.delta),o(0,0,e.movement)},c=()=>{e.isDragStart=e.active&&!e._active,e.isDragging=e.active&&e._active,e.isDragEnd=!e.active&&e._active},d=r=>{e.event=r,e.active=!0,P(r,e.device,e.value),e.target.setPointerCapture&&"pointerId"in r&&e.target.setPointerCapture(r.pointerId),e.drag(e)},m=r=>{e.event=r,e._active=e.active,_(e.value,e._value),P(r,e.device,e.value),e._active&&(x(e.value,e._value,e.delta),h(e.offset,e.delta,e.offset),h(e.movement,e.delta,e.movement)),e.drag(e)},v=r=>{e.event=r,e.active=!1,a(),e.target.releasePointerCapture&&"pointerId"in r&&e.target.releasePointerCapture(r.pointerId),e.drag(e)},u=r=>{e.target=r;let{start:p,move:L,end:S,up:w}=k[e.device];r.addEventListener(p,e.dragStart),r.addEventListener(L,e.dragging),r.addEventListener(S,e.dragEnd),r.addEventListener(w,e.dragEnd)},g=()=>{let r=e.target;if(!r)return;let{start:p,move:L,end:S,up:w}=k[e.device];r.removeEventListener(p,e.dragStart),r.removeEventListener(L,e.dragging),r.removeEventListener(S,e.dragEnd),r.removeEventListener(w,e.dragEnd)},E=r=>{e(i),r?e.mount(r):e.clean()},e=(0,X.event)({_active:!1,active:!1,device:D(),_value:o(0,0),value:o(0,0),delta:o(0,0),offset:o(0,0),movement:o(0,0),target:null,event:null,memo:{},isDragStart:!1,isDragging:!1,isDragEnd:!1,drag:c,dragStart:d,dragging:m,dragEnd:v,mount:u,clean:g,ref:E});return e};var O=require("reev/src");var H={touch:{start:"touchstart",move:"touchmove",end:"touchend",up:"touchcancel"},pointer:{start:"pointerenter",move:"pointermove",end:"pointerleave",up:"pointercancel"},mouse:{start:"mouseenter",move:"mousemove",end:"mouseleave",up:"mousecancel"}},he=(i={})=>{let a=()=>{o(0,0,e.value),o(0,0,e._value),o(0,0,e.delta),o(0,0,e.movement)},c=()=>{e.isHoverStart=!e._active&&e.active,e.isHovering=e._active&&e.active,e.isHoverEnd=e._active&&!e.active},d=r=>{e.event=r,e.active=!0,P(r,e.device,e.value),e.hover(e)},m=r=>{e.event=r,e._active=e.active,_(e.value,e._value),P(r,e.device,e.value),e._active&&(x(e.value,e._value,e.delta),h(e.offset,e.delta,e.offset),h(e.movement,e.delta,e.movement)),e.hover(e)},v=r=>{e.event=r,e._active=!0,e.active=!1,a(),e.hover(e)},u=r=>{e.target=r;let{start:p,move:L,end:S,up:w}=H[e.device];r.addEventListener(p,e.hoverStart),r.addEventListener(L,e.hovering),r.addEventListener(S,e.hoverEnd),r.addEventListener(w,e.hoverEnd)},g=()=>{let r=e.target;if(!r)return;let{start:p,move:L,end:S,up:w}=H[e.device];r.removeEventListener(p,e.hoverStart),r.removeEventListener(L,e.hovering),r.removeEventListener(S,e.hoverEnd),r.removeEventListener(w,e.hoverEnd)},E=r=>{e(i),r?e.mount(r):e.clean()},e=(0,O.event)({_active:!1,active:!1,device:D(),_value:o(0,0),value:o(0,0),delta:o(0,0),offset:o(0,0),movement:o(0,0),target:null,event:null,memo:{},isHoverStart:!1,isHovering:!1,isHoverEnd:!1,hover:c,hoverStart:d,hovering:m,hoverEnd:v,mount:u,clean:g,ref:E});return e};var K=require("reev/src"),ge=(i={})=>{let v=(0,K.event)({keydown:u=>{v.event=u,v.pressedKey=u.key,v.code=u.code,v.key?.(v)},mount:u=>{u||(u=u||window),v.target=u,u.setAttribute("tabindex","1"),u.addEventListener("keydown",v.keydown)},clean:()=>{let u=v.target;u&&u.removeEventListener("keydown",v.keydown)},ref:u=>{v(i),u?v.mount(u):v.clean()}});return v};var N=require("reev/src"),_e=100,Le=i=>{let a=u=>()=>{},v=(0,N.event)({observer:null,listener:()=>{},resize:()=>{},mount:u=>{let g=E=>{if(E.target!==u)return;let e=setTimeout(a(E),_e);v.listener(),v.listener=()=>clearTimeout(e)};v.observer=new ResizeObserver(E=>{E.forEach(g)}),v.observer.observe(u)},clean:()=>{},ref:u=>{v(i),u?v.mount(u):v.clean(null)}});return v};var j=require("reev/src");var F=(i=!1)=>{if(!f.touch&&f.gesture)return"gesture";if(f.touch&&i)return"touch";if(f.touchscreen){if(f.pointer)return"pointer";if(f.touch)return"touch"}return"wheel"},Se=40,we=800,xe=100,U=(i,a)=>{try{let c=a.clientX-i.clientX,d=a.clientY-i.clientY,m=(a.clientX+i.clientX)/2,v=(a.clientY+i.clientY)/2,u=Math.hypot(c,d),g=-(Math.atan2(c,d)*180)/Math.PI,E=o(m,v);return{distance:u,angle:g,origin:E}}catch{return null}},W=(i,a)=>{let c=Array.from(i.touches).filter(d=>a.includes(d.identifier));return c.length<2?null:U(c[0],c[1])},R=i=>{let a=Array.from(i.values());return a.length<2?null:U(a[0],a[1])},B=i=>Array.from(i.touches).filter(a=>a.target===i.currentTarget||i.currentTarget?.contains?.(a.target)).map(a=>a.identifier),C=(i,a)=>{let{deltaY:c,deltaMode:d}=i;return d===1?c*=Se:d===2&&(c*=we),-c/xe*a};var T={touch:{start:"touchstart",move:"touchmove",end:"touchend",cancel:"touchcancel"},pointer:{start:"pointerdown",move:"pointermove",end:"pointerup",cancel:"pointercancel"},gesture:{start:"gesturestart",change:"gesturechange",end:"gestureend"}},Ve=(i={})=>{let a=()=>{o(0,0,t.value),o(0,0,t._value),o(0,0,t.delta),o(0,0,t.movement)},c=()=>{t.isPinchStart=t.active&&!t._active,t.isPinching=t.active&&t._active,t.isPinchEnd=!t.active&&t._active},d=(n,s)=>{t.event=n,t.active=!0,o(s.distance,s.angle,t.value),o(s.distance,s.angle,t.initial),_(s.origin,t.origin),t.scale=1,t.turns=0,t.pinch(t)},m=(n,s)=>{if(!t.active)return;t.event=n,t._active=t.active,_(t.value,t._value);let l=t._value[1],V=s.angle,I=V-l;Math.abs(I)>270&&(t.turns+=Math.sign(I),V-=360*Math.sign(I)),o(s.distance,V,t.value),_(s.origin,t.origin);let re=t.value[0]/t.initial[0]-1,oe=t.value[1]-t.initial[1];o(re,oe,t.movement),x(t.value,t._value,t.delta),t.delta[0]=t._value[0]!==0?t.value[0]/t._value[0]-1:0,h(t.offset,t.delta,t.offset),t.scale=t.initial[0]!==0?t.value[0]/t.initial[0]:1,t.pinch(t)},v=n=>{t.event=n,t._active=!0,t.active=!1,a(),t.pinch(t)},u=n=>{let s=B(n);if(t.active&&t._touchIds.every(V=>s.includes(V))||s.length<2)return;t._touchIds=s.slice(0,2);let l=W(n,t._touchIds);l&&d(n,l)},g=n=>{if(!t.active)return;let s=W(n,t._touchIds);s&&m(n,s)},E=n=>{if(!t.active)return;let s=Array.from(n.touches).map(l=>l.identifier);t._touchIds.some(l=>!s.includes(l))&&v(n)},e=n=>{if(n.buttons!=null&&n.buttons%2!==1)return;let s=t._pointerEvents;if(t.active&&Array.from(s.keys()).every(V=>t._pointerEvents.has(V)))return;try{n.target.setPointerCapture(n.pointerId)}catch{}if(s.size<2&&s.set(n.pointerId,n),s.size<2)return;let l=R(s);l&&d(n,l)},r=n=>{let s=t._pointerEvents;if(s.has(n.pointerId)&&s.set(n.pointerId,n),!t.active)return;let l=R(s);l&&m(n,l)},p=n=>{try{n.target.releasePointerCapture(n.pointerId)}catch{}let s=t._pointerEvents;s.has(n.pointerId)&&s.delete(n.pointerId),t.active&&s.size<2&&v(n)},L=n=>{let s=n;n.cancelable&&n.preventDefault(),!t.active&&(t.event=n,t.active=!0,o(s.scale,s.rotation,t.value),o(s.scale,s.rotation,t.initial),o(s.clientX,s.clientY,t.origin),t.scale=1,t.turns=0,t.pinch(t))},S=n=>{let s=n;n.cancelable&&n.preventDefault(),t.active&&(t.event=n,t._active=t.active,_(t.value,t._value),o(s.scale,s.rotation,t.value),o(s.clientX,s.clientY,t.origin),o(s.scale-1,s.rotation,t.movement),x(t.value,t._value,t.delta),h(t.offset,t.delta,t.offset),t.scale=s.scale,t.pinch(t))},w=n=>{t.active&&v(n)},$=n=>{t.event=n,t.active=!0,o(1,0,t.value),o(1,0,t.initial),o(n.clientX,n.clientY,t.origin),t.scale=1,t.turns=0;let s=C(n,t.offset[0]+1);t.delta[0]=s,t.delta[1]=0,t.value[0]+=s,h(t.offset,t.delta,t.offset),o(t.value[0]-1,0,t.movement),t.scale=t.value[0],t.pinch(t)},b=n=>{let s=setTimeout(()=>z(n),t.timeout);if(t.clearTimeout(),t.clearTimeout=()=>clearTimeout(s),!t.active){$(n);return}t.event=n,t._active=t.active,_(t.value,t._value),o(n.clientX,n.clientY,t.origin);let l=C(n,t.offset[0]+1);t.delta[0]=l,t.delta[1]=0,t.value[0]+=l,h(t.offset,t.delta,t.offset),o(t.value[0]-1,0,t.movement),t.scale=t.value[0],t.pinch(t)},z=n=>{t.active&&(t.event=n,t._active=!0,t.active=!1,a(),t.pinch(t))},ee=n=>{t.target=n;let s=t.device;if(s==="wheel")n.addEventListener("wheel",b,{passive:!1});else if(s==="gesture"){let l=T.gesture;n.addEventListener(l.start,L),n.addEventListener(l.change,S),n.addEventListener(l.end,w)}else if(s==="touch"){let l=T.touch;n.addEventListener(l.start,u),n.addEventListener(l.move,g),n.addEventListener(l.end,E),n.addEventListener(l.cancel,E)}else if(s==="pointer"){let l=T.pointer;n.addEventListener(l.start,e),n.addEventListener(l.move,r),n.addEventListener(l.end,p),n.addEventListener(l.cancel,p)}},te=()=>{let n=t.target;if(!n)return;let s=t.device;if(s==="wheel")n.removeEventListener("wheel",b);else if(s==="gesture"){let l=T.gesture;n.removeEventListener(l.start,L),n.removeEventListener(l.change,S),n.removeEventListener(l.end,w)}else if(s==="touch"){let l=T.touch;n.removeEventListener(l.start,u),n.removeEventListener(l.move,g),n.removeEventListener(l.end,E),n.removeEventListener(l.cancel,E)}else if(s==="pointer"){let l=T.pointer;n.removeEventListener(l.start,e),n.removeEventListener(l.move,r),n.removeEventListener(l.end,p),n.removeEventListener(l.cancel,p)}},ne=n=>{t(i),n?t.mount(n):t.clean()},t=(0,j.event)({_active:!1,active:!1,device:F(),_value:o(0,0),value:o(0,0),delta:o(0,0),offset:o(0,0),movement:o(0,0),initial:o(0,0),origin:o(0,0),_touchIds:[],_pointerEvents:new Map,scale:1,turns:0,target:null,event:null,memo:{},timeout:100,clearTimeout:()=>{},isPinchStart:!1,isPinching:!1,isPinchEnd:!1,pinch:c,pinchStart:n=>{t.device==="touch"?u(n):t.device==="pointer"?e(n):t.device==="gesture"?L(n):t.device==="wheel"&&b(n)},pinching:n=>{t.device==="touch"?g(n):t.device==="pointer"?r(n):t.device==="gesture"?S(n):t.device==="wheel"&&b(n)},pinchEnd:n=>{t.device==="touch"?E(n):t.device==="pointer"?p(n):t.device==="gesture"?w(n):t.device==="wheel"&&z(n)},mount:ee,clean:te,ref:ne});return t};var Y=(i,a=o())=>{let{scrollX:c,scrollLeft:d}=i.currentTarget,{scrollY:m,scrollTop:v}=i.currentTarget;return o(c??d??0,m??v??0,a)};var q=require("reev/src"),Te=i=>{let a=()=>{o(0,0,e.value),o(0,0,e._value),o(0,0,e.delta),o(0,0,e.movement)},c=()=>{e.isScrollStart=e.active&&!e._active,e.isScrolling=e.active&&e._active,e.isScrollEnd=!e.active&&e._active},d=r=>{e.event=r,e.active=!0,Y(r,e.value),e.scroll(e)},m=r=>{let p=setTimeout(()=>e.scrollEnd(r),e.timeout);if(e.clearTimeout(),e.clearTimeout=()=>clearTimeout(p),!e.active){e.scrollStart(r);return}e.event=r,e._active=e.active,_(e.value,e._value),Y(r,e.value),e._active&&(x(e.value,e._value,e.delta),h(e.offset,e.delta,e.offset),h(e.movement,e.delta,e.movement)),e.scroll(e)},v=r=>{e.event=r,e.active=!1,a(),e.scroll(e)},u=r=>{e.target=r,window.addEventListener("scroll",e.scrolling)},g=()=>{window.removeEventListener("scroll",e.scrolling)},E=r=>{e(i),r?e.mount(r):e.clean(null)},e=(0,q.event)({active:!1,_active:!1,_value:o(0,0),value:o(0,0),delta:o(0,0),offset:o(0,0),movement:o(0,0),target:null,event:null,memo:{},timeout:100,clearTimeout:()=>{},isScrollStart:!1,isScrolling:!1,isScrollEnd:!1,scroll:c,scrollStart:d,scrolling:m,scrollEnd:v,mount:u,clean:g,ref:E});return e};var J=40,Q=800,M=(i,a)=>{if(!(i instanceof WheelEvent))return o(0,0,a);let{deltaX:c,deltaY:d,deltaMode:m}=i;return m===1?(c*=J,d*=J):m===2&&(c*=Q,d*=Q),o(c,d,a)};var Z=require("reev/src"),Pe=i=>{let a=()=>{o(0,0,e.value),o(0,0,e._value),o(0,0,e.delta),o(0,0,e.movement)},c=()=>{e.isWheelStart=e.active&&!e._active,e.isWheeling=e.active&&e._active,e.isWheelEnd=!e.active&&e._active},d=r=>{e.event=r,e.active=!0,M(r,e.delta),e.wheel(e)},m=r=>{let p=setTimeout(()=>e.wheelEnd(r),e.timeout);if(e.clearTimeout(),e.clearTimeout=()=>clearTimeout(p),e.event=r,!e.active){e.wheelStart(r);return}e._active=e.active,_(e.value,e._value),M(r,e.delta),h(e.offset,e.delta,e.offset),h(e.movement,e.delta,e.movement),e.wheel(e)},v=r=>{e.event=r,e.active=!1,a(),e.wheel(e)},u=r=>{e.target=r,r.addEventListener("wheel",e.wheeling)},g=()=>{let r=e.target;r&&r.removeEventListener("wheel",e.wheeling)},E=r=>{e(i),r?e.mount(r):e.clean(null)},e=(0,Z.event)({active:!1,_active:!1,_value:o(0,0),value:o(0,0),delta:o(0,0),offset:o(0,0),movement:o(0,0),target:null,event:null,timeout:100,clearTimeout:()=>{},memo:{},isWheelStart:!1,isWheeling:!1,isWheelEnd:!1,wheel:c,wheelStart:d,wheeling:m,wheelEnd:v,mount:u,clean:g,ref:E});return e};0&&(module.exports={EVENT_FOR_DRAG,EVENT_FOR_HOVER,EVENT_FOR_PINCH,dragEvent,hoverEvent,keyEvent,pinchEvent,resizeEvent,scrollEvent,wheelEvent});
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../index.ts","../drag/index.ts","../utils.ts","../hover/index.ts","../key/index.ts","../resize/index.ts","../pinch/utils.ts","../wheel/utils.ts","../wheel/index.ts","../pinch/index.ts","../scroll/utils.ts","../scroll/index.ts"],"sourcesContent":["export * from './drag'\nexport * from './hover'\nexport * from './key'\nexport * from './resize'\nexport * from './pinch'\nexport * from './scroll'\nexport * from './wheel'\n","import { EventState, event } from 'reev'\nimport { DragState } from './types'\nimport { vec2, addV, subV, cpV, getDevice, getClientVec2 } from '../utils'\n\nexport const EVENT_FOR_DRAG = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n end: 'touchend',\n up: 'touchcancel',\n },\n pointer: {\n start: 'pointerdown',\n move: 'pointermove',\n end: 'pointerup',\n up: 'pointercancel',\n },\n mouse: {\n start: 'mousedown',\n move: 'mousemove',\n end: 'mouseup',\n up: 'mousecancel',\n },\n}\n\nexport const dragEvent = <El extends Element = Element>(\n state: Partial<DragState<El>> = {}\n) => {\n const initValues = () => {\n vec2(0, 0, self.value)\n vec2(0, 0, self._value)\n vec2(0, 0, self.delta)\n vec2(0, 0, self.movement)\n }\n\n const onDrag = () => {\n self.isDragStart = self.active && !self._active\n self.isDragging = self.active && self._active\n self.isDragEnd = !self.active && self._active\n }\n\n const onDragStart = (e: Event) => {\n self.event = e\n self.active = true\n getClientVec2(e, self.device, self.value)\n if (self.target.setPointerCapture && 'pointerId' in e)\n // @ts-ignore\n self.target.setPointerCapture(e.pointerId)\n self.onDrag(self)\n }\n\n const onDragging = (e: Event) => {\n self.event = e\n self._active = self.active\n cpV(self.value, self._value)\n getClientVec2(e, self.device, self.value)\n if (self._active) {\n subV(self.value, self._value, self.delta)\n addV(self.offset, self.delta, self.offset)\n addV(self.movement, self.delta, self.movement)\n }\n self.onDrag(self)\n }\n\n const onDragEnd = (e: Event) => {\n self.event = e\n self.active = false\n initValues()\n if (self.target.releasePointerCapture && 'pointerId' in e)\n // @ts-ignore\n self.target.releasePointerCapture(e.pointerId)\n self.onDrag(self)\n }\n\n const onMount = (target: El) => {\n self.target = target\n const { start, move, end, up } = EVENT_FOR_DRAG[self.device]\n target.addEventListener(start, self.onDragStart)\n target.addEventListener(move, self.onDragging)\n target.addEventListener(end, self.onDragEnd)\n target.addEventListener(up, self.onDragEnd)\n }\n\n const onClean = () => {\n const target = self.target\n if (!target) return\n const { start, move, end, up } = EVENT_FOR_DRAG[self.device]\n target.removeEventListener(start, self.onDragStart)\n target.removeEventListener(move, self.onDragging)\n target.removeEventListener(end, self.onDragEnd)\n target.removeEventListener(up, self.onDragEnd)\n }\n\n const ref = (el: El) => {\n self(state as DragState<El>)\n if (el) {\n self.onMount(el)\n } else self.onClean()\n }\n\n const self = event({\n _active: false,\n active: false,\n device: getDevice(),\n _value: vec2(0, 0),\n value: vec2(0, 0),\n delta: vec2(0, 0),\n offset: vec2(0, 0),\n movement: vec2(0, 0),\n target: null,\n event: null,\n memo: {},\n isDragStart: false,\n isDragging: false,\n isDragEnd: false,\n onDrag,\n onDragStart,\n onDragging,\n onDragEnd,\n onMount,\n onClean,\n ref,\n }) as EventState<DragState<El>>\n\n return self\n}\n","/**\n * CALCULATE VECTOR\n * REF: https://github.com/toji/gl-matrix/blob/master/src/vec2.js\n */\nexport const isF = (f: unknown): f is Function => typeof f === 'function'\n\nconst Vec = typeof Float32Array !== 'undefined' ? Float32Array : Array\n\nexport const vec2 = (x = 0, y = 0, out = new Vec(2)): Vec2 => {\n out[0] = x\n out[1] = y\n return out as Vec2\n}\n\nexport type Vec2 = [x: number, y: number]\n\nexport const addV = (a: Vec2, b: Vec2, out = vec2()): Vec2 => {\n out[0] = a[0] + b[0]\n out[1] = a[1] + b[1]\n return out\n}\n\nexport const subV = (a: Vec2, b: Vec2, out = vec2()): Vec2 => {\n out[0] = a[0] - b[0]\n out[1] = a[1] - b[1]\n return out\n}\n\nexport const cpV = (a: Vec2, out = vec2()): Vec2 => {\n out[0] = a[0]\n out[1] = a[1]\n return out\n}\n\n/**\n * SUPPORT\n */\nconst isBrowser =\n typeof window !== 'undefined' &&\n !!window.document &&\n !!window.document.createElement\n\nconst supportsTouchEvents = () => isBrowser && 'ontouchstart' in window\n\nconst isTouchScreen = () =>\n supportsTouchEvents() ||\n (isBrowser && window.navigator.maxTouchPoints > 1)\n\nconst supportsPointerEvents = () => isBrowser && 'onpointerdown' in window\n\nconst supportsPointerLock = () =>\n isBrowser && 'exitPointerLock' in window.document\n\nconst supportsGestureEvents = () => {\n try {\n // @ts-ignore eslint-disable-next-line\n return 'constructor' in GestureEvent\n } catch (e) {\n return false\n }\n}\n\n// prettier-ignore\nexport const SUPPORT: Record<string, boolean> = { // Mac\n isBrowser, // true\n get gesture() {\n return (\n SUPPORT._gesture ??\n (SUPPORT._gesture = supportsGestureEvents())\n )\n },\n get touch() {\n return (\n SUPPORT._touch ??\n (SUPPORT._touch = supportsTouchEvents())\n )\n },\n get touchscreen() {\n return (\n SUPPORT._touchscreen ??\n (SUPPORT._touchscreen = isTouchScreen())\n )\n },\n get pointer() {\n return (\n SUPPORT._pointer ??\n (SUPPORT._pointer = supportsPointerEvents())\n )\n },\n get pointerLock() {\n return (\n SUPPORT._pointerLock ??\n (SUPPORT._pointerLock = supportsPointerLock())\n )\n },\n}\n\n/**\n * https://github.com/pmndrs/use-gesture/blob/main/packages/core/src/config/dragConfigResolver.ts\n */\nexport const getDevice = (lock = false) => {\n const pointerLock = lock && SUPPORT.pointerLock\n if (pointerLock) return 'mouse'\n if (SUPPORT.touch) return 'touch'\n if (SUPPORT.pointer) return 'pointer'\n return 'mouse'\n}\n\nexport const getClientVec2 = (e: any, device: unknown, out: Vec2): Vec2 => {\n if (device !== 'touch') {\n return vec2(e.clientX, e.clientY, out)\n }\n const [touch] = e.changedTouches\n return vec2(touch.clientX, touch.clientY, out)\n}\n","import { HoverState } from './types'\nimport { EventState, event } from 'reev'\nimport { vec2, addV, subV, getDevice, getClientVec2, cpV } from '../utils'\n\nexport const EVENT_FOR_HOVER = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n end: 'touchend',\n up: 'touchcancel',\n },\n pointer: {\n start: 'pointerenter',\n move: 'pointermove',\n end: 'pointerleave',\n up: 'pointercancel',\n },\n mouse: {\n start: 'mouseenter',\n move: 'mousemove',\n end: 'mouseleave',\n up: 'mousecancel',\n },\n}\n\nexport const hoverEvent = <El extends Element = Element>(\n state: Partial<HoverState<El>> = {}\n) => {\n const initValues = () => {\n vec2(0, 0, self.value)\n vec2(0, 0, self._value)\n vec2(0, 0, self.delta)\n vec2(0, 0, self.movement)\n }\n\n const onHover = () => {\n self.isHoverStart = !self._active && self.active\n self.isHovering = self._active && self.active\n self.isHoverEnd = self._active && !self.active\n }\n\n const onHoverStart = (e: Event) => {\n self.event = e\n self.active = true\n getClientVec2(e, self.device, self.value)\n self.onHover(self)\n }\n\n const onHovering = (e: Event) => {\n self.event = e\n self._active = self.active\n cpV(self.value, self._value)\n getClientVec2(e, self.device, self.value)\n if (self._active) {\n subV(self.value, self._value, self.delta)\n addV(self.offset, self.delta, self.offset)\n addV(self.movement, self.delta, self.movement)\n }\n self.onHover(self)\n }\n\n const onHoverEnd = (e: Event) => {\n self.event = e\n self._active = true\n self.active = false\n initValues()\n self.onHover(self)\n }\n\n const onMount = (target: El) => {\n self.target = target\n const { start, move, end, up } = EVENT_FOR_HOVER[self.device]\n target.addEventListener(start, self.onHoverStart)\n target.addEventListener(move, self.onHovering)\n target.addEventListener(end, self.onHoverEnd)\n target.addEventListener(up, self.onHoverEnd)\n }\n\n const onClean = () => {\n const target = self.target\n if (!target) return\n const { start, move, end, up } = EVENT_FOR_HOVER[self.device]\n target.removeEventListener(start, self.onHoverStart)\n target.removeEventListener(move, self.onHovering)\n target.removeEventListener(end, self.onHoverEnd)\n target.removeEventListener(up, self.onHoverEnd)\n }\n\n const ref = (target: El | null) => {\n self(state as HoverState<El>)\n if (target) {\n self.onMount(target)\n } else self.onClean()\n }\n\n const self = event({\n _active: false,\n active: false,\n device: getDevice(),\n _value: vec2(0, 0),\n value: vec2(0, 0),\n delta: vec2(0, 0),\n offset: vec2(0, 0),\n movement: vec2(0, 0),\n target: null,\n event: null,\n memo: {},\n isHoverStart: false,\n isHovering: false,\n isHoverEnd: false,\n onHover,\n onHoverStart,\n onHovering,\n onHoverEnd,\n onMount,\n onClean,\n ref,\n }) as EventState<HoverState<El>>\n\n return self\n}\n","import { event } from 'reev'\nimport { KeyState } from './types'\n\nexport const keyEvent = <El extends Element = Element>(\n state: Partial<KeyState<El>> = {}\n) => {\n const onKeydown = (e: KeyboardEvent) => {\n self.event = e\n self.key = e.key\n self.code = e.code\n self.onKey?.(self)\n }\n\n const onMount = (el: El | Window) => {\n if (!el) el = el || window\n self.target = el\n\n // @ts-ignore set tabindex to make element focusable\n el.setAttribute('tabindex', '1') // @ts-ignore\n el.addEventListener('keydown', self.onKeydown)\n }\n\n const onClean = () => {\n const el = self.target\n if (!el) return // @ts-ignore\n el.removeEventListener('keydown', self.onKeydown)\n }\n\n const ref = (el: Element | null) => {\n self(state)\n if (el) self.onMount(el as El)\n else self.onClean()\n }\n\n const self = event<KeyState<El>>({ onKeydown, onMount, onClean, ref })\n return self\n}\n","import { EventState, event } from 'reev'\nimport { ResizeState } from './types'\n\nconst DELAY = 100\n\ntype ResizeEventCallback = (entry: ResizeObserverEntry) => () => void\n\nexport const resizeEvent = <El extends Element = Element>(\n state: ResizeState\n) => {\n const on: ResizeEventCallback = (entry) => () => {\n // ???\n }\n\n const onMount = (target: El) => {\n const register = (entry: ResizeObserverEntry) => {\n if (entry.target !== target) return\n const id = setTimeout(on(entry), DELAY)\n self.listener()\n self.listener = () => clearTimeout(id)\n }\n\n self.observer = new ResizeObserver((entries) => {\n entries.forEach(register)\n })\n\n self.observer.observe(target)\n }\n\n const onClean = () => {}\n\n const ref = (el: El) => {\n self(state)\n if (el) {\n self.onMount(el)\n } else self.onClean(null)\n }\n\n const self = event({\n observer: null,\n listener: () => {},\n onResize: () => {},\n onMount,\n onClean,\n ref,\n }) as EventState<ResizeState<El>>\n\n return self\n}\n","import { SUPPORT } from '../utils'\n\n/**\n * ref:\n * https://github.com/pmndrs/use-gesture/blob/main/packages/core/src/config/pinchConfigResolver.ts\n */\nexport const pinchDevice = (touch = false) => {\n if (!SUPPORT.touch && SUPPORT.gesture) return 'gesture'\n if (SUPPORT.touch && touch) return 'touch'\n if (SUPPORT.touchscreen) {\n if (SUPPORT.pointer) return 'pointer'\n if (SUPPORT.touch) return 'touch'\n }\n return 'wheel'\n}\n","import { vec2, Vec2 } from '../utils'\n\nconst LINE_HEIGHT = 40\n\nconst PAGE_HEIGHT = 800\n\nexport const wheelValues = (event: Event, out: Vec2): Vec2 => {\n if (!(event instanceof WheelEvent)) return vec2(0, 0, out)\n\n let { deltaX, deltaY, deltaMode } = event\n if (deltaMode === 1) {\n deltaX *= LINE_HEIGHT\n deltaY *= LINE_HEIGHT\n } else if (deltaMode === 2) {\n deltaX *= PAGE_HEIGHT\n deltaY *= PAGE_HEIGHT\n }\n return vec2(deltaX, deltaY, out)\n}\n","import { vec2, addV, cpV } from '../utils'\nimport { wheelValues } from './utils'\nimport { EventState, event } from 'reev'\nimport { WheelState } from './types'\n\nexport const wheelEvent = <El extends Element = Element>(\n config?: WheelState\n) => {\n const initValues = () => {\n vec2(0, 0, self.value)\n vec2(0, 0, self._value)\n vec2(0, 0, self.delta)\n vec2(0, 0, self.movement)\n }\n\n const onWheel = () => {\n self.isWheelStart = self.active && !self._active\n self.isWheeling = self.active && self._active\n self.isWheelEnd = !self.active && self._active\n }\n const onWheelStart = (e: WheelEvent) => {\n self.event = e\n self.active = true\n wheelValues(e, self.delta)\n self.onWheel(self)\n }\n\n const onWheeling = (e: Event) => {\n // register onWheelEnd\n const id = setTimeout(() => self.onWheelEnd(e), self.timeout)\n self.clearTimeout()\n self.clearTimeout = () => clearTimeout(id)\n self.event = e\n if (!self.active) {\n self.onWheelStart(e)\n return\n }\n\n self._active = self.active\n cpV(self.value, self._value)\n wheelValues(e, self.delta)\n addV(self.offset, self.delta, self.offset)\n addV(self.movement, self.delta, self.movement)\n self.onWheel(self)\n }\n\n const onWheelEnd = (e: Event) => {\n self.event = e\n self.active = false\n initValues()\n self.onWheel(self)\n }\n\n const onMount = (target: El) => {\n self.target = target\n target.addEventListener('wheel', self.onWheeling)\n }\n\n const onClean = () => {\n const target = self.target\n if (!target) return\n target.removeEventListener('wheel', self.onWheeling)\n }\n\n const ref = (el: Element | null) => {\n self(config as WheelState<El>)\n if (el) {\n self.onMount(el)\n } else self.onClean(null)\n }\n\n const self = event({\n active: false,\n _active: false,\n _value: vec2(0, 0),\n value: vec2(0, 0),\n delta: vec2(0, 0),\n offset: vec2(0, 0),\n movement: vec2(0, 0),\n target: null,\n event: null,\n timeout: 100,\n clearTimeout: () => {},\n memo: {},\n isWheelStart: false,\n isWheeling: false,\n isWheelEnd: false,\n onWheel,\n onWheelStart,\n onWheeling,\n onWheelEnd,\n onMount,\n onClean,\n ref,\n }) as EventState<WheelState<El>>\n\n return self\n}\n","import { EventState } from 'reev'\nimport { pinchDevice } from './utils'\nimport { PinchState } from './types'\nimport { vec2, addV, subV, getClientVec2, cpV } from '../utils'\nimport { wheelEvent } from '../wheel'\n\nexport const EVENT_FOR_PINCH = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n end: 'touchend',\n up: 'touchcancel',\n },\n pointer: {\n start: 'pointerdown',\n move: 'pointermove',\n end: 'pointerup',\n up: 'pointercancel',\n },\n mouse: {\n start: 'mousedown',\n move: 'mousemove',\n end: 'mouseup',\n up: 'mousecancel',\n },\n}\n\nexport const pinchEvent = <El extends Element = Element>(\n state: Partial<PinchState<El>> = {}\n) => {\n const self = wheelEvent() as unknown as EventState<PinchState<El>>\n\n const initValues = () => {\n vec2(0, 0, self.value)\n vec2(0, 0, self._value)\n vec2(0, 0, self.delta)\n vec2(0, 0, self.movement)\n }\n\n const onPinch = () => {\n self.isPinchStart = !self._active && self.active\n self.isPinching = self._active && self.active\n self.isPinchEnd = self._active && !self.active\n }\n\n const onPinchStart = (e: Event) => {\n self.event = e\n self.active = true\n getClientVec2(e, self.device, self.value)\n self.onPinch(self)\n }\n\n const onPinching = (e: Event) => {\n self.event = e\n self._active = self.active\n cpV(self.value, self._value)\n getClientVec2(e, self.device, self.value)\n if (self._active) {\n subV(self.value, self._value, self.delta)\n addV(self.offset, self.delta, self.offset)\n addV(self.movement, self.delta, self.movement)\n }\n self.onPinch(self)\n }\n\n const onPinchEnd = (e: Event) => {\n self.event = e\n self._active = true\n self.active = false\n initValues()\n self.onPinch(self)\n }\n\n const onWheelStart = () => {\n self.onPinch(self)\n }\n\n const onWheeling = () => {\n self.onPinch(self)\n }\n\n const onWheelEnd = () => {\n self.onPinch(self)\n }\n\n const onMount = (target: El) => {\n self.target = target\n if (self.device === 'wheel') return\n const { start, move, end, up } = EVENT_FOR_PINCH[self.device]\n target.addEventListener(start, self.onPinchStart)\n target.addEventListener(move, self.onPinching)\n target.addEventListener(end, self.onPinchEnd)\n target.addEventListener(up, self.onPinchEnd)\n }\n\n const onClean = () => {\n const target = self.target\n if (!target || self.device === 'wheel') return\n const { start, move, end, up } = EVENT_FOR_PINCH[self.device]\n target.removeEventListener(start, self.onPinchStart)\n target.removeEventListener(move, self.onPinching)\n target.removeEventListener(end, self.onPinchEnd)\n target.removeEventListener(up, self.onPinchEnd)\n }\n\n const ref = () => {\n self(state as PinchState<El>)\n }\n\n self({\n _active: false,\n active: false,\n device: pinchDevice(),\n _rotate: 0,\n rotate: 0,\n _size: 1,\n size: 1,\n _scale: vec2(1, 1),\n scale: vec2(1, 1),\n _value: vec2(),\n value: vec2(),\n delta: vec2(),\n offset: vec2(),\n movement: vec2(),\n target: null as unknown as El,\n event: null as unknown as any,\n memo: {},\n isPinchStart: false,\n isPinching: false,\n isPinchEnd: false,\n onWheelStart,\n onWheeling,\n onWheelEnd,\n onPinch,\n onPinchStart,\n onPinching,\n onPinchEnd,\n onMount,\n onClean,\n ref,\n })\n\n return self\n}\n","import { vec2, Vec2 } from '../utils'\n\nexport const scrollValues = (e: any, out = vec2()): Vec2 => {\n const { scrollX: x, scrollLeft: xx } = e.currentTarget\n const { scrollY: y, scrollTop: yy } = e.currentTarget\n return vec2(x ?? xx ?? 0, y ?? yy ?? 0, out)\n}\n","import { vec2, addV, cpV, subV } from '../utils'\nimport { scrollValues } from './utils'\nimport { EventState, event } from 'reev'\nimport { ScrollState } from './types'\n\nexport const scrollEvent = <El extends Element = Element>(\n config?: ScrollState\n) => {\n const initValues = () => {\n vec2(0, 0, self.value)\n vec2(0, 0, self._value)\n vec2(0, 0, self.delta)\n vec2(0, 0, self.movement)\n }\n\n const onScroll = () => {\n self.isScrollStart = self.active && !self._active\n self.isScrolling = self.active && self._active\n self.isScrollEnd = !self.active && self._active\n }\n\n const onScrollStart = (e: Event) => {\n self.event = e\n self.active = true\n scrollValues(e, self.value)\n self.onScroll(self)\n }\n\n const onScrolling = (e: Event) => {\n // register onWheelEnd\n const id = setTimeout(() => self.onScrollEnd(e), self.timeout)\n self.clearTimeout()\n self.clearTimeout = () => clearTimeout(id)\n\n if (!self.active) {\n self.onScrollStart(e)\n return\n }\n\n self.event = e\n self._active = self.active\n cpV(self.value, self._value)\n scrollValues(e, self.value)\n if (self._active) {\n subV(self.value, self._value, self.delta)\n addV(self.offset, self.delta, self.offset)\n addV(self.movement, self.delta, self.movement)\n }\n self.onScroll(self)\n }\n\n const onScrollEnd = (e: Event) => {\n self.event = e\n self.active = false\n initValues()\n self.onScroll(self)\n }\n\n const onMount = (target: El) => {\n self.target = target // @TODO set event to target\n window.addEventListener('scroll', self.onScrolling)\n }\n\n const onClean = () => {\n window.removeEventListener('scroll', self.onScrolling)\n }\n\n const ref = (el: Element | null) => {\n self(config as ScrollState<El>)\n if (el) {\n self.onMount(el)\n } else self.onClean(null)\n }\n\n const self = event({\n active: false,\n _active: false,\n _value: vec2(0, 0),\n value: vec2(0, 0),\n delta: vec2(0, 0),\n offset: vec2(0, 0),\n movement: vec2(0, 0),\n target: null,\n event: null,\n memo: {},\n timeout: 100,\n clearTimeout: () => {},\n isScrollStart: false,\n isScrolling: false,\n isScrollEnd: false,\n onScroll,\n onScrollStart,\n onScrolling,\n onScrollEnd,\n onMount,\n onClean,\n ref,\n }) as EventState<ScrollState<El>>\n\n return self\n}\n"],"mappings":"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","names":["gesture_exports","__export","EVENT_FOR_DRAG","EVENT_FOR_HOVER","EVENT_FOR_PINCH","dragEvent","hoverEvent","keyEvent","pinchEvent","resizeEvent","scrollEvent","wheelEvent","__toCommonJS","import_reev","Vec","vec2","x","y","out","addV","a","b","subV","cpV","isBrowser","supportsTouchEvents","isTouchScreen","supportsPointerEvents","supportsPointerLock","supportsGestureEvents","SUPPORT","getDevice","lock","getClientVec2","e","device","touch","EVENT_FOR_DRAG","dragEvent","state","initValues","vec2","self","onDrag","onDragStart","e","getClientVec2","onDragging","cpV","subV","addV","onDragEnd","onMount","target","start","move","end","up","onClean","ref","el","getDevice","import_reev","EVENT_FOR_HOVER","hoverEvent","state","initValues","vec2","self","onHover","onHoverStart","e","getClientVec2","onHovering","cpV","subV","addV","onHoverEnd","onMount","target","start","move","end","up","onClean","ref","getDevice","import_reev","keyEvent","state","self","e","el","import_reev","DELAY","resizeEvent","state","on","entry","self","target","register","id","entries","el","pinchDevice","touch","SUPPORT","LINE_HEIGHT","PAGE_HEIGHT","wheelValues","event","out","vec2","deltaX","deltaY","deltaMode","import_reev","wheelEvent","config","initValues","vec2","self","onWheel","onWheelStart","e","wheelValues","onWheeling","id","cpV","addV","onWheelEnd","onMount","target","onClean","ref","el","EVENT_FOR_PINCH","pinchEvent","state","self","wheelEvent","initValues","vec2","onPinch","onPinchStart","e","getClientVec2","onPinching","cpV","subV","addV","onPinchEnd","onWheelStart","onWheeling","onWheelEnd","onMount","target","start","move","end","up","onClean","ref","pinchDevice","scrollValues","e","out","vec2","x","xx","y","yy","import_reev","scrollEvent","config","initValues","vec2","self","onScroll","onScrollStart","e","scrollValues","onScrolling","id","cpV","subV","addV","onScrollEnd","onMount","target","onClean","ref","el"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/drag/index.ts","../src/utils.ts","../src/hover/index.ts","../src/key/index.ts","../src/resize/index.ts","../src/pinch/index.ts","../src/pinch/utils.ts","../src/scroll/utils.ts","../src/scroll/index.ts","../src/wheel/utils.ts","../src/wheel/index.ts"],"sourcesContent":["export * from './drag'\nexport * from './hover'\nexport * from './key'\nexport * from './resize'\nexport * from './pinch'\nexport * from './scroll'\nexport * from './wheel'\n","import { EventState, event } from 'reev/src'\nimport { DragState } from './types'\nimport { vec2, addV, subV, cpV, getDevice, getClientVec2 } from '../utils'\n\nexport * from './types'\n\nexport const EVENT_FOR_DRAG = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n end: 'touchend',\n up: 'touchcancel',\n },\n pointer: {\n start: 'pointerdown',\n move: 'pointermove',\n end: 'pointerup',\n up: 'pointercancel',\n },\n mouse: {\n start: 'mousedown',\n move: 'mousemove',\n end: 'mouseup',\n up: 'mousecancel',\n },\n}\n\nexport const dragEvent = <El extends Element = Element>(state: Partial<DragState<El>> = {}) => {\n const initValues = () => {\n vec2(0, 0, self.value)\n vec2(0, 0, self._value)\n vec2(0, 0, self.delta)\n vec2(0, 0, self.movement)\n }\n\n const drag = () => {\n self.isDragStart = self.active && !self._active\n self.isDragging = self.active && self._active\n self.isDragEnd = !self.active && self._active\n }\n\n const dragStart = (e: Event) => {\n self.event = e\n self.active = true\n getClientVec2(e, self.device, self.value)\n if (self.target.setPointerCapture && 'pointerId' in e)\n // @ts-ignore\n self.target.setPointerCapture(e.pointerId)\n self.drag(self)\n }\n\n const dragging = (e: Event) => {\n self.event = e\n self._active = self.active\n cpV(self.value, self._value)\n getClientVec2(e, self.device, self.value)\n if (self._active) {\n subV(self.value, self._value, self.delta)\n addV(self.offset, self.delta, self.offset)\n addV(self.movement, self.delta, self.movement)\n }\n self.drag(self)\n }\n\n const dragEnd = (e: Event) => {\n self.event = e\n self.active = false\n initValues()\n if (self.target.releasePointerCapture && 'pointerId' in e)\n // @ts-ignore\n self.target.releasePointerCapture(e.pointerId)\n self.drag(self)\n }\n\n const mount = (target: El) => {\n self.target = target\n const { start, move, end, up } = EVENT_FOR_DRAG[self.device]\n target.addEventListener(start, self.dragStart)\n target.addEventListener(move, self.dragging)\n target.addEventListener(end, self.dragEnd)\n target.addEventListener(up, self.dragEnd)\n }\n\n const clean = () => {\n const target = self.target\n if (!target) return\n const { start, move, end, up } = EVENT_FOR_DRAG[self.device]\n target.removeEventListener(start, self.dragStart)\n target.removeEventListener(move, self.dragging)\n target.removeEventListener(end, self.dragEnd)\n target.removeEventListener(up, self.dragEnd)\n }\n\n const ref = (el: El) => {\n self(state as DragState<El>)\n if (el) {\n self.mount(el)\n } else self.clean()\n }\n\n const self = event({\n _active: false,\n active: false,\n device: getDevice(),\n _value: vec2(0, 0),\n value: vec2(0, 0),\n delta: vec2(0, 0),\n offset: vec2(0, 0),\n movement: vec2(0, 0),\n target: null,\n event: null,\n memo: {},\n isDragStart: false,\n isDragging: false,\n isDragEnd: false,\n drag,\n dragStart,\n dragging,\n dragEnd,\n mount,\n clean,\n ref,\n }) as EventState<DragState<El>>\n\n return self\n}\n","/**\n * CALCULATE VECTOR\n * REF: https://github.com/toji/gl-matrix/blob/master/src/vec2.js\n */\nexport const isF = (f: unknown): f is Function => typeof f === 'function'\n\nconst Vec = typeof Float32Array !== 'undefined' ? Float32Array : Array\n\nexport const vec2 = (x = 0, y = 0, out = new Vec(2)): Vec2 => {\n out[0] = x\n out[1] = y\n return out as Vec2\n}\n\nexport type Vec2 = [x: number, y: number]\n\nexport const addV = (a: Vec2, b: Vec2, out = vec2()): Vec2 => {\n out[0] = a[0] + b[0]\n out[1] = a[1] + b[1]\n return out\n}\n\nexport const subV = (a: Vec2, b: Vec2, out = vec2()): Vec2 => {\n out[0] = a[0] - b[0]\n out[1] = a[1] - b[1]\n return out\n}\n\nexport const cpV = (a: Vec2, out = vec2()): Vec2 => {\n out[0] = a[0]\n out[1] = a[1]\n return out\n}\n\n/**\n * SUPPORT\n */\nconst isBrowser = typeof window !== 'undefined' && !!window.document && !!window.document.createElement\n\nconst supportsTouchEvents = () => isBrowser && 'ontouchstart' in window\n\nconst isTouchScreen = () => supportsTouchEvents() || (isBrowser && window.navigator.maxTouchPoints > 1)\n\nconst supportsPointerEvents = () => isBrowser && 'onpointerdown' in window\n\nconst supportsPointerLock = () => isBrowser && 'exitPointerLock' in window.document\n\nconst supportsGestureEvents = () => {\n try {\n // @ts-ignore eslint-disable-next-line\n return 'constructor' in GestureEvent\n } catch (e) {\n return false\n }\n}\n\n// prettier-ignore\nexport const SUPPORT: Record<string, boolean> = { // Mac\n isBrowser, // true\n get gesture() {\n return (\n SUPPORT._gesture ??\n (SUPPORT._gesture = supportsGestureEvents())\n )\n },\n get touch() {\n return (\n SUPPORT._touch ??\n (SUPPORT._touch = supportsTouchEvents())\n )\n },\n get touchscreen() {\n return (\n SUPPORT._touchscreen ??\n (SUPPORT._touchscreen = isTouchScreen())\n )\n },\n get pointer() {\n return (\n SUPPORT._pointer ??\n (SUPPORT._pointer = supportsPointerEvents())\n )\n },\n get pointerLock() {\n return (\n SUPPORT._pointerLock ??\n (SUPPORT._pointerLock = supportsPointerLock())\n )\n },\n}\n\n/**\n * https://github.com/pmndrs/use-gesture/blob/main/packages/core/src/config/dragConfigResolver.ts\n */\nexport const getDevice = (lock = false) => {\n const pointerLock = lock && SUPPORT.pointerLock\n if (pointerLock) return 'mouse'\n if (SUPPORT.touch) return 'touch'\n if (SUPPORT.pointer) return 'pointer'\n return 'mouse'\n}\n\nexport const getClientVec2 = (e: any, device: unknown, out: Vec2): Vec2 => {\n if (device !== 'touch') {\n return vec2(e.clientX, e.clientY, out)\n }\n const [touch] = e.changedTouches\n return vec2(touch.clientX, touch.clientY, out)\n}\n","import { HoverState } from './types'\nimport { EventState, event } from 'reev/src'\nimport { vec2, addV, subV, getDevice, getClientVec2, cpV } from '../utils'\n\nexport * from './types'\n\nexport const EVENT_FOR_HOVER = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n end: 'touchend',\n up: 'touchcancel',\n },\n pointer: {\n start: 'pointerenter',\n move: 'pointermove',\n end: 'pointerleave',\n up: 'pointercancel',\n },\n mouse: {\n start: 'mouseenter',\n move: 'mousemove',\n end: 'mouseleave',\n up: 'mousecancel',\n },\n}\n\nexport const hoverEvent = <El extends Element = Element>(state: Partial<HoverState<El>> = {}) => {\n const initValues = () => {\n vec2(0, 0, self.value)\n vec2(0, 0, self._value)\n vec2(0, 0, self.delta)\n vec2(0, 0, self.movement)\n }\n\n const hover = () => {\n self.isHoverStart = !self._active && self.active\n self.isHovering = self._active && self.active\n self.isHoverEnd = self._active && !self.active\n }\n\n const hoverStart = (e: Event) => {\n self.event = e\n self.active = true\n getClientVec2(e, self.device, self.value)\n self.hover(self)\n }\n\n const hovering = (e: Event) => {\n self.event = e\n self._active = self.active\n cpV(self.value, self._value)\n getClientVec2(e, self.device, self.value)\n if (self._active) {\n subV(self.value, self._value, self.delta)\n addV(self.offset, self.delta, self.offset)\n addV(self.movement, self.delta, self.movement)\n }\n self.hover(self)\n }\n\n const hoverEnd = (e: Event) => {\n self.event = e\n self._active = true\n self.active = false\n initValues()\n self.hover(self)\n }\n\n const mount = (target: El) => {\n self.target = target\n const { start, move, end, up } = EVENT_FOR_HOVER[self.device]\n target.addEventListener(start, self.hoverStart)\n target.addEventListener(move, self.hovering)\n target.addEventListener(end, self.hoverEnd)\n target.addEventListener(up, self.hoverEnd)\n }\n\n const clean = () => {\n const target = self.target\n if (!target) return\n const { start, move, end, up } = EVENT_FOR_HOVER[self.device]\n target.removeEventListener(start, self.hoverStart)\n target.removeEventListener(move, self.hovering)\n target.removeEventListener(end, self.hoverEnd)\n target.removeEventListener(up, self.hoverEnd)\n }\n\n const ref = (target: El | null) => {\n self(state as HoverState<El>)\n if (target) {\n self.mount(target)\n } else self.clean()\n }\n\n const self = event({\n _active: false,\n active: false,\n device: getDevice(),\n _value: vec2(0, 0),\n value: vec2(0, 0),\n delta: vec2(0, 0),\n offset: vec2(0, 0),\n movement: vec2(0, 0),\n target: null,\n event: null,\n memo: {},\n isHoverStart: false,\n isHovering: false,\n isHoverEnd: false,\n hover,\n hoverStart,\n hovering,\n hoverEnd,\n mount,\n clean,\n ref,\n }) as EventState<HoverState<El>>\n\n return self\n}\n","import { event } from 'reev/src'\nimport { KeyState } from './types'\n\nexport * from './types'\n\nexport const keyEvent = <El extends Element = Element>(state: Partial<KeyState<El>> = {}) => {\n const keydown = (e: KeyboardEvent) => {\n self.event = e\n self.pressedKey = e.key\n self.code = e.code\n self.key?.(self)\n }\n\n const mount = (el: El | Window) => {\n if (!el) el = el || window\n self.target = el\n\n // @ts-ignore set tabindex to make element focusable\n el.setAttribute('tabindex', '1') // @ts-ignore\n el.addEventListener('keydown', self.keydown)\n }\n\n const clean = () => {\n const el = self.target\n if (!el) return // @ts-ignore\n el.removeEventListener('keydown', self.keydown)\n }\n\n const ref = (el: Element | null) => {\n self(state)\n if (el) self.mount(el as El)\n else self.clean()\n }\n\n const self = event<KeyState<El>>({ keydown, mount, clean, ref })\n return self\n}\n","import { EventState, event } from 'reev/src'\nimport { ResizeState } from './types'\n\nexport * from './types'\n\nconst DELAY = 100\n\ntype ResizeEventCallback = (entry: ResizeObserverEntry) => () => void\n\nexport const resizeEvent = <El extends Element = Element>(state: ResizeState) => {\n const on: ResizeEventCallback = (entry) => () => {\n // ???\n }\n\n const mount = (target: El) => {\n const register = (entry: ResizeObserverEntry) => {\n if (entry.target !== target) return\n const id = setTimeout(on(entry), DELAY)\n self.listener()\n self.listener = () => clearTimeout(id)\n }\n\n self.observer = new ResizeObserver((entries) => {\n entries.forEach(register)\n })\n\n self.observer.observe(target)\n }\n\n const clean = () => {}\n\n const ref = (el: El) => {\n self(state)\n if (el) {\n self.mount(el)\n } else self.clean(null)\n }\n\n const self = event({\n observer: null,\n listener: () => {},\n resize: () => {},\n mount,\n clean,\n ref,\n }) as EventState<ResizeState<El>>\n\n return self\n}\n","import { EventState, event } from 'reev/src'\nimport { PinchState } from './types'\nimport { vec2, addV, subV, cpV } from '../utils'\nimport { pinchDevice, touchDistanceAngle, pointerDistanceAngle, getCurrentTargetTouchIds, wheelPinchDelta, WebKitGestureEvent, DistanceAngle } from './utils'\n\nexport * from './types'\n\nexport const EVENT_FOR_PINCH = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n end: 'touchend',\n cancel: 'touchcancel',\n },\n pointer: {\n start: 'pointerdown',\n move: 'pointermove',\n end: 'pointerup',\n cancel: 'pointercancel',\n },\n gesture: {\n start: 'gesturestart',\n change: 'gesturechange',\n end: 'gestureend',\n },\n}\n\nexport const pinchEvent = <El extends Element = Element>(config: Partial<PinchState<El>> = {}) => {\n const initValues = () => {\n vec2(0, 0, self.value)\n vec2(0, 0, self._value)\n vec2(0, 0, self.delta)\n vec2(0, 0, self.movement)\n }\n\n const pinch = () => {\n self.isPinchStart = self.active && !self._active\n self.isPinching = self.active && self._active\n self.isPinchEnd = !self.active && self._active\n }\n\n // ===== Common pinch handlers =====\n\n const pinchStart = (e: Event, payload: DistanceAngle) => {\n self.event = e\n self.active = true\n\n // Store initial values [distance, angle]\n vec2(payload.distance, payload.angle, self.value)\n vec2(payload.distance, payload.angle, self.initial)\n cpV(payload.origin, self.origin)\n\n self.scale = 1\n self.turns = 0\n\n self.pinch(self)\n }\n\n const pinching = (e: Event, payload: DistanceAngle) => {\n if (!self.active) return\n\n self.event = e\n self._active = self.active\n\n // Store previous values\n cpV(self.value, self._value)\n\n // Current values [distance, angle]\n const prevAngle = self._value[1]\n let newAngle = payload.angle\n\n // Handle angle wrapping (for full rotations)\n const deltaAngle = newAngle - prevAngle\n if (Math.abs(deltaAngle) > 270) {\n self.turns += Math.sign(deltaAngle)\n newAngle -= 360 * Math.sign(deltaAngle)\n }\n\n vec2(payload.distance, newAngle, self.value)\n cpV(payload.origin, self.origin)\n\n // Calculate movement: [scaleRatio - 1, angleDelta]\n // scaleRatio = currentDistance / initialDistance\n const scaleRatio = self.value[0] / self.initial[0] - 1\n const angleDelta = self.value[1] - self.initial[1]\n vec2(scaleRatio, angleDelta, self.movement)\n\n // Calculate delta from previous frame\n subV(self.value, self._value, self.delta)\n // Convert distance delta to scale delta for consistency\n self.delta[0] = self._value[0] !== 0 ? self.value[0] / self._value[0] - 1 : 0\n\n // Update offset (cumulative)\n addV(self.offset, self.delta, self.offset)\n\n // Update scale\n self.scale = self.initial[0] !== 0 ? self.value[0] / self.initial[0] : 1\n\n self.pinch(self)\n }\n\n const pinchEnd = (e: Event) => {\n self.event = e\n self._active = true\n self.active = false\n initValues()\n self.pinch(self)\n }\n\n // ===== Touch event handlers =====\n\n const touchStart = (e: TouchEvent) => {\n const touchIds = getCurrentTargetTouchIds(e)\n\n if (self.active) {\n // Check if the touches that started the gesture are still present\n if (self._touchIds.every((id) => touchIds.includes(id))) return\n }\n\n if (touchIds.length < 2) return\n\n // Store the first two touch ids\n self._touchIds = touchIds.slice(0, 2)\n\n const payload = touchDistanceAngle(e, self._touchIds)\n if (!payload) return\n\n pinchStart(e, payload)\n }\n\n const touchMove = (e: TouchEvent) => {\n if (!self.active) return\n\n const payload = touchDistanceAngle(e, self._touchIds)\n if (!payload) return\n\n pinching(e, payload)\n }\n\n const touchEnd = (e: TouchEvent) => {\n if (!self.active) return\n\n // Check if any of our tracked touches ended\n const currentTouchIds = Array.from(e.touches).map((t) => t.identifier)\n if (self._touchIds.some((id) => !currentTouchIds.includes(id))) {\n pinchEnd(e)\n }\n }\n\n // ===== Pointer event handlers =====\n\n const pointerStart = (e: PointerEvent) => {\n // Only track left mouse button or touch\n if (e.buttons != null && e.buttons % 2 !== 1) return\n\n const _pointerEvents = self._pointerEvents\n\n if (self.active) {\n // Check if the pointers that started the gesture are still present\n if (Array.from(_pointerEvents.keys()).every((id) => self._pointerEvents.has(id))) return\n }\n\n // Capture the pointer\n try {\n ;(e.target as HTMLElement).setPointerCapture(e.pointerId)\n } catch {}\n\n if (_pointerEvents.size < 2) {\n _pointerEvents.set(e.pointerId, e)\n }\n\n if (_pointerEvents.size < 2) return\n\n const payload = pointerDistanceAngle(_pointerEvents)\n if (!payload) return\n\n pinchStart(e, payload)\n }\n\n const pointerMove = (e: PointerEvent) => {\n const _pointerEvents = self._pointerEvents\n\n if (_pointerEvents.has(e.pointerId)) {\n _pointerEvents.set(e.pointerId, e)\n }\n\n if (!self.active) return\n\n const payload = pointerDistanceAngle(_pointerEvents)\n if (!payload) return\n\n pinching(e, payload)\n }\n\n const pointerEnd = (e: PointerEvent) => {\n try {\n ;(e.target as HTMLElement).releasePointerCapture(e.pointerId)\n } catch {}\n\n const _pointerEvents = self._pointerEvents\n\n if (_pointerEvents.has(e.pointerId)) {\n _pointerEvents.delete(e.pointerId)\n }\n\n if (!self.active) return\n\n if (_pointerEvents.size < 2) {\n pinchEnd(e)\n }\n }\n\n // ===== Safari Gesture event handlers =====\n\n const gestureStart = (e: Event) => {\n const ge = e as WebKitGestureEvent\n if (e.cancelable) e.preventDefault()\n\n if (self.active) return\n\n self.event = e\n self.active = true\n\n // GestureEvent provides scale and rotation directly\n vec2(ge.scale, ge.rotation, self.value)\n vec2(ge.scale, ge.rotation, self.initial)\n vec2(ge.clientX, ge.clientY, self.origin)\n\n self.scale = 1\n self.turns = 0\n\n self.pinch(self)\n }\n\n const gestureChange = (e: Event) => {\n const ge = e as WebKitGestureEvent\n if (e.cancelable) e.preventDefault()\n\n if (!self.active) return\n\n self.event = e\n self._active = self.active\n\n cpV(self.value, self._value)\n\n // GestureEvent gives us scale and rotation directly\n vec2(ge.scale, ge.rotation, self.value)\n vec2(ge.clientX, ge.clientY, self.origin)\n\n // movement = [scale - 1, rotation]\n vec2(ge.scale - 1, ge.rotation, self.movement)\n\n // delta from previous\n subV(self.value, self._value, self.delta)\n\n // Update offset\n addV(self.offset, self.delta, self.offset)\n\n self.scale = ge.scale\n\n self.pinch(self)\n }\n\n const gestureEnd = (e: Event) => {\n if (!self.active) return\n pinchEnd(e)\n }\n\n // ===== Wheel event handlers (trackpad pinch fallback) =====\n\n const wheelStart = (e: WheelEvent) => {\n self.event = e\n self.active = true\n\n // For wheel, we track scale change as value[0], rotation as value[1] (always 0)\n vec2(1, 0, self.value)\n vec2(1, 0, self.initial)\n vec2(e.clientX, e.clientY, self.origin)\n\n self.scale = 1\n self.turns = 0\n\n // Apply the initial wheel delta\n const scaleDelta = wheelPinchDelta(e, self.offset[0] + 1)\n self.delta[0] = scaleDelta\n self.delta[1] = 0\n self.value[0] += scaleDelta\n addV(self.offset, self.delta, self.offset)\n vec2(self.value[0] - 1, 0, self.movement)\n\n self.scale = self.value[0]\n\n self.pinch(self)\n }\n\n const wheeling = (e: WheelEvent) => {\n // Set up timeout to detect wheel end\n const id = setTimeout(() => wheelEnd(e), self.timeout)\n self.clearTimeout()\n self.clearTimeout = () => clearTimeout(id)\n\n if (!self.active) {\n wheelStart(e)\n return\n }\n\n self.event = e\n self._active = self.active\n\n cpV(self.value, self._value)\n vec2(e.clientX, e.clientY, self.origin)\n\n // Calculate scale delta from wheel\n const scaleDelta = wheelPinchDelta(e, self.offset[0] + 1)\n self.delta[0] = scaleDelta\n self.delta[1] = 0\n\n self.value[0] += scaleDelta\n addV(self.offset, self.delta, self.offset)\n vec2(self.value[0] - 1, 0, self.movement)\n\n self.scale = self.value[0]\n\n self.pinch(self)\n }\n\n const wheelEnd = (e: Event) => {\n if (!self.active) return\n self.event = e\n self._active = true\n self.active = false\n initValues()\n self.pinch(self)\n }\n\n // ===== Lifecycle methods =====\n\n const mount = (target: El) => {\n self.target = target\n const device = self.device\n\n if (device === 'wheel') {\n target.addEventListener('wheel', wheeling as EventListener, { passive: false })\n } else if (device === 'gesture') {\n const events = EVENT_FOR_PINCH.gesture\n target.addEventListener(events.start, gestureStart)\n target.addEventListener(events.change, gestureChange)\n target.addEventListener(events.end, gestureEnd)\n } else if (device === 'touch') {\n const events = EVENT_FOR_PINCH.touch\n target.addEventListener(events.start, touchStart as EventListener)\n target.addEventListener(events.move, touchMove as EventListener)\n target.addEventListener(events.end, touchEnd as EventListener)\n target.addEventListener(events.cancel, touchEnd as EventListener)\n } else if (device === 'pointer') {\n const events = EVENT_FOR_PINCH.pointer\n target.addEventListener(events.start, pointerStart as EventListener)\n target.addEventListener(events.move, pointerMove as EventListener)\n target.addEventListener(events.end, pointerEnd as EventListener)\n target.addEventListener(events.cancel, pointerEnd as EventListener)\n }\n }\n\n const clean = () => {\n const target = self.target\n if (!target) return\n const device = self.device\n\n if (device === 'wheel') {\n target.removeEventListener('wheel', wheeling as EventListener)\n } else if (device === 'gesture') {\n const events = EVENT_FOR_PINCH.gesture\n target.removeEventListener(events.start, gestureStart)\n target.removeEventListener(events.change, gestureChange)\n target.removeEventListener(events.end, gestureEnd)\n } else if (device === 'touch') {\n const events = EVENT_FOR_PINCH.touch\n target.removeEventListener(events.start, touchStart as EventListener)\n target.removeEventListener(events.move, touchMove as EventListener)\n target.removeEventListener(events.end, touchEnd as EventListener)\n target.removeEventListener(events.cancel, touchEnd as EventListener)\n } else if (device === 'pointer') {\n const events = EVENT_FOR_PINCH.pointer\n target.removeEventListener(events.start, pointerStart as EventListener)\n target.removeEventListener(events.move, pointerMove as EventListener)\n target.removeEventListener(events.end, pointerEnd as EventListener)\n target.removeEventListener(events.cancel, pointerEnd as EventListener)\n }\n }\n\n const ref = (el: El | null) => {\n self(config as PinchState<El>)\n if (el) {\n self.mount(el)\n } else self.clean()\n }\n\n const self = event({\n _active: false,\n active: false,\n device: pinchDevice(),\n _value: vec2(0, 0),\n value: vec2(0, 0),\n delta: vec2(0, 0),\n offset: vec2(0, 0),\n movement: vec2(0, 0),\n initial: vec2(0, 0),\n origin: vec2(0, 0),\n _touchIds: [] as number[],\n _pointerEvents: new Map<number, PointerEvent>(),\n scale: 1,\n turns: 0,\n target: null as unknown as El,\n event: null as unknown as Event,\n memo: {},\n timeout: 100,\n clearTimeout: () => {},\n isPinchStart: false,\n isPinching: false,\n isPinchEnd: false,\n pinch,\n pinchStart: (e: Event) => {\n // This is called externally, need to detect device and delegate\n if (self.device === 'touch') touchStart(e as TouchEvent)\n else if (self.device === 'pointer') pointerStart(e as PointerEvent)\n else if (self.device === 'gesture') gestureStart(e)\n else if (self.device === 'wheel') wheeling(e as WheelEvent)\n },\n pinching: (e: Event) => {\n if (self.device === 'touch') touchMove(e as TouchEvent)\n else if (self.device === 'pointer') pointerMove(e as PointerEvent)\n else if (self.device === 'gesture') gestureChange(e)\n else if (self.device === 'wheel') wheeling(e as WheelEvent)\n },\n pinchEnd: (e: Event) => {\n if (self.device === 'touch') touchEnd(e as TouchEvent)\n else if (self.device === 'pointer') pointerEnd(e as PointerEvent)\n else if (self.device === 'gesture') gestureEnd(e)\n else if (self.device === 'wheel') wheelEnd(e)\n },\n mount,\n clean,\n ref,\n }) as EventState<PinchState<El>>\n\n return self\n}\n","import { SUPPORT, Vec2, vec2 } from '../utils'\n\n/**\n * ref:\n * https://github.com/pmndrs/use-gesture/blob/main/packages/core/src/config/pinchConfigResolver.ts\n */\nexport const pinchDevice = (touch = false) => {\n if (!SUPPORT.touch && SUPPORT.gesture) return 'gesture'\n if (SUPPORT.touch && touch) return 'touch'\n if (SUPPORT.touchscreen) {\n if (SUPPORT.pointer) return 'pointer'\n if (SUPPORT.touch) return 'touch'\n }\n return 'wheel'\n}\n\n/**\n * Wheel delta normalization constants\n * ref: https://github.com/facebookarchive/fixed-data-table/blob/master/src/vendor_upstream/dom/normalizeWheel.js\n */\nconst LINE_HEIGHT = 40\nconst PAGE_HEIGHT = 800\nconst PINCH_WHEEL_RATIO = 100\n\n/**\n * Calculate distance and angle between two touch/pointer points\n * ref: https://github.com/pmndrs/use-gesture/blob/main/packages/core/src/utils/events.ts\n */\nexport interface DistanceAngle {\n distance: number\n angle: number\n origin: Vec2\n}\n\nexport const distanceAngle = (p1: Touch | PointerEvent, p2: Touch | PointerEvent): DistanceAngle | null => {\n try {\n const dx = p2.clientX - p1.clientX\n const dy = p2.clientY - p1.clientY\n const cx = (p2.clientX + p1.clientX) / 2\n const cy = (p2.clientY + p1.clientY) / 2\n\n const distance = Math.hypot(dx, dy)\n // Convert to degrees, negative to match natural gesture direction\n const angle = -(Math.atan2(dx, dy) * 180) / Math.PI\n const origin = vec2(cx, cy)\n\n return { distance, angle, origin }\n } catch {\n return null\n }\n}\n\n/**\n * Get touch distance and angle from touch event using stored touch ids\n */\nexport const touchDistanceAngle = (event: TouchEvent, ids: number[]): DistanceAngle | null => {\n const touches = Array.from(event.touches).filter((touch) => ids.includes(touch.identifier))\n if (touches.length < 2) return null\n return distanceAngle(touches[0], touches[1])\n}\n\n/**\n * Get pointer distance and angle from pointer events map\n */\nexport const pointerDistanceAngle = (pointerEvents: Map<number, PointerEvent>): DistanceAngle | null => {\n const pointers = Array.from(pointerEvents.values())\n if (pointers.length < 2) return null\n return distanceAngle(pointers[0], pointers[1])\n}\n\n/**\n * Get all touch identifiers for the current target\n */\nexport const getCurrentTargetTouchIds = (event: TouchEvent): number[] => {\n return Array.from(event.touches)\n .filter((touch) => touch.target === event.currentTarget || (event.currentTarget as Node)?.contains?.(touch.target as Node))\n .map((touch) => touch.identifier)\n}\n\n/**\n * Normalize wheel values for pinch gesture (trackpad pinch)\n * Returns scale delta based on wheel deltaY\n */\nexport const wheelPinchDelta = (event: WheelEvent, currentScale: number): number => {\n let { deltaY, deltaMode } = event\n\n // Normalize wheel values\n if (deltaMode === 1) {\n deltaY *= LINE_HEIGHT\n } else if (deltaMode === 2) {\n deltaY *= PAGE_HEIGHT\n }\n\n // Convert to scale delta (negative because wheel down = zoom out)\n return (-deltaY / PINCH_WHEEL_RATIO) * currentScale\n}\n\n/**\n * WebKit gesture event type (Safari)\n */\nexport interface WebKitGestureEvent extends UIEvent {\n scale: number\n rotation: number\n clientX: number\n clientY: number\n}\n","import { vec2, Vec2 } from '../utils'\n\nexport const scrollValues = (e: any, out = vec2()): Vec2 => {\n const { scrollX: x, scrollLeft: xx } = e.currentTarget\n const { scrollY: y, scrollTop: yy } = e.currentTarget\n return vec2(x ?? xx ?? 0, y ?? yy ?? 0, out)\n}\n","import { vec2, addV, cpV, subV } from '../utils'\nimport { scrollValues } from './utils'\nimport { EventState, event } from 'reev/src'\nimport { ScrollState } from './types'\n\nexport * from './types'\n\nexport const scrollEvent = <El extends Element = Element>(config?: ScrollState) => {\n const initValues = () => {\n vec2(0, 0, self.value)\n vec2(0, 0, self._value)\n vec2(0, 0, self.delta)\n vec2(0, 0, self.movement)\n }\n\n const scroll = () => {\n self.isScrollStart = self.active && !self._active\n self.isScrolling = self.active && self._active\n self.isScrollEnd = !self.active && self._active\n }\n\n const scrollStart = (e: Event) => {\n self.event = e\n self.active = true\n scrollValues(e, self.value)\n self.scroll(self)\n }\n\n const scrolling = (e: Event) => {\n // register wheelEnd\n const id = setTimeout(() => self.scrollEnd(e), self.timeout)\n self.clearTimeout()\n self.clearTimeout = () => clearTimeout(id)\n\n if (!self.active) {\n self.scrollStart(e)\n return\n }\n\n self.event = e\n self._active = self.active\n cpV(self.value, self._value)\n scrollValues(e, self.value)\n if (self._active) {\n subV(self.value, self._value, self.delta)\n addV(self.offset, self.delta, self.offset)\n addV(self.movement, self.delta, self.movement)\n }\n self.scroll(self)\n }\n\n const scrollEnd = (e: Event) => {\n self.event = e\n self.active = false\n initValues()\n self.scroll(self)\n }\n\n const mount = (target: El) => {\n self.target = target // @TODO set event to target\n window.addEventListener('scroll', self.scrolling)\n }\n\n const clean = () => {\n window.removeEventListener('scroll', self.scrolling)\n }\n\n const ref = (el: Element | null) => {\n self(config as ScrollState<El>)\n if (el) {\n self.mount(el)\n } else self.clean(null)\n }\n\n const self = event({\n active: false,\n _active: false,\n _value: vec2(0, 0),\n value: vec2(0, 0),\n delta: vec2(0, 0),\n offset: vec2(0, 0),\n movement: vec2(0, 0),\n target: null,\n event: null,\n memo: {},\n timeout: 100,\n clearTimeout: () => {},\n isScrollStart: false,\n isScrolling: false,\n isScrollEnd: false,\n scroll,\n scrollStart,\n scrolling,\n scrollEnd,\n mount,\n clean,\n ref,\n }) as EventState<ScrollState<El>>\n\n return self\n}\n","import { vec2, Vec2 } from '../utils'\n\nconst LINE_HEIGHT = 40\n\nconst PAGE_HEIGHT = 800\n\nexport const wheelValues = (event: Event, out: Vec2): Vec2 => {\n if (!(event instanceof WheelEvent)) return vec2(0, 0, out)\n\n let { deltaX, deltaY, deltaMode } = event\n if (deltaMode === 1) {\n deltaX *= LINE_HEIGHT\n deltaY *= LINE_HEIGHT\n } else if (deltaMode === 2) {\n deltaX *= PAGE_HEIGHT\n deltaY *= PAGE_HEIGHT\n }\n return vec2(deltaX, deltaY, out)\n}\n","import { vec2, addV, cpV } from '../utils'\nimport { wheelValues } from './utils'\nimport { EventState, event } from 'reev/src'\nimport { WheelState } from './types'\n\nexport * from './types'\n\nexport const wheelEvent = <El extends Element = Element>(config?: WheelState) => {\n const initValues = () => {\n vec2(0, 0, self.value)\n vec2(0, 0, self._value)\n vec2(0, 0, self.delta)\n vec2(0, 0, self.movement)\n }\n\n const wheel = () => {\n self.isWheelStart = self.active && !self._active\n self.isWheeling = self.active && self._active\n self.isWheelEnd = !self.active && self._active\n }\n const wheelStart = (e: WheelEvent) => {\n self.event = e\n self.active = true\n wheelValues(e, self.delta)\n self.wheel(self)\n }\n\n const wheeling = (e: Event) => {\n // register wheelEnd\n const id = setTimeout(() => self.wheelEnd(e), self.timeout)\n self.clearTimeout()\n self.clearTimeout = () => clearTimeout(id)\n self.event = e\n if (!self.active) {\n self.wheelStart(e)\n return\n }\n\n self._active = self.active\n cpV(self.value, self._value)\n wheelValues(e, self.delta)\n addV(self.offset, self.delta, self.offset)\n addV(self.movement, self.delta, self.movement)\n self.wheel(self)\n }\n\n const wheelEnd = (e: Event) => {\n self.event = e\n self.active = false\n initValues()\n self.wheel(self)\n }\n\n const mount = (target: El) => {\n self.target = target\n target.addEventListener('wheel', self.wheeling)\n }\n\n const clean = () => {\n const target = self.target\n if (!target) return\n target.removeEventListener('wheel', self.wheeling)\n }\n\n const ref = (el: Element | null) => {\n self(config as WheelState<El>)\n if (el) {\n self.mount(el)\n } else self.clean(null)\n }\n\n const self = event({\n active: false,\n _active: false,\n _value: vec2(0, 0),\n value: vec2(0, 0),\n delta: vec2(0, 0),\n offset: vec2(0, 0),\n movement: vec2(0, 0),\n target: null,\n event: null,\n timeout: 100,\n clearTimeout: () => {},\n memo: {},\n isWheelStart: false,\n isWheeling: false,\n isWheelEnd: false,\n wheel,\n wheelStart,\n wheeling,\n wheelEnd,\n mount,\n clean,\n ref,\n }) as EventState<WheelState<El>>\n\n return self\n}\n"],"mappings":"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","names":["src_exports","__export","EVENT_FOR_DRAG","EVENT_FOR_HOVER","EVENT_FOR_PINCH","dragEvent","hoverEvent","keyEvent","pinchEvent","resizeEvent","scrollEvent","wheelEvent","__toCommonJS","import_src","Vec","vec2","x","y","out","addV","a","b","subV","cpV","isBrowser","supportsTouchEvents","isTouchScreen","supportsPointerEvents","supportsPointerLock","supportsGestureEvents","SUPPORT","getDevice","lock","getClientVec2","e","device","touch","EVENT_FOR_DRAG","dragEvent","state","initValues","vec2","self","drag","dragStart","e","getClientVec2","dragging","cpV","subV","addV","dragEnd","mount","target","start","move","end","up","clean","ref","el","getDevice","import_src","EVENT_FOR_HOVER","hoverEvent","state","initValues","vec2","self","hover","hoverStart","e","getClientVec2","hovering","cpV","subV","addV","hoverEnd","mount","target","start","move","end","up","clean","ref","getDevice","import_src","keyEvent","state","self","e","el","import_src","DELAY","resizeEvent","state","on","entry","self","target","register","id","entries","el","import_src","pinchDevice","touch","SUPPORT","LINE_HEIGHT","PAGE_HEIGHT","PINCH_WHEEL_RATIO","distanceAngle","p1","p2","dx","dy","cx","cy","distance","angle","origin","vec2","touchDistanceAngle","event","ids","touches","pointerDistanceAngle","pointerEvents","pointers","getCurrentTargetTouchIds","wheelPinchDelta","currentScale","deltaY","deltaMode","EVENT_FOR_PINCH","pinchEvent","config","initValues","vec2","self","pinch","pinchStart","e","payload","cpV","pinching","prevAngle","newAngle","deltaAngle","scaleRatio","angleDelta","subV","addV","pinchEnd","touchStart","touchIds","getCurrentTargetTouchIds","id","touchDistanceAngle","touchMove","touchEnd","currentTouchIds","t","pointerStart","_pointerEvents","pointerDistanceAngle","pointerMove","pointerEnd","gestureStart","ge","gestureChange","gestureEnd","wheelStart","scaleDelta","wheelPinchDelta","wheeling","wheelEnd","mount","target","device","events","clean","ref","el","pinchDevice","scrollValues","e","out","vec2","x","xx","y","yy","import_src","scrollEvent","config","initValues","vec2","self","scroll","scrollStart","e","scrollValues","scrolling","id","cpV","subV","addV","scrollEnd","mount","target","clean","ref","el","LINE_HEIGHT","PAGE_HEIGHT","wheelValues","event","out","vec2","deltaX","deltaY","deltaMode","import_src","wheelEvent","config","initValues","vec2","self","wheel","wheelStart","e","wheelValues","wheeling","id","cpV","addV","wheelEnd","mount","target","clean","ref","el"]}
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{event as F}from"reev";var z=typeof Float32Array<"u"?Float32Array:Array,o=(r=0,t=0,i=new z(2))=>(i[0]=r,i[1]=t,i),m=(r,t,i=o())=>(i[0]=r[0]+t[0],i[1]=r[1]+t[1],i),_=(r,t,i=o())=>(i[0]=r[0]-t[0],i[1]=r[1]-t[1],i),h=(r,t=o())=>(t[0]=r[0],t[1]=r[1],t),V=typeof window<"u"&&!!window.document&&!!window.document.createElement,H=()=>V&&"ontouchstart"in window,K=()=>H()||V&&window.navigator.maxTouchPoints>1,O=()=>V&&"onpointerdown"in window,I=()=>V&&"exitPointerLock"in window.document,A=()=>{try{return"constructor"in GestureEvent}catch{return!1}},v={isBrowser:V,get gesture(){return v._gesture??(v._gesture=A())},get touch(){return v._touch??(v._touch=H())},get touchscreen(){return v._touchscreen??(v._touchscreen=K())},get pointer(){return v._pointer??(v._pointer=O())},get pointerLock(){return v._pointerLock??(v._pointerLock=I())}},w=(r=!1)=>r&&v.pointerLock?"mouse":v.touch?"touch":v.pointer?"pointer":"mouse",S=(r,t,i)=>{if(t!=="touch")return o(r.clientX,r.clientY,i);let[l]=r.changedTouches;return o(l.clientX,l.clientY,i)};var W={touch:{start:"touchstart",move:"touchmove",end:"touchend",up:"touchcancel"},pointer:{start:"pointerdown",move:"pointermove",end:"pointerup",up:"pointercancel"},mouse:{start:"mousedown",move:"mousemove",end:"mouseup",up:"mousecancel"}},Z=(r={})=>{let t=()=>{o(0,0,e.value),o(0,0,e._value),o(0,0,e.delta),o(0,0,e.movement)},i=()=>{e.isDragStart=e.active&&!e._active,e.isDragging=e.active&&e._active,e.isDragEnd=!e.active&&e._active},l=n=>{e.event=n,e.active=!0,S(n,e.device,e.value),e.target.setPointerCapture&&"pointerId"in n&&e.target.setPointerCapture(n.pointerId),e.onDrag(e)},u=n=>{e.event=n,e._active=e.active,h(e.value,e._value),S(n,e.device,e.value),e._active&&(_(e.value,e._value,e.delta),m(e.offset,e.delta,e.offset),m(e.movement,e.delta,e.movement)),e.onDrag(e)},a=n=>{e.event=n,e.active=!1,t(),e.target.releasePointerCapture&&"pointerId"in n&&e.target.releasePointerCapture(n.pointerId),e.onDrag(e)},c=n=>{e.target=n;let{start:E,move:g,end:s,up:p}=W[e.device];n.addEventListener(E,e.onDragStart),n.addEventListener(g,e.onDragging),n.addEventListener(s,e.onDragEnd),n.addEventListener(p,e.onDragEnd)},f=()=>{let n=e.target;if(!n)return;let{start:E,move:g,end:s,up:p}=W[e.device];n.removeEventListener(E,e.onDragStart),n.removeEventListener(g,e.onDragging),n.removeEventListener(s,e.onDragEnd),n.removeEventListener(p,e.onDragEnd)},d=n=>{e(r),n?e.onMount(n):e.onClean()},e=F({_active:!1,active:!1,device:w(),_value:o(0,0),value:o(0,0),delta:o(0,0),offset:o(0,0),movement:o(0,0),target:null,event:null,memo:{},isDragStart:!1,isDragging:!1,isDragEnd:!1,onDrag:i,onDragStart:l,onDragging:u,onDragEnd:a,onMount:c,onClean:f,ref:d});return e};import{event as G}from"reev";var C={touch:{start:"touchstart",move:"touchmove",end:"touchend",up:"touchcancel"},pointer:{start:"pointerenter",move:"pointermove",end:"pointerleave",up:"pointercancel"},mouse:{start:"mouseenter",move:"mousemove",end:"mouseleave",up:"mousecancel"}},oe=(r={})=>{let t=()=>{o(0,0,e.value),o(0,0,e._value),o(0,0,e.delta),o(0,0,e.movement)},i=()=>{e.isHoverStart=!e._active&&e.active,e.isHovering=e._active&&e.active,e.isHoverEnd=e._active&&!e.active},l=n=>{e.event=n,e.active=!0,S(n,e.device,e.value),e.onHover(e)},u=n=>{e.event=n,e._active=e.active,h(e.value,e._value),S(n,e.device,e.value),e._active&&(_(e.value,e._value,e.delta),m(e.offset,e.delta,e.offset),m(e.movement,e.delta,e.movement)),e.onHover(e)},a=n=>{e.event=n,e._active=!0,e.active=!1,t(),e.onHover(e)},c=n=>{e.target=n;let{start:E,move:g,end:s,up:p}=C[e.device];n.addEventListener(E,e.onHoverStart),n.addEventListener(g,e.onHovering),n.addEventListener(s,e.onHoverEnd),n.addEventListener(p,e.onHoverEnd)},f=()=>{let n=e.target;if(!n)return;let{start:E,move:g,end:s,up:p}=C[e.device];n.removeEventListener(E,e.onHoverStart),n.removeEventListener(g,e.onHovering),n.removeEventListener(s,e.onHoverEnd),n.removeEventListener(p,e.onHoverEnd)},d=n=>{e(r),n?e.onMount(n):e.onClean()},e=G({_active:!1,active:!1,device:w(),_value:o(0,0),value:o(0,0),delta:o(0,0),offset:o(0,0),movement:o(0,0),target:null,event:null,memo:{},isHoverStart:!1,isHovering:!1,isHoverEnd:!1,onHover:i,onHoverStart:l,onHovering:u,onHoverEnd:a,onMount:c,onClean:f,ref:d});return e};import{event as N}from"reev";var ce=(r={})=>{let a=N({onKeydown:c=>{a.event=c,a.key=c.key,a.code=c.code,a.onKey?.(a)},onMount:c=>{c||(c=c||window),a.target=c,c.setAttribute("tabindex","1"),c.addEventListener("keydown",a.onKeydown)},onClean:()=>{let c=a.target;c&&c.removeEventListener("keydown",a.onKeydown)},ref:c=>{a(r),c?a.onMount(c):a.onClean()}});return a};import{event as Y}from"reev";var X=100,ve=r=>{let t=c=>()=>{},a=Y({observer:null,listener:()=>{},onResize:()=>{},onMount:c=>{let f=d=>{if(d.target!==c)return;let e=setTimeout(t(d),X);a.listener(),a.listener=()=>clearTimeout(e)};a.observer=new ResizeObserver(d=>{d.forEach(f)}),a.observer.observe(c)},onClean:()=>{},ref:c=>{a(r),c?a.onMount(c):a.onClean(null)}});return a};var T=(r=!1)=>{if(!v.touch&&v.gesture)return"gesture";if(v.touch&&r)return"touch";if(v.touchscreen){if(v.pointer)return"pointer";if(v.touch)return"touch"}return"wheel"};var k=40,b=800,y=(r,t)=>{if(!(r instanceof WheelEvent))return o(0,0,t);let{deltaX:i,deltaY:l,deltaMode:u}=r;return u===1?(i*=k,l*=k):u===2&&(i*=b,l*=b),o(i,l,t)};import{event as U}from"reev";var R=r=>{let t=()=>{o(0,0,e.value),o(0,0,e._value),o(0,0,e.delta),o(0,0,e.movement)},i=()=>{e.isWheelStart=e.active&&!e._active,e.isWheeling=e.active&&e._active,e.isWheelEnd=!e.active&&e._active},l=n=>{e.event=n,e.active=!0,y(n,e.delta),e.onWheel(e)},u=n=>{let E=setTimeout(()=>e.onWheelEnd(n),e.timeout);if(e.clearTimeout(),e.clearTimeout=()=>clearTimeout(E),e.event=n,!e.active){e.onWheelStart(n);return}e._active=e.active,h(e.value,e._value),y(n,e.delta),m(e.offset,e.delta,e.offset),m(e.movement,e.delta,e.movement),e.onWheel(e)},a=n=>{e.event=n,e.active=!1,t(),e.onWheel(e)},c=n=>{e.target=n,n.addEventListener("wheel",e.onWheeling)},f=()=>{let n=e.target;n&&n.removeEventListener("wheel",e.onWheeling)},d=n=>{e(r),n?e.onMount(n):e.onClean(null)},e=U({active:!1,_active:!1,_value:o(0,0),value:o(0,0),delta:o(0,0),offset:o(0,0),movement:o(0,0),target:null,event:null,timeout:100,clearTimeout:()=>{},memo:{},isWheelStart:!1,isWheeling:!1,isWheelEnd:!1,onWheel:i,onWheelStart:l,onWheeling:u,onWheelEnd:a,onMount:c,onClean:f,ref:d});return e};var M={touch:{start:"touchstart",move:"touchmove",end:"touchend",up:"touchcancel"},pointer:{start:"pointerdown",move:"pointermove",end:"pointerup",up:"pointercancel"},mouse:{start:"mousedown",move:"mousemove",end:"mouseup",up:"mousecancel"}},Le=(r={})=>{let t=R(),i=()=>{o(0,0,t.value),o(0,0,t._value),o(0,0,t.delta),o(0,0,t.movement)},l=()=>{t.isPinchStart=!t._active&&t.active,t.isPinching=t._active&&t.active,t.isPinchEnd=t._active&&!t.active},u=s=>{t.event=s,t.active=!0,S(s,t.device,t.value),t.onPinch(t)},a=s=>{t.event=s,t._active=t.active,h(t.value,t._value),S(s,t.device,t.value),t._active&&(_(t.value,t._value,t.delta),m(t.offset,t.delta,t.offset),m(t.movement,t.delta,t.movement)),t.onPinch(t)},c=s=>{t.event=s,t._active=!0,t.active=!1,i(),t.onPinch(t)},f=()=>{t.onPinch(t)},d=()=>{t.onPinch(t)},e=()=>{t.onPinch(t)},n=s=>{if(t.target=s,t.device==="wheel")return;let{start:p,move:P,end:x,up:L}=M[t.device];s.addEventListener(p,t.onPinchStart),s.addEventListener(P,t.onPinching),s.addEventListener(x,t.onPinchEnd),s.addEventListener(L,t.onPinchEnd)},E=()=>{let s=t.target;if(!s||t.device==="wheel")return;let{start:p,move:P,end:x,up:L}=M[t.device];s.removeEventListener(p,t.onPinchStart),s.removeEventListener(P,t.onPinching),s.removeEventListener(x,t.onPinchEnd),s.removeEventListener(L,t.onPinchEnd)},g=()=>{t(r)};return t({_active:!1,active:!1,device:T(),_rotate:0,rotate:0,_size:1,size:1,_scale:o(1,1),scale:o(1,1),_value:o(),value:o(),delta:o(),offset:o(),movement:o(),target:null,event:null,memo:{},isPinchStart:!1,isPinching:!1,isPinchEnd:!1,onWheelStart:f,onWheeling:d,onWheelEnd:e,onPinch:l,onPinchStart:u,onPinching:a,onPinchEnd:c,onMount:n,onClean:E,ref:g}),t};var D=(r,t=o())=>{let{scrollX:i,scrollLeft:l}=r.currentTarget,{scrollY:u,scrollTop:a}=r.currentTarget;return o(i??l??0,u??a??0,t)};import{event as B}from"reev";var Re=r=>{let t=()=>{o(0,0,e.value),o(0,0,e._value),o(0,0,e.delta),o(0,0,e.movement)},i=()=>{e.isScrollStart=e.active&&!e._active,e.isScrolling=e.active&&e._active,e.isScrollEnd=!e.active&&e._active},l=n=>{e.event=n,e.active=!0,D(n,e.value),e.onScroll(e)},u=n=>{let E=setTimeout(()=>e.onScrollEnd(n),e.timeout);if(e.clearTimeout(),e.clearTimeout=()=>clearTimeout(E),!e.active){e.onScrollStart(n);return}e.event=n,e._active=e.active,h(e.value,e._value),D(n,e.value),e._active&&(_(e.value,e._value,e.delta),m(e.offset,e.delta,e.offset),m(e.movement,e.delta,e.movement)),e.onScroll(e)},a=n=>{e.event=n,e.active=!1,t(),e.onScroll(e)},c=n=>{e.target=n,window.addEventListener("scroll",e.onScrolling)},f=()=>{window.removeEventListener("scroll",e.onScrolling)},d=n=>{e(r),n?e.onMount(n):e.onClean(null)},e=B({active:!1,_active:!1,_value:o(0,0),value:o(0,0),delta:o(0,0),offset:o(0,0),movement:o(0,0),target:null,event:null,memo:{},timeout:100,clearTimeout:()=>{},isScrollStart:!1,isScrolling:!1,isScrollEnd:!1,onScroll:i,onScrollStart:l,onScrolling:u,onScrollEnd:a,onMount:c,onClean:f,ref:d});return e};export{W as EVENT_FOR_DRAG,C as EVENT_FOR_HOVER,M as EVENT_FOR_PINCH,Z as dragEvent,oe as hoverEvent,ce as keyEvent,Le as pinchEvent,ve as resizeEvent,Re as scrollEvent,R as wheelEvent};
1
+ import{event as ne}from"reev/src";var Q=typeof Float32Array<"u"?Float32Array:Array,o=(s=0,a=0,l=new Q(2))=>(l[0]=s,l[1]=a,l),h=(s,a,l=o())=>(l[0]=s[0]+a[0],l[1]=s[1]+a[1],l),x=(s,a,l=o())=>(l[0]=s[0]-a[0],l[1]=s[1]-a[1],l),_=(s,a=o())=>(a[0]=s[0],a[1]=s[1],a),y=typeof window<"u"&&!!window.document&&!!window.document.createElement,Y=()=>y&&"ontouchstart"in window,Z=()=>Y()||y&&window.navigator.maxTouchPoints>1,$=()=>y&&"onpointerdown"in window,ee=()=>y&&"exitPointerLock"in window.document,te=()=>{try{return"constructor"in GestureEvent}catch{return!1}},E={isBrowser:y,get gesture(){return E._gesture??(E._gesture=te())},get touch(){return E._touch??(E._touch=Y())},get touchscreen(){return E._touchscreen??(E._touchscreen=Z())},get pointer(){return E._pointer??(E._pointer=$())},get pointerLock(){return E._pointerLock??(E._pointerLock=ee())}},D=(s=!1)=>s&&E.pointerLock?"mouse":E.touch?"touch":E.pointer?"pointer":"mouse",T=(s,a,l)=>{if(a!=="touch")return o(s.clientX,s.clientY,l);let[d]=s.changedTouches;return o(d.clientX,d.clientY,l)};var M={touch:{start:"touchstart",move:"touchmove",end:"touchend",up:"touchcancel"},pointer:{start:"pointerdown",move:"pointermove",end:"pointerup",up:"pointercancel"},mouse:{start:"mousedown",move:"mousemove",end:"mouseup",up:"mousecancel"}},he=(s={})=>{let a=()=>{o(0,0,e.value),o(0,0,e._value),o(0,0,e.delta),o(0,0,e.movement)},l=()=>{e.isDragStart=e.active&&!e._active,e.isDragging=e.active&&e._active,e.isDragEnd=!e.active&&e._active},d=r=>{e.event=r,e.active=!0,T(r,e.device,e.value),e.target.setPointerCapture&&"pointerId"in r&&e.target.setPointerCapture(r.pointerId),e.drag(e)},f=r=>{e.event=r,e._active=e.active,_(e.value,e._value),T(r,e.device,e.value),e._active&&(x(e.value,e._value,e.delta),h(e.offset,e.delta,e.offset),h(e.movement,e.delta,e.movement)),e.drag(e)},v=r=>{e.event=r,e.active=!1,a(),e.target.releasePointerCapture&&"pointerId"in r&&e.target.releasePointerCapture(r.pointerId),e.drag(e)},u=r=>{e.target=r;let{start:p,move:L,end:S,up:w}=M[e.device];r.addEventListener(p,e.dragStart),r.addEventListener(L,e.dragging),r.addEventListener(S,e.dragEnd),r.addEventListener(w,e.dragEnd)},g=()=>{let r=e.target;if(!r)return;let{start:p,move:L,end:S,up:w}=M[e.device];r.removeEventListener(p,e.dragStart),r.removeEventListener(L,e.dragging),r.removeEventListener(S,e.dragEnd),r.removeEventListener(w,e.dragEnd)},m=r=>{e(s),r?e.mount(r):e.clean()},e=ne({_active:!1,active:!1,device:D(),_value:o(0,0),value:o(0,0),delta:o(0,0),offset:o(0,0),movement:o(0,0),target:null,event:null,memo:{},isDragStart:!1,isDragging:!1,isDragEnd:!1,drag:l,dragStart:d,dragging:f,dragEnd:v,mount:u,clean:g,ref:m});return e};import{event as re}from"reev/src";var z={touch:{start:"touchstart",move:"touchmove",end:"touchend",up:"touchcancel"},pointer:{start:"pointerenter",move:"pointermove",end:"pointerleave",up:"pointercancel"},mouse:{start:"mouseenter",move:"mousemove",end:"mouseleave",up:"mousecancel"}},xe=(s={})=>{let a=()=>{o(0,0,e.value),o(0,0,e._value),o(0,0,e.delta),o(0,0,e.movement)},l=()=>{e.isHoverStart=!e._active&&e.active,e.isHovering=e._active&&e.active,e.isHoverEnd=e._active&&!e.active},d=r=>{e.event=r,e.active=!0,T(r,e.device,e.value),e.hover(e)},f=r=>{e.event=r,e._active=e.active,_(e.value,e._value),T(r,e.device,e.value),e._active&&(x(e.value,e._value,e.delta),h(e.offset,e.delta,e.offset),h(e.movement,e.delta,e.movement)),e.hover(e)},v=r=>{e.event=r,e._active=!0,e.active=!1,a(),e.hover(e)},u=r=>{e.target=r;let{start:p,move:L,end:S,up:w}=z[e.device];r.addEventListener(p,e.hoverStart),r.addEventListener(L,e.hovering),r.addEventListener(S,e.hoverEnd),r.addEventListener(w,e.hoverEnd)},g=()=>{let r=e.target;if(!r)return;let{start:p,move:L,end:S,up:w}=z[e.device];r.removeEventListener(p,e.hoverStart),r.removeEventListener(L,e.hovering),r.removeEventListener(S,e.hoverEnd),r.removeEventListener(w,e.hoverEnd)},m=r=>{e(s),r?e.mount(r):e.clean()},e=re({_active:!1,active:!1,device:D(),_value:o(0,0),value:o(0,0),delta:o(0,0),offset:o(0,0),movement:o(0,0),target:null,event:null,memo:{},isHoverStart:!1,isHovering:!1,isHoverEnd:!1,hover:l,hoverStart:d,hovering:f,hoverEnd:v,mount:u,clean:g,ref:m});return e};import{event as oe}from"reev/src";var ye=(s={})=>{let v=oe({keydown:u=>{v.event=u,v.pressedKey=u.key,v.code=u.code,v.key?.(v)},mount:u=>{u||(u=u||window),v.target=u,u.setAttribute("tabindex","1"),u.addEventListener("keydown",v.keydown)},clean:()=>{let u=v.target;u&&u.removeEventListener("keydown",v.keydown)},ref:u=>{v(s),u?v.mount(u):v.clean()}});return v};import{event as ie}from"reev/src";var se=100,ke=s=>{let a=u=>()=>{},v=ie({observer:null,listener:()=>{},resize:()=>{},mount:u=>{let g=m=>{if(m.target!==u)return;let e=setTimeout(a(m),se);v.listener(),v.listener=()=>clearTimeout(e)};v.observer=new ResizeObserver(m=>{m.forEach(g)}),v.observer.observe(u)},clean:()=>{},ref:u=>{v(s),u?v.mount(u):v.clean(null)}});return v};import{event as ve}from"reev/src";var G=(s=!1)=>{if(!E.touch&&E.gesture)return"gesture";if(E.touch&&s)return"touch";if(E.touchscreen){if(E.pointer)return"pointer";if(E.touch)return"touch"}return"wheel"},ae=40,ce=800,le=100,X=(s,a)=>{try{let l=a.clientX-s.clientX,d=a.clientY-s.clientY,f=(a.clientX+s.clientX)/2,v=(a.clientY+s.clientY)/2,u=Math.hypot(l,d),g=-(Math.atan2(l,d)*180)/Math.PI,m=o(f,v);return{distance:u,angle:g,origin:m}}catch{return null}},A=(s,a)=>{let l=Array.from(s.touches).filter(d=>a.includes(d.identifier));return l.length<2?null:X(l[0],l[1])},k=s=>{let a=Array.from(s.values());return a.length<2?null:X(a[0],a[1])},O=s=>Array.from(s.touches).filter(a=>a.target===s.currentTarget||s.currentTarget?.contains?.(a.target)).map(a=>a.identifier),H=(s,a)=>{let{deltaY:l,deltaMode:d}=s;return d===1?l*=ae:d===2&&(l*=ce),-l/le*a};var P={touch:{start:"touchstart",move:"touchmove",end:"touchend",cancel:"touchcancel"},pointer:{start:"pointerdown",move:"pointermove",end:"pointerup",cancel:"pointercancel"},gesture:{start:"gesturestart",change:"gesturechange",end:"gestureend"}},Ne=(s={})=>{let a=()=>{o(0,0,t.value),o(0,0,t._value),o(0,0,t.delta),o(0,0,t.movement)},l=()=>{t.isPinchStart=t.active&&!t._active,t.isPinching=t.active&&t._active,t.isPinchEnd=!t.active&&t._active},d=(n,i)=>{t.event=n,t.active=!0,o(i.distance,i.angle,t.value),o(i.distance,i.angle,t.initial),_(i.origin,t.origin),t.scale=1,t.turns=0,t.pinch(t)},f=(n,i)=>{if(!t.active)return;t.event=n,t._active=t.active,_(t.value,t._value);let c=t._value[1],V=i.angle,I=V-c;Math.abs(I)>270&&(t.turns+=Math.sign(I),V-=360*Math.sign(I)),o(i.distance,V,t.value),_(i.origin,t.origin);let q=t.value[0]/t.initial[0]-1,J=t.value[1]-t.initial[1];o(q,J,t.movement),x(t.value,t._value,t.delta),t.delta[0]=t._value[0]!==0?t.value[0]/t._value[0]-1:0,h(t.offset,t.delta,t.offset),t.scale=t.initial[0]!==0?t.value[0]/t.initial[0]:1,t.pinch(t)},v=n=>{t.event=n,t._active=!0,t.active=!1,a(),t.pinch(t)},u=n=>{let i=O(n);if(t.active&&t._touchIds.every(V=>i.includes(V))||i.length<2)return;t._touchIds=i.slice(0,2);let c=A(n,t._touchIds);c&&d(n,c)},g=n=>{if(!t.active)return;let i=A(n,t._touchIds);i&&f(n,i)},m=n=>{if(!t.active)return;let i=Array.from(n.touches).map(c=>c.identifier);t._touchIds.some(c=>!i.includes(c))&&v(n)},e=n=>{if(n.buttons!=null&&n.buttons%2!==1)return;let i=t._pointerEvents;if(t.active&&Array.from(i.keys()).every(V=>t._pointerEvents.has(V)))return;try{n.target.setPointerCapture(n.pointerId)}catch{}if(i.size<2&&i.set(n.pointerId,n),i.size<2)return;let c=k(i);c&&d(n,c)},r=n=>{let i=t._pointerEvents;if(i.has(n.pointerId)&&i.set(n.pointerId,n),!t.active)return;let c=k(i);c&&f(n,c)},p=n=>{try{n.target.releasePointerCapture(n.pointerId)}catch{}let i=t._pointerEvents;i.has(n.pointerId)&&i.delete(n.pointerId),t.active&&i.size<2&&v(n)},L=n=>{let i=n;n.cancelable&&n.preventDefault(),!t.active&&(t.event=n,t.active=!0,o(i.scale,i.rotation,t.value),o(i.scale,i.rotation,t.initial),o(i.clientX,i.clientY,t.origin),t.scale=1,t.turns=0,t.pinch(t))},S=n=>{let i=n;n.cancelable&&n.preventDefault(),t.active&&(t.event=n,t._active=t.active,_(t.value,t._value),o(i.scale,i.rotation,t.value),o(i.clientX,i.clientY,t.origin),o(i.scale-1,i.rotation,t.movement),x(t.value,t._value,t.delta),h(t.offset,t.delta,t.offset),t.scale=i.scale,t.pinch(t))},w=n=>{t.active&&v(n)},F=n=>{t.event=n,t.active=!0,o(1,0,t.value),o(1,0,t.initial),o(n.clientX,n.clientY,t.origin),t.scale=1,t.turns=0;let i=H(n,t.offset[0]+1);t.delta[0]=i,t.delta[1]=0,t.value[0]+=i,h(t.offset,t.delta,t.offset),o(t.value[0]-1,0,t.movement),t.scale=t.value[0],t.pinch(t)},b=n=>{let i=setTimeout(()=>C(n),t.timeout);if(t.clearTimeout(),t.clearTimeout=()=>clearTimeout(i),!t.active){F(n);return}t.event=n,t._active=t.active,_(t.value,t._value),o(n.clientX,n.clientY,t.origin);let c=H(n,t.offset[0]+1);t.delta[0]=c,t.delta[1]=0,t.value[0]+=c,h(t.offset,t.delta,t.offset),o(t.value[0]-1,0,t.movement),t.scale=t.value[0],t.pinch(t)},C=n=>{t.active&&(t.event=n,t._active=!0,t.active=!1,a(),t.pinch(t))},U=n=>{t.target=n;let i=t.device;if(i==="wheel")n.addEventListener("wheel",b,{passive:!1});else if(i==="gesture"){let c=P.gesture;n.addEventListener(c.start,L),n.addEventListener(c.change,S),n.addEventListener(c.end,w)}else if(i==="touch"){let c=P.touch;n.addEventListener(c.start,u),n.addEventListener(c.move,g),n.addEventListener(c.end,m),n.addEventListener(c.cancel,m)}else if(i==="pointer"){let c=P.pointer;n.addEventListener(c.start,e),n.addEventListener(c.move,r),n.addEventListener(c.end,p),n.addEventListener(c.cancel,p)}},B=()=>{let n=t.target;if(!n)return;let i=t.device;if(i==="wheel")n.removeEventListener("wheel",b);else if(i==="gesture"){let c=P.gesture;n.removeEventListener(c.start,L),n.removeEventListener(c.change,S),n.removeEventListener(c.end,w)}else if(i==="touch"){let c=P.touch;n.removeEventListener(c.start,u),n.removeEventListener(c.move,g),n.removeEventListener(c.end,m),n.removeEventListener(c.cancel,m)}else if(i==="pointer"){let c=P.pointer;n.removeEventListener(c.start,e),n.removeEventListener(c.move,r),n.removeEventListener(c.end,p),n.removeEventListener(c.cancel,p)}},j=n=>{t(s),n?t.mount(n):t.clean()},t=ve({_active:!1,active:!1,device:G(),_value:o(0,0),value:o(0,0),delta:o(0,0),offset:o(0,0),movement:o(0,0),initial:o(0,0),origin:o(0,0),_touchIds:[],_pointerEvents:new Map,scale:1,turns:0,target:null,event:null,memo:{},timeout:100,clearTimeout:()=>{},isPinchStart:!1,isPinching:!1,isPinchEnd:!1,pinch:l,pinchStart:n=>{t.device==="touch"?u(n):t.device==="pointer"?e(n):t.device==="gesture"?L(n):t.device==="wheel"&&b(n)},pinching:n=>{t.device==="touch"?g(n):t.device==="pointer"?r(n):t.device==="gesture"?S(n):t.device==="wheel"&&b(n)},pinchEnd:n=>{t.device==="touch"?m(n):t.device==="pointer"?p(n):t.device==="gesture"?w(n):t.device==="wheel"&&C(n)},mount:U,clean:B,ref:j});return t};var W=(s,a=o())=>{let{scrollX:l,scrollLeft:d}=s.currentTarget,{scrollY:f,scrollTop:v}=s.currentTarget;return o(l??d??0,f??v??0,a)};import{event as ue}from"reev/src";var et=s=>{let a=()=>{o(0,0,e.value),o(0,0,e._value),o(0,0,e.delta),o(0,0,e.movement)},l=()=>{e.isScrollStart=e.active&&!e._active,e.isScrolling=e.active&&e._active,e.isScrollEnd=!e.active&&e._active},d=r=>{e.event=r,e.active=!0,W(r,e.value),e.scroll(e)},f=r=>{let p=setTimeout(()=>e.scrollEnd(r),e.timeout);if(e.clearTimeout(),e.clearTimeout=()=>clearTimeout(p),!e.active){e.scrollStart(r);return}e.event=r,e._active=e.active,_(e.value,e._value),W(r,e.value),e._active&&(x(e.value,e._value,e.delta),h(e.offset,e.delta,e.offset),h(e.movement,e.delta,e.movement)),e.scroll(e)},v=r=>{e.event=r,e.active=!1,a(),e.scroll(e)},u=r=>{e.target=r,window.addEventListener("scroll",e.scrolling)},g=()=>{window.removeEventListener("scroll",e.scrolling)},m=r=>{e(s),r?e.mount(r):e.clean(null)},e=ue({active:!1,_active:!1,_value:o(0,0),value:o(0,0),delta:o(0,0),offset:o(0,0),movement:o(0,0),target:null,event:null,memo:{},timeout:100,clearTimeout:()=>{},isScrollStart:!1,isScrolling:!1,isScrollEnd:!1,scroll:l,scrollStart:d,scrolling:f,scrollEnd:v,mount:u,clean:g,ref:m});return e};var K=40,N=800,R=(s,a)=>{if(!(s instanceof WheelEvent))return o(0,0,a);let{deltaX:l,deltaY:d,deltaMode:f}=s;return f===1?(l*=K,d*=K):f===2&&(l*=N,d*=N),o(l,d,a)};import{event as de}from"reev/src";var vt=s=>{let a=()=>{o(0,0,e.value),o(0,0,e._value),o(0,0,e.delta),o(0,0,e.movement)},l=()=>{e.isWheelStart=e.active&&!e._active,e.isWheeling=e.active&&e._active,e.isWheelEnd=!e.active&&e._active},d=r=>{e.event=r,e.active=!0,R(r,e.delta),e.wheel(e)},f=r=>{let p=setTimeout(()=>e.wheelEnd(r),e.timeout);if(e.clearTimeout(),e.clearTimeout=()=>clearTimeout(p),e.event=r,!e.active){e.wheelStart(r);return}e._active=e.active,_(e.value,e._value),R(r,e.delta),h(e.offset,e.delta,e.offset),h(e.movement,e.delta,e.movement),e.wheel(e)},v=r=>{e.event=r,e.active=!1,a(),e.wheel(e)},u=r=>{e.target=r,r.addEventListener("wheel",e.wheeling)},g=()=>{let r=e.target;r&&r.removeEventListener("wheel",e.wheeling)},m=r=>{e(s),r?e.mount(r):e.clean(null)},e=de({active:!1,_active:!1,_value:o(0,0),value:o(0,0),delta:o(0,0),offset:o(0,0),movement:o(0,0),target:null,event:null,timeout:100,clearTimeout:()=>{},memo:{},isWheelStart:!1,isWheeling:!1,isWheelEnd:!1,wheel:l,wheelStart:d,wheeling:f,wheelEnd:v,mount:u,clean:g,ref:m});return e};export{M as EVENT_FOR_DRAG,z as EVENT_FOR_HOVER,P as EVENT_FOR_PINCH,he as dragEvent,xe as hoverEvent,ye as keyEvent,Ne as pinchEvent,ke as resizeEvent,et as scrollEvent,vt as wheelEvent};
2
2
  //# sourceMappingURL=index.mjs.map