easy-gestures 2.0.47 → 2.0.49
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/lib/constants.js +42 -0
- package/lib/customEventTypes.js +74 -0
- package/lib/example/preamble.js +10 -0
- package/lib/example/view.js +83 -0
- package/lib/example.js +19 -0
- package/lib/index.js +18 -0
- package/lib/mixins/touch.js +477 -0
- package/lib/position/relative.js +52 -0
- package/lib/position.js +53 -0
- package/lib/preamble.js +10 -0
- package/lib/selectors.js +26 -0
- package/lib/utilities/positions.js +117 -0
- package/package.json +2 -2
- package/src/mixins/touch.js +7 -3
package/lib/constants.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get MAXIMUM_SPREAD () {
|
|
13
|
+
return MAXIMUM_SPREAD;
|
|
14
|
+
},
|
|
15
|
+
get MAXIMUM_TAP_TIME () {
|
|
16
|
+
return MAXIMUM_TAP_TIME;
|
|
17
|
+
},
|
|
18
|
+
get MINIMUM_SWIPE_SPEED () {
|
|
19
|
+
return MINIMUM_SWIPE_SPEED;
|
|
20
|
+
},
|
|
21
|
+
get PI () {
|
|
22
|
+
return PI;
|
|
23
|
+
},
|
|
24
|
+
get PI_OVER_TWO () {
|
|
25
|
+
return PI_OVER_TWO;
|
|
26
|
+
},
|
|
27
|
+
get PRESS_DELAY () {
|
|
28
|
+
return PRESS_DELAY;
|
|
29
|
+
},
|
|
30
|
+
get TAP_DELAY () {
|
|
31
|
+
return TAP_DELAY;
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
const { PI } = Math;
|
|
35
|
+
const TAP_DELAY = 250;
|
|
36
|
+
const PRESS_DELAY = 750;
|
|
37
|
+
const PI_OVER_TWO = PI / 2;
|
|
38
|
+
const MAXIMUM_SPREAD = PI / 4;
|
|
39
|
+
const MAXIMUM_TAP_TIME = 125;
|
|
40
|
+
const MINIMUM_SWIPE_SPEED = 1;
|
|
41
|
+
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdGFudHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBjb25zdCB7IFBJIH0gPSBNYXRoO1xuXG5leHBvcnQgY29uc3QgVEFQX0RFTEFZID0gMjUwO1xuZXhwb3J0IGNvbnN0IFBSRVNTX0RFTEFZID0gNzUwO1xuZXhwb3J0IGNvbnN0IFBJX09WRVJfVFdPID0gUEkgLyAyO1xuZXhwb3J0IGNvbnN0IE1BWElNVU1fU1BSRUFEID0gUEkgLyA0O1xuZXhwb3J0IGNvbnN0IE1BWElNVU1fVEFQX1RJTUUgPSAxMjU7XG5leHBvcnQgY29uc3QgTUlOSU1VTV9TV0lQRV9TUEVFRCA9IDE7XG4iXSwibmFtZXMiOlsiTUFYSU1VTV9TUFJFQUQiLCJNQVhJTVVNX1RBUF9USU1FIiwiTUlOSU1VTV9TV0lQRV9TUEVFRCIsIlBJIiwiUElfT1ZFUl9UV08iLCJQUkVTU19ERUxBWSIsIlRBUF9ERUxBWSIsIk1hdGgiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQU9hQTtlQUFBQTs7UUFDQUM7ZUFBQUE7O1FBQ0FDO2VBQUFBOztRQVBFQztlQUFBQTs7UUFJRkM7ZUFBQUE7O1FBREFDO2VBQUFBOztRQURBQztlQUFBQTs7O0FBRk4sTUFBTSxFQUFFSCxFQUFFLEVBQUUsR0FBR0k7QUFFZixNQUFNRCxZQUFZO0FBQ2xCLE1BQU1ELGNBQWM7QUFDcEIsTUFBTUQsY0FBY0QsS0FBSztBQUN6QixNQUFNSCxpQkFBaUJHLEtBQUs7QUFDNUIsTUFBTUYsbUJBQW1CO0FBQ3pCLE1BQU1DLHNCQUFzQiJ9
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get DOUBLE_TAP_CUSTOM_EVENT_TYPE () {
|
|
13
|
+
return DOUBLE_TAP_CUSTOM_EVENT_TYPE;
|
|
14
|
+
},
|
|
15
|
+
get DRAG_DOWN_CUSTOM_EVENT_TYPE () {
|
|
16
|
+
return DRAG_DOWN_CUSTOM_EVENT_TYPE;
|
|
17
|
+
},
|
|
18
|
+
get DRAG_LEFT_CUSTOM_EVENT_TYPE () {
|
|
19
|
+
return DRAG_LEFT_CUSTOM_EVENT_TYPE;
|
|
20
|
+
},
|
|
21
|
+
get DRAG_RIGHT_CUSTOM_EVENT_TYPE () {
|
|
22
|
+
return DRAG_RIGHT_CUSTOM_EVENT_TYPE;
|
|
23
|
+
},
|
|
24
|
+
get DRAG_START_CUSTOM_EVENT_TYPE () {
|
|
25
|
+
return DRAG_START_CUSTOM_EVENT_TYPE;
|
|
26
|
+
},
|
|
27
|
+
get DRAG_UP_CUSTOM_EVENT_TYPE () {
|
|
28
|
+
return DRAG_UP_CUSTOM_EVENT_TYPE;
|
|
29
|
+
},
|
|
30
|
+
get PINCH_MOVE_CUSTOM_EVENT_TYPE () {
|
|
31
|
+
return PINCH_MOVE_CUSTOM_EVENT_TYPE;
|
|
32
|
+
},
|
|
33
|
+
get PINCH_START_CUSTOM_EVENT_TYPE () {
|
|
34
|
+
return PINCH_START_CUSTOM_EVENT_TYPE;
|
|
35
|
+
},
|
|
36
|
+
get PINCH_STOP_CUSTOM_EVENT_TYPE () {
|
|
37
|
+
return PINCH_STOP_CUSTOM_EVENT_TYPE;
|
|
38
|
+
},
|
|
39
|
+
get PRESS_CUSTOM_EVENT_TYPE () {
|
|
40
|
+
return PRESS_CUSTOM_EVENT_TYPE;
|
|
41
|
+
},
|
|
42
|
+
get SINGLE_TAP_CUSTOM_EVENT_TYPE () {
|
|
43
|
+
return SINGLE_TAP_CUSTOM_EVENT_TYPE;
|
|
44
|
+
},
|
|
45
|
+
get SWIPE_DOWN_CUSTOM_EVENT_TYPE () {
|
|
46
|
+
return SWIPE_DOWN_CUSTOM_EVENT_TYPE;
|
|
47
|
+
},
|
|
48
|
+
get SWIPE_LEFT_CUSTOM_EVENT_TYPE () {
|
|
49
|
+
return SWIPE_LEFT_CUSTOM_EVENT_TYPE;
|
|
50
|
+
},
|
|
51
|
+
get SWIPE_RIGHT_CUSTOM_EVENT_TYPE () {
|
|
52
|
+
return SWIPE_RIGHT_CUSTOM_EVENT_TYPE;
|
|
53
|
+
},
|
|
54
|
+
get SWIPE_UP_CUSTOM_EVENT_TYPE () {
|
|
55
|
+
return SWIPE_UP_CUSTOM_EVENT_TYPE;
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
const PRESS_CUSTOM_EVENT_TYPE = "press";
|
|
59
|
+
const DRAG_UP_CUSTOM_EVENT_TYPE = "drag-up";
|
|
60
|
+
const DRAG_DOWN_CUSTOM_EVENT_TYPE = "drag-down";
|
|
61
|
+
const DRAG_LEFT_CUSTOM_EVENT_TYPE = "drag-left";
|
|
62
|
+
const DRAG_RIGHT_CUSTOM_EVENT_TYPE = "drag-right";
|
|
63
|
+
const DRAG_START_CUSTOM_EVENT_TYPE = "drag-start";
|
|
64
|
+
const SWIPE_UP_CUSTOM_EVENT_TYPE = "swipe-up";
|
|
65
|
+
const SWIPE_DOWN_CUSTOM_EVENT_TYPE = "swipe-down";
|
|
66
|
+
const SWIPE_LEFT_CUSTOM_EVENT_TYPE = "swipe-left";
|
|
67
|
+
const SWIPE_RIGHT_CUSTOM_EVENT_TYPE = "swipe-right";
|
|
68
|
+
const PINCH_MOVE_CUSTOM_EVENT_TYPE = "pinch-move";
|
|
69
|
+
const PINCH_START_CUSTOM_EVENT_TYPE = "pinch-start";
|
|
70
|
+
const PINCH_STOP_CUSTOM_EVENT_TYPE = "pinch-stop";
|
|
71
|
+
const SINGLE_TAP_CUSTOM_EVENT_TYPE = "single-tap";
|
|
72
|
+
const DOUBLE_TAP_CUSTOM_EVENT_TYPE = "double-tap";
|
|
73
|
+
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jdXN0b21FdmVudFR5cGVzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgY29uc3QgUFJFU1NfQ1VTVE9NX0VWRU5UX1RZUEUgPSBcInByZXNzXCI7XG5leHBvcnQgY29uc3QgRFJBR19VUF9DVVNUT01fRVZFTlRfVFlQRSA9IFwiZHJhZy11cFwiO1xuZXhwb3J0IGNvbnN0IERSQUdfRE9XTl9DVVNUT01fRVZFTlRfVFlQRSA9IFwiZHJhZy1kb3duXCI7XG5leHBvcnQgY29uc3QgRFJBR19MRUZUX0NVU1RPTV9FVkVOVF9UWVBFID0gXCJkcmFnLWxlZnRcIjtcbmV4cG9ydCBjb25zdCBEUkFHX1JJR0hUX0NVU1RPTV9FVkVOVF9UWVBFID0gXCJkcmFnLXJpZ2h0XCI7XG5leHBvcnQgY29uc3QgRFJBR19TVEFSVF9DVVNUT01fRVZFTlRfVFlQRSA9IFwiZHJhZy1zdGFydFwiO1xuZXhwb3J0IGNvbnN0IFNXSVBFX1VQX0NVU1RPTV9FVkVOVF9UWVBFID0gXCJzd2lwZS11cFwiO1xuZXhwb3J0IGNvbnN0IFNXSVBFX0RPV05fQ1VTVE9NX0VWRU5UX1RZUEUgPSBcInN3aXBlLWRvd25cIjtcbmV4cG9ydCBjb25zdCBTV0lQRV9MRUZUX0NVU1RPTV9FVkVOVF9UWVBFID0gXCJzd2lwZS1sZWZ0XCI7XG5leHBvcnQgY29uc3QgU1dJUEVfUklHSFRfQ1VTVE9NX0VWRU5UX1RZUEUgPSBcInN3aXBlLXJpZ2h0XCI7XG5leHBvcnQgY29uc3QgUElOQ0hfTU9WRV9DVVNUT01fRVZFTlRfVFlQRSA9IFwicGluY2gtbW92ZVwiO1xuZXhwb3J0IGNvbnN0IFBJTkNIX1NUQVJUX0NVU1RPTV9FVkVOVF9UWVBFID0gXCJwaW5jaC1zdGFydFwiO1xuZXhwb3J0IGNvbnN0IFBJTkNIX1NUT1BfQ1VTVE9NX0VWRU5UX1RZUEUgPSBcInBpbmNoLXN0b3BcIjtcbmV4cG9ydCBjb25zdCBTSU5HTEVfVEFQX0NVU1RPTV9FVkVOVF9UWVBFID0gXCJzaW5nbGUtdGFwXCI7XG5leHBvcnQgY29uc3QgRE9VQkxFX1RBUF9DVVNUT01fRVZFTlRfVFlQRSA9IFwiZG91YmxlLXRhcFwiO1xuIl0sIm5hbWVzIjpbIkRPVUJMRV9UQVBfQ1VTVE9NX0VWRU5UX1RZUEUiLCJEUkFHX0RPV05fQ1VTVE9NX0VWRU5UX1RZUEUiLCJEUkFHX0xFRlRfQ1VTVE9NX0VWRU5UX1RZUEUiLCJEUkFHX1JJR0hUX0NVU1RPTV9FVkVOVF9UWVBFIiwiRFJBR19TVEFSVF9DVVNUT01fRVZFTlRfVFlQRSIsIkRSQUdfVVBfQ1VTVE9NX0VWRU5UX1RZUEUiLCJQSU5DSF9NT1ZFX0NVU1RPTV9FVkVOVF9UWVBFIiwiUElOQ0hfU1RBUlRfQ1VTVE9NX0VWRU5UX1RZUEUiLCJQSU5DSF9TVE9QX0NVU1RPTV9FVkVOVF9UWVBFIiwiUFJFU1NfQ1VTVE9NX0VWRU5UX1RZUEUiLCJTSU5HTEVfVEFQX0NVU1RPTV9FVkVOVF9UWVBFIiwiU1dJUEVfRE9XTl9DVVNUT01fRVZFTlRfVFlQRSIsIlNXSVBFX0xFRlRfQ1VTVE9NX0VWRU5UX1RZUEUiLCJTV0lQRV9SSUdIVF9DVVNUT01fRVZFTlRfVFlQRSIsIlNXSVBFX1VQX0NVU1RPTV9FVkVOVF9UWVBFIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFnQmFBO2VBQUFBOztRQVpBQztlQUFBQTs7UUFDQUM7ZUFBQUE7O1FBQ0FDO2VBQUFBOztRQUNBQztlQUFBQTs7UUFKQUM7ZUFBQUE7O1FBU0FDO2VBQUFBOztRQUNBQztlQUFBQTs7UUFDQUM7ZUFBQUE7O1FBWkFDO2VBQUFBOztRQWFBQztlQUFBQTs7UUFOQUM7ZUFBQUE7O1FBQ0FDO2VBQUFBOztRQUNBQztlQUFBQTs7UUFIQUM7ZUFBQUE7OztBQU5OLE1BQU1MLDBCQUEwQjtBQUNoQyxNQUFNSiw0QkFBNEI7QUFDbEMsTUFBTUosOEJBQThCO0FBQ3BDLE1BQU1DLDhCQUE4QjtBQUNwQyxNQUFNQywrQkFBK0I7QUFDckMsTUFBTUMsK0JBQStCO0FBQ3JDLE1BQU1VLDZCQUE2QjtBQUNuQyxNQUFNSCwrQkFBK0I7QUFDckMsTUFBTUMsK0JBQStCO0FBQ3JDLE1BQU1DLGdDQUFnQztBQUN0QyxNQUFNUCwrQkFBK0I7QUFDckMsTUFBTUMsZ0NBQWdDO0FBQ3RDLE1BQU1DLCtCQUErQjtBQUNyQyxNQUFNRSwrQkFBK0I7QUFDckMsTUFBTVYsK0JBQStCIn0=
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
const _easy = require("easy");
|
|
6
|
+
Object.assign(globalThis, {
|
|
7
|
+
React: _easy.React
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leGFtcGxlL3ByZWFtYmxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBSZWFjdCB9IGZyb20gXCJlYXN5XCI7XG5cbk9iamVjdC5hc3NpZ24oZ2xvYmFsVGhpcywge1xuICBSZWFjdFxufSk7XG4iXSwibmFtZXMiOlsiT2JqZWN0IiwiYXNzaWduIiwiZ2xvYmFsVGhpcyIsIlJlYWN0Il0sIm1hcHBpbmdzIjoiQUFBQTs7OztzQkFFc0I7QUFFdEJBLE9BQU9DLE1BQU0sQ0FBQ0MsWUFBWTtJQUN4QkMsT0FBQUEsV0FBSztBQUNQIn0=
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "default", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return _default;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _easywithstyle = /*#__PURE__*/ _interop_require_default(require("easy-with-style"));
|
|
12
|
+
const _easy = require("easy");
|
|
13
|
+
const _index = require("../index");
|
|
14
|
+
function _interop_require_default(obj) {
|
|
15
|
+
return obj && obj.__esModule ? obj : {
|
|
16
|
+
default: obj
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
class View extends _easy.Element {
|
|
20
|
+
singleTapCustomHandler = (event, element, top, left)=>{
|
|
21
|
+
console.log("single tap");
|
|
22
|
+
};
|
|
23
|
+
doubleTapCustomHandler = (event, element, top, left)=>{
|
|
24
|
+
console.log("double tap");
|
|
25
|
+
};
|
|
26
|
+
pinchStartCustomHandler = (event, element)=>{
|
|
27
|
+
console.log("pinch start");
|
|
28
|
+
};
|
|
29
|
+
pinchMoveCustomHandler = (event, element, ratio)=>{
|
|
30
|
+
console.log("pinch move", ratio);
|
|
31
|
+
};
|
|
32
|
+
swipeRightCustomHandler = (event, element, top, left, speed)=>{
|
|
33
|
+
console.log("swipe right", speed);
|
|
34
|
+
};
|
|
35
|
+
swipeLeftCustomHandler = (event, element, top, left, speed)=>{
|
|
36
|
+
console.log("swipe left", speed);
|
|
37
|
+
};
|
|
38
|
+
dragDownCustomHandler = (event, element, top, left)=>{
|
|
39
|
+
console.log("drag down", top);
|
|
40
|
+
};
|
|
41
|
+
dragUpCustomHandler = (event, element, top, left)=>{
|
|
42
|
+
console.log("drag up", top);
|
|
43
|
+
};
|
|
44
|
+
didMount() {
|
|
45
|
+
this.onCustomDragUp(this.dragUpCustomHandler);
|
|
46
|
+
this.onCustomDragDown(this.dragDownCustomHandler);
|
|
47
|
+
this.onCustomSwipeLeft(this.swipeLeftCustomHandler);
|
|
48
|
+
this.onCustomSwipeRight(this.swipeRightCustomHandler);
|
|
49
|
+
this.onCustomPinchMove(this.pinchMoveCustomHandler);
|
|
50
|
+
this.onCustomPinchStart(this.pinchStartCustomHandler);
|
|
51
|
+
this.onCustomSingleTap(this.singleTapCustomHandler);
|
|
52
|
+
this.onCustomDoubleTap(this.doubleTapCustomHandler);
|
|
53
|
+
this.enableTouch();
|
|
54
|
+
}
|
|
55
|
+
willUnmount() {
|
|
56
|
+
this.disableTouch();
|
|
57
|
+
this.offCustomDragUp(this.dragUpCustomHandler);
|
|
58
|
+
this.offCustomDragDown(this.dragDownCustomHandler);
|
|
59
|
+
this.offCustomSwipeLeft(this.swipeLeftCustomHandler);
|
|
60
|
+
this.offCustomSwipeRight(this.swipeRightCustomHandler);
|
|
61
|
+
this.offCustomPinchMove(this.pinchMoveCustomHandler);
|
|
62
|
+
this.offCustomPinchStart(this.pinchStartCustomHandler);
|
|
63
|
+
this.offCustomSingleTap(this.singleTapCustomHandler);
|
|
64
|
+
this.offCustomDoubleTap(this.doubleTapCustomHandler);
|
|
65
|
+
}
|
|
66
|
+
static tagName = "div";
|
|
67
|
+
static defaultProperties = {
|
|
68
|
+
className: "view"
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
Object.assign(View.prototype, _index.touchMixins);
|
|
72
|
+
const _default = (0, _easywithstyle.default)(View)`
|
|
73
|
+
|
|
74
|
+
width: 100%;
|
|
75
|
+
height: 100%;
|
|
76
|
+
display: flex;
|
|
77
|
+
align-items: center;
|
|
78
|
+
touch-action: none;
|
|
79
|
+
justify-content: center;
|
|
80
|
+
|
|
81
|
+
`;
|
|
82
|
+
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leGFtcGxlL3ZpZXcuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB3aXRoU3R5bGUgZnJvbSBcImVhc3ktd2l0aC1zdHlsZVwiOyAgLy8vXG5cbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwiZWFzeVwiO1xuaW1wb3J0IHsgdG91Y2hNaXhpbnMgfSBmcm9tIFwiLi4vaW5kZXhcIjsgLy8vXG5cbmNsYXNzIFZpZXcgZXh0ZW5kcyBFbGVtZW50IHtcbiAgc2luZ2xlVGFwQ3VzdG9tSGFuZGxlciA9IChldmVudCwgZWxlbWVudCwgdG9wLCBsZWZ0KSA9PiB7XG4gICAgY29uc29sZS5sb2coXCJzaW5nbGUgdGFwXCIpXG4gIH1cblxuICBkb3VibGVUYXBDdXN0b21IYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50LCB0b3AsIGxlZnQpID0+IHtcbiAgICBjb25zb2xlLmxvZyhcImRvdWJsZSB0YXBcIilcbiAgfVxuXG4gIHBpbmNoU3RhcnRDdXN0b21IYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XG4gICAgY29uc29sZS5sb2coXCJwaW5jaCBzdGFydFwiKVxuICB9XG5cbiAgcGluY2hNb3ZlQ3VzdG9tSGFuZGxlciA9IChldmVudCwgZWxlbWVudCwgcmF0aW8pID0+IHtcbiAgICBjb25zb2xlLmxvZyhcInBpbmNoIG1vdmVcIiwgcmF0aW8pXG4gIH1cblxuICBzd2lwZVJpZ2h0Q3VzdG9tSGFuZGxlciA9IChldmVudCwgZWxlbWVudCwgdG9wLCBsZWZ0LCBzcGVlZCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKFwic3dpcGUgcmlnaHRcIiwgc3BlZWQpXG4gIH1cblxuICBzd2lwZUxlZnRDdXN0b21IYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50LCB0b3AsIGxlZnQsIHNwZWVkKSA9PiB7XG4gICAgY29uc29sZS5sb2coXCJzd2lwZSBsZWZ0XCIsIHNwZWVkKVxuICB9XG5cbiAgZHJhZ0Rvd25DdXN0b21IYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50LCB0b3AsIGxlZnQpID0+IHtcbiAgICBjb25zb2xlLmxvZyhcImRyYWcgZG93blwiLCB0b3ApXG4gIH1cblxuICBkcmFnVXBDdXN0b21IYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50LCB0b3AsIGxlZnQpID0+IHtcbiAgICBjb25zb2xlLmxvZyhcImRyYWcgdXBcIiwgdG9wKVxuICB9XG5cbiAgZGlkTW91bnQoKSB7XG4gICAgdGhpcy5vbkN1c3RvbURyYWdVcCh0aGlzLmRyYWdVcEN1c3RvbUhhbmRsZXIpO1xuICAgIHRoaXMub25DdXN0b21EcmFnRG93bih0aGlzLmRyYWdEb3duQ3VzdG9tSGFuZGxlcik7XG4gICAgdGhpcy5vbkN1c3RvbVN3aXBlTGVmdCh0aGlzLnN3aXBlTGVmdEN1c3RvbUhhbmRsZXIpO1xuICAgIHRoaXMub25DdXN0b21Td2lwZVJpZ2h0KHRoaXMuc3dpcGVSaWdodEN1c3RvbUhhbmRsZXIpO1xuICAgIHRoaXMub25DdXN0b21QaW5jaE1vdmUodGhpcy5waW5jaE1vdmVDdXN0b21IYW5kbGVyKTtcbiAgICB0aGlzLm9uQ3VzdG9tUGluY2hTdGFydCh0aGlzLnBpbmNoU3RhcnRDdXN0b21IYW5kbGVyKTtcbiAgICB0aGlzLm9uQ3VzdG9tU2luZ2xlVGFwKHRoaXMuc2luZ2xlVGFwQ3VzdG9tSGFuZGxlcik7XG4gICAgdGhpcy5vbkN1c3RvbURvdWJsZVRhcCh0aGlzLmRvdWJsZVRhcEN1c3RvbUhhbmRsZXIpO1xuXG4gICAgdGhpcy5lbmFibGVUb3VjaCgpO1xuICB9XG5cbiAgd2lsbFVubW91bnQoKSB7XG4gICAgdGhpcy5kaXNhYmxlVG91Y2goKTtcblxuICAgIHRoaXMub2ZmQ3VzdG9tRHJhZ1VwKHRoaXMuZHJhZ1VwQ3VzdG9tSGFuZGxlcik7XG4gICAgdGhpcy5vZmZDdXN0b21EcmFnRG93bih0aGlzLmRyYWdEb3duQ3VzdG9tSGFuZGxlcik7XG4gICAgdGhpcy5vZmZDdXN0b21Td2lwZUxlZnQodGhpcy5zd2lwZUxlZnRDdXN0b21IYW5kbGVyKTtcbiAgICB0aGlzLm9mZkN1c3RvbVN3aXBlUmlnaHQodGhpcy5zd2lwZVJpZ2h0Q3VzdG9tSGFuZGxlcik7XG4gICAgdGhpcy5vZmZDdXN0b21QaW5jaE1vdmUodGhpcy5waW5jaE1vdmVDdXN0b21IYW5kbGVyKTtcbiAgICB0aGlzLm9mZkN1c3RvbVBpbmNoU3RhcnQodGhpcy5waW5jaFN0YXJ0Q3VzdG9tSGFuZGxlcik7XG4gICAgdGhpcy5vZmZDdXN0b21TaW5nbGVUYXAodGhpcy5zaW5nbGVUYXBDdXN0b21IYW5kbGVyKTtcbiAgICB0aGlzLm9mZkN1c3RvbURvdWJsZVRhcCh0aGlzLmRvdWJsZVRhcEN1c3RvbUhhbmRsZXIpO1xuICB9XG5cbiAgc3RhdGljIHRhZ05hbWUgPSBcImRpdlwiO1xuXG4gIHN0YXRpYyBkZWZhdWx0UHJvcGVydGllcyA9IHtcbiAgICBjbGFzc05hbWU6IFwidmlld1wiXG4gIH07XG59XG5cbk9iamVjdC5hc3NpZ24oVmlldy5wcm90b3R5cGUsIHRvdWNoTWl4aW5zKTtcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFN0eWxlKFZpZXcpYFxuICBcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgdG91Y2gtYWN0aW9uOiBub25lO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgXG5gO1xuIl0sIm5hbWVzIjpbIlZpZXciLCJFbGVtZW50Iiwic2luZ2xlVGFwQ3VzdG9tSGFuZGxlciIsImV2ZW50IiwiZWxlbWVudCIsInRvcCIsImxlZnQiLCJjb25zb2xlIiwibG9nIiwiZG91YmxlVGFwQ3VzdG9tSGFuZGxlciIsInBpbmNoU3RhcnRDdXN0b21IYW5kbGVyIiwicGluY2hNb3ZlQ3VzdG9tSGFuZGxlciIsInJhdGlvIiwic3dpcGVSaWdodEN1c3RvbUhhbmRsZXIiLCJzcGVlZCIsInN3aXBlTGVmdEN1c3RvbUhhbmRsZXIiLCJkcmFnRG93bkN1c3RvbUhhbmRsZXIiLCJkcmFnVXBDdXN0b21IYW5kbGVyIiwiZGlkTW91bnQiLCJvbkN1c3RvbURyYWdVcCIsIm9uQ3VzdG9tRHJhZ0Rvd24iLCJvbkN1c3RvbVN3aXBlTGVmdCIsIm9uQ3VzdG9tU3dpcGVSaWdodCIsIm9uQ3VzdG9tUGluY2hNb3ZlIiwib25DdXN0b21QaW5jaFN0YXJ0Iiwib25DdXN0b21TaW5nbGVUYXAiLCJvbkN1c3RvbURvdWJsZVRhcCIsImVuYWJsZVRvdWNoIiwid2lsbFVubW91bnQiLCJkaXNhYmxlVG91Y2giLCJvZmZDdXN0b21EcmFnVXAiLCJvZmZDdXN0b21EcmFnRG93biIsIm9mZkN1c3RvbVN3aXBlTGVmdCIsIm9mZkN1c3RvbVN3aXBlUmlnaHQiLCJvZmZDdXN0b21QaW5jaE1vdmUiLCJvZmZDdXN0b21QaW5jaFN0YXJ0Iiwib2ZmQ3VzdG9tU2luZ2xlVGFwIiwib2ZmQ3VzdG9tRG91YmxlVGFwIiwidGFnTmFtZSIsImRlZmF1bHRQcm9wZXJ0aWVzIiwiY2xhc3NOYW1lIiwiT2JqZWN0IiwiYXNzaWduIiwicHJvdG90eXBlIiwidG91Y2hNaXhpbnMiLCJ3aXRoU3R5bGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQTJFQTs7O2VBQUE7OztzRUF6RXNCO3NCQUVFO3VCQUNJOzs7Ozs7QUFFNUIsTUFBTUEsYUFBYUMsYUFBTztJQUN4QkMseUJBQXlCLENBQUNDLE9BQU9DLFNBQVNDLEtBQUtDO1FBQzdDQyxRQUFRQyxHQUFHLENBQUM7SUFDZCxFQUFDO0lBRURDLHlCQUF5QixDQUFDTixPQUFPQyxTQUFTQyxLQUFLQztRQUM3Q0MsUUFBUUMsR0FBRyxDQUFDO0lBQ2QsRUFBQztJQUVERSwwQkFBMEIsQ0FBQ1AsT0FBT0M7UUFDaENHLFFBQVFDLEdBQUcsQ0FBQztJQUNkLEVBQUM7SUFFREcseUJBQXlCLENBQUNSLE9BQU9DLFNBQVNRO1FBQ3hDTCxRQUFRQyxHQUFHLENBQUMsY0FBY0k7SUFDNUIsRUFBQztJQUVEQywwQkFBMEIsQ0FBQ1YsT0FBT0MsU0FBU0MsS0FBS0MsTUFBTVE7UUFDcERQLFFBQVFDLEdBQUcsQ0FBQyxlQUFlTTtJQUM3QixFQUFDO0lBRURDLHlCQUF5QixDQUFDWixPQUFPQyxTQUFTQyxLQUFLQyxNQUFNUTtRQUNuRFAsUUFBUUMsR0FBRyxDQUFDLGNBQWNNO0lBQzVCLEVBQUM7SUFFREUsd0JBQXdCLENBQUNiLE9BQU9DLFNBQVNDLEtBQUtDO1FBQzVDQyxRQUFRQyxHQUFHLENBQUMsYUFBYUg7SUFDM0IsRUFBQztJQUVEWSxzQkFBc0IsQ0FBQ2QsT0FBT0MsU0FBU0MsS0FBS0M7UUFDMUNDLFFBQVFDLEdBQUcsQ0FBQyxXQUFXSDtJQUN6QixFQUFDO0lBRURhLFdBQVc7UUFDVCxJQUFJLENBQUNDLGNBQWMsQ0FBQyxJQUFJLENBQUNGLG1CQUFtQjtRQUM1QyxJQUFJLENBQUNHLGdCQUFnQixDQUFDLElBQUksQ0FBQ0oscUJBQXFCO1FBQ2hELElBQUksQ0FBQ0ssaUJBQWlCLENBQUMsSUFBSSxDQUFDTixzQkFBc0I7UUFDbEQsSUFBSSxDQUFDTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUNULHVCQUF1QjtRQUNwRCxJQUFJLENBQUNVLGlCQUFpQixDQUFDLElBQUksQ0FBQ1osc0JBQXNCO1FBQ2xELElBQUksQ0FBQ2Esa0JBQWtCLENBQUMsSUFBSSxDQUFDZCx1QkFBdUI7UUFDcEQsSUFBSSxDQUFDZSxpQkFBaUIsQ0FBQyxJQUFJLENBQUN2QixzQkFBc0I7UUFDbEQsSUFBSSxDQUFDd0IsaUJBQWlCLENBQUMsSUFBSSxDQUFDakIsc0JBQXNCO1FBRWxELElBQUksQ0FBQ2tCLFdBQVc7SUFDbEI7SUFFQUMsY0FBYztRQUNaLElBQUksQ0FBQ0MsWUFBWTtRQUVqQixJQUFJLENBQUNDLGVBQWUsQ0FBQyxJQUFJLENBQUNiLG1CQUFtQjtRQUM3QyxJQUFJLENBQUNjLGlCQUFpQixDQUFDLElBQUksQ0FBQ2YscUJBQXFCO1FBQ2pELElBQUksQ0FBQ2dCLGtCQUFrQixDQUFDLElBQUksQ0FBQ2pCLHNCQUFzQjtRQUNuRCxJQUFJLENBQUNrQixtQkFBbUIsQ0FBQyxJQUFJLENBQUNwQix1QkFBdUI7UUFDckQsSUFBSSxDQUFDcUIsa0JBQWtCLENBQUMsSUFBSSxDQUFDdkIsc0JBQXNCO1FBQ25ELElBQUksQ0FBQ3dCLG1CQUFtQixDQUFDLElBQUksQ0FBQ3pCLHVCQUF1QjtRQUNyRCxJQUFJLENBQUMwQixrQkFBa0IsQ0FBQyxJQUFJLENBQUNsQyxzQkFBc0I7UUFDbkQsSUFBSSxDQUFDbUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDNUIsc0JBQXNCO0lBQ3JEO0lBRUEsT0FBTzZCLFVBQVUsTUFBTTtJQUV2QixPQUFPQyxvQkFBb0I7UUFDekJDLFdBQVc7SUFDYixFQUFFO0FBQ0o7QUFFQUMsT0FBT0MsTUFBTSxDQUFDMUMsS0FBSzJDLFNBQVMsRUFBRUMsa0JBQVc7TUFFekMsV0FBZUMsSUFBQUEsc0JBQVMsRUFBQzdDLEtBQUssQ0FBQzs7Ozs7Ozs7O0FBUy9CLENBQUMifQ==
|
package/lib/example.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
require("./example/preamble");
|
|
6
|
+
const _easywithstyle = /*#__PURE__*/ _interop_require_default(require("easy-with-style"));
|
|
7
|
+
const _easy = require("easy");
|
|
8
|
+
const _view = /*#__PURE__*/ _interop_require_default(require("./example/view"));
|
|
9
|
+
function _interop_require_default(obj) {
|
|
10
|
+
return obj && obj.__esModule ? obj : {
|
|
11
|
+
default: obj
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
const { renderStyles } = _easywithstyle.default;
|
|
15
|
+
const body = new _easy.Body(), view = /*#__PURE__*/ React.createElement(_view.default, null);
|
|
16
|
+
renderStyles();
|
|
17
|
+
body.mount(view);
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9leGFtcGxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgXCIuL2V4YW1wbGUvcHJlYW1ibGVcIjtcblxuaW1wb3J0IHdpdGhTdHlsZSBmcm9tIFwiZWFzeS13aXRoLXN0eWxlXCI7ICAvLy9cblxuaW1wb3J0IHsgQm9keSB9IGZyb20gXCJlYXN5XCI7XG5cbmltcG9ydCBWaWV3IGZyb20gXCIuL2V4YW1wbGUvdmlld1wiO1xuXG5jb25zdCB7IHJlbmRlclN0eWxlcyB9ID0gd2l0aFN0eWxlO1xuXG5jb25zdCBib2R5ID0gbmV3IEJvZHkoKSxcbiAgICAgIHZpZXcgPVxuXG4gICAgICAgIDxWaWV3Lz5cblxuICAgICAgO1xuXG5yZW5kZXJTdHlsZXMoKTtcblxuYm9keS5tb3VudCh2aWV3KTtcbiJdLCJuYW1lcyI6WyJyZW5kZXJTdHlsZXMiLCJ3aXRoU3R5bGUiLCJib2R5IiwiQm9keSIsInZpZXciLCJWaWV3IiwibW91bnQiXSwibWFwcGluZ3MiOiJBQUFBOzs7O1FBRU87c0VBRWU7c0JBRUQ7NkRBRUo7Ozs7OztBQUVqQixNQUFNLEVBQUVBLFlBQVksRUFBRSxHQUFHQyxzQkFBUztBQUVsQyxNQUFNQyxPQUFPLElBQUlDLFVBQUksSUFDZkMscUJBRUUsb0JBQUNDLGFBQUk7QUFJYkw7QUFFQUUsS0FBS0ksS0FBSyxDQUFDRiJ9
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "touchMixins", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return _touch.default;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _touch = /*#__PURE__*/ _interop_require_default(require("./mixins/touch"));
|
|
12
|
+
function _interop_require_default(obj) {
|
|
13
|
+
return obj && obj.__esModule ? obj : {
|
|
14
|
+
default: obj
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyB0b3VjaE1peGlucyB9IGZyb20gXCIuL21peGlucy90b3VjaFwiO1xuIl0sIm5hbWVzIjpbInRvdWNoTWl4aW5zIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFFb0JBOzs7ZUFBQUEsY0FBVzs7OzhEQUFRIn0=
|
|
@@ -0,0 +1,477 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "default", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return _default;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _easy = require("easy");
|
|
12
|
+
const _necessary = require("necessary");
|
|
13
|
+
const _relative = /*#__PURE__*/ _interop_require_default(require("../position/relative"));
|
|
14
|
+
const _constants = require("../constants");
|
|
15
|
+
const _positions = require("../utilities/positions");
|
|
16
|
+
const _customEventTypes = require("../customEventTypes");
|
|
17
|
+
function _interop_require_default(obj) {
|
|
18
|
+
return obj && obj.__esModule ? obj : {
|
|
19
|
+
default: obj
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
const { push, first, second } = _necessary.arrayUtilities;
|
|
23
|
+
function enableTouch() {
|
|
24
|
+
const tapInterval = null, startMagnitude = null, startPositions = [], movingPositions = [];
|
|
25
|
+
this.updateState({
|
|
26
|
+
tapInterval,
|
|
27
|
+
startMagnitude,
|
|
28
|
+
startPositions,
|
|
29
|
+
movingPositions
|
|
30
|
+
});
|
|
31
|
+
this.onMouseDown(this.mouseDownHandler);
|
|
32
|
+
this.onMouseMove(this.mouseMoveHandler);
|
|
33
|
+
_easy.window.onMouseUp(this.mouseUpHandler, this);
|
|
34
|
+
this.onTouchStart(this.touchStartHandler);
|
|
35
|
+
this.onTouchMove(this.touchMoveHandler);
|
|
36
|
+
this.onTouchEnd(this.touchEndHandler);
|
|
37
|
+
}
|
|
38
|
+
function disableTouch() {
|
|
39
|
+
this.offMouseDown(this.mouseDownHandler);
|
|
40
|
+
this.offMouseMove(this.mouseMoveHandler);
|
|
41
|
+
_easy.window.offMouseUp(this.mouseUpHandler, this);
|
|
42
|
+
this.offTouchStart(this.touchStartHandler);
|
|
43
|
+
this.offTouchMove(this.touchMoveHandler);
|
|
44
|
+
this.offTouchEnd(this.touchEndHandler);
|
|
45
|
+
}
|
|
46
|
+
function onCustomPress(pressCustomHandler, element) {
|
|
47
|
+
const customEventType = _customEventTypes.PRESS_CUSTOM_EVENT_TYPE, customHandler = pressCustomHandler; ///
|
|
48
|
+
this.onCustomEvent(customEventType, customHandler, element);
|
|
49
|
+
}
|
|
50
|
+
function offCustomPress(pressCustomHandler, element) {
|
|
51
|
+
const customEventType = _customEventTypes.PRESS_CUSTOM_EVENT_TYPE, customHandler = pressCustomHandler; ///
|
|
52
|
+
this.offCustomEvent(customEventType, customHandler, element);
|
|
53
|
+
}
|
|
54
|
+
function onCustomDragUp(dragUpCustomHandler, element) {
|
|
55
|
+
const customEventType = _customEventTypes.DRAG_UP_CUSTOM_EVENT_TYPE, customHandler = dragUpCustomHandler; ///
|
|
56
|
+
this.onCustomEvent(customEventType, customHandler, element);
|
|
57
|
+
}
|
|
58
|
+
function offCustomDragUp(dragUpCustomHandler, element) {
|
|
59
|
+
const customEventType = _customEventTypes.DRAG_UP_CUSTOM_EVENT_TYPE, customHandler = dragUpCustomHandler; ///
|
|
60
|
+
this.offCustomEvent(customEventType, customHandler, element);
|
|
61
|
+
}
|
|
62
|
+
function onCustomDragDown(dragDownCustomHandler, element) {
|
|
63
|
+
const customEventType = _customEventTypes.DRAG_DOWN_CUSTOM_EVENT_TYPE, customHandler = dragDownCustomHandler; ///
|
|
64
|
+
this.onCustomEvent(customEventType, customHandler, element);
|
|
65
|
+
}
|
|
66
|
+
function offCustomDragDown(dragDownCustomHandler, element) {
|
|
67
|
+
const customEventType = _customEventTypes.DRAG_DOWN_CUSTOM_EVENT_TYPE, customHandler = dragDownCustomHandler; ///
|
|
68
|
+
this.offCustomEvent(customEventType, customHandler, element);
|
|
69
|
+
}
|
|
70
|
+
function onCustomDragLeft(dragLeftCustomHandler, element) {
|
|
71
|
+
const customEventType = _customEventTypes.DRAG_LEFT_CUSTOM_EVENT_TYPE, customHandler = dragLeftCustomHandler; ///
|
|
72
|
+
this.onCustomEvent(customEventType, customHandler, element);
|
|
73
|
+
}
|
|
74
|
+
function offCustomDragLeft(dragLeftCustomHandler, element) {
|
|
75
|
+
const customEventType = _customEventTypes.DRAG_LEFT_CUSTOM_EVENT_TYPE, customHandler = dragLeftCustomHandler; ///
|
|
76
|
+
this.offCustomEvent(customEventType, customHandler, element);
|
|
77
|
+
}
|
|
78
|
+
function onCustomDragRight(dragRightCustomHandler, element) {
|
|
79
|
+
const customEventType = _customEventTypes.DRAG_RIGHT_CUSTOM_EVENT_TYPE, customHandler = dragRightCustomHandler; ///
|
|
80
|
+
this.onCustomEvent(customEventType, customHandler, element);
|
|
81
|
+
}
|
|
82
|
+
function offCustomDragRight(dragRightCustomHandler, element) {
|
|
83
|
+
const customEventType = _customEventTypes.DRAG_RIGHT_CUSTOM_EVENT_TYPE, customHandler = dragRightCustomHandler; ///
|
|
84
|
+
this.offCustomEvent(customEventType, customHandler, element);
|
|
85
|
+
}
|
|
86
|
+
function onCustomDragStart(dragStartCustomHandler, element) {
|
|
87
|
+
const customEventType = _customEventTypes.DRAG_START_CUSTOM_EVENT_TYPE, customHandler = dragStartCustomHandler; ///
|
|
88
|
+
this.onCustomEvent(customEventType, customHandler, element);
|
|
89
|
+
}
|
|
90
|
+
function offCustomDragStart(dragStartCustomHandler, element) {
|
|
91
|
+
const customEventType = _customEventTypes.DRAG_START_CUSTOM_EVENT_TYPE, customHandler = dragStartCustomHandler; ///
|
|
92
|
+
this.offCustomEvent(customEventType, customHandler, element);
|
|
93
|
+
}
|
|
94
|
+
function onCustomSwipeUp(swipeUpCustomHandler, element) {
|
|
95
|
+
const customEventType = _customEventTypes.SWIPE_UP_CUSTOM_EVENT_TYPE, customHandler = swipeUpCustomHandler; ///
|
|
96
|
+
this.onCustomEvent(customEventType, customHandler, element);
|
|
97
|
+
}
|
|
98
|
+
function offCustomSwipeUp(swipeUpCustomHandler, element) {
|
|
99
|
+
const customEventType = _customEventTypes.SWIPE_UP_CUSTOM_EVENT_TYPE, customHandler = swipeUpCustomHandler; ///
|
|
100
|
+
this.offCustomEvent(customEventType, customHandler, element);
|
|
101
|
+
}
|
|
102
|
+
function onCustomSwipeDown(swipeDownCustomHandler, element) {
|
|
103
|
+
const customEventType = _customEventTypes.SWIPE_DOWN_CUSTOM_EVENT_TYPE, customHandler = swipeDownCustomHandler; ///
|
|
104
|
+
this.onCustomEvent(customEventType, customHandler, element);
|
|
105
|
+
}
|
|
106
|
+
function offCustomSwipeDown(swipeDownCustomHandler, element) {
|
|
107
|
+
const customEventType = _customEventTypes.SWIPE_DOWN_CUSTOM_EVENT_TYPE, customHandler = swipeDownCustomHandler; ///
|
|
108
|
+
this.offCustomEvent(customEventType, customHandler, element);
|
|
109
|
+
}
|
|
110
|
+
function onCustomSwipeLeft(swipeLeftCustomHandler, element) {
|
|
111
|
+
const customEventType = _customEventTypes.SWIPE_LEFT_CUSTOM_EVENT_TYPE, customHandler = swipeLeftCustomHandler; ///
|
|
112
|
+
this.onCustomEvent(customEventType, customHandler, element);
|
|
113
|
+
}
|
|
114
|
+
function offCustomSwipeLeft(swipeLeftCustomHandler, element) {
|
|
115
|
+
const customEventType = _customEventTypes.SWIPE_LEFT_CUSTOM_EVENT_TYPE, customHandler = swipeLeftCustomHandler; ///
|
|
116
|
+
this.offCustomEvent(customEventType, customHandler, element);
|
|
117
|
+
}
|
|
118
|
+
function onCustomSwipeRight(swipeRightCustomHandler, element) {
|
|
119
|
+
const customEventType = _customEventTypes.SWIPE_RIGHT_CUSTOM_EVENT_TYPE, customHandler = swipeRightCustomHandler; ///
|
|
120
|
+
this.onCustomEvent(customEventType, customHandler, element);
|
|
121
|
+
}
|
|
122
|
+
function offCustomSwipeRight(swipeRightCustomHandler, element) {
|
|
123
|
+
const customEventType = _customEventTypes.SWIPE_RIGHT_CUSTOM_EVENT_TYPE, customHandler = swipeRightCustomHandler; ///
|
|
124
|
+
this.offCustomEvent(customEventType, customHandler, element);
|
|
125
|
+
}
|
|
126
|
+
function onCustomPinchMove(pinchMoveCustomHandler, element) {
|
|
127
|
+
const customEventType = _customEventTypes.PINCH_MOVE_CUSTOM_EVENT_TYPE, customHandler = pinchMoveCustomHandler; ///
|
|
128
|
+
this.onCustomEvent(customEventType, customHandler, element);
|
|
129
|
+
}
|
|
130
|
+
function offCustomPinchMove(pinchMoveCustomHandler, element) {
|
|
131
|
+
const customEventType = _customEventTypes.PINCH_MOVE_CUSTOM_EVENT_TYPE, customHandler = pinchMoveCustomHandler; ///
|
|
132
|
+
this.offCustomEvent(customEventType, customHandler, element);
|
|
133
|
+
}
|
|
134
|
+
function onCustomPinchStart(pinchStartCustomHandler, element) {
|
|
135
|
+
const customEventType = _customEventTypes.PINCH_START_CUSTOM_EVENT_TYPE, customHandler = pinchStartCustomHandler; ///
|
|
136
|
+
this.onCustomEvent(customEventType, customHandler, element);
|
|
137
|
+
}
|
|
138
|
+
function offCustomPinchStart(pinchStartCustomHandler, element) {
|
|
139
|
+
const customEventType = _customEventTypes.PINCH_START_CUSTOM_EVENT_TYPE, customHandler = pinchStartCustomHandler; ///
|
|
140
|
+
this.offCustomEvent(customEventType, customHandler, element);
|
|
141
|
+
}
|
|
142
|
+
function onCustomPinchStop(pinchStopCustomHandler, element) {
|
|
143
|
+
const customEventType = _customEventTypes.PINCH_STOP_CUSTOM_EVENT_TYPE, customHandler = pinchStopCustomHandler; ///
|
|
144
|
+
this.onCustomEvent(customEventType, customHandler, element);
|
|
145
|
+
}
|
|
146
|
+
function offCustomPinchStop(pinchStopCustomHandler, element) {
|
|
147
|
+
const customEventType = _customEventTypes.PINCH_STOP_CUSTOM_EVENT_TYPE, customHandler = pinchStopCustomHandler; ///
|
|
148
|
+
this.offCustomEvent(customEventType, customHandler, element);
|
|
149
|
+
}
|
|
150
|
+
function onCustomSingleTap(singleTapCustomHandler, element) {
|
|
151
|
+
const customEventType = _customEventTypes.SINGLE_TAP_CUSTOM_EVENT_TYPE, customHandler = singleTapCustomHandler; ///
|
|
152
|
+
this.onCustomEvent(customEventType, customHandler, element);
|
|
153
|
+
}
|
|
154
|
+
function offCustomSingleTap(singleTapCustomHandler, element) {
|
|
155
|
+
const customEventType = _customEventTypes.SINGLE_TAP_CUSTOM_EVENT_TYPE, customHandler = singleTapCustomHandler; ///
|
|
156
|
+
this.offCustomEvent(customEventType, customHandler, element);
|
|
157
|
+
}
|
|
158
|
+
function onCustomDoubleTap(doubleTapCustomHandler, element) {
|
|
159
|
+
const customEventType = _customEventTypes.DOUBLE_TAP_CUSTOM_EVENT_TYPE, customHandler = doubleTapCustomHandler; ///
|
|
160
|
+
this.onCustomEvent(customEventType, customHandler, element);
|
|
161
|
+
}
|
|
162
|
+
function offCustomDoubleTap(doubleTapCustomHandler, element) {
|
|
163
|
+
const customEventType = _customEventTypes.DOUBLE_TAP_CUSTOM_EVENT_TYPE, customHandler = doubleTapCustomHandler; ///
|
|
164
|
+
this.offCustomEvent(customEventType, customHandler, element);
|
|
165
|
+
}
|
|
166
|
+
function getTapInterval() {
|
|
167
|
+
const { tapInterval } = this.getState();
|
|
168
|
+
return tapInterval;
|
|
169
|
+
}
|
|
170
|
+
function getPressSInterval() {
|
|
171
|
+
const { pressInterval } = this.getState();
|
|
172
|
+
return pressInterval;
|
|
173
|
+
}
|
|
174
|
+
function getStartMagnitude() {
|
|
175
|
+
const { startMagnitude } = this.getState();
|
|
176
|
+
return startMagnitude;
|
|
177
|
+
}
|
|
178
|
+
function getStartPositions() {
|
|
179
|
+
const { startPositions } = this.getState();
|
|
180
|
+
return startPositions;
|
|
181
|
+
}
|
|
182
|
+
function getMovingPositions() {
|
|
183
|
+
const { movingPositions } = this.getState();
|
|
184
|
+
return movingPositions;
|
|
185
|
+
}
|
|
186
|
+
function setTapInterval(tapInterval) {
|
|
187
|
+
this.updateState({
|
|
188
|
+
tapInterval
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
function setPressSInterval(pressInterval) {
|
|
192
|
+
this.updateState({
|
|
193
|
+
pressInterval
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
function setStartMagnitude(startMagnitude) {
|
|
197
|
+
this.updateState({
|
|
198
|
+
startMagnitude
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
function setStartPositions(startPositions) {
|
|
202
|
+
this.updateState({
|
|
203
|
+
startPositions
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
function setMovingPositions(movingPositions) {
|
|
207
|
+
this.updateState({
|
|
208
|
+
movingPositions
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
function touchStartHandler(event, element) {
|
|
212
|
+
this.startHandler(event, element, (event)=>{
|
|
213
|
+
const touchEvent = event, changed = false, positions = (0, _positions.positionsFromTouchEvent)(touchEvent, changed);
|
|
214
|
+
return positions;
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
function mouseDownHandler(event, element) {
|
|
218
|
+
this.startHandler(event, element, (event)=>{
|
|
219
|
+
const mouseEvent = event, positions = (0, _positions.positionsFromMouseEvent)(mouseEvent);
|
|
220
|
+
return positions;
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
function touchMoveHandler(event, element) {
|
|
224
|
+
this.moveHandler(event, element, (event)=>{
|
|
225
|
+
const touchEvent = event, changed = false, positions = (0, _positions.positionsFromTouchEvent)(touchEvent, changed);
|
|
226
|
+
return positions;
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
function mouseMoveHandler(event, element) {
|
|
230
|
+
this.moveHandler(event, element, (event)=>{
|
|
231
|
+
const mouseEvent = event, positions = (0, _positions.positionsFromMouseEvent)(mouseEvent);
|
|
232
|
+
return positions;
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
function touchEndHandler(event, element) {
|
|
236
|
+
this.endHandler(event, element, (event)=>{
|
|
237
|
+
const touchEvent = event, changed = true, positions = (0, _positions.positionsFromTouchEvent)(touchEvent, changed);
|
|
238
|
+
return positions;
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
function mouseUpHandler(event, element) {
|
|
242
|
+
this.endHandler(event, element, (event)=>{
|
|
243
|
+
const mouseEvent = event, positions = (0, _positions.positionsFromMouseEvent)(mouseEvent);
|
|
244
|
+
return positions;
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
function startHandler(event, element, positionsFromEvent) {
|
|
248
|
+
const positions = positionsFromEvent(event), startPositions = this.getStartPositions();
|
|
249
|
+
(0, _positions.filterPositions)(startPositions, positions);
|
|
250
|
+
push(startPositions, positions);
|
|
251
|
+
const startingPositionsLength = startPositions.length;
|
|
252
|
+
if (startingPositionsLength === 1) {
|
|
253
|
+
this.dragStart(event, element);
|
|
254
|
+
const interval = setTimeout(()=>{
|
|
255
|
+
const pressInterval = null;
|
|
256
|
+
this.setPressSInterval(pressInterval);
|
|
257
|
+
this.press(event, element);
|
|
258
|
+
}, _constants.PRESS_DELAY);
|
|
259
|
+
const pressInterval = interval; ///
|
|
260
|
+
this.setPressSInterval(pressInterval);
|
|
261
|
+
}
|
|
262
|
+
if (startingPositionsLength === 2) {
|
|
263
|
+
this.pinchStart(event, element);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
function moveHandler(event, element, positionsFromEvent) {
|
|
267
|
+
const positions = positionsFromEvent(event), startPositions = this.getStartPositions(), movingPositions = this.getMovingPositions();
|
|
268
|
+
(0, _positions.filterPositions)(movingPositions, positions);
|
|
269
|
+
push(movingPositions, positions);
|
|
270
|
+
const positionsMatch = (0, _positions.matchPositions)(startPositions, movingPositions);
|
|
271
|
+
if (positionsMatch) {
|
|
272
|
+
(0, _positions.sortPositions)(movingPositions, startPositions);
|
|
273
|
+
const movingPositionsLength = movingPositions.length;
|
|
274
|
+
if (movingPositionsLength === 1) {
|
|
275
|
+
this.drag(event, element);
|
|
276
|
+
}
|
|
277
|
+
if (movingPositionsLength === 2) {
|
|
278
|
+
this.pinch(event, element);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
let pressInterval = this.getPressSInterval();
|
|
282
|
+
if (pressInterval !== null) {
|
|
283
|
+
clearTimeout(pressInterval);
|
|
284
|
+
pressInterval = null;
|
|
285
|
+
this.setPressSInterval(pressInterval);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
function endHandler(event, element, positionsFromEvent) {
|
|
289
|
+
const positions = positionsFromEvent(event), startPositions = this.getStartPositions(), movingPositions = this.getMovingPositions(), positionsMatch = (0, _positions.matchPositions)(startPositions, movingPositions);
|
|
290
|
+
if (positionsMatch) {
|
|
291
|
+
const startPositionsLength = startPositions.length;
|
|
292
|
+
if (startPositionsLength === 2) {
|
|
293
|
+
this.pinchStop(event, element);
|
|
294
|
+
}
|
|
295
|
+
if (startPositionsLength === 1) {
|
|
296
|
+
this.possibleTap(event, element);
|
|
297
|
+
this.possibleSwipe(event, element);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
(0, _positions.filterPositions)(startPositions, positions);
|
|
301
|
+
(0, _positions.filterPositions)(movingPositions, positions);
|
|
302
|
+
let pressInterval = this.getPressSInterval();
|
|
303
|
+
if (pressInterval !== null) {
|
|
304
|
+
clearTimeout(pressInterval);
|
|
305
|
+
pressInterval = null;
|
|
306
|
+
this.setPressSInterval(pressInterval);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
function possibleTap(event, element) {
|
|
310
|
+
const startPositions = this.getStartPositions(), movingPositions = this.getMovingPositions(), firstStartPosition = first(startPositions), firstMovingPosition = first(movingPositions), firstPosition = firstStartPosition, secondPosition = firstMovingPosition, relativePosition = _relative.default.fromFirstPositionAndSecondPosition(firstPosition, secondPosition), time = relativePosition.getTime(), speed = relativePosition.getSpeed();
|
|
311
|
+
if (speed === 0 && time < _constants.MAXIMUM_TAP_TIME) {
|
|
312
|
+
this.tap(event, element);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
function possibleSwipe(event, element) {
|
|
316
|
+
const startPositions = this.getStartPositions(), movingPositions = this.getMovingPositions(), firstStartPosition = first(startPositions), firstMovingPosition = first(movingPositions), firstPosition = firstStartPosition, secondPosition = firstMovingPosition, relativePosition = _relative.default.fromFirstPositionAndSecondPosition(firstPosition, secondPosition), direction = relativePosition.getDirection(), speed = relativePosition.getSpeed();
|
|
317
|
+
if (speed > _constants.MINIMUM_SWIPE_SPEED) {
|
|
318
|
+
this.swipe(event, element, speed, direction);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
function tap(event, element) {
|
|
322
|
+
const startPositions = this.getStartPositions(), firstStartPosition = first(startPositions), startPosition = firstStartPosition, top = startPosition.getTop(), left = startPosition.getLeft();
|
|
323
|
+
let tapInterval = this.getTapInterval();
|
|
324
|
+
if (tapInterval !== null) {
|
|
325
|
+
clearTimeout(tapInterval);
|
|
326
|
+
tapInterval = null;
|
|
327
|
+
this.setTapInterval(tapInterval);
|
|
328
|
+
this.doubleTap(event, element, top, left);
|
|
329
|
+
return;
|
|
330
|
+
}
|
|
331
|
+
const interval = setTimeout(()=>{
|
|
332
|
+
tapInterval = null;
|
|
333
|
+
this.setTapInterval(tapInterval);
|
|
334
|
+
this.singleTap(event, element, top, left);
|
|
335
|
+
}, _constants.TAP_DELAY);
|
|
336
|
+
tapInterval = interval; ///
|
|
337
|
+
this.setTapInterval(tapInterval);
|
|
338
|
+
}
|
|
339
|
+
function drag(event, element) {
|
|
340
|
+
const startPositions = this.getStartPositions(), movingPositions = this.getMovingPositions(), firstStartPosition = first(startPositions), firstMovingPosition = first(movingPositions), firstPosition = firstStartPosition, secondPosition = firstMovingPosition, relativePosition = _relative.default.fromFirstPositionAndSecondPosition(firstPosition, secondPosition), top = relativePosition.getTop(), left = relativePosition.getLeft(), direction = relativePosition.getDirection();
|
|
341
|
+
let customEventType = null;
|
|
342
|
+
if (Math.abs(direction) < _constants.MAXIMUM_SPREAD) {
|
|
343
|
+
customEventType = _customEventTypes.DRAG_RIGHT_CUSTOM_EVENT_TYPE;
|
|
344
|
+
}
|
|
345
|
+
if (Math.abs(_constants.PI_OVER_TWO - direction) < _constants.MAXIMUM_SPREAD) {
|
|
346
|
+
customEventType = _customEventTypes.DRAG_UP_CUSTOM_EVENT_TYPE;
|
|
347
|
+
}
|
|
348
|
+
if (Math.abs(-_constants.PI_OVER_TWO - direction) < _constants.MAXIMUM_SPREAD) {
|
|
349
|
+
customEventType = _customEventTypes.DRAG_DOWN_CUSTOM_EVENT_TYPE;
|
|
350
|
+
}
|
|
351
|
+
if (_constants.PI - Math.abs(direction) < _constants.MAXIMUM_SPREAD) {
|
|
352
|
+
customEventType = _customEventTypes.DRAG_LEFT_CUSTOM_EVENT_TYPE;
|
|
353
|
+
}
|
|
354
|
+
if (customEventType !== null) {
|
|
355
|
+
this.callCustomHandlers(customEventType, event, element, top, left);
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
function pinch(event, element) {
|
|
359
|
+
const movingPositions = this.getMovingPositions(), firstMovingPosition = first(movingPositions), secondMovingPosition = second(movingPositions), relativeMovingPosition = _relative.default.fromFirstPositionAndSecondPosition(firstMovingPosition, secondMovingPosition), customEventType = _customEventTypes.PINCH_MOVE_CUSTOM_EVENT_TYPE, startMagnitude = this.getStartMagnitude(), magnitude = relativeMovingPosition.getMagnitude(), ratio = magnitude / startMagnitude;
|
|
360
|
+
this.callCustomHandlers(customEventType, event, element, ratio);
|
|
361
|
+
}
|
|
362
|
+
function press(event, element) {
|
|
363
|
+
const customEventType = _customEventTypes.PRESS_CUSTOM_EVENT_TYPE;
|
|
364
|
+
this.callCustomHandlers(customEventType, event, element);
|
|
365
|
+
}
|
|
366
|
+
function swipe(event, element, speed, direction) {
|
|
367
|
+
let customEventType = null;
|
|
368
|
+
if (Math.abs(direction) < _constants.MAXIMUM_SPREAD) {
|
|
369
|
+
customEventType = _customEventTypes.SWIPE_RIGHT_CUSTOM_EVENT_TYPE;
|
|
370
|
+
speed = speed * Math.abs(Math.cos(direction));
|
|
371
|
+
}
|
|
372
|
+
if (Math.abs(_constants.PI_OVER_TWO - direction) < _constants.MAXIMUM_SPREAD) {
|
|
373
|
+
customEventType = _customEventTypes.SWIPE_UP_CUSTOM_EVENT_TYPE;
|
|
374
|
+
speed = speed * Math.abs(Math.sin(direction));
|
|
375
|
+
}
|
|
376
|
+
if (Math.abs(-_constants.PI_OVER_TWO - direction) < _constants.MAXIMUM_SPREAD) {
|
|
377
|
+
customEventType = _customEventTypes.SWIPE_DOWN_CUSTOM_EVENT_TYPE;
|
|
378
|
+
speed = speed * Math.abs(Math.sin(direction));
|
|
379
|
+
}
|
|
380
|
+
if (_constants.PI - Math.abs(direction) < _constants.MAXIMUM_SPREAD) {
|
|
381
|
+
customEventType = _customEventTypes.SWIPE_LEFT_CUSTOM_EVENT_TYPE;
|
|
382
|
+
speed = speed * Math.abs(Math.cos(direction));
|
|
383
|
+
}
|
|
384
|
+
if (customEventType !== null) {
|
|
385
|
+
const startPositions = this.getStartPositions(), firstStartPosition = first(startPositions), startPosition = firstStartPosition, top = startPosition.getTop(), left = startPosition.getLeft();
|
|
386
|
+
this.callCustomHandlers(customEventType, event, element, top, left, speed);
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
function singleTap(event, element, top, left) {
|
|
390
|
+
const customEventType = _customEventTypes.SINGLE_TAP_CUSTOM_EVENT_TYPE;
|
|
391
|
+
this.callCustomHandlers(customEventType, event, element, top, left); ///
|
|
392
|
+
}
|
|
393
|
+
function doubleTap(event, element, top, left) {
|
|
394
|
+
const customEventType = _customEventTypes.DOUBLE_TAP_CUSTOM_EVENT_TYPE;
|
|
395
|
+
this.callCustomHandlers(customEventType, event, element, top, left);
|
|
396
|
+
}
|
|
397
|
+
function dragStart(event, element) {
|
|
398
|
+
const customEventType = _customEventTypes.DRAG_START_CUSTOM_EVENT_TYPE, startPositions = this.getStartPositions(), firstStartPosition = first(startPositions), startPosition = firstStartPosition, top = startPosition.getTop(), left = startPosition.getLeft();
|
|
399
|
+
this.callCustomHandlers(customEventType, event, element, top, left);
|
|
400
|
+
}
|
|
401
|
+
function pinchStart(event, element) {
|
|
402
|
+
const customEventType = _customEventTypes.PINCH_START_CUSTOM_EVENT_TYPE, startPositions = this.getStartPositions(), firstStartPosition = first(startPositions), secondStartPosition = second(startPositions), relativeStartPosition = _relative.default.fromFirstPositionAndSecondPosition(firstStartPosition, secondStartPosition), magnitude = relativeStartPosition.getMagnitude(), startMagnitude = magnitude; ///
|
|
403
|
+
this.setStartMagnitude(startMagnitude);
|
|
404
|
+
this.callCustomHandlers(customEventType, event, element);
|
|
405
|
+
}
|
|
406
|
+
function pinchStop(event, element) {
|
|
407
|
+
const customEventType = _customEventTypes.PINCH_STOP_CUSTOM_EVENT_TYPE;
|
|
408
|
+
this.callCustomHandlers(customEventType, event, element);
|
|
409
|
+
}
|
|
410
|
+
const touchMixins = {
|
|
411
|
+
enableTouch,
|
|
412
|
+
disableTouch,
|
|
413
|
+
onCustomPress,
|
|
414
|
+
offCustomPress,
|
|
415
|
+
onCustomDragUp,
|
|
416
|
+
offCustomDragUp,
|
|
417
|
+
onCustomDragDown,
|
|
418
|
+
offCustomDragDown,
|
|
419
|
+
onCustomDragLeft,
|
|
420
|
+
offCustomDragLeft,
|
|
421
|
+
onCustomDragRight,
|
|
422
|
+
offCustomDragRight,
|
|
423
|
+
onCustomDragStart,
|
|
424
|
+
offCustomDragStart,
|
|
425
|
+
onCustomSwipeUp,
|
|
426
|
+
offCustomSwipeUp,
|
|
427
|
+
onCustomSwipeDown,
|
|
428
|
+
offCustomSwipeDown,
|
|
429
|
+
onCustomSwipeLeft,
|
|
430
|
+
offCustomSwipeLeft,
|
|
431
|
+
onCustomSwipeRight,
|
|
432
|
+
offCustomSwipeRight,
|
|
433
|
+
onCustomPinchMove,
|
|
434
|
+
offCustomPinchMove,
|
|
435
|
+
onCustomPinchStart,
|
|
436
|
+
offCustomPinchStart,
|
|
437
|
+
onCustomPinchStop,
|
|
438
|
+
offCustomPinchStop,
|
|
439
|
+
onCustomSingleTap,
|
|
440
|
+
offCustomSingleTap,
|
|
441
|
+
onCustomDoubleTap,
|
|
442
|
+
offCustomDoubleTap,
|
|
443
|
+
getTapInterval,
|
|
444
|
+
getPressSInterval,
|
|
445
|
+
getStartMagnitude,
|
|
446
|
+
getStartPositions,
|
|
447
|
+
getMovingPositions,
|
|
448
|
+
setTapInterval,
|
|
449
|
+
setPressSInterval,
|
|
450
|
+
setStartMagnitude,
|
|
451
|
+
setStartPositions,
|
|
452
|
+
setMovingPositions,
|
|
453
|
+
touchStartHandler,
|
|
454
|
+
mouseDownHandler,
|
|
455
|
+
touchMoveHandler,
|
|
456
|
+
mouseMoveHandler,
|
|
457
|
+
touchEndHandler,
|
|
458
|
+
mouseUpHandler,
|
|
459
|
+
startHandler,
|
|
460
|
+
moveHandler,
|
|
461
|
+
endHandler,
|
|
462
|
+
possibleTap,
|
|
463
|
+
possibleSwipe,
|
|
464
|
+
tap,
|
|
465
|
+
drag,
|
|
466
|
+
pinch,
|
|
467
|
+
press,
|
|
468
|
+
swipe,
|
|
469
|
+
singleTap,
|
|
470
|
+
doubleTap,
|
|
471
|
+
dragStart,
|
|
472
|
+
pinchStart,
|
|
473
|
+
pinchStop
|
|
474
|
+
};
|
|
475
|
+
const _default = touchMixins;
|
|
476
|
+
|
|
477
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taXhpbnMvdG91Y2guanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IHdpbmRvdyB9IGZyb20gXCJlYXN5XCI7XG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IFJlbGF0aXZlUG9zaXRpb24gZnJvbSBcIi4uL3Bvc2l0aW9uL3JlbGF0aXZlXCI7XG5cbmltcG9ydCB7IFBJLCBUQVBfREVMQVksIFBSRVNTX0RFTEFZLCBQSV9PVkVSX1RXTywgTUFYSU1VTV9UQVBfVElNRSwgTUlOSU1VTV9TV0lQRV9TUEVFRCwgTUFYSU1VTV9TUFJFQUQgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBzb3J0UG9zaXRpb25zLCBtYXRjaFBvc2l0aW9ucywgZmlsdGVyUG9zaXRpb25zLCBwb3NpdGlvbnNGcm9tTW91c2VFdmVudCwgcG9zaXRpb25zRnJvbVRvdWNoRXZlbnQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3Bvc2l0aW9uc1wiO1xuaW1wb3J0IHsgUFJFU1NfQ1VTVE9NX0VWRU5UX1RZUEUsXG4gICAgICAgICBEUkFHX1VQX0NVU1RPTV9FVkVOVF9UWVBFLFxuICAgICAgICAgRFJBR19ET1dOX0NVU1RPTV9FVkVOVF9UWVBFLFxuICAgICAgICAgRFJBR19MRUZUX0NVU1RPTV9FVkVOVF9UWVBFLFxuICAgICAgICAgRFJBR19SSUdIVF9DVVNUT01fRVZFTlRfVFlQRSxcbiAgICAgICAgIERSQUdfU1RBUlRfQ1VTVE9NX0VWRU5UX1RZUEUsXG4gICAgICAgICBTV0lQRV9VUF9DVVNUT01fRVZFTlRfVFlQRSxcbiAgICAgICAgIFNXSVBFX0RPV05fQ1VTVE9NX0VWRU5UX1RZUEUsXG4gICAgICAgICBTV0lQRV9MRUZUX0NVU1RPTV9FVkVOVF9UWVBFLFxuICAgICAgICAgU1dJUEVfUklHSFRfQ1VTVE9NX0VWRU5UX1RZUEUsXG4gICAgICAgICBQSU5DSF9NT1ZFX0NVU1RPTV9FVkVOVF9UWVBFLFxuICAgICAgICAgUElOQ0hfU1RBUlRfQ1VTVE9NX0VWRU5UX1RZUEUsXG4gICAgICAgICBQSU5DSF9TVE9QX0NVU1RPTV9FVkVOVF9UWVBFLFxuICAgICAgICAgU0lOR0xFX1RBUF9DVVNUT01fRVZFTlRfVFlQRSxcbiAgICAgICAgIERPVUJMRV9UQVBfQ1VTVE9NX0VWRU5UX1RZUEUgfSBmcm9tIFwiLi4vY3VzdG9tRXZlbnRUeXBlc1wiO1xuXG5jb25zdCB7IHB1c2gsIGZpcnN0LCBzZWNvbmQgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5mdW5jdGlvbiBlbmFibGVUb3VjaCgpIHtcbiAgY29uc3QgdGFwSW50ZXJ2YWwgPSBudWxsLFxuICAgICAgICBzdGFydE1hZ25pdHVkZSA9IG51bGwsXG4gICAgICAgIHN0YXJ0UG9zaXRpb25zID0gW10sXG4gICAgICAgIG1vdmluZ1Bvc2l0aW9ucyA9IFtdO1xuXG4gIHRoaXMudXBkYXRlU3RhdGUoe1xuICAgIHRhcEludGVydmFsLFxuICAgIHN0YXJ0TWFnbml0dWRlLFxuICAgIHN0YXJ0UG9zaXRpb25zLFxuICAgIG1vdmluZ1Bvc2l0aW9uc1xuICB9KTtcblxuICB0aGlzLm9uTW91c2VEb3duKHRoaXMubW91c2VEb3duSGFuZGxlcik7XG4gIHRoaXMub25Nb3VzZU1vdmUodGhpcy5tb3VzZU1vdmVIYW5kbGVyKTtcblxuICB3aW5kb3cub25Nb3VzZVVwKHRoaXMubW91c2VVcEhhbmRsZXIsIHRoaXMpO1xuXG4gIHRoaXMub25Ub3VjaFN0YXJ0KHRoaXMudG91Y2hTdGFydEhhbmRsZXIpO1xuICB0aGlzLm9uVG91Y2hNb3ZlKHRoaXMudG91Y2hNb3ZlSGFuZGxlcik7XG4gIHRoaXMub25Ub3VjaEVuZCh0aGlzLnRvdWNoRW5kSGFuZGxlcik7XG59XG5cbmZ1bmN0aW9uIGRpc2FibGVUb3VjaCgpIHtcbiAgdGhpcy5vZmZNb3VzZURvd24odGhpcy5tb3VzZURvd25IYW5kbGVyKTtcbiAgdGhpcy5vZmZNb3VzZU1vdmUodGhpcy5tb3VzZU1vdmVIYW5kbGVyKTtcblxuICB3aW5kb3cub2ZmTW91c2VVcCh0aGlzLm1vdXNlVXBIYW5kbGVyLCB0aGlzKTtcblxuICB0aGlzLm9mZlRvdWNoU3RhcnQodGhpcy50b3VjaFN0YXJ0SGFuZGxlcik7XG4gIHRoaXMub2ZmVG91Y2hNb3ZlKHRoaXMudG91Y2hNb3ZlSGFuZGxlcik7XG4gIHRoaXMub2ZmVG91Y2hFbmQodGhpcy50b3VjaEVuZEhhbmRsZXIpO1xufVxuXG5mdW5jdGlvbiBvbkN1c3RvbVByZXNzKHByZXNzQ3VzdG9tSGFuZGxlciwgZWxlbWVudCkge1xuICBjb25zdCBjdXN0b21FdmVudFR5cGUgPSBQUkVTU19DVVNUT01fRVZFTlRfVFlQRSxcbiAgICAgICAgY3VzdG9tSGFuZGxlciA9IHByZXNzQ3VzdG9tSGFuZGxlcjsgLy8vXG5cbiAgdGhpcy5vbkN1c3RvbUV2ZW50KGN1c3RvbUV2ZW50VHlwZSwgY3VzdG9tSGFuZGxlciwgZWxlbWVudCk7XG59XG5cbmZ1bmN0aW9uIG9mZkN1c3RvbVByZXNzKHByZXNzQ3VzdG9tSGFuZGxlciwgZWxlbWVudCkge1xuICBjb25zdCBjdXN0b21FdmVudFR5cGUgPSBQUkVTU19DVVNUT01fRVZFTlRfVFlQRSxcbiAgICAgICAgY3VzdG9tSGFuZGxlciA9IHByZXNzQ3VzdG9tSGFuZGxlcjsgLy8vXG5cbiAgdGhpcy5vZmZDdXN0b21FdmVudChjdXN0b21FdmVudFR5cGUsIGN1c3RvbUhhbmRsZXIsIGVsZW1lbnQpO1xufVxuXG5mdW5jdGlvbiBvbkN1c3RvbURyYWdVcChkcmFnVXBDdXN0b21IYW5kbGVyLCBlbGVtZW50KSB7XG4gIGNvbnN0IGN1c3RvbUV2ZW50VHlwZSA9IERSQUdfVVBfQ1VTVE9NX0VWRU5UX1RZUEUsXG4gICAgICAgIGN1c3RvbUhhbmRsZXIgPSBkcmFnVXBDdXN0b21IYW5kbGVyOyAvLy9cblxuICB0aGlzLm9uQ3VzdG9tRXZlbnQoY3VzdG9tRXZlbnRUeXBlLCBjdXN0b21IYW5kbGVyLCBlbGVtZW50KTtcbn1cblxuZnVuY3Rpb24gb2ZmQ3VzdG9tRHJhZ1VwKGRyYWdVcEN1c3RvbUhhbmRsZXIsIGVsZW1lbnQpIHtcbiAgY29uc3QgY3VzdG9tRXZlbnRUeXBlID0gRFJBR19VUF9DVVNUT01fRVZFTlRfVFlQRSxcbiAgICAgICAgY3VzdG9tSGFuZGxlciA9IGRyYWdVcEN1c3RvbUhhbmRsZXI7IC8vL1xuXG4gIHRoaXMub2ZmQ3VzdG9tRXZlbnQoY3VzdG9tRXZlbnRUeXBlLCBjdXN0b21IYW5kbGVyLCBlbGVtZW50KTtcbn1cblxuZnVuY3Rpb24gb25DdXN0b21EcmFnRG93bihkcmFnRG93bkN1c3RvbUhhbmRsZXIsIGVsZW1lbnQpIHtcbiAgY29uc3QgY3VzdG9tRXZlbnRUeXBlID0gRFJBR19ET1dOX0NVU1RPTV9FVkVOVF9UWVBFLFxuICAgICAgICBjdXN0b21IYW5kbGVyID0gZHJhZ0Rvd25DdXN0b21IYW5kbGVyOyAvLy9cblxuICB0aGlzLm9uQ3VzdG9tRXZlbnQoY3VzdG9tRXZlbnRUeXBlLCBjdXN0b21IYW5kbGVyLCBlbGVtZW50KTtcbn1cblxuZnVuY3Rpb24gb2ZmQ3VzdG9tRHJhZ0Rvd24oZHJhZ0Rvd25DdXN0b21IYW5kbGVyLCBlbGVtZW50KSB7XG4gIGNvbnN0IGN1c3RvbUV2ZW50VHlwZSA9IERSQUdfRE9XTl9DVVNUT01fRVZFTlRfVFlQRSxcbiAgICAgICAgY3VzdG9tSGFuZGxlciA9IGRyYWdEb3duQ3VzdG9tSGFuZGxlcjsgLy8vXG5cbiAgdGhpcy5vZmZDdXN0b21FdmVudChjdXN0b21FdmVudFR5cGUsIGN1c3RvbUhhbmRsZXIsIGVsZW1lbnQpO1xufVxuXG5mdW5jdGlvbiBvbkN1c3RvbURyYWdMZWZ0KGRyYWdMZWZ0Q3VzdG9tSGFuZGxlciwgZWxlbWVudCkge1xuICBjb25zdCBjdXN0b21FdmVudFR5cGUgPSBEUkFHX0xFRlRfQ1VTVE9NX0VWRU5UX1RZUEUsXG4gICAgICAgIGN1c3RvbUhhbmRsZXIgPSBkcmFnTGVmdEN1c3RvbUhhbmRsZXI7IC8vL1xuXG4gIHRoaXMub25DdXN0b21FdmVudChjdXN0b21FdmVudFR5cGUsIGN1c3RvbUhhbmRsZXIsIGVsZW1lbnQpO1xufVxuXG5mdW5jdGlvbiBvZmZDdXN0b21EcmFnTGVmdChkcmFnTGVmdEN1c3RvbUhhbmRsZXIsIGVsZW1lbnQpIHtcbiAgY29uc3QgY3VzdG9tRXZlbnRUeXBlID0gRFJBR19MRUZUX0NVU1RPTV9FVkVOVF9UWVBFLFxuICAgICAgICBjdXN0b21IYW5kbGVyID0gZHJhZ0xlZnRDdXN0b21IYW5kbGVyOyAvLy9cblxuICB0aGlzLm9mZkN1c3RvbUV2ZW50KGN1c3RvbUV2ZW50VHlwZSwgY3VzdG9tSGFuZGxlciwgZWxlbWVudCk7XG59XG5cbmZ1bmN0aW9uIG9uQ3VzdG9tRHJhZ1JpZ2h0KGRyYWdSaWdodEN1c3RvbUhhbmRsZXIsIGVsZW1lbnQpIHtcbiAgY29uc3QgY3VzdG9tRXZlbnRUeXBlID0gRFJBR19SSUdIVF9DVVNUT01fRVZFTlRfVFlQRSxcbiAgICAgICAgY3VzdG9tSGFuZGxlciA9IGRyYWdSaWdodEN1c3RvbUhhbmRsZXI7IC8vL1xuXG4gIHRoaXMub25DdXN0b21FdmVudChjdXN0b21FdmVudFR5cGUsIGN1c3RvbUhhbmRsZXIsIGVsZW1lbnQpO1xufVxuXG5mdW5jdGlvbiBvZmZDdXN0b21EcmFnUmlnaHQoZHJhZ1JpZ2h0Q3VzdG9tSGFuZGxlciwgZWxlbWVudCkge1xuICBjb25zdCBjdXN0b21FdmVudFR5cGUgPSBEUkFHX1JJR0hUX0NVU1RPTV9FVkVOVF9UWVBFLFxuICAgICAgICBjdXN0b21IYW5kbGVyID0gZHJhZ1JpZ2h0Q3VzdG9tSGFuZGxlcjsgLy8vXG5cbiAgdGhpcy5vZmZDdXN0b21FdmVudChjdXN0b21FdmVudFR5cGUsIGN1c3RvbUhhbmRsZXIsIGVsZW1lbnQpO1xufVxuXG5mdW5jdGlvbiBvbkN1c3RvbURyYWdTdGFydChkcmFnU3RhcnRDdXN0b21IYW5kbGVyLCBlbGVtZW50KSB7XG4gIGNvbnN0IGN1c3RvbUV2ZW50VHlwZSA9IERSQUdfU1RBUlRfQ1VTVE9NX0VWRU5UX1RZUEUsXG4gICAgICAgIGN1c3RvbUhhbmRsZXIgPSBkcmFnU3RhcnRDdXN0b21IYW5kbGVyOyAvLy9cblxuICB0aGlzLm9uQ3VzdG9tRXZlbnQoY3VzdG9tRXZlbnRUeXBlLCBjdXN0b21IYW5kbGVyLCBlbGVtZW50KTtcbn1cblxuZnVuY3Rpb24gb2ZmQ3VzdG9tRHJhZ1N0YXJ0KGRyYWdTdGFydEN1c3RvbUhhbmRsZXIsIGVsZW1lbnQpIHtcbiAgY29uc3QgY3VzdG9tRXZlbnRUeXBlID0gRFJBR19TVEFSVF9DVVNUT01fRVZFTlRfVFlQRSxcbiAgICAgICAgY3VzdG9tSGFuZGxlciA9IGRyYWdTdGFydEN1c3RvbUhhbmRsZXI7IC8vL1xuXG4gIHRoaXMub2ZmQ3VzdG9tRXZlbnQoY3VzdG9tRXZlbnRUeXBlLCBjdXN0b21IYW5kbGVyLCBlbGVtZW50KTtcbn1cblxuZnVuY3Rpb24gb25DdXN0b21Td2lwZVVwKHN3aXBlVXBDdXN0b21IYW5kbGVyLCBlbGVtZW50KSB7XG4gIGNvbnN0IGN1c3RvbUV2ZW50VHlwZSA9IFNXSVBFX1VQX0NVU1RPTV9FVkVOVF9UWVBFLFxuICAgICAgICBjdXN0b21IYW5kbGVyID0gc3dpcGVVcEN1c3RvbUhhbmRsZXI7IC8vL1xuXG4gIHRoaXMub25DdXN0b21FdmVudChjdXN0b21FdmVudFR5cGUsIGN1c3RvbUhhbmRsZXIsIGVsZW1lbnQpO1xufVxuXG5mdW5jdGlvbiBvZmZDdXN0b21Td2lwZVVwKHN3aXBlVXBDdXN0b21IYW5kbGVyLCBlbGVtZW50KSB7XG4gIGNvbnN0IGN1c3RvbUV2ZW50VHlwZSA9IFNXSVBFX1VQX0NVU1RPTV9FVkVOVF9UWVBFLFxuICAgICAgICBjdXN0b21IYW5kbGVyID0gc3dpcGVVcEN1c3RvbUhhbmRsZXI7IC8vL1xuXG4gIHRoaXMub2ZmQ3VzdG9tRXZlbnQoY3VzdG9tRXZlbnRUeXBlLCBjdXN0b21IYW5kbGVyLCBlbGVtZW50KTtcbn1cblxuZnVuY3Rpb24gb25DdXN0b21Td2lwZURvd24oc3dpcGVEb3duQ3VzdG9tSGFuZGxlciwgZWxlbWVudCkge1xuICBjb25zdCBjdXN0b21FdmVudFR5cGUgPSBTV0lQRV9ET1dOX0NVU1RPTV9FVkVOVF9UWVBFLFxuICAgICAgICBjdXN0b21IYW5kbGVyID0gc3dpcGVEb3duQ3VzdG9tSGFuZGxlcjsgLy8vXG5cbiAgdGhpcy5vbkN1c3RvbUV2ZW50KGN1c3RvbUV2ZW50VHlwZSwgY3VzdG9tSGFuZGxlciwgZWxlbWVudCk7XG59XG5cbmZ1bmN0aW9uIG9mZkN1c3RvbVN3aXBlRG93bihzd2lwZURvd25DdXN0b21IYW5kbGVyLCBlbGVtZW50KSB7XG4gIGNvbnN0IGN1c3RvbUV2ZW50VHlwZSA9IFNXSVBFX0RPV05fQ1VTVE9NX0VWRU5UX1RZUEUsXG4gICAgICAgIGN1c3RvbUhhbmRsZXIgPSBzd2lwZURvd25DdXN0b21IYW5kbGVyOyAvLy9cblxuICB0aGlzLm9mZkN1c3RvbUV2ZW50KGN1c3RvbUV2ZW50VHlwZSwgY3VzdG9tSGFuZGxlciwgZWxlbWVudCk7XG59XG5cbmZ1bmN0aW9uIG9uQ3VzdG9tU3dpcGVMZWZ0KHN3aXBlTGVmdEN1c3RvbUhhbmRsZXIsIGVsZW1lbnQpIHtcbiAgY29uc3QgY3VzdG9tRXZlbnRUeXBlID0gU1dJUEVfTEVGVF9DVVNUT01fRVZFTlRfVFlQRSxcbiAgICAgICAgY3VzdG9tSGFuZGxlciA9IHN3aXBlTGVmdEN1c3RvbUhhbmRsZXI7IC8vL1xuXG4gIHRoaXMub25DdXN0b21FdmVudChjdXN0b21FdmVudFR5cGUsIGN1c3RvbUhhbmRsZXIsIGVsZW1lbnQpO1xufVxuXG5mdW5jdGlvbiBvZmZDdXN0b21Td2lwZUxlZnQoc3dpcGVMZWZ0Q3VzdG9tSGFuZGxlciwgZWxlbWVudCkge1xuICBjb25zdCBjdXN0b21FdmVudFR5cGUgPSBTV0lQRV9MRUZUX0NVU1RPTV9FVkVOVF9UWVBFLFxuICAgICAgICBjdXN0b21IYW5kbGVyID0gc3dpcGVMZWZ0Q3VzdG9tSGFuZGxlcjsgLy8vXG5cbiAgdGhpcy5vZmZDdXN0b21FdmVudChjdXN0b21FdmVudFR5cGUsIGN1c3RvbUhhbmRsZXIsIGVsZW1lbnQpO1xufVxuXG5mdW5jdGlvbiBvbkN1c3RvbVN3aXBlUmlnaHQoc3dpcGVSaWdodEN1c3RvbUhhbmRsZXIsIGVsZW1lbnQpIHtcbiAgY29uc3QgY3VzdG9tRXZlbnRUeXBlID0gU1dJUEVfUklHSFRfQ1VTVE9NX0VWRU5UX1RZUEUsXG4gICAgICAgIGN1c3RvbUhhbmRsZXIgPSBzd2lwZVJpZ2h0Q3VzdG9tSGFuZGxlcjsgLy8vXG5cbiAgdGhpcy5vbkN1c3RvbUV2ZW50KGN1c3RvbUV2ZW50VHlwZSwgY3VzdG9tSGFuZGxlciwgZWxlbWVudCk7XG59XG5cbmZ1bmN0aW9uIG9mZkN1c3RvbVN3aXBlUmlnaHQoc3dpcGVSaWdodEN1c3RvbUhhbmRsZXIsIGVsZW1lbnQpIHtcbiAgY29uc3QgY3VzdG9tRXZlbnRUeXBlID0gU1dJUEVfUklHSFRfQ1VTVE9NX0VWRU5UX1RZUEUsXG4gICAgICAgIGN1c3RvbUhhbmRsZXIgPSBzd2lwZVJpZ2h0Q3VzdG9tSGFuZGxlcjsgLy8vXG5cbiAgdGhpcy5vZmZDdXN0b21FdmVudChjdXN0b21FdmVudFR5cGUsIGN1c3RvbUhhbmRsZXIsIGVsZW1lbnQpO1xufVxuXG5mdW5jdGlvbiBvbkN1c3RvbVBpbmNoTW92ZShwaW5jaE1vdmVDdXN0b21IYW5kbGVyLCBlbGVtZW50KSB7XG4gIGNvbnN0IGN1c3RvbUV2ZW50VHlwZSA9IFBJTkNIX01PVkVfQ1VTVE9NX0VWRU5UX1RZUEUsXG4gICAgICAgIGN1c3RvbUhhbmRsZXIgPSBwaW5jaE1vdmVDdXN0b21IYW5kbGVyOyAvLy9cblxuICB0aGlzLm9uQ3VzdG9tRXZlbnQoY3VzdG9tRXZlbnRUeXBlLCBjdXN0b21IYW5kbGVyLCBlbGVtZW50KTtcbn1cblxuZnVuY3Rpb24gb2ZmQ3VzdG9tUGluY2hNb3ZlKHBpbmNoTW92ZUN1c3RvbUhhbmRsZXIsIGVsZW1lbnQpIHtcbiAgY29uc3QgY3VzdG9tRXZlbnRUeXBlID0gUElOQ0hfTU9WRV9DVVNUT01fRVZFTlRfVFlQRSxcbiAgICAgICAgY3VzdG9tSGFuZGxlciA9IHBpbmNoTW92ZUN1c3RvbUhhbmRsZXI7IC8vL1xuXG4gIHRoaXMub2ZmQ3VzdG9tRXZlbnQoY3VzdG9tRXZlbnRUeXBlLCBjdXN0b21IYW5kbGVyLCBlbGVtZW50KTtcbn1cblxuZnVuY3Rpb24gb25DdXN0b21QaW5jaFN0YXJ0KHBpbmNoU3RhcnRDdXN0b21IYW5kbGVyLCBlbGVtZW50KSB7XG4gIGNvbnN0IGN1c3RvbUV2ZW50VHlwZSA9IFBJTkNIX1NUQVJUX0NVU1RPTV9FVkVOVF9UWVBFLFxuICAgICAgICBjdXN0b21IYW5kbGVyID0gcGluY2hTdGFydEN1c3RvbUhhbmRsZXI7IC8vL1xuXG4gIHRoaXMub25DdXN0b21FdmVudChjdXN0b21FdmVudFR5cGUsIGN1c3RvbUhhbmRsZXIsIGVsZW1lbnQpO1xufVxuXG5mdW5jdGlvbiBvZmZDdXN0b21QaW5jaFN0YXJ0KHBpbmNoU3RhcnRDdXN0b21IYW5kbGVyLCBlbGVtZW50KSB7XG4gIGNvbnN0IGN1c3RvbUV2ZW50VHlwZSA9IFBJTkNIX1NUQVJUX0NVU1RPTV9FVkVOVF9UWVBFLFxuICAgICAgICBjdXN0b21IYW5kbGVyID0gcGluY2hTdGFydEN1c3RvbUhhbmRsZXI7IC8vL1xuXG4gIHRoaXMub2ZmQ3VzdG9tRXZlbnQoY3VzdG9tRXZlbnRUeXBlLCBjdXN0b21IYW5kbGVyLCBlbGVtZW50KTtcbn1cblxuZnVuY3Rpb24gb25DdXN0b21QaW5jaFN0b3AocGluY2hTdG9wQ3VzdG9tSGFuZGxlciwgZWxlbWVudCkge1xuICBjb25zdCBjdXN0b21FdmVudFR5cGUgPSBQSU5DSF9TVE9QX0NVU1RPTV9FVkVOVF9UWVBFLFxuICAgICAgICBjdXN0b21IYW5kbGVyID0gcGluY2hTdG9wQ3VzdG9tSGFuZGxlcjsgLy8vXG5cbiAgdGhpcy5vbkN1c3RvbUV2ZW50KGN1c3RvbUV2ZW50VHlwZSwgY3VzdG9tSGFuZGxlciwgZWxlbWVudCk7XG59XG5cbmZ1bmN0aW9uIG9mZkN1c3RvbVBpbmNoU3RvcChwaW5jaFN0b3BDdXN0b21IYW5kbGVyLCBlbGVtZW50KSB7XG4gIGNvbnN0IGN1c3RvbUV2ZW50VHlwZSA9IFBJTkNIX1NUT1BfQ1VTVE9NX0VWRU5UX1RZUEUsXG4gICAgICAgIGN1c3RvbUhhbmRsZXIgPSBwaW5jaFN0b3BDdXN0b21IYW5kbGVyOyAvLy9cblxuICB0aGlzLm9mZkN1c3RvbUV2ZW50KGN1c3RvbUV2ZW50VHlwZSwgY3VzdG9tSGFuZGxlciwgZWxlbWVudCk7XG59XG5cbmZ1bmN0aW9uIG9uQ3VzdG9tU2luZ2xlVGFwKHNpbmdsZVRhcEN1c3RvbUhhbmRsZXIsIGVsZW1lbnQpIHtcbiAgY29uc3QgY3VzdG9tRXZlbnRUeXBlID0gU0lOR0xFX1RBUF9DVVNUT01fRVZFTlRfVFlQRSxcbiAgICAgICAgY3VzdG9tSGFuZGxlciA9IHNpbmdsZVRhcEN1c3RvbUhhbmRsZXI7IC8vL1xuXG4gIHRoaXMub25DdXN0b21FdmVudChjdXN0b21FdmVudFR5cGUsIGN1c3RvbUhhbmRsZXIsIGVsZW1lbnQpO1xufVxuXG5mdW5jdGlvbiBvZmZDdXN0b21TaW5nbGVUYXAoc2luZ2xlVGFwQ3VzdG9tSGFuZGxlciwgZWxlbWVudCkge1xuICBjb25zdCBjdXN0b21FdmVudFR5cGUgPSBTSU5HTEVfVEFQX0NVU1RPTV9FVkVOVF9UWVBFLFxuICAgICAgICBjdXN0b21IYW5kbGVyID0gc2luZ2xlVGFwQ3VzdG9tSGFuZGxlcjsgLy8vXG5cbiAgdGhpcy5vZmZDdXN0b21FdmVudChjdXN0b21FdmVudFR5cGUsIGN1c3RvbUhhbmRsZXIsIGVsZW1lbnQpO1xufVxuXG5mdW5jdGlvbiBvbkN1c3RvbURvdWJsZVRhcChkb3VibGVUYXBDdXN0b21IYW5kbGVyLCBlbGVtZW50KSB7XG4gIGNvbnN0IGN1c3RvbUV2ZW50VHlwZSA9IERPVUJMRV9UQVBfQ1VTVE9NX0VWRU5UX1RZUEUsXG4gICAgICAgIGN1c3RvbUhhbmRsZXIgPSBkb3VibGVUYXBDdXN0b21IYW5kbGVyOyAvLy9cblxuICB0aGlzLm9uQ3VzdG9tRXZlbnQoY3VzdG9tRXZlbnRUeXBlLCBjdXN0b21IYW5kbGVyLCBlbGVtZW50KTtcbn1cblxuZnVuY3Rpb24gb2ZmQ3VzdG9tRG91YmxlVGFwKGRvdWJsZVRhcEN1c3RvbUhhbmRsZXIsIGVsZW1lbnQpIHtcbiAgY29uc3QgY3VzdG9tRXZlbnRUeXBlID0gRE9VQkxFX1RBUF9DVVNUT01fRVZFTlRfVFlQRSxcbiAgICAgICAgY3VzdG9tSGFuZGxlciA9IGRvdWJsZVRhcEN1c3RvbUhhbmRsZXI7IC8vL1xuXG4gIHRoaXMub2ZmQ3VzdG9tRXZlbnQoY3VzdG9tRXZlbnRUeXBlLCBjdXN0b21IYW5kbGVyLCBlbGVtZW50KTtcbn1cblxuZnVuY3Rpb24gZ2V0VGFwSW50ZXJ2YWwoKSB7XG4gIGNvbnN0IHsgdGFwSW50ZXJ2YWwgfSA9IHRoaXMuZ2V0U3RhdGUoKTtcblxuICByZXR1cm4gdGFwSW50ZXJ2YWw7XG59XG5cbmZ1bmN0aW9uIGdldFByZXNzU0ludGVydmFsKCkge1xuICBjb25zdCB7IHByZXNzSW50ZXJ2YWwgfSA9IHRoaXMuZ2V0U3RhdGUoKTtcblxuICByZXR1cm4gcHJlc3NJbnRlcnZhbDtcbn1cblxuZnVuY3Rpb24gZ2V0U3RhcnRNYWduaXR1ZGUoKSB7XG4gIGNvbnN0IHsgc3RhcnRNYWduaXR1ZGUgfSA9IHRoaXMuZ2V0U3RhdGUoKTtcblxuICByZXR1cm4gc3RhcnRNYWduaXR1ZGU7XG59XG5cbmZ1bmN0aW9uIGdldFN0YXJ0UG9zaXRpb25zKCkge1xuICBjb25zdCB7IHN0YXJ0UG9zaXRpb25zIH0gPSB0aGlzLmdldFN0YXRlKCk7XG5cbiAgcmV0dXJuIHN0YXJ0UG9zaXRpb25zO1xufVxuXG5mdW5jdGlvbiBnZXRNb3ZpbmdQb3NpdGlvbnMoKSB7XG4gIGNvbnN0IHsgbW92aW5nUG9zaXRpb25zIH0gPSB0aGlzLmdldFN0YXRlKCk7XG5cbiAgcmV0dXJuIG1vdmluZ1Bvc2l0aW9ucztcbn1cblxuZnVuY3Rpb24gc2V0VGFwSW50ZXJ2YWwodGFwSW50ZXJ2YWwpIHtcbiAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgdGFwSW50ZXJ2YWxcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHNldFByZXNzU0ludGVydmFsKHByZXNzSW50ZXJ2YWwpIHtcbiAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgcHJlc3NJbnRlcnZhbFxuICB9KTtcbn1cblxuZnVuY3Rpb24gc2V0U3RhcnRNYWduaXR1ZGUoc3RhcnRNYWduaXR1ZGUpIHtcbiAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgc3RhcnRNYWduaXR1ZGVcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHNldFN0YXJ0UG9zaXRpb25zKHN0YXJ0UG9zaXRpb25zKSB7XG4gIHRoaXMudXBkYXRlU3RhdGUoe1xuICAgIHN0YXJ0UG9zaXRpb25zXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzZXRNb3ZpbmdQb3NpdGlvbnMobW92aW5nUG9zaXRpb25zKSB7XG4gIHRoaXMudXBkYXRlU3RhdGUoe1xuICAgIG1vdmluZ1Bvc2l0aW9uc1xuICB9KTtcbn1cblxuZnVuY3Rpb24gdG91Y2hTdGFydEhhbmRsZXIoZXZlbnQsIGVsZW1lbnQpIHtcbiAgdGhpcy5zdGFydEhhbmRsZXIoZXZlbnQsIGVsZW1lbnQsIChldmVudCkgPT4ge1xuICAgIGNvbnN0IHRvdWNoRXZlbnQgPSBldmVudCwgLy8vXG4gICAgICAgICAgY2hhbmdlZCA9IGZhbHNlLFxuICAgICAgICAgIHBvc2l0aW9ucyA9IHBvc2l0aW9uc0Zyb21Ub3VjaEV2ZW50KHRvdWNoRXZlbnQsIGNoYW5nZWQpO1xuXG4gICAgcmV0dXJuIHBvc2l0aW9ucztcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG1vdXNlRG93bkhhbmRsZXIoZXZlbnQsIGVsZW1lbnQpIHtcbiAgdGhpcy5zdGFydEhhbmRsZXIoZXZlbnQsIGVsZW1lbnQsIChldmVudCkgPT4ge1xuICAgIGNvbnN0IG1vdXNlRXZlbnQgPSBldmVudCwgLy8vXG4gICAgICAgICAgcG9zaXRpb25zID0gcG9zaXRpb25zRnJvbU1vdXNlRXZlbnQobW91c2VFdmVudCk7XG5cbiAgICByZXR1cm4gcG9zaXRpb25zO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gdG91Y2hNb3ZlSGFuZGxlcihldmVudCwgZWxlbWVudCkge1xuICB0aGlzLm1vdmVIYW5kbGVyKGV2ZW50LCBlbGVtZW50LCAoZXZlbnQpID0+IHtcbiAgICBjb25zdCB0b3VjaEV2ZW50ID0gZXZlbnQsIC8vL1xuICAgICAgICAgIGNoYW5nZWQgPSBmYWxzZSxcbiAgICAgICAgICBwb3NpdGlvbnMgPSBwb3NpdGlvbnNGcm9tVG91Y2hFdmVudCh0b3VjaEV2ZW50LCBjaGFuZ2VkKTtcblxuICAgIHJldHVybiBwb3NpdGlvbnM7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBtb3VzZU1vdmVIYW5kbGVyKGV2ZW50LCBlbGVtZW50KSB7XG4gIHRoaXMubW92ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQsIChldmVudCkgPT4ge1xuICAgIGNvbnN0IG1vdXNlRXZlbnQgPSBldmVudCwgLy8vXG4gICAgICAgICAgcG9zaXRpb25zID0gcG9zaXRpb25zRnJvbU1vdXNlRXZlbnQobW91c2VFdmVudCk7XG5cbiAgICByZXR1cm4gcG9zaXRpb25zO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gdG91Y2hFbmRIYW5kbGVyKGV2ZW50LCBlbGVtZW50KSB7XG4gIHRoaXMuZW5kSGFuZGxlcihldmVudCwgZWxlbWVudCwgKGV2ZW50KSA9PiB7XG4gICAgY29uc3QgdG91Y2hFdmVudCA9IGV2ZW50LCAvLy9cbiAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZSxcbiAgICAgICAgICBwb3NpdGlvbnMgPSBwb3NpdGlvbnNGcm9tVG91Y2hFdmVudCh0b3VjaEV2ZW50LCBjaGFuZ2VkKTtcblxuICAgIHJldHVybiBwb3NpdGlvbnM7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBtb3VzZVVwSGFuZGxlcihldmVudCwgZWxlbWVudCkge1xuICB0aGlzLmVuZEhhbmRsZXIoZXZlbnQsIGVsZW1lbnQsIChldmVudCkgPT4ge1xuICAgIGNvbnN0IG1vdXNlRXZlbnQgPSBldmVudCwgLy8vXG4gICAgICAgICAgcG9zaXRpb25zID0gcG9zaXRpb25zRnJvbU1vdXNlRXZlbnQobW91c2VFdmVudCk7XG5cbiAgICByZXR1cm4gcG9zaXRpb25zO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gc3RhcnRIYW5kbGVyKGV2ZW50LCBlbGVtZW50LCBwb3NpdGlvbnNGcm9tRXZlbnQpIHtcbiAgY29uc3QgcG9zaXRpb25zID0gcG9zaXRpb25zRnJvbUV2ZW50KGV2ZW50KSxcbiAgICAgICAgc3RhcnRQb3NpdGlvbnMgPSB0aGlzLmdldFN0YXJ0UG9zaXRpb25zKCk7XG5cbiAgZmlsdGVyUG9zaXRpb25zKHN0YXJ0UG9zaXRpb25zLCBwb3NpdGlvbnMpO1xuXG4gIHB1c2goc3RhcnRQb3NpdGlvbnMsIHBvc2l0aW9ucyk7XG5cbiAgY29uc3Qgc3RhcnRpbmdQb3NpdGlvbnNMZW5ndGggPSBzdGFydFBvc2l0aW9ucy5sZW5ndGg7XG5cbiAgaWYgKHN0YXJ0aW5nUG9zaXRpb25zTGVuZ3RoID09PSAxKSB7XG4gICAgdGhpcy5kcmFnU3RhcnQoZXZlbnQsIGVsZW1lbnQpO1xuXG4gICAgY29uc3QgaW50ZXJ2YWwgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IHByZXNzSW50ZXJ2YWwgPSBudWxsO1xuXG4gICAgICB0aGlzLnNldFByZXNzU0ludGVydmFsKHByZXNzSW50ZXJ2YWwpO1xuXG4gICAgICB0aGlzLnByZXNzKGV2ZW50LCBlbGVtZW50KTtcbiAgICB9LCBQUkVTU19ERUxBWSk7XG5cbiAgICBjb25zdCBwcmVzc0ludGVydmFsID0gaW50ZXJ2YWw7IC8vL1xuXG4gICAgdGhpcy5zZXRQcmVzc1NJbnRlcnZhbChwcmVzc0ludGVydmFsKTtcbiAgfVxuXG4gIGlmIChzdGFydGluZ1Bvc2l0aW9uc0xlbmd0aCA9PT0gMikge1xuICAgIHRoaXMucGluY2hTdGFydChldmVudCwgZWxlbWVudCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbW92ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQsIHBvc2l0aW9uc0Zyb21FdmVudCkge1xuICBjb25zdCBwb3NpdGlvbnMgPSBwb3NpdGlvbnNGcm9tRXZlbnQoZXZlbnQpLFxuICAgICAgICBzdGFydFBvc2l0aW9ucyA9IHRoaXMuZ2V0U3RhcnRQb3NpdGlvbnMoKSxcbiAgICAgICAgbW92aW5nUG9zaXRpb25zID0gdGhpcy5nZXRNb3ZpbmdQb3NpdGlvbnMoKTtcblxuICBmaWx0ZXJQb3NpdGlvbnMobW92aW5nUG9zaXRpb25zLCBwb3NpdGlvbnMpO1xuXG4gIHB1c2gobW92aW5nUG9zaXRpb25zLCBwb3NpdGlvbnMpO1xuXG4gIGNvbnN0IHBvc2l0aW9uc01hdGNoID0gbWF0Y2hQb3NpdGlvbnMoc3RhcnRQb3NpdGlvbnMsIG1vdmluZ1Bvc2l0aW9ucyk7XG5cbiAgaWYgKHBvc2l0aW9uc01hdGNoKSB7XG4gICAgc29ydFBvc2l0aW9ucyhtb3ZpbmdQb3NpdGlvbnMsIHN0YXJ0UG9zaXRpb25zKTtcblxuICAgIGNvbnN0IG1vdmluZ1Bvc2l0aW9uc0xlbmd0aCA9IG1vdmluZ1Bvc2l0aW9ucy5sZW5ndGg7XG5cbiAgICBpZiAobW92aW5nUG9zaXRpb25zTGVuZ3RoID09PSAxKSB7XG4gICAgICB0aGlzLmRyYWcoZXZlbnQsIGVsZW1lbnQpO1xuICAgIH1cblxuICAgIGlmIChtb3ZpbmdQb3NpdGlvbnNMZW5ndGggPT09IDIpIHtcbiAgICAgIHRoaXMucGluY2goZXZlbnQsIGVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIGxldCBwcmVzc0ludGVydmFsID0gdGhpcy5nZXRQcmVzc1NJbnRlcnZhbCgpO1xuXG4gIGlmIChwcmVzc0ludGVydmFsICE9PSBudWxsKSB7XG4gICAgY2xlYXJUaW1lb3V0KHByZXNzSW50ZXJ2YWwpO1xuXG4gICAgcHJlc3NJbnRlcnZhbCA9IG51bGw7XG5cbiAgICB0aGlzLnNldFByZXNzU0ludGVydmFsKHByZXNzSW50ZXJ2YWwpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGVuZEhhbmRsZXIoZXZlbnQsIGVsZW1lbnQsIHBvc2l0aW9uc0Zyb21FdmVudCkge1xuICBjb25zdCBwb3NpdGlvbnMgPSBwb3NpdGlvbnNGcm9tRXZlbnQoZXZlbnQpLFxuICAgICAgICBzdGFydFBvc2l0aW9ucyA9IHRoaXMuZ2V0U3RhcnRQb3NpdGlvbnMoKSxcbiAgICAgICAgbW92aW5nUG9zaXRpb25zID0gdGhpcy5nZXRNb3ZpbmdQb3NpdGlvbnMoKSxcbiAgICAgICAgcG9zaXRpb25zTWF0Y2ggPSBtYXRjaFBvc2l0aW9ucyhzdGFydFBvc2l0aW9ucywgbW92aW5nUG9zaXRpb25zKTtcblxuICBpZiAocG9zaXRpb25zTWF0Y2gpIHtcbiAgICBjb25zdCBzdGFydFBvc2l0aW9uc0xlbmd0aCA9IHN0YXJ0UG9zaXRpb25zLmxlbmd0aDtcblxuICAgIGlmIChzdGFydFBvc2l0aW9uc0xlbmd0aCA9PT0gMikge1xuICAgICAgdGhpcy5waW5jaFN0b3AoZXZlbnQsIGVsZW1lbnQpO1xuICAgIH1cblxuICAgIGlmIChzdGFydFBvc2l0aW9uc0xlbmd0aCA9PT0gMSkge1xuICAgICAgdGhpcy5wb3NzaWJsZVRhcChldmVudCwgZWxlbWVudCk7XG5cbiAgICAgIHRoaXMucG9zc2libGVTd2lwZShldmVudCwgZWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgZmlsdGVyUG9zaXRpb25zKHN0YXJ0UG9zaXRpb25zLCBwb3NpdGlvbnMpO1xuXG4gIGZpbHRlclBvc2l0aW9ucyhtb3ZpbmdQb3NpdGlvbnMsIHBvc2l0aW9ucyk7XG5cbiAgbGV0IHByZXNzSW50ZXJ2YWwgPSB0aGlzLmdldFByZXNzU0ludGVydmFsKCk7XG5cbiAgaWYgKHByZXNzSW50ZXJ2YWwgIT09IG51bGwpIHtcbiAgICBjbGVhclRpbWVvdXQocHJlc3NJbnRlcnZhbCk7XG5cbiAgICBwcmVzc0ludGVydmFsID0gbnVsbDtcblxuICAgIHRoaXMuc2V0UHJlc3NTSW50ZXJ2YWwocHJlc3NJbnRlcnZhbCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcG9zc2libGVUYXAoZXZlbnQsIGVsZW1lbnQpIHtcbiAgY29uc3Qgc3RhcnRQb3NpdGlvbnMgPSB0aGlzLmdldFN0YXJ0UG9zaXRpb25zKCksXG4gICAgICAgIG1vdmluZ1Bvc2l0aW9ucyA9IHRoaXMuZ2V0TW92aW5nUG9zaXRpb25zKCksXG4gICAgICAgIGZpcnN0U3RhcnRQb3NpdGlvbiA9IGZpcnN0KHN0YXJ0UG9zaXRpb25zKSxcbiAgICAgICAgZmlyc3RNb3ZpbmdQb3NpdGlvbiA9IGZpcnN0KG1vdmluZ1Bvc2l0aW9ucyksXG4gICAgICAgIGZpcnN0UG9zaXRpb24gPSBmaXJzdFN0YXJ0UG9zaXRpb24sIC8vL1xuICAgICAgICBzZWNvbmRQb3NpdGlvbiA9IGZpcnN0TW92aW5nUG9zaXRpb24sIC8vL1xuICAgICAgICByZWxhdGl2ZVBvc2l0aW9uID0gUmVsYXRpdmVQb3NpdGlvbi5mcm9tRmlyc3RQb3NpdGlvbkFuZFNlY29uZFBvc2l0aW9uKGZpcnN0UG9zaXRpb24sIHNlY29uZFBvc2l0aW9uKSxcbiAgICAgICAgdGltZSA9IHJlbGF0aXZlUG9zaXRpb24uZ2V0VGltZSgpLFxuICAgICAgICBzcGVlZCA9IHJlbGF0aXZlUG9zaXRpb24uZ2V0U3BlZWQoKTtcblxuICBpZiAoKHNwZWVkID09PSAwKSAmJiAodGltZSA8IE1BWElNVU1fVEFQX1RJTUUpKXtcbiAgICB0aGlzLnRhcChldmVudCwgZWxlbWVudCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcG9zc2libGVTd2lwZShldmVudCwgZWxlbWVudCkge1xuICBjb25zdCBzdGFydFBvc2l0aW9ucyA9IHRoaXMuZ2V0U3RhcnRQb3NpdGlvbnMoKSxcbiAgICAgICAgbW92aW5nUG9zaXRpb25zID0gdGhpcy5nZXRNb3ZpbmdQb3NpdGlvbnMoKSxcbiAgICAgICAgZmlyc3RTdGFydFBvc2l0aW9uID0gZmlyc3Qoc3RhcnRQb3NpdGlvbnMpLFxuICAgICAgICBmaXJzdE1vdmluZ1Bvc2l0aW9uID0gZmlyc3QobW92aW5nUG9zaXRpb25zKSxcbiAgICAgICAgZmlyc3RQb3NpdGlvbiA9IGZpcnN0U3RhcnRQb3NpdGlvbiwgLy8vXG4gICAgICAgIHNlY29uZFBvc2l0aW9uID0gZmlyc3RNb3ZpbmdQb3NpdGlvbiwgLy8vXG4gICAgICAgIHJlbGF0aXZlUG9zaXRpb24gPSBSZWxhdGl2ZVBvc2l0aW9uLmZyb21GaXJzdFBvc2l0aW9uQW5kU2Vjb25kUG9zaXRpb24oZmlyc3RQb3NpdGlvbiwgc2Vjb25kUG9zaXRpb24pLFxuICAgICAgICBkaXJlY3Rpb24gPSByZWxhdGl2ZVBvc2l0aW9uLmdldERpcmVjdGlvbigpLFxuICAgICAgICBzcGVlZCA9IHJlbGF0aXZlUG9zaXRpb24uZ2V0U3BlZWQoKTtcblxuICBpZiAoc3BlZWQgPiBNSU5JTVVNX1NXSVBFX1NQRUVEKSB7XG4gICAgdGhpcy5zd2lwZShldmVudCwgZWxlbWVudCwgc3BlZWQsIGRpcmVjdGlvbik7XG4gIH1cbn1cblxuZnVuY3Rpb24gdGFwKGV2ZW50LCBlbGVtZW50KSB7XG4gIGNvbnN0IHN0YXJ0UG9zaXRpb25zID0gdGhpcy5nZXRTdGFydFBvc2l0aW9ucygpLFxuICAgICAgICBmaXJzdFN0YXJ0UG9zaXRpb24gPSBmaXJzdChzdGFydFBvc2l0aW9ucyksXG4gICAgICAgIHN0YXJ0UG9zaXRpb24gPSBmaXJzdFN0YXJ0UG9zaXRpb24sIC8vL1xuICAgICAgICB0b3AgPSBzdGFydFBvc2l0aW9uLmdldFRvcCgpLFxuICAgICAgICBsZWZ0ID0gc3RhcnRQb3NpdGlvbi5nZXRMZWZ0KCk7XG5cbiAgbGV0IHRhcEludGVydmFsID0gdGhpcy5nZXRUYXBJbnRlcnZhbCgpO1xuXG4gIGlmICh0YXBJbnRlcnZhbCAhPT0gbnVsbCkge1xuICAgIGNsZWFyVGltZW91dCh0YXBJbnRlcnZhbCk7XG5cbiAgICB0YXBJbnRlcnZhbCA9IG51bGw7XG5cbiAgICB0aGlzLnNldFRhcEludGVydmFsKHRhcEludGVydmFsKTtcblxuICAgIHRoaXMuZG91YmxlVGFwKGV2ZW50LCBlbGVtZW50LCB0b3AsIGxlZnQpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgaW50ZXJ2YWwgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICB0YXBJbnRlcnZhbCA9IG51bGw7XG5cbiAgICB0aGlzLnNldFRhcEludGVydmFsKHRhcEludGVydmFsKTtcblxuICAgIHRoaXMuc2luZ2xlVGFwKGV2ZW50LCBlbGVtZW50LCB0b3AsIGxlZnQpO1xuICB9LCBUQVBfREVMQVkpO1xuXG4gIHRhcEludGVydmFsID0gaW50ZXJ2YWw7IC8vL1xuXG4gIHRoaXMuc2V0VGFwSW50ZXJ2YWwodGFwSW50ZXJ2YWwpO1xufVxuXG5mdW5jdGlvbiBkcmFnKGV2ZW50LCBlbGVtZW50KSB7XG4gIGNvbnN0IHN0YXJ0UG9zaXRpb25zID0gdGhpcy5nZXRTdGFydFBvc2l0aW9ucygpLFxuICAgICAgICBtb3ZpbmdQb3NpdGlvbnMgPSB0aGlzLmdldE1vdmluZ1Bvc2l0aW9ucygpLFxuICAgICAgICBmaXJzdFN0YXJ0UG9zaXRpb24gPSBmaXJzdChzdGFydFBvc2l0aW9ucyksXG4gICAgICAgIGZpcnN0TW92aW5nUG9zaXRpb24gPSBmaXJzdChtb3ZpbmdQb3NpdGlvbnMpLFxuICAgICAgICBmaXJzdFBvc2l0aW9uID0gZmlyc3RTdGFydFBvc2l0aW9uLCAvLy9cbiAgICAgICAgc2Vjb25kUG9zaXRpb24gPSBmaXJzdE1vdmluZ1Bvc2l0aW9uLCAvLy9cbiAgICAgICAgcmVsYXRpdmVQb3NpdGlvbiA9IFJlbGF0aXZlUG9zaXRpb24uZnJvbUZpcnN0UG9zaXRpb25BbmRTZWNvbmRQb3NpdGlvbihmaXJzdFBvc2l0aW9uLCBzZWNvbmRQb3NpdGlvbiksXG4gICAgICAgIHRvcCA9IHJlbGF0aXZlUG9zaXRpb24uZ2V0VG9wKCksXG4gICAgICAgIGxlZnQgPSByZWxhdGl2ZVBvc2l0aW9uLmdldExlZnQoKSxcbiAgICAgICAgZGlyZWN0aW9uID0gcmVsYXRpdmVQb3NpdGlvbi5nZXREaXJlY3Rpb24oKTtcblxuICBsZXQgY3VzdG9tRXZlbnRUeXBlID0gbnVsbDtcblxuICBpZiAoKE1hdGguYWJzKGRpcmVjdGlvbikpIDwgTUFYSU1VTV9TUFJFQUQpIHtcbiAgICBjdXN0b21FdmVudFR5cGUgPSBEUkFHX1JJR0hUX0NVU1RPTV9FVkVOVF9UWVBFO1xuICB9XG5cbiAgaWYgKE1hdGguYWJzKFBJX09WRVJfVFdPIC0gZGlyZWN0aW9uKSA8IE1BWElNVU1fU1BSRUFEKSB7XG4gICAgY3VzdG9tRXZlbnRUeXBlID0gRFJBR19VUF9DVVNUT01fRVZFTlRfVFlQRTtcbiAgfVxuXG4gIGlmIChNYXRoLmFicygtUElfT1ZFUl9UV08gLSBkaXJlY3Rpb24pIDwgTUFYSU1VTV9TUFJFQUQpIHtcbiAgICBjdXN0b21FdmVudFR5cGUgPSBEUkFHX0RPV05fQ1VTVE9NX0VWRU5UX1RZUEU7XG4gIH1cblxuICBpZiAoKFBJIC0gTWF0aC5hYnMoZGlyZWN0aW9uKSkgPCBNQVhJTVVNX1NQUkVBRCkge1xuICAgIGN1c3RvbUV2ZW50VHlwZSA9IERSQUdfTEVGVF9DVVNUT01fRVZFTlRfVFlQRTtcbiAgfVxuXG4gIGlmIChjdXN0b21FdmVudFR5cGUgIT09IG51bGwpIHtcbiAgICB0aGlzLmNhbGxDdXN0b21IYW5kbGVycyhjdXN0b21FdmVudFR5cGUsIGV2ZW50LCBlbGVtZW50LCB0b3AsIGxlZnQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHBpbmNoKGV2ZW50LCBlbGVtZW50KSB7XG4gIGNvbnN0IG1vdmluZ1Bvc2l0aW9ucyA9IHRoaXMuZ2V0TW92aW5nUG9zaXRpb25zKCksXG4gICAgICAgIGZpcnN0TW92aW5nUG9zaXRpb24gPSBmaXJzdChtb3ZpbmdQb3NpdGlvbnMpLFxuICAgICAgICBzZWNvbmRNb3ZpbmdQb3NpdGlvbiA9IHNlY29uZChtb3ZpbmdQb3NpdGlvbnMpLFxuICAgICAgICByZWxhdGl2ZU1vdmluZ1Bvc2l0aW9uID0gUmVsYXRpdmVQb3NpdGlvbi5mcm9tRmlyc3RQb3NpdGlvbkFuZFNlY29uZFBvc2l0aW9uKGZpcnN0TW92aW5nUG9zaXRpb24sIHNlY29uZE1vdmluZ1Bvc2l0aW9uKSxcbiAgICAgICAgY3VzdG9tRXZlbnRUeXBlID0gUElOQ0hfTU9WRV9DVVNUT01fRVZFTlRfVFlQRSxcbiAgICAgICAgc3RhcnRNYWduaXR1ZGUgPSB0aGlzLmdldFN0YXJ0TWFnbml0dWRlKCksXG4gICAgICAgIG1hZ25pdHVkZSA9IHJlbGF0aXZlTW92aW5nUG9zaXRpb24uZ2V0TWFnbml0dWRlKCksXG4gICAgICAgIHJhdGlvID0gbWFnbml0dWRlIC8gc3RhcnRNYWduaXR1ZGU7XG5cbiAgdGhpcy5jYWxsQ3VzdG9tSGFuZGxlcnMoY3VzdG9tRXZlbnRUeXBlLCBldmVudCwgZWxlbWVudCwgcmF0aW8pO1xufVxuXG5mdW5jdGlvbiBwcmVzcyhldmVudCwgZWxlbWVudCkge1xuICBjb25zdCBjdXN0b21FdmVudFR5cGUgPSBQUkVTU19DVVNUT01fRVZFTlRfVFlQRTtcblxuICB0aGlzLmNhbGxDdXN0b21IYW5kbGVycyhjdXN0b21FdmVudFR5cGUsIGV2ZW50LCBlbGVtZW50KTtcbn1cblxuZnVuY3Rpb24gc3dpcGUoZXZlbnQsIGVsZW1lbnQsIHNwZWVkLCBkaXJlY3Rpb24pIHtcbiAgbGV0IGN1c3RvbUV2ZW50VHlwZSA9IG51bGw7XG5cbiAgaWYgKChNYXRoLmFicyhkaXJlY3Rpb24pKSA8IE1BWElNVU1fU1BSRUFEKSB7XG4gICAgY3VzdG9tRXZlbnRUeXBlID0gU1dJUEVfUklHSFRfQ1VTVE9NX0VWRU5UX1RZUEU7XG5cbiAgICBzcGVlZCA9IHNwZWVkICogTWF0aC5hYnMoTWF0aC5jb3MoZGlyZWN0aW9uKSk7XG4gIH1cblxuICBpZiAoTWF0aC5hYnMoUElfT1ZFUl9UV08gLSBkaXJlY3Rpb24pIDwgTUFYSU1VTV9TUFJFQUQpIHtcbiAgICBjdXN0b21FdmVudFR5cGUgPSBTV0lQRV9VUF9DVVNUT01fRVZFTlRfVFlQRTtcblxuICAgIHNwZWVkID0gc3BlZWQgKiBNYXRoLmFicyhNYXRoLnNpbihkaXJlY3Rpb24pKTtcbiAgfVxuXG4gIGlmIChNYXRoLmFicygtUElfT1ZFUl9UV08gLSBkaXJlY3Rpb24pIDwgTUFYSU1VTV9TUFJFQUQpIHtcbiAgICBjdXN0b21FdmVudFR5cGUgPSBTV0lQRV9ET1dOX0NVU1RPTV9FVkVOVF9UWVBFO1xuXG4gICAgc3BlZWQgPSBzcGVlZCAqIE1hdGguYWJzKE1hdGguc2luKGRpcmVjdGlvbikpO1xuICB9XG5cbiAgaWYgKChQSSAtIE1hdGguYWJzKGRpcmVjdGlvbikpIDwgTUFYSU1VTV9TUFJFQUQpIHtcbiAgICBjdXN0b21FdmVudFR5cGUgPSBTV0lQRV9MRUZUX0NVU1RPTV9FVkVOVF9UWVBFO1xuXG4gICAgc3BlZWQgPSBzcGVlZCAqIE1hdGguYWJzKE1hdGguY29zKGRpcmVjdGlvbikpO1xuICB9XG5cbiAgaWYgKGN1c3RvbUV2ZW50VHlwZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXJ0UG9zaXRpb25zID0gdGhpcy5nZXRTdGFydFBvc2l0aW9ucygpLFxuICAgICAgICAgIGZpcnN0U3RhcnRQb3NpdGlvbiA9IGZpcnN0KHN0YXJ0UG9zaXRpb25zKSxcbiAgICAgICAgICBzdGFydFBvc2l0aW9uID0gZmlyc3RTdGFydFBvc2l0aW9uLCAvLy9cbiAgICAgICAgICB0b3AgPSBzdGFydFBvc2l0aW9uLmdldFRvcCgpLFxuICAgICAgICAgIGxlZnQgPSBzdGFydFBvc2l0aW9uLmdldExlZnQoKTtcblxuICAgIHRoaXMuY2FsbEN1c3RvbUhhbmRsZXJzKGN1c3RvbUV2ZW50VHlwZSwgZXZlbnQsIGVsZW1lbnQsIHRvcCwgbGVmdCwgc3BlZWQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNpbmdsZVRhcChldmVudCwgZWxlbWVudCwgdG9wLCBsZWZ0KSB7XG4gIGNvbnN0IGN1c3RvbUV2ZW50VHlwZSA9IFNJTkdMRV9UQVBfQ1VTVE9NX0VWRU5UX1RZUEU7XG5cbiAgdGhpcy5jYWxsQ3VzdG9tSGFuZGxlcnMoY3VzdG9tRXZlbnRUeXBlLCBldmVudCwgZWxlbWVudCwgdG9wLCBsZWZ0KTsgLy8vXG59XG5cbmZ1bmN0aW9uIGRvdWJsZVRhcChldmVudCwgZWxlbWVudCwgdG9wLCBsZWZ0KSB7XG4gIGNvbnN0IGN1c3RvbUV2ZW50VHlwZSA9IERPVUJMRV9UQVBfQ1VTVE9NX0VWRU5UX1RZUEU7XG5cbiAgdGhpcy5jYWxsQ3VzdG9tSGFuZGxlcnMoY3VzdG9tRXZlbnRUeXBlLCBldmVudCwgZWxlbWVudCwgdG9wLCBsZWZ0KTtcbn1cblxuZnVuY3Rpb24gZHJhZ1N0YXJ0KGV2ZW50LCBlbGVtZW50KSB7XG4gIGNvbnN0IGN1c3RvbUV2ZW50VHlwZSA9IERSQUdfU1RBUlRfQ1VTVE9NX0VWRU5UX1RZUEUsXG4gICAgICAgIHN0YXJ0UG9zaXRpb25zID0gdGhpcy5nZXRTdGFydFBvc2l0aW9ucygpLFxuICAgICAgICBmaXJzdFN0YXJ0UG9zaXRpb24gPSBmaXJzdChzdGFydFBvc2l0aW9ucyksXG4gICAgICAgIHN0YXJ0UG9zaXRpb24gPSBmaXJzdFN0YXJ0UG9zaXRpb24sICAvLy9cbiAgICAgICAgdG9wID0gc3RhcnRQb3NpdGlvbi5nZXRUb3AoKSxcbiAgICAgICAgbGVmdCA9IHN0YXJ0UG9zaXRpb24uZ2V0TGVmdCgpO1xuXG4gIHRoaXMuY2FsbEN1c3RvbUhhbmRsZXJzKGN1c3RvbUV2ZW50VHlwZSwgZXZlbnQsIGVsZW1lbnQsIHRvcCwgbGVmdCk7XG59XG5cbmZ1bmN0aW9uIHBpbmNoU3RhcnQoZXZlbnQsIGVsZW1lbnQpIHtcbiAgY29uc3QgY3VzdG9tRXZlbnRUeXBlID0gUElOQ0hfU1RBUlRfQ1VTVE9NX0VWRU5UX1RZUEUsXG4gICAgc3RhcnRQb3NpdGlvbnMgPSB0aGlzLmdldFN0YXJ0UG9zaXRpb25zKCksXG4gICAgZmlyc3RTdGFydFBvc2l0aW9uID0gZmlyc3Qoc3RhcnRQb3NpdGlvbnMpLFxuICAgIHNlY29uZFN0YXJ0UG9zaXRpb24gPSBzZWNvbmQoc3RhcnRQb3NpdGlvbnMpLFxuICAgIHJlbGF0aXZlU3RhcnRQb3NpdGlvbiA9IFJlbGF0aXZlUG9zaXRpb24uZnJvbUZpcnN0UG9zaXRpb25BbmRTZWNvbmRQb3NpdGlvbihmaXJzdFN0YXJ0UG9zaXRpb24sIHNlY29uZFN0YXJ0UG9zaXRpb24pLFxuICAgIG1hZ25pdHVkZSA9IHJlbGF0aXZlU3RhcnRQb3NpdGlvbi5nZXRNYWduaXR1ZGUoKSxcbiAgICBzdGFydE1hZ25pdHVkZSA9IG1hZ25pdHVkZTsgLy8vXG5cbiAgdGhpcy5zZXRTdGFydE1hZ25pdHVkZShzdGFydE1hZ25pdHVkZSk7XG5cbiAgdGhpcy5jYWxsQ3VzdG9tSGFuZGxlcnMoY3VzdG9tRXZlbnRUeXBlLCBldmVudCwgZWxlbWVudCk7XG59XG5cbmZ1bmN0aW9uIHBpbmNoU3RvcChldmVudCwgZWxlbWVudCkge1xuICBjb25zdCBjdXN0b21FdmVudFR5cGUgPSBQSU5DSF9TVE9QX0NVU1RPTV9FVkVOVF9UWVBFO1xuXG4gIHRoaXMuY2FsbEN1c3RvbUhhbmRsZXJzKGN1c3RvbUV2ZW50VHlwZSwgZXZlbnQsIGVsZW1lbnQpO1xufVxuXG5jb25zdCB0b3VjaE1peGlucyA9IHtcbiAgZW5hYmxlVG91Y2gsXG4gIGRpc2FibGVUb3VjaCxcbiAgb25DdXN0b21QcmVzcyxcbiAgb2ZmQ3VzdG9tUHJlc3MsXG4gIG9uQ3VzdG9tRHJhZ1VwLFxuICBvZmZDdXN0b21EcmFnVXAsXG4gIG9uQ3VzdG9tRHJhZ0Rvd24sXG4gIG9mZkN1c3RvbURyYWdEb3duLFxuICBvbkN1c3RvbURyYWdMZWZ0LFxuICBvZmZDdXN0b21EcmFnTGVmdCxcbiAgb25DdXN0b21EcmFnUmlnaHQsXG4gIG9mZkN1c3RvbURyYWdSaWdodCxcbiAgb25DdXN0b21EcmFnU3RhcnQsXG4gIG9mZkN1c3RvbURyYWdTdGFydCxcbiAgb25DdXN0b21Td2lwZVVwLFxuICBvZmZDdXN0b21Td2lwZVVwLFxuICBvbkN1c3RvbVN3aXBlRG93bixcbiAgb2ZmQ3VzdG9tU3dpcGVEb3duLFxuICBvbkN1c3RvbVN3aXBlTGVmdCxcbiAgb2ZmQ3VzdG9tU3dpcGVMZWZ0LFxuICBvbkN1c3RvbVN3aXBlUmlnaHQsXG4gIG9mZkN1c3RvbVN3aXBlUmlnaHQsXG4gIG9uQ3VzdG9tUGluY2hNb3ZlLFxuICBvZmZDdXN0b21QaW5jaE1vdmUsXG4gIG9uQ3VzdG9tUGluY2hTdGFydCxcbiAgb2ZmQ3VzdG9tUGluY2hTdGFydCxcbiAgb25DdXN0b21QaW5jaFN0b3AsXG4gIG9mZkN1c3RvbVBpbmNoU3RvcCxcbiAgb25DdXN0b21TaW5nbGVUYXAsXG4gIG9mZkN1c3RvbVNpbmdsZVRhcCxcbiAgb25DdXN0b21Eb3VibGVUYXAsXG4gIG9mZkN1c3RvbURvdWJsZVRhcCxcbiAgZ2V0VGFwSW50ZXJ2YWwsXG4gIGdldFByZXNzU0ludGVydmFsLFxuICBnZXRTdGFydE1hZ25pdHVkZSxcbiAgZ2V0U3RhcnRQb3NpdGlvbnMsXG4gIGdldE1vdmluZ1Bvc2l0aW9ucyxcbiAgc2V0VGFwSW50ZXJ2YWwsXG4gIHNldFByZXNzU0ludGVydmFsLFxuICBzZXRTdGFydE1hZ25pdHVkZSxcbiAgc2V0U3RhcnRQb3NpdGlvbnMsXG4gIHNldE1vdmluZ1Bvc2l0aW9ucyxcbiAgdG91Y2hTdGFydEhhbmRsZXIsXG4gIG1vdXNlRG93bkhhbmRsZXIsXG4gIHRvdWNoTW92ZUhhbmRsZXIsXG4gIG1vdXNlTW92ZUhhbmRsZXIsXG4gIHRvdWNoRW5kSGFuZGxlcixcbiAgbW91c2VVcEhhbmRsZXIsXG4gIHN0YXJ0SGFuZGxlcixcbiAgbW92ZUhhbmRsZXIsXG4gIGVuZEhhbmRsZXIsXG4gIHBvc3NpYmxlVGFwLFxuICBwb3NzaWJsZVN3aXBlLFxuICB0YXAsXG4gIGRyYWcsXG4gIHBpbmNoLFxuICBwcmVzcyxcbiAgc3dpcGUsXG4gIHNpbmdsZVRhcCxcbiAgZG91YmxlVGFwLFxuICBkcmFnU3RhcnQsXG4gIHBpbmNoU3RhcnQsXG4gIHBpbmNoU3RvcFxufTtcblxuZXhwb3J0IGRlZmF1bHQgdG91Y2hNaXhpbnM7XG4iXSwibmFtZXMiOlsicHVzaCIsImZpcnN0Iiwic2Vjb25kIiwiYXJyYXlVdGlsaXRpZXMiLCJlbmFibGVUb3VjaCIsInRhcEludGVydmFsIiwic3RhcnRNYWduaXR1ZGUiLCJzdGFydFBvc2l0aW9ucyIsIm1vdmluZ1Bvc2l0aW9ucyIsInVwZGF0ZVN0YXRlIiwib25Nb3VzZURvd24iLCJtb3VzZURvd25IYW5kbGVyIiwib25Nb3VzZU1vdmUiLCJtb3VzZU1vdmVIYW5kbGVyIiwid2luZG93Iiwib25Nb3VzZVVwIiwibW91c2VVcEhhbmRsZXIiLCJvblRvdWNoU3RhcnQiLCJ0b3VjaFN0YXJ0SGFuZGxlciIsIm9uVG91Y2hNb3ZlIiwidG91Y2hNb3ZlSGFuZGxlciIsIm9uVG91Y2hFbmQiLCJ0b3VjaEVuZEhhbmRsZXIiLCJkaXNhYmxlVG91Y2giLCJvZmZNb3VzZURvd24iLCJvZmZNb3VzZU1vdmUiLCJvZmZNb3VzZVVwIiwib2ZmVG91Y2hTdGFydCIsIm9mZlRvdWNoTW92ZSIsIm9mZlRvdWNoRW5kIiwib25DdXN0b21QcmVzcyIsInByZXNzQ3VzdG9tSGFuZGxlciIsImVsZW1lbnQiLCJjdXN0b21FdmVudFR5cGUiLCJQUkVTU19DVVNUT01fRVZFTlRfVFlQRSIsImN1c3RvbUhhbmRsZXIiLCJvbkN1c3RvbUV2ZW50Iiwib2ZmQ3VzdG9tUHJlc3MiLCJvZmZDdXN0b21FdmVudCIsIm9uQ3VzdG9tRHJhZ1VwIiwiZHJhZ1VwQ3VzdG9tSGFuZGxlciIsIkRSQUdfVVBfQ1VTVE9NX0VWRU5UX1RZUEUiLCJvZmZDdXN0b21EcmFnVXAiLCJvbkN1c3RvbURyYWdEb3duIiwiZHJhZ0Rvd25DdXN0b21IYW5kbGVyIiwiRFJBR19ET1dOX0NVU1RPTV9FVkVOVF9UWVBFIiwib2ZmQ3VzdG9tRHJhZ0Rvd24iLCJvbkN1c3RvbURyYWdMZWZ0IiwiZHJhZ0xlZnRDdXN0b21IYW5kbGVyIiwiRFJBR19MRUZUX0NVU1RPTV9FVkVOVF9UWVBFIiwib2ZmQ3VzdG9tRHJhZ0xlZnQiLCJvbkN1c3RvbURyYWdSaWdodCIsImRyYWdSaWdodEN1c3RvbUhhbmRsZXIiLCJEUkFHX1JJR0hUX0NVU1RPTV9FVkVOVF9UWVBFIiwib2ZmQ3VzdG9tRHJhZ1JpZ2h0Iiwib25DdXN0b21EcmFnU3RhcnQiLCJkcmFnU3RhcnRDdXN0b21IYW5kbGVyIiwiRFJBR19TVEFSVF9DVVNUT01fRVZFTlRfVFlQRSIsIm9mZkN1c3RvbURyYWdTdGFydCIsIm9uQ3VzdG9tU3dpcGVVcCIsInN3aXBlVXBDdXN0b21IYW5kbGVyIiwiU1dJUEVfVVBfQ1VTVE9NX0VWRU5UX1RZUEUiLCJvZmZDdXN0b21Td2lwZVVwIiwib25DdXN0b21Td2lwZURvd24iLCJzd2lwZURvd25DdXN0b21IYW5kbGVyIiwiU1dJUEVfRE9XTl9DVVNUT01fRVZFTlRfVFlQRSIsIm9mZkN1c3RvbVN3aXBlRG93biIsIm9uQ3VzdG9tU3dpcGVMZWZ0Iiwic3dpcGVMZWZ0Q3VzdG9tSGFuZGxlciIsIlNXSVBFX0xFRlRfQ1VTVE9NX0VWRU5UX1RZUEUiLCJvZmZDdXN0b21Td2lwZUxlZnQiLCJvbkN1c3RvbVN3aXBlUmlnaHQiLCJzd2lwZVJpZ2h0Q3VzdG9tSGFuZGxlciIsIlNXSVBFX1JJR0hUX0NVU1RPTV9FVkVOVF9UWVBFIiwib2ZmQ3VzdG9tU3dpcGVSaWdodCIsIm9uQ3VzdG9tUGluY2hNb3ZlIiwicGluY2hNb3ZlQ3VzdG9tSGFuZGxlciIsIlBJTkNIX01PVkVfQ1VTVE9NX0VWRU5UX1RZUEUiLCJvZmZDdXN0b21QaW5jaE1vdmUiLCJvbkN1c3RvbVBpbmNoU3RhcnQiLCJwaW5jaFN0YXJ0Q3VzdG9tSGFuZGxlciIsIlBJTkNIX1NUQVJUX0NVU1RPTV9FVkVOVF9UWVBFIiwib2ZmQ3VzdG9tUGluY2hTdGFydCIsIm9uQ3VzdG9tUGluY2hTdG9wIiwicGluY2hTdG9wQ3VzdG9tSGFuZGxlciIsIlBJTkNIX1NUT1BfQ1VTVE9NX0VWRU5UX1RZUEUiLCJvZmZDdXN0b21QaW5jaFN0b3AiLCJvbkN1c3RvbVNpbmdsZVRhcCIsInNpbmdsZVRhcEN1c3RvbUhhbmRsZXIiLCJTSU5HTEVfVEFQX0NVU1RPTV9FVkVOVF9UWVBFIiwib2ZmQ3VzdG9tU2luZ2xlVGFwIiwib25DdXN0b21Eb3VibGVUYXAiLCJkb3VibGVUYXBDdXN0b21IYW5kbGVyIiwiRE9VQkxFX1RBUF9DVVNUT01fRVZFTlRfVFlQRSIsIm9mZkN1c3RvbURvdWJsZVRhcCIsImdldFRhcEludGVydmFsIiwiZ2V0U3RhdGUiLCJnZXRQcmVzc1NJbnRlcnZhbCIsInByZXNzSW50ZXJ2YWwiLCJnZXRTdGFydE1hZ25pdHVkZSIsImdldFN0YXJ0UG9zaXRpb25zIiwiZ2V0TW92aW5nUG9zaXRpb25zIiwic2V0VGFwSW50ZXJ2YWwiLCJzZXRQcmVzc1NJbnRlcnZhbCIsInNldFN0YXJ0TWFnbml0dWRlIiwic2V0U3RhcnRQb3NpdGlvbnMiLCJzZXRNb3ZpbmdQb3NpdGlvbnMiLCJldmVudCIsInN0YXJ0SGFuZGxlciIsInRvdWNoRXZlbnQiLCJjaGFuZ2VkIiwicG9zaXRpb25zIiwicG9zaXRpb25zRnJvbVRvdWNoRXZlbnQiLCJtb3VzZUV2ZW50IiwicG9zaXRpb25zRnJvbU1vdXNlRXZlbnQiLCJtb3ZlSGFuZGxlciIsImVuZEhhbmRsZXIiLCJwb3NpdGlvbnNGcm9tRXZlbnQiLCJmaWx0ZXJQb3NpdGlvbnMiLCJzdGFydGluZ1Bvc2l0aW9uc0xlbmd0aCIsImxlbmd0aCIsImRyYWdTdGFydCIsImludGVydmFsIiwic2V0VGltZW91dCIsInByZXNzIiwiUFJFU1NfREVMQVkiLCJwaW5jaFN0YXJ0IiwicG9zaXRpb25zTWF0Y2giLCJtYXRjaFBvc2l0aW9ucyIsInNvcnRQb3NpdGlvbnMiLCJtb3ZpbmdQb3NpdGlvbnNMZW5ndGgiLCJkcmFnIiwicGluY2giLCJjbGVhclRpbWVvdXQiLCJzdGFydFBvc2l0aW9uc0xlbmd0aCIsInBpbmNoU3RvcCIsInBvc3NpYmxlVGFwIiwicG9zc2libGVTd2lwZSIsImZpcnN0U3RhcnRQb3NpdGlvbiIsImZpcnN0TW92aW5nUG9zaXRpb24iLCJmaXJzdFBvc2l0aW9uIiwic2Vjb25kUG9zaXRpb24iLCJyZWxhdGl2ZVBvc2l0aW9uIiwiUmVsYXRpdmVQb3NpdGlvbiIsImZyb21GaXJzdFBvc2l0aW9uQW5kU2Vjb25kUG9zaXRpb24iLCJ0aW1lIiwiZ2V0VGltZSIsInNwZWVkIiwiZ2V0U3BlZWQiLCJNQVhJTVVNX1RBUF9USU1FIiwidGFwIiwiZGlyZWN0aW9uIiwiZ2V0RGlyZWN0aW9uIiwiTUlOSU1VTV9TV0lQRV9TUEVFRCIsInN3aXBlIiwic3RhcnRQb3NpdGlvbiIsInRvcCIsImdldFRvcCIsImxlZnQiLCJnZXRMZWZ0IiwiZG91YmxlVGFwIiwic2luZ2xlVGFwIiwiVEFQX0RFTEFZIiwiTWF0aCIsImFicyIsIk1BWElNVU1fU1BSRUFEIiwiUElfT1ZFUl9UV08iLCJQSSIsImNhbGxDdXN0b21IYW5kbGVycyIsInNlY29uZE1vdmluZ1Bvc2l0aW9uIiwicmVsYXRpdmVNb3ZpbmdQb3NpdGlvbiIsIm1hZ25pdHVkZSIsImdldE1hZ25pdHVkZSIsInJhdGlvIiwiY29zIiwic2luIiwic2Vjb25kU3RhcnRQb3NpdGlvbiIsInJlbGF0aXZlU3RhcnRQb3NpdGlvbiIsInRvdWNoTWl4aW5zIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFxdkJBOzs7ZUFBQTs7O3NCQW52QnVCOzJCQUNRO2lFQUVGOzJCQUVrRjsyQkFDRTtrQ0FlcEU7Ozs7OztBQUU3QyxNQUFNLEVBQUVBLElBQUksRUFBRUMsS0FBSyxFQUFFQyxNQUFNLEVBQUUsR0FBR0MseUJBQWM7QUFFOUMsU0FBU0M7SUFDUCxNQUFNQyxjQUFjLE1BQ2RDLGlCQUFpQixNQUNqQkMsaUJBQWlCLEVBQUUsRUFDbkJDLGtCQUFrQixFQUFFO0lBRTFCLElBQUksQ0FBQ0MsV0FBVyxDQUFDO1FBQ2ZKO1FBQ0FDO1FBQ0FDO1FBQ0FDO0lBQ0Y7SUFFQSxJQUFJLENBQUNFLFdBQVcsQ0FBQyxJQUFJLENBQUNDLGdCQUFnQjtJQUN0QyxJQUFJLENBQUNDLFdBQVcsQ0FBQyxJQUFJLENBQUNDLGdCQUFnQjtJQUV0Q0MsWUFBTSxDQUFDQyxTQUFTLENBQUMsSUFBSSxDQUFDQyxjQUFjLEVBQUUsSUFBSTtJQUUxQyxJQUFJLENBQUNDLFlBQVksQ0FBQyxJQUFJLENBQUNDLGlCQUFpQjtJQUN4QyxJQUFJLENBQUNDLFdBQVcsQ0FBQyxJQUFJLENB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
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "default", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return RelativePosition;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _constants = require("../constants");
|
|
12
|
+
class RelativePosition {
|
|
13
|
+
constructor(top, left, time, speed, magnitude, direction){
|
|
14
|
+
this.top = top;
|
|
15
|
+
this.left = left;
|
|
16
|
+
this.time = time;
|
|
17
|
+
this.speed = speed;
|
|
18
|
+
this.magnitude = magnitude;
|
|
19
|
+
this.direction = direction;
|
|
20
|
+
}
|
|
21
|
+
getTop() {
|
|
22
|
+
return this.top;
|
|
23
|
+
}
|
|
24
|
+
getLeft() {
|
|
25
|
+
return this.left;
|
|
26
|
+
}
|
|
27
|
+
getTime() {
|
|
28
|
+
return this.time;
|
|
29
|
+
}
|
|
30
|
+
getSpeed() {
|
|
31
|
+
return this.speed;
|
|
32
|
+
}
|
|
33
|
+
getMagnitude() {
|
|
34
|
+
return this.magnitude;
|
|
35
|
+
}
|
|
36
|
+
getDirection() {
|
|
37
|
+
return this.direction;
|
|
38
|
+
}
|
|
39
|
+
static fromFirstPositionAndSecondPosition(firstPosition, secondPosition) {
|
|
40
|
+
const position = secondPosition.minus(firstPosition), top = position.getTop(), left = position.getLeft(), time = position.getTime(), magnitude = Math.sqrt(top * top + left * left), speed = time === 0 ? 0 : magnitude / time;
|
|
41
|
+
let direction;
|
|
42
|
+
if (left === 0) {
|
|
43
|
+
direction = top < 0 ? +_constants.PI / 2 : -_constants.PI / 2;
|
|
44
|
+
} else {
|
|
45
|
+
direction = Math.atan2(-top, left);
|
|
46
|
+
}
|
|
47
|
+
const relativePosition = new RelativePosition(top, left, time, speed, magnitude, direction);
|
|
48
|
+
return relativePosition;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wb3NpdGlvbi9yZWxhdGl2ZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgUEkgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlbGF0aXZlUG9zaXRpb24ge1xuICBjb25zdHJ1Y3Rvcih0b3AsIGxlZnQsIHRpbWUsIHNwZWVkLCBtYWduaXR1ZGUsIGRpcmVjdGlvbikge1xuICAgIHRoaXMudG9wID0gdG9wO1xuICAgIHRoaXMubGVmdCA9IGxlZnQ7XG4gICAgdGhpcy50aW1lID0gdGltZTtcbiAgICB0aGlzLnNwZWVkID0gc3BlZWQ7XG4gICAgdGhpcy5tYWduaXR1ZGUgPSBtYWduaXR1ZGU7XG4gICAgdGhpcy5kaXJlY3Rpb24gPSBkaXJlY3Rpb247XG4gIH1cblxuICBnZXRUb3AoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9wO1xuICB9XG5cbiAgZ2V0TGVmdCgpIHtcbiAgICByZXR1cm4gdGhpcy5sZWZ0O1xuICB9XG5cbiAgZ2V0VGltZSgpIHtcbiAgICByZXR1cm4gdGhpcy50aW1lO1xuICB9XG5cbiAgZ2V0U3BlZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3BlZWQ7XG4gIH1cblxuICBnZXRNYWduaXR1ZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWFnbml0dWRlO1xuICB9XG5cbiAgZ2V0RGlyZWN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmRpcmVjdGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tRmlyc3RQb3NpdGlvbkFuZFNlY29uZFBvc2l0aW9uKGZpcnN0UG9zaXRpb24sIHNlY29uZFBvc2l0aW9uKSB7XG4gICAgY29uc3QgcG9zaXRpb24gPSBzZWNvbmRQb3NpdGlvbi5taW51cyhmaXJzdFBvc2l0aW9uKSxcbiAgICAgICAgICB0b3AgPSBwb3NpdGlvbi5nZXRUb3AoKSxcbiAgICAgICAgICBsZWZ0ID0gcG9zaXRpb24uZ2V0TGVmdCgpLFxuICAgICAgICAgIHRpbWUgPSBwb3NpdGlvbi5nZXRUaW1lKCksXG4gICAgICAgICAgbWFnbml0dWRlID0gTWF0aC5zcXJ0KHRvcCAqIHRvcCArIGxlZnQgKiBsZWZ0KSxcbiAgICAgICAgICBzcGVlZCA9ICh0aW1lID09PSAwKSA/XG4gICAgICAgICAgICAgICAgICAgIDAgOlxuICAgICAgICAgICAgICAgICAgICAgIG1hZ25pdHVkZSAvIHRpbWU7XG5cbiAgICBsZXQgZGlyZWN0aW9uO1xuXG4gICAgaWYgKGxlZnQgPT09IDApIHtcbiAgICAgIGRpcmVjdGlvbiA9ICh0b3AgPCAwKSA/XG4gICAgICAgICAgICAgICAgICAgK1BJIC8gMiA6XG4gICAgICAgICAgICAgICAgICAgIC1QSSAvIDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRpcmVjdGlvbiA9IE1hdGguYXRhbjIoLXRvcCwgbGVmdCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVsYXRpdmVQb3NpdGlvbiA9IG5ldyBSZWxhdGl2ZVBvc2l0aW9uKHRvcCwgbGVmdCwgdGltZSwgc3BlZWQsIG1hZ25pdHVkZSwgZGlyZWN0aW9uKTtcblxuICAgIHJldHVybiByZWxhdGl2ZVBvc2l0aW9uO1xuICB9XG59XG4iXSwibmFtZXMiOlsiUmVsYXRpdmVQb3NpdGlvbiIsInRvcCIsImxlZnQiLCJ0aW1lIiwic3BlZWQiLCJtYWduaXR1ZGUiLCJkaXJlY3Rpb24iLCJnZXRUb3AiLCJnZXRMZWZ0IiwiZ2V0VGltZSIsImdldFNwZWVkIiwiZ2V0TWFnbml0dWRlIiwiZ2V0RGlyZWN0aW9uIiwiZnJvbUZpcnN0UG9zaXRpb25BbmRTZWNvbmRQb3NpdGlvbiIsImZpcnN0UG9zaXRpb24iLCJzZWNvbmRQb3NpdGlvbiIsInBvc2l0aW9uIiwibWludXMiLCJNYXRoIiwic3FydCIsIlBJIiwiYXRhbjIiLCJyZWxhdGl2ZVBvc2l0aW9uIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFJQTs7O2VBQXFCQTs7OzJCQUZGO0FBRUosTUFBTUE7SUFDbkIsWUFBWUMsR0FBRyxFQUFFQyxJQUFJLEVBQUVDLElBQUksRUFBRUMsS0FBSyxFQUFFQyxTQUFTLEVBQUVDLFNBQVMsQ0FBRTtRQUN4RCxJQUFJLENBQUNMLEdBQUcsR0FBR0E7UUFDWCxJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLEtBQUssR0FBR0E7UUFDYixJQUFJLENBQUNDLFNBQVMsR0FBR0E7UUFDakIsSUFBSSxDQUFDQyxTQUFTLEdBQUdBO0lBQ25CO0lBRUFDLFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQ04sR0FBRztJQUNqQjtJQUVBTyxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUNOLElBQUk7SUFDbEI7SUFFQU8sVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDTixJQUFJO0lBQ2xCO0lBRUFPLFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQ04sS0FBSztJQUNuQjtJQUVBTyxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUNOLFNBQVM7SUFDdkI7SUFFQU8sZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDTixTQUFTO0lBQ3ZCO0lBRUEsT0FBT08sbUNBQW1DQyxhQUFhLEVBQUVDLGNBQWMsRUFBRTtRQUN2RSxNQUFNQyxXQUFXRCxlQUFlRSxLQUFLLENBQUNILGdCQUNoQ2IsTUFBTWUsU0FBU1QsTUFBTSxJQUNyQkwsT0FBT2MsU0FBU1IsT0FBTyxJQUN2QkwsT0FBT2EsU0FBU1AsT0FBTyxJQUN2QkosWUFBWWEsS0FBS0MsSUFBSSxDQUFDbEIsTUFBTUEsTUFBTUMsT0FBT0EsT0FDekNFLFFBQVEsQUFBQ0QsU0FBUyxJQUNSLElBQ0VFLFlBQVlGO1FBRTlCLElBQUlHO1FBRUosSUFBSUosU0FBUyxHQUFHO1lBQ2RJLFlBQVksQUFBQ0wsTUFBTSxJQUNOLENBQUNtQixhQUFFLEdBQUcsSUFDTCxDQUFDQSxhQUFFLEdBQUc7UUFDdEIsT0FBTztZQUNMZCxZQUFZWSxLQUFLRyxLQUFLLENBQUMsQ0FBQ3BCLEtBQUtDO1FBQy9CO1FBRUEsTUFBTW9CLG1CQUFtQixJQUFJdEIsaUJBQWlCQyxLQUFLQyxNQUFNQyxNQUFNQyxPQUFPQyxXQUFXQztRQUVqRixPQUFPZ0I7SUFDVDtBQUNGIn0=
|
package/lib/position.js
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "default", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return Position;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
class Position {
|
|
12
|
+
constructor(top, left, time, identifier){
|
|
13
|
+
this.top = top;
|
|
14
|
+
this.left = left;
|
|
15
|
+
this.time = time;
|
|
16
|
+
this.identifier = identifier;
|
|
17
|
+
}
|
|
18
|
+
getTop() {
|
|
19
|
+
return this.top;
|
|
20
|
+
}
|
|
21
|
+
getLeft() {
|
|
22
|
+
return this.left;
|
|
23
|
+
}
|
|
24
|
+
getTime() {
|
|
25
|
+
return this.time;
|
|
26
|
+
}
|
|
27
|
+
getIdentifier() {
|
|
28
|
+
return this.identifier;
|
|
29
|
+
}
|
|
30
|
+
minus(position) {
|
|
31
|
+
const positionTop = position.getTop(), positionLeft = position.getLeft(), positionTime = position.getTime(), top = this.top - positionTop, left = this.left - positionLeft, time = this.time - positionTime, identifier = this.identifier;
|
|
32
|
+
position = new Position(top, left, time, identifier); ///
|
|
33
|
+
return position;
|
|
34
|
+
}
|
|
35
|
+
match(position) {
|
|
36
|
+
const identifier = position.getIdentifier(), matches = this.identifier === identifier;
|
|
37
|
+
return matches;
|
|
38
|
+
}
|
|
39
|
+
static fromTouch(touch) {
|
|
40
|
+
const { pageX, pageY, identifier } = touch, top = pageY, left = pageX, time = getTime(), position = new Position(top, left, time, identifier);
|
|
41
|
+
return position;
|
|
42
|
+
}
|
|
43
|
+
static fromMouseEvent(mouseEvent) {
|
|
44
|
+
const { pageX, pageY } = mouseEvent, top = pageY, left = pageX, time = getTime(), identifier = null, position = new Position(top, left, time, identifier);
|
|
45
|
+
return position;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function getTime() {
|
|
49
|
+
const time = Date.now(); ///
|
|
50
|
+
return time;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wb3NpdGlvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUG9zaXRpb24ge1xuICBjb25zdHJ1Y3Rvcih0b3AsIGxlZnQsIHRpbWUsIGlkZW50aWZpZXIpIHtcbiAgICB0aGlzLnRvcCA9IHRvcDtcbiAgICB0aGlzLmxlZnQgPSBsZWZ0O1xuICAgIHRoaXMudGltZSA9IHRpbWU7XG4gICAgdGhpcy5pZGVudGlmaWVyID0gaWRlbnRpZmllcjtcbiAgfVxuXG4gIGdldFRvcCgpIHtcbiAgICByZXR1cm4gdGhpcy50b3A7XG4gIH1cblxuICBnZXRMZWZ0KCkge1xuICAgIHJldHVybiB0aGlzLmxlZnQ7XG4gIH1cblxuICBnZXRUaW1lKCkge1xuICAgIHJldHVybiB0aGlzLnRpbWU7XG4gIH1cblxuICBnZXRJZGVudGlmaWVyKCkge1xuICAgIHJldHVybiB0aGlzLmlkZW50aWZpZXI7XG4gIH1cblxuICBtaW51cyhwb3NpdGlvbikge1xuICAgIGNvbnN0IHBvc2l0aW9uVG9wID0gcG9zaXRpb24uZ2V0VG9wKCksXG4gICAgICAgICAgcG9zaXRpb25MZWZ0ID0gcG9zaXRpb24uZ2V0TGVmdCgpLFxuICAgICAgICAgIHBvc2l0aW9uVGltZSA9IHBvc2l0aW9uLmdldFRpbWUoKSxcbiAgICAgICAgICB0b3AgPSB0aGlzLnRvcCAtIHBvc2l0aW9uVG9wLFxuICAgICAgICAgIGxlZnQgPSB0aGlzLmxlZnQgLSBwb3NpdGlvbkxlZnQsXG4gICAgICAgICAgdGltZSA9IHRoaXMudGltZSAtIHBvc2l0aW9uVGltZSxcbiAgICAgICAgICBpZGVudGlmaWVyID0gdGhpcy5pZGVudGlmaWVyO1xuXG4gICAgcG9zaXRpb24gPSBuZXcgUG9zaXRpb24odG9wLCBsZWZ0LCB0aW1lLCBpZGVudGlmaWVyKTsgLy8vXG5cbiAgICByZXR1cm4gcG9zaXRpb247XG4gIH1cblxuICBtYXRjaChwb3NpdGlvbikge1xuICAgIGNvbnN0IGlkZW50aWZpZXIgPSBwb3NpdGlvbi5nZXRJZGVudGlmaWVyKCksXG4gICAgICAgICAgbWF0Y2hlcyA9ICh0aGlzLmlkZW50aWZpZXIgPT09IGlkZW50aWZpZXIpO1xuXG4gICAgcmV0dXJuIG1hdGNoZXM7XG4gIH1cblxuICBzdGF0aWMgZnJvbVRvdWNoKHRvdWNoKSB7XG4gICAgY29uc3QgeyBwYWdlWCwgcGFnZVksIGlkZW50aWZpZXIgfSA9IHRvdWNoLFxuICAgICAgICAgIHRvcCA9IHBhZ2VZLCAgLy8vXG4gICAgICAgICAgbGVmdCA9IHBhZ2VYLCAvLy9cbiAgICAgICAgICB0aW1lID0gZ2V0VGltZSgpLFxuICAgICAgICAgIHBvc2l0aW9uID0gbmV3IFBvc2l0aW9uKHRvcCwgbGVmdCwgdGltZSwgaWRlbnRpZmllcik7XG5cbiAgICByZXR1cm4gcG9zaXRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbU1vdXNlRXZlbnQobW91c2VFdmVudCkge1xuICAgIGNvbnN0IHsgcGFnZVgsIHBhZ2VZIH0gPSBtb3VzZUV2ZW50LFxuICAgICAgICAgIHRvcCA9IHBhZ2VZLCAgLy8vXG4gICAgICAgICAgbGVmdCA9IHBhZ2VYLCAvLy9cbiAgICAgICAgICB0aW1lID0gZ2V0VGltZSgpLFxuICAgICAgICAgIGlkZW50aWZpZXIgPSBudWxsLFxuICAgICAgICAgIHBvc2l0aW9uID0gbmV3IFBvc2l0aW9uKHRvcCwgbGVmdCwgdGltZSwgaWRlbnRpZmllcik7XG5cbiAgICByZXR1cm4gcG9zaXRpb247XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0VGltZSgpIHtcbiAgY29uc3QgdGltZSA9IERhdGUubm93KCk7ICAvLy9cblxuICByZXR1cm4gdGltZTtcbn1cbiJdLCJuYW1lcyI6WyJQb3NpdGlvbiIsInRvcCIsImxlZnQiLCJ0aW1lIiwiaWRlbnRpZmllciIsImdldFRvcCIsImdldExlZnQiLCJnZXRUaW1lIiwiZ2V0SWRlbnRpZmllciIsIm1pbnVzIiwicG9zaXRpb24iLCJwb3NpdGlvblRvcCIsInBvc2l0aW9uTGVmdCIsInBvc2l0aW9uVGltZSIsIm1hdGNoIiwibWF0Y2hlcyIsImZyb21Ub3VjaCIsInRvdWNoIiwicGFnZVgiLCJwYWdlWSIsImZyb21Nb3VzZUV2ZW50IiwibW91c2VFdmVudCIsIkRhdGUiLCJub3ciXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQUVBOzs7ZUFBcUJBOzs7QUFBTixNQUFNQTtJQUNuQixZQUFZQyxHQUFHLEVBQUVDLElBQUksRUFBRUMsSUFBSSxFQUFFQyxVQUFVLENBQUU7UUFDdkMsSUFBSSxDQUFDSCxHQUFHLEdBQUdBO1FBQ1gsSUFBSSxDQUFDQyxJQUFJLEdBQUdBO1FBQ1osSUFBSSxDQUFDQyxJQUFJLEdBQUdBO1FBQ1osSUFBSSxDQUFDQyxVQUFVLEdBQUdBO0lBQ3BCO0lBRUFDLFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQ0osR0FBRztJQUNqQjtJQUVBSyxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUNKLElBQUk7SUFDbEI7SUFFQUssVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDSixJQUFJO0lBQ2xCO0lBRUFLLGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDSixVQUFVO0lBQ3hCO0lBRUFLLE1BQU1DLFFBQVEsRUFBRTtRQUNkLE1BQU1DLGNBQWNELFNBQVNMLE1BQU0sSUFDN0JPLGVBQWVGLFNBQVNKLE9BQU8sSUFDL0JPLGVBQWVILFNBQVNILE9BQU8sSUFDL0JOLE1BQU0sSUFBSSxDQUFDQSxHQUFHLEdBQUdVLGFBQ2pCVCxPQUFPLElBQUksQ0FBQ0EsSUFBSSxHQUFHVSxjQUNuQlQsT0FBTyxJQUFJLENBQUNBLElBQUksR0FBR1UsY0FDbkJULGFBQWEsSUFBSSxDQUFDQSxVQUFVO1FBRWxDTSxXQUFXLElBQUlWLFNBQVNDLEtBQUtDLE1BQU1DLE1BQU1DLGFBQWEsR0FBRztRQUV6RCxPQUFPTTtJQUNUO0lBRUFJLE1BQU1KLFFBQVEsRUFBRTtRQUNkLE1BQU1OLGFBQWFNLFNBQVNGLGFBQWEsSUFDbkNPLFVBQVcsSUFBSSxDQUFDWCxVQUFVLEtBQUtBO1FBRXJDLE9BQU9XO0lBQ1Q7SUFFQSxPQUFPQyxVQUFVQyxLQUFLLEVBQUU7UUFDdEIsTUFBTSxFQUFFQyxLQUFLLEVBQUVDLEtBQUssRUFBRWYsVUFBVSxFQUFFLEdBQUdhLE9BQy9CaEIsTUFBTWtCLE9BQ05qQixPQUFPZ0IsT0FDUGYsT0FBT0ksV0FDUEcsV0FBVyxJQUFJVixTQUFTQyxLQUFLQyxNQUFNQyxNQUFNQztRQUUvQyxPQUFPTTtJQUNUO0lBRUEsT0FBT1UsZUFBZUMsVUFBVSxFQUFFO1FBQ2hDLE1BQU0sRUFBRUgsS0FBSyxFQUFFQyxLQUFLLEVBQUUsR0FBR0UsWUFDbkJwQixNQUFNa0IsT0FDTmpCLE9BQU9nQixPQUNQZixPQUFPSSxXQUNQSCxhQUFhLE1BQ2JNLFdBQVcsSUFBSVYsU0FBU0MsS0FBS0MsTUFBTUMsTUFBTUM7UUFFL0MsT0FBT007SUFDVDtBQUNGO0FBRUEsU0FBU0g7SUFDUCxNQUFNSixPQUFPbUIsS0FBS0MsR0FBRyxJQUFLLEdBQUc7SUFFN0IsT0FBT3BCO0FBQ1QifQ==
|
package/lib/preamble.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
const _easy = require("easy");
|
|
6
|
+
Object.assign(globalThis, {
|
|
7
|
+
React: _easy.React
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wcmVhbWJsZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgUmVhY3QgfSBmcm9tIFwiZWFzeVwiO1xuXG5PYmplY3QuYXNzaWduKGdsb2JhbFRoaXMsIHtcbiAgUmVhY3Rcbn0pO1xuIl0sIm5hbWVzIjpbIk9iamVjdCIsImFzc2lnbiIsImdsb2JhbFRoaXMiLCJSZWFjdCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7c0JBRXNCO0FBRXRCQSxPQUFPQyxNQUFNLENBQUNDLFlBQVk7SUFDeEJDLE9BQUFBLFdBQUs7QUFDUCJ9
|
package/lib/selectors.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get DIVS_SELECTOR () {
|
|
13
|
+
return DIVS_SELECTOR;
|
|
14
|
+
},
|
|
15
|
+
get DIV_SELECTOR () {
|
|
16
|
+
return DIV_SELECTOR;
|
|
17
|
+
},
|
|
18
|
+
get LOADING_DIV_SELECTOR () {
|
|
19
|
+
return LOADING_DIV_SELECTOR;
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
const DIV_SELECTOR = "div";
|
|
23
|
+
const DIVS_SELECTOR = "body > div:not(.loading)"; ///
|
|
24
|
+
const LOADING_DIV_SELECTOR = "body > div.loading";
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zZWxlY3RvcnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBjb25zdCBESVZfU0VMRUNUT1IgPSBcImRpdlwiO1xuZXhwb3J0IGNvbnN0IERJVlNfU0VMRUNUT1IgPSBcImJvZHkgPiBkaXY6bm90KC5sb2FkaW5nKVwiOyAvLy9cbmV4cG9ydCBjb25zdCBMT0FESU5HX0RJVl9TRUxFQ1RPUiA9IFwiYm9keSA+IGRpdi5sb2FkaW5nXCI7XG4iXSwibmFtZXMiOlsiRElWU19TRUxFQ1RPUiIsIkRJVl9TRUxFQ1RPUiIsIkxPQURJTkdfRElWX1NFTEVDVE9SIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFHYUE7ZUFBQUE7O1FBREFDO2VBQUFBOztRQUVBQztlQUFBQTs7O0FBRk4sTUFBTUQsZUFBZTtBQUNyQixNQUFNRCxnQkFBZ0IsNEJBQTRCLEdBQUc7QUFDckQsTUFBTUUsdUJBQXVCIn0=
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get filterPositions () {
|
|
13
|
+
return filterPositions;
|
|
14
|
+
},
|
|
15
|
+
get matchPositions () {
|
|
16
|
+
return matchPositions;
|
|
17
|
+
},
|
|
18
|
+
get positionsFromMouseEvent () {
|
|
19
|
+
return positionsFromMouseEvent;
|
|
20
|
+
},
|
|
21
|
+
get positionsFromTouchEvent () {
|
|
22
|
+
return positionsFromTouchEvent;
|
|
23
|
+
},
|
|
24
|
+
get sortPositions () {
|
|
25
|
+
return sortPositions;
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
const _necessary = require("necessary");
|
|
29
|
+
const _position = /*#__PURE__*/ _interop_require_default(require("../position"));
|
|
30
|
+
function _interop_require_default(obj) {
|
|
31
|
+
return obj && obj.__esModule ? obj : {
|
|
32
|
+
default: obj
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
const { clear, filter } = _necessary.arrayUtilities;
|
|
36
|
+
function sortPositions(positionsA, positionsB) {
|
|
37
|
+
const positionAMap = positionsA.reduce((positionAMap, positionA)=>{
|
|
38
|
+
const identifier = positionA.getIdentifier();
|
|
39
|
+
positionAMap[identifier] = positionA;
|
|
40
|
+
return positionAMap;
|
|
41
|
+
}, {});
|
|
42
|
+
clear(positionsA);
|
|
43
|
+
positionsB.forEach((positionB)=>{
|
|
44
|
+
const identifier = positionB.getIdentifier(), positionA = positionAMap[identifier];
|
|
45
|
+
positionsA.push(positionA);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
function matchPositions(positionsA, positionsB) {
|
|
49
|
+
let positionsMatch = false;
|
|
50
|
+
const positionsALength = positionsA.length, positionsBLength = positionsB.length;
|
|
51
|
+
if (positionsALength === positionsBLength) {
|
|
52
|
+
const identifiersA = identifiersFromPositions(positionsA), identifiersB = identifiersFromPositions(positionsB);
|
|
53
|
+
identifiersA.sort();
|
|
54
|
+
identifiersB.sort();
|
|
55
|
+
const identifiersMatch = identifiersA.every((identifierA, index)=>{
|
|
56
|
+
const identifierB = identifiersB[index];
|
|
57
|
+
if (identifierA === identifierB) {
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
positionsMatch = identifiersMatch; ///
|
|
62
|
+
}
|
|
63
|
+
return positionsMatch;
|
|
64
|
+
}
|
|
65
|
+
function filterPositions(positionsA, positionsB) {
|
|
66
|
+
filter(positionsA, (positionA)=>{
|
|
67
|
+
const matches = positionsB.some((positionB)=>{
|
|
68
|
+
const matches = positionA.match(positionB);
|
|
69
|
+
if (matches) {
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
if (!matches) {
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
function positionsFromMouseEvent(mouseEvent) {
|
|
79
|
+
const position = _position.default.fromMouseEvent(mouseEvent), positions = [
|
|
80
|
+
position
|
|
81
|
+
];
|
|
82
|
+
return positions;
|
|
83
|
+
}
|
|
84
|
+
function positionsFromTouchEvent(touchEvent, changed = true) {
|
|
85
|
+
let touchesNodeList;
|
|
86
|
+
if (changed) {
|
|
87
|
+
({ changedTouches: touchesNodeList } = touchEvent);
|
|
88
|
+
} else {
|
|
89
|
+
({ touches: touchesNodeList } = touchEvent);
|
|
90
|
+
}
|
|
91
|
+
const touches = [
|
|
92
|
+
...touchesNodeList
|
|
93
|
+
], positions = touches.map((touch)=>{
|
|
94
|
+
const position = _position.default.fromTouch(touch);
|
|
95
|
+
return position;
|
|
96
|
+
});
|
|
97
|
+
compressPositions(positions);
|
|
98
|
+
return positions;
|
|
99
|
+
}
|
|
100
|
+
function compressPositions(positions) {
|
|
101
|
+
const positionMap = positions.reduce((positionMap, position)=>{
|
|
102
|
+
const identifier = position.getIdentifier();
|
|
103
|
+
positionMap[identifier] = position;
|
|
104
|
+
return positionMap;
|
|
105
|
+
}, {});
|
|
106
|
+
positions = Object.values(positionMap);
|
|
107
|
+
return positions;
|
|
108
|
+
}
|
|
109
|
+
function identifiersFromPositions(positions) {
|
|
110
|
+
const identifiers = positions.map((position)=>{
|
|
111
|
+
const identifier = position.getIdentifier();
|
|
112
|
+
return identifier;
|
|
113
|
+
});
|
|
114
|
+
return identifiers;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcG9zaXRpb25zLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IFBvc2l0aW9uIGZyb20gXCIuLi9wb3NpdGlvblwiO1xuXG5jb25zdCB7IGNsZWFyLCBmaWx0ZXIgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgZnVuY3Rpb24gc29ydFBvc2l0aW9ucyhwb3NpdGlvbnNBLCBwb3NpdGlvbnNCKSB7XG4gIGNvbnN0IHBvc2l0aW9uQU1hcCA9IHBvc2l0aW9uc0EucmVkdWNlKChwb3NpdGlvbkFNYXAsIHBvc2l0aW9uQSkgPT4ge1xuICAgIGNvbnN0IGlkZW50aWZpZXIgPSBwb3NpdGlvbkEuZ2V0SWRlbnRpZmllcigpO1xuXG4gICAgcG9zaXRpb25BTWFwW2lkZW50aWZpZXJdID0gcG9zaXRpb25BO1xuXG4gICAgcmV0dXJuIHBvc2l0aW9uQU1hcDtcbiAgfSwge30pO1xuXG4gIGNsZWFyKHBvc2l0aW9uc0EpO1xuXG4gIHBvc2l0aW9uc0IuZm9yRWFjaCgocG9zaXRpb25CKSA9PiB7XG4gICAgY29uc3QgaWRlbnRpZmllciA9IHBvc2l0aW9uQi5nZXRJZGVudGlmaWVyKCksXG4gICAgICAgICAgcG9zaXRpb25BID0gcG9zaXRpb25BTWFwW2lkZW50aWZpZXJdO1xuXG4gICAgcG9zaXRpb25zQS5wdXNoKHBvc2l0aW9uQSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2hQb3NpdGlvbnMocG9zaXRpb25zQSwgcG9zaXRpb25zQikge1xuICBsZXQgcG9zaXRpb25zTWF0Y2ggPSBmYWxzZTtcblxuICBjb25zdCBwb3NpdGlvbnNBTGVuZ3RoID0gcG9zaXRpb25zQS5sZW5ndGgsXG4gICAgICAgIHBvc2l0aW9uc0JMZW5ndGggPSBwb3NpdGlvbnNCLmxlbmd0aDtcblxuICBpZiAocG9zaXRpb25zQUxlbmd0aCA9PT0gcG9zaXRpb25zQkxlbmd0aCkge1xuICAgIGNvbnN0IGlkZW50aWZpZXJzQSA9IGlkZW50aWZpZXJzRnJvbVBvc2l0aW9ucyhwb3NpdGlvbnNBKSxcbiAgICAgICAgICBpZGVudGlmaWVyc0IgPSBpZGVudGlmaWVyc0Zyb21Qb3NpdGlvbnMocG9zaXRpb25zQik7XG5cbiAgICBpZGVudGlmaWVyc0Euc29ydCgpO1xuXG4gICAgaWRlbnRpZmllcnNCLnNvcnQoKTtcblxuICAgIGNvbnN0IGlkZW50aWZpZXJzTWF0Y2ggPSBpZGVudGlmaWVyc0EuZXZlcnkoKGlkZW50aWZpZXJBLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgaWRlbnRpZmllckIgPSBpZGVudGlmaWVyc0JbaW5kZXhdO1xuXG4gICAgICBpZiAoaWRlbnRpZmllckEgPT09IGlkZW50aWZpZXJCKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcG9zaXRpb25zTWF0Y2ggPSBpZGVudGlmaWVyc01hdGNoOyAgLy8vXG4gIH1cblxuICByZXR1cm4gcG9zaXRpb25zTWF0Y2g7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJQb3NpdGlvbnMocG9zaXRpb25zQSwgcG9zaXRpb25zQikge1xuICBmaWx0ZXIocG9zaXRpb25zQSwgKHBvc2l0aW9uQSkgPT4ge1xuICAgIGNvbnN0IG1hdGNoZXMgPSBwb3NpdGlvbnNCLnNvbWUoKHBvc2l0aW9uQikgPT4ge1xuICAgICAgY29uc3QgbWF0Y2hlcyA9IHBvc2l0aW9uQS5tYXRjaChwb3NpdGlvbkIpO1xuXG4gICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICghbWF0Y2hlcykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvc2l0aW9uc0Zyb21Nb3VzZUV2ZW50KG1vdXNlRXZlbnQpIHtcbiAgY29uc3QgcG9zaXRpb24gPSBQb3NpdGlvbi5mcm9tTW91c2VFdmVudChtb3VzZUV2ZW50KSxcbiAgICAgICAgcG9zaXRpb25zID0gW1xuICAgICAgICAgIHBvc2l0aW9uXG4gICAgICAgIF07XG5cbiAgcmV0dXJuIHBvc2l0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvc2l0aW9uc0Zyb21Ub3VjaEV2ZW50KHRvdWNoRXZlbnQsIGNoYW5nZWQgPSB0cnVlKSB7XG4gIGxldCB0b3VjaGVzTm9kZUxpc3Q7XG5cbiAgaWYgKGNoYW5nZWQpIHtcbiAgICAoeyBjaGFuZ2VkVG91Y2hlczogdG91Y2hlc05vZGVMaXN0IH0gPSB0b3VjaEV2ZW50KTtcbiAgfSBlbHNlIHtcbiAgICAoeyB0b3VjaGVzOiB0b3VjaGVzTm9kZUxpc3QgfSA9IHRvdWNoRXZlbnQpO1xuICB9XG5cbiAgY29uc3QgdG91Y2hlcyA9IFtcbiAgICAgICAgICAuLi50b3VjaGVzTm9kZUxpc3RcbiAgICAgICAgXSxcbiAgICAgICAgcG9zaXRpb25zID0gdG91Y2hlcy5tYXAoKHRvdWNoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcG9zaXRpb24gPSBQb3NpdGlvbi5mcm9tVG91Y2godG91Y2gpO1xuXG4gICAgICAgICAgcmV0dXJuIHBvc2l0aW9uO1xuICAgICAgICB9KTtcblxuICBjb21wcmVzc1Bvc2l0aW9ucyhwb3NpdGlvbnMpO1xuXG4gIHJldHVybiBwb3NpdGlvbnM7XG59XG5cbmZ1bmN0aW9uIGNvbXByZXNzUG9zaXRpb25zKHBvc2l0aW9ucykge1xuICBjb25zdCBwb3NpdGlvbk1hcCA9IHBvc2l0aW9ucy5yZWR1Y2UoKHBvc2l0aW9uTWFwLCBwb3NpdGlvbikgPT4ge1xuICAgIGNvbnN0IGlkZW50aWZpZXIgPSBwb3NpdGlvbi5nZXRJZGVudGlmaWVyKCk7XG5cbiAgICBwb3NpdGlvbk1hcFtpZGVudGlmaWVyXSA9IHBvc2l0aW9uO1xuXG4gICAgcmV0dXJuIHBvc2l0aW9uTWFwO1xuICB9LCB7fSk7XG5cbiAgcG9zaXRpb25zID0gT2JqZWN0LnZhbHVlcyhwb3NpdGlvbk1hcCk7XG5cbiAgcmV0dXJuIHBvc2l0aW9ucztcbn1cblxuZnVuY3Rpb24gaWRlbnRpZmllcnNGcm9tUG9zaXRpb25zKHBvc2l0aW9ucykge1xuICBjb25zdCBpZGVudGlmaWVycyA9IHBvc2l0aW9ucy5tYXAoKHBvc2l0aW9uKSA9PiB7XG4gICAgY29uc3QgaWRlbnRpZmllciA9IHBvc2l0aW9uLmdldElkZW50aWZpZXIoKTtcblxuICAgIHJldHVybiBpZGVudGlmaWVyO1xuICB9KTtcblxuICByZXR1cm4gaWRlbnRpZmllcnM7XG59XG5cbiJdLCJuYW1lcyI6WyJmaWx0ZXJQb3NpdGlvbnMiLCJtYXRjaFBvc2l0aW9ucyIsInBvc2l0aW9uc0Zyb21Nb3VzZUV2ZW50IiwicG9zaXRpb25zRnJvbVRvdWNoRXZlbnQiLCJzb3J0UG9zaXRpb25zIiwiY2xlYXIiLCJmaWx0ZXIiLCJhcnJheVV0aWxpdGllcyIsInBvc2l0aW9uc0EiLCJwb3NpdGlvbnNCIiwicG9zaXRpb25BTWFwIiwicmVkdWNlIiwicG9zaXRpb25BIiwiaWRlbnRpZmllciIsImdldElkZW50aWZpZXIiLCJmb3JFYWNoIiwicG9zaXRpb25CIiwicHVzaCIsInBvc2l0aW9uc01hdGNoIiwicG9zaXRpb25zQUxlbmd0aCIsImxlbmd0aCIsInBvc2l0aW9uc0JMZW5ndGgiLCJpZGVudGlmaWVyc0EiLCJpZGVudGlmaWVyc0Zyb21Qb3NpdGlvbnMiLCJpZGVudGlmaWVyc0IiLCJzb3J0IiwiaWRlbnRpZmllcnNNYXRjaCIsImV2ZXJ5IiwiaWRlbnRpZmllckEiLCJpbmRleCIsImlkZW50aWZpZXJCIiwibWF0Y2hlcyIsInNvbWUiLCJtYXRjaCIsIm1vdXNlRXZlbnQiLCJwb3NpdGlvbiIsIlBvc2l0aW9uIiwiZnJvbU1vdXNlRXZlbnQiLCJwb3NpdGlvbnMiLCJ0b3VjaEV2ZW50IiwiY2hhbmdlZCIsInRvdWNoZXNOb2RlTGlzdCIsImNoYW5nZWRUb3VjaGVzIiwidG91Y2hlcyIsIm1hcCIsInRvdWNoIiwiZnJvbVRvdWNoIiwiY29tcHJlc3NQb3NpdGlvbnMiLCJwb3NpdGlvbk1hcCIsIk9iamVjdCIsInZhbHVlcyIsImlkZW50aWZpZXJzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUF1RGdCQTtlQUFBQTs7UUE1QkFDO2VBQUFBOztRQTRDQUM7ZUFBQUE7O1FBU0FDO2VBQUFBOztRQXhFQUM7ZUFBQUE7OzsyQkFOZTtpRUFFVjs7Ozs7O0FBRXJCLE1BQU0sRUFBRUMsS0FBSyxFQUFFQyxNQUFNLEVBQUUsR0FBR0MseUJBQWM7QUFFakMsU0FBU0gsY0FBY0ksVUFBVSxFQUFFQyxVQUFVO0lBQ2xELE1BQU1DLGVBQWVGLFdBQVdHLE1BQU0sQ0FBQyxDQUFDRCxjQUFjRTtRQUNwRCxNQUFNQyxhQUFhRCxVQUFVRSxhQUFhO1FBRTFDSixZQUFZLENBQUNHLFdBQVcsR0FBR0Q7UUFFM0IsT0FBT0Y7SUFDVCxHQUFHLENBQUM7SUFFSkwsTUFBTUc7SUFFTkMsV0FBV00sT0FBTyxDQUFDLENBQUNDO1FBQ2xCLE1BQU1ILGFBQWFHLFVBQVVGLGFBQWEsSUFDcENGLFlBQVlGLFlBQVksQ0FBQ0csV0FBVztRQUUxQ0wsV0FBV1MsSUFBSSxDQUFDTDtJQUNsQjtBQUNGO0FBRU8sU0FBU1gsZUFBZU8sVUFBVSxFQUFFQyxVQUFVO0lBQ25ELElBQUlTLGlCQUFpQjtJQUVyQixNQUFNQyxtQkFBbUJYLFdBQVdZLE1BQU0sRUFDcENDLG1CQUFtQlosV0FBV1csTUFBTTtJQUUxQyxJQUFJRCxxQkFBcUJFLGtCQUFrQjtRQUN6QyxNQUFNQyxlQUFlQyx5QkFBeUJmLGFBQ3hDZ0IsZUFBZUQseUJBQXlCZDtRQUU5Q2EsYUFBYUcsSUFBSTtRQUVqQkQsYUFBYUMsSUFBSTtRQUVqQixNQUFNQyxtQkFBbUJKLGFBQWFLLEtBQUssQ0FBQyxDQUFDQyxhQUFhQztZQUN4RCxNQUFNQyxjQUFjTixZQUFZLENBQUNLLE1BQU07WUFFdkMsSUFBSUQsZ0JBQWdCRSxhQUFhO2dCQUMvQixPQUFPO1lBQ1Q7UUFDRjtRQUVBWixpQkFBaUJRLGtCQUFtQixHQUFHO0lBQ3pDO0lBRUEsT0FBT1I7QUFDVDtBQUVPLFNBQVNsQixnQkFBZ0JRLFVBQVUsRUFBRUMsVUFBVTtJQUNwREgsT0FBT0UsWUFBWSxDQUFDSTtRQUNsQixNQUFNbUIsVUFBVXRCLFdBQVd1QixJQUFJLENBQUMsQ0FBQ2hCO1lBQy9CLE1BQU1lLFVBQVVuQixVQUFVcUIsS0FBSyxDQUFDakI7WUFFaEMsSUFBSWUsU0FBUztnQkFDWCxPQUFPO1lBQ1Q7UUFDRjtRQUVBLElBQUksQ0FBQ0EsU0FBUztZQUNaLE9BQU87UUFDVDtJQUNGO0FBQ0Y7QUFFTyxTQUFTN0Isd0JBQXdCZ0MsVUFBVTtJQUNoRCxNQUFNQyxXQUFXQyxpQkFBUSxDQUFDQyxjQUFjLENBQUNILGFBQ25DSSxZQUFZO1FBQ1ZIO0tBQ0Q7SUFFUCxPQUFPRztBQUNUO0FBRU8sU0FBU25DLHdCQUF3Qm9DLFVBQVUsRUFBRUMsVUFBVSxJQUFJO0lBQ2hFLElBQUlDO0lBRUosSUFBSUQsU0FBUztRQUNWLENBQUEsRUFBRUUsZ0JBQWdCRCxlQUFlLEVBQUUsR0FBR0YsVUFBUztJQUNsRCxPQUFPO1FBQ0osQ0FBQSxFQUFFSSxTQUFTRixlQUFlLEVBQUUsR0FBR0YsVUFBUztJQUMzQztJQUVBLE1BQU1JLFVBQVU7V0FDTEY7S0FDSixFQUNESCxZQUFZSyxRQUFRQyxHQUFHLENBQUMsQ0FBQ0M7UUFDdkIsTUFBTVYsV0FBV0MsaUJBQVEsQ0FBQ1UsU0FBUyxDQUFDRDtRQUVwQyxPQUFPVjtJQUNUO0lBRU5ZLGtCQUFrQlQ7SUFFbEIsT0FBT0E7QUFDVDtBQUVBLFNBQVNTLGtCQUFrQlQsU0FBUztJQUNsQyxNQUFNVSxjQUFjVixVQUFVM0IsTUFBTSxDQUFDLENBQUNxQyxhQUFhYjtRQUNqRCxNQUFNdEIsYUFBYXNCLFNBQVNyQixhQUFhO1FBRXpDa0MsV0FBVyxDQUFDbkMsV0FBVyxHQUFHc0I7UUFFMUIsT0FBT2E7SUFDVCxHQUFHLENBQUM7SUFFSlYsWUFBWVcsT0FBT0MsTUFBTSxDQUFDRjtJQUUxQixPQUFPVjtBQUNUO0FBRUEsU0FBU2YseUJBQXlCZSxTQUFTO0lBQ3pDLE1BQU1hLGNBQWNiLFVBQVVNLEdBQUcsQ0FBQyxDQUFDVDtRQUNqQyxNQUFNdEIsYUFBYXNCLFNBQVNyQixhQUFhO1FBRXpDLE9BQU9EO0lBQ1Q7SUFFQSxPQUFPc0M7QUFDVCJ9
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "easy-gestures",
|
|
3
3
|
"author": "James Smith",
|
|
4
|
-
"version": "2.0.
|
|
4
|
+
"version": "2.0.49",
|
|
5
5
|
"license": "MIT, Anti-996",
|
|
6
6
|
"homepage": "https://github.com/djalbat/easy-gestures",
|
|
7
7
|
"description": "Touch gestures for web applications.",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"esbuild": "0.11.14",
|
|
20
20
|
"express": "^4.17.1",
|
|
21
21
|
"lively-cli": "^3.0.3",
|
|
22
|
-
"watchful-cli": "^1.7.
|
|
22
|
+
"watchful-cli": "^1.7.96"
|
|
23
23
|
},
|
|
24
24
|
"scripts": {
|
|
25
25
|
"start": "node ./bin/main.js",
|
package/src/mixins/touch.js
CHANGED
|
@@ -399,14 +399,16 @@ function startHandler(event, element, positionsFromEvent) {
|
|
|
399
399
|
if (startingPositionsLength === 1) {
|
|
400
400
|
this.dragStart(event, element);
|
|
401
401
|
|
|
402
|
-
|
|
403
|
-
pressInterval = null;
|
|
402
|
+
const interval = setTimeout(() => {
|
|
403
|
+
const pressInterval = null;
|
|
404
404
|
|
|
405
405
|
this.setPressSInterval(pressInterval);
|
|
406
406
|
|
|
407
407
|
this.press(event, element);
|
|
408
408
|
}, PRESS_DELAY);
|
|
409
409
|
|
|
410
|
+
const pressInterval = interval; ///
|
|
411
|
+
|
|
410
412
|
this.setPressSInterval(pressInterval);
|
|
411
413
|
}
|
|
412
414
|
|
|
@@ -539,7 +541,7 @@ function tap(event, element) {
|
|
|
539
541
|
return;
|
|
540
542
|
}
|
|
541
543
|
|
|
542
|
-
|
|
544
|
+
const interval = setTimeout(() => {
|
|
543
545
|
tapInterval = null;
|
|
544
546
|
|
|
545
547
|
this.setTapInterval(tapInterval);
|
|
@@ -547,6 +549,8 @@ function tap(event, element) {
|
|
|
547
549
|
this.singleTap(event, element, top, left);
|
|
548
550
|
}, TAP_DELAY);
|
|
549
551
|
|
|
552
|
+
tapInterval = interval; ///
|
|
553
|
+
|
|
550
554
|
this.setTapInterval(tapInterval);
|
|
551
555
|
}
|
|
552
556
|
|