@msobiecki/react-marauders-path 1.28.0 → 1.30.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.
Files changed (51) hide show
  1. package/README.md +99 -27
  2. package/dist/index.d.ts +98 -8
  3. package/dist/index.js +39 -29
  4. package/dist/index.js.map +1 -1
  5. package/dist/use-double-tap/event-guards.js +7 -0
  6. package/dist/use-double-tap/event-guards.js.map +1 -0
  7. package/dist/use-double-tap/use-double-tap.js +32 -26
  8. package/dist/use-double-tap/use-double-tap.js.map +1 -1
  9. package/dist/use-drag/event-guards.js +7 -0
  10. package/dist/use-drag/event-guards.js.map +1 -0
  11. package/dist/use-drag/use-drag.js +72 -53
  12. package/dist/use-drag/use-drag.js.map +1 -1
  13. package/dist/use-drag/use-drag.types.js.map +1 -1
  14. package/dist/use-key/event-guards.js +1 -1
  15. package/dist/use-key/event-guards.js.map +1 -1
  16. package/dist/use-key/use-key.js +48 -51
  17. package/dist/use-key/use-key.js.map +1 -1
  18. package/dist/use-key/use-key.types.js.map +1 -1
  19. package/dist/use-mouse/use-mouse.js +100 -0
  20. package/dist/use-mouse/use-mouse.js.map +1 -0
  21. package/dist/use-mouse/use-mouse.types.js +23 -0
  22. package/dist/use-mouse/use-mouse.types.js.map +1 -0
  23. package/dist/use-pinch/event-guards.js +7 -0
  24. package/dist/use-pinch/event-guards.js.map +1 -0
  25. package/dist/use-pinch/use-pinch.js +93 -70
  26. package/dist/use-pinch/use-pinch.js.map +1 -1
  27. package/dist/use-pinch/use-pinch.types.js.map +1 -1
  28. package/dist/use-pointer/event-guards.js +7 -0
  29. package/dist/use-pointer/event-guards.js.map +1 -0
  30. package/dist/use-pointer/invoke-pointer-action.js +7 -0
  31. package/dist/use-pointer/invoke-pointer-action.js.map +1 -0
  32. package/dist/use-pointer/use-pointer.js +74 -0
  33. package/dist/use-pointer/use-pointer.js.map +1 -0
  34. package/dist/use-pointer/use-pointer.types.js +19 -0
  35. package/dist/use-pointer/use-pointer.types.js.map +1 -0
  36. package/dist/use-press/event-guards.js +7 -0
  37. package/dist/use-press/event-guards.js.map +1 -0
  38. package/dist/use-press/use-press.js +83 -57
  39. package/dist/use-press/use-press.js.map +1 -1
  40. package/dist/use-swipe/event-guards.js +7 -0
  41. package/dist/use-swipe/event-guards.js.map +1 -0
  42. package/dist/use-swipe/use-swipe.js +81 -62
  43. package/dist/use-swipe/use-swipe.js.map +1 -1
  44. package/dist/use-swipe/use-swipe.types.js.map +1 -1
  45. package/dist/use-tap/event-guards.js +7 -0
  46. package/dist/use-tap/event-guards.js.map +1 -0
  47. package/dist/use-tap/use-tap.js +66 -48
  48. package/dist/use-tap/use-tap.js.map +1 -1
  49. package/dist/use-wheel/use-wheel.js +1 -1
  50. package/dist/use-wheel/use-wheel.js.map +1 -1
  51. package/package.json +1 -1
@@ -1,94 +1,112 @@
1
- import { useRef as u, useCallback as l, useEffect as C } from "react";
2
- import { invokeTapAction as D } from "./invoke-tap-action.js";
3
- const L = {
4
- eventPointerTypes: ["touch", "mouse", "pen"],
1
+ import { useRef as l, useCallback as p, useEffect as b } from "react";
2
+ import { TapEventPointerTypes as f } from "./use-tap.types.js";
3
+ import { invokeTapAction as g } from "./invoke-tap-action.js";
4
+ import { shouldHandleEvent as d } from "./event-guards.js";
5
+ const y = {
6
+ eventPointerTypes: [
7
+ f.Touch,
8
+ f.Mouse,
9
+ f.Pen
10
+ ],
5
11
  eventCapture: !1,
6
12
  eventOnce: !1,
7
13
  eventStopImmediatePropagation: !1,
8
14
  threshold: 8,
9
15
  maxDuration: 250,
10
16
  container: { current: null }
11
- }, x = (p, X = {}) => {
17
+ }, S = (m, C = {}) => {
12
18
  const {
13
- eventPointerTypes: f,
14
- eventCapture: r,
15
- eventOnce: d,
16
- eventStopImmediatePropagation: m,
19
+ eventPointerTypes: r,
20
+ eventCapture: o,
21
+ eventOnce: v,
22
+ eventStopImmediatePropagation: h,
17
23
  threshold: P,
18
- maxDuration: h,
19
- container: v
20
- } = { ...L, ...X }, o = u(null), a = u(null), c = u({
24
+ maxDuration: T,
25
+ container: E
26
+ } = { ...y, ...C }, a = l(null), c = l(null), i = l({
21
27
  startX: 0,
22
28
  startY: 0,
23
29
  startTime: 0,
24
30
  active: !1
25
- }), T = l(
31
+ }), X = p(
26
32
  (t) => {
27
- t.isPrimary && f.includes(t.pointerType) && (c.current = {
33
+ d(t, {
34
+ eventPointerTypes: r
35
+ }) && (i.current = {
28
36
  startX: t.clientX,
29
37
  startY: t.clientY,
30
38
  startTime: Date.now(),
31
39
  active: !0
32
40
  });
33
41
  },
34
- [f]
35
- ), y = l(
42
+ [r]
43
+ ), Y = p(
36
44
  (t) => {
37
- const n = c.current;
38
- if (!n.active || !t.isPrimary)
45
+ if (!d(t, {
46
+ eventPointerTypes: r
47
+ }))
48
+ return;
49
+ const n = i.current;
50
+ if (!n.active)
39
51
  return;
40
52
  n.active = !1;
41
- const i = t.clientX - n.startX, s = t.clientY - n.startY, e = Math.hypot(i, s), Y = Date.now() - n.startTime;
42
- if (e > P || Y > h)
53
+ const s = t.clientX - n.startX, u = t.clientY - n.startY, e = Math.hypot(s, u), D = Date.now() - n.startTime;
54
+ if (e > P || D > T)
43
55
  return;
44
- const w = {
56
+ const L = {
45
57
  x: t.clientX,
46
58
  y: t.clientY
47
59
  };
48
- D(t, w, p, {
49
- stopImmediate: m,
50
- once: d,
60
+ g(t, L, m, {
61
+ stopImmediate: h,
62
+ once: v,
51
63
  onOnce: () => {
52
- a.current?.abort();
64
+ c.current?.abort();
53
65
  }
54
66
  });
55
67
  },
56
68
  [
57
- p,
58
- P,
69
+ r,
70
+ v,
59
71
  h,
60
- d,
72
+ P,
73
+ T,
61
74
  m
62
75
  ]
63
- ), E = l(() => {
64
- c.current.active = !1;
65
- }, []);
66
- C(() => {
67
- o.current = v?.current ?? globalThis, a.current = new AbortController();
68
- const { signal: t } = a.current, n = (e) => e instanceof PointerEvent && T(e), i = (e) => e instanceof PointerEvent && y(e), s = (e) => e instanceof PointerEvent && E();
69
- return o.current.addEventListener(
76
+ ), w = p(
77
+ (t) => {
78
+ d(t, {
79
+ eventPointerTypes: r
80
+ }) && (i.current.active = !1);
81
+ },
82
+ [r]
83
+ );
84
+ b(() => {
85
+ a.current = E?.current ?? globalThis, c.current = new AbortController();
86
+ const { signal: t } = c.current, n = (e) => e instanceof PointerEvent && X(e), s = (e) => e instanceof PointerEvent && Y(e), u = (e) => e instanceof PointerEvent && w(e);
87
+ return a.current.addEventListener(
70
88
  "pointerdown",
71
89
  n,
72
- { capture: r, signal: t }
73
- ), o.current.addEventListener("pointerup", i, {
74
- capture: r,
90
+ { capture: o, signal: t }
91
+ ), a.current.addEventListener("pointerup", s, {
92
+ capture: o,
75
93
  signal: t
76
- }), o.current.addEventListener(
94
+ }), a.current.addEventListener(
77
95
  "pointercancel",
78
- s,
79
- { capture: r, signal: t }
96
+ u,
97
+ { capture: o, signal: t }
80
98
  ), () => {
81
- a.current?.abort(), c.current.active = !1;
99
+ c.current?.abort(), i.current.active = !1;
82
100
  };
83
101
  }, [
84
- v,
85
- r,
86
- T,
87
- y,
88
- E
102
+ E,
103
+ o,
104
+ X,
105
+ Y,
106
+ w
89
107
  ]);
90
108
  };
91
109
  export {
92
- x as default
110
+ S as default
93
111
  };
94
112
  //# sourceMappingURL=use-tap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-tap.js","sources":["../../src/use-tap/use-tap.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from \"react\";\nimport {\n TapOptions,\n UseTapCallback,\n UseTapOptions,\n TapEventPointerType,\n TapState,\n TapData,\n} from \"./use-tap.types\";\nimport { invokeTapAction } from \"./invoke-tap-action\";\n\nconst defaultOptions: TapOptions = {\n eventPointerTypes: [\"touch\", \"mouse\", \"pen\"],\n eventCapture: false,\n eventOnce: false,\n eventStopImmediatePropagation: false,\n threshold: 8,\n maxDuration: 250,\n container: { current: null },\n};\n\nconst useTap = (tapCallback: UseTapCallback, options: UseTapOptions = {}) => {\n const {\n eventPointerTypes,\n eventCapture,\n eventOnce,\n eventStopImmediatePropagation,\n threshold,\n maxDuration,\n container,\n } = { ...defaultOptions, ...options };\n\n const targetReference = useRef<EventTarget | null>(null);\n const abortControllerReference = useRef<AbortController | null>(null);\n\n const tapStateReference = useRef<TapState>({\n startX: 0,\n startY: 0,\n startTime: 0,\n active: false,\n });\n\n const handlePointerDown = useCallback(\n (event: PointerEvent) => {\n if (!event.isPrimary) {\n return;\n }\n\n if (\n !eventPointerTypes.includes(event.pointerType as TapEventPointerType)\n ) {\n return;\n }\n\n tapStateReference.current = {\n startX: event.clientX,\n startY: event.clientY,\n startTime: Date.now(),\n active: true,\n };\n },\n [eventPointerTypes],\n );\n\n const handlePointerUp = useCallback(\n (event: PointerEvent) => {\n const state = tapStateReference.current;\n if (!state.active) {\n return;\n }\n if (!event.isPrimary) {\n return;\n }\n\n state.active = false;\n\n const deltaX = event.clientX - state.startX;\n const deltaY = event.clientY - state.startY;\n\n const distance = Math.hypot(deltaX, deltaY);\n const duration = Date.now() - state.startTime;\n\n if (distance > threshold) {\n return;\n }\n if (duration > maxDuration) {\n return;\n }\n\n const data: TapData = {\n x: event.clientX,\n y: event.clientY,\n };\n\n invokeTapAction(event, data, tapCallback, {\n stopImmediate: eventStopImmediatePropagation,\n once: eventOnce,\n onOnce: () => {\n abortControllerReference.current?.abort();\n },\n });\n },\n [\n tapCallback,\n threshold,\n maxDuration,\n eventOnce,\n eventStopImmediatePropagation,\n ],\n );\n\n const handlePointerCancel = useCallback(() => {\n tapStateReference.current.active = false;\n }, []);\n\n useEffect(() => {\n targetReference.current = container?.current ?? globalThis;\n abortControllerReference.current = new AbortController();\n const { signal } = abortControllerReference.current;\n\n const pointerDownListener = (event: Event) =>\n event instanceof PointerEvent && handlePointerDown(event);\n\n const pointerUpListener = (event: Event) =>\n event instanceof PointerEvent && handlePointerUp(event);\n\n const pointerCancelListener = (event: Event) =>\n event instanceof PointerEvent && handlePointerCancel();\n\n targetReference.current.addEventListener(\n \"pointerdown\",\n pointerDownListener,\n { capture: eventCapture, signal },\n );\n\n targetReference.current.addEventListener(\"pointerup\", pointerUpListener, {\n capture: eventCapture,\n signal,\n });\n\n targetReference.current.addEventListener(\n \"pointercancel\",\n pointerCancelListener,\n { capture: eventCapture, signal },\n );\n\n return () => {\n abortControllerReference.current?.abort();\n\n tapStateReference.current.active = false;\n };\n }, [\n container,\n eventCapture,\n handlePointerDown,\n handlePointerUp,\n handlePointerCancel,\n ]);\n};\n\nexport default useTap;\n"],"names":["defaultOptions","useTap","tapCallback","options","eventPointerTypes","eventCapture","eventOnce","eventStopImmediatePropagation","threshold","maxDuration","container","targetReference","useRef","abortControllerReference","tapStateReference","handlePointerDown","useCallback","event","handlePointerUp","state","deltaX","deltaY","distance","duration","data","invokeTapAction","handlePointerCancel","useEffect","signal","pointerDownListener","pointerUpListener","pointerCancelListener"],"mappings":";;AAWA,MAAMA,IAA6B;AAAA,EACjC,mBAAmB,CAAC,SAAS,SAAS,KAAK;AAAA,EAC3C,cAAc;AAAA,EACd,WAAW;AAAA,EACX,+BAA+B;AAAA,EAC/B,WAAW;AAAA,EACX,aAAa;AAAA,EACb,WAAW,EAAE,SAAS,KAAA;AACxB,GAEMC,IAAS,CAACC,GAA6BC,IAAyB,OAAO;AAC3E,QAAM;AAAA,IACJ,mBAAAC;AAAA,IACA,cAAAC;AAAA,IACA,WAAAC;AAAA,IACA,+BAAAC;AAAA,IACA,WAAAC;AAAA,IACA,aAAAC;AAAA,IACA,WAAAC;AAAA,EAAA,IACE,EAAE,GAAGV,GAAgB,GAAGG,EAAA,GAEtBQ,IAAkBC,EAA2B,IAAI,GACjDC,IAA2BD,EAA+B,IAAI,GAE9DE,IAAoBF,EAAiB;AAAA,IACzC,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,QAAQ;AAAA,EAAA,CACT,GAEKG,IAAoBC;AAAA,IACxB,CAACC,MAAwB;AACvB,MAAKA,EAAM,aAKRb,EAAkB,SAASa,EAAM,WAAkC,MAKtEH,EAAkB,UAAU;AAAA,QAC1B,QAAQG,EAAM;AAAA,QACd,QAAQA,EAAM;AAAA,QACd,WAAW,KAAK,IAAA;AAAA,QAChB,QAAQ;AAAA,MAAA;AAAA,IAEZ;AAAA,IACA,CAACb,CAAiB;AAAA,EAAA,GAGdc,IAAkBF;AAAA,IACtB,CAACC,MAAwB;AACvB,YAAME,IAAQL,EAAkB;AAIhC,UAHI,CAACK,EAAM,UAGP,CAACF,EAAM;AACT;AAGF,MAAAE,EAAM,SAAS;AAEf,YAAMC,IAASH,EAAM,UAAUE,EAAM,QAC/BE,IAASJ,EAAM,UAAUE,EAAM,QAE/BG,IAAW,KAAK,MAAMF,GAAQC,CAAM,GACpCE,IAAW,KAAK,IAAA,IAAQJ,EAAM;AAKpC,UAHIG,IAAWd,KAGXe,IAAWd;AACb;AAGF,YAAMe,IAAgB;AAAA,QACpB,GAAGP,EAAM;AAAA,QACT,GAAGA,EAAM;AAAA,MAAA;AAGX,MAAAQ,EAAgBR,GAAOO,GAAMtB,GAAa;AAAA,QACxC,eAAeK;AAAA,QACf,MAAMD;AAAA,QACN,QAAQ,MAAM;AACZ,UAAAO,EAAyB,SAAS,MAAA;AAAA,QACpC;AAAA,MAAA,CACD;AAAA,IACH;AAAA,IACA;AAAA,MACEX;AAAA,MACAM;AAAA,MACAC;AAAA,MACAH;AAAA,MACAC;AAAA,IAAA;AAAA,EACF,GAGImB,IAAsBV,EAAY,MAAM;AAC5C,IAAAF,EAAkB,QAAQ,SAAS;AAAA,EACrC,GAAG,CAAA,CAAE;AAEL,EAAAa,EAAU,MAAM;AACd,IAAAhB,EAAgB,UAAUD,GAAW,WAAW,YAChDG,EAAyB,UAAU,IAAI,gBAAA;AACvC,UAAM,EAAE,QAAAe,MAAWf,EAAyB,SAEtCgB,IAAsB,CAACZ,MAC3BA,aAAiB,gBAAgBF,EAAkBE,CAAK,GAEpDa,IAAoB,CAACb,MACzBA,aAAiB,gBAAgBC,EAAgBD,CAAK,GAElDc,IAAwB,CAACd,MAC7BA,aAAiB,gBAAgBS,EAAA;AAEnC,WAAAf,EAAgB,QAAQ;AAAA,MACtB;AAAA,MACAkB;AAAA,MACA,EAAE,SAASxB,GAAc,QAAAuB,EAAA;AAAA,IAAO,GAGlCjB,EAAgB,QAAQ,iBAAiB,aAAamB,GAAmB;AAAA,MACvE,SAASzB;AAAA,MACT,QAAAuB;AAAA,IAAA,CACD,GAEDjB,EAAgB,QAAQ;AAAA,MACtB;AAAA,MACAoB;AAAA,MACA,EAAE,SAAS1B,GAAc,QAAAuB,EAAA;AAAA,IAAO,GAG3B,MAAM;AACX,MAAAf,EAAyB,SAAS,MAAA,GAElCC,EAAkB,QAAQ,SAAS;AAAA,IACrC;AAAA,EACF,GAAG;AAAA,IACDJ;AAAA,IACAL;AAAA,IACAU;AAAA,IACAG;AAAA,IACAQ;AAAA,EAAA,CACD;AACH;"}
1
+ {"version":3,"file":"use-tap.js","sources":["../../src/use-tap/use-tap.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from \"react\";\nimport {\n TapOptions,\n TapState,\n TapData,\n TapEventPointerTypes,\n UseTapOptions,\n UseTapCallback,\n} from \"./use-tap.types\";\nimport { invokeTapAction } from \"./invoke-tap-action\";\nimport { shouldHandleEvent } from \"./event-guards\";\n\nconst defaultOptions: TapOptions = {\n eventPointerTypes: [\n TapEventPointerTypes.Touch,\n TapEventPointerTypes.Mouse,\n TapEventPointerTypes.Pen,\n ],\n eventCapture: false,\n eventOnce: false,\n eventStopImmediatePropagation: false,\n threshold: 8,\n maxDuration: 250,\n container: { current: null },\n};\n\nconst useTap = (tapCallback: UseTapCallback, options: UseTapOptions = {}) => {\n const {\n eventPointerTypes,\n eventCapture,\n eventOnce,\n eventStopImmediatePropagation,\n threshold,\n maxDuration,\n container,\n } = { ...defaultOptions, ...options };\n\n const targetReference = useRef<EventTarget | null>(null);\n const abortControllerReference = useRef<AbortController | null>(null);\n\n const tapStateReference = useRef<TapState>({\n startX: 0,\n startY: 0,\n startTime: 0,\n active: false,\n });\n\n const handlePointerDown = useCallback(\n (event: PointerEvent) => {\n if (\n !shouldHandleEvent(event, {\n eventPointerTypes,\n })\n ) {\n return;\n }\n\n tapStateReference.current = {\n startX: event.clientX,\n startY: event.clientY,\n startTime: Date.now(),\n active: true,\n };\n },\n [eventPointerTypes],\n );\n\n const handlePointerUp = useCallback(\n (event: PointerEvent) => {\n if (\n !shouldHandleEvent(event, {\n eventPointerTypes,\n })\n ) {\n return;\n }\n\n const state = tapStateReference.current;\n if (!state.active) {\n return;\n }\n\n state.active = false;\n\n const deltaX = event.clientX - state.startX;\n const deltaY = event.clientY - state.startY;\n\n const distance = Math.hypot(deltaX, deltaY);\n const duration = Date.now() - state.startTime;\n\n if (distance > threshold) {\n return;\n }\n if (duration > maxDuration) {\n return;\n }\n\n const data: TapData = {\n x: event.clientX,\n y: event.clientY,\n };\n\n invokeTapAction(event, data, tapCallback, {\n stopImmediate: eventStopImmediatePropagation,\n once: eventOnce,\n onOnce: () => {\n abortControllerReference.current?.abort();\n },\n });\n },\n [\n eventPointerTypes,\n eventOnce,\n eventStopImmediatePropagation,\n threshold,\n maxDuration,\n tapCallback,\n ],\n );\n\n const handlePointerCancel = useCallback(\n (event: PointerEvent) => {\n if (\n !shouldHandleEvent(event, {\n eventPointerTypes,\n })\n ) {\n return;\n }\n\n tapStateReference.current.active = false;\n },\n [eventPointerTypes],\n );\n\n useEffect(() => {\n targetReference.current = container?.current ?? globalThis;\n abortControllerReference.current = new AbortController();\n const { signal } = abortControllerReference.current;\n\n const pointerDownListener = (event: Event) =>\n event instanceof PointerEvent && handlePointerDown(event);\n\n const pointerUpListener = (event: Event) =>\n event instanceof PointerEvent && handlePointerUp(event);\n\n const pointerCancelListener = (event: Event) =>\n event instanceof PointerEvent && handlePointerCancel(event);\n\n targetReference.current.addEventListener(\n \"pointerdown\",\n pointerDownListener,\n { capture: eventCapture, signal },\n );\n\n targetReference.current.addEventListener(\"pointerup\", pointerUpListener, {\n capture: eventCapture,\n signal,\n });\n\n targetReference.current.addEventListener(\n \"pointercancel\",\n pointerCancelListener,\n { capture: eventCapture, signal },\n );\n\n return () => {\n abortControllerReference.current?.abort();\n\n tapStateReference.current.active = false;\n };\n }, [\n container,\n eventCapture,\n handlePointerDown,\n handlePointerUp,\n handlePointerCancel,\n ]);\n};\n\nexport default useTap;\n"],"names":["defaultOptions","TapEventPointerTypes","useTap","tapCallback","options","eventPointerTypes","eventCapture","eventOnce","eventStopImmediatePropagation","threshold","maxDuration","container","targetReference","useRef","abortControllerReference","tapStateReference","handlePointerDown","useCallback","event","shouldHandleEvent","handlePointerUp","state","deltaX","deltaY","distance","duration","data","invokeTapAction","handlePointerCancel","useEffect","signal","pointerDownListener","pointerUpListener","pointerCancelListener"],"mappings":"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"}
@@ -45,7 +45,7 @@ const b = {
45
45
  }
46
46
  l.current = n, s.current = e, r.current === null && (r.current = requestAnimationFrame(v));
47
47
  },
48
- [m, o, u, a, v]
48
+ [a, u, m, o, v]
49
49
  );
50
50
  I(() => {
51
51
  p.current = d?.current ?? globalThis, t.current = new AbortController();
@@ -1 +1 @@
1
- {"version":3,"file":"use-wheel.js","sources":["../../src/use-wheel/use-wheel.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from \"react\";\nimport {\n UseWheelCallback,\n UseWheelOptions,\n WheelData,\n WheelOptions,\n} from \"./use-wheel.types\";\nimport { invokeWheelAction } from \"./invoke-wheel-action\";\n\nconst defaultOptions: WheelOptions = {\n eventPassive: true,\n eventCapture: false,\n eventOnce: false,\n eventStopImmediatePropagation: false,\n container: { current: null },\n raf: false,\n};\n\nconst useWheel = (\n wheelCallback: UseWheelCallback,\n options: UseWheelOptions = defaultOptions,\n) => {\n const {\n eventPassive,\n eventCapture,\n eventOnce,\n eventStopImmediatePropagation,\n container,\n raf,\n } = { ...defaultOptions, ...options };\n\n const targetReference = useRef<EventTarget | null>(null);\n const abortControllerReference = useRef<AbortController | null>(null);\n\n const frameReference = useRef<number | null>(null);\n const pendingDataReference = useRef<WheelData | null>(null);\n const pendingEventReference = useRef<WheelEvent | null>(null);\n\n const flushFrame = useCallback(() => {\n frameReference.current = null;\n\n const data = pendingDataReference.current;\n const event = pendingEventReference.current;\n\n if (!data || !event) {\n return;\n }\n\n invokeWheelAction(event, data, wheelCallback, {\n stopImmediate: eventStopImmediatePropagation,\n once: eventOnce,\n onOnce: () => {\n abortControllerReference.current?.abort();\n },\n });\n\n pendingDataReference.current = null;\n pendingEventReference.current = null;\n }, [wheelCallback, eventStopImmediatePropagation, eventOnce]);\n\n const handleEventListener = useCallback(\n (event: WheelEvent) => {\n const delta: WheelData = {\n deltaX: event.deltaX,\n deltaY: event.deltaY,\n deltaZ: event.deltaZ,\n deltaMode: event.deltaMode,\n };\n\n if (!raf) {\n invokeWheelAction(event, delta, wheelCallback, {\n stopImmediate: eventStopImmediatePropagation,\n once: eventOnce,\n onOnce: () => {\n abortControllerReference.current?.abort();\n },\n });\n return;\n }\n\n pendingDataReference.current = delta;\n pendingEventReference.current = event;\n\n if (frameReference.current === null) {\n frameReference.current = requestAnimationFrame(flushFrame);\n }\n },\n [raf, wheelCallback, eventStopImmediatePropagation, eventOnce, flushFrame],\n );\n\n useEffect(() => {\n targetReference.current = container?.current ?? globalThis;\n abortControllerReference.current = new AbortController();\n const { signal } = abortControllerReference.current;\n\n const eventListener = (event: Event) =>\n handleEventListener(event as WheelEvent);\n\n targetReference.current.addEventListener(\"wheel\", eventListener, {\n passive: eventPassive,\n capture: eventCapture,\n signal,\n });\n\n return () => {\n abortControllerReference.current?.abort();\n\n if (frameReference.current !== null) {\n cancelAnimationFrame(frameReference.current);\n }\n };\n }, [container, eventPassive, eventCapture, handleEventListener]);\n};\n\nexport default useWheel;\n"],"names":["defaultOptions","useWheel","wheelCallback","options","eventPassive","eventCapture","eventOnce","eventStopImmediatePropagation","container","raf","targetReference","useRef","abortControllerReference","frameReference","pendingDataReference","pendingEventReference","flushFrame","useCallback","data","event","invokeWheelAction","handleEventListener","delta","useEffect","signal","eventListener"],"mappings":";;AASA,MAAMA,IAA+B;AAAA,EACnC,cAAc;AAAA,EACd,cAAc;AAAA,EACd,WAAW;AAAA,EACX,+BAA+B;AAAA,EAC/B,WAAW,EAAE,SAAS,KAAA;AAAA,EACtB,KAAK;AACP,GAEMC,IAAW,CACfC,GACAC,IAA2BH,MACxB;AACH,QAAM;AAAA,IACJ,cAAAI;AAAA,IACA,cAAAC;AAAA,IACA,WAAAC;AAAA,IACA,+BAAAC;AAAA,IACA,WAAAC;AAAA,IACA,KAAAC;AAAA,EAAA,IACE,EAAE,GAAGT,GAAgB,GAAGG,EAAA,GAEtBO,IAAkBC,EAA2B,IAAI,GACjDC,IAA2BD,EAA+B,IAAI,GAE9DE,IAAiBF,EAAsB,IAAI,GAC3CG,IAAuBH,EAAyB,IAAI,GACpDI,IAAwBJ,EAA0B,IAAI,GAEtDK,IAAaC,EAAY,MAAM;AACnC,IAAAJ,EAAe,UAAU;AAEzB,UAAMK,IAAOJ,EAAqB,SAC5BK,IAAQJ,EAAsB;AAEpC,IAAI,CAACG,KAAQ,CAACC,MAIdC,EAAkBD,GAAOD,GAAMhB,GAAe;AAAA,MAC5C,eAAeK;AAAA,MACf,MAAMD;AAAA,MACN,QAAQ,MAAM;AACZ,QAAAM,EAAyB,SAAS,MAAA;AAAA,MACpC;AAAA,IAAA,CACD,GAEDE,EAAqB,UAAU,MAC/BC,EAAsB,UAAU;AAAA,EAClC,GAAG,CAACb,GAAeK,GAA+BD,CAAS,CAAC,GAEtDe,IAAsBJ;AAAA,IAC1B,CAACE,MAAsB;AACrB,YAAMG,IAAmB;AAAA,QACvB,QAAQH,EAAM;AAAA,QACd,QAAQA,EAAM;AAAA,QACd,QAAQA,EAAM;AAAA,QACd,WAAWA,EAAM;AAAA,MAAA;AAGnB,UAAI,CAACV,GAAK;AACR,QAAAW,EAAkBD,GAAOG,GAAOpB,GAAe;AAAA,UAC7C,eAAeK;AAAA,UACf,MAAMD;AAAA,UACN,QAAQ,MAAM;AACZ,YAAAM,EAAyB,SAAS,MAAA;AAAA,UACpC;AAAA,QAAA,CACD;AACD;AAAA,MACF;AAEA,MAAAE,EAAqB,UAAUQ,GAC/BP,EAAsB,UAAUI,GAE5BN,EAAe,YAAY,SAC7BA,EAAe,UAAU,sBAAsBG,CAAU;AAAA,IAE7D;AAAA,IACA,CAACP,GAAKP,GAAeK,GAA+BD,GAAWU,CAAU;AAAA,EAAA;AAG3E,EAAAO,EAAU,MAAM;AACd,IAAAb,EAAgB,UAAUF,GAAW,WAAW,YAChDI,EAAyB,UAAU,IAAI,gBAAA;AACvC,UAAM,EAAE,QAAAY,MAAWZ,EAAyB,SAEtCa,IAAgB,CAACN,MACrBE,EAAoBF,CAAmB;AAEzC,WAAAT,EAAgB,QAAQ,iBAAiB,SAASe,GAAe;AAAA,MAC/D,SAASrB;AAAA,MACT,SAASC;AAAA,MACT,QAAAmB;AAAA,IAAA,CACD,GAEM,MAAM;AACX,MAAAZ,EAAyB,SAAS,MAAA,GAE9BC,EAAe,YAAY,QAC7B,qBAAqBA,EAAe,OAAO;AAAA,IAE/C;AAAA,EACF,GAAG,CAACL,GAAWJ,GAAcC,GAAcgB,CAAmB,CAAC;AACjE;"}
1
+ {"version":3,"file":"use-wheel.js","sources":["../../src/use-wheel/use-wheel.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from \"react\";\nimport {\n WheelData,\n WheelOptions,\n UseWheelCallback,\n UseWheelOptions,\n} from \"./use-wheel.types\";\nimport { invokeWheelAction } from \"./invoke-wheel-action\";\n\nconst defaultOptions: WheelOptions = {\n eventPassive: true,\n eventCapture: false,\n eventOnce: false,\n eventStopImmediatePropagation: false,\n container: { current: null },\n raf: false,\n};\n\nconst useWheel = (\n wheelCallback: UseWheelCallback,\n options: UseWheelOptions = defaultOptions,\n) => {\n const {\n eventPassive,\n eventCapture,\n eventOnce,\n eventStopImmediatePropagation,\n container,\n raf,\n } = { ...defaultOptions, ...options };\n\n const targetReference = useRef<EventTarget | null>(null);\n const abortControllerReference = useRef<AbortController | null>(null);\n\n const frameReference = useRef<number | null>(null);\n const pendingDataReference = useRef<WheelData | null>(null);\n const pendingEventReference = useRef<WheelEvent | null>(null);\n\n const flushFrame = useCallback(() => {\n frameReference.current = null;\n\n const data = pendingDataReference.current;\n const event = pendingEventReference.current;\n\n if (!data || !event) {\n return;\n }\n\n invokeWheelAction(event, data, wheelCallback, {\n stopImmediate: eventStopImmediatePropagation,\n once: eventOnce,\n onOnce: () => {\n abortControllerReference.current?.abort();\n },\n });\n\n pendingDataReference.current = null;\n pendingEventReference.current = null;\n }, [wheelCallback, eventStopImmediatePropagation, eventOnce]);\n\n const handleEventListener = useCallback(\n (event: WheelEvent) => {\n const delta: WheelData = {\n deltaX: event.deltaX,\n deltaY: event.deltaY,\n deltaZ: event.deltaZ,\n deltaMode: event.deltaMode,\n };\n\n if (!raf) {\n invokeWheelAction(event, delta, wheelCallback, {\n stopImmediate: eventStopImmediatePropagation,\n once: eventOnce,\n onOnce: () => {\n abortControllerReference.current?.abort();\n },\n });\n return;\n }\n\n pendingDataReference.current = delta;\n pendingEventReference.current = event;\n\n if (frameReference.current === null) {\n frameReference.current = requestAnimationFrame(flushFrame);\n }\n },\n [eventOnce, eventStopImmediatePropagation, raf, wheelCallback, flushFrame],\n );\n\n useEffect(() => {\n targetReference.current = container?.current ?? globalThis;\n abortControllerReference.current = new AbortController();\n const { signal } = abortControllerReference.current;\n\n const eventListener = (event: Event) =>\n handleEventListener(event as WheelEvent);\n\n targetReference.current.addEventListener(\"wheel\", eventListener, {\n passive: eventPassive,\n capture: eventCapture,\n signal,\n });\n\n return () => {\n abortControllerReference.current?.abort();\n\n if (frameReference.current !== null) {\n cancelAnimationFrame(frameReference.current);\n }\n };\n }, [container, eventPassive, eventCapture, handleEventListener]);\n};\n\nexport default useWheel;\n"],"names":["defaultOptions","useWheel","wheelCallback","options","eventPassive","eventCapture","eventOnce","eventStopImmediatePropagation","container","raf","targetReference","useRef","abortControllerReference","frameReference","pendingDataReference","pendingEventReference","flushFrame","useCallback","data","event","invokeWheelAction","handleEventListener","delta","useEffect","signal","eventListener"],"mappings":";;AASA,MAAMA,IAA+B;AAAA,EACnC,cAAc;AAAA,EACd,cAAc;AAAA,EACd,WAAW;AAAA,EACX,+BAA+B;AAAA,EAC/B,WAAW,EAAE,SAAS,KAAA;AAAA,EACtB,KAAK;AACP,GAEMC,IAAW,CACfC,GACAC,IAA2BH,MACxB;AACH,QAAM;AAAA,IACJ,cAAAI;AAAA,IACA,cAAAC;AAAA,IACA,WAAAC;AAAA,IACA,+BAAAC;AAAA,IACA,WAAAC;AAAA,IACA,KAAAC;AAAA,EAAA,IACE,EAAE,GAAGT,GAAgB,GAAGG,EAAA,GAEtBO,IAAkBC,EAA2B,IAAI,GACjDC,IAA2BD,EAA+B,IAAI,GAE9DE,IAAiBF,EAAsB,IAAI,GAC3CG,IAAuBH,EAAyB,IAAI,GACpDI,IAAwBJ,EAA0B,IAAI,GAEtDK,IAAaC,EAAY,MAAM;AACnC,IAAAJ,EAAe,UAAU;AAEzB,UAAMK,IAAOJ,EAAqB,SAC5BK,IAAQJ,EAAsB;AAEpC,IAAI,CAACG,KAAQ,CAACC,MAIdC,EAAkBD,GAAOD,GAAMhB,GAAe;AAAA,MAC5C,eAAeK;AAAA,MACf,MAAMD;AAAA,MACN,QAAQ,MAAM;AACZ,QAAAM,EAAyB,SAAS,MAAA;AAAA,MACpC;AAAA,IAAA,CACD,GAEDE,EAAqB,UAAU,MAC/BC,EAAsB,UAAU;AAAA,EAClC,GAAG,CAACb,GAAeK,GAA+BD,CAAS,CAAC,GAEtDe,IAAsBJ;AAAA,IAC1B,CAACE,MAAsB;AACrB,YAAMG,IAAmB;AAAA,QACvB,QAAQH,EAAM;AAAA,QACd,QAAQA,EAAM;AAAA,QACd,QAAQA,EAAM;AAAA,QACd,WAAWA,EAAM;AAAA,MAAA;AAGnB,UAAI,CAACV,GAAK;AACR,QAAAW,EAAkBD,GAAOG,GAAOpB,GAAe;AAAA,UAC7C,eAAeK;AAAA,UACf,MAAMD;AAAA,UACN,QAAQ,MAAM;AACZ,YAAAM,EAAyB,SAAS,MAAA;AAAA,UACpC;AAAA,QAAA,CACD;AACD;AAAA,MACF;AAEA,MAAAE,EAAqB,UAAUQ,GAC/BP,EAAsB,UAAUI,GAE5BN,EAAe,YAAY,SAC7BA,EAAe,UAAU,sBAAsBG,CAAU;AAAA,IAE7D;AAAA,IACA,CAACV,GAAWC,GAA+BE,GAAKP,GAAec,CAAU;AAAA,EAAA;AAG3E,EAAAO,EAAU,MAAM;AACd,IAAAb,EAAgB,UAAUF,GAAW,WAAW,YAChDI,EAAyB,UAAU,IAAI,gBAAA;AACvC,UAAM,EAAE,QAAAY,MAAWZ,EAAyB,SAEtCa,IAAgB,CAACN,MACrBE,EAAoBF,CAAmB;AAEzC,WAAAT,EAAgB,QAAQ,iBAAiB,SAASe,GAAe;AAAA,MAC/D,SAASrB;AAAA,MACT,SAASC;AAAA,MACT,QAAAmB;AAAA,IAAA,CACD,GAEM,MAAM;AACX,MAAAZ,EAAyB,SAAS,MAAA,GAE9BC,EAAe,YAAY,QAC7B,qBAAqBA,EAAe,OAAO;AAAA,IAE/C;AAAA,EACF,GAAG,CAACL,GAAWJ,GAAcC,GAAcgB,CAAmB,CAAC;AACjE;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@msobiecki/react-marauders-path",
3
- "version": "1.28.0",
3
+ "version": "1.30.0",
4
4
  "private": false,
5
5
  "description": "A lightweight, type-safe React library for handling keyboard and pointer events in a unified way.",
6
6
  "keywords": [