kitchen-simulator
Version:
It is a kitchen simulator (self-contained micro-frontend).
148 lines (147 loc) • 6.08 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _immutable = require("immutable");
var _export = require("./export");
var _export2 = require("../utils/export");
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var Area = exports["default"] = /*#__PURE__*/function () {
function Area() {
(0, _classCallCheck2["default"])(this, Area);
}
return (0, _createClass2["default"])(Area, null, [{
key: "add",
value: function add(state, layerID, type, verticesCoords, catalog) {
var area;
var layer = state.getIn(['scene', 'layers', layerID]);
var areaID;
areaID = _export2.IDBroker.acquireID();
var vertices = verticesCoords.map(function (v) {
var retVal = _export.Vertex.add(state, layerID, v.x, v.y, 'areas', areaID);
state = retVal.updatedState;
return retVal.vertex.id;
});
area = catalog.factoryElement(type, {
id: areaID,
name: _export2.NameGenerator.generateName('areas', catalog.getIn(['elements', type, 'info', 'title'])),
type: type,
prototype: 'areas',
vertices: vertices
});
state = state.setIn(['scene', 'layers', layerID, 'areas', areaID], area);
// set default texture//
var properties = area.properties;
var JsProperty = properties.toJS();
JsProperty.texture = 'parquet'; // set parquet as default texture
state = this.setJsProperties(state, layerID, areaID, JsProperty).updatedState;
// /////////////////////
return {
updatedState: state,
area: area
};
}
}, {
key: "select",
value: function select(state, layerID, areaID) {
state = _export.Layer.select(state, layerID).updatedState;
state = _export.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 = _export.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 = _export.Group.removeElement(state, group.id, layerID, 'areas', areaID).updatedState;
});
return {
updatedState: state
};
}
}, {
key: "unselect",
value: function unselect(state, layerID, areaID) {
state = _export.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: "setFloorStyles",
value: function setFloorStyles(state, texture) {
var _state = state,
scene = _state.scene;
var layerID = scene.get('selectedLayer');
var layer = scene.layers.get(layerID);
layer = layer.mergeIn(['floorStyle'], texture);
state = state.merge({
scene: scene.mergeIn(['layers', layerID], layer)
});
var areas = layer.areas;
areas.forEach(function (data) {
var dataJSON = data.toJS();
var id = dataJSON.id;
var newTex = dataJSON.texture;
newTex = _objectSpread(_objectSpread({}, newTex), texture);
data = data.mergeIn(['texture'], newTex);
layer = layer.mergeIn(['areas', id], data);
state = state.merge({
scene: scene.mergeIn(['layers', layerID], layer)
});
});
return {
updatedState: state
};
}
}, {
key: "setJsProperties",
value: function setJsProperties(state, layerID, areaID, properties) {
return this.setProperties(state, layerID, areaID, (0, _immutable.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, (0, _immutable.fromJS)(properties));
}
}, {
key: "setAttributes",
value: function setAttributes(state) {
return {
updatedState: state
};
}
}]);
}();
module.exports = exports.default;