core-graphics
Version:
A core library for creating shape-based graphic editors
95 lines (58 loc) • 2.96 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = editorStateReducer;
var _input = require('./input');
var _input2 = _interopRequireDefault(_input);
var _mode = require('./mode');
var _mode2 = _interopRequireDefault(_mode);
var _contextMenu = require('./context-menu');
var _contextMenu2 = _interopRequireDefault(_contextMenu);
var _grid = require('./grid');
var _grid2 = _interopRequireDefault(_grid);
var _graphicalContext = require('./graphical-context');
var _graphicalContext2 = _interopRequireDefault(_graphicalContext);
var _draw = require('./draw');
var _draw2 = _interopRequireDefault(_draw);
var _move = require('./move');
var _move2 = _interopRequireDefault(_move);
var _resize = require('./resize');
var _resize2 = _interopRequireDefault(_resize);
var _select = require('./select');
var _select2 = _interopRequireDefault(_select);
var _moveViewport = require('./move-viewport');
var _moveViewport2 = _interopRequireDefault(_moveViewport);
var _rubberBandSelect = require('./rubber-band-select');
var _rubberBandSelect2 = _interopRequireDefault(_rubberBandSelect);
var _shapes = require('./shapes');
var _shapes2 = _interopRequireDefault(_shapes);
var _preview = require('./preview');
var _preview2 = _interopRequireDefault(_preview);
var _history = require('./history');
var _history2 = _interopRequireDefault(_history);
var _cursor = require('./cursor');
var _cursor2 = _interopRequireDefault(_cursor);
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 _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// order important here
// TODO return on independant portions if changed?
var REDUCERS = [_input2.default, _grid2.default, _graphicalContext2.default, _shapes2.default, _select2.default, _moveViewport2.default, _rubberBandSelect2.default, _move2.default, _resize2.default, _history2.default, _contextMenu2.default, _draw2.default, _preview2.default, _mode2.default, _cursor2.default];
function editorStateReducer(currentState, ev) {
var persistedScene = currentState.persistedScene;
var resetState = i.chain(currentState).assoc('scene', persistedScene).assoc('previewedHistoryEvents', []).assoc('editorActionsQueue', []).value();
return REDUCERS.reduce(function (resultState, fn) {
return fn(resultState, ev);
}, resetState);
// return REDUCERS.reduce(
// (resultState, fn) => {
// const res = fn(resultState, ev);
// if (res.mode !== resultState.mode) {
// console.log(fn.name);
// }
// return res;
// }, resetState
// );
}