UNPKG

react-planner

Version:

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

115 lines (91 loc) 4.23 kB
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } import { fromJS } from 'immutable'; import { Layer, Vertex, Group } from './export'; import { IDBroker, NameGenerator } from '../utils/export'; var Area = function () { function Area() { _classCallCheck(this, Area); } _createClass(Area, null, [{ key: 'add', value: function add(state, layerID, type, verticesCoords, catalog) { var area = void 0; var layer = state.getIn(['scene', 'layers', layerID]); layer = layer.withMutations(function (layer) { var areaID = IDBroker.acquireID(); var vertices = verticesCoords.map(function (v) { return Vertex.add(state, layerID, v.x, v.y, 'areas', areaID).vertex.id; }); area = catalog.factoryElement(type, { id: areaID, name: NameGenerator.generateName('areas', catalog.getIn(['elements', type, 'info', 'title'])), type: type, prototype: 'areas', vertices: vertices }); layer.setIn(['areas', areaID], area); }); state = state.setIn(['scene', 'layers', layerID], layer); return { updatedState: state, area: area }; } }, { key: 'select', value: function select(state, layerID, areaID) { state = Layer.select(state, layerID).updatedState; state = Layer.selectElement(state, layerID, 'areas', areaID).updatedState; return { updatedState: state }; } }, { key: 'remove', value: function remove(state, layerID, areaID) { var area = state.getIn(['scene', 'layers', layerID, 'areas', areaID]); if (area.get('selected') === true) state = this.unselect(state, layerID, areaID).updatedState; area.vertices.forEach(function (vertexID) { state = Vertex.remove(state, layerID, vertexID, 'areas', areaID).updatedState; }); state = state.deleteIn(['scene', 'layers', layerID, 'areas', areaID]); state.getIn(['scene', 'groups']).forEach(function (group) { return state = Group.removeElement(state, group.id, layerID, 'areas', areaID).updatedState; }); return { updatedState: state }; } }, { key: 'unselect', value: function unselect(state, layerID, areaID) { state = Layer.unselect(state, layerID, 'areas', areaID).updatedState; return { updatedState: state }; } }, { key: 'setProperties', value: function setProperties(state, layerID, areaID, properties) { state = state.mergeIn(['scene', 'layers', layerID, 'areas', areaID, 'properties'], properties); return { updatedState: state }; } }, { key: 'setJsProperties', value: function setJsProperties(state, layerID, areaID, properties) { return this.setProperties(state, layerID, areaID, fromJS(properties)); } }, { key: 'updateProperties', value: function updateProperties(state, layerID, areaID, properties) { properties.forEach(function (v, k) { if (state.hasIn(['scene', 'layers', layerID, 'areas', areaID, 'properties', k])) state = state.mergeIn(['scene', 'layers', layerID, 'areas', areaID, 'properties', k], v); }); return { updatedState: state }; } }, { key: 'updateJsProperties', value: function updateJsProperties(state, layerID, areaID, properties) { return this.updateProperties(state, layerID, areaID, fromJS(properties)); } }, { key: 'setAttributes', value: function setAttributes(state) { return { updatedState: state }; } }]); return Area; }(); export { Area as default };