wonder.js
Version:
124 lines (110 loc) • 5.11 kB
JavaScript
;
var Caml_array = require("bs-platform/lib/js/caml_array.js");
var TouchEventService$Wonderjs = require("../../../../record/main/event/TouchEventService.js");
var ArrayService$WonderCommonlib = require("wonder-commonlib/lib/js/src/ArrayService.js");
var HandlePointDomEventMainService$Wonderjs = require("./HandlePointDomEventMainService.js");
var MutableSparseMapService$WonderCommonlib = require("wonder-commonlib/lib/js/src/MutableSparseMapService.js");
function _getTouchData(touchDomEvent) {
var changedTouches = touchDomEvent.changedTouches;
var touchDataJsObj = changedTouches[0];
return /* record */[
/* clientX */touchDataJsObj.clientX,
/* clientY */touchDataJsObj.clientY,
/* pageX */touchDataJsObj.pageX,
/* pageY */touchDataJsObj.pageY,
/* identifier */touchDataJsObj.identifier,
/* screenX */touchDataJsObj.screenX,
/* screenY */touchDataJsObj.screenY,
/* radiusX */touchDataJsObj.radiusX,
/* radiusY */touchDataJsObj.radiusY,
/* rotationAngle */touchDataJsObj.rotationAngle,
/* force */touchDataJsObj.force
];
}
function _getLocation(touchDomEvent, state) {
var match = _getTouchData(touchDomEvent);
return /* tuple */[
match[/* pageX */2],
match[/* pageY */3]
];
}
function _getLocationInView(touchDomEvent, state) {
return HandlePointDomEventMainService$Wonderjs.getLocationInView(touchDomEvent, _getLocation, state);
}
function _getMovementDelta(touchDomEvent, state) {
return HandlePointDomEventMainService$Wonderjs.getMovementDelta(_getLocation(touchDomEvent, state), TouchEventService$Wonderjs.getLastXY(state[/* eventRecord */43]), state);
}
function _convertTouchDomEventToTouchEvent(eventName, touchDomEvent, state) {
return /* record */[
/* name */eventName,
/* location */_getLocation(touchDomEvent, state),
/* locationInView */HandlePointDomEventMainService$Wonderjs.getLocationInView(touchDomEvent, _getLocation, state),
/* touchData */_getTouchData(touchDomEvent),
/* movementDelta */_getMovementDelta(touchDomEvent, state),
/* event */touchDomEvent
];
}
function execEventHandle(eventName, touchDomEvent, state) {
var match = MutableSparseMapService$WonderCommonlib.get(eventName, state[/* eventRecord */43][/* touchDomEventDataArrMap */3]);
if (match !== undefined) {
return ArrayService$WonderCommonlib.reduceOneParam((function (state, param) {
return param[/* handleFunc */1](_convertTouchDomEventToTouchEvent(eventName, touchDomEvent, state), state);
}), state, match);
} else {
return state;
}
}
function setLastXY(lastX, lastY, state) {
var newrecord = Caml_array.caml_array_dup(state);
newrecord[/* eventRecord */43] = TouchEventService$Wonderjs.setLastXY(lastX, lastY, state[/* eventRecord */43]);
return newrecord;
}
function setLastXYByLocation(eventName, touchDomEvent, state) {
var match = _convertTouchDomEventToTouchEvent(eventName, touchDomEvent, state);
var $$location = match[/* location */1];
return setLastXY($$location[0], $$location[1], state);
}
function getIsDrag(state) {
return state[/* eventRecord */43][/* touchEventData */8][/* isDrag */2];
}
function setIsDrag(isDrag, state) {
var eventRecord = state[/* eventRecord */43];
var newrecord = Caml_array.caml_array_dup(state);
var init = eventRecord[/* touchEventData */8];
newrecord[/* eventRecord */43] = /* record */[
/* domEventStreamSubscription */eventRecord[/* domEventStreamSubscription */0],
/* mouseDomEventDataArrMap */eventRecord[/* mouseDomEventDataArrMap */1],
/* keyboardDomEventDataArrMap */eventRecord[/* keyboardDomEventDataArrMap */2],
/* touchDomEventDataArrMap */eventRecord[/* touchDomEventDataArrMap */3],
/* customGlobalEventArrMap */eventRecord[/* customGlobalEventArrMap */4],
/* customGameObjectEventArrMap */eventRecord[/* customGameObjectEventArrMap */5],
/* mouseEventData */eventRecord[/* mouseEventData */6],
/* keyboardEventData */eventRecord[/* keyboardEventData */7],
/* touchEventData : record */[
/* lastX */init[/* lastX */0],
/* lastY */init[/* lastY */1],
/* isDrag */isDrag
]
];
return newrecord;
}
function setLastXYWhenTouchMove(eventName, touchDomEvent, state) {
var match = getIsDrag(state);
if (match) {
return state;
} else {
return setLastXYByLocation(eventName, touchDomEvent, state);
}
}
exports._getTouchData = _getTouchData;
exports._getLocation = _getLocation;
exports._getLocationInView = _getLocationInView;
exports._getMovementDelta = _getMovementDelta;
exports._convertTouchDomEventToTouchEvent = _convertTouchDomEventToTouchEvent;
exports.execEventHandle = execEventHandle;
exports.setLastXY = setLastXY;
exports.setLastXYByLocation = setLastXYByLocation;
exports.getIsDrag = getIsDrag;
exports.setIsDrag = setIsDrag;
exports.setLastXYWhenTouchMove = setLastXYWhenTouchMove;
/* HandlePointDomEventMainService-Wonderjs Not a pure module */