{"version":3,"sources":["js/priority.js"],"names":["customCookieBar","$","length","Cookies","get","fadeIn","on","set","expires","fadeOut","initImageSizer","images","document","querySelectorAll","forEach","img","windowWidth","window","innerWidth","imgWidth","clientWidth","imgViewportWidth","Math","floor","sizes","initVideoSlider","coverViewport","element","scaleToParent","viewportWidth","viewportHeight","parentElement","clientHeight","innerHeight","elementWidth","getAttribute","elementHeight","viewportRatio","videoRatio","newWidth","newHeight","style","height","width","left","top","video","querySelector","addEventListener","$videoIframe","initPriorOffCanvas","handleOffCanvasMenu","container","toggleBtns","states","btn","toggleMenu","slideToggle","isActiveMenu","handleOffCanvasBooking","toggleBooking","revealToggle","isActiveBooking","menuContainer","menuToggleBtns","bookingContainer","bookingToggleBtns","this","state","transform","classList","add","remove"],"mappings":"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","file":"priority.js","sourcesContent":["document.addEventListener(\"DOMContentLoaded\", function () {\r\n initImageSizer();\r\n initVideoSlider();\r\n initPriorOffCanvas();\r\n customCookieBar();\r\n});\r\n\r\n\r\nfunction customCookieBar() {\r\n\tif ( $('.cookie-bar').length > 0 ) {\r\n\t\tif ( !Cookies.get('accepted_cookies') ) {\r\n\t\t\t$('.cookie-bar').fadeIn();\r\n\t\t}\r\n\r\n\r\n\t\t$('.cookie-bar__accept').on('click', function () {\r\n\t\t\tCookies.set('accepted_cookies', 'true', {expires: 30});\r\n\t\t\t$('.cookie-bar').fadeOut();\r\n\t\t});\r\n\t}\r\n}\r\n\r\nfunction initImageSizer() {\r\n var images = document.querySelectorAll(\".auto-sizing\");\r\n if (images.length === 0) return;\r\n images.forEach(function (img) {\r\n var windowWidth = window.innerWidth;\r\n var imgWidth = img.clientWidth;\r\n var imgViewportWidth = Math.floor((imgWidth / windowWidth) * 100) + \"vw\";\r\n img.sizes = imgViewportWidth;\r\n });\r\n}\r\n\r\nfunction initVideoSlider() {\r\n var video = document.querySelector(\".slider__video iframe\");\r\n if (!video) return;\r\n coverViewport(video, true);\r\n window.addEventListener(\"resize\", function () {\r\n coverViewport(video, true);\r\n });\r\n\r\n\r\n function coverViewport(element, scaleToParent) {\r\n if (typeof scaleToParent === \"undefined\") {\r\n scaleToParent = false;\r\n }\r\n\r\n var viewportWidth, viewportHeight;\r\n if (scaleToParent) {\r\n viewportWidth = element.parentElement.clientWidth;\r\n viewportHeight = element.parentElement.clientHeight;\r\n } else {\r\n viewportWidth = window.innerWidth;\r\n viewportHeight = window.innerHeight;\r\n }\r\n\r\n var elementWidth = element.getAttribute(\"width\");\r\n var elementHeight = element.getAttribute(\"height\");\r\n\r\n // Aspect ratio = height / width\r\n var viewportRatio = viewportHeight / viewportWidth;\r\n var videoRatio = elementHeight / elementWidth;\r\n\r\n // console.log('viewportHeigt: ', viewportHeight )\r\n // console.log('viewportWidth: ', viewportWidth )\r\n // console.log('Viewport: ', viewportRatio, ' Video: ', videoRatio);\r\n\r\n var newWidth = (elementWidth / elementHeight) * viewportHeight;\r\n var newHeight = (elementHeight / elementWidth) * viewportWidth;\r\n var newTop = 0;\r\n\r\n if (viewportRatio > videoRatio) {\r\n // set video height to the viewport, and extend the video beyond the viewport width, i.e. portrait viewport\r\n // console.log('crop left and right');\r\n element.style.height = viewportHeight + \"px\";\r\n element.style.width = newWidth + \"px\";\r\n element.style.left = \"-\" + (newWidth - viewportWidth) / 2 + \"px\";\r\n element.style.top = \"0\";\r\n } else if (viewportRatio < videoRatio) {\r\n // set video width to the viewport, and extend the video beyond the viewport height, i.e. landscape viewport\r\n // console.log('crop top and bottom');\r\n element.style.width = viewportWidth + \"px\";\r\n element.style.height = newHeight + \"px\";\r\n element.style.left = \"0\";\r\n element.style.top = \"-\" + (newHeight - viewportHeight) / 2 + \"px\";\r\n } else {\r\n // set the video width AND height to the viewport size, i.e. viewport is the same ratio as the video\r\n // console.log('no crop');\r\n element.style.height = viewportHeight + \"px\";\r\n element.style.width = viewportWidth + \"px\";\r\n element.style.left = \"0\";\r\n element.style.top = \"0\";\r\n }\r\n }\r\n\r\n // Make sure the slider always fills the whole screen\r\nconst $videoIframe = $('.slider__video iframe');\r\nif ($('.slider__video iframe').length > 0) {\r\n $('.slider__inner').on('setPosition', function () {\r\n coverViewport($videoIframe, true);\r\n });\r\n\r\n $('.slider__inner').on('init', function () {\r\n coverViewport($videoIframe, true);\r\n });\r\n}\r\n\r\n}\r\n\r\nfunction initPriorOffCanvas() {\r\n var menuContainer = document.querySelector(\"#offCanvas\");\r\n var menuToggleBtns = document.querySelectorAll(\r\n \".header__open-off-canvas, .off-canvas__close\"\r\n );\r\n\r\n var bookingContainer = document.querySelector(\"#booking\");\r\n var bookingToggleBtns = document.querySelectorAll(\r\n \".header__open-booking, .booking__close\"\r\n );\r\n\r\n var states = {\r\n isActiveMenu: false,\r\n isActiveBooking: false,\r\n toggleMenu: function () {\r\n this.isActiveMenu = !this.isActiveMenu;\r\n },\r\n toggleBooking: function () {\r\n this.isActiveBooking = !this.isActiveBooking;\r\n },\r\n };\r\n\r\n handleOffCanvasMenu(menuContainer, menuToggleBtns, states);\r\n handleOffCanvasBooking(bookingContainer, bookingToggleBtns, states);\r\n\r\n function handleOffCanvasMenu(container, toggleBtns, states) {\r\n toggleBtns.forEach(function (btn) {\r\n btn.addEventListener(\"click\", function () {\r\n states.toggleMenu();\r\n slideToggle(states.isActiveMenu, container);\r\n });\r\n });\r\n }\r\n\r\n function handleOffCanvasBooking(container, toggleBtns, states) {\r\n toggleBtns.forEach(function (btn) {\r\n btn.addEventListener(\"click\", function () {\r\n states.toggleBooking();\r\n revealToggle(states.isActiveBooking, container);\r\n });\r\n });\r\n }\r\n\r\n var slideToggle = function (state, container) {\r\n if (!state) {\r\n container.style.transform = \"translateX(-100%)\";\r\n } else {\r\n container.style.transform = \"translateX(0)\";\r\n }\r\n };\r\n\r\n var revealToggle = function (state, container) {\r\n if (!state) {\r\n container.classList.remove('active')\r\n } else {\r\n container.classList.add('active')\r\n }\r\n };\r\n}\r\n"],"sourceRoot":"/source/"}