{"version":3,"mappings":"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","names":["smoothScroll","checkIfDesktop","checkIfTablet","getRadians","degrees","capitalizeFirstLetter","string","camelize","object","newObject","origKey","newKey","value","scrollToElement","element","elementYOffsetFromTheViewport","windowYOffset","top","triggerMouseEvent","node","eventType","clickEvent","setCookie","name","val","days","path","domain","secure","cookieName","cookieVal","cookieText","data","getCookie","cookies","i","addRecaptchaScript","resolve","script","getRecaptchaToken","token","debounce","callback","delay","timer","args","HeaderSearchInput","searchAccessibilityText","searchPlaceholderText","expanded","setExpanded","useState","searchTerm","setSearchTerm","searchInputRef","useRef","buttonRef","handleSearchSubmit","evt","url","handleSearchBlur","handleSearchInputChange","jsxs","classNames","jsx","HeaderTopMenu","topMenuModel","_a","item","MegaMenuEditorialBlock","editorialBlock","dompurify","MegaMenuItem","Header","headerModel","frontPageUrl","frontPageTitle","selected","setSelected","handleClick","id","_b","_d","_c","SvgLogoType","props","React.createElement","SvgMenu","SvgCross","SvgArrow","MegaMenuMobile","megaMenuModel","active","selectedMain","selectedSub","setSelectedMain","setSelectedSub","handleSelectMainClick","mainNav","handleSelectSubClick","subNav","ArrowSvg","useMegaMenuMobileState","menuExpanded","setMenuExpanded","searchExpanded","setSearchExpanded","HeaderMobile","handleMenuClick","handleSearchIconClick","LogoSvg","CrossSvg","MenuSvg","SearchRedesignSvg","HeaderWrapper","isLoading","useHeaderModel","renderLazyComponent","children","elementNode","ReactDOM","Suspense","baseUrl","getFooterUrl","getFooterModel","currentPageId","axios","useFooterData","footerData","setFooterData","loading","setLoading","useEffect","result","SvgMail","subscribeUrl","postSubscribe","requestData","regex","isValidEmail","email","Footer","setEmail","subResult","setSubResult","subLoading","setSubLoading","emailError","setEmailError","handleEmailChange","handleSubmit","response","link","MailSvg","CatalogueMegaMenuSubItem","sub","CatalogueMegaMenuItem","subItem","ProductCatalogueHeader","headerNavBotLinkClass","useCatalogueHeaderModel","useQuery","getProductCatalogueHeaderModel","SvgArrowLeftFlat","ProductCatalogueMegaMenuMobile","ArrowLeftSvg","ProductCatalogueHeaderMobile","ProductCatalogueHeaderWrapper","error","ships","ship3D","ships2D","areasNamesMap","areaHotspotsSettings","cameraLoadingPosition","cameraInitialPosition","cameraTransitionSpeed","initialOrbitControlsSettings","GlobalContext","React","GlobalContextProvider","Component","isVisible","LoadViewer","Instructions","firstTimeVisiting","windowPosition","isOpen","prevState","mainContainer","containerHeight","instructionClasses","instructionStyles","e","InstructionsWithContext","context","ShipContext","ShipContextProvider","activeSubareaId","activeAreaId","shipType","addLights","scene","ambientLight","THREE.AmbientLight","pointLight","getPointLight","keyLight","THREE.DirectionalLight","backLight","intensity","light","THREE.PointLight","addShadowPlane","geometry","THREE.PlaneGeometry","material","THREE.ShadowMaterial","shadowPlane","THREE.Mesh","addShipModel","shipModelUrl","loadingManager","THREE.ObjectLoader","handleLoad","SceneManager","container","callbackOnLoad","require$$0","THREE","THREE.Scene","THREE.LoadingManager","width","height","renderer","THREE.WebGLRenderer","THREE.PCFSoftShadowMap","aspectRatio","nearPlane","farPlane","camera","THREE.PerspectiveCamera","THREE.Vector3","controls","settings","minDistance","maxDistance","enableDamping","enableKeys","enablePan","dampingFactor","minAzimuthAngle","maxAzimuthAngle","minPolarAngle","maxPolarAngle","rotateSpeed","threeDCoordinates","canvas","vector","coordinates","from","to","TWEEN.Tween","TWEEN.Easing","TWEEN.update","Hotspot","hotspotClasses","style","onClick","onMouseEnter","onMouseLeave","labelText","HotspotCameraDependant","hotspotStyles","HotspotCameraDependant$1","ref","globalContext","shipContext","MENU_ID","HotspotStatic","staticMenu","HotspotStaticWithContext","SubcategoryListItemWithSublists","isListOpen","prevProps","isAreaActive","subcategory","checkIfShouldAddScroll","setActiveSubareaId","elementOffsetTop","parentOffsetTop","scrollContainer","sublistClasses","btnClasses","SubcategoryListItemWithSublistsWithContext","SubcategoryListItem","AreaCategoriesList","subcategories","constructSubcategoryListItem","contructDropdownItem","constructSingleItem","MENU_CATEGORY_AREA_ID","AreaCategories","shipsViewerHeight","maxContainerHeight","contentHeight","containerWidth","areaDisplayName","areaSubcategories","areaId","content","classStatic","AreaCategoriesWithContext","HotspotOnCloseupImage","ship","areaName","hotspotLabelText","isHoveringOverOtherHotspots","handleHotspotClick","handleMouseEnterOnHotspot","handleMouseLeaveFromHotspot","HotspotOnCloseupImageWithContext","CloseupArea","hotspotIsActive","engineRoomImgUrl","closeupAreaSubareas","hotspots","area","styles","CloseupAreaWithContext","ApplicationArea","hotspot","ApplicationAreaWithContext","ThreeDShip","hotspotRef","hotspotsRefs","max","shipModelAreas","ThreeDShipWithContext","TwoDShip","TwoDShipWithContext","ChooseShipPanel","buttons","ShipOptionBtn","buttonClasses","ChooseShipPanelWithContext","apiRootUrl","lubricantShipName","ShipsViewerRoot","event","apiUrl","responseData","applicationAreasData","errorsInData","errorsInDataLength","shipsLength","shipWithoutErrors","shipName","shipAssets","shipsAssets","chosenShip","cannotBeShown","modelType","activeShip","shipComponents","loadModels","isContainerFullHeight","isDataLoaded","shipsComponents","isLubricantShip","btnClassNames","Fragment","sectionStyles","shouldInstructionsBeRender","containerClass","ShipsViewerRootWithContext","Autocomplete","items","getItemValue","onSelect","onChange","inputProps","setIsOpen","handleInputChange","handleInputBlur","handleOnSelect","SearchAutocompleteRoot","__publicField","currentCategory","resultArray","apiInterface","accumulator","uniqueId","Search","lazy","__vitePreload","ProductsListingRoot","OrderingInfoWithVariantsRoot","SDSRoot","Teaser","OurProducts","AuthoringInfo","Map","ContactExpert","PostFeed","Carousel","Tabs","AreaContactsRoot","InteractiveList","CareersPage","AuthorisedDistributors","productsListingRootId","shipsViewerRootId","reactAutocompleteId","reactAutocompleteGlobalId","orderingInfoWithVariantsRootId","sdsRootId","teaserClassName","ourProductsRootId","mapRootClassName","searchClassName","contactExpertId","postFeedId","carouselClassName","tabsClassName","areaContactsClassName","interactiveClassName","careersPageId","authorisedDistributorsId","headerRoot","catalogueHeaderRoot","footerContainer","footerElement","containerElement","frontPageId","QueryClientProvider","queryClient","categoryId","rootUrl","dataContainer","shipsAssetsHtmlCollection","shipsAssetsRaw","productId","tableType","teaserUrl","teaserText","imageUrl","imageAlt","imageTitle","authorName","dateMicro","date","videoUrl","videoEmbed","formUrl","guid","mapCoordinates","mapSize","searchPlaceholder","searchType","buttonType","useEmptySearch","showFilters","parentCategoryId","itemsContainer","bgImage","areas","el","listData"],"sources":["../../../Static/src/react/utils.js","../../../Static/src/react/redesign/components/Header/HeaderSearchInput.tsx","../../../Static/src/react/redesign/components/Header/HeaderTopMenu.tsx","../../../Static/src/react/redesign/components/Header/MegaMenuEditorialBlock.tsx","../../../Static/src/react/redesign/components/Header/MegaMenuItem.tsx","../../../Static/src/react/redesign/components/Header/Header.tsx","../../../Static/prod/images/logo-type.svg?react","../../../Static/prod/images/menu.svg?react","../../../Static/prod/images/cross.svg?react","../../../Static/prod/images/_arrow.svg?react","../../../Static/src/react/redesign/components/Header/MegaMenuMobile.tsx","../../../Static/src/react/redesign/components/Header/useMegaMenuMobileState.js","../../../Static/src/react/redesign/components/Header/HeaderMobile.tsx","../../../Static/src/react/redesign/components/Header/HeaderWrapper.tsx","../../../Static/src/react/hooks/renderLazyComponent.jsx","../../../Static/src/api/footerApi.ts","../../../Static/src/react/redesign/components/Footer/useFooterData.ts","../../../Static/prod/images/redesign/logo-type.svg?react","../../../Static/prod/images/redesign/mail.svg?react","../../../Static/src/api/newsletterApi.ts","../../../Static/src/react/redesign/utils/validateEmail.ts","../../../Static/src/react/redesign/components/Footer/Footer.tsx","../../../Static/src/react/redesign/components/Header/CatalogueMegaMenuSubItem.tsx","../../../Static/src/react/redesign/components/Header/CatalogueMegaMenuItem.tsx","../../../Static/src/react/redesign/components/Header/ProductCatalogueHeader.tsx","../../../Static/src/react/redesign/components/Header/useCatalogueHeaderModel.ts","../../../Static/prod/images/_arrow_left_flat.svg?react","../../../Static/src/react/redesign/components/Header/ProductCatalogueMegaMenuMobile.tsx","../../../Static/src/react/redesign/components/Header/ProductCatalogueHeaderMobile.tsx","../../../Static/src/react/redesign/components/Header/ProductCatalogueHeaderWrapper.tsx","../../../Static/src/react/components/ships-viewer/settings.js","../../../Static/src/react/components/ships-viewer/context/GlobalContext.jsx","../../../Static/src/react/components/ships-viewer/LoadViewer.jsx","../../../Static/src/react/components/ships-viewer/Instructions.jsx","../../../Static/src/react/components/ships-viewer/context/ShipContext.jsx","../../../Static/src/react/components/ships-viewer/three-js/scene-subjects/addLights.js","../../../Static/src/react/components/ships-viewer/three-js/scene-subjects/addShadowPlane.js","../../../Static/src/react/components/ships-viewer/three-js/scene-subjects/addShipModel.js","../../../Static/src/react/components/ships-viewer/three-js/SceneManager.js","../../../Static/src/react/components/ships-viewer/Hotspot.jsx","../../../Static/src/react/components/ships-viewer/HotspotCameraDependant.jsx","../../../Static/src/react/components/ships-viewer/HotspotStatic.jsx","../../../Static/src/react/components/ships-viewer/SubcategoryListItemWithSublists.jsx","../../../Static/src/react/components/ships-viewer/SubcategoryListItem.jsx","../../../Static/src/react/components/ships-viewer/AreaCategoriesList.jsx","../../../Static/src/react/components/ships-viewer/AreaCategories.jsx","../../../Static/src/react/components/ships-viewer/HotspotOnCloseupImage.jsx","../../../Static/src/react/components/ships-viewer/CloseupArea.jsx","../../../Static/src/react/components/ships-viewer/ApplicationArea.jsx","../../../Static/src/react/components/ships-viewer/ThreeDShip.jsx","../../../Static/src/react/components/ships-viewer/TwoDShip.jsx","../../../Static/src/react/components/ships-viewer/ChooseShipPanel.jsx","../../../Static/src/react/components/ships-viewer/ShipsViewerRoot.jsx","../../../Static/src/react/components/autocomplete/SearchAutocompleteRoot.jsx","../../../Static/src/react/index.jsx"],"sourcesContent":["// polyfill to make scrollToElement function work also in IE11, Edge and Safari\r\nimport smoothScroll from 'smoothscroll-polyfill';\r\nsmoothScroll.polyfill();\r\n\r\nexport function checkIfDesktop() {\r\n return window.innerWidth >= 1000;\r\n}\r\n\r\nexport function checkIfTablet() {\r\n return window.innerWidth > 700;\r\n}\r\n\r\nexport function getRadians(degrees) {\r\n return degrees * Math.PI / 180;\r\n}\r\n\r\nexport function capitalizeFirstLetter(string) {\r\n return string.charAt(0).toUpperCase() + string.slice(1);\r\n}\r\n\r\nexport function camelize(object) {\r\n let newObject, origKey, newKey, value;\r\n if (object instanceof Array) {\r\n return object.map(function(value) {\r\n if (typeof value === \"object\") {\r\n value = camelize(value)\r\n }\r\n return value;\r\n })\r\n } else {\r\n newObject = {};\r\n for (origKey in object) {\r\n if (object.hasOwnProperty(origKey)) {\r\n newKey = (origKey.charAt(0).toLowerCase() + origKey.slice(1) || origKey).toString();\r\n value = object[origKey];\r\n if (value instanceof Array || (value !== null && value.constructor === Object)) {\r\n value = camelize(value)\r\n }\r\n newObject[newKey] = value\r\n }\r\n }\r\n }\r\n return newObject\r\n}\r\n\r\nexport function scrollToElement(element) {\r\n const elementYOffsetFromTheViewport = element.getBoundingClientRect().top;\r\n const windowYOffset = window.pageYOffset;\r\n const amountOfSpaceBeforeTheElement = 20; // in pixels\r\n const top = elementYOffsetFromTheViewport + windowYOffset - amountOfSpaceBeforeTheElement;\r\n\r\n window.scroll({top: top, behavior: 'smooth'});\r\n}\r\n\r\nexport function triggerMouseEvent(node, eventType) {\r\n var clickEvent = document.createEvent('MouseEvents');\r\n clickEvent.initEvent(eventType, true, true);\r\n node.dispatchEvent(clickEvent);\r\n}\r\n\r\n/***** Cookies *****/\r\nexport function setCookie(name, val, days, path, domain, secure) {\r\n if (navigator.cookieEnabled) { // check if cookies are on\r\n const cookieName = encodeURIComponent(name);\r\n const cookieVal = encodeURIComponent(val);\r\n let cookieText = cookieName + '=' + cookieVal;\r\n\r\n if (typeof days === 'number') {\r\n const data = new Date();\r\n data.setTime(data.getTime() + (days * 24*60*60*1000));\r\n cookieText += '; expires=' + data.toGMTString();\r\n }\r\n\r\n if (path) {\r\n cookieText += '; path=' + path;\r\n }\r\n if (domain) {\r\n cookieText += '; domain=' + domain;\r\n }\r\n if (secure) {\r\n cookieText += '; secure';\r\n }\r\n\r\n document.cookie = cookieText;\r\n }\r\n}\r\n\r\nexport function getCookie(name) {\r\n if (document.cookie !== '') {\r\n const cookies = document.cookie.split(/; */);\r\n\r\n for (let i=0; i {\r\n const scriptEl = document.getElementById('grecaptcha');\r\n if (scriptEl) return resolve(true);\r\n \r\n const script = document.createElement('script');\r\n script.src =\r\n `https://www.google.com/recaptcha/api.js?render=6LdF2H0oAAAAAO0YXBHwTHkaU1FjTK5Y55AvchBW`;\r\n script.setAttribute('id', 'grecaptcha');\r\n document.body.appendChild(script);\r\n \r\n script.addEventListener('load', function () {\r\n resolve(true);\r\n });\r\n });\r\n};\r\n \r\nexport function getRecaptchaToken() {\r\n return new Promise((resolve) => {\r\n addRecaptchaScript().then(() => {\r\n resolve(\r\n new Promise((resolve) => {\r\n grecaptcha.ready(function () {\r\n grecaptcha\r\n .execute(`6LdF2H0oAAAAAO0YXBHwTHkaU1FjTK5Y55AvchBW`, {\r\n action: 'submit',\r\n })\r\n .then(function (token) {\r\n resolve(token);\r\n });\r\n });\r\n })\r\n );\r\n });\r\n });\r\n}\r\n\r\nexport function checkRecaptcha() {\r\n const endpointUrl = '/api/recaptcha/isValid/';\r\n return new Promise((resolve) => {\r\n getRecaptchaToken().then((token) => {\r\n fetch(endpointUrl, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n token: token,\r\n }),\r\n })\r\n .then((res) => res.json())\r\n .then((res) => resolve(res));\r\n });\r\n });\r\n}\r\n\r\nexport function debounce(callback, delay) {\r\n let timer;\r\n return (...args) => {\r\n clearTimeout(timer)\r\n timer = setTimeout(() => callback(...args), delay)\r\n }\r\n}","import React, { useState, useRef } from 'react';\r\nimport classNames from 'classnames';\r\n\r\nconst HeaderSearchInput = ({ searchAccessibilityText, searchPlaceholderText }) => {\r\n const [expanded, setExpanded] = useState(false);\r\n const [searchTerm, setSearchTerm] = useState(\"\");\r\n const searchInputRef = useRef(null);\r\n const buttonRef = useRef(null);\r\n\r\n const handleSearchSubmit = (evt) => {\r\n evt.preventDefault();\r\n if (expanded) {\r\n const url = new URL(`${window.location.origin}/searchpage`);\r\n url.searchParams.append(\"term\", searchTerm);\r\n window.location.href = url.toString();\r\n } else {\r\n setExpanded(true);\r\n }\r\n searchInputRef.current.focus();\r\n }\r\n\r\n const handleSearchBlur = (evt) => {\r\n if (evt.relatedTarget !== buttonRef.current) {\r\n setExpanded(false);\r\n }\r\n }\r\n\r\n const handleSearchInputChange = (evt) => {\r\n setSearchTerm(evt.target.value);\r\n }\r\n\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 HeaderSearchInput;","import React from 'react';\r\nimport './Header.scss';\r\nimport HeaderSearchInput from './HeaderSearchInput.jsx';\r\n\r\nconst HeaderTopMenu = ({ topMenuModel, searchPlaceholderText, searchAccessibilityText }) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default HeaderTopMenu;","import React from \"react\";\r\nimport dompurify from \"dompurify\";\r\nimport \"./Header.scss\";\r\n\r\nconst MegaMenuEditorialBlock = ({ editorialBlock }) => {\r\n return (\r\n
\r\n
\r\n {editorialBlock.title}\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default MegaMenuEditorialBlock;","import React from 'react';\r\nimport './Header.scss';\r\nimport MegaMenuEditorialBlock from './MegaMenuEditorialBlock';\r\n\r\nconst MegaMenuItem = ({ item }) => {\r\n return (\r\n
\r\n

\r\n {item?.linkTitle && (\r\n \r\n {item.linkTitle}\r\n \r\n )}\r\n

\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default MegaMenuItem;","import React, { useState } from 'react';\r\nimport './Header.scss';\r\nimport HeaderTopMenu from './HeaderTopMenu.jsx';\r\nimport MegaMenuItem from './MegaMenuItem.jsx';\r\nimport classNames from 'classnames';\r\n\r\nconst Header = ({ headerModel, frontPageUrl, frontPageTitle }) => {\r\n const [selected, setSelected] = useState({ id: null, opened: false });\r\n\r\n const handleClick = (evt, id) => {\r\n evt.preventDefault();\r\n if (selected?.id == id && selected?.opened) {\r\n setSelected({ id: id, opened: false });\r\n return;\r\n }\r\n setSelected({ id: id, opened: true });\r\n }\r\n \r\n // const headerNavBotLinkClass = (id) => classNames('header-nav-bot-link', id === selected?.id && selected?.opened ? 'active' : '');\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n {frontPageTitle}\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n item.id === selected?.id)}/>\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default Header;","import * as React from \"react\";\nconst SvgLogoType = (props) => /* @__PURE__ */ React.createElement(\"svg\", { id: \"Layer_1\", \"data-name\": \"Layer 1\", xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 400 103.56\", ...props }, /* @__PURE__ */ React.createElement(\"defs\", null, /* @__PURE__ */ React.createElement(\"style\", null, \".cls-1{fill:#29588c}\")), /* @__PURE__ */ React.createElement(\"path\", { className: \"cls-1\", d: \"M85.29 48.86c0 1.89 0 4 .16 6.32a50.34 50.34 0 0 0-2.26-6l-4.91-10.79h-7.53l-.65 11.24a45.12 45.12 0 0 0 .13 5.8 47.88 47.88 0 0 0-2-5.92L63.5 38.39h-7.92l11.86 27.17h8.49l.32-10.47a41.17 41.17 0 0 0-.3-6.64c.79 2.58 1.58 5 2.41 6.92l4.26 10.18h9.1L93 38.39h-7.52z\" }), /* @__PURE__ */ React.createElement(\"path\", { className: \"cls-1\", d: \"M123.36 56c-11.88-8.7-16.3-24.7-10.83-29.42-28.76-17.47-40.92-3.39-62.22-6.33-9.69-1.34-12-8.9-35.53-7.16l-.09-.09c.94-.82 1.65-3.09 1.49-4.94A9 9 0 0 0 7.41 0 7.34 7.34 0 0 0 0 8.09a8.39 8.39 0 0 0 5.27 7.31c.44.2 20.17 81.69 22.35 88.16h5.82L8.19 11.81l-.13-.11a4 4 0 0 1-3.6-3.61 3.29 3.29 0 0 1 3.33-3.64 4 4 0 0 1 3.94 3.64A3.3 3.3 0 0 1 10 11.33v.18l28.6 92.05H45c-3.58-10.73-18.07-53-25.61-75.78l.08-.1c6.22 9.06 10.56 17 15.89 30.43 2.67 6.83 6.31 20.66 9.44 29.71l1.34-1.4a16.4 16.4 0 0 1 13.2-3.93c4.65.26 4.19 3.62 12.78 5.32 10.65 2.1 17-4.39 28.71-5.69 19.17-2.12 36.34 5.69 36.73 5.61.06-.13-1.15-22.22-14.2-31.73zM98.85 77.19C85.92 79 82.78 83.53 74.16 82.9c-6.38-.46-7.49-4.88-12.77-6a22.08 22.08 0 0 0-14.11 1.76c-9.66-41.83-28.56-60.3-28.56-60.3 16-3 19.15 5.84 34.52 6.8 20.08 1.22 30.57-8.86 52.41 2.84-3.78 8 4.79 23.77 11.65 28.51C130 65.3 131.81 80.7 131.77 80.8c-.29.06-15.28-6.04-32.92-3.61zM179.07 62.39l-5.9-23.8h-7.64l-5.66 23.8-5.57-23.99h-8.12l9.96 34.54h6.82l6.24-25.55 6.44 25.55h7.01l9.39-34.54h-7.74l-5.23 23.99zM194.7 47.68h6.77v25.25h-6.77zM194.6 38.39h6.97v6.1h-6.97zM206.26 38.39h6.77v34.54h-6.77zM232.19 46.91a9.39 9.39 0 0 0-4.16 1 9.53 9.53 0 0 0-3.48 3V38.39h-6.77v34.54h6.77V57.75a4.61 4.61 0 0 1 .46-2.06 5.92 5.92 0 0 1 1.14-1.62 6.26 6.26 0 0 1 1.76-1.07 5.92 5.92 0 0 1 2.25-.39 3.77 3.77 0 0 1 2.71 1q1 1 1 3.63v15.69h6.77V56.25q0-4.84-2.08-7.09t-6.37-2.25zM256.81 46.91a14.14 14.14 0 0 0-5.13.9 10.88 10.88 0 0 0-4 2.64 12 12 0 0 0-2.59 4.23 16.35 16.35 0 0 0-.92 5.68q0 6.39 3.17 9.87t9.46 3.48q5.22 0 8-2.2a9.92 9.92 0 0 0 3.38-6.51h-6.58q-.73 3.39-4.74 3.39a5.38 5.38 0 0 1-4.35-1.72A7.54 7.54 0 0 1 251 62h17.51v-2.76q0-5.66-2.93-9t-8.77-3.33zm-5.76 10.59a6.59 6.59 0 0 1 .44-2.15 5.4 5.4 0 0 1 1.09-1.74 5 5 0 0 1 1.72-1.19 6 6 0 0 1 2.37-.44 5.06 5.06 0 0 1 4 1.45 5.94 5.94 0 0 1 1.28 4.06zM272.39 38.39h6.77v34.54h-6.77zM312.63 46.91a9 9 0 0 0-4.26 1 11.32 11.32 0 0 0-3.68 3.34 6 6 0 0 0-2.46-3.25 8.95 8.95 0 0 0-8.47-.1 9.21 9.21 0 0 0-3.29 3.14v-3.36h-6.57v25.25h6.77V57.75a5.09 5.09 0 0 1 .41-2.06 5.2 5.2 0 0 1 1.09-1.62 5.1 5.1 0 0 1 1.67-1.16 5 5 0 0 1 1.86-.34 3.8 3.8 0 0 1 1.21.19 2.19 2.19 0 0 1 1 .68 3.53 3.53 0 0 1 .65 1.33 8.24 8.24 0 0 1 .24 2.2v16h6.77V57.45a4.25 4.25 0 0 1 .41-1.84 5.49 5.49 0 0 1 1.09-1.55 5.1 5.1 0 0 1 1.67-1.16 5 5 0 0 1 1.86-.34 3.82 3.82 0 0 1 1.21.19 2.2 2.2 0 0 1 1 .68 3.53 3.53 0 0 1 .65 1.33 8.23 8.23 0 0 1 .24 2.2v16h6.77V56.05q0-4.84-2-7t-5.84-2.14zM344.64 60.33a8.42 8.42 0 0 0-2.78-1.67 22.33 22.33 0 0 0-4.4-1.11l-3.2-.55a7.61 7.61 0 0 1-2.93-.94 2.05 2.05 0 0 1-.75-1.77 1.86 1.86 0 0 1 .22-.82 2.07 2.07 0 0 1 .73-.77 4.46 4.46 0 0 1 1.4-.56 9.71 9.71 0 0 1 2.25-.22 5.88 5.88 0 0 1 3.51.82 4.42 4.42 0 0 1 1.52 2.56l6-.77a12.27 12.27 0 0 0-.94-3 6.64 6.64 0 0 0-1.94-2.42 9.77 9.77 0 0 0-3.31-1.62 17.89 17.89 0 0 0-5-.6 16.54 16.54 0 0 0-4.43.56 11.19 11.19 0 0 0-3.44 1.55 7.3 7.3 0 0 0-2.25 2.47 6.72 6.72 0 0 0-.8 3.29 6.38 6.38 0 0 0 2.25 5.35 14.88 14.88 0 0 0 6.84 2.49l3.48.58a4.23 4.23 0 0 1 2.49 1 2.45 2.45 0 0 1 .65 1.69 2.09 2.09 0 0 1-1 2 7.27 7.27 0 0 1-3.46.6 8.16 8.16 0 0 1-3.48-.68A3.49 3.49 0 0 1 330 64.9h-6.48a9 9 0 0 0 1.18 4.26 8.22 8.22 0 0 0 2.66 2.71 10.88 10.88 0 0 0 3.68 1.43 22.13 22.13 0 0 0 4.33.41q5.66 0 8.37-2.15a7 7 0 0 0 2.71-5.73 10.86 10.86 0 0 0-.41-3.14 5.35 5.35 0 0 0-1.4-2.36zM361.59 46.91a14.14 14.14 0 0 0-5.13.9 10.88 10.88 0 0 0-4 2.64 12 12 0 0 0-2.59 4.23 16.35 16.35 0 0 0-.92 5.68q0 6.39 3.17 9.87t9.46 3.48q5.22 0 8-2.2A9.92 9.92 0 0 0 373 65h-6.58q-.73 3.39-4.74 3.39a5.38 5.38 0 0 1-4.35-1.72 7.54 7.54 0 0 1-1.59-4.67h17.51v-2.76q0-5.66-2.93-9t-8.73-3.33zm-5.76 10.59a6.59 6.59 0 0 1 .44-2.15 5.4 5.4 0 0 1 1.09-1.74 5 5 0 0 1 1.72-1.19 6 6 0 0 1 2.37-.44 5.06 5.06 0 0 1 4 1.45 5.94 5.94 0 0 1 1.28 4.06zM397.92 49.16q-2.08-2.25-6.39-2.25a9.55 9.55 0 0 0-4.28 1 9.25 9.25 0 0 0-3.56 3.24v-3.47h-6.58v25.25h6.77V57.75a4.62 4.62 0 0 1 .46-2.06 5.92 5.92 0 0 1 1.14-1.62 6.25 6.25 0 0 1 1.77-1.07 5.92 5.92 0 0 1 2.25-.39 3.77 3.77 0 0 1 2.71 1q1 1 1 3.63v15.69H400V56.25q0-4.84-2.08-7.09z\" }));\nexport default SvgLogoType;\n","import * as React from \"react\";\nconst SvgMenu = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 22, height: 15, viewBox: \"53 3 22 12\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"rect\", { x: 53, y: 3, width: 22, height: 2, fill: \"#345888\" }), /* @__PURE__ */ React.createElement(\"rect\", { x: 53, y: 8, width: 22, height: 2, fill: \"#345888\" }), /* @__PURE__ */ React.createElement(\"rect\", { x: 53, y: 13, width: 22, height: 2, fill: \"#345888\" }));\nexport default SvgMenu;\n","import * as React from \"react\";\nconst SvgCross = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", fill: \"none\", viewBox: \"7.51 7.51 16.97 16.97\", ...props }, /* @__PURE__ */ React.createElement(\"rect\", { x: 8.92893, y: 7.51477, width: 22, height: 2, transform: \"rotate(45 8.92893 7.51477)\", fill: \"#345888\" }), /* @__PURE__ */ React.createElement(\"rect\", { x: 24.4853, y: 8.92902, width: 22, height: 2, transform: \"rotate(135 24.4853 8.92902)\", fill: \"#345888\" }));\nexport default SvgCross;\n","import * as React from \"react\";\nconst SvgArrow = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"-394 206 171 150\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { fill: \"none\", stroke: \"#14387f\", strokeWidth: 20, strokeMiterlimit: 10 }, /* @__PURE__ */ React.createElement(\"path\", { strokeLinejoin: \"round\", d: \"M-394 281h141\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M-304.5 221.9l59.1 59.1-59.1 59.1\" })));\nexport default SvgArrow;\n","import React from 'react';\r\nimport './Header.scss';\r\nimport ArrowSvg from '../../../../../prod/images/_arrow.svg?react';\r\nimport dompurify from 'dompurify';\r\nimport classNames from 'classnames';\r\n\r\nconst MegaMenuMobile = ({ megaMenuModel, active, selectedMain, selectedSub, setSelectedMain, setSelectedSub }) => {\r\n // temp fix - it would be better to use some 'local config in other places' \r\n dompurify.removeAllHooks();\r\n \r\n const handleSelectMainClick = (evt, mainNav) => {\r\n evt.preventDefault();\r\n setSelectedMain(mainNav);\r\n }\r\n\r\n const handleSelectSubClick = (evt, subNav) => {\r\n evt.preventDefault();\r\n setSelectedSub(subNav);\r\n }\r\n\r\n return (\r\n
\r\n { selectedMain === null && (\r\n \r\n )}\r\n { selectedMain !== null && selectedSub === null && (\r\n \r\n )}\r\n { selectedSub !== null && (\r\n
\r\n
\r\n

{selectedSub.title}

\r\n
handleSelectSubClick(evt, null)}>\r\n Back\r\n \r\n
\r\n
\r\n
\r\n
\r\n )}\r\n
\r\n )\r\n}\r\n\r\nexport default MegaMenuMobile;","import { useState } from \"react\";\r\n\r\nconst useMegaMenuMobileState = ( ) => {\r\n const [menuExpanded, setMenuExpanded] = useState(false);\r\n const [searchExpanded, setSearchExpanded] = useState(false);\r\n \r\n const [selectedMain, setSelectedMain] = useState(null);\r\n const [selectedSub, setSelectedSub] = useState(null);\r\n\r\n return { menuExpanded,\r\n searchExpanded,\r\n selectedMain,\r\n selectedSub,\r\n setMenuExpanded,\r\n setSearchExpanded,\r\n setSelectedMain,\r\n setSelectedSub,\r\n }\r\n}\r\n\r\nexport default useMegaMenuMobileState;","import React, { useState } from 'react';\r\nimport LogoSvg from '../../../../../prod/images/logo-type.svg?react';\r\nimport MenuSvg from '../../../../../prod/images/menu.svg?react';\r\nimport SearchRedesignSvg from '../../../../../prod/images/redesign/search.svg?react';\r\nimport CrossSvg from '../../../../../prod/images/cross.svg?react';\r\nimport MegaMenuMobile from './MegaMenuMobile';\r\nimport useMegaMenuMobileState from './useMegaMenuMobileState';\r\nimport classNames from 'classnames';\r\n\r\nconst HeaderMobile = ({ headerModel, frontPageUrl, frontPageTitle }) => {\r\n const [searchTerm, setSearchTerm] = useState(\"\");\r\n\r\n const { menuExpanded, searchExpanded, selectedMain, selectedSub, setMenuExpanded, setSearchExpanded, setSelectedMain, setSelectedSub, } = useMegaMenuMobileState();\r\n\r\n const handleMenuClick = (evt) => {\r\n evt.preventDefault();\r\n \r\n setSearchExpanded(false);\r\n // on menu close\r\n if (menuExpanded === true) {\r\n setSelectedSub(null);\r\n setSelectedMain(null);\r\n }\r\n setMenuExpanded(val => !val);\r\n }\r\n\r\n const handleSearchIconClick = (evt) => {\r\n evt.preventDefault();\r\n\r\n setSearchExpanded(val => !val);\r\n }\r\n\r\n const handleSearchSubmit = (evt) => {\r\n evt.preventDefault();\r\n \r\n if (searchExpanded) {\r\n const url = new URL(`${window.location.origin}/searchpage`);\r\n url.searchParams.append(\"term\", searchTerm);\r\n window.location.href = url.toString();\r\n }\r\n }\r\n\r\n const handleSearchInputChange = (evt) => {\r\n setSearchTerm(evt.target.value);\r\n }\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {frontPageTitle}\r\n \r\n \r\n
\r\n \r\n { !menuExpanded && (\r\n \r\n )}\r\n
\r\n { searchExpanded && (\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\nexport default HeaderMobile;","import React from 'react';\r\nimport './Header.scss';\r\nimport Header from './Header';\r\nimport { useHeaderModel } from './useHeaderModel';\r\nimport HeaderMobile from './HeaderMobile';\r\n\r\nexport const HeaderWrapper = (props) => {\r\n const { isLoading, data: headerModel } = useHeaderModel(props.currentPageId);\r\n if (isLoading) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n )\r\n}\r\n\r\nexport default HeaderWrapper;","import React from \"react\";\r\nimport { Suspense } from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\n\r\nexport const renderLazyComponent = (children, elementNode) => {\r\n return ReactDOM.render(Loading...
}>{children}, elementNode);\r\n };","import axios from \"axios\";\r\nimport { FooterData } from \"./footerApi.types\";\r\n\r\nconst baseUrl = \"/api/footer\";\r\nconst getFooterUrl = `${baseUrl}/getFooter`;\r\n\r\nexport const getFooterModel = async (\r\n currentPageId: number\r\n): Promise => {\r\n const response = await axios.get(getFooterUrl, {\r\n params: { currentPageId },\r\n });\r\n\r\n return response.data;\r\n};\r\n","import { useEffect, useState } from \"react\";\r\nimport { getFooterModel } from \"../../../../api/footerApi\";\r\nimport { FooterData } from \"../../../../api/footerApi.types\";\r\n\r\nexport const useFooterData = (currentPageId: number) => {\r\n const [footerData, setFooterData] = useState(null);\r\n const [loading, setLoading] = useState(false);\r\n\r\n useEffect(() => {\r\n const fetchContent = async () => {\r\n setLoading(true);\r\n\r\n const result = await getFooterModel(currentPageId);\r\n\r\n setFooterData(result);\r\n setLoading(false);\r\n };\r\n\r\n fetchContent();\r\n }, [currentPageId]);\r\n\r\n return { footerData, loading };\r\n};\r\n","import * as React from \"react\";\nconst SvgLogoType = (props) => /* @__PURE__ */ React.createElement(\"svg\", { id: \"Layer_1\", \"data-name\": \"Layer 1\", xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 400 103.56\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fill: \"currentColor\", d: \"M85.29 48.86c0 1.89 0 4 .16 6.32a50.34 50.34 0 0 0-2.26-6l-4.91-10.79h-7.53l-.65 11.24a45.12 45.12 0 0 0 .13 5.8 47.88 47.88 0 0 0-2-5.92L63.5 38.39h-7.92l11.86 27.17h8.49l.32-10.47a41.17 41.17 0 0 0-.3-6.64c.79 2.58 1.58 5 2.41 6.92l4.26 10.18h9.1L93 38.39h-7.52z\" }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"currentColor\", d: \"M123.36 56c-11.88-8.7-16.3-24.7-10.83-29.42-28.76-17.47-40.92-3.39-62.22-6.33-9.69-1.34-12-8.9-35.53-7.16l-.09-.09c.94-.82 1.65-3.09 1.49-4.94A9 9 0 0 0 7.41 0 7.34 7.34 0 0 0 0 8.09a8.39 8.39 0 0 0 5.27 7.31c.44.2 20.17 81.69 22.35 88.16h5.82L8.19 11.81l-.13-.11a4 4 0 0 1-3.6-3.61 3.29 3.29 0 0 1 3.33-3.64 4 4 0 0 1 3.94 3.64A3.3 3.3 0 0 1 10 11.33v.18l28.6 92.05H45c-3.58-10.73-18.07-53-25.61-75.78l.08-.1c6.22 9.06 10.56 17 15.89 30.43 2.67 6.83 6.31 20.66 9.44 29.71l1.34-1.4a16.4 16.4 0 0 1 13.2-3.93c4.65.26 4.19 3.62 12.78 5.32 10.65 2.1 17-4.39 28.71-5.69 19.17-2.12 36.34 5.69 36.73 5.61.06-.13-1.15-22.22-14.2-31.73zM98.85 77.19C85.92 79 82.78 83.53 74.16 82.9c-6.38-.46-7.49-4.88-12.77-6a22.08 22.08 0 0 0-14.11 1.76c-9.66-41.83-28.56-60.3-28.56-60.3 16-3 19.15 5.84 34.52 6.8 20.08 1.22 30.57-8.86 52.41 2.84-3.78 8 4.79 23.77 11.65 28.51C130 65.3 131.81 80.7 131.77 80.8c-.29.06-15.28-6.04-32.92-3.61zM179.07 62.39l-5.9-23.8h-7.64l-5.66 23.8-5.57-23.99h-8.12l9.96 34.54h6.82l6.24-25.55 6.44 25.55h7.01l9.39-34.54h-7.74l-5.23 23.99zM194.7 47.68h6.77v25.25h-6.77zM194.6 38.39h6.97v6.1h-6.97zM206.26 38.39h6.77v34.54h-6.77zM232.19 46.91a9.39 9.39 0 0 0-4.16 1 9.53 9.53 0 0 0-3.48 3V38.39h-6.77v34.54h6.77V57.75a4.61 4.61 0 0 1 .46-2.06 5.92 5.92 0 0 1 1.14-1.62 6.26 6.26 0 0 1 1.76-1.07 5.92 5.92 0 0 1 2.25-.39 3.77 3.77 0 0 1 2.71 1q1 1 1 3.63v15.69h6.77V56.25q0-4.84-2.08-7.09t-6.37-2.25zM256.81 46.91a14.14 14.14 0 0 0-5.13.9 10.88 10.88 0 0 0-4 2.64 12 12 0 0 0-2.59 4.23 16.35 16.35 0 0 0-.92 5.68q0 6.39 3.17 9.87t9.46 3.48q5.22 0 8-2.2a9.92 9.92 0 0 0 3.38-6.51h-6.58q-.73 3.39-4.74 3.39a5.38 5.38 0 0 1-4.35-1.72A7.54 7.54 0 0 1 251 62h17.51v-2.76q0-5.66-2.93-9t-8.77-3.33zm-5.76 10.59a6.59 6.59 0 0 1 .44-2.15 5.4 5.4 0 0 1 1.09-1.74 5 5 0 0 1 1.72-1.19 6 6 0 0 1 2.37-.44 5.06 5.06 0 0 1 4 1.45 5.94 5.94 0 0 1 1.28 4.06zM272.39 38.39h6.77v34.54h-6.77zM312.63 46.91a9 9 0 0 0-4.26 1 11.32 11.32 0 0 0-3.68 3.34 6 6 0 0 0-2.46-3.25 8.95 8.95 0 0 0-8.47-.1 9.21 9.21 0 0 0-3.29 3.14v-3.36h-6.57v25.25h6.77V57.75a5.09 5.09 0 0 1 .41-2.06 5.2 5.2 0 0 1 1.09-1.62 5.1 5.1 0 0 1 1.67-1.16 5 5 0 0 1 1.86-.34 3.8 3.8 0 0 1 1.21.19 2.19 2.19 0 0 1 1 .68 3.53 3.53 0 0 1 .65 1.33 8.24 8.24 0 0 1 .24 2.2v16h6.77V57.45a4.25 4.25 0 0 1 .41-1.84 5.49 5.49 0 0 1 1.09-1.55 5.1 5.1 0 0 1 1.67-1.16 5 5 0 0 1 1.86-.34 3.82 3.82 0 0 1 1.21.19 2.2 2.2 0 0 1 1 .68 3.53 3.53 0 0 1 .65 1.33 8.23 8.23 0 0 1 .24 2.2v16h6.77V56.05q0-4.84-2-7t-5.84-2.14zM344.64 60.33a8.42 8.42 0 0 0-2.78-1.67 22.33 22.33 0 0 0-4.4-1.11l-3.2-.55a7.61 7.61 0 0 1-2.93-.94 2.05 2.05 0 0 1-.75-1.77 1.86 1.86 0 0 1 .22-.82 2.07 2.07 0 0 1 .73-.77 4.46 4.46 0 0 1 1.4-.56 9.71 9.71 0 0 1 2.25-.22 5.88 5.88 0 0 1 3.51.82 4.42 4.42 0 0 1 1.52 2.56l6-.77a12.27 12.27 0 0 0-.94-3 6.64 6.64 0 0 0-1.94-2.42 9.77 9.77 0 0 0-3.31-1.62 17.89 17.89 0 0 0-5-.6 16.54 16.54 0 0 0-4.43.56 11.19 11.19 0 0 0-3.44 1.55 7.3 7.3 0 0 0-2.25 2.47 6.72 6.72 0 0 0-.8 3.29 6.38 6.38 0 0 0 2.25 5.35 14.88 14.88 0 0 0 6.84 2.49l3.48.58a4.23 4.23 0 0 1 2.49 1 2.45 2.45 0 0 1 .65 1.69 2.09 2.09 0 0 1-1 2 7.27 7.27 0 0 1-3.46.6 8.16 8.16 0 0 1-3.48-.68A3.49 3.49 0 0 1 330 64.9h-6.48a9 9 0 0 0 1.18 4.26 8.22 8.22 0 0 0 2.66 2.71 10.88 10.88 0 0 0 3.68 1.43 22.13 22.13 0 0 0 4.33.41q5.66 0 8.37-2.15a7 7 0 0 0 2.71-5.73 10.86 10.86 0 0 0-.41-3.14 5.35 5.35 0 0 0-1.4-2.36zM361.59 46.91a14.14 14.14 0 0 0-5.13.9 10.88 10.88 0 0 0-4 2.64 12 12 0 0 0-2.59 4.23 16.35 16.35 0 0 0-.92 5.68q0 6.39 3.17 9.87t9.46 3.48q5.22 0 8-2.2A9.92 9.92 0 0 0 373 65h-6.58q-.73 3.39-4.74 3.39a5.38 5.38 0 0 1-4.35-1.72 7.54 7.54 0 0 1-1.59-4.67h17.51v-2.76q0-5.66-2.93-9t-8.73-3.33zm-5.76 10.59a6.59 6.59 0 0 1 .44-2.15 5.4 5.4 0 0 1 1.09-1.74 5 5 0 0 1 1.72-1.19 6 6 0 0 1 2.37-.44 5.06 5.06 0 0 1 4 1.45 5.94 5.94 0 0 1 1.28 4.06zM397.92 49.16q-2.08-2.25-6.39-2.25a9.55 9.55 0 0 0-4.28 1 9.25 9.25 0 0 0-3.56 3.24v-3.47h-6.58v25.25h6.77V57.75a4.62 4.62 0 0 1 .46-2.06 5.92 5.92 0 0 1 1.14-1.62 6.25 6.25 0 0 1 1.77-1.07 5.92 5.92 0 0 1 2.25-.39 3.77 3.77 0 0 1 2.71 1q1 1 1 3.63v15.69H400V56.25q0-4.84-2.08-7.09z\" }));\nexport default SvgLogoType;\n","import * as React from \"react\";\nconst SvgMail = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 12, height: 11, viewBox: \"0 0 12 11\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fill: \"currentColor\", d: \"M0.772048 1.79252L6 5.54592L11.228 1.79252C11.1466 1.45823 10.8497 1.20771 10.5 1.20771H1.5C1.15025 1.20771 0.853408 1.45823 0.772048 1.79252ZM11.25 2.71565L6.21505 6.33049C6.08593 6.42319 5.91407 6.42319 5.78495 6.33049L0.75 2.71565V8.90002C0.75 9.32221 1.08836 9.66925 1.5 9.66925H10.5C10.9116 9.66925 11.25 9.32221 11.25 8.90002V2.71565ZM0 1.97694C0 1.12991 0.674143 0.438477 1.5 0.438477H10.5C11.3259 0.438477 12 1.12991 12 1.97694V8.90002C12 9.74705 11.3259 10.4385 10.5 10.4385H1.5C0.674143 10.4385 0 9.74705 0 8.90002V1.97694Z\" }));\nexport default SvgMail;\n","import axios from \"axios\";\r\nimport { SubscribeRequest, SubscribeResponse } from \"./newsletterApi.types\";\r\n\r\nconst baseUrl = \"/api/newsletter\";\r\nconst subscribeUrl = `${baseUrl}/subscribe`;\r\n\r\nexport const postSubscribe = async (\r\n requestData: SubscribeRequest\r\n): Promise => {\r\n const response = await axios.post(\r\n subscribeUrl,\r\n requestData\r\n );\r\n\r\n return response.data;\r\n};\r\n","// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email#validation\r\nconst regex = new RegExp(/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/);\r\n\r\nexport const isValidEmail = (email: string): boolean => {\r\n return regex.test(email);\r\n}","import React, { useState } from \"react\";\r\nimport { useFooterData } from \"./useFooterData\";\r\nimport LogoSvg from \"../../../../../prod/images/redesign/logo-type.svg?react\";\r\nimport MailSvg from \"../../../../../prod/images/redesign/mail.svg?react\";\r\nimport \"./Footer.scss\";\r\nimport dompurify from \"dompurify\";\r\nimport { postSubscribe } from \"../../../../api/newsletterApi\";\r\nimport { SubscribeRequest } from \"../../../../api/newsletterApi.types\";\r\nimport { isValidEmail } from \"../../utils/validateEmail\";\r\n\r\nexport interface FooterProps {\r\n currentPageId: number;\r\n}\r\n\r\nconst Footer: React.FC = (props) => {\r\n const [email, setEmail] = useState(null);\r\n const [subResult, setSubResult] = useState(null);\r\n const [subLoading, setSubLoading] = useState(false);\r\n const [emailError, setEmailError] = useState(null);\r\n\r\n const handleEmailChange = (evt: React.ChangeEvent) => {\r\n setEmail(evt.target.value);\r\n setEmailError(null);\r\n };\r\n\r\n const handleSubmit = async (evt: React.FormEvent) => {\r\n evt.preventDefault();\r\n \r\n if (!isValidEmail(email)) {\r\n setEmailError(\"Please insert a valid email address\");\r\n return;\r\n }\r\n\r\n setSubLoading(true);\r\n const data: SubscribeRequest = {\r\n email: email,\r\n newsletterSubscribeBlockId: footerData?.newsletterSubscribeBlockId,\r\n };\r\n const response = await postSubscribe(data);\r\n\r\n setSubResult(response.message);\r\n setSubLoading(false);\r\n };\r\n\r\n const { footerData, loading } = useFooterData(props.currentPageId);\r\n if (loading) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n Our business\r\n {footerData?.ourBusinessLinks?.map((link) => (\r\n \r\n {link?.title}\r\n \r\n ))}\r\n
\r\n
\r\n About us\r\n {footerData?.aboutUsLinks?.map((link) => (\r\n \r\n {link?.title}\r\n \r\n ))}\r\n
\r\n
\r\n Follow us\r\n {footerData?.footerSocials?.map((link) => (\r\n \r\n {link?.title}\r\n \r\n ))}\r\n
\r\n {!!footerData?.newsletterSubscribeBlockId && !subLoading && (\r\n
\r\n Join our Newsletter\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n Sign up\r\n \r\n \r\n {emailError && {emailError}}\r\n {subResult && {subResult}}\r\n
\r\n )}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n © 2024 Wilhelmsen. All rights reserved.\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Footer;","import React from \"react\";\r\nimport \"./Header.scss\";\r\nimport ArrowSvg from \"../../../../../prod/images/_arrow.svg?react\";\r\nimport { CatalogueHeaderItemsData } from \"../../../../api/headerApi.types\";\r\n\r\ninterface CatalogueMegaMenuSubItemProps {\r\n item: CatalogueHeaderItemsData;\r\n}\r\n\r\nexport const CatalogueMegaMenuSubItem: React.FC<\r\n CatalogueMegaMenuSubItemProps\r\n> = ({ item }) => {\r\n return (\r\n
  • \r\n
    \r\n {item.linkTitle}\r\n
    \r\n \r\n
  • \r\n );\r\n};\r\n","import React from \"react\";\r\nimport ArrowSvg from \"../../../../../prod/images/_arrow.svg?react\";\r\nimport \"./Header.scss\";\r\nimport { CatalogueHeaderItemsData } from \"../../../../api/headerApi.types\";\r\nimport { CatalogueMegaMenuSubItem } from \"./CatalogueMegaMenuSubItem\";\r\n\r\ninterface CatalogueMegaMenuItemProps {\r\n item: CatalogueHeaderItemsData;\r\n}\r\n\r\nexport const CatalogueMegaMenuItem: React.FC = ({\r\n item,\r\n}) => {\r\n return (\r\n
    \r\n

    \r\n {item?.linkTitle && {item.linkTitle}}\r\n

    \r\n {item?.subItems?.length > 0 && (\r\n
      \r\n {item?.subItems?.map((subItem) => (\r\n \r\n ))}\r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n","import React, { useState } from \"react\";\r\nimport \"./Header.scss\";\r\nimport classNames from \"classnames\";\r\nimport { CatalogueMegaMenuItem } from \"./CatalogueMegaMenuItem\";\r\nimport { CatalogueHeaderData } from \"../../../../api/headerApi.types\";\r\n\r\ninterface ProductCatalogueHeaderProps {\r\n headerModel: CatalogueHeaderData;\r\n}\r\n\r\nexport const ProductCatalogueHeader: React.FC = ({\r\n headerModel,\r\n}) => {\r\n const [selected, setSelected] = useState<{\r\n id: number | null;\r\n opened: boolean;\r\n }>({ id: null, opened: false });\r\n\r\n const handleClick = (\r\n evt: React.MouseEvent,\r\n id: number | null\r\n ) => {\r\n evt.preventDefault();\r\n if (selected?.id == id && selected?.opened) {\r\n setSelected({ id: id, opened: false });\r\n return;\r\n }\r\n setSelected({ id: id, opened: true });\r\n };\r\n\r\n const headerNavBotLinkClass = (id: number | null) =>\r\n classNames(\r\n \"header-nav-bot-link\",\r\n id === selected?.id && selected?.opened ? \"active\" : \"\"\r\n );\r\n\r\n return (\r\n
    \r\n
    \r\n {headerModel?.items?.length > 0 && (\r\n \r\n )}\r\n
    \r\n \r\n item.id === selected?.id)}\r\n />\r\n
    \r\n \r\n );\r\n};\r\n","import { useQuery } from \"@tanstack/react-query\";\r\nimport { getProductCatalogueHeaderModel } from \"../../../../api/headerApi\";\r\n\r\nexport const useCatalogueHeaderModel = ( currentPageId: string ) => {\r\n return useQuery({\r\n queryKey: [\"redesign-catalogue-header\"],\r\n queryFn: () => getProductCatalogueHeaderModel(currentPageId),\r\n staleTime: 1000 * 60 * 60,\r\n refetchOnWindowFocus: false,\r\n });\r\n}\r\n","import * as React from \"react\";\nconst SvgArrowLeftFlat = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 171 150\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fill: \"#14387f\", d: \"M70.2 141.2L84.5 127 42.3 85h124.6l-.1-20H42.3l42.2-42L70.2 8.8 4.2 75z\" }));\nexport default SvgArrowLeftFlat;\n","import React from \"react\";\r\nimport \"./Header.scss\";\r\nimport ArrowSvg from \"../../../../../prod/images/_arrow.svg?react\";\r\nimport ArrowLeftSvg from \"../../../../../prod/images/_arrow_left_flat.svg?react\";\r\nimport classNames from \"classnames\";\r\nimport {\r\n CatalogueHeaderData,\r\n CatalogueHeaderItemsData,\r\n} from \"../../../../api/headerApi.types\";\r\n\r\ninterface ProductCatalogueMegaMenuMobileProps {\r\n headerModel: CatalogueHeaderData;\r\n active: boolean;\r\n selectedMain: CatalogueHeaderItemsData;\r\n selectedSub: CatalogueHeaderItemsData;\r\n setSelectedMain: (main: CatalogueHeaderItemsData) => void;\r\n setSelectedSub: (sub: CatalogueHeaderItemsData) => void;\r\n}\r\n\r\nexport const ProductCatalogueMegaMenuMobile: React.FC<\r\n ProductCatalogueMegaMenuMobileProps\r\n> = ({\r\n headerModel,\r\n active,\r\n selectedMain,\r\n selectedSub,\r\n setSelectedMain,\r\n setSelectedSub,\r\n}) => {\r\n const handleSelectMainClick = (evt, mainNav) => {\r\n evt.preventDefault();\r\n setSelectedMain(mainNav);\r\n };\r\n\r\n const handleSelectSubClick = (evt, subNav) => {\r\n evt.preventDefault();\r\n setSelectedSub(subNav);\r\n };\r\n\r\n return (\r\n \r\n {selectedMain === null && (\r\n
      \r\n {\" \"}\r\n {headerModel?.items?.map((item) => (\r\n handleSelectMainClick(evt, item)}\r\n key={item.id}\r\n >\r\n

      {item.linkTitle}

      \r\n \r\n \r\n ))}\r\n
    \r\n )}\r\n {selectedMain !== null && selectedSub === null && (\r\n
      \r\n handleSelectMainClick(evt, null)}\r\n >\r\n \r\n

      {selectedMain?.linkTitle}

      \r\n \r\n {selectedMain?.subItems?.map((item) => (\r\n handleSelectSubClick(evt, item)}\r\n key={item.id}\r\n >\r\n

      {item.linkTitle}

      \r\n \r\n \r\n ))}\r\n
    \r\n )}\r\n {selectedSub !== null && (\r\n
    \r\n handleSelectSubClick(evt, null)}\r\n className=\"editorial-block-main-mobile cursor-pointer hover:underline\"\r\n >\r\n \r\n

    {selectedSub.linkTitle}

    \r\n
    \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n","import React, { useState } from \"react\";\r\nimport \"./Header.scss\";\r\nimport LogoSvg from \"../../../../../prod/images/logo-type.svg?react\";\r\nimport MenuSvg from \"../../../../../prod/images/menu.svg?react\";\r\nimport SearchRedesignSvg from \"../../../../../prod/images/redesign/search.svg?react\";\r\nimport CrossSvg from \"../../../../../prod/images/cross.svg?react\";\r\nimport useMegaMenuMobileState from \"./useMegaMenuMobileState\";\r\nimport classNames from \"classnames\";\r\nimport { CatalogueHeaderData } from \"../../../../api/headerApi.types\";\r\nimport { ProductCatalogueMegaMenuMobile } from \"./ProductCatalogueMegaMenuMobile\";\r\n\r\ninterface ProductCatalogueHeaderMobileProps {\r\n headerModel: CatalogueHeaderData;\r\n frontPageUrl: string;\r\n frontPageTitle: string;\r\n}\r\n\r\nexport const ProductCatalogueHeaderMobile: React.FC<\r\n ProductCatalogueHeaderMobileProps\r\n> = ({ headerModel, frontPageUrl, frontPageTitle }) => {\r\n const [searchTerm, setSearchTerm] = useState(\"\");\r\n\r\n const {\r\n menuExpanded,\r\n searchExpanded,\r\n selectedMain,\r\n selectedSub,\r\n setMenuExpanded,\r\n setSearchExpanded,\r\n setSelectedMain,\r\n setSelectedSub,\r\n } = useMegaMenuMobileState();\r\n\r\n const handleMenuClick = (evt) => {\r\n evt.preventDefault();\r\n\r\n setSearchExpanded(false);\r\n // on menu close\r\n if (menuExpanded === true) {\r\n setSelectedSub(null);\r\n setSelectedMain(null);\r\n }\r\n setMenuExpanded((val) => !val);\r\n };\r\n\r\n const handleSearchIconClick = (evt) => {\r\n evt.preventDefault();\r\n\r\n setSearchExpanded((val) => !val);\r\n };\r\n\r\n const handleSearchSubmit = (evt) => {\r\n evt.preventDefault();\r\n\r\n if (searchExpanded) {\r\n const url = new URL(\r\n `${window.location.origin}/product-catalogue/search-results/`\r\n );\r\n url.searchParams.append(\"term\", searchTerm);\r\n window.location.href = url.toString();\r\n }\r\n };\r\n\r\n const handleSearchInputChange = (evt) => {\r\n setSearchTerm(evt.target.value);\r\n };\r\n\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n {frontPageTitle}\r\n \r\n
    \r\n \r\n {menuExpanded ? : }\r\n \r\n {!menuExpanded && (\r\n \r\n {searchExpanded ? : }\r\n \r\n )}\r\n
    \r\n {searchExpanded && (\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","import React from \"react\";\r\nimport \"./Header.scss\";\r\nimport { ProductCatalogueHeader } from \"./ProductCatalogueHeader\";\r\nimport { useCatalogueHeaderModel } from \"./useCatalogueHeaderModel\";\r\nimport { ProductCatalogueHeaderMobile } from \"./ProductCatalogueHeaderMobile\";\r\n\r\nconst ProductCatalogueHeaderWrapper = (props) => {\r\n const {\r\n isLoading,\r\n error,\r\n data: headerModel,\r\n } = useCatalogueHeaderModel(props.currentPageId);\r\n if (isLoading) {\r\n return null;\r\n }\r\n\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default ProductCatalogueHeaderWrapper;\r\n","import {getRadians} from '../../utils';\r\n\r\n\r\n// ----- ships settings -----\r\n\r\nexport const ships = {\r\n bulk: 'bulk',\r\n tanker: 'tanker',\r\n passenger: 'passenger',\r\n container: 'container',\r\n offshore: 'offshore',\r\n lubricant: 'lubricant'\r\n};\r\n\r\nexport const ship3D = [ships.bulk];\r\n\r\nexport const ships2D = [ships.tanker, ships.passenger, ships.offshore, ships.container, ships.lubricant];\r\n\r\nexport const areasNamesMap = {\r\n superstructure: 'superstructure',\r\n mooringRopes: 'mooringRopes',\r\n mooringRopesFront: 'mooringRopesFront',\r\n engineRoom: 'engineRoom',\r\n ballastWaterTank: 'ballastWaterTank',\r\n cargoHold: 'cargoHold',\r\n deck: 'deck',\r\n exhaustGasBoiler: 'exhaustGasBoiler',\r\n fuelOilTank: 'fuelOilTank'\r\n};\r\n\r\nexport const areaHotspotsSettings =\r\n {\r\n superstructure: {\r\n name: areasNamesMap.superstructure,\r\n coordinates: {x: 5.3, y: 1.6, z: -0.03},\r\n cameraCoordinates: {x: 8.95, y: 2.38, z: 1.15},\r\n },\r\n mooringRopes: {\r\n name: areasNamesMap.mooringRopes,\r\n coordinates: {x: 6.8, y: 1, z: -0.06},\r\n cameraCoordinates: {x: 8.46, y: 1.57, z: 0.67}\r\n },\r\n mooringRopesFront: {\r\n name: areasNamesMap.mooringRopes,\r\n coordinates: {x: -7, y: 1.1, z: -0.04},\r\n cameraCoordinates: {x: -10, y: 2.51, z: -1.77}\r\n },\r\n engineRoom: {\r\n name: areasNamesMap.engineRoom,\r\n coordinates: {x: 5.4, y: 0.3, z: 0.4},\r\n cameraCoordinates: {x: 8.85, y: 2.5, z: 3.7}\r\n },\r\n ballastWaterTank: {\r\n name: areasNamesMap.ballastWaterTank,\r\n coordinates: {x: 3, y: 0.3, z: 0.9},\r\n cameraCoordinates: {x: 8.25, y: 2.83, z: 4.17}\r\n },\r\n cargoHold: {\r\n name: areasNamesMap.cargoHold,\r\n coordinates: {x: 0.7, y: 1.12, z: -0.03},\r\n cameraCoordinates: {x: 4.15, y: 5.38, z: 4.23}\r\n },\r\n deck: {\r\n name: areasNamesMap.deck,\r\n coordinates: {x: -3, y:0.95, z: 0.85},\r\n cameraCoordinates: {x: -7, y: 3.38, z: -2}\r\n },\r\n exhaustGasBoiler: {\r\n name: areasNamesMap.exhaustGasBoiler,\r\n coordinates: {x: 6, y: 1.9, z: -0.05},\r\n cameraCoordinates: {x: 8.95, y: 2.38, z: 1.15},\r\n },\r\n fuelOilTank: {\r\n name: areasNamesMap.fuelOilTank,\r\n coordinates: {x: 0.7, y: 0.5, z: 0.9},\r\n cameraCoordinates: {x: 4.15, y: 3, z: 7}\r\n }\r\n};\r\n\r\n\r\n\r\n// ----- three.js camera settings -----\r\n\r\nexport const cameraLoadingPosition = {\r\n x: 4.3,\r\n y: 9,\r\n z: 46\r\n};\r\n\r\nexport const cameraInitialPosition = {\r\n x: -4.3,\r\n y: 9,\r\n z: 13\r\n};\r\n\r\nexport const cameraTransitionSpeed = 1500;\r\n\r\nexport const initialOrbitControlsSettings = {\r\n minDistance: 8,\r\n maxDistance: 20,\r\n dampingFactor: 0.2,\r\n enableDamping: true,\r\n enableKeys: false,\r\n enablePan: false,\r\n minAzimuthAngle: -Infinity,\r\n maxAzimuthAngle: Infinity,\r\n minPolarAngle: getRadians(-90),\r\n maxPolarAngle: getRadians(90),\r\n rotateSpeed: 0.25\r\n};","import React, {Component} from 'react';\r\n\r\nexport const GlobalContext = React.createContext();\r\n\r\nexport class GlobalContextProvider extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isCategoriesListVisible: false,\r\n setCategoriesListVisibility: (isVisible) => {\r\n this.setState({isCategoriesListVisible: isVisible});\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.children}\r\n \r\n )\r\n }\r\n}","import React from 'react';\r\n\r\nfunction LoadViewer(props) {\r\n return (\r\n
    \r\n

    EXPLORE APPLICATION AREAS TO FIND THE RIGHT PRODUCT OR SOLUTION

    \r\n \r\n
    \r\n );\r\n}\r\n\r\nexport default LoadViewer;","import React, {Component} from 'react';\r\nimport {GlobalContext} from './context/GlobalContext';\r\nimport {getCookie, setCookie} from '../../utils';\r\nimport classNames from 'classnames';\r\n\r\nclass Instructions extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n const firstTimeVisiting = this.checkIfFirstTimeVisiting();\r\n\r\n this.state = {\r\n isOpen: firstTimeVisiting,\r\n containerHeight: 0,\r\n noTransitions: firstTimeVisiting,\r\n infoBtnSize: {\r\n width: 0,\r\n height: 0\r\n },\r\n windowPosition: {\r\n x: 0,\r\n y: 0\r\n }\r\n };\r\n\r\n this.infoBtnRef = React.createRef();\r\n\r\n this.closeInfoOnScroll = this.closeInfoOnScroll.bind(this);\r\n this.toggleInfo = this.toggleInfo.bind(this);\r\n this.calculateContainerHeight = this.calculateContainerHeight.bind(this);\r\n this.calculateContainerHeightOnResize = this.calculateContainerHeightOnResize.bind(this);\r\n this.addScrollListener = this.addScrollListener.bind(this);\r\n this.removeScrollListener = this.removeScrollListener.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n\r\n this.setState({\r\n infoBtnSize: {\r\n width: this.infoBtnRef.current.offsetWidth,\r\n height: this.infoBtnRef.current.offsetHeight\r\n }\r\n });\r\n\r\n this.calculateContainerHeight();\r\n\r\n window.addEventListener('resize', this.calculateContainerHeightOnResize, false);\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener('resize', this.calculateContainerHeightOnResize, false);\r\n }\r\n\r\n checkIfFirstTimeVisiting() {\r\n let firstTimeVisiting;\r\n\r\n if (!getCookie('instructionsSeen')) {\r\n firstTimeVisiting = true;\r\n setCookie('instructionsSeen', 'true', 30, '/product-catalogue/');\r\n } else {\r\n firstTimeVisiting = false;\r\n }\r\n\r\n return firstTimeVisiting;\r\n }\r\n\r\n addScrollListener() {\r\n this.setState({\r\n windowPosition: {\r\n x: window.screenX,\r\n y: window.scrollY\r\n }\r\n });\r\n\r\n window.addEventListener('scroll', this.closeInfoOnScroll, false);\r\n }\r\n\r\n removeScrollListener() {\r\n window.removeEventListener('scroll', this.closeInfoOnScroll, false);\r\n }\r\n\r\n closeInfoOnScroll() {\r\n const {windowPosition, isOpen} = this.state;\r\n\r\n window.scrollTo(windowPosition.x, windowPosition.y); // To prevent scrolling, preventDefault doesn't work\r\n\r\n if (isOpen) {\r\n this.setState({isOpen: false});\r\n }\r\n }\r\n\r\n toggleInfo(e) {\r\n e.preventDefault();\r\n\r\n this.setState(prevState => ({\r\n noTransitions: false,\r\n isOpen: !prevState.isOpen\r\n }), this.calculateContainerHeight);\r\n }\r\n\r\n calculateContainerHeightOnResize() {\r\n this.setState({noTransitions: true});\r\n this.calculateContainerHeight();\r\n }\r\n\r\n calculateContainerHeight() {\r\n if (this.state.isOpen) {\r\n const\r\n mainContainer = document.getElementById('shipsViewerRoot'),\r\n containerHeight = mainContainer.offsetHeight;\r\n this.setState({containerHeight: containerHeight})\r\n }\r\n }\r\n\r\n render() {\r\n const instructionClasses = classNames(\r\n 'instructions',\r\n {'instructions--open': this.state.isOpen}\r\n );\r\n\r\n let instructionStyles = {};\r\n\r\n if (this.state.noTransitions) {\r\n instructionStyles.transition = 'none';\r\n }\r\n\r\n if (this.state.isOpen) {\r\n instructionStyles.height = this.state.containerHeight;\r\n } else {\r\n instructionStyles.height = this.state.infoBtnSize.height;\r\n instructionStyles.width = this.state.infoBtnSize.width;\r\n }\r\n\r\n if (this.props.isCategoriesListVisible) {\r\n instructionStyles.visibility = 'hidden';\r\n }\r\n\r\n return (\r\n \r\n
    \r\n e.preventDefault()}\r\n ref={this.infoBtnRef}\r\n >\r\n View instructions\r\n \r\n
    \r\n \r\n

    Or click anywhere and start exploring

    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nfunction InstructionsWithContext(props) {\r\n return (\r\n \r\n {(context) => (\r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default InstructionsWithContext;","import React, {Component} from 'react';\r\n\r\nexport const ShipContext = React.createContext();\r\n\r\nexport class ShipContextProvider extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n activeAreaId: '',\r\n activeSubareaId: '',\r\n shipType: '',\r\n setActiveSubareaId: (activeSubareaId) => {\r\n this.setState({activeSubareaId});\r\n },\r\n resetActiveAreas: () => {\r\n this.setState({\r\n activeAreaId: '',\r\n activeAreaOnImageId: '',\r\n activeSubareaId: ''\r\n })\r\n },\r\n setActiveAreaId: (activeAreaId) => {\r\n this.setState({activeAreaId});\r\n },\r\n setShipType: (shipType) => {\r\n this.setState({shipType})\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.children}\r\n \r\n )\r\n }\r\n}","import * as THREE from 'three';\r\n\r\nfunction addLights(scene) {\r\n const ambientLight = new THREE.AmbientLight(0x404040, 1); // soft white light\r\n scene.add(ambientLight);\r\n\r\n const pointLight = getPointLight(1);\r\n pointLight.position.y = 10;\r\n scene.add(pointLight);\r\n\r\n const keyLight = new THREE.DirectionalLight(0xffffff, 1);\r\n keyLight.position.set(-100, 0, 100);\r\n scene.add(keyLight);\r\n\r\n const backLight = new THREE.DirectionalLight(0xffffff, 1);\r\n backLight.position.set(100, 0, -100).normalize();\r\n scene.add(backLight);\r\n\r\n function getPointLight(intensity) {\r\n const light = new THREE.PointLight(0xffffff, intensity);\r\n light.castShadow = true;\r\n\r\n light.shadow.mapSize.width = 1024;\r\n light.shadow.mapSize.height = 1024;\r\n\r\n return light;\r\n }\r\n}\r\n\r\nexport default addLights;","import * as THREE from 'three';\r\nimport {getRadians} from '../../../../utils';\r\n\r\nfunction addShadowPlane(scene) {\r\n const size = 200;\r\n const geometry = new THREE.PlaneGeometry(size, size);\r\n const material = new THREE.ShadowMaterial({opacity: 0.2});\r\n\r\n const shadowPlane = new THREE.Mesh(\r\n geometry,\r\n material\r\n );\r\n\r\n shadowPlane.receiveShadow = true;\r\n shadowPlane.rotation.x = getRadians(-90);\r\n shadowPlane.position.y = -0.1;\r\n\r\n scene.add(shadowPlane);\r\n}\r\n\r\nexport default addShadowPlane;\r\n","import * as THREE from 'three';\r\nimport {getRadians} from '../../../../utils';\r\n\r\nfunction addShipModel(scene, shipModelUrl, loadingManager) {\r\n\r\n const loader = new THREE.ObjectLoader(loadingManager);\r\n loader.load(shipModelUrl, handleLoad);\r\n\r\n function handleLoad(object) {\r\n object.name = 'shipModel';\r\n object.scale.multiplyScalar(0.00099);\r\n object.position.y = 0.10;\r\n object.position.x = -0.10;\r\n object.rotation.x = getRadians(180);\r\n object.rotation.y = getRadians(90);\r\n\r\n scene.add(object);\r\n }\r\n}\r\n\r\nexport default addShipModel;","import * as THREE from 'three';\r\n\r\n// const TWEEN = require('@tweenjs/tween.js');\r\nimport * as TWEEN from '@tweenjs/tween.js';\r\nimport {\r\n cameraLoadingPosition,\r\n cameraTransitionSpeed,\r\n initialOrbitControlsSettings\r\n} from '../settings';\r\n\r\n//Scene subjects\r\nimport addLights from './scene-subjects/addLights';\r\nimport addShadowPlane from './scene-subjects/addShadowPlane';\r\nimport addShipModel from './scene-subjects/addShipModel';\r\n\r\n\r\nexport default class SceneManager {\r\n constructor(container, shipModelUrl, callbackOnLoad) {\r\n\r\n this.OrbitControls = require('three-orbit-controls')(THREE);\r\n this.container = container;\r\n this.containerDimensions = {\r\n width: this.container.offsetWidth,\r\n height: this.container.offsetHeight\r\n };\r\n this.scene = new THREE.Scene();\r\n this.renderer = this.buildRenderer(this.containerDimensions);\r\n this.camera = this.buildCamera(this.containerDimensions);\r\n this.controls = this.buildOrbitControls(this.camera, this.renderer);\r\n this.loadingManager = this.buildLoadingManager(callbackOnLoad, this.changeCameraPosition);\r\n\r\n this.initSceneSubjects(this.scene, shipModelUrl, this.loadingManager);\r\n }\r\n\r\n initSceneSubjects(scene, shipModelUrl, loadingManager) {\r\n addLights(scene);\r\n addShadowPlane(scene);\r\n addShipModel(scene, shipModelUrl, loadingManager);\r\n }\r\n\r\n buildLoadingManager(callback) {\r\n const loadingManager = new THREE.LoadingManager();\r\n loadingManager.onLoad = function () {\r\n callback();\r\n console.log('Loading complete!');\r\n };\r\n\r\n return loadingManager;\r\n }\r\n\r\n buildRenderer({width, height}) {\r\n const renderer = new THREE.WebGLRenderer({antialias: true, alpha: true});\r\n renderer.shadowMap.enabled = true;\r\n renderer.shadowMap.type = THREE.PCFSoftShadowMap;\r\n renderer.setSize(width, height);\r\n renderer.autoClear = false;\r\n renderer.setClearColor(0x000000, 0);\r\n\r\n this.container.appendChild(renderer.domElement);\r\n\r\n return renderer;\r\n }\r\n\r\n buildCamera({width, height}) {\r\n const fieldOfView = 35;\r\n const aspectRatio = width / height;\r\n const nearPlane = 1;\r\n const farPlane = 1000;\r\n const camera = new THREE.PerspectiveCamera(\r\n fieldOfView,\r\n aspectRatio,\r\n nearPlane,\r\n farPlane\r\n );\r\n\r\n camera.position.set(\r\n cameraLoadingPosition.x,\r\n cameraLoadingPosition.y,\r\n cameraLoadingPosition.z\r\n );\r\n camera.lookAt(new THREE.Vector3(0, 0, 0));\r\n\r\n return camera;\r\n }\r\n\r\n buildOrbitControls(camera, renderer) {\r\n const controls = new this.OrbitControls(camera, renderer.domElement);\r\n this.setOrbitControlSettings(controls, initialOrbitControlsSettings);\r\n\r\n return controls;\r\n }\r\n\r\n setOrbitControlSettings(controls, settings) {\r\n const {\r\n minDistance,\r\n maxDistance,\r\n enableDamping,\r\n enableKeys,\r\n enablePan,\r\n dampingFactor,\r\n minAzimuthAngle,\r\n maxAzimuthAngle,\r\n minPolarAngle,\r\n maxPolarAngle,\r\n rotateSpeed\r\n } = settings;\r\n\r\n controls.minDistance = minDistance;\r\n controls.maxDistance = maxDistance;\r\n controls.enableDamping = enableDamping;\r\n controls.dampingFactor = dampingFactor;\r\n controls.enableKeys = enableKeys;\r\n controls.enablePan = enablePan;\r\n controls.minAzimuthAngle = minAzimuthAngle;\r\n controls.maxAzimuthAngle = maxAzimuthAngle;\r\n controls.minPolarAngle = minPolarAngle;\r\n controls.maxPolarAngle = maxPolarAngle;\r\n controls.rotateSpeed = rotateSpeed;\r\n\r\n }\r\n\r\n onWindowResize() {\r\n const width = this.container.offsetWidth;\r\n const height = this.container.offsetHeight;\r\n\r\n this.containerDimensions.width = width;\r\n this.containerDimensions.height = height;\r\n\r\n this.camera.aspect = width / height;\r\n this.camera.updateProjectionMatrix();\r\n\r\n this.renderer.setSize(width, height);\r\n };\r\n\r\n getTwoDCoordinatesFromThreeD(threeDCoordinates) {\r\n const canvas = this.renderer.domElement;\r\n const vector = new THREE.Vector3(\r\n threeDCoordinates.x,\r\n threeDCoordinates.y,\r\n threeDCoordinates.z\r\n );\r\n\r\n vector.project(this.camera);\r\n vector.x = Math.round((vector.x + 1) * canvas.width / 2);\r\n vector.y = Math.round((-vector.y + 1) * canvas.height / 2);\r\n\r\n return {\r\n x: vector.x,\r\n y: vector.y\r\n }\r\n }\r\n\r\n changeCameraPosition(coordinates) {\r\n\r\n this.setOrbitControlSettings(this.controls, initialOrbitControlsSettings);\r\n\r\n const camera = this.camera;\r\n const from = {\r\n x: camera.position.x,\r\n y: camera.position.y,\r\n z: camera.position.z,\r\n };\r\n const to = {\r\n x: coordinates.x,\r\n y: coordinates.y,\r\n z: coordinates.z,\r\n };\r\n\r\n new TWEEN.Tween(from)\r\n .to(to, cameraTransitionSpeed)\r\n .easing(TWEEN.Easing.Quadratic.Out)\r\n .onUpdate(function () {\r\n camera.position.set(from.x, from.y, from.z);\r\n camera.lookAt(new THREE.Vector3(0, 0, 0));\r\n })\r\n .onComplete(function () {\r\n camera.lookAt(new THREE.Vector3(0, 0, 0));\r\n })\r\n .start()\r\n ;\r\n }\r\n\r\n update() {\r\n this.renderer.render(\r\n this.scene,\r\n this.camera\r\n );\r\n this.controls.update();\r\n TWEEN.update();\r\n };\r\n}","import React, {Component} from 'react';\r\n\r\nexport default class Hotspot extends Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n const {\r\n hotspotClasses,\r\n id,\r\n style,\r\n onClick,\r\n onMouseEnter,\r\n onMouseLeave,\r\n labelText\r\n } = this.props;\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {labelText}\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}","import React, {Component} from 'react';\r\nimport {areaHotspotsSettings} from './settings';\r\nimport {ShipContext} from './context/ShipContext';\r\nimport {GlobalContext} from \"./context/GlobalContext\";\r\nimport Hotspot from './Hotspot';\r\nimport {capitalizeFirstLetter} from '../../utils';\r\n\r\nclass HotspotCameraDependant extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n twoDCoordinates: {\r\n x: -1000,\r\n y: 0\r\n }\r\n };\r\n this.hotspotSettings = areaHotspotsSettings[this.props.areaName];\r\n this.handleClick = this.handleClick.bind(this);\r\n }\r\n\r\n\r\n positionHotspot() {\r\n if (this.props.shipHasLoaded && typeof this.hotspotSettings !== 'undefined') {\r\n this.setState({\r\n twoDCoordinates: this.props.getTwoDCoordinatesFromThreeD(this.hotspotSettings.coordinates)\r\n });\r\n }\r\n }\r\n\r\n handleClick() {\r\n this.props.moveCameraToPosition(this.hotspotSettings.cameraCoordinates);\r\n this.props.setActiveAreaId(this.props.areaId);\r\n this.props.setCategoriesListVisibility(true);\r\n }\r\n\r\n render() {\r\n let hotspotStyles = {},\r\n hotspotClasses = 'hotspot js-hotspot';\r\n\r\n hotspotStyles.transform = `translate(${this.state.twoDCoordinates.x}px, ${this.state.twoDCoordinates.y}px)`;\r\n hotspotStyles.display = 'block';\r\n\r\n if (this.props.activeAreaId === this.props.areaId) {\r\n hotspotClasses += \" hotspot--active\";\r\n } else if (this.props.activeAreaId.length !== 0) {\r\n hotspotStyles.opacity = 0;\r\n hotspotStyles.visibility = 'hidden';\r\n }\r\n\r\n const\r\n shipType = capitalizeFirstLetter(this.props.ship),\r\n id = `${this.props.areaName}${shipType}`;\r\n\r\n return (\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default React.forwardRef((props, ref) => (\r\n \r\n {(globalContext) => (\r\n \r\n {(shipContext) => (\r\n \r\n )}\r\n \r\n )}\r\n \r\n))","import React, {Component} from 'react';\r\nimport {ShipContext} from './context/ShipContext';\r\nimport {GlobalContext} from \"./context/GlobalContext\";\r\nimport Hotspot from './Hotspot';\r\nimport {capitalizeFirstLetter} from '../../utils';\r\n\r\nconst MENU_ID = \"additionaApplicationAreasForOtherVesselTypesLubricant\";\r\n\r\nclass HotspotStatic extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleClick = this.handleClick.bind(this);\r\n }\r\n\r\n handleClick() {\r\n this.props.setActiveAreaId(this.props.areaId);\r\n this.props.setCategoriesListVisibility(true);\r\n }\r\n\r\n render() {\r\n\r\n let hotspotStyles = {},\r\n hotspotClasses = 'hotspot js-hotspot',\r\n shipType = capitalizeFirstLetter(this.props.ship),\r\n id = `${this.props.areaName}${shipType}`,\r\n staticMenu = id === MENU_ID;\r\n\r\n if (this.props.activeAreaId === this.props.areaId || staticMenu) {\r\n hotspotClasses += \" hotspot--active\";\r\n } else if (this.props.activeAreaId.length !== 0 && !staticMenu) {\r\n hotspotStyles.opacity = 0;\r\n hotspotStyles.visibility = 'hidden';\r\n }\r\n\r\n if(id === MENU_ID){\r\n hotspotClasses += ' static-menu';\r\n }\r\n return (\r\n \r\n )\r\n }\r\n}\r\n\r\nfunction HotspotStaticWithContext(props) {\r\n return (\r\n \r\n {(shipContext) => (\r\n \r\n {(globalContext) => (\r\n \r\n )}\r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default HotspotStaticWithContext;","import React, {Component} from 'react';\r\nimport classNames from 'classnames';\r\nimport {ShipContext} from './context/ShipContext';\r\n\r\nclass SubcategoryListItemWithSublists extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n isListOpen: false\r\n };\r\n\r\n this.listItemRef = React.createRef();\r\n this.handleBtnClick = this.handleBtnClick.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n const isListOpen = this.props.subcategory.id === this.props.activeSubareaId;\r\n this.setState({isListOpen});\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n const {\r\n isAreaActive,\r\n activeSubareaId,\r\n subcategory,\r\n checkIfShouldAddScroll\r\n } = this.props;\r\n\r\n if (activeSubareaId !== prevProps.activeSubareaId) {\r\n const isListOpen = subcategory.id === activeSubareaId;\r\n this.setState({isListOpen});\r\n }\r\n\r\n if (isAreaActive !== prevProps.isAreaActive) {\r\n this.setState({isListOpen: false});\r\n }\r\n\r\n if (this.state.isListOpen !== prevState.isListOpen) {\r\n checkIfShouldAddScroll();\r\n }\r\n }\r\n\r\n handleBtnClick() {\r\n const {\r\n subcategory,\r\n activeSubareaId,\r\n setActiveSubareaId,\r\n checkIfShouldAddScroll\r\n } = this.props;\r\n\r\n this.setState((prevState) => {\r\n return {isListOpen: !prevState.isListOpen}\r\n });\r\n\r\n if (subcategory.id === activeSubareaId) {\r\n setActiveSubareaId('');\r\n } else {\r\n setActiveSubareaId(subcategory.id);\r\n }\r\n\r\n checkIfShouldAddScroll();\r\n }\r\n\r\n scrollElementIntoView() {\r\n const\r\n element = this.listItemRef.current,\r\n elementOffsetTop = element.offsetTop,\r\n parentOffsetTop = element.parentNode.offsetTop;\r\n\r\n // Container with custom scroll created by Scrollbars component\r\n let scrollContainer = this.props.contentContainerRef.parentNode;\r\n\r\n // Checking if the container indeed has scroll enabled\r\n if (scrollContainer && scrollContainer.style.overflow === 'scroll') {\r\n scrollContainer.scrollTop = elementOffsetTop - parentOffsetTop;\r\n }\r\n }\r\n\r\n render() {\r\n\r\n let sublistClasses = classNames('area-categories__sublist', {'area-categories__sublist--open': this.state.isListOpen}),\r\n btnClasses = classNames('area-categories__dropdown-btn', {'area-categories__dropdown-btn--open': this.state.isListOpen});\r\n\r\n if (this.state.isListOpen) {\r\n this.scrollElementIntoView()\r\n }\r\n\r\n return (\r\n
  • \r\n \r\n
      \r\n {this.props.subcategory.subareas.map(subcategory => this.props.constructSingleItem(subcategory))}\r\n
    \r\n
  • \r\n )\r\n }\r\n}\r\n\r\nfunction SubcategoryListItemWithSublistsWithContext(props) {\r\n return (\r\n \r\n {(context) =>\r\n \r\n }\r\n \r\n )\r\n}\r\n\r\nexport default SubcategoryListItemWithSublistsWithContext;","import React from 'react';\r\n\r\n\r\nfunction SubcategoryListItem(props) {\r\n return (\r\n
  • \r\n \r\n {props.subcategory.displayName}\r\n \r\n
  • \r\n )\r\n}\r\n\r\nexport default SubcategoryListItem;","import React from 'react';\r\nimport SubcategoryListItemWithSublists from './SubcategoryListItemWithSublists';\r\nimport SubcategoryListItem from './SubcategoryListItem';\r\n\r\nfunction AreaCategoriesList(props) {\r\n\r\n const subcategories = props.subcategories;\r\n\r\n if (typeof subcategories === 'undefined') {\r\n return null;\r\n } else {\r\n return (\r\n
      \r\n {subcategories.map(subcategory => constructSubcategoryListItem(subcategory))}\r\n
    \r\n );\r\n }\r\n\r\n function constructSubcategoryListItem(subcategory) {\r\n if (subcategory.subareas.length > 0) {\r\n return contructDropdownItem(subcategory);\r\n } else {\r\n return constructSingleItem(subcategory);\r\n }\r\n }\r\n\r\n function contructDropdownItem(subcategory) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n function constructSingleItem(subcategory) {\r\n return (\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default AreaCategoriesList;","import React, { Component } from 'react';\r\nimport { ShipContext } from './context/ShipContext';\r\nimport { GlobalContext } from './context/GlobalContext';\r\nimport AreaCategoriesList from './AreaCategoriesList';\r\n\r\nconst MENU_CATEGORY_AREA_ID = \"additionaApplicationAreasForOtherVesselTypes\";\r\n\r\nclass AreaCategories extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n shouldScroll: false,\r\n containerHeight: 0,\r\n containerWidth: 0\r\n };\r\n\r\n this.containerRef = React.createRef();\r\n this.contentContainerRef = React.createRef();\r\n this.checkIfShouldAddScroll = this.checkIfShouldAddScroll.bind(this);\r\n this.handleCloseBtnClick = this.handleCloseBtnClick.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.bindEventListeners();\r\n this.checkIfShouldAddScroll();\r\n }\r\n\r\n componentWillUnmount() {\r\n this.unbindEventListeners();\r\n }\r\n\r\n bindEventListeners() {\r\n window.addEventListener('resize', this.checkIfShouldAddScroll, false);\r\n }\r\n\r\n unbindEventListeners() {\r\n window.removeEventListener('resize', this.checkIfShouldAddScroll, false);\r\n }\r\n\r\n checkIfShouldAddScroll() {\r\n const\r\n offsetTopAndBottom = 64,\r\n shipsViewerHeight = document.getElementById('shipsViewerRoot').clientHeight,\r\n maxContainerHeight = shipsViewerHeight - offsetTopAndBottom,\r\n contentHeight = this.contentContainerRef.current.scrollHeight,\r\n containerHeight = this.containerRef.current.clientHeight,\r\n containerWidth = this.containerRef.current.clientWidth;\r\n\r\n if (contentHeight >= maxContainerHeight && containerHeight > 0) {\r\n this.setState({\r\n shouldScroll: true,\r\n containerHeight: containerHeight,\r\n containerWidth: containerWidth\r\n });\r\n } else {\r\n this.setState({ shouldScroll: false });\r\n }\r\n }\r\n\r\n handleCloseBtnClick() {\r\n this.props.resetActiveAreas();\r\n this.props.setCategoriesListVisibility(false);\r\n if (this.props.moveCameraToInitialPosition) {\r\n this.props.moveCameraToInitialPosition();\r\n }\r\n }\r\n\r\n renderContent() {\r\n const {\r\n areaDisplayName,\r\n areaSubcategories,\r\n activeAreaId,\r\n areaId\r\n } = this.props;\r\n\r\n const content = (\r\n \r\n

    \r\n {areaDisplayName}\r\n

    \r\n \r\n \r\n );\r\n\r\n if (this.state.shouldScroll) {\r\n return (\r\n \r\n \r\n {content}\r\n \r\n\r\n \r\n );\r\n } else {\r\n return content;\r\n }\r\n }\r\n\r\n\r\n render() {\r\n let style;\r\n let classStatic = MENU_CATEGORY_AREA_ID == this.props.areaId ? 'static-area-menu' : '';\r\n\r\n if (this.props.activeAreaId === this.props.areaId || (MENU_CATEGORY_AREA_ID == this.props.areaId)) {\r\n style = {\r\n opacity: 1,\r\n visibility: 'visible'\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n \r\n {this.renderContent()}\r\n
    \r\n )\r\n }\r\n}\r\n\r\nfunction\r\n\r\n AreaCategoriesWithContext(props) {\r\n return (\r\n \r\n {(globalContext) => (\r\n \r\n {(shipContext) => (\r\n \r\n )}\r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default AreaCategoriesWithContext;","import React, {Component} from 'react';\r\nimport classNames from 'classnames';\r\nimport {ShipContext} from './context/ShipContext';\r\nimport Hotspot from './Hotspot';\r\nimport {capitalizeFirstLetter} from \"../../utils\";\r\n\r\nclass HotspotOnCloseupImage extends Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n const {\r\n areaId,\r\n activeSubareaId,\r\n ship,\r\n areaName,\r\n hotspotLabelText,\r\n isHoveringOverOtherHotspots,\r\n handleHotspotClick,\r\n handleMouseEnterOnHotspot,\r\n handleMouseLeaveFromHotspot\r\n } = this.props;\r\n\r\n const\r\n hotspotClasses = classNames(\r\n 'hotspot hotspot--ship-interior js-hotspot',\r\n {'hotspot--active': areaId === activeSubareaId && !isHoveringOverOtherHotspots}\r\n ),\r\n shipType = capitalizeFirstLetter(ship),\r\n id = `${areaName}${shipType}`;\r\n\r\n return (\r\n handleHotspotClick(areaId)}\r\n onMouseEnter={handleMouseEnterOnHotspot}\r\n onMouseLeave={() => handleMouseLeaveFromHotspot(areaId === activeSubareaId)}\r\n labelText={hotspotLabelText}\r\n />\r\n )\r\n }\r\n}\r\n\r\nfunction HotspotOnCloseupImageWithContext(props) {\r\n return (\r\n \r\n {(context) =>\r\n \r\n }\r\n \r\n )\r\n}\r\n\r\nexport default HotspotOnCloseupImageWithContext;","import React, {Component} from 'react';\r\nimport {ShipContext} from './context/ShipContext';\r\nimport HotspotOnCloseupImage from './HotspotOnCloseupImage';\r\n\r\nexport class CloseupArea extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n isHoveringOverOtherHotspots: false\r\n };\r\n\r\n this.mouseLeaveTimeoutId = 0;\r\n this.handleMouseEnterOnHotspot = this.handleMouseEnterOnHotspot.bind(this);\r\n this.handleMouseLeaveFromHotspot = this.handleMouseLeaveFromHotspot.bind(this);\r\n }\r\n\r\n handleMouseEnterOnHotspot() {\r\n clearTimeout(this.mouseLeaveTimeoutId);\r\n this.setState({isHoveringOverOtherHotspots: true});\r\n }\r\n\r\n handleMouseLeaveFromHotspot(hotspotIsActive) {\r\n if (hotspotIsActive) {\r\n this.setState({isHoveringOverOtherHotspots: false});\r\n } else {\r\n // Delay the action not to show active hotspot too quickly\r\n const delayTime = 700;\r\n this.mouseLeaveTimeoutId = setTimeout(() => {\r\n this.setState({isHoveringOverOtherHotspots: false});\r\n }, delayTime);\r\n }\r\n }\r\n\r\n render() {\r\n const {\r\n engineRoomImgUrl,\r\n closeupAreaSubareas,\r\n activeAreaId,\r\n areaId\r\n } = this.props;\r\n\r\n const hotspots = closeupAreaSubareas.map((area) =>\r\n \r\n );\r\n\r\n let styles;\r\n if (activeAreaId === areaId) {\r\n styles = {\r\n opacity: 1,\r\n visibility: 'visible',\r\n pointerEvents: 'auto'\r\n }\r\n } else {\r\n styles = {\r\n pointerEvents: 'none'\r\n };\r\n }\r\n\r\n return (\r\n \r\n \r\n {hotspots}\r\n \r\n )\r\n }\r\n}\r\n\r\nfunction CloseupAreaWithContext(props) {\r\n return (\r\n \r\n {(context) =>\r\n \r\n }\r\n \r\n )\r\n}\r\n\r\nexport default CloseupAreaWithContext;\r\n\r\n","import React, {Component} from 'react';\r\nimport {ShipContext} from './context/ShipContext';\r\nimport {ships, areasNamesMap} from './settings';\r\nimport HotspotCameraDependant from './HotspotCameraDependant';\r\nimport HotspotStatic from './HotspotStatic';\r\nimport AreaCategories from './AreaCategories';\r\nimport CloseupArea from './CloseupArea';\r\n\r\nclass ApplicationArea extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.hotspotRef = React.createRef();\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.threeDShip) {\r\n this.props.addHotspotRef(this.hotspotRef.current);\r\n }\r\n }\r\n\r\n render() {\r\n let hotspot;\r\n\r\n if (this.props.threeDShip) {\r\n hotspot = (\r\n \r\n )\r\n } else {\r\n hotspot = (\r\n \r\n )\r\n }\r\n\r\n return (\r\n
    \r\n {hotspot}\r\n \r\n {this.props.shipType !== ships.offshore && this.props.area.name === areasNamesMap.engineRoom &&\r\n \r\n }\r\n
    \r\n )\r\n }\r\n}\r\n\r\nfunction ApplicationAreaWithContext(props) {\r\n return (\r\n \r\n {(context) =>\r\n \r\n }\r\n \r\n )\r\n}\r\n\r\nexport default ApplicationAreaWithContext;","import React, {Component} from 'react';\r\nimport {cameraInitialPosition} from './settings';\r\nimport {ShipContext, ShipContextProvider} from './context/ShipContext';\r\nimport SceneManager from './three-js/SceneManager';\r\nimport ApplicationArea from './ApplicationArea';\r\n\r\nclass ThreeDShip extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.props.setShipType(this.props.ship);\r\n\r\n this.requestAnimationFrameId = '';\r\n\r\n this.state = {\r\n shipHasLoaded: false,\r\n };\r\n\r\n this.shipModelContainerRef = React.createRef();\r\n this.hotspotsRefs = [];\r\n\r\n this.initScene = this.initScene.bind(this);\r\n this.renderLoop = this.renderLoop.bind(this);\r\n this.getTwoDCoordinatesFromThreeD = this.getTwoDCoordinatesFromThreeD.bind(this);\r\n this.moveCameraToPosition = this.moveCameraToPosition.bind(this);\r\n this.moveCameraToInitialPosition = this.moveCameraToInitialPosition.bind(this);\r\n this.handleWindowResizeEvent = this.handleWindowResizeEvent.bind(this);\r\n this.addHotspotRef = this.addHotspotRef.bind(this);\r\n this.positionHotspots = this.positionHotspots.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.sceneManager = new SceneManager(\r\n this.shipModelContainerRef.current,\r\n this.props.shipAssets.modelUrl,\r\n this.initScene\r\n );\r\n }\r\n\r\n componentWillUnmount() {\r\n this.unbindEventListeners();\r\n }\r\n\r\n initScene() {\r\n this.bindEventListeners();\r\n this.renderLoop();\r\n this.setState({shipHasLoaded: true});\r\n setTimeout(() => this.sceneManager.changeCameraPosition(cameraInitialPosition), 1000); // delay camera position change\r\n }\r\n\r\n\r\n bindEventListeners() {\r\n window.addEventListener('resize', this.handleWindowResizeEvent, false);\r\n }\r\n\r\n unbindEventListeners() {\r\n window.cancelAnimationFrame(this.requestAnimationFrameId);\r\n window.removeEventListener('resize', this.handleWindowResizeEvent, false);\r\n }\r\n\r\n handleWindowResizeEvent() {\r\n this.sceneManager.onWindowResize();\r\n }\r\n\r\n renderLoop() {\r\n this.requestAnimationFrameId = window.requestAnimationFrame(this.renderLoop);\r\n this.sceneManager.update();\r\n this.positionHotspots();\r\n }\r\n\r\n getTwoDCoordinatesFromThreeD(threeDCoordinates) {\r\n return this.sceneManager.getTwoDCoordinatesFromThreeD(threeDCoordinates);\r\n }\r\n\r\n moveCameraToPosition(coordinates) {\r\n this.sceneManager.changeCameraPosition(coordinates);\r\n }\r\n\r\n moveCameraToInitialPosition() {\r\n this.sceneManager.changeCameraPosition(cameraInitialPosition);\r\n }\r\n\r\n addHotspotRef(hotspotRef) {\r\n this.hotspotsRefs.push(hotspotRef);\r\n }\r\n\r\n positionHotspots() {\r\n const hotspotsRefs = this.hotspotsRefs,\r\n max = hotspotsRefs.length;\r\n\r\n for (let i = 0; i < max; i++) {\r\n hotspotsRefs[i].positionHotspot();\r\n }\r\n }\r\n\r\n render() {\r\n const shipModelAreas = this.props.applicationAreas.map((area) =>\r\n \r\n );\r\n\r\n let styles = {};\r\n styles.opacity = this.props.activeShip === this.props.ship ? '1' : '0';\r\n styles.pointerEvents = this.props.activeShip === this.props.ship ? 'auto' : 'none';\r\n\r\n\r\n return (\r\n
    \r\n {!this.state.shipHasLoaded &&\r\n
    \r\n

    Loading in progress.

    \r\n
    \r\n
    \r\n }\r\n {shipModelAreas}\r\n
    \r\n )\r\n }\r\n}\r\n\r\nfunction ThreeDShipWithContext(props) {\r\n return (\r\n \r\n \r\n {(shipContext) => (\r\n \r\n )}\r\n \r\n \r\n )\r\n}\r\n\r\nexport default ThreeDShipWithContext;","import React, {Component} from 'react';\r\nimport {ShipContextProvider, ShipContext} from \"./context/ShipContext\";\r\nimport ApplicationArea from './ApplicationArea'\r\n\r\n\r\nclass TwoDShip extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.props.setShipType(this.props.ship);\r\n }\r\n\r\n render() {\r\n const shipModelAreas = this.props.applicationAreas.map((area) =>\r\n \r\n );\r\n\r\n let styles = {};\r\n styles.opacity = this.props.activeShip === this.props.ship ? '1' : '0';\r\n styles.pointerEvents = this.props.activeShip === this.props.ship ? 'auto' : 'none';\r\n\r\n return (\r\n
    \r\n \"\"\r\n\r\n {shipModelAreas}\r\n
    \r\n )\r\n }\r\n}\r\n\r\nfunction TwoDShipWithContext(props) {\r\n return (\r\n \r\n \r\n {(shipContext) => (\r\n \r\n )}\r\n \r\n \r\n )\r\n}\r\n\r\nexport default TwoDShipWithContext;","import React, {Component} from 'react';\r\nimport classNames from 'classnames';\r\nimport {ships} from './settings';\r\nimport {GlobalContext} from \"./context/GlobalContext\";\r\n\r\nclass ChooseShipPanel extends Component {\r\n render() {\r\n const buttons = Object.keys(ships).map((ship) => {\r\n const shipType = ships[ship];\r\n if (this.props.errorsInData[shipType] ||\r\n this.props.shipsAssets[shipType].iconUrl == '') {\r\n return null;\r\n } else {\r\n return (\r\n \r\n )\r\n }\r\n });\r\n\r\n let styles = {};\r\n\r\n if (this.props.isCategoriesListVisible) {\r\n styles.visibility = 'hidden';\r\n }\r\n return (\r\n \r\n {buttons}\r\n
    \r\n )\r\n }\r\n}\r\n\r\nfunction ShipOptionBtn(props) {\r\n const\r\n buttonClasses = classNames(\r\n 'ships-viewer__choose-ship-panel__btn',\r\n {\r\n 'ships-viewer__choose-ship-panel__btn--active': props.isActive,\r\n 'ships-viewer__choose-ship-panel__btn--3d': props.ship === ships.bulk\r\n }\r\n );\r\n\r\n return (\r\n
    \r\n props.onClick(props.ship)}>\r\n \"\"/\r\n \r\n {props.buttonLabel}\r\n
    \r\n )\r\n}\r\n\r\nfunction ChooseShipPanelWithContext(props) {\r\n return (\r\n \r\n {(globalContext) => (\r\n\r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default ChooseShipPanelWithContext;\r\n","import React, {Component, Fragment} from 'react';\r\nimport axios from 'axios';\r\nimport classNames from 'classnames';\r\nimport {ships, ships2D, ship3D} from './settings';\r\nimport {scrollToElement, camelize} from '../../utils';\r\nimport {GlobalContextProvider, GlobalContext} from './context/GlobalContext';\r\nimport LoadViewer from './LoadViewer';\r\nimport Instructions from './Instructions';\r\nimport ThreeDShip from './ThreeDShip';\r\nimport TwoDShip from './TwoDShip';\r\nimport ChooseShipPanel from './ChooseShipPanel';\r\n\r\nconst\r\n hide2DShips = false,\r\n apiRootUrl = '/api/applicationarea/getareas',\r\n lubricantShipName = 'lubricant';\r\n\r\nclass ShipsViewerRoot extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.aspectRatioSetterRef = React.createRef();\r\n\r\n // Links to images, icons and models added to Episerver\r\n this.shipsAssets = this.createShipsAssetsObject();\r\n\r\n this.state = {\r\n noShipCanBeShown: true,\r\n isDataLoaded: false,\r\n loadModels: false,\r\n isContainerFullHeight: false,\r\n errorsInData: {},\r\n applicationAreasData: {},\r\n activeShip: ''\r\n };\r\n\r\n this.handleExploreModelBtnClick = this.handleExploreModelBtnClick.bind(this);\r\n this.handleChooseShipBtnClick = this.handleChooseShipBtnClick.bind(this);\r\n this.handleCloseShipsViewerBtnClick = this.handleCloseShipsViewerBtnClick.bind(this);\r\n this.handleCloseShipsViewerEscape = this.handleCloseShipsViewerEscape.bind(this);\r\n this.handleTransitionEvent = this.handleTransitionEvent.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n for (const ship in ships) {\r\n if (ships.hasOwnProperty(ship)) {\r\n this.fetchShipData(ships[ship]);\r\n }\r\n }\r\n this.bindEventListeners();\r\n if (this.getFirstShipWithoutErrors() == lubricantShipName) {\r\n this.handleExploreModelBtnClick();\r\n }\r\n \r\n }\r\n\r\n componentWillUnmount() {\r\n this.unbindEventListeners();\r\n }\r\n\r\n bindEventListeners() {\r\n this.aspectRatioSetterRef.current.addEventListener('transitionend', this.handleTransitionEvent, false);\r\n window.addEventListener('keyup', this.handleCloseShipsViewerEscape, false);\r\n }\r\n\r\n unbindEventListeners() {\r\n this.aspectRatioSetterRef.current.removeEventListener('transitionend', this.handleTransitionEvent, false);\r\n window.removeEventListener('keyup', this.handleCloseShipsViewerEscape, false);\r\n }\r\n\r\n handleTransitionEvent(event) {\r\n if (event.propertyName === 'padding-top') {\r\n this.setState({isContainerFullHeight: !this.state.isContainerFullHeight});\r\n }\r\n }\r\n\r\n fetchShipData(ship) {\r\n const apiUrl = `${apiRootUrl}/${ship}`;\r\n\r\n axios.get(apiUrl)\r\n .then((response) => {\r\n const responseData = camelize(response.data);\r\n\r\n if (responseData.subareas) {\r\n const applicationAreasData = {\r\n ...this.state.applicationAreasData,\r\n [ship]: responseData\r\n };\r\n const errorsInData = {\r\n ...this.state.errorsInData,\r\n [ship]: false\r\n };\r\n\r\n this.setState({\r\n applicationAreasData,\r\n errorsInData\r\n }, this.checkIfAllDataIsLoaded);\r\n } else {\r\n const errorsInData = {\r\n ...this.state.errorsInData,\r\n [ship]: true\r\n };\r\n this.setState({errorsInData});\r\n console.error(`Subareas couldn't be found for ${ships[ship]}`);\r\n }\r\n })\r\n .catch((error) => {\r\n console.groupCollapsed(`Errors in: ${ships[ship]}`);\r\n console.info(`Couldn't load data for ${ships[ship]}`);\r\n console.error(error);\r\n console.groupEnd();\r\n\r\n const errorsInData = {\r\n ...this.state.errorsInData,\r\n [ship]: true\r\n };\r\n this.setState({errorsInData});\r\n });\r\n }\r\n\r\n checkIfAllDataIsLoaded() {\r\n const\r\n errorsInDataLength = Object.keys(this.state.errorsInData).length,\r\n shipsLength = Object.keys(ships).length;\r\n\r\n if (errorsInDataLength === shipsLength) {\r\n this.setState({\r\n isDataLoaded: true,\r\n noShipCanBeShown: this.checkIfNoShipCanBeShown(),\r\n activeShip: this.getFirstShipWithoutErrors()\r\n });\r\n }\r\n }\r\n\r\n getFirstShipWithoutErrors() {\r\n let shipWithoutErrors = '';\r\n for (let ship in ships) {\r\n if (ships.hasOwnProperty(ship) && !this.state.errorsInData[ship]\r\n && (this.shipsAssets[ship].modelUrl.trim() != \"\" ||this.shipsAssets[ship].imageUrl.trim() != \"\")) {\r\n shipWithoutErrors = ship;\r\n break;\r\n }\r\n }\r\n\r\n return shipWithoutErrors;\r\n }\r\n\r\n getShipAssets(shipName) {\r\n let shipAssets = {};\r\n this.props.shipsAssetsRaw.forEach((item) => {\r\n if (item.id.indexOf(shipName) >= 0) {\r\n shipAssets = item.dataset;\r\n }\r\n }\r\n );\r\n return shipAssets;\r\n }\r\n\r\n createShipsAssetsObject() {\r\n const shipsAssets = {};\r\n for (let ship in ships) {\r\n if (ships.hasOwnProperty(ship)) {\r\n shipsAssets[ship] = this.getShipAssets(ship);\r\n }\r\n }\r\n return shipsAssets;\r\n }\r\n\r\n handleExploreModelBtnClick() {\r\n this.setState({loadModels: true});\r\n scrollToElement(this.aspectRatioSetterRef.current);\r\n }\r\n\r\n handleChooseShipBtnClick(chosenShip) {\r\n this.setState({activeShip: chosenShip});\r\n }\r\n\r\n handleCloseShipsViewerBtnClick(event) {\r\n event.preventDefault();\r\n this.props.setCategoriesListVisibility(false);\r\n this.setState({loadModels: false,});\r\n }\r\n\r\n handleCloseShipsViewerEscape(event) {\r\n event.preventDefault();\r\n const escapeKeyCode = 27;\r\n\r\n if (event.keyCode === escapeKeyCode && this.state.loadModels) {\r\n this.props.setCategoriesListVisibility(false);\r\n this.setState({loadModels: false});\r\n }\r\n }\r\n\r\n checkIfNoShipCanBeShown() {\r\n // Don't show ships viewer section if errors occur in all ships\r\n const {errorsInData} = this.state;\r\n let cannotBeShown = true;\r\n\r\n for (let ship in errorsInData) {\r\n if (errorsInData.hasOwnProperty(ship) && !errorsInData[ship]) {\r\n cannotBeShown = false;\r\n }\r\n }\r\n\r\n // Don't show ships viewer section if errors in bulk\r\n if (hide2DShips && errorsInData[ships.bulk]) {\r\n cannotBeShown = true;\r\n }\r\n return cannotBeShown;\r\n }\r\n\r\n generateShips(modelType) {\r\n const {\r\n applicationAreasData,\r\n activeShip,\r\n errorsInData\r\n } = this.state;\r\n\r\n let shipComponents = null;\r\n\r\n if (modelType === '2D') {\r\n shipComponents = ships2D.map((ship) => {\r\n if (!errorsInData[ship]) {\r\n return (\r\n \r\n )\r\n }\r\n })\r\n } else if (modelType === '3D') {\r\n shipComponents = ship3D.map((ship) => {\r\n if (!errorsInData[ship]) {\r\n return (\r\n \r\n )\r\n }\r\n })\r\n }\r\n\r\n return shipComponents;\r\n }\r\n\r\n renderShips() {\r\n const {\r\n loadModels,\r\n isContainerFullHeight,\r\n isDataLoaded,\r\n applicationAreasData,\r\n activeShip,\r\n errorsInData\r\n } = this.state;\r\n\r\n let shipsComponents = null,\r\n isLubricantShip = this.state.activeShip === lubricantShipName;\r\n\r\n if (loadModels && (isContainerFullHeight || isLubricantShip ) && isDataLoaded) {\r\n const btnClassNames = `close-btn${isLubricantShip? ' btn-hide' : ''}`\r\n shipsComponents = (\r\n \r\n \r\n {this.generateShips('3D')}\r\n {!hide2DShips &&\r\n \r\n {this.generateShips('2D')}\r\n \r\n \r\n }\r\n \r\n )\r\n }\r\n\r\n return shipsComponents;\r\n }\r\n\r\n render() {\r\n const sectionStyles = this.state.noShipCanBeShown ? {display: 'none'} : {},\r\n shouldInstructionsBeRender = this.state.loadModels && this.state.isContainerFullHeight,\r\n isLubricantShip = this.state.activeShip === lubricantShipName;\r\n const containerClass = classNames(\r\n 'ships-viewer__aspect-ratio-setter',\r\n `${isLubricantShip? 'ships-viewer__custom-bg-color' : ''}`,\r\n {\r\n 'ships-viewer__not-active-overlay': this.state.loadModels,\r\n 'ships-viewer__active-overlay': !this.state.loadModels\r\n }\r\n );\r\n \r\n return (\r\n
    \r\n {isLubricantShip && (\r\n
    \r\n

    Check out our lubricants offer

    \r\n

    Click on the spot and see the products by application area

    \r\n
    \r\n )}\r\n
    \r\n {!isLubricantShip && }\r\n {this.renderShips()}\r\n {!isLubricantShip && shouldInstructionsBeRender && }\r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nfunction ShipsViewerRootWithContext(props) {\r\n return (\r\n \r\n \r\n {(context) =>\r\n \r\n }\r\n \r\n \r\n )\r\n}\r\n\r\nexport default ShipsViewerRootWithContext;","import React, { Component } from 'react'\r\nimport axios from 'axios';\r\nimport uniqueId from 'lodash.uniqueid';\r\nimport { debounce } from '../../utils';\r\n\r\nconst Autocomplete = ({ items, getItemValue, onSelect, onChange, value, inputProps }) => {\r\n const [isOpen, setIsOpen] = React.useState(false);\r\n\r\n const handleInputChange = (event) => {\r\n onChange(event);\r\n };\r\n\r\n const handleInputBlur = (event) => {\r\n if (!event.relatedTarget) {\r\n setIsOpen(false);\r\n }\r\n };\r\n\r\n const handleOnSelect = (value) => {\r\n onSelect(value);\r\n };\r\n\r\n return (\r\n setIsOpen(true)}\r\n className='autocomplete'\r\n >\r\n \r\n {isOpen && items.length\r\n ?
      \r\n {items.map((item) => (\r\n item.header\r\n ? \r\n {item.header}\r\n \r\n : handleOnSelect(getItemValue(item))}\r\n >\r\n {getItemValue(item)}\r\n \r\n )\r\n )}\r\n
    \r\n : null}\r\n \r\n );\r\n};\r\n\r\n// ToDo:\r\n// Loading spinner?\r\n// absolute paths\r\n// Mobile overflow-hidden bug\r\n\r\nexport default class SearchAutocompleteRoot extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.apiRootUrl = '/api/product/autocomplete';\r\n this.apiInterface = {\r\n categoryName: 'CategoryName',\r\n productName: 'Name',\r\n externalUrl: 'ExternalUrl'\r\n };\r\n\r\n this.dataAttributes = document.getElementById(this.props.dataAttributeOwnerId).dataset;\r\n this.selectElement = document.getElementById(this.props.categorySelectElementId);\r\n this.minCharacters = this.props.minCharacters;\r\n\r\n this.state = {\r\n searchTerm: this.dataAttributes.value,\r\n resultList: []\r\n };\r\n\r\n this.handleSearchTermChange = this.handleSearchTermChange.bind(this);\r\n this.handleSelect = this.handleSelect.bind(this);\r\n this.clearData = this.clearData.bind(this);\r\n this.fetchData = this.fetchData.bind(this);\r\n this.categorizeResults = this.categorizeResults.bind(this);\r\n }\r\n\r\n clearData() {\r\n this.setState({ resultList: [] });\r\n }\r\n\r\n fetchData(searchTerm) {\r\n const currentCategory = this.selectElement.options[this.selectElement.selectedIndex].value;\r\n axios.get(this.apiRootUrl, {\r\n params: {\r\n term: searchTerm,\r\n categoryId: currentCategory,\r\n mockResults: false\r\n }\r\n })\r\n .catch(function (error) {\r\n if (error.response) {\r\n console.log(error.response.data);\r\n console.log(error.response.status);\r\n console.log(error.response.headers);\r\n } else if (error.request) {\r\n console.log(error.request);\r\n } else {\r\n console.log('Error', error.message);\r\n }\r\n console.log(error.config);\r\n })\r\n .then(response => {\r\n this.setState({ resultList: this.categorizeResults(response.data.Items) });\r\n });\r\n }\r\n\r\n categorizeResults(resultArray) {\r\n let currentCategory = '';\r\n const apiInterface = this.apiInterface;\r\n\r\n return resultArray.reduce(function (accumulator, item) {\r\n if (item[apiInterface.categoryName] !== currentCategory) {\r\n accumulator.push({ header: item[apiInterface.categoryName] });\r\n currentCategory = item[apiInterface.categoryName];\r\n }\r\n accumulator.push({\r\n id: uniqueId(),\r\n name: item[apiInterface.productName],\r\n url: item[apiInterface.externalUrl]\r\n });\r\n return accumulator;\r\n }, []);\r\n }\r\n\r\n\r\n\r\n debounceFetchData = debounce(value => this.fetchData(value), 500)\r\n\r\n handleSearchTermChange(e) {\r\n const value = e.target.value;\r\n this.setState({ searchTerm: value });\r\n if (value !== '' && value.length >= this.minCharacters) {\r\n this.debounceFetchData(value);\r\n } else {\r\n this.clearData();\r\n }\r\n }\r\n\r\n handleSelect(value) {\r\n this.setState({ searchTerm: value, resultList: [] });\r\n }\r\n\r\n render() {\r\n return (\r\n item.name}\r\n onSelect={this.handleSelect}\r\n onChange={this.handleSearchTermChange}\r\n />\r\n )\r\n }\r\n}\r\n","import React, { lazy, Suspense } from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { checkIfTablet } from './utils.js';\r\nimport HeaderWrapper from './redesign/components/Header/HeaderWrapper';\r\nimport { QueryClientProvider } from '@tanstack/react-query';\r\nimport { queryClient } from '../api/reactQueryClient.ts';\r\nimport { renderLazyComponent } from './hooks/renderLazyComponent.jsx';\r\nimport Footer from './redesign/components/Footer/Footer.tsx';\r\nimport ProductCatalogueHeaderWrapper from './redesign/components/Header/ProductCatalogueHeaderWrapper.tsx';\r\nimport ShipsViewerRoot from './components/ships-viewer/ShipsViewerRoot.jsx';\r\nimport SearchAutocompleteRoot from './components/autocomplete/SearchAutocompleteRoot.jsx';\r\n\r\nconst Search = lazy(() => import('./components/search/Search.jsx'));\r\nconst ProductsListingRoot = lazy(() => import('./components/products-listing/ProductsListingRoot.jsx'));\r\nconst OrderingInfoWithVariantsRoot = lazy(() => import('./components/OrderingInfoWithVariants/OrderingInfoWithVariants.jsx'));\r\nconst SDSRoot = lazy(() => import('./components/sds/SDSRoot.jsx'));\r\nconst Teaser = lazy(() => import('./components/common/Teaser/Teaser.jsx'));\r\nconst OurProducts = lazy(() => import('./components/imo2020/OurProducts/OurProducts.jsx'));\r\nconst AuthoringInfo = lazy(() => import('./components/common/AuthoringInfo.jsx'));\r\nconst Map = lazy(() => import('./components/map/Map.jsx'));\r\nconst ContactExpert = lazy(() => import('./components/ContactExpert/ContactExpert.jsx'));\r\nconst PostFeed = lazy(() => import('./components/PostFeed/PostFeed.jsx'));\r\nconst Carousel = lazy(() => import('./components/Carousel/Carousel.jsx'));\r\nconst Tabs = lazy(() => import('./components/Tabs/Tabs.jsx'));\r\nconst AreaContactsRoot = lazy(() => import('./components/AreaContacts/AreaContactsRoot.jsx'));\r\nconst InteractiveList = lazy(() => import('./components/InteractiveList/InteractiveList.jsx'));\r\nconst CareersPage = lazy(() => import('./pages/CareersPage/CareersPage.jsx'));\r\nconst AuthorisedDistributors = lazy(() => import('./components/AuthorisedDistributors/AuthorisedDistributors.jsx'));\r\n\r\nconst productsListingRootId = 'productsListingRoot',\r\n shipsViewerRootId = 'shipsViewerRoot',\r\n reactAutocompleteId = 'reactAutocomplete',\r\n reactAutocompleteGlobalId = 'reactAutocompleteGlobal',\r\n orderingInfoWithVariantsRootId = 'orderingInfoWithVariantsRoot',\r\n sdsRootId = 'sdsRoot',\r\n teaserClassName = 'teaser-container',\r\n ourProductsRootId = 'ourProductsRootId',\r\n mapRootClassName = 'mapRoot',\r\n searchClassName = 'search-component-root',\r\n contactExpertId = 'contactExpertId',\r\n postFeedId = 'maritimePostFeed',\r\n carouselClassName = 'carousel-root',\r\n tabsClassName = 'tabs-root',\r\n areaContactsClassName = 'area-contacts-root',\r\n interactiveClassName = 'interactive-list',\r\n careersPageId = 'careers-page',\r\n authorisedDistributorsId = 'distributors-root',\r\n headerRoot = 'header-root',\r\n catalogueHeaderRoot = 'catalogue-header-root',\r\n footerContainer = 'footer-container';\r\n\r\nconst footerElement = document.getElementById(footerContainer);\r\nif (footerElement) {\r\n const currentPageId = footerElement.getAttribute('data-current-page-id') || '';\r\n\r\n ReactDOM.render (\r\n ,\r\n footerElement\r\n );\r\n}\r\n\r\nif (document.getElementById(headerRoot) !== null) {\r\n const containerElement = document.getElementById(headerRoot);\r\n const frontPageTitle = containerElement.getAttribute('data-front-page-title');\r\n const frontPageUrl = containerElement.getAttribute('data-front-page-url');\r\n const frontPageId = containerElement.getAttribute('data-front-page-id');\r\n const currentPageId = containerElement.getAttribute('data-current-page-id');\r\n\r\n ReactDOM.render(\r\n \r\n \r\n ,\r\n containerElement\r\n );\r\n}\r\n\r\nif (document.getElementById(catalogueHeaderRoot) !== null) {\r\n const containerElement = document.getElementById(catalogueHeaderRoot);\r\n const frontPageTitle = containerElement.getAttribute('data-front-page-title');\r\n const frontPageUrl = containerElement.getAttribute('data-front-page-url');\r\n const frontPageId = containerElement.getAttribute('data-front-page-id');\r\n const currentPageId = containerElement.getAttribute('data-current-page-id');\r\n\r\n ReactDOM.render(\r\n \r\n \r\n ,\r\n containerElement\r\n );\r\n}\r\n\r\n// This component is used both for category results and search results to list and filter products\r\nif (document.getElementById(productsListingRootId) !== null) {\r\n const containerElement = document.getElementById(productsListingRootId),\r\n categoryId = containerElement.getAttribute('data-categoryid') || '',\r\n searchTerm = containerElement.getAttribute('data-term') || '';\r\n let rootUrl;\r\n\r\n if (containerElement.hasAttribute('data-term')) {\r\n rootUrl = '/api/product/search';\r\n } else {\r\n rootUrl = '/api/product/getByCategory';\r\n }\r\n\r\n renderLazyComponent(\r\n ,\r\n containerElement\r\n );\r\n}\r\n\r\nif (checkIfTablet() && document.getElementById(shipsViewerRootId) !== null) {\r\n const containerElement = document.getElementById(shipsViewerRootId),\r\n dataContainer = document.getElementById(shipsViewerRootId + '-data'),\r\n shipsAssetsHtmlCollection = dataContainer.getElementsByClassName(\r\n 'ships-viewer__ship-assets-data'\r\n ),\r\n shipsAssetsRaw = Array.prototype.slice.call(shipsAssetsHtmlCollection);\r\n\r\n ReactDOM.render(\r\n ,\r\n containerElement\r\n );\r\n}\r\n\r\nif (document.getElementById(reactAutocompleteId) !== null) {\r\n\r\n renderLazyComponent(\r\n ,\r\n document.getElementById(reactAutocompleteId)\r\n );\r\n}\r\n\r\nif (document.getElementById(reactAutocompleteGlobalId) !== null) {\r\n ReactDOM.render(\r\n ,\r\n document.getElementById(reactAutocompleteGlobalId)\r\n );\r\n}\r\n\r\nif (document.getElementById(orderingInfoWithVariantsRootId) !== null) {\r\n const containerElement = document.getElementById(\r\n orderingInfoWithVariantsRootId\r\n );\r\n const productId = containerElement.getAttribute('data-product-id') || '';\r\n const tableType = containerElement.getAttribute('ordering-information-table-style') || null;\r\n const getRootUrl = (tableType) => {\r\n switch (tableType) {\r\n case \"BundlePackage\":\r\n return '/api/BundlePackages/GetByPageId';\r\n case \"BundlePackageGroup\":\r\n return '/api/BundleGroupPackages/GetByPageId';\r\n default:\r\n return '/api/ropeorderinginfo/getbypageid';\r\n }\r\n }\r\n const apiRootUrl = getRootUrl(tableType);\r\n\r\n renderLazyComponent(\r\n ,\r\n containerElement\r\n );\r\n}\r\n\r\nif (document.getElementById(sdsRootId) !== null) {\r\n const containerElement = document.getElementById(sdsRootId);\r\n const productId = containerElement.getAttribute('data-product-id') || '';\r\n\r\n renderLazyComponent(, containerElement);\r\n}\r\n\r\nif (document.getElementById(ourProductsRootId) !== null) {\r\n const containerElement = document.getElementById(ourProductsRootId);\r\n\r\n renderLazyComponent(, containerElement);\r\n}\r\n\r\nif (document.getElementsByClassName(teaserClassName) !== null) {\r\n const elements = document.getElementsByClassName(teaserClassName);\r\n [...elements].forEach(element => {\r\n const teaserUrl = element.getAttribute('data-teaser-url');\r\n const teaserText = element.getAttribute('data-teaser-text');\r\n const imageUrl = element.getAttribute('data-image-url');\r\n const imageAlt = element.getAttribute('data-image-alt');\r\n const imageTitle = element.getAttribute('data-image-title');\r\n const authorName = element.getAttribute('data-author-name');\r\n const dateMicro = element.getAttribute('data-date-micro');\r\n const date = element.getAttribute('data-date');\r\n const videoUrl = element.getAttribute('data-video-local-url');\r\n const videoEmbed = element.getAttribute('data-video-embed-code');\r\n const formUrl = element.getAttribute('data-form-url');\r\n\r\n renderLazyComponent(\r\n \r\n \r\n ,\r\n element\r\n );\r\n });\r\n}\r\n\r\nif (document.getElementsByClassName(mapRootClassName) !== null) {\r\n const mapContainerElements = document.getElementsByClassName(mapRootClassName);\r\n [...mapContainerElements].forEach(element => {\r\n const guid = element.getAttribute('data-guid');\r\n let mapCoordinates = element.getAttribute('data-coordinates');\r\n if (mapCoordinates) {\r\n mapCoordinates = JSON.parse(mapCoordinates);\r\n mapCoordinates = [{ Latitude: mapCoordinates[0], Longitude: mapCoordinates[1], \"typeVariable\": \"office\" }];\r\n }\r\n const mapSize = element.getAttribute('data-map-size');\r\n\r\n renderLazyComponent(, element);\r\n });\r\n}\r\n\r\nif (document.getElementsByClassName (searchClassName) !== null) {\r\n const elements = document.getElementsByClassName (searchClassName);\r\n [...elements].forEach (element => {\r\n const searchPlaceholder = element.getAttribute ('data-placeholder');\r\n const searchType = element.getAttribute ('data-search-type');\r\n const buttonType = element.getAttribute ('data-button-type');\r\n const useEmptySearch = element.getAttribute ('data-use-empty-search') === 'true';\r\n\r\n renderLazyComponent(\r\n ,\r\n element\r\n );\r\n });\r\n}\r\n\r\nif (document.getElementById(contactExpertId) !== null) {\r\n const containerElement = document.getElementById(contactExpertId);\r\n const formUrl = containerElement.getAttribute('data-form-url');\r\n renderLazyComponent(, containerElement);\r\n}\r\n\r\nif (document.getElementById(postFeedId) !== null) {\r\n const containerElement = document.getElementById(postFeedId);\r\n const showFilters = containerElement.getAttribute('data-show-filters') == 'true';\r\n const categoryId = containerElement.getAttribute('data-category-id');\r\n const parentCategoryId = containerElement.getAttribute('data-parent-category-id');\r\n renderLazyComponent(\r\n ,\r\n containerElement\r\n );\r\n}\r\n\r\nif (document.getElementsByClassName(carouselClassName) !== null) {\r\n const elements = document.getElementsByClassName(carouselClassName);\r\n [...elements].forEach(element => {\r\n const parent = element.parentNode;\r\n const itemsContainer = parent.querySelector('.carousel-data');\r\n\r\n renderLazyComponent(\r\n ,\r\n element\r\n );\r\n });\r\n}\r\n\r\nif (document.getElementsByClassName(tabsClassName) !== null) {\r\n const elements = document.getElementsByClassName(tabsClassName);\r\n [...elements].forEach(element => {\r\n let items = element.getAttribute('data-items');\r\n if (items) {\r\n items = JSON.parse(items);\r\n }\r\n\r\n renderLazyComponent(\r\n ,\r\n element\r\n );\r\n });\r\n}\r\n\r\nif (document.getElementsByClassName(areaContactsClassName) !== null) {\r\n const elements = document.getElementsByClassName(areaContactsClassName);\r\n [...elements].forEach(element => {\r\n const bgImage = element.getAttribute('data-image');\r\n const areas = JSON.parse(element.getAttribute('data-areas'));\r\n\r\n renderLazyComponent(\r\n ,\r\n element\r\n );\r\n });\r\n}\r\n\r\nif (document.getElementsByClassName(interactiveClassName) !== null) {\r\n const elements = document.getElementsByClassName(interactiveClassName);\r\n [...elements].forEach(el => {\r\n let listData = el.getAttribute('data-list');\r\n listData = JSON.parse(listData);\r\n\r\n renderLazyComponent(\r\n ,\r\n el\r\n );\r\n })\r\n}\r\n\r\nif (document.getElementById(careersPageId) !== null) {\r\n const el = document.getElementById(careersPageId);\r\n\r\n renderLazyComponent(\r\n ,\r\n el\r\n );\r\n}\r\nif (document.getElementById(authorisedDistributorsId) !== null) {\r\n const containerElement = document.getElementById(\r\n authorisedDistributorsId\r\n );\r\n\r\n renderLazyComponent(\r\n ,\r\n containerElement\r\n );\r\n}"],"file":"js/react.bundle.js"}