rege 0.1.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.mts +79 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +2 -0
- package/dist/index.mjs.map +1 -0
- package/dist/react.d.mts +52 -0
- package/dist/react.js +2 -0
- package/dist/react.js.map +1 -0
- package/dist/react.mjs +2 -0
- package/dist/react.mjs.map +1 -0
- package/dist/types-dbd32c09.d.ts +149 -0
- package/package.json +96 -0
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
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';
|
|
4
|
+
|
|
5
|
+
declare const EVENT_FOR_DRAG: {
|
|
6
|
+
touch: {
|
|
7
|
+
start: string;
|
|
8
|
+
move: string;
|
|
9
|
+
end: string;
|
|
10
|
+
up: string;
|
|
11
|
+
};
|
|
12
|
+
pointer: {
|
|
13
|
+
start: string;
|
|
14
|
+
move: string;
|
|
15
|
+
end: string;
|
|
16
|
+
up: string;
|
|
17
|
+
};
|
|
18
|
+
mouse: {
|
|
19
|
+
start: string;
|
|
20
|
+
move: string;
|
|
21
|
+
end: string;
|
|
22
|
+
up: string;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
declare const dragEvent: <El extends Element = Element>(state?: Partial<DragState<El>>) => EventState<DragState<El>, any[] | unknown[]>;
|
|
26
|
+
|
|
27
|
+
declare const EVENT_FOR_HOVER: {
|
|
28
|
+
touch: {
|
|
29
|
+
start: string;
|
|
30
|
+
move: string;
|
|
31
|
+
end: string;
|
|
32
|
+
up: string;
|
|
33
|
+
};
|
|
34
|
+
pointer: {
|
|
35
|
+
start: string;
|
|
36
|
+
move: string;
|
|
37
|
+
end: string;
|
|
38
|
+
up: string;
|
|
39
|
+
};
|
|
40
|
+
mouse: {
|
|
41
|
+
start: string;
|
|
42
|
+
move: string;
|
|
43
|
+
end: string;
|
|
44
|
+
up: string;
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
declare const hoverEvent: <El extends Element = Element>(state?: Partial<HoverState<El>>) => EventState<HoverState<El>, reev.ExtractArgs<HoverState<El>>>;
|
|
48
|
+
|
|
49
|
+
declare const keyEvent: <El extends Element = Element>(state?: Partial<KeyState<El>>) => reev.EventState<KeyState<El>, reev.ExtractArgs<KeyState<El>>>;
|
|
50
|
+
|
|
51
|
+
declare const resizeEvent: <El extends Element = Element>(state: ResizeState) => EventState<ResizeState<El>, any[]>;
|
|
52
|
+
|
|
53
|
+
declare const EVENT_FOR_PINCH: {
|
|
54
|
+
touch: {
|
|
55
|
+
start: string;
|
|
56
|
+
move: string;
|
|
57
|
+
end: string;
|
|
58
|
+
up: string;
|
|
59
|
+
};
|
|
60
|
+
pointer: {
|
|
61
|
+
start: string;
|
|
62
|
+
move: string;
|
|
63
|
+
end: string;
|
|
64
|
+
up: string;
|
|
65
|
+
};
|
|
66
|
+
mouse: {
|
|
67
|
+
start: string;
|
|
68
|
+
move: string;
|
|
69
|
+
end: string;
|
|
70
|
+
up: string;
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
declare const pinchEvent: <El extends Element = Element>(state?: Partial<PinchState<El>>) => EventState<PinchState<El>, any[] | unknown[]>;
|
|
74
|
+
|
|
75
|
+
declare const scrollEvent: <El extends Element = Element>(config?: ScrollState) => EventState<ScrollState<El>, any[] | unknown[]>;
|
|
76
|
+
|
|
77
|
+
declare const wheelEvent: <El extends Element = Element>(config?: WheelState) => EventState<WheelState<El>, any[] | unknown[]>;
|
|
78
|
+
|
|
79
|
+
export { EVENT_FOR_DRAG, EVENT_FOR_HOVER, EVENT_FOR_PINCH, dragEvent, hoverEvent, keyEvent, pinchEvent, resizeEvent, scrollEvent, wheelEvent };
|
package/dist/index.js
ADDED
|
@@ -0,0 +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});
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +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"]}
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +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};
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../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":["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":["event","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","event","getDevice","event","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","event","getDevice","event","keyEvent","state","self","e","el","event","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","event","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","event","scrollEvent","config","initValues","vec2","self","onScroll","onScrollStart","e","scrollValues","onScrolling","id","cpV","subV","addV","onScrollEnd","onMount","target","onClean","ref","el"]}
|
package/dist/react.d.mts
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import * as reev from 'reev';
|
|
2
|
+
import { a as DragArg, D as DragState, b as HoverArg, H as HoverState, c as KeyArg, K as KeyState, d as PinchArg, P as PinchState, e as ResizeArg, R as ResizeState, f as ScrollConfig, S as ScrollState, g as WheelConfig, W as WheelState } from './types-dbd32c09.js';
|
|
3
|
+
|
|
4
|
+
declare const useDrag: <El extends Element = Element>(arg: DragArg<El>) => reev.EventState<DragState<El>, any[] | unknown[]>;
|
|
5
|
+
|
|
6
|
+
interface DragProps<El extends Element = Element> extends Partial<DragState<El>> {
|
|
7
|
+
children(self: DragState<El>): JSX.Element;
|
|
8
|
+
}
|
|
9
|
+
declare const Drag: <El extends Element = Element>(props: DragProps<El>) => JSX.Element;
|
|
10
|
+
|
|
11
|
+
declare const useHover: <El extends Element = Element>(arg?: HoverArg) => reev.EventState<HoverState<El>, reev.ExtractArgs<HoverState<El>>>;
|
|
12
|
+
|
|
13
|
+
interface HoverProps<El extends Element = Element> extends Partial<HoverState<El>> {
|
|
14
|
+
children: (state: HoverState<El>) => JSX.Element;
|
|
15
|
+
}
|
|
16
|
+
declare const Hover: (props: HoverProps) => JSX.Element;
|
|
17
|
+
|
|
18
|
+
declare const useKey: <El extends Element = Element>(arg: KeyArg<El>) => reev.EventState<KeyState<El>, reev.ExtractArgs<KeyState<El>>>;
|
|
19
|
+
interface KeyProps<El extends Element = Element> extends Partial<KeyState<El>> {
|
|
20
|
+
children: (state: KeyState<El>) => JSX.Element;
|
|
21
|
+
}
|
|
22
|
+
declare const Key: <El extends Element = Element>(props: KeyProps<El>) => JSX.Element;
|
|
23
|
+
|
|
24
|
+
declare const usePinch: <El extends Element = Element>(arg?: PinchArg) => reev.EventState<PinchState<El>, any[] | unknown[]>;
|
|
25
|
+
|
|
26
|
+
interface PinchProps<El extends Element = Element> extends Partial<PinchState<El>> {
|
|
27
|
+
children: (state: PinchState<El>) => JSX.Element;
|
|
28
|
+
}
|
|
29
|
+
declare const Pinch: (props: PinchProps) => JSX.Element;
|
|
30
|
+
|
|
31
|
+
declare const useResize: (arg: ResizeArg) => reev.EventState<ResizeState<Element>, any[]>;
|
|
32
|
+
|
|
33
|
+
interface ResizeProps<El extends Element = Element> extends Partial<ResizeState<El>> {
|
|
34
|
+
children: (state: ResizeState<El>) => JSX.Element;
|
|
35
|
+
}
|
|
36
|
+
declare const Resize: <El extends Element = Element>(props: ResizeProps<El>) => JSX.Element;
|
|
37
|
+
|
|
38
|
+
declare const useScroll: <El extends Element = Element>(config: ScrollConfig) => reev.EventState<ScrollState<El>, any[] | unknown[]>;
|
|
39
|
+
|
|
40
|
+
interface ScrollProps<El extends Element = Element> extends Partial<ScrollState<El>> {
|
|
41
|
+
children: (state: ScrollState<El>) => JSX.Element;
|
|
42
|
+
}
|
|
43
|
+
declare const Scroll: <El extends Element = Element>(props: ScrollProps<El>) => JSX.Element;
|
|
44
|
+
|
|
45
|
+
declare const useWheel: <El extends Element = Element>(config: WheelConfig) => reev.EventState<WheelState<El>, any[] | unknown[]>;
|
|
46
|
+
|
|
47
|
+
interface WheelProps<El extends Element = Element> extends Partial<WheelState<El>> {
|
|
48
|
+
children: (state: WheelState<El>) => JSX.Element;
|
|
49
|
+
}
|
|
50
|
+
declare const Wheel: <El extends Element = Element>(props: WheelProps<El>) => JSX.Element;
|
|
51
|
+
|
|
52
|
+
export { Drag, DragProps, Hover, HoverProps, Key, KeyProps, Pinch, PinchProps, Resize, ResizeProps, Scroll, ScrollProps, Wheel, WheelProps, useDrag, useHover, useKey, usePinch, useResize, useScroll, useWheel };
|
package/dist/react.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var M=Object.defineProperty;var ve=Object.getOwnPropertyDescriptor;var me=Object.getOwnPropertyNames;var ue=Object.prototype.hasOwnProperty;var Ee=(n,t)=>{for(var l in t)M(n,l,{get:t[l],enumerable:!0})},de=(n,t,l,c)=>{if(t&&typeof t=="object"||typeof t=="function")for(let v of me(t))!ue.call(n,v)&&v!==l&&M(n,v,{get:()=>t[v],enumerable:!(c=ve(t,v))||c.enumerable});return n};var pe=n=>de(M({},"__esModule",{value:!0}),n);var We={};Ee(We,{Drag:()=>Pe,Hover:()=>_e,Key:()=>Ve,Pinch:()=>ye,Resize:()=>De,Scroll:()=>He,Wheel:()=>Le,useDrag:()=>I,useHover:()=>Y,useKey:()=>j,usePinch:()=>ne,useResize:()=>le,useScroll:()=>ie,useWheel:()=>ce});module.exports=pe(We);var y=require("reev/react");var F=require("reev");var d=n=>typeof n=="function",fe=typeof Float32Array<"u"?Float32Array:Array,r=(n=0,t=0,l=new fe(2))=>(l[0]=n,l[1]=t,l),u=(n,t,l=r())=>(l[0]=n[0]+t[0],l[1]=n[1]+t[1],l),P=(n,t,l=r())=>(l[0]=n[0]-t[0],l[1]=n[1]-t[1],l),S=(n,t=r())=>(t[0]=n[0],t[1]=n[1],t),_=typeof window<"u"&&!!window.document&&!!window.document.createElement,A=()=>_&&"ontouchstart"in window,he=()=>A()||_&&window.navigator.maxTouchPoints>1,Se=()=>_&&"onpointerdown"in window,xe=()=>_&&"exitPointerLock"in window.document,ge=()=>{try{return"constructor"in GestureEvent}catch{return!1}},m={isBrowser:_,get gesture(){return m._gesture??(m._gesture=ge())},get touch(){return m._touch??(m._touch=A())},get touchscreen(){return m._touchscreen??(m._touchscreen=he())},get pointer(){return m._pointer??(m._pointer=Se())},get pointerLock(){return m._pointerLock??(m._pointerLock=xe())}},V=(n=!1)=>n&&m.pointerLock?"mouse":m.touch?"touch":m.pointer?"pointer":"mouse",g=(n,t,l)=>{if(t!=="touch")return r(n.clientX,n.clientY,l);let[c]=n.changedTouches;return r(c.clientX,c.clientY,l)};var O={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"}},X=(n={})=>{let t=()=>{r(0,0,e.value),r(0,0,e._value),r(0,0,e.delta),r(0,0,e.movement)},l=()=>{e.isDragStart=e.active&&!e._active,e.isDragging=e.active&&e._active,e.isDragEnd=!e.active&&e._active},c=o=>{e.event=o,e.active=!0,g(o,e.device,e.value),e.target.setPointerCapture&&"pointerId"in o&&e.target.setPointerCapture(o.pointerId),e.onDrag(e)},v=o=>{e.event=o,e._active=e.active,S(e.value,e._value),g(o,e.device,e.value),e._active&&(P(e.value,e._value,e.delta),u(e.offset,e.delta,e.offset),u(e.movement,e.delta,e.movement)),e.onDrag(e)},s=o=>{e.event=o,e.active=!1,t(),e.target.releasePointerCapture&&"pointerId"in o&&e.target.releasePointerCapture(o.pointerId),e.onDrag(e)},a=o=>{e.target=o;let{start:p,move:x,end:i,up:h}=O[e.device];o.addEventListener(p,e.onDragStart),o.addEventListener(x,e.onDragging),o.addEventListener(i,e.onDragEnd),o.addEventListener(h,e.onDragEnd)},f=()=>{let o=e.target;if(!o)return;let{start:p,move:x,end:i,up:h}=O[e.device];o.removeEventListener(p,e.onDragStart),o.removeEventListener(x,e.onDragging),o.removeEventListener(i,e.onDragEnd),o.removeEventListener(h,e.onDragEnd)},E=o=>{e(n),o?e.onMount(o):e.onClean()},e=(0,F.event)({_active:!1,active:!1,device:V(),_value:r(0,0),value:r(0,0),delta:r(0,0),offset:r(0,0),movement:r(0,0),target:null,event:null,memo:{},isDragStart:!1,isDragging:!1,isDragEnd:!1,onDrag:l,onDragStart:c,onDragging:v,onDragEnd:s,onMount:a,onClean:f,ref:E});return e};var I=n=>{d(n)&&(n={onDrag:n});let t=(0,y.useMutable)(n);return(0,y.useOnce)(()=>X(t))};var Pe=n=>{let{children:t,...l}=n;return t(I(l))};var w=require("reev/react");var G=require("reev");var J={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"}},N=(n={})=>{let t=()=>{r(0,0,e.value),r(0,0,e._value),r(0,0,e.delta),r(0,0,e.movement)},l=()=>{e.isHoverStart=!e._active&&e.active,e.isHovering=e._active&&e.active,e.isHoverEnd=e._active&&!e.active},c=o=>{e.event=o,e.active=!0,g(o,e.device,e.value),e.onHover(e)},v=o=>{e.event=o,e._active=e.active,S(e.value,e._value),g(o,e.device,e.value),e._active&&(P(e.value,e._value,e.delta),u(e.offset,e.delta,e.offset),u(e.movement,e.delta,e.movement)),e.onHover(e)},s=o=>{e.event=o,e._active=!0,e.active=!1,t(),e.onHover(e)},a=o=>{e.target=o;let{start:p,move:x,end:i,up:h}=J[e.device];o.addEventListener(p,e.onHoverStart),o.addEventListener(x,e.onHovering),o.addEventListener(i,e.onHoverEnd),o.addEventListener(h,e.onHoverEnd)},f=()=>{let o=e.target;if(!o)return;let{start:p,move:x,end:i,up:h}=J[e.device];o.removeEventListener(p,e.onHoverStart),o.removeEventListener(x,e.onHovering),o.removeEventListener(i,e.onHoverEnd),o.removeEventListener(h,e.onHoverEnd)},E=o=>{e(n),o?e.onMount(o):e.onClean()},e=(0,G.event)({_active:!1,active:!1,device:V(),_value:r(0,0),value:r(0,0),delta:r(0,0),offset:r(0,0),movement:r(0,0),target:null,event:null,memo:{},isHoverStart:!1,isHovering:!1,isHoverEnd:!1,onHover:l,onHoverStart:c,onHovering:v,onHoverEnd:s,onMount:a,onClean:f,ref:E});return e};var Y=n=>{d(n)&&(n={onHover:n});let t=(0,w.useMutable)(n);return(0,w.useOnce)(()=>N(t))};var _e=n=>{let{children:t,...l}=n;return t(Y(l))};var D=require("reev/react");var U=require("reev"),B=(n={})=>{let s=(0,U.event)({onKeydown:a=>{s.event=a,s.key=a.key,s.code=a.code,s.onKey?.(s)},onMount:a=>{a||(a=a||window),s.target=a,a.setAttribute("tabindex","1"),a.addEventListener("keydown",s.onKeydown)},onClean:()=>{let a=s.target;a&&a.removeEventListener("keydown",s.onKeydown)},ref:a=>{s(n),a?s.onMount(a):s.onClean()}});return s};var j=n=>{d(n)&&(n={onKey:n});let t=(0,D.useMutable)(n);return(0,D.useOnce)(()=>B(t))},Ve=n=>{let{children:t,...l}=n;return t(j(l))};var L=require("reev/react");var q=(n=!1)=>{if(!m.touch&&m.gesture)return"gesture";if(m.touch&&n)return"touch";if(m.touchscreen){if(m.pointer)return"pointer";if(m.touch)return"touch"}return"wheel"};var Q=40,Z=800,k=(n,t)=>{if(!(n instanceof WheelEvent))return r(0,0,t);let{deltaX:l,deltaY:c,deltaMode:v}=n;return v===1?(l*=Q,c*=Q):v===2&&(l*=Z,c*=Z),r(l,c,t)};var $=require("reev"),H=n=>{let t=()=>{r(0,0,e.value),r(0,0,e._value),r(0,0,e.delta),r(0,0,e.movement)},l=()=>{e.isWheelStart=e.active&&!e._active,e.isWheeling=e.active&&e._active,e.isWheelEnd=!e.active&&e._active},c=o=>{e.event=o,e.active=!0,k(o,e.delta),e.onWheel(e)},v=o=>{let p=setTimeout(()=>e.onWheelEnd(o),e.timeout);if(e.clearTimeout(),e.clearTimeout=()=>clearTimeout(p),e.event=o,!e.active){e.onWheelStart(o);return}e._active=e.active,S(e.value,e._value),k(o,e.delta),u(e.offset,e.delta,e.offset),u(e.movement,e.delta,e.movement),e.onWheel(e)},s=o=>{e.event=o,e.active=!1,t(),e.onWheel(e)},a=o=>{e.target=o,o.addEventListener("wheel",e.onWheeling)},f=()=>{let o=e.target;o&&o.removeEventListener("wheel",e.onWheeling)},E=o=>{e(n),o?e.onMount(o):e.onClean(null)},e=(0,$.event)({active:!1,_active:!1,_value:r(0,0),value:r(0,0),delta:r(0,0),offset:r(0,0),movement:r(0,0),target:null,event:null,timeout:100,clearTimeout:()=>{},memo:{},isWheelStart:!1,isWheeling:!1,isWheelEnd:!1,onWheel:l,onWheelStart:c,onWheeling:v,onWheelEnd:s,onMount:a,onClean:f,ref:E});return e};var ee={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"}},te=(n={})=>{let t=H(),l=()=>{r(0,0,t.value),r(0,0,t._value),r(0,0,t.delta),r(0,0,t.movement)},c=()=>{t.isPinchStart=!t._active&&t.active,t.isPinching=t._active&&t.active,t.isPinchEnd=t._active&&!t.active},v=i=>{t.event=i,t.active=!0,g(i,t.device,t.value),t.onPinch(t)},s=i=>{t.event=i,t._active=t.active,S(t.value,t._value),g(i,t.device,t.value),t._active&&(P(t.value,t._value,t.delta),u(t.offset,t.delta,t.offset),u(t.movement,t.delta,t.movement)),t.onPinch(t)},a=i=>{t.event=i,t._active=!0,t.active=!1,l(),t.onPinch(t)},f=()=>{t.onPinch(t)},E=()=>{t.onPinch(t)},e=()=>{t.onPinch(t)},o=i=>{if(t.target=i,t.device==="wheel")return;let{start:h,move:T,end:b,up:z}=ee[t.device];i.addEventListener(h,t.onPinchStart),i.addEventListener(T,t.onPinching),i.addEventListener(b,t.onPinchEnd),i.addEventListener(z,t.onPinchEnd)},p=()=>{let i=t.target;if(!i||t.device==="wheel")return;let{start:h,move:T,end:b,up:z}=ee[t.device];i.removeEventListener(h,t.onPinchStart),i.removeEventListener(T,t.onPinching),i.removeEventListener(b,t.onPinchEnd),i.removeEventListener(z,t.onPinchEnd)},x=()=>{t(n)};return t({_active:!1,active:!1,device:q(),_rotate:0,rotate:0,_size:1,size:1,_scale:r(1,1),scale:r(1,1),_value:r(),value:r(),delta:r(),offset:r(),movement:r(),target:null,event:null,memo:{},isPinchStart:!1,isPinching:!1,isPinchEnd:!1,onWheelStart:f,onWheeling:E,onWheelEnd:e,onPinch:c,onPinchStart:v,onPinching:s,onPinchEnd:a,onMount:o,onClean:p,ref:x}),t};var ne=n=>{d(n)&&(n={onPinch:n});let t=(0,L.useMutable)(n);return(0,L.useOnce)(()=>te(t))};var ye=n=>{let{children:t,...l}=n;return t(ne(l))};var oe=require("reev"),we=100,re=n=>{let t=a=>()=>{},s=(0,oe.event)({observer:null,listener:()=>{},onResize:()=>{},onMount:a=>{let f=E=>{if(E.target!==a)return;let e=setTimeout(t(E),we);s.listener(),s.listener=()=>clearTimeout(e)};s.observer=new ResizeObserver(E=>{E.forEach(f)}),s.observer.observe(a)},onClean:()=>{},ref:a=>{s(n),a?s.onMount(a):s.onClean(null)}});return s};var W=require("reev/react");var le=n=>{d(n)&&(n={onResize:n});let t=(0,W.useMutable)(n);return(0,W.useOnce)(()=>re(t))};var De=n=>{let{children:t,...l}=n;return t(le(l))};var C=require("reev/react");var K=(n,t=r())=>{let{scrollX:l,scrollLeft:c}=n.currentTarget,{scrollY:v,scrollTop:s}=n.currentTarget;return r(l??c??0,v??s??0,t)};var se=require("reev"),ae=n=>{let t=()=>{r(0,0,e.value),r(0,0,e._value),r(0,0,e.delta),r(0,0,e.movement)},l=()=>{e.isScrollStart=e.active&&!e._active,e.isScrolling=e.active&&e._active,e.isScrollEnd=!e.active&&e._active},c=o=>{e.event=o,e.active=!0,K(o,e.value),e.onScroll(e)},v=o=>{let p=setTimeout(()=>e.onScrollEnd(o),e.timeout);if(e.clearTimeout(),e.clearTimeout=()=>clearTimeout(p),!e.active){e.onScrollStart(o);return}e.event=o,e._active=e.active,S(e.value,e._value),K(o,e.value),e._active&&(P(e.value,e._value,e.delta),u(e.offset,e.delta,e.offset),u(e.movement,e.delta,e.movement)),e.onScroll(e)},s=o=>{e.event=o,e.active=!1,t(),e.onScroll(e)},a=o=>{e.target=o,window.addEventListener("scroll",e.onScrolling)},f=()=>{window.removeEventListener("scroll",e.onScrolling)},E=o=>{e(n),o?e.onMount(o):e.onClean(null)},e=(0,se.event)({active:!1,_active:!1,_value:r(0,0),value:r(0,0),delta:r(0,0),offset:r(0,0),movement:r(0,0),target:null,event:null,memo:{},timeout:100,clearTimeout:()=>{},isScrollStart:!1,isScrolling:!1,isScrollEnd:!1,onScroll:l,onScrollStart:c,onScrolling:v,onScrollEnd:s,onMount:a,onClean:f,ref:E});return e};var ie=n=>{d(n)&&(n={onScroll:n});let t=(0,C.useMutable)(n);return(0,C.useOnce)(()=>ae(t))};var He=n=>{let{children:t,...l}=n;return t(ie(l))};var R=require("reev/react");var ce=n=>{d(n)&&(n={onWheel:n});let t=(0,R.useMutable)(n);return(0,R.useOnce)(()=>H(t))};var Le=n=>{let{children:t,...l}=n;return t(ce(l))};0&&(module.exports={Drag,Hover,Key,Pinch,Resize,Scroll,Wheel,useDrag,useHover,useKey,usePinch,useResize,useScroll,useWheel});
|
|
2
|
+
//# sourceMappingURL=react.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../react.ts","../drag/react.ts","../drag/index.ts","../utils.ts","../hover/react.ts","../hover/index.ts","../key/react.ts","../key/index.ts","../pinch/react.ts","../pinch/utils.ts","../wheel/utils.ts","../wheel/index.ts","../pinch/index.ts","../resize/index.ts","../resize/react.ts","../scroll/react.ts","../scroll/utils.ts","../scroll/index.ts","../wheel/react.ts"],"sourcesContent":["export * from './drag/react'\nexport * from './hover/react'\nexport * from './key/react'\nexport * from './pinch/react'\nexport * from './resize/react'\nexport * from './scroll/react'\nexport * from './wheel/react'\n","import { useOnce, useMutable } from 'reev/react'\nimport { DragArg, DragState } from './types'\nimport { dragEvent } from './index'\nimport { isF } from '../utils'\n\nexport const useDrag = <El extends Element = Element>(arg: DragArg<El>) => {\n if (isF(arg)) arg = { onDrag: arg }\n const memo = useMutable(arg)\n return useOnce(() => dragEvent<El>(memo as any))\n}\n\nexport default useDrag\n\nexport interface DragProps<El extends Element = Element>\n extends Partial<DragState<El>> {\n children(self: DragState<El>): JSX.Element\n}\n\nexport const Drag = <El extends Element = Element>(props: DragProps<El>) => {\n const { children, ...other } = props\n return children(useDrag(other))\n}\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 { useOnce, useMutable } from 'reev/react'\nimport { hoverEvent } from '.'\nimport { HoverArg, HoverState } from './types'\nimport { isF } from '../utils'\n\nexport const useHover = <El extends Element = Element>(arg?: HoverArg) => {\n if (isF(arg)) arg = { onHover: arg }\n const memo = useMutable(arg)\n return useOnce(() => hoverEvent<El>(memo as any))\n}\n\nexport default useHover\n\nexport interface HoverProps<El extends Element = Element>\n extends Partial<HoverState<El>> {\n children: (state: HoverState<El>) => JSX.Element\n}\n\nexport const Hover = (props: HoverProps) => {\n const { children, ...other } = props\n return children(useHover(other))\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 { useMutable, useOnce } from 'reev/react'\nimport { keyEvent } from '.'\nimport { KeyArg, KeyState } from './types'\nimport { isF } from '../utils'\n\nexport const useKey = <El extends Element = Element>(arg: KeyArg<El>) => {\n if (isF(arg)) arg = { onKey: arg }\n const memo = useMutable(arg)\n return useOnce(() => keyEvent<El>(memo as any))\n}\n\nexport interface KeyProps<El extends Element = Element>\n extends Partial<KeyState<El>> {\n children: (state: KeyState<El>) => JSX.Element\n}\n\nexport const Key = <El extends Element = Element>(props: KeyProps<El>) => {\n const { children, ...other } = props\n return children(useKey(other))\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 { useOnce, useMutable } from 'reev/react'\nimport { pinchEvent } from '.'\nimport { PinchArg, PinchState } from './types'\nimport { isF } from '../utils'\n\nexport const usePinch = <El extends Element = Element>(arg?: PinchArg) => {\n if (isF(arg)) arg = { onPinch: arg }\n const memo = useMutable(arg)\n return useOnce(() => pinchEvent<El>(memo as any))\n}\n\nexport default usePinch\n\nexport interface PinchProps<El extends Element = Element>\n extends Partial<PinchState<El>> {\n children: (state: PinchState<El>) => JSX.Element\n}\n\nexport const Pinch = (props: PinchProps) => {\n const { children, ...other } = props\n return children(usePinch(other))\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 { 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 { resizeEvent } from '.'\nimport { useMutable, useOnce } from 'reev/react'\nimport { ResizeArg, ResizeState } from './types'\nimport { isF } from '../utils'\n\nexport const useResize = (arg: ResizeArg) => {\n if (isF(arg)) arg = { onResize: arg }\n const memo = useMutable(arg)\n return useOnce(() => resizeEvent(memo as any))\n}\n\nexport default useResize\n\nexport interface ResizeProps<El extends Element = Element>\n extends Partial<ResizeState<El>> {\n children: (state: ResizeState<El>) => JSX.Element\n}\n\nexport const Resize = <El extends Element = Element>(\n props: ResizeProps<El>\n) => {\n const { children, ...other } = props\n return children(useResize(other))\n}\n","import { useOnce, useMutable } from 'reev/react'\nimport { ScrollConfig, ScrollState } from './types'\nimport { scrollEvent } from './index'\nimport { isF } from '../utils'\n\nexport const useScroll = <El extends Element = Element>(\n config: ScrollConfig\n) => {\n if (isF(config)) config = { onScroll: config }\n const memo = useMutable(config)\n return useOnce(() => scrollEvent<El>(memo as any))\n}\n\nexport default useScroll\n\nexport interface ScrollProps<El extends Element = Element>\n extends Partial<ScrollState<El>> {\n children: (state: ScrollState<El>) => JSX.Element\n}\n\nexport const Scroll = <El extends Element = Element>(\n props: ScrollProps<El>\n) => {\n const { children, ...other } = props\n return children(useScroll(other))\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","import { useOnce, useMutable } from 'reev/react'\nimport { WheelConfig, WheelState } from './types'\nimport { wheelEvent } from './index'\nimport { isF } from '../utils'\n\nexport const useWheel = <El extends Element = Element>(config: WheelConfig) => {\n if (isF(config)) config = { onWheel: config }\n const memo = useMutable(config)\n return useOnce(() => wheelEvent<El>(memo as any))\n}\n\nexport default useWheel\n\nexport interface WheelProps<El extends Element = Element>\n extends Partial<WheelState<El>> {\n children: (state: WheelState<El>) => JSX.Element\n}\n\nexport const Wheel = <El extends Element = Element>(props: WheelProps<El>) => {\n const { children, ...other } = props\n return children(useWheel(other))\n}\n"],"mappings":"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","names":["react_exports","__export","Drag","Hover","Key","Pinch","Resize","Scroll","Wheel","useDrag","useHover","useKey","usePinch","useResize","useScroll","useWheel","__toCommonJS","import_react","import_reev","isF","f","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","useDrag","arg","isF","memo","dragEvent","Drag","props","children","other","useDrag","import_react","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","useHover","arg","isF","memo","hoverEvent","Hover","props","children","other","useHover","import_react","import_reev","keyEvent","state","self","e","el","useKey","arg","isF","memo","keyEvent","Key","props","children","other","import_react","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","usePinch","arg","isF","memo","pinchEvent","Pinch","props","children","other","usePinch","import_reev","DELAY","resizeEvent","state","on","entry","self","target","register","id","entries","el","import_react","useResize","arg","isF","memo","resizeEvent","Resize","props","children","other","useResize","import_react","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","useScroll","config","isF","memo","scrollEvent","Scroll","props","children","other","useScroll","import_react","useWheel","config","isF","memo","wheelEvent","Wheel","props","children","other","useWheel"]}
|
package/dist/react.mjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{useOnce as j,useMutable as q}from"reev/react";import{event as B}from"reev";var d=n=>typeof n=="function",J=typeof Float32Array<"u"?Float32Array:Array,r=(n=0,t=0,l=new J(2))=>(l[0]=n,l[1]=t,l),u=(n,t,l=r())=>(l[0]=n[0]+t[0],l[1]=n[1]+t[1],l),P=(n,t,l=r())=>(l[0]=n[0]-t[0],l[1]=n[1]-t[1],l),S=(n,t=r())=>(t[0]=n[0],t[1]=n[1],t),_=typeof window<"u"&&!!window.document&&!!window.document.createElement,C=()=>_&&"ontouchstart"in window,G=()=>C()||_&&window.navigator.maxTouchPoints>1,N=()=>_&&"onpointerdown"in window,Y=()=>_&&"exitPointerLock"in window.document,U=()=>{try{return"constructor"in GestureEvent}catch{return!1}},v={isBrowser:_,get gesture(){return v._gesture??(v._gesture=U())},get touch(){return v._touch??(v._touch=C())},get touchscreen(){return v._touchscreen??(v._touchscreen=G())},get pointer(){return v._pointer??(v._pointer=N())},get pointerLock(){return v._pointerLock??(v._pointerLock=Y())}},V=(n=!1)=>n&&v.pointerLock?"mouse":v.touch?"touch":v.pointer?"pointer":"mouse",g=(n,t,l)=>{if(t!=="touch")return r(n.clientX,n.clientY,l);let[c]=n.changedTouches;return r(c.clientX,c.clientY,l)};var R={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"}},T=(n={})=>{let t=()=>{r(0,0,e.value),r(0,0,e._value),r(0,0,e.delta),r(0,0,e.movement)},l=()=>{e.isDragStart=e.active&&!e._active,e.isDragging=e.active&&e._active,e.isDragEnd=!e.active&&e._active},c=o=>{e.event=o,e.active=!0,g(o,e.device,e.value),e.target.setPointerCapture&&"pointerId"in o&&e.target.setPointerCapture(o.pointerId),e.onDrag(e)},m=o=>{e.event=o,e._active=e.active,S(e.value,e._value),g(o,e.device,e.value),e._active&&(P(e.value,e._value,e.delta),u(e.offset,e.delta,e.offset),u(e.movement,e.delta,e.movement)),e.onDrag(e)},s=o=>{e.event=o,e.active=!1,t(),e.target.releasePointerCapture&&"pointerId"in o&&e.target.releasePointerCapture(o.pointerId),e.onDrag(e)},a=o=>{e.target=o;let{start:p,move:x,end:i,up:h}=R[e.device];o.addEventListener(p,e.onDragStart),o.addEventListener(x,e.onDragging),o.addEventListener(i,e.onDragEnd),o.addEventListener(h,e.onDragEnd)},f=()=>{let o=e.target;if(!o)return;let{start:p,move:x,end:i,up:h}=R[e.device];o.removeEventListener(p,e.onDragStart),o.removeEventListener(x,e.onDragging),o.removeEventListener(i,e.onDragEnd),o.removeEventListener(h,e.onDragEnd)},E=o=>{e(n),o?e.onMount(o):e.onClean()},e=B({_active:!1,active:!1,device:V(),_value:r(0,0),value:r(0,0),delta:r(0,0),offset:r(0,0),movement:r(0,0),target:null,event:null,memo:{},isDragStart:!1,isDragging:!1,isDragEnd:!1,onDrag:l,onDragStart:c,onDragging:m,onDragEnd:s,onMount:a,onClean:f,ref:E});return e};var Q=n=>{d(n)&&(n={onDrag:n});let t=q(n);return j(()=>T(t))};var Ce=n=>{let{children:t,...l}=n;return t(Q(l))};import{useOnce as $,useMutable as ee}from"reev/react";import{event as Z}from"reev";var b={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"}},z=(n={})=>{let t=()=>{r(0,0,e.value),r(0,0,e._value),r(0,0,e.delta),r(0,0,e.movement)},l=()=>{e.isHoverStart=!e._active&&e.active,e.isHovering=e._active&&e.active,e.isHoverEnd=e._active&&!e.active},c=o=>{e.event=o,e.active=!0,g(o,e.device,e.value),e.onHover(e)},m=o=>{e.event=o,e._active=e.active,S(e.value,e._value),g(o,e.device,e.value),e._active&&(P(e.value,e._value,e.delta),u(e.offset,e.delta,e.offset),u(e.movement,e.delta,e.movement)),e.onHover(e)},s=o=>{e.event=o,e._active=!0,e.active=!1,t(),e.onHover(e)},a=o=>{e.target=o;let{start:p,move:x,end:i,up:h}=b[e.device];o.addEventListener(p,e.onHoverStart),o.addEventListener(x,e.onHovering),o.addEventListener(i,e.onHoverEnd),o.addEventListener(h,e.onHoverEnd)},f=()=>{let o=e.target;if(!o)return;let{start:p,move:x,end:i,up:h}=b[e.device];o.removeEventListener(p,e.onHoverStart),o.removeEventListener(x,e.onHovering),o.removeEventListener(i,e.onHoverEnd),o.removeEventListener(h,e.onHoverEnd)},E=o=>{e(n),o?e.onMount(o):e.onClean()},e=Z({_active:!1,active:!1,device:V(),_value:r(0,0),value:r(0,0),delta:r(0,0),offset:r(0,0),movement:r(0,0),target:null,event:null,memo:{},isHoverStart:!1,isHovering:!1,isHoverEnd:!1,onHover:l,onHoverStart:c,onHovering:m,onHoverEnd:s,onMount:a,onClean:f,ref:E});return e};var te=n=>{d(n)&&(n={onHover:n});let t=ee(n);return $(()=>z(t))};var Oe=n=>{let{children:t,...l}=n;return t(te(l))};import{useMutable as oe,useOnce as re}from"reev/react";import{event as ne}from"reev";var M=(n={})=>{let s=ne({onKeydown:a=>{s.event=a,s.key=a.key,s.code=a.code,s.onKey?.(s)},onMount:a=>{a||(a=a||window),s.target=a,a.setAttribute("tabindex","1"),a.addEventListener("keydown",s.onKeydown)},onClean:()=>{let a=s.target;a&&a.removeEventListener("keydown",s.onKeydown)},ref:a=>{s(n),a?s.onMount(a):s.onClean()}});return s};var le=n=>{d(n)&&(n={onKey:n});let t=oe(n);return re(()=>M(t))},Ye=n=>{let{children:t,...l}=n;return t(le(l))};import{useOnce as ae,useMutable as ie}from"reev/react";var k=(n=!1)=>{if(!v.touch&&v.gesture)return"gesture";if(v.touch&&n)return"touch";if(v.touchscreen){if(v.pointer)return"pointer";if(v.touch)return"touch"}return"wheel"};var K=40,A=800,L=(n,t)=>{if(!(n instanceof WheelEvent))return r(0,0,t);let{deltaX:l,deltaY:c,deltaMode:m}=n;return m===1?(l*=K,c*=K):m===2&&(l*=A,c*=A),r(l,c,t)};import{event as se}from"reev";var y=n=>{let t=()=>{r(0,0,e.value),r(0,0,e._value),r(0,0,e.delta),r(0,0,e.movement)},l=()=>{e.isWheelStart=e.active&&!e._active,e.isWheeling=e.active&&e._active,e.isWheelEnd=!e.active&&e._active},c=o=>{e.event=o,e.active=!0,L(o,e.delta),e.onWheel(e)},m=o=>{let p=setTimeout(()=>e.onWheelEnd(o),e.timeout);if(e.clearTimeout(),e.clearTimeout=()=>clearTimeout(p),e.event=o,!e.active){e.onWheelStart(o);return}e._active=e.active,S(e.value,e._value),L(o,e.delta),u(e.offset,e.delta,e.offset),u(e.movement,e.delta,e.movement),e.onWheel(e)},s=o=>{e.event=o,e.active=!1,t(),e.onWheel(e)},a=o=>{e.target=o,o.addEventListener("wheel",e.onWheeling)},f=()=>{let o=e.target;o&&o.removeEventListener("wheel",e.onWheeling)},E=o=>{e(n),o?e.onMount(o):e.onClean(null)},e=se({active:!1,_active:!1,_value:r(0,0),value:r(0,0),delta:r(0,0),offset:r(0,0),movement:r(0,0),target:null,event:null,timeout:100,clearTimeout:()=>{},memo:{},isWheelStart:!1,isWheeling:!1,isWheelEnd:!1,onWheel:l,onWheelStart:c,onWheeling:m,onWheelEnd:s,onMount:a,onClean:f,ref:E});return e};var O={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"}},F=(n={})=>{let t=y(),l=()=>{r(0,0,t.value),r(0,0,t._value),r(0,0,t.delta),r(0,0,t.movement)},c=()=>{t.isPinchStart=!t._active&&t.active,t.isPinching=t._active&&t.active,t.isPinchEnd=t._active&&!t.active},m=i=>{t.event=i,t.active=!0,g(i,t.device,t.value),t.onPinch(t)},s=i=>{t.event=i,t._active=t.active,S(t.value,t._value),g(i,t.device,t.value),t._active&&(P(t.value,t._value,t.delta),u(t.offset,t.delta,t.offset),u(t.movement,t.delta,t.movement)),t.onPinch(t)},a=i=>{t.event=i,t._active=!0,t.active=!1,l(),t.onPinch(t)},f=()=>{t.onPinch(t)},E=()=>{t.onPinch(t)},e=()=>{t.onPinch(t)},o=i=>{if(t.target=i,t.device==="wheel")return;let{start:h,move:w,end:D,up:H}=O[t.device];i.addEventListener(h,t.onPinchStart),i.addEventListener(w,t.onPinching),i.addEventListener(D,t.onPinchEnd),i.addEventListener(H,t.onPinchEnd)},p=()=>{let i=t.target;if(!i||t.device==="wheel")return;let{start:h,move:w,end:D,up:H}=O[t.device];i.removeEventListener(h,t.onPinchStart),i.removeEventListener(w,t.onPinching),i.removeEventListener(D,t.onPinchEnd),i.removeEventListener(H,t.onPinchEnd)},x=()=>{t(n)};return t({_active:!1,active:!1,device:k(),_rotate:0,rotate:0,_size:1,size:1,_scale:r(1,1),scale:r(1,1),_value:r(),value:r(),delta:r(),offset:r(),movement:r(),target:null,event:null,memo:{},isPinchStart:!1,isPinching:!1,isPinchEnd:!1,onWheelStart:f,onWheeling:E,onWheelEnd:e,onPinch:c,onPinchStart:m,onPinching:s,onPinchEnd:a,onMount:o,onClean:p,ref:x}),t};var ce=n=>{d(n)&&(n={onPinch:n});let t=ie(n);return ae(()=>F(t))};var mt=n=>{let{children:t,...l}=n;return t(ce(l))};import{event as ve}from"reev";var me=100,X=n=>{let t=a=>()=>{},s=ve({observer:null,listener:()=>{},onResize:()=>{},onMount:a=>{let f=E=>{if(E.target!==a)return;let e=setTimeout(t(E),me);s.listener(),s.listener=()=>clearTimeout(e)};s.observer=new ResizeObserver(E=>{E.forEach(f)}),s.observer.observe(a)},onClean:()=>{},ref:a=>{s(n),a?s.onMount(a):s.onClean(null)}});return s};import{useMutable as ue,useOnce as Ee}from"reev/react";var de=n=>{d(n)&&(n={onResize:n});let t=ue(n);return Ee(()=>X(t))};var xt=n=>{let{children:t,...l}=n;return t(de(l))};import{useOnce as fe,useMutable as he}from"reev/react";var W=(n,t=r())=>{let{scrollX:l,scrollLeft:c}=n.currentTarget,{scrollY:m,scrollTop:s}=n.currentTarget;return r(l??c??0,m??s??0,t)};import{event as pe}from"reev";var I=n=>{let t=()=>{r(0,0,e.value),r(0,0,e._value),r(0,0,e.delta),r(0,0,e.movement)},l=()=>{e.isScrollStart=e.active&&!e._active,e.isScrolling=e.active&&e._active,e.isScrollEnd=!e.active&&e._active},c=o=>{e.event=o,e.active=!0,W(o,e.value),e.onScroll(e)},m=o=>{let p=setTimeout(()=>e.onScrollEnd(o),e.timeout);if(e.clearTimeout(),e.clearTimeout=()=>clearTimeout(p),!e.active){e.onScrollStart(o);return}e.event=o,e._active=e.active,S(e.value,e._value),W(o,e.value),e._active&&(P(e.value,e._value,e.delta),u(e.offset,e.delta,e.offset),u(e.movement,e.delta,e.movement)),e.onScroll(e)},s=o=>{e.event=o,e.active=!1,t(),e.onScroll(e)},a=o=>{e.target=o,window.addEventListener("scroll",e.onScrolling)},f=()=>{window.removeEventListener("scroll",e.onScrolling)},E=o=>{e(n),o?e.onMount(o):e.onClean(null)},e=pe({active:!1,_active:!1,_value:r(0,0),value:r(0,0),delta:r(0,0),offset:r(0,0),movement:r(0,0),target:null,event:null,memo:{},timeout:100,clearTimeout:()=>{},isScrollStart:!1,isScrolling:!1,isScrollEnd:!1,onScroll:l,onScrollStart:c,onScrolling:m,onScrollEnd:s,onMount:a,onClean:f,ref:E});return e};var Se=n=>{d(n)&&(n={onScroll:n});let t=he(n);return fe(()=>I(t))};var Tt=n=>{let{children:t,...l}=n;return t(Se(l))};import{useOnce as xe,useMutable as ge}from"reev/react";var Pe=n=>{d(n)&&(n={onWheel:n});let t=ge(n);return xe(()=>y(t))};var Kt=n=>{let{children:t,...l}=n;return t(Pe(l))};export{Ce as Drag,Oe as Hover,Ye as Key,mt as Pinch,xt as Resize,Tt as Scroll,Kt as Wheel,Q as useDrag,te as useHover,le as useKey,ce as usePinch,de as useResize,Se as useScroll,Pe as useWheel};
|
|
2
|
+
//# sourceMappingURL=react.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../drag/react.ts","../drag/index.ts","../utils.ts","../hover/react.ts","../hover/index.ts","../key/react.ts","../key/index.ts","../pinch/react.ts","../pinch/utils.ts","../wheel/utils.ts","../wheel/index.ts","../pinch/index.ts","../resize/index.ts","../resize/react.ts","../scroll/react.ts","../scroll/utils.ts","../scroll/index.ts","../wheel/react.ts"],"sourcesContent":["import { useOnce, useMutable } from 'reev/react'\nimport { DragArg, DragState } from './types'\nimport { dragEvent } from './index'\nimport { isF } from '../utils'\n\nexport const useDrag = <El extends Element = Element>(arg: DragArg<El>) => {\n if (isF(arg)) arg = { onDrag: arg }\n const memo = useMutable(arg)\n return useOnce(() => dragEvent<El>(memo as any))\n}\n\nexport default useDrag\n\nexport interface DragProps<El extends Element = Element>\n extends Partial<DragState<El>> {\n children(self: DragState<El>): JSX.Element\n}\n\nexport const Drag = <El extends Element = Element>(props: DragProps<El>) => {\n const { children, ...other } = props\n return children(useDrag(other))\n}\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 { useOnce, useMutable } from 'reev/react'\nimport { hoverEvent } from '.'\nimport { HoverArg, HoverState } from './types'\nimport { isF } from '../utils'\n\nexport const useHover = <El extends Element = Element>(arg?: HoverArg) => {\n if (isF(arg)) arg = { onHover: arg }\n const memo = useMutable(arg)\n return useOnce(() => hoverEvent<El>(memo as any))\n}\n\nexport default useHover\n\nexport interface HoverProps<El extends Element = Element>\n extends Partial<HoverState<El>> {\n children: (state: HoverState<El>) => JSX.Element\n}\n\nexport const Hover = (props: HoverProps) => {\n const { children, ...other } = props\n return children(useHover(other))\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 { useMutable, useOnce } from 'reev/react'\nimport { keyEvent } from '.'\nimport { KeyArg, KeyState } from './types'\nimport { isF } from '../utils'\n\nexport const useKey = <El extends Element = Element>(arg: KeyArg<El>) => {\n if (isF(arg)) arg = { onKey: arg }\n const memo = useMutable(arg)\n return useOnce(() => keyEvent<El>(memo as any))\n}\n\nexport interface KeyProps<El extends Element = Element>\n extends Partial<KeyState<El>> {\n children: (state: KeyState<El>) => JSX.Element\n}\n\nexport const Key = <El extends Element = Element>(props: KeyProps<El>) => {\n const { children, ...other } = props\n return children(useKey(other))\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 { useOnce, useMutable } from 'reev/react'\nimport { pinchEvent } from '.'\nimport { PinchArg, PinchState } from './types'\nimport { isF } from '../utils'\n\nexport const usePinch = <El extends Element = Element>(arg?: PinchArg) => {\n if (isF(arg)) arg = { onPinch: arg }\n const memo = useMutable(arg)\n return useOnce(() => pinchEvent<El>(memo as any))\n}\n\nexport default usePinch\n\nexport interface PinchProps<El extends Element = Element>\n extends Partial<PinchState<El>> {\n children: (state: PinchState<El>) => JSX.Element\n}\n\nexport const Pinch = (props: PinchProps) => {\n const { children, ...other } = props\n return children(usePinch(other))\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 { 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 { resizeEvent } from '.'\nimport { useMutable, useOnce } from 'reev/react'\nimport { ResizeArg, ResizeState } from './types'\nimport { isF } from '../utils'\n\nexport const useResize = (arg: ResizeArg) => {\n if (isF(arg)) arg = { onResize: arg }\n const memo = useMutable(arg)\n return useOnce(() => resizeEvent(memo as any))\n}\n\nexport default useResize\n\nexport interface ResizeProps<El extends Element = Element>\n extends Partial<ResizeState<El>> {\n children: (state: ResizeState<El>) => JSX.Element\n}\n\nexport const Resize = <El extends Element = Element>(\n props: ResizeProps<El>\n) => {\n const { children, ...other } = props\n return children(useResize(other))\n}\n","import { useOnce, useMutable } from 'reev/react'\nimport { ScrollConfig, ScrollState } from './types'\nimport { scrollEvent } from './index'\nimport { isF } from '../utils'\n\nexport const useScroll = <El extends Element = Element>(\n config: ScrollConfig\n) => {\n if (isF(config)) config = { onScroll: config }\n const memo = useMutable(config)\n return useOnce(() => scrollEvent<El>(memo as any))\n}\n\nexport default useScroll\n\nexport interface ScrollProps<El extends Element = Element>\n extends Partial<ScrollState<El>> {\n children: (state: ScrollState<El>) => JSX.Element\n}\n\nexport const Scroll = <El extends Element = Element>(\n props: ScrollProps<El>\n) => {\n const { children, ...other } = props\n return children(useScroll(other))\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","import { useOnce, useMutable } from 'reev/react'\nimport { WheelConfig, WheelState } from './types'\nimport { wheelEvent } from './index'\nimport { isF } from '../utils'\n\nexport const useWheel = <El extends Element = Element>(config: WheelConfig) => {\n if (isF(config)) config = { onWheel: config }\n const memo = useMutable(config)\n return useOnce(() => wheelEvent<El>(memo as any))\n}\n\nexport default useWheel\n\nexport interface WheelProps<El extends Element = Element>\n extends Partial<WheelState<El>> {\n children: (state: WheelState<El>) => JSX.Element\n}\n\nexport const Wheel = <El extends Element = Element>(props: WheelProps<El>) => {\n const { children, ...other } = props\n return children(useWheel(other))\n}\n"],"mappings":"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","names":["useOnce","useMutable","event","isF","f","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","event","getDevice","useDrag","arg","isF","memo","useMutable","useOnce","dragEvent","Drag","props","children","other","useDrag","useOnce","useMutable","event","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","event","getDevice","useHover","arg","isF","memo","useMutable","useOnce","hoverEvent","Hover","props","children","other","useHover","useMutable","useOnce","event","keyEvent","state","self","e","el","useKey","arg","isF","memo","useMutable","useOnce","keyEvent","Key","props","children","other","useOnce","useMutable","pinchDevice","touch","SUPPORT","LINE_HEIGHT","PAGE_HEIGHT","wheelValues","event","out","vec2","deltaX","deltaY","deltaMode","event","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","usePinch","arg","isF","memo","useMutable","useOnce","pinchEvent","Pinch","props","children","other","usePinch","event","DELAY","resizeEvent","state","on","entry","self","target","register","id","entries","el","useMutable","useOnce","useResize","arg","isF","memo","useMutable","useOnce","resizeEvent","Resize","props","children","other","useResize","useOnce","useMutable","scrollValues","e","out","vec2","x","xx","y","yy","event","scrollEvent","config","initValues","vec2","self","onScroll","onScrollStart","e","scrollValues","onScrolling","id","cpV","subV","addV","onScrollEnd","onMount","target","onClean","ref","el","useScroll","config","isF","memo","useMutable","useOnce","scrollEvent","Scroll","props","children","other","useScroll","useOnce","useMutable","useWheel","config","isF","memo","useMutable","useOnce","wheelEvent","Wheel","props","children","other","useWheel"]}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
declare type Vec2 = [x: number, y: number];
|
|
2
|
+
|
|
3
|
+
declare type DragDevice = 'mouse' | 'touch' | 'pointer';
|
|
4
|
+
interface DragState<El extends Element = Element> {
|
|
5
|
+
_active: boolean;
|
|
6
|
+
active: boolean;
|
|
7
|
+
device: DragDevice;
|
|
8
|
+
_value: Vec2;
|
|
9
|
+
value: Vec2;
|
|
10
|
+
delta: Vec2;
|
|
11
|
+
offset: Vec2;
|
|
12
|
+
movement: Vec2;
|
|
13
|
+
target: El;
|
|
14
|
+
event: Event;
|
|
15
|
+
memo: any;
|
|
16
|
+
isDragStart: boolean;
|
|
17
|
+
isDragging: boolean;
|
|
18
|
+
isDragEnd: boolean;
|
|
19
|
+
onDrag(self: DragState<El>): void;
|
|
20
|
+
onDragStart(e: Event): void;
|
|
21
|
+
onDragging(e: Event): void;
|
|
22
|
+
onDragEnd(e: Event): void;
|
|
23
|
+
onMount(target: Element): void;
|
|
24
|
+
onClean(): void;
|
|
25
|
+
ref(traget: Element): void;
|
|
26
|
+
}
|
|
27
|
+
declare type DragArg<El extends Element> = Partial<DragState<El>> | DragState<El>['onDrag'];
|
|
28
|
+
|
|
29
|
+
interface HoverState<El extends Element = Element> {
|
|
30
|
+
_active: boolean;
|
|
31
|
+
active: boolean;
|
|
32
|
+
device: 'mouse' | 'pointer' | 'touch';
|
|
33
|
+
_value: Vec2;
|
|
34
|
+
value: Vec2;
|
|
35
|
+
delta: Vec2;
|
|
36
|
+
offset: Vec2;
|
|
37
|
+
movement: Vec2;
|
|
38
|
+
event: Event;
|
|
39
|
+
target: El;
|
|
40
|
+
isHoverStart: boolean;
|
|
41
|
+
isHovering: boolean;
|
|
42
|
+
isHoverEnd: boolean;
|
|
43
|
+
onHover: (self: HoverState) => void;
|
|
44
|
+
onHoverStart(e: Event): void;
|
|
45
|
+
onHovering(e: Event): void;
|
|
46
|
+
onHoverEnd(e: Event): void;
|
|
47
|
+
onMount(target: El): void;
|
|
48
|
+
onClean(target?: El): void;
|
|
49
|
+
ref(target: El | null): void;
|
|
50
|
+
}
|
|
51
|
+
declare type HoverArg<El extends Element = Element> = Partial<HoverState<El>> | HoverState<El>['onHover'];
|
|
52
|
+
|
|
53
|
+
interface KeyState<El extends Element = Element> {
|
|
54
|
+
target: El | Window;
|
|
55
|
+
key: string;
|
|
56
|
+
code: string;
|
|
57
|
+
event: KeyboardEvent;
|
|
58
|
+
onKey(e: KeyState): void;
|
|
59
|
+
onKeydown(e: KeyboardEvent): void;
|
|
60
|
+
onMount(el: El): void;
|
|
61
|
+
onClean(): void;
|
|
62
|
+
ref(el: Element | null): void;
|
|
63
|
+
}
|
|
64
|
+
declare type KeyArg<El extends Element = Element> = Partial<KeyState<El>> | KeyState<El>['onKey'];
|
|
65
|
+
|
|
66
|
+
interface ResizeState<El extends Element = Element> {
|
|
67
|
+
observer: ResizeObserver | null;
|
|
68
|
+
listener(): void;
|
|
69
|
+
onMount(el: El): void;
|
|
70
|
+
onClean(el: null): void;
|
|
71
|
+
onResize(self: ResizeState<El>): void;
|
|
72
|
+
ref(target: El): void;
|
|
73
|
+
}
|
|
74
|
+
declare type ResizeArg<El extends Element = Element> = Partial<ResizeState<El>> | ResizeState<El>['onResize'];
|
|
75
|
+
|
|
76
|
+
interface WheelState<El extends Element = Element> {
|
|
77
|
+
_active: boolean;
|
|
78
|
+
active: boolean;
|
|
79
|
+
_value: Vec2;
|
|
80
|
+
value: Vec2;
|
|
81
|
+
delta: Vec2;
|
|
82
|
+
offset: Vec2;
|
|
83
|
+
movement: Vec2;
|
|
84
|
+
target: El;
|
|
85
|
+
event: Event;
|
|
86
|
+
timeout: number;
|
|
87
|
+
clearTimeout(): void;
|
|
88
|
+
memo: any;
|
|
89
|
+
isWheelStart: boolean;
|
|
90
|
+
isWheeling: boolean;
|
|
91
|
+
isWheelEnd: boolean;
|
|
92
|
+
onWheel(self: WheelState<El>): void;
|
|
93
|
+
onWheelStart(e: Event): void;
|
|
94
|
+
onWheeling(e: Event): void;
|
|
95
|
+
onWheelEnd(e: Event): void;
|
|
96
|
+
onMount(target: Element): void;
|
|
97
|
+
onClean(target: null): void;
|
|
98
|
+
ref(traget: Element | null): void;
|
|
99
|
+
tick?: () => void;
|
|
100
|
+
}
|
|
101
|
+
declare type WheelConfig<El extends Element = Element> = Partial<WheelState<El>> | WheelState<El>['onWheel'];
|
|
102
|
+
|
|
103
|
+
declare type PinchDevice = 'mouse' | 'pointer' | 'touch' | 'wheel' | 'gesture';
|
|
104
|
+
interface PinchState<El extends Element = Element> extends WheelState<El> {
|
|
105
|
+
device: PinchDevice;
|
|
106
|
+
_rotate: number;
|
|
107
|
+
rotate: number;
|
|
108
|
+
_size: number;
|
|
109
|
+
size: number;
|
|
110
|
+
_scale: Vec2;
|
|
111
|
+
scale: Vec2;
|
|
112
|
+
isPinchStart: boolean;
|
|
113
|
+
isPinching: boolean;
|
|
114
|
+
isPinchEnd: boolean;
|
|
115
|
+
onPinch: (self: PinchState) => void;
|
|
116
|
+
onPinchStart(e: Event): void;
|
|
117
|
+
onPinching(e: Event): void;
|
|
118
|
+
onPinchEnd(e: Event): void;
|
|
119
|
+
}
|
|
120
|
+
declare type PinchArg<El extends Element = Element> = Partial<PinchState<El>> | PinchState<El>['onPinch'];
|
|
121
|
+
|
|
122
|
+
interface ScrollState<El extends Element = Element> {
|
|
123
|
+
_active: boolean;
|
|
124
|
+
active: boolean;
|
|
125
|
+
_value: Vec2;
|
|
126
|
+
value: Vec2;
|
|
127
|
+
delta: Vec2;
|
|
128
|
+
offset: Vec2;
|
|
129
|
+
movement: Vec2;
|
|
130
|
+
target: El;
|
|
131
|
+
event: Event;
|
|
132
|
+
memo: any;
|
|
133
|
+
isScrollStart: boolean;
|
|
134
|
+
isScrolling: boolean;
|
|
135
|
+
isScrollEnd: boolean;
|
|
136
|
+
timeout: number;
|
|
137
|
+
clearTimeout(): void;
|
|
138
|
+
onScroll(self: ScrollState<El>): void;
|
|
139
|
+
onScrollStart(e: Event): void;
|
|
140
|
+
onScrolling(e: Event): void;
|
|
141
|
+
onScrollEnd(e: Event): void;
|
|
142
|
+
onMount(target: Element): void;
|
|
143
|
+
onClean(target: null): void;
|
|
144
|
+
ref(traget: Element): void;
|
|
145
|
+
tick?: () => void;
|
|
146
|
+
}
|
|
147
|
+
declare type ScrollConfig<El extends Element = Element> = Partial<ScrollState<El>> | ScrollState<El>['onScroll'];
|
|
148
|
+
|
|
149
|
+
export { DragState as D, HoverState as H, KeyState as K, PinchState as P, ResizeState as R, ScrollState as S, WheelState as W, DragArg as a, HoverArg as b, KeyArg as c, PinchArg as d, ResizeArg as e, ScrollConfig as f, WheelConfig as g };
|
package/package.json
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "rege",
|
|
3
|
+
"author": "tseijp",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"version": "0.1.0",
|
|
6
|
+
"private": false,
|
|
7
|
+
"sideEffect": false,
|
|
8
|
+
"publishConfig": {
|
|
9
|
+
"access": "public"
|
|
10
|
+
},
|
|
11
|
+
"bugs": {
|
|
12
|
+
"url": "https://github.com/tseijp/reev/issues"
|
|
13
|
+
},
|
|
14
|
+
"repository": "tseijp/reev",
|
|
15
|
+
"homepage": "https://reev.tsei.jp",
|
|
16
|
+
"keywords": [
|
|
17
|
+
"react",
|
|
18
|
+
"reactjs",
|
|
19
|
+
"reactive",
|
|
20
|
+
"event",
|
|
21
|
+
"global",
|
|
22
|
+
"state",
|
|
23
|
+
"store",
|
|
24
|
+
"hooks",
|
|
25
|
+
"solid",
|
|
26
|
+
"solidjs",
|
|
27
|
+
"tiny",
|
|
28
|
+
"typescript"
|
|
29
|
+
],
|
|
30
|
+
"files": [
|
|
31
|
+
"dist/**/*.{js,ts,mjs,mts,map}",
|
|
32
|
+
"packages.json",
|
|
33
|
+
"README.md"
|
|
34
|
+
],
|
|
35
|
+
"main": "./dist/index.js",
|
|
36
|
+
"types": "./dist/index.d.mts",
|
|
37
|
+
"module": "./dist/index.mjs",
|
|
38
|
+
"exports": {
|
|
39
|
+
"./packages.json": "./packages.json",
|
|
40
|
+
".": {
|
|
41
|
+
"types": "./dist/index.d.mts",
|
|
42
|
+
"import": {
|
|
43
|
+
"types": "./dist/index.d.mts",
|
|
44
|
+
"default": "./dist/index.mjs"
|
|
45
|
+
},
|
|
46
|
+
"module": {
|
|
47
|
+
"types": "./dist/index.d.mts",
|
|
48
|
+
"default": "./dist/index.mjs"
|
|
49
|
+
},
|
|
50
|
+
"require": "./dist/index.js",
|
|
51
|
+
"default": "./dist/index.js"
|
|
52
|
+
},
|
|
53
|
+
"./*": {
|
|
54
|
+
"types": "./dist/index.d.mts",
|
|
55
|
+
"import": {
|
|
56
|
+
"types": "./dist/index.d.mts",
|
|
57
|
+
"default": "./dist/index.mjs"
|
|
58
|
+
},
|
|
59
|
+
"module": {
|
|
60
|
+
"types": "./dist/index.d.mts",
|
|
61
|
+
"default": "./dist/index.mjs"
|
|
62
|
+
},
|
|
63
|
+
"require": "./dist/index.js",
|
|
64
|
+
"default": "./dist/index.js"
|
|
65
|
+
},
|
|
66
|
+
"./react": {
|
|
67
|
+
"types": "./dist/react.d.mts",
|
|
68
|
+
"import": {
|
|
69
|
+
"types": "./dist/react.d.mts",
|
|
70
|
+
"default": "./dist/react.mjs"
|
|
71
|
+
},
|
|
72
|
+
"module": {
|
|
73
|
+
"types": "./dist/react.d.mts",
|
|
74
|
+
"default": "./dist/react.mjs"
|
|
75
|
+
},
|
|
76
|
+
"require": "./dist/react.js",
|
|
77
|
+
"default": "./dist/react.js"
|
|
78
|
+
},
|
|
79
|
+
"./react/*": {
|
|
80
|
+
"types": "./dist/react.d.mts",
|
|
81
|
+
"import": {
|
|
82
|
+
"types": "./dist/react.d.mts",
|
|
83
|
+
"default": "./dist/react.mjs"
|
|
84
|
+
},
|
|
85
|
+
"module": {
|
|
86
|
+
"types": "./dist/react.d.mts",
|
|
87
|
+
"default": "./dist/react.mjs"
|
|
88
|
+
},
|
|
89
|
+
"require": "./dist/react.js",
|
|
90
|
+
"default": "./dist/react.js"
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
"devDependencies": {
|
|
94
|
+
"reev": "*"
|
|
95
|
+
}
|
|
96
|
+
}
|