kitchen-simulator
Version:
It is a kitchen simulator (self-contained micro-frontend).
56 lines • 2.32 kB
JavaScript
import { MODE_3D_FIRST_PERSON, MODE_3D_VIEW, SELECT_TOOL_3D_FIRST_PERSON, SELECT_TOOL_3D_VIEW, UPDATE_3D_CEIL_HEIGHT, UPDATE_3D_CEIL_HEIGHT_UNIT } from "../constants";
import { Project } from "../class/export";
import { history } from "../utils/export";
import { convert } from "../utils/convert-units-lite";
export default function (state, action) {
state = state.merge({
sceneHistory: history.historyPush(state.sceneHistory, state.scene)
});
switch (action.type) {
case UPDATE_3D_CEIL_HEIGHT_UNIT:
{
var _state = state,
scene = _state.scene;
var selectedLayer = scene.selectedLayer;
var layer = scene.layers.get(selectedLayer);
var newLayer = layer.merge({
unit: action.value
});
state = state.mergeIn(['scene', 'layers', selectedLayer], newLayer);
return state;
}
case UPDATE_3D_CEIL_HEIGHT:
{
var _state2 = state,
_scene = _state2.scene;
var _selectedLayer = _scene.selectedLayer;
var _layer = _scene.layers.get(_selectedLayer);
var _newLayer = _layer.merge({
ceilHeight: action.value
});
state = state.mergeIn(['scene', 'layers', _selectedLayer], _newLayer);
var items = state.scene.layers.get(state.scene.selectedLayer).items;
var newItems = items.map(function (item) {
if (item.type.includes('Light')) {
var height = item.properties.getIn(['height', '_length']);
var heightUnit = item.properties.getIn(['height', '_unit']);
var newAltitude = action.value - convert(height).from(heightUnit).to('in');
item = item.setIn(['properties', 'altitude', '_length'], convert(newAltitude).from('in').to(_layer.unit));
}
return item;
});
state = state.mergeIn(['scene', 'layers', _selectedLayer, 'items'], newItems);
return state;
}
case SELECT_TOOL_3D_VIEW:
state = Project.rollback(state).updatedState;
state = Project.setMode(state, MODE_3D_VIEW).updatedState;
return state;
case SELECT_TOOL_3D_FIRST_PERSON:
state = Project.rollback(state).updatedState;
state = Project.setMode(state, MODE_3D_FIRST_PERSON).updatedState;
return state;
default:
return state;
}
}