@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.
- package/esm2022/gestures/gesture-drag.mjs +93 -0
- package/esm2022/gestures/gesture-event.mjs +44 -0
- package/esm2022/gestures/gesture-longtap.mjs +36 -0
- package/esm2022/gestures/gesture-tap.mjs +33 -0
- package/esm2022/gestures/gesture.mjs +29 -0
- package/esm2022/gestures/gesture.service.mjs +279 -0
- package/esm2022/gestures/index.mjs +7 -3
- package/fesm2022/ngutil-aria.mjs +408 -115
- package/fesm2022/ngutil-aria.mjs.map +1 -1
- package/gestures/gesture-drag.d.ts +20 -0
- package/gestures/gesture-event.d.ts +44 -0
- package/gestures/gesture-longtap.d.ts +12 -0
- package/gestures/gesture-tap.d.ts +12 -0
- package/gestures/gesture.d.ts +35 -0
- package/gestures/gesture.service.d.ts +22 -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,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
|