@msobiecki/react-marauders-path 1.29.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 -16
  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,98 +1,124 @@
1
- import { useRef as l, useCallback as i, useEffect as R } from "react";
2
- import { invokePressAction as w } from "./invoke-press-action.js";
3
- const O = {
4
- eventPointerTypes: ["touch", "mouse", "pen"],
1
+ import { useRef as u, useCallback as s, useEffect as M } from "react";
2
+ import { PressEventPointerTypes as P } from "./use-press.types.js";
3
+ import { invokePressAction as O } from "./invoke-press-action.js";
4
+ import { shouldHandleEvent as p } from "./event-guards.js";
5
+ const X = {
6
+ eventPointerTypes: [
7
+ P.Touch,
8
+ P.Mouse,
9
+ P.Pen
10
+ ],
5
11
  eventCapture: !1,
6
12
  eventOnce: !1,
7
13
  eventStopImmediatePropagation: !1,
8
14
  delay: 500,
9
15
  threshold: 8,
10
16
  container: { current: null }
11
- }, I = (f, g = {}) => {
17
+ }, D = (v, R = {}) => {
12
18
  const {
13
- eventPointerTypes: m,
14
- eventCapture: o,
15
- eventOnce: P,
16
- eventStopImmediatePropagation: v,
17
- delay: h,
18
- threshold: y,
19
- container: E
20
- } = { ...O, ...g }, c = l(null), s = l(null), u = l({
19
+ eventPointerTypes: r,
20
+ eventCapture: c,
21
+ eventOnce: h,
22
+ eventStopImmediatePropagation: E,
23
+ delay: y,
24
+ threshold: L,
25
+ container: T
26
+ } = { ...X, ...R }, i = u(null), a = u(null), f = u({
21
27
  x: 0,
22
28
  y: 0,
23
29
  active: !1
24
- }), a = l(null), t = i(() => {
25
- a.current !== null && (clearTimeout(a.current), a.current = null), u.current.active = !1;
26
- }, []), L = i(
30
+ }), l = u(null), n = s(() => {
31
+ l.current !== null && (clearTimeout(l.current), l.current = null), f.current.active = !1;
32
+ }, []), C = s(
27
33
  (e) => {
28
- e.isPrimary && m.includes(e.pointerType) && (u.current = {
34
+ p(e, {
35
+ eventPointerTypes: r
36
+ }) && (f.current = {
29
37
  x: e.clientX,
30
38
  y: e.clientY,
31
39
  active: !0
32
- }, a.current = setTimeout(() => {
33
- const r = {
40
+ }, l.current = setTimeout(() => {
41
+ const o = {
34
42
  x: e.clientX,
35
43
  y: e.clientY
36
44
  };
37
- w(e, r, f, {
38
- stopImmediate: v,
39
- once: P,
45
+ O(e, o, v, {
46
+ stopImmediate: E,
47
+ once: h,
40
48
  onOnce: () => {
41
- s.current?.abort();
49
+ a.current?.abort();
42
50
  }
43
- }), t();
44
- }, h));
51
+ }), n();
52
+ }, y));
45
53
  },
46
54
  [
47
- f,
55
+ r,
48
56
  h,
49
- m,
50
- P,
57
+ E,
58
+ y,
51
59
  v,
52
- t
60
+ n
53
61
  ]
54
- ), C = i(
62
+ ), b = s(
55
63
  (e) => {
56
- const r = u.current;
57
- if (!r.active)
64
+ if (!p(e, {
65
+ eventPointerTypes: r
66
+ }))
67
+ return;
68
+ const o = f.current;
69
+ if (!o.active)
58
70
  return;
59
- const p = e.clientX - r.x, d = e.clientY - r.y;
60
- Math.hypot(p, d) > y && t();
71
+ const d = e.clientX - o.x, m = e.clientY - o.y;
72
+ Math.hypot(d, m) > L && n();
61
73
  },
62
- [y, t]
63
- ), T = i(() => t(), [t]), b = i(() => t(), [t]);
64
- R(() => {
65
- c.current = E?.current ?? globalThis, s.current = new AbortController();
66
- const { signal: e } = s.current, r = (n) => n instanceof PointerEvent && L(n), p = (n) => n instanceof PointerEvent && C(n), d = (n) => n instanceof PointerEvent && T(), x = (n) => n instanceof PointerEvent && b();
67
- return c.current.addEventListener(
74
+ [r, L, n]
75
+ ), g = s(
76
+ (e) => {
77
+ p(e, {
78
+ eventPointerTypes: r
79
+ }) && n();
80
+ },
81
+ [r, n]
82
+ ), x = s(
83
+ (e) => {
84
+ p(e, {
85
+ eventPointerTypes: r
86
+ }) && n();
87
+ },
88
+ [r, n]
89
+ );
90
+ M(() => {
91
+ i.current = T?.current ?? globalThis, a.current = new AbortController();
92
+ const { signal: e } = a.current, o = (t) => t instanceof PointerEvent && C(t), d = (t) => t instanceof PointerEvent && b(t), m = (t) => t instanceof PointerEvent && g(t), w = (t) => t instanceof PointerEvent && x(t);
93
+ return i.current.addEventListener(
68
94
  "pointerdown",
69
- r,
70
- { capture: o, signal: e }
71
- ), c.current.addEventListener(
95
+ o,
96
+ { capture: c, signal: e }
97
+ ), i.current.addEventListener(
72
98
  "pointermove",
73
- p,
74
- { capture: o, signal: e }
75
- ), c.current.addEventListener("pointerup", d, {
76
- capture: o,
99
+ d,
100
+ { capture: c, signal: e }
101
+ ), i.current.addEventListener("pointerup", m, {
102
+ capture: c,
77
103
  signal: e
78
- }), c.current.addEventListener(
104
+ }), i.current.addEventListener(
79
105
  "pointercancel",
80
- x,
81
- { capture: o, signal: e }
106
+ w,
107
+ { capture: c, signal: e }
82
108
  ), () => {
83
- s.current?.abort(), t();
109
+ a.current?.abort(), n();
84
110
  };
85
111
  }, [
86
- E,
87
- o,
88
- L,
89
- C,
90
112
  T,
113
+ c,
114
+ C,
91
115
  b,
92
- t
116
+ g,
117
+ x,
118
+ n
93
119
  ]);
94
120
  };
95
121
  export {
96
- I as default
122
+ D as default
97
123
  };
98
124
  //# sourceMappingURL=use-press.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-press.js","sources":["../../src/use-press/use-press.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from \"react\";\nimport {\n PressOptions,\n UsePressCallback,\n UsePressOptions,\n PressEventPointerType,\n PressData,\n} from \"./use-press.types\";\nimport { invokePressAction } from \"./invoke-press-action\";\n\nconst defaultOptions: PressOptions = {\n eventPointerTypes: [\"touch\", \"mouse\", \"pen\"],\n eventCapture: false,\n eventOnce: false,\n eventStopImmediatePropagation: false,\n delay: 500,\n threshold: 8,\n container: { current: null },\n};\n\nconst usePress = (\n pressCallback: UsePressCallback,\n options: UsePressOptions = {},\n) => {\n const {\n eventPointerTypes,\n eventCapture,\n eventOnce,\n eventStopImmediatePropagation,\n delay,\n threshold,\n container,\n } = { ...defaultOptions, ...options };\n\n const targetReference = useRef<EventTarget | null>(null);\n const abortControllerReference = useRef<AbortController | null>(null);\n\n const pressStateReference = useRef<{\n x: number;\n y: number;\n active: boolean;\n }>({\n x: 0,\n y: 0,\n active: false,\n });\n\n const timerReference = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const clearPress = useCallback(() => {\n if (timerReference.current !== null) {\n clearTimeout(timerReference.current);\n timerReference.current = null;\n }\n pressStateReference.current.active = false;\n }, []);\n\n const handlePointerDown = useCallback(\n (event: PointerEvent) => {\n if (!event.isPrimary) {\n return;\n }\n if (\n !eventPointerTypes.includes(event.pointerType as PressEventPointerType)\n ) {\n return;\n }\n\n pressStateReference.current = {\n x: event.clientX,\n y: event.clientY,\n active: true,\n };\n\n timerReference.current = setTimeout(() => {\n const data: PressData = {\n x: event.clientX,\n y: event.clientY,\n };\n invokePressAction(event, data, pressCallback, {\n stopImmediate: eventStopImmediatePropagation,\n once: eventOnce,\n onOnce: () => {\n abortControllerReference.current?.abort();\n },\n });\n\n clearPress();\n }, delay);\n },\n [\n pressCallback,\n delay,\n eventPointerTypes,\n eventOnce,\n eventStopImmediatePropagation,\n clearPress,\n ],\n );\n\n const handlePointerMove = useCallback(\n (event: PointerEvent) => {\n const state = pressStateReference.current;\n if (!state.active) {\n return;\n }\n\n const deltaX = event.clientX - state.x;\n const deltaY = event.clientY - state.y;\n\n if (Math.hypot(deltaX, deltaY) > threshold) {\n clearPress();\n }\n },\n [threshold, clearPress],\n );\n\n const handlePointerUp = useCallback(() => clearPress(), [clearPress]);\n const handlePointerCancel = useCallback(() => clearPress(), [clearPress]);\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 pointerMoveListener = (event: Event) =>\n event instanceof PointerEvent && handlePointerMove(event);\n\n const pointerUpListener = (event: Event) =>\n event instanceof PointerEvent && handlePointerUp();\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(\n \"pointermove\",\n pointerMoveListener,\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 clearPress();\n };\n }, [\n container,\n eventCapture,\n handlePointerDown,\n handlePointerMove,\n handlePointerUp,\n handlePointerCancel,\n clearPress,\n ]);\n};\n\nexport default usePress;\n"],"names":["defaultOptions","usePress","pressCallback","options","eventPointerTypes","eventCapture","eventOnce","eventStopImmediatePropagation","delay","threshold","container","targetReference","useRef","abortControllerReference","pressStateReference","timerReference","clearPress","useCallback","handlePointerDown","event","data","invokePressAction","handlePointerMove","state","deltaX","deltaY","handlePointerUp","handlePointerCancel","useEffect","signal","pointerDownListener","pointerMoveListener","pointerUpListener","pointerCancelListener"],"mappings":"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"}
1
+ {"version":3,"file":"use-press.js","sources":["../../src/use-press/use-press.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from \"react\";\nimport {\n PressOptions,\n PressData,\n PressEventPointerTypes,\n UsePressCallback,\n UsePressOptions,\n} from \"./use-press.types\";\nimport { invokePressAction } from \"./invoke-press-action\";\nimport { shouldHandleEvent } from \"./event-guards\";\n\nconst defaultOptions: PressOptions = {\n eventPointerTypes: [\n PressEventPointerTypes.Touch,\n PressEventPointerTypes.Mouse,\n PressEventPointerTypes.Pen,\n ],\n eventCapture: false,\n eventOnce: false,\n eventStopImmediatePropagation: false,\n delay: 500,\n threshold: 8,\n container: { current: null },\n};\n\nconst usePress = (\n pressCallback: UsePressCallback,\n options: UsePressOptions = {},\n) => {\n const {\n eventPointerTypes,\n eventCapture,\n eventOnce,\n eventStopImmediatePropagation,\n delay,\n threshold,\n container,\n } = { ...defaultOptions, ...options };\n\n const targetReference = useRef<EventTarget | null>(null);\n const abortControllerReference = useRef<AbortController | null>(null);\n\n const pressStateReference = useRef<{\n x: number;\n y: number;\n active: boolean;\n }>({\n x: 0,\n y: 0,\n active: false,\n });\n\n const timerReference = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const clearPress = useCallback(() => {\n if (timerReference.current !== null) {\n clearTimeout(timerReference.current);\n timerReference.current = null;\n }\n pressStateReference.current.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 pressStateReference.current = {\n x: event.clientX,\n y: event.clientY,\n active: true,\n };\n\n timerReference.current = setTimeout(() => {\n const data: PressData = {\n x: event.clientX,\n y: event.clientY,\n };\n invokePressAction(event, data, pressCallback, {\n stopImmediate: eventStopImmediatePropagation,\n once: eventOnce,\n onOnce: () => {\n abortControllerReference.current?.abort();\n },\n });\n\n clearPress();\n }, delay);\n },\n [\n eventPointerTypes,\n eventOnce,\n eventStopImmediatePropagation,\n delay,\n pressCallback,\n clearPress,\n ],\n );\n\n const handlePointerMove = useCallback(\n (event: PointerEvent) => {\n if (\n !shouldHandleEvent(event, {\n eventPointerTypes,\n })\n ) {\n return;\n }\n\n const state = pressStateReference.current;\n if (!state.active) {\n return;\n }\n\n const deltaX = event.clientX - state.x;\n const deltaY = event.clientY - state.y;\n\n if (Math.hypot(deltaX, deltaY) > threshold) {\n clearPress();\n }\n },\n [eventPointerTypes, threshold, clearPress],\n );\n\n const handlePointerUp = useCallback(\n (event: PointerEvent) => {\n if (\n !shouldHandleEvent(event, {\n eventPointerTypes,\n })\n ) {\n return;\n }\n\n clearPress();\n },\n\n [eventPointerTypes, clearPress],\n );\n\n const handlePointerCancel = useCallback(\n (event: PointerEvent) => {\n if (\n !shouldHandleEvent(event, {\n eventPointerTypes,\n })\n ) {\n return;\n }\n\n clearPress();\n },\n [eventPointerTypes, clearPress],\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 pointerMoveListener = (event: Event) =>\n event instanceof PointerEvent && handlePointerMove(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(\n \"pointermove\",\n pointerMoveListener,\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 clearPress();\n };\n }, [\n container,\n eventCapture,\n handlePointerDown,\n handlePointerMove,\n handlePointerUp,\n handlePointerCancel,\n clearPress,\n ]);\n};\n\nexport default usePress;\n"],"names":["defaultOptions","PressEventPointerTypes","usePress","pressCallback","options","eventPointerTypes","eventCapture","eventOnce","eventStopImmediatePropagation","delay","threshold","container","targetReference","useRef","abortControllerReference","pressStateReference","timerReference","clearPress","useCallback","handlePointerDown","event","shouldHandleEvent","data","invokePressAction","handlePointerMove","state","deltaX","deltaY","handlePointerUp","handlePointerCancel","useEffect","signal","pointerDownListener","pointerMoveListener","pointerUpListener","pointerCancelListener"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ const n = (e, r) => !(!e.isPrimary || !r.eventPointerTypes.includes(
2
+ e.pointerType
3
+ ));
4
+ export {
5
+ n as shouldHandleEvent
6
+ };
7
+ //# sourceMappingURL=event-guards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-guards.js","sources":["../../src/use-swipe/event-guards.ts"],"sourcesContent":["import { SwipeEventPointerType } from \"./use-swipe.types\";\n\n/**\n * Determines whether a pointer event should be handled based on event options.\n *\n * @param {PointerEvent} event - The pointer event to evaluate\n * @param {Object} options - Event handling options\n * @param {SwipeEventPointerType[]} options.eventPointerTypes - Allowed pointer types for the event\n * @returns {boolean} True if the event should be handled, false otherwise\n *\n * @example\n * const shouldHandle = shouldHandleEvent(event, {\n * eventPointerTypes: [SwipeEventPointerTypes.Touch]\n * });\n */\nexport const shouldHandleEvent = (\n event: PointerEvent,\n options: {\n eventPointerTypes: SwipeEventPointerType[];\n },\n) => {\n if (!event.isPrimary) {\n return false;\n }\n if (\n !options.eventPointerTypes.includes(\n event.pointerType as SwipeEventPointerType,\n )\n ) {\n return false;\n }\n\n return true;\n};\n"],"names":["shouldHandleEvent","event","options"],"mappings":"AAeO,MAAMA,IAAoB,CAC/BC,GACAC,MAII,GAACD,EAAM,aAIT,CAACC,EAAQ,kBAAkB;AAAA,EACzBD,EAAM;AAAA;"}
@@ -1,98 +1,117 @@
1
- import { useRef as f, useCallback as i, useEffect as Y } from "react";
2
- import { SwipeDirections as n } from "./use-swipe.types.js";
3
- import { parseSwipeDirection as U } from "./parse-swipe-direction.js";
4
- import { invokeSwipeAction as I } from "./invoke-swipe-action.js";
5
- const M = {
6
- eventPointerTypes: ["touch", "mouse", "pen"],
1
+ import { useRef as p, useCallback as s, useEffect as O } from "react";
2
+ import { SwipeDirections as r, SwipeEventPointerTypes as m } from "./use-swipe.types.js";
3
+ import { parseSwipeDirection as I } from "./parse-swipe-direction.js";
4
+ import { invokeSwipeAction as A } from "./invoke-swipe-action.js";
5
+ import { shouldHandleEvent as d } from "./event-guards.js";
6
+ const H = {
7
+ eventPointerTypes: [
8
+ m.Touch,
9
+ m.Mouse,
10
+ m.Pen
11
+ ],
7
12
  eventCapture: !1,
8
13
  eventOnce: !1,
9
14
  eventStopImmediatePropagation: !1,
10
15
  threshold: 50,
11
16
  velocity: 0.3,
12
17
  container: { current: null }
13
- }, B = (d, m, O = {}) => {
18
+ }, q = (h, v, U = {}) => {
14
19
  const {
15
- eventPointerTypes: s,
20
+ eventPointerTypes: o,
16
21
  eventCapture: a,
17
- eventOnce: h,
18
- eventStopImmediatePropagation: v,
19
- threshold: w,
20
- velocity: y,
21
- container: P
22
- } = { ...M, ...O }, D = f([]), u = f(null), l = f(null), p = f({
22
+ eventOnce: w,
23
+ eventStopImmediatePropagation: P,
24
+ threshold: D,
25
+ velocity: S,
26
+ container: b
27
+ } = { ...H, ...U }, E = p([]), u = p(null), l = p(null), f = p({
23
28
  startX: 0,
24
29
  startY: 0,
25
30
  startTime: 0,
26
31
  active: !1
27
- }), b = i(
32
+ }), y = s(
28
33
  (t, e) => {
29
- const o = Math.abs(t), c = Math.abs(e);
30
- return o > c ? t > 0 ? n.Right : n.Left : e > 0 ? n.Down : n.Up;
34
+ const c = Math.abs(t), i = Math.abs(e);
35
+ return c > i ? t > 0 ? r.Right : r.Left : e > 0 ? r.Down : r.Up;
31
36
  },
32
37
  []
33
- ), S = i((t) => {
34
- const e = D.current;
35
- return e.includes(n.Both) || e.includes(n.Horizontal) && (t === n.Left || t === n.Right) || e.includes(n.Vertical) && (t === n.Up || t === n.Down) ? !0 : e.includes(t);
36
- }, []), L = i(
38
+ ), L = s((t) => {
39
+ const e = E.current;
40
+ return e.includes(r.Both) || e.includes(r.Horizontal) && (t === r.Left || t === r.Right) || e.includes(r.Vertical) && (t === r.Up || t === r.Down) ? !0 : e.includes(t);
41
+ }, []), T = s(
37
42
  (t) => {
38
- t.isPrimary && s.includes(t.pointerType) && (p.current = {
43
+ d(t, {
44
+ eventPointerTypes: o
45
+ }) && (f.current = {
39
46
  startX: t.clientX,
40
47
  startY: t.clientY,
41
48
  startTime: Date.now(),
42
49
  active: !0
43
50
  });
44
51
  },
45
- [s]
46
- ), T = i(
52
+ [o]
53
+ ), g = s(
47
54
  (t) => {
48
- const e = p.current;
55
+ if (!d(t, {
56
+ eventPointerTypes: o
57
+ }))
58
+ return;
59
+ const e = f.current;
49
60
  if (!e.active)
50
61
  return;
51
62
  e.active = !1;
52
- const o = Date.now() - e.startTime;
53
- if (o === 0)
63
+ const c = Date.now() - e.startTime;
64
+ if (c === 0)
54
65
  return;
55
- const c = t.clientX - e.startX, r = t.clientY - e.startY, C = Math.hypot(c, r), E = C / o;
56
- if (C < w || E < y)
66
+ const i = t.clientX - e.startX, n = t.clientY - e.startY, X = Math.hypot(i, n), Y = X / c;
67
+ if (X < D || Y < S)
57
68
  return;
58
- const X = b(c, r);
59
- if (!S(X))
69
+ const M = y(i, n);
70
+ if (!L(M))
60
71
  return;
61
- I(t, X, {
62
- deltaX: c,
63
- deltaY: r,
64
- velocity: E,
65
- duration: o
66
- }, m, {
67
- stopImmediate: v,
68
- once: h,
72
+ A(t, M, {
73
+ deltaX: i,
74
+ deltaY: n,
75
+ velocity: Y,
76
+ duration: c
77
+ }, v, {
78
+ stopImmediate: P,
79
+ once: w,
69
80
  onOnce: () => {
70
81
  l.current?.abort();
71
82
  }
72
83
  });
73
84
  },
74
85
  [
86
+ o,
75
87
  w,
76
- y,
77
- b,
88
+ P,
89
+ D,
78
90
  S,
79
- m,
80
- h,
91
+ y,
92
+ L,
81
93
  v
82
94
  ]
83
- ), g = i(
95
+ ), R = s(
96
+ (t) => {
97
+ d(t, {
98
+ eventPointerTypes: o
99
+ }) && g(t);
100
+ },
101
+ [o, g]
102
+ ), C = s(
84
103
  (t) => {
85
- t.isPrimary && s.includes(t.pointerType) && T(t);
104
+ d(t, {
105
+ eventPointerTypes: o
106
+ }) && (f.current.active = !1);
86
107
  },
87
- [T, s]
88
- ), R = i(() => {
89
- p.current.active = !1;
90
- }, []);
91
- Y(() => {
92
- D.current = U(d);
93
- }, [d]), Y(() => {
94
- u.current = P?.current ?? globalThis, l.current = new AbortController();
95
- const { signal: t } = l.current, e = (r) => r instanceof PointerEvent && L(r), o = (r) => r instanceof PointerEvent && g(r), c = () => R();
108
+ [o]
109
+ );
110
+ O(() => {
111
+ E.current = I(h);
112
+ }, [h]), O(() => {
113
+ u.current = b?.current ?? globalThis, l.current = new AbortController();
114
+ const { signal: t } = l.current, e = (n) => n instanceof PointerEvent && T(n), c = (n) => n instanceof PointerEvent && R(n), i = (n) => n instanceof PointerEvent && C(n);
96
115
  return u.current.addEventListener(
97
116
  "pointerdown",
98
117
  e,
@@ -100,28 +119,28 @@ const M = {
100
119
  capture: a,
101
120
  signal: t
102
121
  }
103
- ), u.current.addEventListener("pointerup", o, {
122
+ ), u.current.addEventListener("pointerup", c, {
104
123
  capture: a,
105
124
  signal: t
106
125
  }), u.current.addEventListener(
107
126
  "pointercancel",
108
- c,
127
+ i,
109
128
  {
110
129
  capture: a,
111
130
  signal: t
112
131
  }
113
132
  ), () => {
114
- l.current?.abort(), p.current.active = !1;
133
+ l.current?.abort(), f.current.active = !1;
115
134
  };
116
135
  }, [
117
- P,
136
+ b,
118
137
  a,
119
- L,
120
- g,
121
- R
138
+ T,
139
+ R,
140
+ C
122
141
  ]);
123
142
  };
124
143
  export {
125
- B as default
144
+ q as default
126
145
  };
127
146
  //# sourceMappingURL=use-swipe.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-swipe.js","sources":["../../src/use-swipe/use-swipe.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from \"react\";\nimport {\n SwipeDirection,\n SwipeState,\n SwipeData,\n UseSwipeSchema,\n UseSwipeOptions,\n UseSwipeCallback,\n SwipeOptions,\n SwipeDirections,\n SwipeEventPointerType,\n} from \"./use-swipe.types\";\nimport { parseSwipeDirection } from \"./parse-swipe-direction\";\nimport { invokeSwipeAction } from \"./invoke-swipe-action\";\n\nconst defaultOptions: SwipeOptions = {\n eventPointerTypes: [\"touch\", \"mouse\", \"pen\"],\n eventCapture: false,\n eventOnce: false,\n eventStopImmediatePropagation: false,\n threshold: 50,\n velocity: 0.3,\n container: { current: null },\n};\n\nconst useSwipe = (\n swipe: UseSwipeSchema,\n swipeCallback: UseSwipeCallback,\n options: UseSwipeOptions = {},\n) => {\n const {\n eventPointerTypes,\n eventCapture,\n eventOnce,\n eventStopImmediatePropagation,\n threshold,\n velocity,\n container,\n } = { ...defaultOptions, ...options };\n\n const allowedDirectionsReference = useRef<SwipeDirection[]>([]);\n const targetReference = useRef<EventTarget | null>(null);\n const abortControllerReference = useRef<AbortController | null>(null);\n\n const swipeStateReference = useRef<SwipeState>({\n startX: 0,\n startY: 0,\n startTime: 0,\n active: false,\n });\n\n const resolveDirection = useCallback(\n (deltaX: number, deltaY: number): SwipeDirection => {\n const absX = Math.abs(deltaX);\n const absY = Math.abs(deltaY);\n\n if (absX > absY) {\n return deltaX > 0 ? SwipeDirections.Right : SwipeDirections.Left;\n }\n\n return deltaY > 0 ? SwipeDirections.Down : SwipeDirections.Up;\n },\n [],\n );\n\n const matchesSchema = useCallback((direction: SwipeDirection): boolean => {\n const allowed = allowedDirectionsReference.current;\n\n if (allowed.includes(SwipeDirections.Both)) {\n return true;\n }\n\n if (\n allowed.includes(SwipeDirections.Horizontal) &&\n (direction === SwipeDirections.Left ||\n direction === SwipeDirections.Right)\n ) {\n return true;\n }\n\n if (\n allowed.includes(SwipeDirections.Vertical) &&\n (direction === SwipeDirections.Up || direction === SwipeDirections.Down)\n ) {\n return true;\n }\n\n return allowed.includes(direction);\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 SwipeEventPointerType)\n ) {\n return;\n }\n\n swipeStateReference.current = {\n startX: event.clientX,\n startY: event.clientY,\n startTime: Date.now(),\n active: true,\n };\n },\n [eventPointerTypes],\n );\n\n const endSwipe = useCallback(\n (event: PointerEvent) => {\n const state = swipeStateReference.current;\n if (!state.active) {\n return;\n }\n\n state.active = false;\n\n const duration = Date.now() - state.startTime;\n\n if (duration === 0) {\n return;\n }\n\n const deltaX = event.clientX - state.startX;\n const deltaY = event.clientY - state.startY;\n\n const distance = Math.hypot(deltaX, deltaY);\n\n const computedVelocity = distance / duration;\n\n if (distance < threshold) {\n return;\n }\n if (computedVelocity < velocity) {\n return;\n }\n\n const direction = resolveDirection(deltaX, deltaY);\n if (!matchesSchema(direction)) {\n return;\n }\n\n const data: SwipeData = {\n deltaX,\n deltaY,\n velocity: computedVelocity,\n duration,\n };\n\n invokeSwipeAction(event, direction, data, swipeCallback, {\n stopImmediate: eventStopImmediatePropagation,\n once: eventOnce,\n onOnce: () => {\n abortControllerReference.current?.abort();\n },\n });\n },\n [\n threshold,\n velocity,\n resolveDirection,\n matchesSchema,\n swipeCallback,\n eventOnce,\n eventStopImmediatePropagation,\n ],\n );\n\n const handlePointerUp = useCallback(\n (event: PointerEvent) => {\n if (!event.isPrimary) {\n return;\n }\n if (\n !eventPointerTypes.includes(event.pointerType as SwipeEventPointerType)\n ) {\n return;\n }\n endSwipe(event);\n },\n [endSwipe, eventPointerTypes],\n );\n\n const handlePointerCancel = useCallback(() => {\n swipeStateReference.current.active = false;\n }, []);\n\n useEffect(() => {\n allowedDirectionsReference.current = parseSwipeDirection(swipe);\n }, [swipe]);\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 = () => handlePointerCancel();\n\n targetReference.current.addEventListener(\n \"pointerdown\",\n pointerDownListener,\n {\n capture: eventCapture,\n signal,\n },\n );\n\n targetReference.current.addEventListener(\"pointerup\", pointerUpListener, {\n capture: eventCapture,\n signal,\n });\n\n targetReference.current.addEventListener(\n \"pointercancel\",\n pointerCancelListener,\n {\n capture: eventCapture,\n signal,\n },\n );\n\n return () => {\n abortControllerReference.current?.abort();\n\n swipeStateReference.current.active = false;\n };\n }, [\n container,\n eventCapture,\n handlePointerDown,\n handlePointerUp,\n handlePointerCancel,\n ]);\n};\n\nexport default useSwipe;\n"],"names":["defaultOptions","useSwipe","swipe","swipeCallback","options","eventPointerTypes","eventCapture","eventOnce","eventStopImmediatePropagation","threshold","velocity","container","allowedDirectionsReference","useRef","targetReference","abortControllerReference","swipeStateReference","resolveDirection","useCallback","deltaX","deltaY","absX","absY","SwipeDirections","matchesSchema","direction","allowed","handlePointerDown","event","endSwipe","state","duration","distance","computedVelocity","invokeSwipeAction","handlePointerUp","handlePointerCancel","useEffect","parseSwipeDirection","signal","pointerDownListener","pointerUpListener","pointerCancelListener"],"mappings":";;;;AAeA,MAAMA,IAA+B;AAAA,EACnC,mBAAmB,CAAC,SAAS,SAAS,KAAK;AAAA,EAC3C,cAAc;AAAA,EACd,WAAW;AAAA,EACX,+BAA+B;AAAA,EAC/B,WAAW;AAAA,EACX,UAAU;AAAA,EACV,WAAW,EAAE,SAAS,KAAA;AACxB,GAEMC,IAAW,CACfC,GACAC,GACAC,IAA2B,CAAA,MACxB;AACH,QAAM;AAAA,IACJ,mBAAAC;AAAA,IACA,cAAAC;AAAA,IACA,WAAAC;AAAA,IACA,+BAAAC;AAAA,IACA,WAAAC;AAAA,IACA,UAAAC;AAAA,IACA,WAAAC;AAAA,EAAA,IACE,EAAE,GAAGX,GAAgB,GAAGI,EAAA,GAEtBQ,IAA6BC,EAAyB,EAAE,GACxDC,IAAkBD,EAA2B,IAAI,GACjDE,IAA2BF,EAA+B,IAAI,GAE9DG,IAAsBH,EAAmB;AAAA,IAC7C,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,QAAQ;AAAA,EAAA,CACT,GAEKI,IAAmBC;AAAA,IACvB,CAACC,GAAgBC,MAAmC;AAClD,YAAMC,IAAO,KAAK,IAAIF,CAAM,GACtBG,IAAO,KAAK,IAAIF,CAAM;AAE5B,aAAIC,IAAOC,IACFH,IAAS,IAAII,EAAgB,QAAQA,EAAgB,OAGvDH,IAAS,IAAIG,EAAgB,OAAOA,EAAgB;AAAA,IAC7D;AAAA,IACA,CAAA;AAAA,EAAC,GAGGC,IAAgBN,EAAY,CAACO,MAAuC;AACxE,UAAMC,IAAUd,EAA2B;AAc3C,WAZIc,EAAQ,SAASH,EAAgB,IAAI,KAKvCG,EAAQ,SAASH,EAAgB,UAAU,MAC1CE,MAAcF,EAAgB,QAC7BE,MAAcF,EAAgB,UAMhCG,EAAQ,SAASH,EAAgB,QAAQ,MACxCE,MAAcF,EAAgB,MAAME,MAAcF,EAAgB,QAE5D,KAGFG,EAAQ,SAASD,CAAS;AAAA,EACnC,GAAG,CAAA,CAAE,GAECE,IAAoBT;AAAA,IACxB,CAACU,MAAwB;AACvB,MAAKA,EAAM,aAKRvB,EAAkB,SAASuB,EAAM,WAAoC,MAKxEZ,EAAoB,UAAU;AAAA,QAC5B,QAAQY,EAAM;AAAA,QACd,QAAQA,EAAM;AAAA,QACd,WAAW,KAAK,IAAA;AAAA,QAChB,QAAQ;AAAA,MAAA;AAAA,IAEZ;AAAA,IACA,CAACvB,CAAiB;AAAA,EAAA,GAGdwB,IAAWX;AAAA,IACf,CAACU,MAAwB;AACvB,YAAME,IAAQd,EAAoB;AAClC,UAAI,CAACc,EAAM;AACT;AAGF,MAAAA,EAAM,SAAS;AAEf,YAAMC,IAAW,KAAK,IAAA,IAAQD,EAAM;AAEpC,UAAIC,MAAa;AACf;AAGF,YAAMZ,IAASS,EAAM,UAAUE,EAAM,QAC/BV,IAASQ,EAAM,UAAUE,EAAM,QAE/BE,IAAW,KAAK,MAAMb,GAAQC,CAAM,GAEpCa,IAAmBD,IAAWD;AAKpC,UAHIC,IAAWvB,KAGXwB,IAAmBvB;AACrB;AAGF,YAAMe,IAAYR,EAAiBE,GAAQC,CAAM;AACjD,UAAI,CAACI,EAAcC,CAAS;AAC1B;AAUF,MAAAS,EAAkBN,GAAOH,GAPD;AAAA,QACtB,QAAAN;AAAA,QACA,QAAAC;AAAA,QACA,UAAUa;AAAA,QACV,UAAAF;AAAA,MAAA,GAGwC5B,GAAe;AAAA,QACvD,eAAeK;AAAA,QACf,MAAMD;AAAA,QACN,QAAQ,MAAM;AACZ,UAAAQ,EAAyB,SAAS,MAAA;AAAA,QACpC;AAAA,MAAA,CACD;AAAA,IACH;AAAA,IACA;AAAA,MACEN;AAAA,MACAC;AAAA,MACAO;AAAA,MACAO;AAAA,MACArB;AAAA,MACAI;AAAA,MACAC;AAAA,IAAA;AAAA,EACF,GAGI2B,IAAkBjB;AAAA,IACtB,CAACU,MAAwB;AACvB,MAAKA,EAAM,aAIRvB,EAAkB,SAASuB,EAAM,WAAoC,KAIxEC,EAASD,CAAK;AAAA,IAChB;AAAA,IACA,CAACC,GAAUxB,CAAiB;AAAA,EAAA,GAGxB+B,IAAsBlB,EAAY,MAAM;AAC5C,IAAAF,EAAoB,QAAQ,SAAS;AAAA,EACvC,GAAG,CAAA,CAAE;AAEL,EAAAqB,EAAU,MAAM;AACd,IAAAzB,EAA2B,UAAU0B,EAAoBpC,CAAK;AAAA,EAChE,GAAG,CAACA,CAAK,CAAC,GAEVmC,EAAU,MAAM;AACd,IAAAvB,EAAgB,UAAUH,GAAW,WAAW,YAChDI,EAAyB,UAAU,IAAI,gBAAA;AACvC,UAAM,EAAE,QAAAwB,MAAWxB,EAAyB,SAEtCyB,IAAsB,CAACZ,MAC3BA,aAAiB,gBAAgBD,EAAkBC,CAAK,GAEpDa,IAAoB,CAACb,MACzBA,aAAiB,gBAAgBO,EAAgBP,CAAK,GAElDc,IAAwB,MAAMN,EAAA;AAEpC,WAAAtB,EAAgB,QAAQ;AAAA,MACtB;AAAA,MACA0B;AAAA,MACA;AAAA,QACE,SAASlC;AAAA,QACT,QAAAiC;AAAA,MAAA;AAAA,IACF,GAGFzB,EAAgB,QAAQ,iBAAiB,aAAa2B,GAAmB;AAAA,MACvE,SAASnC;AAAA,MACT,QAAAiC;AAAA,IAAA,CACD,GAEDzB,EAAgB,QAAQ;AAAA,MACtB;AAAA,MACA4B;AAAA,MACA;AAAA,QACE,SAASpC;AAAA,QACT,QAAAiC;AAAA,MAAA;AAAA,IACF,GAGK,MAAM;AACX,MAAAxB,EAAyB,SAAS,MAAA,GAElCC,EAAoB,QAAQ,SAAS;AAAA,IACvC;AAAA,EACF,GAAG;AAAA,IACDL;AAAA,IACAL;AAAA,IACAqB;AAAA,IACAQ;AAAA,IACAC;AAAA,EAAA,CACD;AACH;"}
1
+ {"version":3,"file":"use-swipe.js","sources":["../../src/use-swipe/use-swipe.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from \"react\";\nimport {\n SwipeDirection,\n SwipeState,\n SwipeDirections,\n SwipeData,\n SwipeOptions,\n SwipeEventPointerTypes,\n UseSwipeSchema,\n UseSwipeOptions,\n UseSwipeCallback,\n} from \"./use-swipe.types\";\nimport { parseSwipeDirection } from \"./parse-swipe-direction\";\nimport { invokeSwipeAction } from \"./invoke-swipe-action\";\nimport { shouldHandleEvent } from \"./event-guards\";\n\nconst defaultOptions: SwipeOptions = {\n eventPointerTypes: [\n SwipeEventPointerTypes.Touch,\n SwipeEventPointerTypes.Mouse,\n SwipeEventPointerTypes.Pen,\n ],\n eventCapture: false,\n eventOnce: false,\n eventStopImmediatePropagation: false,\n threshold: 50,\n velocity: 0.3,\n container: { current: null },\n};\n\nconst useSwipe = (\n swipe: UseSwipeSchema,\n swipeCallback: UseSwipeCallback,\n options: UseSwipeOptions = {},\n) => {\n const {\n eventPointerTypes,\n eventCapture,\n eventOnce,\n eventStopImmediatePropagation,\n threshold,\n velocity,\n container,\n } = { ...defaultOptions, ...options };\n\n const allowedDirectionsReference = useRef<SwipeDirection[]>([]);\n const targetReference = useRef<EventTarget | null>(null);\n const abortControllerReference = useRef<AbortController | null>(null);\n\n const swipeStateReference = useRef<SwipeState>({\n startX: 0,\n startY: 0,\n startTime: 0,\n active: false,\n });\n\n const resolveDirection = useCallback(\n (deltaX: number, deltaY: number): SwipeDirection => {\n const absX = Math.abs(deltaX);\n const absY = Math.abs(deltaY);\n\n if (absX > absY) {\n return deltaX > 0 ? SwipeDirections.Right : SwipeDirections.Left;\n }\n\n return deltaY > 0 ? SwipeDirections.Down : SwipeDirections.Up;\n },\n [],\n );\n\n const matchesSchema = useCallback((direction: SwipeDirection): boolean => {\n const allowed = allowedDirectionsReference.current;\n\n if (allowed.includes(SwipeDirections.Both)) {\n return true;\n }\n\n if (\n allowed.includes(SwipeDirections.Horizontal) &&\n (direction === SwipeDirections.Left ||\n direction === SwipeDirections.Right)\n ) {\n return true;\n }\n\n if (\n allowed.includes(SwipeDirections.Vertical) &&\n (direction === SwipeDirections.Up || direction === SwipeDirections.Down)\n ) {\n return true;\n }\n\n return allowed.includes(direction);\n }, []);\n\n const handlePointerDown = useCallback(\n (event: PointerEvent) => {\n if (\n !shouldHandleEvent(event, {\n eventPointerTypes,\n })\n ) {\n return;\n }\n\n swipeStateReference.current = {\n startX: event.clientX,\n startY: event.clientY,\n startTime: Date.now(),\n active: true,\n };\n },\n [eventPointerTypes],\n );\n\n const endSwipe = useCallback(\n (event: PointerEvent) => {\n if (\n !shouldHandleEvent(event, {\n eventPointerTypes,\n })\n ) {\n return;\n }\n\n const state = swipeStateReference.current;\n if (!state.active) {\n return;\n }\n\n state.active = false;\n\n const duration = Date.now() - state.startTime;\n\n if (duration === 0) {\n return;\n }\n\n const deltaX = event.clientX - state.startX;\n const deltaY = event.clientY - state.startY;\n\n const distance = Math.hypot(deltaX, deltaY);\n\n const computedVelocity = distance / duration;\n\n if (distance < threshold) {\n return;\n }\n if (computedVelocity < velocity) {\n return;\n }\n\n const direction = resolveDirection(deltaX, deltaY);\n if (!matchesSchema(direction)) {\n return;\n }\n\n const data: SwipeData = {\n deltaX,\n deltaY,\n velocity: computedVelocity,\n duration,\n };\n\n invokeSwipeAction(event, direction, data, swipeCallback, {\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 velocity,\n resolveDirection,\n matchesSchema,\n swipeCallback,\n ],\n );\n\n const handlePointerUp = useCallback(\n (event: PointerEvent) => {\n if (\n !shouldHandleEvent(event, {\n eventPointerTypes,\n })\n ) {\n return;\n }\n\n endSwipe(event);\n },\n [eventPointerTypes, endSwipe],\n );\n\n const handlePointerCancel = useCallback(\n (event: PointerEvent) => {\n if (\n !shouldHandleEvent(event, {\n eventPointerTypes,\n })\n ) {\n return;\n }\n\n swipeStateReference.current.active = false;\n },\n [eventPointerTypes],\n );\n\n useEffect(() => {\n allowedDirectionsReference.current = parseSwipeDirection(swipe);\n }, [swipe]);\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 {\n capture: eventCapture,\n signal,\n },\n );\n\n targetReference.current.addEventListener(\"pointerup\", pointerUpListener, {\n capture: eventCapture,\n signal,\n });\n\n targetReference.current.addEventListener(\n \"pointercancel\",\n pointerCancelListener,\n {\n capture: eventCapture,\n signal,\n },\n );\n\n return () => {\n abortControllerReference.current?.abort();\n\n swipeStateReference.current.active = false;\n };\n }, [\n container,\n eventCapture,\n handlePointerDown,\n handlePointerUp,\n handlePointerCancel,\n ]);\n};\n\nexport default useSwipe;\n"],"names":["defaultOptions","SwipeEventPointerTypes","useSwipe","swipe","swipeCallback","options","eventPointerTypes","eventCapture","eventOnce","eventStopImmediatePropagation","threshold","velocity","container","allowedDirectionsReference","useRef","targetReference","abortControllerReference","swipeStateReference","resolveDirection","useCallback","deltaX","deltaY","absX","absY","SwipeDirections","matchesSchema","direction","allowed","handlePointerDown","event","shouldHandleEvent","endSwipe","state","duration","distance","computedVelocity","invokeSwipeAction","handlePointerUp","handlePointerCancel","useEffect","parseSwipeDirection","signal","pointerDownListener","pointerUpListener","pointerCancelListener"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-swipe.types.js","sources":["../../src/use-swipe/use-swipe.types.ts"],"sourcesContent":["export const SwipeDirections = {\n Left: \"left\",\n Right: \"right\",\n Up: \"up\",\n Down: \"down\",\n Horizontal: \"horizontal\",\n Vertical: \"vertical\",\n Both: \"both\",\n} as const;\n\nexport type SwipeDirection =\n (typeof SwipeDirections)[keyof typeof SwipeDirections];\n\nexport interface SwipeState {\n startX: number;\n startY: number;\n startTime: number;\n active: boolean;\n}\n\nexport const SwipeEventPointerTypes = {\n Touch: \"touch\",\n Mouse: \"mouse\",\n Pen: \"pen\",\n} as const;\n\nexport type SwipeEventPointerType =\n (typeof SwipeEventPointerTypes)[keyof typeof SwipeEventPointerTypes];\n\nexport interface SwipeOptions {\n eventPointerTypes: SwipeEventPointerType[];\n eventCapture: boolean;\n eventOnce: boolean;\n eventStopImmediatePropagation: boolean;\n threshold: number;\n velocity: number;\n container: { current: HTMLElement | null };\n}\n\nexport interface SwipeData {\n deltaX: number;\n deltaY: number;\n velocity: number;\n duration: number;\n}\n\nexport type UseSwipeSchema = SwipeDirection | SwipeDirection[];\n\nexport type UseSwipeCallback =\n | ((\n event: PointerEvent,\n direction: SwipeDirection,\n data: SwipeData,\n ...properties: unknown[]\n ) => boolean)\n | ((\n event: PointerEvent,\n direction: SwipeDirection,\n data: SwipeData,\n ...properties: unknown[]\n ) => void);\n\nexport type UseSwipeOptions = Partial<SwipeOptions>;\n"],"names":["SwipeDirections","SwipeEventPointerTypes"],"mappings":"AAAO,MAAMA,IAAkB;AAAA,EAC7B,MAAM;AAAA,EACN,OAAO;AAAA,EACP,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,MAAM;AACR,GAYaC,IAAyB;AAAA,EACpC,OAAO;AAAA,EACP,OAAO;AAAA,EACP,KAAK;AACP;"}
1
+ {"version":3,"file":"use-swipe.types.js","sources":["../../src/use-swipe/use-swipe.types.ts"],"sourcesContent":["export const SwipeDirections = {\n Left: \"left\",\n Right: \"right\",\n Up: \"up\",\n Down: \"down\",\n Horizontal: \"horizontal\",\n Vertical: \"vertical\",\n Both: \"both\",\n} as const;\n\nexport type SwipeDirection =\n (typeof SwipeDirections)[keyof typeof SwipeDirections];\n\nexport interface SwipeState {\n startX: number;\n startY: number;\n startTime: number;\n active: boolean;\n}\n\nexport const SwipeEventPointerTypes = {\n Touch: \"touch\",\n Mouse: \"mouse\",\n Pen: \"pen\",\n} as const;\n\nexport type SwipeEventPointerType =\n (typeof SwipeEventPointerTypes)[keyof typeof SwipeEventPointerTypes];\n\nexport interface SwipeOptions {\n eventPointerTypes: SwipeEventPointerType[];\n eventCapture: boolean;\n eventOnce: boolean;\n eventStopImmediatePropagation: boolean;\n threshold: number;\n velocity: number;\n container: { current: EventTarget | null };\n}\n\nexport interface SwipeData {\n deltaX: number;\n deltaY: number;\n velocity: number;\n duration: number;\n}\n\nexport type UseSwipeSchema = SwipeDirection | SwipeDirection[];\n\nexport type UseSwipeCallback =\n | ((\n event: PointerEvent,\n direction: SwipeDirection,\n data: SwipeData,\n ...properties: unknown[]\n ) => boolean)\n | ((\n event: PointerEvent,\n direction: SwipeDirection,\n data: SwipeData,\n ...properties: unknown[]\n ) => void);\n\nexport type UseSwipeOptions = Partial<SwipeOptions>;\n"],"names":["SwipeDirections","SwipeEventPointerTypes"],"mappings":"AAAO,MAAMA,IAAkB;AAAA,EAC7B,MAAM;AAAA,EACN,OAAO;AAAA,EACP,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,MAAM;AACR,GAYaC,IAAyB;AAAA,EACpC,OAAO;AAAA,EACP,OAAO;AAAA,EACP,KAAK;AACP;"}
@@ -0,0 +1,7 @@
1
+ const n = (e, r) => !(!e.isPrimary || !r.eventPointerTypes.includes(
2
+ e.pointerType
3
+ ));
4
+ export {
5
+ n as shouldHandleEvent
6
+ };
7
+ //# sourceMappingURL=event-guards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-guards.js","sources":["../../src/use-tap/event-guards.ts"],"sourcesContent":["import { TapEventPointerType } from \"./use-tap.types\";\n\n/**\n * Determines whether a pointer event should be handled based on event options.\n *\n * @param {PointerEvent} event - The pointer event to evaluate\n * @param {Object} options - Event handling options\n * @param {TapEventPointerType[]} options.eventPointerTypes - Allowed pointer types for the event\n * @returns {boolean} True if the event should be handled, false otherwise\n *\n * @example\n * const shouldHandle = shouldHandleEvent(event, {\n * eventPointerTypes: [TapEventPointerTypes.Touch]\n * });\n */\nexport const shouldHandleEvent = (\n event: PointerEvent,\n options: {\n eventPointerTypes: TapEventPointerType[];\n },\n) => {\n if (!event.isPrimary) {\n return false;\n }\n if (\n !options.eventPointerTypes.includes(\n event.pointerType as TapEventPointerType,\n )\n ) {\n return false;\n }\n\n return true;\n};\n"],"names":["shouldHandleEvent","event","options"],"mappings":"AAeO,MAAMA,IAAoB,CAC/BC,GACAC,MAII,GAACD,EAAM,aAIT,CAACC,EAAQ,kBAAkB;AAAA,EACzBD,EAAM;AAAA;"}