UNPKG

@gorpacrate/core-graphics

Version:

A core library for creating shape-based graphic editors

49 lines 2.2 kB
"use strict"; exports.__esModule = true; var i = require("icepick"); var modes_1 = require("../../declarations/modes"); var editor_events_1 = require("../editor-events"); var input_1 = require("../events/input"); function viewportStateReducer(currentState, ev) { var m = movingViewportModeReducer(currentState, ev); return viewportEventsReducer(m, ev); } exports["default"] = viewportStateReducer; function viewportEventsReducer(currentState, ev) { if (editor_events_1.isEditorViewportEvent(ev) && editor_events_1.isSetViewportEvent(ev)) { var value = ev.payload.value; return i.assoc(currentState, 'viewport', value); } return currentState; } function movingViewportModeReducer(currentState, ev) { var mode = currentState.mode, mouse = currentState.mouse; if (input_1.isEditorInputEvent(ev) && modes_1.isMovingViewportMode(mode) && !mode.payload.moving && mouse.down && input_1.isMouseMoveEvent(ev)) { var lastDownX = mouse.lastDownX, lastDownY = mouse.lastDownY; var _a = ev.payload, x = _a.x, y = _a.y; var dx = lastDownX - x; var dy = lastDownY - y; return i.assoc(currentState, 'mode', modes_1.modeMovingViewport({ moving: true, dx: dx, dy: dy })); } if (input_1.isEditorInputEvent(ev) && modes_1.isMovingViewportMode(mode) && mode.payload.moving) { if (input_1.isMouseMoveEvent(ev)) { var lastDownX = mouse.lastDownX, lastDownY = mouse.lastDownY; var _b = ev.payload, x = _b.x, y = _b.y; var dx = lastDownX - x; var dy = lastDownY - y; return i.assoc(currentState, 'mode', modes_1.modeMovingViewport({ moving: true, dx: dx, dy: dy })); } if (input_1.isMouseUpEvent(ev)) { var _c = mode.payload, dx = _c.dx, dy = _c.dy; var _d = currentState.viewport, x = _d.x, y = _d.y; var vx = x + dx; var vy = y + dy; return i.chain(currentState) .assoc('mode', modes_1.modeMovingViewport()) .assoc('viewport', { x: vx, y: vy }) .value(); } } return currentState; } //# sourceMappingURL=move-viewport.js.map