@gorpacrate/core-graphics
Version:
A core library for creating shape-based graphic editors
47 lines • 1.72 kB
JavaScript
;
exports.__esModule = true;
var i = require("icepick");
var declarations_1 = require("../../declarations");
var data_1 = require("../../utils/data");
var mode_1 = require("../events/mode");
function modeStateReducer(currentState, ev) {
var set = modeSetReducer(currentState, ev);
return modePostReducer(set);
}
exports["default"] = modeStateReducer;
function modeSetReducer(currentState, ev) {
if (mode_1.isEditorModeEvent(ev) && mode_1.isSetModeEvent(ev)) {
var mode = ev.payload.mode;
return i.chain(currentState)
.assoc('mode', mode)
.assocIn(['contextMenu', 'open'], false)
.value();
}
return currentState;
}
function modePostReducer(currentState) {
var mode = currentState.mode;
// if (isSubSelectedMode(mode)) {
// const presentShapes = currentState.scene.shapesOrder;
// const { id } = mode.payload;
// if (!hasInArr(id, presentShapes)) {
// return i.assoc(currentState, 'mode', modeSelect());
// } else {
// return currentState;
// }
// }
if (declarations_1.isSelectedMode(mode)) {
var presentShapes_1 = currentState.scene.shapesOrder;
var ids = mode.payload.ids;
var nextSelected = i.filter(function (id) { return data_1.hasInArr(id, presentShapes_1); }, ids);
if (nextSelected.length === 0) {
return i.assoc(currentState, 'mode', declarations_1.modeSelect());
}
if (nextSelected.length !== ids.length) {
return i.assoc(currentState, 'mode', declarations_1.modeSelected(nextSelected));
}
return currentState;
}
return currentState;
}
//# sourceMappingURL=mode.js.map