@ngutil/aria 0.0.70 → 0.0.71

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.
@@ -0,0 +1,93 @@
1
+ import { map, tap } from "rxjs";
2
+ import { Gesture } from "./gesture";
3
+ const DRAG_LISTENERS = [
4
+ "mousedown",
5
+ "mousemove",
6
+ "mouseup",
7
+ "touchstart",
8
+ "touchmove",
9
+ "touchend",
10
+ "touchcancel"
11
+ ];
12
+ export class GestureDragImpl extends Gesture {
13
+ constructor(options) {
14
+ super("gesture-drag", DRAG_LISTENERS, { includeScrollDistance: true, ...options });
15
+ if (this.horizontal == null && this.vertical == null) {
16
+ this.horizontal = true;
17
+ this.vertical = true;
18
+ }
19
+ }
20
+ capture(events) {
21
+ return events.pipe(map(state => {
22
+ if (state.pointers.length !== 1) {
23
+ return 2 /* GestureCaptureState.Skip */;
24
+ }
25
+ if (Math.abs(state.pointers[0].distance.x) > this.distanceInclusion) {
26
+ return this.horizontal ? 3 /* GestureCaptureState.Maybe */ : 2 /* GestureCaptureState.Skip */;
27
+ }
28
+ if (Math.abs(state.pointers[0].distance.y) > this.distanceInclusion) {
29
+ return this.vertical ? 3 /* GestureCaptureState.Maybe */ : 2 /* GestureCaptureState.Skip */;
30
+ }
31
+ return 1 /* GestureCaptureState.Pending */;
32
+ }));
33
+ }
34
+ handle(events) {
35
+ const updater = this.horizontal && this.vertical
36
+ ? updateAnyDirection
37
+ : this.horizontal
38
+ ? updateHorizontalOnly
39
+ : updateVerticalOnly;
40
+ return super.handle(events).pipe(tap(updater));
41
+ }
42
+ }
43
+ function updateVerticalOnly(event) {
44
+ const pointer = event.pointers[0];
45
+ pointer.distance.x = 0;
46
+ pointer.direction.x = 0;
47
+ pointer.current.x = pointer.start.x;
48
+ updateEvent(event, updateByScrollDistanceVertical);
49
+ }
50
+ function updateHorizontalOnly(event) {
51
+ console.log("updateHorizontalOnly");
52
+ const pointer = event.pointers[0];
53
+ pointer.distance.y = 0;
54
+ pointer.direction.y = 0;
55
+ pointer.current.y = pointer.start.y;
56
+ updateEvent(event, updateByScrollDistanceHorizontal);
57
+ }
58
+ function updateAnyDirection(event) {
59
+ updateEvent(event, updateByScrollDistanceBoth);
60
+ }
61
+ function updateEvent(event, scrollUpdate) {
62
+ event.moveBy = { ...event.pointers[0].distance };
63
+ scrollUpdate(event);
64
+ }
65
+ function updateByScrollDistanceVertical(event) {
66
+ const sd = event.scrollDistance;
67
+ if (sd == null) {
68
+ return;
69
+ }
70
+ event.moveBy.y += sd.y;
71
+ }
72
+ function updateByScrollDistanceHorizontal(event) {
73
+ const sd = event.scrollDistance;
74
+ if (sd == null) {
75
+ return;
76
+ }
77
+ event.moveBy.x += sd.x;
78
+ }
79
+ function updateByScrollDistanceBoth(event) {
80
+ const sd = event.scrollDistance;
81
+ if (sd == null) {
82
+ return;
83
+ }
84
+ event.moveBy.x += sd.x;
85
+ event.moveBy.y += sd.y;
86
+ }
87
+ export function gestureDrag(options) {
88
+ return new GestureDragImpl(options);
89
+ }
90
+ export const GestureDarg = gestureDrag();
91
+ export const GestureDargHorizontal = gestureDrag({ horizontal: true, vertical: false });
92
+ export const GestureDargVertical = gestureDrag({ horizontal: false, vertical: true });
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VzdHVyZS1kcmFnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYXJpYS9zcmMvZ2VzdHVyZXMvZ2VzdHVyZS1kcmFnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQWMsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBTTNDLE9BQU8sRUFBRSxPQUFPLEVBQXVDLE1BQU0sV0FBVyxDQUFBO0FBU3hFLE1BQU0sY0FBYyxHQUFvQztJQUNwRCxXQUFXO0lBQ1gsV0FBVztJQUNYLFNBQVM7SUFDVCxZQUFZO0lBQ1osV0FBVztJQUNYLFVBQVU7SUFDVixhQUFhO0NBQ2hCLENBQUE7QUFFRCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxPQUF5QjtJQUkxRCxZQUFZLE9BQTRCO1FBQ3BDLEtBQUssQ0FBQyxjQUFjLEVBQUUsY0FBYyxFQUFFLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQTtRQUVsRixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbkQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUE7WUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUE7UUFDeEIsQ0FBQztJQUNMLENBQUM7SUFFUSxPQUFPLENBQUMsTUFBZ0M7UUFDN0MsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUNkLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNSLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzlCLHdDQUErQjtZQUNuQyxDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLElB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YixPQUFNO0lBQ1YsQ0FBQztJQUNELEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFDMUIsQ0FBQztBQUVELFNBQVMsMEJBQTBCLENBQUMsS0FBZ0M7SUFDaEUsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQTtJQUMvQixJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNiLE9BQU07SUFDVixDQUFDO0lBQ0QsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUN0QixLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBQzFCLENBQUM7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUFDLE9BQTRCO0lBQ3BELE9BQU8sSUFBSSxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUE7QUFDdkMsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxXQUFXLEVBQUUsQ0FBQTtBQUN4QyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxXQUFXLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFBO0FBQ3ZGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLFdBQVcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtYXAsIE9ic2VydmFibGUsIHRhcCB9IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHsgTXV0YWJsZSB9IGZyb20gXCJ1dGlsaXR5LXR5cGVzXCJcblxuaW1wb3J0IHsgUG9zaXRpb24gfSBmcm9tIFwiQG5ndXRpbC9zdHlsZVwiXG5cbmltcG9ydCB7IEdlc3R1cmUsIEdlc3R1cmVDYXB0dXJlU3RhdGUsIEdlc3R1cmVPcHRpb25zIH0gZnJvbSBcIi4vZ2VzdHVyZVwiXG5pbXBvcnQgeyBHZXN0dXJlRXZlbnQgfSBmcm9tIFwiLi9nZXN0dXJlLWV2ZW50XCJcblxuZXhwb3J0IGludGVyZmFjZSBHZXN0dXJlRHJhZ0V2ZW50IGV4dGVuZHMgR2VzdHVyZUV2ZW50PFwiZ2VzdHVyZS1kcmFnXCI+IHtcbiAgICBtb3ZlQnk6IFBvc2l0aW9uXG59XG5cbmV4cG9ydCB0eXBlIEdlc3R1cmVEcmFnT3B0aW9ucyA9IEdlc3R1cmVPcHRpb25zPEdlc3R1cmVEcmFnSW1wbD5cblxuY29uc3QgRFJBR19MSVNURU5FUlM6IEdlc3R1cmU8YW55PltcImZpbHRlckxpc3RlbmVyc1wiXSA9IFtcbiAgICBcIm1vdXNlZG93blwiLFxuICAgIFwibW91c2Vtb3ZlXCIsXG4gICAgXCJtb3VzZXVwXCIsXG4gICAgXCJ0b3VjaHN0YXJ0XCIsXG4gICAgXCJ0b3VjaG1vdmVcIixcbiAgICBcInRvdWNoZW5kXCIsXG4gICAgXCJ0b3VjaGNhbmNlbFwiXG5dXG5cbmV4cG9ydCBjbGFzcyBHZXN0dXJlRHJhZ0ltcGwgZXh0ZW5kcyBHZXN0dXJlPEdlc3R1cmVEcmFnRXZlbnQ+IHtcbiAgICByZWFkb25seSBob3Jpem9udGFsPzogYm9vbGVhblxuICAgIHJlYWRvbmx5IHZlcnRpY2FsPzogYm9vbGVhblxuXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucz86IEdlc3R1cmVEcmFnT3B0aW9ucykge1xuICAgICAgICBzdXBlcihcImdlc3R1cmUtZHJhZ1wiLCBEUkFHX0xJU1RFTkVSUywgeyBpbmNsdWRlU2Nyb2xsRGlzdGFuY2U6IHRydWUsIC4uLm9wdGlvbnMgfSlcblxuICAgICAgICBpZiAodGhpcy5ob3Jpem9udGFsID09IG51bGwgJiYgdGhpcy52ZXJ0aWNhbCA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmhvcml6b250YWwgPSB0cnVlXG4gICAgICAgICAgICB0aGlzLnZlcnRpY2FsID0gdHJ1ZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgY2FwdHVyZShldmVudHM6IE9ic2VydmFibGU8R2VzdHVyZUV2ZW50Pik6IE9ic2VydmFibGU8R2VzdHVyZUNhcHR1cmVTdGF0ZT4ge1xuICAgICAgICByZXR1cm4gZXZlbnRzLnBpcGUoXG4gICAgICAgICAgICBtYXAoc3RhdGUgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5wb2ludGVycy5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdlc3R1cmVDYXB0dXJlU3RhdGUuU2tpcFxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhzdGF0ZS5wb2ludGVyc1swXS5kaXN0YW5jZS54KSA+IHRoaXMuZGlzdGFuY2VJbmNsdXNpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaG9yaXpvbnRhbCA/IEdlc3R1cmVDYXB0dXJlU3RhdGUuTWF5YmUgOiBHZXN0dXJlQ2FwdHVyZVN0YXRlLlNraXBcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMoc3RhdGUucG9pbnRlcnNbMF0uZGlzdGFuY2UueSkgPiB0aGlzLmRpc3RhbmNlSW5jbHVzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnZlcnRpY2FsID8gR2VzdHVyZUNhcHR1cmVTdGF0ZS5NYXliZSA6IEdlc3R1cmVDYXB0dXJlU3RhdGUuU2tpcFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gR2VzdHVyZUNhcHR1cmVTdGF0ZS5QZW5kaW5nXG4gICAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgaGFuZGxlKGV2ZW50czogT2JzZXJ2YWJsZTxHZXN0dXJlRXZlbnQ+KSB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZXIgPVxuICAgICAgICAgICAgdGhpcy5ob3Jpem9udGFsICYmIHRoaXMudmVydGljYWxcbiAgICAgICAgICAgICAgICA/IHVwZGF0ZUFueURpcmVjdGlvblxuICAgICAgICAgICAgICAgIDogdGhpcy5ob3Jpem9udGFsXG4gICAgICAgICAgICAgICAgICA/IHVwZGF0ZUhvcml6b250YWxPbmx5XG4gICAgICAgICAgICAgICAgICA6IHVwZGF0ZVZlcnRpY2FsT25seVxuXG4gICAgICAgIHJldHVybiBzdXBlci5oYW5kbGUoZXZlbnRzKS5waXBlKHRhcCh1cGRhdGVyKSlcbiAgICB9XG59XG5cbnR5cGUgVXBkYXRlckZuID0gKGV2ZW50OiBNdXRhYmxlPEdlc3R1cmVEcmFnRXZlbnQ+KSA9PiB2b2lkXG5cbmZ1bmN0aW9uIHVwZGF0ZVZlcnRpY2FsT25seShldmVudDogTXV0YWJsZTxHZXN0dXJlRHJhZ0V2ZW50Pikge1xuICAgIGNvbnN0IHBvaW50ZXIgPSBldmVudC5wb2ludGVyc1swXVxuICAgIHBvaW50ZXIuZGlzdGFuY2UueCA9IDBcbiAgICBwb2ludGVyLmRpcmVjdGlvbi54ID0gMFxuICAgIHBvaW50ZXIuY3VycmVudC54ID0gcG9pbnRlci5zdGFydC54XG4gICAgdXBkYXRlRXZlbnQoZXZlbnQsIHVwZGF0ZUJ5U2Nyb2xsRGlzdGFuY2VWZXJ0aWNhbClcbn1cblxuZnVuY3Rpb24gdXBkYXRlSG9yaXpvbnRhbE9ubHkoZXZlbnQ6IE11dGFibGU8R2VzdHVyZURyYWdFdmVudD4pIHtcbiAgICBjb25zb2xlLmxvZyhcInVwZGF0ZUhvcml6b250YWxPbmx5XCIpXG4gICAgY29uc3QgcG9pbnRlciA9IGV2ZW50LnBvaW50ZXJzWzBdXG4gICAgcG9pbnRlci5kaXN0YW5jZS55ID0gMFxuICAgIHBvaW50ZXIuZGlyZWN0aW9uLnkgPSAwXG4gICAgcG9pbnRlci5jdXJyZW50LnkgPSBwb2ludGVyLnN0YXJ0LnlcbiAgICB1cGRhdGVFdmVudChldmVudCwgdXBkYXRlQnlTY3JvbGxEaXN0YW5jZUhvcml6b250YWwpXG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUFueURpcmVjdGlvbihldmVudDogTXV0YWJsZTxHZXN0dXJlRHJhZ0V2ZW50Pikge1xuICAgIHVwZGF0ZUV2ZW50KGV2ZW50LCB1cGRhdGVCeVNjcm9sbERpc3RhbmNlQm90aClcbn1cblxuZnVuY3Rpb24gdXBkYXRlRXZlbnQoZXZlbnQ6IE11dGFibGU8R2VzdHVyZURyYWdFdmVudD4sIHNjcm9sbFVwZGF0ZTogVXBkYXRlckZuKSB7XG4gICAgZXZlbnQubW92ZUJ5ID0geyAuLi5ldmVudC5wb2ludGVyc1swXS5kaXN0YW5jZSB9XG4gICAgc2Nyb2xsVXBkYXRlKGV2ZW50KVxufVxuXG5mdW5jdGlvbiB1cGRhdGVCeVNjcm9sbERpc3RhbmNlVmVydGljYWwoZXZlbnQ6IE11dGFibGU8R2VzdHVyZURyYWdFdmVudD4pIHtcbiAgICBjb25zdCBzZCA9IGV2ZW50LnNjcm9sbERpc3RhbmNlXG4gICAgaWYgKHNkID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGV2ZW50Lm1vdmVCeS55ICs9IHNkLnlcbn1cblxuZnVuY3Rpb24gdXBkYXRlQnlTY3JvbGxEaXN0YW5jZUhvcml6b250YWwoZXZlbnQ6IE11dGFibGU8R2VzdHVyZURyYWdFdmVudD4pIHtcbiAgICBjb25zdCBzZCA9IGV2ZW50LnNjcm9sbERpc3RhbmNlXG4gICAgaWYgKHNkID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGV2ZW50Lm1vdmVCeS54ICs9IHNkLnhcbn1cblxuZnVuY3Rpb24gdXBkYXRlQnlTY3JvbGxEaXN0YW5jZUJvdGgoZXZlbnQ6IE11dGFibGU8R2VzdHVyZURyYWdFdmVudD4pIHtcbiAgICBjb25zdCBzZCA9IGV2ZW50LnNjcm9sbERpc3RhbmNlXG4gICAgaWYgKHNkID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGV2ZW50Lm1vdmVCeS54ICs9IHNkLnhcbiAgICBldmVudC5tb3ZlQnkueSArPSBzZC55XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXN0dXJlRHJhZyhvcHRpb25zPzogR2VzdHVyZURyYWdPcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBHZXN0dXJlRHJhZ0ltcGwob3B0aW9ucylcbn1cblxuZXhwb3J0IGNvbnN0IEdlc3R1cmVEYXJnID0gZ2VzdHVyZURyYWcoKVxuZXhwb3J0IGNvbnN0IEdlc3R1cmVEYXJnSG9yaXpvbnRhbCA9IGdlc3R1cmVEcmFnKHsgaG9yaXpvbnRhbDogdHJ1ZSwgdmVydGljYWw6IGZhbHNlIH0pXG5leHBvcnQgY29uc3QgR2VzdHVyZURhcmdWZXJ0aWNhbCA9IGdlc3R1cmVEcmFnKHsgaG9yaXpvbnRhbDogZmFsc2UsIHZlcnRpY2FsOiB0cnVlIH0pXG4iXX0=
@@ -0,0 +1,44 @@
1
+ export const Listeners = {
2
+ mousedown: {
3
+ pointerType: "mouse" /* GesturePointerType.Mouse */,
4
+ phase: "start" /* GesturePhase.Start */,
5
+ options: { capture: true, passive: false }
6
+ },
7
+ mousemove: {
8
+ pointerType: "mouse" /* GesturePointerType.Mouse */,
9
+ phase: "moving" /* GesturePhase.Moving */,
10
+ options: { capture: true, passive: false }
11
+ },
12
+ mouseup: {
13
+ pointerType: "mouse" /* GesturePointerType.Mouse */,
14
+ phase: "end" /* GesturePhase.End */,
15
+ options: { capture: true, passive: false }
16
+ },
17
+ touchstart: {
18
+ pointerType: "touch" /* GesturePointerType.Touch */,
19
+ phase: "start" /* GesturePhase.Start */,
20
+ options: { capture: true, passive: false }
21
+ },
22
+ touchmove: {
23
+ pointerType: "touch" /* GesturePointerType.Touch */,
24
+ phase: "moving" /* GesturePhase.Moving */,
25
+ options: { capture: true, passive: false }
26
+ },
27
+ touchend: {
28
+ pointerType: "touch" /* GesturePointerType.Touch */,
29
+ phase: "end" /* GesturePhase.End */,
30
+ options: { capture: true, passive: false }
31
+ },
32
+ touchcancel: {
33
+ pointerType: "touch" /* GesturePointerType.Touch */,
34
+ phase: "end" /* GesturePhase.End */,
35
+ options: { capture: true, passive: false }
36
+ }
37
+ // ,
38
+ // contextmenu: {
39
+ // pointerType: GesturePointerType.Mouse,
40
+ // phase: GesturePhase.Start,
41
+ // options: { capture: true, passive: false }
42
+ // }
43
+ };
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VzdHVyZS1ldmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FyaWEvc3JjL2dlc3R1cmVzL2dlc3R1cmUtZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBK0NBLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBNkM7SUFDL0QsU0FBUyxFQUFFO1FBQ1AsV0FBVyx3Q0FBMEI7UUFDckMsS0FBSyxrQ0FBb0I7UUFDekIsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFO0tBQzdDO0lBQ0QsU0FBUyxFQUFFO1FBQ1AsV0FBVyx3Q0FBMEI7UUFDckMsS0FBSyxvQ0FBcUI7UUFDMUIsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFO0tBQzdDO0lBQ0QsT0FBTyxFQUFFO1FBQ0wsV0FBVyx3Q0FBMEI7UUFDckMsS0FBSyw4QkFBa0I7UUFDdkIsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFO0tBQzdDO0lBQ0QsVUFBVSxFQUFFO1FBQ1IsV0FBVyx3Q0FBMEI7UUFDckMsS0FBSyxrQ0FBb0I7UUFDekIsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFO0tBQzdDO0lBQ0QsU0FBUyxFQUFFO1FBQ1AsV0FBVyx3Q0FBMEI7UUFDckMsS0FBSyxvQ0FBcUI7UUFDMUIsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFO0tBQzdDO0lBQ0QsUUFBUSxFQUFFO1FBQ04sV0FBVyx3Q0FBMEI7UUFDckMsS0FBSyw4QkFBa0I7UUFDdkIsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFO0tBQzdDO0lBQ0QsV0FBVyxFQUFFO1FBQ1QsV0FBVyx3Q0FBMEI7UUFDckMsS0FBSyw4QkFBa0I7UUFDdkIsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFO0tBQzdDO0lBQ0QsSUFBSTtJQUNKLGlCQUFpQjtJQUNqQiw2Q0FBNkM7SUFDN0MsaUNBQWlDO0lBQ2pDLGlEQUFpRDtJQUNqRCxJQUFJO0NBQ0UsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBvc2l0aW9uIH0gZnJvbSBcIkBuZ3V0aWwvc3R5bGVcIlxuXG4vLyBleHBvcnQgaW50ZXJmYWNlIEdlc3R1cmVEb21FdmVudDxUIGV4dGVuZHM+IGV4dGVuZHMgQ3VzdG9tRXZlbnQgeyB9XG5leHBvcnQgdHlwZSBHZXN0dXJlRG9tRXZlbnQ8VCBleHRlbmRzIEdlc3R1cmVFdmVudD4gPVxuICAgIFQgZXh0ZW5kcyBHZXN0dXJlRXZlbnQ8aW5mZXIgTj4gPyBDdXN0b21FdmVudDxUPiAmIHsgdHlwZTogTiB9IDogbmV2ZXJcblxuZXhwb3J0IGludGVyZmFjZSBHZXN0dXJlRXZlbnQ8VCBleHRlbmRzIHN0cmluZyA9IHN0cmluZz4ge1xuICAgIHJlYWRvbmx5IHR5cGU6IFRcbiAgICByZWFkb25seSBvcmlnaW46IEdlc3R1cmVPcmlnaW5cbiAgICByZWFkb25seSB0YXJnZXQ6IEhUTUxFbGVtZW50XG4gICAgcmVhZG9ubHkgcG9pbnRlclR5cGU6IEdlc3R1cmVQb2ludGVyVHlwZVxuICAgIHJlYWRvbmx5IHBoYXNlOiBHZXN0dXJlUGhhc2VcbiAgICByZWFkb25seSBwb2ludGVyczogUmVhZG9ubHlBcnJheTxHZXN0dXJlUG9pbnRlcj5cbiAgICByZWFkb25seSB0aW1lU3RhbXA6IG51bWJlclxuICAgIHJlYWRvbmx5IGVsYXBzZWQ6IG51bWJlclxuICAgIHJlYWRvbmx5IHNjcm9sbERpc3RhbmNlPzogUG9zaXRpb25cbn1cblxuZXhwb3J0IHR5cGUgUG9pbnRlcnNQb3NpdGlvbiA9IFJlYWRvbmx5QXJyYXk8UmVhZG9ubHk8UG9zaXRpb24+PlxuXG5leHBvcnQgaW50ZXJmYWNlIEdlc3R1cmVQb2ludGVyIHtcbiAgICByZWFkb25seSBzdGFydDogUG9zaXRpb25cbiAgICByZWFkb25seSBjdXJyZW50OiBQb3NpdGlvblxuICAgIHJlYWRvbmx5IGVuZD86IFBvc2l0aW9uXG4gICAgcmVhZG9ubHkgZGlzdGFuY2U6IFBvc2l0aW9uXG4gICAgcmVhZG9ubHkgZGlyZWN0aW9uOiB7IHg6IC0xIHwgMCB8IDE7IHk6IC0xIHwgMCB8IDEgfVxufVxuXG5leHBvcnQgdHlwZSBHZXN0dXJlT3JpZ2luID0gTW91c2VFdmVudCB8IFRvdWNoRXZlbnRcblxuZXhwb3J0IGNvbnN0IGVudW0gR2VzdHVyZVBvaW50ZXJUeXBlIHtcbiAgICBNb3VzZSA9IFwibW91c2VcIixcbiAgICBUb3VjaCA9IFwidG91Y2hcIlxufVxuXG5leHBvcnQgY29uc3QgZW51bSBHZXN0dXJlUGhhc2Uge1xuICAgIFN0YXJ0ID0gXCJzdGFydFwiLFxuICAgIE1vdmluZyA9IFwibW92aW5nXCIsXG4gICAgRW5kID0gXCJlbmRcIlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdlc3R1cmVMaXN0ZW5lckNvbmZpZyB7XG4gICAgb3B0aW9ucz86IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zXG4gICAgcG9pbnRlclR5cGU6IEdlc3R1cmVQb2ludGVyVHlwZVxuICAgIHBoYXNlOiBHZXN0dXJlUGhhc2Vcbn1cblxuZXhwb3J0IGNvbnN0IExpc3RlbmVyczogeyBba2V5OiBzdHJpbmddOiBHZXN0dXJlTGlzdGVuZXJDb25maWcgfSA9IHtcbiAgICBtb3VzZWRvd246IHtcbiAgICAgICAgcG9pbnRlclR5cGU6IEdlc3R1cmVQb2ludGVyVHlwZS5Nb3VzZSxcbiAgICAgICAgcGhhc2U6IEdlc3R1cmVQaGFzZS5TdGFydCxcbiAgICAgICAgb3B0aW9uczogeyBjYXB0dXJlOiB0cnVlLCBwYXNzaXZlOiBmYWxzZSB9XG4gICAgfSxcbiAgICBtb3VzZW1vdmU6IHtcbiAgICAgICAgcG9pbnRlclR5cGU6IEdlc3R1cmVQb2ludGVyVHlwZS5Nb3VzZSxcbiAgICAgICAgcGhhc2U6IEdlc3R1cmVQaGFzZS5Nb3ZpbmcsXG4gICAgICAgIG9wdGlvbnM6IHsgY2FwdHVyZTogdHJ1ZSwgcGFzc2l2ZTogZmFsc2UgfVxuICAgIH0sXG4gICAgbW91c2V1cDoge1xuICAgICAgICBwb2ludGVyVHlwZTogR2VzdHVyZVBvaW50ZXJUeXBlLk1vdXNlLFxuICAgICAgICBwaGFzZTogR2VzdHVyZVBoYXNlLkVuZCxcbiAgICAgICAgb3B0aW9uczogeyBjYXB0dXJlOiB0cnVlLCBwYXNzaXZlOiBmYWxzZSB9XG4gICAgfSxcbiAgICB0b3VjaHN0YXJ0OiB7XG4gICAgICAgIHBvaW50ZXJUeXBlOiBHZXN0dXJlUG9pbnRlclR5cGUuVG91Y2gsXG4gICAgICAgIHBoYXNlOiBHZXN0dXJlUGhhc2UuU3RhcnQsXG4gICAgICAgIG9wdGlvbnM6IHsgY2FwdHVyZTogdHJ1ZSwgcGFzc2l2ZTogZmFsc2UgfVxuICAgIH0sXG4gICAgdG91Y2htb3ZlOiB7XG4gICAgICAgIHBvaW50ZXJUeXBlOiBHZXN0dXJlUG9pbnRlclR5cGUuVG91Y2gsXG4gICAgICAgIHBoYXNlOiBHZXN0dXJlUGhhc2UuTW92aW5nLFxuICAgICAgICBvcHRpb25zOiB7IGNhcHR1cmU6IHRydWUsIHBhc3NpdmU6IGZhbHNlIH1cbiAgICB9LFxuICAgIHRvdWNoZW5kOiB7XG4gICAgICAgIHBvaW50ZXJUeXBlOiBHZXN0dXJlUG9pbnRlclR5cGUuVG91Y2gsXG4gICAgICAgIHBoYXNlOiBHZXN0dXJlUGhhc2UuRW5kLFxuICAgICAgICBvcHRpb25zOiB7IGNhcHR1cmU6IHRydWUsIHBhc3NpdmU6IGZhbHNlIH1cbiAgICB9LFxuICAgIHRvdWNoY2FuY2VsOiB7XG4gICAgICAgIHBvaW50ZXJUeXBlOiBHZXN0dXJlUG9pbnRlclR5cGUuVG91Y2gsXG4gICAgICAgIHBoYXNlOiBHZXN0dXJlUGhhc2UuRW5kLFxuICAgICAgICBvcHRpb25zOiB7IGNhcHR1cmU6IHRydWUsIHBhc3NpdmU6IGZhbHNlIH1cbiAgICB9XG4gICAgLy8gLFxuICAgIC8vIGNvbnRleHRtZW51OiB7XG4gICAgLy8gICAgIHBvaW50ZXJUeXBlOiBHZXN0dXJlUG9pbnRlclR5cGUuTW91c2UsXG4gICAgLy8gICAgIHBoYXNlOiBHZXN0dXJlUGhhc2UuU3RhcnQsXG4gICAgLy8gICAgIG9wdGlvbnM6IHsgY2FwdHVyZTogdHJ1ZSwgcGFzc2l2ZTogZmFsc2UgfVxuICAgIC8vIH1cbn0gYXMgY29uc3RcbiJdfQ==
@@ -0,0 +1,36 @@
1
+ import { combineLatest, filter, map, startWith, timer } from "rxjs";
2
+ import { Gesture } from "./gesture";
3
+ export class GestureLongTapImpl extends Gesture {
4
+ constructor(options) {
5
+ super("gesture-longtap", ["touchstart", "touchmove", "touchend", "touchcancel"], {
6
+ filterPointerTypes: ["touch" /* GesturePointerType.Touch */],
7
+ ...options
8
+ });
9
+ }
10
+ capture(events) {
11
+ return combineLatest({ timeWithin: timer(this.timeWithin).pipe(startWith(null)), event: events }).pipe(map(({ timeWithin, event }) => {
12
+ if (event.pointers.length !== 1 || event.elapsed > this.timeWithin) {
13
+ return 2 /* GestureCaptureState.Skip */;
14
+ }
15
+ if (event.phase === "end" /* GesturePhase.End */ && event.elapsed > this.timeWithin) {
16
+ return 2 /* GestureCaptureState.Skip */;
17
+ }
18
+ const distance = event.pointers[0].distance;
19
+ if (Math.abs(distance.x) < this.distanceInclusion && Math.abs(distance.y) < this.distanceInclusion) {
20
+ // maybe is ok event.phase === GesturePhase.End
21
+ return timeWithin !== null ? 4 /* GestureCaptureState.Instant */ : 1 /* GestureCaptureState.Pending */;
22
+ }
23
+ else {
24
+ return 2 /* GestureCaptureState.Skip */;
25
+ }
26
+ }));
27
+ }
28
+ handle(events) {
29
+ return super.handle(events.pipe(filter(event => event.phase === "start" /* GesturePhase.Start */ || event.phase === "end" /* GesturePhase.End */)));
30
+ }
31
+ }
32
+ export function gestureLongTap(options) {
33
+ return new GestureLongTapImpl(options);
34
+ }
35
+ export const GestureLongTap = gestureLongTap();
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VzdHVyZS1sb25ndGFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYXJpYS9zcmMvZ2VzdHVyZXMvZ2VzdHVyZS1sb25ndGFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYyxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBRS9FLE9BQU8sRUFBRSxPQUFPLEVBQXVDLE1BQU0sV0FBVyxDQUFBO0FBTXhFLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxPQUE0QjtJQUNoRSxZQUFZLE9BQStCO1FBQ3ZDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBQyxFQUFFO1lBQzdFLGtCQUFrQixFQUFFLHdDQUEwQjtZQUM5QyxHQUFHLE9BQU87U0FDYixDQUFDLENBQUE7SUFDTixDQUFDO0lBRVEsT0FBTyxDQUFDLE1BQWdDO1FBQzdDLE9BQU8sYUFBYSxDQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDbEcsR0FBRyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUMxQixJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDakUsd0NBQStCO1lBQ25DLENBQUM7WUFFRCxJQUFJLEtBQUssQ0FBQyxLQUFLLGlDQUFxQixJQUFJLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUN0RSx3Q0FBK0I7WUFDbkMsQ0FBQztZQUVELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFBO1lBRTNDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUNqRywrQ0FBK0M7Z0JBQy9DLE9BQU8sVUFBVSxLQUFLLElBQUksQ0FBQyxDQUFDLHFDQUE2QixDQUFDLG9DQUE0QixDQUFBO1lBQzFGLENBQUM7aUJBQU0sQ0FBQztnQkFDSix3Q0FBK0I7WUFDbkMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUNMLENBQUE7SUFDTCxDQUFDO0lBRVEsTUFBTSxDQUFDLE1BQWdDO1FBQzVDLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FDZixNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLHFDQUF1QixJQUFJLEtBQUssQ0FBQyxLQUFLLGlDQUFxQixDQUFDLENBQUMsQ0FDdkcsQ0FBQTtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsT0FBK0I7SUFDMUQsT0FBTyxJQUFJLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFBO0FBQzFDLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsY0FBYyxFQUFFLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgc3RhcnRXaXRoLCB0aW1lciB9IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHsgR2VzdHVyZSwgR2VzdHVyZUNhcHR1cmVTdGF0ZSwgR2VzdHVyZU9wdGlvbnMgfSBmcm9tIFwiLi9nZXN0dXJlXCJcbmltcG9ydCB7IEdlc3R1cmVFdmVudCwgR2VzdHVyZVBoYXNlLCBHZXN0dXJlUG9pbnRlclR5cGUgfSBmcm9tIFwiLi9nZXN0dXJlLWV2ZW50XCJcblxuZXhwb3J0IHR5cGUgR2VzdHVyZUxvbmd0YXBFdmVudCA9IEdlc3R1cmVFdmVudDxcImdlc3R1cmUtbG9uZ3RhcFwiPlxuZXhwb3J0IHR5cGUgR2VzdHVyZUxvbmd0YXBPcHRpb25zID0gR2VzdHVyZU9wdGlvbnM8R2VzdHVyZUxvbmdUYXBJbXBsPlxuXG5leHBvcnQgY2xhc3MgR2VzdHVyZUxvbmdUYXBJbXBsIGV4dGVuZHMgR2VzdHVyZTxHZXN0dXJlTG9uZ3RhcEV2ZW50PiB7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucz86IEdlc3R1cmVMb25ndGFwT3B0aW9ucykge1xuICAgICAgICBzdXBlcihcImdlc3R1cmUtbG9uZ3RhcFwiLCBbXCJ0b3VjaHN0YXJ0XCIsIFwidG91Y2htb3ZlXCIsIFwidG91Y2hlbmRcIiwgXCJ0b3VjaGNhbmNlbFwiXSwge1xuICAgICAgICAgICAgZmlsdGVyUG9pbnRlclR5cGVzOiBbR2VzdHVyZVBvaW50ZXJUeXBlLlRvdWNoXSxcbiAgICAgICAgICAgIC4uLm9wdGlvbnNcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBvdmVycmlkZSBjYXB0dXJlKGV2ZW50czogT2JzZXJ2YWJsZTxHZXN0dXJlRXZlbnQ+KTogT2JzZXJ2YWJsZTxHZXN0dXJlQ2FwdHVyZVN0YXRlPiB7XG4gICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KHsgdGltZVdpdGhpbjogdGltZXIodGhpcy50aW1lV2l0aGluKS5waXBlKHN0YXJ0V2l0aChudWxsKSksIGV2ZW50OiBldmVudHMgfSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoeyB0aW1lV2l0aGluLCBldmVudCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LnBvaW50ZXJzLmxlbmd0aCAhPT0gMSB8fCBldmVudC5lbGFwc2VkID4gdGhpcy50aW1lV2l0aGluKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBHZXN0dXJlQ2FwdHVyZVN0YXRlLlNraXBcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQucGhhc2UgPT09IEdlc3R1cmVQaGFzZS5FbmQgJiYgZXZlbnQuZWxhcHNlZCA+IHRoaXMudGltZVdpdGhpbikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2VzdHVyZUNhcHR1cmVTdGF0ZS5Ta2lwXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBldmVudC5wb2ludGVyc1swXS5kaXN0YW5jZVxuXG4gICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKGRpc3RhbmNlLngpIDwgdGhpcy5kaXN0YW5jZUluY2x1c2lvbiAmJiBNYXRoLmFicyhkaXN0YW5jZS55KSA8IHRoaXMuZGlzdGFuY2VJbmNsdXNpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gbWF5YmUgaXMgb2sgZXZlbnQucGhhc2UgPT09IEdlc3R1cmVQaGFzZS5FbmRcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRpbWVXaXRoaW4gIT09IG51bGwgPyBHZXN0dXJlQ2FwdHVyZVN0YXRlLkluc3RhbnQgOiBHZXN0dXJlQ2FwdHVyZVN0YXRlLlBlbmRpbmdcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2VzdHVyZUNhcHR1cmVTdGF0ZS5Ta2lwXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgIH1cblxuICAgIG92ZXJyaWRlIGhhbmRsZShldmVudHM6IE9ic2VydmFibGU8R2VzdHVyZUV2ZW50Pikge1xuICAgICAgICByZXR1cm4gc3VwZXIuaGFuZGxlKFxuICAgICAgICAgICAgZXZlbnRzLnBpcGUoZmlsdGVyKGV2ZW50ID0+IGV2ZW50LnBoYXNlID09PSBHZXN0dXJlUGhhc2UuU3RhcnQgfHwgZXZlbnQucGhhc2UgPT09IEdlc3R1cmVQaGFzZS5FbmQpKVxuICAgICAgICApXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VzdHVyZUxvbmdUYXAob3B0aW9ucz86IEdlc3R1cmVMb25ndGFwT3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgR2VzdHVyZUxvbmdUYXBJbXBsKG9wdGlvbnMpXG59XG5cbmV4cG9ydCBjb25zdCBHZXN0dXJlTG9uZ1RhcCA9IGdlc3R1cmVMb25nVGFwKClcbiJdfQ==
@@ -0,0 +1,33 @@
1
+ import { filter, map } from "rxjs";
2
+ import { Gesture } from "./gesture";
3
+ export class GestureTapImpl extends Gesture {
4
+ constructor(options) {
5
+ super("gesture-tap", ["touchstart", "touchmove", "touchend", "touchcancel", "mousedown", "mousemove", "mouseup"], {
6
+ filterPointerTypes: ["mouse" /* GesturePointerType.Mouse */, "touch" /* GesturePointerType.Touch */],
7
+ ...options
8
+ });
9
+ }
10
+ // TODO
11
+ capture(events) {
12
+ return events.pipe(map(event => {
13
+ if (event.pointers.length !== 1) {
14
+ return 2 /* GestureCaptureState.Skip */;
15
+ }
16
+ const distance = event.pointers[0].distance;
17
+ if (Math.abs(distance.x) < this.distanceInclusion && Math.abs(distance.y) < this.distanceInclusion) {
18
+ return event.phase === "end" /* GesturePhase.End */ ? 4 /* GestureCaptureState.Instant */ : 1 /* GestureCaptureState.Pending */;
19
+ }
20
+ else {
21
+ return 2 /* GestureCaptureState.Skip */;
22
+ }
23
+ }));
24
+ }
25
+ handle(events) {
26
+ return super.handle(events.pipe(filter(event => event.phase === "start" /* GesturePhase.Start */ || event.phase === "end" /* GesturePhase.End */)));
27
+ }
28
+ }
29
+ export function gestureTap(options) {
30
+ return new GestureTapImpl(options);
31
+ }
32
+ export const GestureTap = gestureTap();
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VzdHVyZS10YXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hcmlhL3NyYy9nZXN0dXJlcy9nZXN0dXJlLXRhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYyxNQUFNLE1BQU0sQ0FBQTtBQUU5QyxPQUFPLEVBQUUsT0FBTyxFQUF1QyxNQUFNLFdBQVcsQ0FBQTtBQU14RSxNQUFNLE9BQU8sY0FBZSxTQUFRLE9BQXdCO0lBQ3hELFlBQVksT0FBMkI7UUFDbkMsS0FBSyxDQUNELGFBQWEsRUFDYixDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQyxFQUMzRjtZQUNJLGtCQUFrQixFQUFFLGdGQUFvRDtZQUN4RSxHQUFHLE9BQU87U0FDYixDQUNKLENBQUE7SUFDTCxDQUFDO0lBRUQsT0FBTztJQUNFLE9BQU8sQ0FBQyxNQUFnQztRQUM3QyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQ2QsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ1IsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDOUIsd0NBQStCO1lBQ25DLENBQUM7WUFFRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQTtZQUMzQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDakcsT0FBTyxLQUFLLENBQUMsS0FBSyxpQ0FBcUIsQ0FBQyxDQUFDLHFDQUE2QixDQUFDLG9DQUE0QixDQUFBO1lBQ3ZHLENBQUM7aUJBQU0sQ0FBQztnQkFDSix3Q0FBK0I7WUFDbkMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUNMLENBQUE7SUFDTCxDQUFDO0lBRVEsTUFBTSxDQUFDLE1BQWdDO1FBQzVDLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FDZixNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLHFDQUF1QixJQUFJLEtBQUssQ0FBQyxLQUFLLGlDQUFxQixDQUFDLENBQUMsQ0FDdkcsQ0FBQTtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sVUFBVSxVQUFVLENBQUMsT0FBMkI7SUFDbEQsT0FBTyxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtBQUN0QyxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLFVBQVUsRUFBRSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmlsdGVyLCBtYXAsIE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiXG5cbmltcG9ydCB7IEdlc3R1cmUsIEdlc3R1cmVDYXB0dXJlU3RhdGUsIEdlc3R1cmVPcHRpb25zIH0gZnJvbSBcIi4vZ2VzdHVyZVwiXG5pbXBvcnQgeyBHZXN0dXJlRXZlbnQsIEdlc3R1cmVQaGFzZSwgR2VzdHVyZVBvaW50ZXJUeXBlIH0gZnJvbSBcIi4vZ2VzdHVyZS1ldmVudFwiXG5cbmV4cG9ydCB0eXBlIEdlc3R1cmVUYXBFdmVudCA9IEdlc3R1cmVFdmVudDxcImdlc3R1cmUtdGFwXCI+XG5leHBvcnQgdHlwZSBHZXN0dXJlVGFwT3B0aW9ucyA9IEdlc3R1cmVPcHRpb25zPEdlc3R1cmVUYXBJbXBsPlxuXG5leHBvcnQgY2xhc3MgR2VzdHVyZVRhcEltcGwgZXh0ZW5kcyBHZXN0dXJlPEdlc3R1cmVUYXBFdmVudD4ge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBHZXN0dXJlVGFwT3B0aW9ucykge1xuICAgICAgICBzdXBlcihcbiAgICAgICAgICAgIFwiZ2VzdHVyZS10YXBcIixcbiAgICAgICAgICAgIFtcInRvdWNoc3RhcnRcIiwgXCJ0b3VjaG1vdmVcIiwgXCJ0b3VjaGVuZFwiLCBcInRvdWNoY2FuY2VsXCIsIFwibW91c2Vkb3duXCIsIFwibW91c2Vtb3ZlXCIsIFwibW91c2V1cFwiXSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmaWx0ZXJQb2ludGVyVHlwZXM6IFtHZXN0dXJlUG9pbnRlclR5cGUuTW91c2UsIEdlc3R1cmVQb2ludGVyVHlwZS5Ub3VjaF0sXG4gICAgICAgICAgICAgICAgLi4ub3B0aW9uc1xuICAgICAgICAgICAgfVxuICAgICAgICApXG4gICAgfVxuXG4gICAgLy8gVE9ET1xuICAgIG92ZXJyaWRlIGNhcHR1cmUoZXZlbnRzOiBPYnNlcnZhYmxlPEdlc3R1cmVFdmVudD4pOiBPYnNlcnZhYmxlPEdlc3R1cmVDYXB0dXJlU3RhdGU+IHtcbiAgICAgICAgcmV0dXJuIGV2ZW50cy5waXBlKFxuICAgICAgICAgICAgbWFwKGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQucG9pbnRlcnMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBHZXN0dXJlQ2FwdHVyZVN0YXRlLlNraXBcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBkaXN0YW5jZSA9IGV2ZW50LnBvaW50ZXJzWzBdLmRpc3RhbmNlXG4gICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKGRpc3RhbmNlLngpIDwgdGhpcy5kaXN0YW5jZUluY2x1c2lvbiAmJiBNYXRoLmFicyhkaXN0YW5jZS55KSA8IHRoaXMuZGlzdGFuY2VJbmNsdXNpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2ZW50LnBoYXNlID09PSBHZXN0dXJlUGhhc2UuRW5kID8gR2VzdHVyZUNhcHR1cmVTdGF0ZS5JbnN0YW50IDogR2VzdHVyZUNhcHR1cmVTdGF0ZS5QZW5kaW5nXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdlc3R1cmVDYXB0dXJlU3RhdGUuU2tpcFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICB9XG5cbiAgICBvdmVycmlkZSBoYW5kbGUoZXZlbnRzOiBPYnNlcnZhYmxlPEdlc3R1cmVFdmVudD4pIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmhhbmRsZShcbiAgICAgICAgICAgIGV2ZW50cy5waXBlKGZpbHRlcihldmVudCA9PiBldmVudC5waGFzZSA9PT0gR2VzdHVyZVBoYXNlLlN0YXJ0IHx8IGV2ZW50LnBoYXNlID09PSBHZXN0dXJlUGhhc2UuRW5kKSlcbiAgICAgICAgKVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlc3R1cmVUYXAob3B0aW9ucz86IEdlc3R1cmVUYXBPcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBHZXN0dXJlVGFwSW1wbChvcHRpb25zKVxufVxuXG5leHBvcnQgY29uc3QgR2VzdHVyZVRhcCA9IGdlc3R1cmVUYXAoKVxuIl19
@@ -0,0 +1,29 @@
1
+ import { tap } from "rxjs";
2
+ import { Listeners } from "./gesture-event";
3
+ export class Gesture {
4
+ constructor(name, listeners, options = {}) {
5
+ this.name = name;
6
+ // TODO maybe global option
7
+ this.distanceInclusion = 10;
8
+ // TODO maybe global option
9
+ this.timeWithin = 300;
10
+ this.priority = 0;
11
+ this.includeScrollDistance = false;
12
+ this.filterPointerTypes = ["mouse" /* GesturePointerType.Mouse */, "touch" /* GesturePointerType.Touch */];
13
+ this.filterMouseButtons = [0];
14
+ this.filterByEvent = (event) => this.filterPointerTypes.includes(event.pointerType) &&
15
+ // this.filterListeners.includes(event.origin.type as any) &&
16
+ (event.pointerType !== "mouse" /* GesturePointerType.Mouse */ ||
17
+ (event.origin instanceof MouseEvent && this.filterMouseButtons.includes(event.origin.button)));
18
+ Object.assign(this, options);
19
+ this.filterListeners = listeners.filter(v => this.filterPointerTypes.includes(Listeners[v].pointerType));
20
+ }
21
+ /**
22
+ * Transform input event, to gesture event
23
+ * ! important, dont rely on this object state, because not always create a new object
24
+ */
25
+ handle(events) {
26
+ return events.pipe(tap(event => (event.type = this.name)));
27
+ }
28
+ }
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VzdHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FyaWEvc3JjL2dlc3R1cmVzL2dlc3R1cmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUl0QyxPQUFPLEVBQW9DLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBa0I3RSxNQUFNLE9BQWdCLE9BQU87SUFXekIsWUFDb0IsSUFBWSxFQUM1QixTQUF3QyxFQUN4QyxVQUEyQixFQUFFO1FBRmIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQVhoQywyQkFBMkI7UUFDbEIsc0JBQWlCLEdBQUcsRUFBRSxDQUFBO1FBQy9CLDJCQUEyQjtRQUNsQixlQUFVLEdBQUcsR0FBRyxDQUFBO1FBQ2hCLGFBQVEsR0FBRyxDQUFDLENBQUE7UUFDWiwwQkFBcUIsR0FBWSxLQUFLLENBQUE7UUFDdEMsdUJBQWtCLEdBQThCLGdGQUFvRCxDQUFBO1FBQ3BHLHVCQUFrQixHQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFBO1FBMEJoRCxrQkFBYSxHQUFHLENBQXlCLEtBQVEsRUFBYyxFQUFFLENBQzdELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztZQUNuRCw2REFBNkQ7WUFDN0QsQ0FBQyxLQUFLLENBQUMsV0FBVywyQ0FBNkI7Z0JBQzNDLENBQUMsS0FBSyxDQUFDLE1BQU0sWUFBWSxVQUFVLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQXRCbEcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDNUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQTtJQUM1RyxDQUFDO0lBUUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLE1BQWdDO1FBQ25DLE9BQVEsTUFBaUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDMUYsQ0FBQztDQU9KIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGFwIH0gZnJvbSBcInJ4anNcIlxuXG5pbXBvcnQgeyBGdW5jdGlvbktleXMsIE11dGFibGUgfSBmcm9tIFwidXRpbGl0eS10eXBlc1wiXG5cbmltcG9ydCB7IEdlc3R1cmVFdmVudCwgR2VzdHVyZVBvaW50ZXJUeXBlLCBMaXN0ZW5lcnMgfSBmcm9tIFwiLi9nZXN0dXJlLWV2ZW50XCJcblxuZXhwb3J0IGNvbnN0IGVudW0gR2VzdHVyZUNhcHR1cmVTdGF0ZSB7XG4gICAgLy8gVW5jaGVja2VkXG4gICAgVW5jaGVja2VkID0gMCxcbiAgICAvLyBQZW5kaW5nIHN0YXRlXG4gICAgUGVuZGluZyA9IDEsXG4gICAgLy8gU2tpcCBjYXB0dXJlXG4gICAgU2tpcCA9IDIsXG4gICAgLy8gRGV0ZXJtaW5lIGJ5IHByaW9yaXR5XG4gICAgTWF5YmUgPSAzLFxuICAgIC8vIEluc3Rhbmx0eSB0ZXJtaW5hdGUgY2FwdHVyZSwgYW5kIGZpcmUgZXZlbnRcbiAgICBJbnN0YW50ID0gNFxufVxuXG50eXBlIF9HZXN0dXJlT3B0aW9ucyA9IFBhcnRpYWw8T21pdDxHZXN0dXJlPGFueT4sIFwiZmlsdGVyTGlzdGVuZXJzXCIgfCBcIm5hbWVcIiB8IEZ1bmN0aW9uS2V5czxHZXN0dXJlPGFueT4+Pj5cbmV4cG9ydCB0eXBlIEdlc3R1cmVPcHRpb25zPFQgZXh0ZW5kcyBvYmplY3Q+ID0gUGFydGlhbDxPbWl0PFQsIGtleW9mIEdlc3R1cmU8YW55PiB8IEZ1bmN0aW9uS2V5czxUPj4+ICYgX0dlc3R1cmVPcHRpb25zXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBHZXN0dXJlPFQgZXh0ZW5kcyBHZXN0dXJlRXZlbnQgPSBHZXN0dXJlRXZlbnQ+IHtcbiAgICAvLyBUT0RPIG1heWJlIGdsb2JhbCBvcHRpb25cbiAgICByZWFkb25seSBkaXN0YW5jZUluY2x1c2lvbiA9IDEwXG4gICAgLy8gVE9ETyBtYXliZSBnbG9iYWwgb3B0aW9uXG4gICAgcmVhZG9ubHkgdGltZVdpdGhpbiA9IDMwMFxuICAgIHJlYWRvbmx5IHByaW9yaXR5ID0gMFxuICAgIHJlYWRvbmx5IGluY2x1ZGVTY3JvbGxEaXN0YW5jZTogYm9vbGVhbiA9IGZhbHNlXG4gICAgcmVhZG9ubHkgZmlsdGVyUG9pbnRlclR5cGVzOiBBcnJheTxHZXN0dXJlUG9pbnRlclR5cGU+ID0gW0dlc3R1cmVQb2ludGVyVHlwZS5Nb3VzZSwgR2VzdHVyZVBvaW50ZXJUeXBlLlRvdWNoXVxuICAgIHJlYWRvbmx5IGZpbHRlck1vdXNlQnV0dG9uczogQXJyYXk8bnVtYmVyPiA9IFswXVxuICAgIHJlYWRvbmx5IGZpbHRlckxpc3RlbmVyczogQXJyYXk8a2V5b2YgRG9jdW1lbnRFdmVudE1hcD5cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nLFxuICAgICAgICBsaXN0ZW5lcnM6IEFycmF5PGtleW9mIERvY3VtZW50RXZlbnRNYXA+LFxuICAgICAgICBvcHRpb25zOiBfR2VzdHVyZU9wdGlvbnMgPSB7fVxuICAgICkge1xuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIG9wdGlvbnMpXG4gICAgICAgIHRoaXMuZmlsdGVyTGlzdGVuZXJzID0gbGlzdGVuZXJzLmZpbHRlcih2ID0+IHRoaXMuZmlsdGVyUG9pbnRlclR5cGVzLmluY2x1ZGVzKExpc3RlbmVyc1t2XS5wb2ludGVyVHlwZSkpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGVzdCBpZiB0aGUgZ2VzdHVyZSBzaG91bGQgYmUgY2FwdHVyZWQuXG4gICAgICogISBpbXBvcnRhbnQsIGRvbnQgcmVseSBvbiB0aGlzIG9iamVjdCBzdGF0ZSwgYmVjYXVzZSBub3QgYWx3YXlzIGNyZWF0ZSBhIG5ldyBvYmplY3RcbiAgICAgKi9cbiAgICBhYnN0cmFjdCBjYXB0dXJlKGV2ZW50czogT2JzZXJ2YWJsZTxHZXN0dXJlRXZlbnQ+KTogT2JzZXJ2YWJsZTxHZXN0dXJlQ2FwdHVyZVN0YXRlPlxuXG4gICAgLyoqXG4gICAgICogVHJhbnNmb3JtIGlucHV0IGV2ZW50LCB0byBnZXN0dXJlIGV2ZW50XG4gICAgICogISBpbXBvcnRhbnQsIGRvbnQgcmVseSBvbiB0aGlzIG9iamVjdCBzdGF0ZSwgYmVjYXVzZSBub3QgYWx3YXlzIGNyZWF0ZSBhIG5ldyBvYmplY3RcbiAgICAgKi9cbiAgICBoYW5kbGUoZXZlbnRzOiBPYnNlcnZhYmxlPEdlc3R1cmVFdmVudD4pOiBPYnNlcnZhYmxlPE11dGFibGU8VD4+IHtcbiAgICAgICAgcmV0dXJuIChldmVudHMgYXMgT2JzZXJ2YWJsZTxNdXRhYmxlPFQ+PikucGlwZSh0YXAoZXZlbnQgPT4gKGV2ZW50LnR5cGUgPSB0aGlzLm5hbWUpKSlcbiAgICB9XG5cbiAgICBmaWx0ZXJCeUV2ZW50ID0gPFQgZXh0ZW5kcyBHZXN0dXJlRXZlbnQ+KGV2ZW50OiBUKTogZXZlbnQgaXMgVCA9PlxuICAgICAgICB0aGlzLmZpbHRlclBvaW50ZXJUeXBlcy5pbmNsdWRlcyhldmVudC5wb2ludGVyVHlwZSkgJiZcbiAgICAgICAgLy8gdGhpcy5maWx0ZXJMaXN0ZW5lcnMuaW5jbHVkZXMoZXZlbnQub3JpZ2luLnR5cGUgYXMgYW55KSAmJlxuICAgICAgICAoZXZlbnQucG9pbnRlclR5cGUgIT09IEdlc3R1cmVQb2ludGVyVHlwZS5Nb3VzZSB8fFxuICAgICAgICAgICAgKGV2ZW50Lm9yaWdpbiBpbnN0YW5jZW9mIE1vdXNlRXZlbnQgJiYgdGhpcy5maWx0ZXJNb3VzZUJ1dHRvbnMuaW5jbHVkZXMoZXZlbnQub3JpZ2luLmJ1dHRvbikpKVxufVxuIl19