UNPKG

react-planner

Version:

react-planner is a React Component for plans design. Draw a 2D floorplan and navigate it in 3D mode.

157 lines (119 loc) 5.16 kB
import { history } from '../utils/export'; import { LOAD_PROJECT, NEW_PROJECT, OPEN_CATALOG, SELECT_TOOL_EDIT, MODE_IDLE, UNSELECT_ALL, SET_PROPERTIES, SET_ITEMS_ATTRIBUTES, SET_LINES_ATTRIBUTES, SET_HOLES_ATTRIBUTES, REMOVE, UNDO, ROLLBACK, SET_PROJECT_PROPERTIES, OPEN_PROJECT_CONFIGURATOR, INIT_CATALOG, UPDATE_MOUSE_COORDS, UPDATE_ZOOM_SCALE, TOGGLE_SNAP, CHANGE_CATALOG_PAGE, GO_BACK_TO_CATALOG_PAGE, THROW_ERROR, THROW_WARNING, COPY_PROPERTIES, PASTE_PROPERTIES, PUSH_LAST_SELECTED_CATALOG_ELEMENT_TO_HISTORY, ALTERATE_STATE, SET_MODE, ADD_HORIZONTAL_GUIDE, ADD_VERTICAL_GUIDE, ADD_CIRCULAR_GUIDE, REMOVE_HORIZONTAL_GUIDE, REMOVE_VERTICAL_GUIDE, REMOVE_CIRCULAR_GUIDE } from '../constants'; import { Project } from '../class/export'; export default function (state, action) { switch (action.type) { case NEW_PROJECT: return Project.newProject(state).updatedState; case LOAD_PROJECT: return Project.loadProject(state, action.sceneJSON).updatedState; case OPEN_CATALOG: return Project.openCatalog(state).updatedState; case CHANGE_CATALOG_PAGE: return Project.changeCatalogPage( state, action.oldPage, action.newPage ).updatedState; case GO_BACK_TO_CATALOG_PAGE: return Project.goBackToCatalogPage( state, action.newPage ).updatedState; case SELECT_TOOL_EDIT: return Project.setMode(state, MODE_IDLE).updatedState; case UNSELECT_ALL: return Project.unselectAll(state).updatedState; case SET_PROPERTIES: state = state.merge({ sceneHistory: history.historyPush(state.sceneHistory, state.scene) }); return Project.setProperties(state, state.getIn(['scene', 'selectedLayer']), action.properties).updatedState; case SET_ITEMS_ATTRIBUTES: state = state.merge({ sceneHistory: history.historyPush(state.sceneHistory, state.scene) }); return Project.setItemsAttributes(state, action.itemsAttributes).updatedState; case SET_LINES_ATTRIBUTES: state = state.merge({ sceneHistory: history.historyPush(state.sceneHistory, state.scene) }); return Project.setLinesAttributes(state, action.linesAttributes).updatedState; case SET_HOLES_ATTRIBUTES: state = state.merge({ sceneHistory: history.historyPush(state.sceneHistory, state.scene) }); return Project.setHolesAttributes(state, action.holesAttributes).updatedState; case REMOVE: state = state.merge({ sceneHistory: history.historyPush(state.sceneHistory, state.scene) }); return Project.remove(state).updatedState; case UNDO: return Project.undo(state).updatedState; case ROLLBACK: return Project.rollback(state).updatedState; case SET_PROJECT_PROPERTIES: state = state.merge({ sceneHistory: history.historyPush(state.sceneHistory, state.scene) }); return Project.setProjectProperties(state, action.properties).updatedState; case OPEN_PROJECT_CONFIGURATOR: state = state.merge({ sceneHistory: history.historyPush(state.sceneHistory, state.scene) }); return Project.openProjectConfigurator(state).updatedState; case INIT_CATALOG: return Project.initCatalog(state, action.catalog).updatedState; case UPDATE_MOUSE_COORDS: return Project.updateMouseCoord(state, action.coords).updatedState; case UPDATE_ZOOM_SCALE: return Project.updateZoomScale(state, action.scale).updatedState; case TOGGLE_SNAP: return Project.toggleSnap(state, action.mask).updatedState; case THROW_ERROR: return Project.throwError(state, action.error).updatedState; case THROW_WARNING: return Project.throwWarning(state, action.warning).updatedState; case COPY_PROPERTIES: return Project.copyProperties(state, action.properties).updatedState; case PASTE_PROPERTIES: state = state.merge({ sceneHistory: history.historyPush(state.sceneHistory, state.scene) }); return Project.pasteProperties(state).updatedState; case PUSH_LAST_SELECTED_CATALOG_ELEMENT_TO_HISTORY: return Project.pushLastSelectedCatalogElementToHistory(state, action.element).updatedState; case ALTERATE_STATE: return Project.setAlterate( state ).updatedState; case SET_MODE: return Project.setMode(state, action.mode).updatedState; case ADD_HORIZONTAL_GUIDE: state = state.merge({ sceneHistory: history.historyPush(state.sceneHistory, state.scene) }); return Project.addHorizontalGuide(state, action.coordinate).updatedState; case ADD_VERTICAL_GUIDE: return Project.addVerticalGuide(state, action.coordinate).updatedState; case ADD_CIRCULAR_GUIDE: return Project.addCircularGuide(state, action.x, action.y, action.radius).updatedState; case REMOVE_HORIZONTAL_GUIDE: return Project.removeHorizontalGuide(state, action.guideID).updatedState; case REMOVE_VERTICAL_GUIDE: return Project.removeVerticalGuide(state, action.guideID).updatedState; case REMOVE_CIRCULAR_GUIDE: return Project.removeCircularGuide(state, action.guideID).updatedState; default: return state; } }