UNPKG

kitchen-simulator

Version:

It is a kitchen simulator (self-contained micro-frontend).

75 lines 2.85 kB
import { CHANGE_BASE_CABINET_MEASURE, CHANGE_WALL_CABINET_MEASURE, CHANGE_WALL_LENGTH_MEASURE, CHANGE_WINDOW_DOOR_MEASURE, MODE_2D_PAN, MODE_2D_ZOOM_IN, MODE_2D_ZOOM_OUT, SELECT_TOOL_PAN, SELECT_TOOL_ZOOM_IN, SELECT_TOOL_ZOOM_OUT, UPDATE_2D_CAMERA, UPDATE_CEIL_HEIGHT, UPDATE_CEIL_HEIGHT_UNIT } from "../constants"; import { convert } from "../utils/convert-units-lite"; export default function (state, action) { var _state = state, scene = _state.scene; switch (action.type) { case UPDATE_CEIL_HEIGHT_UNIT: { var _state2 = state, _scene = _state2.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_CEIL_HEIGHT: { 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 UPDATE_2D_CAMERA: return state.merge({ viewer2D: action.value }); case CHANGE_WALL_LENGTH_MEASURE: return state.merge({ scene: scene.merge({ showWallLengthMeasure: action.value }) }); case CHANGE_BASE_CABINET_MEASURE: return state.merge({ scene: scene.merge({ showBaseCabinetMeasure: action.value }) }); case CHANGE_WALL_CABINET_MEASURE: return state.merge({ scene: scene.merge({ showWallCabinetMeasure: action.value }) }); case CHANGE_WINDOW_DOOR_MEASURE: return state.merge({ scene: scene.merge({ showWindowDoorMeasure: action.value }) }); case SELECT_TOOL_PAN: return state.set('mode', MODE_2D_PAN); case SELECT_TOOL_ZOOM_IN: return state.set('mode', MODE_2D_ZOOM_IN); case SELECT_TOOL_ZOOM_OUT: return state.set('mode', MODE_2D_ZOOM_OUT); } }