{"version":3,"sources":["containers/App/MainWrapper.jsx","store/constant.js","store/base-data.js","store/slices/solarSimulatorSlice.js","store/reducer.js","store/index.js","containers/Footer/Panels/SeasonsPanel.jsx","shared/svg/components/CloseButton.js","shared/svg/components/MaximizeButton.js","shared/svg/components/MinimizeButton.js","shared/svg/components/Morning.js","shared/svg/components/Night.js","containers/Footer/Panels/TimePanel.jsx","hooks/useWindowSize.jsx","containers/Footer/Panels/OptionsPanel.jsx","containers/Footer/Footer.jsx","containers/CameraSelector/CameraSelector.jsx","containers/LegalNote/LegalNote.jsx","containers/Player/ImagePlayer.jsx","containers/Player/ImagePlayerIE.jsx","containers/SolarSimulator/SolarSimulator.jsx","containers/App/Router.jsx","containers/App/App.jsx","serviceWorker.js","index.js"],"names":["MainWrapper","_ref","children","_jsx","className","smallScreenWidth","aspectRatioThreshold","menuHdHeight","menuMdHeight","Season","BizionarDemoMock","settings","shotsBaseUrl","legalNote","initialValues","camera","season","time","cameras","id","name","findCurrentShot","timeString","length","initialState","legal","currentSeason","currentCamera","currentTime","currentShot","previousShot","isLegalNoteOpened","solarSimulator","createSlice","reducers","initializeSolarSimulator","state","action","payload","changeCamera","changeSeason","changeTime","updatePreviousShot","setLegalNoteOpened","_solarSimulator$actio","actions","reducer","combineReducers","solarSimulatorReducer","store","configureStore","rootReducer","middleware","getDefaultMiddleware","serializableCheck","immutableCheck","useDispatch","dispatch","useAppDispatch","SeasonsPanel","useAppSelector","useSelector","onSeasonChanged","value","_jsxs","concat","onClick","disabled","type","SvgCloseButton","props","_objectSpread","width","height","fill","xmlns","d","SvgMaximizeButton","filter","x","y","filterUnits","colorInterpolationFilters","floodOpacity","result","in","values","stdDeviation","in2","operator","SvgMinimizeButton","SvgMorning","clipPath","transform","SvgNight","TimePanel","clientId","useParams","target","React","useRef","_useState","useState","_useState2","_slicedToArray","dragAreaWidth","setDragAreaWidth","useLayoutEffect","current","offsetWidth","useEffect","handleWindowResize","window","addEventListener","removeEventListener","isSummerTime","mouse","useMouse","fps","enterDelay","leaveDelay","isDown","rect","getBoundingClientRect","clientX","left","newTime","Math","round","elementWidth","isIE","Morning","ref","src","process","alt","style","Night","useWindowSize","undefined","windowSize","setWindowSize","handleResize","innerWidth","innerHeight","OptionsPanel","isMaximized","onMaximize","onMinimize","isMobile","isSafari","MinimizeButton","MaximizeButton","Footer","CameraSelector","map","index","LegalNote","CloseButton","dangerouslySetInnerHTML","__html","ImagePlayer","visibleImage","setVisibleImage","_useState3","_useState4","imageOneShot","setImageOneShot","_useState5","_useState6","imageTwoShot","setImageTwoShot","imageTransformReference","pendingCurrentShot","tryToUpdateImages","centerView","getMenuHeight","getImageDimensions","imageWidth","imageHeight","imageMinScale","imageMaxScale","minScale","maxScale","TransformWrapper","doubleClick","centerOnInit","TransformComponent","wrapperStyle","onTransitionEnd","onLoad","ImagePlayerIE","_Fragment","bizionarColor","SolarSimulator","_useParams","promotionId","reviewId","handle","useFullScreenHandle","baseUrl","jsonUrl","_useQuery","useQuery","fetch","then","res","json","data","isLoading","error","root","document","documentElement","clientColor","setProperty","message","FullScreen","majorVersion","engineVersion","split","isChrome","parseInt","isChromeLowerVersion","active","enter","exit","Router","Switch","Route","exact","path","component","App","queryClient","QueryClient","defaultOptions","queries","refetchOnWindowFocus","Provider","QueryClientProvider","client","BrowserRouter","Boolean","location","hostname","match","ReactDOM","render","StrictMode","getElementById","navigator","serviceWorker","ready","registration","unregister","catch","console"],"mappings":"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","file":"static/js/main.6dc07ecf.chunk.js","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst MainWrapper = ({ children }) => (\n
\n {children}\n
\n);\n\nMainWrapper.propTypes = {\n children: PropTypes.element.isRequired,\n};\n\nexport default MainWrapper;\n","export const smallScreenWidth = 800;\nexport const mediumScreenWidth = 1200;\n\nexport const aspectRatioThreshold = 1.777778;\nexport const aspectRatioInverseThreshold = 0.5625;\n\nexport const imageMaxZoom = 1.6;\nexport const imageMaxZoomMobile = 1.8;\n\nexport const menuHdHeight = 100;\nexport const menuMdHeight = 110;\nexport const menuMobileLandscapeHeight = 70;\n\nexport const Season = {\n Winter: 'winter',\n Spring: 'spring',\n Summer: 'summer',\n Autumn: 'autumn'\n}\n","const BizionarDemoMock = {\n settings: {\n shotsBaseUrl: \"\",\n legalNote: \"\"\n },\n initialValues: {\n camera: \"\",\n season: \"\",\n time: 10\n },\n cameras: [\n {\n id: \"cam01\",\n name: \"Vista 1\"\n }\n ]\n};\n\nexport default BizionarDemoMock;\n","// third-party\nimport { createSlice } from '@reduxjs/toolkit';\n\n// project imports\nimport { Season } from '../constant';\nimport BizionarDemoMock from '../base-data';\n\n// ----------------------------------------------------------------------\n\nconst findCurrentShot = (camera, season, time) => {\n let timeString = time + '';\n if (timeString.length <= 1) timeString = \"0\" + timeString;\n\n return camera + \"_\" + season + \"_\" + timeString;\n};\n\n// ----------------------------------------------------------------------\n\nconst initialState = {\n cameras: BizionarDemoMock.cameras,\n settings: BizionarDemoMock.settings,\n legal: BizionarDemoMock.settings,\n initialValues: BizionarDemoMock.initialValues,\n currentSeason: Season.Winter,\n currentCamera: null,\n currentTime: 0,\n currentShot: null,\n previousShot: null,\n isLegalNoteOpened: false,\n\n};\n\nconst solarSimulator = createSlice({\n name: 'solarSimulator',\n initialState,\n reducers: {\n initializeSolarSimulator: (state, action) => {\n state.cameras = action.payload.cameras;\n state.settings = action.payload.settings;\n state.initialValues = action.payload.initialValues;\n state.currentCamera = action.payload.initialValues.camera;\n state.currentSeason = action.payload.initialValues.season;\n state.currentTime = action.payload.initialValues.time;\n state.currentShot = findCurrentShot(state.currentCamera, state.currentSeason, state.currentTime);\n\n },\n changeCamera: (state, action) => {\n state.currentCamera = action.payload;\n state.previousShot = state.currentShot;\n state.currentShot = findCurrentShot(state.currentCamera, state.currentSeason, state.currentTime);\n },\n changeSeason: (state, action) => {\n state.currentSeason = action.payload;\n state.previousShot = state.currentShot;\n\n state.currentShot = findCurrentShot(state.currentCamera, state.currentSeason, state.currentTime);\n },\n changeTime: (state, action) => {\n state.currentTime = action.payload;\n state.previousShot = state.currentShot;\n state.currentShot = findCurrentShot(state.currentCamera, state.currentSeason, state.currentTime);\n },\n updatePreviousShot: (state, action) => {\n state.previousShot = action.payload;\n },\n setLegalNoteOpened: (state, action) => {\n state.isLegalNoteOpened = action.payload;\n },\n\n }\n});\n\nexport const {\n initializeSolarSimulator,\n changeCamera,\n changeSeason,\n changeTime,\n updatePreviousShot,\n setLegalNoteOpened,\n} = solarSimulator.actions;\n\n// Reducer\nexport default solarSimulator.reducer;\n","// third-party\nimport { combineReducers } from 'redux';\n\n// project imports\nimport solarSimulatorReducer from './slices/solarSimulatorSlice';\n\n// ==============================|| COMBINE REDUCER ||============================== //\n\nconst reducer = combineReducers({\n solarSimulator: solarSimulatorReducer\n});\n\nexport default reducer;\n","// third-party\nimport { configureStore } from '@reduxjs/toolkit';\nimport { useDispatch as useAppDispatch, useSelector as useAppSelector } from 'react-redux';\n\n// project imports\nimport rootReducer from './reducer';\n\n// ==============================|| REDUX - MAIN STORE ||============================== //\n\nconst store = configureStore({\n reducer: rootReducer,\n middleware: (getDefaultMiddleware) =>\n getDefaultMiddleware({ serializableCheck: false, immutableCheck: false })\n});\n\nconst { dispatch } = store;\n\nconst useDispatch = () => useAppDispatch();\nconst useSelector = useAppSelector;\n\nexport { store, dispatch, useSelector, useDispatch };\n","// third-party\nimport React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n// project imports\nimport { changeSeason } from '../../../store/slices/solarSimulatorSlice';\nimport { Season } from '../../../store/constant';\n\nconst SeasonsPanel = () => {\n const currentSeason = useSelector(state => state.solarSimulator.currentSeason);\n const dispatch = useDispatch();\n\n const onSeasonChanged = (value) => {\n dispatch(changeSeason(value));\n };\n return (\n
\n onSeasonChanged(Season.Winter)}\n disabled={currentSeason === Season.Winter}\n type=\"button\"\n >\n Invierno\n \n onSeasonChanged(Season.Spring)}\n disabled={currentSeason === Season.Spring}\n type=\"button\"\n >\n Primavera\n \n onSeasonChanged(Season.Summer)}\n disabled={currentSeason === Season.Summer}\n type=\"button\"\n >\n Verano\n \n onSeasonChanged(Season.Autumn)}\n type=\"button\"\n >\n Otoño\n \n
\n );\n};\n\nexport default SeasonsPanel;\n","import * as React from \"react\";\n\nconst SvgCloseButton = (props) => (\n \n \n \n);\n\nexport default SvgCloseButton;\n","import * as React from \"react\";\nconst SvgMaximizeButton = (props) => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\nexport default SvgMaximizeButton;\n","import * as React from \"react\";\nconst SvgMinimizeButton = (props) => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\nexport default SvgMinimizeButton;\n","import * as React from \"react\";\nconst SvgMorning = (props) => (\n \n \n \n \n \n \n \n \n \n \n);\nexport default SvgMorning;\n","import * as React from \"react\";\nconst SvgNight = (props) => (\n \n \n \n \n \n \n \n \n \n \n);\nexport default SvgNight;\n","// third-party\nimport React, { useEffect, useLayoutEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport useMouse from '@react-hook/mouse-position';\nimport { useParams } from 'react-router-dom';\nimport { isIE } from 'react-device-detect';\n// project imports\nimport { changeTime } from '../../../store/slices/solarSimulatorSlice';\nimport { Morning, Night } from '../../../shared/svg/components';\nimport { Season } from '../../../store/constant';\n\nconst TimePanel = () => {\n const { clientId } = useParams();\n const currentTime = useSelector(state => state.solarSimulator.currentTime);\n const currentSeason = useSelector(state => state.solarSimulator.currentSeason);\n const target = React.useRef(null);\n const [dragAreaWidth, setDragAreaWidth] = useState(1);\n const dispatch = useDispatch();\n\n useLayoutEffect(() => {\n setDragAreaWidth(target.current.offsetWidth);\n }, []);\n\n useEffect(() => {\n function handleWindowResize() {\n setDragAreaWidth(target.current.offsetWidth);\n }\n window.addEventListener('resize', handleWindowResize);\n return () => {\n window.removeEventListener('resize', handleWindowResize);\n };\n }, []);\n\n const isSummerTime = () => currentSeason === Season.Spring || currentSeason === Season.Summer;\n\n const mouse = useMouse(target, {\n fps: 30,\n enterDelay: 0,\n leaveDelay: 0,\n\n });\n\n const getCurrentSliderX = () => {\n if (mouse.elementWidth !== null && dragAreaWidth !== mouse.elementWidth) {\n setDragAreaWidth(mouse.elementWidth);\n }\n return ((currentTime > 0 ? currentTime : 0) * dragAreaWidth) / 30 - 20;\n };\n\n if (mouse.isDown) {\n const rect = target.current.getBoundingClientRect();\n const x = mouse.clientX - rect.left;\n let newTime = Math.round((x * 30) / mouse.elementWidth);\n\n if (newTime !== currentTime) {\n if (newTime > 30) newTime = 30;\n dispatch(changeTime(newTime));\n }\n }\n\n return (\n
\n
\n
mañana
\n
\n \n
\n
\n
\n
\n
{isSummerTime() ? '9:00' : '8:00'}
\n
{isSummerTime() ? '13:00' : '12:00'}
\n
{isSummerTime() ? '17:00' : '16:00'}
\n
{isSummerTime() ? '21:00' : '20:00'}
\n
\n
\n
\n \"\"\n
\n
\n \"\"\n
\n
\n
\n\n
\n
\n \n
\n
noche
\n
\n
\n );\n};\n\nexport default TimePanel;\n","import { useEffect, useState } from 'react';\n\nconst useWindowSize = () => {\n const [windowSize, setWindowSize] = useState({\n width: undefined,\n height: undefined,\n });\n useEffect(() => {\n function handleResize() {\n setWindowSize({\n width: window.innerWidth,\n height: window.innerHeight,\n });\n }\n window.addEventListener('resize', handleResize);\n handleResize();\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n return windowSize;\n};\n\nexport default useWindowSize;\n","// third-party\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { useParams } from 'react-router-dom';\nimport { isMobile, isSafari } from 'react-device-detect';\n// project imports\nimport { MaximizeButton, MinimizeButton } from '../../../shared/svg/components';\nimport { setLegalNoteOpened } from '../../../store/slices/solarSimulatorSlice';\nimport { useDispatch } from '../../../store';\n\nconst OptionsPanel = ({ isMaximized, onMaximize, onMinimize }) => {\n const { clientId } = useParams();\n const dispatch = useDispatch();\n const onLegalNoteHandler = () => {\n dispatch(setLegalNoteOpened(true));\n };\n\n if (clientId === 'azul-real-estate') {\n return
;\n }\n\n return (\n
\n
|
\n \n Aviso Legal\n \n
|
\n
by
\n
\"\"
\n { (isMobile && isSafari) ? null : (\n \n )}\n
\n );\n};\n\nOptionsPanel.propTypes = {\n isMaximized: PropTypes.bool.isRequired,\n onMaximize: PropTypes.func.isRequired,\n onMinimize: PropTypes.func.isRequired,\n};\n\nexport default OptionsPanel;\n","// third-party\nimport React from 'react';\nimport PropTypes from 'prop-types';\n// project imports\nimport SeasonsPanel from './Panels/SeasonsPanel';\nimport TimePanel from './Panels/TimePanel';\nimport useWindowSize from '../../hooks/useWindowSize';\nimport { smallScreenWidth } from '../../store/constant';\nimport OptionsPanel from './Panels/OptionsPanel';\n\nconst Footer = ({ isMaximized, onMaximize, onMinimize }) => {\n const windowSize = useWindowSize();\n if (windowSize.width > smallScreenWidth) {\n return (\n
\n \n \n \n
\n );\n }\n\n return (\n
\n \n \n \n
\n );\n};\n\nFooter.propTypes = {\n isMaximized: PropTypes.bool.isRequired,\n onMaximize: PropTypes.func.isRequired,\n onMinimize: PropTypes.func.isRequired,\n};\n\nexport default Footer;\n","// third-party\nimport React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\n// project imports\nimport { changeCamera } from '../../store/slices/solarSimulatorSlice';\n\n\nconst CameraSelector = ({ cameras }) => {\n const currentCamera = useSelector(state => state.solarSimulator.currentCamera);\n const dispatch = useDispatch();\n\n const onCameraChanged = (value) => {\n dispatch(changeCamera(value));\n };\n\n return (\n
\n {cameras.map((camera, index) => (\n onCameraChanged(camera.id)}\n disabled={currentCamera === camera.id}\n type=\"button\"\n >\n {camera.name}\n \n ))}\n
\n );\n};\n\nCameraSelector.propTypes = {\n cameras: PropTypes.arrayOf(PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n })).isRequired,\n};\n\nexport default CameraSelector;\n","import React from 'react';\n\n// project imports\nimport { useDispatch, useSelector } from 'react-redux';\nimport { CloseButton } from '../../shared/svg/components';\nimport { setLegalNoteOpened } from '../../store/slices/solarSimulatorSlice';\n\nconst LegalNote = () => {\n const settings = useSelector(state => state.solarSimulator.settings);\n const isLegalNoteOpened = useSelector(state => state.solarSimulator.isLegalNoteOpened);\n const dispatch = useDispatch();\n\n return (isLegalNoteOpened\n && (\n
\n
\n
\n dispatch(setLegalNoteOpened(false))}\n >\n \n \n
\n
Aviso Legal
\n
\n
\n
\n
\n ));\n};\nexport default LegalNote;\n","// third-party\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { TransformComponent, TransformWrapper } from 'react-zoom-pan-pinch';\nimport { isMobile } from 'react-device-detect';\n// project imports\nimport { updatePreviousShot } from '../../store/slices/solarSimulatorSlice';\nimport useWindowSize from '../../hooks/useWindowSize';\nimport {\n aspectRatioInverseThreshold, aspectRatioThreshold, imageMaxZoom, imageMaxZoomMobile,\n menuHdHeight, menuMdHeight, menuMobileLandscapeHeight,\n smallScreenWidth,\n} from '../../store/constant';\n\nconst ImagePlayer = () => {\n const settings = useSelector(state => state.solarSimulator.settings);\n const currentShot = useSelector(state => state.solarSimulator.currentShot);\n const previousShot = useSelector(state => state.solarSimulator.previousShot);\n const [visibleImage, setVisibleImage] = useState('image-two');\n const [imageOneShot, setImageOneShot] = useState(null);\n const [imageTwoShot, setImageTwoShot] = useState(null);\n const imageTransformReference = useRef(null);\n const windowSize = useWindowSize();\n const dispatch = useDispatch();\n\n let pendingCurrentShot = null;\n\n const tryToUpdateImages = () => {\n if (pendingCurrentShot !== null) {\n pendingCurrentShot = null;\n if (visibleImage === 'image-one') {\n setImageTwoShot(currentShot);\n } else {\n setImageOneShot(currentShot);\n }\n dispatch(updatePreviousShot(currentShot));\n }\n };\n\n useEffect(() => {\n if (currentShot != null && currentShot !== previousShot) {\n pendingCurrentShot = currentShot;\n tryToUpdateImages();\n }\n }, [currentShot]);\n\n useEffect(() => {\n if (imageTransformReference.current) {\n const { centerView } = imageTransformReference.current;\n centerView(1, 300, 'easeOut');\n }\n }, [windowSize]);\n\n const getMenuHeight = () => {\n if (isMobile && windowSize.width > windowSize.height) {\n return menuMobileLandscapeHeight;\n }\n if (windowSize.width < smallScreenWidth) {\n return menuMdHeight;\n }\n return menuHdHeight;\n };\n\n const getImageDimensions = () => {\n const aspectRatio = windowSize.width / windowSize.height;\n let imageWidth;\n let imageHeight;\n let imageMinScale;\n let imageMaxScale;\n if (aspectRatio < aspectRatioThreshold) {\n imageWidth = (windowSize.height - getMenuHeight()) * aspectRatioThreshold;\n imageHeight = windowSize.height - getMenuHeight();\n imageMinScale = windowSize.width / imageWidth;\n imageMaxScale = isMobile ? imageMaxZoomMobile : imageMaxZoom;\n } else {\n imageWidth = windowSize.width;\n imageHeight = windowSize.width * aspectRatioInverseThreshold;\n imageMinScale = (windowSize.height - getMenuHeight()) / imageHeight;\n imageMaxScale = isMobile ? imageMaxZoomMobile : imageMaxZoom;\n }\n return {\n width: imageWidth, height: imageHeight, minScale: imageMinScale, maxScale: imageMaxScale,\n };\n };\n\n const onImageOneTransitionEnd = () => {\n if (visibleImage === 'image-two') {\n setImageOneShot(null);\n } else {\n tryToUpdateImages();\n }\n };\n\n const onImageTwoTransitionEnd = () => {\n if (visibleImage === 'image-one') {\n setImageTwoShot(null);\n } else {\n tryToUpdateImages();\n }\n };\n\n const onImageOneLoaded = () => {\n setVisibleImage('image-one');\n };\n\n const onImageTwoLoaded = () => {\n setVisibleImage('image-two');\n };\n\n return (\n \n \n \n \n {imageOneShot === null ? null : (\n \n )}\n
\n \n {imageTwoShot === null ? null : (\n \n )}\n
\n
\n \n \n );\n};\n\nexport default ImagePlayer;\n","// third-party\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { isMobile } from 'react-device-detect';\n// project imports\nimport { updatePreviousShot } from '../../store/slices/solarSimulatorSlice';\nimport useWindowSize from '../../hooks/useWindowSize';\nimport {\n aspectRatioInverseThreshold,\n aspectRatioThreshold,\n imageMaxZoom,\n imageMaxZoomMobile,\n menuHdHeight,\n menuMdHeight,\n menuMobileLandscapeHeight,\n smallScreenWidth,\n} from '../../store/constant';\n\nconst ImagePlayerIE = () => {\n const settings = useSelector(state => state.solarSimulator.settings);\n const currentShot = useSelector(state => state.solarSimulator.currentShot);\n const previousShot = useSelector(state => state.solarSimulator.previousShot);\n const [visibleImage, setVisibleImage] = useState('image-two');\n const [imageOneShot, setImageOneShot] = useState(null);\n const [imageTwoShot, setImageTwoShot] = useState(null);\n const imageTransformReference = useRef(null);\n const windowSize = useWindowSize();\n const dispatch = useDispatch();\n\n let pendingCurrentShot = null;\n\n const tryToUpdateImages = () => {\n if (pendingCurrentShot !== null) {\n pendingCurrentShot = null;\n if (visibleImage === 'image-one') {\n setImageTwoShot(currentShot);\n } else {\n setImageOneShot(currentShot);\n }\n dispatch(updatePreviousShot(currentShot));\n }\n };\n\n useEffect(() => {\n if (currentShot != null && currentShot !== previousShot) {\n pendingCurrentShot = currentShot;\n tryToUpdateImages();\n }\n }, [currentShot]);\n\n useEffect(() => {\n if (imageTransformReference.current) {\n const { centerView } = imageTransformReference.current;\n centerView(1, 300, 'easeOut');\n }\n }, [windowSize]);\n\n const getMenuHeight = () => {\n if (isMobile && windowSize.width > windowSize.height) {\n return menuMobileLandscapeHeight;\n }\n if (windowSize.width < smallScreenWidth) {\n return menuMdHeight;\n }\n return menuHdHeight;\n };\n\n const onImageOneTransitionEnd = () => {\n if (visibleImage === 'image-two') {\n setImageOneShot(null);\n } else {\n tryToUpdateImages();\n }\n };\n\n const onImageTwoTransitionEnd = () => {\n if (visibleImage === 'image-one') {\n setImageTwoShot(null);\n } else {\n tryToUpdateImages();\n }\n };\n\n const onImageOneLoaded = () => {\n setVisibleImage('image-one');\n };\n\n const onImageTwoLoaded = () => {\n setVisibleImage('image-two');\n };\n\n return (\n <>\n \n {imageOneShot === null ? null : (\n \n )}\n \n \n {imageTwoShot === null ? null : (\n \n )}\n \n \n );\n};\n\nexport default ImagePlayerIE;\n","// third-party\nimport React, { useEffect } from 'react';\nimport { useParams } from 'react-router-dom';\nimport { useQuery } from 'react-query';\nimport { useSelector } from 'react-redux';\nimport { FullScreen, useFullScreenHandle } from 'react-full-screen';\nimport {\n isIE, isMobile,\n isChrome, engineVersion,\n} from 'react-device-detect';\n\n// project imports\nimport { useDispatch } from '../../store';\nimport { initializeSolarSimulator } from '../../store/slices/solarSimulatorSlice';\nimport Footer from '../Footer/Footer';\nimport CameraSelector from '../CameraSelector/CameraSelector';\nimport LegalNote from '../LegalNote/LegalNote';\nimport useWindowSize from '../../hooks/useWindowSize';\nimport ImagePlayer from '../Player/ImagePlayer';\nimport {\n menuHdHeight, menuMdHeight, menuMobileLandscapeHeight, smallScreenWidth,\n} from '../../store/constant';\nimport ImagePlayerIE from '../Player/ImagePlayerIE';\n\nconst bizionarColor = '#6FBE95';\nconst culmiaColor = '#6FBE95';\nconst azulRealEstateColor = '#FF4C00';\n\nconst SolarSimulator = () => {\n const { clientId, promotionId, reviewId } = useParams();\n const cameras = useSelector(state => state.solarSimulator.cameras);\n const handle = useFullScreenHandle();\n const windowSize = useWindowSize();\n const dispatch = useDispatch();\n\n const baseUrl = 'https://media.bizionar.digital';\n let jsonUrl = `${baseUrl}/${clientId}/${promotionId}/live/solar-simulator/json/${promotionId}.json`;\n if (reviewId !== undefined) {\n jsonUrl = `${baseUrl}/${clientId}/${promotionId}/${reviewId}/solar-simulator/json/${promotionId}.json`;\n }\n\n const { isLoading, error } = useQuery(\n ['solar-simulator-query'],\n () => fetch(jsonUrl)\n .then(res => res.json())\n .then((data) => {\n dispatch(initializeSolarSimulator(data));\n }),\n );\n\n useEffect(() => {\n const root = document.documentElement;\n let clientColor = bizionarColor;\n switch (clientId) {\n case 'culmia':\n clientColor = culmiaColor;\n break;\n case 'azul-real-estate':\n clientColor = azulRealEstateColor;\n break;\n default:\n clientColor = bizionarColor;\n break;\n }\n root?.style.setProperty('--client-color', clientColor);\n }, []);\n\n const isChromeLowerVersion = () => {\n const majorVersion = engineVersion.split('.')[0];\n return isChrome && parseInt(majorVersion, 10) < 70;\n };\n\n const getPlayerHeight = () => {\n if (isMobile && windowSize.width > windowSize.height) {\n return windowSize.height - menuMobileLandscapeHeight;\n }\n if (windowSize.width < smallScreenWidth) {\n return windowSize.height - menuMdHeight;\n }\n return windowSize.height - menuHdHeight;\n };\n\n const getMenuHeight = () => {\n if (isMobile && windowSize.width > windowSize.height) {\n return menuMobileLandscapeHeight;\n }\n if (windowSize.width < smallScreenWidth) {\n return menuMdHeight;\n }\n return menuHdHeight;\n };\n\n if (isLoading) return 'Loading...';\n\n if (error) return `An error has occurred: ${error.message}`;\n\n return (\n \n \n {cameras.length > 1 ? : null}\n \n {(isIE || isChromeLowerVersion()) ? : }\n \n
\n \n
\n \n \n
\n );\n};\n\nexport default SolarSimulator;\n","// third-party\nimport React from 'react';\nimport { Route, Switch } from 'react-router-dom';\n\n// project imports\nimport MainWrapper from './MainWrapper';\nimport SolarSimulator from '../SolarSimulator/SolarSimulator';\n\nconst Router = () => (\n \n
\n \n \n \n \n
\n
\n);\n\nexport default Router;\n","// third-party\nimport React from 'react';\nimport { BrowserRouter, useParams } from 'react-router-dom';\nimport { QueryClient, QueryClientProvider } from 'react-query';\nimport { Provider } from 'react-redux';\nimport Router from './Router';\nimport 'bootstrap/dist/css/bootstrap.css';\nimport '../../scss/app.scss';\n\n// project imports\nimport { store } from '../../store';\n\nconst App = () => {\n const queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false,\n },\n },\n });\n return (\n \n \n \n \n \n \n \n );\n};\n\nexport default App;\n","/* eslint-disable no-console */\n// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost'\n // [::1] is the IPv6 localhost address.\n || window.location.hostname === '[::1]'\n // 127.0.0.0/8 are considered localhost for IPv4.\n || window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/,\n ),\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n // eslint-disable-next-line no-use-before-define\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service '\n + 'worker. To learn more, visit https://bit.ly/CRA-PWA',\n );\n });\n } else {\n // Is not localhost. Just register service worker\n // eslint-disable-next-line no-use-before-define\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n // eslint-disable-next-line no-param-reassign\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all '\n + 'tabs for this page are closed. See https://bit.ly/CRA-PWA.',\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404\n || (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.',\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n}\n","import 'react-app-polyfill/ie11';\nimport 'react-app-polyfill/stable';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport App from './containers/App/App';\nimport * as serviceWorker from './serviceWorker';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root'),\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}