@gorpacrate/core-graphics
Version:
A core library for creating shape-based graphic editors
60 lines • 2.42 kB
JavaScript
"use strict";
exports.__esModule = true;
var i = require("icepick");
var input_1 = require("../events/input");
function inputStateReducer(currentState, ev) {
if (!input_1.isEditorInputEvent(ev)) {
return currentState;
}
else {
if (input_1.isMouseMoveEvent(ev)) {
var _a = ev.payload, x = _a.x, y = _a.y;
return i.merge(currentState, { mouse: { x: x, y: y, inside: true } });
}
if (input_1.isMouseDownEvent(ev)) {
var _b = ev.payload, x = _b.x, y = _b.y;
return i.merge(currentState, { mouse: { x: x, y: y, lastDownX: x, lastDownY: y, inside: true, down: true } });
}
if (input_1.isMouseUpEvent(ev)) {
var _c = ev.payload, x = _c.x, y = _c.y;
return i.merge(currentState, { mouse: { x: x, y: y, inside: true, down: false } });
}
if (input_1.isMouseLeaveEvent(ev)) {
var _d = ev.payload, x = _d.x, y = _d.y;
return (i.chain(currentState)
.merge({ mouse: { x: x, y: y, inside: false, down: false } })
.assoc('modifierKeys', {})
.value());
}
if (input_1.isMouseEnterEvent(ev)) {
var _e = ev.payload, x = _e.x, y = _e.y;
return (i.chain(currentState)
.merge({ mouse: { x: x, y: y, inside: true } })
.assoc('modifierKeys', {})
.value());
}
if (input_1.isShapeMouseDownEvent(ev)) {
return i.assocIn(currentState, ['mouse', 'down'], true);
}
if (input_1.isShapeMouseUpEvent(ev)) {
return i.assocIn(currentState, ['mouse', 'down'], false);
}
if (input_1.isShapeResizeHandleMouseDownEvent(ev)) {
return i.assocIn(currentState, ['mouse', 'down'], true);
}
if (input_1.isShapeResizeHandleMouseUpEvent(ev)) {
return i.assocIn(currentState, ['mouse', 'down'], false);
}
if (input_1.isModKeyDownEvent(ev)) {
var key = ev.payload.key;
return i.assocIn(currentState, ['modifierKeys', key], true);
}
if (input_1.isModKeyUpEvent(ev)) {
var key = ev.payload.key;
return i.assocIn(currentState, ['modifierKeys', key], false);
}
return currentState;
}
}
exports["default"] = inputStateReducer;
//# sourceMappingURL=input.js.map