@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.
- package/esm2022/gestures/gesture-drag.mjs +80 -0
- package/esm2022/gestures/gesture-event.mjs +45 -0
- package/esm2022/gestures/gesture-longtap.mjs +33 -0
- package/esm2022/gestures/gesture-tap.mjs +36 -0
- package/esm2022/gestures/gesture.mjs +67 -0
- package/esm2022/gestures/gesture.service.mjs +282 -0
- package/esm2022/gestures/index.mjs +7 -3
- package/fesm2022/ngutil-aria.mjs +439 -116
- package/fesm2022/ngutil-aria.mjs.map +1 -1
- package/gestures/gesture-drag.d.ts +20 -0
- package/gestures/gesture-event.d.ts +46 -0
- package/gestures/gesture-longtap.d.ts +12 -0
- package/gestures/gesture-tap.d.ts +12 -0
- package/gestures/gesture.d.ts +76 -0
- package/gestures/gesture.service.d.ts +21 -0
- package/gestures/index.d.ts +6 -2
- package/package.json +3 -3
- package/esm2022/gestures/gestures/_base.mjs +0 -55
- package/esm2022/gestures/gestures/dragging.mjs +0 -14
- package/esm2022/gestures/gestures/index.mjs +0 -3
- package/esm2022/gestures/gestures.service.mjs +0 -146
- package/gestures/gestures/_base.d.ts +0 -63
- package/gestures/gestures/dragging.d.ts +0 -4
- package/gestures/gestures/index.d.ts +0 -2
- package/gestures/gestures.service.d.ts +0 -10
|
@@ -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==
|