UNPKG

react-planner-viewer

Version:

react-planner-viewer is a React Component for view plans builded with react-planner in 2D mode

92 lines (75 loc) 9.44 kB
import { ADD_LAYER, SELECT_LAYER, SET_LAYER_PROPERTIES, MODE_IDLE, REMOVE_LAYER } from '../constants'; import { Layer, Scene } from '../models'; import IDBroker from '../utils/id-broker'; import { unselectAll } from '../utils/layer-operations'; export default function (state, action) { switch (action.type) { case ADD_LAYER: return addLayer(state, action.name, action.altitude); case SELECT_LAYER: return selectLayer(state, action.layerID); case SET_LAYER_PROPERTIES: return setLayerProperties(state, action.layerID, action.properties); case REMOVE_LAYER: return removeLayer(state, action.layerID); default: return state; } } function addLayer(state, name, altitude) { var layerID = IDBroker.acquireID(); name = name || 'layer ' + layerID; altitude = altitude || 0; var layer = new Layer({ id: layerID, name: name, altitude: altitude }); var scene = state.scene; scene = scene.merge({ selectedLayer: layerID, layers: scene.layers.set(layerID, layer) }); return state.merge({ scene: scene, sceneHistory: state.sceneHistory.push(scene) }); } function selectLayer(state, layerID) { var scene = state.scene; scene = scene.merge({ selectedLayer: layerID, layers: scene.layers.map(function (layer) { return unselectAll(layer); }) }); return state.merge({ scene: scene, sceneHistory: state.sceneHistory.push(scene) }); } function setLayerProperties(state, layerID, properties) { var scene = state.scene; var layers = scene.layers.mergeIn([layerID], properties); layers = layers.sort(function (layerA, layerB) { return layerA.altitude !== layerB.altitude ? layerB.altitude - layerA.altitude : layerA.order - layerB.order; }); scene = scene.set('layers', layers); return state.merge({ scene: scene, sceneHistory: state.sceneHistory.push(scene) }); } function removeLayer(state, layerID) { var scene = state.scene; var layers = scene.layers.delete(layerID); if (layers.isEmpty()) { scene = new Scene(); } else { scene = scene.merge({ selectedLayer: scene.selectedLayer !== layerID ? scene.selectedLayer : layers.first().id, layers: layers }); } return state.merge({ scene: scene, sceneHistory: state.sceneHistory.push(scene) }); } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZWR1Y2Vycy9zY2VuZS1yZWR1Y2VyLmpzIl0sIm5hbWVzIjpbIkFERF9MQVlFUiIsIlNFTEVDVF9MQVlFUiIsIlNFVF9MQVlFUl9QUk9QRVJUSUVTIiwiTU9ERV9JRExFIiwiUkVNT1ZFX0xBWUVSIiwiTGF5ZXIiLCJTY2VuZSIsIklEQnJva2VyIiwidW5zZWxlY3RBbGwiLCJzdGF0ZSIsImFjdGlvbiIsInR5cGUiLCJhZGRMYXllciIsIm5hbWUiLCJhbHRpdHVkZSIsInNlbGVjdExheWVyIiwibGF5ZXJJRCIsInNldExheWVyUHJvcGVydGllcyIsInByb3BlcnRpZXMiLCJyZW1vdmVMYXllciIsImFjcXVpcmVJRCIsImxheWVyIiwiaWQiLCJzY2VuZSIsIm1lcmdlIiwic2VsZWN0ZWRMYXllciIsImxheWVycyIsInNldCIsInNjZW5lSGlzdG9yeSIsInB1c2giLCJtYXAiLCJtZXJnZUluIiwic29ydCIsImxheWVyQSIsImxheWVyQiIsIm9yZGVyIiwiZGVsZXRlIiwiaXNFbXB0eSIsImZpcnN0Il0sIm1hcHBpbmdzIjoiQUFBQSxTQUNFQSxTQURGLEVBRUVDLFlBRkYsRUFHRUMsb0JBSEYsRUFJRUMsU0FKRixFQUtFQyxZQUxGLFFBTU8sY0FOUDtBQU9BLFNBQVFDLEtBQVIsRUFBZUMsS0FBZixRQUEyQixXQUEzQjtBQUNBLE9BQU9DLFFBQVAsTUFBcUIsb0JBQXJCO0FBQ0EsU0FBUUMsV0FBUixRQUEwQiwyQkFBMUI7O0FBRUEsZUFBZSxVQUFVQyxLQUFWLEVBQWlCQyxNQUFqQixFQUF5QjtBQUN0QyxVQUFRQSxPQUFPQyxJQUFmO0FBQ0UsU0FBS1gsU0FBTDtBQUNFLGFBQU9ZLFNBQVNILEtBQVQsRUFBZ0JDLE9BQU9HLElBQXZCLEVBQTZCSCxPQUFPSSxRQUFwQyxDQUFQOztBQUVGLFNBQUtiLFlBQUw7QUFDRSxhQUFPYyxZQUFZTixLQUFaLEVBQW1CQyxPQUFPTSxPQUExQixDQUFQOztBQUVGLFNBQUtkLG9CQUFMO0FBQ0UsYUFB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eEIsR0FBa0NPLE1BQU1FLGFBQXhDLEdBQXdEQyxPQUFPWSxLQUFQLEdBQWVoQixFQURwRTtBQUVsQkk7QUFGa0IsS0FBWixDQUFSO0FBSUQ7O0FBRUQsU0FBT2pCLE1BQU1lLEtBQU4sQ0FBWTtBQUNqQkQsZ0JBRGlCO0FBRWpCSyxrQkFBY25CLE1BQU1tQixZQUFOLENBQW1CQyxJQUFuQixDQUF3Qk4sS0FBeEI7QUFGRyxHQUFaLENBQVA7QUFJRCIsImZpbGUiOiJzY2VuZS1yZWR1Y2VyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQUREX0xBWUVSLFxuICBTRUxFQ1RfTEFZRVIsXG4gIFNFVF9MQVlFUl9QUk9QRVJUSUVTLFxuICBNT0RFX0lETEUsXG4gIFJFTU9WRV9MQVlFUlxufSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHtMYXllciwgU2NlbmV9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgSURCcm9rZXIgZnJvbSAnLi4vdXRpbHMvaWQtYnJva2VyJztcbmltcG9ydCB7dW5zZWxlY3RBbGx9IGZyb20gJy4uL3V0aWxzL2xheWVyLW9wZXJhdGlvbnMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoc3RhdGUsIGFjdGlvbikge1xuICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgY2FzZSBBRERfTEFZRVI6XG4gICAgICByZXR1cm4gYWRkTGF5ZXIoc3RhdGUsIGFjdGlvbi5uYW1lLCBhY3Rpb24uYWx0aXR1ZGUpO1xuXG4gICAgY2FzZSBTRUxFQ1RfTEFZRVI6XG4gICAgICByZXR1cm4gc2VsZWN0TGF5ZXIoc3RhdGUsIGFjdGlvbi5sYXllcklEKTtcblxuICAgIGNhc2UgU0VUX0xBWUVSX1BST1BFUlRJRVM6XG4gICAgICByZXR1cm4gc2V0TGF5ZXJQcm9wZXJ0aWVzKHN0YXRlLCBhY3Rpb24ubGF5ZXJJRCwgYWN0aW9uLnByb3BlcnRpZXMpO1xuXG4gICAgY2FzZSBSRU1PVkVfTEFZRVI6XG4gICAgICByZXR1cm4gcmVtb3ZlTGF5ZXIoc3RhdGUsIGFjdGlvbi5sYXllcklEKTtcblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkTGF5ZXIoc3RhdGUsIG5hbWUsIGFsdGl0dWRlKSB7XG4gIGxldCBsYXllcklEID0gSURCcm9rZXIuYWNxdWlyZUlEKCk7XG4gIG5hbWUgPSBuYW1lIHx8IGBsYXllciAke2xheWVySUR9YDtcbiAgYWx0aXR1ZGUgPSBhbHRpdHVkZSB8fCAwO1xuXG4gIGxldCBsYXllciA9IG5ldyBMYXllcih7aWQ6IGxheWVySUQsIG5hbWUsIGFsdGl0dWRlfSk7XG4gIGxldCBzY2VuZSA9IHN0YXRlLnNjZW5lO1xuICBzY2VuZSA9IHNjZW5lLm1lcmdlKHtcbiAgICBzZWxlY3RlZExheWVyOiBsYXllcklELFxuICAgIGxheWVyczogc2NlbmUubGF5ZXJzLnNldChsYXllcklELCBsYXllciksXG4gIH0pO1xuXG4gIHJldHVybiBzdGF0ZS5tZXJnZSh7XG4gICAgc2NlbmUsXG4gICAgc2NlbmVIaXN0b3J5OiBzdGF0ZS5zY2VuZUhpc3RvcnkucHVzaChzY2VuZSlcbiAgfSlcbn1cblxuZnVuY3Rpb24gc2VsZWN0TGF5ZXIoc3RhdGUsIGxheWVySUQpIHtcbiAgbGV0IHNjZW5lID0gc3RhdGUuc2NlbmU7XG4gIHNjZW5lID0gc2NlbmUubWVyZ2Uoe1xuICAgIHNlbGVjdGVkTGF5ZXI6IGxheWVySUQsXG4gICAgbGF5ZXJzOiBzY2VuZS5sYXllcnMubWFwKGxheWVyID0+IHVuc2VsZWN0QWxsKGxheWVyKSlcbiAgfSk7XG5cbiAgcmV0dXJuIHN0YXRlLm1lcmdlKHtcbiAgICBzY2VuZSxcbiAgICBzY2VuZUhpc3Rvcnk6IHN0YXRlLnNjZW5lSGlzdG9yeS5wdXNoKHNjZW5lKVxuICB9KVxufVxuXG5mdW5jdGlvbiBzZXRMYXllclByb3BlcnRpZXMoc3RhdGUsIGxheWVySUQsIHByb3BlcnRpZXMpIHtcbiAgbGV0IHNjZW5lID0gc3RhdGUuc2NlbmU7XG5cbiAgbGV0IGxheWVycyA9IHNjZW5lLmxheWVycy5tZXJnZUluKFtsYXllcklEXSwgcHJvcGVydGllcyk7XG4gIGxheWVycyA9IGxheWVycy5zb3J0KChsYXllckEsIGxheWVyQikgPT5cbiAgICBsYXllckEuYWx0aXR1ZGUgIT09IGxheWVyQi5hbHRpdHVkZSA/IGxheWVyQi5hbHRpdHVkZSAtIGxheWVyQS5hbHRpdHVkZSA6IGxheWVyQS5vcmRlciAtIGxheWVyQi5vcmRlclxuICApO1xuXG4gIHNjZW5lID0gc2NlbmUuc2V0KCdsYXllcnMnLCBsYXllcnMpO1xuXG4gIHJldHVybiBzdGF0ZS5tZXJnZSh7XG4gICAgc2NlbmUsXG4gICAgc2NlbmVIaXN0b3J5OiBzdGF0ZS5zY2VuZUhpc3RvcnkucHVzaChzY2VuZSlcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUxheWVyKHN0YXRlLCBsYXllcklEKSB7XG4gIGxldCBzY2VuZSA9IHN0YXRlLnNjZW5lO1xuICBsZXQgbGF5ZXJzID0gc2NlbmUubGF5ZXJzLmRlbGV0ZShsYXllcklEKTtcblxuICBpZiAobGF5ZXJzLmlzRW1wdHkoKSkge1xuICAgIHNjZW5lID0gbmV3IFNjZW5lKCk7XG4gIH0gZWxzZSB7XG4gICAgc2NlbmUgPSBzY2VuZS5tZXJnZSh7XG4gICAgICBzZWxlY3RlZExheWVyOiBzY2VuZS5zZWxlY3RlZExheWVyICE9PSBsYXllcklEID8gc2NlbmUuc2VsZWN0ZWRMYXllciA6IGxheWVycy5maXJzdCgpLmlkLFxuICAgICAgbGF5ZXJzLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlLm1lcmdlKHtcbiAgICBzY2VuZSxcbiAgICBzY2VuZUhpc3Rvcnk6IHN0YXRlLnNjZW5lSGlzdG9yeS5wdXNoKHNjZW5lKVxuICB9KVxufVxuIl19