core-graphics
Version:
A core library for creating shape-based graphic editors
79 lines (66 loc) • 3.04 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = inputStateReducer;
var _input = require('../events/input');
var _icepick = require('icepick');
var i = _interopRequireWildcard(_icepick);
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function inputStateReducer(currentState, ev) {
if (!(0, _input.isEditorInputEvent)(ev)) {
return currentState;
} else {
if ((0, _input.isMouseMoveEvent)(ev)) {
var _ev$payload = ev.payload;
var x = _ev$payload.x;
var y = _ev$payload.y;
return i.merge(currentState, { mouse: { x: x, y: y, inside: true } });
}
if ((0, _input.isMouseDownEvent)(ev)) {
var _ev$payload2 = ev.payload;
var _x = _ev$payload2.x;
var _y = _ev$payload2.y;
return i.merge(currentState, { mouse: { x: _x, y: _y, lastDownX: _x, lastDownY: _y, inside: true, down: true } });
}
if ((0, _input.isMouseUpEvent)(ev)) {
var _ev$payload3 = ev.payload;
var _x2 = _ev$payload3.x;
var _y2 = _ev$payload3.y;
return i.merge(currentState, { mouse: { x: _x2, y: _y2, inside: true, down: false } });
}
if ((0, _input.isMouseLeaveEvent)(ev)) {
var _ev$payload4 = ev.payload;
var _x3 = _ev$payload4.x;
var _y3 = _ev$payload4.y;
return i.chain(currentState).merge({ mouse: { x: _x3, y: _y3, inside: false, down: false } }).assoc('modifierKeys', {}).value();
}
if ((0, _input.isMouseEnterEvent)(ev)) {
var _ev$payload5 = ev.payload;
var _x4 = _ev$payload5.x;
var _y4 = _ev$payload5.y;
return i.chain(currentState).merge({ mouse: { x: _x4, y: _y4, inside: true } }).assoc('modifierKeys', {}).value();
}
if ((0, _input.isShapeMouseDownEvent)(ev)) {
return i.assocIn(currentState, ['mouse', 'down'], true);
}
if ((0, _input.isShapeMouseUpEvent)(ev)) {
return i.assocIn(currentState, ['mouse', 'down'], false);
}
if ((0, _input.isShapeResizeHandleMouseDownEvent)(ev)) {
return i.assocIn(currentState, ['mouse', 'down'], true);
}
if ((0, _input.isShapeResizeHandleMouseUpEvent)(ev)) {
return i.assocIn(currentState, ['mouse', 'down'], false);
}
if ((0, _input.isModKeyDownEvent)(ev)) {
var key = ev.payload.key;
return i.assocIn(currentState, ['modifierKeys', key], true);
}
if ((0, _input.isModKeyUpEvent)(ev)) {
var _key = ev.payload.key;
return i.assocIn(currentState, ['modifierKeys', _key], false);
}
return currentState;
}
}