UNPKG

wonder.js

Version:
124 lines (110 loc) 5.11 kB
'use strict'; 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 */