UNPKG

core-graphics

Version:

A core library for creating shape-based graphic editors

73 lines (60 loc) 2.85 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = viewportStateReducer; var _editorEvents = require('../editor-events'); var _input = require('../events/input'); var _modes = require('../../declarations/modes'); 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 viewportStateReducer(currentState, ev) { var m = movingViewportModeReducer(currentState, ev); return viewportEventsReducer(m, ev); } function viewportEventsReducer(currentState, ev) { if ((0, _editorEvents.isEditorViewportEvent)(ev) && (0, _editorEvents.isSetViewportEvent)(ev)) { var value = ev.payload.value; return i.assoc(currentState, 'viewport', value); } return currentState; } function movingViewportModeReducer(currentState, ev) { var mode = currentState.mode; var mouse = currentState.mouse; if ((0, _input.isEditorInputEvent)(ev) && (0, _modes.isMovingViewportMode)(mode) && !mode.payload.moving && mouse.down && (0, _input.isMouseMoveEvent)(ev)) { var lastDownX = mouse.lastDownX; var lastDownY = mouse.lastDownY; var _ev$payload = ev.payload; var x = _ev$payload.x; var y = _ev$payload.y; var dx = lastDownX - x; var dy = lastDownY - y; return i.assoc(currentState, 'mode', (0, _modes.modeMovingViewport)({ moving: true, dx: dx, dy: dy })); } if ((0, _input.isEditorInputEvent)(ev) && (0, _modes.isMovingViewportMode)(mode) && mode.payload.moving) { if ((0, _input.isMouseMoveEvent)(ev)) { var _lastDownX = mouse.lastDownX; var _lastDownY = mouse.lastDownY; var _ev$payload2 = ev.payload; var _x = _ev$payload2.x; var _y = _ev$payload2.y; var _dx = _lastDownX - _x; var _dy = _lastDownY - _y; return i.assoc(currentState, 'mode', (0, _modes.modeMovingViewport)({ moving: true, dx: _dx, dy: _dy })); } if ((0, _input.isMouseUpEvent)(ev)) { var _mode$payload = mode.payload; var _dx2 = _mode$payload.dx; var _dy2 = _mode$payload.dy; var _currentState$viewpor = currentState.viewport; var _x2 = _currentState$viewpor.x; var _y2 = _currentState$viewpor.y; var vx = _x2 + _dx2; var vy = _y2 + _dy2; return i.chain(currentState).assoc('mode', (0, _modes.modeMovingViewport)()).assoc('viewport', { x: vx, y: vy }).value(); } } return currentState; }