UNPKG

kitchen-simulator

Version:

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

164 lines 5.07 kB
import React from 'react'; import PropTypes from 'prop-types'; import { Line, Area, Vertex, Item, Group } from "./export"; import { GeometryUtils } from "../../utils/export"; import { MODE_DRAWING_LINE, WALL_CABINET_LAYOUTPOS } from "../../constants"; import { returnReplaceableDeepSearchType } from "./utils"; var STYLE = { stroke: '#494949', strokeWidth: 1, strokeLinecap: 'round', strokeLinejoin: 'round', strokeMiterlimit: 2.613, fill: '#D6F0EE' }; var STYLE_TEXT = { textAnchor: 'middle', fontSize: 10, fontFamily: "'Courier New', Courier, monospace", fontWeight: 'bold', fill: '#506ad3' }; var HINT_STYLE_TEXT = { textAnchor: 'middle', fontSize: '10px', fontFamily: "'Microsoft YaHei UI', Courier, monospace", fontWeight: 'bold', fill: '1a75ff' }; export default function Layer(_ref) { var layer = _ref.layer, scene = _ref.scene, catalog = _ref.catalog, mode = _ref.mode, state = _ref.state, relatedLines = _ref.relatedLines; var unit = scene.unit, groups = scene.groups; var lines = layer.lines, areas = layer.areas, vertices = layer.vertices, holes = layer.holes, layerID = layer.id, items = layer.items, opacity = layer.opacity; var allLines; var allLineRects; allLines = GeometryUtils.getAllLines(layer); allLineRects = GeometryUtils.buildRectFromLines(layer, allLines); var hintVertex = { x: 0, y: 0 }; var angleVertexes = []; vertices.valueSeq().forEach(function (vert) { var vertexes = [vert]; lines.valueSeq().forEach(function (line) { var vertex0 = layer.vertices.get(line.vertices.get(0)); var vertex1 = layer.vertices.get(line.vertices.get(1)); if (vertex0 === vert) vertexes.push(vertex1); if (vertex1 === vert) vertexes.push(vertex0); }); if (vertexes.length === 3) { angleVertexes.push(vertexes); } hintVertex.x += vert.x; hintVertex.y += vert.y; }); hintVertex.x /= vertices.size; hintVertex.y /= vertices.size; var itemData = []; var itemWall = []; var itemSelected = []; items = items.sort(function (a, b) { return a.getIn(['properties', 'altitude', '_length']) - b.getIn(['properties', 'altitude', '_length']); }); items.valueSeq().filter(function (a) { return a.selected === true; }).forEach(function (item) { itemSelected.push(/*#__PURE__*/React.createElement(Item, { key: item.id, layer: layer, item: item, scene: scene, catalog: catalog, mode: mode })); }); items.valueSeq().forEach(function (item) { if (item.layoutpos !== WALL_CABINET_LAYOUTPOS) { if (catalog.elements.hasOwnProperty(item.type) || !catalog.elements[item.type] && !!catalog.elements[returnReplaceableDeepSearchType(item.type)]) itemData.push(/*#__PURE__*/React.createElement(Item, { key: item.id, layer: layer, item: item, scene: scene, catalog: catalog }));else { console.log("Element ".concat(item.type, " does not exist in catalog.")); } } }); items.valueSeq().filter(function (a) { return a.selected === false; }).forEach(function (item) { if (item.layoutpos === WALL_CABINET_LAYOUTPOS) { if (catalog.elements.hasOwnProperty(item.type) || !catalog.elements[item.type] && !!catalog.elements[returnReplaceableDeepSearchType(item.type)]) itemWall.push(/*#__PURE__*/React.createElement(Item, { key: item.id, layer: layer, item: item, scene: scene, catalog: catalog }));else { console.log("Element ".concat(item.type, " does not exist in catalog.")); } } }); var lineData = []; lines.sort(function compare(a, b) { return a.createdDateTime - b.createdDateTime; }).valueSeq().forEach(function (line) { lineData.push(/*#__PURE__*/React.createElement(Line, { key: line.id, layer: layer, line: line, scene: scene, catalog: catalog, state: state, relatedLines: relatedLines })); }); return /*#__PURE__*/React.createElement("g", { opacity: opacity }, areas.valueSeq().map(function (area) { return /*#__PURE__*/React.createElement(Area, { key: area.id, layer: layer, area: area, unit: unit, catalog: catalog }); }), itemData, itemWall, lineData, itemSelected, mode !== MODE_DRAWING_LINE && vertices.valueSeq().filter(function (v) { return v.selected; }).map(function (vertex) { return /*#__PURE__*/React.createElement(Vertex, { key: vertex.id, layer: layer, vertex: vertex }); }), groups.valueSeq().filter(function (g) { return g.hasIn(['elements', layerID]) && g.get('selected'); }).map(function (group) { return /*#__PURE__*/React.createElement(Group, { key: group.get('id'), layer: layer, group: group, scene: scene, catalog: catalog }); })); } Layer.propTypes = { layer: PropTypes.object.isRequired, scene: PropTypes.object.isRequired, catalog: PropTypes.object.isRequired };