@ngutil/aria 0.0.70 → 0.0.72

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,80 @@
1
+ import { map, tap } from "rxjs";
2
+ import { Gesture } from "./gesture";
3
+ export class GestureDragImpl extends Gesture {
4
+ constructor(options) {
5
+ super("gesture-drag", { includeScrollDistance: true, ...options });
6
+ if (this.horizontal == null && this.vertical == null) {
7
+ this.horizontal = true;
8
+ this.vertical = true;
9
+ }
10
+ }
11
+ capture(events) {
12
+ return events.pipe(map(state => {
13
+ if (Math.abs(state.pointers[0].distance.x) > this.distanceInclusion) {
14
+ return this.horizontal ? 3 /* GestureCaptureState.Maybe */ : 2 /* GestureCaptureState.Skip */;
15
+ }
16
+ if (Math.abs(state.pointers[0].distance.y) > this.distanceInclusion) {
17
+ return this.vertical ? 3 /* GestureCaptureState.Maybe */ : 2 /* GestureCaptureState.Skip */;
18
+ }
19
+ return 1 /* GestureCaptureState.Pending */;
20
+ }));
21
+ }
22
+ handle(events) {
23
+ const updater = this.horizontal && this.vertical
24
+ ? updateAnyDirection
25
+ : this.horizontal
26
+ ? updateHorizontalOnly
27
+ : updateVerticalOnly;
28
+ return super.handle(events).pipe(tap(updater));
29
+ }
30
+ }
31
+ function updateVerticalOnly(event) {
32
+ const pointer = event.pointers[0];
33
+ pointer.distance.x = 0;
34
+ pointer.direction.x = 0;
35
+ pointer.current.x = pointer.start.x;
36
+ updateEvent(event, updateByScrollDistanceVertical);
37
+ }
38
+ function updateHorizontalOnly(event) {
39
+ const pointer = event.pointers[0];
40
+ pointer.distance.y = 0;
41
+ pointer.direction.y = 0;
42
+ pointer.current.y = pointer.start.y;
43
+ updateEvent(event, updateByScrollDistanceHorizontal);
44
+ }
45
+ function updateAnyDirection(event) {
46
+ updateEvent(event, updateByScrollDistanceBoth);
47
+ }
48
+ function updateEvent(event, scrollUpdate) {
49
+ event.moveBy = { ...event.pointers[0].distance };
50
+ scrollUpdate(event);
51
+ }
52
+ function updateByScrollDistanceVertical(event) {
53
+ const sd = event.scrollDistance;
54
+ if (sd == null) {
55
+ return;
56
+ }
57
+ event.moveBy.y += sd.y;
58
+ }
59
+ function updateByScrollDistanceHorizontal(event) {
60
+ const sd = event.scrollDistance;
61
+ if (sd == null) {
62
+ return;
63
+ }
64
+ event.moveBy.x += sd.x;
65
+ }
66
+ function updateByScrollDistanceBoth(event) {
67
+ const sd = event.scrollDistance;
68
+ if (sd == null) {
69
+ return;
70
+ }
71
+ event.moveBy.x += sd.x;
72
+ event.moveBy.y += sd.y;
73
+ }
74
+ export function gestureDrag(options) {
75
+ return new GestureDragImpl(options);
76
+ }
77
+ export const GestureDarg = gestureDrag();
78
+ export const GestureDargHorizontal = gestureDrag({ horizontal: true, vertical: false });
79
+ export const GestureDargVertical = gestureDrag({ horizontal: false, vertical: true });
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VzdHVyZS1kcmFnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYXJpYS9zcmMvZ2VzdHVyZXMvZ2VzdHVyZS1kcmFnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQWMsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBTTNDLE9BQU8sRUFBRSxPQUFPLEVBQXVDLE1BQU0sV0FBVyxDQUFBO0FBU3hFLE1BQU0sT0FBTyxlQUFnQixTQUFRLE9BQTBCO0lBSTNELFlBQVksT0FBNEI7UUFDcEMsS0FBSyxDQUFDLGNBQWMsRUFBRSxFQUFFLHFCQUFxQixFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDLENBQUE7UUFFbEUsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFBO1lBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFBO1FBQ3hCLENBQUM7SUFDTCxDQUFDO0lBRVEsT0FBTyxDQUFDLE1BQWlDO1FBQzlDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FDZCxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDUixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ2xFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLG1DQUEyQixDQUFDLGlDQUF5QixDQUFBO1lBQ2pGLENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxD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QyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDdEIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUMxQixDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxPQUE0QjtJQUNwRCxPQUFPLElBQUksZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0FBQ3ZDLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsV0FBVyxFQUFFLENBQUE7QUFDeEMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsV0FBVyxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtBQUN2RixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxXQUFXLENBQUMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlLCB0YXAgfSBmcm9tIFwicnhqc1wiXG5cbmltcG9ydCB7IE11dGFibGUgfSBmcm9tIFwidXRpbGl0eS10eXBlc1wiXG5cbmltcG9ydCB7IFBvc2l0aW9uIH0gZnJvbSBcIkBuZ3V0aWwvc3R5bGVcIlxuXG5pbXBvcnQgeyBHZXN0dXJlLCBHZXN0dXJlQ2FwdHVyZVN0YXRlLCBHZXN0dXJlT3B0aW9ucyB9IGZyb20gXCIuL2dlc3R1cmVcIlxuaW1wb3J0IHsgR2VzdHVyZURldGFpbCB9IGZyb20gXCIuL2dlc3R1cmUtZXZlbnRcIlxuXG5leHBvcnQgaW50ZXJmYWNlIEdlc3R1cmVEcmFnRGV0YWlsIGV4dGVuZHMgR2VzdHVyZURldGFpbDxcImdlc3R1cmUtZHJhZ1wiPiB7XG4gICAgbW92ZUJ5OiBQb3NpdGlvblxufVxuXG5leHBvcnQgdHlwZSBHZXN0dXJlRHJhZ09wdGlvbnMgPSBHZXN0dXJlT3B0aW9uczxHZXN0dXJlRHJhZ0ltcGw+XG5cbmV4cG9ydCBjbGFzcyBHZXN0dXJlRHJhZ0ltcGwgZXh0ZW5kcyBHZXN0dXJlPEdlc3R1cmVEcmFnRGV0YWlsPiB7XG4gICAgcmVhZG9ubHkgaG9yaXpvbnRhbD86IGJvb2xlYW5cbiAgICByZWFkb25seSB2ZXJ0aWNhbD86IGJvb2xlYW5cblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBHZXN0dXJlRHJhZ09wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIoXCJnZXN0dXJlLWRyYWdcIiwgeyBpbmNsdWRlU2Nyb2xsRGlzdGFuY2U6IHRydWUsIC4uLm9wdGlvbnMgfSlcblxuICAgICAgICBpZiAodGhpcy5ob3Jpem9udGFsID09IG51bGwgJiYgdGhpcy52ZXJ0aWNhbCA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmhvcml6b250YWwgPSB0cnVlXG4gICAgICAgICAgICB0aGlzLnZlcnRpY2FsID0gdHJ1ZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgY2FwdHVyZShldmVudHM6IE9ic2VydmFibGU8R2VzdHVyZURldGFpbD4pOiBPYnNlcnZhYmxlPEdlc3R1cmVDYXB0dXJlU3RhdGU+IHtcbiAgICAgICAgcmV0dXJuIGV2ZW50cy5waXBlKFxuICAgICAgICAgICAgbWFwKHN0YXRlID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMoc3RhdGUucG9pbnRlcnNbMF0uZGlzdGFuY2UueCkgPiB0aGlzLmRpc3RhbmNlSW5jbHVzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmhvcml6b250YWwgPyBHZXN0dXJlQ2FwdHVyZVN0YXRlLk1heWJlIDogR2VzdHVyZUNhcHR1cmVTdGF0ZS5Ta2lwXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKHN0YXRlLnBvaW50ZXJzWzBdLmRpc3RhbmNlLnkpID4gdGhpcy5kaXN0YW5jZUluY2x1c2lvbikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy52ZXJ0aWNhbCA/IEdlc3R1cmVDYXB0dXJlU3RhdGUuTWF5YmUgOiBHZXN0dXJlQ2FwdHVyZVN0YXRlLlNraXBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIEdlc3R1cmVDYXB0dXJlU3RhdGUuUGVuZGluZ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgIH1cblxuICAgIG92ZXJyaWRlIGhhbmRsZShldmVudHM6IE9ic2VydmFibGU8R2VzdHVyZURldGFpbD4pIHtcbiAgICAgICAgY29uc3QgdXBkYXRlciA9XG4gICAgICAgICAgICB0aGlzLmhvcml6b250YWwgJiYgdGhpcy52ZXJ0aWNhbFxuICAgICAgICAgICAgICAgID8gdXBkYXRlQW55RGlyZWN0aW9uXG4gICAgICAgICAgICAgICAgOiB0aGlzLmhvcml6b250YWxcbiAgICAgICAgICAgICAgICAgID8gdXBkYXRlSG9yaXpvbnRhbE9ubHlcbiAgICAgICAgICAgICAgICAgIDogdXBkYXRlVmVydGljYWxPbmx5XG5cbiAgICAgICAgcmV0dXJuIHN1cGVyLmhhbmRsZShldmVudHMpLnBpcGUodGFwKHVwZGF0ZXIpKVxuICAgIH1cbn1cblxudHlwZSBVcGRhdGVyRm4gPSAoZXZlbnQ6IE11dGFibGU8R2VzdHVyZURyYWdEZXRhaWw+KSA9PiB2b2lkXG5cbmZ1bmN0aW9uIHVwZGF0ZVZlcnRpY2FsT25seShldmVudDogTXV0YWJsZTxHZXN0dXJlRHJhZ0RldGFpbD4pIHtcbiAgICBjb25zdCBwb2ludGVyID0gZXZlbnQucG9pbnRlcnNbMF1cbiAgICBwb2ludGVyLmRpc3RhbmNlLnggPSAwXG4gICAgcG9pbnRlci5kaXJlY3Rpb24ueCA9IDBcbiAgICBwb2ludGVyLmN1cnJlbnQueCA9IHBvaW50ZXIuc3RhcnQueFxuICAgIHVwZGF0ZUV2ZW50KGV2ZW50LCB1cGRhdGVCeVNjcm9sbERpc3RhbmNlVmVydGljYWwpXG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUhvcml6b250YWxPbmx5KGV2ZW50OiBNdXRhYmxlPEdlc3R1cmVEcmFnRGV0YWlsPikge1xuICAgIGNvbnN0IHBvaW50ZXIgPSBldmVudC5wb2ludGVyc1swXVxuICAgIHBvaW50ZXIuZGlzdGFuY2UueSA9IDBcbiAgICBwb2ludGVyLmRpcmVjdGlvbi55ID0gMFxuICAgIHBvaW50ZXIuY3VycmVudC55ID0gcG9pbnRlci5zdGFydC55XG4gICAgdXBkYXRlRXZlbnQoZXZlbnQsIHVwZGF0ZUJ5U2Nyb2xsRGlzdGFuY2VIb3Jpem9udGFsKVxufVxuXG5mdW5jdGlvbiB1cGRhdGVBbnlEaXJlY3Rpb24oZXZlbnQ6IE11dGFibGU8R2VzdHVyZURyYWdEZXRhaWw+KSB7XG4gICAgdXBkYXRlRXZlbnQoZXZlbnQsIHVwZGF0ZUJ5U2Nyb2xsRGlzdGFuY2VCb3RoKVxufVxuXG5mdW5jdGlvbiB1cGRhdGVFdmVudChldmVudDogTXV0YWJsZTxHZXN0dXJlRHJhZ0RldGFpbD4sIHNjcm9sbFVwZGF0ZTogVXBkYXRlckZuKSB7XG4gICAgZXZlbnQubW92ZUJ5ID0geyAuLi5ldmVudC5wb2ludGVyc1swXS5kaXN0YW5jZSB9XG4gICAgc2Nyb2xsVXBkYXRlKGV2ZW50KVxufVxuXG5mdW5jdGlvbiB1cGRhdGVCeVNjcm9sbERpc3RhbmNlVmVydGljYWwoZXZlbnQ6IE11dGFibGU8R2VzdHVyZURyYWdEZXRhaWw+KSB7XG4gICAgY29uc3Qgc2QgPSBldmVudC5zY3JvbGxEaXN0YW5jZVxuICAgIGlmIChzZCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVyblxuICAgIH1cbiAgICBldmVudC5tb3ZlQnkueSArPSBzZC55XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUJ5U2Nyb2xsRGlzdGFuY2VIb3Jpem9udGFsKGV2ZW50OiBNdXRhYmxlPEdlc3R1cmVEcmFnRGV0YWlsPikge1xuICAgIGNvbnN0IHNkID0gZXZlbnQuc2Nyb2xsRGlzdGFuY2VcbiAgICBpZiAoc2QgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm5cbiAgICB9XG4gICAgZXZlbnQubW92ZUJ5LnggKz0gc2QueFxufVxuXG5mdW5jdGlvbiB1cGRhdGVCeVNjcm9sbERpc3RhbmNlQm90aChldmVudDogTXV0YWJsZTxHZXN0dXJlRHJhZ0RldGFpbD4pIHtcbiAgICBjb25zdCBzZCA9IGV2ZW50LnNjcm9sbERpc3RhbmNlXG4gICAgaWYgKHNkID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGV2ZW50Lm1vdmVCeS54ICs9IHNkLnhcbiAgICBldmVudC5tb3ZlQnkueSArPSBzZC55XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXN0dXJlRHJhZyhvcHRpb25zPzogR2VzdHVyZURyYWdPcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBHZXN0dXJlRHJhZ0ltcGwob3B0aW9ucylcbn1cblxuZXhwb3J0IGNvbnN0IEdlc3R1cmVEYXJnID0gZ2VzdHVyZURyYWcoKVxuZXhwb3J0IGNvbnN0IEdlc3R1cmVEYXJnSG9yaXpvbnRhbCA9IGdlc3R1cmVEcmFnKHsgaG9yaXpvbnRhbDogdHJ1ZSwgdmVydGljYWw6IGZhbHNlIH0pXG5leHBvcnQgY29uc3QgR2VzdHVyZURhcmdWZXJ0aWNhbCA9IGdlc3R1cmVEcmFnKHsgaG9yaXpvbnRhbDogZmFsc2UsIHZlcnRpY2FsOiB0cnVlIH0pXG4iXX0=
@@ -0,0 +1,45 @@
1
+ const PHANTOM = Symbol("phantom");
2
+ export const Listeners = {
3
+ mousedown: {
4
+ pointerType: "mouse" /* GesturePointerType.Mouse */,
5
+ phase: "start" /* GesturePhase.Start */,
6
+ options: { capture: true, passive: false }
7
+ },
8
+ mousemove: {
9
+ pointerType: "mouse" /* GesturePointerType.Mouse */,
10
+ phase: "moving" /* GesturePhase.Moving */,
11
+ options: { capture: true, passive: false }
12
+ },
13
+ mouseup: {
14
+ pointerType: "mouse" /* GesturePointerType.Mouse */,
15
+ phase: "end" /* GesturePhase.End */,
16
+ options: { capture: true, passive: false }
17
+ },
18
+ touchstart: {
19
+ pointerType: "touch" /* GesturePointerType.Touch */,
20
+ phase: "start" /* GesturePhase.Start */,
21
+ options: { capture: true, passive: false }
22
+ },
23
+ touchmove: {
24
+ pointerType: "touch" /* GesturePointerType.Touch */,
25
+ phase: "moving" /* GesturePhase.Moving */,
26
+ options: { capture: true, passive: false }
27
+ },
28
+ touchend: {
29
+ pointerType: "touch" /* GesturePointerType.Touch */,
30
+ phase: "end" /* GesturePhase.End */,
31
+ options: { capture: true, passive: false }
32
+ },
33
+ touchcancel: {
34
+ pointerType: "touch" /* GesturePointerType.Touch */,
35
+ phase: "end" /* GesturePhase.End */,
36
+ options: { capture: true, passive: false }
37
+ }
38
+ // ,
39
+ // contextmenu: {
40
+ // pointerType: GesturePointerType.Mouse,
41
+ // phase: GesturePhase.Start,
42
+ // options: { capture: true, passive: false }
43
+ // }
44
+ };
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VzdHVyZS1ldmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FyaWEvc3JjL2dlc3R1cmVzL2dlc3R1cmUtZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0FBMkNqQyxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQTZDO0lBQy9ELFNBQVMsRUFBRTtRQUNQLFdBQVcsd0NBQTBCO1FBQ3JDLEtBQUssa0NBQW9CO1FBQ3pCLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRTtLQUM3QztJQUNELFNBQVMsRUFBRTtRQUNQLFdBQVcsd0NBQTBCO1FBQ3JDLEtBQUssb0NBQXFCO1FBQzFCLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRTtLQUM3QztJQUNELE9BQU8sRUFBRTtRQUNMLFdBQVcsd0NBQTBCO1FBQ3JDLEtBQUssOEJBQWtCO1FBQ3ZCLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRTtLQUM3QztJQUNELFVBQVUsRUFBRTtRQUNSLFdBQVcsd0NBQTBCO1FBQ3JDLEtBQUssa0NBQW9CO1FBQ3pCLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRTtLQUM3QztJQUNELFNBQVMsRUFBRTtRQUNQLFdBQVcsd0NBQTBCO1FBQ3JDLEtBQUssb0NBQXFCO1FBQzFCLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRTtLQUM3QztJQUNELFFBQVEsRUFBRTtRQUNOLFdBQVcsd0NBQTBCO1FBQ3JDLEtBQUssOEJBQWtCO1FBQ3ZCLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRTtLQUM3QztJQUNELFdBQVcsRUFBRTtRQUNULFdBQVcsd0NBQTBCO1FBQ3JDLEtBQUssOEJBQWtCO1FBQ3ZCLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRTtLQUM3QztJQUNELElBQUk7SUFDSixpQkFBaUI7SUFDakIsNkNBQTZDO0lBQzdDLGlDQUFpQztJQUNqQyxpREFBaUQ7SUFDakQsSUFBSTtDQUNFLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb3NpdGlvbiB9IGZyb20gXCJAbmd1dGlsL3N0eWxlXCJcblxuLy8gZXhwb3J0IGludGVyZmFjZSBHZXN0dXJlRG9tRXZlbnQ8VCBleHRlbmRzPiBleHRlbmRzIEN1c3RvbUV2ZW50IHsgfVxuZXhwb3J0IHR5cGUgR2VzdHVyZUV2ZW50PFQgZXh0ZW5kcyBHZXN0dXJlRGV0YWlsPiA9XG4gICAgVCBleHRlbmRzIEdlc3R1cmVEZXRhaWw8aW5mZXIgTj4gPyBDdXN0b21FdmVudDxUPiAmIHsgdHlwZTogTiB9IDogbmV2ZXJcblxuY29uc3QgUEhBTlRPTSA9IFN5bWJvbChcInBoYW50b21cIilcblxuZXhwb3J0IGludGVyZmFjZSBHZXN0dXJlRGV0YWlsPFQgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmc+IHtcbiAgICByZWFkb25seSBbUEhBTlRPTV06IFRcbiAgICByZWFkb25seSBvcmlnaW46IEdlc3R1cmVPcmlnaW5cbiAgICByZWFkb25seSB0YXJnZXQ6IEhUTUxFbGVtZW50XG4gICAgcmVhZG9ubHkgcG9pbnRlclR5cGU6IEdlc3R1cmVQb2ludGVyVHlwZVxuICAgIHJlYWRvbmx5IHBoYXNlOiBHZXN0dXJlUGhhc2VcbiAgICByZWFkb25seSBwb2ludGVyczogUmVhZG9ubHlBcnJheTxHZXN0dXJlUG9pbnRlcj5cbiAgICByZWFkb25seSB0aW1lU3RhbXA6IG51bWJlclxuICAgIHJlYWRvbmx5IGVsYXBzZWQ6IG51bWJlclxuICAgIHJlYWRvbmx5IHNjcm9sbERpc3RhbmNlPzogUG9zaXRpb25cbn1cblxuZXhwb3J0IHR5cGUgUG9pbnRlcnNQb3NpdGlvbiA9IFJlYWRvbmx5QXJyYXk8UmVhZG9ubHk8UG9zaXRpb24+PlxuXG5leHBvcnQgaW50ZXJmYWNlIEdlc3R1cmVQb2ludGVyIHtcbiAgICByZWFkb25seSBzdGFydDogUG9zaXRpb25cbiAgICByZWFkb25seSBjdXJyZW50OiBQb3NpdGlvblxuICAgIHJlYWRvbmx5IGVuZD86IFBvc2l0aW9uXG4gICAgcmVhZG9ubHkgZGlzdGFuY2U6IFBvc2l0aW9uXG4gICAgcmVhZG9ubHkgZGlyZWN0aW9uOiB7IHg6IC0xIHwgMCB8IDE7IHk6IC0xIHwgMCB8IDEgfVxufVxuXG5leHBvcnQgdHlwZSBHZXN0dXJlT3JpZ2luID0gTW91c2VFdmVudCB8IFRvdWNoRXZlbnRcblxuZXhwb3J0IGNvbnN0IGVudW0gR2VzdHVyZVBvaW50ZXJUeXBlIHtcbiAgICBNb3VzZSA9IFwibW91c2VcIixcbiAgICBUb3VjaCA9IFwidG91Y2hcIlxufVxuXG5leHBvcnQgY29uc3QgZW51bSBHZXN0dXJlUGhhc2Uge1xuICAgIFN0YXJ0ID0gXCJzdGFydFwiLFxuICAgIE1vdmluZyA9IFwibW92aW5nXCIsXG4gICAgRW5kID0gXCJlbmRcIlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdlc3R1cmVMaXN0ZW5lckNvbmZpZyB7XG4gICAgb3B0aW9ucz86IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zXG4gICAgcG9pbnRlclR5cGU6IEdlc3R1cmVQb2ludGVyVHlwZVxuICAgIHBoYXNlOiBHZXN0dXJlUGhhc2Vcbn1cblxuZXhwb3J0IGNvbnN0IExpc3RlbmVyczogeyBba2V5OiBzdHJpbmddOiBHZXN0dXJlTGlzdGVuZXJDb25maWcgfSA9IHtcbiAgICBtb3VzZWRvd246IHtcbiAgICAgICAgcG9pbnRlclR5cGU6IEdlc3R1cmVQb2ludGVyVHlwZS5Nb3VzZSxcbiAgICAgICAgcGhhc2U6IEdlc3R1cmVQaGFzZS5TdGFydCxcbiAgICAgICAgb3B0aW9uczogeyBjYXB0dXJlOiB0cnVlLCBwYXNzaXZlOiBmYWxzZSB9XG4gICAgfSxcbiAgICBtb3VzZW1vdmU6IHtcbiAgICAgICAgcG9pbnRlclR5cGU6IEdlc3R1cmVQb2ludGVyVHlwZS5Nb3VzZSxcbiAgICAgICAgcGhhc2U6IEdlc3R1cmVQaGFzZS5Nb3ZpbmcsXG4gICAgICAgIG9wdGlvbnM6IHsgY2FwdHVyZTogdHJ1ZSwgcGFzc2l2ZTogZmFsc2UgfVxuICAgIH0sXG4gICAgbW91c2V1cDoge1xuICAgICAgICBwb2ludGVyVHlwZTogR2VzdHVyZVBvaW50ZXJUeXBlLk1vdXNlLFxuICAgICAgICBwaGFzZTogR2VzdHVyZVBoYXNlLkVuZCxcbiAgICAgICAgb3B0aW9uczogeyBjYXB0dXJlOiB0cnVlLCBwYXNzaXZlOiBmYWxzZSB9XG4gICAgfSxcbiAgICB0b3VjaHN0YXJ0OiB7XG4gICAgICAgIHBvaW50ZXJUeXBlOiBHZXN0dXJlUG9pbnRlclR5cGUuVG91Y2gsXG4gICAgICAgIHBoYXNlOiBHZXN0dXJlUGhhc2UuU3RhcnQsXG4gICAgICAgIG9wdGlvbnM6IHsgY2FwdHVyZTogdHJ1ZSwgcGFzc2l2ZTogZmFsc2UgfVxuICAgIH0sXG4gICAgdG91Y2htb3ZlOiB7XG4gICAgICAgIHBvaW50ZXJUeXBlOiBHZXN0dXJlUG9pbnRlclR5cGUuVG91Y2gsXG4gICAgICAgIHBoYXNlOiBHZXN0dXJlUGhhc2UuTW92aW5nLFxuICAgICAgICBvcHRpb25zOiB7IGNhcHR1cmU6IHRydWUsIHBhc3NpdmU6IGZhbHNlIH1cbiAgICB9LFxuICAgIHRvdWNoZW5kOiB7XG4gICAgICAgIHBvaW50ZXJUeXBlOiBHZXN0dXJlUG9pbnRlclR5cGUuVG91Y2gsXG4gICAgICAgIHBoYXNlOiBHZXN0dXJlUGhhc2UuRW5kLFxuICAgICAgICBvcHRpb25zOiB7IGNhcHR1cmU6IHRydWUsIHBhc3NpdmU6IGZhbHNlIH1cbiAgICB9LFxuICAgIHRvdWNoY2FuY2VsOiB7XG4gICAgICAgIHBvaW50ZXJUeXBlOiBHZXN0dXJlUG9pbnRlclR5cGUuVG91Y2gsXG4gICAgICAgIHBoYXNlOiBHZXN0dXJlUGhhc2UuRW5kLFxuICAgICAgICBvcHRpb25zOiB7IGNhcHR1cmU6IHRydWUsIHBhc3NpdmU6IGZhbHNlIH1cbiAgICB9XG4gICAgLy8gLFxuICAgIC8vIGNvbnRleHRtZW51OiB7XG4gICAgLy8gICAgIHBvaW50ZXJUeXBlOiBHZXN0dXJlUG9pbnRlclR5cGUuTW91c2UsXG4gICAgLy8gICAgIHBoYXNlOiBHZXN0dXJlUGhhc2UuU3RhcnQsXG4gICAgLy8gICAgIG9wdGlvbnM6IHsgY2FwdHVyZTogdHJ1ZSwgcGFzc2l2ZTogZmFsc2UgfVxuICAgIC8vIH1cbn0gYXMgY29uc3RcbiJdfQ==
@@ -0,0 +1,33 @@
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", { pointerTypes: ["touch" /* GesturePointerType.Touch */], ...options });
6
+ }
7
+ capture(events) {
8
+ return combineLatest({ timeWithin: timer(this.timeWithin).pipe(startWith(null)), event: events }).pipe(map(({ timeWithin, event }) => {
9
+ if (event.elapsed > this.timeWithin) {
10
+ return 2 /* GestureCaptureState.Skip */;
11
+ }
12
+ if (event.phase === "end" /* GesturePhase.End */ && event.elapsed > this.timeWithin) {
13
+ return 2 /* GestureCaptureState.Skip */;
14
+ }
15
+ const distance = event.pointers[0].distance;
16
+ if (Math.abs(distance.x) < this.distanceInclusion && Math.abs(distance.y) < this.distanceInclusion) {
17
+ // maybe is ok event.phase === GesturePhase.End
18
+ return timeWithin !== null ? 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 gestureLongTap(options) {
30
+ return new GestureLongTapImpl(options);
31
+ }
32
+ export const GestureLongTap = gestureLongTap();
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VzdHVyZS1sb25ndGFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYXJpYS9zcmMvZ2VzdHVyZXMvZ2VzdHVyZS1sb25ndGFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYyxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBRS9FLE9BQU8sRUFBRSxPQUFPLEVBQXVDLE1BQU0sV0FBVyxDQUFBO0FBTXhFLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxPQUE2QjtJQUNqRSxZQUFZLE9BQStCO1FBQ3ZDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLFlBQVksRUFBRSx3Q0FBMEIsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDLENBQUE7SUFDdEYsQ0FBQztJQUVRLE9BQU8sQ0FBQyxNQUFpQztRQUM5QyxPQUFPLGFBQWEsQ0FBQyxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ2xHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDMUIsSUFBSSxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDbEMsd0NBQStCO1lBQ25DLENBQUM7WUFFRCxJQUFJLEtBQUssQ0FBQyxLQUFLLGlDQUFxQixJQUFJLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUN0RSx3Q0FBK0I7WUFDbkMsQ0FBQztZQUVELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFBO1lBRTNDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUNqRywrQ0FBK0M7Z0JBQy9DLE9BQU8sVUFBVSxLQUFLLElBQUksQ0FBQyxDQUFDLHFDQUE2QixDQUFDLG9DQUE0QixDQUFBO1lBQzFGLENBQUM7aUJBQU0sQ0FBQztnQkFDSix3Q0FBK0I7WUFDbkMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUNMLENBQUE7SUFDTCxDQUFDO0lBRVEsTUFBTSxDQUFDLE1BQWlDO1FBQzdDLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FDZixNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLHFDQUF1QixJQUFJLEtBQUssQ0FBQyxLQUFLLGlDQUFxQixDQUFDLENBQUMsQ0FDdkcsQ0FBQTtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsT0FBK0I7SUFDMUQsT0FBTyxJQUFJLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFBO0FBQzFDLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsY0FBYyxFQUFFLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgc3RhcnRXaXRoLCB0aW1lciB9IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHsgR2VzdHVyZSwgR2VzdHVyZUNhcHR1cmVTdGF0ZSwgR2VzdHVyZU9wdGlvbnMgfSBmcm9tIFwiLi9nZXN0dXJlXCJcbmltcG9ydCB7IEdlc3R1cmVEZXRhaWwsIEdlc3R1cmVQaGFzZSwgR2VzdHVyZVBvaW50ZXJUeXBlIH0gZnJvbSBcIi4vZ2VzdHVyZS1ldmVudFwiXG5cbmV4cG9ydCB0eXBlIEdlc3R1cmVMb25nVGFwRGV0YWlsID0gR2VzdHVyZURldGFpbDxcImdlc3R1cmUtbG9uZ3RhcFwiPlxuZXhwb3J0IHR5cGUgR2VzdHVyZUxvbmdUYXBPcHRpb25zID0gR2VzdHVyZU9wdGlvbnM8R2VzdHVyZUxvbmdUYXBJbXBsPlxuXG5leHBvcnQgY2xhc3MgR2VzdHVyZUxvbmdUYXBJbXBsIGV4dGVuZHMgR2VzdHVyZTxHZXN0dXJlTG9uZ1RhcERldGFpbD4ge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBHZXN0dXJlTG9uZ1RhcE9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIoXCJnZXN0dXJlLWxvbmd0YXBcIiwgeyBwb2ludGVyVHlwZXM6IFtHZXN0dXJlUG9pbnRlclR5cGUuVG91Y2hdLCAuLi5vcHRpb25zIH0pXG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgY2FwdHVyZShldmVudHM6IE9ic2VydmFibGU8R2VzdHVyZURldGFpbD4pOiBPYnNlcnZhYmxlPEdlc3R1cmVDYXB0dXJlU3RhdGU+IHtcbiAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoeyB0aW1lV2l0aGluOiB0aW1lcih0aGlzLnRpbWVXaXRoaW4pLnBpcGUoc3RhcnRXaXRoKG51bGwpKSwgZXZlbnQ6IGV2ZW50cyB9KS5waXBlKFxuICAgICAgICAgICAgbWFwKCh7IHRpbWVXaXRoaW4sIGV2ZW50IH0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZWxhcHNlZCA+IHRoaXMudGltZVdpdGhpbikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2VzdHVyZUNhcHR1cmVTdGF0ZS5Ta2lwXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LnBoYXNlID09PSBHZXN0dXJlUGhhc2UuRW5kICYmIGV2ZW50LmVsYXBzZWQgPiB0aGlzLnRpbWVXaXRoaW4pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdlc3R1cmVDYXB0dXJlU3RhdGUuU2tpcFxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlID0gZXZlbnQucG9pbnRlcnNbMF0uZGlzdGFuY2VcblxuICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhkaXN0YW5jZS54KSA8IHRoaXMuZGlzdGFuY2VJbmNsdXNpb24gJiYgTWF0aC5hYnMoZGlzdGFuY2UueSkgPCB0aGlzLmRpc3RhbmNlSW5jbHVzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIG1heWJlIGlzIG9rIGV2ZW50LnBoYXNlID09PSBHZXN0dXJlUGhhc2UuRW5kXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aW1lV2l0aGluICE9PSBudWxsID8gR2VzdHVyZUNhcHR1cmVTdGF0ZS5JbnN0YW50IDogR2VzdHVyZUNhcHR1cmVTdGF0ZS5QZW5kaW5nXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdlc3R1cmVDYXB0dXJlU3RhdGUuU2tpcFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICB9XG5cbiAgICBvdmVycmlkZSBoYW5kbGUoZXZlbnRzOiBPYnNlcnZhYmxlPEdlc3R1cmVEZXRhaWw+KSB7XG4gICAgICAgIHJldHVybiBzdXBlci5oYW5kbGUoXG4gICAgICAgICAgICBldmVudHMucGlwZShmaWx0ZXIoZXZlbnQgPT4gZXZlbnQucGhhc2UgPT09IEdlc3R1cmVQaGFzZS5TdGFydCB8fCBldmVudC5waGFzZSA9PT0gR2VzdHVyZVBoYXNlLkVuZCkpXG4gICAgICAgIClcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXN0dXJlTG9uZ1RhcChvcHRpb25zPzogR2VzdHVyZUxvbmdUYXBPcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBHZXN0dXJlTG9uZ1RhcEltcGwob3B0aW9ucylcbn1cblxuZXhwb3J0IGNvbnN0IEdlc3R1cmVMb25nVGFwID0gZ2VzdHVyZUxvbmdUYXAoKVxuIl19
@@ -0,0 +1,36 @@
1
+ import { filter, map } from "rxjs";
2
+ import { Gesture } from "./gesture";
3
+ export class GestureTapImpl extends Gesture {
4
+ constructor(options) {
5
+ super("gesture-tap", options);
6
+ }
7
+ capture(events) {
8
+ return events.pipe(map(event => {
9
+ const distance = event.pointers[0].distance;
10
+ if (Math.abs(distance.x) < this.distanceInclusion && Math.abs(distance.y) < this.distanceInclusion) {
11
+ // TODO
12
+ // if (event.phase === GesturePhase.End) {
13
+ // if (event.target === event.origin.target || event.target.contains(event.origin.target)) {
14
+ // return GestureCaptureState.Instant
15
+ // } else {
16
+ // return GestureCaptureState.Skip
17
+ // }
18
+ // } else {
19
+ // return GestureCaptureState.Pending
20
+ // }
21
+ return event.phase === "end" /* GesturePhase.End */ ? 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 gestureTap(options) {
33
+ return new GestureTapImpl(options);
34
+ }
35
+ export const GestureTap = gestureTap();
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VzdHVyZS10YXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hcmlhL3NyYy9nZXN0dXJlcy9nZXN0dXJlLXRhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYyxNQUFNLE1BQU0sQ0FBQTtBQUU5QyxPQUFPLEVBQUUsT0FBTyxFQUF1QyxNQUFNLFdBQVcsQ0FBQTtBQU14RSxNQUFNLE9BQU8sY0FBZSxTQUFRLE9BQXlCO0lBQ3pELFlBQVksT0FBMkI7UUFDbkMsS0FBSyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUNqQyxDQUFDO0lBRVEsT0FBTyxDQUFDLE1BQWlDO1FBQzlDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FDZCxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDUixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQTtZQUMzQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDakcsT0FBTztnQkFDUCwwQ0FBMEM7Z0JBQzFDLGdHQUFnRztnQkFDaEcsNkNBQTZDO2dCQUM3QyxlQUFlO2dCQUNmLDBDQUEwQztnQkFDMUMsUUFBUTtnQkFDUixXQUFXO2dCQUNYLHlDQUF5QztnQkFDekMsSUFBSTtnQkFDSixPQUFPLEtBQUssQ0FBQyxLQUFLLGlDQUFxQixDQUFDLENBQUMscUNBQTZCLENBQUMsb0NBQTRCLENBQUE7WUFDdkcsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLHdDQUErQjtZQUNuQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQ0wsQ0FBQTtJQUNMLENBQUM7SUFFUSxNQUFNLENBQUMsTUFBaUM7UUFDN0MsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUNmLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUsscUNBQXVCLElBQUksS0FBSyxDQUFDLEtBQUssaUNBQXFCLENBQUMsQ0FBQyxDQUN2RyxDQUFBO0lBQ0wsQ0FBQztDQUNKO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxPQUEyQjtJQUNsRCxPQUFPLElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0FBQ3RDLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsVUFBVSxFQUFFLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHsgR2VzdHVyZSwgR2VzdHVyZUNhcHR1cmVTdGF0ZSwgR2VzdHVyZU9wdGlvbnMgfSBmcm9tIFwiLi9nZXN0dXJlXCJcbmltcG9ydCB7IEdlc3R1cmVEZXRhaWwsIEdlc3R1cmVQaGFzZSB9IGZyb20gXCIuL2dlc3R1cmUtZXZlbnRcIlxuXG5leHBvcnQgdHlwZSBHZXN0dXJlVGFwRGV0YWlsID0gR2VzdHVyZURldGFpbDxcImdlc3R1cmUtdGFwXCI+XG5leHBvcnQgdHlwZSBHZXN0dXJlVGFwT3B0aW9ucyA9IEdlc3R1cmVPcHRpb25zPEdlc3R1cmVUYXBJbXBsPlxuXG5leHBvcnQgY2xhc3MgR2VzdHVyZVRhcEltcGwgZXh0ZW5kcyBHZXN0dXJlPEdlc3R1cmVUYXBEZXRhaWw+IHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zPzogR2VzdHVyZVRhcE9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIoXCJnZXN0dXJlLXRhcFwiLCBvcHRpb25zKVxuICAgIH1cblxuICAgIG92ZXJyaWRlIGNhcHR1cmUoZXZlbnRzOiBPYnNlcnZhYmxlPEdlc3R1cmVEZXRhaWw+KTogT2JzZXJ2YWJsZTxHZXN0dXJlQ2FwdHVyZVN0YXRlPiB7XG4gICAgICAgIHJldHVybiBldmVudHMucGlwZShcbiAgICAgICAgICAgIG1hcChldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBldmVudC5wb2ludGVyc1swXS5kaXN0YW5jZVxuICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhkaXN0YW5jZS54KSA8IHRoaXMuZGlzdGFuY2VJbmNsdXNpb24gJiYgTWF0aC5hYnMoZGlzdGFuY2UueSkgPCB0aGlzLmRpc3RhbmNlSW5jbHVzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE9cbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgKGV2ZW50LnBoYXNlID09PSBHZXN0dXJlUGhhc2UuRW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vICAgICBpZiAoZXZlbnQudGFyZ2V0ID09PSBldmVudC5vcmlnaW4udGFyZ2V0IHx8IGV2ZW50LnRhcmdldC5jb250YWlucyhldmVudC5vcmlnaW4udGFyZ2V0KSkge1xuICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgIHJldHVybiBHZXN0dXJlQ2FwdHVyZVN0YXRlLkluc3RhbnRcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgcmV0dXJuIEdlc3R1cmVDYXB0dXJlU3RhdGUuU2tpcFxuICAgICAgICAgICAgICAgICAgICAvLyAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyAgICAgcmV0dXJuIEdlc3R1cmVDYXB0dXJlU3RhdGUuUGVuZGluZ1xuICAgICAgICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBldmVudC5waGFzZSA9PT0gR2VzdHVyZVBoYXNlLkVuZCA/IEdlc3R1cmVDYXB0dXJlU3RhdGUuSW5zdGFudCA6IEdlc3R1cmVDYXB0dXJlU3RhdGUuUGVuZGluZ1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBHZXN0dXJlQ2FwdHVyZVN0YXRlLlNraXBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgaGFuZGxlKGV2ZW50czogT2JzZXJ2YWJsZTxHZXN0dXJlRGV0YWlsPikge1xuICAgICAgICByZXR1cm4gc3VwZXIuaGFuZGxlKFxuICAgICAgICAgICAgZXZlbnRzLnBpcGUoZmlsdGVyKGV2ZW50ID0+IGV2ZW50LnBoYXNlID09PSBHZXN0dXJlUGhhc2UuU3RhcnQgfHwgZXZlbnQucGhhc2UgPT09IEdlc3R1cmVQaGFzZS5FbmQpKVxuICAgICAgICApXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VzdHVyZVRhcChvcHRpb25zPzogR2VzdHVyZVRhcE9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IEdlc3R1cmVUYXBJbXBsKG9wdGlvbnMpXG59XG5cbmV4cG9ydCBjb25zdCBHZXN0dXJlVGFwID0gZ2VzdHVyZVRhcCgpXG4iXX0=
@@ -0,0 +1,67 @@
1
+ import { Listeners } from "./gesture-event";
2
+ export class Gesture {
3
+ constructor(name, options = {}) {
4
+ this.name = name;
5
+ /**
6
+ * Gestures that depends on move distance, like drag, use this option
7
+ */
8
+ this.distanceInclusion = 10;
9
+ /**
10
+ * Gestures thet dependnso on time frame, like longtap, use this option
11
+ */
12
+ this.timeWithin = 300;
13
+ /**
14
+ * The priority of the gesture
15
+ */
16
+ this.priority = 0;
17
+ /**
18
+ * Should the gesture include the scroll distance
19
+ */
20
+ this.includeScrollDistance = false;
21
+ /**
22
+ * The pointer types of the gesture
23
+ */
24
+ this.pointerTypes = ["mouse" /* GesturePointerType.Mouse */, "touch" /* GesturePointerType.Touch */];
25
+ /**
26
+ * The number of pointers of the gesture can handle
27
+ */
28
+ this.pointerCount = 1;
29
+ /**
30
+ * The mouse buttons of the gesture (1 = left, 2 = middle, 3 = right)
31
+ */
32
+ this.mouseButtons = [0];
33
+ Object.assign(this, options);
34
+ this.originTypes = Object.keys(Listeners).filter(v => this.pointerTypes.includes(Listeners[v].pointerType));
35
+ }
36
+ /**
37
+ * Transform input event, to gesture event.
38
+ * The given events is filterde by {@see Gesture#isRelevantEvent}
39
+ * ! important, dont rely on this object state, because not always create a new object
40
+ * @param events events to transform or filter or leave as is
41
+ */
42
+ handle(events) {
43
+ return events;
44
+ }
45
+ /**
46
+ * Should this gesture capture the event?
47
+ * @param event event to check
48
+ * @returns true if the gesture should capture the event, false otherwise
49
+ */
50
+ shouldCapture(event) {
51
+ return this.isRelevantEvent(event);
52
+ }
53
+ /**
54
+ * Test if the event is relevant to the gesture.
55
+ * The event is relevant if
56
+ * @param event event to check
57
+ * @returns true if the event is relevant, false otherwise
58
+ */
59
+ isRelevantEvent(event) {
60
+ return (this.pointerTypes.includes(event.pointerType) &&
61
+ this.pointerCount === event.pointers.length &&
62
+ this.originTypes.includes(event.origin.type) &&
63
+ (event.pointerType !== "mouse" /* GesturePointerType.Mouse */ ||
64
+ (event.origin instanceof MouseEvent && this.mouseButtons.includes(event.origin.button))));
65
+ }
66
+ }
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VzdHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FyaWEvc3JjL2dlc3R1cmVzL2dlc3R1cmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFxQyxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQWtCOUUsTUFBTSxPQUFnQixPQUFPO0lBeUN6QixZQUNvQixJQUFZLEVBQzVCLFVBQTJCLEVBQUU7UUFEYixTQUFJLEdBQUosSUFBSSxDQUFRO1FBekNoQzs7V0FFRztRQUNNLHNCQUFpQixHQUFHLEVBQUUsQ0FBQTtRQUUvQjs7V0FFRztRQUNNLGVBQVUsR0FBRyxHQUFHLENBQUE7UUFFekI7O1dBRUc7UUFDTSxhQUFRLEdBQUcsQ0FBQyxDQUFBO1FBRXJCOztXQUVHO1FBQ00sMEJBQXFCLEdBQVksS0FBSyxDQUFBO1FBRS9DOztXQUVHO1FBQ00saUJBQVksR0FBOEIsZ0ZBQW9ELENBQUE7UUFFdkc7O1dBRUc7UUFDTSxpQkFBWSxHQUFXLENBQUMsQ0FBQTtRQUVqQzs7V0FFRztRQUNNLGlCQUFZLEdBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFXdEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFBO0lBQy9HLENBQUM7SUFVRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxNQUFpQztRQUNwQyxPQUFPLE1BQWdDLENBQUE7SUFDM0MsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxhQUFhLENBQUMsS0FBb0I7UUFDOUIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3RDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGVBQWUsQ0FBQyxLQUFvQjtRQUNoQyxPQUFPLENBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztZQUM3QyxJQUFJLENBQUMsWUFBWSxLQUFLLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTTtZQUMzQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQVcsQ0FBQztZQUNuRCxDQUFDLEtBQUssQ0FBQyxXQUFXLDJDQUE2QjtnQkFDM0MsQ0FBQyxLQUFLLENBQUMsTUFBTSxZQUFZLFVBQVUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FDL0YsQ0FBQTtJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiXG5cbmltcG9ydCB7IEZ1bmN0aW9uS2V5cywgTXV0YWJsZSB9IGZyb20gXCJ1dGlsaXR5LXR5cGVzXCJcblxuaW1wb3J0IHsgR2VzdHVyZURldGFpbCwgR2VzdHVyZVBvaW50ZXJUeXBlLCBMaXN0ZW5lcnMgfSBmcm9tIFwiLi9nZXN0dXJlLWV2ZW50XCJcblxuZXhwb3J0IGNvbnN0IGVudW0gR2VzdHVyZUNhcHR1cmVTdGF0ZSB7XG4gICAgLy8gVW5jaGVja2VkXG4gICAgVW5jaGVja2VkID0gMCxcbiAgICAvLyBQZW5kaW5nIHN0YXRlXG4gICAgUGVuZGluZyA9IDEsXG4gICAgLy8gU2tpcCBjYXB0dXJlXG4gICAgU2tpcCA9IDIsXG4gICAgLy8gRGV0ZXJtaW5lIGJ5IHByaW9yaXR5XG4gICAgTWF5YmUgPSAzLFxuICAgIC8vIEluc3Rhbmx0eSB0ZXJtaW5hdGUgY2FwdHVyZSwgYW5kIGZpcmUgZXZlbnRcbiAgICBJbnN0YW50ID0gNFxufVxuXG50eXBlIF9HZXN0dXJlT3B0aW9ucyA9IFBhcnRpYWw8T21pdDxHZXN0dXJlPGFueT4sIFwib3JpZ2luVHlwZXNcIiB8IFwibmFtZVwiIHwgRnVuY3Rpb25LZXlzPEdlc3R1cmU8YW55Pj4+PlxuZXhwb3J0IHR5cGUgR2VzdHVyZU9wdGlvbnM8VCBleHRlbmRzIG9iamVjdD4gPSBQYXJ0aWFsPE9taXQ8VCwga2V5b2YgR2VzdHVyZTxhbnk+IHwgRnVuY3Rpb25LZXlzPFQ+Pj4gJiBfR2VzdHVyZU9wdGlvbnNcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEdlc3R1cmU8VCBleHRlbmRzIEdlc3R1cmVEZXRhaWwgPSBHZXN0dXJlRGV0YWlsPiB7XG4gICAgLyoqXG4gICAgICogR2VzdHVyZXMgdGhhdCBkZXBlbmRzIG9uIG1vdmUgZGlzdGFuY2UsIGxpa2UgZHJhZywgdXNlIHRoaXMgb3B0aW9uXG4gICAgICovXG4gICAgcmVhZG9ubHkgZGlzdGFuY2VJbmNsdXNpb24gPSAxMFxuXG4gICAgLyoqXG4gICAgICogR2VzdHVyZXMgdGhldCBkZXBlbmRuc28gb24gdGltZSBmcmFtZSwgbGlrZSBsb25ndGFwLCB1c2UgdGhpcyBvcHRpb25cbiAgICAgKi9cbiAgICByZWFkb25seSB0aW1lV2l0aGluID0gMzAwXG5cbiAgICAvKipcbiAgICAgKiBUaGUgcHJpb3JpdHkgb2YgdGhlIGdlc3R1cmVcbiAgICAgKi9cbiAgICByZWFkb25seSBwcmlvcml0eSA9IDBcblxuICAgIC8qKlxuICAgICAqIFNob3VsZCB0aGUgZ2VzdHVyZSBpbmNsdWRlIHRoZSBzY3JvbGwgZGlzdGFuY2VcbiAgICAgKi9cbiAgICByZWFkb25seSBpbmNsdWRlU2Nyb2xsRGlzdGFuY2U6IGJvb2xlYW4gPSBmYWxzZVxuXG4gICAgLyoqXG4gICAgICogVGhlIHBvaW50ZXIgdHlwZXMgb2YgdGhlIGdlc3R1cmVcbiAgICAgKi9cbiAgICByZWFkb25seSBwb2ludGVyVHlwZXM6IEFycmF5PEdlc3R1cmVQb2ludGVyVHlwZT4gPSBbR2VzdHVyZVBvaW50ZXJUeXBlLk1vdXNlLCBHZXN0dXJlUG9pbnRlclR5cGUuVG91Y2hdXG5cbiAgICAvKipcbiAgICAgKiBUaGUgbnVtYmVyIG9mIHBvaW50ZXJzIG9mIHRoZSBnZXN0dXJlIGNhbiBoYW5kbGVcbiAgICAgKi9cbiAgICByZWFkb25seSBwb2ludGVyQ291bnQ6IG51bWJlciA9IDFcblxuICAgIC8qKlxuICAgICAqIFRoZSBtb3VzZSBidXR0b25zIG9mIHRoZSBnZXN0dXJlICgxID0gbGVmdCwgMiA9IG1pZGRsZSwgMyA9IHJpZ2h0KVxuICAgICAqL1xuICAgIHJlYWRvbmx5IG1vdXNlQnV0dG9uczogQXJyYXk8bnVtYmVyPiA9IFswXVxuXG4gICAgLyoqXG4gICAgICogVGhlIGV2ZW50IHR5cGVzIG9mIHRoZSBnZXN0dXJlIGNhbiBoYW5kbGVcbiAgICAgKi9cbiAgICByZWFkb25seSBvcmlnaW5UeXBlczogQXJyYXk8c3RyaW5nPlxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmcsXG4gICAgICAgIG9wdGlvbnM6IF9HZXN0dXJlT3B0aW9ucyA9IHt9XG4gICAgKSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgb3B0aW9ucylcbiAgICAgICAgdGhpcy5vcmlnaW5UeXBlcyA9IE9iamVjdC5rZXlzKExpc3RlbmVycykuZmlsdGVyKHYgPT4gdGhpcy5wb2ludGVyVHlwZXMuaW5jbHVkZXMoTGlzdGVuZXJzW3ZdLnBvaW50ZXJUeXBlKSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUZXN0IGlmIHRoZSBnZXN0dXJlIHNob3VsZCBiZSBjYXB0dXJlZC5cbiAgICAgKiBUaGUgZ2l2ZW4gZXZlbnRzIGlzIGZpbHRlcmRlIGJ5IHtAc2VlIEdlc3R1cmUjc2hvdWxkQ2FwdHVyZX1cbiAgICAgKiAhIGltcG9ydGFudCwgZG9udCByZWx5IG9uIHRoaXMgb2JqZWN0IHN0YXRlLCBiZWNhdXNlIG5vdCBhbHdheXMgY3JlYXRlIGEgbmV3IG9iamVjdFxuICAgICAqIEBwYXJhbSBldmVudHMgZXZlbnRzIHRvIGNoZWNrXG4gICAgICovXG4gICAgYWJzdHJhY3QgY2FwdHVyZShldmVudHM6IE9ic2VydmFibGU8R2VzdHVyZURldGFpbD4pOiBPYnNlcnZhYmxlPEdlc3R1cmVDYXB0dXJlU3RhdGU+XG5cbiAgICAvKipcbiAgICAgKiBUcmFuc2Zvcm0gaW5wdXQgZXZlbnQsIHRvIGdlc3R1cmUgZXZlbnQuXG4gICAgICogVGhlIGdpdmVuIGV2ZW50cyBpcyBmaWx0ZXJkZSBieSB7QHNlZSBHZXN0dXJlI2lzUmVsZXZhbnRFdmVudH1cbiAgICAgKiAhIGltcG9ydGFudCwgZG9udCByZWx5IG9uIHRoaXMgb2JqZWN0IHN0YXRlLCBiZWNhdXNlIG5vdCBhbHdheXMgY3JlYXRlIGEgbmV3IG9iamVjdFxuICAgICAqIEBwYXJhbSBldmVudHMgZXZlbnRzIHRvIHRyYW5zZm9ybSBvciBmaWx0ZXIgb3IgbGVhdmUgYXMgaXNcbiAgICAgKi9cbiAgICBoYW5kbGUoZXZlbnRzOiBPYnNlcnZhYmxlPEdlc3R1cmVEZXRhaWw+KTogT2JzZXJ2YWJsZTxNdXRhYmxlPFQ+PiB7XG4gICAgICAgIHJldHVybiBldmVudHMgYXMgT2JzZXJ2YWJsZTxNdXRhYmxlPFQ+PlxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNob3VsZCB0aGlzIGdlc3R1cmUgY2FwdHVyZSB0aGUgZXZlbnQ/XG4gICAgICogQHBhcmFtIGV2ZW50IGV2ZW50IHRvIGNoZWNrXG4gICAgICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgZ2VzdHVyZSBzaG91bGQgY2FwdHVyZSB0aGUgZXZlbnQsIGZhbHNlIG90aGVyd2lzZVxuICAgICAqL1xuICAgIHNob3VsZENhcHR1cmUoZXZlbnQ6IEdlc3R1cmVEZXRhaWwpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNSZWxldmFudEV2ZW50KGV2ZW50KVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRlc3QgaWYgdGhlIGV2ZW50IGlzIHJlbGV2YW50IHRvIHRoZSBnZXN0dXJlLlxuICAgICAqIFRoZSBldmVudCBpcyByZWxldmFudCBpZlxuICAgICAqIEBwYXJhbSBldmVudCBldmVudCB0byBjaGVja1xuICAgICAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGV2ZW50IGlzIHJlbGV2YW50LCBmYWxzZSBvdGhlcndpc2VcbiAgICAgKi9cbiAgICBpc1JlbGV2YW50RXZlbnQoZXZlbnQ6IEdlc3R1cmVEZXRhaWwpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMucG9pbnRlclR5cGVzLmluY2x1ZGVzKGV2ZW50LnBvaW50ZXJUeXBlKSAmJlxuICAgICAgICAgICAgdGhpcy5wb2ludGVyQ291bnQgPT09IGV2ZW50LnBvaW50ZXJzLmxlbmd0aCAmJlxuICAgICAgICAgICAgdGhpcy5vcmlnaW5UeXBlcy5pbmNsdWRlcyhldmVudC5vcmlnaW4udHlwZSBhcyBhbnkpICYmXG4gICAgICAgICAgICAoZXZlbnQucG9pbnRlclR5cGUgIT09IEdlc3R1cmVQb2ludGVyVHlwZS5Nb3VzZSB8fFxuICAgICAgICAgICAgICAgIChldmVudC5vcmlnaW4gaW5zdGFuY2VvZiBNb3VzZUV2ZW50ICYmIHRoaXMubW91c2VCdXR0b25zLmluY2x1ZGVzKGV2ZW50Lm9yaWdpbi5idXR0b24pKSlcbiAgICAgICAgKVxuICAgIH1cbn1cbiJdfQ==