{"version":3,"sources":["components/Header/Header.module.css","elements/DimInput/DimInput.module.css","components/4ColdSpots/ColdSpots.module.css","components/5FloorType/FloorType.module.css","components/Preloader/Preloader.module.css","components/Nav/Nav.module.css","components/1Start/Start.module.css","components/2RoomShape/RoomShape.module.css","components/7Result/Result.module.css","redux/buttonsReducer.js","redux/shapesReducer.js","redux/roomReducer.js","redux/coldSpotsReducer.js","redux/anglesReducer.js","redux/coldSpotsPoints.js","redux/thermostatReducer.js","redux/floorChecksReducer.js","redux/stageImgReducer.js","redux/resultReducer.js","redux/reducers.js","img/veria-logo.png","components/Header/Header.jsx","components/Nav/Nav.jsx","calculator/superSnake.js","components/1Start/Start.jsx","img/ractangular.svg","img/ractangular-l-type.svg","img/ractangular-t-type.svg","components/2RoomShape/RoomShape.jsx","components/0Modal/Modal.jsx","components/0Modal/ModalRoomSize.jsx","img/CornerButtons/CornerLine.svg","img/CornerButtons/SEcorner.svg","elements/CompassArrows/CompassArrows.svg","elements/CompassArrows/CompassArrows.jsx","elements/DimInput/DimInput.jsx","components/PlanMaker/PlanMakerL.jsx","components/PlanMaker/PlanMakerT.jsx","components/PlanMaker/PlanMakerR.jsx","components/3RoomSize/RoomSize.jsx","img/frame_with_coldspot.png","img/frame_with_coldspot_wrong_position.png","img/ColdSpotIcons/squareWhite.svg","img/ColdSpotIcons/squareGrey.svg","img/ColdSpotIcons/triangle1white.svg","img/ColdSpotIcons/triangle1grey.svg","img/ColdSpotIcons/triangle2white.svg","img/ColdSpotIcons/triangle2grey.svg","img/ColdSpotIcons/triangle3white.svg","img/ColdSpotIcons/triangle3grey.svg","img/ColdSpotIcons/triangle4white.svg","img/ColdSpotIcons/triangle4grey.svg","components/4ColdSpots/ColdSpots.jsx","img/laminate.jpg","img/parquet.jpg","img/unburnable.jpg","img/burnable-wood.jpg","calculator/helpers.js","components/7Result/MatFinder.js","img/Preloader/spinner.svg","components/Preloader/Preloader.jsx","components/5FloorType/FloorType.jsx","components/6Thermostat/Thermostat.jsx","img/ThermostatButton/thermostat.svg","components/6Thermostat/Placement.jsx","img/MatGroups/5v.svg","img/MatGroups/5h.svg","img/MatGroups/5vAlt.svg","img/MatGroups/5hAlt.svg","img/MatGroups/4v.svg","img/MatGroups/4h.svg","img/MatGroups/4vAlt.svg","img/MatGroups/4hAlt.svg","img/MatGroups/3v.svg","img/MatGroups/3h.svg","img/MatGroups/3vAlt.svg","img/MatGroups/3hAlt.svg","img/MatGroups/2v.svg","img/MatGroups/2h.svg","img/MatGroups/2vAlt.svg","img/MatGroups/2hAlt.svg","img/MatGroups/1v.svg","img/MatGroups/1h.svg","img/MatGroups/1vAlt.svg","img/MatGroups/1hAlt.svg","components/0Modal/ModalPartsList.jsx","img/forPDF/PDFheader.png","components/PDF/PDF.jsx","components/PDF/newPDF.jsx","components/7Result/Result.jsx","App.js","i18n.js","index.js","components/PlanMaker/PlanMaker.module.css","elements/CompassArrows/CompassArrows.module.css","components/6Thermostat/Thermostat.module.css","components/0Modal/Modal.module.css"],"names":["module","exports","UPDATE_BUTTON","buttonsInitialState","undefined","updateButton","page","type","payload","UPDATE_SHAPE","shapesInitialState","R","L","T","UPDATE_ROOM","roomCoordinatesInitialState","updateRoom","room","UPDATE_COLDSPOTS","coldSpotsInitialState","UPDATE_ANGLES","anglesInitialState","updateAngles","angles","UPDATE_POINTS","pointsInitialState","UPDATE_THERMOSTAT","thermostatInitialState","x","y","UPDATE_CHECKS","checksInitialState","topLaminate","topParquet","subUnburnable","subBurnable","UPDATE_IMG","UPDATE_RESULT","resultInitialState","reducers","combineReducers","buttons","state","action","tempState","i","length","coldSpots","shapes","key","points","result","thermostat","checks","stageImg","Header","i18n","useTranslation","changeLanguage","lng","useState","selected","setSelected","useEffect","className","s","flags","onSelect","code","countries","customLabels","selectedSize","optionsSize","src","veria","alt","Nav","useDispatch","t","useSelector","to","onClick","btn","btnStart","active","btnResult","activeResult","dist","a","b","Math","sqrt","pow","wireLength","path","isWayFree","startPoint","endPoint","walls","checkIntersection","findDirect","pitStops","directPitStop","findNextPit","resultPitStop","weakSnake","stops","resultPath","push","currentPitStop","_","cloneDeep","j","splice","e","twoWaySnake","snakeForward","snakeBack","wiresCombinations","arr","addThermo","inputArr","results","permute","memoZ","cur","memo","concat","slice","permutator","cords","snake","cL","c2","round","rest","Start","console","log","dispatch","href","target","slider","slide","slide1","slide2","slide3","btnNextStep","RoomShape","handleClick","shape","updateShape","shapeR","btnShapeSelection","shapeL","shapeT","Modal","setActive","children","modal","modal__content","stopPropagation","ModalRoomSize","CompassArrows","props","compass","style","top","point","left","visibility","visible","compassArrow","backgroundImage","transform","DimInput","dimInput","value","toString","onChange","setter","onKeyPress","autoFocus","onBlur","PlanMakerL","minDist","maxWidth","maxHeight","modalActive","setModalActive","imgDiagonal","angIcon01","setAngIcon01","angIcon02","setAngIcon02","angIcon03","setAngIcon03","angIcon04","setAngIcon04","angIcon07","setAngIcon07","labVis","setLabVis","anglesMode","setAnglesMode","compassVisible","setCompassVisible","compassPoint","setCompassPoint","square","setSquare","pos00","pos01shadow","setPos01shadow","pos01","setPos01","pos02shadow","setPos02shadow","pos02","setPos02","pos03shadow","setPos03shadow","pos03","setPos03","pos04shadow","setPos04shadow","pos04","setPos04","pos07shadow","setPos07shadow","pos07","setPos07","pos00angled","pos01angled","setPos01angled","pos02angled","setPos02angled","pos03angled","setPos03angled","pos04angled","setPos04angled","pos07angled","setPos07angled","dim00to01SeditMode","setDim00to01SeditMode","dim01to02SeditMode","setDim01to02SeditMode","dim02to03SeditMode","setDim02to03SeditMode","dim03to04SeditMode","setDim03to04SeditMode","dim04to07SeditMode","setDim04to07SeditMode","dim07to00editMode","setDim07to00editMode","dim00to01Svalue","setDim00to01Svalue","dim01to02Svalue","setDim01to02Svalue","dim02to03Svalue","setDim02to03Svalue","dim03to04Svalue","setDim03to04Svalue","dim04to07Svalue","setDim04to07Svalue","dim07to00value","setDim07to00value","planMaker","butT","ang","imgCorner","pointStart","id","onDrag","d","deltaX","deltaY","position","onStart","onStop","bounds","right","bottom","max","dimensions","dimContainer","newValue","oldValue","maxDelta","min0to1","min4to7","minDelta","delta","onDoubleClick","min2to3","min1to2","min7to0","min3to4","width","height","closed","stroke","strokeWidth","fillLinearGradientStartPoint","fillLinearGradientEndPoint","fillLinearGradientColorStops","background","toFixed","PlanMakerT","angIcon05","setAngIcon05","angIcon06","setAngIcon06","pos05shadow","setPos05shadow","pos05","setPos05","pos06shadow","setPos06shadow","pos06","setPos06","pos05angled","setPos05angled","pos06angled","setPos06angled","dim04to05SeditMode","setDim04to05SeditMode","dim05to06SeditMode","setDim05to06SeditMode","dim06to07SeditMode","setDim06to07SeditMode","dim04to05Svalue","setDim04to05Svalue","dim05to06Svalue","setDim05to06Svalue","dim06to07Svalue","setDim06to07Svalue","PlanMakerR","dim00to03SeditMode","setDim00to03SeditMode","dim00to03Svalue","setDim00to03Svalue","min0to3","RoomSize","ColdSpots","spots","modalHelpActive","setModalHelpActive","setWidth","setHeight","figure","setFigure","currentColdSpot","setCurrentColdSpot","squareGrey","figure01picture","setFigure01picture","triangle1white","figure02picture","setFigure02picture","triangle2white","figure03picture","setFigure03picture","triangle3white","figure04picture","setFigure04picture","triangle4white","figure05picture","setFigure05picture","A","B","C","D","color","onDragMove","spot00","setSpot00","spot01","setSpot01","spot02","setSpot02","spot03","setSpot03","spot04","setSpot04","points00","setPoints00","points01","setPoints01","points02","setPoints02","points03","setPoints03","points04","setPoints04","pointsForResult","updatePoints","handleDragMove00","stage","getStage","layer","findOne","layer2","getIntersection","handleDragMove01","vi","handleDragMove02","handleDragMove03","handleDragMove04","name","opacity","fill","draggable","method","squareWhite","triangle1grey","triangle2grey","triangle3grey","triangle4grey","pts","coldSpot","coldSpotWrong","RoomTransformer","ColdSpotsTransformer","Bulldozer","poly","Bomb","isGroupInsideRoom","groupX0","groupY0","group","pointInPolygon","w","h","YinYang","CS","gX0","gY0","lSI","x1","y1","x2","y2","x3","y3","x4","y4","a_dx","a_dy","b_dx","b_dy","doesOneGroupSideIntersectCS","doCSandGroupIntersect","doesAnyCSOverlapGroup","CSarray","overlap","MatFinder","spotsArray","thermoOut","burnable","headVertical","headHorizontal","needToSearch","resultMats","resultCuts","entryPoints","entryPointsAlternative","cE","connectors","area","list","superMass","columnsDown","startRowGrowDown","col","rowDown","columnsUp","startRowGrowUp","rowUp","rowsLeft","startColumnGrowLeft","row","columnLeft","rowsRight","startColumnGrowRight","columnRight","index","sum","icicle","growDirection","isRectangular","z","waysCombinations","creatingSuperMegaArrayOfCombinations","arr1","arr2","count","deleted","loop","temp","pop","entriesCombinations","spotsForWalls","city","BulldozerSquad","wallsFromRoom","RoomReshaper","roomCorners","BombForRoom","pit2","spotsForPitStops","mat","pit3","corners","pit4","abs","pathLengthHamster","resultLength","pit5","pitStopsNoDoubles","resultTemp","loop1","loop2","pitStopsCleaner","best","bestPath","connectorsAndNumbers","numbers","connectorsFarm","pit6","snakesNest","pStops","snakesNestMaker","cordsArray","c025","c1","cord","cordCalc","Preloader","preloader","FloorType","setTopLaminate","setTopParquet","setSubUnburnable","setSubBurnable","selectColor","setSelectColor","continueVisible","setContinueVisible","updateChecks","laminate","checked","htmlFor","parquet","unburnable","Thermostat","Placement","startX","pos01s","pos02s","pos03s","pos04s","pos05s","pos06s","pos07s","center","thermX","setThermX","thermY","setThermY","setLeft","setRight","startY","setTop","setBottom","updateThermostat","thermostat3","sector","cursor","Deg","PI","startDegFromAxisX","atan","degree","currentDeg","map","spot","ModalPartsList","Object","keys","StyleSheet","create","flexDirection","backgroundColor","section","margin","padding","flexGrow","Result","useImage","thermoImg","image","massGroup","loading","setLoading","loadingTimer","setTimeout","clearTimeout","handleModalClick","nestXX","listOfParts","nest","nestToDraw","cord025","cord1","cord2","mat2_55","mat3_55","mat4_55","mat5_55","kit55","mat2_100","mat3_100","mat4_100","mat5_100","kit100","modalPartsActive","setModalPartsActive","stageRef","useRef","pdfLink","setPdfLink","handleEnter","event","dataURL","current","toDataURL","pixelRatio","styles","marginTop","marginBottom","sectionGrey","borderRadius","disclaimer","paddingTop","paddingBottom","text1","fontSize","text2","text16","text20","textBold","fontWeight","r","heatedArea","topFloor","subFloor","PDF2","size","document","fileName","blob","url","error","pdf","toBlob","generatePDFDocument","then","ref","tail","globalCompositeOperation","connector","text","fontFamily","scale","App","exact","component","use","Backend","initReactI18next","init","react","useSuspense","fallbackLng","debug","interpolation","escapeValue","store","createStore","window","ReactDOM","render","getElementById"],"mappings":"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","file":"static/js/main.2ad9e719.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"flags\":\"Header_flags__1HrH7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"dimInput\":\"DimInput_dimInput__1Eyut\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"btnNextStep\":\"ColdSpots_btnNextStep__1nvKS\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"btnNextStep\":\"FloorType_btnNextStep__2QDSY\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"preloader\":\"Preloader_preloader__1gDar\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"btn\":\"Nav_btn__bzZKZ\",\"btnStart\":\"Nav_btnStart__1dNtk\",\"btnResult\":\"Nav_btnResult__2-ED6\",\"active\":\"Nav_active__FTHxC\",\"activeResult\":\"Nav_activeResult__BDEyv\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"btnNextStep\":\"Start_btnNextStep__BBmgw\",\"slider\":\"Start_slider__1CKGN\",\"animate\":\"Start_animate__27iPB\",\"slide\":\"Start_slide__1-Kil\",\"slide1\":\"Start_slide1__3zqK5\",\"slide2\":\"Start_slide2__3lYP9\",\"slide3\":\"Start_slide3__1qqqd\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"btnShapeSelection\":\"RoomShape_btnShapeSelection__2PfnU\",\"active\":\"RoomShape_active__1P6LZ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"thermostat\":\"Result_thermostat__1fHIx\",\"red\":\"Result_red__30MFZ\"};","// Constants\r\nconst UPDATE_BUTTON = \"UPDATE_BUTTON\";\r\n\r\n\r\n//Initial state\r\nlet buttonsInitialState = [undefined, true, false, false, false, false, false, false];\r\n\r\n//Action creators\r\nexport const updateButton = page => {\r\n return ({type: UPDATE_BUTTON, payload: page})\r\n}\r\n\r\n//Buttons reducer\r\nexport const buttons = (state = buttonsInitialState, action) => {\r\n switch (action.type) {\r\n case UPDATE_BUTTON:\r\n let tempState = [];\r\n for (let i = 1; i < buttonsInitialState.length; i++) {\r\n tempState[i] = i <= action.payload\r\n }\r\n return tempState;\r\n\r\n default:\r\n return state;\r\n }\r\n}","// Constants\r\nconst UPDATE_SHAPE = \"UPDATE_SHAPE\";\r\n\r\n\r\n//Initial state\r\nlet shapesInitialState = {\r\n R: false,\r\n L: false,\r\n T: false,\r\n\r\n}\r\n\r\n\r\n\r\n//Action creators\r\nexport const updateShape = shape => {\r\n return ({type: UPDATE_SHAPE, payload: shape})\r\n}\r\n\r\n//Buttons reducer\r\nexport const shapes = (state = shapesInitialState, action) => {\r\n switch (action.type) {\r\n case UPDATE_SHAPE:\r\n\r\n for (let key in state) {\r\n state[key] = key === action.payload;\r\n }\r\n return state;\r\n\r\n default:\r\n return state;\r\n }\r\n}","// Constants\r\nconst UPDATE_ROOM = \"UPDATE_ROOM\";\r\n\r\n//Initial state\r\nlet roomCoordinatesInitialState = [];\r\n\r\n//Action creators\r\nexport const updateRoom = room => {\r\n return ({type: UPDATE_ROOM, payload: room})\r\n}\r\n\r\n//Buttons reducer\r\nexport const room = (state = roomCoordinatesInitialState, action) => {\r\n switch (action.type) {\r\n case UPDATE_ROOM:\r\n state = action.payload\r\n return state;\r\n\r\n default:\r\n return state;\r\n }\r\n}","// Constants\r\nconst UPDATE_COLDSPOTS = \"UPDATE_COLDSPOTS\";\r\nconst ADD_COLDSPOT = \"ADD_COLDSPOT\";\r\n\r\n//Initial state\r\nlet coldSpotsInitialState = [{}, {}, {}, {}, {}];\r\n\r\n//Action creators\r\nexport const updateColdSpots = coldSpots => {\r\n return ({type: UPDATE_COLDSPOTS, payload: coldSpots})\r\n}\r\n\r\n//Buttons reducer\r\nexport const coldSpots = (state = coldSpotsInitialState, action) => {\r\n switch (action.type) {\r\n case UPDATE_COLDSPOTS:\r\n state = action.payload\r\n return state;\r\n\r\n default:\r\n return state;\r\n }\r\n}","// Constants\r\nconst UPDATE_ANGLES = \"UPDATE_ANGLES\";\r\n\r\n//Initial state\r\nlet anglesInitialState = [false, false, false, false, false, false, false, false];\r\n\r\n//Action creators\r\nexport const updateAngles = angles => {\r\n return ({type: UPDATE_ANGLES, payload: angles})\r\n}\r\n\r\n//Buttons reducer\r\nexport const angles = (state = anglesInitialState, action) => {\r\n switch (action.type) {\r\n case UPDATE_ANGLES:\r\n state = action.payload\r\n return state;\r\n\r\n default:\r\n return state;\r\n }\r\n}","// Constants\r\nconst UPDATE_POINTS = \"UPDATE_POINTS\";\r\n\r\n//Initial state\r\nlet pointsInitialState = [];\r\n\r\n//Action creators\r\nexport const updatePoints = points => {\r\n return ({type: UPDATE_POINTS, payload: points})\r\n}\r\n\r\n//Buttons reducer\r\nexport const points = (state = pointsInitialState, action) => {\r\n switch (action.type) {\r\n case UPDATE_POINTS:\r\n state = action.payload\r\n return state;\r\n\r\n default:\r\n return state;\r\n }\r\n}","// Constants\r\nconst UPDATE_THERMOSTAT = \"UPDATE_THERMOSTAT\";\r\n\r\n//Initial state\r\nlet thermostatInitialState = {x: 0, y: 0};\r\n\r\n//Action creators\r\nexport const updateThermostat = thermostat => {\r\n return ({type: UPDATE_THERMOSTAT, payload: thermostat})\r\n}\r\n\r\n//Buttons reducer\r\nexport const thermostat = (state = thermostatInitialState, action) => {\r\n switch (action.type) {\r\n case UPDATE_THERMOSTAT:\r\n state = action.payload\r\n return state;\r\n\r\n default:\r\n return state;\r\n }\r\n}","// Constants\r\nconst UPDATE_CHECKS = \"UPDATE_CHECKS\";\r\n\r\n//Initial state\r\nlet checksInitialState = {\r\n topLaminate: false,\r\n topParquet: false,\r\n subUnburnable: false,\r\n subBurnable: false\r\n}\r\n\r\n//Action creators\r\nexport const updateChecks = checks => {\r\n return ({type: UPDATE_CHECKS, payload: checks})\r\n}\r\n\r\n//Checks reducer\r\nexport const checks = (state = checksInitialState, action) => {\r\n switch (action.type) {\r\n case UPDATE_CHECKS:\r\n state = action.payload\r\n return state;\r\n\r\n default:\r\n return state;\r\n }\r\n}","// Constants\r\nconst UPDATE_IMG = \"UPDATE_IMG\";\r\n\r\n//Initial state\r\nlet stageImgInitialState = '';\r\n\r\n//Action creators\r\nexport const updateImg = URL => {\r\n return ({type: UPDATE_IMG, payload: URL})\r\n}\r\n\r\n//Buttons reducer\r\nexport const stageImg = (state = stageImgInitialState, action) => {\r\n switch (action.type) {\r\n case UPDATE_IMG:\r\n state = action.payload\r\n return state;\r\n\r\n default:\r\n return state;\r\n }\r\n}","// Constants\r\nconst UPDATE_RESULT = \"UPDATE_RESULT\";\r\n\r\n//Initial state\r\nlet resultInitialState = [[],[],[],[],false];\r\n\r\n//Action creators\r\nexport const updateResult = result => {\r\n return ({type: UPDATE_RESULT, payload: result})\r\n}\r\n\r\n//Buttons reducer\r\nexport const result = (state = resultInitialState, action) => {\r\n switch (action.type) {\r\n case UPDATE_RESULT:\r\n state = action.payload\r\n return state;\r\n\r\n default:\r\n return state;\r\n }\r\n}","import {combineReducers} from 'redux';\r\nimport {buttons} from \"./buttonsReducer\";\r\nimport {shapes} from \"./shapesReducer\";\r\nimport {room} from \"./roomReducer\";\r\nimport {coldSpots} from \"./coldSpotsReducer\";\r\nimport {angles} from \"./anglesReducer\";\r\nimport {points} from \"./coldSpotsPoints\";\r\nimport {thermostat} from \"./thermostatReducer\";\r\nimport {checks} from \"./floorChecksReducer\";\r\nimport {stageImg} from \"./stageImgReducer\";\r\nimport {result} from \"./resultReducer\";\r\n\r\nconst reducers = combineReducers({\r\n buttons,\r\n coldSpots,\r\n room,\r\n angles,\r\n shapes,\r\n points,\r\n result,\r\n thermostat,\r\n checks,\r\n stageImg\r\n})\r\n\r\nexport default reducers;\r\n","export default \"data:image/png;base64,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\"","import React, {useEffect, useState} from 'react';\r\nimport ReactFlagsSelect from 'react-flags-select';\r\nimport s from \"./Header.module.css\"\r\n\r\nimport '../../styles/main.css';\r\nimport '../../styles/modals.css';\r\nimport veria from \"../../img/veria-logo.png\";\r\n\r\nimport {useTranslation} from \"react-i18next\";\r\n\r\nconst Header = () => {\r\n\r\n const {i18n} = useTranslation();\r\n\r\n const changeLanguage = lng => {\r\n i18n.changeLanguage(lng);\r\n };\r\n\r\n const [selected, setSelected] = useState('GB');\r\n\r\n useEffect(() => {\r\n switch (selected) {\r\n case \"GB\":\r\n changeLanguage(\"en\")\r\n break;\r\n case \"NO\":\r\n changeLanguage(\"no\")\r\n break;\r\n default:\r\n changeLanguage(\"en\")\r\n }\r\n }, [selected])\r\n\r\n return (\r\n
\r\n
\r\n
\r\n

EasyPlan Clickmat

\r\n

EasyPlan Clickmat

\r\n
\r\n setSelected(code)}\r\n countries={[\"GB\", \"NO\"]}\r\n customLabels={{\"GB\": \"EN\", \"NO\": \"NO\"}}\r\n selectedSize={12}\r\n optionsSize={12}/>\r\n
\r\n \"veria\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Header;\r\n","import React from 'react';\r\nimport {useSelector, useDispatch} from \"react-redux\";\r\nimport {HashLink as Link} from 'react-router-hash-link';\r\n\r\nimport {updateButton} from \"../../redux/buttonsReducer\";\r\n\r\nimport '../../styles/main.css';\r\nimport '../../styles/modals.css';\r\nimport s from './Nav.module.css';\r\nimport {useTranslation} from \"react-i18next\";\r\n\r\nconst Nav = () => {\r\n\r\n const dispatch = useDispatch();\r\n const {t} = useTranslation();\r\n\r\n let buttons = useSelector(state => state.buttons);\r\n\r\n const handleClick = (page) => {\r\n //dispatch(updateButton(page))\r\n }\r\n\r\n return (\r\n
\r\n handleClick(1)} className={`${s.btn} ${s.btnStart}`}>\r\n {t(\"start\")}\r\n \r\n handleClick(2)} className={`${s.btn} ${buttons[2] && s.active}`}>\r\n {t(\"room_shape\")}\r\n \r\n handleClick(3)} className={`${s.btn} ${buttons[3] && s.active}`}>\r\n {t(\"room_size\")}\r\n \r\n handleClick(4)} className={`${s.btn} ${buttons[4] && s.active}`}>\r\n {t(\"cold_spots\")}\r\n \r\n handleClick(5)} className={`${s.btn} ${buttons[5] && s.active}`}>\r\n {t(\"thermostat\")}\r\n \r\n handleClick(6)} className={`${s.btn} ${buttons[6] && s.active}`}>\r\n {t(\"floor_type\")}\r\n \r\n handleClick(7)} className={`${s.btn} ${s.btnResult} ${buttons[7] && s.activeResult}`}>\r\n {t(\"result\")}\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default Nav;\r\n","import {checkIntersection} from \"line-intersect\"; //checks if two segments intersect\r\nimport _ from 'lodash'; //lodash...\r\n\r\n//distance between two points\r\nexport const dist = (a, b) => Math.sqrt(Math.pow(a[0] - b[0], 2) + Math.pow(a[1] - b[1], 2))\r\n\r\n//wire length between two points\r\nexport const wireLength = path => {\r\n let result = 0;\r\n for (let i = 0; i < path.length - 1; i++) {\r\n result += dist(path[i], path[i + 1])\r\n }\r\n return result;\r\n}\r\n//finding closet point\r\nexport const findClosest = (p, array) => array[array.map(el => dist(p, el)).indexOf(Math.min(...array.map(el => dist(p, el))))]\r\n\r\n//finding out if two points may connected directly without intersecting any wall\r\nexport const isWayFree = (startPoint, endPoint, walls) => {\r\n if ((!walls) || (walls.length === 0)) {\r\n return true\r\n }\r\n for (let i = 0; i < walls.length; i++) {\r\n if (checkIntersection(startPoint[0], startPoint[1], endPoint[0], endPoint[1],\r\n walls[i][0], walls[i][1], walls[i][2], walls[i][3]).type === \"intersecting\") {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n\r\nexport const findDirect = (startPoint, endPoint, pitStops, walls) => {\r\n let directPitStop = [];\r\n for (let i = 0; i < pitStops.length; i++) {\r\n if ((isWayFree(startPoint, pitStops[i], walls)) && (isWayFree(pitStops[i], endPoint, walls))\r\n && ((directPitStop.length === 0)\r\n || (\r\n (dist(startPoint, pitStops[i]) + dist(pitStops[i], endPoint)) < (dist(startPoint, directPitStop) + dist(directPitStop, endPoint))\r\n )\r\n )\r\n ) {\r\n directPitStop = pitStops[i];\r\n }\r\n }\r\n return directPitStop;\r\n}\r\n\r\n\r\n//find closest to the endPoint pitStop that can be reached directly\r\nexport const findNextPit = (startPoint, endPoint, pitStops, walls) => {\r\n //checking if there is a direct single pitStop\r\n let resultPitStop = findDirect(startPoint, endPoint, pitStops, walls)\r\n if (resultPitStop.length > 0) {\r\n return resultPitStop\r\n }\r\n //if no direct single pitStop, than looking for a closet one to endPoint\r\n for (let i = 0; i < pitStops.length; i++) {\r\n if (isWayFree(startPoint, pitStops[i], walls)) {\r\n if (resultPitStop.length === 0 ||\r\n (dist(startPoint, pitStops[i]) + dist(pitStops[i], endPoint)) < (dist(startPoint, resultPitStop) + dist(resultPitStop, endPoint))\r\n ) {\r\n resultPitStop = pitStops[i];\r\n }\r\n }\r\n }\r\n return resultPitStop;\r\n }\r\n\r\n//weakSnake - finding path without optimization\r\n export const weakSnake = (startPoint, endPoint, stops, walls) => {\r\n let resultPath = [];\r\n try {\r\n resultPath.push(startPoint);\r\n let currentPitStop = [...startPoint];\r\n let pitStops = _.cloneDeep(stops)\r\n for (let i = 0; i < pitStops.length; i++) {\r\n if (isWayFree(currentPitStop, endPoint, walls)) {\r\n resultPath.push(endPoint);\r\n return resultPath;\r\n } else {\r\n currentPitStop = [...findNextPit(currentPitStop, endPoint, pitStops, walls)]\r\n if (currentPitStop.length !== 0) {\r\n resultPath.push(currentPitStop);\r\n }\r\n for (let j = 0; j < pitStops.length; j++) {\r\n if ((pitStops[j][0] === currentPitStop[0]) && (pitStops[j][1] === currentPitStop[1])) {\r\n pitStops.splice(j, 1)\r\n }\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n resultPath = [startPoint, endPoint]\r\n }\r\n return resultPath;\r\n }\r\n\r\n//removing excess points\r\n export const normalSnake = (startPoint, endPoint, pitStops, walls) => {\r\n let resultPath = weakSnake(startPoint, endPoint, pitStops, walls)\r\n if (resultPath.length < 3) return resultPath;\r\n try {\r\n let count = resultPath.length\r\n for (let i = 0; i < count - 2; i++) {\r\n for (let j = 0; j < count - i - 2; j++) {\r\n if (isWayFree(resultPath[i], resultPath[count - 1 - j], walls)) {\r\n resultPath.splice(i + 1, count - j - i - 2)\r\n count = count - j - i - 2\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n resultPath = [startPoint, endPoint]\r\n }\r\n return resultPath;\r\n }\r\n\r\n export const twoWaySnake = (startPoint, endPoint, pitStops, walls) => {\r\n let snakeForward = weakSnake(startPoint, endPoint, pitStops, walls)\r\n let snakeBack = weakSnake(endPoint, startPoint, pitStops, walls)\r\n if (wireLength(snakeForward) < wireLength(snakeBack)) {\r\n return snakeForward\r\n } else {\r\n return snakeBack\r\n }\r\n }\r\n\r\n export const permutator = inputArr => {\r\n let results = [];\r\n const permute = (arr, memoZ) => {\r\n let cur, memo = memoZ || [];\r\n for (let i = 0; i < arr.length; i++) {\r\n cur = arr.splice(i, 1);\r\n if (arr.length === 0) {\r\n results.push(memo.concat(cur));\r\n }\r\n permute(arr.slice(), memo.concat(cur));\r\n arr.splice(i, 0, cur[0]);\r\n }\r\n return results;\r\n }\r\n return permute(inputArr);\r\n }\r\n\r\n export const addThermo = (arr, thermostat) => {\r\n let result = [];\r\n for (let i = 0; i < arr.length; i++) {\r\n result.push([])\r\n result[i].push([[null, null], thermostat])\r\n result[i].push(...arr[i])\r\n }\r\n return result;\r\n }\r\n export const wiresCombinations = (arr, thermostat) => addThermo(permutator(arr), thermostat)\r\n\r\n export const combinationLength = comb => {\r\n let result = 0;\r\n for (let i = 0; i < comb.length - 1; i++) {\r\n result += wireLength(comb[i][1], comb[i + 1][0])\r\n }\r\n return result;\r\n }\r\n\r\n//amount of cords for 1 snake\r\n export const cords = snake => {\r\n let cL = wireLength(snake) + 5 //cord length; 5 - extra 10cm\r\n let c2 = Math.round(cL - cL % 100) / 100\r\n let rest = cL - c2 * 100\r\n if (rest > 62.5) {\r\n return [0, 0, c2 + 1]\r\n }\r\n if (rest > 50) {\r\n return [1, 1, c2]\r\n }\r\n if (rest > 12.5) {\r\n return [0, 1, c2]\r\n }\r\n return [1, 0, c2]\r\n }\r\n\r\n//calculating amount of all cords\r\n export const cordCalc = arr => {\r\n let c025 = 0;\r\n let c1 = 0;\r\n let c2 = 0;\r\n for (let i = 0; i < arr.length; i++) {\r\n let cord = cords(arr[i])\r\n c025 += cord[0]\r\n c1 += cord[1]\r\n c2 += cord[2]\r\n }\r\n return [c025, c1, c2]\r\n }\r\n\r\n\r\n\r\n","import React from 'react';\r\nimport {useDispatch} from \"react-redux\";\r\nimport {HashLink as Link} from 'react-router-hash-link';\r\nimport {useTranslation} from \"react-i18next\";\r\n\r\nimport {updateButton} from \"../../redux/buttonsReducer\";\r\n\r\nimport s from './Start.module.css';\r\nimport {findDirect, isWayFree, weakSnake} from \"../../calculator/superSnake\";\r\n\r\n\r\nconst Start = () => {\r\n\r\n const start = [0, 0]\r\n const finish = [100, 100]\r\n const stops = [[10, 10], [10, 20], [10, 30], [10, 40], [10, 50], [10, 90], [50, 90], [90, 90], [18, 20], [18, 60]]\r\n const walls = [[20, 20, 80, 20], [80, 20, 80, 80], [80, 80, 20, 80], [20, 80, 20, 20], [0, 45, 15, 45]]\r\n\r\n console.log(findDirect(start, finish, stops, walls))\r\n\r\n /* const normSnake = (startPoint, endPoint, pitStops, walls) => {\r\n let resultPath = weakSnake(startPoint, endPoint, pitStops, walls)\r\n if (resultPath.length < 3) return resultPath;\r\n let count = resultPath.length\r\n console.log(resultPath)\r\n for (let i = 0; i < count - 2; i++) {\r\n for (let j = 0; j < count - i; j++) {\r\n if (isWayFree(resultPath[i], resultPath[count - 1 - j], walls)) {\r\n resultPath.splice(i + 1, count - j - i - 2)\r\n console.log(resultPath)\r\n count = count - j - i - 2\r\n }\r\n }\r\n }\r\n return resultPath;\r\n }\r\n\r\n console.log(normSnake(start, finish, stops, walls))*/\r\n\r\n const {t} = useTranslation();\r\n const dispatch = useDispatch();\r\n\r\n const handleClick = (page) => {\r\n dispatch(updateButton(page))\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n

{t(\"plan_your_room\")}

\r\n

{t(\"plan_your_room_text_p1\")}\r\n
\r\n {t(\"plan_your_room_text_p2\")}\r\n veriafloorheating.com\r\n

\r\n
\r\n
?
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n handleClick(2)} className={s.btnNextStep}>\r\n {t(\"room_shape\")}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Start;\r\n","export default __webpack_public_path__ + \"static/media/ractangular.db30a047.svg\";","export default __webpack_public_path__ + \"static/media/ractangular-l-type.5d3a8339.svg\";","export default __webpack_public_path__ + \"static/media/ractangular-t-type.66b65ae3.svg\";","import React from 'react';\r\nimport {useDispatch, useSelector} from \"react-redux\";\r\nimport {Redirect} from \"react-router\";\r\nimport {HashLink as Link} from \"react-router-hash-link\";\r\n\r\nimport shapeR from '../../img/ractangular.svg';\r\nimport shapeL from '../../img/ractangular-l-type.svg';\r\nimport shapeT from '../../img/ractangular-t-type.svg';\r\nimport s from \"./RoomShape.module.css\";\r\n\r\nimport {updateShape} from \"../../redux/shapesReducer\";\r\nimport {updateButton} from \"../../redux/buttonsReducer\";\r\nimport {updateRoom} from \"../../redux/roomReducer\";\r\nimport {updateAngles} from \"../../redux/anglesReducer\";\r\nimport {useTranslation} from \"react-i18next\";\r\n\r\nconst RoomShape = () => {\r\n\r\n const dispatch = useDispatch();\r\n const {t} = useTranslation();\r\n\r\n let shapes = useSelector(state => state.shapes);\r\n let buttons = useSelector(state => state.buttons);\r\n\r\n\r\n const handleClick = (page, shape) => {\r\n dispatch(updateButton(page))\r\n dispatch(updateShape(shape))\r\n dispatch(updateAngles([false, false, false, false, false, false, false, false]))\r\n if (shapes.R) dispatch(updateRoom([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 350, 0, 350, 0, 350, 300, 350, 300, 0, 300, 0, 300, 0, 300, 0, 300, 0, 300, 0, 300]))\r\n if (shapes.L) dispatch(updateRoom([0, 0, 150, 0, 150, 0, 150, 110,\r\n 150, 110, 350, 110, 350, 110, 350, 300,\r\n 350, 300, 0, 300, 0, 300, 0, 300, 0, 300, 0, 300, 0, 300]))\r\n if (shapes.T) dispatch(updateRoom([0, 0, 150, 0, 150, 0, 150, 110,\r\n 150, 110, 350, 110, 350, 110, 350, 240,\r\n 350, 240, 180, 240, 180, 240, 180, 300,\r\n 180, 300, 0, 300, 0, 300]))\r\n }\r\n\r\n if (!buttons[2]) return \r\n\r\n return (\r\n
\r\n
\r\n
\r\n

{t(\"select_room_shape\")}

\r\n

{t(\"select_room_shape_text_p1\")}\r\n
\r\n {t(\"select_room_shape_text_p2\")}

\r\n
\r\n
?
\r\n
\r\n
\r\n
\r\n
\r\n
\"rectangular\"/
\r\n handleClick(3, \"R\")}\r\n className={`${s.btnShapeSelection} ${shapes.R && s.active}`}\r\n >\r\n {t(\"rectangular\")}\r\n \r\n
\r\n
\r\n
\"rectangular-l\"/
\r\n handleClick(3, \"L\")}\r\n className={`${s.btnShapeSelection} ${shapes.L && s.active}`}\r\n >\r\n {t(\"L_shaped\")}\r\n \r\n
\r\n
\r\n
\"rectangular-t\"/
\r\n handleClick(3, \"T\")}\r\n className={`${s.btnShapeSelection} ${shapes.T && s.active}`}\r\n >\r\n {t(\"T_shaped\")}\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default RoomShape;\r\n","import React from 'react';\r\n\r\nimport '../../styles/main.css';\r\nimport '../../styles/modals.css';\r\nimport s from \"./Modal.module.css\";\r\n\r\nconst Modal = ({active, setActive, children}) => {\r\n return (\r\n
setActive(false)}>\r\n
e.stopPropagation()}>\r\n {children}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Modal;","import React from 'react';\r\nimport Modal from \"./Modal\";\r\nimport {useTranslation} from \"react-i18next\";\r\n\r\nconst ModalRoomSize = ({active, setActive}) => {\r\n\r\n const {t} = useTranslation();\r\n\r\n return (\r\n \r\n
\r\n

{t(\"adjusting_the_room_size\")}

\r\n setActive(false)}>\r\n
\r\n
\r\n

{t(\"how_to_adjust\")}

\r\n

{t(\"how_to_adjust_text\")}

\r\n

{t(\"how_to_add_wall\")}

\r\n

{t(\"how_to_add_wall_text\")}

\r\n

{t(\"show_hide_dimension_labels\")}

\r\n

{t(\"show_hide_dimension_labels_text\")}

\r\n
\r\n
setActive(false)}>ok
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default ModalRoomSize;\r\n","export default __webpack_public_path__ + \"static/media/CornerLine.7d8c19c1.svg\";","export default __webpack_public_path__ + \"static/media/SEcorner.e2edeb0b.svg\";","export default __webpack_public_path__ + \"static/media/CompassArrows.f60a6622.svg\";","import React from 'react';\r\nimport s from \"./CompassArrows.module.css\";\r\nimport compassArrow from \"./CompassArrows.svg\";\r\n\r\nconst CompassArrows = (props) => {\r\n return (\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default CompassArrows;\r\n","import React from 'react';\r\nimport s from \"./DimInput.module.css\";\r\n\r\nconst DimInput = (props) => {\r\n return (\r\n props.setter(e.target.value / 2)}\r\n onKeyPress={e => (e.key === \"Enter\") && props.action()}\r\n autoFocus={true}\r\n onBlur={props.action}/>\r\n );\r\n};\r\n\r\nexport default DimInput;\r\n","import React, {useRef, useEffect, useState} from 'react';\r\nimport s from './PlanMaker.module.css';\r\nimport Draggable from 'react-draggable';\r\nimport {HashLink as Link} from \"react-router-hash-link\";\r\nimport ModalRoomSize from \"../0Modal/ModalRoomSize\";\r\nimport {useDispatch, useSelector} from \"react-redux\";\r\nimport {updateButton} from \"../../redux/buttonsReducer\";\r\nimport imgDiagonal from '../../img/CornerButtons/CornerLine.svg';\r\nimport imgCorner from '../../img/CornerButtons/SEcorner.svg';\r\nimport CompassArrows from \"../../elements/CompassArrows/CompassArrows\";\r\nimport DimInput from \"../../elements/DimInput/DimInput\";\r\nimport {Stage, Layer, Star, Text, Line} from 'react-konva';\r\nimport {updateRoom} from \"../../redux/roomReducer\";\r\nimport {updateAngles} from \"../../redux/anglesReducer\";\r\nimport {useTranslation} from \"react-i18next\";\r\n\r\nconst PlanMakerL = () => {\r\n\r\n const {t} = useTranslation();\r\n\r\n const ratio = 2; //ratio = cm / pixels\r\n const minDist = 10; //minimum distance between points/lines\r\n const maxWidth = 600; //constructor max width\r\n const maxHeight = 315; //constructor max height\r\n\r\n const dispatch = useDispatch();\r\n const room = useSelector(state => state.room);\r\n const shapes = useSelector(state => state.shapes);\r\n const angles = useSelector(state => state.angles);\r\n const state = useSelector(state => state);\r\n const buttons = useSelector(state => state.buttons);\r\n\r\n const [modalActive, setModalActive] = useState(!buttons[4]);\r\n\r\n const [angIcon01, setAngIcon01] = useState(imgDiagonal);\r\n const [angIcon02, setAngIcon02] = useState(imgDiagonal);\r\n const [angIcon03, setAngIcon03] = useState(imgDiagonal);\r\n const [angIcon04, setAngIcon04] = useState(imgDiagonal);\r\n const [angIcon07, setAngIcon07] = useState(imgDiagonal);\r\n\r\n const [labVis, setLabVis] = useState(true);\r\n const [anglesMode, setAnglesMode] = useState(false);\r\n const [compassVisible, setCompassVisible] = useState(false);\r\n const [compassPoint, setCompassPoint] = useState({x: 0, y: 0});\r\n const [square, setSquare] = useState(0);\r\n\r\n const pos00 = {x: room[0], y: room[1]};\r\n const [pos01shadow, setPos01shadow] = useState({x: room[2], y: room[3]});\r\n const [pos01, setPos01] = useState({x: room[4], y: room[5]});\r\n const [pos02shadow, setPos02shadow] = useState({x: room[6], y: room[7]});\r\n const [pos02, setPos02] = useState({x: room[8], y: room[9]});\r\n const [pos03shadow, setPos03shadow] = useState({x: room[10], y: room[11]});\r\n const [pos03, setPos03] = useState({x: room[12], y: room[13]});\r\n const [pos04shadow, setPos04shadow] = useState({x: room[14], y: room[15]});\r\n const [pos04, setPos04] = useState({x: room[16], y: room[17]});\r\n const [pos07shadow, setPos07shadow] = useState({x: room[26], y: room[27]});\r\n const [pos07, setPos07] = useState({x: room[28], y: room[29]});\r\n\r\n const pos00angled = angles[0];\r\n const [pos01angled, setPos01angled] = useState(angles[1]);\r\n const [pos02angled, setPos02angled] = useState(angles[2]);\r\n const [pos03angled, setPos03angled] = useState(angles[3]);\r\n const [pos04angled, setPos04angled] = useState(angles[4]);\r\n const [pos07angled, setPos07angled] = useState(angles[7]);\r\n\r\n const [dim00to01SeditMode, setDim00to01SeditMode] = useState(false);\r\n const [dim01to02SeditMode, setDim01to02SeditMode] = useState(false);\r\n const [dim02to03SeditMode, setDim02to03SeditMode] = useState(false);\r\n const [dim03to04SeditMode, setDim03to04SeditMode] = useState(false);\r\n const [dim04to07SeditMode, setDim04to07SeditMode] = useState(false);\r\n const [dim07to00editMode, setDim07to00editMode] = useState(false);\r\n\r\n const [dim00to01Svalue, setDim00to01Svalue] = useState(0);\r\n const [dim01to02Svalue, setDim01to02Svalue] = useState(0);\r\n const [dim02to03Svalue, setDim02to03Svalue] = useState(0);\r\n const [dim03to04Svalue, setDim03to04Svalue] = useState(0);\r\n const [dim04to07Svalue, setDim04to07Svalue] = useState(0);\r\n\r\n const [dim07to00value, setDim07to00value] = useState(0);\r\n\r\n const handleAngle01 = (ang) => {\r\n setAnglesMode(false);\r\n setPos01angled(ang);\r\n if (ang) {\r\n setAngIcon01(imgCorner);\r\n setPos01({x: pos01.x, y: pos01.y + minDist});\r\n setPos01shadow({x: pos01shadow.x - minDist, y: pos01shadow.y});\r\n } else {\r\n setAngIcon01(imgDiagonal);\r\n setPos01({x: pos01.x, y: pos01shadow.y});\r\n setPos01shadow({x: pos01.x, y: pos01shadow.y});\r\n }\r\n }\r\n const handleAngle02 = (ang) => {\r\n setAnglesMode(false);\r\n setPos02angled(ang);\r\n if (ang) {\r\n setAngIcon02(imgCorner);\r\n setPos02({x: pos02.x + minDist, y: pos02.y});\r\n setPos02shadow({x: pos02shadow.x, y: pos02shadow.y - minDist});\r\n } else {\r\n setAngIcon02(imgDiagonal);\r\n setPos02({x: pos02shadow.x, y: pos02.y});\r\n setPos02shadow({x: pos02shadow.x, y: pos02.y});\r\n }\r\n }\r\n const handleAngle03 = (ang) => {\r\n setAnglesMode(false);\r\n setPos03angled(ang);\r\n if (ang) {\r\n setAngIcon03(imgCorner);\r\n setPos03({x: pos03.x, y: pos03.y + minDist});\r\n setPos03shadow({x: pos03shadow.x - minDist, y: pos03shadow.y});\r\n } else {\r\n setAngIcon03(imgDiagonal);\r\n setPos03({x: pos03.x, y: pos03shadow.y});\r\n setPos03shadow({x: pos03.x, y: pos03shadow.y});\r\n }\r\n }\r\n const handleAngle04 = (ang) => {\r\n setAnglesMode(false);\r\n setPos04angled(ang);\r\n if (ang) {\r\n setAngIcon04(imgCorner);\r\n setPos04({x: pos04.x - minDist, y: pos04.y});\r\n setPos04shadow({x: pos04shadow.x, y: pos04shadow.y - minDist});\r\n } else {\r\n setAngIcon04(imgDiagonal);\r\n setPos04({x: pos04shadow.x, y: pos04.y});\r\n setPos04shadow({x: pos04shadow.x, y: pos04.y});\r\n }\r\n }\r\n const handleAngle07 = (ang) => {\r\n setAnglesMode(false);\r\n setPos07angled(ang);\r\n if (ang) {\r\n setAngIcon07(imgCorner);\r\n setPos07({x: pos07.x, y: pos07.y - minDist});\r\n setPos07shadow({x: pos07shadow.x + minDist, y: pos07shadow.y});\r\n } else {\r\n setAngIcon07(imgDiagonal);\r\n setPos07({x: pos07.x, y: pos07shadow.y});\r\n setPos07shadow({x: pos07.x, y: pos07shadow.y});\r\n }\r\n }\r\n\r\n const handleClick = (page) => {\r\n dispatch(updateButton(page))\r\n dispatch(updateRoom([pos00.x, pos00.y,\r\n pos01shadow.x, pos01shadow.y,\r\n pos01.x, pos01.y,\r\n pos02shadow.x, pos02shadow.y,\r\n pos02.x, pos02.y,\r\n pos03shadow.x, pos03shadow.y,\r\n pos03.x, pos03.y,\r\n pos04shadow.x, pos04shadow.y,\r\n pos04.x, pos04.y,\r\n pos04shadow.x, pos04shadow.y,\r\n pos04.x, pos04.y,\r\n pos04shadow.x, pos04shadow.y,\r\n pos04.x, pos04.y,\r\n pos07shadow.x, pos07shadow.y,\r\n pos07.x, pos07.y,\r\n ]))\r\n dispatch(updateAngles([pos00angled, pos01angled,\r\n pos02angled, pos03angled,\r\n pos04angled, false, false, pos07angled\r\n ]))\r\n };\r\n\r\n useEffect(() => {\r\n\r\n setDim00to01Svalue(pos01shadow.x - pos00.x);\r\n setDim02to03Svalue(pos03shadow.x - pos02.x);\r\n setDim04to07Svalue(pos04.x - pos07shadow.x);\r\n\r\n setDim01to02Svalue(pos02shadow.y - pos01.y);\r\n setDim03to04Svalue(pos04shadow.y - pos03.y);\r\n setDim07to00value(pos07.y - pos00.y);\r\n\r\n setSquare((\r\n (pos01.y - pos01shadow.y) * (pos01.x + pos01shadow.x) / 2 +\r\n (pos02shadow.y - pos01.y) * (pos02shadow.x + pos01.x) / 2 +\r\n (pos02.y - pos02shadow.y) * (pos02.x + pos02shadow.x) / 2 +\r\n (pos03shadow.y - pos02.y) * (pos03shadow.x + pos02.x) / 2 +\r\n (pos03.y - pos03shadow.y) * (pos03.x + pos03shadow.x) / 2 +\r\n (pos04shadow.y - pos03.y) * (pos04shadow.x + pos03.x) / 2 +\r\n (pos04.y - pos04shadow.y) * (pos04.x + pos04shadow.x) / 2 +\r\n (pos07.y - pos07shadow.y) * pos07shadow.x / 2) / 10000 * ratio * ratio\r\n )\r\n\r\n }, [pos01, pos01shadow, pos02, pos02shadow, pos03, pos03shadow, pos04, pos04shadow,\r\n pos07, pos07shadow]);\r\n\r\n const top = 14;\r\n const left = 86;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n {/* Angle buttons */}\r\n
\r\n
handleAngle01(!pos01angled)}\r\n style={{\r\n backgroundImage: `url(${angIcon01})`,\r\n top: ((pos01.y + pos01shadow.y) / 2 - top),\r\n left: ((pos01.x + pos01shadow.x) / 2 + left),\r\n visibility: anglesMode ? 'visible' : 'hidden'\r\n }}>\r\n
\r\n\r\n
handleAngle02(!pos02angled)}\r\n style={{\r\n backgroundImage: `url(${angIcon02})`,\r\n top: ((pos02.y + pos02shadow.y) / 2 - top),\r\n left: ((pos02.x + pos02shadow.x) / 2 + left),\r\n transform: \"rotate(180deg)\",\r\n visibility: anglesMode ? 'visible' : 'hidden'\r\n }}>\r\n
\r\n\r\n
handleAngle03(!pos03angled)}\r\n style={{\r\n backgroundImage: `url(${angIcon03})`,\r\n top: ((pos03.y + pos03shadow.y) / 2 - top),\r\n left: ((pos03.x + pos03shadow.x) / 2 + left),\r\n visibility: anglesMode ? 'visible' : 'hidden'\r\n }}>\r\n
\r\n\r\n
handleAngle04(!pos04angled)}\r\n style={{\r\n backgroundImage: `url(${angIcon04})`,\r\n top: ((pos04.y + pos04shadow.y) / 2 - top),\r\n left: ((pos04.x + pos04shadow.x) / 2 + left),\r\n transform: \"rotate(90deg)\",\r\n visibility: anglesMode ? 'visible' : 'hidden'\r\n }}>\r\n
\r\n\r\n
handleAngle07(!pos07angled)}\r\n style={{\r\n backgroundImage: `url(${angIcon07})`,\r\n top: ((pos07.y + pos07shadow.y) / 2 - top),\r\n left: ((pos07.x + pos07shadow.x) / 2 + left),\r\n transform: \"rotate(180deg)\",\r\n visibility: anglesMode ? 'visible' : 'hidden'\r\n }}>\r\n
\r\n
\r\n\r\n {/* Points */}\r\n
\r\n\r\n {/* Point START */}\r\n\r\n
\r\n\r\n {/* Point 01 */}\r\n\r\n {\r\n const {x, y} = pos01shadow;\r\n setCompassPoint(pos01shadow);\r\n setPos01shadow({x: x + d.deltaX, y: y + d.deltaY});\r\n }}\r\n position={{x: pos01shadow.x, y: pos01shadow.y}}\r\n onStart={() => {\r\n setCompassVisible(true);\r\n setCompassPoint(pos01shadow);\r\n }}\r\n onStop={() => {\r\n setCompassVisible(false);\r\n setCompassPoint({});\r\n }}\r\n bounds={pos01angled\r\n ? {\r\n left: 2 * minDist,\r\n top: 0,\r\n right: pos01.x - minDist,\r\n bottom: 0\r\n }\r\n : {left: 0, top: 0, right: maxWidth, bottom: maxHeight}}\r\n >\r\n
\r\n \r\n\r\n\r\n {\r\n const {x, y} = pos01;\r\n setCompassPoint(pos01);\r\n setPos01({x: x + d.deltaX, y: y + d.deltaY,});\r\n setPos02shadow({x: x, y: pos02shadow.y});\r\n\r\n if (!pos01angled) {\r\n setPos01shadow({x: x, y: y})\r\n }\r\n if (!pos02angled) {\r\n setPos02({x: x, y: pos02.y})\r\n }\r\n\r\n }}\r\n position={{x: pos01.x, y: pos01.y}}\r\n onStart={() => {\r\n setCompassVisible(true);\r\n setCompassPoint(pos01);\r\n }}\r\n onStop={() => {\r\n setCompassVisible(false);\r\n setCompassPoint({});\r\n }}\r\n bounds={\r\n {\r\n left: (pos01angled && pos01shadow.x + minDist) || minDist * 3,\r\n top: (pos01angled && minDist) || 2,\r\n right: (pos02angled && pos02.x - minDist) || (pos03angled && pos03shadow.x - 2 * minDist) || pos03shadow.x - 3 * minDist,\r\n bottom: (!pos01angled && 2) || (pos02angled && pos02shadow.y - minDist) || (pos02.y - 2 * minDist)\r\n }\r\n }\r\n >\r\n
\r\n \r\n\r\n {/* Point 02 */}\r\n\r\n {\r\n const {x, y} = pos02shadow;\r\n setCompassPoint(pos02shadow);\r\n setPos02shadow({x: x + d.deltaX, y: y + d.deltaY});\r\n setPos01({x: x, y: pos01.y});\r\n if (!pos01angled) {\r\n setPos01shadow({x: x, y: pos01shadow.y})\r\n }\r\n\r\n }}\r\n position={{x: pos02shadow.x, y: pos02shadow.y}}\r\n onStart={() => {\r\n setCompassVisible(true);\r\n setCompassPoint(pos02shadow);\r\n }}\r\n onStop={() => {\r\n setCompassVisible(false);\r\n setCompassPoint({});\r\n }}\r\n bounds={\r\n {\r\n left: (pos01angled) ? pos01shadow.x + (minDist) : minDist * 3,\r\n top: pos01.y + minDist + (!pos01angled && minDist),\r\n right: (pos02angled) ? pos02.x - minDist : maxWidth,\r\n bottom: (pos02angled) ? pos02.y - minDist : maxHeight\r\n }\r\n }\r\n >\r\n
\r\n \r\n\r\n {\r\n const {x, y} = pos02;\r\n setCompassPoint(pos02);\r\n setPos02({x: x + d.deltaX, y: y + d.deltaY});\r\n if (!pos02angled) {\r\n setPos02shadow({x: x, y: y})\r\n setPos01({x: x, y: pos01.y});\r\n if (!pos01angled) {\r\n setPos01shadow({x: x, y: pos01shadow.y});\r\n }\r\n }\r\n setPos03shadow({x: pos03shadow.x, y: y});\r\n if (!pos03angled) {\r\n setPos03({x: pos03.x, y: y});\r\n }\r\n\r\n\r\n }}\r\n position={{x: pos02.x, y: pos02.y}}\r\n onStart={() => {\r\n setCompassVisible(true);\r\n setCompassPoint(pos02);\r\n }}\r\n onStop={() => {\r\n setCompassVisible(false);\r\n setCompassPoint({});\r\n }}\r\n bounds={\r\n {\r\n left: (pos02angled && pos02shadow.x + minDist) || (pos01angled && pos01shadow.x + minDist) || 3 * minDist,\r\n top: (pos02angled && pos02shadow.y + minDist) || (pos01angled && pos01.y + 2 * minDist) || 3 * minDist,\r\n right: pos03shadow.x - minDist - (!pos02angled && minDist) - (!pos03angled && minDist),\r\n bottom: (pos03angled && pos03.y - minDist) || (pos04angled && pos04shadow.y - 2 * minDist) || pos04.y - 3 * minDist\r\n }\r\n }\r\n >\r\n
\r\n \r\n\r\n {/* Point 03 */}\r\n\r\n {\r\n const {x, y} = pos03shadow;\r\n setCompassPoint(pos03shadow);\r\n setPos03shadow({x: x + d.deltaX, y: y + d.deltaY});\r\n if (pos03angled) {\r\n setPos02({x: pos02.x, y: y})\r\n if (!pos02angled) {\r\n setPos02shadow({x: pos02shadow.x, y: y})\r\n }\r\n }\r\n }}\r\n position={{x: pos03shadow.x, y: pos03shadow.y}}\r\n onStart={() => {\r\n setCompassVisible(true);\r\n setCompassPoint(pos03shadow);\r\n }}\r\n onStop={() => {\r\n setCompassVisible(false);\r\n setCompassPoint({});\r\n }}\r\n bounds={\r\n {\r\n left: (pos02angled && pos02.x + minDist) || pos02.x + 2 * minDist,\r\n top: (pos02angled && pos02shadow.y + minDist) || (pos01angled && pos01.y + 2 * minDist) || pos01.y + 3 * minDist,\r\n right: (pos03angled && pos03.x - minDist) || maxWidth,\r\n bottom: (pos03angled && pos03.y - minDist) || (pos04angled && pos04shadow.y - 2 * minDist) || pos04.y - 3 * minDist\r\n }\r\n }\r\n >\r\n
\r\n \r\n\r\n\r\n {\r\n const {x, y} = pos03;\r\n setCompassPoint(pos03);\r\n setPos03({x: x + d.deltaX, y: y + d.deltaY,});\r\n setPos04shadow({x: x, y: pos04shadow.y});\r\n if (!pos04angled) {\r\n setPos04({x: x, y: pos04.y})\r\n }\r\n\r\n if (!pos03angled) {\r\n setPos03shadow({x: x, y: y})\r\n setPos02({x: pos02.x, y: y})\r\n if (!pos02angled) {\r\n setPos02shadow({x: pos02shadow.x, y: y})\r\n }\r\n }\r\n\r\n\r\n }}\r\n position={{x: pos03.x, y: pos03.y}}\r\n onStart={() => {\r\n setCompassVisible(true);\r\n setCompassPoint(pos03);\r\n }}\r\n onStop={() => {\r\n setCompassVisible(false);\r\n setCompassPoint({});\r\n }}\r\n bounds={\r\n {\r\n left: (pos03angled && pos03shadow.x + minDist) || (pos02angled && pos02.x + 2 * minDist) || pos02.x + 3 * minDist,\r\n top: (pos03angled && pos03shadow.y + minDist) || (pos02angled && pos02shadow.y + minDist) || (pos01angled && pos01.y + 2 * minDist) || 3 * minDist,\r\n right: maxWidth,\r\n bottom: (pos04angled && pos04shadow.y - minDist) || (pos04.y - 2 * minDist)\r\n }\r\n }\r\n >\r\n
\r\n \r\n\r\n {/* Point 04 */}\r\n\r\n {\r\n const {x, y} = pos04shadow;\r\n setCompassPoint(pos04shadow);\r\n setPos04shadow({x: x + d.deltaX, y: y + d.deltaY});\r\n setPos03({x: x, y: pos03.y});\r\n if (!pos03angled) {\r\n setPos03shadow({x: x, y: pos03shadow.y})\r\n }\r\n\r\n }}\r\n position={{x: pos04shadow.x, y: pos04shadow.y}}\r\n onStart={() => {\r\n setCompassVisible(true);\r\n setCompassPoint(pos04shadow);\r\n }}\r\n onStop={() => {\r\n setCompassVisible(false);\r\n setCompassPoint({});\r\n }}\r\n bounds={\r\n {\r\n left: (pos04angled && Math.max(pos04.x + minDist,\r\n (pos03angled && pos03shadow.x + minDist) ||\r\n (pos02angled && (pos02.x + 2 * minDist)\r\n || pos02.x + 3 * minDist))) || 0,\r\n top: (pos04angled && (pos03angled && (pos03.y + minDist) || pos03.y + 2 * minDist)) || 0,\r\n right: maxWidth,\r\n bottom: (pos04angled && pos04.y - minDist) || maxHeight\r\n }\r\n }\r\n >\r\n
\r\n \r\n\r\n {\r\n const {x, y} = pos04;\r\n setCompassPoint(pos04);\r\n setPos04({x: x + d.deltaX, y: y + d.deltaY});\r\n if (!pos04angled) {\r\n setPos04shadow({x: x, y: y})\r\n setPos03({x: x, y: pos03.y});\r\n if (!pos03angled) {\r\n setPos03shadow({x: x, y: pos03shadow.y});\r\n }\r\n }\r\n setPos07shadow({x: pos07shadow.x, y: y});\r\n if (!pos07angled) {\r\n setPos07({x: pos07.x, y: y});\r\n }\r\n\r\n\r\n }}\r\n position={{x: pos04.x, y: pos04.y}}\r\n onStart={() => {\r\n setCompassVisible(true);\r\n setCompassPoint(pos04);\r\n }}\r\n onStop={() => {\r\n setCompassVisible(false);\r\n setCompassPoint({});\r\n }}\r\n bounds={\r\n {\r\n left: (pos04angled && ((pos07angled && pos07shadow.x + minDist) || pos07shadow.x + 2 * minDist))\r\n || (pos03angled && Math.max(pos03shadow.x, pos07shadow.x + 2 * minDist))\r\n || (pos02angled && Math.max(pos02.x, pos07shadow.x + 2 * minDist))\r\n || Math.max(pos02.x + 3 * minDist, pos07shadow.x + 2 * minDist),\r\n top: Math.max((pos07angled && pos07.y + minDist), (pos04angled && pos04shadow.y + minDist), (pos03angled && pos03.y + 2 * minDist), pos03.y + 3 * minDist),\r\n right: (pos04angled && (pos04shadow.x - minDist)) || maxWidth,\r\n bottom: maxHeight\r\n }\r\n }\r\n >\r\n
\r\n \r\n\r\n {/* Point 05 */}\r\n {/* Point 06 */}\r\n {/* Point 07 */}\r\n\r\n {\r\n const {x, y} = pos07shadow;\r\n setCompassPoint(pos07shadow);\r\n setPos07shadow({x: x + d.deltaX, y: y + d.deltaY});\r\n setPos04({x: pos04.x, y: y})\r\n if (!pos04angled) {\r\n setPos04shadow({x: pos04shadow.x, y: y})\r\n }\r\n }}\r\n position={{x: pos07shadow.x, y: pos07shadow.y}}\r\n onStart={() => {\r\n setCompassVisible(true);\r\n setCompassPoint(pos07shadow);\r\n }}\r\n onStop={() => {\r\n setCompassVisible(false);\r\n setCompassPoint({});\r\n }}\r\n bounds={\r\n {\r\n left: (pos07angled && pos07.x + minDist) || 0,\r\n top: (pos07angled && (pos04angled && (Math.max(pos07.y + minDist, pos04shadow.y + minDist))\r\n || (pos03angled && (Math.max(pos07.y + minDist, pos03.y + 2 * minDist)))\r\n || Math.max(pos07.y + minDist, pos03.y + 3 * minDist)))\r\n || 0,\r\n right: (pos04angled && pos04.x - minDist) || pos04.x - 2 * minDist,\r\n bottom: maxHeight\r\n }\r\n }\r\n >\r\n
\r\n \r\n\r\n\r\n {\r\n const {x, y} = pos07;\r\n setCompassPoint(pos07);\r\n setPos07({x: x + d.deltaX, y: y + d.deltaY});\r\n\r\n if (!pos07angled) {\r\n setPos07shadow({x: x, y: y});\r\n setPos04({x: pos04.x, y: y})\r\n if (!pos04angled) {\r\n setPos04shadow({x: pos04shadow.x, y: y})\r\n }\r\n }\r\n }}\r\n position={{x: pos07.x, y: pos07.y}}\r\n onStart={() => {\r\n setCompassVisible(true);\r\n setCompassPoint(pos07);\r\n }}\r\n onStop={() => {\r\n setCompassVisible(false);\r\n setCompassPoint({});\r\n }}\r\n bounds={\r\n {\r\n left: 0,\r\n top: (pos07angled && 2 * minDist) || (pos04angled && pos04shadow.y + minDist) || (pos03angled && pos03.y + 2 * minDist) || pos03.y + 3 * minDist,\r\n right: 0,\r\n bottom: (pos07angled && pos07shadow.y - minDist) || maxHeight\r\n }\r\n }\r\n >\r\n
\r\n \r\n\r\n\r\n
\r\n\r\n {/* Dimensions */}\r\n
\r\n\r\n {/* X horizontal dimensions */}\r\n
\r\n {dim00to01SeditMode\r\n ? {\r\n setDim00to01SeditMode(false);\r\n let newValue = dim00to01Svalue;\r\n let oldValue = pos01shadow.x - pos00.x;\r\n let maxDelta = maxWidth - pos03.x;\r\n let min0to1 = pos00.x - pos01shadow.x + 2 * minDist - 1 + (pos01angled && minDist)\r\n let min4to7 = pos07shadow.x - pos04.x + minDist - 1 + (pos04angled && minDist) + (pos07angled && minDist)\r\n let minDelta = Math.max(min0to1, min4to7)\r\n ;\r\n\r\n let delta = newValue - oldValue;\r\n\r\n if (delta < minDelta + 1) delta = minDelta + 1\r\n if (delta > maxDelta + 1) delta = maxDelta + 1\r\n setDim00to01Svalue(oldValue + delta);\r\n\r\n setPos01shadow({x: pos01shadow.x + delta, y: pos01shadow.y});\r\n setPos01({x: pos01.x + delta, y: pos01.y});\r\n setPos02shadow({x: pos02shadow.x + delta, y: pos02shadow.y});\r\n setPos02({x: pos02.x + delta, y: pos02.y});\r\n setPos03shadow({x: pos03shadow.x + delta, y: pos03shadow.y});\r\n setPos03({x: pos03.x + delta, y: pos03.y});\r\n setPos04shadow({x: pos04shadow.x + delta, y: pos04shadow.y});\r\n setPos04({x: pos04.x + delta, y: pos04.y});\r\n }\r\n }/>\r\n : setDim00to01SeditMode(true)}>\r\n {`${Math.round(dim00to01Svalue) * 2}cm`}\r\n }\r\n
\r\n\r\n\r\n
\r\n {dim02to03SeditMode\r\n ? {\r\n setDim02to03SeditMode(false);\r\n let newValue = dim02to03Svalue;\r\n let oldValue = pos03shadow.x - pos02.x;\r\n let maxDelta = maxWidth - pos03.x;\r\n let min2to3 = pos02.x - pos03shadow.x + minDist - 1 + (pos02angled && minDist) + (pos03angled + minDist)\r\n let min4to7 = pos07shadow.x - pos04.x + minDist - 1 + (pos07angled && minDist) + (pos04angled + minDist)\r\n let minDelta = Math.max(min2to3, min4to7)\r\n ;\r\n\r\n let delta = newValue - oldValue;\r\n\r\n if (delta < minDelta + 1) delta = minDelta + 1\r\n if (delta > maxDelta + 1) delta = maxDelta + 1\r\n setDim02to03Svalue(oldValue + delta);\r\n\r\n setPos03shadow({x: pos03shadow.x + delta, y: pos03shadow.y});\r\n setPos03({x: pos03.x + delta, y: pos03.y});\r\n setPos04shadow({x: pos04shadow.x + delta, y: pos04shadow.y});\r\n setPos04({x: pos04.x + delta, y: pos04.y});\r\n }\r\n }/>\r\n : setDim02to03SeditMode(true)}>\r\n {`${Math.round(dim02to03Svalue) * 2}cm`}\r\n }\r\n
\r\n\r\n
\r\n {dim04to07SeditMode\r\n ? {\r\n setDim04to07SeditMode(false);\r\n let newValue = dim04to07Svalue;\r\n let oldValue = pos04.x - pos07shadow.x;\r\n let maxDelta = maxWidth - pos03.x;\r\n let min0to1 = pos00.x - pos01shadow.x + 2 * minDist - 1 + (pos01angled && minDist)\r\n let min4to7 = pos07shadow.x - pos04.x + minDist - 1 + (pos04angled && minDist) + (pos07angled && minDist)\r\n let minDelta = Math.max(min0to1, min4to7)\r\n ;\r\n\r\n let delta = newValue - oldValue;\r\n\r\n if (delta < minDelta + 1) delta = minDelta + 1\r\n if (delta > maxDelta + 1) delta = maxDelta + 1\r\n setDim00to01Svalue(oldValue + delta);\r\n\r\n setPos01shadow({x: pos01shadow.x + delta, y: pos01shadow.y});\r\n setPos01({x: pos01.x + delta, y: pos01.y});\r\n setPos02shadow({x: pos02shadow.x + delta, y: pos02shadow.y});\r\n setPos02({x: pos02.x + delta, y: pos02.y});\r\n setPos03shadow({x: pos03shadow.x + delta, y: pos03shadow.y});\r\n setPos03({x: pos03.x + delta, y: pos03.y});\r\n setPos04shadow({x: pos04shadow.x + delta, y: pos04shadow.y});\r\n setPos04({x: pos04.x + delta, y: pos04.y});\r\n }\r\n }/>\r\n : setDim04to07SeditMode(true)}>\r\n {`${Math.round(dim04to07Svalue) * 2}cm`}\r\n }\r\n
\r\n\r\n\r\n {/* Y vertical dimensions */}\r\n\r\n
\r\n {dim01to02SeditMode\r\n ? {\r\n setDim01to02SeditMode(false);\r\n let newValue = dim01to02Svalue;\r\n let oldValue = pos02shadow.y - pos01.y;\r\n let maxDelta = maxHeight - pos04.y;\r\n let min1to2 = pos01.y - pos02shadow.y + minDist - 1 + (pos01angled && minDist) + (pos02angled && minDist)\r\n let min7to0 = pos00.y - pos07.y + 2 * minDist - 1 + (pos07angled && minDist)\r\n let minDelta = Math.max(min1to2, min7to0)\r\n let delta = newValue - oldValue;\r\n\r\n if (delta < minDelta + 1) delta = minDelta + 1\r\n if (delta > maxDelta) delta = maxDelta\r\n setDim01to02Svalue(oldValue + delta);\r\n\r\n setPos02shadow({x: pos02shadow.x, y: pos02shadow.y + delta});\r\n setPos02({x: pos02.x, y: pos02.y + delta});\r\n setPos03shadow({x: pos03shadow.x, y: pos03shadow.y + delta});\r\n setPos03({x: pos03.x, y: pos03.y + delta});\r\n setPos04shadow({x: pos04shadow.x, y: pos04shadow.y + delta});\r\n setPos04({x: pos04.x, y: pos04.y + delta});\r\n setPos07shadow({x: pos07shadow.x, y: pos07shadow.y + delta});\r\n setPos07({x: pos07.x, y: pos07.y + delta});\r\n }\r\n }/>\r\n : setDim01to02SeditMode(true)}>\r\n {`${Math.round(dim01to02Svalue) * 2}cm`}\r\n }\r\n
\r\n\r\n\r\n
\r\n {dim03to04SeditMode\r\n ? {\r\n setDim03to04SeditMode(false);\r\n let newValue = dim03to04Svalue;\r\n let oldValue = pos04shadow.y - pos03.y;\r\n let maxDelta = maxHeight - pos04.y;\r\n let min3to4 = pos03.y - pos04shadow.y + minDist - 1 + (pos03angled && minDist) + (pos04angled && minDist)\r\n let min7to0 = pos00.y - pos07.y + 2 * minDist - 1 + (pos07angled && minDist)\r\n let minDelta = Math.max(min3to4, min7to0)\r\n let delta = newValue - oldValue;\r\n\r\n if (delta < minDelta + 1) delta = minDelta + 1\r\n if (delta > maxDelta) delta = maxDelta\r\n setDim03to04Svalue(oldValue + delta);\r\n\r\n setPos04shadow({x: pos04shadow.x, y: pos04shadow.y + delta});\r\n setPos04({x: pos04.x, y: pos04.y + delta});\r\n setPos07shadow({x: pos07shadow.x, y: pos07shadow.y + delta});\r\n setPos07({x: pos07.x, y: pos07.y + delta});\r\n }\r\n }/>\r\n : setDim03to04SeditMode(true)}>\r\n {`${Math.round(dim03to04Svalue) * 2}cm`}\r\n }\r\n
\r\n\r\n\r\n
\r\n {dim07to00editMode\r\n ? {\r\n setDim07to00editMode(false);\r\n let newValue = dim07to00value;\r\n let oldValue = pos07.y - pos00.y;\r\n let maxDelta = maxHeight - pos04.y;\r\n let min3to4 = pos03.y - pos04shadow.y + minDist - 1 + (pos03angled && minDist) + (pos04angled && minDist)\r\n let min7to0 = pos00.y - pos07.y + 2 * minDist - 1 + (pos07angled && minDist)\r\n let minDelta = Math.max(min3to4, min7to0)\r\n let delta = newValue - oldValue;\r\n\r\n if (delta < minDelta + 1) delta = minDelta + 1\r\n if (delta > maxDelta) delta = maxDelta\r\n setDim07to00value(oldValue + delta);\r\n\r\n setPos04shadow({x: pos04shadow.x, y: pos04shadow.y + delta});\r\n setPos04({x: pos04.x, y: pos04.y + delta});\r\n setPos07shadow({x: pos07shadow.x, y: pos07shadow.y + delta});\r\n setPos07({x: pos07.x, y: pos07.y + delta});\r\n }\r\n }/>\r\n : setDim07to00editMode(true)}>\r\n {`${Math.round(dim07to00value) * 2}cm`}\r\n }\r\n
\r\n\r\n {/* XY diagonal dimensions */}\r\n\r\n
\r\n {`${Math.round(Math.sqrt(\r\n Math.pow(pos01.x - pos01shadow.x, 2)\r\n + Math.pow(pos01.y - pos01shadow.y, 2))) * 2}cm`}\r\n \r\n
\r\n\r\n
\r\n {`${Math.round(Math.sqrt(\r\n Math.pow(pos02.x - pos02shadow.x, 2)\r\n + Math.pow(pos02.y - pos02shadow.y, 2))) * 2}cm`}\r\n \r\n
\r\n\r\n
\r\n {`${Math.round(Math.sqrt(\r\n Math.pow(pos03.x - pos03shadow.x, 2)\r\n + Math.pow(pos03.y - pos03shadow.y, 2))) * 2}cm`}\r\n \r\n
\r\n\r\n
\r\n {`${Math.round(Math.sqrt(\r\n Math.pow(pos04.x - pos04shadow.x, 2)\r\n + Math.pow(pos04.y - pos04shadow.y, 2))) * 2}cm`}\r\n \r\n
\r\n\r\n
\r\n {`${Math.round(Math.sqrt(\r\n Math.pow(pos07.x - pos07shadow.x, 2)\r\n + Math.pow(pos07.y - pos07shadow.y, 2))) * 2}cm`}\r\n \r\n
\r\n\r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
{\r\n setAnglesMode(!anglesMode);\r\n }}\r\n style={anglesMode ? {background: \"lightgreen\"} : {}}\r\n >{t(\"create_angled_walls\")}\r\n
\r\n
setLabVis(!labVis)}\r\n >{t(\"show_hide_labels\")}\r\n
\r\n
setModalActive(true)}>{t(\"need_help\")}\r\n
\r\n
{square.toFixed(2)} m2
\r\n
\r\n handleClick(4)} className={s.btnNextStep}>\r\n {t(\"continue\")}\r\n \r\n \r\n
\r\n\r\n\r\n )\r\n ;\r\n}\r\n\r\nexport default PlanMakerL;\r\n\r\n","import React, {useRef, useEffect, useState} from 'react';\r\nimport s from './PlanMaker.module.css';\r\nimport Draggable from 'react-draggable';\r\nimport {HashLink as Link} from \"react-router-hash-link\";\r\nimport ModalRoomSize from \"../0Modal/ModalRoomSize\";\r\nimport {useDispatch, useSelector} from \"react-redux\";\r\nimport {updateButton} from \"../../redux/buttonsReducer\";\r\nimport imgDiagonal from '../../img/CornerButtons/CornerLine.svg';\r\nimport imgCorner from '../../img/CornerButtons/SEcorner.svg';\r\nimport CompassArrows from \"../../elements/CompassArrows/CompassArrows\";\r\nimport DimInput from \"../../elements/DimInput/DimInput\";\r\nimport {Stage, Layer, Star, Text, Line} from 'react-konva';\r\nimport {updateRoom} from \"../../redux/roomReducer\";\r\nimport {updateAngles} from \"../../redux/anglesReducer\";\r\nimport {useTranslation} from \"react-i18next\";\r\n\r\nconst PlanMakerT = () => {\r\n\r\n const {t} = useTranslation();\r\n\r\n const ratio = 2; //ratio = cm / pixels\r\n const minDist = 10; //minimum distance between points/lines\r\n const maxWidth = 600; //constructor max width\r\n const maxHeight = 315; //constructor max height\r\n\r\n const dispatch = useDispatch();\r\n const room = useSelector(state => state.room);\r\n const shapes = useSelector(state => state.shapes);\r\n const angles = useSelector(state => state.angles);\r\n const buttons = useSelector(state => state.buttons);\r\n\r\n const [modalActive, setModalActive] = useState(!buttons[4]);\r\n\r\n const [angIcon01, setAngIcon01] = useState(imgDiagonal);\r\n const [angIcon02, setAngIcon02] = useState(imgDiagonal);\r\n const [angIcon03, setAngIcon03] = useState(imgDiagonal);\r\n const [angIcon04, setAngIcon04] = useState(imgDiagonal);\r\n const [angIcon05, setAngIcon05] = useState(imgDiagonal);\r\n const [angIcon06, setAngIcon06] = useState(imgDiagonal);\r\n const [angIcon07, setAngIcon07] = useState(imgDiagonal);\r\n\r\n const [labVis, setLabVis] = useState(true);\r\n const [anglesMode, setAnglesMode] = useState(false);\r\n const [compassVisible, setCompassVisible] = useState(false);\r\n const [compassPoint, setCompassPoint] = useState({x: 0, y: 0});\r\n const [square, setSquare] = useState(0);\r\n\r\n const pos00 = {x: room[0], y: room[1]};\r\n const [pos01shadow, setPos01shadow] = useState({x: room[2], y: room[3]});\r\n const [pos01, setPos01] = useState({x: room[4], y: room[5]});\r\n const [pos02shadow, setPos02shadow] = useState({x: room[6], y: room[7]});\r\n const [pos02, setPos02] = useState({x: room[8], y: room[9]});\r\n const [pos03shadow, setPos03shadow] = useState({x: room[10], y: room[11]});\r\n const [pos03, setPos03] = useState({x: room[12], y: room[13]});\r\n const [pos04shadow, setPos04shadow] = useState({x: room[14], y: room[15]});\r\n const [pos04, setPos04] = useState({x: room[16], y: room[17]});\r\n const [pos05shadow, setPos05shadow] = useState({x: room[18], y: room[19]});\r\n const [pos05, setPos05] = useState({x: room[20], y: room[21]});\r\n const [pos06shadow, setPos06shadow] = useState({x: room[22], y: room[23]});\r\n const [pos06, setPos06] = useState({x: room[24], y: room[25]});\r\n const [pos07shadow, setPos07shadow] = useState({x: room[26], y: room[27]});\r\n const [pos07, setPos07] = useState({x: room[28], y: room[29]});\r\n\r\n const pos00angled = angles[0];\r\n const [pos01angled, setPos01angled] = useState(angles[1]);\r\n const [pos02angled, setPos02angled] = useState(angles[2]);\r\n const [pos03angled, setPos03angled] = useState(angles[3]);\r\n const [pos04angled, setPos04angled] = useState(angles[4]);\r\n const [pos05angled, setPos05angled] = useState(angles[5]);\r\n const [pos06angled, setPos06angled] = useState(angles[6]);\r\n const [pos07angled, setPos07angled] = useState(angles[7]);\r\n\r\n\r\n const [dim00to01SeditMode, setDim00to01SeditMode] = useState(false);\r\n const [dim01to02SeditMode, setDim01to02SeditMode] = useState(false);\r\n const [dim02to03SeditMode, setDim02to03SeditMode] = useState(false);\r\n const [dim03to04SeditMode, setDim03to04SeditMode] = useState(false);\r\n const [dim04to05SeditMode, setDim04to05SeditMode] = useState(false);\r\n const [dim05to06SeditMode, setDim05to06SeditMode] = useState(false);\r\n const [dim06to07SeditMode, setDim06to07SeditMode] = useState(false);\r\n const [dim07to00editMode, setDim07to00editMode] = useState(false);\r\n\r\n const [dim00to01Svalue, setDim00to01Svalue] = useState(0);\r\n const [dim01to02Svalue, setDim01to02Svalue] = useState(0);\r\n const [dim02to03Svalue, setDim02to03Svalue] = useState(0);\r\n const [dim03to04Svalue, setDim03to04Svalue] = useState(0);\r\n const [dim04to05Svalue, setDim04to05Svalue] = useState(0);\r\n const [dim05to06Svalue, setDim05to06Svalue] = useState(0);\r\n const [dim06to07Svalue, setDim06to07Svalue] = useState(0);\r\n const [dim07to00value, setDim07to00value] = useState(0);\r\n\r\n const handleAngle01 = (ang) => {\r\n setAnglesMode(false);\r\n setPos01angled(ang);\r\n if (ang) {\r\n setAngIcon01(imgCorner);\r\n setPos01({x: pos01.x, y: pos01.y + minDist});\r\n setPos01shadow({x: pos01shadow.x - minDist, y: pos01shadow.y});\r\n } else {\r\n setAngIcon01(imgDiagonal);\r\n setPos01({x: pos01.x, y: pos01shadow.y});\r\n setPos01shadow({x: pos01.x, y: pos01shadow.y});\r\n }\r\n }\r\n const handleAngle02 = (ang) => {\r\n setAnglesMode(false);\r\n setPos02angled(ang);\r\n if (ang) {\r\n setAngIcon02(imgCorner);\r\n setPos02({x: pos02.x + minDist, y: pos02.y});\r\n setPos02shadow({x: pos02shadow.x, y: pos02shadow.y - minDist});\r\n } else {\r\n setAngIcon02(imgDiagonal);\r\n setPos02({x: pos02shadow.x, y: pos02.y});\r\n setPos02shadow({x: pos02shadow.x, y: pos02.y});\r\n }\r\n }\r\n const handleAngle03 = (ang) => {\r\n setAnglesMode(false);\r\n setPos03angled(ang);\r\n if (ang) {\r\n setAngIcon03(imgCorner);\r\n setPos03({x: pos03.x, y: pos03.y + minDist});\r\n setPos03shadow({x: pos03shadow.x - minDist, y: pos03shadow.y});\r\n } else {\r\n setAngIcon03(imgDiagonal);\r\n setPos03({x: pos03.x, y: pos03shadow.y});\r\n setPos03shadow({x: pos03.x, y: pos03shadow.y});\r\n }\r\n }\r\n const handleAngle04 = (ang) => {\r\n setAnglesMode(false);\r\n setPos04angled(ang);\r\n if (ang) {\r\n setAngIcon04(imgCorner);\r\n setPos04({x: pos04.x - minDist, y: pos04.y});\r\n setPos04shadow({x: pos04shadow.x, y: pos04shadow.y - minDist});\r\n } else {\r\n setAngIcon04(imgDiagonal);\r\n setPos04({x: pos04shadow.x, y: pos04.y});\r\n setPos04shadow({x: pos04shadow.x, y: pos04.y});\r\n }\r\n }\r\n const handleAngle05 = (ang) => {\r\n setAnglesMode(false);\r\n setPos05angled(ang);\r\n if (ang) {\r\n setAngIcon05(imgCorner);\r\n setPos05({x: pos05.x, y: pos05.y + minDist});\r\n setPos05shadow({x: pos05shadow.x + minDist, y: pos05shadow.y});\r\n } else {\r\n setAngIcon05(imgDiagonal);\r\n setPos05({x: pos05.x, y: pos05shadow.y});\r\n setPos05shadow({x: pos05.x, y: pos05shadow.y});\r\n }\r\n }\r\n const handleAngle06 = (ang) => {\r\n setAnglesMode(false);\r\n setPos06angled(ang);\r\n if (ang) {\r\n setAngIcon06(imgCorner);\r\n setPos06({x: pos06.x - minDist, y: pos06.y});\r\n setPos06shadow({x: pos06shadow.x, y: pos06shadow.y - minDist});\r\n } else {\r\n setAngIcon06(imgDiagonal);\r\n setPos06({x: pos06shadow.x, y: pos06.y});\r\n setPos06shadow({x: pos06shadow.x, y: pos06.y});\r\n }\r\n }\r\n const handleAngle07 = (ang) => {\r\n setAnglesMode(false);\r\n setPos07angled(ang);\r\n if (ang) {\r\n setAngIcon07(imgCorner);\r\n setPos07({x: pos07.x, y: pos07.y - minDist});\r\n setPos07shadow({x: pos07shadow.x + minDist, y: pos07shadow.y});\r\n } else {\r\n setAngIcon07(imgDiagonal);\r\n setPos07({x: pos07.x, y: pos07shadow.y});\r\n setPos07shadow({x: pos07.x, y: pos07shadow.y});\r\n }\r\n }\r\n\r\n const handleClick = (page) => {\r\n dispatch(updateButton(page))\r\n dispatch(updateRoom([pos00.x, pos00.y,\r\n pos01shadow.x, pos01shadow.y,\r\n pos01.x, pos01.y,\r\n pos02shadow.x, pos02shadow.y,\r\n pos02.x, pos02.y,\r\n pos03shadow.x, pos03shadow.y,\r\n pos03.x, pos03.y,\r\n pos04shadow.x, pos04shadow.y,\r\n pos04.x, pos04.y,\r\n pos05shadow.x, pos05shadow.y,\r\n pos05.x, pos05.y,\r\n pos06shadow.x, pos06shadow.y,\r\n pos06.x, pos06.y,\r\n pos07shadow.x, pos07shadow.y,\r\n pos07.x, pos07.y,\r\n ]))\r\n dispatch(updateAngles([pos00angled, pos01angled,\r\n pos02angled, pos03angled,\r\n pos04angled, pos05angled,\r\n pos06angled, pos07angled\r\n ]))\r\n };\r\n\r\n useEffect(() => {\r\n\r\n setDim00to01Svalue(pos01shadow.x - pos00.x);\r\n setDim02to03Svalue(pos03shadow.x - pos02.x);\r\n setDim04to05Svalue(pos04.x - pos05shadow.x);\r\n setDim06to07Svalue(pos06.x - pos07shadow.x);\r\n\r\n setDim01to02Svalue(pos02shadow.y - pos01.y);\r\n setDim03to04Svalue(pos04shadow.y - pos03.y);\r\n setDim05to06Svalue(pos06shadow.y - pos05.y);\r\n setDim07to00value(pos07.y - pos00.y);\r\n\r\n setSquare((\r\n (pos01.y - pos01shadow.y) * (pos01.x + pos01shadow.x) / 2 +\r\n (pos02shadow.y - pos01.y) * (pos02shadow.x + pos01.x) / 2 +\r\n (pos02.y - pos02shadow.y) * (pos02.x + pos02shadow.x) / 2 +\r\n (pos03shadow.y - pos02.y) * (pos03shadow.x + pos02.x) / 2 +\r\n (pos03.y - pos03shadow.y) * (pos03.x + pos03shadow.x) / 2 +\r\n (pos04shadow.y - pos03.y) * (pos04shadow.x + pos03.x) / 2 +\r\n (pos04.y - pos04shadow.y) * (pos04.x + pos04shadow.x) / 2 +\r\n (pos05shadow.y - pos04.y) * (pos05shadow.x + pos04.x) / 2 +\r\n (pos05.y - pos05shadow.y) * (pos05.x + pos05shadow.x) / 2 +\r\n (pos06shadow.y - pos05.y) * (pos06shadow.x + pos05.x) / 2 +\r\n (pos06.y - pos06shadow.y) * (pos06.x + pos06shadow.x) / 2 +\r\n (pos07.y - pos07shadow.y) * pos07shadow.x / 2) / 10000 * ratio * ratio\r\n )\r\n\r\n }, [pos01, pos01shadow, pos02, pos02shadow, pos03, pos03shadow, pos04, pos04shadow,\r\n pos05, pos05shadow, pos06, pos06shadow, pos07, pos07shadow]);\r\n\r\n const top = 14;\r\n const left = 86;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n {/* Angle buttons */}\r\n
\r\n
handleAngle01(!pos01angled)}\r\n style={{\r\n backgroundImage: `url(${angIcon01})`,\r\n top: ((pos01.y + pos01shadow.y) / 2 - top),\r\n left: ((pos01.x + pos01shadow.x) / 2 + left),\r\n visibility: anglesMode ? 'visible' : 'hidden'\r\n }}>\r\n
\r\n\r\n
handleAngle02(!pos02angled)}\r\n style={{\r\n backgroundImage: `url(${angIcon02})`,\r\n top: ((pos02.y + pos02shadow.y) / 2 - top),\r\n left: ((pos02.x + pos02shadow.x) / 2 + left),\r\n transform: \"rotate(180deg)\",\r\n visibility: anglesMode ? 'visible' : 'hidden'\r\n }}>\r\n
\r\n\r\n
handleAngle03(!pos03angled)}\r\n style={{\r\n backgroundImage: `url(${angIcon03})`,\r\n top: ((pos03.y + pos03shadow.y) / 2 - top),\r\n left: ((pos03.x + pos03shadow.x) / 2 + left),\r\n visibility: anglesMode ? 'visible' : 'hidden'\r\n }}>\r\n
\r\n\r\n
handleAngle04(!pos04angled)}\r\n style={{\r\n backgroundImage: `url(${angIcon04})`,\r\n top: ((pos04.y + pos04shadow.y) / 2 - top),\r\n left: ((pos04.x + pos04shadow.x) / 2 + left),\r\n transform: \"rotate(90deg)\",\r\n visibility: (anglesMode && !shapes.L) ? 'visible' : 'hidden'\r\n }}>\r\n
\r\n\r\n
handleAngle05(!pos05angled)}\r\n style={{\r\n backgroundImage: `url(${angIcon05})`,\r\n top: ((pos05.y + pos05shadow.y) / 2 - top),\r\n left: ((pos05.x + pos05shadow.x) / 2 + left),\r\n transform: \"rotate(270deg)\",\r\n visibility: anglesMode ? 'visible' : 'hidden'\r\n }}>\r\n
\r\n\r\n
handleAngle06(!pos06angled)}\r\n style={{\r\n backgroundImage: `url(${angIcon06})`,\r\n top: ((pos06.y + pos06shadow.y) / 2 - top),\r\n left: ((pos06.x + pos06shadow.x) / 2 + left),\r\n transform: \"rotate(90deg)\",\r\n visibility: anglesMode ? 'visible' : 'hidden'\r\n }}>\r\n
\r\n\r\n
handleAngle07(!pos07angled)}\r\n style={{\r\n backgroundImage: `url(${angIcon07})`,\r\n top: ((pos07.y + pos07shadow.y) / 2 - top),\r\n left: ((pos07.x + pos07shadow.x) / 2 + left),\r\n transform: \"rotate(180deg)\",\r\n visibility: anglesMode ? 'visible' : 'hidden'\r\n }}>\r\n
\r\n
\r\n\r\n {/* Points */}\r\n
\r\n\r\n {/* Point START */}\r\n\r\n
\r\n\r\n {/* Point 01 */}\r\n\r\n {\r\n const {x, y} = pos01shadow;\r\n setCompassPoint(pos01shadow);\r\n setPos01shadow({x: x + d.deltaX, y: y + d.deltaY});\r\n }}\r\n position={{x: pos01shadow.x, y: pos01shadow.y}}\r\n onStart={() => {\r\n setCompassVisible(true);\r\n setCompassPoint(pos01shadow);\r\n }}\r\n onStop={() => {\r\n setCompassVisible(false);\r\n setCompassPoint({});\r\n }}\r\n bounds={pos01angled\r\n ? {\r\n left: 2 * minDist,\r\n top: 0,\r\n right: pos01.x - minDist,\r\n bottom: 0\r\n }\r\n : {left: 0, top: 0, right: maxWidth, bottom: maxHeight}}\r\n >\r\n
\r\n \r\n\r\n\r\n {\r\n const {x, y} = pos01;\r\n setCompassPoint(pos01);\r\n setPos01({x: x + d.deltaX, y: y + d.deltaY,});\r\n setPos02shadow({x: x, y: pos02shadow.y});\r\n\r\n if (!pos01angled) {\r\n setPos01shadow({x: x, y: y})\r\n }\r\n if (!pos02angled) {\r\n setPos02({x: x, y: pos02.y})\r\n }\r\n\r\n }}\r\n position={{x: pos01.x, y: pos01.y}}\r\n onStart={() => {\r\n setCompassVisible(true);\r\n setCompassPoint(pos01);\r\n }}\r\n onStop={() => {\r\n setCompassVisible(false);\r\n setCompassPoint({});\r\n }}\r\n bounds={\r\n {\r\n left: (pos01angled && pos01shadow.x + minDist) || minDist * 3,\r\n top: (pos01angled && minDist) || 2,\r\n right: (pos02angled && pos02.x - minDist) || (pos03angled && pos03shadow.x - 2 * minDist) || pos03shadow.x - 3 * minDist,\r\n bottom: (!pos01angled && 2) || (pos02angled && pos02shadow.y - minDist) || (pos02.y - 2 * minDist)\r\n }\r\n }\r\n >\r\n
\r\n \r\n\r\n {/* Point 02 */}\r\n\r\n {\r\n const {x, y} = pos02shadow;\r\n setCompassPoint(pos02shadow);\r\n setPos02shadow({x: x + d.deltaX, y: y + d.deltaY});\r\n setPos01({x: x, y: pos01.y});\r\n if (!pos01angled) {\r\n setPos01shadow({x: x, y: pos01shadow.y})\r\n }\r\n\r\n }}\r\n position={{x: pos02shadow.x, y: pos02shadow.y}}\r\n onStart={() => {\r\n setCompassVisible(true);\r\n setCompassPoint(pos02shadow);\r\n }}\r\n onStop={() => {\r\n setCompassVisible(false);\r\n setCompassPoint({});\r\n }}\r\n bounds={\r\n {\r\n left: (pos01angled) ? pos01shadow.x + minDist : minDist * 3,\r\n top: pos01.y + minDist + (!pos01angled && minDist),\r\n right: (pos02angled) ? pos02.x - minDist : maxWidth,\r\n bottom: (pos02angled) ? pos02.y - minDist : maxHeight\r\n }\r\n }\r\n >\r\n
\r\n \r\n\r\n {\r\n const {x, y} = pos02;\r\n setCompassPoint(pos02);\r\n setPos02({x: x + d.deltaX, y: y + d.deltaY});\r\n if (!pos02angled) {\r\n setPos02shadow({x: x, y: y})\r\n setPos01({x: x, y: pos01.y});\r\n if (!pos01angled) {\r\n setPos01shadow({x: x, y: pos01shadow.y});\r\n }\r\n }\r\n setPos03shadow({x: pos03shadow.x, y: y});\r\n if (!pos03angled) {\r\n setPos03({x: pos03.x, y: y});\r\n }\r\n\r\n\r\n }}\r\n position={{x: pos02.x, y: pos02.y}}\r\n onStart={() => {\r\n setCompassVisible(true);\r\n setCompassPoint(pos02);\r\n }}\r\n onStop={() => {\r\n setCompassVisible(false);\r\n setCompassPoint({});\r\n }}\r\n bounds={\r\n {\r\n left: (pos02angled && pos02shadow.x + minDist) || (pos01angled && pos01shadow.x + minDist) || 3 * minDist,\r\n top: (pos02angled && pos02shadow.y + minDist) || (pos01angled && pos01.y + 2 * minDist) || 3 * minDist,\r\n right: pos03shadow.x - minDist - (!pos02angled && minDist) - (!pos03angled && minDist),\r\n bottom: (pos03angled && pos03.y - minDist) || (pos04angled && pos04shadow.y - 2 * minDist) || pos04.y - 3 * minDist\r\n }\r\n }\r\n >\r\n
\r\n \r\n\r\n {/* Point 03 */}\r\n\r\n {\r\n const {x, y} = pos03shadow;\r\n setCompassPoint(pos03shadow);\r\n setPos03shadow({x: x + d.deltaX, y: y + d.deltaY});\r\n if (pos03angled) {\r\n setPos02({x: pos02.x, y: y})\r\n if (!pos02angled) {\r\n setPos02shadow({x: pos02shadow.x, y: y})\r\n }\r\n }\r\n }}\r\n position={{x: pos03shadow.x, y: pos03shadow.y}}\r\n onStart={() => {\r\n setCompassVisible(true);\r\n setCompassPoint(pos03shadow);\r\n }}\r\n onStop={() => {\r\n setCompassVisible(false);\r\n setCompassPoint({});\r\n }}\r\n bounds={\r\n {\r\n left: (pos02angled && pos02.x + minDist) || pos02.x + 2 * minDist,\r\n top: (pos02angled && pos02shadow.y + minDist) || (pos01angled && pos01.y + 2 * minDist) || pos01.y + 3 * minDist,\r\n right: (pos03angled && pos03.x - minDist) || maxWidth,\r\n bottom: (pos03angled && pos03.y - minDist) || (pos04angled && pos04shadow.y - 2 * minDist) || pos04.y - 3 * minDist\r\n }\r\n }\r\n >\r\n
\r\n \r\n\r\n\r\n {\r\n const {x, y} = pos03;\r\n setCompassPoint(pos03);\r\n setPos03({x: x + d.deltaX, y: y + d.deltaY,});\r\n setPos04shadow({x: x, y: pos04shadow.y});\r\n if (!pos04angled) {\r\n setPos04({x: x, y: pos04.y})\r\n }\r\n\r\n if (!pos03angled) {\r\n setPos03shadow({x: x, y: y})\r\n setPos02({x: pos02.x, y: y})\r\n if (!pos02angled) {\r\n setPos02shadow({x: pos02shadow.x, y: y})\r\n }\r\n }\r\n\r\n\r\n }}\r\n position={{x: pos03.x, y: pos03.y}}\r\n onStart={() => {\r\n setCompassVisible(true);\r\n setCompassPoint(pos03);\r\n }}\r\n onStop={() => {\r\n setCompassVisible(false);\r\n setCompassPoint({});\r\n }}\r\n bounds={\r\n {\r\n left: (pos03angled && Math.max(pos03shadow.x + minDist,\r\n (pos04angled && pos04.x + minDist)))\r\n || Math.max((pos02angled && pos02.x + 2 * minDist)\r\n || pos02.x + 3 * minDist, (pos05angled && pos05shadow.x + 2 * minDist)\r\n || pos05.x + 3 * minDist),\r\n top: (pos03angled && pos03shadow.y + minDist) || (pos02angled && pos02shadow.y + minDist) || (pos01angled && pos01.y + 2 * minDist) || 3 * minDist,\r\n right: maxWidth,\r\n bottom: (pos04angled && pos04shadow.y - minDist) || (pos04.y - 2 * minDist)\r\n }\r\n }\r\n >\r\n
\r\n \r\n\r\n {/* Point 04 */}\r\n\r\n {\r\n const {x, y} = pos04shadow;\r\n setCompassPoint(pos04shadow);\r\n setPos04shadow({x: x + d.deltaX, y: y + d.deltaY});\r\n setPos03({x: x, y: pos03.y});\r\n if (!pos03angled) {\r\n setPos03shadow({x: x, y: pos03shadow.y})\r\n }\r\n\r\n }}\r\n position={{x: pos04shadow.x, y: pos04shadow.y}}\r\n onStart={() => {\r\n setCompassVisible(true);\r\n setCompassPoint(pos04shadow);\r\n }}\r\n onStop={() => {\r\n setCompassVisible(false);\r\n setCompassPoint({});\r\n }}\r\n bounds={\r\n {\r\n left: (pos04angled && Math.max(pos04.x + minDist,\r\n (pos03angled && pos03shadow.x + minDist) ||\r\n (pos02angled && (pos02.x + 2 * minDist)\r\n || pos02.x + 3 * minDist))) || 0,\r\n top: (pos04angled && (pos03angled && (pos03.y + minDist) || pos03.y + 2 * minDist)) || 0,\r\n right: maxWidth,\r\n bottom: (pos04angled && pos04.y - minDist) || maxHeight\r\n }\r\n }\r\n >\r\n
\r\n \r\n\r\n {\r\n const {x, y} = pos04;\r\n setCompassPoint(pos04);\r\n setPos04({x: x + d.deltaX, y: y + d.deltaY});\r\n if (!pos04angled) {\r\n setPos04shadow({x: x, y: y})\r\n setPos03({x: x, y: pos03.y});\r\n if (!pos03angled) {\r\n setPos03shadow({x: x, y: pos03shadow.y});\r\n }\r\n }\r\n setPos05shadow({x: pos05shadow.x, y: y});\r\n if (!pos05angled) {\r\n setPos05({x: pos05.x, y: y});\r\n }\r\n\r\n\r\n }}\r\n position={{x: pos04.x, y: pos04.y}}\r\n onStart={() => {\r\n setCompassVisible(true);\r\n setCompassPoint(pos04);\r\n }}\r\n onStop={() => {\r\n setCompassVisible(false);\r\n setCompassPoint({});\r\n }}\r\n bounds={\r\n {\r\n left: (pos04angled && (pos05angled\r\n && (pos05shadow.x + minDist)\r\n || (pos05shadow.x + 2 * minDist)))\r\n || Math.max((pos05angled\r\n && (pos05shadow.x + 2 * minDist)\r\n || (pos05shadow.x + 3 * minDist)),\r\n (pos02angled && (pos02.x + 2 * minDist)\r\n || (pos02.x + 3 * minDist)),\r\n (pos03angled && (pos03shadow.x + minDist))),\r\n top: (pos04angled && (pos04shadow.y + minDist)) || (pos03angled && (pos03.y + 2 * minDist)) || (pos03.y + 3 * minDist),\r\n right: (pos04angled && (pos04shadow.x - minDist)) || maxWidth,\r\n bottom: (pos05angled && (pos05.y - minDist)) || (pos06angled && (pos06shadow.y - 2 * minDist)) || (pos06.y - 3 * minDist)\r\n }\r\n }\r\n >\r\n
\r\n \r\n\r\n {/* Point 05 */}\r\n\r\n {\r\n const {x, y} = pos05shadow;\r\n setCompassPoint(pos05shadow);\r\n setPos05shadow({x: x + d.deltaX, y: y + d.deltaY});\r\n setPos04({x: pos04.x, y: y})\r\n if (!pos04angled) {\r\n setPos04shadow({x: pos04shadow.x, y: y})\r\n }\r\n }}\r\n position={{x: pos05shadow.x, y: pos05shadow.y}}\r\n onStart={() => {\r\n setCompassVisible(true);\r\n setCompassPoint(pos05shadow);\r\n }}\r\n onStop={() => {\r\n setCompassVisible(false);\r\n setCompassPoint({});\r\n }}\r\n bounds={\r\n {\r\n left: (pos05angled && pos05.x + minDist) || 0,\r\n top: (pos04angled && pos04shadow.y + minDist) || (pos03angled && pos03.y + 2 * minDist) || pos03.y + 3 * minDist,\r\n right: (pos04angled && pos04.x - minDist) || pos04.x - 2 * minDist,\r\n bottom: (pos05angled && pos05.y - minDist) || maxHeight\r\n }\r\n }\r\n >\r\n
\r\n \r\n\r\n\r\n {\r\n const {x, y} = pos05;\r\n setCompassPoint(pos05);\r\n setPos05({x: x + d.deltaX, y: y + d.deltaY,});\r\n setPos06shadow({x: x, y: pos06shadow.y});\r\n\r\n if (!pos05angled) {\r\n setPos05shadow({x: x, y: y})\r\n setPos04({x: pos04.x, y: y})\r\n if (!pos04angled) {\r\n setPos04shadow({x: pos04shadow.x, y: y})\r\n }\r\n }\r\n if (!pos06angled) {\r\n setPos06({x: x, y: pos06.y})\r\n }\r\n\r\n }}\r\n position={{x: pos05.x, y: pos05.y}}\r\n onStart={() => {\r\n setCompassVisible(true);\r\n setCompassPoint(pos05);\r\n }}\r\n onStop={() => {\r\n setCompassVisible(false);\r\n setCompassPoint({});\r\n }}\r\n bounds={\r\n {\r\n left: (pos06angled && pos06.x + minDist) || (pos07angled && pos07shadow.x + 2 * minDist) || pos07shadow.x + 3 * minDist,\r\n top: (pos05angled && pos05shadow.y + minDist) || (pos04angled && pos04shadow.y + minDist) || (pos03angled && pos03.y + 2 * minDist) || pos03.y + 3 * minDist,\r\n right: (pos05angled && pos05shadow.x - minDist) || (pos04angled && pos04.x - 2 * minDist) || pos04.x - 3 * minDist,\r\n bottom: (pos05angled && ((pos06angled && pos06shadow.y - minDist) || pos06shadow.y - 2 * minDist)) || (pos06angled && pos06shadow.y - 2 * minDist) || (pos06shadow.y - 3 * minDist)\r\n }\r\n }\r\n >\r\n
\r\n \r\n\r\n {/* Point 06 */}\r\n\r\n {\r\n const {x, y} = pos06shadow;\r\n setCompassPoint(pos06shadow);\r\n setPos06shadow({x: x + d.deltaX, y: y + d.deltaY});\r\n setPos05({x: x, y: pos05.y});\r\n if (!pos05angled) {\r\n setPos05shadow({x: x, y: pos05shadow.y})\r\n }\r\n\r\n }}\r\n position={{x: pos06shadow.x, y: pos06shadow.y}}\r\n onStart={() => {\r\n setCompassVisible(true);\r\n setCompassPoint(pos06shadow);\r\n }}\r\n onStop={() => {\r\n setCompassVisible(false);\r\n setCompassPoint({});\r\n }}\r\n bounds={\r\n {\r\n left: (pos06angled && pos06.x + minDist) || 0,\r\n top: (pos06angled && (pos05angled && pos05.y + minDist || pos05.y + 2 * minDist)) || 0,\r\n right: (pos05angled && pos05shadow.x - minDist) || (pos04angled && pos04.x - 2 * minDist) || pos04.x - 3 * minDist,\r\n bottom: (pos06angled && pos06.y - minDist) || maxHeight\r\n }\r\n }\r\n >\r\n
\r\n \r\n\r\n {\r\n const {x, y} = pos06;\r\n setCompassPoint(pos06);\r\n setPos06({x: x + d.deltaX, y: y + d.deltaY});\r\n setPos07shadow({x: pos07shadow.x, y: y})\r\n if (!pos06angled) {\r\n setPos06shadow({x: x, y: y})\r\n setPos05({x: x, y: pos05.y})\r\n if (!pos05angled) {\r\n setPos05shadow({x: x, y: pos05shadow.y})\r\n }\r\n }\r\n if (!pos07angled) {\r\n setPos07({x: pos07.x, y: y})\r\n }\r\n\r\n\r\n }}\r\n position={{x: pos06.x, y: pos06.y}}\r\n onStart={() => {\r\n setCompassVisible(true);\r\n setCompassPoint(pos06);\r\n }}\r\n onStop={() => {\r\n setCompassVisible(false);\r\n setCompassPoint({});\r\n }}\r\n bounds={\r\n {\r\n left: ((pos07angled && pos07shadow.x + minDist) || pos07shadow.x + 2 * minDist) + (!pos06angled && minDist),\r\n top: Math.max((pos07angled && pos07.y + minDist), (pos06angled && pos06shadow.y + minDist), (pos05angled && pos05.y + 2 * minDist), pos05.y + 3 * minDist),\r\n right: (pos06angled && pos06shadow.x - minDist) || (pos05angled && pos05shadow.x - minDist) || (pos04angled && pos04.x - 2 * minDist) || pos04.x - 3 * minDist,\r\n bottom: maxHeight\r\n }\r\n }\r\n >\r\n
\r\n \r\n\r\n {/* Point 07 */}\r\n\r\n {\r\n const {x, y} = pos07shadow;\r\n setCompassPoint(pos07shadow);\r\n setPos07shadow({x: x + d.deltaX, y: y + d.deltaY});\r\n setPos06({x: pos06.x, y: y})\r\n if (!pos06angled) {\r\n setPos06shadow({x: pos06shadow.x, y: y})\r\n }\r\n }}\r\n position={{x: pos07shadow.x, y: pos07shadow.y}}\r\n onStart={() => {\r\n setCompassVisible(true);\r\n setCompassPoint(pos07shadow);\r\n }}\r\n onStop={() => {\r\n setCompassVisible(false);\r\n setCompassPoint({});\r\n }}\r\n bounds={\r\n {\r\n left: (pos07angled && pos07.x + minDist) || 0,\r\n top: (pos07angled && Math.max(pos07.y + minDist, (pos06angled && pos06shadow.y + minDist) || (pos05angled && pos05.y + 2 * minDist) || pos05.y + 3 * minDist))\r\n || 0,\r\n right: (pos06angled && pos06.x - minDist) || pos06.x - 2 * minDist,\r\n bottom: maxHeight\r\n }\r\n }\r\n >\r\n
\r\n \r\n\r\n\r\n {\r\n const {x, y} = pos07;\r\n setCompassPoint(pos07);\r\n setPos07({x: x + d.deltaX, y: y + d.deltaY});\r\n\r\n if (!pos07angled) {\r\n setPos07shadow({x: x, y: y});\r\n setPos06({x: pos06.x, y: y})\r\n if (!pos06angled) {\r\n setPos06shadow({x: pos06shadow.x, y: y})\r\n }\r\n }\r\n }}\r\n position={{x: pos07.x, y: pos07.y}}\r\n onStart={() => {\r\n setCompassVisible(true);\r\n setCompassPoint(pos07);\r\n }}\r\n onStop={() => {\r\n setCompassVisible(false);\r\n setCompassPoint({});\r\n }}\r\n bounds={\r\n {\r\n left: 0,\r\n top: (pos07angled && 2 * minDist) || (pos06angled && pos06shadow.y + minDist) || (pos05angled && pos05.y + 2 * minDist) || pos05.y + 3 * minDist,\r\n right: 0,\r\n bottom: (pos07angled && pos07shadow.y - minDist) || maxHeight\r\n }\r\n }\r\n >\r\n
\r\n \r\n\r\n\r\n
\r\n\r\n {/* Dimensions */}\r\n
\r\n\r\n {/* X horizontal dimensions */}\r\n
\r\n {dim00to01SeditMode\r\n ? {\r\n setDim00to01SeditMode(false);\r\n let newValue = dim00to01Svalue;\r\n let oldValue = pos01shadow.x - pos00.x;\r\n let maxDelta = maxWidth - pos03.x;\r\n let minDelta = ((pos01.x < pos06shadow.x)\r\n && ((pos00angled && (pos01angled && (pos00.x - pos01shadow.x) + minDist - 1\r\n || (pos00.x - pos01shadow.x) + 2 * minDist - 1))\r\n || (pos01angled && (pos00.x - pos01shadow.x) + 2 * minDist - 1)\r\n || ((pos00.x - pos01shadow.x) + 3 * minDist - 1))\r\n ) || ((pos06angled && (pos07angled && (pos07shadow.x - pos06.x) + minDist - 1\r\n || (pos07shadow.x - pos06.x) + 2 * minDist - 1))\r\n || (pos07angled && (pos07shadow.x - pos06.x) + 2 * minDist - 1)\r\n || (pos07shadow.x - pos06.x) + 3 * minDist - 1)\r\n ;\r\n\r\n let delta = newValue - oldValue;\r\n\r\n if (delta < minDelta + 1) delta = minDelta + 1\r\n if (delta > maxDelta + 1) delta = maxDelta + 1\r\n setDim00to01Svalue(oldValue + delta);\r\n\r\n setPos01shadow({x: pos01shadow.x + delta, y: pos01shadow.y});\r\n setPos01({x: pos01.x + delta, y: pos01.y});\r\n setPos02shadow({x: pos02shadow.x + delta, y: pos02shadow.y});\r\n setPos02({x: pos02.x + delta, y: pos02.y});\r\n setPos03shadow({x: pos03shadow.x + delta, y: pos03shadow.y});\r\n setPos03({x: pos03.x + delta, y: pos03.y});\r\n setPos04shadow({x: pos04shadow.x + delta, y: pos04shadow.y});\r\n setPos04({x: pos04.x + delta, y: pos04.y});\r\n setPos05shadow({x: pos05shadow.x + delta, y: pos05shadow.y});\r\n setPos05({x: pos05.x + delta, y: pos05.y});\r\n setPos06shadow({x: pos06shadow.x + delta, y: pos06shadow.y});\r\n setPos06({x: pos06.x + delta, y: pos06.y});\r\n }\r\n }/>\r\n : setDim00to01SeditMode(true)}>\r\n {`${Math.round(dim00to01Svalue) * 2}cm`}\r\n }\r\n
\r\n\r\n\r\n
\r\n {dim02to03SeditMode\r\n ? {\r\n setDim02to03SeditMode(false);\r\n let newValue = dim02to03Svalue;\r\n let oldValue = pos03shadow.x - pos02.x;\r\n let maxDelta = maxWidth - pos03.x;\r\n let minDelta = ((pos02.x > pos05shadow.x)\r\n && ((pos02angled && (pos03angled && ((pos02.x - pos03shadow.x) + minDist - 1)\r\n || (pos02.x - pos03shadow.x) + 2 * minDist - 1))\r\n || (pos03angled && (pos02.x - pos03shadow.x) + 2 * minDist - 1)\r\n || ((pos02.x - pos03shadow.x) + 3 * minDist - 1))\r\n ) || (pos04angled && (pos05angled && (pos05shadow.x - pos04.x) + minDist - 1\r\n || (pos05shadow.x - pos04.x) + 2 * minDist - 1))\r\n || (pos05angled && (pos05shadow.x - pos04.x) + 2 * minDist - 1)\r\n || (pos05shadow.x - pos04.x) + 3 * minDist - 1\r\n ;\r\n\r\n let delta = newValue - oldValue;\r\n\r\n if (delta < minDelta + 1) delta = minDelta + 1\r\n if (delta > maxDelta + 1) delta = maxDelta + 1\r\n setDim02to03Svalue(oldValue + delta);\r\n\r\n setPos03shadow({x: pos03shadow.x + delta, y: pos03shadow.y});\r\n setPos03({x: pos03.x + delta, y: pos03.y});\r\n setPos04shadow({x: pos04shadow.x + delta, y: pos04shadow.y});\r\n setPos04({x: pos04.x + delta, y: pos04.y});\r\n }\r\n }/>\r\n : setDim02to03SeditMode(true)}>\r\n {`${Math.round(dim02to03Svalue) * 2}cm`}\r\n }\r\n
\r\n\r\n
\r\n {dim04to05SeditMode\r\n ? {\r\n setDim04to05SeditMode(false);\r\n let newValue = dim04to05Svalue;\r\n let oldValue = pos04.x - pos05shadow.x;\r\n let maxDelta = maxWidth - pos03.x;\r\n let minDelta = ((pos02.x > pos05shadow.x)\r\n && ((pos02angled && (pos03angled && (pos02.x - pos03shadow.x) + minDist - 1\r\n || (pos02.x - pos03shadow.x) + 2 * minDist - 1))\r\n || (pos03angled && (pos02.x - pos03shadow.x) + 2 * minDist - 1)\r\n || ((pos02.x - pos03shadow.x) + 3 * minDist - 1))\r\n ) || (pos04angled && (pos05angled && (pos05shadow.x - pos04.x) + minDist - 1\r\n || (pos05shadow.x - pos04.x) + 2 * minDist - 1))\r\n || (pos05angled && (pos05shadow.x - pos04.x) + 2 * minDist - 1)\r\n || (pos05shadow.x - pos04.x) + 3 * minDist - 1\r\n ;\r\n\r\n let delta = newValue - oldValue;\r\n\r\n if (delta < minDelta + 1) delta = minDelta + 1\r\n if (delta > maxDelta + 1) delta = maxDelta + 1\r\n setDim02to03Svalue(oldValue + delta);\r\n\r\n console.log(delta)\r\n\r\n setPos03shadow({x: pos03shadow.x + delta, y: pos03shadow.y});\r\n setPos03({x: pos03.x + delta, y: pos03.y});\r\n setPos04shadow({x: pos04shadow.x + delta, y: pos04shadow.y});\r\n setPos04({x: pos04.x + delta, y: pos04.y});\r\n }\r\n }/>\r\n : setDim04to05SeditMode(true)}>\r\n {`${Math.round(dim04to05Svalue) * 2}cm`}\r\n }\r\n
\r\n\r\n\r\n
\r\n {dim06to07SeditMode\r\n ? {\r\n setDim06to07SeditMode(false);\r\n let newValue = dim06to07Svalue;\r\n let oldValue = pos06.x - pos07shadow.x;\r\n let maxDelta = maxWidth - pos03.x;\r\n let minDelta = ((pos01.x < pos06shadow.x)\r\n && ((pos00angled && (pos01angled && (pos00.x - pos01shadow.x) + minDist - 1\r\n || (pos00.x - pos01shadow.x) + 2 * minDist - 1))\r\n || (pos01angled && (pos00.x - pos01shadow.x) + 2 * minDist - 1)\r\n || ((pos00.x - pos01shadow.x) + 3 * minDist - 1))\r\n ) || ((pos06angled && (pos07angled && (pos07shadow.x - pos06.x) + minDist - 1\r\n || (pos07shadow.x - pos06.x) + 2 * minDist - 1))\r\n || (pos07angled && (pos07shadow.x - pos06.x) + 2 * minDist - 1)\r\n || (pos07shadow.x - pos06.x) + 3 * minDist - 1)\r\n ;\r\n\r\n let delta = newValue - oldValue;\r\n\r\n if (delta < minDelta + 1) delta = minDelta + 1\r\n if (delta > maxDelta + 1) delta = maxDelta + 1\r\n setDim00to01Svalue(oldValue + delta);\r\n\r\n setPos01shadow({x: pos01shadow.x + delta, y: pos01shadow.y});\r\n setPos01({x: pos01.x + delta, y: pos01.y});\r\n setPos02shadow({x: pos02shadow.x + delta, y: pos02shadow.y});\r\n setPos02({x: pos02.x + delta, y: pos02.y});\r\n setPos03shadow({x: pos03shadow.x + delta, y: pos03shadow.y});\r\n setPos03({x: pos03.x + delta, y: pos03.y});\r\n setPos04shadow({x: pos04shadow.x + delta, y: pos04shadow.y});\r\n setPos04({x: pos04.x + delta, y: pos04.y});\r\n setPos05shadow({x: pos05shadow.x + delta, y: pos05shadow.y});\r\n setPos05({x: pos05.x + delta, y: pos05.y});\r\n setPos06shadow({x: pos06shadow.x + delta, y: pos06shadow.y});\r\n setPos06({x: pos06.x + delta, y: pos06.y});\r\n }\r\n }/>\r\n : setDim06to07SeditMode(true)}>\r\n {`${Math.round(dim06to07Svalue) * 2}cm`}\r\n }\r\n
\r\n\r\n\r\n {/* Y vertical dimensions */}\r\n\r\n
\r\n {dim01to02SeditMode\r\n ? {\r\n setDim01to02SeditMode(false);\r\n let newValue = dim01to02Svalue;\r\n let oldValue = pos02shadow.y - pos01.y;\r\n let maxDelta = maxHeight - pos06.y;\r\n let minDelta = (pos02angled && (pos01angled && (pos01.y - pos02shadow.y) + minDist - 1\r\n || (pos01.y - pos02shadow.y) + 2 * minDist - 1))\r\n || (pos01angled && (pos01.y - pos02shadow.y) + 2 * minDist - 1)\r\n || (pos01.y - pos02shadow.y) + 3 * minDist - 1;\r\n let delta = newValue - oldValue;\r\n\r\n if (delta < minDelta + 1) delta = minDelta + 1\r\n if (delta > maxDelta) delta = maxDelta\r\n setDim01to02Svalue(oldValue + delta);\r\n\r\n setPos02shadow({x: pos02shadow.x, y: pos02shadow.y + delta});\r\n setPos02({x: pos02.x, y: pos02.y + delta});\r\n setPos03shadow({x: pos03shadow.x, y: pos03shadow.y + delta});\r\n setPos03({x: pos03.x, y: pos03.y + delta});\r\n setPos04shadow({x: pos04shadow.x, y: pos04shadow.y + delta});\r\n setPos04({x: pos04.x, y: pos04.y + delta});\r\n setPos05shadow({x: pos05shadow.x, y: pos05shadow.y + delta});\r\n setPos05({x: pos05.x, y: pos05.y + delta});\r\n setPos06shadow({x: pos06shadow.x, y: pos06shadow.y + delta});\r\n setPos06({x: pos06.x, y: pos06.y + delta});\r\n setPos07shadow({x: pos07shadow.x, y: pos07shadow.y + delta});\r\n setPos07({x: pos07.x, y: pos07.y + delta});\r\n }\r\n }/>\r\n : setDim01to02SeditMode(true)}>\r\n {`${Math.round(dim01to02Svalue) * 2}cm`}\r\n }\r\n
\r\n\r\n\r\n
\r\n {dim03to04SeditMode\r\n ? {\r\n setDim03to04SeditMode(false);\r\n let newValue = dim03to04Svalue;\r\n let oldValue = pos04shadow.y - pos03.y;\r\n let maxDelta = maxHeight - pos06.y;\r\n let minDelta = (pos04angled && (pos03angled && (pos03.y - pos04shadow.y) + minDist - 1\r\n || (pos03.y - pos04shadow.y) + 2 * minDist - 1))\r\n || (pos03angled && (pos03.y - pos04shadow.y) + 2 * minDist - 1)\r\n || (pos03.y - pos04shadow.y) + 3 * minDist - 1;\r\n let delta = newValue - oldValue;\r\n\r\n if (delta < minDelta + 1) delta = minDelta + 1\r\n if (delta > maxDelta) delta = maxDelta\r\n setDim03to04Svalue(oldValue + delta);\r\n\r\n setPos04shadow({x: pos04shadow.x, y: pos04shadow.y + delta});\r\n setPos04({x: pos04.x, y: pos04.y + delta});\r\n setPos05shadow({x: pos05shadow.x, y: pos05shadow.y + delta});\r\n setPos05({x: pos05.x, y: pos05.y + delta});\r\n setPos06shadow({x: pos06shadow.x, y: pos06shadow.y + delta});\r\n setPos06({x: pos06.x, y: pos06.y + delta});\r\n setPos07shadow({x: pos07shadow.x, y: pos07shadow.y + delta});\r\n setPos07({x: pos07.x, y: pos07.y + delta});\r\n }\r\n }/>\r\n : setDim03to04SeditMode(true)}>\r\n {`${Math.round(dim03to04Svalue) * 2}cm`}\r\n }\r\n
\r\n\r\n\r\n
\r\n {dim05to06SeditMode\r\n ? {\r\n setDim05to06SeditMode(false);\r\n let newValue = dim05to06Svalue;\r\n let oldValue = pos06shadow.y - pos05.y;\r\n let maxDelta = maxHeight - pos06.y;\r\n let minDelta = (pos06angled && (pos05angled && (pos05.y - pos06shadow.y) + minDist - 1\r\n || (pos05.y - pos06shadow.y) + 2 * minDist - 1))\r\n || (pos05angled && (pos05.y - pos06shadow.y) + 2 * minDist - 1)\r\n || (pos05.y - pos06shadow.y) + 3 * minDist - 1;\r\n let delta = newValue - oldValue;\r\n\r\n if (delta < minDelta + 1) delta = minDelta + 1\r\n if (delta > maxDelta) delta = maxDelta\r\n setDim05to06Svalue(oldValue + delta);\r\n\r\n setPos06shadow({x: pos06shadow.x, y: pos06shadow.y + delta});\r\n setPos06({x: pos06.x, y: pos06.y + delta});\r\n setPos07shadow({x: pos07shadow.x, y: pos07shadow.y + delta});\r\n setPos07({x: pos07.x, y: pos07.y + delta});\r\n }\r\n }/>\r\n : setDim05to06SeditMode(true)}>\r\n {`${Math.round(dim05to06Svalue) * 2}cm`}\r\n }\r\n
\r\n\r\n\r\n
\r\n {dim07to00editMode\r\n ? {\r\n setDim07to00editMode(false);\r\n let newValue = dim07to00value;\r\n let oldValue = pos07.y - pos00.y;\r\n let maxDelta = maxHeight - pos06.y;\r\n let minDelta = (pos06angled && (pos05angled && (pos05.y - pos06shadow.y) + minDist - 1\r\n || (pos05.y - pos06shadow.y) + 2 * minDist - 1))\r\n || (pos05angled && (pos05.y - pos06shadow.y) + 2 * minDist - 1)\r\n || (pos05.y - pos06shadow.y) + 3 * minDist - 1;\r\n let delta = newValue - oldValue;\r\n\r\n if (delta < minDelta + 1) delta = minDelta + 1\r\n if (delta > maxDelta) delta = maxDelta\r\n setDim07to00value(oldValue + delta);\r\n\r\n setPos06shadow({x: pos06shadow.x, y: pos06shadow.y + delta});\r\n setPos06({x: pos06.x, y: pos06.y + delta});\r\n setPos07shadow({x: pos07shadow.x, y: pos07shadow.y + delta});\r\n setPos07({x: pos07.x, y: pos07.y + delta});\r\n }\r\n }/>\r\n : setDim07to00editMode(true)}>\r\n {`${Math.round(dim07to00value) * 2}cm`}\r\n }\r\n
\r\n\r\n {/* XY diagonal dimensions */}\r\n\r\n
\r\n {`${Math.round(Math.sqrt(\r\n Math.pow(pos01.x - pos01shadow.x, 2)\r\n + Math.pow(pos01.y - pos01shadow.y, 2))) * 2}cm`}\r\n \r\n
\r\n\r\n
\r\n {`${Math.round(Math.sqrt(\r\n Math.pow(pos02.x - pos02shadow.x, 2)\r\n + Math.pow(pos02.y - pos02shadow.y, 2))) * 2}cm`}\r\n \r\n
\r\n\r\n
\r\n {`${Math.round(Math.sqrt(\r\n Math.pow(pos03.x - pos03shadow.x, 2)\r\n + Math.pow(pos03.y - pos03shadow.y, 2))) * 2}cm`}\r\n \r\n
\r\n\r\n
\r\n {`${Math.round(Math.sqrt(\r\n Math.pow(pos04.x - pos04shadow.x, 2)\r\n + Math.pow(pos04.y - pos04shadow.y, 2))) * 2}cm`}\r\n \r\n
\r\n\r\n
\r\n {`${Math.round(Math.sqrt(\r\n Math.pow(pos05.x - pos05shadow.x, 2)\r\n + Math.pow(pos05.y - pos05shadow.y, 2))) * 2}cm`}\r\n \r\n
\r\n\r\n
\r\n {`${Math.round(Math.sqrt(\r\n Math.pow(pos06.x - pos06shadow.x, 2)\r\n + Math.pow(pos06.y - pos06shadow.y, 2))) * 2}cm`}\r\n \r\n
\r\n\r\n
\r\n {`${Math.round(Math.sqrt(\r\n Math.pow(pos07.x - pos07shadow.x, 2)\r\n + Math.pow(pos07.y - pos07shadow.y, 2))) * 2}cm`}\r\n \r\n
\r\n\r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
{\r\n setAnglesMode(!anglesMode);\r\n }}\r\n style={anglesMode ? {background: \"lightgreen\"} : {}}\r\n >{t(\"create_angled_walls\")}\r\n
\r\n
setLabVis(!labVis)}\r\n >{t(\"show_hide_labels\")}\r\n
\r\n
setModalActive(true)}>{t(\"need_help\")}\r\n
\r\n
{square.toFixed(2)} m2
\r\n
\r\n handleClick(4)} className={s.btnNextStep}>\r\n {t(\"continue\")}\r\n \r\n \r\n
\r\n\r\n\r\n )\r\n ;\r\n}\r\n\r\nexport default PlanMakerT;\r\n\r\n","import React, {useRef, useEffect, useState} from 'react';\r\nimport s from './PlanMaker.module.css';\r\nimport Draggable from 'react-draggable';\r\nimport {HashLink as Link} from \"react-router-hash-link\";\r\nimport ModalRoomSize from \"../0Modal/ModalRoomSize\";\r\nimport {useDispatch, useSelector} from \"react-redux\";\r\nimport {updateButton} from \"../../redux/buttonsReducer\";\r\nimport imgDiagonal from '../../img/CornerButtons/CornerLine.svg';\r\nimport imgCorner from '../../img/CornerButtons/SEcorner.svg';\r\nimport CompassArrows from \"../../elements/CompassArrows/CompassArrows\";\r\nimport DimInput from \"../../elements/DimInput/DimInput\";\r\nimport {Stage, Layer, Star, Text, Line} from 'react-konva';\r\nimport {updateRoom} from \"../../redux/roomReducer\";\r\nimport {updateAngles} from \"../../redux/anglesReducer\";\r\nimport {useTranslation} from \"react-i18next\";\r\n\r\nconst PlanMakerR = () => {\r\n\r\n const {t} = useTranslation();\r\n\r\n const ratio = 2; //ratio = cm / pixels\r\n const minDist = 10; //minimum distance between points/lines\r\n const maxWidth = 600; //constructor max width\r\n const maxHeight = 315; //constructor max height\r\n\r\n const dispatch = useDispatch();\r\n const room = useSelector(state => state.room);\r\n const shapes = useSelector(state => state.shapes);\r\n const angles = useSelector(state => state.angles);\r\n const state = useSelector(state => state);\r\n const buttons = useSelector(state => state.buttons);\r\n\r\n const [modalActive, setModalActive] = useState(!buttons[4]);\r\n\r\n const [angIcon03, setAngIcon03] = useState(imgDiagonal);\r\n const [angIcon04, setAngIcon04] = useState(imgDiagonal);\r\n const [angIcon07, setAngIcon07] = useState(imgDiagonal);\r\n\r\n const [labVis, setLabVis] = useState(true);\r\n const [anglesMode, setAnglesMode] = useState(false);\r\n const [compassVisible, setCompassVisible] = useState(false);\r\n const [compassPoint, setCompassPoint] = useState({x: 0, y: 0});\r\n const [square, setSquare] = useState(0);\r\n\r\n const pos00 = {x: room[0], y: room[1]};\r\n const [pos03shadow, setPos03shadow] = useState({x: room[10], y: room[11]});\r\n const [pos03, setPos03] = useState({x: room[12], y: room[13]});\r\n const [pos04shadow, setPos04shadow] = useState({x: room[14], y: room[15]});\r\n const [pos04, setPos04] = useState({x: room[16], y: room[17]});\r\n const [pos07shadow, setPos07shadow] = useState({x: room[26], y: room[27]});\r\n const [pos07, setPos07] = useState({x: room[28], y: room[29]});\r\n\r\n const pos00angled = angles[0];\r\n const [pos03angled, setPos03angled] = useState(angles[3]);\r\n const [pos04angled, setPos04angled] = useState(angles[4]);\r\n const [pos07angled, setPos07angled] = useState(angles[7]);\r\n\r\n const [dim00to03SeditMode, setDim00to03SeditMode] = useState(false);\r\n const [dim03to04SeditMode, setDim03to04SeditMode] = useState(false);\r\n const [dim04to07SeditMode, setDim04to07SeditMode] = useState(false);\r\n const [dim07to00editMode, setDim07to00editMode] = useState(false);\r\n\r\n const [dim00to03Svalue, setDim00to03Svalue] = useState(0);\r\n const [dim03to04Svalue, setDim03to04Svalue] = useState(0);\r\n const [dim04to07Svalue, setDim04to07Svalue] = useState(0);\r\n const [dim07to00value, setDim07to00value] = useState(0);\r\n\r\n const handleAngle03 = (ang) => {\r\n setAnglesMode(false);\r\n setPos03angled(ang);\r\n if (ang) {\r\n setAngIcon03(imgCorner);\r\n setPos03({x: pos03.x, y: pos03.y + minDist});\r\n setPos03shadow({x: pos03shadow.x - minDist, y: pos03shadow.y});\r\n } else {\r\n setAngIcon03(imgDiagonal);\r\n setPos03({x: pos03.x, y: pos03shadow.y});\r\n setPos03shadow({x: pos03.x, y: pos03shadow.y});\r\n }\r\n }\r\n const handleAngle04 = (ang) => {\r\n setAnglesMode(false);\r\n setPos04angled(ang);\r\n if (ang) {\r\n setAngIcon04(imgCorner);\r\n setPos04({x: pos04.x - minDist, y: pos04.y});\r\n setPos04shadow({x: pos04shadow.x, y: pos04shadow.y - minDist});\r\n } else {\r\n setAngIcon04(imgDiagonal);\r\n setPos04({x: pos04shadow.x, y: pos04.y});\r\n setPos04shadow({x: pos04shadow.x, y: pos04.y});\r\n }\r\n }\r\n const handleAngle07 = (ang) => {\r\n setAnglesMode(false);\r\n setPos07angled(ang);\r\n if (ang) {\r\n setAngIcon07(imgCorner);\r\n setPos07({x: pos07.x, y: pos07.y - minDist});\r\n setPos07shadow({x: pos07shadow.x + minDist, y: pos07shadow.y});\r\n } else {\r\n setAngIcon07(imgDiagonal);\r\n setPos07({x: pos07.x, y: pos07shadow.y});\r\n setPos07shadow({x: pos07.x, y: pos07shadow.y});\r\n }\r\n }\r\n\r\n const handleClick = (page) => {\r\n dispatch(updateButton(page))\r\n dispatch(updateRoom([pos00.x, pos00.y,\r\n pos03shadow.x, pos03shadow.y,\r\n pos03.x, pos03.y,\r\n pos03shadow.x, pos03shadow.y,\r\n pos03.x, pos03.y,\r\n pos03shadow.x, pos03shadow.y,\r\n pos03.x, pos03.y,\r\n pos04shadow.x, pos04shadow.y,\r\n pos04.x, pos04.y,\r\n pos04shadow.x, pos04shadow.y,\r\n pos04.x, pos04.y,\r\n pos04shadow.x, pos04shadow.y,\r\n pos04.x, pos04.y,\r\n pos07shadow.x, pos07shadow.y,\r\n pos07.x, pos07.y,\r\n ]))\r\n dispatch(updateAngles([pos00angled, false,\r\n false, pos03angled,\r\n pos04angled, false, false, pos07angled\r\n ]))\r\n };\r\n\r\n useEffect(() => {\r\n\r\n setDim00to03Svalue(pos03shadow.x - pos00.x);\r\n setDim04to07Svalue(pos04.x - pos07shadow.x);\r\n\r\n setDim03to04Svalue(pos04shadow.y - pos03.y);\r\n setDim07to00value(pos07.y - pos00.y);\r\n\r\n setSquare((\r\n (pos03.y - pos03shadow.y) * (pos03.x + pos03shadow.x) / 2 +\r\n (pos04shadow.y - pos03.y) * (pos04shadow.x + pos03.x) / 2 +\r\n (pos04.y - pos04shadow.y) * (pos04.x + pos04shadow.x) / 2 +\r\n (pos07.y - pos07shadow.y) * pos07shadow.x / 2) / 10000 * ratio * ratio\r\n )\r\n\r\n }, [pos03, pos03shadow, pos04, pos04shadow,\r\n pos07, pos07shadow]);\r\n\r\n const top = 14;\r\n const left = 86;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n {/* Angle buttons */}\r\n
\r\n\r\n
handleAngle03(!pos03angled)}\r\n style={{\r\n backgroundImage: `url(${angIcon03})`,\r\n top: ((pos03.y + pos03shadow.y) / 2 - top),\r\n left: ((pos03.x + pos03shadow.x) / 2 + left),\r\n visibility: anglesMode ? 'visible' : 'hidden'\r\n }}>\r\n
\r\n\r\n
handleAngle04(!pos04angled)}\r\n style={{\r\n backgroundImage: `url(${angIcon04})`,\r\n top: ((pos04.y + pos04shadow.y) / 2 - top),\r\n left: ((pos04.x + pos04shadow.x) / 2 + left),\r\n transform: \"rotate(90deg)\",\r\n visibility: anglesMode ? 'visible' : 'hidden'\r\n }}>\r\n
\r\n\r\n
handleAngle07(!pos07angled)}\r\n style={{\r\n backgroundImage: `url(${angIcon07})`,\r\n top: ((pos07.y + pos07shadow.y) / 2 - top),\r\n left: ((pos07.x + pos07shadow.x) / 2 + left),\r\n transform: \"rotate(180deg)\",\r\n visibility: anglesMode ? 'visible' : 'hidden'\r\n }}>\r\n
\r\n
\r\n\r\n {/* Points */}\r\n
\r\n\r\n {/* Point START */}\r\n\r\n
\r\n\r\n {/* Point 01 */}\r\n {/* Point 02 */}\r\n {/* Point 03 */}\r\n\r\n {\r\n const {x, y} = pos03shadow;\r\n setCompassPoint(pos03shadow);\r\n setPos03shadow({x: x + d.deltaX, y: y + d.deltaY});\r\n }}\r\n position={{x: pos03shadow.x, y: pos03shadow.y}}\r\n onStart={() => {\r\n setCompassVisible(true);\r\n setCompassPoint(pos03shadow);\r\n }}\r\n onStop={() => {\r\n setCompassVisible(false);\r\n setCompassPoint({});\r\n }}\r\n bounds={\r\n {\r\n left: pos00.x + 2 * minDist,\r\n top: 0,\r\n right: (pos03angled && (pos03.x - minDist)) || maxWidth,\r\n bottom: 0\r\n }\r\n }\r\n >\r\n
\r\n \r\n\r\n\r\n {\r\n const {x, y} = pos03;\r\n setCompassPoint(pos03);\r\n setPos03({x: x + d.deltaX, y: y + d.deltaY,});\r\n setPos04shadow({x: x, y: pos04shadow.y});\r\n if (!pos04angled) {\r\n setPos04({x: x, y: pos04.y})\r\n }\r\n if (!pos03angled) {\r\n setPos03shadow({x: x, y: y})\r\n }\r\n\r\n\r\n }}\r\n position={{x: pos03.x, y: pos03.y}}\r\n onStart={() => {\r\n setCompassVisible(true);\r\n setCompassPoint(pos03);\r\n }}\r\n onStop={() => {\r\n setCompassVisible(false);\r\n setCompassPoint({});\r\n }}\r\n bounds={\r\n {\r\n left: (pos03angled && pos03shadow.x + minDist) || 3 * minDist,\r\n top: (pos03angled && pos03shadow.y + minDist) || 0,\r\n right: maxWidth,\r\n bottom: (pos03angled && ((pos04angled && pos04shadow.y - minDist) || (pos04.y - 2 * minDist))) || pos00.y\r\n }\r\n }\r\n >\r\n
\r\n \r\n\r\n {/* Point 04 */}\r\n\r\n {\r\n const {x, y} = pos04shadow;\r\n setCompassPoint(pos04shadow);\r\n setPos04shadow({x: x + d.deltaX, y: y + d.deltaY});\r\n setPos03({x: x, y: pos03.y});\r\n if (!pos03angled) {\r\n setPos03shadow({x: x, y: pos03shadow.y})\r\n }\r\n\r\n }}\r\n position={{x: pos04shadow.x, y: pos04shadow.y}}\r\n onStart={() => {\r\n setCompassVisible(true);\r\n setCompassPoint(pos04shadow);\r\n }}\r\n onStop={() => {\r\n setCompassVisible(false);\r\n setCompassPoint({});\r\n }}\r\n bounds={\r\n {\r\n left: (pos04angled && (pos03angled && Math.max(pos04.x + minDist, pos03shadow.x + minDist) || pos04.x + minDist)) || 0,\r\n top: (pos03angled && (pos03.y + minDist) || pos03.y + 2 * minDist) || 0,\r\n right: maxWidth,\r\n bottom: (pos04angled && pos04.y - minDist) || maxHeight\r\n }\r\n }\r\n >\r\n
\r\n \r\n\r\n {\r\n const {x, y} = pos04;\r\n setCompassPoint(pos04);\r\n setPos04({x: x + d.deltaX, y: y + d.deltaY});\r\n if (!pos04angled) {\r\n setPos04shadow({x: x, y: y})\r\n setPos03({x: x, y: pos03.y});\r\n if (!pos03angled) {\r\n setPos03shadow({x: x, y: pos03shadow.y});\r\n }\r\n }\r\n setPos07shadow({x: pos07shadow.x, y: y});\r\n if (!pos07angled) {\r\n setPos07({x: pos07.x, y: y});\r\n }\r\n\r\n\r\n }}\r\n position={{x: pos04.x, y: pos04.y}}\r\n onStart={() => {\r\n setCompassVisible(true);\r\n setCompassPoint(pos04);\r\n }}\r\n onStop={() => {\r\n setCompassVisible(false);\r\n setCompassPoint({});\r\n }}\r\n bounds={\r\n {\r\n left: (pos04angled && ((pos07angled && (pos07shadow.x + minDist)) || pos07shadow + 2 * minDist))\r\n || ((pos03angled && Math.max(pos03shadow.x + minDist, pos07shadow.x + 2 * minDist)) || ((pos07angled && pos07shadow.x + 2 * minDist)) || 3 * minDist),\r\n top: Math.max((pos07angled && pos07.y + minDist), (pos04angled && pos04shadow.y + minDist), (pos03angled && pos03.y + 2 * minDist), pos03.y + 3 * minDist),\r\n right: (pos04angled && (pos04shadow.x - minDist)) || maxWidth,\r\n bottom: maxHeight\r\n }\r\n }\r\n >\r\n
\r\n \r\n\r\n {/* Point 05 */}\r\n {/* Point 06 */}\r\n {/* Point 07 */}\r\n\r\n {\r\n const {x, y} = pos07shadow;\r\n setCompassPoint(pos07shadow);\r\n setPos07shadow({x: x + d.deltaX, y: y + d.deltaY});\r\n setPos04({x: pos04.x, y: y})\r\n if (!pos04angled) {\r\n setPos04shadow({x: pos04shadow.x, y: y})\r\n }\r\n }}\r\n position={{x: pos07shadow.x, y: pos07shadow.y}}\r\n onStart={() => {\r\n setCompassVisible(true);\r\n setCompassPoint(pos07shadow);\r\n }}\r\n onStop={() => {\r\n setCompassVisible(false);\r\n setCompassPoint({});\r\n }}\r\n bounds={\r\n {\r\n left: (pos07angled && pos07.x + minDist) || 0,\r\n top: (pos07angled && (pos04angled && (Math.max(pos07.y + minDist, pos04shadow.y + minDist))\r\n || (pos03angled && (Math.max(pos07.y + minDist, pos03.y + 2 * minDist)))\r\n || Math.max(pos07.y + minDist, pos03.y + 3 * minDist)))\r\n || 0,\r\n right: (pos04angled && pos04.x - minDist) || pos04.x - 2 * minDist,\r\n bottom: maxHeight\r\n }\r\n }\r\n >\r\n
\r\n \r\n\r\n\r\n {\r\n const {x, y} = pos07;\r\n setCompassPoint(pos07);\r\n setPos07({x: x + d.deltaX, y: y + d.deltaY});\r\n\r\n if (!pos07angled) {\r\n setPos07shadow({x: x, y: y});\r\n setPos04({x: pos04.x, y: y})\r\n if (!pos04angled) {\r\n setPos04shadow({x: pos04shadow.x, y: y})\r\n }\r\n }\r\n }}\r\n position={{x: pos07.x, y: pos07.y}}\r\n onStart={() => {\r\n setCompassVisible(true);\r\n setCompassPoint(pos07);\r\n }}\r\n onStop={() => {\r\n setCompassVisible(false);\r\n setCompassPoint({});\r\n }}\r\n bounds={\r\n {\r\n left: 0,\r\n top: (pos07angled && 2 * minDist) || (pos04angled && pos04shadow.y + minDist) || (pos03angled && pos03.y + 2 * minDist) || pos03.y + 3 * minDist,\r\n right: 0,\r\n bottom: (pos07angled && pos07shadow.y - minDist) || maxHeight\r\n }\r\n }\r\n >\r\n
\r\n \r\n\r\n\r\n
\r\n\r\n {/* Dimensions */}\r\n
\r\n\r\n {/* X horizontal dimensions */}\r\n\r\n
\r\n {dim00to03SeditMode\r\n ? {\r\n setDim00to03SeditMode(false);\r\n let newValue = dim00to03Svalue;\r\n let oldValue = pos03shadow.x - pos00.x;\r\n let maxDelta = maxWidth - pos03.x;\r\n let min0to3 = pos00.x - pos03shadow.x + minDist - 1 + (pos03angled + minDist)\r\n let min4to7 = pos07shadow.x - pos04.x + minDist - 1 + (pos07angled && minDist) + (pos04angled + minDist)\r\n let minDelta = Math.max(min0to3, min4to7)\r\n ;\r\n\r\n let delta = newValue - oldValue;\r\n\r\n if (delta < minDelta + 1) delta = minDelta + 1\r\n if (delta > maxDelta + 1) delta = maxDelta + 1\r\n setDim00to03Svalue(oldValue + delta);\r\n\r\n setPos03shadow({x: pos03shadow.x + delta, y: pos03shadow.y});\r\n setPos03({x: pos03.x + delta, y: pos03.y});\r\n setPos04shadow({x: pos04shadow.x + delta, y: pos04shadow.y});\r\n setPos04({x: pos04.x + delta, y: pos04.y});\r\n }\r\n }/>\r\n : setDim00to03SeditMode(true)}>\r\n {`${Math.round(dim00to03Svalue) * 2}cm`}\r\n }\r\n
\r\n\r\n
\r\n {dim04to07SeditMode\r\n ? {\r\n setDim04to07SeditMode(false);\r\n let newValue = dim04to07Svalue;\r\n let oldValue = pos04.x - pos07shadow.x;\r\n let maxDelta = maxWidth - pos03.x;\r\n let min0to3 = pos00.x - pos03shadow.x + 2 * minDist - 1 + (pos03angled && minDist)\r\n let min4to7 = pos07shadow.x - pos04.x + minDist - 1 + (pos04angled && minDist) + (pos07angled && minDist)\r\n let minDelta = Math.max(min0to3, min4to7)\r\n ;\r\n\r\n let delta = newValue - oldValue;\r\n\r\n if (delta < minDelta + 1) delta = minDelta + 1\r\n if (delta > maxDelta + 1) delta = maxDelta + 1\r\n setDim04to07Svalue(oldValue + delta);\r\n\r\n setPos03shadow({x: pos03shadow.x + delta, y: pos03shadow.y});\r\n setPos03({x: pos03.x + delta, y: pos03.y});\r\n setPos04shadow({x: pos04shadow.x + delta, y: pos04shadow.y});\r\n setPos04({x: pos04.x + delta, y: pos04.y});\r\n }\r\n }/>\r\n : setDim04to07SeditMode(true)}>\r\n {`${Math.round(dim04to07Svalue) * 2}cm`}\r\n }\r\n
\r\n\r\n\r\n {/* Y vertical dimensions */}\r\n\r\n\r\n
\r\n {dim03to04SeditMode\r\n ? {\r\n setDim03to04SeditMode(false);\r\n let newValue = dim03to04Svalue;\r\n let oldValue = pos04shadow.y - pos03.y;\r\n let maxDelta = maxHeight - pos04.y;\r\n let min3to4 = pos03.y - pos04shadow.y + minDist - 1 + (pos03angled && minDist) + (pos04angled && minDist)\r\n let min7to0 = pos00.y - pos07.y + 2 * minDist - 1 + (pos07angled && minDist)\r\n let minDelta = Math.max(min3to4, min7to0)\r\n let delta = newValue - oldValue;\r\n\r\n if (delta < minDelta + 1) delta = minDelta + 1\r\n if (delta > maxDelta) delta = maxDelta\r\n setDim03to04Svalue(oldValue + delta);\r\n\r\n setPos04shadow({x: pos04shadow.x, y: pos04shadow.y + delta});\r\n setPos04({x: pos04.x, y: pos04.y + delta});\r\n setPos07shadow({x: pos07shadow.x, y: pos07shadow.y + delta});\r\n setPos07({x: pos07.x, y: pos07.y + delta});\r\n }\r\n }/>\r\n : setDim03to04SeditMode(true)}>\r\n {`${Math.round(dim03to04Svalue) * 2}cm`}\r\n }\r\n
\r\n\r\n\r\n
\r\n {dim07to00editMode\r\n ? {\r\n setDim07to00editMode(false);\r\n let newValue = dim07to00value;\r\n let oldValue = pos07.y - pos00.y;\r\n let maxDelta = maxHeight - pos04.y;\r\n let min3to4 = pos03.y - pos04shadow.y + minDist - 1 + (pos03angled && minDist) + (pos04angled && minDist)\r\n let min7to0 = pos00.y - pos07.y + 2 * minDist - 1 + (pos07angled && minDist)\r\n let minDelta = Math.max(min3to4, min7to0)\r\n let delta = newValue - oldValue;\r\n\r\n if (delta < minDelta + 1) delta = minDelta + 1\r\n if (delta > maxDelta) delta = maxDelta\r\n setDim07to00value(oldValue + delta);\r\n\r\n setPos04shadow({x: pos04shadow.x, y: pos04shadow.y + delta});\r\n setPos04({x: pos04.x, y: pos04.y + delta});\r\n setPos07shadow({x: pos07shadow.x, y: pos07shadow.y + delta});\r\n setPos07({x: pos07.x, y: pos07.y + delta});\r\n }\r\n }/>\r\n : setDim07to00editMode(true)}>\r\n {`${Math.round(dim07to00value) * 2}cm`}\r\n }\r\n
\r\n\r\n {/* XY diagonal dimensions */}\r\n\r\n
\r\n {`${Math.round(Math.sqrt(\r\n Math.pow(pos03.x - pos03shadow.x, 2)\r\n + Math.pow(pos03.y - pos03shadow.y, 2))) * 2}cm`}\r\n \r\n
\r\n\r\n
\r\n {`${Math.round(Math.sqrt(\r\n Math.pow(pos04.x - pos04shadow.x, 2)\r\n + Math.pow(pos04.y - pos04shadow.y, 2))) * 2}cm`}\r\n \r\n
\r\n\r\n
\r\n {`${Math.round(Math.sqrt(\r\n Math.pow(pos07.x - pos07shadow.x, 2)\r\n + Math.pow(pos07.y - pos07shadow.y, 2))) * 2}cm`}\r\n \r\n
\r\n\r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
{\r\n setAnglesMode(!anglesMode);\r\n }}\r\n style={anglesMode ? {background: \"lightgreen\"} : {}}\r\n >{t(\"create_angled_walls\")}\r\n
\r\n
setLabVis(!labVis)}\r\n >{t(\"show_hide_labels\")}\r\n
\r\n
setModalActive(true)}>{t(\"need_help\")}\r\n
\r\n
{square.toFixed(2)} m2
\r\n
\r\n handleClick(4)} className={s.btnNextStep}>\r\n {t(\"continue\")}\r\n \r\n \r\n
\r\n\r\n\r\n )\r\n ;\r\n}\r\n\r\nexport default PlanMakerR;\r\n\r\n","import React, {useState} from 'react';\r\nimport {useDispatch, useSelector} from \"react-redux\";\r\nimport {Redirect} from \"react-router\";\r\nimport {HashLink as Link} from \"react-router-hash-link\";\r\n\r\nimport '../../styles/main.css';\r\nimport '../../styles/modals.css';\r\nimport s from \"./RoomSize.module.css\";\r\n\r\nimport {updateButton} from \"../../redux/buttonsReducer\";\r\nimport PlanMaker from \"../PlanMaker/PlanMaker\";\r\nimport PlanMakerL from \"../PlanMaker/PlanMakerL\";\r\nimport ModalRoomSize from \"../0Modal/ModalRoomSize\";\r\nimport PlanMakerT from \"../PlanMaker/PlanMakerT\";\r\nimport PlanMakerR from \"../PlanMaker/PlanMakerR\";\r\nimport {useTranslation} from \"react-i18next\";\r\n\r\nconst RoomSize = () => {\r\n\r\n const {t} = useTranslation();\r\n\r\n const [modalActive, setModalActive] = useState(false);\r\n\r\n\r\n const buttons = useSelector(state => state.buttons);\r\n const shapes = useSelector(state => state.shapes);\r\n\r\n const dispatch = useDispatch();\r\n\r\n\r\n\r\n if (!buttons[3]) return ;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n

{t(\"adjust_room_size\")}

\r\n

{t(\"adjust_room_size_text_p1\")}\r\n

\r\n
\r\n
?
\r\n
\r\n {shapes.R && }\r\n {shapes.L && }\r\n {shapes.T && }\r\n
\r\n );\r\n};\r\n\r\nexport default RoomSize;\r\n","export default __webpack_public_path__ + \"static/media/frame_with_coldspot.59842f7c.png\";","export default __webpack_public_path__ + \"static/media/frame_with_coldspot_wrong_position.e85f0da3.png\";","export default __webpack_public_path__ + \"static/media/squareWhite.040fccb8.svg\";","export default __webpack_public_path__ + \"static/media/squareGrey.d81634af.svg\";","export default __webpack_public_path__ + \"static/media/triangle1white.42bb2973.svg\";","export default __webpack_public_path__ + \"static/media/triangle1grey.2f996cd2.svg\";","export default __webpack_public_path__ + \"static/media/triangle2white.708ce5bd.svg\";","export default __webpack_public_path__ + \"static/media/triangle2grey.4c1c1791.svg\";","export default __webpack_public_path__ + \"static/media/triangle3white.d1aef567.svg\";","export default __webpack_public_path__ + \"static/media/triangle3grey.3024d01c.svg\";","export default __webpack_public_path__ + \"static/media/triangle4white.9bcf0b86.svg\";","export default __webpack_public_path__ + \"static/media/triangle4grey.54d7d8a3.svg\";","import React, {useState} from 'react';\r\nimport {useDispatch, useSelector} from \"react-redux\";\r\nimport {updateButton} from \"../../redux/buttonsReducer\";\r\nimport {Redirect} from \"react-router\";\r\n\r\nimport s from \"./ColdSpots.module.css\";\r\nimport {HashLink as Link} from \"react-router-hash-link\";\r\nimport Modal from \"../0Modal/Modal\";\r\n\r\nimport coldSpot from '../../img/frame_with_coldspot.png';\r\nimport coldSpotWrong from '../../img/frame_with_coldspot_wrong_position.png';\r\nimport {Layer, Line, Stage} from \"react-konva\";\r\nimport {updateColdSpot} from \"../../redux/coldSpotReducer\";\r\n\r\nimport squareWhite from '../../img/ColdSpotIcons/squareWhite.svg';\r\nimport squareGrey from '../../img/ColdSpotIcons/squareGrey.svg';\r\nimport triangle1white from '../../img/ColdSpotIcons/triangle1white.svg';\r\nimport triangle1grey from '../../img/ColdSpotIcons/triangle1grey.svg';\r\nimport triangle2white from '../../img/ColdSpotIcons/triangle2white.svg';\r\nimport triangle2grey from '../../img/ColdSpotIcons/triangle2grey.svg';\r\nimport triangle3white from '../../img/ColdSpotIcons/triangle3white.svg';\r\nimport triangle3grey from '../../img/ColdSpotIcons/triangle3grey.svg';\r\nimport triangle4white from '../../img/ColdSpotIcons/triangle4white.svg';\r\nimport triangle4grey from '../../img/ColdSpotIcons/triangle4grey.svg';\r\nimport {updateColdSpots} from \"../../redux/coldSpotsReducer\";\r\nimport {updatePoints} from \"../../redux/coldSpotsPoints\";\r\nimport {useTranslation} from \"react-i18next\";\r\n\r\n\r\nconst ColdSpot = spot => spot.handleDragMove(e, spot)}\r\n/>\r\n\r\n\r\nconst ColdSpots = () => {\r\n const {t} = useTranslation();\r\n\r\n\r\n const dispatch = useDispatch();\r\n const buttons = useSelector(state => state.buttons);\r\n const room = useSelector(state => state.room);\r\n let spots = useSelector(state => state.coldSpots);\r\n\r\n const [color, setColor] = useState('grey');\r\n const [modalActive, setModalActive] = useState(!buttons[5]);\r\n const [modalHelpActive, setModalHelpActive] = useState(!buttons[5]); //shows modal only first time on page\r\n\r\n const [width, setWidth] = useState(25);\r\n const [height, setHeight] = useState(25);\r\n const [figure, setFigure] = useState(1);\r\n const [currentColdSpot, setCurrentColdSpot] = useState(0);\r\n\r\n const [figure01picture, setFigure01picture] = useState(squareGrey)\r\n const [figure02picture, setFigure02picture] = useState(triangle1white)\r\n const [figure03picture, setFigure03picture] = useState(triangle2white)\r\n const [figure04picture, setFigure04picture] = useState(triangle3white)\r\n const [figure05picture, setFigure05picture] = useState(triangle4white)\r\n\r\n const [spot00, setSpot00] = useState({\r\n width: spots[0].width, height: spots[0].height, figure: spots[0].figure,\r\n A: spots[0].A, B: spots[0].B, C: spots[0].C, D: spots[0].D,\r\n visible: spots[0].visible, color: spots[0].color, onDragMove: spots[0].onDragMove,\r\n points: []\r\n });\r\n\r\n const [spot01, setSpot01] = useState({\r\n width: spots[1].width, height: spots[1].height, figure: spots[1].figure,\r\n A: spots[1].A, B: spots[1].B, C: spots[1].C, D: spots[1].D,\r\n visible: spots[1].visible, color: spots[1].color, onDragMove: spots[1].onDragMove,\r\n points: []\r\n });\r\n\r\n const [spot02, setSpot02] = useState({\r\n width: spots[2].width, height: spots[2].height, figure: spots[2].figure,\r\n A: spots[2].A, B: spots[2].B, C: spots[2].C, D: spots[2].D,\r\n visible: spots[2].visible, color: spots[2].color, onDragMove: spots[2].onDragMove,\r\n points: []\r\n });\r\n\r\n const [spot03, setSpot03] = useState({\r\n width: spots[3].width, height: spots[3].height, figure: spots[3].figure,\r\n A: spots[3].A, B: spots[3].B, C: spots[3].C, D: spots[3].D,\r\n visible: spots[3].visible, color: spots[3].color, onDragMove: spots[3].onDragMove,\r\n points: []\r\n });\r\n\r\n const [spot04, setSpot04] = useState({\r\n width: spots[4].width, height: spots[4].height, figure: spots[4].figure,\r\n A: spots[4].A, B: spots[4].B, C: spots[4].C, D: spots[4].D,\r\n visible: spots[4].visible, color: spots[4].color, onDragMove: spots[4].onDragMove,\r\n points: []\r\n });\r\n\r\n const [points00, setPoints00] = useState([])\r\n const [points01, setPoints01] = useState([])\r\n const [points02, setPoints02] = useState([])\r\n const [points03, setPoints03] = useState([])\r\n const [points04, setPoints04] = useState([])\r\n\r\n const handleClick = (page) => {\r\n let pointsForResult = []\r\n if (spot00.color === \"yellow\") pointsForResult.push(points00)\r\n if (spot01.color === \"yellow\") pointsForResult.push(points01)\r\n if (spot02.color === \"yellow\") pointsForResult.push(points02)\r\n if (spot03.color === \"yellow\") pointsForResult.push(points03)\r\n if (spot04.color === \"yellow\") pointsForResult.push(points04)\r\n dispatch(updatePoints(pointsForResult))\r\n dispatch(updateButton(page))\r\n dispatch(updateColdSpots([spot00, spot01, spot02, spot03, spot04]))\r\n }\r\n\r\n const handleAdd = () => {\r\n let pts = [];\r\n if (figure === 1) {\r\n pts = [0, 0, width, 0, width, height, 0, height]\r\n }\r\n if (figure === 2) {\r\n pts = [0, 0, width / 2, height / 2, width, height, 0, height]\r\n }\r\n if (figure === 3) {\r\n pts = [0, 0, width, 0, width / 2, height / 2, 0, height]\r\n }\r\n if (figure === 4) {\r\n pts = [0, 0, width, 0, width, height, width / 2, height / 2,]\r\n }\r\n if (figure === 5) {\r\n //pts = [width / 2, height / 2, width, 0, width, height, 0, height]\r\n pts = [0, 0, width / 2, -height / 2, width / 2, height / 2, -width / 2, height / 2]\r\n }\r\n\r\n if (currentColdSpot === 0) {\r\n setSpot00({\r\n width: width,\r\n height: height,\r\n figure: figure,\r\n visible: true,\r\n color: \"red\",\r\n onDragMove: handleDragMove00,\r\n points: pts,\r\n A: {x: pts[0], y: pts[1]},\r\n B: {x: pts[2], y: pts[3]},\r\n C: {x: pts[4], y: pts[5]},\r\n D: {x: pts[6], y: pts[7]}\r\n })\r\n spots[0] = spot00;\r\n }\r\n\r\n if (currentColdSpot === 1) {\r\n setSpot01({\r\n width: width,\r\n height: height,\r\n figure: figure,\r\n visible: true,\r\n color: \"red\",\r\n onDragMove: handleDragMove01,\r\n points: pts,\r\n A: {x: pts[0], y: pts[1]},\r\n B: {x: pts[2], y: pts[3]},\r\n C: {x: pts[4], y: pts[5]},\r\n D: {x: pts[6], y: pts[7]}\r\n })\r\n spots[1] = spot01;\r\n }\r\n\r\n if (currentColdSpot === 2) {\r\n setSpot02({\r\n width: width,\r\n height: height,\r\n figure: figure,\r\n visible: true,\r\n color: \"red\",\r\n onDragMove: handleDragMove02,\r\n points: pts,\r\n A: {x: pts[0], y: pts[1]},\r\n B: {x: pts[2], y: pts[3]},\r\n C: {x: pts[4], y: pts[5]},\r\n D: {x: pts[6], y: pts[7]}\r\n })\r\n spots[2] = spot02;\r\n }\r\n\r\n if (currentColdSpot === 3) {\r\n setSpot03({\r\n width: width,\r\n height: height,\r\n figure: figure,\r\n visible: true,\r\n color: \"red\",\r\n onDragMove: handleDragMove03,\r\n points: pts,\r\n A: {x: pts[0], y: pts[1]},\r\n B: {x: pts[2], y: pts[3]},\r\n C: {x: pts[4], y: pts[5]},\r\n D: {x: pts[6], y: pts[7]}\r\n })\r\n spots[3] = spot03;\r\n }\r\n\r\n if (currentColdSpot === 4) {\r\n setSpot04({\r\n width: width,\r\n height: height,\r\n figure: figure,\r\n visible: true,\r\n color: \"red\",\r\n onDragMove: handleDragMove04,\r\n points: pts,\r\n A: {x: pts[0], y: pts[1]},\r\n B: {x: pts[2], y: pts[3]},\r\n C: {x: pts[4], y: pts[5]},\r\n D: {x: pts[6], y: pts[7]}\r\n })\r\n spots[4] = spot04;\r\n }\r\n\r\n\r\n setCurrentColdSpot(currentColdSpot + 1)\r\n setModalActive(false);\r\n }\r\n\r\n const handleDragMove00 = (e) => {\r\n const stage = e.target.getStage();\r\n const layer = stage.findOne(\".main-layer\");\r\n const layer2 = stage.findOne(\".bin\");\r\n\r\n let A = e.target.position()\r\n let B = {x: A.x + spot00.B.x - spot00.A.x, y: A.y + spot00.B.y - spot00.A.y};\r\n let C = {x: A.x + spot00.C.x - spot00.A.x, y: A.y + spot00.C.y - spot00.A.y};\r\n let D = {x: A.x + spot00.D.x - spot00.A.x, y: A.y + spot00.D.y - spot00.A.y};\r\n\r\n setPoints00([A.x - 320, A.y, B.x - 320, B.y, C.x - 320, C.y, D.x - 320, D.y])\r\n\r\n if (((spot00.figure === 5) ? true : layer.getIntersection(A))\r\n && ((spot00.figure === 2) ? true : layer.getIntersection(B))\r\n && ((spot00.figure === 3) ? true : layer.getIntersection(C))\r\n && ((spot00.figure === 4) ? true : layer.getIntersection(D))\r\n && layer.getIntersection({x: A.x + width / 2, y: A.y + height / 2}))\r\n setSpot00({...spot00, color: \"yellow\"})\r\n else {\r\n setSpot00({...spot00, color: \"red\"})\r\n }\r\n if (layer2.getIntersection(A)) {\r\n setSpot00({...spot00, visible: false})\r\n }\r\n }\r\n\r\n const handleDragMove01 = (e) => {\r\n const stage = e.target.getStage();\r\n const layer = stage.findOne(\".main-layer\");\r\n const layer2 = stage.findOne(\".bin\");\r\n\r\n let A = e.target.position()\r\n let B = {x: A.x + spot01.B.x - spot01.A.x, y: A.y + spot01.B.y - spot01.A.y};\r\n let C = {x: A.x + spot01.C.x - spot01.A.x, y: A.y + spot01.C.y - spot01.A.y};\r\n let D = {x: A.x + spot01.D.x - spot01.A.x, y: A.y + spot01.D.y - spot01.A.y};\r\n\r\n setPoints01([A.x - 320, A.y, B.x - 320, B.y, C.x - 320, C.y, D.x - 320, D.y])\r\n\r\n if (((spot01.figure === 5) ? true : layer.getIntersection(A))\r\n && ((spot01.figure === 2) ? true : layer.getIntersection(B))\r\n && ((spot01.figure === 3) ? true : layer.getIntersection(C))\r\n && ((spot01.figure === 4) ? true : layer.getIntersection(D))\r\n && layer.getIntersection({x: A.x + width / 2, y: A.y + height / 2}))\r\n setSpot01({...spot01, color: \"yellow\", A: A, B: B, C: C, D: D})\r\n else {\r\n setSpot01({...spot01, vi: \"red\"})\r\n }\r\n if (layer2.getIntersection(A)) {\r\n setSpot01({...spot01, visible: false})\r\n }\r\n }\r\n\r\n const handleDragMove02 = (e) => {\r\n const stage = e.target.getStage();\r\n const layer = stage.findOne(\".main-layer\");\r\n const layer2 = stage.findOne(\".bin\");\r\n\r\n let A = e.target.position()\r\n let B = {x: A.x + spot02.B.x - spot02.A.x, y: A.y + spot02.B.y - spot02.A.y};\r\n let C = {x: A.x + spot02.C.x - spot02.A.x, y: A.y + spot02.C.y - spot02.A.y};\r\n let D = {x: A.x + spot02.D.x - spot02.A.x, y: A.y + spot02.D.y - spot02.A.y};\r\n\r\n setPoints02([A.x - 320, A.y, B.x - 320, B.y, C.x - 320, C.y, D.x - 320, D.y])\r\n\r\n if (((spot02.figure === 5) ? true : layer.getIntersection(A))\r\n && ((spot02.figure === 2) ? true : layer.getIntersection(B))\r\n && ((spot02.figure === 3) ? true : layer.getIntersection(C))\r\n && ((spot02.figure === 4) ? true : layer.getIntersection(D))\r\n && layer.getIntersection({x: A.x + width / 2, y: A.y + height / 2}))\r\n setSpot02({...spot02, color: \"yellow\", A: A, B: B, C: C, D: D})\r\n else {\r\n setSpot02({...spot02, color: \"red\"})\r\n }\r\n if (layer2.getIntersection(A)) {\r\n setSpot02({...spot02, visible: false})\r\n }\r\n }\r\n\r\n const handleDragMove03 = (e) => {\r\n const stage = e.target.getStage();\r\n const layer = stage.findOne(\".main-layer\");\r\n const layer2 = stage.findOne(\".bin\");\r\n\r\n let A = e.target.position()\r\n let B = {x: A.x + spot03.B.x - spot03.A.x, y: A.y + spot03.B.y - spot03.A.y};\r\n let C = {x: A.x + spot03.C.x - spot03.A.x, y: A.y + spot03.C.y - spot03.A.y};\r\n let D = {x: A.x + spot03.D.x - spot03.A.x, y: A.y + spot03.D.y - spot03.A.y};\r\n\r\n setPoints03([A.x - 320, A.y, B.x - 320, B.y, C.x - 320, C.y, D.x - 320, D.y])\r\n\r\n if (((spot03.figure === 5) ? true : layer.getIntersection(A))\r\n && ((spot03.figure === 2) ? true : layer.getIntersection(B))\r\n && ((spot03.figure === 3) ? true : layer.getIntersection(C))\r\n && ((spot03.figure === 4) ? true : layer.getIntersection(D))\r\n && layer.getIntersection({x: A.x + width / 2, y: A.y + height / 2}))\r\n setSpot03({...spot03, color: \"yellow\", A: A, B: B, C: C, D: D})\r\n else {\r\n setSpot03({...spot03, color: \"red\"})\r\n }\r\n if (layer2.getIntersection(A)) {\r\n setSpot03({...spot03, visible: false})\r\n }\r\n }\r\n\r\n const handleDragMove04 = (e) => {\r\n const stage = e.target.getStage();\r\n const layer = stage.findOne(\".main-layer\");\r\n const layer2 = stage.findOne(\".bin\");\r\n\r\n let A = e.target.position()\r\n let B = {x: A.x + spot04.B.x - spot04.A.x, y: A.y + spot04.B.y - spot04.A.y};\r\n let C = {x: A.x + spot04.C.x - spot04.A.x, y: A.y + spot04.C.y - spot04.A.y};\r\n let D = {x: A.x + spot04.D.x - spot04.A.x, y: A.y + spot04.D.y - spot04.A.y};\r\n\r\n setPoints04([A.x - 320, A.y, B.x - 320, B.y, C.x - 320, C.y, D.x - 320, D.y])\r\n\r\n if (((spot04.figure === 5) ? true : layer.getIntersection(A))\r\n && ((spot04.figure === 2) ? true : layer.getIntersection(B))\r\n && ((spot04.figure === 3) ? true : layer.getIntersection(C))\r\n && ((spot04.figure === 4) ? true : layer.getIntersection(D))\r\n && layer.getIntersection({x: A.x + width / 2, y: A.y + height / 2}))\r\n setSpot04({...spot04, color: \"yellow\", A: A, B: B, C: C, D: D})\r\n else {\r\n setSpot04({...spot04, color: \"red\"})\r\n }\r\n if (layer2.getIntersection(A)) {\r\n setSpot04({...spot04, visible: false})\r\n }\r\n }\r\n\r\n if (!buttons[4]) return \r\n\r\n return (\r\n
\r\n
\r\n
\r\n

{t(\"cold_spots\")}

\r\n

{t(\"cold_spots_text_p1\")} {t(\"cold_spots_text_p2\")}\r\n

\r\n
\r\n
?
\r\n
\r\n\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n
\r\n
\r\n
{\r\n setModalActive(true);\r\n setFigure(1);\r\n setWidth(25);\r\n setHeight(25);\r\n setFigure01picture(squareGrey);\r\n setFigure02picture(triangle1white);\r\n setFigure03picture(triangle2white);\r\n setFigure04picture(triangle3white);\r\n setFigure05picture(triangle4white);\r\n }\r\n }>{t(\"add_cold_spot\")}\r\n
\r\n
setModalHelpActive(true)}>{t(\"need_help\")}\r\n
\r\n\r\n
\r\n {t(\"drag_here\")}\r\n
\r\n handleClick(5)} className={s.btnNextStep}>\r\n {t(\"continue\")}\r\n \r\n
\r\n
\r\n \r\n
\r\n

{t(\"add_cold_spot\")}

\r\n setModalActive(false)}>\r\n
\r\n \r\n setWidth(e.target.value / 2)}/>\r\n \r\n setHeight(e.target.value / 2)}/>\r\n
\r\n \r\n
    \r\n
  • {\r\n setFigure(1);\r\n setFigure01picture(squareGrey)\r\n setFigure02picture(triangle1white)\r\n setFigure03picture(triangle2white)\r\n setFigure04picture(triangle3white)\r\n setFigure05picture(triangle4white)\r\n\r\n }}>
  • \r\n
  • {\r\n setFigure(2);\r\n setFigure01picture(squareWhite)\r\n setFigure02picture(triangle1grey)\r\n setFigure03picture(triangle2white)\r\n setFigure04picture(triangle3white)\r\n setFigure05picture(triangle4white)\r\n\r\n }}>
  • \r\n
  • {\r\n setFigure(3);\r\n setFigure01picture(squareWhite)\r\n setFigure02picture(triangle1white)\r\n setFigure03picture(triangle2grey)\r\n setFigure04picture(triangle3white)\r\n setFigure05picture(triangle4white)\r\n\r\n }}>
  • \r\n
  • {\r\n setFigure(4);\r\n setFigure01picture(squareWhite)\r\n setFigure02picture(triangle1white)\r\n setFigure03picture(triangle2white)\r\n setFigure04picture(triangle3grey)\r\n setFigure05picture(triangle4white)\r\n\r\n }}>
  • \r\n
  • {\r\n setFigure(5);\r\n setFigure01picture(squareWhite)\r\n setFigure02picture(triangle1white)\r\n setFigure03picture(triangle2white)\r\n setFigure04picture(triangle3white)\r\n setFigure05picture(triangle4grey)\r\n\r\n }}>
  • \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n

{t(\"add_cold_spots\")}

\r\n setModalHelpActive(false)}>\r\n
\r\n
\r\n \r\n \"cold-spot-position\"/\r\n

{t(\"cold_spot\")}

\r\n

\r\n {t(\"cold_spot_text_p1\")}\r\n
\r\n {t(\"cold_spot_text_p2\")}\r\n

\r\n
\r\n \r\n \"cold-spot-wrong-position\"/\r\n

{t(\"not_cold_spot\")}

\r\n

\r\n {t(\"not_cold_spot_text_p1\")}\r\n
\r\n {t(\"not_cold_spot_text_p2\")}\r\n

\r\n
\r\n\r\n
\r\n handleClick(5)}\r\n >\r\n {t(\"skip\")}\r\n \r\n
setModalHelpActive(false)}>{t(\"continue\")}
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default ColdSpots;","export default __webpack_public_path__ + \"static/media/laminate.bd01ae4a.jpg\";","export default __webpack_public_path__ + \"static/media/parquet.d408ef0e.jpg\";","export default __webpack_public_path__ + \"static/media/unburnable.cd91d128.jpg\";","export default __webpack_public_path__ + \"static/media/burnable-wood.1ac14f3d.jpg\";","import pointInPolygon from \"point-in-polygon\";\r\n\r\n//RoomTransformer - transformimg the room into proper array [[x0, y0],[x1, y1],[x2, y2]] for PointInPolygon + resizing it\r\nexport const RoomTransformer = (room, d) => [[room[0] + d, room[1] + d],\r\n [room[2] - d, room[3] + d], [room[4] - d, room[5] + d],\r\n [room[6] - d, room[7] + d], [room[8] - d, room[9] + d],\r\n [room[10] - d, room[11] + d], [room[12] - d, room[13] + d],\r\n [room[14] - d, room[15] - d], [room[16] - d, room[17] - d],\r\n [room[18] - d, room[19] - d], [room[20] - d, room[21] - d],\r\n [room[22] - d, room[23] - d], [room[24] - d, room[25] - d],\r\n [room[26] + d, room[27] - d], [room[28] + d, room[29] - d]\r\n]\r\n\r\n//RoomReshaper\r\nexport const RoomReshaper = (room, d) => [\r\n room[0] + d, room[1] + d,\r\n room[2] - d, room[3] + d, room[4] - d, room[5] + d,\r\n room[6] - d, room[7] + d, room[8] - d, room[9] + d,\r\n room[10] - d, room[11] + d, room[12] - d, room[13] + d,\r\n room[14] - d, room[15] - d, room[16] - d, room[17] - d,\r\n room[18] - d, room[19] - d, room[20] - d, room[21] - d,\r\n room[22] - d, room[23] - d, room[24] - d, room[25] - d,\r\n room[26] + d, room[27] - d, room[28] + d, room[29] - d\r\n]\r\n\r\n//Cold Spot transformer\r\nexport const ColdSpotsTransformer = (spots, d) => {\r\n let result = [];\r\n for (let i = 0; i < spots.length; i++) {\r\n if (spots[i].length !== 0) {\r\n result.push([spots[i][0] + d, spots[i][1] + d,\r\n spots[i][2] - d, spots[i][3] + d,\r\n spots[i][4] - d, spots[i][5] - d,\r\n spots[i][6] + d, spots[i][7] - d])\r\n }\r\n }\r\n return result;\r\n}\r\n\r\n//Bulldozer - transforming a building (a polygon) into array of walls => [[W0StartX, W0StartY, W0FinishX, W0FinishY], [W1StartX, W1StartY, W1FinishX, W1FinishY]]\r\nexport const Bulldozer = poly => {\r\n let result = [];\r\n for (let i = 0; i < poly.length / 2 - 1; i++) {\r\n result.push([poly[2 * i], poly[2 * i + 1], poly[2 * i + 2], poly[2 * i + 3]])\r\n }\r\n result.push([poly[poly.length - 2], poly[poly.length - 1], poly[0], poly[1]])\r\n return result;\r\n}\r\n\r\n//BulldozerSquad - applying Bulldozer for the array of buildings (polygons)\r\nexport const BulldozerSquad = city => {\r\n let result = [];\r\n for (let i = 0; i < city.length; i++) {\r\n result.push(...Bulldozer(city[i]))\r\n }\r\n return result;\r\n}\r\n\r\n//Bomb - similar to RoomTransformer, but for any polygon and with no resizing\r\nexport const Bomb = poly => {\r\n let result = [];\r\n for (let i = 0; i < poly.length / 2; i++) {\r\n result.push([poly[2 * i], poly[2 * i + 1]]);\r\n }\r\n return result;\r\n}\r\n\r\n//BombForMat - similar to Bomb, but only for rectangle mats + distancing corners\r\nexport const BombForMat = mat => [\r\n [mat[0] - 1, mat[1] - 1],\r\n [mat[2] + 1, mat[3] - 1],\r\n [mat[4] + 1, mat[5] + 1],\r\n [mat[6] - 1, mat[7] + 1]\r\n];\r\n\r\n//BombForRoom - Bomb for resized room\r\nexport const BombForRoom = room => {\r\n let result = [];\r\n for (let i = 0; i < room.length - 1; i++) {\r\n result.push([room[i][0], room[i][1]]);\r\n }\r\n result.push([room[room.length - 2][0], room[room.length - 1][1]]);\r\n return result;\r\n}\r\n\r\n\r\nexport const pitStopsCleaner = (arr, spots) => {\r\n let resultTemp = []\r\n //Removing doubled points\r\n loop1:\r\n for (let i = 0; i < arr.length; i++) {\r\n // let isUnique = true\r\n for (let j = i + 1; j < arr.length; j++) {\r\n if ((arr[i][0] === arr[j][0]) && (arr[i][1] === arr[j][1])) {\r\n // isUnique = false\r\n continue loop1;\r\n }\r\n }\r\n /*if (isUnique)*/\r\n resultTemp.push(arr[i])\r\n }\r\n\r\n let result = [];\r\n //Removing pit stops inside mats\r\n loop2:\r\n for (let i = 0; i < resultTemp.length; i++) {\r\n for (let j = 0; j < spots.length; j++) {\r\n if (pointInPolygon(resultTemp[i], spots[j])) {\r\n continue loop2;\r\n }\r\n }\r\n result.push(resultTemp[i])\r\n }\r\n return result\r\n}\r\n\r\n//creating combinations with alternative entries points\r\nexport const entriesCombinations = (arr1, arr2) => {\r\n let result = []\r\n let count = Math.pow(2, arr1.length)\r\n let deleted = 0;\r\n loop:\r\n for (let i = 0; i < count; i++) {\r\n result.push([])\r\n let temp = i;\r\n for (let j = 0; j < arr1.length; j++) {\r\n result[i - deleted].push([])\r\n if (temp >= Math.pow(2, arr1.length - 1 - j)) {\r\n temp -= Math.pow(2, arr1.length - 1 - j)\r\n result[i - deleted][j] = arr1[j]\r\n } else {\r\n if (arr2[j][0] !== null) {\r\n result[i - deleted][j] = arr2[j]\r\n } else {\r\n result.pop();\r\n deleted++;\r\n continue loop;\r\n }\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n\r\nexport const connectorsFarm = path => {\r\n let connectors = [];\r\n let numbers = [];\r\n for (let i = 1; i < path.length; i++) {\r\n //horizontal icicle\r\n if (path[i][0][1] === path[i][1][1]) {\r\n //growing down\r\n if (path[i][0][0] > path[i][1][0]) {\r\n numbers.push([path[i][0][0] - 18, path[i][0][1] - 6, i])\r\n if (i !== path.length - 1) numbers.push([path[i][1][0] + 10, path[i][1][1] - 6, i + 1])\r\n for (let j = 0; j < (path[i][0][0] - path[i][1][0]) / 50; j++) {\r\n if ((i === path.length - 1) && (j === 0)) {\r\n connectors.push([path[i][1][0] + 4, path[i][1][1] - 3,\r\n path[i][1][0] + 8, path[i][1][1] - 3,\r\n path[i][1][0] + 8, path[i][1][1] + 3,\r\n path[i][1][0] + 4, path[i][1][1] + 3])\r\n } else {\r\n connectors.push([path[i][1][0] + 50 * j, path[i][1][1] - 3,\r\n path[i][1][0] + 50 * j + 8, path[i][1][1] - 3,\r\n path[i][1][0] + 50 * j + 8, path[i][1][1] + 3,\r\n path[i][1][0] + 50 * j, path[i][1][1] + 3])\r\n }\r\n }\r\n }\r\n //growing up\r\n if (path[i][0][0] < path[i][1][0]) {\r\n numbers.push([path[i][0][0] + 10, path[i][0][1] - 6, i])\r\n if (i !== path.length - 1) numbers.push([path[i][1][0] - 18, path[i][1][1] - 6, i + 1])\r\n for (let j = 0; j < (path[i][1][0] - path[i][0][0]) / 50; j++) {\r\n if ((i === path.length - 1) && (j === 0)) {\r\n connectors.push([path[i][1][0] - 8, path[i][1][1] - 3,\r\n path[i][1][0] - 4, path[i][1][1] - 3,\r\n path[i][1][0] - 4, path[i][1][1] + 3,\r\n path[i][1][0] - 8, path[i][1][1] + 3])\r\n } else {\r\n connectors.push([path[i][1][0] - 50 * j - 8, path[i][1][1] - 3,\r\n path[i][1][0] - 50 * j, path[i][1][1] - 3,\r\n path[i][1][0] - 50 * j, path[i][1][1] + 3,\r\n path[i][1][0] - 50 * j - 8, path[i][1][1] + 3])\r\n }\r\n }\r\n }\r\n }\r\n //vertical icicle\r\n if (path[i][0][0] === path[i][0][0]) {\r\n //growing left\r\n if (path[i][0][1] > path[i][1][1]) {\r\n numbers.push([path[i][0][0] - 4, path[i][0][1] - 22, i])\r\n if (i !== path.length - 1) numbers.push([path[i][1][0] - 4, path[i][1][1] + 9, i + 1])\r\n for (let j = 0; j < (path[i][0][1] - path[i][1][1]) / 50; j++) {\r\n if ((i === path.length - 1) && (j === 0)) {\r\n connectors.push([path[i][1][0] - 3, path[i][1][1] + 4,\r\n path[i][1][0] + 3, path[i][1][1] + 4,\r\n path[i][1][0] + 3, path[i][1][1] + 8,\r\n path[i][1][0] - 3, path[i][1][1] + 8])\r\n } else {\r\n connectors.push([path[i][1][0] - 3, path[i][1][1] + 50 * j,\r\n path[i][1][0] + 3, path[i][1][1] + 50 * j,\r\n path[i][1][0] + 3, path[i][1][1] + 50 * j + 8,\r\n path[i][1][0] - 3, path[i][1][1] + 50 * j + 8])\r\n }\r\n }\r\n }\r\n //growing right\r\n if (path[i][0][1] < path[i][1][1]) {\r\n numbers.push([path[i][0][0] - 4, path[i][0][1] + 9, i])\r\n if (i !== path.length - 1) numbers.push([path[i][1][0] - 4, path[i][1][1] - 22, i + 1])\r\n for (let j = 0; j < (path[i][1][1] - path[i][0][1]) / 50; j++) {\r\n if ((i === path.length - 1) && (j === 0)) {\r\n connectors.push([path[i][1][0] - 3, path[i][1][1] - 8,\r\n path[i][1][0] + 3, path[i][1][1] - 8,\r\n path[i][1][0] + 3, path[i][1][1] - 4,\r\n path[i][1][0] - 3, path[i][1][1] - 4])\r\n } else {\r\n connectors.push([path[i][1][0] - 3, path[i][1][1] - 50 * j - 8,\r\n path[i][1][0] + 3, path[i][1][1] - 50 * j - 8,\r\n path[i][1][0] + 3, path[i][1][1] - 50 * j,\r\n path[i][1][0] - 3, path[i][1][1] - 50 * j])\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return [connectors, numbers]\r\n}\r\n\r\nexport const roomArea = r => (\r\n (r[5] - r[3]) * (r[4] + r[2]) / 2 +\r\n (r[7] - r[5]) * (r[6] + r[4]) / 2 +\r\n (r[9] - r[7]) * (r[8] + r[6]) / 2 +\r\n (r[11] - r[9]) * (r[10] + r[8]) / 2 +\r\n (r[13] - r[11]) * (r[12] + r[10]) / 2 +\r\n (r[15] - r[13]) * (r[14] + r[12]) / 2 +\r\n (r[17] - r[15]) * (r[16] + r[14]) / 2 +\r\n (r[19] - r[17]) * (r[18] + r[16]) / 2 +\r\n (r[21] - r[19]) * (r[20] + r[18]) / 2 +\r\n (r[23] - r[21]) * (r[22] + r[20]) / 2 +\r\n (r[25] - r[23]) * (r[24] + r[22]) / 2 +\r\n (r[29] - r[27]) * r[26] / 2\r\n) / 2500\r\n","import pointInPolygon from \"point-in-polygon\";\r\nimport _ from 'lodash';\r\nimport {\r\n Bomb, BombForMat,\r\n BombForRoom,\r\n Bulldozer, BulldozerSquad,\r\n ColdSpotsTransformer, connectorsFarm, entriesCombinations, pitStopsCleaner,\r\n RemoveDoubledPoints, RoomReshaper,\r\n RoomTransformer\r\n} from \"../../calculator/helpers\";\r\nimport {\r\n combinationLength, cordCalc,\r\n dist,\r\n normalSnake, twoWaySnake,\r\n weakSnake,\r\n wireLength,\r\n wiresCombinations\r\n} from \"../../calculator/superSnake\";\r\nimport {useSelector} from \"react-redux\";\r\nimport {useState} from \"react\";\r\n\r\nconst isGroupInsideRoom = (groupX0, groupY0, group, R) =>\r\n pointInPolygon([groupX0, groupY0], R)\r\n && pointInPolygon([groupX0 + group.w, groupY0], R)\r\n && pointInPolygon([groupX0 + group.w, groupY0 + group.h], R)\r\n && pointInPolygon([groupX0, groupY0 + group.h], R)\r\n\r\n// Cold Spot inside Group and vice versa\r\nconst YinYang = (CS, gX0, gY0, group) =>\r\n pointInPolygon([gX0, gY0], [[CS[0], CS[1]], [CS[2], CS[3]], [CS[4], CS[5]], [CS[6], CS[7]]])\r\n || pointInPolygon([gX0 + group.w, gY0], [[CS[0], CS[1]], [CS[2], CS[3]], [CS[4], CS[5]], [CS[6], CS[7]]])\r\n || pointInPolygon([gX0 + group.w, gY0 + group.h], [[CS[0], CS[1]], [CS[2], CS[3]], [CS[4], CS[5]], [CS[6], CS[7]]])\r\n || pointInPolygon([gX0, gY0 + group.h], [[CS[0], CS[1]], [CS[2], CS[3]], [CS[4], CS[5]], [CS[6], CS[7]]])\r\n || pointInPolygon([CS[0], CS[1]], [[gX0, gY0], [gX0 + group.w, gY0], [gX0 + group.w, gY0 + group.h], [gX0, gY0 + group.h]])\r\n || pointInPolygon([CS[2], CS[3]], [[gX0, gY0], [gX0 + group.w, gY0], [gX0 + group.w, gY0 + group.h], [gX0, gY0 + group.h]])\r\n || pointInPolygon([CS[4], CS[5]], [[gX0, gY0], [gX0 + group.w, gY0], [gX0 + group.w, gY0 + group.h], [gX0, gY0 + group.h]])\r\n || pointInPolygon([CS[6], CS[7]], [[gX0, gY0], [gX0 + group.w, gY0], [gX0 + group.w, gY0 + group.h], [gX0, gY0 + group.h]])\r\n\r\n// Intersection of two line segments\r\nconst lSI = (x1, y1, x2, y2, x3, y3, x4, y4) => {\r\n let a_dx = x2 - x1;\r\n let a_dy = y2 - y1;\r\n let b_dx = x4 - x3;\r\n let b_dy = y4 - y3;\r\n let s = (-a_dy * (x1 - x3) + a_dx * (y1 - y3)) / (-b_dx * a_dy + a_dx * b_dy);\r\n let t = (+b_dx * (y1 - y3) - b_dy * (x1 - x3)) / (-b_dx * a_dy + a_dx * b_dy);\r\n return (s >= 0 && s <= 1 && t >= 0 && t <= 1);\r\n}\r\n\r\nconst doesOneGroupSideIntersectCS = (CS, x1, y1, x2, y2) => lSI(CS[0], CS[1], CS[2], CS[3], x1, y1, x2, y2)\r\n || lSI(CS[2], CS[3], CS[4], CS[5], x1, y1, x2, y2)\r\n || lSI(CS[4], CS[5], CS[6], CS[7], x1, y1, x2, y2)\r\n || lSI(CS[6], CS[7], CS[0], CS[1], x1, y1, x2, y2)\r\n\r\nconst doCSandGroupIntersect = (CS, gX0, gY0, group) => doesOneGroupSideIntersectCS(CS, gX0, gY0, gX0 + group.w, gY0)\r\n || doesOneGroupSideIntersectCS(CS, gX0 + group.w, gY0, gX0 + group.w, gY0 + group.h)\r\n || doesOneGroupSideIntersectCS(CS, gX0 + group.w, gY0 + group.h, gX0, gY0 + group.h)\r\n || doesOneGroupSideIntersectCS(CS, gX0, gY0 + group.h, gX0, gY0)\r\n\r\nconst doesAnyCSOverlapGroup = (CSarray, gX0, gY0, group) => {\r\n let overlap = false;\r\n for (let i = 0; i < CSarray.length; i++) {\r\n overlap = overlap\r\n || YinYang(CSarray[i], gX0, gY0, group)\r\n || doCSandGroupIntersect(CSarray[i], gX0, gY0, group)\r\n }\r\n return overlap\r\n}\r\n\r\nexport const MatFinder = (spotsArray, room, thermoOut, burnable) => {\r\n\r\n const d = 4 // 4px * 2cm = 8cm - minimum distance between for connector\r\n const t = -1 //\r\n const spots = ColdSpotsTransformer(spotsArray, 0);\r\n const headVertical = {w: 58, h: 74}\r\n const headHorizontal = {w: 74, h: 58}\r\n const square = {w: 50, h: 50}\r\n const connectorVertical = {w: d, h: 6}\r\n const connectorHorizontal = {w: 6, h: d}\r\n const R = RoomTransformer(room, 0)\r\n let needToSearch = true;\r\n let resultMats = []\r\n let resultCuts = []\r\n let entryPoints = []\r\n let entryPointsAlternative = [] //for mat group rotation cases\r\n let cE = 0 //current entry index\r\n let connectors = [];\r\n let area = 0;\r\n const shapes = useSelector(state => state.shapes);\r\n let list = [\r\n 0, //mat 2m\r\n 0, //mat 3m\r\n 0, //mat 4m\r\n 0, //mat 5m\r\n 0, //cord 0,25m\r\n 0, //cord 1m\r\n 0 //cord 2m\r\n ]\r\n\r\n //for each point finding 4 \"icicles\" - groups of mats with different length\r\n while (needToSearch) {\r\n let superMass = []\r\n for (let y = 0; y <= R[13][1] - 50; y += 2) {\r\n for (let x = R[7][0] - 50; x >= 0; x -= 2) {\r\n //creating horizontal starting row growing down\r\n let columnsDown = 0\r\n let startRowGrowDown = [0] //0 is code for \"down\"\r\n while ((isGroupInsideRoom(x + columnsDown * 50 - 4, y + 1, headVertical, R))\r\n // && (isGroupInsideRoom(x - 3, y + 4 + 1, connectorVertical, R))\r\n // && (isGroupInsideRoom(x + (columnsDown + 1) * 50 - 1, y + 4 + 1, connectorVertical, R))\r\n && (!doesAnyCSOverlapGroup(spots, x + columnsDown * 50 - 4, y, headVertical))\r\n && (!doesAnyCSOverlapGroup(connectors, x + columnsDown * 50 - 4, y, headVertical))\r\n // && (!doesAnyCSOverlapGroup(spots, x + columnsDown * 50 - 3, y + 4 + 1, connectorVertical))\r\n // && (!doesAnyCSOverlapGroup(spots, x + (columnsDown + 1) * 50 - 1, y + 4 + 1, connectorVertical))\r\n ) {\r\n columnsDown++\r\n startRowGrowDown.push(0)\r\n }\r\n for (let col = 0; col < startRowGrowDown.length - 1; col++) {\r\n let rowDown = 0;\r\n while ((isGroupInsideRoom(x + col * 50, y - 1 + headVertical.h + rowDown * 50, square, R))\r\n && (!doesAnyCSOverlapGroup(spots, x + col * 50, y - 1 + headVertical.h + rowDown * 50, square))\r\n && (rowDown < 3)) {\r\n startRowGrowDown[col + 1]++\r\n rowDown++\r\n }\r\n }\r\n\r\n //creating horizontal starting row growing up\r\n let columnsUp = 0\r\n let startRowGrowUp = [1] //1 is code for \"up\"\r\n\r\n while ((isGroupInsideRoom(x + columnsUp * 50 - 4, y, headVertical, R))\r\n // && (isGroupInsideRoom(x - 3, y + headVertical.h - 10, connectorVertical, R))\r\n // && (isGroupInsideRoom(x - 1 + (columnsUp + 1) * 50, y + headVertical.h - 10, connectorVertical, R))\r\n && (!doesAnyCSOverlapGroup(spots, x + columnsUp * 50 - 4, y, headVertical))\r\n && (!doesAnyCSOverlapGroup(connectors, x + columnsUp * 50 - 4, y, headVertical))\r\n // && (!doesAnyCSOverlapGroup(spots, x + columnsUp * 50 - 3, y + headVertical.h - 10, connectorVertical))\r\n // && (!doesAnyCSOverlapGroup(spots, x - 1 + (columnsUp + 1) * 50, y + headVertical.h - 10, connectorVertical))\r\n ) {\r\n columnsUp++\r\n startRowGrowUp.push(0)\r\n }\r\n\r\n for (let col = 0; col < startRowGrowUp.length - 1; col++) {\r\n let rowUp = 0;\r\n while ((isGroupInsideRoom(x + col * 50, y + 1 - (rowUp + 1) * 50, square, R))\r\n && (!doesAnyCSOverlapGroup(spots, x + col * 50, y + 1 - (rowUp + 1) * 50, square))\r\n && (rowUp < 3)) {\r\n startRowGrowUp[col + 1]++\r\n rowUp++\r\n }\r\n }\r\n\r\n //creating vertical starting column growing left\r\n let rowsLeft = 0\r\n let startColumnGrowLeft = [2]\r\n\r\n while ((isGroupInsideRoom(x + 1, y + rowsLeft * 50 - 4, headHorizontal, R))\r\n // && (isGroupInsideRoom(x + 1 + headHorizontal.w - 10, y - 3, connectorHorizontal, R))\r\n // && (isGroupInsideRoom(x + 1 + headHorizontal.w - 10, y - 1 + (rowsLeft + 1) * 50, connectorHorizontal, R))\r\n && (!doesAnyCSOverlapGroup(spots, x, y + rowsLeft * 50 - 4, headHorizontal))\r\n && (!doesAnyCSOverlapGroup(connectors, x, y + rowsLeft * 50 - 4, headHorizontal))\r\n // && (!doesAnyCSOverlapGroup(spots, x + 1 + headHorizontal.w - 10, y - 3, connectorHorizontal))\r\n // && (!doesAnyCSOverlapGroup(spots, x + 1 + headHorizontal.w - 10, y - 1 + (rowsLeft + 1) * 50, connectorHorizontal))\r\n ) {\r\n rowsLeft++\r\n startColumnGrowLeft.push(0)\r\n }\r\n\r\n for (let row = 0; row < startColumnGrowLeft.length - 1; row++) {\r\n let columnLeft = 0;\r\n while ((isGroupInsideRoom(x + 1 - (columnLeft + 1) * 50, y + row * 50, square, R))\r\n && (!doesAnyCSOverlapGroup(spots, x + 1 - (columnLeft + 1) * 50, y + row * 50, square))\r\n && (columnLeft < 3)) {\r\n startColumnGrowLeft[row + 1]++\r\n columnLeft++\r\n }\r\n }\r\n\r\n //creating vertical starting column growing right\r\n let rowsRight = 0\r\n let startColumnGrowRight = [3]\r\n\r\n while ((isGroupInsideRoom(x + 1, y + rowsRight * 50 - 4, headHorizontal, R))\r\n // && (isGroupInsideRoom(x + 1 + 4, y - 3, connectorHorizontal, R))\r\n // && (isGroupInsideRoom(x + 1 + 4, y - 1 + (rowsRight + 1) * 50, connectorHorizontal, R))\r\n && (!doesAnyCSOverlapGroup(spots, x, y + rowsRight * 50 - 4, headHorizontal))\r\n && (!doesAnyCSOverlapGroup(connectors, x, y + rowsRight * 50 - 4, headHorizontal))\r\n // && (!doesAnyCSOverlapGroup(spots, x + 1 + 4, y - 3, connectorHorizontal))\r\n // && (!doesAnyCSOverlapGroup(spots, x + 1 + 4, y - 1 + (rowsRight + 1) * 50, connectorHorizontal))\r\n ) {\r\n rowsRight++\r\n startColumnGrowRight.push(0)\r\n }\r\n\r\n for (let row = 0; row < startColumnGrowLeft.length - 1; row++) {\r\n let columnRight = 0;\r\n while ((isGroupInsideRoom(x - 1 + headHorizontal.w + columnRight * 50, y + row * 50, square, R))\r\n && (!doesAnyCSOverlapGroup(spots, x - 1 + headHorizontal.w + columnRight * 50, y + row * 50, square))\r\n && (columnRight < 3)) {\r\n startColumnGrowRight[row + 1]++\r\n columnRight++\r\n }\r\n }\r\n\r\n if (startRowGrowDown.length > 1) {\r\n superMass.push([x, y, ...startRowGrowDown])\r\n }\r\n\r\n if (startRowGrowUp.length > 1) {\r\n superMass.push([x, y, ...startRowGrowUp])\r\n }\r\n\r\n if (startColumnGrowLeft.length > 1) {\r\n superMass.push([x, y, ...startColumnGrowLeft])\r\n }\r\n\r\n if (startColumnGrowRight.length > 1) {\r\n superMass.push([x, y, ...startColumnGrowRight])\r\n }\r\n }\r\n }\r\n\r\n if (superMass.length === 0) {\r\n needToSearch = false;\r\n } else {\r\n let max = 0;\r\n let index = 0\r\n for (let i = 0; i < superMass.length; i++) {\r\n let sum = superMass[i].length * 1.5;\r\n for (let j = 3; j < superMass[i].length; j++) {\r\n sum += superMass[i][j]\r\n }\r\n if (sum > max) {\r\n max = sum;\r\n index = i\r\n }\r\n }\r\n\r\n let icicle = superMass[index] //icicle - the biggest group of connected different length mats\r\n const x = icicle[0];\r\n const y = icicle[1];\r\n const growDirection = icicle[2]; //0 - down, 1 - up, 2 - left, 3 - right\r\n entryPoints.push([[], []])\r\n entryPointsAlternative.push([null, null])\r\n\r\n //checking if rectangular\r\n let isRectangular = true\r\n for (let i = 3; i < icicle.length - 1; i++) {\r\n if (icicle[i] !== icicle[i + 1]) {\r\n isRectangular = false;\r\n break;\r\n }\r\n }\r\n\r\n //calculating heated area\r\n for (let i = 3; i < icicle.length; i++) {\r\n area += icicle[i] + 1.4\r\n if (icicle[i] === 0) list[0]++;\r\n if (icicle[i] === 1) list[1]++;\r\n if (icicle[i] === 2) list[2]++;\r\n if (icicle[i] === 3) list[3]++;\r\n }\r\n\r\n if (area > 42) {\r\n return [, , , , false, area]\r\n }\r\n\r\n switch (growDirection) {\r\n case 0:\r\n connectors.push([x - 4, y + 4,\r\n x + 4, y + 4,\r\n x + 4, y + 10,\r\n x - 4, y + 10])\r\n entryPoints[cE][1] = [x - 4, y + 7]\r\n if (isRectangular) {\r\n entryPointsAlternative[cE][0] = [x - 4, y + 75 + icicle[3] * 50 - 7]\r\n }\r\n break;\r\n case 1:\r\n connectors.push([x - 4, y + 75 - 10,\r\n x + 4, y + 75 - 10,\r\n x + 4, y + 75 - 4,\r\n x - 4, y + 75 - 4])\r\n entryPoints[cE][0] = [x - 4, y + 75 - 7]\r\n if (isRectangular) {\r\n entryPointsAlternative[cE][1] = [x - 4, y - icicle[3] * 50 + 7]\r\n }\r\n break;\r\n case 2:\r\n connectors.push([x + 75 - 10, y - 4,\r\n x + 75 - 4, y - 4,\r\n x + 75 - 4, y + 4,\r\n x + 75 - 10, y + 4])\r\n entryPoints[cE][1] = [x + 75 - 7, y - 4]\r\n if (isRectangular) {\r\n entryPointsAlternative[cE][0] = [x + 7 - icicle[3] * 50, y - 4]\r\n }\r\n break;\r\n case 3:\r\n connectors.push([x + 4, y - 4,\r\n x + 10, y - 4,\r\n x + 10, y + 4,\r\n x + 4, y + 4])\r\n entryPoints[cE][0] = [x + 7, y - 4]\r\n if (isRectangular) {\r\n entryPointsAlternative[cE][1] = [x - 7 + 75 + icicle[3] * 50, y - 4]\r\n }\r\n break;\r\n }\r\n\r\n for (let z = 3; z < icicle.length; z++) {\r\n switch (growDirection) {\r\n case 0:\r\n resultMats.push([50 * (z - 3) + x, y,\r\n 50 * (z - 2) + x, y,\r\n 50 * (z - 2) + x, 75 + icicle[z] * 50 + y,\r\n 50 * (z - 3) + x, 75 + icicle[z] * 50 + y])\r\n resultCuts.push([50 * (z - 3) + x, y - 12.5,\r\n 50 * (z - 2) + x, y - 12.5,\r\n 50 * (z - 2) + x, 75 + icicle[z] * 50 + y + 12.5,\r\n 50 * (z - 3) + x, 75 + icicle[z] * 50 + y + 12.5])\r\n spots.push([50 * (z - 3) + x + t, y + t,\r\n 50 * (z - 2) + x - t, y + t,\r\n 50 * (z - 2) + x - t, y + 75 + icicle[z] * 50 - t,\r\n 50 * (z - 3) + x + t, y + 75 + icicle[z] * 50 - t])\r\n entryPoints[cE][0] = [x + 4 + 50 * (z - 2), y + 7]\r\n if (isRectangular) {\r\n entryPointsAlternative[cE][1] = [x + 4 + 50 * (z - 2), y + 75 + icicle[z] * 50 - 7]\r\n }\r\n connectors.push([x - 4 + 50 * (z - 2), y + 4,\r\n x + 4 + 50 * (z - 2), y + 4,\r\n x + 4 + 50 * (z - 2), y + 10,\r\n x - 4 + 50 * (z - 2), y + 10])\r\n break;\r\n case 1:\r\n resultMats.push([50 * (z - 3) + x, y - icicle[z] * 50,\r\n 50 * (z - 2) + x, y - icicle[z] * 50,\r\n 50 * (z - 2) + x, y + 75,\r\n 50 * (z - 3) + x, y + 75])\r\n resultCuts.push([50 * (z - 3) + x, y - icicle[z] * 50 - 12.5,\r\n 50 * (z - 2) + x, y - icicle[z] * 50 - 12.5,\r\n 50 * (z - 2) + x, y + 75 + 12.5,\r\n 50 * (z - 3) + x, y + 75 + 12.5])\r\n spots.push([50 * (z - 3) + x + t, y + 75 - t,\r\n 50 * (z - 2) + x - t, y + 75 - t,\r\n 50 * (z - 2) + x - t, y - icicle[z] * 50 + t,\r\n 50 * (z - 3) + x + t, y - icicle[z] * 50 + t])\r\n entryPoints[cE][1] = [x + 4 + 50 * (z - 2), y + 75 - 7]\r\n if (isRectangular) {\r\n entryPointsAlternative[cE][0] = [x + 4 + 50 * (z - 2), y - icicle[3] * 50 + 7]\r\n }\r\n connectors.push([x - 4 + 50 * (z - 2), y + 75 - 10,\r\n x + 4 + 50 * (z - 2), y + 75 - 10,\r\n x + 4 + 50 * (z - 2), y + 75 - 4,\r\n x - 4 + 50 * (z - 2), y + 75 - 4])\r\n break;\r\n case 2:\r\n resultMats.push([x - icicle[z] * 50, y + 50 * (z - 3),\r\n x + 75, y + 50 * (z - 3),\r\n x + 75, y + 50 * (z - 2),\r\n x - icicle[z] * 50, y + 50 * (z - 2)])\r\n resultCuts.push([x - icicle[z] * 50 - 12.5, y + 50 * (z - 3),\r\n x + 75 + 12.5, y + 50 * (z - 3),\r\n x + 75 + 12.5, y + 50 * (z - 2),\r\n x - icicle[z] * 50 - 12.5, y + 50 * (z - 2)])\r\n spots.push([x - icicle[z] * 50 + t, y + 50 * (z - 3) + t,\r\n x + 75 - t, y + 50 * (z - 3) + t,\r\n x + 75 - t, y + 50 * (z - 2) - t,\r\n x - icicle[z] * 50 + t, y + 50 * (z - 2) - t])\r\n entryPoints[cE][0] = [x + 75 - 7, y + 4 + 50 * (z - 2)]\r\n if (isRectangular) {\r\n entryPointsAlternative[cE][1] = [x + 7 - icicle[3] * 50, y + 4 + 50 * (z - 2)]\r\n }\r\n connectors.push([x + 75 - 10, y - 4 + 50 * (z - 2),\r\n x + 75 - 4, y - 4 + 50 * (z - 2),\r\n x + 75 - 4, y + 4 + 50 * (z - 2),\r\n x + 75 - 10, y + 4 + 50 * (z - 2)])\r\n break;\r\n case 3:\r\n resultMats.push([x, y + 50 * (z - 3),\r\n x + 75 + icicle[z] * 50, y + 50 * (z - 3),\r\n x + 75 + icicle[z] * 50, y + 50 * (z - 2),\r\n x, y + 50 * (z - 2)])\r\n resultCuts.push([x - 12.5, y + 50 * (z - 3),\r\n x + 75 + icicle[z] * 50 + 12.5, y + 50 * (z - 3),\r\n x + 75 + icicle[z] * 50 + 12.5, y + 50 * (z - 2),\r\n x - 12.5, y + 50 * (z - 2)])\r\n spots.push([x + t, y + 50 * (z - 3) + t,\r\n x + 75 + icicle[z] * 50 - t, y + 50 * (z - 3) + t,\r\n x + 75 + icicle[z] * 50 - t, y + 50 * (z - 2) - t,\r\n x + t, y + 50 * (z - 2) - t])\r\n entryPoints[cE][1] = [x + 7, y + 4 + 50 * (z - 2)]\r\n if (isRectangular) {\r\n entryPointsAlternative[cE][0] = [x - 7 + 75 + icicle[3] * 50, y + 4 + 50 * (z - 2)]\r\n }\r\n connectors.push([x + 4, y - 4 + 50 * (z - 2),\r\n x + 10, y - 4 + 50 * (z - 2),\r\n x + 10, y + 4 + 50 * (z - 2),\r\n x + 4, y + 4 + 50 * (z - 2)])\r\n break;\r\n }\r\n }\r\n cE++;\r\n }\r\n }\r\n\r\n\r\n let arrayOfCombinationsWithAlts = entriesCombinations(entryPoints, entryPointsAlternative);\r\n\r\n const creatingSuperMegaArrayOfCombinations = (arr, thermoOut) => {\r\n let result = [];\r\n for (let i = 0; i < arr.length; i++) {\r\n result.push(...wiresCombinations(arr[i], thermoOut))\r\n }\r\n return result;\r\n }\r\n\r\n\r\n let waysCombinations = creatingSuperMegaArrayOfCombinations(arrayOfCombinationsWithAlts, thermoOut)\r\n\r\n let spotsForWalls = ColdSpotsTransformer(spotsArray, 1)\r\n spotsForWalls.push(...resultMats)\r\n let walls = BulldozerSquad(spotsForWalls)\r\n let wallsFromRoom = Bulldozer(RoomReshaper(room, -3))\r\n\r\n //Creating array of pitStops - nodal points at the room for wires (corners of the room, cold spots and mats)\r\n let pitStops = []\r\n //adding room corners\r\n console.log(\"PIT STOPS before room corners\")\r\n console.log(pitStops)\r\n\r\n const roomCorners = BombForRoom(RoomTransformer(room, -1))\r\n if (shapes.L) {\r\n pitStops.push(roomCorners[3])\r\n pitStops.push(roomCorners[4])\r\n walls.push(wallsFromRoom[1])\r\n walls.push(wallsFromRoom[2])\r\n walls.push(wallsFromRoom[3])\r\n walls.push(wallsFromRoom[4])\r\n walls.push(wallsFromRoom[5])\r\n }\r\n if (shapes.T) {\r\n pitStops.push(roomCorners[3])\r\n pitStops.push(roomCorners[4])\r\n pitStops.push(roomCorners[9])\r\n pitStops.push(roomCorners[10])\r\n walls.push(wallsFromRoom[1])\r\n walls.push(wallsFromRoom[2])\r\n walls.push(wallsFromRoom[3])\r\n walls.push(wallsFromRoom[4])\r\n walls.push(wallsFromRoom[5])\r\n walls.push(wallsFromRoom[7])\r\n walls.push(wallsFromRoom[8])\r\n walls.push(wallsFromRoom[9])\r\n walls.push(wallsFromRoom[10])\r\n walls.push(wallsFromRoom[11])\r\n }\r\n console.log(\"PIT STOPS before adding cold spots corners\")\r\n let pit2 = _.cloneDeep(pitStops)\r\n console.log(pit2)\r\n //adding cold spots' corners\r\n let spotsForPitStops = ColdSpotsTransformer(spotsArray, 0)\r\n\r\n for (let i = 0; i < spotsForPitStops.length; i++) {\r\n pitStops.push(...Bomb(spotsForPitStops[i]))\r\n }\r\n console.log(\"PIT STOPS before adding mat corners\")\r\n let pit3 = _.cloneDeep(pitStops)\r\n console.log(pit3)\r\n //adding all mats' corners\r\n for (let i = 0; i < resultMats.length; i++) {\r\n let corners = [...BombForMat(resultMats[i])]\r\n pitStops.push(...corners)\r\n }\r\n\r\n console.log(\"PIT STOPS before remove extra\")\r\n let pit4 = _.cloneDeep(pitStops)\r\n console.log(pit4)\r\n\r\n //removing extra pitStops from corners\r\n loop:\r\n for (let i = 0; i < pitStops.length - 1; i++) {\r\n for (let j = i + 1; j < pitStops.length; j++) {\r\n if (\r\n ((pitStops[i][1] === pitStops[j][1]) &&\r\n (Math.abs(pitStops[i][0] - pitStops[j][0]) === 2)) ||\r\n ((pitStops[i][0] === pitStops[j][0]) &&\r\n (Math.abs(pitStops[i][1] - pitStops[j][1]) === 2))\r\n ) {\r\n pitStops[i][0] = pitStops[0][0]\r\n pitStops[i][1] = pitStops[0][1]\r\n pitStops[j][0] = pitStops[0][0]\r\n pitStops[j][1] = pitStops[0][1]\r\n continue loop;\r\n }\r\n }\r\n }\r\n\r\n /*const pathLength = (path, pitStops, walls) => {\r\n let resultLength = 0;\r\n for (let i = 0; i < path.length - 1; i++) {\r\n resultLength += wireLength(normalSnake(path[i][1], path[i + 1][0], pitStops, walls))\r\n }\r\n return resultLength;\r\n }*/\r\n\r\n const pathLengthHamster = path => {\r\n let resultLength = 0;\r\n for (let i = 0; i < path.length - 1; i++) {\r\n resultLength += dist(path[i][1], path[i + 1][0]) //(path[i][1], path[i + 1][0], pitStops, walls))\r\n }\r\n return resultLength;\r\n }\r\n\r\n const bestPath = (arr /*, pS, walls*/) => {\r\n let best = arr[0];\r\n for (let i = 1; i < arr.length; i++) {\r\n if (pathLengthHamster(arr[i]/*, pS, walls*/) < pathLengthHamster(best/*, pS, walls*/)) best = arr[i]\r\n }\r\n return best;\r\n }\r\n\r\n console.log(\"PIT STOPS\")\r\n let pit5 = _.cloneDeep(pitStops)\r\n console.log(pit5)\r\n\r\n const pitStopsNoDoubles = pitStopsCleaner(pitStops, resultMats)\r\n\r\n let path = bestPath(waysCombinations/*, pitStopsNoDoubles, walls*/);\r\n\r\n const connectorsAndNumbers = connectorsFarm(path)\r\n // console.log(\"PATH\")\r\n // console.log(path)\r\n console.log(\"PIT STOPS NO DOUBLES\")\r\n console.log(pitStopsNoDoubles)\r\n let pit6 = _.cloneDeep(pitStopsNoDoubles)\r\n console.log(pit6)\r\n // console.log(\"WALLS\")\r\n // console.log(walls)\r\n\r\n const snakesNestMaker = (arr, pStops, walls) => {\r\n let result = [];\r\n for (let i = 0; i < arr.length - 1; i++) {\r\n result.push(twoWaySnake(arr[i][1], arr[i + 1][0], pStops, walls));\r\n }\r\n return result\r\n }\r\n let snakesNest = snakesNestMaker(path, pitStopsNoDoubles, walls)\r\n let cordsArray = cordCalc(snakesNest)\r\n list[4] = cordsArray[0]\r\n list[5] = cordsArray[1]\r\n list[6] = cordsArray[2]\r\n\r\n return [resultMats, snakesNest, connectorsAndNumbers[0], connectorsAndNumbers[1], true, area, list, resultCuts]\r\n}\r\n","export default __webpack_public_path__ + \"static/media/spinner.f185397f.svg\";","import React from 'react';\r\nimport preloader from \"../../img/Preloader/spinner.svg\"\r\nimport s from \"./Preloader.module.css\"\r\nimport {useTranslation} from \"react-i18next\";\r\n\r\nconst Preloader = () => {\r\n\r\n const {t} = useTranslation();\r\n\r\n return (\r\n
\r\n {\"Preloader\"}/\r\n
{t(\"calculating\")}
\r\n
\r\n );\r\n};\r\n\r\nexport default Preloader;","import React, {useEffect, useState} from 'react';\r\nimport {useDispatch, useSelector} from \"react-redux\";\r\nimport {Redirect} from \"react-router\";\r\n\r\nimport laminate from '../../img/laminate.jpg';\r\nimport parquet from '../../img/parquet.jpg';\r\nimport veria from \"../../img/veria-logo.png\";\r\nimport unburnable from \"../../img/unburnable.jpg\";\r\nimport burnable from \"../../img/burnable-wood.jpg\";\r\nimport {updateButton} from \"../../redux/buttonsReducer\";\r\n\r\nimport s from \"./FloorType.module.css\";\r\nimport {HashLink as Link} from \"react-router-hash-link\";\r\nimport Modal from \"../0Modal/Modal\";\r\nimport {updateChecks} from \"../../redux/floorChecksReducer\";\r\nimport {MatFinder} from \"../7Result/MatFinder\";\r\nimport {updateResult} from \"../../redux/resultReducer\";\r\nimport {useTranslation} from \"react-i18next\";\r\nimport Preloader from \"../Preloader/Preloader\";\r\n\r\nconst FloorType = () => {\r\n\r\n const {t} = useTranslation();\r\n\r\n // const room = useSelector(state => state.room);\r\n // const thermostat = useSelector(state => state.thermostat);\r\n // const spotsArray = useSelector(state => state.points);\r\n const buttons = useSelector(state => state.buttons);\r\n const dispatch = useDispatch();\r\n const checks = useSelector(state => state.checks);\r\n\r\n const [modalActive, setModalActive] = useState(false);\r\n const [topLaminate, setTopLaminate] = useState(checks.topLaminate);\r\n const [topParquet, setTopParquet] = useState(checks.topParquet);\r\n const [subUnburnable, setSubUnburnable] = useState(checks.subUnburnable);\r\n const [subBurnable, setSubBurnable] = useState(checks.subBurnable);\r\n const [selectColor, setSelectColor] = useState(((topLaminate || topParquet) && (subUnburnable || subBurnable) && \"#DBDADA\") || \"#E82B2B\");\r\n const [continueVisible, setContinueVisible] = useState(((topLaminate || topParquet) && (subUnburnable || subBurnable) && \"visible\") || \"hidden\");\r\n\r\n // const massGroup = MatFinder(spotsArray, room, [thermostat.x, thermostat.y], subBurnable)\r\n\r\n const handleTopLaminate = () => {\r\n setTopLaminate(!topLaminate)\r\n if (topParquet) setTopParquet(false)\r\n }\r\n const handleTopParquet = () => {\r\n setTopParquet(!topParquet)\r\n if (topLaminate) setTopLaminate(false)\r\n }\r\n const handleSubUnburnable = () => {\r\n setSubUnburnable(!subUnburnable)\r\n if (subBurnable) setSubBurnable(false)\r\n }\r\n const handleSubBurnable = () => {\r\n setSubBurnable(!subBurnable)\r\n if (subUnburnable) setSubUnburnable(false)\r\n }\r\n\r\n const handleClick = (page) => {\r\n // dispatch(updateResult(massGroup))\r\n dispatch(updateButton(page))\r\n dispatch(updateChecks({\r\n topLaminate,\r\n topParquet,\r\n subUnburnable,\r\n subBurnable\r\n }))\r\n }\r\n\r\n useEffect(() => {\r\n setSelectColor(((topLaminate || topParquet) && (subUnburnable || subBurnable) && \"#DBDADA\") || \"#E82B2B\")\r\n setContinueVisible(((topLaminate || topParquet) && (subUnburnable || subBurnable) && \"visible\") || \"hidden\")\r\n if (continueVisible === \"hidden\") dispatch(updateButton(6))\r\n }, [topLaminate, topParquet, subUnburnable, subBurnable, continueVisible])\r\n\r\n\r\n\r\n\r\n\r\n if (!buttons[6]) return \r\n\r\n\r\n\r\n return (\r\n
\r\n
\r\n
\r\n

{t(\"select_floor_type\")}

\r\n

{t(\"select_floor_type_text\")}\r\n

\r\n
\r\n
?
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

{t(\"top_floor_covering\")}

\r\n
    \r\n
  • \r\n \"laminate\"/\r\n \r\n \r\n
  • \r\n
  • \r\n \"laminate\"/\r\n \r\n \r\n
  • \r\n
\r\n
\r\n \r\n \"form-logo\"/\r\n
\r\n
\r\n
\r\n

{t(\"subfloor_covering\")}

\r\n
    \r\n
  • \r\n \r\n \"unburnable\"/\r\n \r\n \r\n
  • \r\n
  • \r\n \r\n \"burnable\"/\r\n \r\n \r\n
  • \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
setModalActive(true)}>{t(\"need_help\")}\r\n
\r\n
\r\n {t(\"please_select_subfloor\")}\r\n
\r\n handleClick(7)}\r\n className={s.btnNextStep}\r\n style={{visibility: continueVisible}}>\r\n {t(\"continue\")}\r\n \r\n
\r\n
\r\n \r\n\r\n
\r\n

{t(\"about_floor_types\")}

\r\n setModalActive(false)}>\r\n
\r\n
\r\n

{t(\"about_floor_types_text\")}

\r\n
\r\n
setModalActive(false)}>\r\n ok\r\n
\r\n
\r\n\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default FloorType;\r\n","import React, {useState} from 'react';\r\nimport {useDispatch, useSelector} from \"react-redux\";\r\nimport {updateButton} from \"../../redux/buttonsReducer\";\r\nimport {Redirect} from \"react-router\";\r\nimport s from \"../2RoomShape/RoomShape.module.css\";\r\nimport {HashLink as Link} from \"react-router-hash-link\";\r\nimport {MatFinder} from \"../7Result/MatFinder\";\r\nimport {updateResult} from \"../../redux/resultReducer\";\r\nimport {useTranslation} from \"react-i18next\";\r\n\r\nconst Thermostat = () => {\r\n\r\n const {t} = useTranslation();\r\n const buttons = useSelector(state => state.buttons);\r\n\r\n if (!buttons[5]) return \r\n\r\n return (\r\n
\r\n
\r\n
\r\n

{t(\"add_thermostat\")}

\r\n

{t(\"add_thermostat_text\")}\r\n

\r\n
\r\n
?
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n {t(\"wireless_click_kit\")}\r\n \r\n
\r\n
\r\n
\r\n
\r\n {t(\"select_please\")}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Thermostat;\r\n","export default __webpack_public_path__ + \"static/media/thermostat.3a21c0ef.svg\";","import React, {useState} from 'react';\r\nimport {useDispatch, useSelector} from \"react-redux\";\r\nimport {updateButton} from \"../../redux/buttonsReducer\";\r\nimport {Redirect} from \"react-router\";\r\nimport s from \"./Thermostat.module.css\";\r\nimport {HashLink as Link} from \"react-router-hash-link\";\r\nimport {Layer, Line, Stage} from \"react-konva\";\r\nimport Draggable from \"react-draggable\";\r\nimport thermostat from '../../img/ThermostatButton/thermostat.svg'\r\nimport {updateThermostat} from \"../../redux/thermostatReducer\";\r\nimport {MatFinder} from \"../7Result/MatFinder\";\r\nimport {updateResult} from \"../../redux/resultReducer\";\r\nimport {useTranslation} from \"react-i18next\";\r\n\r\nconst Placement = () => {\r\n\r\n const {t} = useTranslation();\r\n let room = useSelector(state => state.room);\r\n let thermostat = /*useSelector(state => state.thermostat);*/ {x: 0, y: 0}\r\n const spotsArray = useSelector(state => state.points);\r\n\r\n const startX = 437;\r\n const startY = 9;\r\n\r\n const d = -1;\r\n\r\n const pos00 = {x: startX + room[0] + d, y: startY + room[1] + d}\r\n const pos01s = {x: startX + room[2] - d, y: startY + room[3] + d}\r\n const pos01 = {x: startX + room[4] - d, y: startY + room[5] + d}\r\n const pos02s = {x: startX + room[6] - d, y: startY + room[7] + d}\r\n const pos02 = {x: startX + room[8] - d, y: startY + room[9] + d}\r\n const pos03s = {x: startX + room[10] - d, y: startY + room[11] + d}\r\n const pos03 = {x: startX + room[12] - d, y: startY + room[13] + d}\r\n const pos04s = {x: startX + room[14] - d, y: startY + room[15] - d}\r\n const pos04 = {x: startX + room[16] - d, y: startY + room[17] - d}\r\n const pos05s = {x: startX + room[18] - d, y: startY + room[19] - d}\r\n const pos05 = {x: startX + room[20] - d, y: startY + room[21] - d}\r\n const pos06s = {x: startX + room[22] - d, y: startY + room[23] - d}\r\n const pos06 = {x: startX + room[24] - d, y: startY + room[25] - d}\r\n const pos07s = {x: startX + room[26] + d, y: startY + room[27] - d}\r\n const pos07 = {x: startX + room[28] + d, y: startY + room[29] - d}\r\n\r\n //const center = {x: pos00.x + Math.min(pos01s.x - pos00.x, pos06.x - pos00.x) / 2, y: (pos03.y + pos04s.y) / 2}\r\n const center = {x: pos07.x + 60, y: (pos03.y + pos04s.y)/2}\r\n\r\n const [thermX, setThermX] = useState(thermostat.x + startX);\r\n const [thermY, setThermY] = useState(thermostat.y + startY);\r\n\r\n const [left, setLeft] = useState(startX - 1)\r\n const [right, setRight] = useState(startX + 1)\r\n const [top, setTop] = useState(startY - 1)\r\n const [bottom, setBottom] = useState(startY + 1)\r\n const [modalActive, setModalActive] = useState(false);\r\n const buttons = useSelector(state => state.buttons);\r\n const dispatch = useDispatch();\r\n\r\n const handleClick = (page) => {\r\n dispatch(updateButton(page))\r\n dispatch(updateThermostat({x: thermX - startX, y: thermY - startY}))\r\n }\r\n\r\n const [p, setP] = useState({x: startX, y: 200})\r\n\r\n if (!buttons[5]) return \r\n\r\n const handleDragMove = (e) => {\r\n const stage = e.target.getStage();\r\n const layer = stage.findOne(\".main-layer\");\r\n let cursor = e.target.position();\r\n\r\n if (layer.getIntersection(cursor)) {\r\n setThermX(600)\r\n setThermY(30)\r\n }\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n

{t(\"place_thermostat\")}

\r\n

{t(\"place_thermostat_text\")}\r\n

\r\n
\r\n
?
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n {\r\n let x = thermX;\r\n let y = thermY;\r\n setThermX(x + d.deltaX)\r\n setThermY(y + d.deltaY)\r\n\r\n const sector = (A, B) => {\r\n\r\n let cursor = {x, y}\r\n const Deg = 180 / Math.PI\r\n const startDegFromAxisX = Math.atan((center.y - pos00.y) / (center.x - pos00.x)) - Math.PI / 2\r\n\r\n const degree = (point) => {\r\n let currentDeg = Math.atan((center.y - point.y) / (center.x - point.x)) - Math.PI / 2 - startDegFromAxisX\r\n if (point.x > center.x) {currentDeg += Math.PI}\r\n if (currentDeg < 0) {\r\n currentDeg += 2 * Math.PI\r\n }\r\n return currentDeg * Deg\r\n } //Degree form line center--->pos00 clockwise\r\n\r\n if (degree(B) < 1) {\r\n return ((degree(cursor) >= degree(A)) && (degree(cursor) < degree(B) + 360))\r\n }\r\n if ((degree(cursor) >= degree(A)) && (degree(cursor) < degree(B))) {\r\n }\r\n\r\n return ((degree(cursor) >= degree(A)) && (degree(cursor) < degree(B)))\r\n }\r\n\r\n if (sector(pos00, pos01s)) {\r\n setLeft(pos00.x - 1);\r\n setRight(pos01s.x + 1);\r\n setTop(pos00.y);\r\n setBottom(pos00.y);\r\n }\r\n\r\n if (sector(pos01s, pos01)) {\r\n setLeft(pos01s.x + (y - pos01s.y) * (pos01.x - pos01s.x) / (pos01.y - pos01s.y));\r\n setRight(pos01s.x + (y - pos01s.y) * (pos01.x - pos01s.x) / (pos01.y - pos01s.y));\r\n setTop(pos01s.y - 1);\r\n setBottom(pos01.y + 1);\r\n }\r\n\r\n if (sector(pos01, pos02s)) {\r\n setLeft(pos01.x);\r\n setRight(pos01.x);\r\n setTop(pos01.y - 1);\r\n setBottom(pos02s.y + 1);\r\n }\r\n\r\n if (sector(pos02s, pos02)) {\r\n setLeft(pos02s.x + (y - pos02s.y) * (pos02.x - pos02s.x) / (pos02.y - pos02s.y));\r\n setRight(pos02s.x + (y - pos02s.y) * (pos02.x - pos02s.x) / (pos02.y - pos02s.y));\r\n setTop(pos02s.y - 1);\r\n setBottom(pos02.y + 1);\r\n }\r\n\r\n if (sector(pos02, pos03s)) {\r\n setLeft(pos02.x - 1);\r\n setRight(pos03s.x + 1);\r\n setTop(pos02.y - 1);\r\n setBottom(pos02.y + 1);\r\n }\r\n\r\n if (sector(pos03s, pos03)) {\r\n setLeft(pos03s.x + (y - pos03s.y) * (pos03.x - pos03s.x) / (pos03.y - pos03s.y));\r\n setRight(pos03s.x + (y - pos03s.y) * (pos03.x - pos03s.x) / (pos03.y - pos03s.y));\r\n setTop(pos03s.y - 1);\r\n setBottom(pos03.y + 1);\r\n }\r\n\r\n if (sector(pos03, pos04s)) {\r\n setLeft(pos03.x);\r\n setRight(pos03.x);\r\n setTop(pos03.y - 1);\r\n setBottom(pos04s.y + 1);\r\n }\r\n\r\n if (sector(pos04s, pos04)) {\r\n setLeft(pos04s.x + (y - pos04s.y) * (pos04.x - pos04s.x) / (pos04.y - pos04s.y));\r\n setRight(pos04s.x + (y - pos04s.y) * (pos04.x - pos04s.x) / (pos04.y - pos04s.y));\r\n setTop(pos04s.y - 1);\r\n setBottom(pos04.y + 1);\r\n }\r\n\r\n if (sector(pos04, pos05s)) {\r\n setLeft(pos05s.x - 1);\r\n setRight(pos04.x + 1);\r\n setTop(pos04.y);\r\n setBottom(pos04.y);\r\n }\r\n\r\n if (sector(pos05s, pos05)) {\r\n setLeft(pos05s.x + (y - pos05s.y) * (pos05.x - pos05s.x) / (pos05.y - pos05s.y));\r\n setRight(pos05s.x + (y - pos05s.y) * (pos05.x - pos05s.x) / (pos05.y - pos05s.y));\r\n setTop(pos05s.y - 1);\r\n setBottom(pos05.y + 1);\r\n }\r\n\r\n if (sector(pos05, pos06s)) {\r\n setLeft(pos05.x);\r\n setRight(pos05.x);\r\n setTop(pos05.y - 1);\r\n setBottom(pos06s.y + 1);\r\n }\r\n\r\n if (sector(pos06s, pos06)) {\r\n setLeft(pos06s.x + (y - pos06s.y) * (pos06.x - pos06s.x) / (pos06.y - pos06s.y));\r\n setRight(pos06s.x + (y - pos06s.y) * (pos06.x - pos06s.x) / (pos06.y - pos06s.y));\r\n setTop(pos06s.y - 1);\r\n setBottom(pos06.y + 1);\r\n }\r\n\r\n if (sector(pos06, pos07s)) {\r\n setLeft(pos07s.x - 1);\r\n setRight(pos06.x + 1);\r\n setTop(pos06.y - 1);\r\n setBottom(pos06.y);\r\n }\r\n\r\n if (sector(pos07s, pos07)) {\r\n setLeft(pos07.x + (y - pos07.y) * (pos07.x - pos07s.x) / (pos07.y - pos07s.y));\r\n setRight(pos07.x + (y - pos07.y) * (pos07.x - pos07s.x) / (pos07.y - pos07s.y));\r\n setTop(pos07.y - 1);\r\n setBottom(pos07s.y + 1);\r\n }\r\n\r\n if (sector(pos07, pos00)) {\r\n setLeft(pos00.x);\r\n setRight(pos00.x);\r\n setTop(pos00.y - 1);\r\n setBottom(pos07.y + 1);\r\n }\r\n\r\n }\r\n }\r\n position={{x: thermX, y: thermY}}\r\n onStart={() => {\r\n }}\r\n onStop={() => {\r\n }}\r\n bounds={\r\n {\r\n left: left,\r\n top: top,\r\n right: right,\r\n bottom: bottom\r\n }\r\n }\r\n\r\n >\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n\r\n \r\n \r\n \r\n {\r\n spotsArray.map(spot => )\r\n }\r\n \r\n \r\n\r\n
\r\n
\r\n handleClick(6)} className={s.btnNextStep}>\r\n {t(\"continue\")}\r\n \r\n
\r\n
\r\n
\r\n )\r\n ;\r\n};\r\n\r\nexport default Placement;\r\n","export default __webpack_public_path__ + \"static/media/5v.aff32688.svg\";","export default __webpack_public_path__ + \"static/media/5h.98a535df.svg\";","export default __webpack_public_path__ + \"static/media/5vAlt.7774767e.svg\";","export default __webpack_public_path__ + \"static/media/5hAlt.bbd88b17.svg\";","export default __webpack_public_path__ + \"static/media/4v.d1198712.svg\";","export default __webpack_public_path__ + \"static/media/4h.54899eae.svg\";","export default __webpack_public_path__ + \"static/media/4vAlt.ee86827e.svg\";","export default __webpack_public_path__ + \"static/media/4hAlt.6be20c78.svg\";","export default __webpack_public_path__ + \"static/media/3v.9f8cdc49.svg\";","export default __webpack_public_path__ + \"static/media/3h.343342b1.svg\";","export default __webpack_public_path__ + \"static/media/3vAlt.5843faff.svg\";","export default __webpack_public_path__ + \"static/media/3hAlt.85f2d62e.svg\";","export default __webpack_public_path__ + \"static/media/2v.7acc754e.svg\";","export default __webpack_public_path__ + \"static/media/2h.722ef283.svg\";","export default __webpack_public_path__ + \"static/media/2vAlt.5bedfb24.svg\";","export default __webpack_public_path__ + \"static/media/2hAlt.ba05c878.svg\";","export default __webpack_public_path__ + \"static/media/1v.0d2f6989.svg\";","export default __webpack_public_path__ + \"static/media/1h.8b70004a.svg\";","export default __webpack_public_path__ + \"static/media/1vAlt.9ad69d19.svg\";","export default __webpack_public_path__ + \"static/media/1hAlt.a2ce1411.svg\";","import React from 'react';\r\nimport Modal from \"./Modal\";\r\nimport {useTranslation} from \"react-i18next\";\r\n\r\nconst ModalPartsList = ({active, setActive, list}) => {\r\n\r\n const {t} = useTranslation();\r\n\r\n return (\r\n \r\n
\r\n

{t(\"list_of_parts\")}

\r\n setActive(false)}>\r\n
\r\n
\r\n {t(\"quantity_and_parts\")}\r\n
\r\n
\r\n {Object.keys(list).map(key => {\r\n let name = '';\r\n switch (key) {\r\n case \"mat5_100\":\r\n name = `Veria Clickmat 100, 5m${\"\\u00B2\"} (189B9130)`\r\n break;\r\n case \"mat4_100\":\r\n name = `Veria Clickmat 100, 4m${\"\\u00B2\"} (189B9128)`\r\n break;\r\n case \"mat3_100\":\r\n name = `Veria Clickmat 100, 3m${\"\\u00B2\"} (189B9126)`\r\n break;\r\n case \"mat2_100\":\r\n name = `Veria Clickmat 100, 2m${\"\\u00B2\"} (189B9124)`\r\n break;\r\n case \"mat5_55\":\r\n name = `Veria Clickmat 55, 5m${\"\\u00B2\"} (189B9120)`\r\n break;\r\n case \"mat4_55\":\r\n name = `Veria Clickmat 55, 4m${\"\\u00B2\"} (189B9118)`\r\n break;\r\n case \"mat3_55\":\r\n name = `Veria Clickmat 55, 3m${\"\\u00B2\"} (189B9116)`\r\n break;\r\n case \"mat2_55\":\r\n name = `Veria Clickmat 55, 2m${\"\\u00B2\"} (189B9114)`\r\n break;\r\n case \"cord2\":\r\n name = `Veria Clickmat ${t(\"extension_cord\")}, 2m (189B9110)`\r\n break;\r\n case \"cord1\":\r\n name = `Veria Clickmat ${t(\"extension_cord\")}, 1m (189B9108)`\r\n break;\r\n case \"cord025\":\r\n name = `Veria Clickmat ${t(\"extension_cord\")}, 0.25m (189B9106)`\r\n break;\r\n case \"kit100\":\r\n name = `Veria ${t(\"wireless_click_kit\")} 100 (189B9105)`\r\n break;\r\n case \"kit55\":\r\n name = `Veria ${t(\"wireless_click_kit\")} 55 (189B9104)`\r\n break;\r\n default:\r\n name = `${t(\"wireless_click_kit\")}`;\r\n }\r\n\r\n if (list[key] > 0) {\r\n return
\r\n {`${list[key]} x ${name}`}\r\n
\r\n }\r\n }\r\n )\r\n }\r\n
\r\n
{t(\"find_dealers\")}
\r\n \r\n
\r\n
setActive(false)}>ok
\r\n
\r\n\r\n
\r\n );\r\n};\r\n\r\nexport default ModalPartsList;","export default \"data:image/png;base64,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\"","import React from 'react';\r\nimport { saveAs } from 'file-saver';\r\nimport {\r\n pdf,\r\n Page,\r\n Text,\r\n View,\r\n Document,\r\n StyleSheet,\r\n Image,\r\n Svg,\r\n Path,\r\n LinearGradient,\r\n Stop,\r\n Defs, Image as PDFImage\r\n} from '@react-pdf/renderer';\r\nimport s from \"../Header/Header.module.css\";\r\nimport veria from \"../../img/forPDF/PDFheader.png\";\r\nimport ReactFlagsSelect from \"react-flags-select\";\r\nimport {useSelector} from \"react-redux\";\r\n\r\nconst styles = StyleSheet.create({\r\n page: {\r\n flexDirection: 'column',\r\n backgroundColor: '#E4E4E4'\r\n },\r\n section: {\r\n margin: 20,\r\n padding: 20,\r\n flexGrow: 1\r\n }\r\n});\r\n\r\nconst blobs = {\r\n list: {\r\n \"mat5_55\": 3,\r\n \"mat4-55\": 0,\r\n \"mat3-55\": 3,\r\n \"mat2-55\": 0,\r\n \"mat5-100\": 0,\r\n \"mat4-100\": 4,\r\n \"mat3-100\": 1,\r\n \"mat2-100\": 0,\r\n \"cord2\": 4,\r\n \"cord1\": 1,\r\n \"cord025\": 4,\r\n \"kit100\": 1,\r\n \"kit55\": 0\r\n }\r\n}\r\n\r\nconst PDF3 = (image) => {\r\n\r\n // const stageImg = useSelector(state => state.stageImg);\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default PDF3;\r\n\r\n\r\n/*export const generatePDFDocument = async () => {\r\n const blob = await pdf(\r\n \r\n // My document data\r\n \r\n ).toBlob();\r\n console.log(blob);\r\n};*/\r\n\r\nconst b = 7;\r\n\r\nconst PdfDocument = (dat) => {\r\n return (\r\n \r\n \r\n \r\n \r\n {dat}\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport const NewPDF = async (data) => {\r\n const blob = await pdf((\r\n \r\n )).toBlob();\r\n saveAs(blob, \"gg\");\r\n}\r\n\r\n","import React from 'react';\r\nimport {Document, Image, Page, StyleSheet, View} from \"@react-pdf/renderer\";\r\nimport veria from \"../../img/forPDF/PDFheader.png\";\r\n\r\nconst styles = StyleSheet.create({\r\n page: {\r\n flexDirection: 'column',\r\n backgroundColor: '#E4E4E4'\r\n },\r\n section: {\r\n margin: 20,\r\n padding: 20,\r\n flexGrow: 1\r\n }\r\n});\r\n\r\nconst NewPDF = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default NewPDF;\r\n","import React, {useEffect, useRef, useState} from 'react';\r\nimport {useDispatch, useSelector} from \"react-redux\";\r\nimport {Document, Page, PDFDownloadLink, StyleSheet, View, Image as PDFImage, Text, pdf} from '@react-pdf/renderer';\r\nimport Konva from 'konva';\r\nimport {Layer, Line, Stage, Image, Text as KonvaText} from \"react-konva\";\r\nimport {matGroups} from \"../../data/matGroups\";\r\nimport useImage from 'use-image';\r\nimport s from \"../7Result/Result.module.css\";\r\nimport thermoImg from '../../img/ThermostatButton/thermostat.svg'\r\nimport {checkIntersection, colinearPointWithinSegment} from 'line-intersect';\r\nimport coldSpot from \"../../img/frame_with_coldspot.png\";\r\nimport coldSpotWrong from \"../../img/frame_with_coldspot_wrong_position.png\";\r\nimport {HashLink as Link} from \"react-router-hash-link\";\r\nimport Modal from \"../0Modal/Modal\";\r\nimport ModalPartsList from \"../0Modal/ModalPartsList\";\r\nimport PDF from \"../PDF/PDF\";\r\nimport {updateImg} from \"../../redux/stageImgReducer\";\r\nimport veria from \"../../img/forPDF/PDFheader.png\";\r\nimport NewPDF from \"../PDF/newPDF\";\r\nimport {Redirect} from \"react-router\";\r\nimport {updateButton} from \"../../redux/buttonsReducer\";\r\nimport {cordCalc, cords} from \"../../calculator/superSnake\";\r\nimport {roomArea} from \"../../calculator/helpers\";\r\nimport PDF3 from \"../PDF/PDF\";\r\nimport {saveAs} from 'file-saver';\r\nimport {useTranslation} from \"react-i18next\";\r\nimport i18n from \"i18next\";\r\nimport {MatFinder} from \"./MatFinder\";\r\nimport Preloader from \"../Preloader/Preloader\";\r\n\r\nconst ThermostatImage = () => {\r\n const [image] = useImage(thermoImg);\r\n return \r\n};\r\n\r\nconst Result = () => {\r\n\r\n const {t} = useTranslation();\r\n const dispatch = useDispatch();\r\n const [modalActive, setModalActive] = useState(false);\r\n const [modalLoading, setModalLoading] = useState(true);\r\n const buttons = useSelector(state => state.buttons);\r\n const room = useSelector(state => state.room);\r\n const spotsArray = useSelector(state => state.points);\r\n const thermostat = useSelector(state => state.thermostat);\r\n const thermoOut = [thermostat.x, thermostat.y]\r\n const [image] = useImage(thermoImg);\r\n const checks = useSelector(state => state.checks);\r\n // const [subBurnable, setSubBurnable] = useState(checks.subBurnable);\r\n\r\n const massGroup = MatFinder(spotsArray, room, thermoOut, checks.subBurnable)\r\n\r\n // const [show, setShow] = useState(false);\r\n const [loading, setLoading] = useState(true);\r\n\r\n useEffect(() => {\r\n\r\n const loadingTimer = setTimeout(() => {\r\n setLoading(false);\r\n }, 4000);\r\n\r\n return () => clearTimeout(loadingTimer);\r\n }, []);\r\n\r\n const handleModalClick = () => {\r\n setModalActive(false)\r\n if (!massGroup[4]) {\r\n dispatch(updateButton(6))\r\n return \r\n }\r\n }\r\n const nestToDraw = nest => {\r\n let result = [];\r\n for (let i = 0; i < nest.length; i++) {\r\n let snake = []\r\n for (let j = 0; j < nest[i].length; j++) {\r\n snake.push(nest[i][j][0])\r\n snake.push(nest[i][j][1])\r\n }\r\n result.push(snake)\r\n }\r\n return result;\r\n }\r\n let nestXX = [];\r\n let list = []\r\n const listOfParts = {\r\n \"mat5_55\": 0,\r\n \"mat4_55\": 0,\r\n \"mat3_55\": 0,\r\n \"mat2_55\": 0,\r\n \"mat5_100\": 0,\r\n \"mat4_100\": 0,\r\n \"mat3_100\": 0,\r\n \"mat2_100\": 0,\r\n \"cord2\": 0,\r\n \"cord1\": 0,\r\n \"cord025\": 0,\r\n \"kit100\": 0,\r\n \"kit55\": 0\r\n }\r\n\r\n if (massGroup[4]) {\r\n nestXX = nestToDraw(massGroup[1])\r\n list = massGroup[6]\r\n // area = roomArea(room)\r\n listOfParts.cord025 = list[4]\r\n listOfParts.cord1 = list[5]\r\n listOfParts.cord2 = list[6]\r\n if (massGroup[5] > 23) {\r\n listOfParts.mat2_55 = list[0]\r\n listOfParts.mat3_55 = list[1]\r\n listOfParts.mat4_55 = list[2]\r\n listOfParts.mat5_55 = list[3]\r\n listOfParts.kit55 = 1;\r\n } else {\r\n listOfParts.mat2_100 = list[0]\r\n listOfParts.mat3_100 = list[1]\r\n listOfParts.mat4_100 = list[2]\r\n listOfParts.mat5_100 = list[3]\r\n listOfParts.kit100 = 1;\r\n }\r\n }\r\n\r\n const [modalNotesActive, setModalNotesActive] = useState(false);\r\n const [modalPartsActive, setModalPartsActive] = useState(false); //shows modal only first time on page\r\n const stageRef = useRef();\r\n const [im, setIm] = useState(null)\r\n const [pdfLink, setPdfLink] = useState(i18n.t(\"creating_pgf\"))\r\n\r\n const handleEnter = async (event) => {\r\n let dataURL = \"\";\r\n if (massGroup[4]) {\r\n dataURL = stageRef.current.toDataURL({\r\n pixelRatio: 4\r\n });\r\n }\r\n\r\n const styles = StyleSheet.create({\r\n page: {\r\n flexDirection: 'column',\r\n backgroundColor: 'white'\r\n },\r\n section: {\r\n margin: 20,\r\n padding: 15,\r\n marginTop: 10,\r\n marginBottom: 0\r\n },\r\n sectionGrey: {\r\n margin: 20,\r\n marginTop: 0,\r\n marginBottom: 0,\r\n padding: 15,\r\n backgroundColor: \"#DCDCDC\",\r\n borderRadius: 7\r\n },\r\n disclaimer: {\r\n margin: 20,\r\n marginTop: 0,\r\n marginBottom: 0,\r\n padding: 15,\r\n paddingTop: 10,\r\n paddingBottom: 0,\r\n },\r\n text1: {\r\n fontSize: 10\r\n },\r\n text2: {\r\n fontSize: 12\r\n },\r\n text16: {\r\n fontSize: 16\r\n },\r\n text20: {\r\n fontSize: 20\r\n },\r\n textBold: {\r\n fontWeight: 'bold'\r\n }\r\n\r\n });\r\n let area = roomArea(room);\r\n let heatedArea = massGroup[5];\r\n\r\n let topFloor = \"\";\r\n let subFloor = \"\";\r\n\r\n if (checks.topLaminate) {\r\n topFloor = i18n.t(\"laminate\")\r\n } else {\r\n topFloor = i18n.t(\"parquet\")\r\n }\r\n\r\n if (checks.subUnburnable) {\r\n subFloor = i18n.t(\"unburnable_pdf\")\r\n } else {\r\n subFloor = i18n.t(\"burnable_pdf\")\r\n }\r\n\r\n const PDF2 = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {i18n.t(\"room_area\")} {area.toFixed(2)} m²\r\n \r\n \r\n {i18n.t(\"heated_area\")} {heatedArea.toFixed(2)} m²\r\n ({(100 * heatedArea / area).toFixed(2)}% {i18n.t(\"coverage\")})\r\n \r\n \r\n {i18n.t(\"top_floor_pdf\")} {topFloor}\r\n \r\n \r\n {i18n.t(\"bottom_floor_pdf\")} {subFloor}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {(listOfParts.mat5_55 !== 0) && \r\n {listOfParts.mat5_55} x Veria Clickmat 55, 5m² (189B9120)\r\n }\r\n {(listOfParts.mat4_55 !== 0) && \r\n {listOfParts.mat4_55} x Veria Clickmat 55, 4m² (189B9118)\r\n }\r\n {(listOfParts.mat3_55 !== 0) && \r\n {listOfParts.mat3_55} x Veria Clickmat 55, 3m² (189B9116)\r\n }\r\n {(listOfParts.mat2_55 !== 0) && \r\n {listOfParts.mat2_55} x Veria Clickmat 55, 2m² (189B9114)\r\n }\r\n {(listOfParts.mat5_100 !== 0) && \r\n {listOfParts.mat5_100} x Veria Clickmat 100, 5m² (189B9130)\r\n }\r\n {(listOfParts.mat4_100 !== 0) && \r\n {listOfParts.mat4_100} x Veria Clickmat 100, 4m² (189B9128)\r\n }\r\n {(listOfParts.mat3_100 !== 0) && \r\n {listOfParts.mat3_100} x Veria Clickmat 100, 3m² (189B9126)\r\n }\r\n {(listOfParts.mat2_100 !== 0) && \r\n {listOfParts.mat2_100} x Veria Clickmat 100, 2m² (189B9124)\r\n }\r\n {(listOfParts.cord2 !== 0) && \r\n {listOfParts.cord2} x Veria Clickmat {i18n.t(\"extension_cord\")}, 2m (189B9110)\r\n }\r\n {(listOfParts.cord1 !== 0) && \r\n {listOfParts.cord1} x Veria Clickmat {i18n.t(\"extension_cord\")}, 1m (189B9108)\r\n }\r\n {(listOfParts.cord025 !== 0) && \r\n {listOfParts.cord025} x Veria Clickmat {i18n.t(\"extension_cord\")}, 0.25m (189B9106)\r\n }\r\n {(listOfParts.kit100 !== 0) && \r\n {listOfParts.kit100} x Veria {i18n.t(\"wireless_click_kit\")} 100 (189B9105)\r\n }\r\n {(listOfParts.kit55 !== 0) && \r\n {listOfParts.kit55} x Veria {i18n.t(\"wireless_click_kit\")} 55 (189B9104)\r\n }\r\n \r\n \r\n \r\n {i18n.t(\"disclaimer\")}\r\n \r\n \r\n \r\n \r\n {i18n.t(\"remember\")}\r\n \r\n \r\n \r\n \r\n {i18n.t(\"enjoy\")}\r\n \r\n \r\n \r\n \r\n );\r\n };\r\n\r\n setPdfLink(} fileName=\"EasyPlan.pdf\">\r\n {({blob, url, loading, error}) => (loading ? i18n.t(\"creating_pgf\") : i18n.t(\"save_as_pdf\"))}\r\n )\r\n }\r\n\r\n const generatePDFDocument = async () => {\r\n const blob = await pdf(\r\n \r\n // My document data\r\n \r\n ).toBlob();\r\n return blob;\r\n };\r\n\r\n generatePDFDocument().then(r => console.log(r));\r\n\r\n\r\n useEffect(() => {\r\n setModalActive(!massGroup[4])\r\n handleEnter();\r\n return () => {\r\n };\r\n }, []);\r\n\r\n\r\n\r\n // if (loading) return \r\n\r\n if (!buttons[7]) return \r\n\r\n return (\r\n
\r\n
\r\n
\r\n

{t(\"result\")}

\r\n

\r\n {t(\"result_text_p1\")}veriafloorheating.com\r\n
\r\n {t(\"result_text_p2\")}\r\n

\r\n
\r\n
?
\r\n
\r\n\r\n
{massGroup[4] &&\r\n
\r\n \r\n \r\n \r\n {\r\n massGroup[7].map(tail => )\r\n }\r\n \r\n \r\n {\r\n massGroup[0].map(tail => )\r\n }\r\n {\r\n spotsArray.map(spot => )\r\n }\r\n {\r\n massGroup[2].map(connector => )\r\n }\r\n {\r\n massGroup[3].map(text => )\r\n }\r\n \r\n {\r\n nestXX.map(snake => )\r\n }\r\n \r\n \r\n \r\n\r\n
\r\n {/*
{t(\"add_notes\")}
*/}\r\n
setModalPartsActive(true)}>{t(\"list_of_parts_where\")}\r\n
\r\n
\r\n {pdfLink}\r\n
\r\n
\r\n
}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n

{t(\"thermostats_capacity\")}

\r\n \r\n
\r\n
\r\n

\r\n {t(\"capacity_text1\")}\r\n {Math.round(massGroup[5] * 100) / 100} m2\r\n {t(\"capacity_text2\")}

\r\n
\r\n

\r\n {t(\"capacity_text3\")} 42 m2 {t(\"capacity_text4\")} (Veria {t(\"wireless_click_kit\")} 55)\r\n {t(\"capacity_text5\")} 23 m2 {t(\"capacity_text6\")} (Veria {t(\"wireless_click_kit\")} 100)

\r\n
\r\n

\r\n {t(\"capacity_text7\")}\r\n — veriafloorheating.com\r\n

\r\n
\r\n
\r\n ok\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Result;\r\n\r\n\r\n","import React from 'react';\r\nimport {Route, Switch} from \"react-router-dom\";\r\n\r\nimport './styles/main.css';\r\nimport './styles/modals.css';\r\nimport './styles/normalize.css';\r\n\r\nimport Header from \"./components/Header/Header\";\r\nimport Nav from \"./components/Nav/Nav\";\r\nimport Start from \"./components/1Start/Start\";\r\nimport RoomShape from \"./components/2RoomShape/RoomShape\";\r\nimport RoomSize from \"./components/3RoomSize/RoomSize\";\r\nimport ColdSpots from \"./components/4ColdSpots/ColdSpots\";\r\nimport FloorType from \"./components/5FloorType/FloorType\";\r\nimport Thermostat from \"./components/6Thermostat/Thermostat\";\r\nimport Placement from \"./components/6Thermostat/Placement\";\r\nimport Result from \"./components/7Result/Result\";\r\nimport {useTranslation} from \"react-i18next\";\r\n\r\nconst App = () => {\r\n\r\n const {t} = useTranslation();\r\n\r\n return (\r\n
\r\n
\r\n {t(\"mobile_warning\")}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default App;","// src/i18n.js\r\nimport i18n from \"i18next\";\r\nimport Backend from \"i18next-xhr-backend\";\r\nimport LanguageDetector from \"i18next-browser-languagedetector\";\r\nimport { initReactI18next } from \"react-i18next\";\r\n\r\ni18n\r\n .use(Backend)\r\n // detect user language\r\n // learn more: https://github.com/i18next/i18next-browser-languageDetector\r\n // .use(LanguageDetector)\r\n .use(initReactI18next)\r\n .init({\r\n react: {\r\n useSuspense: false\r\n },\r\n fallbackLng: \"en\",\r\n debug: true,\r\n\r\n interpolation: {\r\n escapeValue: false\r\n }\r\n });\r\n\r\nexport default i18n;","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport {BrowserRouter} from \"react-router-dom\";\r\nimport {createStore} from 'redux';\r\nimport {Provider} from 'react-redux';\r\nimport reducers from \"./redux/reducers\";\r\nimport './index.css';\r\nimport './styles/main.css';\r\nimport './styles/modals.css';\r\nimport './styles/normalize.css';\r\nimport App from './App';\r\nimport \"./i18n\";\r\n\r\nconst store = createStore(reducers);\r\nwindow.store = store;\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n , document.getElementById('root')\r\n);\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"btnNextStep\":\"PlanMaker_btnNextStep__2Anr-\",\"planMaker\":\"PlanMaker_planMaker__1Vcja\",\"point\":\"PlanMaker_point__9wRVy\",\"points\":\"PlanMaker_points__1o7c3\",\"pointStart\":\"PlanMaker_pointStart__1vMv6\",\"dimContainer\":\"PlanMaker_dimContainer__1gq01\",\"lines\":\"PlanMaker_lines__25ZMf\",\"dimensions\":\"PlanMaker_dimensions__1kTsV\",\"butT\":\"PlanMaker_butT__3fr4O\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"compass\":\"CompassArrows_compass__2P8Al\",\"compassArrow\":\"CompassArrows_compassArrow__3k_q7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"btnNextStep\":\"Thermostat_btnNextStep__VzZ4K\",\"planMaker\":\"Thermostat_planMaker__18oKP\",\"points\":\"Thermostat_points__3fWnk\",\"thermostat\":\"Thermostat_thermostat__1LAts\",\"thermostat2\":\"Thermostat_thermostat2__hoZ24\",\"thermostat3\":\"Thermostat_thermostat3__3dRzm\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"modal\":\"Modal_modal__2PL5m\",\"active\":\"Modal_active__3HFdH\",\"modal__content\":\"Modal_modal__content__3EdE2\"};"],"sourceRoot":""}