UNPKG

kitchen-simulator

Version:

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

473 lines (472 loc) 18.2 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _react = _interopRequireDefault(require("react")); var Three = _interopRequireWildcard(require("three")); function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); } var black = new Three.MeshLambertMaterial({ color: 0x000000 }); var green = new Three.MeshLambertMaterial({ color: 0x348781 }); var red = new Three.MeshLambertMaterial({ color: 0xff0000 }); var turquoise = new Three.MeshLambertMaterial({ color: 0x43c6db, opacity: 0.7, transparent: true }); var metalBlue = new Three.MeshLambertMaterial({ color: 0xb7ceec }); var darkGrey = new Three.MeshLambertMaterial({ color: 0x313131 }); var darkGrey2 = new Three.MeshLambertMaterial({ color: 0x212121 }); var metalBlueGrey = new Three.MeshLambertMaterial({ color: 0x566d7e }); function makePanicDoor() { var panicDoorDouble = new Three.Mesh(); var doorLeft = makeDoorStructure(); var doorRight = makeDoorStructure(); var handle = makeHandle(); var doorLeftPivot = makePivot(); var doorRightPivot = makePivot(); var safetyHandleLeft = makeSafetyHandle(); var safetyHandleRight = makeSafetyHandle(); var lock = makeLock(); var doorLockLeft = makeDoorLock(); var doorLockRight = makeDoorLock(); lock.position.set(-0.05, -0.02, 0.03); handle.position.set(-0.47 / 2, 0.85 / 2, -0.03); doorLeftPivot.position.set(0.595 / 2, 0, -0.06 / 2); doorRightPivot.position.set(0.6 / 2, 0, 0.077 / 2); doorRight.rotation.y = Math.PI; doorRight.position.set(-0.35 / 2 - 0.084, 0, 0.0043); doorLeft.position.set(0.35 / 2 + 0.084, 0, -0.0043); safetyHandleLeft.position.set(0, 0.4, 0.06 / 2); safetyHandleRight.position.set(0, 0.4, -0.062 / 2); handle.add(lock); doorLeft.add(handle); doorLeft.add(safetyHandleLeft); doorRight.add(safetyHandleRight); doorLeft.add(doorLeftPivot); panicDoorDouble.add(doorLeft); doorRight.add(doorRightPivot); doorLeft.add(doorLockLeft); doorRight.add(doorLockRight); panicDoorDouble.add(doorRight); return panicDoorDouble; } function makeDoorLock() { var block = new Three.Object3D(); var DoorLockGeometry1 = new Three.CylinderGeometry(0.012, 0.012, 1.905, Math.round(32)); var DoorLockGeometry2 = new Three.CylinderGeometry(0.007, 0.007, 1.907, Math.round(32)); var DoorLock1 = new Three.Mesh(DoorLockGeometry1, metalBlue); var DoorLock2 = new Three.Mesh(DoorLockGeometry2, metalBlueGrey); block.position.set(-0.275, 0.7 / 2, 0); block.scale.x = 1 / 1.3; DoorLock1.add(DoorLock2); block.add(DoorLock1); return block; } function makeLock() { var mechanism = new Three.Object3D(); var BaseGeometry = new Three.BoxGeometry(0.01, 0.1, 0.02); var FirstBlockGeometry = new Three.BoxGeometry(0.01, 0.02, 0.01); var SecondBlockGeometry = new Three.BoxGeometry(0.006, 0.04, 0.008); var base = new Three.Mesh(BaseGeometry, metalBlue); var FirstBlock = new Three.Mesh(FirstBlockGeometry, metalBlueGrey); var SecondBlock = new Three.Mesh(SecondBlockGeometry, metalBlueGrey); FirstBlock.position.set(-0.008 / 2, 0.03, 0); SecondBlock.position.y = -0.05; FirstBlock.add(SecondBlock); base.add(FirstBlock); mechanism.add(base); return mechanism; } function makeSafetyHandle() { var handle = new Three.Object3D(); var handleSupportGeometry = new Three.BoxGeometry(0.5, 0.1, 0.005); var PushButtonGeometry = new Three.CylinderGeometry(0.04, 0.04, 0.48, Math.round(32)); var PushButtonCoverGeometry = new Three.CylinderGeometry(0.042, 0.042, 0.01, Math.round(32)); var handleSupport = new Three.Mesh(handleSupportGeometry, black); var pushButton = new Three.Mesh(PushButtonGeometry, red); var pushButtonCover1 = new Three.Mesh(PushButtonCoverGeometry, black); var pushButtonCover2 = new Three.Mesh(PushButtonCoverGeometry, black); handleSupport.position.z = 0.005 / 2; pushButton.rotation.z = Math.PI / 2; pushButtonCover1.position.y = 0.48 / 2 + 0.01 / 2; pushButtonCover2.position.y = -0.48 / 2 - 0.01 / 2; pushButton.add(pushButtonCover1); pushButton.add(pushButtonCover2); handleSupport.add(pushButton); handle.add(handleSupport); return handle; } function makePivot() { var DoorPivot = new Three.Object3D(); var DownPivotGeometry = new Three.CylinderGeometry(0.009, 0.009, 0.04, Math.round(32)); var UpPivotGeometry = new Three.CylinderGeometry(0.01, 0.01, 0.04, Math.round(32)); var downPivot1 = new Three.Mesh(DownPivotGeometry, green); var upPivot1 = new Three.Mesh(UpPivotGeometry, green); var downPivot2 = new Three.Mesh(DownPivotGeometry, green); var upPivot2 = new Three.Mesh(UpPivotGeometry, green); downPivot1.position.y = -0.4; upPivot1.position.y = 0.04; downPivot2.position.y = 1; upPivot2.position.y = 0.04; downPivot2.add(upPivot2); downPivot1.add(upPivot1); DoorPivot.add(downPivot2); DoorPivot.add(downPivot1); return DoorPivot; } function makeHandle() { var handle = new Three.Object3D(); var handleBase = makeHandleBase(); var hilt = makeHilt(); hilt.rotation.x = Math.PI / 2; hilt.position.set(0, 0.04, -0.03 / 2 - 0.01 / 2); handle.add(handleBase); handle.add(hilt); handle.scale.set(1.1, 1.1, 1.1); return handle; } function makeHilt() { var hilt = new Three.Object3D(); var GeometryPiece1 = new Three.CylinderGeometry(0.01, 0.01, 0.03, Math.round(32)); var GeometryPiece2 = new Three.SphereGeometry(0.01, Math.round(32), Math.round(32)); var GeometryPiece3 = new Three.CylinderGeometry(0.01, 0.01, 0.07, Math.round(32)); var piece1 = new Three.Mesh(GeometryPiece1, black); var piece2 = new Three.Mesh(GeometryPiece2, black); var piece3 = new Three.Mesh(GeometryPiece3, black); var piece4 = new Three.Mesh(GeometryPiece2, black); piece3.rotation.z = Math.PI / 2; piece3.position.x = 0.07 / 2; piece2.position.y = -0.03 / 2; piece4.position.y = -0.07 / 2; piece3.add(piece4); piece2.add(piece3); piece1.add(piece2); hilt.add(piece1); return hilt; } function makeHandleBase() { var base = new Three.Object3D(); var BaseGeometry1 = new Three.BoxGeometry(0.038, 0.14, 0.01); var BaseGeometry2 = new Three.CylinderGeometry(0.023, 0.023, 0.01, Math.round(32)); var lock = makeLockKey(); var base1 = new Three.Mesh(BaseGeometry1, black); var base2 = new Three.Mesh(BaseGeometry2, black); lock.rotation.x = Math.PI / 2; lock.position.y = -0.03; base2.rotation.x = Math.PI / 2; base2.position.y = -0.033; base2.scale.z = 1.5; base1.add(lock); base1.add(base2); base.add(base1); return base; } function makeLockKey() { var lock = new Three.Object3D(); var geometryLock1 = new Three.CylinderGeometry(0.005, 0.005, 0.02, Math.round(32)); var geometryLock2 = new Three.BoxGeometry(0.008, 0.02, 0.02); var geometryLock3 = new Three.BoxGeometry(0.007, 0.0203, 0.0018); var lockPiece1 = new Three.Mesh(geometryLock1, metalBlue); var lockPiece2 = new Three.Mesh(geometryLock2, metalBlue); var lockPiece3 = new Three.Mesh(geometryLock3, metalBlueGrey); lockPiece2.position.z = 0.01; lockPiece1.add(lockPiece2); lockPiece1.add(lockPiece3); lock.add(lockPiece1); return lock; } function makeDoorStructure() { var door = new Three.Object3D(); var lowBaseDoorGeometry = new Three.BoxGeometry(0.6, 1.2, 0.01); var middleBaseDoorGeometry = new Three.BoxGeometry(0.2, 0.7, 0.01); var highBaseDoorGeometry = new Three.BoxGeometry(0.2, 0.2, 0.01); var BorderCoverDoorGeometry1 = new Three.CylinderGeometry(0.005, 0.005, 1.9, Math.round(32)); var BorderCoverDoorGeometry2 = new Three.BoxGeometry(0.03, 1.9, 0.01); var MiddleDoorGeometry2 = new Three.BoxGeometry(0.2, 0.7, 0.06); var MiddleDoorGeometry1 = new Three.BoxGeometry(0.19, 0.7, 0.06); var HighDoorGeometry = new Three.BoxGeometry(0.2, 0.2, 0.06); var glassGeometry = new Three.BoxGeometry(0.2, 0.5, 0.05); var LowDoorGeometry = new Three.BoxGeometry(0.59, 1.2, 0.06); var glassCoverVertical = new Three.BoxGeometry(0.01, 0.52, 0.064); var glassCoverHorizontal = new Three.BoxGeometry(0.224, 0.01, 0.064); var lowCoverDoor = new Three.Mesh(lowBaseDoorGeometry, green); var middleDoor1 = new Three.Mesh(MiddleDoorGeometry1, green); var middleDoor2 = new Three.Mesh(MiddleDoorGeometry2, green); var baseDoor = new Three.Mesh(LowDoorGeometry, green); var middleCoverDoor1 = new Three.Mesh(middleBaseDoorGeometry, green); var middleCoverDoor2 = new Three.Mesh(middleBaseDoorGeometry, green); var highCoverDoor = new Three.Mesh(highBaseDoorGeometry, green); var highDoor = new Three.Mesh(HighDoorGeometry, green); var borderCoverDoor1 = new Three.Mesh(BorderCoverDoorGeometry1, green); var borderCoverDoor2 = new Three.Mesh(BorderCoverDoorGeometry2, green); var glass = new Three.Mesh(glassGeometry, turquoise); var glassVerticalCover1 = new Three.Mesh(glassCoverVertical, green); var glassVerticalCover2 = new Three.Mesh(glassCoverVertical, green); var glassHorizontalCover1 = new Three.Mesh(glassCoverHorizontal, green); var glassHorizontalCover2 = new Three.Mesh(glassCoverHorizontal, green); lowCoverDoor.position.set(-(0.6 - 0.59) / 2, 0, -0.05 / 2); middleCoverDoor1.position.set(-0.2, 1.2 / 2 + 0.7 / 2, 0); middleCoverDoor2.position.set(0.2, 1.2 / 2 + 0.7 / 2, 0); highCoverDoor.position.set(0, (0.5 + 0.2) / 2, -0.05 / 2); highDoor.position.set(0, (0.5 + 0.2) / 2, -0.05 / 2 + 0.05 / 2); glass.position.set(-0.01 / 2, 1.2 / 2 + 0.5 / 2, 0); middleDoor2.position.z = 0.05 / 2; middleDoor1.position.set(0.005, 0, 0.05 / 2); borderCoverDoor1.position.set(-0.6 / 2, 0.7 / 2, 0); glassVerticalCover1.position.x = 0.2 / 2 + 0.014 / 2; glassVerticalCover2.position.x = -0.2 / 2 - 0.014 / 2; glassHorizontalCover1.position.y = 0.5 / 2 + 0.014 / 2; glassHorizontalCover2.position.y = -0.5 / 2 - 0.014 / 2; borderCoverDoor2.position.set(0.02 / 2, 0, -0.01 / 2); borderCoverDoor1.add(borderCoverDoor2); glass.add(highCoverDoor); glass.add(glassVerticalCover1); glass.add(glassVerticalCover2); glass.add(glassHorizontalCover1); glass.add(glassHorizontalCover2); glass.add(highCoverDoor); glass.add(highDoor); baseDoor.add(glass); middleCoverDoor1.add(middleDoor1); middleCoverDoor2.add(middleDoor2); lowCoverDoor.add(borderCoverDoor1); lowCoverDoor.add(middleCoverDoor1); lowCoverDoor.add(middleCoverDoor2); baseDoor.add(lowCoverDoor); door.add(baseDoor); door.scale.x = 0.9; return door; } var _default = exports["default"] = { name: 'Double Panic Door', prototype: 'holes', info: { tag: ['door'], title: 'Double Panic Door', description: 'iron door', image: '/assets/img/svg/doors_closet.svg' }, properties: { width: { label: 'width', type: 'length-measure', defaultValue: { length: 200, unit: 'cm' } }, height: { label: 'height', type: 'length-measure', defaultValue: { length: 215, unit: 'cm' } }, thickness: { label: 'thickness', type: 'length-measure', defaultValue: { length: 6, unit: 'cm' } }, altitude: { label: 'altitude', type: 'length-measure', defaultValue: { length: 0, unit: 'cm' } }, flip_horizontal: { label: 'flip', type: 'checkbox', defaultValue: false, values: { none: false, yes: true } } }, render2D: function render2D(element, layer, scene) { var STYLE_HOLE_BASE = { stroke: 'rgb(73, 73, 73)', strokeWidth: '1px', strokeDasharray: '9,5', fill: 'rgb(73, 73, 73)' }; var STYLE_HOLE_SELECTED = { stroke: '#0096fd', strokeWidth: '1px', strokeDasharray: '9,5', fill: '#0096fd', cursor: 'move' }; var STYLE_ARC_BASE = { stroke: 'rgb(73, 73, 73)', strokeWidth: '1px', strokeDasharray: '9,5', fill: 'none' }; var STYLE_ARC_SELECTED = { stroke: '#0096fd', strokeWidth: '1px', strokeDasharray: '9,5', fill: 'none', cursor: 'move' }; var STYLE_STR0 = { fill: 'rgb(185, 185, 185)', stroke: '#494949', strokeWidth: '1', strokeMiterlimit: '2.61313' }; var STYLE_STR0_S = { fill: 'rgb(185, 185, 185)', stroke: '#0096fd', strokeWidth: '1', strokeMiterlimit: '2.61313' }; var STYLE_STR1 = { fill: 'none', stroke: '#494949', strokeWidth: '1', strokeLinecap: 'round', strokeLinejoin: 'round', strokeMiterlimit: '2.61313', strokeDasharray: '23.860041 11.930021' }; var STYLE_FILL2 = { fill: '#1183B7' }; var STYLE_FNT0 = { fill: 'white', fontWeight: 'normal', fontSize: '13px', fontFamily: 'Proxima Nova Rg' }; var epsilon = 3; var lineWidth = 15; var flip = element.properties.get('flip_horizontal'); var holeWidth = element.properties.get('width').get('length'); var holePath = "M".concat(0, " ", -epsilon, " L").concat(holeWidth, " ").concat(-epsilon, " L").concat(holeWidth, " ").concat(epsilon, " L", 0, " ").concat(epsilon, " z"); var arcPath = "M".concat(0, ",", 0, " A", holeWidth / 2, ",").concat(holeWidth / 2, " 0 0,1 ").concat(holeWidth / 2, ",").concat(holeWidth / 2); var arcPath2 = "M".concat(0, ",", 0, " A", holeWidth / 2, ",").concat(holeWidth / 2, " 0 0,0 ").concat(holeWidth / 2, ",").concat(holeWidth / 2); var holeStyle = element.selected ? STYLE_HOLE_SELECTED : STYLE_HOLE_BASE; var arcStyle = element.selected ? STYLE_ARC_SELECTED : STYLE_ARC_BASE; var rectStyle = element.selected ? STYLE_STR0_S : STYLE_STR0; var length = element.properties.get('width').get('length'); if (flip) { return /*#__PURE__*/_react["default"].createElement("g", { transform: "translate(".concat(-element.properties.get('width').get('length') / 2, ", 0)") }, /*#__PURE__*/_react["default"].createElement("path", { key: "1", d: arcPath, style: arcStyle, transform: "translate(".concat(0, ",", -holeWidth / 2, ")") }), /*#__PURE__*/_react["default"].createElement("line", { key: "2", x1: 0, y1: 0 - epsilon, x2: 0, y2: -holeWidth / 2 - epsilon, style: holeStyle }), /*#__PURE__*/_react["default"].createElement("path", { key: "3", d: arcPath2, style: arcStyle, transform: "translate(".concat(holeWidth, ",").concat(-holeWidth / 2, ") rotate(90)") }), /*#__PURE__*/_react["default"].createElement("line", { key: "4", x1: holeWidth, y1: 0 - epsilon, x2: holeWidth, y2: -holeWidth / 2 - epsilon, style: holeStyle }), /*#__PURE__*/_react["default"].createElement("rect", { style: rectStyle, x: "0", y: -lineWidth / 2, width: holeWidth, height: lineWidth })); } else { return /*#__PURE__*/_react["default"].createElement("g", { transform: "translate(".concat(-element.properties.get('width').get('length') / 2, ", 0)") }, /*#__PURE__*/_react["default"].createElement("path", { key: "1", d: arcPath, style: arcStyle, transform: "translate(".concat(holeWidth, ",").concat(holeWidth / 2, ") rotate(180)") }), /*#__PURE__*/_react["default"].createElement("line", { key: "2", x1: 0, y1: 0 - epsilon, x2: 0, y2: holeWidth / 2 - epsilon, style: holeStyle }), /*#__PURE__*/_react["default"].createElement("path", { key: "3", d: arcPath2, style: arcStyle, transform: "translate(".concat(0, ",", holeWidth / 2, ") rotate(270)") }), /*#__PURE__*/_react["default"].createElement("line", { key: "4", x1: holeWidth, y1: 0 - epsilon, x2: holeWidth, y2: holeWidth / 2 - epsilon, style: holeStyle }), /*#__PURE__*/_react["default"].createElement("rect", { style: rectStyle, x: "0", y: -lineWidth / 2, width: holeWidth, height: lineWidth })); } }, render3D: function render3D(element, layer, scene) { var flip = element.properties.get('flip_horizontal'); var width = element.properties.get('width').get('length'); var height = element.properties.get('height').get('length'); var thickness = element.properties.get('thickness').get('length'); var newAltitude = element.properties.get('altitude').get('length'); var panicDoorDouble = new Three.Object3D(); panicDoorDouble.add(makePanicDoor().clone()); var valuePosition = new Three.Box3().setFromObject(panicDoorDouble); var deltaX = Math.abs(valuePosition.max.x - valuePosition.min.x); var deltaY = Math.abs(valuePosition.max.y - valuePosition.min.y); var deltaZ = Math.abs(valuePosition.max.z - valuePosition.min.z); if (element.selected) { var boundingBox = new Three.BoxHelper(panicDoorDouble, 0x99c3fb); boundingBox.material.linewidth = 5; boundingBox.renderOrder = 1000; boundingBox.material.depthTest = false; panicDoorDouble.add(boundingBox); } if (flip) panicDoorDouble.rotation.y += Math.PI; panicDoorDouble.position.y += newAltitude; panicDoorDouble.scale.set(width / deltaX, height / deltaY, thickness / deltaZ); return Promise.resolve(panicDoorDouble); } }; module.exports = exports.default;